@tulex-cli/tulex-code 0.1.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/README.md +54 -0
- package/dist/.last_build +0 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +98 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +121 -0
- package/dist/src/acp-integration/acpAgent.d.ts +59 -0
- package/dist/src/acp-integration/acpAgent.js +3646 -0
- package/dist/src/acp-integration/acpAgent.js.map +1 -0
- package/dist/src/acp-integration/acpAgent.test.d.ts +6 -0
- package/dist/src/acp-integration/acpAgent.test.js +3690 -0
- package/dist/src/acp-integration/acpAgent.test.js.map +1 -0
- package/dist/src/acp-integration/acpAgent.worktree.test.d.ts +16 -0
- package/dist/src/acp-integration/acpAgent.worktree.test.js +354 -0
- package/dist/src/acp-integration/acpAgent.worktree.test.js.map +1 -0
- package/dist/src/acp-integration/authMethods.d.ts +9 -0
- package/dist/src/acp-integration/authMethods.js +28 -0
- package/dist/src/acp-integration/authMethods.js.map +1 -0
- package/dist/src/acp-integration/authMethods.test.d.ts +6 -0
- package/dist/src/acp-integration/authMethods.test.js +23 -0
- package/dist/src/acp-integration/authMethods.test.js.map +1 -0
- package/dist/src/acp-integration/authPreflight.test.d.ts +6 -0
- package/dist/src/acp-integration/authPreflight.test.js +54 -0
- package/dist/src/acp-integration/authPreflight.test.js.map +1 -0
- package/dist/src/acp-integration/errorCodes.d.ts +15 -0
- package/dist/src/acp-integration/errorCodes.js +22 -0
- package/dist/src/acp-integration/errorCodes.js.map +1 -0
- package/dist/src/acp-integration/runtimeOutputDirContext.d.ts +2 -0
- package/dist/src/acp-integration/runtimeOutputDirContext.js +5 -0
- package/dist/src/acp-integration/runtimeOutputDirContext.js.map +1 -0
- package/dist/src/acp-integration/runtimeOutputDirContext.test.d.ts +1 -0
- package/dist/src/acp-integration/runtimeOutputDirContext.test.js +29 -0
- package/dist/src/acp-integration/runtimeOutputDirContext.test.js.map +1 -0
- package/dist/src/acp-integration/service/filesystem.d.ts +17 -0
- package/dist/src/acp-integration/service/filesystem.js +73 -0
- package/dist/src/acp-integration/service/filesystem.js.map +1 -0
- package/dist/src/acp-integration/service/filesystem.test.d.ts +6 -0
- package/dist/src/acp-integration/service/filesystem.test.js +85 -0
- package/dist/src/acp-integration/service/filesystem.test.js.map +1 -0
- package/dist/src/acp-integration/session/HistoryReplayer.d.ts +63 -0
- package/dist/src/acp-integration/session/HistoryReplayer.js +222 -0
- package/dist/src/acp-integration/session/HistoryReplayer.js.map +1 -0
- package/dist/src/acp-integration/session/HistoryReplayer.test.d.ts +6 -0
- package/dist/src/acp-integration/session/HistoryReplayer.test.js +405 -0
- package/dist/src/acp-integration/session/HistoryReplayer.test.js.map +1 -0
- package/dist/src/acp-integration/session/Session.d.ts +150 -0
- package/dist/src/acp-integration/session/Session.js +2381 -0
- package/dist/src/acp-integration/session/Session.js.map +1 -0
- package/dist/src/acp-integration/session/Session.test.d.ts +6 -0
- package/dist/src/acp-integration/session/Session.test.js +3845 -0
- package/dist/src/acp-integration/session/Session.test.js.map +1 -0
- package/dist/src/acp-integration/session/Session.worktree.test.d.ts +18 -0
- package/dist/src/acp-integration/session/Session.worktree.test.js +195 -0
- package/dist/src/acp-integration/session/Session.worktree.test.js.map +1 -0
- package/dist/src/acp-integration/session/SubAgentTracker.d.ts +58 -0
- package/dist/src/acp-integration/session/SubAgentTracker.js +208 -0
- package/dist/src/acp-integration/session/SubAgentTracker.js.map +1 -0
- package/dist/src/acp-integration/session/SubAgentTracker.test.d.ts +6 -0
- package/dist/src/acp-integration/session/SubAgentTracker.test.js +612 -0
- package/dist/src/acp-integration/session/SubAgentTracker.test.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/BaseEmitter.d.ts +34 -0
- package/dist/src/acp-integration/session/emitters/BaseEmitter.js +53 -0
- package/dist/src/acp-integration/session/emitters/BaseEmitter.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.d.ts +61 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.js +124 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.test.d.ts +6 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.test.js +202 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.test.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.d.ts +39 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.js +83 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.test.d.ts +6 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.test.js +176 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.test.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.d.ts +82 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.js +284 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.d.ts +6 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.js +607 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/index.d.ts +9 -0
- package/dist/src/acp-integration/session/emitters/index.js +10 -0
- package/dist/src/acp-integration/session/emitters/index.js.map +1 -0
- package/dist/src/acp-integration/session/index.d.ts +24 -0
- package/dist/src/acp-integration/session/index.js +16 -0
- package/dist/src/acp-integration/session/index.js.map +1 -0
- package/dist/src/acp-integration/session/permissionUtils.d.ts +9 -0
- package/dist/src/acp-integration/session/permissionUtils.js +165 -0
- package/dist/src/acp-integration/session/permissionUtils.js.map +1 -0
- package/dist/src/acp-integration/session/permissionUtils.test.d.ts +6 -0
- package/dist/src/acp-integration/session/permissionUtils.test.js +83 -0
- package/dist/src/acp-integration/session/permissionUtils.test.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/LlmRewriter.d.ts +26 -0
- package/dist/src/acp-integration/session/rewrite/LlmRewriter.js +131 -0
- package/dist/src/acp-integration/session/rewrite/LlmRewriter.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/LlmRewriter.test.d.ts +6 -0
- package/dist/src/acp-integration/session/rewrite/LlmRewriter.test.js +188 -0
- package/dist/src/acp-integration/session/rewrite/LlmRewriter.test.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.d.ts +42 -0
- package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.js +159 -0
- package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.test.d.ts +6 -0
- package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.test.js +255 -0
- package/dist/src/acp-integration/session/rewrite/MessageRewriteMiddleware.test.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/README.md +35 -0
- package/dist/src/acp-integration/session/rewrite/TurnBuffer.d.ts +25 -0
- package/dist/src/acp-integration/session/rewrite/TurnBuffer.js +53 -0
- package/dist/src/acp-integration/session/rewrite/TurnBuffer.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/TurnBuffer.test.d.ts +6 -0
- package/dist/src/acp-integration/session/rewrite/TurnBuffer.test.js +95 -0
- package/dist/src/acp-integration/session/rewrite/TurnBuffer.test.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/config.d.ts +13 -0
- package/dist/src/acp-integration/session/rewrite/config.js +19 -0
- package/dist/src/acp-integration/session/rewrite/config.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/config.test.d.ts +6 -0
- package/dist/src/acp-integration/session/rewrite/config.test.js +72 -0
- package/dist/src/acp-integration/session/rewrite/config.test.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/index.d.ts +8 -0
- package/dist/src/acp-integration/session/rewrite/index.js +8 -0
- package/dist/src/acp-integration/session/rewrite/index.js.map +1 -0
- package/dist/src/acp-integration/session/rewrite/types.d.ts +36 -0
- package/dist/src/acp-integration/session/rewrite/types.js +7 -0
- package/dist/src/acp-integration/session/rewrite/types.js.map +1 -0
- package/dist/src/acp-integration/session/types.d.ts +93 -0
- package/dist/src/acp-integration/session/types.js +7 -0
- package/dist/src/acp-integration/session/types.js.map +1 -0
- package/dist/src/commands/auth.d.ts +9 -0
- package/dist/src/commands/auth.js +55 -0
- package/dist/src/commands/auth.js.map +1 -0
- package/dist/src/commands/auth.test.d.ts +6 -0
- package/dist/src/commands/auth.test.js +84 -0
- package/dist/src/commands/auth.test.js.map +1 -0
- package/dist/src/commands/channel/channel-registry.d.ts +4 -0
- package/dist/src/commands/channel/channel-registry.js +33 -0
- package/dist/src/commands/channel/channel-registry.js.map +1 -0
- package/dist/src/commands/channel/config-utils.d.ts +4 -0
- package/dist/src/commands/channel/config-utils.js +66 -0
- package/dist/src/commands/channel/config-utils.js.map +1 -0
- package/dist/src/commands/channel/config-utils.test.d.ts +1 -0
- package/dist/src/commands/channel/config-utils.test.js +142 -0
- package/dist/src/commands/channel/config-utils.test.js.map +1 -0
- package/dist/src/commands/channel/configure.d.ts +4 -0
- package/dist/src/commands/channel/configure.js +65 -0
- package/dist/src/commands/channel/configure.js.map +1 -0
- package/dist/src/commands/channel/pairing.d.ts +8 -0
- package/dist/src/commands/channel/pairing.js +49 -0
- package/dist/src/commands/channel/pairing.js.map +1 -0
- package/dist/src/commands/channel/pidfile.d.ts +25 -0
- package/dist/src/commands/channel/pidfile.js +104 -0
- package/dist/src/commands/channel/pidfile.js.map +1 -0
- package/dist/src/commands/channel/pidfile.test.d.ts +1 -0
- package/dist/src/commands/channel/pidfile.test.js +143 -0
- package/dist/src/commands/channel/pidfile.test.js.map +1 -0
- package/dist/src/commands/channel/start.d.ts +16 -0
- package/dist/src/commands/channel/start.js +352 -0
- package/dist/src/commands/channel/start.js.map +1 -0
- package/dist/src/commands/channel/start.test.d.ts +1 -0
- package/dist/src/commands/channel/start.test.js +156 -0
- package/dist/src/commands/channel/start.test.js.map +1 -0
- package/dist/src/commands/channel/status.d.ts +2 -0
- package/dist/src/commands/channel/status.js +58 -0
- package/dist/src/commands/channel/status.js.map +1 -0
- package/dist/src/commands/channel/stop.d.ts +2 -0
- package/dist/src/commands/channel/stop.js +34 -0
- package/dist/src/commands/channel/stop.js.map +1 -0
- package/dist/src/commands/channel.d.ts +2 -0
- package/dist/src/commands/channel.js +29 -0
- package/dist/src/commands/channel.js.map +1 -0
- package/dist/src/commands/extensions/consent.d.ts +47 -0
- package/dist/src/commands/extensions/consent.js +182 -0
- package/dist/src/commands/extensions/consent.js.map +1 -0
- package/dist/src/commands/extensions/consent.test.d.ts +6 -0
- package/dist/src/commands/extensions/consent.test.js +277 -0
- package/dist/src/commands/extensions/consent.test.js.map +1 -0
- package/dist/src/commands/extensions/disable.d.ts +13 -0
- package/dist/src/commands/extensions/disable.js +65 -0
- package/dist/src/commands/extensions/disable.js.map +1 -0
- package/dist/src/commands/extensions/disable.test.d.ts +6 -0
- package/dist/src/commands/extensions/disable.test.js +101 -0
- package/dist/src/commands/extensions/disable.test.js.map +1 -0
- package/dist/src/commands/extensions/enable.d.ts +13 -0
- package/dist/src/commands/extensions/enable.js +70 -0
- package/dist/src/commands/extensions/enable.js.map +1 -0
- package/dist/src/commands/extensions/enable.test.d.ts +6 -0
- package/dist/src/commands/extensions/enable.test.js +93 -0
- package/dist/src/commands/extensions/enable.test.js.map +1 -0
- package/dist/src/commands/extensions/examples/agent/agents/diary.md +86 -0
- package/dist/src/commands/extensions/examples/agent/qwen-extension.json +5 -0
- package/dist/src/commands/extensions/examples/commands/commands/fs/grep-code.md +3 -0
- package/dist/src/commands/extensions/examples/commands/qwen-extension.json +5 -0
- package/dist/src/commands/extensions/examples/context/QWEN.md +8 -0
- package/dist/src/commands/extensions/examples/context/qwen-extension.json +5 -0
- package/dist/src/commands/extensions/examples/mcp-server/example.ts +60 -0
- package/dist/src/commands/extensions/examples/mcp-server/package.json +18 -0
- package/dist/src/commands/extensions/examples/mcp-server/qwen-extension.json +12 -0
- package/dist/src/commands/extensions/examples/mcp-server/tsconfig.json +13 -0
- package/dist/src/commands/extensions/examples/skills/qwen-extension.json +5 -0
- package/dist/src/commands/extensions/examples/skills/skills/synonyms/SKILL.md +48 -0
- package/dist/src/commands/extensions/install.d.ts +17 -0
- package/dist/src/commands/extensions/install.js +105 -0
- package/dist/src/commands/extensions/install.js.map +1 -0
- package/dist/src/commands/extensions/install.test.d.ts +6 -0
- package/dist/src/commands/extensions/install.test.js +164 -0
- package/dist/src/commands/extensions/install.test.js.map +1 -0
- package/dist/src/commands/extensions/link.d.ts +12 -0
- package/dist/src/commands/extensions/link.js +48 -0
- package/dist/src/commands/extensions/link.js.map +1 -0
- package/dist/src/commands/extensions/link.test.d.ts +6 -0
- package/dist/src/commands/extensions/link.test.js +74 -0
- package/dist/src/commands/extensions/link.test.js.map +1 -0
- package/dist/src/commands/extensions/list.d.ts +8 -0
- package/dist/src/commands/extensions/list.js +35 -0
- package/dist/src/commands/extensions/list.js.map +1 -0
- package/dist/src/commands/extensions/list.test.d.ts +6 -0
- package/dist/src/commands/extensions/list.test.js +76 -0
- package/dist/src/commands/extensions/list.test.js.map +1 -0
- package/dist/src/commands/extensions/new.d.ts +7 -0
- package/dist/src/commands/extensions/new.js +95 -0
- package/dist/src/commands/extensions/new.js.map +1 -0
- package/dist/src/commands/extensions/new.test.d.ts +6 -0
- package/dist/src/commands/extensions/new.test.js +59 -0
- package/dist/src/commands/extensions/new.test.js.map +1 -0
- package/dist/src/commands/extensions/settings.d.ts +7 -0
- package/dist/src/commands/extensions/settings.js +115 -0
- package/dist/src/commands/extensions/settings.js.map +1 -0
- package/dist/src/commands/extensions/settings.test.d.ts +6 -0
- package/dist/src/commands/extensions/settings.test.js +251 -0
- package/dist/src/commands/extensions/settings.test.js.map +1 -0
- package/dist/src/commands/extensions/uninstall.d.ts +12 -0
- package/dist/src/commands/extensions/uninstall.js +50 -0
- package/dist/src/commands/extensions/uninstall.js.map +1 -0
- package/dist/src/commands/extensions/uninstall.test.d.ts +6 -0
- package/dist/src/commands/extensions/uninstall.test.js +18 -0
- package/dist/src/commands/extensions/uninstall.test.js.map +1 -0
- package/dist/src/commands/extensions/update.d.ts +13 -0
- package/dist/src/commands/extensions/update.js +102 -0
- package/dist/src/commands/extensions/update.js.map +1 -0
- package/dist/src/commands/extensions/update.test.d.ts +6 -0
- package/dist/src/commands/extensions/update.test.js +185 -0
- package/dist/src/commands/extensions/update.test.js.map +1 -0
- package/dist/src/commands/extensions/utils.d.ts +8 -0
- package/dist/src/commands/extensions/utils.js +79 -0
- package/dist/src/commands/extensions/utils.js.map +1 -0
- package/dist/src/commands/extensions/utils.test.d.ts +6 -0
- package/dist/src/commands/extensions/utils.test.js +147 -0
- package/dist/src/commands/extensions/utils.test.js.map +1 -0
- package/dist/src/commands/extensions.d.ts +7 -0
- package/dist/src/commands/extensions.js +35 -0
- package/dist/src/commands/extensions.js.map +1 -0
- package/dist/src/commands/extensions.test.d.ts +6 -0
- package/dist/src/commands/extensions.test.js +72 -0
- package/dist/src/commands/extensions.test.js.map +1 -0
- package/dist/src/commands/hooks.d.ts +7 -0
- package/dist/src/commands/hooks.js +20 -0
- package/dist/src/commands/hooks.js.map +1 -0
- package/dist/src/commands/mcp/add.d.ts +7 -0
- package/dist/src/commands/mcp/add.js +247 -0
- package/dist/src/commands/mcp/add.js.map +1 -0
- package/dist/src/commands/mcp/list.d.ts +8 -0
- package/dist/src/commands/mcp/list.js +118 -0
- package/dist/src/commands/mcp/list.js.map +1 -0
- package/dist/src/commands/mcp/reconnect.d.ts +7 -0
- package/dist/src/commands/mcp/reconnect.js +154 -0
- package/dist/src/commands/mcp/reconnect.js.map +1 -0
- package/dist/src/commands/mcp/remove.d.ts +7 -0
- package/dist/src/commands/mcp/remove.js +54 -0
- package/dist/src/commands/mcp/remove.js.map +1 -0
- package/dist/src/commands/mcp.d.ts +7 -0
- package/dist/src/commands/mcp.js +25 -0
- package/dist/src/commands/mcp.js.map +1 -0
- package/dist/src/commands/review/cleanup.d.ts +7 -0
- package/dist/src/commands/review/cleanup.js +81 -0
- package/dist/src/commands/review/cleanup.js.map +1 -0
- package/dist/src/commands/review/deterministic.d.ts +7 -0
- package/dist/src/commands/review/deterministic.js +474 -0
- package/dist/src/commands/review/deterministic.js.map +1 -0
- package/dist/src/commands/review/fetch-pr.d.ts +7 -0
- package/dist/src/commands/review/fetch-pr.js +124 -0
- package/dist/src/commands/review/fetch-pr.js.map +1 -0
- package/dist/src/commands/review/lib/gh.d.ts +34 -0
- package/dist/src/commands/review/lib/gh.js +64 -0
- package/dist/src/commands/review/lib/gh.js.map +1 -0
- package/dist/src/commands/review/lib/git.d.ts +18 -0
- package/dist/src/commands/review/lib/git.js +41 -0
- package/dist/src/commands/review/lib/git.js.map +1 -0
- package/dist/src/commands/review/lib/paths.d.ts +23 -0
- package/dist/src/commands/review/lib/paths.js +37 -0
- package/dist/src/commands/review/lib/paths.js.map +1 -0
- package/dist/src/commands/review/load-rules.d.ts +7 -0
- package/dist/src/commands/review/load-rules.js +112 -0
- package/dist/src/commands/review/load-rules.js.map +1 -0
- package/dist/src/commands/review/pr-context.d.ts +7 -0
- package/dist/src/commands/review/pr-context.js +214 -0
- package/dist/src/commands/review/pr-context.js.map +1 -0
- package/dist/src/commands/review/presubmit.d.ts +7 -0
- package/dist/src/commands/review/presubmit.js +190 -0
- package/dist/src/commands/review/presubmit.js.map +1 -0
- package/dist/src/commands/review.d.ts +7 -0
- package/dist/src/commands/review.js +28 -0
- package/dist/src/commands/review.js.map +1 -0
- package/dist/src/commands/serve.d.ts +21 -0
- package/dist/src/commands/serve.js +214 -0
- package/dist/src/commands/serve.js.map +1 -0
- package/dist/src/commands/sp.d.ts +7 -0
- package/dist/src/commands/sp.js +62 -0
- package/dist/src/commands/sp.js.map +1 -0
- package/dist/src/config/auth.d.ts +10 -0
- package/dist/src/config/auth.js +183 -0
- package/dist/src/config/auth.js.map +1 -0
- package/dist/src/config/auth.test.d.ts +6 -0
- package/dist/src/config/auth.test.js +292 -0
- package/dist/src/config/auth.test.js.map +1 -0
- package/dist/src/config/config.d.ts +144 -0
- package/dist/src/config/config.js +1618 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/jsonSchemaArg.test.d.ts +6 -0
- package/dist/src/config/jsonSchemaArg.test.js +305 -0
- package/dist/src/config/jsonSchemaArg.test.js.map +1 -0
- package/dist/src/config/keyBindings.d.ts +89 -0
- package/dist/src/config/keyBindings.js +188 -0
- package/dist/src/config/keyBindings.js.map +1 -0
- package/dist/src/config/keyBindings.test.d.ts +6 -0
- package/dist/src/config/keyBindings.test.js +51 -0
- package/dist/src/config/keyBindings.test.js.map +1 -0
- package/dist/src/config/loadedSettingsAdapter.d.ts +15 -0
- package/dist/src/config/loadedSettingsAdapter.js +80 -0
- package/dist/src/config/loadedSettingsAdapter.js.map +1 -0
- package/dist/src/config/loadedSettingsAdapter.test.d.ts +6 -0
- package/dist/src/config/loadedSettingsAdapter.test.js +127 -0
- package/dist/src/config/loadedSettingsAdapter.test.js.map +1 -0
- package/dist/src/config/migration/index.d.ts +59 -0
- package/dist/src/config/migration/index.js +94 -0
- package/dist/src/config/migration/index.js.map +1 -0
- package/dist/src/config/migration/index.test.d.ts +6 -0
- package/dist/src/config/migration/index.test.js +295 -0
- package/dist/src/config/migration/index.test.js.map +1 -0
- package/dist/src/config/migration/scheduler.d.ts +51 -0
- package/dist/src/config/migration/scheduler.js +95 -0
- package/dist/src/config/migration/scheduler.js.map +1 -0
- package/dist/src/config/migration/scheduler.test.d.ts +6 -0
- package/dist/src/config/migration/scheduler.test.js +129 -0
- package/dist/src/config/migration/scheduler.test.js.map +1 -0
- package/dist/src/config/migration/types.d.ts +53 -0
- package/dist/src/config/migration/types.js +7 -0
- package/dist/src/config/migration/types.js.map +1 -0
- package/dist/src/config/migration/versions/v1-to-v2-shared.d.ts +27 -0
- package/dist/src/config/migration/versions/v1-to-v2-shared.js +174 -0
- package/dist/src/config/migration/versions/v1-to-v2-shared.js.map +1 -0
- package/dist/src/config/migration/versions/v1-to-v2.d.ts +81 -0
- package/dist/src/config/migration/versions/v1-to-v2.js +222 -0
- package/dist/src/config/migration/versions/v1-to-v2.js.map +1 -0
- package/dist/src/config/migration/versions/v1-to-v2.test.d.ts +6 -0
- package/dist/src/config/migration/versions/v1-to-v2.test.js +189 -0
- package/dist/src/config/migration/versions/v1-to-v2.test.js.map +1 -0
- package/dist/src/config/migration/versions/v2-to-v3.d.ts +61 -0
- package/dist/src/config/migration/versions/v2-to-v3.js +185 -0
- package/dist/src/config/migration/versions/v2-to-v3.js.map +1 -0
- package/dist/src/config/migration/versions/v2-to-v3.test.d.ts +6 -0
- package/dist/src/config/migration/versions/v2-to-v3.test.js +337 -0
- package/dist/src/config/migration/versions/v2-to-v3.test.js.map +1 -0
- package/dist/src/config/migration/versions/v3-to-v4.d.ts +34 -0
- package/dist/src/config/migration/versions/v3-to-v4.js +126 -0
- package/dist/src/config/migration/versions/v3-to-v4.js.map +1 -0
- package/dist/src/config/migration/versions/v3-to-v4.test.d.ts +6 -0
- package/dist/src/config/migration/versions/v3-to-v4.test.js +164 -0
- package/dist/src/config/migration/versions/v3-to-v4.test.js.map +1 -0
- package/dist/src/config/modelProvidersScope.d.ts +20 -0
- package/dist/src/config/modelProvidersScope.js +39 -0
- package/dist/src/config/modelProvidersScope.js.map +1 -0
- package/dist/src/config/modelProvidersScope.test.d.ts +6 -0
- package/dist/src/config/modelProvidersScope.test.js +66 -0
- package/dist/src/config/modelProvidersScope.test.js.map +1 -0
- package/dist/src/config/path-freshness.test.d.ts +6 -0
- package/dist/src/config/path-freshness.test.js +52 -0
- package/dist/src/config/path-freshness.test.js.map +1 -0
- package/dist/src/config/sandboxConfig.d.ts +13 -0
- package/dist/src/config/sandboxConfig.js +74 -0
- package/dist/src/config/sandboxConfig.js.map +1 -0
- package/dist/src/config/settings.d.ts +119 -0
- package/dist/src/config/settings.js +1015 -0
- package/dist/src/config/settings.js.map +1 -0
- package/dist/src/config/settingsSchema.d.ts +2207 -0
- package/dist/src/config/settingsSchema.js +2246 -0
- package/dist/src/config/settingsSchema.js.map +1 -0
- package/dist/src/config/settingsSchema.test.d.ts +6 -0
- package/dist/src/config/settingsSchema.test.js +232 -0
- package/dist/src/config/settingsSchema.test.js.map +1 -0
- package/dist/src/config/trustedFolders.d.ts +54 -0
- package/dist/src/config/trustedFolders.js +176 -0
- package/dist/src/config/trustedFolders.js.map +1 -0
- package/dist/src/config/trustedFolders.test.d.ts +6 -0
- package/dist/src/config/trustedFolders.test.js +354 -0
- package/dist/src/config/trustedFolders.test.js.map +1 -0
- package/dist/src/core/auth.d.ts +13 -0
- package/dist/src/core/auth.js +34 -0
- package/dist/src/core/auth.js.map +1 -0
- package/dist/src/core/auth.test.d.ts +6 -0
- package/dist/src/core/auth.test.js +47 -0
- package/dist/src/core/auth.test.js.map +1 -0
- package/dist/src/core/initializer.d.ts +21 -0
- package/dist/src/core/initializer.js +42 -0
- package/dist/src/core/initializer.js.map +1 -0
- package/dist/src/core/initializer.test.d.ts +6 -0
- package/dist/src/core/initializer.test.js +123 -0
- package/dist/src/core/initializer.test.js.map +1 -0
- package/dist/src/core/theme.d.ts +12 -0
- package/dist/src/core/theme.js +25 -0
- package/dist/src/core/theme.js.map +1 -0
- package/dist/src/core/theme.test.d.ts +6 -0
- package/dist/src/core/theme.test.js +57 -0
- package/dist/src/core/theme.test.js.map +1 -0
- package/dist/src/dualOutput/DualOutputBridge.d.ts +84 -0
- package/dist/src/dualOutput/DualOutputBridge.js +293 -0
- package/dist/src/dualOutput/DualOutputBridge.js.map +1 -0
- package/dist/src/dualOutput/DualOutputBridge.test.d.ts +6 -0
- package/dist/src/dualOutput/DualOutputBridge.test.js +157 -0
- package/dist/src/dualOutput/DualOutputBridge.test.js.map +1 -0
- package/dist/src/dualOutput/DualOutputContext.d.ts +19 -0
- package/dist/src/dualOutput/DualOutputContext.js +22 -0
- package/dist/src/dualOutput/DualOutputContext.js.map +1 -0
- package/dist/src/dualOutput/index.d.ts +7 -0
- package/dist/src/dualOutput/index.js +8 -0
- package/dist/src/dualOutput/index.js.map +1 -0
- package/dist/src/export/index.d.ts +6 -0
- package/dist/src/export/index.js +7 -0
- package/dist/src/export/index.js.map +1 -0
- package/dist/src/gemini.d.ts +13 -0
- package/dist/src/gemini.js +908 -0
- package/dist/src/gemini.js.map +1 -0
- package/dist/src/gemini.test.d.ts +6 -0
- package/dist/src/gemini.test.js +975 -0
- package/dist/src/gemini.test.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +7 -0
- package/dist/src/generated/git-commit.js +10 -0
- package/dist/src/generated/git-commit.js.map +1 -0
- package/dist/src/i18n/index.d.ts +27 -0
- package/dist/src/i18n/index.js +213 -0
- package/dist/src/i18n/index.js.map +1 -0
- package/dist/src/i18n/index.test.d.ts +6 -0
- package/dist/src/i18n/index.test.js +103 -0
- package/dist/src/i18n/index.test.js.map +1 -0
- package/dist/src/i18n/languages.d.ts +43 -0
- package/dist/src/i18n/languages.js +138 -0
- package/dist/src/i18n/languages.js.map +1 -0
- package/dist/src/i18n/locales/ca.js +3951 -0
- package/dist/src/i18n/locales/de.js +2018 -0
- package/dist/src/i18n/locales/en.js +2161 -0
- package/dist/src/i18n/locales/fr.js +2013 -0
- package/dist/src/i18n/locales/ja.js +1780 -0
- package/dist/src/i18n/locales/pt.js +2005 -0
- package/dist/src/i18n/locales/ru.js +1993 -0
- package/dist/src/i18n/locales/zh-TW.js +1729 -0
- package/dist/src/i18n/locales/zh.js +1929 -0
- package/dist/src/i18n/mustTranslateKeys.d.ts +12 -0
- package/dist/src/i18n/mustTranslateKeys.js +111 -0
- package/dist/src/i18n/mustTranslateKeys.js.map +1 -0
- package/dist/src/i18n/mustTranslateKeys.test.d.ts +6 -0
- package/dist/src/i18n/mustTranslateKeys.test.js +103 -0
- package/dist/src/i18n/mustTranslateKeys.test.js.map +1 -0
- package/dist/src/i18n/translationDict.d.ts +9 -0
- package/dist/src/i18n/translationDict.js +17 -0
- package/dist/src/i18n/translationDict.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlContext.d.ts +71 -0
- package/dist/src/nonInteractive/control/ControlContext.js +36 -0
- package/dist/src/nonInteractive/control/ControlContext.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.d.ts +116 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.js +290 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.d.ts +6 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.js +614 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlService.d.ts +79 -0
- package/dist/src/nonInteractive/control/ControlService.js +139 -0
- package/dist/src/nonInteractive/control/ControlService.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/baseController.d.ts +53 -0
- package/dist/src/nonInteractive/control/controllers/baseController.js +136 -0
- package/dist/src/nonInteractive/control/controllers/baseController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/hookController.d.ts +25 -0
- package/dist/src/nonInteractive/control/controllers/hookController.js +40 -0
- package/dist/src/nonInteractive/control/controllers/hookController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.d.ts +57 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.js +361 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.test.d.ts +6 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.test.js +140 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.test.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/sdkMcpController.d.ts +54 -0
- package/dist/src/nonInteractive/control/controllers/sdkMcpController.js +80 -0
- package/dist/src/nonInteractive/control/controllers/sdkMcpController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/systemController.d.ts +67 -0
- package/dist/src/nonInteractive/control/controllers/systemController.js +326 -0
- package/dist/src/nonInteractive/control/controllers/systemController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/systemController.test.d.ts +6 -0
- package/dist/src/nonInteractive/control/controllers/systemController.test.js +121 -0
- package/dist/src/nonInteractive/control/controllers/systemController.test.js.map +1 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.d.ts +105 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.js +7 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.js.map +1 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.d.ts +505 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js +1041 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js +1304 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.d.ts +29 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.js +64 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js +684 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.d.ts +16 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.js +54 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js +178 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.d.ts +84 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.dualOutput.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.dualOutput.test.js +118 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.dualOutput.test.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js +227 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js +1046 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/io/index.d.ts +6 -0
- package/dist/src/nonInteractive/io/index.js +7 -0
- package/dist/src/nonInteractive/io/index.js.map +1 -0
- package/dist/src/nonInteractive/session.d.ts +8 -0
- package/dist/src/nonInteractive/session.js +664 -0
- package/dist/src/nonInteractive/session.js.map +1 -0
- package/dist/src/nonInteractive/session.test.d.ts +6 -0
- package/dist/src/nonInteractive/session.test.js +680 -0
- package/dist/src/nonInteractive/session.test.js.map +1 -0
- package/dist/src/nonInteractive/types.d.ts +415 -0
- package/dist/src/nonInteractive/types.js +77 -0
- package/dist/src/nonInteractive/types.js.map +1 -0
- package/dist/src/nonInteractiveCli.d.ts +33 -0
- package/dist/src/nonInteractiveCli.js +1058 -0
- package/dist/src/nonInteractiveCli.js.map +1 -0
- package/dist/src/nonInteractiveCliCommands.d.ts +59 -0
- package/dist/src/nonInteractiveCliCommands.js +326 -0
- package/dist/src/nonInteractiveCliCommands.js.map +1 -0
- package/dist/src/nonInteractiveCliCommands.test.d.ts +6 -0
- package/dist/src/nonInteractiveCliCommands.test.js +484 -0
- package/dist/src/nonInteractiveCliCommands.test.js.map +1 -0
- package/dist/src/patches/is-in-ci.d.ts +7 -0
- package/dist/src/patches/is-in-ci.js +15 -0
- package/dist/src/patches/is-in-ci.js.map +1 -0
- package/dist/src/remoteInput/RemoteInputContext.d.ts +8 -0
- package/dist/src/remoteInput/RemoteInputContext.js +9 -0
- package/dist/src/remoteInput/RemoteInputContext.js.map +1 -0
- package/dist/src/remoteInput/RemoteInputWatcher.d.ts +83 -0
- package/dist/src/remoteInput/RemoteInputWatcher.js +201 -0
- package/dist/src/remoteInput/RemoteInputWatcher.js.map +1 -0
- package/dist/src/remoteInput/RemoteInputWatcher.test.d.ts +6 -0
- package/dist/src/remoteInput/RemoteInputWatcher.test.js +100 -0
- package/dist/src/remoteInput/RemoteInputWatcher.test.js.map +1 -0
- package/dist/src/remoteInput/index.d.ts +7 -0
- package/dist/src/remoteInput/index.js +8 -0
- package/dist/src/remoteInput/index.js.map +1 -0
- package/dist/src/serve/auth/deviceFlow.d.ts +595 -0
- package/dist/src/serve/auth/deviceFlow.js +1243 -0
- package/dist/src/serve/auth/deviceFlow.js.map +1 -0
- package/dist/src/serve/auth/deviceFlow.test.d.ts +6 -0
- package/dist/src/serve/auth/deviceFlow.test.js +1314 -0
- package/dist/src/serve/auth/deviceFlow.test.js.map +1 -0
- package/dist/src/serve/auth/qwenDeviceFlowProvider.d.ts +30 -0
- package/dist/src/serve/auth/qwenDeviceFlowProvider.js +331 -0
- package/dist/src/serve/auth/qwenDeviceFlowProvider.js.map +1 -0
- package/dist/src/serve/auth/qwenDeviceFlowProvider.test.d.ts +6 -0
- package/dist/src/serve/auth/qwenDeviceFlowProvider.test.js +301 -0
- package/dist/src/serve/auth/qwenDeviceFlowProvider.test.js.map +1 -0
- package/dist/src/serve/auth.d.ts +101 -0
- package/dist/src/serve/auth.js +216 -0
- package/dist/src/serve/auth.js.map +1 -0
- package/dist/src/serve/capabilities.d.ts +196 -0
- package/dist/src/serve/capabilities.js +227 -0
- package/dist/src/serve/capabilities.js.map +1 -0
- package/dist/src/serve/daemonStatusProvider.d.ts +14 -0
- package/dist/src/serve/daemonStatusProvider.js +252 -0
- package/dist/src/serve/daemonStatusProvider.js.map +1 -0
- package/dist/src/serve/debugMode.d.ts +27 -0
- package/dist/src/serve/debugMode.js +33 -0
- package/dist/src/serve/debugMode.js.map +1 -0
- package/dist/src/serve/demo.d.ts +11 -0
- package/dist/src/serve/demo.js +640 -0
- package/dist/src/serve/demo.js.map +1 -0
- package/dist/src/serve/envSnapshot.d.ts +28 -0
- package/dist/src/serve/envSnapshot.js +199 -0
- package/dist/src/serve/envSnapshot.js.map +1 -0
- package/dist/src/serve/envSnapshot.test.d.ts +6 -0
- package/dist/src/serve/envSnapshot.test.js +181 -0
- package/dist/src/serve/envSnapshot.test.js.map +1 -0
- package/dist/src/serve/eventBus.d.ts +6 -0
- package/dist/src/serve/eventBus.js +15 -0
- package/dist/src/serve/eventBus.js.map +1 -0
- package/dist/src/serve/fs/audit.d.ts +144 -0
- package/dist/src/serve/fs/audit.js +193 -0
- package/dist/src/serve/fs/audit.js.map +1 -0
- package/dist/src/serve/fs/audit.test.d.ts +6 -0
- package/dist/src/serve/fs/audit.test.js +246 -0
- package/dist/src/serve/fs/audit.test.js.map +1 -0
- package/dist/src/serve/fs/contract.test.d.ts +6 -0
- package/dist/src/serve/fs/contract.test.js +211 -0
- package/dist/src/serve/fs/contract.test.js.map +1 -0
- package/dist/src/serve/fs/errors.d.ts +87 -0
- package/dist/src/serve/fs/errors.js +128 -0
- package/dist/src/serve/fs/errors.js.map +1 -0
- package/dist/src/serve/fs/errors.test.d.ts +6 -0
- package/dist/src/serve/fs/errors.test.js +152 -0
- package/dist/src/serve/fs/errors.test.js.map +1 -0
- package/dist/src/serve/fs/index.d.ts +10 -0
- package/dist/src/serve/fs/index.js +11 -0
- package/dist/src/serve/fs/index.js.map +1 -0
- package/dist/src/serve/fs/paths.d.ts +103 -0
- package/dist/src/serve/fs/paths.js +433 -0
- package/dist/src/serve/fs/paths.js.map +1 -0
- package/dist/src/serve/fs/paths.test.d.ts +6 -0
- package/dist/src/serve/fs/paths.test.js +309 -0
- package/dist/src/serve/fs/paths.test.js.map +1 -0
- package/dist/src/serve/fs/policy.d.ts +142 -0
- package/dist/src/serve/fs/policy.js +189 -0
- package/dist/src/serve/fs/policy.js.map +1 -0
- package/dist/src/serve/fs/policy.test.d.ts +6 -0
- package/dist/src/serve/fs/policy.test.js +193 -0
- package/dist/src/serve/fs/policy.test.js.map +1 -0
- package/dist/src/serve/fs/workspaceFileSystem.d.ts +157 -0
- package/dist/src/serve/fs/workspaceFileSystem.js +1377 -0
- package/dist/src/serve/fs/workspaceFileSystem.js.map +1 -0
- package/dist/src/serve/fs/workspaceFileSystem.test.d.ts +6 -0
- package/dist/src/serve/fs/workspaceFileSystem.test.js +880 -0
- package/dist/src/serve/fs/workspaceFileSystem.test.js.map +1 -0
- package/dist/src/serve/httpAcpBridge.d.ts +80 -0
- package/dist/src/serve/httpAcpBridge.js +3559 -0
- package/dist/src/serve/httpAcpBridge.js.map +1 -0
- package/dist/src/serve/httpAcpBridge.test.d.ts +6 -0
- package/dist/src/serve/httpAcpBridge.test.js +4987 -0
- package/dist/src/serve/httpAcpBridge.test.js.map +1 -0
- package/dist/src/serve/inMemoryChannel.d.ts +6 -0
- package/dist/src/serve/inMemoryChannel.js +14 -0
- package/dist/src/serve/inMemoryChannel.js.map +1 -0
- package/dist/src/serve/index.d.ts +15 -0
- package/dist/src/serve/index.js +16 -0
- package/dist/src/serve/index.js.map +1 -0
- package/dist/src/serve/loopbackBinds.d.ts +18 -0
- package/dist/src/serve/loopbackBinds.js +33 -0
- package/dist/src/serve/loopbackBinds.js.map +1 -0
- package/dist/src/serve/routes/workspaceFileRead.d.ts +90 -0
- package/dist/src/serve/routes/workspaceFileRead.js +458 -0
- package/dist/src/serve/routes/workspaceFileRead.js.map +1 -0
- package/dist/src/serve/routes/workspaceFileRead.test.d.ts +6 -0
- package/dist/src/serve/routes/workspaceFileRead.test.js +453 -0
- package/dist/src/serve/routes/workspaceFileRead.test.js.map +1 -0
- package/dist/src/serve/routes/workspaceFileWrite.d.ts +17 -0
- package/dist/src/serve/routes/workspaceFileWrite.js +224 -0
- package/dist/src/serve/routes/workspaceFileWrite.js.map +1 -0
- package/dist/src/serve/routes/workspaceFileWrite.test.d.ts +6 -0
- package/dist/src/serve/routes/workspaceFileWrite.test.js +223 -0
- package/dist/src/serve/routes/workspaceFileWrite.test.js.map +1 -0
- package/dist/src/serve/runQwenServe.d.ts +67 -0
- package/dist/src/serve/runQwenServe.js +616 -0
- package/dist/src/serve/runQwenServe.js.map +1 -0
- package/dist/src/serve/server.d.ts +125 -0
- package/dist/src/serve/server.js +2297 -0
- package/dist/src/serve/server.js.map +1 -0
- package/dist/src/serve/status.d.ts +6 -0
- package/dist/src/serve/status.js +13 -0
- package/dist/src/serve/status.js.map +1 -0
- package/dist/src/serve/types.d.ts +175 -0
- package/dist/src/serve/types.js +10 -0
- package/dist/src/serve/types.js.map +1 -0
- package/dist/src/serve/workspaceAgents.d.ts +47 -0
- package/dist/src/serve/workspaceAgents.js +1171 -0
- package/dist/src/serve/workspaceAgents.js.map +1 -0
- package/dist/src/serve/workspaceAgents.test.d.ts +6 -0
- package/dist/src/serve/workspaceAgents.test.js +823 -0
- package/dist/src/serve/workspaceAgents.test.js.map +1 -0
- package/dist/src/serve/workspaceMemory.d.ts +60 -0
- package/dist/src/serve/workspaceMemory.js +323 -0
- package/dist/src/serve/workspaceMemory.js.map +1 -0
- package/dist/src/serve/workspaceMemory.test.d.ts +6 -0
- package/dist/src/serve/workspaceMemory.test.js +418 -0
- package/dist/src/serve/workspaceMemory.test.js.map +1 -0
- package/dist/src/services/BuiltinCommandLoader.d.ts +24 -0
- package/dist/src/services/BuiltinCommandLoader.js +159 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -0
- package/dist/src/services/BuiltinCommandLoader.test.d.ts +6 -0
- package/dist/src/services/BuiltinCommandLoader.test.js +234 -0
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -0
- package/dist/src/services/BundledSkillLoader.d.ts +17 -0
- package/dist/src/services/BundledSkillLoader.js +97 -0
- package/dist/src/services/BundledSkillLoader.js.map +1 -0
- package/dist/src/services/BundledSkillLoader.test.d.ts +6 -0
- package/dist/src/services/BundledSkillLoader.test.js +301 -0
- package/dist/src/services/BundledSkillLoader.test.js.map +1 -0
- package/dist/src/services/CommandService.d.ts +69 -0
- package/dist/src/services/CommandService.js +128 -0
- package/dist/src/services/CommandService.js.map +1 -0
- package/dist/src/services/CommandService.test.d.ts +6 -0
- package/dist/src/services/CommandService.test.js +263 -0
- package/dist/src/services/CommandService.test.js.map +1 -0
- package/dist/src/services/FileCommandLoader-extension.test.d.ts +6 -0
- package/dist/src/services/FileCommandLoader-extension.test.js +279 -0
- package/dist/src/services/FileCommandLoader-extension.test.js.map +1 -0
- package/dist/src/services/FileCommandLoader-markdown.test.d.ts +6 -0
- package/dist/src/services/FileCommandLoader-markdown.test.js +111 -0
- package/dist/src/services/FileCommandLoader-markdown.test.js.map +1 -0
- package/dist/src/services/FileCommandLoader.d.ts +64 -0
- package/dist/src/services/FileCommandLoader.js +259 -0
- package/dist/src/services/FileCommandLoader.js.map +1 -0
- package/dist/src/services/McpPromptLoader.d.ts +35 -0
- package/dist/src/services/McpPromptLoader.js +261 -0
- package/dist/src/services/McpPromptLoader.js.map +1 -0
- package/dist/src/services/McpPromptLoader.test.d.ts +6 -0
- package/dist/src/services/McpPromptLoader.test.js +341 -0
- package/dist/src/services/McpPromptLoader.test.js.map +1 -0
- package/dist/src/services/SkillCommandLoader.d.ts +23 -0
- package/dist/src/services/SkillCommandLoader.js +110 -0
- package/dist/src/services/SkillCommandLoader.js.map +1 -0
- package/dist/src/services/SkillCommandLoader.test.d.ts +6 -0
- package/dist/src/services/SkillCommandLoader.test.js +307 -0
- package/dist/src/services/SkillCommandLoader.test.js.map +1 -0
- package/dist/src/services/command-factory.d.ts +25 -0
- package/dist/src/services/command-factory.js +122 -0
- package/dist/src/services/command-factory.js.map +1 -0
- package/dist/src/services/command-factory.test.d.ts +6 -0
- package/dist/src/services/command-factory.test.js +31 -0
- package/dist/src/services/command-factory.test.js.map +1 -0
- package/dist/src/services/command-migration-tool.d.ts +39 -0
- package/dist/src/services/command-migration-tool.js +135 -0
- package/dist/src/services/command-migration-tool.js.map +1 -0
- package/dist/src/services/command-migration-tool.test.d.ts +6 -0
- package/dist/src/services/command-migration-tool.test.js +175 -0
- package/dist/src/services/command-migration-tool.test.js.map +1 -0
- package/dist/src/services/commandMetadata.d.ts +21 -0
- package/dist/src/services/commandMetadata.js +106 -0
- package/dist/src/services/commandMetadata.js.map +1 -0
- package/dist/src/services/commandMetadata.test.d.ts +6 -0
- package/dist/src/services/commandMetadata.test.js +216 -0
- package/dist/src/services/commandMetadata.test.js.map +1 -0
- package/dist/src/services/commandUtils.d.ts +36 -0
- package/dist/src/services/commandUtils.js +57 -0
- package/dist/src/services/commandUtils.js.map +1 -0
- package/dist/src/services/commandUtils.test.d.ts +6 -0
- package/dist/src/services/commandUtils.test.js +159 -0
- package/dist/src/services/commandUtils.test.js.map +1 -0
- package/dist/src/services/insight/generators/DataProcessor.d.ts +23 -0
- package/dist/src/services/insight/generators/DataProcessor.js +1001 -0
- package/dist/src/services/insight/generators/DataProcessor.js.map +1 -0
- package/dist/src/services/insight/generators/DataProcessor.test.d.ts +6 -0
- package/dist/src/services/insight/generators/DataProcessor.test.js +1210 -0
- package/dist/src/services/insight/generators/DataProcessor.test.js.map +1 -0
- package/dist/src/services/insight/generators/StaticInsightGenerator.d.ts +16 -0
- package/dist/src/services/insight/generators/StaticInsightGenerator.js +63 -0
- package/dist/src/services/insight/generators/StaticInsightGenerator.js.map +1 -0
- package/dist/src/services/insight/generators/StaticInsightGenerator.test.d.ts +6 -0
- package/dist/src/services/insight/generators/StaticInsightGenerator.test.js +60 -0
- package/dist/src/services/insight/generators/StaticInsightGenerator.test.js.map +1 -0
- package/dist/src/services/insight/generators/TemplateRenderer.d.ts +9 -0
- package/dist/src/services/insight/generators/TemplateRenderer.js +49 -0
- package/dist/src/services/insight/generators/TemplateRenderer.js.map +1 -0
- package/dist/src/services/insight/types/QualitativeInsightTypes.d.ts +74 -0
- package/dist/src/services/insight/types/QualitativeInsightTypes.js +2 -0
- package/dist/src/services/insight/types/QualitativeInsightTypes.js.map +1 -0
- package/dist/src/services/insight/types/StaticInsightTypes.d.ts +59 -0
- package/dist/src/services/insight/types/StaticInsightTypes.js +7 -0
- package/dist/src/services/insight/types/StaticInsightTypes.js.map +1 -0
- package/dist/src/services/markdown-command-parser.d.ts +52 -0
- package/dist/src/services/markdown-command-parser.js +60 -0
- package/dist/src/services/markdown-command-parser.js.map +1 -0
- package/dist/src/services/markdown-command-parser.test.d.ts +6 -0
- package/dist/src/services/markdown-command-parser.test.js +146 -0
- package/dist/src/services/markdown-command-parser.test.js.map +1 -0
- package/dist/src/services/notificationService.d.ts +19 -0
- package/dist/src/services/notificationService.js +64 -0
- package/dist/src/services/notificationService.js.map +1 -0
- package/dist/src/services/notificationService.test.d.ts +6 -0
- package/dist/src/services/notificationService.test.js +114 -0
- package/dist/src/services/notificationService.test.js.map +1 -0
- package/dist/src/services/prompt-processors/argumentProcessor.d.ts +16 -0
- package/dist/src/services/prompt-processors/argumentProcessor.js +21 -0
- package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -0
- package/dist/src/services/prompt-processors/atFileProcessor.d.ts +12 -0
- package/dist/src/services/prompt-processors/atFileProcessor.js +63 -0
- package/dist/src/services/prompt-processors/atFileProcessor.js.map +1 -0
- package/dist/src/services/prompt-processors/atFileProcessor.test.d.ts +6 -0
- package/dist/src/services/prompt-processors/atFileProcessor.test.js +174 -0
- package/dist/src/services/prompt-processors/atFileProcessor.test.js.map +1 -0
- package/dist/src/services/prompt-processors/injectionParser.d.ts +29 -0
- package/dist/src/services/prompt-processors/injectionParser.js +60 -0
- package/dist/src/services/prompt-processors/injectionParser.js.map +1 -0
- package/dist/src/services/prompt-processors/injectionParser.test.d.ts +6 -0
- package/dist/src/services/prompt-processors/injectionParser.test.js +189 -0
- package/dist/src/services/prompt-processors/injectionParser.test.js.map +1 -0
- package/dist/src/services/prompt-processors/shellProcessor.d.ts +27 -0
- package/dist/src/services/prompt-processors/shellProcessor.js +146 -0
- package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -0
- package/dist/src/services/prompt-processors/types.d.ts +45 -0
- package/dist/src/services/prompt-processors/types.js +20 -0
- package/dist/src/services/prompt-processors/types.js.map +1 -0
- package/dist/src/services/test-commands/example.md +5 -0
- package/dist/src/services/tips/index.d.ts +10 -0
- package/dist/src/services/tips/index.js +21 -0
- package/dist/src/services/tips/index.js.map +1 -0
- package/dist/src/services/tips/tipHistory.d.ts +49 -0
- package/dist/src/services/tips/tipHistory.js +138 -0
- package/dist/src/services/tips/tipHistory.js.map +1 -0
- package/dist/src/services/tips/tipHistory.test.d.ts +6 -0
- package/dist/src/services/tips/tipHistory.test.js +102 -0
- package/dist/src/services/tips/tipHistory.test.js.map +1 -0
- package/dist/src/services/tips/tipRegistry.d.ts +32 -0
- package/dist/src/services/tips/tipRegistry.js +148 -0
- package/dist/src/services/tips/tipRegistry.js.map +1 -0
- package/dist/src/services/tips/tipRegistry.test.d.ts +6 -0
- package/dist/src/services/tips/tipRegistry.test.js +65 -0
- package/dist/src/services/tips/tipRegistry.test.js.map +1 -0
- package/dist/src/services/tips/tipScheduler.d.ts +21 -0
- package/dist/src/services/tips/tipScheduler.js +38 -0
- package/dist/src/services/tips/tipScheduler.js.map +1 -0
- package/dist/src/services/tips/tipScheduler.test.d.ts +6 -0
- package/dist/src/services/tips/tipScheduler.test.js +126 -0
- package/dist/src/services/tips/tipScheduler.test.js.map +1 -0
- package/dist/src/services/types.d.ts +22 -0
- package/dist/src/services/types.js +7 -0
- package/dist/src/services/types.js.map +1 -0
- package/dist/src/startup/worktreeStartup.d.ts +112 -0
- package/dist/src/startup/worktreeStartup.js +350 -0
- package/dist/src/startup/worktreeStartup.js.map +1 -0
- package/dist/src/startup/worktreeStartup.test.d.ts +6 -0
- package/dist/src/startup/worktreeStartup.test.js +332 -0
- package/dist/src/startup/worktreeStartup.test.js.map +1 -0
- package/dist/src/test-utils/customMatchers.d.ts +14 -0
- package/dist/src/test-utils/customMatchers.js +40 -0
- package/dist/src/test-utils/customMatchers.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
- package/dist/src/test-utils/mockCommandContext.js +107 -0
- package/dist/src/test-utils/mockCommandContext.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.test.d.ts +6 -0
- package/dist/src/test-utils/mockCommandContext.test.js +51 -0
- package/dist/src/test-utils/mockCommandContext.test.js.map +1 -0
- package/dist/src/test-utils/render.d.ts +14 -0
- package/dist/src/test-utils/render.js +15 -0
- package/dist/src/test-utils/render.js.map +1 -0
- package/dist/src/ui/App.d.ts +6 -0
- package/dist/src/ui/App.js +65 -0
- package/dist/src/ui/App.js.map +1 -0
- package/dist/src/ui/AppContainer.d.ts +24 -0
- package/dist/src/ui/AppContainer.js +2853 -0
- package/dist/src/ui/AppContainer.js.map +1 -0
- package/dist/src/ui/AppContainer.test.d.ts +6 -0
- package/dist/src/ui/AppContainer.test.js +2368 -0
- package/dist/src/ui/AppContainer.test.js.map +1 -0
- package/dist/src/ui/CommandFormatMigrationNudge.d.ts +14 -0
- package/dist/src/ui/CommandFormatMigrationNudge.js +44 -0
- package/dist/src/ui/CommandFormatMigrationNudge.js.map +1 -0
- package/dist/src/ui/FeedbackDialog.d.ts +9 -0
- package/dist/src/ui/FeedbackDialog.js +44 -0
- package/dist/src/ui/FeedbackDialog.js.map +1 -0
- package/dist/src/ui/IdeIntegrationNudge.d.ts +16 -0
- package/dist/src/ui/IdeIntegrationNudge.js +53 -0
- package/dist/src/ui/IdeIntegrationNudge.js.map +1 -0
- package/dist/src/ui/auth/AuthDialog.d.ts +7 -0
- package/dist/src/ui/auth/AuthDialog.js +214 -0
- package/dist/src/ui/auth/AuthDialog.js.map +1 -0
- package/dist/src/ui/auth/AuthDialog.test.d.ts +6 -0
- package/dist/src/ui/auth/AuthDialog.test.js +1029 -0
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -0
- package/dist/src/ui/auth/AuthInProgress.d.ts +11 -0
- package/dist/src/ui/auth/AuthInProgress.js +24 -0
- package/dist/src/ui/auth/AuthInProgress.js.map +1 -0
- package/dist/src/ui/auth/ProviderSetupSteps.d.ts +11 -0
- package/dist/src/ui/auth/ProviderSetupSteps.js +320 -0
- package/dist/src/ui/auth/ProviderSetupSteps.js.map +1 -0
- package/dist/src/ui/auth/ProviderSetupSteps.test.d.ts +6 -0
- package/dist/src/ui/auth/ProviderSetupSteps.test.js +322 -0
- package/dist/src/ui/auth/ProviderSetupSteps.test.js.map +1 -0
- package/dist/src/ui/auth/useAuth.d.ts +76 -0
- package/dist/src/ui/auth/useAuth.js +192 -0
- package/dist/src/ui/auth/useAuth.js.map +1 -0
- package/dist/src/ui/auth/useAuth.test.d.ts +6 -0
- package/dist/src/ui/auth/useAuth.test.js +267 -0
- package/dist/src/ui/auth/useAuth.test.js.map +1 -0
- package/dist/src/ui/auth/useProviderSetupFlow.d.ts +54 -0
- package/dist/src/ui/auth/useProviderSetupFlow.js +380 -0
- package/dist/src/ui/auth/useProviderSetupFlow.js.map +1 -0
- package/dist/src/ui/colors.d.ts +7 -0
- package/dist/src/ui/colors.js +60 -0
- package/dist/src/ui/colors.js.map +1 -0
- package/dist/src/ui/commands/aboutCommand.d.ts +7 -0
- package/dist/src/ui/commands/aboutCommand.js +69 -0
- package/dist/src/ui/commands/aboutCommand.js.map +1 -0
- package/dist/src/ui/commands/agentsCommand.d.ts +7 -0
- package/dist/src/ui/commands/agentsCommand.js +42 -0
- package/dist/src/ui/commands/agentsCommand.js.map +1 -0
- package/dist/src/ui/commands/approvalModeCommand.d.ts +7 -0
- package/dist/src/ui/commands/approvalModeCommand.js +89 -0
- package/dist/src/ui/commands/approvalModeCommand.js.map +1 -0
- package/dist/src/ui/commands/approvalModeCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/approvalModeCommand.test.js +112 -0
- package/dist/src/ui/commands/approvalModeCommand.test.js.map +1 -0
- package/dist/src/ui/commands/arenaCommand.agentComplete.test.d.ts +6 -0
- package/dist/src/ui/commands/arenaCommand.agentComplete.test.js +118 -0
- package/dist/src/ui/commands/arenaCommand.agentComplete.test.js.map +1 -0
- package/dist/src/ui/commands/arenaCommand.d.ts +7 -0
- package/dist/src/ui/commands/arenaCommand.js +519 -0
- package/dist/src/ui/commands/arenaCommand.js.map +1 -0
- package/dist/src/ui/commands/arenaCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/arenaCommand.test.js +352 -0
- package/dist/src/ui/commands/arenaCommand.test.js.map +1 -0
- package/dist/src/ui/commands/authCommand.d.ts +7 -0
- package/dist/src/ui/commands/authCommand.js +31 -0
- package/dist/src/ui/commands/authCommand.js.map +1 -0
- package/dist/src/ui/commands/branchCommand.d.ts +7 -0
- package/dist/src/ui/commands/branchCommand.js +49 -0
- package/dist/src/ui/commands/branchCommand.js.map +1 -0
- package/dist/src/ui/commands/branchCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/branchCommand.test.js +57 -0
- package/dist/src/ui/commands/branchCommand.test.js.map +1 -0
- package/dist/src/ui/commands/btwCommand.d.ts +7 -0
- package/dist/src/ui/commands/btwCommand.js +164 -0
- package/dist/src/ui/commands/btwCommand.js.map +1 -0
- package/dist/src/ui/commands/btwCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/btwCommand.test.js +338 -0
- package/dist/src/ui/commands/btwCommand.test.js.map +1 -0
- package/dist/src/ui/commands/bugCommand.d.ts +7 -0
- package/dist/src/ui/commands/bugCommand.js +54 -0
- package/dist/src/ui/commands/bugCommand.js.map +1 -0
- package/dist/src/ui/commands/clearCommand.d.ts +7 -0
- package/dist/src/ui/commands/clearCommand.js +122 -0
- package/dist/src/ui/commands/clearCommand.js.map +1 -0
- package/dist/src/ui/commands/compressCommand.d.ts +7 -0
- package/dist/src/ui/commands/compressCommand.js +178 -0
- package/dist/src/ui/commands/compressCommand.js.map +1 -0
- package/dist/src/ui/commands/contextCommand.d.ts +14 -0
- package/dist/src/ui/commands/contextCommand.js +443 -0
- package/dist/src/ui/commands/contextCommand.js.map +1 -0
- package/dist/src/ui/commands/contextCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/contextCommand.test.js +184 -0
- package/dist/src/ui/commands/contextCommand.test.js.map +1 -0
- package/dist/src/ui/commands/copyCommand.d.ts +7 -0
- package/dist/src/ui/commands/copyCommand.js +374 -0
- package/dist/src/ui/commands/copyCommand.js.map +1 -0
- package/dist/src/ui/commands/deleteCommand.d.ts +7 -0
- package/dist/src/ui/commands/deleteCommand.js +19 -0
- package/dist/src/ui/commands/deleteCommand.js.map +1 -0
- package/dist/src/ui/commands/deleteCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/deleteCommand.test.js +27 -0
- package/dist/src/ui/commands/deleteCommand.test.js.map +1 -0
- package/dist/src/ui/commands/diffCommand.d.ts +42 -0
- package/dist/src/ui/commands/diffCommand.js +206 -0
- package/dist/src/ui/commands/diffCommand.js.map +1 -0
- package/dist/src/ui/commands/diffCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/diffCommand.test.js +482 -0
- package/dist/src/ui/commands/diffCommand.test.js.map +1 -0
- package/dist/src/ui/commands/directoryCommand.d.ts +13 -0
- package/dist/src/ui/commands/directoryCommand.js +252 -0
- package/dist/src/ui/commands/directoryCommand.js.map +1 -0
- package/dist/src/ui/commands/docsCommand.d.ts +7 -0
- package/dist/src/ui/commands/docsCommand.js +49 -0
- package/dist/src/ui/commands/docsCommand.js.map +1 -0
- package/dist/src/ui/commands/doctorCommand.d.ts +7 -0
- package/dist/src/ui/commands/doctorCommand.js +530 -0
- package/dist/src/ui/commands/doctorCommand.js.map +1 -0
- package/dist/src/ui/commands/doctorCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/doctorCommand.test.js +804 -0
- package/dist/src/ui/commands/doctorCommand.test.js.map +1 -0
- package/dist/src/ui/commands/dreamCommand.d.ts +7 -0
- package/dist/src/ui/commands/dreamCommand.js +42 -0
- package/dist/src/ui/commands/dreamCommand.js.map +1 -0
- package/dist/src/ui/commands/dreamCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/dreamCommand.test.js +39 -0
- package/dist/src/ui/commands/dreamCommand.test.js.map +1 -0
- package/dist/src/ui/commands/editorCommand.d.ts +7 -0
- package/dist/src/ui/commands/editorCommand.js +20 -0
- package/dist/src/ui/commands/editorCommand.js.map +1 -0
- package/dist/src/ui/commands/exportCommand.d.ts +10 -0
- package/dist/src/ui/commands/exportCommand.js +373 -0
- package/dist/src/ui/commands/exportCommand.js.map +1 -0
- package/dist/src/ui/commands/exportCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/exportCommand.test.js +905 -0
- package/dist/src/ui/commands/exportCommand.test.js.map +1 -0
- package/dist/src/ui/commands/extensionsCommand.d.ts +10 -0
- package/dist/src/ui/commands/extensionsCommand.js +185 -0
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -0
- package/dist/src/ui/commands/forgetCommand.d.ts +7 -0
- package/dist/src/ui/commands/forgetCommand.js +45 -0
- package/dist/src/ui/commands/forgetCommand.js.map +1 -0
- package/dist/src/ui/commands/forkCommand.d.ts +7 -0
- package/dist/src/ui/commands/forkCommand.js +163 -0
- package/dist/src/ui/commands/forkCommand.js.map +1 -0
- package/dist/src/ui/commands/forkCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/forkCommand.test.js +229 -0
- package/dist/src/ui/commands/forkCommand.test.js.map +1 -0
- package/dist/src/ui/commands/goalCommand.d.ts +7 -0
- package/dist/src/ui/commands/goalCommand.js +181 -0
- package/dist/src/ui/commands/goalCommand.js.map +1 -0
- package/dist/src/ui/commands/goalCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/goalCommand.test.js +328 -0
- package/dist/src/ui/commands/goalCommand.test.js.map +1 -0
- package/dist/src/ui/commands/helpCommand.d.ts +7 -0
- package/dist/src/ui/commands/helpCommand.js +21 -0
- package/dist/src/ui/commands/helpCommand.js.map +1 -0
- package/dist/src/ui/commands/hooksCommand.d.ts +7 -0
- package/dist/src/ui/commands/hooksCommand.js +153 -0
- package/dist/src/ui/commands/hooksCommand.js.map +1 -0
- package/dist/src/ui/commands/hooksCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/hooksCommand.test.js +189 -0
- package/dist/src/ui/commands/hooksCommand.test.js.map +1 -0
- package/dist/src/ui/commands/ideCommand.d.ts +7 -0
- package/dist/src/ui/commands/ideCommand.js +256 -0
- package/dist/src/ui/commands/ideCommand.js.map +1 -0
- package/dist/src/ui/commands/initCommand.d.ts +7 -0
- package/dist/src/ui/commands/initCommand.js +119 -0
- package/dist/src/ui/commands/initCommand.js.map +1 -0
- package/dist/src/ui/commands/insightCommand.d.ts +7 -0
- package/dist/src/ui/commands/insightCommand.js +195 -0
- package/dist/src/ui/commands/insightCommand.js.map +1 -0
- package/dist/src/ui/commands/insightCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/insightCommand.test.js +173 -0
- package/dist/src/ui/commands/insightCommand.test.js.map +1 -0
- package/dist/src/ui/commands/languageCommand.d.ts +7 -0
- package/dist/src/ui/commands/languageCommand.js +291 -0
- package/dist/src/ui/commands/languageCommand.js.map +1 -0
- package/dist/src/ui/commands/languageCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/languageCommand.test.js +664 -0
- package/dist/src/ui/commands/languageCommand.test.js.map +1 -0
- package/dist/src/ui/commands/lspCommand.d.ts +7 -0
- package/dist/src/ui/commands/lspCommand.js +62 -0
- package/dist/src/ui/commands/lspCommand.js.map +1 -0
- package/dist/src/ui/commands/lspCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/lspCommand.test.js +175 -0
- package/dist/src/ui/commands/lspCommand.test.js.map +1 -0
- package/dist/src/ui/commands/mcpCommand.d.ts +7 -0
- package/dist/src/ui/commands/mcpCommand.js +21 -0
- package/dist/src/ui/commands/mcpCommand.js.map +1 -0
- package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
- package/dist/src/ui/commands/memoryCommand.js +21 -0
- package/dist/src/ui/commands/memoryCommand.js.map +1 -0
- package/dist/src/ui/commands/modelCommand.d.ts +7 -0
- package/dist/src/ui/commands/modelCommand.js +226 -0
- package/dist/src/ui/commands/modelCommand.js.map +1 -0
- package/dist/src/ui/commands/modelCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/modelCommand.test.js +503 -0
- package/dist/src/ui/commands/modelCommand.test.js.map +1 -0
- package/dist/src/ui/commands/permissionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/permissionsCommand.js +20 -0
- package/dist/src/ui/commands/permissionsCommand.js.map +1 -0
- package/dist/src/ui/commands/permissionsCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/permissionsCommand.test.js +30 -0
- package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -0
- package/dist/src/ui/commands/planCommand.d.ts +7 -0
- package/dist/src/ui/commands/planCommand.js +88 -0
- package/dist/src/ui/commands/planCommand.js.map +1 -0
- package/dist/src/ui/commands/planCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/planCommand.test.js +113 -0
- package/dist/src/ui/commands/planCommand.test.js.map +1 -0
- package/dist/src/ui/commands/quitCommand.d.ts +7 -0
- package/dist/src/ui/commands/quitCommand.js +38 -0
- package/dist/src/ui/commands/quitCommand.js.map +1 -0
- package/dist/src/ui/commands/recapCommand.d.ts +7 -0
- package/dist/src/ui/commands/recapCommand.js +56 -0
- package/dist/src/ui/commands/recapCommand.js.map +1 -0
- package/dist/src/ui/commands/rememberCommand.d.ts +7 -0
- package/dist/src/ui/commands/rememberCommand.js +54 -0
- package/dist/src/ui/commands/rememberCommand.js.map +1 -0
- package/dist/src/ui/commands/renameCommand.d.ts +7 -0
- package/dist/src/ui/commands/renameCommand.js +208 -0
- package/dist/src/ui/commands/renameCommand.js.map +1 -0
- package/dist/src/ui/commands/renameCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/renameCommand.test.js +414 -0
- package/dist/src/ui/commands/renameCommand.test.js.map +1 -0
- package/dist/src/ui/commands/restoreCommand.d.ts +8 -0
- package/dist/src/ui/commands/restoreCommand.js +159 -0
- package/dist/src/ui/commands/restoreCommand.js.map +1 -0
- package/dist/src/ui/commands/resumeCommand.d.ts +7 -0
- package/dist/src/ui/commands/resumeCommand.js +65 -0
- package/dist/src/ui/commands/resumeCommand.js.map +1 -0
- package/dist/src/ui/commands/resumeCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/resumeCommand.test.js +135 -0
- package/dist/src/ui/commands/resumeCommand.test.js.map +1 -0
- package/dist/src/ui/commands/rewindCommand.d.ts +7 -0
- package/dist/src/ui/commands/rewindCommand.js +20 -0
- package/dist/src/ui/commands/rewindCommand.js.map +1 -0
- package/dist/src/ui/commands/settingsCommand.d.ts +7 -0
- package/dist/src/ui/commands/settingsCommand.js +20 -0
- package/dist/src/ui/commands/settingsCommand.js.map +1 -0
- package/dist/src/ui/commands/setupGithubCommand.d.ts +9 -0
- package/dist/src/ui/commands/setupGithubCommand.js +165 -0
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -0
- package/dist/src/ui/commands/setupGithubCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/setupGithubCommand.test.js +164 -0
- package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -0
- package/dist/src/ui/commands/skillsCommand.d.ts +7 -0
- package/dist/src/ui/commands/skillsCommand.js +63 -0
- package/dist/src/ui/commands/skillsCommand.js.map +1 -0
- package/dist/src/ui/commands/skillsCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/skillsCommand.test.js +136 -0
- package/dist/src/ui/commands/skillsCommand.test.js.map +1 -0
- package/dist/src/ui/commands/statsCommand.d.ts +7 -0
- package/dist/src/ui/commands/statsCommand.js +130 -0
- package/dist/src/ui/commands/statsCommand.js.map +1 -0
- package/dist/src/ui/commands/statuslineCommand.d.ts +7 -0
- package/dist/src/ui/commands/statuslineCommand.js +33 -0
- package/dist/src/ui/commands/statuslineCommand.js.map +1 -0
- package/dist/src/ui/commands/statuslineCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/statuslineCommand.test.js +54 -0
- package/dist/src/ui/commands/statuslineCommand.test.js.map +1 -0
- package/dist/src/ui/commands/summaryCommand.d.ts +7 -0
- package/dist/src/ui/commands/summaryCommand.js +261 -0
- package/dist/src/ui/commands/summaryCommand.js.map +1 -0
- package/dist/src/ui/commands/tasksCommand.d.ts +7 -0
- package/dist/src/ui/commands/tasksCommand.js +222 -0
- package/dist/src/ui/commands/tasksCommand.js.map +1 -0
- package/dist/src/ui/commands/tasksCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/tasksCommand.test.js +365 -0
- package/dist/src/ui/commands/tasksCommand.test.js.map +1 -0
- package/dist/src/ui/commands/terminalSetupCommand.d.ts +13 -0
- package/dist/src/ui/commands/terminalSetupCommand.js +48 -0
- package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -0
- package/dist/src/ui/commands/themeCommand.d.ts +7 -0
- package/dist/src/ui/commands/themeCommand.js +20 -0
- package/dist/src/ui/commands/themeCommand.js.map +1 -0
- package/dist/src/ui/commands/toolsCommand.d.ts +7 -0
- package/dist/src/ui/commands/toolsCommand.js +45 -0
- package/dist/src/ui/commands/toolsCommand.js.map +1 -0
- package/dist/src/ui/commands/trustCommand.d.ts +7 -0
- package/dist/src/ui/commands/trustCommand.js +20 -0
- package/dist/src/ui/commands/trustCommand.js.map +1 -0
- package/dist/src/ui/commands/trustCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/trustCommand.test.js +30 -0
- package/dist/src/ui/commands/trustCommand.test.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +298 -0
- package/dist/src/ui/commands/types.js +13 -0
- package/dist/src/ui/commands/types.js.map +1 -0
- package/dist/src/ui/commands/vimCommand.d.ts +7 -0
- package/dist/src/ui/commands/vimCommand.js +27 -0
- package/dist/src/ui/commands/vimCommand.js.map +1 -0
- package/dist/src/ui/components/AboutBox.d.ts +12 -0
- package/dist/src/ui/components/AboutBox.js +10 -0
- package/dist/src/ui/components/AboutBox.js.map +1 -0
- package/dist/src/ui/components/AnsiOutput.d.ts +20 -0
- package/dist/src/ui/components/AnsiOutput.js +27 -0
- package/dist/src/ui/components/AnsiOutput.js.map +1 -0
- package/dist/src/ui/components/AnsiOutput.test.d.ts +6 -0
- package/dist/src/ui/components/AnsiOutput.test.js +134 -0
- package/dist/src/ui/components/AnsiOutput.test.js.map +1 -0
- package/dist/src/ui/components/ApiKeyInput.d.ts +22 -0
- package/dist/src/ui/components/ApiKeyInput.js +35 -0
- package/dist/src/ui/components/ApiKeyInput.js.map +1 -0
- package/dist/src/ui/components/AppHeader.d.ts +10 -0
- package/dist/src/ui/components/AppHeader.js +49 -0
- package/dist/src/ui/components/AppHeader.js.map +1 -0
- package/dist/src/ui/components/AppHeader.test.d.ts +6 -0
- package/dist/src/ui/components/AppHeader.test.js +109 -0
- package/dist/src/ui/components/AppHeader.test.js.map +1 -0
- package/dist/src/ui/components/ApprovalModeDialog.d.ts +21 -0
- package/dist/src/ui/components/ApprovalModeDialog.js +109 -0
- package/dist/src/ui/components/ApprovalModeDialog.js.map +1 -0
- package/dist/src/ui/components/ApprovalModeDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ApprovalModeDialog.test.js +63 -0
- package/dist/src/ui/components/ApprovalModeDialog.test.js.map +1 -0
- package/dist/src/ui/components/AsciiArt.d.ts +1 -0
- package/dist/src/ui/components/AsciiArt.js +54 -0
- package/dist/src/ui/components/AsciiArt.js.map +1 -0
- package/dist/src/ui/components/AutoAcceptIndicator.d.ts +12 -0
- package/dist/src/ui/components/AutoAcceptIndicator.js +37 -0
- package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -0
- package/dist/src/ui/components/BaseTextInput.d.ts +74 -0
- package/dist/src/ui/components/BaseTextInput.js +144 -0
- package/dist/src/ui/components/BaseTextInput.js.map +1 -0
- package/dist/src/ui/components/BaseTextInput.test.d.ts +6 -0
- package/dist/src/ui/components/BaseTextInput.test.js +78 -0
- package/dist/src/ui/components/BaseTextInput.test.js.map +1 -0
- package/dist/src/ui/components/Composer.d.ts +6 -0
- package/dist/src/ui/components/Composer.js +92 -0
- package/dist/src/ui/components/Composer.js.map +1 -0
- package/dist/src/ui/components/Composer.test.d.ts +6 -0
- package/dist/src/ui/components/Composer.test.js +344 -0
- package/dist/src/ui/components/Composer.test.js.map +1 -0
- package/dist/src/ui/components/ConsentPrompt.d.ts +14 -0
- package/dist/src/ui/components/ConsentPrompt.js +35 -0
- package/dist/src/ui/components/ConsentPrompt.js.map +1 -0
- package/dist/src/ui/components/ConsentPrompt.test.d.ts +6 -0
- package/dist/src/ui/components/ConsentPrompt.test.js +110 -0
- package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -0
- package/dist/src/ui/components/ContextSummaryDisplay.d.ts +20 -0
- package/dist/src/ui/components/ContextSummaryDisplay.js +90 -0
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -0
- package/dist/src/ui/components/ContextUsageDisplay.d.ts +10 -0
- package/dist/src/ui/components/ContextUsageDisplay.js +33 -0
- package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -0
- package/dist/src/ui/components/DebugModeNotification.d.ts +9 -0
- package/dist/src/ui/components/DebugModeNotification.js +23 -0
- package/dist/src/ui/components/DebugModeNotification.js.map +1 -0
- package/dist/src/ui/components/DebugProfiler.d.ts +6 -0
- package/dist/src/ui/components/DebugProfiler.js +27 -0
- package/dist/src/ui/components/DebugProfiler.js.map +1 -0
- package/dist/src/ui/components/DialogManager.d.ts +12 -0
- package/dist/src/ui/components/DialogManager.js +247 -0
- package/dist/src/ui/components/DialogManager.js.map +1 -0
- package/dist/src/ui/components/DiffDialog.d.ts +15 -0
- package/dist/src/ui/components/DiffDialog.js +412 -0
- package/dist/src/ui/components/DiffDialog.js.map +1 -0
- package/dist/src/ui/components/EditorSettingsDialog.d.ts +16 -0
- package/dist/src/ui/components/EditorSettingsDialog.js +76 -0
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -0
- package/dist/src/ui/components/ExitWarning.d.ts +7 -0
- package/dist/src/ui/components/ExitWarning.js +9 -0
- package/dist/src/ui/components/ExitWarning.js.map +1 -0
- package/dist/src/ui/components/ExternalAuthProgress.d.ts +14 -0
- package/dist/src/ui/components/ExternalAuthProgress.js +14 -0
- package/dist/src/ui/components/ExternalAuthProgress.js.map +1 -0
- package/dist/src/ui/components/ExternalAuthProgress.test.d.ts +6 -0
- package/dist/src/ui/components/ExternalAuthProgress.test.js +20 -0
- package/dist/src/ui/components/ExternalAuthProgress.test.js.map +1 -0
- package/dist/src/ui/components/FolderTrustDialog.d.ts +17 -0
- package/dist/src/ui/components/FolderTrustDialog.js +58 -0
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -0
- package/dist/src/ui/components/FolderTrustDialog.test.d.ts +6 -0
- package/dist/src/ui/components/FolderTrustDialog.test.js +88 -0
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -0
- package/dist/src/ui/components/Footer.d.ts +7 -0
- package/dist/src/ui/components/Footer.js +104 -0
- package/dist/src/ui/components/Footer.js.map +1 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +22 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.js +47 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.test.d.ts +6 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.test.js +29 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -0
- package/dist/src/ui/components/GoalPill.d.ts +25 -0
- package/dist/src/ui/components/GoalPill.js +77 -0
- package/dist/src/ui/components/GoalPill.js.map +1 -0
- package/dist/src/ui/components/GoalPill.test.d.ts +6 -0
- package/dist/src/ui/components/GoalPill.test.js +56 -0
- package/dist/src/ui/components/GoalPill.test.js.map +1 -0
- package/dist/src/ui/components/Header.d.ts +62 -0
- package/dist/src/ui/components/Header.js +155 -0
- package/dist/src/ui/components/Header.js.map +1 -0
- package/dist/src/ui/components/Header.test.d.ts +6 -0
- package/dist/src/ui/components/Header.test.js +142 -0
- package/dist/src/ui/components/Header.test.js.map +1 -0
- package/dist/src/ui/components/Help.d.ts +18 -0
- package/dist/src/ui/components/Help.js +236 -0
- package/dist/src/ui/components/Help.js.map +1 -0
- package/dist/src/ui/components/Help.test.d.ts +6 -0
- package/dist/src/ui/components/Help.test.js +243 -0
- package/dist/src/ui/components/Help.test.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.d.ts +39 -0
- package/dist/src/ui/components/HistoryItemDisplay.js +51 -0
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js +197 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.d.ts +11 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.js +34 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.test.d.ts +6 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.test.js +53 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -0
- package/dist/src/ui/components/InputPrompt.d.ts +63 -0
- package/dist/src/ui/components/InputPrompt.js +1220 -0
- package/dist/src/ui/components/InputPrompt.js.map +1 -0
- package/dist/src/ui/components/KeyboardShortcuts.d.ts +7 -0
- package/dist/src/ui/components/KeyboardShortcuts.js +78 -0
- package/dist/src/ui/components/KeyboardShortcuts.js.map +1 -0
- package/dist/src/ui/components/LoadingIndicator.d.ts +31 -0
- package/dist/src/ui/components/LoadingIndicator.js +46 -0
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -0
- package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
- package/dist/src/ui/components/LoadingIndicator.test.js +246 -0
- package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +13 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.js +37 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +6 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js +28 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -0
- package/dist/src/ui/components/MainContent.d.ts +6 -0
- package/dist/src/ui/components/MainContent.js +437 -0
- package/dist/src/ui/components/MainContent.js.map +1 -0
- package/dist/src/ui/components/MainContent.test.d.ts +6 -0
- package/dist/src/ui/components/MainContent.test.js +621 -0
- package/dist/src/ui/components/MainContent.test.js.map +1 -0
- package/dist/src/ui/components/MemoryDialog.d.ts +10 -0
- package/dist/src/ui/components/MemoryDialog.js +288 -0
- package/dist/src/ui/components/MemoryDialog.js.map +1 -0
- package/dist/src/ui/components/MemoryDialog.test.d.ts +6 -0
- package/dist/src/ui/components/MemoryDialog.test.js +165 -0
- package/dist/src/ui/components/MemoryDialog.test.js.map +1 -0
- package/dist/src/ui/components/MemoryUsageDisplay.d.ts +7 -0
- package/dist/src/ui/components/MemoryUsageDisplay.js +24 -0
- package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -0
- package/dist/src/ui/components/ModelDialog.d.ts +12 -0
- package/dist/src/ui/components/ModelDialog.js +390 -0
- package/dist/src/ui/components/ModelDialog.js.map +1 -0
- package/dist/src/ui/components/ModelDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ModelDialog.test.js +489 -0
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -0
- package/dist/src/ui/components/ModelStatsDisplay.d.ts +11 -0
- package/dist/src/ui/components/ModelStatsDisplay.js +61 -0
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -0
- package/dist/src/ui/components/Notifications.d.ts +6 -0
- package/dist/src/ui/components/Notifications.js +20 -0
- package/dist/src/ui/components/Notifications.js.map +1 -0
- package/dist/src/ui/components/PermissionsDialog.d.ts +11 -0
- package/dist/src/ui/components/PermissionsDialog.js +547 -0
- package/dist/src/ui/components/PermissionsDialog.js.map +1 -0
- package/dist/src/ui/components/PlanSummaryDisplay.d.ts +14 -0
- package/dist/src/ui/components/PlanSummaryDisplay.js +10 -0
- package/dist/src/ui/components/PlanSummaryDisplay.js.map +1 -0
- package/dist/src/ui/components/PluginChoicePrompt.d.ts +18 -0
- package/dist/src/ui/components/PluginChoicePrompt.js +96 -0
- package/dist/src/ui/components/PluginChoicePrompt.js.map +1 -0
- package/dist/src/ui/components/PluginChoicePrompt.test.d.ts +6 -0
- package/dist/src/ui/components/PluginChoicePrompt.test.js +136 -0
- package/dist/src/ui/components/PluginChoicePrompt.test.js.map +1 -0
- package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
- package/dist/src/ui/components/PrepareLabel.js +72 -0
- package/dist/src/ui/components/PrepareLabel.js.map +1 -0
- package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
- package/dist/src/ui/components/PrepareLabel.test.js +71 -0
- package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
- package/dist/src/ui/components/ProviderUpdatePrompt.d.ts +12 -0
- package/dist/src/ui/components/ProviderUpdatePrompt.js +49 -0
- package/dist/src/ui/components/ProviderUpdatePrompt.js.map +1 -0
- package/dist/src/ui/components/QueuedMessageDisplay.d.ts +9 -0
- package/dist/src/ui/components/QueuedMessageDisplay.js +35 -0
- package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.js +76 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -0
- package/dist/src/ui/components/QuittingDisplay.d.ts +6 -0
- package/dist/src/ui/components/QuittingDisplay.js +21 -0
- package/dist/src/ui/components/QuittingDisplay.js.map +1 -0
- package/dist/src/ui/components/QwenOAuthProgress.d.ts +16 -0
- package/dist/src/ui/components/QwenOAuthProgress.js +65 -0
- package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -0
- package/dist/src/ui/components/QwenOAuthProgress.test.d.ts +6 -0
- package/dist/src/ui/components/QwenOAuthProgress.test.js +287 -0
- package/dist/src/ui/components/QwenOAuthProgress.test.js.map +1 -0
- package/dist/src/ui/components/RewindSelector.d.ts +22 -0
- package/dist/src/ui/components/RewindSelector.js +264 -0
- package/dist/src/ui/components/RewindSelector.js.map +1 -0
- package/dist/src/ui/components/RewindSelector.test.d.ts +6 -0
- package/dist/src/ui/components/RewindSelector.test.js +146 -0
- package/dist/src/ui/components/RewindSelector.test.js.map +1 -0
- package/dist/src/ui/components/SessionPicker.d.ts +55 -0
- package/dist/src/ui/components/SessionPicker.js +142 -0
- package/dist/src/ui/components/SessionPicker.js.map +1 -0
- package/dist/src/ui/components/SessionPreview.d.ts +20 -0
- package/dist/src/ui/components/SessionPreview.js +97 -0
- package/dist/src/ui/components/SessionPreview.js.map +1 -0
- package/dist/src/ui/components/SessionPreview.test.d.ts +1 -0
- package/dist/src/ui/components/SessionPreview.test.js +124 -0
- package/dist/src/ui/components/SessionPreview.test.js.map +1 -0
- package/dist/src/ui/components/SessionSummaryDisplay.d.ts +12 -0
- package/dist/src/ui/components/SessionSummaryDisplay.js +17 -0
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -0
- package/dist/src/ui/components/SettingInputPrompt.d.ts +15 -0
- package/dist/src/ui/components/SettingInputPrompt.js +63 -0
- package/dist/src/ui/components/SettingInputPrompt.js.map +1 -0
- package/dist/src/ui/components/SettingInputPrompt.test.d.ts +6 -0
- package/dist/src/ui/components/SettingInputPrompt.test.js +60 -0
- package/dist/src/ui/components/SettingInputPrompt.test.js.map +1 -0
- package/dist/src/ui/components/SettingsCorruptedDialog.d.ts +14 -0
- package/dist/src/ui/components/SettingsCorruptedDialog.js +44 -0
- package/dist/src/ui/components/SettingsCorruptedDialog.js.map +1 -0
- package/dist/src/ui/components/SettingsCorruptedDialog.test.d.ts +6 -0
- package/dist/src/ui/components/SettingsCorruptedDialog.test.js +162 -0
- package/dist/src/ui/components/SettingsCorruptedDialog.test.js.map +1 -0
- package/dist/src/ui/components/SettingsDialog.d.ts +18 -0
- package/dist/src/ui/components/SettingsDialog.js +658 -0
- package/dist/src/ui/components/SettingsDialog.js.map +1 -0
- package/dist/src/ui/components/SettingsDialog.test.d.ts +6 -0
- package/dist/src/ui/components/SettingsDialog.test.js +1127 -0
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -0
- package/dist/src/ui/components/ShellConfirmationDialog.d.ts +17 -0
- package/dist/src/ui/components/ShellConfirmationDialog.js +75 -0
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -0
- package/dist/src/ui/components/ShellConfirmationDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ShellConfirmationDialog.test.js +167 -0
- package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -0
- package/dist/src/ui/components/ShellInputPrompt.d.ts +11 -0
- package/dist/src/ui/components/ShellInputPrompt.js +42 -0
- package/dist/src/ui/components/ShellInputPrompt.js.map +1 -0
- package/dist/src/ui/components/ShellModeIndicator.d.ts +7 -0
- package/dist/src/ui/components/ShellModeIndicator.js +5 -0
- package/dist/src/ui/components/ShellModeIndicator.js.map +1 -0
- package/dist/src/ui/components/ShowMoreLines.d.ts +10 -0
- package/dist/src/ui/components/ShowMoreLines.js +24 -0
- package/dist/src/ui/components/ShowMoreLines.js.map +1 -0
- package/dist/src/ui/components/StandaloneSessionPicker.d.ts +11 -0
- package/dist/src/ui/components/StandaloneSessionPicker.js +105 -0
- package/dist/src/ui/components/StandaloneSessionPicker.js.map +1 -0
- package/dist/src/ui/components/StandaloneSessionPicker.test.d.ts +6 -0
- package/dist/src/ui/components/StandaloneSessionPicker.test.js +667 -0
- package/dist/src/ui/components/StandaloneSessionPicker.test.js.map +1 -0
- package/dist/src/ui/components/StatsActivityTab.d.ts +14 -0
- package/dist/src/ui/components/StatsActivityTab.js +85 -0
- package/dist/src/ui/components/StatsActivityTab.js.map +1 -0
- package/dist/src/ui/components/StatsDialog.d.ts +12 -0
- package/dist/src/ui/components/StatsDialog.js +104 -0
- package/dist/src/ui/components/StatsDialog.js.map +1 -0
- package/dist/src/ui/components/StatsDisplay.d.ts +13 -0
- package/dist/src/ui/components/StatsDisplay.js +52 -0
- package/dist/src/ui/components/StatsDisplay.js.map +1 -0
- package/dist/src/ui/components/StatsEfficiencyTab.d.ts +11 -0
- package/dist/src/ui/components/StatsEfficiencyTab.js +99 -0
- package/dist/src/ui/components/StatsEfficiencyTab.js.map +1 -0
- package/dist/src/ui/components/StatsHeatmapView.d.ts +12 -0
- package/dist/src/ui/components/StatsHeatmapView.js +40 -0
- package/dist/src/ui/components/StatsHeatmapView.js.map +1 -0
- package/dist/src/ui/components/StatsSessionTab.d.ts +7 -0
- package/dist/src/ui/components/StatsSessionTab.js +40 -0
- package/dist/src/ui/components/StatsSessionTab.js.map +1 -0
- package/dist/src/ui/components/StatusLineDialog.d.ts +22 -0
- package/dist/src/ui/components/StatusLineDialog.js +140 -0
- package/dist/src/ui/components/StatusLineDialog.js.map +1 -0
- package/dist/src/ui/components/StatusLineDialog.test.d.ts +6 -0
- package/dist/src/ui/components/StatusLineDialog.test.js +180 -0
- package/dist/src/ui/components/StatusLineDialog.test.js.map +1 -0
- package/dist/src/ui/components/StickyTodoList.d.ts +14 -0
- package/dist/src/ui/components/StickyTodoList.js +45 -0
- package/dist/src/ui/components/StickyTodoList.js.map +1 -0
- package/dist/src/ui/components/StickyTodoList.test.d.ts +6 -0
- package/dist/src/ui/components/StickyTodoList.test.js +128 -0
- package/dist/src/ui/components/StickyTodoList.test.js.map +1 -0
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +47 -0
- package/dist/src/ui/components/SuggestionsDisplay.js +43 -0
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -0
- package/dist/src/ui/components/SuggestionsDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/SuggestionsDisplay.test.js +39 -0
- package/dist/src/ui/components/SuggestionsDisplay.test.js.map +1 -0
- package/dist/src/ui/components/ThemeDialog.d.ts +20 -0
- package/dist/src/ui/components/ThemeDialog.js +137 -0
- package/dist/src/ui/components/ThemeDialog.js.map +1 -0
- package/dist/src/ui/components/ThemeDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ThemeDialog.test.js +75 -0
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -0
- package/dist/src/ui/components/ThinkingDots.d.ts +11 -0
- package/dist/src/ui/components/ThinkingDots.js +47 -0
- package/dist/src/ui/components/ThinkingDots.js.map +1 -0
- package/dist/src/ui/components/ThinkingIndicator.d.ts +7 -0
- package/dist/src/ui/components/ThinkingIndicator.js +13 -0
- package/dist/src/ui/components/ThinkingIndicator.js.map +1 -0
- package/dist/src/ui/components/Tips.d.ts +6 -0
- package/dist/src/ui/components/Tips.js +37 -0
- package/dist/src/ui/components/Tips.js.map +1 -0
- package/dist/src/ui/components/Tips.test.d.ts +6 -0
- package/dist/src/ui/components/Tips.test.js +145 -0
- package/dist/src/ui/components/Tips.test.js.map +1 -0
- package/dist/src/ui/components/TodoDisplay.d.ts +16 -0
- package/dist/src/ui/components/TodoDisplay.js +27 -0
- package/dist/src/ui/components/TodoDisplay.js.map +1 -0
- package/dist/src/ui/components/TodoDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/TodoDisplay.test.js +77 -0
- package/dist/src/ui/components/TodoDisplay.test.js.map +1 -0
- package/dist/src/ui/components/ToolStatsDisplay.d.ts +11 -0
- package/dist/src/ui/components/ToolStatsDisplay.js +42 -0
- package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -0
- package/dist/src/ui/components/TrustDialog.d.ts +13 -0
- package/dist/src/ui/components/TrustDialog.js +48 -0
- package/dist/src/ui/components/TrustDialog.js.map +1 -0
- package/dist/src/ui/components/TrustDialog.test.d.ts +6 -0
- package/dist/src/ui/components/TrustDialog.test.js +154 -0
- package/dist/src/ui/components/TrustDialog.test.js.map +1 -0
- package/dist/src/ui/components/UpdateNotification.d.ts +10 -0
- package/dist/src/ui/components/UpdateNotification.js +10 -0
- package/dist/src/ui/components/UpdateNotification.js.map +1 -0
- package/dist/src/ui/components/WelcomeBackDialog.d.ts +13 -0
- package/dist/src/ui/components/WelcomeBackDialog.js +43 -0
- package/dist/src/ui/components/WelcomeBackDialog.js.map +1 -0
- package/dist/src/ui/components/WorktreeExitDialog.d.ts +26 -0
- package/dist/src/ui/components/WorktreeExitDialog.js +134 -0
- package/dist/src/ui/components/WorktreeExitDialog.js.map +1 -0
- package/dist/src/ui/components/WorktreeExitDialog.test.d.ts +6 -0
- package/dist/src/ui/components/WorktreeExitDialog.test.js +41 -0
- package/dist/src/ui/components/WorktreeExitDialog.test.js.map +1 -0
- package/dist/src/ui/components/agent-view/AgentChatContent.d.ts +27 -0
- package/dist/src/ui/components/agent-view/AgentChatContent.js +150 -0
- package/dist/src/ui/components/agent-view/AgentChatContent.js.map +1 -0
- package/dist/src/ui/components/agent-view/AgentChatView.d.ts +10 -0
- package/dist/src/ui/components/agent-view/AgentChatView.js +24 -0
- package/dist/src/ui/components/agent-view/AgentChatView.js.map +1 -0
- package/dist/src/ui/components/agent-view/AgentComposer.d.ts +10 -0
- package/dist/src/ui/components/agent-view/AgentComposer.js +183 -0
- package/dist/src/ui/components/agent-view/AgentComposer.js.map +1 -0
- package/dist/src/ui/components/agent-view/AgentFooter.d.ts +20 -0
- package/dist/src/ui/components/agent-view/AgentFooter.js +15 -0
- package/dist/src/ui/components/agent-view/AgentFooter.js.map +1 -0
- package/dist/src/ui/components/agent-view/AgentHeader.d.ts +19 -0
- package/dist/src/ui/components/agent-view/AgentHeader.js +13 -0
- package/dist/src/ui/components/agent-view/AgentHeader.js.map +1 -0
- package/dist/src/ui/components/agent-view/AgentTabBar.d.ts +6 -0
- package/dist/src/ui/components/agent-view/AgentTabBar.js +110 -0
- package/dist/src/ui/components/agent-view/AgentTabBar.js.map +1 -0
- package/dist/src/ui/components/agent-view/AgentTabBar.test.d.ts +6 -0
- package/dist/src/ui/components/agent-view/AgentTabBar.test.js +90 -0
- package/dist/src/ui/components/agent-view/AgentTabBar.test.js.map +1 -0
- package/dist/src/ui/components/agent-view/agentHistoryAdapter.d.ts +31 -0
- package/dist/src/ui/components/agent-view/agentHistoryAdapter.js +148 -0
- package/dist/src/ui/components/agent-view/agentHistoryAdapter.js.map +1 -0
- package/dist/src/ui/components/agent-view/agentHistoryAdapter.test.d.ts +6 -0
- package/dist/src/ui/components/agent-view/agentHistoryAdapter.test.js +318 -0
- package/dist/src/ui/components/agent-view/agentHistoryAdapter.test.js.map +1 -0
- package/dist/src/ui/components/agent-view/index.d.ts +11 -0
- package/dist/src/ui/components/agent-view/index.js +12 -0
- package/dist/src/ui/components/agent-view/index.js.map +1 -0
- package/dist/src/ui/components/approvalModeVisuals.d.ts +11 -0
- package/dist/src/ui/components/approvalModeVisuals.js +37 -0
- package/dist/src/ui/components/approvalModeVisuals.js.map +1 -0
- package/dist/src/ui/components/approvalModeVisuals.test.d.ts +6 -0
- package/dist/src/ui/components/approvalModeVisuals.test.js +32 -0
- package/dist/src/ui/components/approvalModeVisuals.test.js.map +1 -0
- package/dist/src/ui/components/arena/ArenaCards.d.ts +21 -0
- package/dist/src/ui/components/arena/ArenaCards.js +99 -0
- package/dist/src/ui/components/arena/ArenaCards.js.map +1 -0
- package/dist/src/ui/components/arena/ArenaCards.test.d.ts +6 -0
- package/dist/src/ui/components/arena/ArenaCards.test.js +128 -0
- package/dist/src/ui/components/arena/ArenaCards.test.js.map +1 -0
- package/dist/src/ui/components/arena/ArenaSelectDialog.d.ts +16 -0
- package/dist/src/ui/components/arena/ArenaSelectDialog.js +213 -0
- package/dist/src/ui/components/arena/ArenaSelectDialog.js.map +1 -0
- package/dist/src/ui/components/arena/ArenaSelectDialog.test.d.ts +6 -0
- package/dist/src/ui/components/arena/ArenaSelectDialog.test.js +149 -0
- package/dist/src/ui/components/arena/ArenaSelectDialog.test.js.map +1 -0
- package/dist/src/ui/components/arena/ArenaStartDialog.d.ts +12 -0
- package/dist/src/ui/components/arena/ArenaStartDialog.js +49 -0
- package/dist/src/ui/components/arena/ArenaStartDialog.js.map +1 -0
- package/dist/src/ui/components/arena/ArenaStatusDialog.d.ts +14 -0
- package/dist/src/ui/components/arena/ArenaStatusDialog.js +111 -0
- package/dist/src/ui/components/arena/ArenaStatusDialog.js.map +1 -0
- package/dist/src/ui/components/arena/ArenaStopDialog.d.ts +15 -0
- package/dist/src/ui/components/arena/ArenaStopDialog.js +113 -0
- package/dist/src/ui/components/arena/ArenaStopDialog.js.map +1 -0
- package/dist/src/ui/components/background-view/BackgroundTasksDialog.d.ts +17 -0
- package/dist/src/ui/components/background-view/BackgroundTasksDialog.js +614 -0
- package/dist/src/ui/components/background-view/BackgroundTasksDialog.js.map +1 -0
- package/dist/src/ui/components/background-view/BackgroundTasksDialog.test.d.ts +6 -0
- package/dist/src/ui/components/background-view/BackgroundTasksDialog.test.js +606 -0
- package/dist/src/ui/components/background-view/BackgroundTasksDialog.test.js.map +1 -0
- package/dist/src/ui/components/background-view/BackgroundTasksPill.d.ts +14 -0
- package/dist/src/ui/components/background-view/BackgroundTasksPill.js +94 -0
- package/dist/src/ui/components/background-view/BackgroundTasksPill.js.map +1 -0
- package/dist/src/ui/components/background-view/BackgroundTasksPill.test.d.ts +6 -0
- package/dist/src/ui/components/background-view/BackgroundTasksPill.test.js +158 -0
- package/dist/src/ui/components/background-view/BackgroundTasksPill.test.js.map +1 -0
- package/dist/src/ui/components/background-view/LiveAgentPanel.d.ts +43 -0
- package/dist/src/ui/components/background-view/LiveAgentPanel.js +361 -0
- package/dist/src/ui/components/background-view/LiveAgentPanel.js.map +1 -0
- package/dist/src/ui/components/background-view/LiveAgentPanel.test.d.ts +6 -0
- package/dist/src/ui/components/background-view/LiveAgentPanel.test.js +595 -0
- package/dist/src/ui/components/background-view/LiveAgentPanel.test.js.map +1 -0
- package/dist/src/ui/components/extensions/ExtensionsManagerDialog.d.ts +12 -0
- package/dist/src/ui/components/extensions/ExtensionsManagerDialog.js +337 -0
- package/dist/src/ui/components/extensions/ExtensionsManagerDialog.js.map +1 -0
- package/dist/src/ui/components/extensions/ExtensionsManagerDialog.test.d.ts +6 -0
- package/dist/src/ui/components/extensions/ExtensionsManagerDialog.test.js +90 -0
- package/dist/src/ui/components/extensions/ExtensionsManagerDialog.test.js.map +1 -0
- package/dist/src/ui/components/extensions/index.d.ts +8 -0
- package/dist/src/ui/components/extensions/index.js +8 -0
- package/dist/src/ui/components/extensions/index.js.map +1 -0
- package/dist/src/ui/components/extensions/steps/ActionSelectionStep.d.ts +15 -0
- package/dist/src/ui/components/extensions/steps/ActionSelectionStep.js +75 -0
- package/dist/src/ui/components/extensions/steps/ActionSelectionStep.js.map +1 -0
- package/dist/src/ui/components/extensions/steps/ActionSelectionStep.test.d.ts +6 -0
- package/dist/src/ui/components/extensions/steps/ActionSelectionStep.test.js +56 -0
- package/dist/src/ui/components/extensions/steps/ActionSelectionStep.test.js.map +1 -0
- package/dist/src/ui/components/extensions/steps/ExtensionDetailStep.d.ts +11 -0
- package/dist/src/ui/components/extensions/steps/ExtensionDetailStep.js +23 -0
- package/dist/src/ui/components/extensions/steps/ExtensionDetailStep.js.map +1 -0
- package/dist/src/ui/components/extensions/steps/ExtensionListStep.d.ts +13 -0
- package/dist/src/ui/components/extensions/steps/ExtensionListStep.js +105 -0
- package/dist/src/ui/components/extensions/steps/ExtensionListStep.js.map +1 -0
- package/dist/src/ui/components/extensions/steps/ExtensionListStep.test.d.ts +6 -0
- package/dist/src/ui/components/extensions/steps/ExtensionListStep.test.js +74 -0
- package/dist/src/ui/components/extensions/steps/ExtensionListStep.test.js.map +1 -0
- package/dist/src/ui/components/extensions/steps/ScopeSelectStep.d.ts +13 -0
- package/dist/src/ui/components/extensions/steps/ScopeSelectStep.js +40 -0
- package/dist/src/ui/components/extensions/steps/ScopeSelectStep.js.map +1 -0
- package/dist/src/ui/components/extensions/steps/UninstallConfirmStep.d.ts +13 -0
- package/dist/src/ui/components/extensions/steps/UninstallConfirmStep.js +38 -0
- package/dist/src/ui/components/extensions/steps/UninstallConfirmStep.js.map +1 -0
- package/dist/src/ui/components/extensions/steps/index.d.ts +10 -0
- package/dist/src/ui/components/extensions/steps/index.js +11 -0
- package/dist/src/ui/components/extensions/steps/index.js.map +1 -0
- package/dist/src/ui/components/extensions/types.d.ts +73 -0
- package/dist/src/ui/components/extensions/types.js +18 -0
- package/dist/src/ui/components/extensions/types.js.map +1 -0
- package/dist/src/ui/components/hooks/HandlerListBody.d.ts +12 -0
- package/dist/src/ui/components/hooks/HandlerListBody.js +54 -0
- package/dist/src/ui/components/hooks/HandlerListBody.js.map +1 -0
- package/dist/src/ui/components/hooks/HandlerListBody.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/HandlerListBody.test.js +175 -0
- package/dist/src/ui/components/hooks/HandlerListBody.test.js.map +1 -0
- package/dist/src/ui/components/hooks/HookConfigDetailStep.d.ts +12 -0
- package/dist/src/ui/components/hooks/HookConfigDetailStep.js +48 -0
- package/dist/src/ui/components/hooks/HookConfigDetailStep.js.map +1 -0
- package/dist/src/ui/components/hooks/HookConfigDetailStep.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/HookConfigDetailStep.test.js +236 -0
- package/dist/src/ui/components/hooks/HookConfigDetailStep.test.js.map +1 -0
- package/dist/src/ui/components/hooks/HookDetailStep.d.ts +12 -0
- package/dist/src/ui/components/hooks/HookDetailStep.js +11 -0
- package/dist/src/ui/components/hooks/HookDetailStep.js.map +1 -0
- package/dist/src/ui/components/hooks/HookDetailStep.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/HookDetailStep.test.js +241 -0
- package/dist/src/ui/components/hooks/HookDetailStep.test.js.map +1 -0
- package/dist/src/ui/components/hooks/HookEventHandlerListStep.d.ts +12 -0
- package/dist/src/ui/components/hooks/HookEventHandlerListStep.js +18 -0
- package/dist/src/ui/components/hooks/HookEventHandlerListStep.js.map +1 -0
- package/dist/src/ui/components/hooks/HookEventHeader.d.ts +13 -0
- package/dist/src/ui/components/hooks/HookEventHeader.js +23 -0
- package/dist/src/ui/components/hooks/HookEventHeader.js.map +1 -0
- package/dist/src/ui/components/hooks/HookEventMatcherListStep.d.ts +12 -0
- package/dist/src/ui/components/hooks/HookEventMatcherListStep.js +28 -0
- package/dist/src/ui/components/hooks/HookEventMatcherListStep.js.map +1 -0
- package/dist/src/ui/components/hooks/HookMatcherDetailStep.d.ts +13 -0
- package/dist/src/ui/components/hooks/HookMatcherDetailStep.js +16 -0
- package/dist/src/ui/components/hooks/HookMatcherDetailStep.js.map +1 -0
- package/dist/src/ui/components/hooks/HookMatcherDetailStep.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/HookMatcherDetailStep.test.js +154 -0
- package/dist/src/ui/components/hooks/HookMatcherDetailStep.test.js.map +1 -0
- package/dist/src/ui/components/hooks/HooksDisabledStep.d.ts +10 -0
- package/dist/src/ui/components/hooks/HooksDisabledStep.js +23 -0
- package/dist/src/ui/components/hooks/HooksDisabledStep.js.map +1 -0
- package/dist/src/ui/components/hooks/HooksDisabledStep.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/HooksDisabledStep.test.js +86 -0
- package/dist/src/ui/components/hooks/HooksDisabledStep.test.js.map +1 -0
- package/dist/src/ui/components/hooks/HooksListStep.d.ts +12 -0
- package/dist/src/ui/components/hooks/HooksListStep.js +32 -0
- package/dist/src/ui/components/hooks/HooksListStep.js.map +1 -0
- package/dist/src/ui/components/hooks/HooksListStep.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/HooksListStep.test.js +144 -0
- package/dist/src/ui/components/hooks/HooksListStep.test.js.map +1 -0
- package/dist/src/ui/components/hooks/HooksManagementDialog.d.ts +7 -0
- package/dist/src/ui/components/hooks/HooksManagementDialog.js +418 -0
- package/dist/src/ui/components/hooks/HooksManagementDialog.js.map +1 -0
- package/dist/src/ui/components/hooks/HooksManagementDialog.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/HooksManagementDialog.test.js +305 -0
- package/dist/src/ui/components/hooks/HooksManagementDialog.test.js.map +1 -0
- package/dist/src/ui/components/hooks/constants.d.ts +26 -0
- package/dist/src/ui/components/hooks/constants.js +227 -0
- package/dist/src/ui/components/hooks/constants.js.map +1 -0
- package/dist/src/ui/components/hooks/constants.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/constants.test.js +317 -0
- package/dist/src/ui/components/hooks/constants.test.js.map +1 -0
- package/dist/src/ui/components/hooks/index.d.ts +12 -0
- package/dist/src/ui/components/hooks/index.js +13 -0
- package/dist/src/ui/components/hooks/index.js.map +1 -0
- package/dist/src/ui/components/hooks/matcherGrouping.d.ts +9 -0
- package/dist/src/ui/components/hooks/matcherGrouping.js +35 -0
- package/dist/src/ui/components/hooks/matcherGrouping.js.map +1 -0
- package/dist/src/ui/components/hooks/matcherGrouping.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/matcherGrouping.test.js +183 -0
- package/dist/src/ui/components/hooks/matcherGrouping.test.js.map +1 -0
- package/dist/src/ui/components/hooks/sourceLabels.d.ts +13 -0
- package/dist/src/ui/components/hooks/sourceLabels.js +35 -0
- package/dist/src/ui/components/hooks/sourceLabels.js.map +1 -0
- package/dist/src/ui/components/hooks/sourceLabels.test.d.ts +6 -0
- package/dist/src/ui/components/hooks/sourceLabels.test.js +81 -0
- package/dist/src/ui/components/hooks/sourceLabels.test.js.map +1 -0
- package/dist/src/ui/components/hooks/types.d.ts +42 -0
- package/dist/src/ui/components/hooks/types.js +13 -0
- package/dist/src/ui/components/hooks/types.js.map +1 -0
- package/dist/src/ui/components/mcp/MCPHealthPill.d.ts +24 -0
- package/dist/src/ui/components/mcp/MCPHealthPill.js +33 -0
- package/dist/src/ui/components/mcp/MCPHealthPill.js.map +1 -0
- package/dist/src/ui/components/mcp/MCPHealthPill.test.d.ts +6 -0
- package/dist/src/ui/components/mcp/MCPHealthPill.test.js +42 -0
- package/dist/src/ui/components/mcp/MCPHealthPill.test.js.map +1 -0
- package/dist/src/ui/components/mcp/MCPManagementDialog.d.ts +7 -0
- package/dist/src/ui/components/mcp/MCPManagementDialog.js +472 -0
- package/dist/src/ui/components/mcp/MCPManagementDialog.js.map +1 -0
- package/dist/src/ui/components/mcp/constants.d.ts +29 -0
- package/dist/src/ui/components/mcp/constants.js +34 -0
- package/dist/src/ui/components/mcp/constants.js.map +1 -0
- package/dist/src/ui/components/mcp/index.d.ts +12 -0
- package/dist/src/ui/components/mcp/index.js +15 -0
- package/dist/src/ui/components/mcp/index.js.map +1 -0
- package/dist/src/ui/components/mcp/steps/AuthenticateStep.d.ts +7 -0
- package/dist/src/ui/components/mcp/steps/AuthenticateStep.js +187 -0
- package/dist/src/ui/components/mcp/steps/AuthenticateStep.js.map +1 -0
- package/dist/src/ui/components/mcp/steps/DisableScopeSelectStep.d.ts +7 -0
- package/dist/src/ui/components/mcp/steps/DisableScopeSelectStep.js +44 -0
- package/dist/src/ui/components/mcp/steps/DisableScopeSelectStep.js.map +1 -0
- package/dist/src/ui/components/mcp/steps/ServerDetailStep.d.ts +7 -0
- package/dist/src/ui/components/mcp/steps/ServerDetailStep.js +108 -0
- package/dist/src/ui/components/mcp/steps/ServerDetailStep.js.map +1 -0
- package/dist/src/ui/components/mcp/steps/ServerListStep.d.ts +7 -0
- package/dist/src/ui/components/mcp/steps/ServerListStep.js +74 -0
- package/dist/src/ui/components/mcp/steps/ServerListStep.js.map +1 -0
- package/dist/src/ui/components/mcp/steps/ServerListStep.test.d.ts +6 -0
- package/dist/src/ui/components/mcp/steps/ServerListStep.test.js +60 -0
- package/dist/src/ui/components/mcp/steps/ServerListStep.test.js.map +1 -0
- package/dist/src/ui/components/mcp/steps/ToolDetailStep.d.ts +7 -0
- package/dist/src/ui/components/mcp/steps/ToolDetailStep.js +49 -0
- package/dist/src/ui/components/mcp/steps/ToolDetailStep.js.map +1 -0
- package/dist/src/ui/components/mcp/steps/ToolListStep.d.ts +7 -0
- package/dist/src/ui/components/mcp/steps/ToolListStep.js +80 -0
- package/dist/src/ui/components/mcp/steps/ToolListStep.js.map +1 -0
- package/dist/src/ui/components/mcp/steps/ToolListStep.test.d.ts +6 -0
- package/dist/src/ui/components/mcp/steps/ToolListStep.test.js +55 -0
- package/dist/src/ui/components/mcp/steps/ToolListStep.test.js.map +1 -0
- package/dist/src/ui/components/mcp/types.d.ts +177 -0
- package/dist/src/ui/components/mcp/types.js +17 -0
- package/dist/src/ui/components/mcp/types.js.map +1 -0
- package/dist/src/ui/components/mcp/utils.d.ts +40 -0
- package/dist/src/ui/components/mcp/utils.js +126 -0
- package/dist/src/ui/components/mcp/utils.js.map +1 -0
- package/dist/src/ui/components/mcp/utils.test.d.ts +6 -0
- package/dist/src/ui/components/mcp/utils.test.js +130 -0
- package/dist/src/ui/components/mcp/utils.test.js.map +1 -0
- package/dist/src/ui/components/messages/AskUserQuestionDialog.d.ts +14 -0
- package/dist/src/ui/components/messages/AskUserQuestionDialog.js +291 -0
- package/dist/src/ui/components/messages/AskUserQuestionDialog.js.map +1 -0
- package/dist/src/ui/components/messages/AskUserQuestionDialog.test.d.ts +6 -0
- package/dist/src/ui/components/messages/AskUserQuestionDialog.test.js +281 -0
- package/dist/src/ui/components/messages/AskUserQuestionDialog.test.js.map +1 -0
- package/dist/src/ui/components/messages/BtwMessage.d.ts +14 -0
- package/dist/src/ui/components/messages/BtwMessage.js +30 -0
- package/dist/src/ui/components/messages/BtwMessage.js.map +1 -0
- package/dist/src/ui/components/messages/BtwMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/BtwMessage.test.js +60 -0
- package/dist/src/ui/components/messages/BtwMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/CompactToolGroupDisplay.d.ts +20 -0
- package/dist/src/ui/components/messages/CompactToolGroupDisplay.js +80 -0
- package/dist/src/ui/components/messages/CompactToolGroupDisplay.js.map +1 -0
- package/dist/src/ui/components/messages/CompactToolGroupDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/messages/CompactToolGroupDisplay.test.js +139 -0
- package/dist/src/ui/components/messages/CompactToolGroupDisplay.test.js.map +1 -0
- package/dist/src/ui/components/messages/CompressionMessage.d.ts +10 -0
- package/dist/src/ui/components/messages/CompressionMessage.js +50 -0
- package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.js +160 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/ConversationMessages.d.ts +46 -0
- package/dist/src/ui/components/messages/ConversationMessages.js +32 -0
- package/dist/src/ui/components/messages/ConversationMessages.js.map +1 -0
- package/dist/src/ui/components/messages/DiffRenderer.d.ts +19 -0
- package/dist/src/ui/components/messages/DiffRenderer.js +219 -0
- package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -0
- package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
- package/dist/src/ui/components/messages/DiffRenderer.test.js +296 -0
- package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
- package/dist/src/ui/components/messages/DiffStatsDisplay.d.ts +18 -0
- package/dist/src/ui/components/messages/DiffStatsDisplay.js +50 -0
- package/dist/src/ui/components/messages/DiffStatsDisplay.js.map +1 -0
- package/dist/src/ui/components/messages/DiffStatsDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/messages/DiffStatsDisplay.test.js +165 -0
- package/dist/src/ui/components/messages/DiffStatsDisplay.test.js.map +1 -0
- package/dist/src/ui/components/messages/GoalStatusMessage.d.ts +16 -0
- package/dist/src/ui/components/messages/GoalStatusMessage.js +76 -0
- package/dist/src/ui/components/messages/GoalStatusMessage.js.map +1 -0
- package/dist/src/ui/components/messages/GoalStatusMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/GoalStatusMessage.test.js +32 -0
- package/dist/src/ui/components/messages/GoalStatusMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.d.ts +33 -0
- package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.js +196 -0
- package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.js.map +1 -0
- package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.test.js +219 -0
- package/dist/src/ui/components/messages/InlineParallelAgentsDisplay.test.js.map +1 -0
- package/dist/src/ui/components/messages/InsightProgressMessage.d.ts +12 -0
- package/dist/src/ui/components/messages/InsightProgressMessage.js +20 -0
- package/dist/src/ui/components/messages/InsightProgressMessage.js.map +1 -0
- package/dist/src/ui/components/messages/MemorySavedMessage.d.ts +18 -0
- package/dist/src/ui/components/messages/MemorySavedMessage.js +15 -0
- package/dist/src/ui/components/messages/MemorySavedMessage.js.map +1 -0
- package/dist/src/ui/components/messages/StatusMessages.d.ts +33 -0
- package/dist/src/ui/components/messages/StatusMessages.js +28 -0
- package/dist/src/ui/components/messages/StatusMessages.js.map +1 -0
- package/dist/src/ui/components/messages/StatusMessages.test.d.ts +6 -0
- package/dist/src/ui/components/messages/StatusMessages.test.js +21 -0
- package/dist/src/ui/components/messages/StatusMessages.test.js.map +1 -0
- package/dist/src/ui/components/messages/SummaryMessage.d.ts +11 -0
- package/dist/src/ui/components/messages/SummaryMessage.js +38 -0
- package/dist/src/ui/components/messages/SummaryMessage.js.map +1 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +16 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +352 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +312 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +58 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.js +278 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +619 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolMessage.d.ts +39 -0
- package/dist/src/ui/components/messages/ToolMessage.js +400 -0
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -0
- package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolMessage.test.js +575 -0
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
- package/dist/src/ui/components/shared/BaseSelectionList.d.ts +40 -0
- package/dist/src/ui/components/shared/BaseSelectionList.js +75 -0
- package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +6 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.js +376 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +37 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +13 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +6 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +79 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -0
- package/dist/src/ui/components/shared/EnumSelector.d.ts +18 -0
- package/dist/src/ui/components/shared/EnumSelector.js +44 -0
- package/dist/src/ui/components/shared/EnumSelector.js.map +1 -0
- package/dist/src/ui/components/shared/EnumSelector.test.d.ts +6 -0
- package/dist/src/ui/components/shared/EnumSelector.test.js +70 -0
- package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -0
- package/dist/src/ui/components/shared/MaxSizedBox.d.ts +61 -0
- package/dist/src/ui/components/shared/MaxSizedBox.js +453 -0
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -0
- package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
- package/dist/src/ui/components/shared/MaxSizedBox.test.js +154 -0
- package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
- package/dist/src/ui/components/shared/MultiSelect.d.ts +30 -0
- package/dist/src/ui/components/shared/MultiSelect.js +94 -0
- package/dist/src/ui/components/shared/MultiSelect.js.map +1 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +45 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.js +21 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +6 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js +134 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -0
- package/dist/src/ui/components/shared/ScopeSelector.d.ts +19 -0
- package/dist/src/ui/components/shared/ScopeSelector.js +16 -0
- package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -0
- package/dist/src/ui/components/shared/ScrollableList.d.ts +19 -0
- package/dist/src/ui/components/shared/ScrollableList.js +97 -0
- package/dist/src/ui/components/shared/ScrollableList.js.map +1 -0
- package/dist/src/ui/components/shared/ScrollableList.test.d.ts +6 -0
- package/dist/src/ui/components/shared/ScrollableList.test.js +158 -0
- package/dist/src/ui/components/shared/ScrollableList.test.js.map +1 -0
- package/dist/src/ui/components/shared/StaticRender.d.ts +25 -0
- package/dist/src/ui/components/shared/StaticRender.js +25 -0
- package/dist/src/ui/components/shared/StaticRender.js.map +1 -0
- package/dist/src/ui/components/shared/TextInput.d.ts +25 -0
- package/dist/src/ui/components/shared/TextInput.js +163 -0
- package/dist/src/ui/components/shared/TextInput.js.map +1 -0
- package/dist/src/ui/components/shared/TextInput.test.d.ts +6 -0
- package/dist/src/ui/components/shared/TextInput.test.js +91 -0
- package/dist/src/ui/components/shared/TextInput.test.js.map +1 -0
- package/dist/src/ui/components/shared/ToolElapsedTime.d.ts +30 -0
- package/dist/src/ui/components/shared/ToolElapsedTime.js +43 -0
- package/dist/src/ui/components/shared/ToolElapsedTime.js.map +1 -0
- package/dist/src/ui/components/shared/ToolElapsedTime.test.d.ts +6 -0
- package/dist/src/ui/components/shared/ToolElapsedTime.test.js +63 -0
- package/dist/src/ui/components/shared/ToolElapsedTime.test.js.map +1 -0
- package/dist/src/ui/components/shared/ToolStatusIndicator.d.ts +14 -0
- package/dist/src/ui/components/shared/ToolStatusIndicator.js +13 -0
- package/dist/src/ui/components/shared/ToolStatusIndicator.js.map +1 -0
- package/dist/src/ui/components/shared/VirtualizedList.d.ts +49 -0
- package/dist/src/ui/components/shared/VirtualizedList.js +529 -0
- package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -0
- package/dist/src/ui/components/shared/VirtualizedList.test.d.ts +6 -0
- package/dist/src/ui/components/shared/VirtualizedList.test.js +371 -0
- package/dist/src/ui/components/shared/VirtualizedList.test.js.map +1 -0
- package/dist/src/ui/components/shared/text-buffer-external-editor.test.d.ts +6 -0
- package/dist/src/ui/components/shared/text-buffer-external-editor.test.js +657 -0
- package/dist/src/ui/components/shared/text-buffer-external-editor.test.js.map +1 -0
- package/dist/src/ui/components/shared/text-buffer.d.ts +503 -0
- package/dist/src/ui/components/shared/text-buffer.js +2181 -0
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -0
- package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +74 -0
- package/dist/src/ui/components/shared/vim-buffer-actions.js +612 -0
- package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -0
- package/dist/src/ui/components/skills/SkillsManagerDialog.d.ts +44 -0
- package/dist/src/ui/components/skills/SkillsManagerDialog.js +423 -0
- package/dist/src/ui/components/skills/SkillsManagerDialog.js.map +1 -0
- package/dist/src/ui/components/stats-helpers.d.ts +30 -0
- package/dist/src/ui/components/stats-helpers.js +79 -0
- package/dist/src/ui/components/stats-helpers.js.map +1 -0
- package/dist/src/ui/components/subagents/constants.d.ts +23 -0
- package/dist/src/ui/components/subagents/constants.js +67 -0
- package/dist/src/ui/components/subagents/constants.js.map +1 -0
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.d.ts +15 -0
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +173 -0
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +1 -0
- package/dist/src/ui/components/subagents/create/ColorSelector.d.ts +15 -0
- package/dist/src/ui/components/subagents/create/ColorSelector.js +43 -0
- package/dist/src/ui/components/subagents/create/ColorSelector.js.map +1 -0
- package/dist/src/ui/components/subagents/create/CreationSummary.d.ts +10 -0
- package/dist/src/ui/components/subagents/create/CreationSummary.js +176 -0
- package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -0
- package/dist/src/ui/components/subagents/create/DescriptionInput.d.ts +10 -0
- package/dist/src/ui/components/subagents/create/DescriptionInput.js +107 -0
- package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +1 -0
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.d.ts +10 -0
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +39 -0
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +1 -0
- package/dist/src/ui/components/subagents/create/LocationSelector.d.ts +10 -0
- package/dist/src/ui/components/subagents/create/LocationSelector.js +39 -0
- package/dist/src/ui/components/subagents/create/LocationSelector.js.map +1 -0
- package/dist/src/ui/components/subagents/create/TextEntryStep.d.ts +26 -0
- package/dist/src/ui/components/subagents/create/TextEntryStep.js +28 -0
- package/dist/src/ui/components/subagents/create/TextEntryStep.js.map +1 -0
- package/dist/src/ui/components/subagents/create/ToolSelector.d.ts +16 -0
- package/dist/src/ui/components/subagents/create/ToolSelector.js +145 -0
- package/dist/src/ui/components/subagents/create/ToolSelector.js.map +1 -0
- package/dist/src/ui/components/subagents/index.d.ts +7 -0
- package/dist/src/ui/components/subagents/index.js +13 -0
- package/dist/src/ui/components/subagents/index.js.map +1 -0
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.d.ts +13 -0
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +73 -0
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +1 -0
- package/dist/src/ui/components/subagents/manage/AgentDeleteStep.d.ts +13 -0
- package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js +38 -0
- package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js.map +1 -0
- package/dist/src/ui/components/subagents/manage/AgentEditStep.d.ts +15 -0
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js +76 -0
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -0
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.d.ts +12 -0
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +342 -0
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -0
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.test.d.ts +6 -0
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.test.js +56 -0
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.test.js.map +1 -0
- package/dist/src/ui/components/subagents/manage/AgentViewerStep.d.ts +11 -0
- package/dist/src/ui/components/subagents/manage/AgentViewerStep.js +20 -0
- package/dist/src/ui/components/subagents/manage/AgentViewerStep.js.map +1 -0
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.d.ts +15 -0
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +214 -0
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +1 -0
- package/dist/src/ui/components/subagents/reducers.d.ts +14 -0
- package/dist/src/ui/components/subagents/reducers.js +162 -0
- package/dist/src/ui/components/subagents/reducers.js.map +1 -0
- package/dist/src/ui/components/subagents/types.d.ts +137 -0
- package/dist/src/ui/components/subagents/types.js +15 -0
- package/dist/src/ui/components/subagents/types.js.map +1 -0
- package/dist/src/ui/components/subagents/utils.d.ts +15 -0
- package/dist/src/ui/components/subagents/utils.js +79 -0
- package/dist/src/ui/components/subagents/utils.js.map +1 -0
- package/dist/src/ui/components/views/ContextUsage.d.ts +23 -0
- package/dist/src/ui/components/views/ContextUsage.js +130 -0
- package/dist/src/ui/components/views/ContextUsage.js.map +1 -0
- package/dist/src/ui/components/views/ContextUsage.test.d.ts +6 -0
- package/dist/src/ui/components/views/ContextUsage.test.js +76 -0
- package/dist/src/ui/components/views/ContextUsage.test.js.map +1 -0
- package/dist/src/ui/components/views/DoctorReport.d.ts +18 -0
- package/dist/src/ui/components/views/DoctorReport.js +45 -0
- package/dist/src/ui/components/views/DoctorReport.js.map +1 -0
- package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionsList.js +49 -0
- package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
- package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js +88 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
- package/dist/src/ui/components/views/McpStatus.d.ts +27 -0
- package/dist/src/ui/components/views/McpStatus.js +90 -0
- package/dist/src/ui/components/views/McpStatus.js.map +1 -0
- package/dist/src/ui/components/views/McpStatus.test.d.ts +6 -0
- package/dist/src/ui/components/views/McpStatus.test.js +117 -0
- package/dist/src/ui/components/views/McpStatus.test.js.map +1 -0
- package/dist/src/ui/components/views/SkillsList.d.ts +12 -0
- package/dist/src/ui/components/views/SkillsList.js +7 -0
- package/dist/src/ui/components/views/SkillsList.js.map +1 -0
- package/dist/src/ui/components/views/ToolsList.d.ts +14 -0
- package/dist/src/ui/components/views/ToolsList.js +8 -0
- package/dist/src/ui/components/views/ToolsList.js.map +1 -0
- package/dist/src/ui/components/views/ToolsList.test.d.ts +6 -0
- package/dist/src/ui/components/views/ToolsList.test.js +45 -0
- package/dist/src/ui/components/views/ToolsList.test.js.map +1 -0
- package/dist/src/ui/constants.d.ts +18 -0
- package/dist/src/ui/constants.js +23 -0
- package/dist/src/ui/constants.js.map +1 -0
- package/dist/src/ui/contexts/AgentViewContext.d.ts +49 -0
- package/dist/src/ui/contexts/AgentViewContext.js +187 -0
- package/dist/src/ui/contexts/AgentViewContext.js.map +1 -0
- package/dist/src/ui/contexts/AppContext.d.ts +11 -0
- package/dist/src/ui/contexts/AppContext.js +15 -0
- package/dist/src/ui/contexts/AppContext.js.map +1 -0
- package/dist/src/ui/contexts/BackgroundTaskViewContext.d.ts +60 -0
- package/dist/src/ui/contexts/BackgroundTaskViewContext.js +238 -0
- package/dist/src/ui/contexts/BackgroundTaskViewContext.js.map +1 -0
- package/dist/src/ui/contexts/CompactModeContext.d.ts +13 -0
- package/dist/src/ui/contexts/CompactModeContext.js +13 -0
- package/dist/src/ui/contexts/CompactModeContext.js.map +1 -0
- package/dist/src/ui/contexts/ConfigContext.d.ts +9 -0
- package/dist/src/ui/contexts/ConfigContext.js +16 -0
- package/dist/src/ui/contexts/ConfigContext.js.map +1 -0
- package/dist/src/ui/contexts/KeypressContext.d.ts +40 -0
- package/dist/src/ui/contexts/KeypressContext.js +959 -0
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -0
- package/dist/src/ui/contexts/KeypressContext.test.d.ts +6 -0
- package/dist/src/ui/contexts/KeypressContext.test.js +1360 -0
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -0
- package/dist/src/ui/contexts/OverflowContext.d.ts +19 -0
- package/dist/src/ui/contexts/OverflowContext.js +38 -0
- package/dist/src/ui/contexts/OverflowContext.js.map +1 -0
- package/dist/src/ui/contexts/RenderModeContext.d.ts +14 -0
- package/dist/src/ui/contexts/RenderModeContext.js +15 -0
- package/dist/src/ui/contexts/RenderModeContext.js.map +1 -0
- package/dist/src/ui/contexts/SessionContext.d.ts +47 -0
- package/dist/src/ui/contexts/SessionContext.js +180 -0
- package/dist/src/ui/contexts/SessionContext.js.map +1 -0
- package/dist/src/ui/contexts/SettingsContext.d.ts +9 -0
- package/dist/src/ui/contexts/SettingsContext.js +15 -0
- package/dist/src/ui/contexts/SettingsContext.js.map +1 -0
- package/dist/src/ui/contexts/ShellFocusContext.d.ts +7 -0
- package/dist/src/ui/contexts/ShellFocusContext.js +9 -0
- package/dist/src/ui/contexts/ShellFocusContext.js.map +1 -0
- package/dist/src/ui/contexts/StreamingContext.d.ts +9 -0
- package/dist/src/ui/contexts/StreamingContext.js +15 -0
- package/dist/src/ui/contexts/StreamingContext.js.map +1 -0
- package/dist/src/ui/contexts/TerminalOutputContext.d.ts +12 -0
- package/dist/src/ui/contexts/TerminalOutputContext.js +11 -0
- package/dist/src/ui/contexts/TerminalOutputContext.js.map +1 -0
- package/dist/src/ui/contexts/UIActionsContext.d.ts +91 -0
- package/dist/src/ui/contexts/UIActionsContext.js +22 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -0
- package/dist/src/ui/contexts/UIStateContext.d.ts +158 -0
- package/dist/src/ui/contexts/UIStateContext.js +20 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -0
- package/dist/src/ui/contexts/VimModeContext.d.ts +31 -0
- package/dist/src/ui/contexts/VimModeContext.js +60 -0
- package/dist/src/ui/contexts/VimModeContext.js.map +1 -0
- package/dist/src/ui/contexts/VimModeContext.test.d.ts +11 -0
- package/dist/src/ui/contexts/VimModeContext.test.js +99 -0
- package/dist/src/ui/contexts/VimModeContext.test.js.map +1 -0
- package/dist/src/ui/daemon/DaemonTuiAdapter.d.ts +101 -0
- package/dist/src/ui/daemon/DaemonTuiAdapter.js +695 -0
- package/dist/src/ui/daemon/DaemonTuiAdapter.js.map +1 -0
- package/dist/src/ui/daemon/DaemonTuiAdapter.test.d.ts +6 -0
- package/dist/src/ui/daemon/DaemonTuiAdapter.test.js +784 -0
- package/dist/src/ui/daemon/DaemonTuiAdapter.test.js.map +1 -0
- package/dist/src/ui/editors/editorSettingsManager.d.ts +19 -0
- package/dist/src/ui/editors/editorSettingsManager.js +48 -0
- package/dist/src/ui/editors/editorSettingsManager.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.d.ts +33 -0
- package/dist/src/ui/hooks/atCommandProcessor.js +344 -0
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +6 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js +871 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -0
- package/dist/src/ui/hooks/keyToAnsi.d.ts +15 -0
- package/dist/src/ui/hooks/keyToAnsi.js +67 -0
- package/dist/src/ui/hooks/keyToAnsi.js.map +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.d.ts +18 -0
- package/dist/src/ui/hooks/shellCommandProcessor.js +287 -0
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +6 -0
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +509 -0
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -0
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +71 -0
- package/dist/src/ui/hooks/slashCommandProcessor.js +837 -0
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -0
- package/dist/src/ui/hooks/useAgentStreamingState.d.ts +29 -0
- package/dist/src/ui/hooks/useAgentStreamingState.js +109 -0
- package/dist/src/ui/hooks/useAgentStreamingState.js.map +1 -0
- package/dist/src/ui/hooks/useAgentsManagerDialog.d.ts +11 -0
- package/dist/src/ui/hooks/useAgentsManagerDialog.js +21 -0
- package/dist/src/ui/hooks/useAgentsManagerDialog.js.map +1 -0
- package/dist/src/ui/hooks/useAnimatedScrollbar.d.ts +37 -0
- package/dist/src/ui/hooks/useAnimatedScrollbar.js +44 -0
- package/dist/src/ui/hooks/useAnimatedScrollbar.js.map +1 -0
- package/dist/src/ui/hooks/useAnimatedScrollbar.test.d.ts +6 -0
- package/dist/src/ui/hooks/useAnimatedScrollbar.test.js +74 -0
- package/dist/src/ui/hooks/useAnimatedScrollbar.test.js.map +1 -0
- package/dist/src/ui/hooks/useAnimationFrame.d.ts +25 -0
- package/dist/src/ui/hooks/useAnimationFrame.js +86 -0
- package/dist/src/ui/hooks/useAnimationFrame.js.map +1 -0
- package/dist/src/ui/hooks/useApprovalModeCommand.d.ts +14 -0
- package/dist/src/ui/hooks/useApprovalModeCommand.js +33 -0
- package/dist/src/ui/hooks/useApprovalModeCommand.js.map +1 -0
- package/dist/src/ui/hooks/useArenaCommand.d.ts +13 -0
- package/dist/src/ui/hooks/useArenaCommand.js +21 -0
- package/dist/src/ui/hooks/useArenaCommand.js.map +1 -0
- package/dist/src/ui/hooks/useArenaInProcess.d.ts +14 -0
- package/dist/src/ui/hooks/useArenaInProcess.js +136 -0
- package/dist/src/ui/hooks/useArenaInProcess.js.map +1 -0
- package/dist/src/ui/hooks/useAtCompletion.d.ts +23 -0
- package/dist/src/ui/hooks/useAtCompletion.js +184 -0
- package/dist/src/ui/hooks/useAtCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useAttentionNotifications.d.ts +22 -0
- package/dist/src/ui/hooks/useAttentionNotifications.js +89 -0
- package/dist/src/ui/hooks/useAttentionNotifications.js.map +1 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.d.ts +6 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.js +222 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.js.map +1 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +32 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js +124 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.d.ts +6 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +379 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -0
- package/dist/src/ui/hooks/useAwaySummary.d.ts +35 -0
- package/dist/src/ui/hooks/useAwaySummary.js +141 -0
- package/dist/src/ui/hooks/useAwaySummary.js.map +1 -0
- package/dist/src/ui/hooks/useAwaySummary.test.d.ts +6 -0
- package/dist/src/ui/hooks/useAwaySummary.test.js +103 -0
- package/dist/src/ui/hooks/useAwaySummary.test.js.map +1 -0
- package/dist/src/ui/hooks/useBackgroundTaskView.d.ts +69 -0
- package/dist/src/ui/hooks/useBackgroundTaskView.js +217 -0
- package/dist/src/ui/hooks/useBackgroundTaskView.js.map +1 -0
- package/dist/src/ui/hooks/useBackgroundTaskView.test.d.ts +6 -0
- package/dist/src/ui/hooks/useBackgroundTaskView.test.js +455 -0
- package/dist/src/ui/hooks/useBackgroundTaskView.test.js.map +1 -0
- package/dist/src/ui/hooks/useBatchedScroll.d.ts +14 -0
- package/dist/src/ui/hooks/useBatchedScroll.js +25 -0
- package/dist/src/ui/hooks/useBatchedScroll.js.map +1 -0
- package/dist/src/ui/hooks/useBatchedScroll.test.d.ts +6 -0
- package/dist/src/ui/hooks/useBatchedScroll.test.js +42 -0
- package/dist/src/ui/hooks/useBatchedScroll.test.js.map +1 -0
- package/dist/src/ui/hooks/useBracketedPaste.d.ts +12 -0
- package/dist/src/ui/hooks/useBracketedPaste.js +32 -0
- package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -0
- package/dist/src/ui/hooks/useBranchCommand.d.ts +33 -0
- package/dist/src/ui/hooks/useBranchCommand.js +230 -0
- package/dist/src/ui/hooks/useBranchCommand.js.map +1 -0
- package/dist/src/ui/hooks/useBranchCommand.test.d.ts +6 -0
- package/dist/src/ui/hooks/useBranchCommand.test.js +386 -0
- package/dist/src/ui/hooks/useBranchCommand.test.js.map +1 -0
- package/dist/src/ui/hooks/useCommandCompletion.d.ts +37 -0
- package/dist/src/ui/hooks/useCommandCompletion.js +227 -0
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useCommandMigration.d.ts +16 -0
- package/dist/src/ui/hooks/useCommandMigration.js +40 -0
- package/dist/src/ui/hooks/useCommandMigration.js.map +1 -0
- package/dist/src/ui/hooks/useCompletion.d.ts +24 -0
- package/dist/src/ui/hooks/useCompletion.js +88 -0
- package/dist/src/ui/hooks/useCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useConfigInitMessage.d.ts +6 -0
- package/dist/src/ui/hooks/useConfigInitMessage.js +45 -0
- package/dist/src/ui/hooks/useConfigInitMessage.js.map +1 -0
- package/dist/src/ui/hooks/useConfigInitMessage.test.d.ts +6 -0
- package/dist/src/ui/hooks/useConfigInitMessage.test.js +80 -0
- package/dist/src/ui/hooks/useConfigInitMessage.test.js.map +1 -0
- package/dist/src/ui/hooks/useContextualTips.d.ts +19 -0
- package/dist/src/ui/hooks/useContextualTips.js +65 -0
- package/dist/src/ui/hooks/useContextualTips.js.map +1 -0
- package/dist/src/ui/hooks/useDeleteCommand.d.ts +19 -0
- package/dist/src/ui/hooks/useDeleteCommand.js +167 -0
- package/dist/src/ui/hooks/useDeleteCommand.js.map +1 -0
- package/dist/src/ui/hooks/useDeleteCommand.test.d.ts +6 -0
- package/dist/src/ui/hooks/useDeleteCommand.test.js +391 -0
- package/dist/src/ui/hooks/useDeleteCommand.test.js.map +1 -0
- package/dist/src/ui/hooks/useDialogClose.d.ts +48 -0
- package/dist/src/ui/hooks/useDialogClose.js +102 -0
- package/dist/src/ui/hooks/useDialogClose.js.map +1 -0
- package/dist/src/ui/hooks/useDiffData.d.ts +32 -0
- package/dist/src/ui/hooks/useDiffData.js +72 -0
- package/dist/src/ui/hooks/useDiffData.js.map +1 -0
- package/dist/src/ui/hooks/useDoublePress.d.ts +18 -0
- package/dist/src/ui/hooks/useDoublePress.js +47 -0
- package/dist/src/ui/hooks/useDoublePress.js.map +1 -0
- package/dist/src/ui/hooks/useEditorSettings.d.ts +16 -0
- package/dist/src/ui/hooks/useEditorSettings.js +43 -0
- package/dist/src/ui/hooks/useEditorSettings.js.map +1 -0
- package/dist/src/ui/hooks/useEditorSettings.test.d.ts +6 -0
- package/dist/src/ui/hooks/useEditorSettings.test.js +164 -0
- package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -0
- package/dist/src/ui/hooks/useExportCompletion.d.ts +70 -0
- package/dist/src/ui/hooks/useExportCompletion.js +208 -0
- package/dist/src/ui/hooks/useExportCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useExportCompletion.test.d.ts +6 -0
- package/dist/src/ui/hooks/useExportCompletion.test.js +190 -0
- package/dist/src/ui/hooks/useExportCompletion.test.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionUpdates.d.ts +71 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js +229 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js +455 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionsManagerDialog.d.ts +12 -0
- package/dist/src/ui/hooks/useExtensionsManagerDialog.js +21 -0
- package/dist/src/ui/hooks/useExtensionsManagerDialog.js.map +1 -0
- package/dist/src/ui/hooks/useFeedbackDialog.d.ts +18 -0
- package/dist/src/ui/hooks/useFeedbackDialog.js +130 -0
- package/dist/src/ui/hooks/useFeedbackDialog.js.map +1 -0
- package/dist/src/ui/hooks/useFocus.d.ts +10 -0
- package/dist/src/ui/hooks/useFocus.js +51 -0
- package/dist/src/ui/hooks/useFocus.js.map +1 -0
- package/dist/src/ui/hooks/useFolderTrust.d.ts +13 -0
- package/dist/src/ui/hooks/useFolderTrust.js +60 -0
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -0
- package/dist/src/ui/hooks/useFollowupSuggestions.d.ts +53 -0
- package/dist/src/ui/hooks/useFollowupSuggestions.js +89 -0
- package/dist/src/ui/hooks/useFollowupSuggestions.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.d.ts +76 -0
- package/dist/src/ui/hooks/useGeminiStream.js +1899 -0
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -0
- package/dist/src/ui/hooks/useGitBranchName.d.ts +6 -0
- package/dist/src/ui/hooks/useGitBranchName.js +61 -0
- package/dist/src/ui/hooks/useGitBranchName.js.map +1 -0
- package/dist/src/ui/hooks/useGitBranchName.test.d.ts +6 -0
- package/dist/src/ui/hooks/useGitBranchName.test.js +192 -0
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -0
- package/dist/src/ui/hooks/useHistoryManager.d.ts +24 -0
- package/dist/src/ui/hooks/useHistoryManager.js +183 -0
- package/dist/src/ui/hooks/useHistoryManager.js.map +1 -0
- package/dist/src/ui/hooks/useHistoryManager.test.d.ts +6 -0
- package/dist/src/ui/hooks/useHistoryManager.test.js +495 -0
- package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -0
- package/dist/src/ui/hooks/useHooksDialog.d.ts +11 -0
- package/dist/src/ui/hooks/useHooksDialog.js +21 -0
- package/dist/src/ui/hooks/useHooksDialog.js.map +1 -0
- package/dist/src/ui/hooks/useIdeTrustListener.d.ts +16 -0
- package/dist/src/ui/hooks/useIdeTrustListener.js +65 -0
- package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -0
- package/dist/src/ui/hooks/useIdeTrustListener.test.d.ts +6 -0
- package/dist/src/ui/hooks/useIdeTrustListener.test.js +183 -0
- package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +1 -0
- package/dist/src/ui/hooks/useInitializationAuthError.d.ts +22 -0
- package/dist/src/ui/hooks/useInitializationAuthError.js +40 -0
- package/dist/src/ui/hooks/useInitializationAuthError.js.map +1 -0
- package/dist/src/ui/hooks/useInputHistory.d.ts +20 -0
- package/dist/src/ui/hooks/useInputHistory.js +85 -0
- package/dist/src/ui/hooks/useInputHistory.js.map +1 -0
- package/dist/src/ui/hooks/useInputHistory.test.d.ts +6 -0
- package/dist/src/ui/hooks/useInputHistory.test.js +207 -0
- package/dist/src/ui/hooks/useInputHistory.test.js.map +1 -0
- package/dist/src/ui/hooks/useInputHistoryStore.d.ts +19 -0
- package/dist/src/ui/hooks/useInputHistoryStore.js +83 -0
- package/dist/src/ui/hooks/useInputHistoryStore.js.map +1 -0
- package/dist/src/ui/hooks/useInputHistoryStore.test.d.ts +6 -0
- package/dist/src/ui/hooks/useInputHistoryStore.test.js +231 -0
- package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -0
- package/dist/src/ui/hooks/useKeypress.d.ts +17 -0
- package/dist/src/ui/hooks/useKeypress.js +27 -0
- package/dist/src/ui/hooks/useKeypress.js.map +1 -0
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.d.ts +15 -0
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +20 -0
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -0
- package/dist/src/ui/hooks/useLaunchEditor.d.ts +5 -0
- package/dist/src/ui/hooks/useLaunchEditor.js +75 -0
- package/dist/src/ui/hooks/useLaunchEditor.js.map +1 -0
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +11 -0
- package/dist/src/ui/hooks/useLoadingIndicator.js +50 -0
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -0
- package/dist/src/ui/hooks/useLoadingIndicator.test.d.ts +6 -0
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +172 -0
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -0
- package/dist/src/ui/hooks/useLogger.d.ts +11 -0
- package/dist/src/ui/hooks/useLogger.js +32 -0
- package/dist/src/ui/hooks/useLogger.js.map +1 -0
- package/dist/src/ui/hooks/useMCPHealth.d.ts +16 -0
- package/dist/src/ui/hooks/useMCPHealth.js +56 -0
- package/dist/src/ui/hooks/useMCPHealth.js.map +1 -0
- package/dist/src/ui/hooks/useMcpDialog.d.ts +11 -0
- package/dist/src/ui/hooks/useMcpDialog.js +21 -0
- package/dist/src/ui/hooks/useMcpDialog.js.map +1 -0
- package/dist/src/ui/hooks/useMemoryDialog.d.ts +11 -0
- package/dist/src/ui/hooks/useMemoryDialog.js +21 -0
- package/dist/src/ui/hooks/useMemoryDialog.js.map +1 -0
- package/dist/src/ui/hooks/useMemoryMonitor.d.ts +17 -0
- package/dist/src/ui/hooks/useMemoryMonitor.js +83 -0
- package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.js +153 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
- package/dist/src/ui/hooks/useMessageQueue.d.ts +18 -0
- package/dist/src/ui/hooks/useMessageQueue.js +67 -0
- package/dist/src/ui/hooks/useMessageQueue.js.map +1 -0
- package/dist/src/ui/hooks/useMessageQueue.test.d.ts +6 -0
- package/dist/src/ui/hooks/useMessageQueue.test.js +219 -0
- package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -0
- package/dist/src/ui/hooks/useModelCommand.d.ts +15 -0
- package/dist/src/ui/hooks/useModelCommand.js +25 -0
- package/dist/src/ui/hooks/useModelCommand.js.map +1 -0
- package/dist/src/ui/hooks/useModelCommand.test.d.ts +6 -0
- package/dist/src/ui/hooks/useModelCommand.test.js +35 -0
- package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -0
- package/dist/src/ui/hooks/useMouseEvents.d.ts +44 -0
- package/dist/src/ui/hooks/useMouseEvents.js +85 -0
- package/dist/src/ui/hooks/useMouseEvents.js.map +1 -0
- package/dist/src/ui/hooks/usePhraseCycler.d.ts +14 -0
- package/dist/src/ui/hooks/usePhraseCycler.js +70 -0
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -0
- package/dist/src/ui/hooks/usePreferredEditor.d.ts +7 -0
- package/dist/src/ui/hooks/usePreferredEditor.js +25 -0
- package/dist/src/ui/hooks/usePreferredEditor.js.map +1 -0
- package/dist/src/ui/hooks/useProviderUpdates.d.ts +33 -0
- package/dist/src/ui/hooks/useProviderUpdates.js +215 -0
- package/dist/src/ui/hooks/useProviderUpdates.js.map +1 -0
- package/dist/src/ui/hooks/useProviderUpdates.test.d.ts +6 -0
- package/dist/src/ui/hooks/useProviderUpdates.test.js +293 -0
- package/dist/src/ui/hooks/useProviderUpdates.test.js.map +1 -0
- package/dist/src/ui/hooks/useQwenAuth.d.ts +20 -0
- package/dist/src/ui/hooks/useQwenAuth.js +74 -0
- package/dist/src/ui/hooks/useQwenAuth.js.map +1 -0
- package/dist/src/ui/hooks/useQwenAuth.test.d.ts +6 -0
- package/dist/src/ui/hooks/useQwenAuth.test.js +266 -0
- package/dist/src/ui/hooks/useQwenAuth.test.js.map +1 -0
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +33 -0
- package/dist/src/ui/hooks/useReactToolScheduler.js +236 -0
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -0
- package/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +6 -0
- package/dist/src/ui/hooks/useRefreshMemoryCommand.js +7 -0
- package/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +1 -0
- package/dist/src/ui/hooks/useResumeCommand.d.ts +31 -0
- package/dist/src/ui/hooks/useResumeCommand.js +114 -0
- package/dist/src/ui/hooks/useResumeCommand.js.map +1 -0
- package/dist/src/ui/hooks/useResumeCommand.test.d.ts +6 -0
- package/dist/src/ui/hooks/useResumeCommand.test.js +349 -0
- package/dist/src/ui/hooks/useResumeCommand.test.js.map +1 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.js +103 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +6 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +163 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -0
- package/dist/src/ui/hooks/useSelectionList.d.ts +41 -0
- package/dist/src/ui/hooks/useSelectionList.js +276 -0
- package/dist/src/ui/hooks/useSelectionList.js.map +1 -0
- package/dist/src/ui/hooks/useSelectionList.test.d.ts +6 -0
- package/dist/src/ui/hooks/useSelectionList.test.js +782 -0
- package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
- package/dist/src/ui/hooks/useSessionPicker.d.ts +95 -0
- package/dist/src/ui/hooks/useSessionPicker.js +383 -0
- package/dist/src/ui/hooks/useSessionPicker.js.map +1 -0
- package/dist/src/ui/hooks/useSessionPicker.test.d.ts +6 -0
- package/dist/src/ui/hooks/useSessionPicker.test.js +94 -0
- package/dist/src/ui/hooks/useSessionPicker.test.js.map +1 -0
- package/dist/src/ui/hooks/useSessionSearchInput.d.ts +69 -0
- package/dist/src/ui/hooks/useSessionSearchInput.js +124 -0
- package/dist/src/ui/hooks/useSessionSearchInput.js.map +1 -0
- package/dist/src/ui/hooks/useSessionSearchInput.test.d.ts +6 -0
- package/dist/src/ui/hooks/useSessionSearchInput.test.js +342 -0
- package/dist/src/ui/hooks/useSessionSearchInput.test.js.map +1 -0
- package/dist/src/ui/hooks/useSettingsCommand.d.ts +10 -0
- package/dist/src/ui/hooks/useSettingsCommand.js +21 -0
- package/dist/src/ui/hooks/useSettingsCommand.js.map +1 -0
- package/dist/src/ui/hooks/useShellHistory.d.ts +14 -0
- package/dist/src/ui/hooks/useShellHistory.js +112 -0
- package/dist/src/ui/hooks/useShellHistory.js.map +1 -0
- package/dist/src/ui/hooks/useShellHistory.test.d.ts +6 -0
- package/dist/src/ui/hooks/useShellHistory.test.js +193 -0
- package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -0
- package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +9 -0
- package/dist/src/ui/hooks/useShowMemoryCommand.js +55 -0
- package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -0
- package/dist/src/ui/hooks/useSkillsManagerDialog.d.ts +11 -0
- package/dist/src/ui/hooks/useSkillsManagerDialog.js +21 -0
- package/dist/src/ui/hooks/useSkillsManagerDialog.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.d.ts +27 -0
- package/dist/src/ui/hooks/useSlashCompletion.integration.test.d.ts +6 -0
- package/dist/src/ui/hooks/useSlashCompletion.integration.test.js +84 -0
- package/dist/src/ui/hooks/useSlashCompletion.integration.test.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.js +490 -0
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +9 -0
- package/dist/src/ui/hooks/useSlashCompletion.test.js +805 -0
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -0
- package/dist/src/ui/hooks/useStateAndRef.d.ts +7 -0
- package/dist/src/ui/hooks/useStateAndRef.js +26 -0
- package/dist/src/ui/hooks/useStateAndRef.js.map +1 -0
- package/dist/src/ui/hooks/useStatsDialog.d.ts +11 -0
- package/dist/src/ui/hooks/useStatsDialog.js +13 -0
- package/dist/src/ui/hooks/useStatsDialog.js.map +1 -0
- package/dist/src/ui/hooks/useStatusLine.d.ts +84 -0
- package/dist/src/ui/hooks/useStatusLine.js +528 -0
- package/dist/src/ui/hooks/useStatusLine.js.map +1 -0
- package/dist/src/ui/hooks/useStatusLine.test.d.ts +6 -0
- package/dist/src/ui/hooks/useStatusLine.test.js +1039 -0
- package/dist/src/ui/hooks/useStatusLine.test.js.map +1 -0
- package/dist/src/ui/hooks/useSubagentCreateDialog.d.ts +10 -0
- package/dist/src/ui/hooks/useSubagentCreateDialog.js +21 -0
- package/dist/src/ui/hooks/useSubagentCreateDialog.js.map +1 -0
- package/dist/src/ui/hooks/useTerminalNotification.d.ts +32 -0
- package/dist/src/ui/hooks/useTerminalNotification.js +45 -0
- package/dist/src/ui/hooks/useTerminalNotification.js.map +1 -0
- package/dist/src/ui/hooks/useTerminalNotification.test.d.ts +6 -0
- package/dist/src/ui/hooks/useTerminalNotification.test.js +69 -0
- package/dist/src/ui/hooks/useTerminalNotification.test.js.map +1 -0
- package/dist/src/ui/hooks/useTerminalProgress.d.ts +12 -0
- package/dist/src/ui/hooks/useTerminalProgress.js +76 -0
- package/dist/src/ui/hooks/useTerminalProgress.js.map +1 -0
- package/dist/src/ui/hooks/useTerminalSize.d.ts +13 -0
- package/dist/src/ui/hooks/useTerminalSize.js +30 -0
- package/dist/src/ui/hooks/useTerminalSize.js.map +1 -0
- package/dist/src/ui/hooks/useThemeCommand.d.ts +15 -0
- package/dist/src/ui/hooks/useThemeCommand.js +85 -0
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -0
- package/dist/src/ui/hooks/useThemeCommand.test.d.ts +6 -0
- package/dist/src/ui/hooks/useThemeCommand.test.js +42 -0
- package/dist/src/ui/hooks/useThemeCommand.test.js.map +1 -0
- package/dist/src/ui/hooks/useTimer.d.ts +12 -0
- package/dist/src/ui/hooks/useTimer.js +58 -0
- package/dist/src/ui/hooks/useTimer.js.map +1 -0
- package/dist/src/ui/hooks/useTimer.test.d.ts +6 -0
- package/dist/src/ui/hooks/useTimer.test.js +90 -0
- package/dist/src/ui/hooks/useTimer.test.js.map +1 -0
- package/dist/src/ui/hooks/useTomlMigration.d.ts +1 -0
- package/dist/src/ui/hooks/useTomlMigration.js +2 -0
- package/dist/src/ui/hooks/useTomlMigration.js.map +1 -0
- package/dist/src/ui/hooks/useToolScheduler.test.d.ts +6 -0
- package/dist/src/ui/hooks/useToolScheduler.test.js +624 -0
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -0
- package/dist/src/ui/hooks/useTrustModify.d.ts +17 -0
- package/dist/src/ui/hooks/useTrustModify.js +78 -0
- package/dist/src/ui/hooks/useTrustModify.js.map +1 -0
- package/dist/src/ui/hooks/useTrustModify.test.d.ts +6 -0
- package/dist/src/ui/hooks/useTrustModify.test.js +182 -0
- package/dist/src/ui/hooks/useTrustModify.test.js.map +1 -0
- package/dist/src/ui/hooks/useTurnDiffs.d.ts +34 -0
- package/dist/src/ui/hooks/useTurnDiffs.js +130 -0
- package/dist/src/ui/hooks/useTurnDiffs.js.map +1 -0
- package/dist/src/ui/hooks/useTurnDiffs.test.d.ts +6 -0
- package/dist/src/ui/hooks/useTurnDiffs.test.js +164 -0
- package/dist/src/ui/hooks/useTurnDiffs.test.js.map +1 -0
- package/dist/src/ui/hooks/useWelcomeBack.d.ts +23 -0
- package/dist/src/ui/hooks/useWelcomeBack.js +99 -0
- package/dist/src/ui/hooks/useWelcomeBack.js.map +1 -0
- package/dist/src/ui/hooks/useWelcomeBack.test.d.ts +6 -0
- package/dist/src/ui/hooks/useWelcomeBack.test.js +94 -0
- package/dist/src/ui/hooks/useWelcomeBack.test.js.map +1 -0
- package/dist/src/ui/hooks/useWorktreeSession.d.ts +26 -0
- package/dist/src/ui/hooks/useWorktreeSession.js +92 -0
- package/dist/src/ui/hooks/useWorktreeSession.js.map +1 -0
- package/dist/src/ui/hooks/useWorktreeSession.test.d.ts +6 -0
- package/dist/src/ui/hooks/useWorktreeSession.test.js +84 -0
- package/dist/src/ui/hooks/useWorktreeSession.test.js.map +1 -0
- package/dist/src/ui/hooks/vim.d.ts +13 -0
- package/dist/src/ui/hooks/vim.js +1637 -0
- package/dist/src/ui/hooks/vim.js.map +1 -0
- package/dist/src/ui/hooks/vim.test.d.ts +6 -0
- package/dist/src/ui/hooks/vim.test.js +1975 -0
- package/dist/src/ui/hooks/vim.test.js.map +1 -0
- package/dist/src/ui/keyMatchers.d.ts +27 -0
- package/dist/src/ui/keyMatchers.js +71 -0
- package/dist/src/ui/keyMatchers.js.map +1 -0
- package/dist/src/ui/keyMatchers.test.d.ts +6 -0
- package/dist/src/ui/keyMatchers.test.js +421 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -0
- package/dist/src/ui/layouts/DefaultAppLayout.d.ts +7 -0
- package/dist/src/ui/layouts/DefaultAppLayout.js +49 -0
- package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -0
- package/dist/src/ui/layouts/DefaultAppLayout.test.d.ts +6 -0
- package/dist/src/ui/layouts/DefaultAppLayout.test.js +185 -0
- package/dist/src/ui/layouts/DefaultAppLayout.test.js.map +1 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.d.ts +7 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.js +27 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.js.map +1 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.test.d.ts +6 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.test.js +135 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.test.js.map +1 -0
- package/dist/src/ui/models/availableModels.d.ts +30 -0
- package/dist/src/ui/models/availableModels.js +103 -0
- package/dist/src/ui/models/availableModels.js.map +1 -0
- package/dist/src/ui/models/availableModels.test.d.ts +6 -0
- package/dist/src/ui/models/availableModels.test.js +142 -0
- package/dist/src/ui/models/availableModels.test.js.map +1 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js +33 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
- package/dist/src/ui/semantic-colors.d.ts +7 -0
- package/dist/src/ui/semantic-colors.js +24 -0
- package/dist/src/ui/semantic-colors.js.map +1 -0
- package/dist/src/ui/state/extensions.d.ts +43 -0
- package/dist/src/ui/state/extensions.js +63 -0
- package/dist/src/ui/state/extensions.js.map +1 -0
- package/dist/src/ui/statusLinePresets.d.ts +79 -0
- package/dist/src/ui/statusLinePresets.js +310 -0
- package/dist/src/ui/statusLinePresets.js.map +1 -0
- package/dist/src/ui/statusLinePresets.test.d.ts +6 -0
- package/dist/src/ui/statusLinePresets.test.js +221 -0
- package/dist/src/ui/statusLinePresets.test.js.map +1 -0
- package/dist/src/ui/textConstants.d.ts +9 -0
- package/dist/src/ui/textConstants.js +10 -0
- package/dist/src/ui/textConstants.js.map +1 -0
- package/dist/src/ui/themes/ansi-light.d.ts +7 -0
- package/dist/src/ui/themes/ansi-light.js +144 -0
- package/dist/src/ui/themes/ansi-light.js.map +1 -0
- package/dist/src/ui/themes/ansi.d.ts +7 -0
- package/dist/src/ui/themes/ansi.js +154 -0
- package/dist/src/ui/themes/ansi.js.map +1 -0
- package/dist/src/ui/themes/atom-one-dark.d.ts +7 -0
- package/dist/src/ui/themes/atom-one-dark.js +140 -0
- package/dist/src/ui/themes/atom-one-dark.js.map +1 -0
- package/dist/src/ui/themes/ayu-light.d.ts +7 -0
- package/dist/src/ui/themes/ayu-light.js +132 -0
- package/dist/src/ui/themes/ayu-light.js.map +1 -0
- package/dist/src/ui/themes/ayu.d.ts +7 -0
- package/dist/src/ui/themes/ayu.js +106 -0
- package/dist/src/ui/themes/ayu.js.map +1 -0
- package/dist/src/ui/themes/color-utils.d.ts +21 -0
- package/dist/src/ui/themes/color-utils.js +223 -0
- package/dist/src/ui/themes/color-utils.js.map +1 -0
- package/dist/src/ui/themes/color-utils.test.d.ts +6 -0
- package/dist/src/ui/themes/color-utils.test.js +197 -0
- package/dist/src/ui/themes/color-utils.test.js.map +1 -0
- package/dist/src/ui/themes/default-light.d.ts +7 -0
- package/dist/src/ui/themes/default-light.js +100 -0
- package/dist/src/ui/themes/default-light.js.map +1 -0
- package/dist/src/ui/themes/default.d.ts +7 -0
- package/dist/src/ui/themes/default.js +143 -0
- package/dist/src/ui/themes/default.js.map +1 -0
- package/dist/src/ui/themes/detect-terminal-theme.d.ts +75 -0
- package/dist/src/ui/themes/detect-terminal-theme.js +228 -0
- package/dist/src/ui/themes/detect-terminal-theme.js.map +1 -0
- package/dist/src/ui/themes/detect-terminal-theme.test.d.ts +6 -0
- package/dist/src/ui/themes/detect-terminal-theme.test.js +269 -0
- package/dist/src/ui/themes/detect-terminal-theme.test.js.map +1 -0
- package/dist/src/ui/themes/dracula.d.ts +7 -0
- package/dist/src/ui/themes/dracula.js +117 -0
- package/dist/src/ui/themes/dracula.js.map +1 -0
- package/dist/src/ui/themes/github-dark.d.ts +7 -0
- package/dist/src/ui/themes/github-dark.js +140 -0
- package/dist/src/ui/themes/github-dark.js.map +1 -0
- package/dist/src/ui/themes/github-light.d.ts +7 -0
- package/dist/src/ui/themes/github-light.js +142 -0
- package/dist/src/ui/themes/github-light.js.map +1 -0
- package/dist/src/ui/themes/googlecode.d.ts +7 -0
- package/dist/src/ui/themes/googlecode.js +139 -0
- package/dist/src/ui/themes/googlecode.js.map +1 -0
- package/dist/src/ui/themes/no-color.d.ts +7 -0
- package/dist/src/ui/themes/no-color.js +120 -0
- package/dist/src/ui/themes/no-color.js.map +1 -0
- package/dist/src/ui/themes/qwen-dark.d.ts +7 -0
- package/dist/src/ui/themes/qwen-dark.js +107 -0
- package/dist/src/ui/themes/qwen-dark.js.map +1 -0
- package/dist/src/ui/themes/qwen-light.d.ts +7 -0
- package/dist/src/ui/themes/qwen-light.js +133 -0
- package/dist/src/ui/themes/qwen-light.js.map +1 -0
- package/dist/src/ui/themes/semantic-tokens.d.ts +40 -0
- package/dist/src/ui/themes/semantic-tokens.js +103 -0
- package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
- package/dist/src/ui/themes/shades-of-purple.d.ts +11 -0
- package/dist/src/ui/themes/shades-of-purple.js +306 -0
- package/dist/src/ui/themes/shades-of-purple.js.map +1 -0
- package/dist/src/ui/themes/theme-manager.d.ts +91 -0
- package/dist/src/ui/themes/theme-manager.js +311 -0
- package/dist/src/ui/themes/theme-manager.js.map +1 -0
- package/dist/src/ui/themes/theme-manager.test.d.ts +6 -0
- package/dist/src/ui/themes/theme-manager.test.js +188 -0
- package/dist/src/ui/themes/theme-manager.test.js.map +1 -0
- package/dist/src/ui/themes/theme.d.ts +137 -0
- package/dist/src/ui/themes/theme.js +393 -0
- package/dist/src/ui/themes/theme.js.map +1 -0
- package/dist/src/ui/themes/xcode.d.ts +7 -0
- package/dist/src/ui/themes/xcode.js +147 -0
- package/dist/src/ui/themes/xcode.js.map +1 -0
- package/dist/src/ui/types.d.ts +620 -0
- package/dist/src/ui/types.js +77 -0
- package/dist/src/ui/types.js.map +1 -0
- package/dist/src/ui/utils/CodeColorizer.d.ts +18 -0
- package/dist/src/ui/utils/CodeColorizer.js +155 -0
- package/dist/src/ui/utils/CodeColorizer.js.map +1 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +18 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +173 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.test.d.ts +6 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.test.js +303 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.test.js.map +1 -0
- package/dist/src/ui/utils/MarkdownDisplay.d.ts +25 -0
- package/dist/src/ui/utils/MarkdownDisplay.js +420 -0
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +6 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js +702 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
- package/dist/src/ui/utils/MermaidDiagram.d.ts +15 -0
- package/dist/src/ui/utils/MermaidDiagram.js +88 -0
- package/dist/src/ui/utils/MermaidDiagram.js.map +1 -0
- package/dist/src/ui/utils/MermaidDiagram.test.d.ts +6 -0
- package/dist/src/ui/utils/MermaidDiagram.test.js +90 -0
- package/dist/src/ui/utils/MermaidDiagram.test.js.map +1 -0
- package/dist/src/ui/utils/TableRenderer.d.ts +30 -0
- package/dist/src/ui/utils/TableRenderer.js +563 -0
- package/dist/src/ui/utils/TableRenderer.js.map +1 -0
- package/dist/src/ui/utils/TableRenderer.test.d.ts +6 -0
- package/dist/src/ui/utils/TableRenderer.test.js +568 -0
- package/dist/src/ui/utils/TableRenderer.test.js.map +1 -0
- package/dist/src/ui/utils/approvalModeDisplay.d.ts +8 -0
- package/dist/src/ui/utils/approvalModeDisplay.js +34 -0
- package/dist/src/ui/utils/approvalModeDisplay.js.map +1 -0
- package/dist/src/ui/utils/approvalModeDisplay.test.d.ts +6 -0
- package/dist/src/ui/utils/approvalModeDisplay.test.js +35 -0
- package/dist/src/ui/utils/approvalModeDisplay.test.js.map +1 -0
- package/dist/src/ui/utils/asciiCharts.d.ts +44 -0
- package/dist/src/ui/utils/asciiCharts.js +307 -0
- package/dist/src/ui/utils/asciiCharts.js.map +1 -0
- package/dist/src/ui/utils/asciiCharts.test.d.ts +6 -0
- package/dist/src/ui/utils/asciiCharts.test.js +208 -0
- package/dist/src/ui/utils/asciiCharts.test.js.map +1 -0
- package/dist/src/ui/utils/backgroundWorkUtils.d.ts +8 -0
- package/dist/src/ui/utils/backgroundWorkUtils.js +16 -0
- package/dist/src/ui/utils/backgroundWorkUtils.js.map +1 -0
- package/dist/src/ui/utils/backgroundWorkUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/backgroundWorkUtils.test.js +85 -0
- package/dist/src/ui/utils/backgroundWorkUtils.test.js.map +1 -0
- package/dist/src/ui/utils/clipboardUtils.d.ts +28 -0
- package/dist/src/ui/utils/clipboardUtils.js +522 -0
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -0
- package/dist/src/ui/utils/clipboardUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/clipboardUtils.test.js +465 -0
- package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -0
- package/dist/src/ui/utils/commandUtils.d.ts +112 -0
- package/dist/src/ui/utils/commandUtils.js +285 -0
- package/dist/src/ui/utils/commandUtils.js.map +1 -0
- package/dist/src/ui/utils/commandUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/commandUtils.test.js +560 -0
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -0
- package/dist/src/ui/utils/computeStats.d.ts +10 -0
- package/dist/src/ui/utils/computeStats.js +57 -0
- package/dist/src/ui/utils/computeStats.js.map +1 -0
- package/dist/src/ui/utils/customBanner.d.ts +35 -0
- package/dist/src/ui/utils/customBanner.js +361 -0
- package/dist/src/ui/utils/customBanner.js.map +1 -0
- package/dist/src/ui/utils/customBanner.test.d.ts +6 -0
- package/dist/src/ui/utils/customBanner.test.js +439 -0
- package/dist/src/ui/utils/customBanner.test.js.map +1 -0
- package/dist/src/ui/utils/displayUtils.d.ts +25 -0
- package/dist/src/ui/utils/displayUtils.js +46 -0
- package/dist/src/ui/utils/displayUtils.js.map +1 -0
- package/dist/src/ui/utils/displayUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/displayUtils.test.js +61 -0
- package/dist/src/ui/utils/displayUtils.test.js.map +1 -0
- package/dist/src/ui/utils/export/collect.d.ts +16 -0
- package/dist/src/ui/utils/export/collect.js +509 -0
- package/dist/src/ui/utils/export/collect.js.map +1 -0
- package/dist/src/ui/utils/export/collect.test.d.ts +6 -0
- package/dist/src/ui/utils/export/collect.test.js +80 -0
- package/dist/src/ui/utils/export/collect.test.js.map +1 -0
- package/dist/src/ui/utils/export/formatters/html.d.ts +23 -0
- package/dist/src/ui/utils/export/formatters/html.js +65 -0
- package/dist/src/ui/utils/export/formatters/html.js.map +1 -0
- package/dist/src/ui/utils/export/formatters/json.d.ts +11 -0
- package/dist/src/ui/utils/export/formatters/json.js +13 -0
- package/dist/src/ui/utils/export/formatters/json.js.map +1 -0
- package/dist/src/ui/utils/export/formatters/jsonl.d.ts +11 -0
- package/dist/src/ui/utils/export/formatters/jsonl.js +69 -0
- package/dist/src/ui/utils/export/formatters/jsonl.js.map +1 -0
- package/dist/src/ui/utils/export/formatters/markdown.d.ts +10 -0
- package/dist/src/ui/utils/export/formatters/markdown.js +254 -0
- package/dist/src/ui/utils/export/formatters/markdown.js.map +1 -0
- package/dist/src/ui/utils/export/index.d.ts +13 -0
- package/dist/src/ui/utils/export/index.js +13 -0
- package/dist/src/ui/utils/export/index.js.map +1 -0
- package/dist/src/ui/utils/export/normalize.d.ts +12 -0
- package/dist/src/ui/utils/export/normalize.js +279 -0
- package/dist/src/ui/utils/export/normalize.js.map +1 -0
- package/dist/src/ui/utils/export/normalize.test.d.ts +6 -0
- package/dist/src/ui/utils/export/normalize.test.js +62 -0
- package/dist/src/ui/utils/export/normalize.test.js.map +1 -0
- package/dist/src/ui/utils/export/types.d.ts +93 -0
- package/dist/src/ui/utils/export/types.js +7 -0
- package/dist/src/ui/utils/export/types.js.map +1 -0
- package/dist/src/ui/utils/export/utils.d.ts +9 -0
- package/dist/src/ui/utils/export/utils.js +13 -0
- package/dist/src/ui/utils/export/utils.js.map +1 -0
- package/dist/src/ui/utils/formatters.d.ts +28 -0
- package/dist/src/ui/utils/formatters.js +100 -0
- package/dist/src/ui/utils/formatters.js.map +1 -0
- package/dist/src/ui/utils/formatters.test.d.ts +6 -0
- package/dist/src/ui/utils/formatters.test.js +141 -0
- package/dist/src/ui/utils/formatters.test.js.map +1 -0
- package/dist/src/ui/utils/gradientUtils.d.ts +6 -0
- package/dist/src/ui/utils/gradientUtils.js +11 -0
- package/dist/src/ui/utils/gradientUtils.js.map +1 -0
- package/dist/src/ui/utils/highlight.d.ts +12 -0
- package/dist/src/ui/utils/highlight.js +90 -0
- package/dist/src/ui/utils/highlight.js.map +1 -0
- package/dist/src/ui/utils/highlight.test.d.ts +6 -0
- package/dist/src/ui/utils/highlight.test.js +173 -0
- package/dist/src/ui/utils/highlight.test.js.map +1 -0
- package/dist/src/ui/utils/historyMapping.d.ts +44 -0
- package/dist/src/ui/utils/historyMapping.js +110 -0
- package/dist/src/ui/utils/historyMapping.js.map +1 -0
- package/dist/src/ui/utils/historyMapping.test.d.ts +6 -0
- package/dist/src/ui/utils/historyMapping.test.js +376 -0
- package/dist/src/ui/utils/historyMapping.test.js.map +1 -0
- package/dist/src/ui/utils/historyUtils.d.ts +34 -0
- package/dist/src/ui/utils/historyUtils.js +117 -0
- package/dist/src/ui/utils/historyUtils.js.map +1 -0
- package/dist/src/ui/utils/historyUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/historyUtils.test.js +107 -0
- package/dist/src/ui/utils/historyUtils.test.js.map +1 -0
- package/dist/src/ui/utils/isNarrowWidth.d.ts +6 -0
- package/dist/src/ui/utils/isNarrowWidth.js +9 -0
- package/dist/src/ui/utils/isNarrowWidth.js.map +1 -0
- package/dist/src/ui/utils/kittyProtocolDetector.d.ts +19 -0
- package/dist/src/ui/utils/kittyProtocolDetector.js +115 -0
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -0
- package/dist/src/ui/utils/latexRenderer.d.ts +6 -0
- package/dist/src/ui/utils/latexRenderer.js +187 -0
- package/dist/src/ui/utils/latexRenderer.js.map +1 -0
- package/dist/src/ui/utils/latexRenderer.test.d.ts +6 -0
- package/dist/src/ui/utils/latexRenderer.test.js +27 -0
- package/dist/src/ui/utils/latexRenderer.test.js.map +1 -0
- package/dist/src/ui/utils/layoutUtils.d.ts +32 -0
- package/dist/src/ui/utils/layoutUtils.js +46 -0
- package/dist/src/ui/utils/layoutUtils.js.map +1 -0
- package/dist/src/ui/utils/layoutUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/layoutUtils.test.js +30 -0
- package/dist/src/ui/utils/layoutUtils.test.js.map +1 -0
- package/dist/src/ui/utils/lowlightLoader.d.ts +43 -0
- package/dist/src/ui/utils/lowlightLoader.js +88 -0
- package/dist/src/ui/utils/lowlightLoader.js.map +1 -0
- package/dist/src/ui/utils/lowlightLoader.test.d.ts +6 -0
- package/dist/src/ui/utils/lowlightLoader.test.js +120 -0
- package/dist/src/ui/utils/lowlightLoader.test.js.map +1 -0
- package/dist/src/ui/utils/markdownUtilities.d.ts +6 -0
- package/dist/src/ui/utils/markdownUtilities.js +110 -0
- package/dist/src/ui/utils/markdownUtilities.js.map +1 -0
- package/dist/src/ui/utils/markdownUtilities.test.d.ts +6 -0
- package/dist/src/ui/utils/markdownUtilities.test.js +42 -0
- package/dist/src/ui/utils/markdownUtilities.test.js.map +1 -0
- package/dist/src/ui/utils/mergeCompactToolGroups.d.ts +62 -0
- package/dist/src/ui/utils/mergeCompactToolGroups.js +212 -0
- package/dist/src/ui/utils/mergeCompactToolGroups.js.map +1 -0
- package/dist/src/ui/utils/mergeCompactToolGroups.test.d.ts +6 -0
- package/dist/src/ui/utils/mergeCompactToolGroups.test.js +473 -0
- package/dist/src/ui/utils/mergeCompactToolGroups.test.js.map +1 -0
- package/dist/src/ui/utils/mermaidImageRenderer.d.ts +54 -0
- package/dist/src/ui/utils/mermaidImageRenderer.js +955 -0
- package/dist/src/ui/utils/mermaidImageRenderer.js.map +1 -0
- package/dist/src/ui/utils/mermaidImageRenderer.test.d.ts +6 -0
- package/dist/src/ui/utils/mermaidImageRenderer.test.js +528 -0
- package/dist/src/ui/utils/mermaidImageRenderer.test.js.map +1 -0
- package/dist/src/ui/utils/mermaidVisualRenderer.d.ts +12 -0
- package/dist/src/ui/utils/mermaidVisualRenderer.js +1097 -0
- package/dist/src/ui/utils/mermaidVisualRenderer.js.map +1 -0
- package/dist/src/ui/utils/mermaidVisualRenderer.test.d.ts +6 -0
- package/dist/src/ui/utils/mermaidVisualRenderer.test.js +69 -0
- package/dist/src/ui/utils/mermaidVisualRenderer.test.js.map +1 -0
- package/dist/src/ui/utils/modelsBySource.d.ts +47 -0
- package/dist/src/ui/utils/modelsBySource.js +89 -0
- package/dist/src/ui/utils/modelsBySource.js.map +1 -0
- package/dist/src/ui/utils/modelsBySource.test.d.ts +6 -0
- package/dist/src/ui/utils/modelsBySource.test.js +111 -0
- package/dist/src/ui/utils/modelsBySource.test.js.map +1 -0
- package/dist/src/ui/utils/mouse.d.ts +39 -0
- package/dist/src/ui/utils/mouse.js +169 -0
- package/dist/src/ui/utils/mouse.js.map +1 -0
- package/dist/src/ui/utils/mouse.test.d.ts +6 -0
- package/dist/src/ui/utils/mouse.test.js +117 -0
- package/dist/src/ui/utils/mouse.test.js.map +1 -0
- package/dist/src/ui/utils/osc8.d.ts +124 -0
- package/dist/src/ui/utils/osc8.js +463 -0
- package/dist/src/ui/utils/osc8.js.map +1 -0
- package/dist/src/ui/utils/osc8.test.d.ts +6 -0
- package/dist/src/ui/utils/osc8.test.js +494 -0
- package/dist/src/ui/utils/osc8.test.js.map +1 -0
- package/dist/src/ui/utils/platformConstants.d.ts +75 -0
- package/dist/src/ui/utils/platformConstants.js +78 -0
- package/dist/src/ui/utils/platformConstants.js.map +1 -0
- package/dist/src/ui/utils/restoreGoal.d.ts +47 -0
- package/dist/src/ui/utils/restoreGoal.js +124 -0
- package/dist/src/ui/utils/restoreGoal.js.map +1 -0
- package/dist/src/ui/utils/restoreGoal.test.d.ts +6 -0
- package/dist/src/ui/utils/restoreGoal.test.js +220 -0
- package/dist/src/ui/utils/restoreGoal.test.js.map +1 -0
- package/dist/src/ui/utils/resumeHistoryUtils.d.ts +22 -0
- package/dist/src/ui/utils/resumeHistoryUtils.js +410 -0
- package/dist/src/ui/utils/resumeHistoryUtils.js.map +1 -0
- package/dist/src/ui/utils/resumeHistoryUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/resumeHistoryUtils.test.js +378 -0
- package/dist/src/ui/utils/resumeHistoryUtils.test.js.map +1 -0
- package/dist/src/ui/utils/sessionPickerUtils.d.ts +35 -0
- package/dist/src/ui/utils/sessionPickerUtils.js +69 -0
- package/dist/src/ui/utils/sessionPickerUtils.js.map +1 -0
- package/dist/src/ui/utils/sessionPickerUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/sessionPickerUtils.test.js +79 -0
- package/dist/src/ui/utils/sessionPickerUtils.test.js.map +1 -0
- package/dist/src/ui/utils/statsDataService.d.ts +49 -0
- package/dist/src/ui/utils/statsDataService.js +221 -0
- package/dist/src/ui/utils/statsDataService.js.map +1 -0
- package/dist/src/ui/utils/statsDataService.test.d.ts +6 -0
- package/dist/src/ui/utils/statsDataService.test.js +406 -0
- package/dist/src/ui/utils/statsDataService.test.js.map +1 -0
- package/dist/src/ui/utils/synchronizedOutput.d.ts +16 -0
- package/dist/src/ui/utils/synchronizedOutput.js +88 -0
- package/dist/src/ui/utils/synchronizedOutput.js.map +1 -0
- package/dist/src/ui/utils/synchronizedOutput.test.d.ts +6 -0
- package/dist/src/ui/utils/synchronizedOutput.test.js +154 -0
- package/dist/src/ui/utils/synchronizedOutput.test.js.map +1 -0
- package/dist/src/ui/utils/terminalRedrawOptimizer.d.ts +21 -0
- package/dist/src/ui/utils/terminalRedrawOptimizer.js +108 -0
- package/dist/src/ui/utils/terminalRedrawOptimizer.js.map +1 -0
- package/dist/src/ui/utils/terminalRedrawOptimizer.test.d.ts +6 -0
- package/dist/src/ui/utils/terminalRedrawOptimizer.test.js +85 -0
- package/dist/src/ui/utils/terminalRedrawOptimizer.test.js.map +1 -0
- package/dist/src/ui/utils/terminalSetup.d.ts +30 -0
- package/dist/src/ui/utils/terminalSetup.js +310 -0
- package/dist/src/ui/utils/terminalSetup.js.map +1 -0
- package/dist/src/ui/utils/textUtils.d.ts +86 -0
- package/dist/src/ui/utils/textUtils.js +360 -0
- package/dist/src/ui/utils/textUtils.js.map +1 -0
- package/dist/src/ui/utils/textUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/textUtils.test.js +269 -0
- package/dist/src/ui/utils/textUtils.test.js.map +1 -0
- package/dist/src/ui/utils/todoSnapshot.d.ts +13 -0
- package/dist/src/ui/utils/todoSnapshot.js +133 -0
- package/dist/src/ui/utils/todoSnapshot.js.map +1 -0
- package/dist/src/ui/utils/todoSnapshot.test.d.ts +6 -0
- package/dist/src/ui/utils/todoSnapshot.test.js +281 -0
- package/dist/src/ui/utils/todoSnapshot.test.js.map +1 -0
- package/dist/src/ui/utils/updateCheck.d.ts +12 -0
- package/dist/src/ui/utils/updateCheck.js +80 -0
- package/dist/src/ui/utils/updateCheck.js.map +1 -0
- package/dist/src/ui/utils/updateCheck.test.d.ts +6 -0
- package/dist/src/ui/utils/updateCheck.test.js +145 -0
- package/dist/src/ui/utils/updateCheck.test.js.map +1 -0
- package/dist/src/utils/acpModelUtils.d.ts +39 -0
- package/dist/src/utils/acpModelUtils.js +61 -0
- package/dist/src/utils/acpModelUtils.js.map +1 -0
- package/dist/src/utils/acpModelUtils.test.d.ts +6 -0
- package/dist/src/utils/acpModelUtils.test.js +31 -0
- package/dist/src/utils/acpModelUtils.test.js.map +1 -0
- package/dist/src/utils/apiPreconnect.d.ts +22 -0
- package/dist/src/utils/apiPreconnect.js +188 -0
- package/dist/src/utils/apiPreconnect.js.map +1 -0
- package/dist/src/utils/apiPreconnect.test.d.ts +6 -0
- package/dist/src/utils/apiPreconnect.test.js +252 -0
- package/dist/src/utils/apiPreconnect.test.js.map +1 -0
- package/dist/src/utils/checks.d.ts +19 -0
- package/dist/src/utils/checks.js +24 -0
- package/dist/src/utils/checks.js.map +1 -0
- package/dist/src/utils/cleanup.d.ts +23 -0
- package/dist/src/utils/cleanup.js +96 -0
- package/dist/src/utils/cleanup.js.map +1 -0
- package/dist/src/utils/commands.d.ts +20 -0
- package/dist/src/utils/commands.js +53 -0
- package/dist/src/utils/commands.js.map +1 -0
- package/dist/src/utils/commands.test.d.ts +6 -0
- package/dist/src/utils/commands.test.js +115 -0
- package/dist/src/utils/commands.test.js.map +1 -0
- package/dist/src/utils/commentJson.d.ts +25 -0
- package/dist/src/utils/commentJson.js +113 -0
- package/dist/src/utils/commentJson.js.map +1 -0
- package/dist/src/utils/commentJson.test.d.ts +6 -0
- package/dist/src/utils/commentJson.test.js +385 -0
- package/dist/src/utils/commentJson.test.js.map +1 -0
- package/dist/src/utils/costCalculator.d.ts +14 -0
- package/dist/src/utils/costCalculator.js +19 -0
- package/dist/src/utils/costCalculator.js.map +1 -0
- package/dist/src/utils/costCalculator.test.d.ts +6 -0
- package/dist/src/utils/costCalculator.test.js +177 -0
- package/dist/src/utils/costCalculator.test.js.map +1 -0
- package/dist/src/utils/cpuProfiler.d.ts +63 -0
- package/dist/src/utils/cpuProfiler.js +341 -0
- package/dist/src/utils/cpuProfiler.js.map +1 -0
- package/dist/src/utils/cpuProfiler.test.d.ts +6 -0
- package/dist/src/utils/cpuProfiler.test.js +293 -0
- package/dist/src/utils/cpuProfiler.test.js.map +1 -0
- package/dist/src/utils/deepMerge.d.ts +9 -0
- package/dist/src/utils/deepMerge.js +58 -0
- package/dist/src/utils/deepMerge.js.map +1 -0
- package/dist/src/utils/deepMerge.test.d.ts +6 -0
- package/dist/src/utils/deepMerge.test.js +143 -0
- package/dist/src/utils/deepMerge.test.js.map +1 -0
- package/dist/src/utils/dialogScopeUtils.d.ts +28 -0
- package/dist/src/utils/dialogScopeUtils.js +51 -0
- package/dist/src/utils/dialogScopeUtils.js.map +1 -0
- package/dist/src/utils/doctorChecks.d.ts +11 -0
- package/dist/src/utils/doctorChecks.js +351 -0
- package/dist/src/utils/doctorChecks.js.map +1 -0
- package/dist/src/utils/doctorChecks.test.d.ts +6 -0
- package/dist/src/utils/doctorChecks.test.js +280 -0
- package/dist/src/utils/doctorChecks.test.js.map +1 -0
- package/dist/src/utils/earlyInputCapture.d.ts +33 -0
- package/dist/src/utils/earlyInputCapture.js +311 -0
- package/dist/src/utils/earlyInputCapture.js.map +1 -0
- package/dist/src/utils/earlyInputCapture.test.d.ts +6 -0
- package/dist/src/utils/earlyInputCapture.test.js +274 -0
- package/dist/src/utils/earlyInputCapture.test.js.map +1 -0
- package/dist/src/utils/envVarResolver.d.ts +39 -0
- package/dist/src/utils/envVarResolver.js +100 -0
- package/dist/src/utils/envVarResolver.js.map +1 -0
- package/dist/src/utils/envVarResolver.test.d.ts +6 -0
- package/dist/src/utils/envVarResolver.test.js +221 -0
- package/dist/src/utils/envVarResolver.test.js.map +1 -0
- package/dist/src/utils/errors.d.ts +76 -0
- package/dist/src/utils/errors.js +237 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/errors.test.d.ts +6 -0
- package/dist/src/utils/errors.test.js +536 -0
- package/dist/src/utils/errors.test.js.map +1 -0
- package/dist/src/utils/events.d.ts +13 -0
- package/dist/src/utils/events.js +15 -0
- package/dist/src/utils/events.js.map +1 -0
- package/dist/src/utils/gitUtils.d.ts +30 -0
- package/dist/src/utils/gitUtils.js +108 -0
- package/dist/src/utils/gitUtils.js.map +1 -0
- package/dist/src/utils/gitUtils.test.d.ts +6 -0
- package/dist/src/utils/gitUtils.test.js +172 -0
- package/dist/src/utils/gitUtils.test.js.map +1 -0
- package/dist/src/utils/handleAutoUpdate.d.ts +16 -0
- package/dist/src/utils/handleAutoUpdate.js +144 -0
- package/dist/src/utils/handleAutoUpdate.js.map +1 -0
- package/dist/src/utils/headlessSafetyWarnings.d.ts +21 -0
- package/dist/src/utils/headlessSafetyWarnings.js +45 -0
- package/dist/src/utils/headlessSafetyWarnings.js.map +1 -0
- package/dist/src/utils/headlessSafetyWarnings.test.d.ts +6 -0
- package/dist/src/utils/headlessSafetyWarnings.test.js +66 -0
- package/dist/src/utils/headlessSafetyWarnings.test.js.map +1 -0
- package/dist/src/utils/housekeeping/cleanup.d.ts +15 -0
- package/dist/src/utils/housekeeping/cleanup.js +69 -0
- package/dist/src/utils/housekeeping/cleanup.js.map +1 -0
- package/dist/src/utils/housekeeping/cleanup.test.d.ts +6 -0
- package/dist/src/utils/housekeeping/cleanup.test.js +166 -0
- package/dist/src/utils/housekeeping/cleanup.test.js.map +1 -0
- package/dist/src/utils/housekeeping/lastInteractionAt.d.ts +9 -0
- package/dist/src/utils/housekeeping/lastInteractionAt.js +22 -0
- package/dist/src/utils/housekeeping/lastInteractionAt.js.map +1 -0
- package/dist/src/utils/housekeeping/scheduler.d.ts +17 -0
- package/dist/src/utils/housekeeping/scheduler.js +130 -0
- package/dist/src/utils/housekeeping/scheduler.js.map +1 -0
- package/dist/src/utils/housekeeping/scheduler.test.d.ts +6 -0
- package/dist/src/utils/housekeeping/scheduler.test.js +190 -0
- package/dist/src/utils/housekeeping/scheduler.test.js.map +1 -0
- package/dist/src/utils/housekeeping/throttledOnce.d.ts +13 -0
- package/dist/src/utils/housekeeping/throttledOnce.js +110 -0
- package/dist/src/utils/housekeeping/throttledOnce.js.map +1 -0
- package/dist/src/utils/housekeeping/throttledOnce.test.d.ts +6 -0
- package/dist/src/utils/housekeeping/throttledOnce.test.js +94 -0
- package/dist/src/utils/housekeeping/throttledOnce.test.js.map +1 -0
- package/dist/src/utils/installationInfo.d.ts +26 -0
- package/dist/src/utils/installationInfo.js +266 -0
- package/dist/src/utils/installationInfo.js.map +1 -0
- package/dist/src/utils/installationInfo.test.d.ts +6 -0
- package/dist/src/utils/installationInfo.test.js +466 -0
- package/dist/src/utils/installationInfo.test.js.map +1 -0
- package/dist/src/utils/languageUtils.d.ts +40 -0
- package/dist/src/utils/languageUtils.js +163 -0
- package/dist/src/utils/languageUtils.js.map +1 -0
- package/dist/src/utils/languageUtils.test.d.ts +6 -0
- package/dist/src/utils/languageUtils.test.js +341 -0
- package/dist/src/utils/languageUtils.test.js.map +1 -0
- package/dist/src/utils/math.d.ts +13 -0
- package/dist/src/utils/math.js +14 -0
- package/dist/src/utils/math.js.map +1 -0
- package/dist/src/utils/memoryDiagnostics.d.ts +65 -0
- package/dist/src/utils/memoryDiagnostics.js +365 -0
- package/dist/src/utils/memoryDiagnostics.js.map +1 -0
- package/dist/src/utils/memoryDiagnostics.test.d.ts +6 -0
- package/dist/src/utils/memoryDiagnostics.test.js +641 -0
- package/dist/src/utils/memoryDiagnostics.test.js.map +1 -0
- package/dist/src/utils/modelConfigUtils.d.ts +55 -0
- package/dist/src/utils/modelConfigUtils.js +186 -0
- package/dist/src/utils/modelConfigUtils.js.map +1 -0
- package/dist/src/utils/modelConfigUtils.test.d.ts +6 -0
- package/dist/src/utils/modelConfigUtils.test.js +1247 -0
- package/dist/src/utils/modelConfigUtils.test.js.map +1 -0
- package/dist/src/utils/nonInteractiveHelpers.d.ts +101 -0
- package/dist/src/utils/nonInteractiveHelpers.js +479 -0
- package/dist/src/utils/nonInteractiveHelpers.js.map +1 -0
- package/dist/src/utils/nonInteractiveHelpers.test.d.ts +6 -0
- package/dist/src/utils/nonInteractiveHelpers.test.js +1038 -0
- package/dist/src/utils/nonInteractiveHelpers.test.js.map +1 -0
- package/dist/src/utils/osc.d.ts +91 -0
- package/dist/src/utils/osc.js +162 -0
- package/dist/src/utils/osc.js.map +1 -0
- package/dist/src/utils/osc.test.d.ts +6 -0
- package/dist/src/utils/osc.test.js +217 -0
- package/dist/src/utils/osc.test.js.map +1 -0
- package/dist/src/utils/package.d.ts +12 -0
- package/dist/src/utils/package.js +24 -0
- package/dist/src/utils/package.js.map +1 -0
- package/dist/src/utils/processUtils.d.ts +13 -0
- package/dist/src/utils/processUtils.js +18 -0
- package/dist/src/utils/processUtils.js.map +1 -0
- package/dist/src/utils/processUtils.test.d.ts +6 -0
- package/dist/src/utils/processUtils.test.js +20 -0
- package/dist/src/utils/processUtils.test.js.map +1 -0
- package/dist/src/utils/readStdin.d.ts +6 -0
- package/dist/src/utils/readStdin.js +60 -0
- package/dist/src/utils/readStdin.js.map +1 -0
- package/dist/src/utils/readStdin.test.d.ts +6 -0
- package/dist/src/utils/readStdin.test.js +88 -0
- package/dist/src/utils/readStdin.test.js.map +1 -0
- package/dist/src/utils/relaunch.d.ts +9 -0
- package/dist/src/utils/relaunch.js +68 -0
- package/dist/src/utils/relaunch.js.map +1 -0
- package/dist/src/utils/relaunch.test.d.ts +6 -0
- package/dist/src/utils/relaunch.test.js +291 -0
- package/dist/src/utils/relaunch.test.js.map +1 -0
- package/dist/src/utils/resolvePath.d.ts +6 -0
- package/dist/src/utils/resolvePath.js +21 -0
- package/dist/src/utils/resolvePath.js.map +1 -0
- package/dist/src/utils/runBudget.d.ts +116 -0
- package/dist/src/utils/runBudget.js +235 -0
- package/dist/src/utils/runBudget.js.map +1 -0
- package/dist/src/utils/runBudget.test.d.ts +6 -0
- package/dist/src/utils/runBudget.test.js +187 -0
- package/dist/src/utils/runBudget.test.js.map +1 -0
- package/dist/src/utils/sandbox-macos-permissive-closed.sb +33 -0
- package/dist/src/utils/sandbox-macos-permissive-open.sb +28 -0
- package/dist/src/utils/sandbox-macos-permissive-proxied.sb +38 -0
- package/dist/src/utils/sandbox-macos-restrictive-closed.sb +94 -0
- package/dist/src/utils/sandbox-macos-restrictive-open.sb +97 -0
- package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +99 -0
- package/dist/src/utils/sandbox.d.ts +7 -0
- package/dist/src/utils/sandbox.js +788 -0
- package/dist/src/utils/sandbox.js.map +1 -0
- package/dist/src/utils/sessionPaths.d.ts +19 -0
- package/dist/src/utils/sessionPaths.js +141 -0
- package/dist/src/utils/sessionPaths.js.map +1 -0
- package/dist/src/utils/sessionPaths.test.d.ts +6 -0
- package/dist/src/utils/sessionPaths.test.js +249 -0
- package/dist/src/utils/sessionPaths.test.js.map +1 -0
- package/dist/src/utils/settingsUtils.d.ts +167 -0
- package/dist/src/utils/settingsUtils.js +532 -0
- package/dist/src/utils/settingsUtils.js.map +1 -0
- package/dist/src/utils/settingsUtils.test.d.ts +6 -0
- package/dist/src/utils/settingsUtils.test.js +849 -0
- package/dist/src/utils/settingsUtils.test.js.map +1 -0
- package/dist/src/utils/spawnWrapper.d.ts +7 -0
- package/dist/src/utils/spawnWrapper.js +8 -0
- package/dist/src/utils/spawnWrapper.js.map +1 -0
- package/dist/src/utils/standalone-update-verify.d.ts +12 -0
- package/dist/src/utils/standalone-update-verify.js +43 -0
- package/dist/src/utils/standalone-update-verify.js.map +1 -0
- package/dist/src/utils/standalone-update-verify.test.d.ts +6 -0
- package/dist/src/utils/standalone-update-verify.test.js +27 -0
- package/dist/src/utils/standalone-update-verify.test.js.map +1 -0
- package/dist/src/utils/standalone-update.d.ts +27 -0
- package/dist/src/utils/standalone-update.js +714 -0
- package/dist/src/utils/standalone-update.js.map +1 -0
- package/dist/src/utils/standalone-update.test.d.ts +6 -0
- package/dist/src/utils/standalone-update.test.js +301 -0
- package/dist/src/utils/standalone-update.test.js.map +1 -0
- package/dist/src/utils/startupProfiler.d.ts +90 -0
- package/dist/src/utils/startupProfiler.js +267 -0
- package/dist/src/utils/startupProfiler.js.map +1 -0
- package/dist/src/utils/startupProfiler.test.d.ts +1 -0
- package/dist/src/utils/startupProfiler.test.js +293 -0
- package/dist/src/utils/startupProfiler.test.js.map +1 -0
- package/dist/src/utils/startupWarnings.d.ts +6 -0
- package/dist/src/utils/startupWarnings.js +40 -0
- package/dist/src/utils/startupWarnings.js.map +1 -0
- package/dist/src/utils/stdioHelpers.d.ts +31 -0
- package/dist/src/utils/stdioHelpers.js +38 -0
- package/dist/src/utils/stdioHelpers.js.map +1 -0
- package/dist/src/utils/systemInfo.d.ts +78 -0
- package/dist/src/utils/systemInfo.js +208 -0
- package/dist/src/utils/systemInfo.js.map +1 -0
- package/dist/src/utils/systemInfo.test.d.ts +6 -0
- package/dist/src/utils/systemInfo.test.js +380 -0
- package/dist/src/utils/systemInfo.test.js.map +1 -0
- package/dist/src/utils/systemInfoFields.d.ts +18 -0
- package/dist/src/utils/systemInfoFields.js +102 -0
- package/dist/src/utils/systemInfoFields.js.map +1 -0
- package/dist/src/utils/systemInfoFields.test.d.ts +6 -0
- package/dist/src/utils/systemInfoFields.test.js +74 -0
- package/dist/src/utils/systemInfoFields.test.js.map +1 -0
- package/dist/src/utils/terminalSequence.d.ts +21 -0
- package/dist/src/utils/terminalSequence.js +124 -0
- package/dist/src/utils/terminalSequence.js.map +1 -0
- package/dist/src/utils/terminalSequence.test.d.ts +6 -0
- package/dist/src/utils/terminalSequence.test.js +132 -0
- package/dist/src/utils/terminalSequence.test.js.map +1 -0
- package/dist/src/utils/truncatedDiffPreview.d.ts +6 -0
- package/dist/src/utils/truncatedDiffPreview.js +18 -0
- package/dist/src/utils/truncatedDiffPreview.js.map +1 -0
- package/dist/src/utils/updateEventEmitter.d.ts +11 -0
- package/dist/src/utils/updateEventEmitter.js +12 -0
- package/dist/src/utils/updateEventEmitter.js.map +1 -0
- package/dist/src/utils/userPromptExpansionHook.d.ts +9 -0
- package/dist/src/utils/userPromptExpansionHook.js +30 -0
- package/dist/src/utils/userPromptExpansionHook.js.map +1 -0
- package/dist/src/utils/userPromptExpansionHook.test.d.ts +6 -0
- package/dist/src/utils/userPromptExpansionHook.test.js +69 -0
- package/dist/src/utils/userPromptExpansionHook.test.js.map +1 -0
- package/dist/src/utils/userStartupWarnings.d.ts +12 -0
- package/dist/src/utils/userStartupWarnings.js +74 -0
- package/dist/src/utils/userStartupWarnings.js.map +1 -0
- package/dist/src/utils/userStartupWarnings.test.d.ts +6 -0
- package/dist/src/utils/userStartupWarnings.test.js +88 -0
- package/dist/src/utils/userStartupWarnings.test.js.map +1 -0
- package/dist/src/utils/version.d.ts +6 -0
- package/dist/src/utils/version.js +11 -0
- package/dist/src/utils/version.js.map +1 -0
- package/dist/src/utils/warningHandler.d.ts +29 -0
- package/dist/src/utils/warningHandler.js +100 -0
- package/dist/src/utils/warningHandler.js.map +1 -0
- package/dist/src/utils/warningHandler.test.d.ts +6 -0
- package/dist/src/utils/warningHandler.test.js +185 -0
- package/dist/src/utils/warningHandler.test.js.map +1 -0
- package/dist/src/utils/windowTitle.d.ts +12 -0
- package/dist/src/utils/windowTitle.js +19 -0
- package/dist/src/utils/windowTitle.js.map +1 -0
- package/dist/src/utils/windowTitle.test.d.ts +6 -0
- package/dist/src/utils/windowTitle.test.js +49 -0
- package/dist/src/utils/windowTitle.test.js.map +1 -0
- package/dist/src/utils/writeWithBackup.d.ts +49 -0
- package/dist/src/utils/writeWithBackup.js +136 -0
- package/dist/src/utils/writeWithBackup.js.map +1 -0
- package/dist/src/utils/writeWithBackup.test.d.ts +6 -0
- package/dist/src/utils/writeWithBackup.test.js +177 -0
- package/dist/src/utils/writeWithBackup.test.js.map +1 -0
- package/dist/src/validateNonInterActiveAuth.d.ts +8 -0
- package/dist/src/validateNonInterActiveAuth.js +66 -0
- package/dist/src/validateNonInterActiveAuth.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1,2853 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2025 Google LLC
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
import { useMemo, useState, useCallback, useEffect, useRef, useLayoutEffect, } from 'react';
|
|
8
|
+
import { measureElement } from 'ink';
|
|
9
|
+
import { App } from './App.js';
|
|
10
|
+
import { AppContext } from './contexts/AppContext.js';
|
|
11
|
+
import { UIStateContext } from './contexts/UIStateContext.js';
|
|
12
|
+
import { UIActionsContext, } from './contexts/UIActionsContext.js';
|
|
13
|
+
import { ConfigContext } from './contexts/ConfigContext.js';
|
|
14
|
+
import { ToolCallStatus, } from './types.js';
|
|
15
|
+
import { MessageType, StreamingState } from './types.js';
|
|
16
|
+
import { IdeClient, ideContextStore, createDebugLogger, getErrorMessage, getAllGeminiMdFilenames, ShellExecutionService, Storage, createInstructionsLoadedCallback, SessionEndReason, generatePromptSuggestion, logPromptSuggestion, PromptSuggestionEvent, logSpeculation, SpeculationEvent, startSpeculation, acceptSpeculation, abortSpeculation, IDLE_SPECULATION, ApprovalMode, ConditionalRulesRegistry, MCPDiscoveryState, ToolConfirmationOutcome, ToolNames, clearWorktreeSession, restoreWorktreeContext, GitWorktreeService, readWorktreeSessionMarker, } from '@tulex-cli/tulex-cli-core';
|
|
17
|
+
import { buildResumedHistoryItems } from './utils/resumeHistoryUtils.js';
|
|
18
|
+
import { loadLowlight } from './utils/lowlightLoader.js';
|
|
19
|
+
import { restoreGoalFromHistory } from './utils/restoreGoal.js';
|
|
20
|
+
import { getStickyTodos, getStickyTodoMaxVisibleItems, getStickyTodosLayoutKey, getStickyTodosRenderKey, } from './utils/todoSnapshot.js';
|
|
21
|
+
import { loadHierarchicalGeminiMemory } from '../config/config.js';
|
|
22
|
+
import { profileCheckpoint, finalizeStartupProfile, } from '../utils/startupProfiler.js';
|
|
23
|
+
import { appEvents } from '../utils/events.js';
|
|
24
|
+
import process from 'node:process';
|
|
25
|
+
/**
|
|
26
|
+
* Window in which mcp-client-update events are coalesced before the cli calls
|
|
27
|
+
* `setTools()`. Matches Claude Code's `MCP_BATCH_FLUSH_MS` (16 ≈ one 60Hz
|
|
28
|
+
* frame). Smaller windows would refresh the model tool list more often
|
|
29
|
+
* without user benefit; larger windows would let multiple servers settle
|
|
30
|
+
* before the model sees them. 16ms is the sweet spot validated by Claude's
|
|
31
|
+
* production deployment (see design.md § 8.3 + § 3.2 Round 2).
|
|
32
|
+
*/
|
|
33
|
+
const MCP_BATCH_FLUSH_MS = 16;
|
|
34
|
+
/**
|
|
35
|
+
* Maximum time we keep the startup profile open waiting for MCP discovery to
|
|
36
|
+
* settle. Slightly longer than the default 30s per-server discovery timeout
|
|
37
|
+
* so a server that times out can still log its `outcome: failed` event into
|
|
38
|
+
* the profile. After this cap the profile file is written regardless.
|
|
39
|
+
*/
|
|
40
|
+
const STARTUP_PROFILE_FINALIZE_CAP_MS = 35_000;
|
|
41
|
+
import { useHistory } from './hooks/useHistoryManager.js';
|
|
42
|
+
import { useMemoryMonitor } from './hooks/useMemoryMonitor.js';
|
|
43
|
+
import { useThemeCommand } from './hooks/useThemeCommand.js';
|
|
44
|
+
import { useFeedbackDialog } from './hooks/useFeedbackDialog.js';
|
|
45
|
+
import { useAuthCommand } from './auth/useAuth.js';
|
|
46
|
+
import { useEditorSettings } from './hooks/useEditorSettings.js';
|
|
47
|
+
import { usePreferredEditor } from './hooks/usePreferredEditor.js';
|
|
48
|
+
import { useSettingsCommand } from './hooks/useSettingsCommand.js';
|
|
49
|
+
import { useModelCommand } from './hooks/useModelCommand.js';
|
|
50
|
+
import { useArenaCommand } from './hooks/useArenaCommand.js';
|
|
51
|
+
import { useApprovalModeCommand } from './hooks/useApprovalModeCommand.js';
|
|
52
|
+
import { useBranchCommand } from './hooks/useBranchCommand.js';
|
|
53
|
+
import { useResumeCommand } from './hooks/useResumeCommand.js';
|
|
54
|
+
import { useDeleteCommand } from './hooks/useDeleteCommand.js';
|
|
55
|
+
import { useSlashCommandProcessor } from './hooks/slashCommandProcessor.js';
|
|
56
|
+
import { useDoublePress } from './hooks/useDoublePress.js';
|
|
57
|
+
import { computeApiTruncationIndex, isRealUserTurn, } from './utils/historyMapping.js';
|
|
58
|
+
import { useVimModeState, useVimModeActions, } from './contexts/VimModeContext.js';
|
|
59
|
+
import { CompactModeProvider } from './contexts/CompactModeContext.js';
|
|
60
|
+
import { useTerminalSize } from './hooks/useTerminalSize.js';
|
|
61
|
+
import { calculatePromptWidths } from './components/InputPrompt.js';
|
|
62
|
+
import { useStdin, useStdout } from 'ink';
|
|
63
|
+
import ansiEscapes from 'ansi-escapes';
|
|
64
|
+
import * as fs from 'node:fs';
|
|
65
|
+
import { basename } from 'node:path';
|
|
66
|
+
import { computeWindowTitle } from '../utils/windowTitle.js';
|
|
67
|
+
import { clearScreen } from '../utils/stdioHelpers.js';
|
|
68
|
+
import { useTextBuffer } from './components/shared/text-buffer.js';
|
|
69
|
+
import { useLogger } from './hooks/useLogger.js';
|
|
70
|
+
import { useGeminiStream, } from './hooks/useGeminiStream.js';
|
|
71
|
+
import { useVim } from './hooks/vim.js';
|
|
72
|
+
import { isBtwCommand, isSlashCommand } from './utils/commandUtils.js';
|
|
73
|
+
import { SettingScope } from '../config/settings.js';
|
|
74
|
+
import {} from '../core/initializer.js';
|
|
75
|
+
import { useFocus } from './hooks/useFocus.js';
|
|
76
|
+
import { useAwaySummary } from './hooks/useAwaySummary.js';
|
|
77
|
+
import { useBracketedPaste } from './hooks/useBracketedPaste.js';
|
|
78
|
+
import { useKeypress } from './hooks/useKeypress.js';
|
|
79
|
+
import { keyMatchers, Command } from './keyMatchers.js';
|
|
80
|
+
import { useLoadingIndicator } from './hooks/useLoadingIndicator.js';
|
|
81
|
+
import { useTerminalProgress } from './hooks/useTerminalProgress.js';
|
|
82
|
+
import { useFolderTrust } from './hooks/useFolderTrust.js';
|
|
83
|
+
import { useIdeTrustListener } from './hooks/useIdeTrustListener.js';
|
|
84
|
+
import {} from './IdeIntegrationNudge.js';
|
|
85
|
+
import {} from './CommandFormatMigrationNudge.js';
|
|
86
|
+
import { useCommandMigration } from './hooks/useCommandMigration.js';
|
|
87
|
+
import { migrateTomlCommands } from '../services/command-migration-tool.js';
|
|
88
|
+
import {} from './utils/updateCheck.js';
|
|
89
|
+
import { setUpdateHandler } from '../utils/handleAutoUpdate.js';
|
|
90
|
+
import { registerCleanup, runExitCleanup } from '../utils/cleanup.js';
|
|
91
|
+
import { useMessageQueue } from './hooks/useMessageQueue.js';
|
|
92
|
+
import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
|
|
93
|
+
import { useSessionStats } from './contexts/SessionContext.js';
|
|
94
|
+
import { useGitBranchName } from './hooks/useGitBranchName.js';
|
|
95
|
+
import { useWorktreeSession } from './hooks/useWorktreeSession.js';
|
|
96
|
+
import { useExtensionUpdates, useConfirmUpdateRequests, useSettingInputRequests, usePluginChoiceRequests, } from './hooks/useExtensionUpdates.js';
|
|
97
|
+
import { useProviderUpdates } from './hooks/useProviderUpdates.js';
|
|
98
|
+
import { ShellFocusContext } from './contexts/ShellFocusContext.js';
|
|
99
|
+
import { RenderModeProvider, } from './contexts/RenderModeContext.js';
|
|
100
|
+
import { TerminalOutputProvider } from './contexts/TerminalOutputContext.js';
|
|
101
|
+
import { useAgentViewState } from './contexts/AgentViewContext.js';
|
|
102
|
+
import { useBackgroundTaskViewState, useBackgroundTaskViewActions, } from './contexts/BackgroundTaskViewContext.js';
|
|
103
|
+
import { t } from '../i18n/index.js';
|
|
104
|
+
import { useWelcomeBack } from './hooks/useWelcomeBack.js';
|
|
105
|
+
import { useDialogClose } from './hooks/useDialogClose.js';
|
|
106
|
+
import { useInitializationAuthError } from './hooks/useInitializationAuthError.js';
|
|
107
|
+
import { useSubagentCreateDialog } from './hooks/useSubagentCreateDialog.js';
|
|
108
|
+
import { useAgentsManagerDialog } from './hooks/useAgentsManagerDialog.js';
|
|
109
|
+
import { useSkillsManagerDialog } from './hooks/useSkillsManagerDialog.js';
|
|
110
|
+
import { useExtensionsManagerDialog } from './hooks/useExtensionsManagerDialog.js';
|
|
111
|
+
import { useMcpDialog } from './hooks/useMcpDialog.js';
|
|
112
|
+
import { useHooksDialog } from './hooks/useHooksDialog.js';
|
|
113
|
+
import { useStatsDialog } from './hooks/useStatsDialog.js';
|
|
114
|
+
import { useMemoryDialog } from './hooks/useMemoryDialog.js';
|
|
115
|
+
import { useAttentionNotifications } from './hooks/useAttentionNotifications.js';
|
|
116
|
+
import { buildTerminalNotification } from './hooks/useTerminalNotification.js';
|
|
117
|
+
import { useContextualTips } from './hooks/useContextualTips.js';
|
|
118
|
+
import { getTipHistory } from '../services/tips/index.js';
|
|
119
|
+
import { useRemoteInput } from '../remoteInput/RemoteInputContext.js';
|
|
120
|
+
import { useDualOutput } from '../dualOutput/DualOutputContext.js';
|
|
121
|
+
import { requestConsentInteractive, requestConsentOrFail, } from '../commands/extensions/consent.js';
|
|
122
|
+
import { compactToggleHasVisualEffect } from './utils/mergeCompactToolGroups.js';
|
|
123
|
+
import { findLastUserItemIndex, isSyntheticHistoryItem, itemsAfterAreOnlySynthetic, } from './utils/historyUtils.js';
|
|
124
|
+
import { MAIN_CONTENT_HEIGHT_RESERVATION } from './utils/layoutUtils.js';
|
|
125
|
+
const CTRL_EXIT_PROMPT_DURATION_MS = 1000;
|
|
126
|
+
const debugLogger = createDebugLogger('APP_CONTAINER');
|
|
127
|
+
export function isRenderModeToggleKey(key) {
|
|
128
|
+
return (keyMatchers[Command.TOGGLE_RENDER_MODE](key) ||
|
|
129
|
+
(key.name === 'm' && key.meta && !key.ctrl && !key.paste));
|
|
130
|
+
}
|
|
131
|
+
export function getNextRenderMode(current) {
|
|
132
|
+
return current === 'render' ? 'raw' : 'render';
|
|
133
|
+
}
|
|
134
|
+
export function handleRenderModeToggleKey(key, setRenderMode) {
|
|
135
|
+
if (!isRenderModeToggleKey(key)) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
setRenderMode(getNextRenderMode);
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
function isToolExecuting(pendingHistoryItems) {
|
|
142
|
+
return pendingHistoryItems.some((item) => {
|
|
143
|
+
if (item && item.type === 'tool_group') {
|
|
144
|
+
return item.tools.some((tool) => ToolCallStatus.Executing === tool.status);
|
|
145
|
+
}
|
|
146
|
+
return false;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function useStableStickyTodos(todos) {
|
|
150
|
+
const renderKey = getStickyTodosRenderKey(todos);
|
|
151
|
+
const stableTodosRef = useRef(null);
|
|
152
|
+
if (stableTodosRef.current?.renderKey !== renderKey) {
|
|
153
|
+
stableTodosRef.current = { renderKey, todos };
|
|
154
|
+
}
|
|
155
|
+
return stableTodosRef.current.todos;
|
|
156
|
+
}
|
|
157
|
+
// Exported for tests. Given a newest-first list of messages, return a list
|
|
158
|
+
// with duplicates removed, keeping the first (newest) occurrence of each.
|
|
159
|
+
export function dedupeNewestFirst(messages) {
|
|
160
|
+
const seen = new Set();
|
|
161
|
+
const result = [];
|
|
162
|
+
for (const msg of messages) {
|
|
163
|
+
if (!seen.has(msg)) {
|
|
164
|
+
seen.add(msg);
|
|
165
|
+
result.push(msg);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The fraction of the terminal width to allocate to the shell.
|
|
172
|
+
* This provides horizontal padding.
|
|
173
|
+
*/
|
|
174
|
+
const SHELL_WIDTH_FRACTION = 0.89;
|
|
175
|
+
/**
|
|
176
|
+
* The number of lines to subtract from the available terminal height
|
|
177
|
+
* for the shell. This provides vertical padding and space for other UI elements.
|
|
178
|
+
*/
|
|
179
|
+
const SHELL_HEIGHT_PADDING = 10;
|
|
180
|
+
export const AppContainer = (props) => {
|
|
181
|
+
const { settings, config, initializationResult } = props;
|
|
182
|
+
const historyManager = useHistory();
|
|
183
|
+
// `useHistory()` returns a fresh memoized object whenever `history` changes,
|
|
184
|
+
// so depending on `historyManager` directly inside event-handler callbacks
|
|
185
|
+
// would rebuild them on every message. Mirror history into a ref so
|
|
186
|
+
// handlers can read the latest snapshot at call time without reactive deps.
|
|
187
|
+
const historyRef = useRef(historyManager.history);
|
|
188
|
+
historyRef.current = historyManager.history;
|
|
189
|
+
useMemoryMonitor(historyManager);
|
|
190
|
+
const [debugMessage, setDebugMessage] = useState('');
|
|
191
|
+
const [quittingMessages, setQuittingMessages] = useState(null);
|
|
192
|
+
const [themeError, setThemeError] = useState(initializationResult.themeError);
|
|
193
|
+
const [isProcessing, setIsProcessing] = useState(false);
|
|
194
|
+
const [embeddedShellFocused, setEmbeddedShellFocused] = useState(false);
|
|
195
|
+
const [geminiMdFileCount, setGeminiMdFileCount] = useState(initializationResult.geminiMdFileCount);
|
|
196
|
+
const [shellModeActive, setShellModeActive] = useState(false);
|
|
197
|
+
const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
|
|
198
|
+
const [historyRemountKey, setHistoryRemountKey] = useState(0);
|
|
199
|
+
const [updateInfo, setUpdateInfo] = useState(null);
|
|
200
|
+
const [isTrustedFolder, setIsTrustedFolder] = useState(config.isTrustedFolder());
|
|
201
|
+
const extensionManager = config.getExtensionManager();
|
|
202
|
+
const { addConfirmUpdateExtensionRequest, confirmUpdateExtensionRequests } = useConfirmUpdateRequests();
|
|
203
|
+
const { addSettingInputRequest, settingInputRequests } = useSettingInputRequests();
|
|
204
|
+
const { addPluginChoiceRequest, pluginChoiceRequests } = usePluginChoiceRequests();
|
|
205
|
+
extensionManager.setRequestConsent(requestConsentOrFail.bind(null, (description) => requestConsentInteractive(description, addConfirmUpdateExtensionRequest)));
|
|
206
|
+
extensionManager.setRequestChoicePlugin((marketplace) => new Promise((resolve, reject) => {
|
|
207
|
+
addPluginChoiceRequest({
|
|
208
|
+
marketplaceName: marketplace.name,
|
|
209
|
+
plugins: marketplace.plugins.map((p) => ({
|
|
210
|
+
name: p.name,
|
|
211
|
+
description: p.description,
|
|
212
|
+
})),
|
|
213
|
+
onSelect: (pluginName) => {
|
|
214
|
+
resolve(pluginName);
|
|
215
|
+
},
|
|
216
|
+
onCancel: () => {
|
|
217
|
+
reject(new Error('Plugin selection cancelled'));
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
}));
|
|
221
|
+
extensionManager.setRequestSetting((setting) => new Promise((resolve, reject) => {
|
|
222
|
+
addSettingInputRequest({
|
|
223
|
+
settingName: setting.name,
|
|
224
|
+
settingDescription: setting.description,
|
|
225
|
+
sensitive: setting.sensitive ?? false,
|
|
226
|
+
onSubmit: (value) => {
|
|
227
|
+
resolve(value);
|
|
228
|
+
},
|
|
229
|
+
onCancel: () => {
|
|
230
|
+
reject(new Error('Setting input cancelled'));
|
|
231
|
+
},
|
|
232
|
+
});
|
|
233
|
+
}));
|
|
234
|
+
const { extensionsUpdateState, extensionsUpdateStateInternal, dispatchExtensionStateUpdate, } = useExtensionUpdates(extensionManager, historyManager.addItem, config.getWorkingDir());
|
|
235
|
+
const { providerUpdateRequest, dismissProviderUpdate } = useProviderUpdates(settings, config, historyManager.addItem);
|
|
236
|
+
const [isTrustDialogOpen, setTrustDialogOpen] = useState(false);
|
|
237
|
+
const openTrustDialog = useCallback(() => setTrustDialogOpen(true), []);
|
|
238
|
+
const closeTrustDialog = useCallback(() => setTrustDialogOpen(false), []);
|
|
239
|
+
const [isPermissionsDialogOpen, setPermissionsDialogOpen] = useState(false);
|
|
240
|
+
const openPermissionsDialog = useCallback(() => setPermissionsDialogOpen(true), []);
|
|
241
|
+
const closePermissionsDialog = useCallback(() => setPermissionsDialogOpen(false), []);
|
|
242
|
+
const [currentModel, setCurrentModel] = useState(() => config.getModel());
|
|
243
|
+
const [isConfigInitialized, setConfigInitialized] = useState(false);
|
|
244
|
+
const [userMessages, setUserMessages] = useState([]);
|
|
245
|
+
// Terminal and layout hooks
|
|
246
|
+
const { columns: terminalWidth, rows: terminalHeight } = useTerminalSize();
|
|
247
|
+
const { stdin, setRawMode } = useStdin();
|
|
248
|
+
const { stdout } = useStdout();
|
|
249
|
+
// Raw write function for terminal escape sequences.
|
|
250
|
+
// Uses process.stdout directly instead of Ink's useStdout() because
|
|
251
|
+
// standard Ink v6.2.3 proxies stdout writes through its rendering
|
|
252
|
+
// pipeline, which can corrupt binary escape sequences (OSC, DCS).
|
|
253
|
+
const writeRaw = useCallback((data) => {
|
|
254
|
+
process.stdout.write(data);
|
|
255
|
+
}, []);
|
|
256
|
+
// Terminal notification helpers (constructed directly, not via context)
|
|
257
|
+
const terminal = useMemo(() => buildTerminalNotification(writeRaw), [writeRaw]);
|
|
258
|
+
// Additional hooks moved from App.tsx
|
|
259
|
+
const { stats: sessionStats, startNewSession } = useSessionStats();
|
|
260
|
+
const logger = useLogger(config.storage, sessionStats.sessionId);
|
|
261
|
+
const branchName = useGitBranchName(config.getTargetDir());
|
|
262
|
+
const worktreeSession = useWorktreeSession(config);
|
|
263
|
+
const [showWorktreeExitDialog, setShowWorktreeExitDialog] = useState(false);
|
|
264
|
+
/**
|
|
265
|
+
* One-shot worktree restore reminder for the TUI path. Set during
|
|
266
|
+
* `--resume` when the persisted sidecar names a live worktree, then
|
|
267
|
+
* consumed and cleared by `handleFinalSubmit` on the user's first
|
|
268
|
+
* prompt — same shape as ACP `Session.pendingWorktreeNotice` and
|
|
269
|
+
* headless's `<system-reminder>` prefix. Without this, the resumed
|
|
270
|
+
* model would see an INFO history item in the TUI but never receive
|
|
271
|
+
* the reminder in the next API request, leaving it free to edit the
|
|
272
|
+
* parent checkout. (PR #4174 review #3259975249.)
|
|
273
|
+
*/
|
|
274
|
+
const pendingWorktreeNoticeRef = useRef(null);
|
|
275
|
+
const activeWorktree = useMemo(() => worktreeSession
|
|
276
|
+
? {
|
|
277
|
+
slug: worktreeSession.slug,
|
|
278
|
+
branch: worktreeSession.worktreeBranch,
|
|
279
|
+
path: worktreeSession.worktreePath,
|
|
280
|
+
originalCwd: worktreeSession.originalCwd,
|
|
281
|
+
originalBranch: worktreeSession.originalBranch,
|
|
282
|
+
originalHeadCommit: worktreeSession.originalHeadCommit,
|
|
283
|
+
}
|
|
284
|
+
: null, [worktreeSession]);
|
|
285
|
+
// Layout measurements
|
|
286
|
+
const mainControlsRef = useRef(null);
|
|
287
|
+
const originalTitleRef = useRef(computeWindowTitle(basename(config.getTargetDir())));
|
|
288
|
+
const lastTitleRef = useRef(null);
|
|
289
|
+
const staticExtraHeight = 3;
|
|
290
|
+
// Prefetch the lowlight chunk on mount so the dynamic import is already
|
|
291
|
+
// in flight before the first code block needs colorizing. Without this
|
|
292
|
+
// kick-off, code blocks committed to ink's append-only <Static> region
|
|
293
|
+
// before the import resolves stay plain text for the rest of the session
|
|
294
|
+
// — Static can only be re-rendered via `refreshStatic`, which is not
|
|
295
|
+
// wired to lowlight load completion. Common reachable paths: short
|
|
296
|
+
// `--prompt -p` runs that finalize quickly, Ctrl+C-cancelled first turns,
|
|
297
|
+
// and the first-paint history replay on `--resume`. Firing the load
|
|
298
|
+
// from mount keeps the startup parse-cost win (V8 still parses off the
|
|
299
|
+
// critical path) while restoring the "first paint sees a loaded
|
|
300
|
+
// instance" guarantee. Errors are silently swallowed; CodeColorizer
|
|
301
|
+
// already falls back to plain text on miss.
|
|
302
|
+
useEffect(() => {
|
|
303
|
+
void loadLowlight().catch((err) => {
|
|
304
|
+
// The loader caches rejection with a cooldown (see
|
|
305
|
+
// `LOWLIGHT_RETRY_COOLDOWN_MS` / `lowlightLastFailureAt` in
|
|
306
|
+
// `lowlightLoader.ts`). This useEffect runs once on mount, so this
|
|
307
|
+
// catch fires at most once per session regardless. Log to the debug
|
|
308
|
+
// channel so a degraded syntax-highlight state (corrupted install,
|
|
309
|
+
// missing chunk) leaves a breadcrumb without spamming the user's
|
|
310
|
+
// TTY — `CodeColorizer` already falls back to plain text.
|
|
311
|
+
debugLogger.warn(`Failed to load lowlight chunk; code blocks will render as plain text: ${err instanceof Error ? err.message : String(err)}`);
|
|
312
|
+
});
|
|
313
|
+
}, []);
|
|
314
|
+
// Initialize config (runs once on mount)
|
|
315
|
+
useEffect(() => {
|
|
316
|
+
(async () => {
|
|
317
|
+
// Note: the program will not work if this fails so let errors be
|
|
318
|
+
// handled by the global catch.
|
|
319
|
+
profileCheckpoint('config_initialize_start');
|
|
320
|
+
await config.initialize();
|
|
321
|
+
profileCheckpoint('config_initialize_end');
|
|
322
|
+
setConfigInitialized(true);
|
|
323
|
+
profileCheckpoint('input_enabled');
|
|
324
|
+
// Profile finalize is intentionally NOT here. With PR-A's background
|
|
325
|
+
// MCP discovery, MCP-related events (`mcp_server_ready:*`,
|
|
326
|
+
// `mcp_first_tool_registered`, `mcp_all_servers_settled`,
|
|
327
|
+
// `gemini_tools_updated`) arrive AFTER `input_enabled`. The dedicated
|
|
328
|
+
// `useEffect` below (gated by `configInitialized`) defers finalize
|
|
329
|
+
// until MCP discovery settles or the 35s hard cap elapses — that way
|
|
330
|
+
// the profile captures the full MCP timeline without holding back
|
|
331
|
+
// the user-facing TTI.
|
|
332
|
+
// Phase D-1: when launched with --worktree, gemini.tsx stashes a
|
|
333
|
+
// one-shot notice on Config. Consume it here so it surfaces in the
|
|
334
|
+
// transcript AND gets injected into the next user prompt. This
|
|
335
|
+
// wins over the Phase C resume-restore path below — startup beats
|
|
336
|
+
// resume on the same prompt.
|
|
337
|
+
const startupWorktreeNotice = config.consumePendingStartupWorktreeNotice();
|
|
338
|
+
if (startupWorktreeNotice) {
|
|
339
|
+
historyManager.addItem({ type: MessageType.INFO, text: startupWorktreeNotice }, Date.now());
|
|
340
|
+
pendingWorktreeNoticeRef.current = startupWorktreeNotice;
|
|
341
|
+
}
|
|
342
|
+
const resumedSessionData = config.getResumedSessionData();
|
|
343
|
+
if (resumedSessionData) {
|
|
344
|
+
const historyItems = buildResumedHistoryItems(resumedSessionData, config);
|
|
345
|
+
historyManager.loadHistory(historyItems);
|
|
346
|
+
// Re-arm any `/goal` that was active when the prior session ended.
|
|
347
|
+
try {
|
|
348
|
+
restoreGoalFromHistory(historyItems, config, historyManager.addItem);
|
|
349
|
+
}
|
|
350
|
+
catch {
|
|
351
|
+
// Restore is best-effort — never block resume on it.
|
|
352
|
+
}
|
|
353
|
+
const recovered = await config.loadPausedBackgroundAgents(config.getSessionId());
|
|
354
|
+
if (recovered.length > 0) {
|
|
355
|
+
historyManager.addItem({
|
|
356
|
+
type: MessageType.INFO,
|
|
357
|
+
text: config
|
|
358
|
+
.getBackgroundAgentResumeService()
|
|
359
|
+
.buildRecoveredBackgroundAgentsNotice(recovered.length),
|
|
360
|
+
}, Date.now());
|
|
361
|
+
}
|
|
362
|
+
// Restore session name tag from custom title
|
|
363
|
+
const title = config
|
|
364
|
+
.getSessionService()
|
|
365
|
+
.getSessionTitle(config.getSessionId());
|
|
366
|
+
if (title) {
|
|
367
|
+
setSessionName(title);
|
|
368
|
+
}
|
|
369
|
+
// Restore worktree context (shared logic — headless and ACP use
|
|
370
|
+
// the same helper). Stale sidecars get cleaned up; live ones
|
|
371
|
+
// produce an INFO message the model sees on the next turn.
|
|
372
|
+
// Skipped when Phase D-1 already injected a --worktree startup
|
|
373
|
+
// notice above (startup wins over resume on the same prompt).
|
|
374
|
+
if (!startupWorktreeNotice) {
|
|
375
|
+
try {
|
|
376
|
+
const sessionPath = config
|
|
377
|
+
.getSessionService()
|
|
378
|
+
.getWorktreeSessionPath(config.getSessionId());
|
|
379
|
+
const restored = await restoreWorktreeContext(sessionPath, (err) => {
|
|
380
|
+
// eslint-disable-next-line no-console
|
|
381
|
+
console.debug('worktree session restore warning:', err);
|
|
382
|
+
});
|
|
383
|
+
if (restored.contextMessage) {
|
|
384
|
+
// UI: show the notice in the transcript so the user knows.
|
|
385
|
+
historyManager.addItem({ type: MessageType.INFO, text: restored.contextMessage }, Date.now());
|
|
386
|
+
// Model: queue the notice for one-shot injection into the
|
|
387
|
+
// next user prompt (consumed by handleFinalSubmit). The INFO
|
|
388
|
+
// history item alone is UI-only — the model never sees it,
|
|
389
|
+
// so without this it could resume editing the parent
|
|
390
|
+
// checkout despite the user seeing the worktree path.
|
|
391
|
+
pendingWorktreeNoticeRef.current = restored.contextMessage;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
// Best-effort: failures here only affect UI hint visibility,
|
|
396
|
+
// not the resumed conversation itself.
|
|
397
|
+
// eslint-disable-next-line no-console
|
|
398
|
+
console.debug('worktree session restore failed:', error);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
})();
|
|
403
|
+
// Register SessionEnd cleanup for process exit
|
|
404
|
+
registerCleanup(async () => {
|
|
405
|
+
try {
|
|
406
|
+
await config
|
|
407
|
+
.getHookSystem()
|
|
408
|
+
?.fireSessionEndEvent(SessionEndReason.PromptInputExit);
|
|
409
|
+
debugLogger.debug('SessionEnd event completed successfully!!!');
|
|
410
|
+
}
|
|
411
|
+
catch (err) {
|
|
412
|
+
debugLogger.error(`SessionEnd hook failed: ${err}`);
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
registerCleanup(async () => {
|
|
416
|
+
const ideClient = await IdeClient.getInstance();
|
|
417
|
+
await ideClient.disconnect();
|
|
418
|
+
});
|
|
419
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
420
|
+
}, [config]);
|
|
421
|
+
/**
|
|
422
|
+
* PR-A wiring: progressive MCP availability.
|
|
423
|
+
*
|
|
424
|
+
* This effect does two coupled things, both gated on `configInitialized`:
|
|
425
|
+
*
|
|
426
|
+
* 1. **16ms batch-flush of `setTools()`**: as each MCP server completes
|
|
427
|
+
* discover, `McpClientManager` emits `mcp-client-update`. We coalesce
|
|
428
|
+
* these into at most one `GeminiClient.setTools()` call per ~16ms
|
|
429
|
+
* window. With three MCP servers settling within a few ms of each
|
|
430
|
+
* other, the model sees one consolidated tool refresh instead of
|
|
431
|
+
* three back-to-back; with a server stream over 1s, the model sees
|
|
432
|
+
* each batch with at most one frame of lag (this is the gap the
|
|
433
|
+
* baseline measured at 6235 ms in three-mixed-mcp before PR-A).
|
|
434
|
+
*
|
|
435
|
+
* 2. **Deferred startup-profile finalize**: in PR-A's default mode
|
|
436
|
+
* MCP discovery runs in the background, so MCP-related profiler
|
|
437
|
+
* events arrive AFTER `input_enabled`. The profile file is held open
|
|
438
|
+
* until either the manager's discovery state reaches `COMPLETED`
|
|
439
|
+
* (all servers ready or failed) or `STARTUP_PROFILE_FINALIZE_CAP_MS`
|
|
440
|
+
* elapses (so a hung server doesn't keep the profile open forever).
|
|
441
|
+
*
|
|
442
|
+
* In legacy blocking mode (`QWEN_CODE_LEGACY_MCP_BLOCKING=1`) MCP
|
|
443
|
+
* discovery already completed inside `config.initialize()`, so this
|
|
444
|
+
* effect observes `MCPDiscoveryState.COMPLETED` immediately and finalizes
|
|
445
|
+
* without waiting.
|
|
446
|
+
*/
|
|
447
|
+
useEffect(() => {
|
|
448
|
+
if (!isConfigInitialized)
|
|
449
|
+
return undefined;
|
|
450
|
+
const geminiClient = config.getGeminiClient();
|
|
451
|
+
if (!geminiClient)
|
|
452
|
+
return undefined;
|
|
453
|
+
const manager = config.getToolRegistry().getMcpClientManager();
|
|
454
|
+
let flushTimer = null;
|
|
455
|
+
let finalized = false;
|
|
456
|
+
const finalizeOnce = () => {
|
|
457
|
+
if (finalized)
|
|
458
|
+
return;
|
|
459
|
+
finalized = true;
|
|
460
|
+
finalizeStartupProfile(config.getSessionId());
|
|
461
|
+
};
|
|
462
|
+
// Runs the pending batched setTools() immediately and clears the timer.
|
|
463
|
+
// Returns a promise that resolves when setTools() finishes so callers
|
|
464
|
+
// can sequence subsequent work after `gemini_tools_updated` is
|
|
465
|
+
// recorded into the startup profile.
|
|
466
|
+
const flushNow = () => {
|
|
467
|
+
if (flushTimer !== null) {
|
|
468
|
+
clearTimeout(flushTimer);
|
|
469
|
+
flushTimer = null;
|
|
470
|
+
}
|
|
471
|
+
// GeminiClient.setTools() has no try/catch around warmAll() /
|
|
472
|
+
// getFunctionDeclarations() / getChat().setTools(). A silent
|
|
473
|
+
// discard here would make production tool-registration regressions
|
|
474
|
+
// invisible, so route the error through debugLogger.
|
|
475
|
+
return geminiClient.setTools().catch((err) => {
|
|
476
|
+
debugLogger.error(`setTools() batch-flush failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
477
|
+
});
|
|
478
|
+
};
|
|
479
|
+
const scheduleFlush = () => {
|
|
480
|
+
if (flushTimer !== null)
|
|
481
|
+
return;
|
|
482
|
+
flushTimer = setTimeout(() => {
|
|
483
|
+
flushTimer = null;
|
|
484
|
+
void flushNow();
|
|
485
|
+
}, MCP_BATCH_FLUSH_MS);
|
|
486
|
+
};
|
|
487
|
+
// Match the non-interactive entry points (`gemini.tsx`, `session.ts`,
|
|
488
|
+
// `acpAgent.ts`) which warn to stderr when MCP discovery completes with
|
|
489
|
+
// failed servers. The interactive path can't use stderr (it would
|
|
490
|
+
// collide with Ink's rendered output), so we route through
|
|
491
|
+
// `debugLogger.warn` so it shows up under `QWEN_CODE_DEBUG=1` and in
|
|
492
|
+
// the debug log file — matching the channel `setTools()` errors above
|
|
493
|
+
// use. The MCP status footer pill already surfaces failures
|
|
494
|
+
// continuously in the UI; this log is the actionable-on-debug record
|
|
495
|
+
// wenshao asked for in round 7.
|
|
496
|
+
let failureSurfaced = false;
|
|
497
|
+
const surfaceFailuresOnce = () => {
|
|
498
|
+
if (failureSurfaced)
|
|
499
|
+
return;
|
|
500
|
+
failureSurfaced = true;
|
|
501
|
+
const failedNames = typeof config.getFailedMcpServerNames === 'function'
|
|
502
|
+
? config.getFailedMcpServerNames()
|
|
503
|
+
: [];
|
|
504
|
+
if (failedNames.length > 0) {
|
|
505
|
+
debugLogger.warn(`MCP server(s) failed to start: ${failedNames.join(', ')}. ` +
|
|
506
|
+
`Continuing with built-in tools and any servers that did connect.`);
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
const onMcpUpdate = () => {
|
|
510
|
+
if (manager.getDiscoveryState() === MCPDiscoveryState.COMPLETED) {
|
|
511
|
+
// Discovery has settled. Flush the pending setTools() NOW (rather
|
|
512
|
+
// than waiting for the 16ms batch timer) and only finalize after
|
|
513
|
+
// it runs — `setTools()` emits the `gemini_tools_updated` event,
|
|
514
|
+
// and finalizing before it fires would drop that event because
|
|
515
|
+
// the module-level `finalized` guard suppresses every subsequent
|
|
516
|
+
// record. That dropped event is what `gemini_tools_lag` is
|
|
517
|
+
// derived from in the profile summary.
|
|
518
|
+
surfaceFailuresOnce();
|
|
519
|
+
void flushNow().finally(finalizeOnce);
|
|
520
|
+
}
|
|
521
|
+
else {
|
|
522
|
+
scheduleFlush();
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
// Legacy / no-MCP path: discovery already finished synchronously
|
|
526
|
+
// inside config.initialize(), so finalize immediately and only keep
|
|
527
|
+
// the flush listener around for late refreshes (e.g. SkillTool's
|
|
528
|
+
// post-construction refreshSkills triggering setTools).
|
|
529
|
+
if (manager.getDiscoveryState() === MCPDiscoveryState.COMPLETED) {
|
|
530
|
+
surfaceFailuresOnce();
|
|
531
|
+
finalizeOnce();
|
|
532
|
+
}
|
|
533
|
+
appEvents.on('mcp-client-update', onMcpUpdate);
|
|
534
|
+
const finalizeCap = setTimeout(finalizeOnce, STARTUP_PROFILE_FINALIZE_CAP_MS);
|
|
535
|
+
return () => {
|
|
536
|
+
appEvents.off('mcp-client-update', onMcpUpdate);
|
|
537
|
+
if (flushTimer !== null)
|
|
538
|
+
clearTimeout(flushTimer);
|
|
539
|
+
clearTimeout(finalizeCap);
|
|
540
|
+
};
|
|
541
|
+
}, [isConfigInitialized, config]);
|
|
542
|
+
// Track idle state via ref so the update handler can defer notifications
|
|
543
|
+
// while the model is streaming, without triggering re-renders.
|
|
544
|
+
// Note: isIdleRef.current is assigned after streamingState becomes available
|
|
545
|
+
// (see the assignment below useGeminiStream).
|
|
546
|
+
const isIdleRef = useRef(true);
|
|
547
|
+
const updateHandlerRef = useRef(null);
|
|
548
|
+
useEffect(() => {
|
|
549
|
+
const handler = setUpdateHandler(historyManager.addItem, setUpdateInfo, isIdleRef);
|
|
550
|
+
updateHandlerRef.current = handler;
|
|
551
|
+
return () => handler?.cleanup();
|
|
552
|
+
}, [historyManager.addItem]);
|
|
553
|
+
// Derive widths for InputPrompt using shared helper
|
|
554
|
+
const { inputWidth, suggestionsWidth } = useMemo(() => {
|
|
555
|
+
const { inputWidth, suggestionsWidth } = calculatePromptWidths(terminalWidth);
|
|
556
|
+
return { inputWidth, suggestionsWidth };
|
|
557
|
+
}, [terminalWidth]);
|
|
558
|
+
// Uniform width for bordered box components: accounts for margins and caps at 100
|
|
559
|
+
const mainAreaWidth = Math.min(terminalWidth - 4, 100);
|
|
560
|
+
const staticAreaMaxItemHeight = Math.max(terminalHeight * 4, 100);
|
|
561
|
+
const isValidPath = useCallback((filePath) => {
|
|
562
|
+
try {
|
|
563
|
+
return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
|
|
564
|
+
}
|
|
565
|
+
catch (_e) {
|
|
566
|
+
return false;
|
|
567
|
+
}
|
|
568
|
+
}, []);
|
|
569
|
+
const preferredEditor = usePreferredEditor();
|
|
570
|
+
const buffer = useTextBuffer({
|
|
571
|
+
initialText: '',
|
|
572
|
+
viewport: { height: 10, width: inputWidth },
|
|
573
|
+
stdin,
|
|
574
|
+
setRawMode,
|
|
575
|
+
isValidPath,
|
|
576
|
+
shellModeActive,
|
|
577
|
+
preferredEditor,
|
|
578
|
+
});
|
|
579
|
+
useEffect(() => {
|
|
580
|
+
const fetchUserMessages = async () => {
|
|
581
|
+
const pastMessagesRaw = (await logger?.getPreviousUserMessages()) || [];
|
|
582
|
+
const currentSessionUserMessages = historyManager.history
|
|
583
|
+
.filter((item) => item.type === 'user' &&
|
|
584
|
+
typeof item.text === 'string' &&
|
|
585
|
+
item.text.trim() !== '')
|
|
586
|
+
.map((item) => item.text)
|
|
587
|
+
.reverse();
|
|
588
|
+
// Current-session messages are already newest-first; combining with past
|
|
589
|
+
// messages gives a newest-first list. dedupeNewestFirst keeps the first
|
|
590
|
+
// (newest) occurrence so resubmitting an old prompt promotes it to
|
|
591
|
+
// "most recent" rather than leaving a stale copy at an older position.
|
|
592
|
+
const combinedMessages = [
|
|
593
|
+
...currentSessionUserMessages,
|
|
594
|
+
...pastMessagesRaw,
|
|
595
|
+
];
|
|
596
|
+
setUserMessages(dedupeNewestFirst(combinedMessages).reverse());
|
|
597
|
+
};
|
|
598
|
+
fetchUserMessages();
|
|
599
|
+
}, [historyManager.history, logger]);
|
|
600
|
+
const remountStaticHistory = useCallback(() => {
|
|
601
|
+
setHistoryRemountKey((prev) => prev + 1);
|
|
602
|
+
}, []);
|
|
603
|
+
// In VP mode (ui.useTerminalBuffer) the React tree fully owns the visible
|
|
604
|
+
// region via ink 7 native overflow clipping. Writing clearTerminal /
|
|
605
|
+
// cursorTo+eraseDown would be a wasted flash and would also corrupt the
|
|
606
|
+
// in-app scroll position. The remount-key bump is also a near-no-op for
|
|
607
|
+
// VP: nothing in the VP render path is keyed by historyRemountKey, so
|
|
608
|
+
// the only reason to bump it is to keep the legacy `<Static>` branch in
|
|
609
|
+
// sync if the user toggles `useTerminalBuffer` off mid-session. The
|
|
610
|
+
// visible refresh in VP mode comes for free from the React tree
|
|
611
|
+
// re-reading `mergedHistory` / `allVirtualItems` on whatever state
|
|
612
|
+
// change triggered refreshStatic (Ctrl+O, model change, etc.).
|
|
613
|
+
const useTerminalBuffer = settings.merged.ui?.useTerminalBuffer ?? false;
|
|
614
|
+
const refreshStatic = useCallback(() => {
|
|
615
|
+
if (!useTerminalBuffer) {
|
|
616
|
+
stdout.write(ansiEscapes.clearTerminal);
|
|
617
|
+
}
|
|
618
|
+
remountStaticHistory();
|
|
619
|
+
}, [useTerminalBuffer, remountStaticHistory, stdout]);
|
|
620
|
+
// Targeted repaint for resize events: move cursor to top-left and erase
|
|
621
|
+
// downward instead of a full clearTerminal, avoiding the full-screen
|
|
622
|
+
// flash. Ink's <Static> region is append-only, so when terminal width
|
|
623
|
+
// changes (tmux split, fullscreen toggle, font size change) we must
|
|
624
|
+
// explicitly re-emit the static history at the new width — otherwise
|
|
625
|
+
// header content stays at the old width and visibly tears.
|
|
626
|
+
// VP mode handles resize via ink's reflow + its own overflow clipping, so
|
|
627
|
+
// the physical write is unnecessary there too.
|
|
628
|
+
const repaintStaticViewport = useCallback(() => {
|
|
629
|
+
if (!useTerminalBuffer) {
|
|
630
|
+
stdout.write(`${ansiEscapes.cursorTo(0, 0)}${ansiEscapes.eraseDown}`);
|
|
631
|
+
}
|
|
632
|
+
remountStaticHistory();
|
|
633
|
+
}, [useTerminalBuffer, remountStaticHistory, stdout]);
|
|
634
|
+
// Track previous terminal width across renders so we only repaint when
|
|
635
|
+
// the width actually changes. Initialized to the current width to avoid
|
|
636
|
+
// a spurious repaint on first mount.
|
|
637
|
+
const previousTerminalWidthRef = useRef(terminalWidth);
|
|
638
|
+
// Keep the static header in sync with model changes without polling.
|
|
639
|
+
// Ink's <Static> output is append-only, so model changes must explicitly
|
|
640
|
+
// clear and remount the static region to redraw the banner at the top.
|
|
641
|
+
//
|
|
642
|
+
// Two requirements pull in opposite directions:
|
|
643
|
+
// (a) refreshStatic() must NOT be called from inside a setState updater,
|
|
644
|
+
// because React.StrictMode double-invokes updaters in dev and we'd
|
|
645
|
+
// fire two clearTerminal writes per model swap.
|
|
646
|
+
// (b) setHistoryRemountKey (inside refreshStatic) and setCurrentModel
|
|
647
|
+
// MUST land in the SAME commit. MainContent's <Static> key is
|
|
648
|
+
// `${historyRemountKey}-${currentModel}` and its render-phase
|
|
649
|
+
// progressive-replay reset (lastRemountKey !== historyRemountKey)
|
|
650
|
+
// only fires when historyRemountKey changes. If currentModel
|
|
651
|
+
// changes first in its own render, Static remounts with the OLD
|
|
652
|
+
// remount key and the unreset (full-length) replayCount — i.e.
|
|
653
|
+
// a full-history Static render that bypasses progressive replay
|
|
654
|
+
// (the issue #3899 freeze regression). See PR #4119 review.
|
|
655
|
+
//
|
|
656
|
+
// Fix: side-effect lives in the event handler (NOT the updater); a ref
|
|
657
|
+
// guard de-dupes same-model notifications. React batches the
|
|
658
|
+
// setHistoryRemountKey (via refreshStatic) and setCurrentModel calls in
|
|
659
|
+
// this event handler into a single commit, so the render-phase reset
|
|
660
|
+
// and the Static remount happen together — no full-history flash.
|
|
661
|
+
const lastNotifiedModelRef = useRef(currentModel);
|
|
662
|
+
useEffect(() => {
|
|
663
|
+
const unsubscribe = config.onModelChange((model) => {
|
|
664
|
+
if (lastNotifiedModelRef.current === model) {
|
|
665
|
+
return;
|
|
666
|
+
}
|
|
667
|
+
lastNotifiedModelRef.current = model;
|
|
668
|
+
refreshStatic();
|
|
669
|
+
setCurrentModel(model);
|
|
670
|
+
});
|
|
671
|
+
return unsubscribe;
|
|
672
|
+
}, [config, refreshStatic]);
|
|
673
|
+
const { isThemeDialogOpen, openThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError);
|
|
674
|
+
const { isApprovalModeDialogOpen, openApprovalModeDialog, handleApprovalModeSelect, } = useApprovalModeCommand(settings, config);
|
|
675
|
+
const auth = useAuthCommand(settings, config, historyManager.addItem, refreshStatic);
|
|
676
|
+
const { state: authState, actions: authActions } = auth;
|
|
677
|
+
const { onAuthError, openAuthDialog, closeAuthDialog } = authActions;
|
|
678
|
+
const { isAuthDialogOpen, isAuthenticating, pendingAuthType } = authState;
|
|
679
|
+
useInitializationAuthError(initializationResult.authError, onAuthError);
|
|
680
|
+
// Sync user tier from config when authentication changes
|
|
681
|
+
// TODO: Implement getUserTier() method on Config if needed
|
|
682
|
+
// useEffect(() => {
|
|
683
|
+
// if (authState === AuthState.Authenticated) {
|
|
684
|
+
// setUserTier(config.getUserTier());
|
|
685
|
+
// }
|
|
686
|
+
// }, [config, authState]);
|
|
687
|
+
// Check for enforced auth type mismatch
|
|
688
|
+
useEffect(() => {
|
|
689
|
+
// Check for initialization error first
|
|
690
|
+
const currentAuthType = config.getModelsConfig().getCurrentAuthType();
|
|
691
|
+
if (settings.merged.security?.auth?.enforcedType &&
|
|
692
|
+
currentAuthType &&
|
|
693
|
+
settings.merged.security?.auth.enforcedType !== currentAuthType) {
|
|
694
|
+
onAuthError(t('Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.', {
|
|
695
|
+
enforcedType: String(settings.merged.security?.auth.enforcedType),
|
|
696
|
+
currentType: String(currentAuthType),
|
|
697
|
+
}));
|
|
698
|
+
}
|
|
699
|
+
}, [settings.merged.security?.auth?.enforcedType, config, onAuthError]);
|
|
700
|
+
const [editorError, setEditorError] = useState(null);
|
|
701
|
+
const { isEditorDialogOpen, openEditorDialog, handleEditorSelect, exitEditorDialog, } = useEditorSettings(settings, setEditorError, historyManager.addItem);
|
|
702
|
+
const { isSettingsDialogOpen, openSettingsDialog, closeSettingsDialog } = useSettingsCommand();
|
|
703
|
+
const [isStatusLineDialogOpen, setStatusLineDialogOpen] = useState(false);
|
|
704
|
+
const openStatusLineDialog = useCallback(() => setStatusLineDialogOpen(true), []);
|
|
705
|
+
const closeStatusLineDialog = useCallback(() => setStatusLineDialogOpen(false), []);
|
|
706
|
+
const [statusLineSettingsVersion, setStatusLineSettingsVersion] = useState(0);
|
|
707
|
+
const [statusLineConfigOverride, setStatusLineConfigOverride] = useState(undefined);
|
|
708
|
+
const notifyStatusLineSettingsChanged = useCallback((newConfig) => {
|
|
709
|
+
setStatusLineConfigOverride(newConfig);
|
|
710
|
+
setStatusLineSettingsVersion((version) => version + 1);
|
|
711
|
+
}, []);
|
|
712
|
+
const { isMemoryDialogOpen, openMemoryDialog, closeMemoryDialog } = useMemoryDialog();
|
|
713
|
+
const { isModelDialogOpen, isFastModelMode, openModelDialog, closeModelDialog, } = useModelCommand();
|
|
714
|
+
const { activeArenaDialog, openArenaDialog, closeArenaDialog } = useArenaCommand();
|
|
715
|
+
// Session name state (set via /rename, restored on /resume)
|
|
716
|
+
const [sessionName, setSessionName] = useState(null);
|
|
717
|
+
const { isResumeDialogOpen, resumeMatchedSessions, openResumeDialog, closeResumeDialog, handleResume, } = useResumeCommand({
|
|
718
|
+
config,
|
|
719
|
+
historyManager,
|
|
720
|
+
startNewSession,
|
|
721
|
+
setSessionName,
|
|
722
|
+
remount: refreshStatic,
|
|
723
|
+
});
|
|
724
|
+
const { handleBranch } = useBranchCommand({
|
|
725
|
+
config,
|
|
726
|
+
historyManager,
|
|
727
|
+
startNewSession,
|
|
728
|
+
setSessionName,
|
|
729
|
+
remount: refreshStatic,
|
|
730
|
+
});
|
|
731
|
+
const { isDeleteDialogOpen, openDeleteDialog, closeDeleteDialog, handleDelete, handleDeleteMany, } = useDeleteCommand({
|
|
732
|
+
config,
|
|
733
|
+
addItem: historyManager.addItem,
|
|
734
|
+
});
|
|
735
|
+
const [isHelpDialogOpen, setHelpDialogOpen] = useState(false);
|
|
736
|
+
const [activeHelpTab, setHelpTab] = useState('general');
|
|
737
|
+
const openHelpDialog = useCallback(() => setHelpDialogOpen(true), []);
|
|
738
|
+
const closeHelpDialog = useCallback(() => setHelpDialogOpen(false), []);
|
|
739
|
+
const { vimEnabled, vimMode } = useVimModeState();
|
|
740
|
+
const { toggleVimEnabled } = useVimModeActions();
|
|
741
|
+
const { isSubagentCreateDialogOpen, openSubagentCreateDialog, closeSubagentCreateDialog, } = useSubagentCreateDialog();
|
|
742
|
+
const { isAgentsManagerDialogOpen, openAgentsManagerDialog, closeAgentsManagerDialog, } = useAgentsManagerDialog();
|
|
743
|
+
const { isSkillsManagerDialogOpen, openSkillsManagerDialog, closeSkillsManagerDialog, } = useSkillsManagerDialog();
|
|
744
|
+
const { isExtensionsManagerDialogOpen, openExtensionsManagerDialog, closeExtensionsManagerDialog, } = useExtensionsManagerDialog();
|
|
745
|
+
const { isMcpDialogOpen, openMcpDialog, closeMcpDialog } = useMcpDialog();
|
|
746
|
+
const { isHooksDialogOpen, openHooksDialog, closeHooksDialog } = useHooksDialog();
|
|
747
|
+
const { isStatsDialogOpen, openStatsDialog, closeStatsDialog } = useStatsDialog();
|
|
748
|
+
// Ref bridge: the guarded openRewindSelector callback is defined later
|
|
749
|
+
// (after useDoublePress), but slashCommandActions needs it now. The ref
|
|
750
|
+
// lets the useMemo capture a stable function pointer whose implementation
|
|
751
|
+
// is swapped in once the real callback exists.
|
|
752
|
+
const openRewindSelectorRef = useRef(() => { });
|
|
753
|
+
// /diff opens a per-turn diff dialog. Unlike rewind, no double-press or
|
|
754
|
+
// history-bound guard is needed, so the open/close handlers can live here
|
|
755
|
+
// (no ref bridge required).
|
|
756
|
+
const [isDiffDialogOpen, setIsDiffDialogOpen] = useState(false);
|
|
757
|
+
const openDiffDialog = useCallback(() => {
|
|
758
|
+
setIsDiffDialogOpen(true);
|
|
759
|
+
}, []);
|
|
760
|
+
const closeDiffDialog = useCallback(() => {
|
|
761
|
+
setIsDiffDialogOpen(false);
|
|
762
|
+
}, []);
|
|
763
|
+
const slashCommandActions = useMemo(() => ({
|
|
764
|
+
openAuthDialog,
|
|
765
|
+
openThemeDialog,
|
|
766
|
+
openEditorDialog,
|
|
767
|
+
openMemoryDialog,
|
|
768
|
+
openSettingsDialog,
|
|
769
|
+
openStatusLineDialog,
|
|
770
|
+
openModelDialog,
|
|
771
|
+
openTrustDialog,
|
|
772
|
+
openArenaDialog,
|
|
773
|
+
openPermissionsDialog,
|
|
774
|
+
openApprovalModeDialog,
|
|
775
|
+
quit: (messages) => {
|
|
776
|
+
setQuittingMessages(messages);
|
|
777
|
+
setTimeout(async () => {
|
|
778
|
+
await runExitCleanup();
|
|
779
|
+
process.exit(0);
|
|
780
|
+
}, 100);
|
|
781
|
+
},
|
|
782
|
+
setDebugMessage,
|
|
783
|
+
dispatchExtensionStateUpdate,
|
|
784
|
+
addConfirmUpdateExtensionRequest,
|
|
785
|
+
openSubagentCreateDialog,
|
|
786
|
+
openAgentsManagerDialog,
|
|
787
|
+
openSkillsManagerDialog,
|
|
788
|
+
openExtensionsManagerDialog,
|
|
789
|
+
openMcpDialog,
|
|
790
|
+
openHooksDialog,
|
|
791
|
+
openStatsDialog,
|
|
792
|
+
openResumeDialog,
|
|
793
|
+
openRewindSelector: () => openRewindSelectorRef.current(),
|
|
794
|
+
openDiffDialog,
|
|
795
|
+
handleResume,
|
|
796
|
+
handleBranch,
|
|
797
|
+
openDeleteDialog,
|
|
798
|
+
openHelpDialog,
|
|
799
|
+
}), [
|
|
800
|
+
openAuthDialog,
|
|
801
|
+
openThemeDialog,
|
|
802
|
+
openEditorDialog,
|
|
803
|
+
openMemoryDialog,
|
|
804
|
+
openSettingsDialog,
|
|
805
|
+
openStatusLineDialog,
|
|
806
|
+
openModelDialog,
|
|
807
|
+
openArenaDialog,
|
|
808
|
+
setDebugMessage,
|
|
809
|
+
dispatchExtensionStateUpdate,
|
|
810
|
+
openTrustDialog,
|
|
811
|
+
openPermissionsDialog,
|
|
812
|
+
openApprovalModeDialog,
|
|
813
|
+
addConfirmUpdateExtensionRequest,
|
|
814
|
+
openSubagentCreateDialog,
|
|
815
|
+
openAgentsManagerDialog,
|
|
816
|
+
openSkillsManagerDialog,
|
|
817
|
+
openExtensionsManagerDialog,
|
|
818
|
+
openMcpDialog,
|
|
819
|
+
openHooksDialog,
|
|
820
|
+
openStatsDialog,
|
|
821
|
+
openResumeDialog,
|
|
822
|
+
handleResume,
|
|
823
|
+
handleBranch,
|
|
824
|
+
openDeleteDialog,
|
|
825
|
+
openHelpDialog,
|
|
826
|
+
openDiffDialog,
|
|
827
|
+
]);
|
|
828
|
+
const { handleSlashCommand, slashCommands, recentSlashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, btwItem, setBtwItem, cancelBtw, commandContext, shellConfirmationRequest, confirmationRequest, reloadCommands, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, remountStaticHistory, toggleVimEnabled, isProcessing, setIsProcessing, isIdleRef, setGeminiMdFileCount, slashCommandActions, extensionsUpdateStateInternal, isConfigInitialized, logger, historyManager.updateItem, setSessionName);
|
|
829
|
+
// onDebugMessage should log to debug logfile, not update footer debugMessage
|
|
830
|
+
const onDebugMessage = useCallback((message) => {
|
|
831
|
+
config.getDebugLogger().debug(message);
|
|
832
|
+
}, [config]);
|
|
833
|
+
const handleWorktreeExit = useCallback(async (choice) => {
|
|
834
|
+
if (choice === 'cancel') {
|
|
835
|
+
setShowWorktreeExitDialog(false);
|
|
836
|
+
return;
|
|
837
|
+
}
|
|
838
|
+
setShowWorktreeExitDialog(false);
|
|
839
|
+
if (choice === 'remove' && activeWorktree) {
|
|
840
|
+
try {
|
|
841
|
+
// Anchor at the repo top-level (captured at enter time) rather
|
|
842
|
+
// than the current targetDir — when the CLI was launched from
|
|
843
|
+
// a monorepo subdirectory, `config.getTargetDir()` is that
|
|
844
|
+
// subdir but the worktree lives at `<repoRoot>/.qwen/worktrees/`,
|
|
845
|
+
// so a service rooted at the subdir would never find it. (PR
|
|
846
|
+
// #4174 review finding 3252368637.)
|
|
847
|
+
const svc = new GitWorktreeService(activeWorktree.originalCwd);
|
|
848
|
+
// Ownership guard — read the in-worktree session marker and
|
|
849
|
+
// refuse to remove a worktree owned by a different session
|
|
850
|
+
// (stale sidecar, copied state from another machine, etc.).
|
|
851
|
+
// Mirrors the guard ExitWorktreeTool applies on the model
|
|
852
|
+
// path; without it the dialog could destroy a worktree it
|
|
853
|
+
// doesn't own. (PR #4174 review #3259975247.)
|
|
854
|
+
const owner = await readWorktreeSessionMarker(activeWorktree.path);
|
|
855
|
+
const currentSessionId = config.getSessionId();
|
|
856
|
+
if (owner !== null && owner !== currentSessionId) {
|
|
857
|
+
historyManager.addItem({
|
|
858
|
+
type: MessageType.ERROR,
|
|
859
|
+
text: `Refusing to remove worktree "${activeWorktree.slug}" — ` +
|
|
860
|
+
`it was created by a different session (owner=${owner}). ` +
|
|
861
|
+
`Resume the owning session to drop it, or remove it ` +
|
|
862
|
+
`manually with \`git worktree remove ${activeWorktree.path}\`.`,
|
|
863
|
+
}, Date.now());
|
|
864
|
+
return;
|
|
865
|
+
}
|
|
866
|
+
// The user just clicked Remove on a dialog that already showed
|
|
867
|
+
// the dirty-state and unmerged-commit counts ("discards N
|
|
868
|
+
// commits, M files"). Force-delete the branch to honour that
|
|
869
|
+
// intent — without it, `git branch -d` refuses unmerged
|
|
870
|
+
// commits and the branch is silently preserved, contradicting
|
|
871
|
+
// the dialog text. (Finding 3252368640 part 2.)
|
|
872
|
+
const result = await svc.removeUserWorktree(activeWorktree.slug, {
|
|
873
|
+
deleteBranch: true,
|
|
874
|
+
forceDeleteBranch: true,
|
|
875
|
+
});
|
|
876
|
+
// removeUserWorktree returns {success, error} on failure — it
|
|
877
|
+
// does NOT throw — so the previous try/catch never tripped on
|
|
878
|
+
// a soft failure. If removal failed, leave the sidecar intact
|
|
879
|
+
// so the next --resume can still see the worktree. Surface
|
|
880
|
+
// the error in history and stay in the session so the user
|
|
881
|
+
// can decide what to do (retry via exit_worktree, fix the
|
|
882
|
+
// underlying problem, or force-quit). Previously the dialog
|
|
883
|
+
// silently /quit on failure, contradicting the "discards N
|
|
884
|
+
// commits, M files" intent the user clicked Remove on.
|
|
885
|
+
// (Findings 3252368640 part 1 + 3256237933.)
|
|
886
|
+
if (!result.success) {
|
|
887
|
+
historyManager.addItem({
|
|
888
|
+
type: MessageType.ERROR,
|
|
889
|
+
text: `Failed to remove worktree "${activeWorktree.slug}": ` +
|
|
890
|
+
`${result.error ?? 'unknown error'}. The worktree is ` +
|
|
891
|
+
`still on disk; use \`exit_worktree\` to retry or ` +
|
|
892
|
+
`remove it manually with \`git worktree remove\`.`,
|
|
893
|
+
}, Date.now());
|
|
894
|
+
return;
|
|
895
|
+
}
|
|
896
|
+
await clearWorktreeSession(config
|
|
897
|
+
.getSessionService()
|
|
898
|
+
.getWorktreeSessionPath(config.getSessionId()));
|
|
899
|
+
}
|
|
900
|
+
catch (error) {
|
|
901
|
+
// Hard failure (e.g. git binary missing, GitWorktreeService
|
|
902
|
+
// constructor threw). Same treatment as the soft failure
|
|
903
|
+
// path: surface to the user and stay alive — silent /quit
|
|
904
|
+
// here would leave the user wondering whether the worktree
|
|
905
|
+
// was actually removed.
|
|
906
|
+
historyManager.addItem({
|
|
907
|
+
type: MessageType.ERROR,
|
|
908
|
+
text: `Worktree removal failed for "${activeWorktree.slug}": ` +
|
|
909
|
+
`${error instanceof Error ? error.message : String(error)}. ` +
|
|
910
|
+
`Use \`exit_worktree\` or remove it manually.`,
|
|
911
|
+
}, Date.now());
|
|
912
|
+
return;
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
handleSlashCommand('/quit');
|
|
916
|
+
}, [activeWorktree, config, handleSlashCommand, historyManager]);
|
|
917
|
+
const performMemoryRefresh = useCallback(async () => {
|
|
918
|
+
historyManager.addItem({
|
|
919
|
+
type: MessageType.INFO,
|
|
920
|
+
text: 'Refreshing hierarchical memory (QWEN.md or other context files)...',
|
|
921
|
+
}, Date.now());
|
|
922
|
+
try {
|
|
923
|
+
const { memoryContent, fileCount, conditionalRules, projectRoot } = await loadHierarchicalGeminiMemory(process.cwd(), settings.merged.context?.loadFromIncludeDirectories
|
|
924
|
+
? config.getWorkspaceContext().getDirectories()
|
|
925
|
+
: [], config.getFileService(), config.getExtensionContextFilePaths(), config.isTrustedFolder(), settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
|
|
926
|
+
config.getContextRuleExcludes(), {
|
|
927
|
+
loadReason: 'refresh',
|
|
928
|
+
onInstructionsLoaded: createInstructionsLoadedCallback(() => config.getHookSystem()),
|
|
929
|
+
});
|
|
930
|
+
config.setUserMemory(memoryContent);
|
|
931
|
+
config.setGeminiMdFileCount(fileCount);
|
|
932
|
+
config.setConditionalRulesRegistry(new ConditionalRulesRegistry(conditionalRules, projectRoot));
|
|
933
|
+
setGeminiMdFileCount(fileCount);
|
|
934
|
+
historyManager.addItem({
|
|
935
|
+
type: MessageType.INFO,
|
|
936
|
+
text: `Memory refreshed successfully. ${memoryContent.length > 0
|
|
937
|
+
? `Loaded ${memoryContent.length} characters from ${fileCount} file(s).`
|
|
938
|
+
: 'No memory content found.'}`,
|
|
939
|
+
}, Date.now());
|
|
940
|
+
debugLogger.debug(`[DEBUG] Refreshed memory content in config: ${memoryContent.substring(0, 200)}...`);
|
|
941
|
+
}
|
|
942
|
+
catch (error) {
|
|
943
|
+
const errorMessage = getErrorMessage(error);
|
|
944
|
+
historyManager.addItem({
|
|
945
|
+
type: MessageType.ERROR,
|
|
946
|
+
text: `Error refreshing memory: ${errorMessage}`,
|
|
947
|
+
}, Date.now());
|
|
948
|
+
debugLogger.error('Error refreshing memory:', error);
|
|
949
|
+
}
|
|
950
|
+
}, [config, historyManager, settings.merged]);
|
|
951
|
+
const cancelHandlerRef = useRef(() => { });
|
|
952
|
+
const midTurnDrainRef = useRef(null);
|
|
953
|
+
const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, retryLastPrompt, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, pendingToolCalls, streamingResponseLengthRef, isReceivingContent, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, onDebugMessage, handleSlashCommand, shellModeActive, () => settings.merged.general?.preferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, (info) => cancelHandlerRef.current(info), setEmbeddedShellFocused, terminalWidth, terminalHeight, midTurnDrainRef, logger);
|
|
954
|
+
// Now that streamingState is available, keep isIdleRef in sync and
|
|
955
|
+
// flush any deferred update notifications when the model finishes responding.
|
|
956
|
+
isIdleRef.current = streamingState === StreamingState.Idle;
|
|
957
|
+
useEffect(() => {
|
|
958
|
+
if (streamingState === StreamingState.Idle) {
|
|
959
|
+
updateHandlerRef.current?.flush();
|
|
960
|
+
}
|
|
961
|
+
}, [streamingState]);
|
|
962
|
+
// Contextual tips — show tips based on context usage after model responses
|
|
963
|
+
// Defer TipHistory loading when tips are disabled to avoid side effects
|
|
964
|
+
// (sessionCount increment + disk write) when the user has opted out.
|
|
965
|
+
const tipsDisabled = !!(settings.merged.ui?.hideTips || config.getScreenReader());
|
|
966
|
+
const tipHistory = useMemo(() => (tipsDisabled ? null : getTipHistory()), [tipsDisabled]);
|
|
967
|
+
useContextualTips({
|
|
968
|
+
streamingState,
|
|
969
|
+
lastPromptTokenCount: sessionStats.lastPromptTokenCount,
|
|
970
|
+
sessionPromptCount: sessionStats.promptCount,
|
|
971
|
+
config,
|
|
972
|
+
tipHistory,
|
|
973
|
+
addItem: historyManager.addItem,
|
|
974
|
+
hideTips: tipsDisabled,
|
|
975
|
+
});
|
|
976
|
+
// Track whether the input area has any Tab consumer (autocomplete dropdown,
|
|
977
|
+
// followup suggestion, mid-input ghost text, reverse/command search). When
|
|
978
|
+
// true, we suppress the Windows-only "bare Tab cycles approval mode"
|
|
979
|
+
// fallback so a single Tab keystroke triggers only one action. See #4171.
|
|
980
|
+
const [hasTabConsumer, setHasTabConsumer] = useState(false);
|
|
981
|
+
const agentViewState = useAgentViewState();
|
|
982
|
+
const { dialogOpen: bgTasksDialogOpen } = useBackgroundTaskViewState();
|
|
983
|
+
const { closeDialog: closeBgTasksDialog } = useBackgroundTaskViewActions();
|
|
984
|
+
// Prompt suggestion state
|
|
985
|
+
const [promptSuggestion, setPromptSuggestion] = useState(null);
|
|
986
|
+
const prevStreamingStateRef = useRef(StreamingState.Idle);
|
|
987
|
+
const speculationRef = useRef(IDLE_SPECULATION);
|
|
988
|
+
const suggestionAbortRef = useRef(null);
|
|
989
|
+
// Dismiss callback — clears suggestion + aborts in-flight generation/speculation
|
|
990
|
+
const dismissPromptSuggestion = useCallback(() => {
|
|
991
|
+
setPromptSuggestion(null);
|
|
992
|
+
suggestionAbortRef.current?.abort();
|
|
993
|
+
suggestionAbortRef.current = null;
|
|
994
|
+
}, []);
|
|
995
|
+
// Auto-accept indicator — disabled on agent tabs (agents handle their own)
|
|
996
|
+
const geminiClient = config.getGeminiClient();
|
|
997
|
+
const showAutoAcceptIndicator = useAutoAcceptIndicator({
|
|
998
|
+
config,
|
|
999
|
+
settings,
|
|
1000
|
+
addItem: historyManager.addItem,
|
|
1001
|
+
onApprovalModeChange: handleApprovalModeChange,
|
|
1002
|
+
shouldBlockTab: () => hasTabConsumer,
|
|
1003
|
+
disabled: agentViewState.activeView !== 'main',
|
|
1004
|
+
});
|
|
1005
|
+
const { messageQueue, addMessage, popAllMessages, drainQueue, popNextSegment, } = useMessageQueue();
|
|
1006
|
+
// Bridge message queue to mid-turn drain via ref.
|
|
1007
|
+
// drainQueue reads the synchronous queueRef inside the hook, so it
|
|
1008
|
+
// stays consistent with popNextSegment even before React re-renders.
|
|
1009
|
+
midTurnDrainRef.current = drainQueue;
|
|
1010
|
+
// Connect remote input watcher to submitQuery for bidirectional sync.
|
|
1011
|
+
// When an external process writes a command to the input-file,
|
|
1012
|
+
// the watcher calls submitQuery as if the user typed it in the TUI.
|
|
1013
|
+
const remoteInput = useRemoteInput();
|
|
1014
|
+
useEffect(() => {
|
|
1015
|
+
if (!remoteInput)
|
|
1016
|
+
return;
|
|
1017
|
+
remoteInput.setSubmitFn((text) => submitQuery(text));
|
|
1018
|
+
}, [remoteInput, submitQuery]);
|
|
1019
|
+
// Notify remote input watcher when TUI becomes idle so it can
|
|
1020
|
+
// retry queued commands that were deferred while TUI was busy.
|
|
1021
|
+
useEffect(() => {
|
|
1022
|
+
if (!remoteInput)
|
|
1023
|
+
return;
|
|
1024
|
+
if (streamingState === StreamingState.Idle) {
|
|
1025
|
+
remoteInput.notifyIdle();
|
|
1026
|
+
}
|
|
1027
|
+
}, [remoteInput, streamingState]);
|
|
1028
|
+
// Dual-output tool-confirmation bridge.
|
|
1029
|
+
//
|
|
1030
|
+
// When a tool call enters awaiting_approval we emit a `control_request`
|
|
1031
|
+
// (subtype: can_use_tool) on the dual-output channel so an external
|
|
1032
|
+
// consumer can decide. Whichever side resolves first (TUI native UI or
|
|
1033
|
+
// `confirmation_response` written to --input-file) wins; we always emit
|
|
1034
|
+
// a `control_response` mirroring the final decision so observers stay in
|
|
1035
|
+
// sync.
|
|
1036
|
+
const dualOutput = useDualOutput();
|
|
1037
|
+
const confirmRequestMap = useRef(new Map()); // requestId → callId
|
|
1038
|
+
const confirmCallIdMap = useRef(new Map()); // callId → requestId
|
|
1039
|
+
const confirmEmitted = useRef(new Set());
|
|
1040
|
+
useEffect(() => {
|
|
1041
|
+
if (!dualOutput || !dualOutput.isConnected)
|
|
1042
|
+
return;
|
|
1043
|
+
for (const tc of pendingToolCalls) {
|
|
1044
|
+
if (tc.status === 'awaiting_approval' &&
|
|
1045
|
+
!confirmEmitted.current.has(tc.request.callId)) {
|
|
1046
|
+
const requestId = crypto.randomUUID();
|
|
1047
|
+
confirmRequestMap.current.set(requestId, tc.request.callId);
|
|
1048
|
+
confirmCallIdMap.current.set(tc.request.callId, requestId);
|
|
1049
|
+
confirmEmitted.current.add(tc.request.callId);
|
|
1050
|
+
dualOutput.emitPermissionRequest(requestId, tc.request.name, tc.request.callId, tc.request.args);
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
// Detect tools that left awaiting_approval (TUI-native resolution) so we
|
|
1054
|
+
// can emit a matching control_response back to external consumers.
|
|
1055
|
+
for (const [callId, requestId] of confirmCallIdMap.current) {
|
|
1056
|
+
const tc = pendingToolCalls.find((t) => t.request.callId === callId);
|
|
1057
|
+
if (tc &&
|
|
1058
|
+
tc.status !== 'awaiting_approval' &&
|
|
1059
|
+
confirmEmitted.current.has(callId)) {
|
|
1060
|
+
const allowed = tc.status !== 'cancelled' && tc.status !== 'error';
|
|
1061
|
+
dualOutput.emitControlResponse(requestId, allowed);
|
|
1062
|
+
confirmRequestMap.current.delete(requestId);
|
|
1063
|
+
confirmCallIdMap.current.delete(callId);
|
|
1064
|
+
confirmEmitted.current.delete(callId);
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
}, [dualOutput, pendingToolCalls]);
|
|
1068
|
+
// Keep latest state in refs so the confirmation handler (registered once)
|
|
1069
|
+
// always reads current values without needing re-registration.
|
|
1070
|
+
const pendingToolCallsRef = useRef(pendingToolCalls);
|
|
1071
|
+
pendingToolCallsRef.current = pendingToolCalls;
|
|
1072
|
+
const dualOutputRef = useRef(dualOutput);
|
|
1073
|
+
dualOutputRef.current = dualOutput;
|
|
1074
|
+
// Route confirmation_response commands written to --input-file back into
|
|
1075
|
+
// the tool's onConfirm handler. Registered once (deps: [remoteInput]) to
|
|
1076
|
+
// avoid teardown/re-registration churn on every pendingToolCalls change.
|
|
1077
|
+
useEffect(() => {
|
|
1078
|
+
if (!remoteInput)
|
|
1079
|
+
return;
|
|
1080
|
+
remoteInput.setConfirmationHandler((requestId, allowed) => {
|
|
1081
|
+
const callId = confirmRequestMap.current.get(requestId);
|
|
1082
|
+
if (!callId) {
|
|
1083
|
+
dualOutputRef.current?.emitControlError(requestId, 'unknown request_id (already resolved, cancelled, or never issued)');
|
|
1084
|
+
return;
|
|
1085
|
+
}
|
|
1086
|
+
const tc = pendingToolCallsRef.current.find((t) => t.request.callId === callId && t.status === 'awaiting_approval');
|
|
1087
|
+
if (!tc) {
|
|
1088
|
+
dualOutputRef.current?.emitControlError(requestId, 'tool call is no longer awaiting approval');
|
|
1089
|
+
return;
|
|
1090
|
+
}
|
|
1091
|
+
const waitingTc = tc;
|
|
1092
|
+
if (!waitingTc.confirmationDetails?.onConfirm) {
|
|
1093
|
+
dualOutputRef.current?.emitControlError(requestId, 'tool call has no onConfirm handler');
|
|
1094
|
+
return;
|
|
1095
|
+
}
|
|
1096
|
+
void waitingTc.confirmationDetails.onConfirm(allowed
|
|
1097
|
+
? ToolConfirmationOutcome.ProceedOnce
|
|
1098
|
+
: ToolConfirmationOutcome.Cancel);
|
|
1099
|
+
// Do NOT clean up maps here — let the mirror useEffect (line ~870)
|
|
1100
|
+
// detect the state transition and emit control_response + clean up,
|
|
1101
|
+
// keeping the emission path symmetric for both TUI-native and
|
|
1102
|
+
// external-initiated resolutions.
|
|
1103
|
+
});
|
|
1104
|
+
return () => {
|
|
1105
|
+
remoteInput.setConfirmationHandler(() => { });
|
|
1106
|
+
};
|
|
1107
|
+
}, [remoteInput]);
|
|
1108
|
+
// Callback for handling final submit (must be after addMessage from useMessageQueue)
|
|
1109
|
+
const handleFinalSubmit = useCallback((submittedValue) => {
|
|
1110
|
+
// Route to active in-process agent if viewing a sub-agent tab.
|
|
1111
|
+
if (agentViewState.activeView !== 'main') {
|
|
1112
|
+
const agent = agentViewState.agents.get(agentViewState.activeView);
|
|
1113
|
+
if (agent) {
|
|
1114
|
+
agent.interactiveAgent.enqueueMessage(submittedValue.trim());
|
|
1115
|
+
return;
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
// Phase C: one-shot worktree restore reminder. Set during --resume
|
|
1119
|
+
// when the persisted sidecar names a live worktree. We only inject
|
|
1120
|
+
// on top-level user prompts (not btw-during-response, not slash
|
|
1121
|
+
// commands — those go through different paths). Once consumed,
|
|
1122
|
+
// clear the ref so subsequent prompts aren't repeatedly prefixed.
|
|
1123
|
+
const worktreeNotice = pendingWorktreeNoticeRef.current;
|
|
1124
|
+
if (worktreeNotice && !isSlashCommand(submittedValue)) {
|
|
1125
|
+
pendingWorktreeNoticeRef.current = null;
|
|
1126
|
+
submittedValue =
|
|
1127
|
+
`<system-reminder>\n${worktreeNotice}\n</system-reminder>\n\n` +
|
|
1128
|
+
submittedValue;
|
|
1129
|
+
}
|
|
1130
|
+
if (streamingState === StreamingState.Responding &&
|
|
1131
|
+
isBtwCommand(submittedValue)) {
|
|
1132
|
+
void submitQuery(submittedValue);
|
|
1133
|
+
return;
|
|
1134
|
+
}
|
|
1135
|
+
// Handle bare exit/quit commands (without the / prefix)
|
|
1136
|
+
if (['exit', 'quit', ':q', ':q!', ':wq', ':wq!'].includes(submittedValue.trim())) {
|
|
1137
|
+
void handleSlashCommand('/quit');
|
|
1138
|
+
return;
|
|
1139
|
+
}
|
|
1140
|
+
// Check if speculation has results for this submission
|
|
1141
|
+
const spec = speculationRef.current;
|
|
1142
|
+
if (spec.status !== 'idle' &&
|
|
1143
|
+
spec.suggestion === submittedValue &&
|
|
1144
|
+
spec.status === 'completed') {
|
|
1145
|
+
// Accept completed speculation: inject messages and apply files
|
|
1146
|
+
acceptSpeculation(spec, geminiClient)
|
|
1147
|
+
.then((result) => {
|
|
1148
|
+
logSpeculation(config, new SpeculationEvent({
|
|
1149
|
+
outcome: 'accepted',
|
|
1150
|
+
turns_used: spec.messages.filter((m) => m.role === 'model')
|
|
1151
|
+
.length,
|
|
1152
|
+
files_written: result.filesApplied.length,
|
|
1153
|
+
tool_use_count: spec.toolUseCount,
|
|
1154
|
+
duration_ms: Date.now() - spec.startTime,
|
|
1155
|
+
boundary_type: spec.boundary?.type,
|
|
1156
|
+
had_pipelined_suggestion: !!result.nextSuggestion,
|
|
1157
|
+
}));
|
|
1158
|
+
// Speculation completed fully (no boundary) — render results in UI
|
|
1159
|
+
{
|
|
1160
|
+
const now = Date.now();
|
|
1161
|
+
// Render each speculated message as the appropriate HistoryItem
|
|
1162
|
+
for (let mi = 0; mi < result.messages.length; mi++) {
|
|
1163
|
+
const msg = result.messages[mi];
|
|
1164
|
+
if (msg.role === 'user' && msg.parts) {
|
|
1165
|
+
// Check if this is a tool result (functionResponse) or user text
|
|
1166
|
+
const hasText = msg.parts.some((p) => p.text && !p.functionResponse);
|
|
1167
|
+
if (hasText) {
|
|
1168
|
+
const text = msg.parts
|
|
1169
|
+
.map((p) => p.text ?? '')
|
|
1170
|
+
.filter(Boolean)
|
|
1171
|
+
.join('');
|
|
1172
|
+
if (text) {
|
|
1173
|
+
historyManager.addItem({ type: 'user', text }, now);
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
// functionResponse parts are rendered as part of the tool_group below
|
|
1177
|
+
}
|
|
1178
|
+
else if (msg.role === 'model' && msg.parts) {
|
|
1179
|
+
// Extract text and tool calls separately
|
|
1180
|
+
const textParts = msg.parts
|
|
1181
|
+
.filter((p) => p.text && !p.functionCall)
|
|
1182
|
+
.map((p) => p.text)
|
|
1183
|
+
.join('');
|
|
1184
|
+
const toolCalls = msg.parts.filter((p) => p.functionCall);
|
|
1185
|
+
if (textParts) {
|
|
1186
|
+
historyManager.addItem({ type: 'gemini', text: textParts }, now);
|
|
1187
|
+
}
|
|
1188
|
+
if (toolCalls.length > 0) {
|
|
1189
|
+
// Find matching tool results from the next message
|
|
1190
|
+
const nextMsg = result.messages[mi + 1];
|
|
1191
|
+
const toolResults = nextMsg?.parts?.filter((p) => p.functionResponse) ?? [];
|
|
1192
|
+
const tools = toolCalls.map((tc, i) => {
|
|
1193
|
+
const name = tc.functionCall?.name ?? 'unknown';
|
|
1194
|
+
const args = tc.functionCall?.args ?? {};
|
|
1195
|
+
const resp = toolResults[i]?.functionResponse?.response;
|
|
1196
|
+
const resultText = typeof resp === 'object' && resp
|
|
1197
|
+
? (resp['output'] ??
|
|
1198
|
+
JSON.stringify(resp))
|
|
1199
|
+
: String(resp ?? '');
|
|
1200
|
+
return {
|
|
1201
|
+
callId: `spec-${name}-${i}`,
|
|
1202
|
+
name,
|
|
1203
|
+
description: Object.entries(args)
|
|
1204
|
+
.map(([k, v]) => `${k}: ${String(v).slice(0, 80)}`)
|
|
1205
|
+
.join(', ') || name,
|
|
1206
|
+
resultDisplay: String(resultText).slice(0, 500),
|
|
1207
|
+
status: ToolCallStatus.Success,
|
|
1208
|
+
confirmationDetails: undefined,
|
|
1209
|
+
};
|
|
1210
|
+
});
|
|
1211
|
+
const toolGroupItem = {
|
|
1212
|
+
type: 'tool_group',
|
|
1213
|
+
tools,
|
|
1214
|
+
};
|
|
1215
|
+
historyManager.addItem(toolGroupItem, now);
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
}
|
|
1220
|
+
if (result.nextSuggestion) {
|
|
1221
|
+
setPromptSuggestion(result.nextSuggestion);
|
|
1222
|
+
}
|
|
1223
|
+
})
|
|
1224
|
+
.catch(() => {
|
|
1225
|
+
// Fallback: submit normally
|
|
1226
|
+
addMessage(submittedValue);
|
|
1227
|
+
});
|
|
1228
|
+
speculationRef.current = IDLE_SPECULATION;
|
|
1229
|
+
return;
|
|
1230
|
+
}
|
|
1231
|
+
// Abort any running speculation since we're submitting something different
|
|
1232
|
+
if (spec.status === 'running') {
|
|
1233
|
+
abortSpeculation(spec).catch(() => { });
|
|
1234
|
+
speculationRef.current = IDLE_SPECULATION;
|
|
1235
|
+
}
|
|
1236
|
+
if (streamingState === StreamingState.Idle &&
|
|
1237
|
+
isSlashCommand(submittedValue)) {
|
|
1238
|
+
void submitQuery(submittedValue);
|
|
1239
|
+
return;
|
|
1240
|
+
}
|
|
1241
|
+
addMessage(submittedValue);
|
|
1242
|
+
}, [
|
|
1243
|
+
addMessage,
|
|
1244
|
+
agentViewState,
|
|
1245
|
+
streamingState,
|
|
1246
|
+
submitQuery,
|
|
1247
|
+
handleSlashCommand,
|
|
1248
|
+
config,
|
|
1249
|
+
geminiClient,
|
|
1250
|
+
historyManager,
|
|
1251
|
+
]);
|
|
1252
|
+
const handleArenaModelsSelected = useCallback((models) => {
|
|
1253
|
+
const value = models.join(',');
|
|
1254
|
+
buffer.setText(`/arena start --models ${value} `);
|
|
1255
|
+
closeArenaDialog();
|
|
1256
|
+
}, [buffer, closeArenaDialog]);
|
|
1257
|
+
// Welcome back functionality (must be after handleFinalSubmit)
|
|
1258
|
+
const { welcomeBackInfo, showWelcomeBackDialog, welcomeBackChoice, handleWelcomeBackSelection, handleWelcomeBackClose, } = useWelcomeBack(config, handleFinalSubmit, buffer, settings.merged);
|
|
1259
|
+
const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
|
|
1260
|
+
const rawStickyTodos = useMemo(() => getStickyTodos(historyManager.history, pendingHistoryItems), [historyManager.history, pendingHistoryItems]);
|
|
1261
|
+
const stickyTodos = useStableStickyTodos(rawStickyTodos);
|
|
1262
|
+
// Terminal tab progress bar (OSC 9;4) for iTerm2/Ghostty
|
|
1263
|
+
useTerminalProgress(streamingState, isToolExecuting(pendingHistoryItems));
|
|
1264
|
+
cancelHandlerRef.current = useCallback((info) => {
|
|
1265
|
+
// Combine the React-state pending items (slash command, retry countdown,
|
|
1266
|
+
// tool group, etc.) with the synchronous snapshot of the Gemini pending
|
|
1267
|
+
// item from `useGeminiStream`. The snapshot closes the race where a
|
|
1268
|
+
// stream chunk just set `pendingHistoryItem` but the consumer's React
|
|
1269
|
+
// state still reads as empty — without it, auto-restore could wrongly
|
|
1270
|
+
// truncate just-committed meaningful content.
|
|
1271
|
+
const pendingHistoryItems = [
|
|
1272
|
+
...pendingSlashCommandHistoryItems,
|
|
1273
|
+
...pendingGeminiHistoryItems,
|
|
1274
|
+
];
|
|
1275
|
+
if (info?.pendingItem) {
|
|
1276
|
+
pendingHistoryItems.push(info.pendingItem);
|
|
1277
|
+
}
|
|
1278
|
+
const draftWasEmpty = buffer.text.length === 0;
|
|
1279
|
+
// Always drain the queue back into the buffer (claude-code parity:
|
|
1280
|
+
// popAllEditable preserves queued text on every cancel path, including
|
|
1281
|
+
// tool-execution cancels — never silently drop the user's queued work).
|
|
1282
|
+
const popped = popAllMessages();
|
|
1283
|
+
if (popped) {
|
|
1284
|
+
const currentText = buffer.text;
|
|
1285
|
+
buffer.setText(currentText ? `${popped}\n${currentText}` : popped);
|
|
1286
|
+
}
|
|
1287
|
+
// Auto-restore-on-cancel: if the user hit ESC immediately after submit
|
|
1288
|
+
// (nothing meaningful was produced), pull the just-submitted prompt back
|
|
1289
|
+
// into the input box and rewind the transcript so it doesn't show a
|
|
1290
|
+
// stranded "user prompt + Request cancelled." pair. Mirrors claude-code
|
|
1291
|
+
// (REPL.tsx auto-restore branch).
|
|
1292
|
+
//
|
|
1293
|
+
// Guards (all required):
|
|
1294
|
+
// - Buffer was empty before the queue drain (don't clobber typed-during-
|
|
1295
|
+
// loading text).
|
|
1296
|
+
// - Queue was empty (popped === null): if the user queued more input,
|
|
1297
|
+
// they've moved on — don't undo their previous prompt.
|
|
1298
|
+
// - No pending stream item carries meaningful content. `tool_group` is
|
|
1299
|
+
// non-synthetic regardless of status (executing/canceled/done), so
|
|
1300
|
+
// this also covers the tool-execution cancel case.
|
|
1301
|
+
// - Items committed AFTER the last user prompt are all synthetic
|
|
1302
|
+
// (info/error/warning/cancel notice).
|
|
1303
|
+
//
|
|
1304
|
+
// truncateToItem is functional setState — it observes the latest queued
|
|
1305
|
+
// history, including any INFO/pending item just appended by
|
|
1306
|
+
// cancelOngoingRequest, and slices them all off together with the user
|
|
1307
|
+
// item. No flicker because React batches with the same render pass.
|
|
1308
|
+
// Each bail-out below is silent in production; toggle DEBUG=1 to
|
|
1309
|
+
// diagnose "ESC pressed but my prompt didn't return to the input box"
|
|
1310
|
+
// by reading which guard fired.
|
|
1311
|
+
if (!draftWasEmpty) {
|
|
1312
|
+
debugLogger.debug('auto-restore bail: buffer was non-empty');
|
|
1313
|
+
return;
|
|
1314
|
+
}
|
|
1315
|
+
if (popped !== null) {
|
|
1316
|
+
debugLogger.debug('auto-restore bail: queue had items (drained to buffer)');
|
|
1317
|
+
return;
|
|
1318
|
+
}
|
|
1319
|
+
if (pendingHistoryItems.some((item) => !isSyntheticHistoryItem(item))) {
|
|
1320
|
+
debugLogger.debug('auto-restore bail: pending stream item has meaningful content');
|
|
1321
|
+
return;
|
|
1322
|
+
}
|
|
1323
|
+
// Synchronous "did the turn produce any content event" flag from
|
|
1324
|
+
// useGeminiStream. Catches the race where the pre-cancel flush
|
|
1325
|
+
// committed gemini_content via addItem and a later thought event
|
|
1326
|
+
// overwrote pendingHistoryItem with a synthetic value — the
|
|
1327
|
+
// committed text isn't in historyRef.current yet (React hasn't
|
|
1328
|
+
// re-rendered), so the trailing-only-synthetic check below would
|
|
1329
|
+
// otherwise pass and we'd wrongly truncate the committed content.
|
|
1330
|
+
if (info?.turnProducedMeaningfulContent) {
|
|
1331
|
+
debugLogger.debug('auto-restore bail: turn produced meaningful content during stream/flush');
|
|
1332
|
+
return;
|
|
1333
|
+
}
|
|
1334
|
+
// The cancelled turn must have added a `user` history item itself —
|
|
1335
|
+
// Cron / Notification / slash submit_prompt / Retry paths submit
|
|
1336
|
+
// without pushing a user item, so an older user item that happens
|
|
1337
|
+
// to be followed only by synthetic content must NOT be wrongly
|
|
1338
|
+
// auto-restored on top of those turns.
|
|
1339
|
+
const cancelledTurnUserItem = info?.lastTurnUserItem;
|
|
1340
|
+
if (cancelledTurnUserItem == null) {
|
|
1341
|
+
debugLogger.debug('auto-restore bail: cancelled turn did not add a user history item');
|
|
1342
|
+
return;
|
|
1343
|
+
}
|
|
1344
|
+
const history = historyRef.current;
|
|
1345
|
+
const lastUserIdx = findLastUserItemIndex(history);
|
|
1346
|
+
if (lastUserIdx === -1) {
|
|
1347
|
+
debugLogger.debug('auto-restore bail: no user item in history');
|
|
1348
|
+
return;
|
|
1349
|
+
}
|
|
1350
|
+
if (!itemsAfterAreOnlySynthetic(history, lastUserIdx)) {
|
|
1351
|
+
debugLogger.debug('auto-restore bail: meaningful content committed after last user item');
|
|
1352
|
+
return;
|
|
1353
|
+
}
|
|
1354
|
+
const lastUserItem = history[lastUserIdx];
|
|
1355
|
+
if (lastUserItem.type !== 'user') {
|
|
1356
|
+
debugLogger.debug('auto-restore bail: lastUserItem type narrowing failed (unexpected)');
|
|
1357
|
+
return;
|
|
1358
|
+
}
|
|
1359
|
+
// Identity match: the user item we're rewinding has to be the one
|
|
1360
|
+
// this turn added. Use ID (not just text) so a consecutive-
|
|
1361
|
+
// duplicate user submit — where `addItem` skipped insertion but
|
|
1362
|
+
// still returned a fresh id — doesn't make this guard wrongly
|
|
1363
|
+
// match an older identical-text USER row. Text is checked too as
|
|
1364
|
+
// a cheap sanity belt.
|
|
1365
|
+
if (lastUserItem.id !== cancelledTurnUserItem.id ||
|
|
1366
|
+
lastUserItem.text !== cancelledTurnUserItem.text) {
|
|
1367
|
+
debugLogger.debug('auto-restore bail: lastUserItem identity does not match cancelled-turn user item');
|
|
1368
|
+
return;
|
|
1369
|
+
}
|
|
1370
|
+
debugLogger.debug('auto-restore: rewinding cancelled turn and restoring prompt');
|
|
1371
|
+
historyManager.truncateToItem(lastUserItem.id);
|
|
1372
|
+
// Repaint the terminal so the cancelled `> prompt` and trailing
|
|
1373
|
+
// INFO disappear from the static-rendered transcript. Ink's
|
|
1374
|
+
// `<Static>` region is append-only — once a line has been printed,
|
|
1375
|
+
// shrinking the underlying array doesn't unprint it. `refreshStatic`
|
|
1376
|
+
// writes the ANSI clear-terminal escape AND bumps the static
|
|
1377
|
+
// remount key so the next render reprints only the truncated
|
|
1378
|
+
// history. Matches what `/clear` and `handleClearScreen` do for
|
|
1379
|
+
// the same reason. Skipping this leaves the user seeing the
|
|
1380
|
+
// cancelled prompt twice — once in scrollback and once pre-filled
|
|
1381
|
+
// in the input buffer.
|
|
1382
|
+
refreshStatic();
|
|
1383
|
+
buffer.setText(lastUserItem.text);
|
|
1384
|
+
// Third cleanup leg: the in-memory chat history. `GeminiChat`
|
|
1385
|
+
// appends the user content before the stream generator runs, and
|
|
1386
|
+
// the abort path doesn't pop it. Without this strip, the NEXT
|
|
1387
|
+
// request's wire payload would carry the cancelled prompt as an
|
|
1388
|
+
// orphan user turn alongside the new one — model context would
|
|
1389
|
+
// contradict what the UI told the user was rewound. Mirrors the
|
|
1390
|
+
// existing strip in the Retry submit path
|
|
1391
|
+
// (GeminiClient.sendMessageStream).
|
|
1392
|
+
geminiClient?.stripOrphanedUserEntriesFromHistory?.();
|
|
1393
|
+
// Also undo the cross-session ↑-history disk entry written by
|
|
1394
|
+
// useGeminiStream's `logger.logMessage` — otherwise
|
|
1395
|
+
// getPreviousUserMessages would resurrect the cancelled prompt next
|
|
1396
|
+
// session. Fire-and-forget; the UI restore must not block on disk
|
|
1397
|
+
// I/O. Logger.removeLastUserMessage already swallows internal
|
|
1398
|
+
// errors and returns false, but attach a .catch as defence so a
|
|
1399
|
+
// future code path that throws doesn't surface as an
|
|
1400
|
+
// UnhandledPromiseRejection.
|
|
1401
|
+
void logger?.removeLastUserMessage().catch((err) => {
|
|
1402
|
+
debugLogger.debug('Failed to undo cancelled prompt from log:', err);
|
|
1403
|
+
});
|
|
1404
|
+
}, [
|
|
1405
|
+
buffer,
|
|
1406
|
+
popAllMessages,
|
|
1407
|
+
historyManager,
|
|
1408
|
+
logger,
|
|
1409
|
+
geminiClient,
|
|
1410
|
+
refreshStatic,
|
|
1411
|
+
pendingSlashCommandHistoryItems,
|
|
1412
|
+
pendingGeminiHistoryItems,
|
|
1413
|
+
]);
|
|
1414
|
+
const handleClearScreen = useCallback(() => {
|
|
1415
|
+
historyManager.clearItems();
|
|
1416
|
+
clearScreen();
|
|
1417
|
+
remountStaticHistory();
|
|
1418
|
+
}, [historyManager, remountStaticHistory]);
|
|
1419
|
+
const { handleInput: vimHandleInput } = useVim(buffer, handleFinalSubmit);
|
|
1420
|
+
/**
|
|
1421
|
+
* Determines if the input prompt should be active and accept user input.
|
|
1422
|
+
* Input is disabled during:
|
|
1423
|
+
* - Initialization errors
|
|
1424
|
+
* - Slash command processing
|
|
1425
|
+
* - Tool confirmations (WaitingForConfirmation state)
|
|
1426
|
+
* - Any future streaming states not explicitly allowed
|
|
1427
|
+
*/
|
|
1428
|
+
const isInputActive = !initError &&
|
|
1429
|
+
!isProcessing &&
|
|
1430
|
+
(streamingState === StreamingState.Idle ||
|
|
1431
|
+
streamingState === StreamingState.Responding);
|
|
1432
|
+
const isFocused = useFocus();
|
|
1433
|
+
useBracketedPaste();
|
|
1434
|
+
useAwaySummary({
|
|
1435
|
+
enabled: settings.merged.general?.showSessionRecap ?? false,
|
|
1436
|
+
config,
|
|
1437
|
+
isFocused,
|
|
1438
|
+
isIdle: streamingState === StreamingState.Idle,
|
|
1439
|
+
addItem: historyManager.addItem,
|
|
1440
|
+
history: historyManager.history,
|
|
1441
|
+
awayThresholdMinutes: settings.merged.general?.sessionRecapAwayThresholdMinutes,
|
|
1442
|
+
});
|
|
1443
|
+
// Context file names computation
|
|
1444
|
+
const contextFileNames = useMemo(() => {
|
|
1445
|
+
const fromSettings = settings.merged.context?.fileName;
|
|
1446
|
+
return fromSettings
|
|
1447
|
+
? Array.isArray(fromSettings)
|
|
1448
|
+
? fromSettings
|
|
1449
|
+
: [fromSettings]
|
|
1450
|
+
: getAllGeminiMdFilenames();
|
|
1451
|
+
}, [settings.merged.context?.fileName]);
|
|
1452
|
+
// Initial prompt handling
|
|
1453
|
+
const initialPrompt = useMemo(() => config.getQuestion(), [config]);
|
|
1454
|
+
const initialPromptSubmitted = useRef(false);
|
|
1455
|
+
useEffect(() => {
|
|
1456
|
+
if (initialPrompt &&
|
|
1457
|
+
isConfigInitialized &&
|
|
1458
|
+
!initialPromptSubmitted.current &&
|
|
1459
|
+
!isAuthenticating &&
|
|
1460
|
+
!isAuthDialogOpen &&
|
|
1461
|
+
!isThemeDialogOpen &&
|
|
1462
|
+
!isEditorDialogOpen &&
|
|
1463
|
+
!showWelcomeBackDialog &&
|
|
1464
|
+
welcomeBackChoice !== 'restart' &&
|
|
1465
|
+
geminiClient?.isInitialized?.()) {
|
|
1466
|
+
handleFinalSubmit(initialPrompt);
|
|
1467
|
+
initialPromptSubmitted.current = true;
|
|
1468
|
+
}
|
|
1469
|
+
}, [
|
|
1470
|
+
initialPrompt,
|
|
1471
|
+
isConfigInitialized,
|
|
1472
|
+
handleFinalSubmit,
|
|
1473
|
+
isAuthenticating,
|
|
1474
|
+
isAuthDialogOpen,
|
|
1475
|
+
isThemeDialogOpen,
|
|
1476
|
+
isEditorDialogOpen,
|
|
1477
|
+
showWelcomeBackDialog,
|
|
1478
|
+
welcomeBackChoice,
|
|
1479
|
+
geminiClient,
|
|
1480
|
+
]);
|
|
1481
|
+
// Generate prompt suggestions when streaming completes
|
|
1482
|
+
const followupSuggestionsEnabled = settings.merged.ui?.enableFollowupSuggestions === true;
|
|
1483
|
+
useEffect(() => {
|
|
1484
|
+
// Clear suggestion when feature is disabled at runtime
|
|
1485
|
+
if (!followupSuggestionsEnabled) {
|
|
1486
|
+
suggestionAbortRef.current?.abort();
|
|
1487
|
+
setPromptSuggestion(null);
|
|
1488
|
+
if (speculationRef.current.status === 'running') {
|
|
1489
|
+
abortSpeculation(speculationRef.current).catch(() => { });
|
|
1490
|
+
speculationRef.current = IDLE_SPECULATION;
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
// Clear suggestion and abort pending generation/speculation when a new turn starts
|
|
1494
|
+
if (prevStreamingStateRef.current === StreamingState.Idle &&
|
|
1495
|
+
streamingState === StreamingState.Responding) {
|
|
1496
|
+
suggestionAbortRef.current?.abort();
|
|
1497
|
+
setPromptSuggestion(null);
|
|
1498
|
+
if (speculationRef.current.status !== 'idle') {
|
|
1499
|
+
abortSpeculation(speculationRef.current).catch(() => { });
|
|
1500
|
+
speculationRef.current = IDLE_SPECULATION;
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
// Only trigger when transitioning from Responding to Idle (and enabled)
|
|
1504
|
+
// Skip when dialogs are active, in plan mode, elicitation pending, or last response was error
|
|
1505
|
+
if (followupSuggestionsEnabled &&
|
|
1506
|
+
config.isInteractive() &&
|
|
1507
|
+
!config.getSdkMode() &&
|
|
1508
|
+
prevStreamingStateRef.current === StreamingState.Responding &&
|
|
1509
|
+
streamingState === StreamingState.Idle &&
|
|
1510
|
+
// Check both committed history and pending items for errors
|
|
1511
|
+
// (API errors go to pendingGeminiHistoryItems, not historyManager.history)
|
|
1512
|
+
historyManager.history[historyManager.history.length - 1]?.type !==
|
|
1513
|
+
'error' &&
|
|
1514
|
+
!pendingGeminiHistoryItems.some((item) => item.type === 'error') &&
|
|
1515
|
+
!shellConfirmationRequest &&
|
|
1516
|
+
!confirmationRequest &&
|
|
1517
|
+
!loopDetectionConfirmationRequest &&
|
|
1518
|
+
!isPermissionsDialogOpen &&
|
|
1519
|
+
settingInputRequests.length === 0 &&
|
|
1520
|
+
config.getApprovalMode() !== ApprovalMode.PLAN) {
|
|
1521
|
+
const ac = new AbortController();
|
|
1522
|
+
suggestionAbortRef.current = ac;
|
|
1523
|
+
// Only clone the tail — full structuredClone of a large resumed session
|
|
1524
|
+
// causes transient heap peaks that trigger OOM (#4624).
|
|
1525
|
+
const conversationHistory = geminiClient.getHistoryTail(40, true);
|
|
1526
|
+
generatePromptSuggestion(config, conversationHistory, ac.signal, {
|
|
1527
|
+
enableCacheSharing: settings.merged.ui?.enableCacheSharing === true,
|
|
1528
|
+
})
|
|
1529
|
+
.then((result) => {
|
|
1530
|
+
if (ac.signal.aborted)
|
|
1531
|
+
return;
|
|
1532
|
+
if (result.suggestion) {
|
|
1533
|
+
setPromptSuggestion(result.suggestion);
|
|
1534
|
+
// Start speculation if enabled (runs in background)
|
|
1535
|
+
if (settings.merged.ui?.enableSpeculation) {
|
|
1536
|
+
startSpeculation(config, result.suggestion, ac.signal)
|
|
1537
|
+
.then((state) => {
|
|
1538
|
+
speculationRef.current = state;
|
|
1539
|
+
})
|
|
1540
|
+
.catch(() => {
|
|
1541
|
+
// Speculation failure is non-blocking
|
|
1542
|
+
});
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
else if (result.filterReason) {
|
|
1546
|
+
// Log suppressed suggestion for analytics
|
|
1547
|
+
logPromptSuggestion(config, new PromptSuggestionEvent({
|
|
1548
|
+
outcome: 'suppressed',
|
|
1549
|
+
reason: result.filterReason,
|
|
1550
|
+
}));
|
|
1551
|
+
}
|
|
1552
|
+
})
|
|
1553
|
+
.catch(() => {
|
|
1554
|
+
// Silently degrade — don't disrupt the user experience
|
|
1555
|
+
});
|
|
1556
|
+
}
|
|
1557
|
+
// Only update prev ref when streamingState actually changes, so that
|
|
1558
|
+
// dialog-dependency re-runs don't cause us to miss a Responding→Idle transition.
|
|
1559
|
+
if (prevStreamingStateRef.current !== streamingState) {
|
|
1560
|
+
prevStreamingStateRef.current = streamingState;
|
|
1561
|
+
}
|
|
1562
|
+
return () => {
|
|
1563
|
+
suggestionAbortRef.current?.abort();
|
|
1564
|
+
// Cleanup speculation on unmount (#21)
|
|
1565
|
+
if (speculationRef.current.status !== 'idle') {
|
|
1566
|
+
abortSpeculation(speculationRef.current).catch(() => { });
|
|
1567
|
+
speculationRef.current = IDLE_SPECULATION;
|
|
1568
|
+
}
|
|
1569
|
+
};
|
|
1570
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- guards may change independently
|
|
1571
|
+
}, [
|
|
1572
|
+
streamingState,
|
|
1573
|
+
followupSuggestionsEnabled,
|
|
1574
|
+
shellConfirmationRequest,
|
|
1575
|
+
confirmationRequest,
|
|
1576
|
+
loopDetectionConfirmationRequest,
|
|
1577
|
+
isPermissionsDialogOpen,
|
|
1578
|
+
settingInputRequests,
|
|
1579
|
+
]);
|
|
1580
|
+
// Abort speculation when promptSuggestion is cleared (new turn, feature toggle, or
|
|
1581
|
+
// user-initiated dismiss via typing/paste). InputPrompt calls onPromptSuggestionDismiss
|
|
1582
|
+
// on user input, which clears promptSuggestion, triggering this effect to abort speculation.
|
|
1583
|
+
useEffect(() => {
|
|
1584
|
+
if (!promptSuggestion && speculationRef.current.status !== 'idle') {
|
|
1585
|
+
abortSpeculation(speculationRef.current).catch(() => { });
|
|
1586
|
+
speculationRef.current = IDLE_SPECULATION;
|
|
1587
|
+
}
|
|
1588
|
+
}, [promptSuggestion]);
|
|
1589
|
+
const [idePromptAnswered, setIdePromptAnswered] = useState(false);
|
|
1590
|
+
const [currentIDE, setCurrentIDE] = useState(null);
|
|
1591
|
+
useEffect(() => {
|
|
1592
|
+
const getIde = async () => {
|
|
1593
|
+
const ideClient = await IdeClient.getInstance();
|
|
1594
|
+
const currentIde = ideClient.getCurrentIde();
|
|
1595
|
+
setCurrentIDE(currentIde || null);
|
|
1596
|
+
};
|
|
1597
|
+
getIde();
|
|
1598
|
+
}, []);
|
|
1599
|
+
const shouldShowIdePrompt = Boolean(currentIDE &&
|
|
1600
|
+
!config.getIdeMode() &&
|
|
1601
|
+
!settings.merged.ide?.hasSeenNudge &&
|
|
1602
|
+
!idePromptAnswered);
|
|
1603
|
+
// Command migration nudge
|
|
1604
|
+
const { showMigrationNudge: shouldShowCommandMigrationNudge, tomlFiles: commandMigrationTomlFiles, setShowMigrationNudge: setShowCommandMigrationNudge, } = useCommandMigration(settings, config.storage);
|
|
1605
|
+
const [showToolDescriptions, setShowToolDescriptions] = useState(false);
|
|
1606
|
+
const [compactMode, setCompactMode] = useState(settings.merged.ui?.compactMode ?? true);
|
|
1607
|
+
const [compactInline] = useState(settings.merged.ui?.compactInline ?? false);
|
|
1608
|
+
const configuredRenderMode = settings.merged.ui?.renderMode;
|
|
1609
|
+
const [renderMode, setRenderMode] = useState(configuredRenderMode === 'raw' ? 'raw' : 'render');
|
|
1610
|
+
const renderModeConfigMountedRef = useRef(false);
|
|
1611
|
+
useEffect(() => {
|
|
1612
|
+
if (!renderModeConfigMountedRef.current) {
|
|
1613
|
+
renderModeConfigMountedRef.current = true;
|
|
1614
|
+
return;
|
|
1615
|
+
}
|
|
1616
|
+
setRenderMode(configuredRenderMode === 'raw' ? 'raw' : 'render');
|
|
1617
|
+
}, [configuredRenderMode]);
|
|
1618
|
+
const renderModeMountedRef = useRef(false);
|
|
1619
|
+
useEffect(() => {
|
|
1620
|
+
if (!renderModeMountedRef.current) {
|
|
1621
|
+
renderModeMountedRef.current = true;
|
|
1622
|
+
return;
|
|
1623
|
+
}
|
|
1624
|
+
refreshStatic();
|
|
1625
|
+
}, [renderMode, refreshStatic]);
|
|
1626
|
+
const [ctrlCPressedOnce, setCtrlCPressedOnce] = useState(false);
|
|
1627
|
+
const ctrlCTimerRef = useRef(null);
|
|
1628
|
+
const [ctrlDPressedOnce, setCtrlDPressedOnce] = useState(false);
|
|
1629
|
+
const ctrlDTimerRef = useRef(null);
|
|
1630
|
+
const [escapePressedOnce, setEscapePressedOnce] = useState(false);
|
|
1631
|
+
const escapeTimerRef = useRef(null);
|
|
1632
|
+
const dialogsVisibleRef = useRef(false);
|
|
1633
|
+
const [isRewindSelectorOpen, setIsRewindSelectorOpen] = useState(false);
|
|
1634
|
+
const [rewindEscPending, setRewindEscPending] = useState(false);
|
|
1635
|
+
const [constrainHeight, setConstrainHeight] = useState(true);
|
|
1636
|
+
const [ideContextState, setIdeContextState] = useState();
|
|
1637
|
+
const [showEscapePrompt, setShowEscapePrompt] = useState(false);
|
|
1638
|
+
const [showIdeRestartPrompt, setShowIdeRestartPrompt] = useState(false);
|
|
1639
|
+
const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder);
|
|
1640
|
+
const { needsRestart: ideNeedsRestart, restartReason: ideTrustRestartReason, } = useIdeTrustListener();
|
|
1641
|
+
const { isFeedbackDialogOpen, openFeedbackDialog, closeFeedbackDialog, temporaryCloseFeedbackDialog, submitFeedback, } = useFeedbackDialog({
|
|
1642
|
+
config,
|
|
1643
|
+
settings,
|
|
1644
|
+
streamingState,
|
|
1645
|
+
history: historyManager.history,
|
|
1646
|
+
sessionStats,
|
|
1647
|
+
});
|
|
1648
|
+
const dialogsVisible = showWelcomeBackDialog ||
|
|
1649
|
+
shouldShowIdePrompt ||
|
|
1650
|
+
shouldShowCommandMigrationNudge ||
|
|
1651
|
+
isFolderTrustDialogOpen ||
|
|
1652
|
+
!!shellConfirmationRequest ||
|
|
1653
|
+
!!confirmationRequest ||
|
|
1654
|
+
confirmUpdateExtensionRequests.length > 0 ||
|
|
1655
|
+
!!providerUpdateRequest ||
|
|
1656
|
+
settingInputRequests.length > 0 ||
|
|
1657
|
+
pluginChoiceRequests.length > 0 ||
|
|
1658
|
+
!!loopDetectionConfirmationRequest ||
|
|
1659
|
+
isThemeDialogOpen ||
|
|
1660
|
+
isSettingsDialogOpen ||
|
|
1661
|
+
isStatusLineDialogOpen ||
|
|
1662
|
+
isMemoryDialogOpen ||
|
|
1663
|
+
isModelDialogOpen ||
|
|
1664
|
+
isTrustDialogOpen ||
|
|
1665
|
+
activeArenaDialog !== null ||
|
|
1666
|
+
isPermissionsDialogOpen ||
|
|
1667
|
+
isAuthDialogOpen ||
|
|
1668
|
+
isAuthenticating ||
|
|
1669
|
+
isEditorDialogOpen ||
|
|
1670
|
+
showIdeRestartPrompt ||
|
|
1671
|
+
isSubagentCreateDialogOpen ||
|
|
1672
|
+
isAgentsManagerDialogOpen ||
|
|
1673
|
+
isSkillsManagerDialogOpen ||
|
|
1674
|
+
isMcpDialogOpen ||
|
|
1675
|
+
isHooksDialogOpen ||
|
|
1676
|
+
isStatsDialogOpen ||
|
|
1677
|
+
isApprovalModeDialogOpen ||
|
|
1678
|
+
isResumeDialogOpen ||
|
|
1679
|
+
isDeleteDialogOpen ||
|
|
1680
|
+
isHelpDialogOpen ||
|
|
1681
|
+
isExtensionsManagerDialogOpen ||
|
|
1682
|
+
isRewindSelectorOpen ||
|
|
1683
|
+
isDiffDialogOpen ||
|
|
1684
|
+
bgTasksDialogOpen ||
|
|
1685
|
+
showWorktreeExitDialog ||
|
|
1686
|
+
!!(settings.corruptedPath && !settings.corruptionDialogDismissed);
|
|
1687
|
+
dialogsVisibleRef.current = dialogsVisible;
|
|
1688
|
+
const shouldShowStickyTodos = stickyTodos !== null &&
|
|
1689
|
+
!dialogsVisible &&
|
|
1690
|
+
!isFeedbackDialogOpen &&
|
|
1691
|
+
streamingState !== StreamingState.WaitingForConfirmation;
|
|
1692
|
+
const stickyTodoWidth = Math.min(mainAreaWidth, 64);
|
|
1693
|
+
const stickyTodoMaxVisibleItems = getStickyTodoMaxVisibleItems(terminalHeight);
|
|
1694
|
+
const stickyTodosLayoutKey = shouldShowStickyTodos
|
|
1695
|
+
? getStickyTodosLayoutKey(stickyTodos, stickyTodoWidth, stickyTodoMaxVisibleItems)
|
|
1696
|
+
: 'hidden';
|
|
1697
|
+
const [controlsHeight, setControlsHeight] = useState(0);
|
|
1698
|
+
useLayoutEffect(() => {
|
|
1699
|
+
if (!mainControlsRef.current) {
|
|
1700
|
+
setControlsHeight((previousHeight) => previousHeight === 0 ? previousHeight : 0);
|
|
1701
|
+
return;
|
|
1702
|
+
}
|
|
1703
|
+
const fullFooterMeasurement = measureElement(mainControlsRef.current);
|
|
1704
|
+
setControlsHeight((previousHeight) => previousHeight === fullFooterMeasurement.height
|
|
1705
|
+
? previousHeight
|
|
1706
|
+
: fullFooterMeasurement.height);
|
|
1707
|
+
}, [
|
|
1708
|
+
buffer,
|
|
1709
|
+
terminalWidth,
|
|
1710
|
+
terminalHeight,
|
|
1711
|
+
btwItem,
|
|
1712
|
+
dialogsVisible,
|
|
1713
|
+
stickyTodosLayoutKey,
|
|
1714
|
+
]);
|
|
1715
|
+
// agentViewState is declared earlier (before handleFinalSubmit) so it
|
|
1716
|
+
// is available for input routing. Referenced here for layout computation.
|
|
1717
|
+
const tabBarHeight = agentViewState.agents.size > 0 ? 1 : 0;
|
|
1718
|
+
const availableTerminalHeight = Math.max(0, terminalHeight -
|
|
1719
|
+
controlsHeight -
|
|
1720
|
+
staticExtraHeight -
|
|
1721
|
+
MAIN_CONTENT_HEIGHT_RESERVATION -
|
|
1722
|
+
tabBarHeight);
|
|
1723
|
+
config.setShellExecutionConfig({
|
|
1724
|
+
terminalWidth: Math.floor(terminalWidth * SHELL_WIDTH_FRACTION),
|
|
1725
|
+
terminalHeight: Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1),
|
|
1726
|
+
pager: settings.merged.tools?.shell?.pager,
|
|
1727
|
+
showColor: settings.merged.tools?.shell?.showColor,
|
|
1728
|
+
});
|
|
1729
|
+
useEffect(() => {
|
|
1730
|
+
if (activePtyId) {
|
|
1731
|
+
ShellExecutionService.resizePty(activePtyId, Math.floor(terminalWidth * SHELL_WIDTH_FRACTION), Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1));
|
|
1732
|
+
}
|
|
1733
|
+
}, [terminalWidth, availableTerminalHeight, activePtyId]);
|
|
1734
|
+
// Repaint static header on terminal resize. Without this, tmux pane
|
|
1735
|
+
// resizes and fullscreen toggles leave the static region rendered at the
|
|
1736
|
+
// old width — header content visibly tears until the next refreshStatic
|
|
1737
|
+
// (e.g. /model). Cheap repaint (cursor-to + erase-down) rather than a
|
|
1738
|
+
// full clearTerminal to avoid the full-screen flash.
|
|
1739
|
+
useEffect(() => {
|
|
1740
|
+
if (previousTerminalWidthRef.current === terminalWidth) {
|
|
1741
|
+
return;
|
|
1742
|
+
}
|
|
1743
|
+
previousTerminalWidthRef.current = terminalWidth;
|
|
1744
|
+
repaintStaticViewport();
|
|
1745
|
+
}, [terminalWidth, repaintStaticViewport]);
|
|
1746
|
+
useEffect(() => {
|
|
1747
|
+
if (ideNeedsRestart) {
|
|
1748
|
+
// IDE trust changed, force a restart.
|
|
1749
|
+
setShowIdeRestartPrompt(true);
|
|
1750
|
+
}
|
|
1751
|
+
}, [ideNeedsRestart]);
|
|
1752
|
+
useEffect(() => {
|
|
1753
|
+
const unsubscribe = ideContextStore.subscribe(setIdeContextState);
|
|
1754
|
+
setIdeContextState(ideContextStore.get());
|
|
1755
|
+
return unsubscribe;
|
|
1756
|
+
}, []);
|
|
1757
|
+
const handleEscapePromptChange = useCallback((showPrompt) => {
|
|
1758
|
+
setShowEscapePrompt(showPrompt);
|
|
1759
|
+
}, []);
|
|
1760
|
+
// --- Rewind selector callbacks ---
|
|
1761
|
+
// IDE guard here is NOT redundant with the keyboard handler guard (line ~2375):
|
|
1762
|
+
// /rewind calls openRewindSelector directly, bypassing the keyboard handler.
|
|
1763
|
+
const openRewindSelector = useCallback(() => {
|
|
1764
|
+
if (streamingState !== StreamingState.Idle)
|
|
1765
|
+
return;
|
|
1766
|
+
if (dialogsVisibleRef.current)
|
|
1767
|
+
return;
|
|
1768
|
+
if (config.getIdeMode()) {
|
|
1769
|
+
historyManager.addItem({
|
|
1770
|
+
type: 'info',
|
|
1771
|
+
text: 'Rewind is disabled in IDE mode.',
|
|
1772
|
+
}, Date.now());
|
|
1773
|
+
return;
|
|
1774
|
+
}
|
|
1775
|
+
const hasUserTurns = historyManager.history.some((h) => h.type === 'user');
|
|
1776
|
+
if (!hasUserTurns)
|
|
1777
|
+
return;
|
|
1778
|
+
setIsRewindSelectorOpen(true);
|
|
1779
|
+
}, [streamingState, config, historyManager]);
|
|
1780
|
+
openRewindSelectorRef.current = openRewindSelector;
|
|
1781
|
+
const closeRewindSelector = useCallback(() => {
|
|
1782
|
+
setIsRewindSelectorOpen(false);
|
|
1783
|
+
}, []);
|
|
1784
|
+
const handleRewindConfirm = useCallback(async (userItem, option) => {
|
|
1785
|
+
try {
|
|
1786
|
+
// For 'both', validate that conversation can be truncated BEFORE
|
|
1787
|
+
// touching files — otherwise we'd roll back the workspace while
|
|
1788
|
+
// the conversation stays at the newer state.
|
|
1789
|
+
const needsConversation = option === 'conversation' || option === 'both';
|
|
1790
|
+
const geminiClient = needsConversation
|
|
1791
|
+
? config.getGeminiClient()
|
|
1792
|
+
: null;
|
|
1793
|
+
let apiTruncateIndex = -1;
|
|
1794
|
+
let conversationSkippedNoClient = false;
|
|
1795
|
+
if (needsConversation) {
|
|
1796
|
+
if (!geminiClient) {
|
|
1797
|
+
if (option === 'conversation') {
|
|
1798
|
+
historyManager.addItem({
|
|
1799
|
+
type: 'error',
|
|
1800
|
+
text: t('Cannot rewind conversation: no active model client.'),
|
|
1801
|
+
}, Date.now());
|
|
1802
|
+
return;
|
|
1803
|
+
}
|
|
1804
|
+
// 'both' with no client: skip conversation, still try files,
|
|
1805
|
+
// and surface a warning after the restore output.
|
|
1806
|
+
conversationSkippedNoClient = true;
|
|
1807
|
+
}
|
|
1808
|
+
else {
|
|
1809
|
+
apiTruncateIndex = computeApiTruncationIndex(historyManager.history, userItem.id, geminiClient.getHistoryShallow());
|
|
1810
|
+
if (apiTruncateIndex < 0) {
|
|
1811
|
+
historyManager.addItem({
|
|
1812
|
+
type: 'error',
|
|
1813
|
+
text: t('Cannot rewind to a turn that was compressed. Try a more recent turn.'),
|
|
1814
|
+
}, Date.now());
|
|
1815
|
+
if (option === 'both') {
|
|
1816
|
+
// Abort file restore too — don't create inconsistent state
|
|
1817
|
+
return;
|
|
1818
|
+
}
|
|
1819
|
+
return;
|
|
1820
|
+
}
|
|
1821
|
+
}
|
|
1822
|
+
}
|
|
1823
|
+
// Restore code (files on disk). For 'code'-only, don't truncate
|
|
1824
|
+
// the snapshot timeline — the conversation turns remain visible
|
|
1825
|
+
// and their snapshots must stay available for future rewinds.
|
|
1826
|
+
let fileRestoreMessage;
|
|
1827
|
+
let fileRestoreError;
|
|
1828
|
+
let hasRestoreFailure = false;
|
|
1829
|
+
if (option === 'code' || option === 'both') {
|
|
1830
|
+
const promptId = userItem.promptId;
|
|
1831
|
+
if (promptId) {
|
|
1832
|
+
try {
|
|
1833
|
+
const truncateHistory = option === 'both' && !!geminiClient && apiTruncateIndex >= 0;
|
|
1834
|
+
const result = await config
|
|
1835
|
+
.getFileHistoryService()
|
|
1836
|
+
.rewind(promptId, truncateHistory);
|
|
1837
|
+
if (result.filesChanged.length > 0) {
|
|
1838
|
+
fileRestoreMessage = t('Restored {{count}} file(s).', {
|
|
1839
|
+
count: String(result.filesChanged.length),
|
|
1840
|
+
});
|
|
1841
|
+
}
|
|
1842
|
+
else if (result.filesFailed.length === 0) {
|
|
1843
|
+
fileRestoreMessage = t('No files needed to be restored.');
|
|
1844
|
+
}
|
|
1845
|
+
if (result.filesFailed.length > 0) {
|
|
1846
|
+
hasRestoreFailure = true;
|
|
1847
|
+
fileRestoreError = t('Failed to restore {{count}} file(s): {{files}}', {
|
|
1848
|
+
count: String(result.filesFailed.length),
|
|
1849
|
+
files: result.filesFailed
|
|
1850
|
+
.map((f) => f.split('/').pop())
|
|
1851
|
+
.join(', '),
|
|
1852
|
+
});
|
|
1853
|
+
}
|
|
1854
|
+
}
|
|
1855
|
+
catch (error) {
|
|
1856
|
+
hasRestoreFailure = true;
|
|
1857
|
+
fileRestoreError = t('Failed to restore files: {{error}}', {
|
|
1858
|
+
error: error instanceof Error ? error.message : String(error),
|
|
1859
|
+
});
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
else {
|
|
1863
|
+
hasRestoreFailure = true;
|
|
1864
|
+
fileRestoreError = t('Cannot restore files: this turn was created before file checkpointing was enabled.');
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
// Truncate conversation (already validated above).
|
|
1868
|
+
// Skip if file restore had failures in "both" mode to avoid inconsistent state.
|
|
1869
|
+
if (needsConversation &&
|
|
1870
|
+
geminiClient &&
|
|
1871
|
+
apiTruncateIndex >= 0 &&
|
|
1872
|
+
!(option === 'both' && hasRestoreFailure)) {
|
|
1873
|
+
const originalHistory = historyManager.history;
|
|
1874
|
+
const originalLength = originalHistory.length;
|
|
1875
|
+
let targetTurnIndex = 0;
|
|
1876
|
+
for (const h of originalHistory) {
|
|
1877
|
+
if (h.id === userItem.id)
|
|
1878
|
+
break;
|
|
1879
|
+
if (isRealUserTurn(h))
|
|
1880
|
+
targetTurnIndex++;
|
|
1881
|
+
}
|
|
1882
|
+
geminiClient.truncateHistory(apiTruncateIndex);
|
|
1883
|
+
const truncatedUi = originalHistory.filter((h) => h.id < userItem.id);
|
|
1884
|
+
historyManager.loadHistory(truncatedUi);
|
|
1885
|
+
refreshStatic();
|
|
1886
|
+
if (userItem.type === 'user' && userItem.text) {
|
|
1887
|
+
buffer.setText(userItem.text);
|
|
1888
|
+
}
|
|
1889
|
+
historyManager.addItem({
|
|
1890
|
+
type: 'info',
|
|
1891
|
+
text: t('Conversation rewound. Edit your prompt and press Enter to continue.'),
|
|
1892
|
+
}, Date.now());
|
|
1893
|
+
config.getChatRecordingService()?.rewindRecording(targetTurnIndex, {
|
|
1894
|
+
truncatedCount: originalLength - truncatedUi.length,
|
|
1895
|
+
});
|
|
1896
|
+
}
|
|
1897
|
+
// Show file restore result after conversation truncation so the
|
|
1898
|
+
// message isn't immediately removed by loadHistory.
|
|
1899
|
+
if (fileRestoreMessage) {
|
|
1900
|
+
historyManager.addItem({ type: 'info', text: fileRestoreMessage }, Date.now());
|
|
1901
|
+
}
|
|
1902
|
+
if (fileRestoreError) {
|
|
1903
|
+
historyManager.addItem({ type: 'error', text: fileRestoreError }, Date.now());
|
|
1904
|
+
}
|
|
1905
|
+
if (conversationSkippedNoClient) {
|
|
1906
|
+
historyManager.addItem({
|
|
1907
|
+
type: 'info',
|
|
1908
|
+
text: t('Code restored, but conversation could not be rewound (no active client).'),
|
|
1909
|
+
}, Date.now());
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
catch (error) {
|
|
1913
|
+
historyManager.addItem({
|
|
1914
|
+
type: 'error',
|
|
1915
|
+
text: t('Rewind failed: {{error}}', {
|
|
1916
|
+
error: error instanceof Error ? error.message : String(error),
|
|
1917
|
+
}),
|
|
1918
|
+
}, Date.now());
|
|
1919
|
+
}
|
|
1920
|
+
finally {
|
|
1921
|
+
setIsRewindSelectorOpen(false);
|
|
1922
|
+
}
|
|
1923
|
+
}, [config, historyManager, refreshStatic, buffer]);
|
|
1924
|
+
const handleDoubleEscRewind = useDoublePress(openRewindSelector, (pending) => setRewindEscPending(pending));
|
|
1925
|
+
const handleIdePromptComplete = useCallback((result) => {
|
|
1926
|
+
if (result.userSelection === 'yes') {
|
|
1927
|
+
// Check whether the extension has been pre-installed
|
|
1928
|
+
if (result.isExtensionPreInstalled) {
|
|
1929
|
+
handleSlashCommand('/ide enable');
|
|
1930
|
+
}
|
|
1931
|
+
else {
|
|
1932
|
+
handleSlashCommand('/ide install');
|
|
1933
|
+
}
|
|
1934
|
+
settings.setValue(SettingScope.User, 'ide.hasSeenNudge', true);
|
|
1935
|
+
}
|
|
1936
|
+
else if (result.userSelection === 'dismiss') {
|
|
1937
|
+
settings.setValue(SettingScope.User, 'ide.hasSeenNudge', true);
|
|
1938
|
+
}
|
|
1939
|
+
setIdePromptAnswered(true);
|
|
1940
|
+
}, [handleSlashCommand, settings]);
|
|
1941
|
+
const handleCommandMigrationComplete = useCallback(async (result) => {
|
|
1942
|
+
setShowCommandMigrationNudge(false);
|
|
1943
|
+
if (result.userSelection === 'yes') {
|
|
1944
|
+
// Perform migration for both workspace and user levels
|
|
1945
|
+
try {
|
|
1946
|
+
const results = [];
|
|
1947
|
+
// Migrate workspace commands
|
|
1948
|
+
const workspaceCommandsDir = config.storage.getProjectCommandsDir();
|
|
1949
|
+
const workspaceResult = await migrateTomlCommands({
|
|
1950
|
+
commandDir: workspaceCommandsDir,
|
|
1951
|
+
createBackup: true,
|
|
1952
|
+
deleteOriginal: false,
|
|
1953
|
+
});
|
|
1954
|
+
if (workspaceResult.convertedFiles.length > 0 ||
|
|
1955
|
+
workspaceResult.failedFiles.length > 0) {
|
|
1956
|
+
results.push({ level: 'workspace', result: workspaceResult });
|
|
1957
|
+
}
|
|
1958
|
+
// Migrate user commands
|
|
1959
|
+
const userCommandsDir = Storage.getUserCommandsDir();
|
|
1960
|
+
const userResult = await migrateTomlCommands({
|
|
1961
|
+
commandDir: userCommandsDir,
|
|
1962
|
+
createBackup: true,
|
|
1963
|
+
deleteOriginal: false,
|
|
1964
|
+
});
|
|
1965
|
+
if (userResult.convertedFiles.length > 0 ||
|
|
1966
|
+
userResult.failedFiles.length > 0) {
|
|
1967
|
+
results.push({ level: 'user', result: userResult });
|
|
1968
|
+
}
|
|
1969
|
+
// Report results
|
|
1970
|
+
for (const { level, result: migrationResult } of results) {
|
|
1971
|
+
if (migrationResult.success &&
|
|
1972
|
+
migrationResult.convertedFiles.length > 0) {
|
|
1973
|
+
historyManager.addItem({
|
|
1974
|
+
type: MessageType.INFO,
|
|
1975
|
+
text: `[${level}] Successfully migrated ${migrationResult.convertedFiles.length} command file${migrationResult.convertedFiles.length > 1 ? 's' : ''} to Markdown format. Original files backed up as .toml.backup`,
|
|
1976
|
+
}, Date.now());
|
|
1977
|
+
}
|
|
1978
|
+
if (migrationResult.failedFiles.length > 0) {
|
|
1979
|
+
historyManager.addItem({
|
|
1980
|
+
type: MessageType.ERROR,
|
|
1981
|
+
text: `[${level}] Failed to migrate ${migrationResult.failedFiles.length} file${migrationResult.failedFiles.length > 1 ? 's' : ''}:\n${migrationResult.failedFiles.map((f) => ` • ${f.file}: ${f.error}`).join('\n')}`,
|
|
1982
|
+
}, Date.now());
|
|
1983
|
+
}
|
|
1984
|
+
}
|
|
1985
|
+
if (results.length === 0) {
|
|
1986
|
+
historyManager.addItem({
|
|
1987
|
+
type: MessageType.INFO,
|
|
1988
|
+
text: 'No TOML files found to migrate.',
|
|
1989
|
+
}, Date.now());
|
|
1990
|
+
}
|
|
1991
|
+
}
|
|
1992
|
+
catch (error) {
|
|
1993
|
+
historyManager.addItem({
|
|
1994
|
+
type: MessageType.ERROR,
|
|
1995
|
+
text: `❌ Migration failed: ${getErrorMessage(error)}`,
|
|
1996
|
+
}, Date.now());
|
|
1997
|
+
}
|
|
1998
|
+
}
|
|
1999
|
+
}, [historyManager, setShowCommandMigrationNudge, config.storage]);
|
|
2000
|
+
const currentCandidatesTokens = Object.values(sessionStats.metrics?.models ?? {}).reduce((acc, model) => acc + (model.tokens?.candidates ?? 0), 0);
|
|
2001
|
+
const { elapsedTime, currentLoadingPhrase, taskStartTokens } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases, currentCandidatesTokens);
|
|
2002
|
+
useAttentionNotifications({
|
|
2003
|
+
isFocused,
|
|
2004
|
+
streamingState,
|
|
2005
|
+
elapsedTime,
|
|
2006
|
+
settings,
|
|
2007
|
+
config,
|
|
2008
|
+
terminal,
|
|
2009
|
+
pendingToolCalls,
|
|
2010
|
+
});
|
|
2011
|
+
// Dialog close functionality
|
|
2012
|
+
const { closeAnyOpenDialog } = useDialogClose({
|
|
2013
|
+
isThemeDialogOpen,
|
|
2014
|
+
handleThemeSelect,
|
|
2015
|
+
isApprovalModeDialogOpen,
|
|
2016
|
+
handleApprovalModeSelect,
|
|
2017
|
+
isAuthDialogOpen,
|
|
2018
|
+
closeAuthDialog,
|
|
2019
|
+
pendingAuthType,
|
|
2020
|
+
isEditorDialogOpen,
|
|
2021
|
+
exitEditorDialog,
|
|
2022
|
+
isSettingsDialogOpen,
|
|
2023
|
+
closeSettingsDialog,
|
|
2024
|
+
isStatusLineDialogOpen,
|
|
2025
|
+
closeStatusLineDialog,
|
|
2026
|
+
isMemoryDialogOpen,
|
|
2027
|
+
closeMemoryDialog,
|
|
2028
|
+
activeArenaDialog,
|
|
2029
|
+
closeArenaDialog,
|
|
2030
|
+
isFolderTrustDialogOpen,
|
|
2031
|
+
showWelcomeBackDialog,
|
|
2032
|
+
handleWelcomeBackClose,
|
|
2033
|
+
isHelpDialogOpen,
|
|
2034
|
+
closeHelpDialog,
|
|
2035
|
+
isBackgroundTasksDialogOpen: bgTasksDialogOpen,
|
|
2036
|
+
closeBackgroundTasksDialog: closeBgTasksDialog,
|
|
2037
|
+
isDiffDialogOpen,
|
|
2038
|
+
closeDiffDialog,
|
|
2039
|
+
isStatsDialogOpen,
|
|
2040
|
+
closeStatsDialog,
|
|
2041
|
+
showWorktreeExitDialog,
|
|
2042
|
+
closeWorktreeExitDialog: () => setShowWorktreeExitDialog(false),
|
|
2043
|
+
});
|
|
2044
|
+
const handleExit = useCallback((pressedOnce, setPressedOnce, timerRef) => {
|
|
2045
|
+
// Fast double-press: Direct quit (preserve user habit) — unless the
|
|
2046
|
+
// session is inside an active worktree, in which case intercept and
|
|
2047
|
+
// show WorktreeExitDialog so the user explicitly decides keep vs
|
|
2048
|
+
// remove before the process exits.
|
|
2049
|
+
if (pressedOnce) {
|
|
2050
|
+
if (timerRef.current) {
|
|
2051
|
+
clearTimeout(timerRef.current);
|
|
2052
|
+
}
|
|
2053
|
+
if (activeWorktree) {
|
|
2054
|
+
setShowWorktreeExitDialog(true);
|
|
2055
|
+
setPressedOnce(false);
|
|
2056
|
+
return;
|
|
2057
|
+
}
|
|
2058
|
+
// Exit directly
|
|
2059
|
+
handleSlashCommand('/quit');
|
|
2060
|
+
return;
|
|
2061
|
+
}
|
|
2062
|
+
// First press: Prioritize cleanup tasks
|
|
2063
|
+
// 1. Close other dialogs (highest priority)
|
|
2064
|
+
/**
|
|
2065
|
+
* For AuthDialog it is required to complete the authentication process,
|
|
2066
|
+
* otherwise user cannot proceed to the next step.
|
|
2067
|
+
* So a quit on AuthDialog should go with normal two press quit.
|
|
2068
|
+
*/
|
|
2069
|
+
if (isAuthDialogOpen) {
|
|
2070
|
+
setPressedOnce(true);
|
|
2071
|
+
timerRef.current = setTimeout(() => {
|
|
2072
|
+
setPressedOnce(false);
|
|
2073
|
+
}, 500);
|
|
2074
|
+
return;
|
|
2075
|
+
}
|
|
2076
|
+
// 2. Close other dialogs (highest priority)
|
|
2077
|
+
if (closeAnyOpenDialog()) {
|
|
2078
|
+
return; // Dialog closed, end processing
|
|
2079
|
+
}
|
|
2080
|
+
// 3. Cancel in-flight btw side-question
|
|
2081
|
+
if (btwItem && btwItem.btw.isPending && !dialogsVisibleRef.current) {
|
|
2082
|
+
cancelBtw();
|
|
2083
|
+
return; // Btw cancelled, end processing
|
|
2084
|
+
}
|
|
2085
|
+
// 4. Cancel ongoing requests
|
|
2086
|
+
if (streamingState === StreamingState.Responding) {
|
|
2087
|
+
cancelOngoingRequest?.();
|
|
2088
|
+
return; // Request cancelled, end processing
|
|
2089
|
+
}
|
|
2090
|
+
// 5. Clear input buffer (if has content)
|
|
2091
|
+
if (buffer.text.length > 0) {
|
|
2092
|
+
buffer.setText('');
|
|
2093
|
+
return; // Input cleared, end processing
|
|
2094
|
+
}
|
|
2095
|
+
// All cleanup tasks completed, set flag for double-press to quit
|
|
2096
|
+
setPressedOnce(true);
|
|
2097
|
+
timerRef.current = setTimeout(() => {
|
|
2098
|
+
setPressedOnce(false);
|
|
2099
|
+
}, CTRL_EXIT_PROMPT_DURATION_MS);
|
|
2100
|
+
}, [
|
|
2101
|
+
isAuthDialogOpen,
|
|
2102
|
+
handleSlashCommand,
|
|
2103
|
+
closeAnyOpenDialog,
|
|
2104
|
+
btwItem,
|
|
2105
|
+
cancelBtw,
|
|
2106
|
+
streamingState,
|
|
2107
|
+
cancelOngoingRequest,
|
|
2108
|
+
buffer,
|
|
2109
|
+
activeWorktree,
|
|
2110
|
+
]);
|
|
2111
|
+
const handleGlobalKeypress = useCallback((key) => {
|
|
2112
|
+
// Debug log keystrokes if enabled
|
|
2113
|
+
if (settings.merged.general?.debugKeystrokeLogging) {
|
|
2114
|
+
debugLogger.debug('[DEBUG] Keystroke:', JSON.stringify(key));
|
|
2115
|
+
}
|
|
2116
|
+
if (keyMatchers[Command.QUIT](key)) {
|
|
2117
|
+
if (isAuthenticating) {
|
|
2118
|
+
return;
|
|
2119
|
+
}
|
|
2120
|
+
// On first press: set flag, start timer, and call handleExit for cleanup
|
|
2121
|
+
// On second press (within timeout): handleExit sees flag and does fast quit
|
|
2122
|
+
if (!ctrlCPressedOnce) {
|
|
2123
|
+
setCtrlCPressedOnce(true);
|
|
2124
|
+
ctrlCTimerRef.current = setTimeout(() => {
|
|
2125
|
+
setCtrlCPressedOnce(false);
|
|
2126
|
+
ctrlCTimerRef.current = null;
|
|
2127
|
+
}, CTRL_EXIT_PROMPT_DURATION_MS);
|
|
2128
|
+
}
|
|
2129
|
+
handleExit(ctrlCPressedOnce, setCtrlCPressedOnce, ctrlCTimerRef);
|
|
2130
|
+
return;
|
|
2131
|
+
}
|
|
2132
|
+
else if (keyMatchers[Command.EXIT](key)) {
|
|
2133
|
+
// Cancel in-flight btw even when buffer has text (Ctrl+D)
|
|
2134
|
+
if (btwItem && btwItem.btw.isPending && !dialogsVisibleRef.current) {
|
|
2135
|
+
cancelBtw();
|
|
2136
|
+
return;
|
|
2137
|
+
}
|
|
2138
|
+
if (buffer.text.length > 0) {
|
|
2139
|
+
return;
|
|
2140
|
+
}
|
|
2141
|
+
handleExit(ctrlDPressedOnce, setCtrlDPressedOnce, ctrlDTimerRef);
|
|
2142
|
+
return;
|
|
2143
|
+
}
|
|
2144
|
+
else if (keyMatchers[Command.ESCAPE](key)) {
|
|
2145
|
+
// In vim INSERT mode, let vim's own handler (in InputPrompt) consume
|
|
2146
|
+
// the Esc to switch to NORMAL mode. Without this guard, both handlers
|
|
2147
|
+
// fire on the same keypress — vim switches mode AND AppContainer
|
|
2148
|
+
// shows "Press Esc again to clear" or cancels the stream.
|
|
2149
|
+
if (vimEnabled && vimMode === 'INSERT') {
|
|
2150
|
+
return;
|
|
2151
|
+
}
|
|
2152
|
+
// Dismiss or cancel btw side-question on Escape,
|
|
2153
|
+
// but only when btw is actually visible (not hidden behind a dialog).
|
|
2154
|
+
if (btwItem && !dialogsVisibleRef.current) {
|
|
2155
|
+
cancelBtw();
|
|
2156
|
+
return;
|
|
2157
|
+
}
|
|
2158
|
+
// Skip if shell is focused (to allow shell's own escape handling)
|
|
2159
|
+
if (embeddedShellFocused) {
|
|
2160
|
+
return;
|
|
2161
|
+
}
|
|
2162
|
+
// If input has content, use double-press to clear
|
|
2163
|
+
if (buffer.text.length > 0) {
|
|
2164
|
+
if (escapePressedOnce) {
|
|
2165
|
+
// Second press: clear input, keep the flag to allow immediate cancel
|
|
2166
|
+
buffer.setText('');
|
|
2167
|
+
return;
|
|
2168
|
+
}
|
|
2169
|
+
// First press: set flag and show prompt
|
|
2170
|
+
setEscapePressedOnce(true);
|
|
2171
|
+
escapeTimerRef.current = setTimeout(() => {
|
|
2172
|
+
setEscapePressedOnce(false);
|
|
2173
|
+
escapeTimerRef.current = null;
|
|
2174
|
+
}, CTRL_EXIT_PROMPT_DURATION_MS);
|
|
2175
|
+
return;
|
|
2176
|
+
}
|
|
2177
|
+
// Input is empty, cancel request immediately (no double-press needed)
|
|
2178
|
+
// Skip when a dialog (background tasks, etc.) is open — ESC should
|
|
2179
|
+
// close the dialog, not cancel the running request.
|
|
2180
|
+
if (streamingState === StreamingState.Responding &&
|
|
2181
|
+
!dialogsVisibleRef.current) {
|
|
2182
|
+
if (escapeTimerRef.current) {
|
|
2183
|
+
clearTimeout(escapeTimerRef.current);
|
|
2184
|
+
escapeTimerRef.current = null;
|
|
2185
|
+
}
|
|
2186
|
+
cancelOngoingRequest?.();
|
|
2187
|
+
setEscapePressedOnce(false);
|
|
2188
|
+
return;
|
|
2189
|
+
}
|
|
2190
|
+
// Input is empty and idle — double-ESC opens rewind selector
|
|
2191
|
+
if (streamingState === StreamingState.Idle &&
|
|
2192
|
+
!dialogsVisibleRef.current &&
|
|
2193
|
+
!config.getIdeMode()) {
|
|
2194
|
+
if (escapeTimerRef.current) {
|
|
2195
|
+
clearTimeout(escapeTimerRef.current);
|
|
2196
|
+
escapeTimerRef.current = null;
|
|
2197
|
+
}
|
|
2198
|
+
setEscapePressedOnce(false);
|
|
2199
|
+
handleDoubleEscRewind();
|
|
2200
|
+
return;
|
|
2201
|
+
}
|
|
2202
|
+
// No action available, reset the flag
|
|
2203
|
+
if (escapeTimerRef.current) {
|
|
2204
|
+
clearTimeout(escapeTimerRef.current);
|
|
2205
|
+
escapeTimerRef.current = null;
|
|
2206
|
+
}
|
|
2207
|
+
setEscapePressedOnce(false);
|
|
2208
|
+
return;
|
|
2209
|
+
}
|
|
2210
|
+
// Dismiss completed btw side-question on Space or Enter,
|
|
2211
|
+
// but only when btw is visible and the input buffer is empty.
|
|
2212
|
+
if (btwItem &&
|
|
2213
|
+
!btwItem.btw.isPending &&
|
|
2214
|
+
!dialogsVisibleRef.current &&
|
|
2215
|
+
buffer.text.length === 0) {
|
|
2216
|
+
if (key.name === 'return' || key.sequence === ' ') {
|
|
2217
|
+
setBtwItem(null);
|
|
2218
|
+
return;
|
|
2219
|
+
}
|
|
2220
|
+
}
|
|
2221
|
+
// Note: Ctrl+C/D btw cancellation is handled inside handleExit
|
|
2222
|
+
// (step 3), not here, because Command.QUIT/EXIT match first.
|
|
2223
|
+
let enteringConstrainHeightMode = false;
|
|
2224
|
+
if (!constrainHeight) {
|
|
2225
|
+
enteringConstrainHeightMode = true;
|
|
2226
|
+
setConstrainHeight(true);
|
|
2227
|
+
}
|
|
2228
|
+
if (handleRenderModeToggleKey(key, setRenderMode)) {
|
|
2229
|
+
return;
|
|
2230
|
+
}
|
|
2231
|
+
else if (keyMatchers[Command.TOGGLE_TOOL_DESCRIPTIONS](key)) {
|
|
2232
|
+
const newValue = !showToolDescriptions;
|
|
2233
|
+
setShowToolDescriptions(newValue);
|
|
2234
|
+
const mcpServers = config.getMcpServers();
|
|
2235
|
+
if (Object.keys(mcpServers || {}).length > 0) {
|
|
2236
|
+
handleSlashCommand(newValue ? '/mcp desc' : '/mcp nodesc');
|
|
2237
|
+
}
|
|
2238
|
+
}
|
|
2239
|
+
else if (keyMatchers[Command.TOGGLE_IDE_CONTEXT_DETAIL](key) &&
|
|
2240
|
+
config.getIdeMode() &&
|
|
2241
|
+
ideContextState) {
|
|
2242
|
+
handleSlashCommand('/ide status');
|
|
2243
|
+
}
|
|
2244
|
+
else if (keyMatchers[Command.SHOW_MORE_LINES](key) &&
|
|
2245
|
+
!enteringConstrainHeightMode) {
|
|
2246
|
+
setConstrainHeight(false);
|
|
2247
|
+
}
|
|
2248
|
+
else if (keyMatchers[Command.TOGGLE_SHELL_INPUT_FOCUS](key)) {
|
|
2249
|
+
if (activePtyId || embeddedShellFocused) {
|
|
2250
|
+
setEmbeddedShellFocused((prev) => !prev);
|
|
2251
|
+
}
|
|
2252
|
+
}
|
|
2253
|
+
else if (keyMatchers[Command.TOGGLE_COMPACT_MODE](key)) {
|
|
2254
|
+
const newValue = !compactMode;
|
|
2255
|
+
setCompactMode(newValue);
|
|
2256
|
+
void settings.setValue(SettingScope.User, 'ui.compactMode', newValue);
|
|
2257
|
+
// Skip the expensive clearTerminal + Static remount when no past
|
|
2258
|
+
// item would render differently (no tool_group / gemini_thought*).
|
|
2259
|
+
// Future items pick up the new mode naturally because Static is
|
|
2260
|
+
// append-only. Issue #3899: this unfreezes Ctrl+O for plain-chat
|
|
2261
|
+
// long sessions; tool/thinking-bearing sessions still go through
|
|
2262
|
+
// the (now chunked) full path in MainContent.
|
|
2263
|
+
if (compactToggleHasVisualEffect(historyRef.current)) {
|
|
2264
|
+
refreshStatic();
|
|
2265
|
+
}
|
|
2266
|
+
}
|
|
2267
|
+
else if (keyMatchers[Command.PROMOTE_SHELL_TO_BACKGROUND](key)) {
|
|
2268
|
+
// Ctrl+B: promote a running foreground shell command to a
|
|
2269
|
+
// background task (#3831). The child keeps running, the
|
|
2270
|
+
// agent's turn unblocks, and the shell becomes a regular
|
|
2271
|
+
// BackgroundShellEntry visible in `/tasks` + the dialog and
|
|
2272
|
+
// stoppable via `task_stop`.
|
|
2273
|
+
//
|
|
2274
|
+
// Read from the ref (NOT the destructured `pendingToolCalls`)
|
|
2275
|
+
// so we don't have to put `pendingToolCalls` in the deps
|
|
2276
|
+
// array — that would re-bind the keypress handler on every
|
|
2277
|
+
// tool-call status update, which is noisy.
|
|
2278
|
+
//
|
|
2279
|
+
// No-op when no foreground shell is currently executing OR
|
|
2280
|
+
// the executing tool call is non-shell (no
|
|
2281
|
+
// `promoteAbortController` projected). Falling through in
|
|
2282
|
+
// the no-op case is intentional: while the agent is idle the
|
|
2283
|
+
// input layer's own Ctrl+B handler (cursor-left in the
|
|
2284
|
+
// prompt) should still fire as before.
|
|
2285
|
+
//
|
|
2286
|
+
// Broadcast caveat: `KeypressContext.broadcast()` has no
|
|
2287
|
+
// consumed-flag mechanism today, so even after we `return`
|
|
2288
|
+
// here the same Ctrl+B keypress is also dispatched to other
|
|
2289
|
+
// useKeypress consumers (text buffer cursor-left,
|
|
2290
|
+
// DebugProfiler, etc.). Visible side effect during a
|
|
2291
|
+
// successful promote: the input cursor will move one
|
|
2292
|
+
// character left if the prompt has focus. Cosmetic; tracked
|
|
2293
|
+
// for a follow-up that introduces a `consumed` return value
|
|
2294
|
+
// on KeypressHandler so global handlers can swallow keys.
|
|
2295
|
+
const executingShell = pendingToolCallsRef.current.find((tc) => tc.status === 'executing' &&
|
|
2296
|
+
// Defense-in-depth: also gate on the tool name. Today only
|
|
2297
|
+
// the shell tool's invocation wires `promoteAbortController`,
|
|
2298
|
+
// but a future copy-paste / type-confusion that adds the
|
|
2299
|
+
// property to a non-shell tool would otherwise let Ctrl+B
|
|
2300
|
+
// mistakenly fire `abort({kind:'background'})` on a tool
|
|
2301
|
+
// whose service has no promote-handoff handler.
|
|
2302
|
+
tc.request.name === ToolNames.SHELL &&
|
|
2303
|
+
tc.promoteAbortController !== undefined);
|
|
2304
|
+
if (executingShell?.promoteAbortController) {
|
|
2305
|
+
debugLogger.debug(`Ctrl+B promote: matched executing shell tool call ${executingShell.request.callId}`);
|
|
2306
|
+
executingShell.promoteAbortController.abort({
|
|
2307
|
+
kind: 'background',
|
|
2308
|
+
});
|
|
2309
|
+
return;
|
|
2310
|
+
}
|
|
2311
|
+
debugLogger.debug(`Ctrl+B promote: no executing shell tool call; falling through ` +
|
|
2312
|
+
`(streamingState=${streamingState}, ` +
|
|
2313
|
+
`pendingToolCalls=${pendingToolCallsRef.current.length})`);
|
|
2314
|
+
}
|
|
2315
|
+
}, [
|
|
2316
|
+
constrainHeight,
|
|
2317
|
+
setConstrainHeight,
|
|
2318
|
+
showToolDescriptions,
|
|
2319
|
+
setShowToolDescriptions,
|
|
2320
|
+
config,
|
|
2321
|
+
ideContextState,
|
|
2322
|
+
handleExit,
|
|
2323
|
+
ctrlCPressedOnce,
|
|
2324
|
+
setCtrlCPressedOnce,
|
|
2325
|
+
ctrlCTimerRef,
|
|
2326
|
+
ctrlDPressedOnce,
|
|
2327
|
+
setCtrlDPressedOnce,
|
|
2328
|
+
ctrlDTimerRef,
|
|
2329
|
+
escapePressedOnce,
|
|
2330
|
+
setEscapePressedOnce,
|
|
2331
|
+
escapeTimerRef,
|
|
2332
|
+
streamingState,
|
|
2333
|
+
cancelOngoingRequest,
|
|
2334
|
+
buffer,
|
|
2335
|
+
handleSlashCommand,
|
|
2336
|
+
activePtyId,
|
|
2337
|
+
embeddedShellFocused,
|
|
2338
|
+
btwItem,
|
|
2339
|
+
setBtwItem,
|
|
2340
|
+
cancelBtw,
|
|
2341
|
+
// `settings` is a stable LoadedSettings instance (not recreated on render).
|
|
2342
|
+
// ESLint requires it here because the callback calls settings.setValue().
|
|
2343
|
+
// debugKeystrokeLogging is read at call time, so no stale closure risk.
|
|
2344
|
+
settings,
|
|
2345
|
+
isAuthenticating,
|
|
2346
|
+
compactMode,
|
|
2347
|
+
setCompactMode,
|
|
2348
|
+
setRenderMode,
|
|
2349
|
+
refreshStatic,
|
|
2350
|
+
handleDoubleEscRewind,
|
|
2351
|
+
vimEnabled,
|
|
2352
|
+
vimMode,
|
|
2353
|
+
]);
|
|
2354
|
+
useKeypress(handleGlobalKeypress, { isActive: true });
|
|
2355
|
+
// Update terminal title with Qwen Code status and thoughts
|
|
2356
|
+
useEffect(() => {
|
|
2357
|
+
// Respect both showStatusInTitle and hideWindowTitle settings
|
|
2358
|
+
if (!settings.merged.ui?.showStatusInTitle ||
|
|
2359
|
+
settings.merged.ui?.hideWindowTitle)
|
|
2360
|
+
return;
|
|
2361
|
+
let title;
|
|
2362
|
+
if (streamingState === StreamingState.Idle) {
|
|
2363
|
+
title = originalTitleRef.current;
|
|
2364
|
+
}
|
|
2365
|
+
else {
|
|
2366
|
+
const statusText = thought?.subject
|
|
2367
|
+
?.replace(/[\r\n]+/g, ' ')
|
|
2368
|
+
.substring(0, 80);
|
|
2369
|
+
title = statusText || originalTitleRef.current;
|
|
2370
|
+
}
|
|
2371
|
+
// Pad the title to a fixed width to prevent taskbar icon resizing.
|
|
2372
|
+
const paddedTitle = title.padEnd(80, ' ');
|
|
2373
|
+
// Only update the title if it's different from the last value we set
|
|
2374
|
+
if (lastTitleRef.current !== paddedTitle) {
|
|
2375
|
+
lastTitleRef.current = paddedTitle;
|
|
2376
|
+
stdout.write(`\x1b]2;${paddedTitle}\x07`);
|
|
2377
|
+
}
|
|
2378
|
+
// Note: We don't need to reset the window title on exit because Qwen Code is already doing that elsewhere
|
|
2379
|
+
}, [
|
|
2380
|
+
streamingState,
|
|
2381
|
+
thought,
|
|
2382
|
+
settings.merged.ui?.showStatusInTitle,
|
|
2383
|
+
settings.merged.ui?.hideWindowTitle,
|
|
2384
|
+
stdout,
|
|
2385
|
+
]);
|
|
2386
|
+
// Drain queued messages when idle. `queueDrainNonce` re-fires the effect
|
|
2387
|
+
// after each submission settles so multi-step queues drain end-to-end.
|
|
2388
|
+
const queueDrainingRef = useRef(false);
|
|
2389
|
+
const [queueDrainNonce, setQueueDrainNonce] = useState(0);
|
|
2390
|
+
useEffect(() => {
|
|
2391
|
+
if (queueDrainingRef.current)
|
|
2392
|
+
return;
|
|
2393
|
+
if (!isConfigInitialized)
|
|
2394
|
+
return;
|
|
2395
|
+
if (streamingState !== StreamingState.Idle)
|
|
2396
|
+
return;
|
|
2397
|
+
if (dialogsVisible)
|
|
2398
|
+
return;
|
|
2399
|
+
if (messageQueue.length === 0)
|
|
2400
|
+
return;
|
|
2401
|
+
// Two-phase: batch plain prompts as one turn, else pop next slash command.
|
|
2402
|
+
const plainPrompts = drainQueue();
|
|
2403
|
+
const submission = plainPrompts.length > 0 ? plainPrompts.join('\n\n') : popNextSegment();
|
|
2404
|
+
if (submission === null)
|
|
2405
|
+
return;
|
|
2406
|
+
queueDrainingRef.current = true;
|
|
2407
|
+
Promise.resolve(submitQuery(submission)).finally(() => {
|
|
2408
|
+
queueDrainingRef.current = false;
|
|
2409
|
+
setQueueDrainNonce((n) => n + 1);
|
|
2410
|
+
});
|
|
2411
|
+
}, [
|
|
2412
|
+
isConfigInitialized,
|
|
2413
|
+
streamingState,
|
|
2414
|
+
dialogsVisible,
|
|
2415
|
+
messageQueue,
|
|
2416
|
+
drainQueue,
|
|
2417
|
+
popNextSegment,
|
|
2418
|
+
submitQuery,
|
|
2419
|
+
queueDrainNonce,
|
|
2420
|
+
]);
|
|
2421
|
+
const nightly = props.version.includes('nightly');
|
|
2422
|
+
const uiState = useMemo(() => ({
|
|
2423
|
+
history: historyManager.history,
|
|
2424
|
+
historyManager,
|
|
2425
|
+
isThemeDialogOpen,
|
|
2426
|
+
themeError,
|
|
2427
|
+
auth: authState,
|
|
2428
|
+
isConfigInitialized,
|
|
2429
|
+
editorError,
|
|
2430
|
+
isEditorDialogOpen,
|
|
2431
|
+
debugMessage,
|
|
2432
|
+
quittingMessages,
|
|
2433
|
+
isSettingsDialogOpen,
|
|
2434
|
+
isStatusLineDialogOpen,
|
|
2435
|
+
statusLineSettingsVersion,
|
|
2436
|
+
statusLineConfigOverride,
|
|
2437
|
+
isMemoryDialogOpen,
|
|
2438
|
+
isModelDialogOpen,
|
|
2439
|
+
isFastModelMode,
|
|
2440
|
+
isTrustDialogOpen,
|
|
2441
|
+
activeArenaDialog,
|
|
2442
|
+
isPermissionsDialogOpen,
|
|
2443
|
+
isApprovalModeDialogOpen,
|
|
2444
|
+
isResumeDialogOpen,
|
|
2445
|
+
resumeMatchedSessions,
|
|
2446
|
+
isDeleteDialogOpen,
|
|
2447
|
+
isHelpDialogOpen,
|
|
2448
|
+
activeHelpTab,
|
|
2449
|
+
slashCommands,
|
|
2450
|
+
recentSlashCommands,
|
|
2451
|
+
pendingSlashCommandHistoryItems,
|
|
2452
|
+
commandContext,
|
|
2453
|
+
shellConfirmationRequest,
|
|
2454
|
+
confirmationRequest,
|
|
2455
|
+
confirmUpdateExtensionRequests,
|
|
2456
|
+
providerUpdateRequest,
|
|
2457
|
+
settingInputRequests,
|
|
2458
|
+
pluginChoiceRequests,
|
|
2459
|
+
loopDetectionConfirmationRequest,
|
|
2460
|
+
geminiMdFileCount,
|
|
2461
|
+
streamingState,
|
|
2462
|
+
initError,
|
|
2463
|
+
pendingGeminiHistoryItems,
|
|
2464
|
+
thought,
|
|
2465
|
+
shellModeActive,
|
|
2466
|
+
userMessages,
|
|
2467
|
+
buffer,
|
|
2468
|
+
inputWidth,
|
|
2469
|
+
suggestionsWidth,
|
|
2470
|
+
isInputActive,
|
|
2471
|
+
shouldShowIdePrompt,
|
|
2472
|
+
shouldShowCommandMigrationNudge,
|
|
2473
|
+
commandMigrationTomlFiles,
|
|
2474
|
+
isFolderTrustDialogOpen: isFolderTrustDialogOpen ?? false,
|
|
2475
|
+
isTrustedFolder,
|
|
2476
|
+
constrainHeight,
|
|
2477
|
+
ideContextState,
|
|
2478
|
+
showToolDescriptions,
|
|
2479
|
+
ctrlCPressedOnce,
|
|
2480
|
+
ctrlDPressedOnce,
|
|
2481
|
+
showEscapePrompt,
|
|
2482
|
+
isFocused,
|
|
2483
|
+
elapsedTime,
|
|
2484
|
+
currentLoadingPhrase,
|
|
2485
|
+
historyRemountKey,
|
|
2486
|
+
messageQueue,
|
|
2487
|
+
showAutoAcceptIndicator,
|
|
2488
|
+
currentModel,
|
|
2489
|
+
contextFileNames,
|
|
2490
|
+
availableTerminalHeight,
|
|
2491
|
+
useTerminalBuffer,
|
|
2492
|
+
mainAreaWidth,
|
|
2493
|
+
staticAreaMaxItemHeight,
|
|
2494
|
+
staticExtraHeight,
|
|
2495
|
+
dialogsVisible,
|
|
2496
|
+
pendingHistoryItems,
|
|
2497
|
+
stickyTodos,
|
|
2498
|
+
btwItem,
|
|
2499
|
+
setBtwItem,
|
|
2500
|
+
cancelBtw,
|
|
2501
|
+
nightly,
|
|
2502
|
+
branchName,
|
|
2503
|
+
activeWorktree,
|
|
2504
|
+
showWorktreeExitDialog,
|
|
2505
|
+
sessionStats,
|
|
2506
|
+
terminalWidth,
|
|
2507
|
+
terminalHeight,
|
|
2508
|
+
mainControlsRef,
|
|
2509
|
+
currentIDE,
|
|
2510
|
+
updateInfo,
|
|
2511
|
+
showIdeRestartPrompt,
|
|
2512
|
+
ideTrustRestartReason,
|
|
2513
|
+
isRestarting,
|
|
2514
|
+
extensionsUpdateState,
|
|
2515
|
+
activePtyId,
|
|
2516
|
+
embeddedShellFocused,
|
|
2517
|
+
// Welcome back dialog
|
|
2518
|
+
showWelcomeBackDialog,
|
|
2519
|
+
welcomeBackInfo,
|
|
2520
|
+
welcomeBackChoice,
|
|
2521
|
+
// Subagent dialogs
|
|
2522
|
+
isSubagentCreateDialogOpen,
|
|
2523
|
+
isAgentsManagerDialogOpen,
|
|
2524
|
+
// Skills manager dialog (`/skills`)
|
|
2525
|
+
isSkillsManagerDialogOpen,
|
|
2526
|
+
// Extensions manager dialog
|
|
2527
|
+
isExtensionsManagerDialogOpen,
|
|
2528
|
+
// MCP dialog
|
|
2529
|
+
isMcpDialogOpen,
|
|
2530
|
+
// Hooks dialog
|
|
2531
|
+
isHooksDialogOpen,
|
|
2532
|
+
isStatsDialogOpen,
|
|
2533
|
+
// Feedback dialog
|
|
2534
|
+
isFeedbackDialogOpen,
|
|
2535
|
+
// Per-task token tracking
|
|
2536
|
+
taskStartTokens,
|
|
2537
|
+
// Real-time token display
|
|
2538
|
+
streamingResponseLengthRef,
|
|
2539
|
+
isReceivingContent,
|
|
2540
|
+
// Session name
|
|
2541
|
+
sessionName,
|
|
2542
|
+
setSessionName,
|
|
2543
|
+
// Prompt suggestion
|
|
2544
|
+
promptSuggestion,
|
|
2545
|
+
dismissPromptSuggestion,
|
|
2546
|
+
// Rewind selector
|
|
2547
|
+
isRewindSelectorOpen,
|
|
2548
|
+
rewindEscPending,
|
|
2549
|
+
// Diff dialog
|
|
2550
|
+
isDiffDialogOpen,
|
|
2551
|
+
}), [
|
|
2552
|
+
isThemeDialogOpen,
|
|
2553
|
+
themeError,
|
|
2554
|
+
authState,
|
|
2555
|
+
isConfigInitialized,
|
|
2556
|
+
editorError,
|
|
2557
|
+
isEditorDialogOpen,
|
|
2558
|
+
debugMessage,
|
|
2559
|
+
quittingMessages,
|
|
2560
|
+
isSettingsDialogOpen,
|
|
2561
|
+
isStatusLineDialogOpen,
|
|
2562
|
+
statusLineSettingsVersion,
|
|
2563
|
+
statusLineConfigOverride,
|
|
2564
|
+
isMemoryDialogOpen,
|
|
2565
|
+
isModelDialogOpen,
|
|
2566
|
+
isFastModelMode,
|
|
2567
|
+
isTrustDialogOpen,
|
|
2568
|
+
activeArenaDialog,
|
|
2569
|
+
isPermissionsDialogOpen,
|
|
2570
|
+
isApprovalModeDialogOpen,
|
|
2571
|
+
isResumeDialogOpen,
|
|
2572
|
+
resumeMatchedSessions,
|
|
2573
|
+
isDeleteDialogOpen,
|
|
2574
|
+
isHelpDialogOpen,
|
|
2575
|
+
activeHelpTab,
|
|
2576
|
+
slashCommands,
|
|
2577
|
+
recentSlashCommands,
|
|
2578
|
+
pendingSlashCommandHistoryItems,
|
|
2579
|
+
commandContext,
|
|
2580
|
+
shellConfirmationRequest,
|
|
2581
|
+
confirmationRequest,
|
|
2582
|
+
confirmUpdateExtensionRequests,
|
|
2583
|
+
providerUpdateRequest,
|
|
2584
|
+
settingInputRequests,
|
|
2585
|
+
pluginChoiceRequests,
|
|
2586
|
+
loopDetectionConfirmationRequest,
|
|
2587
|
+
geminiMdFileCount,
|
|
2588
|
+
streamingState,
|
|
2589
|
+
initError,
|
|
2590
|
+
pendingGeminiHistoryItems,
|
|
2591
|
+
thought,
|
|
2592
|
+
shellModeActive,
|
|
2593
|
+
userMessages,
|
|
2594
|
+
buffer,
|
|
2595
|
+
inputWidth,
|
|
2596
|
+
suggestionsWidth,
|
|
2597
|
+
isInputActive,
|
|
2598
|
+
shouldShowIdePrompt,
|
|
2599
|
+
shouldShowCommandMigrationNudge,
|
|
2600
|
+
commandMigrationTomlFiles,
|
|
2601
|
+
isFolderTrustDialogOpen,
|
|
2602
|
+
isTrustedFolder,
|
|
2603
|
+
constrainHeight,
|
|
2604
|
+
ideContextState,
|
|
2605
|
+
showToolDescriptions,
|
|
2606
|
+
ctrlCPressedOnce,
|
|
2607
|
+
ctrlDPressedOnce,
|
|
2608
|
+
showEscapePrompt,
|
|
2609
|
+
isFocused,
|
|
2610
|
+
elapsedTime,
|
|
2611
|
+
currentLoadingPhrase,
|
|
2612
|
+
historyRemountKey,
|
|
2613
|
+
messageQueue,
|
|
2614
|
+
showAutoAcceptIndicator,
|
|
2615
|
+
contextFileNames,
|
|
2616
|
+
availableTerminalHeight,
|
|
2617
|
+
useTerminalBuffer,
|
|
2618
|
+
mainAreaWidth,
|
|
2619
|
+
staticAreaMaxItemHeight,
|
|
2620
|
+
staticExtraHeight,
|
|
2621
|
+
dialogsVisible,
|
|
2622
|
+
pendingHistoryItems,
|
|
2623
|
+
stickyTodos,
|
|
2624
|
+
btwItem,
|
|
2625
|
+
setBtwItem,
|
|
2626
|
+
cancelBtw,
|
|
2627
|
+
nightly,
|
|
2628
|
+
branchName,
|
|
2629
|
+
activeWorktree,
|
|
2630
|
+
showWorktreeExitDialog,
|
|
2631
|
+
sessionStats,
|
|
2632
|
+
terminalWidth,
|
|
2633
|
+
terminalHeight,
|
|
2634
|
+
mainControlsRef,
|
|
2635
|
+
currentIDE,
|
|
2636
|
+
updateInfo,
|
|
2637
|
+
showIdeRestartPrompt,
|
|
2638
|
+
ideTrustRestartReason,
|
|
2639
|
+
isRestarting,
|
|
2640
|
+
currentModel,
|
|
2641
|
+
extensionsUpdateState,
|
|
2642
|
+
activePtyId,
|
|
2643
|
+
historyManager,
|
|
2644
|
+
embeddedShellFocused,
|
|
2645
|
+
// Welcome back dialog
|
|
2646
|
+
showWelcomeBackDialog,
|
|
2647
|
+
welcomeBackInfo,
|
|
2648
|
+
welcomeBackChoice,
|
|
2649
|
+
// Subagent dialogs
|
|
2650
|
+
isSubagentCreateDialogOpen,
|
|
2651
|
+
isAgentsManagerDialogOpen,
|
|
2652
|
+
// Skills manager dialog (`/skills`)
|
|
2653
|
+
isSkillsManagerDialogOpen,
|
|
2654
|
+
// Extensions manager dialog
|
|
2655
|
+
isExtensionsManagerDialogOpen,
|
|
2656
|
+
// MCP dialog
|
|
2657
|
+
isMcpDialogOpen,
|
|
2658
|
+
// Hooks dialog
|
|
2659
|
+
isHooksDialogOpen,
|
|
2660
|
+
isStatsDialogOpen,
|
|
2661
|
+
// Feedback dialog
|
|
2662
|
+
isFeedbackDialogOpen,
|
|
2663
|
+
// Per-task token tracking
|
|
2664
|
+
taskStartTokens,
|
|
2665
|
+
// Real-time token display
|
|
2666
|
+
streamingResponseLengthRef,
|
|
2667
|
+
isReceivingContent,
|
|
2668
|
+
// Session name
|
|
2669
|
+
sessionName,
|
|
2670
|
+
setSessionName,
|
|
2671
|
+
// Prompt suggestion
|
|
2672
|
+
promptSuggestion,
|
|
2673
|
+
dismissPromptSuggestion,
|
|
2674
|
+
// Rewind selector
|
|
2675
|
+
isRewindSelectorOpen,
|
|
2676
|
+
rewindEscPending,
|
|
2677
|
+
// Diff dialog
|
|
2678
|
+
isDiffDialogOpen,
|
|
2679
|
+
]);
|
|
2680
|
+
const uiActions = useMemo(() => ({
|
|
2681
|
+
openThemeDialog,
|
|
2682
|
+
openEditorDialog,
|
|
2683
|
+
openMemoryDialog,
|
|
2684
|
+
handleThemeSelect,
|
|
2685
|
+
handleThemeHighlight,
|
|
2686
|
+
handleApprovalModeSelect,
|
|
2687
|
+
auth: authActions,
|
|
2688
|
+
handleEditorSelect,
|
|
2689
|
+
exitEditorDialog,
|
|
2690
|
+
closeSettingsDialog,
|
|
2691
|
+
closeStatusLineDialog,
|
|
2692
|
+
notifyStatusLineSettingsChanged,
|
|
2693
|
+
closeMemoryDialog,
|
|
2694
|
+
closeModelDialog,
|
|
2695
|
+
openModelDialog,
|
|
2696
|
+
openArenaDialog,
|
|
2697
|
+
closeArenaDialog,
|
|
2698
|
+
handleArenaModelsSelected,
|
|
2699
|
+
dismissProviderUpdate,
|
|
2700
|
+
closeTrustDialog,
|
|
2701
|
+
closePermissionsDialog,
|
|
2702
|
+
setShellModeActive,
|
|
2703
|
+
vimHandleInput,
|
|
2704
|
+
handleIdePromptComplete,
|
|
2705
|
+
handleCommandMigrationComplete,
|
|
2706
|
+
handleFolderTrustSelect,
|
|
2707
|
+
setConstrainHeight,
|
|
2708
|
+
onEscapePromptChange: handleEscapePromptChange,
|
|
2709
|
+
onTabConsumerChange: setHasTabConsumer,
|
|
2710
|
+
refreshStatic,
|
|
2711
|
+
handleFinalSubmit,
|
|
2712
|
+
handleRetryLastPrompt: retryLastPrompt,
|
|
2713
|
+
handleClearScreen,
|
|
2714
|
+
popAllQueuedMessages: popAllMessages,
|
|
2715
|
+
// Welcome back dialog
|
|
2716
|
+
handleWelcomeBackSelection,
|
|
2717
|
+
handleWelcomeBackClose,
|
|
2718
|
+
// Worktree exit dialog
|
|
2719
|
+
handleWorktreeExit,
|
|
2720
|
+
// Subagent dialogs
|
|
2721
|
+
closeSubagentCreateDialog,
|
|
2722
|
+
closeAgentsManagerDialog,
|
|
2723
|
+
// Skills manager dialog (`/skills`)
|
|
2724
|
+
openSkillsManagerDialog,
|
|
2725
|
+
closeSkillsManagerDialog,
|
|
2726
|
+
reloadCommands,
|
|
2727
|
+
setInputBuffer: buffer.setText,
|
|
2728
|
+
// Extensions manager dialog
|
|
2729
|
+
closeExtensionsManagerDialog,
|
|
2730
|
+
// MCP dialog
|
|
2731
|
+
closeMcpDialog,
|
|
2732
|
+
// Hooks dialog
|
|
2733
|
+
openHooksDialog,
|
|
2734
|
+
// Hooks dialog
|
|
2735
|
+
closeHooksDialog,
|
|
2736
|
+
closeStatsDialog,
|
|
2737
|
+
// Resume session dialog
|
|
2738
|
+
openResumeDialog,
|
|
2739
|
+
closeResumeDialog,
|
|
2740
|
+
handleResume,
|
|
2741
|
+
// Branch (fork) session
|
|
2742
|
+
handleBranch,
|
|
2743
|
+
// Delete session dialog
|
|
2744
|
+
openDeleteDialog,
|
|
2745
|
+
closeDeleteDialog,
|
|
2746
|
+
handleDelete,
|
|
2747
|
+
handleDeleteMany,
|
|
2748
|
+
// Help dialog
|
|
2749
|
+
openHelpDialog,
|
|
2750
|
+
closeHelpDialog,
|
|
2751
|
+
setHelpTab,
|
|
2752
|
+
// Feedback dialog
|
|
2753
|
+
openFeedbackDialog,
|
|
2754
|
+
closeFeedbackDialog,
|
|
2755
|
+
temporaryCloseFeedbackDialog,
|
|
2756
|
+
submitFeedback,
|
|
2757
|
+
// Rewind selector
|
|
2758
|
+
openRewindSelector,
|
|
2759
|
+
closeRewindSelector,
|
|
2760
|
+
handleRewindConfirm,
|
|
2761
|
+
// Diff dialog
|
|
2762
|
+
openDiffDialog,
|
|
2763
|
+
closeDiffDialog,
|
|
2764
|
+
}), [
|
|
2765
|
+
openThemeDialog,
|
|
2766
|
+
openEditorDialog,
|
|
2767
|
+
openMemoryDialog,
|
|
2768
|
+
handleThemeSelect,
|
|
2769
|
+
handleThemeHighlight,
|
|
2770
|
+
handleApprovalModeSelect,
|
|
2771
|
+
authActions,
|
|
2772
|
+
handleEditorSelect,
|
|
2773
|
+
exitEditorDialog,
|
|
2774
|
+
closeSettingsDialog,
|
|
2775
|
+
closeStatusLineDialog,
|
|
2776
|
+
notifyStatusLineSettingsChanged,
|
|
2777
|
+
closeMemoryDialog,
|
|
2778
|
+
closeModelDialog,
|
|
2779
|
+
openModelDialog,
|
|
2780
|
+
openArenaDialog,
|
|
2781
|
+
closeArenaDialog,
|
|
2782
|
+
handleArenaModelsSelected,
|
|
2783
|
+
dismissProviderUpdate,
|
|
2784
|
+
closeTrustDialog,
|
|
2785
|
+
closePermissionsDialog,
|
|
2786
|
+
setShellModeActive,
|
|
2787
|
+
vimHandleInput,
|
|
2788
|
+
handleIdePromptComplete,
|
|
2789
|
+
handleCommandMigrationComplete,
|
|
2790
|
+
handleFolderTrustSelect,
|
|
2791
|
+
setConstrainHeight,
|
|
2792
|
+
handleEscapePromptChange,
|
|
2793
|
+
refreshStatic,
|
|
2794
|
+
handleFinalSubmit,
|
|
2795
|
+
retryLastPrompt,
|
|
2796
|
+
handleClearScreen,
|
|
2797
|
+
popAllMessages,
|
|
2798
|
+
handleWelcomeBackSelection,
|
|
2799
|
+
handleWelcomeBackClose,
|
|
2800
|
+
handleWorktreeExit,
|
|
2801
|
+
// Subagent dialogs
|
|
2802
|
+
closeSubagentCreateDialog,
|
|
2803
|
+
closeAgentsManagerDialog,
|
|
2804
|
+
// Skills manager dialog (`/skills`)
|
|
2805
|
+
openSkillsManagerDialog,
|
|
2806
|
+
closeSkillsManagerDialog,
|
|
2807
|
+
reloadCommands,
|
|
2808
|
+
buffer.setText,
|
|
2809
|
+
// Extensions manager dialog
|
|
2810
|
+
closeExtensionsManagerDialog,
|
|
2811
|
+
// MCP dialog
|
|
2812
|
+
closeMcpDialog,
|
|
2813
|
+
// Hooks dialog
|
|
2814
|
+
openHooksDialog,
|
|
2815
|
+
// Hooks dialog
|
|
2816
|
+
closeHooksDialog,
|
|
2817
|
+
closeStatsDialog,
|
|
2818
|
+
// Resume session dialog
|
|
2819
|
+
openResumeDialog,
|
|
2820
|
+
closeResumeDialog,
|
|
2821
|
+
handleResume,
|
|
2822
|
+
// Branch (fork) session
|
|
2823
|
+
handleBranch,
|
|
2824
|
+
// Delete session dialog
|
|
2825
|
+
openDeleteDialog,
|
|
2826
|
+
closeDeleteDialog,
|
|
2827
|
+
handleDelete,
|
|
2828
|
+
handleDeleteMany,
|
|
2829
|
+
// Help dialog
|
|
2830
|
+
openHelpDialog,
|
|
2831
|
+
closeHelpDialog,
|
|
2832
|
+
setHelpTab,
|
|
2833
|
+
// Feedback dialog
|
|
2834
|
+
openFeedbackDialog,
|
|
2835
|
+
closeFeedbackDialog,
|
|
2836
|
+
temporaryCloseFeedbackDialog,
|
|
2837
|
+
submitFeedback,
|
|
2838
|
+
// Rewind selector
|
|
2839
|
+
openRewindSelector,
|
|
2840
|
+
closeRewindSelector,
|
|
2841
|
+
handleRewindConfirm,
|
|
2842
|
+
// Diff dialog
|
|
2843
|
+
openDiffDialog,
|
|
2844
|
+
closeDiffDialog,
|
|
2845
|
+
]);
|
|
2846
|
+
const compactModeValue = useMemo(() => ({ compactMode, compactInline, setCompactMode }), [compactMode, compactInline, setCompactMode]);
|
|
2847
|
+
const renderModeValue = useMemo(() => ({ renderMode, setRenderMode }), [renderMode, setRenderMode]);
|
|
2848
|
+
return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
|
|
2849
|
+
version: props.version,
|
|
2850
|
+
startupWarnings: props.startupWarnings || [],
|
|
2851
|
+
}, children: _jsx(CompactModeProvider, { value: compactModeValue, children: _jsx(RenderModeProvider, { value: renderModeValue, children: _jsx(TerminalOutputProvider, { value: writeRaw, children: _jsx(ShellFocusContext.Provider, { value: isFocused, children: _jsx(App, {}) }) }) }) }) }) }) }) }));
|
|
2852
|
+
};
|
|
2853
|
+
//# sourceMappingURL=AppContainer.js.map
|