@vybestack/llxprt-code 0.5.0 → 0.6.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/dist/package.json +15 -6
- package/dist/src/auth/gemini-oauth-provider.d.ts +18 -0
- package/dist/src/auth/gemini-oauth-provider.js +140 -78
- package/dist/src/auth/gemini-oauth-provider.js.map +1 -1
- package/dist/src/auth/local-oauth-callback.spec.js +29 -2
- package/dist/src/auth/local-oauth-callback.spec.js.map +1 -1
- package/dist/src/commands/extensions/disable.d.ts +1 -2
- package/dist/src/commands/extensions/disable.js +15 -3
- package/dist/src/commands/extensions/disable.js.map +1 -1
- package/dist/src/commands/extensions/enable.d.ts +1 -2
- package/dist/src/commands/extensions/enable.js +17 -6
- package/dist/src/commands/extensions/enable.js.map +1 -1
- package/dist/src/commands/extensions/install.d.ts +3 -1
- package/dist/src/commands/extensions/install.js +63 -12
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +166 -13
- package/dist/src/commands/extensions/install.test.js.map +1 -1
- package/dist/src/commands/extensions/link.js +2 -2
- package/dist/src/commands/extensions/link.js.map +1 -1
- package/dist/src/commands/extensions/list.d.ts +1 -1
- package/dist/src/commands/extensions/list.js +3 -2
- package/dist/src/commands/extensions/list.js.map +1 -1
- package/dist/src/commands/extensions/new.test.js +2 -2
- package/dist/src/commands/extensions/new.test.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.js +1 -1
- package/dist/src/commands/extensions/uninstall.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.test.js +4 -1
- package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
- package/dist/src/commands/extensions/update.d.ts +2 -2
- package/dist/src/commands/extensions/update.js +68 -19
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/commands/mcp/add.js +6 -1
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/commands/mcp/list.js +3 -2
- package/dist/src/commands/mcp/list.js.map +1 -1
- package/dist/src/config/__tests__/profileBootstrap.test.js +1351 -1
- package/dist/src/config/__tests__/profileBootstrap.test.js.map +1 -1
- package/dist/src/config/config.d.ts +4 -1
- package/dist/src/config/config.js +172 -69
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.loadMemory.test.js +6 -3
- package/dist/src/config/config.loadMemory.test.js.map +1 -1
- package/dist/src/config/extension.d.ts +48 -14
- package/dist/src/config/extension.js +263 -142
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/extensions/extensionEnablement.d.ts +47 -0
- package/dist/src/config/extensions/extensionEnablement.js +188 -0
- package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
- package/dist/src/config/extensions/extensionEnablement.test.d.ts +6 -0
- package/dist/src/config/extensions/extensionEnablement.test.js +333 -0
- package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
- package/dist/src/config/extensions/github.d.ts +37 -0
- package/dist/src/config/extensions/github.js +348 -0
- package/dist/src/config/extensions/github.js.map +1 -0
- package/dist/src/config/extensions/github.test.d.ts +6 -0
- package/dist/src/config/extensions/github.test.js +340 -0
- package/dist/src/config/extensions/github.test.js.map +1 -0
- package/dist/src/config/extensions/update.d.ts +19 -0
- package/dist/src/config/extensions/update.js +118 -0
- package/dist/src/config/extensions/update.js.map +1 -0
- package/dist/src/config/extensions/update.test.d.ts +6 -0
- package/dist/src/config/extensions/update.test.js +340 -0
- package/dist/src/config/extensions/update.test.js.map +1 -0
- package/dist/src/config/extensions/variableSchema.d.ts +8 -0
- package/dist/src/config/extensions/variableSchema.js +4 -0
- package/dist/src/config/extensions/variableSchema.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +1 -0
- package/dist/src/config/keyBindings.js +3 -1
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/paths.d.ts +8 -0
- package/dist/src/config/paths.js +11 -0
- package/dist/src/config/paths.js.map +1 -0
- package/dist/src/config/profileBootstrap.d.ts +13 -0
- package/dist/src/config/profileBootstrap.js +369 -15
- package/dist/src/config/profileBootstrap.js.map +1 -1
- package/dist/src/config/settings.d.ts +14 -4
- package/dist/src/config/settings.js +161 -99
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +510 -216
- package/dist/src/config/settingsSchema.js +468 -214
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +18 -31
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/config/trustedFolders.d.ts +6 -3
- package/dist/src/config/trustedFolders.js +35 -13
- package/dist/src/config/trustedFolders.js.map +1 -1
- package/dist/src/config/trustedFolders.test.js +83 -9
- package/dist/src/config/trustedFolders.test.js.map +1 -1
- package/dist/src/coreToolToggle.test.d.ts +6 -0
- package/dist/src/coreToolToggle.test.js +427 -0
- package/dist/src/coreToolToggle.test.js.map +1 -0
- package/dist/src/extensions/extensionAutoUpdater.d.ts +76 -0
- package/dist/src/extensions/extensionAutoUpdater.js +279 -0
- package/dist/src/extensions/extensionAutoUpdater.js.map +1 -0
- package/dist/src/extensions/extensionAutoUpdater.test.d.ts +6 -0
- package/dist/src/extensions/extensionAutoUpdater.test.js +146 -0
- package/dist/src/extensions/extensionAutoUpdater.test.js.map +1 -0
- package/dist/src/gemini.js +93 -63
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +121 -1
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/integration-tests/cli-args.integration.test.js +299 -0
- package/dist/src/integration-tests/cli-args.integration.test.js.map +1 -1
- package/dist/src/nonInteractiveCli.d.ts +2 -1
- package/dist/src/nonInteractiveCli.js +29 -16
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCliCommands.d.ts +17 -0
- package/dist/src/nonInteractiveCliCommands.js +81 -0
- package/dist/src/nonInteractiveCliCommands.js.map +1 -0
- package/dist/src/runtime/runtimeSettings.test.js +2 -0
- package/dist/src/runtime/runtimeSettings.test.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.d.ts +3 -3
- package/dist/src/services/BuiltinCommandLoader.js +7 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +37 -0
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/services/McpPromptLoader.js +39 -34
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/settings/ephemeralSettings.js +56 -0
- package/dist/src/settings/ephemeralSettings.js.map +1 -1
- package/dist/src/test-utils/createExtension.d.ts +15 -0
- package/dist/src/test-utils/createExtension.js +24 -0
- package/dist/src/test-utils/createExtension.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.js +4 -2
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/test-utils/render.d.ts +3 -1
- package/dist/src/test-utils/render.js +4 -1
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/App.d.ts +18 -3
- package/dist/src/ui/App.js +32 -873
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/AppContainer.d.ts +19 -0
- package/dist/src/ui/AppContainer.js +1187 -0
- package/dist/src/ui/AppContainer.js.map +1 -0
- package/dist/src/ui/IdeIntegrationNudge.d.ts +2 -2
- package/dist/src/ui/IdeIntegrationNudge.js +4 -7
- package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +214 -58
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +1 -2
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/diagnosticsCommand.js +2 -2
- package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.js +3 -2
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/commands/docsCommand.js +1 -1
- package/dist/src/ui/commands/docsCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.d.ts +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +92 -17
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/helpCommand.js +6 -5
- package/dist/src/ui/commands/helpCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +7 -7
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/loggingCommand.js +1 -1
- package/dist/src/ui/commands/loggingCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +11 -3
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +21 -3
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/permissionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/permissionsCommand.js +16 -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 +55 -0
- package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -0
- package/dist/src/ui/commands/policiesCommand.d.ts +10 -0
- package/dist/src/ui/commands/policiesCommand.js +112 -0
- package/dist/src/ui/commands/policiesCommand.js.map +1 -0
- package/dist/src/ui/commands/policiesCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/policiesCommand.test.js +224 -0
- package/dist/src/ui/commands/policiesCommand.test.js.map +1 -0
- package/dist/src/ui/commands/setCommand.js +105 -30
- package/dist/src/ui/commands/setCommand.js.map +1 -1
- package/dist/src/ui/commands/setCommand.test.js +1 -1
- package/dist/src/ui/commands/setCommand.test.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.js +11 -1
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/test/subagentCommand.test.js +6 -1
- package/dist/src/ui/commands/test/subagentCommand.test.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +19 -23
- package/dist/src/ui/commands/types.js +1 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/commands/uiprofileCommand.d.ts +7 -0
- package/dist/src/ui/commands/uiprofileCommand.js +23 -0
- package/dist/src/ui/commands/uiprofileCommand.js.map +1 -0
- package/dist/src/ui/components/AuthDialog.js +4 -0
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.test.js +32 -32
- package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/components/CacheStatsDisplay.d.ts +7 -0
- package/dist/src/ui/components/CacheStatsDisplay.js +35 -0
- package/dist/src/ui/components/CacheStatsDisplay.js.map +1 -0
- package/dist/src/ui/components/CacheStatsDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/CacheStatsDisplay.test.js +118 -0
- package/dist/src/ui/components/CacheStatsDisplay.test.js.map +1 -0
- package/dist/src/ui/components/CliSpinner.d.ts +10 -0
- package/dist/src/ui/components/CliSpinner.js +20 -0
- package/dist/src/ui/components/CliSpinner.js.map +1 -0
- package/dist/src/ui/components/Composer.d.ts +17 -0
- package/dist/src/ui/components/Composer.js +16 -0
- package/dist/src/ui/components/Composer.js.map +1 -0
- package/dist/src/ui/components/ConsentPrompt.d.ts +13 -0
- package/dist/src/ui/components/ConsentPrompt.js +18 -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 +67 -0
- package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -0
- package/dist/src/ui/components/DebugProfiler.d.ts +15 -0
- package/dist/src/ui/components/DebugProfiler.js +137 -13
- package/dist/src/ui/components/DebugProfiler.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.test.d.ts +6 -0
- package/dist/src/ui/components/DebugProfiler.test.js +131 -0
- package/dist/src/ui/components/DebugProfiler.test.js.map +1 -0
- package/dist/src/ui/components/DialogManager.d.ts +16 -0
- package/dist/src/ui/components/DialogManager.js +131 -0
- package/dist/src/ui/components/DialogManager.js.map +1 -0
- package/dist/src/ui/components/EditorSettingsDialog.js +18 -8
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.js +4 -0
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +2 -2
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.d.ts +6 -2
- package/dist/src/ui/components/HistoryItemDisplay.js +10 -2
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +90 -10
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.d.ts +6 -0
- package/dist/src/ui/components/InputPrompt.js +52 -18
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadProfileDialog.js +13 -9
- package/dist/src/ui/components/LoadProfileDialog.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +1 -1
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.test.js +6 -0
- package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/components/LoggingDialog.js +14 -10
- package/dist/src/ui/components/LoggingDialog.js.map +1 -1
- package/dist/src/ui/components/Notifications.d.ts +14 -0
- package/dist/src/ui/components/Notifications.js +34 -0
- package/dist/src/ui/components/Notifications.js.map +1 -0
- package/dist/src/ui/components/OAuthCodeDialog.js +2 -1
- package/dist/src/ui/components/OAuthCodeDialog.js.map +1 -1
- package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +14 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js +115 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +6 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +98 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -0
- package/dist/src/ui/components/ProviderDialog.js +23 -18
- package/dist/src/ui/components/ProviderDialog.js.map +1 -1
- package/dist/src/ui/components/ProviderModelDialog.js +24 -18
- package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +12 -2
- package/dist/src/ui/components/SettingsDialog.js +253 -23
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +90 -8
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.js +3 -0
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +6 -4
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ToolsDialog.js +6 -4
- package/dist/src/ui/components/ToolsDialog.js.map +1 -1
- package/dist/src/ui/components/WorkspaceMigrationDialog.js +5 -3
- package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +37 -6
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +9 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.js +7 -3
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js +7 -3
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/WarningMessage.d.ts +11 -0
- package/dist/src/ui/components/messages/WarningMessage.js +10 -0
- package/dist/src/ui/components/messages/WarningMessage.js.map +1 -0
- package/dist/src/ui/components/messages/WarningMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/WarningMessage.test.js +15 -0
- package/dist/src/ui/components/messages/WarningMessage.test.js.map +1 -0
- package/dist/src/ui/components/shared/BaseSelectionList.d.ts +38 -0
- package/dist/src/ui/components/shared/BaseSelectionList.js +76 -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/RadioButtonSelect.d.ts +4 -5
- package/dist/src/ui/components/shared/RadioButtonSelect.js +11 -117
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js +116 -95
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.d.ts +6 -0
- package/dist/src/ui/components/shared/text-buffer.js +71 -4
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/views/ChatList.d.ts +12 -0
- package/dist/src/ui/components/views/ChatList.js +17 -0
- package/dist/src/ui/components/views/ChatList.js.map +1 -0
- package/dist/src/ui/components/views/ChatList.test.d.ts +6 -0
- package/dist/src/ui/components/views/ChatList.test.js +42 -0
- package/dist/src/ui/components/views/ChatList.test.js.map +1 -0
- package/dist/src/ui/constants.d.ts +1 -0
- package/dist/src/ui/constants.js +1 -0
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/FocusContext.d.ts +7 -0
- package/dist/src/ui/contexts/FocusContext.js +9 -0
- package/dist/src/ui/contexts/FocusContext.js.map +1 -0
- package/dist/src/ui/contexts/KeypressContext.d.ts +1 -1
- package/dist/src/ui/contexts/KeypressContext.js +63 -4
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +156 -0
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
- package/dist/src/ui/contexts/SessionContext.js +107 -5
- package/dist/src/ui/contexts/SessionContext.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +82 -0
- package/dist/src/ui/contexts/UIActionsContext.js +20 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -0
- package/dist/src/ui/contexts/UIStateContext.d.ts +121 -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.js +4 -4
- package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +29 -6
- package/dist/src/ui/hooks/slashCommandProcessor.js +150 -155
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useBracketedPaste.js +3 -4
- package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -1
- package/dist/src/ui/hooks/useEditorSettings.js +1 -1
- package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
- package/dist/src/ui/hooks/useExtensionAutoUpdate.d.ts +13 -0
- package/dist/src/ui/hooks/useExtensionAutoUpdate.js +40 -0
- package/dist/src/ui/hooks/useExtensionAutoUpdate.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionUpdates.d.ts +21 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js +168 -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 +243 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
- package/dist/src/ui/hooks/useFlickerDetector.d.ts +22 -0
- package/dist/src/ui/hooks/useFlickerDetector.js +38 -0
- package/dist/src/ui/hooks/useFlickerDetector.js.map +1 -0
- package/dist/src/ui/hooks/useFlickerDetector.test.d.ts +6 -0
- package/dist/src/ui/hooks/useFlickerDetector.test.js +142 -0
- package/dist/src/ui/hooks/useFlickerDetector.test.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
- package/dist/src/ui/hooks/useGeminiStream.integration.test.js +1 -1
- package/dist/src/ui/hooks/useGeminiStream.integration.test.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +41 -18
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useMemoryMonitor.d.ts +13 -0
- package/dist/src/ui/hooks/useMemoryMonitor.js +28 -0
- package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +34 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js +90 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +6 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +60 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -0
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js +5 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useSelectionList.d.ts +34 -0
- package/dist/src/ui/hooks/useSelectionList.js +292 -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 +726 -0
- package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
- package/dist/src/ui/hooks/useShowMemoryCommand.js +1 -1
- package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -1
- package/dist/src/ui/hooks/useStateAndRef.d.ts +1 -1
- package/dist/src/ui/hooks/useStateAndRef.js +2 -2
- package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
- package/dist/src/ui/hooks/useStaticHistoryRefresh.d.ts +13 -0
- package/dist/src/ui/hooks/useStaticHistoryRefresh.js +35 -0
- package/dist/src/ui/hooks/useStaticHistoryRefresh.js.map +1 -0
- package/dist/src/ui/hooks/useStaticHistoryRefresh.test.d.ts +6 -0
- package/dist/src/ui/hooks/useStaticHistoryRefresh.test.js +42 -0
- package/dist/src/ui/hooks/useStaticHistoryRefresh.test.js.map +1 -0
- package/dist/src/ui/hooks/useThemeCommand.js +7 -7
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +17 -20
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +6 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/layouts/DefaultAppLayout.d.ts +23 -0
- package/dist/src/ui/layouts/DefaultAppLayout.js +76 -0
- package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js +31 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +2 -2
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
- package/dist/src/ui/privacy/MultiProviderPrivacyNotice.d.ts +11 -0
- package/dist/src/ui/privacy/MultiProviderPrivacyNotice.js +92 -0
- package/dist/src/ui/privacy/MultiProviderPrivacyNotice.js.map +1 -0
- package/dist/src/ui/privacy/MultiProviderPrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/MultiProviderPrivacyNotice.test.js +106 -0
- package/dist/src/ui/privacy/MultiProviderPrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/privacy/PrivacyNotice.js +4 -9
- package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -1
- package/dist/src/ui/state/extensions.d.ts +61 -0
- package/dist/src/ui/state/extensions.js +84 -0
- package/dist/src/ui/state/extensions.js.map +1 -0
- package/dist/src/ui/themes/theme.js +2 -2
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/types.d.ts +58 -2
- package/dist/src/ui/types.js +6 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.js +1 -2
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +94 -104
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/bracketedPaste.d.ts +9 -0
- package/dist/src/ui/utils/bracketedPaste.js +14 -0
- package/dist/src/ui/utils/bracketedPaste.js.map +1 -0
- package/dist/src/ui/utils/displayUtils.d.ts +1 -0
- package/dist/src/ui/utils/displayUtils.js +4 -1
- package/dist/src/ui/utils/displayUtils.js.map +1 -1
- package/dist/src/ui/utils/displayUtils.test.js +36 -17
- package/dist/src/ui/utils/displayUtils.test.js.map +1 -1
- package/dist/src/ui/utils/highlight.d.ts +2 -1
- package/dist/src/ui/utils/highlight.js +52 -8
- package/dist/src/ui/utils/highlight.js.map +1 -1
- package/dist/src/ui/utils/highlight.test.js +15 -14
- package/dist/src/ui/utils/highlight.test.js.map +1 -1
- package/dist/src/ui/utils/kittyProtocolDetector.d.ts +1 -0
- package/dist/src/ui/utils/kittyProtocolDetector.js +11 -3
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
- package/dist/src/ui/utils/terminalSequences.d.ts +22 -0
- package/dist/src/ui/utils/terminalSequences.js +23 -0
- package/dist/src/ui/utils/terminalSequences.js.map +1 -0
- package/dist/src/ui/utils/textUtils.d.ts +10 -0
- package/dist/src/ui/utils/textUtils.js +82 -1
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/ui/utils/textUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/textUtils.test.js +132 -0
- package/dist/src/ui/utils/textUtils.test.js.map +1 -0
- package/dist/src/utils/bootstrap.d.ts +24 -0
- package/dist/src/utils/bootstrap.js +55 -0
- package/dist/src/utils/bootstrap.js.map +1 -0
- package/dist/src/utils/bootstrap.test.d.ts +6 -0
- package/dist/src/utils/bootstrap.test.js +103 -0
- package/dist/src/utils/bootstrap.test.js.map +1 -0
- package/dist/src/utils/cleanup.d.ts +6 -0
- package/dist/src/utils/cleanup.js +14 -0
- package/dist/src/utils/cleanup.js.map +1 -1
- package/dist/src/utils/commands.d.ts +17 -0
- package/dist/src/utils/commands.js +60 -0
- package/dist/src/utils/commands.js.map +1 -0
- package/dist/src/utils/dialogScopeUtils.d.ts +3 -0
- package/dist/src/utils/dialogScopeUtils.js +11 -2
- package/dist/src/utils/dialogScopeUtils.js.map +1 -1
- package/dist/src/utils/dynamicSettings.d.ts +20 -0
- package/dist/src/utils/dynamicSettings.js +110 -0
- package/dist/src/utils/dynamicSettings.js.map +1 -0
- package/dist/src/utils/dynamicSettings.test.d.ts +6 -0
- package/dist/src/utils/dynamicSettings.test.js +329 -0
- package/dist/src/utils/dynamicSettings.test.js.map +1 -0
- package/dist/src/utils/events.d.ts +3 -1
- package/dist/src/utils/events.js +2 -0
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/handleAutoUpdate.js +4 -1
- package/dist/src/utils/handleAutoUpdate.js.map +1 -1
- package/dist/src/utils/installationInfo.d.ts +1 -0
- package/dist/src/utils/installationInfo.js +5 -3
- package/dist/src/utils/installationInfo.js.map +1 -1
- package/dist/src/utils/relaunch.d.ts +16 -0
- package/dist/src/utils/relaunch.js +34 -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 +96 -0
- package/dist/src/utils/relaunch.test.js.map +1 -0
- package/dist/src/utils/sessionCleanup.d.ts +22 -0
- package/dist/src/utils/sessionCleanup.integration.test.d.ts +6 -0
- package/dist/src/utils/sessionCleanup.integration.test.js +174 -0
- package/dist/src/utils/sessionCleanup.integration.test.js.map +1 -0
- package/dist/src/utils/sessionCleanup.js +213 -0
- package/dist/src/utils/sessionCleanup.js.map +1 -0
- package/dist/src/utils/sessionCleanup.test.d.ts +6 -0
- package/dist/src/utils/sessionCleanup.test.js +1144 -0
- package/dist/src/utils/sessionCleanup.test.js.map +1 -0
- package/dist/src/utils/sessionUtils.d.ts +37 -0
- package/dist/src/utils/sessionUtils.js +71 -0
- package/dist/src/utils/sessionUtils.js.map +1 -0
- package/dist/src/utils/settingsUtils.d.ts +6 -3
- package/dist/src/utils/settingsUtils.js +39 -11
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/settingsUtils.test.js +96 -96
- package/dist/src/utils/settingsUtils.test.js.map +1 -1
- package/dist/src/utils/singleSettingSaver.js +5 -0
- package/dist/src/utils/singleSettingSaver.js.map +1 -1
- 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/zed-integration/acp.js +1 -2
- package/dist/src/zed-integration/acp.js.map +1 -1
- package/dist/src/zed-integration/fileSystemService.d.ts +1 -0
- package/dist/src/zed-integration/fileSystemService.js +3 -0
- package/dist/src/zed-integration/fileSystemService.js.map +1 -1
- package/dist/src/zed-integration/schema.d.ts +212 -212
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +15 -6
- package/dist/src/ui/App.quittingMessages.test.d.ts +0 -1
- package/dist/src/ui/App.quittingMessages.test.js +0 -14
- package/dist/src/ui/App.quittingMessages.test.js.map +0 -1
|
@@ -24,7 +24,7 @@ export function EditorSettingsDialog({ onSelect, settings, onExit, }) {
|
|
|
24
24
|
}
|
|
25
25
|
}, { isActive: true });
|
|
26
26
|
const editorItems = editorSettingsManager.getAvailableEditorDisplays();
|
|
27
|
-
const currentPreference = settings.forScope(selectedScope).settings.preferredEditor;
|
|
27
|
+
const currentPreference = settings.forScope(selectedScope).settings.ui?.preferredEditor;
|
|
28
28
|
let editorIndex = currentPreference
|
|
29
29
|
? editorItems.findIndex((item) => item.type === currentPreference)
|
|
30
30
|
: 0;
|
|
@@ -33,8 +33,16 @@ export function EditorSettingsDialog({ onSelect, settings, onExit, }) {
|
|
|
33
33
|
editorIndex = 0;
|
|
34
34
|
}
|
|
35
35
|
const scopeItems = [
|
|
36
|
-
{
|
|
37
|
-
|
|
36
|
+
{
|
|
37
|
+
label: 'User Settings',
|
|
38
|
+
value: SettingScope.User,
|
|
39
|
+
key: SettingScope.User,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: 'Workspace Settings',
|
|
43
|
+
value: SettingScope.Workspace,
|
|
44
|
+
key: SettingScope.Workspace,
|
|
45
|
+
},
|
|
38
46
|
];
|
|
39
47
|
const handleEditorSelect = useCallback((editorType) => {
|
|
40
48
|
if (editorType === 'not_set') {
|
|
@@ -51,22 +59,24 @@ export function EditorSettingsDialog({ onSelect, settings, onExit, }) {
|
|
|
51
59
|
const otherScope = selectedScope === SettingScope.User
|
|
52
60
|
? SettingScope.Workspace
|
|
53
61
|
: SettingScope.User;
|
|
54
|
-
if (settings.forScope(otherScope).settings.preferredEditor !== undefined) {
|
|
62
|
+
if (settings.forScope(otherScope).settings.ui?.preferredEditor !== undefined) {
|
|
55
63
|
otherScopeModifiedMessage =
|
|
56
|
-
settings.forScope(selectedScope).settings.preferredEditor !==
|
|
64
|
+
settings.forScope(selectedScope).settings.ui?.preferredEditor !==
|
|
65
|
+
undefined
|
|
57
66
|
? `(Also modified in ${otherScope})`
|
|
58
67
|
: `(Modified in ${otherScope})`;
|
|
59
68
|
}
|
|
60
69
|
let mergedEditorName = 'None';
|
|
61
|
-
if (settings.merged.preferredEditor &&
|
|
62
|
-
isEditorAvailable(settings.merged.preferredEditor)) {
|
|
70
|
+
if (settings.merged.ui?.preferredEditor &&
|
|
71
|
+
isEditorAvailable(settings.merged.ui.preferredEditor)) {
|
|
63
72
|
mergedEditorName =
|
|
64
|
-
EDITOR_DISPLAY_NAMES[settings.merged.preferredEditor];
|
|
73
|
+
EDITOR_DISPLAY_NAMES[settings.merged.ui.preferredEditor];
|
|
65
74
|
}
|
|
66
75
|
return (_jsxs(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "row", padding: 1, width: "100%", children: [_jsxs(Box, { flexDirection: "column", width: "45%", paddingRight: 2, children: [_jsxs(Text, { bold: focusedSection === 'editor', children: [focusedSection === 'editor' ? '> ' : ' ', "Select Editor", ' ', _jsx(Text, { color: Colors.Gray, children: otherScopeModifiedMessage })] }), _jsx(RadioButtonSelect, { items: editorItems.map((item) => ({
|
|
67
76
|
label: item.name,
|
|
68
77
|
value: item.type,
|
|
69
78
|
disabled: item.disabled,
|
|
79
|
+
key: item.type,
|
|
70
80
|
})), initialIndex: editorIndex, onSelect: handleEditorSelect, isFocused: focusedSection === 'editor' }, selectedScope), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { bold: focusedSection === 'scope', children: [focusedSection === 'scope' ? '> ' : ' ', "Apply To"] }), _jsx(RadioButtonSelect, { items: scopeItems, initialIndex: 0, onSelect: handleScopeSelect, isFocused: focusedSection === 'scope' })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "(Use Enter to select, Tab to change focus)" }) })] }), _jsxs(Box, { flexDirection: "column", width: "55%", paddingLeft: 2, children: [_jsx(Text, { bold: true, children: "Editor Preference" }), _jsxs(Box, { flexDirection: "column", gap: 1, marginTop: 1, children: [_jsx(Text, { color: Colors.Gray, children: "These editors are currently supported. Please note that some editors cannot be used in sandbox mode." }), _jsxs(Text, { color: Colors.Gray, children: ["Your preferred editor is:", ' ', _jsx(Text, { color: mergedEditorName === 'None'
|
|
71
81
|
? Colors.AccentRed
|
|
72
82
|
: Colors.AccentCyan, bold: true, children: mergedEditorName }), "."] })] })] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorSettingsDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/EditorSettingsDialog.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAkB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAc,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQtD,MAAM,UAAU,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,MAAM,GACY;IAClB,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,YAAY,CAAC,IAAI,CAClB,CAAC;IACF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAClD,QAAQ,CACT,CAAC;IACF,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACvB,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IAEF,MAAM,WAAW,GACf,qBAAqB,CAAC,0BAA0B,EAAE,CAAC;IAErD,MAAM,iBAAiB,GACrB,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"EditorSettingsDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/EditorSettingsDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -27,19 +27,23 @@ export const FolderTrustDialog = ({ onSelect, isRestarting, }) => {
|
|
|
27
27
|
process.exit(0);
|
|
28
28
|
}
|
|
29
29
|
}, { isActive: !!isRestarting });
|
|
30
|
+
const currentFolder = path.basename(process.cwd());
|
|
30
31
|
const parentFolder = path.basename(path.dirname(process.cwd()));
|
|
31
32
|
const options = [
|
|
32
33
|
{
|
|
33
34
|
label: 'Trust folder',
|
|
34
35
|
value: FolderTrustChoice.TRUST_FOLDER,
|
|
36
|
+
key: `Trust folder (${currentFolder})`,
|
|
35
37
|
},
|
|
36
38
|
{
|
|
37
39
|
label: `Trust parent folder (${parentFolder})`,
|
|
38
40
|
value: FolderTrustChoice.TRUST_PARENT,
|
|
41
|
+
key: `Trust parent folder (${parentFolder})`,
|
|
39
42
|
},
|
|
40
43
|
{
|
|
41
44
|
label: "Don't trust (esc)",
|
|
42
45
|
value: FolderTrustChoice.DO_NOT_TRUST,
|
|
46
|
+
key: "Don't trust (esc)",
|
|
43
47
|
},
|
|
44
48
|
];
|
|
45
49
|
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: Colors.AccentYellow, padding: 1, width: "100%", marginLeft: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Do you trust this folder?" }), _jsx(Text, { children: "Trusting a folder allows llxprt to execute commands it suggests. This is a security feature to prevent accidental execution in untrusted directories." })] }), _jsx(RadioButtonSelect, { items: options, onSelect: onSelect, isFocused: !isRestarting })] }), isRestarting && (_jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { color: Colors.AccentYellow, children: "To see changes, llxprt must be restarted. Press r to exit and apply changes now." }) }))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FolderTrustDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,iBAAiB,GAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;AAC/B,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAOD,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAClE,QAAQ,EACR,YAAY,GACb,EAAE,EAAE;IACH,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,CAC5B,CAAC;IAEF,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAE,CAC7B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEhE,MAAM,OAAO,GAA8C;QACzD;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,iBAAiB,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"FolderTrustDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,iBAAiB,GAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;AAC/B,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAOD,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAClE,QAAQ,EACR,YAAY,GACb,EAAE,EAAE;IACH,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,CAC5B,CAAC;IAEF,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAE,CAC7B,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEhE,MAAM,OAAO,GAA8C;QACzD;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,iBAAiB,CAAC,YAAY;YACrC,GAAG,EAAE,iBAAiB,aAAa,GAAG;SACvC;QACD;YACE,KAAK,EAAE,wBAAwB,YAAY,GAAG;YAC9C,KAAK,EAAE,iBAAiB,CAAC,YAAY;YACrC,GAAG,EAAE,wBAAwB,YAAY,GAAG;SAC7C;QACD;YACE,KAAK,EAAE,mBAAmB;YAC1B,KAAK,EAAE,iBAAiB,CAAC,YAAY;YACrC,GAAG,EAAE,mBAAmB;SACzB;KACF,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,YAAY,EAChC,OAAO,EAAE,CAAC,EACV,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,CAAC,aAEb,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,gDAAiC,EAC3C,KAAC,IAAI,wKAIE,IACH,EAEN,KAAC,iBAAiB,IAChB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,CAAC,YAAY,GACxB,IACE,EACL,YAAY,IAAI,CACf,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YAC9B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,iGAGzB,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -10,8 +10,8 @@ import { vi } from 'vitest';
|
|
|
10
10
|
import { FolderTrustDialog, FolderTrustChoice } from './FolderTrustDialog.js';
|
|
11
11
|
const mockedExit = vi.hoisted(() => vi.fn());
|
|
12
12
|
const mockedCwd = vi.hoisted(() => vi.fn());
|
|
13
|
-
vi.mock('process', async () => {
|
|
14
|
-
const actual = await vi.importActual('process');
|
|
13
|
+
vi.mock('node:process', async () => {
|
|
14
|
+
const actual = await vi.importActual('node:process');
|
|
15
15
|
return {
|
|
16
16
|
...actual,
|
|
17
17
|
exit: mockedExit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FolderTrustDialog.test.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE9E,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAE5C,EAAE,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"FolderTrustDialog.test.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Copyright 2025 Vybestack LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import React from 'react';
|
|
6
|
+
import type React from 'react';
|
|
7
7
|
import type { HistoryItem } from '../types.js';
|
|
8
8
|
import { Config } from '@vybestack/llxprt-code-core';
|
|
9
|
-
import { SlashCommand } from '../commands/types.js';
|
|
9
|
+
import type { SlashCommand } from '../commands/types.js';
|
|
10
10
|
interface HistoryItemDisplayProps {
|
|
11
11
|
item: HistoryItem;
|
|
12
12
|
availableTerminalHeight?: number;
|
|
@@ -16,6 +16,10 @@ interface HistoryItemDisplayProps {
|
|
|
16
16
|
isFocused?: boolean;
|
|
17
17
|
slashCommands?: readonly SlashCommand[];
|
|
18
18
|
showTodoPanel?: boolean;
|
|
19
|
+
commands?: readonly SlashCommand[];
|
|
20
|
+
activeShellPtyId?: number | null;
|
|
21
|
+
embeddedShellFocused?: boolean;
|
|
22
|
+
availableTerminalHeightGemini?: number;
|
|
19
23
|
}
|
|
20
24
|
export declare const HistoryItemDisplay: React.FC<HistoryItemDisplayProps>;
|
|
21
25
|
export {};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { escapeAnsiCtrlCodes } from '../utils/textUtils.js';
|
|
2
4
|
import { UserMessage } from './messages/UserMessage.js';
|
|
3
5
|
import { UserShellMessage } from './messages/UserShellMessage.js';
|
|
4
6
|
import { GeminiMessage } from './messages/GeminiMessage.js';
|
|
@@ -8,12 +10,18 @@ import { OAuthUrlMessage } from './messages/OAuthUrlMessage.js';
|
|
|
8
10
|
import { ToolGroupMessage } from './messages/ToolGroupMessage.js';
|
|
9
11
|
import { GeminiMessageContent } from './messages/GeminiMessageContent.js';
|
|
10
12
|
import { CompressionMessage } from './messages/CompressionMessage.js';
|
|
11
|
-
import {
|
|
13
|
+
import { WarningMessage } from './messages/WarningMessage.js';
|
|
14
|
+
import { Box, Text } from 'ink';
|
|
12
15
|
import { AboutBox } from './AboutBox.js';
|
|
13
16
|
import { StatsDisplay } from './StatsDisplay.js';
|
|
14
17
|
import { ModelStatsDisplay } from './ModelStatsDisplay.js';
|
|
15
18
|
import { ToolStatsDisplay } from './ToolStatsDisplay.js';
|
|
19
|
+
import { CacheStatsDisplay } from './CacheStatsDisplay.js';
|
|
16
20
|
import { SessionSummaryDisplay } from './SessionSummaryDisplay.js';
|
|
17
21
|
import { Help } from './Help.js';
|
|
18
|
-
|
|
22
|
+
import { ChatList } from './views/ChatList.js';
|
|
23
|
+
export const HistoryItemDisplay = ({ item, availableTerminalHeight, terminalWidth, isPending, config, isFocused = true, slashCommands = [], showTodoPanel = true, activeShellPtyId: _activeShellPtyId, embeddedShellFocused: _embeddedShellFocused, availableTerminalHeightGemini: _availableTerminalHeightGemini, }) => {
|
|
24
|
+
const itemForDisplay = useMemo(() => escapeAnsiCtrlCodes(item), [item]);
|
|
25
|
+
return (_jsxs(Box, { flexDirection: "column", children: [itemForDisplay.type === 'user' && (_jsx(UserMessage, { text: itemForDisplay.text })), itemForDisplay.type === 'user_shell' && (_jsx(UserShellMessage, { text: itemForDisplay.text })), itemForDisplay.type === 'gemini' && (_jsx(GeminiMessage, { text: itemForDisplay.text, isPending: isPending, availableTerminalHeight: _availableTerminalHeightGemini ?? availableTerminalHeight, terminalWidth: terminalWidth, model: itemForDisplay.model })), itemForDisplay.type === 'gemini_content' && (_jsx(GeminiMessageContent, { text: itemForDisplay.text, isPending: isPending, availableTerminalHeight: _availableTerminalHeightGemini ?? availableTerminalHeight, terminalWidth: terminalWidth })), itemForDisplay.type === 'info' && (_jsx(InfoMessage, { text: itemForDisplay.text })), itemForDisplay.type === 'warning' && (_jsx(WarningMessage, { text: itemForDisplay.text })), itemForDisplay.type === 'error' && (_jsx(ErrorMessage, { text: itemForDisplay.text })), itemForDisplay.type === 'oauth_url' && (_jsx(OAuthUrlMessage, { text: itemForDisplay.text, url: itemForDisplay.url })), itemForDisplay.type === 'about' && (_jsx(AboutBox, { cliVersion: itemForDisplay.cliVersion, osVersion: itemForDisplay.osVersion, sandboxEnv: itemForDisplay.sandboxEnv, modelVersion: itemForDisplay.modelVersion, selectedAuthType: itemForDisplay.selectedAuthType, gcpProject: itemForDisplay.gcpProject, ideClient: itemForDisplay.ideClient, provider: itemForDisplay.provider, baseURL: itemForDisplay.baseURL, keyfile: itemForDisplay.keyfile }, itemForDisplay.key)), itemForDisplay.type === 'help' && _jsx(Help, { commands: slashCommands }), itemForDisplay.type === 'stats' && (_jsx(StatsDisplay, { duration: itemForDisplay.duration })), itemForDisplay.type === 'model_stats' && _jsx(ModelStatsDisplay, {}), itemForDisplay.type === 'tool_stats' && _jsx(ToolStatsDisplay, {}), itemForDisplay.type === 'cache_stats' && _jsx(CacheStatsDisplay, {}), itemForDisplay.type === 'quit' && (_jsx(SessionSummaryDisplay, { duration: itemForDisplay.duration })), itemForDisplay.type === 'tool_group' && (_jsx(ToolGroupMessage, { toolCalls: itemForDisplay.tools, groupId: itemForDisplay.id, agentId: itemForDisplay.agentId, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth, config: config, isFocused: isFocused, showTodoPanel: showTodoPanel })), itemForDisplay.type === 'compression' && (_jsx(CompressionMessage, { compression: itemForDisplay.compression })), itemForDisplay.type === 'extensions_list' && (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: "Extensions list view not yet implemented" }) })), itemForDisplay.type === 'tools_list' && (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: "Tools list view not yet implemented" }) })), itemForDisplay.type === 'mcp_status' && (_jsx(Box, { children: _jsx(Text, { color: "yellow", children: "MCP status view not yet implemented" }) })), itemForDisplay.type === 'chat_list' && (_jsx(ChatList, { chats: itemForDisplay.chats }))] }, itemForDisplay.id));
|
|
26
|
+
};
|
|
19
27
|
//# sourceMappingURL=HistoryItemDisplay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistoryItemDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"HistoryItemDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAiB/C,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,IAAI,EACJ,uBAAuB,EACvB,aAAa,EACb,SAAS,EACT,MAAM,EACN,SAAS,GAAG,IAAI,EAChB,aAAa,GAAG,EAAE,EAClB,aAAa,GAAG,IAAI,EACpB,gBAAgB,EAAE,iBAAiB,EACnC,oBAAoB,EAAE,qBAAqB,EAC3C,6BAA6B,EAAE,8BAA8B,GAC9D,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAExE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAExB,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,CACjC,KAAC,WAAW,IAAC,IAAI,EAAE,cAAc,CAAC,IAAI,GAAI,CAC3C,EACA,cAAc,CAAC,IAAI,KAAK,YAAY,IAAI,CACvC,KAAC,gBAAgB,IAAC,IAAI,EAAE,cAAc,CAAC,IAAI,GAAI,CAChD,EACA,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,CACnC,KAAC,aAAa,IACZ,IAAI,EAAE,cAAc,CAAC,IAAI,EACzB,SAAS,EAAE,SAAS,EACpB,uBAAuB,EACrB,8BAA8B,IAAI,uBAAuB,EAE3D,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,cAAc,CAAC,KAAK,GAC3B,CACH,EACA,cAAc,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAC3C,KAAC,oBAAoB,IACnB,IAAI,EAAE,cAAc,CAAC,IAAI,EACzB,SAAS,EAAE,SAAS,EACpB,uBAAuB,EACrB,8BAA8B,IAAI,uBAAuB,EAE3D,aAAa,EAAE,aAAa,GAC5B,CACH,EACA,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,CACjC,KAAC,WAAW,IAAC,IAAI,EAAE,cAAc,CAAC,IAAI,GAAI,CAC3C,EACA,cAAc,CAAC,IAAI,KAAK,SAAS,IAAI,CACpC,KAAC,cAAc,IAAC,IAAI,EAAE,cAAc,CAAC,IAAI,GAAI,CAC9C,EACA,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,CAClC,KAAC,YAAY,IAAC,IAAI,EAAE,cAAc,CAAC,IAAI,GAAI,CAC5C,EACA,cAAc,CAAC,IAAI,KAAK,WAAW,IAAI,CACtC,KAAC,eAAe,IAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,GAAI,CACxE,EACA,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,CAClC,KAAC,QAAQ,IACP,UAAU,EAAE,cAAc,CAAC,UAAU,EACrC,SAAS,EAAE,cAAc,CAAC,SAAS,EACnC,UAAU,EAAE,cAAc,CAAC,UAAU,EACrC,YAAY,EAAE,cAAc,CAAC,YAAY,EACzC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,EACjD,UAAU,EAAE,cAAc,CAAC,UAAU,EACrC,SAAS,EAAE,cAAc,CAAC,SAAS,EACnC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EACjC,OAAO,EAAE,cAAc,CAAC,OAAO,EAC/B,OAAO,EAAE,cAAc,CAAC,OAAO,IAC1B,cAAc,CAAC,GAAG,CACvB,CACH,EACA,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,KAAC,IAAI,IAAC,QAAQ,EAAE,aAAa,GAAI,EACnE,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,CAClC,KAAC,YAAY,IAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,GAAI,CACpD,EACA,cAAc,CAAC,IAAI,KAAK,aAAa,IAAI,KAAC,iBAAiB,KAAG,EAC9D,cAAc,CAAC,IAAI,KAAK,YAAY,IAAI,KAAC,gBAAgB,KAAG,EAC5D,cAAc,CAAC,IAAI,KAAK,aAAa,IAAI,KAAC,iBAAiB,KAAG,EAC9D,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,CACjC,KAAC,qBAAqB,IAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,GAAI,CAC7D,EACA,cAAc,CAAC,IAAI,KAAK,YAAY,IAAI,CACvC,KAAC,gBAAgB,IACf,SAAS,EAAE,cAAc,CAAC,KAAK,EAC/B,OAAO,EAAE,cAAc,CAAC,EAAE,EAC1B,OAAO,EAAE,cAAc,CAAC,OAAO,EAC/B,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,GAC5B,CACH,EACA,cAAc,CAAC,IAAI,KAAK,aAAa,IAAI,CACxC,KAAC,kBAAkB,IAAC,WAAW,EAAE,cAAc,CAAC,WAAW,GAAI,CAChE,EACA,cAAc,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAC5C,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,yDAAgD,GAChE,CACP,EACA,cAAc,CAAC,IAAI,KAAK,YAAY,IAAI,CACvC,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,oDAA2C,GAC3D,CACP,EACA,cAAc,CAAC,IAAI,KAAK,YAAY,IAAI,CACvC,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,oDAA2C,GAC3D,CACP,EACA,cAAc,CAAC,IAAI,KAAK,WAAW,IAAI,CACtC,KAAC,QAAQ,IAAC,KAAK,EAAE,cAAc,CAAC,KAAK,GAAI,CAC1C,KAlG8B,cAAc,CAAC,EAAE,CAmG5C,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -4,14 +4,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
* Copyright 2025 Vybestack LLC
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
|
-
import { render } from 'ink-testing-library';
|
|
8
7
|
import { describe, it, expect, vi } from 'vitest';
|
|
9
8
|
import { HistoryItemDisplay } from './HistoryItemDisplay.js';
|
|
10
|
-
import { MessageType } from '../types.js';
|
|
9
|
+
import { MessageType, ToolCallStatus } from '../types.js';
|
|
11
10
|
import { SessionStatsProvider } from '../contexts/SessionContext.js';
|
|
11
|
+
import { ToolGroupMessage } from './messages/ToolGroupMessage.js';
|
|
12
|
+
import { renderWithProviders } from '../../test-utils/render.js';
|
|
12
13
|
// Mock child components
|
|
13
14
|
vi.mock('./messages/ToolGroupMessage.js', () => ({
|
|
14
|
-
ToolGroupMessage: () => _jsx("div", {}),
|
|
15
|
+
ToolGroupMessage: vi.fn(() => _jsx("div", {})),
|
|
15
16
|
}));
|
|
16
17
|
describe('<HistoryItemDisplay />', () => {
|
|
17
18
|
const mockConfig = {};
|
|
@@ -28,7 +29,7 @@ describe('<HistoryItemDisplay />', () => {
|
|
|
28
29
|
type: MessageType.USER,
|
|
29
30
|
text: 'Hello',
|
|
30
31
|
};
|
|
31
|
-
const { lastFrame } =
|
|
32
|
+
const { lastFrame } = renderWithProviders(_jsx(HistoryItemDisplay, { ...baseItem, item: item }));
|
|
32
33
|
expect(lastFrame()).toContain('Hello');
|
|
33
34
|
});
|
|
34
35
|
it('renders UserMessage for "user" type with slash command', () => {
|
|
@@ -37,7 +38,7 @@ describe('<HistoryItemDisplay />', () => {
|
|
|
37
38
|
type: MessageType.USER,
|
|
38
39
|
text: '/theme',
|
|
39
40
|
};
|
|
40
|
-
const { lastFrame } =
|
|
41
|
+
const { lastFrame } = renderWithProviders(_jsx(HistoryItemDisplay, { ...baseItem, item: item }));
|
|
41
42
|
expect(lastFrame()).toContain('/theme');
|
|
42
43
|
});
|
|
43
44
|
it('renders StatsDisplay for "stats" type', () => {
|
|
@@ -46,7 +47,7 @@ describe('<HistoryItemDisplay />', () => {
|
|
|
46
47
|
type: MessageType.STATS,
|
|
47
48
|
duration: '1s',
|
|
48
49
|
};
|
|
49
|
-
const { lastFrame } =
|
|
50
|
+
const { lastFrame } = renderWithProviders(_jsx(SessionStatsProvider, { children: _jsx(HistoryItemDisplay, { ...baseItem, item: item }) }));
|
|
50
51
|
expect(lastFrame()).toContain('Stats');
|
|
51
52
|
});
|
|
52
53
|
it('renders AboutBox for "about" type', () => {
|
|
@@ -65,7 +66,7 @@ describe('<HistoryItemDisplay />', () => {
|
|
|
65
66
|
provider: 'test-provider',
|
|
66
67
|
baseURL: 'test-url',
|
|
67
68
|
};
|
|
68
|
-
const { lastFrame } =
|
|
69
|
+
const { lastFrame } = renderWithProviders(_jsx(HistoryItemDisplay, { ...baseItem, item: item }));
|
|
69
70
|
expect(lastFrame()).toContain('About LLxprt Code');
|
|
70
71
|
});
|
|
71
72
|
it('renders ModelStatsDisplay for "model_stats" type', () => {
|
|
@@ -73,7 +74,7 @@ describe('<HistoryItemDisplay />', () => {
|
|
|
73
74
|
...baseItem,
|
|
74
75
|
type: 'model_stats',
|
|
75
76
|
};
|
|
76
|
-
const { lastFrame } =
|
|
77
|
+
const { lastFrame } = renderWithProviders(_jsx(SessionStatsProvider, { children: _jsx(HistoryItemDisplay, { ...baseItem, item: item }) }));
|
|
77
78
|
expect(lastFrame()).toContain('No API calls have been made in this session.');
|
|
78
79
|
});
|
|
79
80
|
it('renders ToolStatsDisplay for "tool_stats" type', () => {
|
|
@@ -81,7 +82,7 @@ describe('<HistoryItemDisplay />', () => {
|
|
|
81
82
|
...baseItem,
|
|
82
83
|
type: 'tool_stats',
|
|
83
84
|
};
|
|
84
|
-
const { lastFrame } =
|
|
85
|
+
const { lastFrame } = renderWithProviders(_jsx(SessionStatsProvider, { children: _jsx(HistoryItemDisplay, { ...baseItem, item: item }) }));
|
|
85
86
|
expect(lastFrame()).toContain('No tool calls have been made in this session.');
|
|
86
87
|
});
|
|
87
88
|
it('renders SessionSummaryDisplay for "quit" type', () => {
|
|
@@ -90,8 +91,87 @@ describe('<HistoryItemDisplay />', () => {
|
|
|
90
91
|
type: 'quit',
|
|
91
92
|
duration: '1s',
|
|
92
93
|
};
|
|
93
|
-
const { lastFrame } =
|
|
94
|
+
const { lastFrame } = renderWithProviders(_jsx(SessionStatsProvider, { children: _jsx(HistoryItemDisplay, { ...baseItem, item: item }) }));
|
|
94
95
|
expect(lastFrame()).toContain('Agent powering down. Goodbye!');
|
|
95
96
|
});
|
|
97
|
+
it('should escape ANSI codes in text content', () => {
|
|
98
|
+
const historyItem = {
|
|
99
|
+
id: 1,
|
|
100
|
+
type: 'user',
|
|
101
|
+
text: 'Hello, \u001b[31mred\u001b[0m world!',
|
|
102
|
+
};
|
|
103
|
+
const { lastFrame } = renderWithProviders(_jsx(HistoryItemDisplay, { item: historyItem, terminalWidth: 80, isPending: false, config: mockConfig }));
|
|
104
|
+
// The ANSI codes should be escaped for display.
|
|
105
|
+
expect(lastFrame()).toContain('Hello, \\u001b[31mred\\u001b[0m world!');
|
|
106
|
+
// The raw ANSI codes should not be present.
|
|
107
|
+
expect(lastFrame()).not.toContain('Hello, \u001b[31mred\u001b[0m world!');
|
|
108
|
+
});
|
|
109
|
+
it('should escape ANSI codes in tool confirmation details', () => {
|
|
110
|
+
const historyItem = {
|
|
111
|
+
id: 1,
|
|
112
|
+
type: 'tool_group',
|
|
113
|
+
tools: [
|
|
114
|
+
{
|
|
115
|
+
callId: '123',
|
|
116
|
+
name: 'run_shell_command',
|
|
117
|
+
description: 'Run a shell command',
|
|
118
|
+
resultDisplay: 'blank',
|
|
119
|
+
status: ToolCallStatus.Confirming,
|
|
120
|
+
confirmationDetails: {
|
|
121
|
+
type: 'exec',
|
|
122
|
+
title: 'Run Shell Command',
|
|
123
|
+
command: 'echo "\u001b[31mhello\u001b[0m"',
|
|
124
|
+
rootCommand: 'echo',
|
|
125
|
+
onConfirm: async () => { },
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
};
|
|
130
|
+
renderWithProviders(_jsx(HistoryItemDisplay, { item: historyItem, terminalWidth: 80, isPending: false, config: mockConfig }));
|
|
131
|
+
const passedProps = vi.mocked(ToolGroupMessage).mock.calls[0][0];
|
|
132
|
+
const confirmationDetails = passedProps.toolCalls[0]
|
|
133
|
+
.confirmationDetails;
|
|
134
|
+
expect(confirmationDetails.command).toBe('echo "\\u001b[31mhello\\u001b[0m"');
|
|
135
|
+
});
|
|
136
|
+
const longCode = '# Example code block:\n' +
|
|
137
|
+
'```python\n' +
|
|
138
|
+
Array.from({ length: 50 }, (_, i) => `Line ${i + 1}`).join('\n') +
|
|
139
|
+
'\n```';
|
|
140
|
+
it('should render a truncated gemini item', () => {
|
|
141
|
+
const item = {
|
|
142
|
+
id: 1,
|
|
143
|
+
type: 'gemini',
|
|
144
|
+
text: longCode,
|
|
145
|
+
};
|
|
146
|
+
const { lastFrame } = renderWithProviders(_jsx(HistoryItemDisplay, { item: item, isPending: false, terminalWidth: 80, availableTerminalHeight: 10, config: mockConfig }));
|
|
147
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
148
|
+
});
|
|
149
|
+
it('should render a full gemini item when using availableTerminalHeightGemini', () => {
|
|
150
|
+
const item = {
|
|
151
|
+
id: 1,
|
|
152
|
+
type: 'gemini',
|
|
153
|
+
text: longCode,
|
|
154
|
+
};
|
|
155
|
+
const { lastFrame } = renderWithProviders(_jsx(HistoryItemDisplay, { item: item, isPending: false, terminalWidth: 80, availableTerminalHeight: 10, availableTerminalHeightGemini: Number.MAX_SAFE_INTEGER, config: mockConfig }));
|
|
156
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
157
|
+
});
|
|
158
|
+
it('should render a truncated gemini_content item', () => {
|
|
159
|
+
const item = {
|
|
160
|
+
id: 1,
|
|
161
|
+
type: 'gemini_content',
|
|
162
|
+
text: longCode,
|
|
163
|
+
};
|
|
164
|
+
const { lastFrame } = renderWithProviders(_jsx(HistoryItemDisplay, { item: item, isPending: false, terminalWidth: 80, availableTerminalHeight: 10, config: mockConfig }));
|
|
165
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
166
|
+
});
|
|
167
|
+
it('should render a full gemini_content item when using availableTerminalHeightGemini', () => {
|
|
168
|
+
const item = {
|
|
169
|
+
id: 1,
|
|
170
|
+
type: 'gemini_content',
|
|
171
|
+
text: longCode,
|
|
172
|
+
};
|
|
173
|
+
const { lastFrame } = renderWithProviders(_jsx(HistoryItemDisplay, { item: item, isPending: false, terminalWidth: 80, availableTerminalHeight: 10, availableTerminalHeightGemini: Number.MAX_SAFE_INTEGER, config: mockConfig }));
|
|
174
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
175
|
+
});
|
|
96
176
|
});
|
|
97
177
|
//# sourceMappingURL=HistoryItemDisplay.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistoryItemDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"HistoryItemDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -32,4 +32,10 @@ export interface InputPromptProps {
|
|
|
32
32
|
setQueueErrorMessage?: (message: string) => void;
|
|
33
33
|
streamingState?: StreamingState;
|
|
34
34
|
}
|
|
35
|
+
export declare const calculatePromptWidths: (terminalWidth: number) => {
|
|
36
|
+
readonly inputWidth: number;
|
|
37
|
+
readonly containerWidth: number;
|
|
38
|
+
readonly suggestionsWidth: number;
|
|
39
|
+
readonly frameOverhead: number;
|
|
40
|
+
};
|
|
35
41
|
export declare const InputPrompt: React.FC<InputPromptProps>;
|
|
@@ -18,7 +18,7 @@ import { useReverseSearchCompletion } from '../hooks/useReverseSearchCompletion.
|
|
|
18
18
|
import { useCommandCompletion } from '../hooks/useCommandCompletion.js';
|
|
19
19
|
import { useKeypress } from '../hooks/useKeypress.js';
|
|
20
20
|
import { keyMatchers, Command } from '../keyMatchers.js';
|
|
21
|
-
import { parseInputForHighlighting } from '../utils/highlight.js';
|
|
21
|
+
import { parseInputForHighlighting, buildSegmentsForVisualSlice, } from '../utils/highlight.js';
|
|
22
22
|
import { clipboardHasImage, saveClipboardImage, cleanupOldClipboardImages, } from '../utils/clipboardUtils.js';
|
|
23
23
|
import * as path from 'path';
|
|
24
24
|
import { SCREEN_READER_USER_PREFIX } from '../textConstants.js';
|
|
@@ -33,6 +33,26 @@ const formatLargePastePlaceholder = (lines, chars, id) => {
|
|
|
33
33
|
const charLabel = chars === 1 ? 'character' : 'characters';
|
|
34
34
|
return `[${chars} ${charLabel} pasted${idSuffix}]`;
|
|
35
35
|
};
|
|
36
|
+
// The input content, input container, and input suggestions list may have different widths
|
|
37
|
+
export const calculatePromptWidths = (terminalWidth) => {
|
|
38
|
+
const widthFraction = 0.9;
|
|
39
|
+
const FRAME_PADDING_AND_BORDER = 4; // Border (2) + padding (2)
|
|
40
|
+
const PROMPT_PREFIX_WIDTH = 2; // '> ' or '! '
|
|
41
|
+
const MIN_CONTENT_WIDTH = 2;
|
|
42
|
+
const innerContentWidth = Math.floor(terminalWidth * widthFraction) -
|
|
43
|
+
FRAME_PADDING_AND_BORDER -
|
|
44
|
+
PROMPT_PREFIX_WIDTH;
|
|
45
|
+
const inputWidth = Math.max(MIN_CONTENT_WIDTH, innerContentWidth);
|
|
46
|
+
const FRAME_OVERHEAD = FRAME_PADDING_AND_BORDER + PROMPT_PREFIX_WIDTH;
|
|
47
|
+
const containerWidth = inputWidth + FRAME_OVERHEAD;
|
|
48
|
+
const suggestionsWidth = Math.max(20, Math.floor(terminalWidth * 1.0));
|
|
49
|
+
return {
|
|
50
|
+
inputWidth,
|
|
51
|
+
containerWidth,
|
|
52
|
+
suggestionsWidth,
|
|
53
|
+
frameOverhead: FRAME_OVERHEAD,
|
|
54
|
+
};
|
|
55
|
+
};
|
|
36
56
|
export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, config, slashCommands, commandContext, placeholder = ' Type your message or @path/to/file', focus = true, inputWidth, suggestionsWidth, shellModeActive, setShellModeActive, onEscapePromptChange, vimHandleInput, }) => {
|
|
37
57
|
const [justNavigatedHistory, setJustNavigatedHistory] = useState(false);
|
|
38
58
|
const [escPressCount, setEscPressCount] = useState(0);
|
|
@@ -595,39 +615,53 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
595
615
|
const { inlineGhost, additionalLines } = getGhostTextLines();
|
|
596
616
|
return (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: shellModeActive ? theme.status.warning : theme.border.focused, paddingX: 1, children: [_jsx(Text, { color: shellModeActive ? theme.status.warning : theme.text.accent, children: shellModeActive ? (reverseSearchActive ? (_jsxs(Text, { color: theme.text.link, "aria-label": SCREEN_READER_USER_PREFIX, children: ["(r:)", ' '] })) : ('! ')) : ('> ') }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: buffer.text.length === 0 && placeholder ? (focus ? (_jsxs(Text, { children: [chalk.inverse(placeholder.slice(0, 1)), _jsx(Text, { color: theme.text.secondary, children: placeholder.slice(1) })] })) : (_jsx(Text, { color: theme.text.secondary, children: placeholder }))) : (linesToRender
|
|
597
617
|
.map((lineText, visualIdxInRenderedSet) => {
|
|
598
|
-
const
|
|
618
|
+
const absoluteVisualIdx = scrollVisualRow + visualIdxInRenderedSet;
|
|
619
|
+
const mapEntry = buffer.visualToLogicalMap[absoluteVisualIdx];
|
|
599
620
|
const cursorVisualRow = cursorVisualRowAbsolute - scrollVisualRow;
|
|
600
621
|
const isOnCursorLine = focus && visualIdxInRenderedSet === cursorVisualRow;
|
|
601
622
|
const renderedLine = [];
|
|
602
623
|
let charCount = 0;
|
|
603
624
|
let hasVisibleContent = false;
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
625
|
+
const [logicalLineIdx, logicalStartCol] = mapEntry ?? [0, 0];
|
|
626
|
+
const logicalLine = mapEntry && buffer.lines[logicalLineIdx]
|
|
627
|
+
? buffer.lines[logicalLineIdx]
|
|
628
|
+
: lineText;
|
|
629
|
+
const tokens = parseInputForHighlighting(logicalLine, logicalLineIdx);
|
|
630
|
+
const visualStart = logicalStartCol;
|
|
631
|
+
const visualEnd = logicalStartCol + cpLen(lineText);
|
|
632
|
+
const segments = mapEntry
|
|
633
|
+
? buildSegmentsForVisualSlice(tokens, visualStart, visualEnd)
|
|
634
|
+
: tokens;
|
|
635
|
+
segments.forEach((seg, segIdx) => {
|
|
636
|
+
const segLen = cpLen(seg.text);
|
|
637
|
+
if (segLen > 0) {
|
|
610
638
|
hasVisibleContent = true;
|
|
611
639
|
}
|
|
612
|
-
|
|
640
|
+
let display = seg.text;
|
|
641
|
+
if (isOnCursorLine && segLen > 0) {
|
|
613
642
|
const relativeVisualColForHighlight = cursorVisualColAbsolute;
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
643
|
+
const segStart = charCount;
|
|
644
|
+
const segEnd = segStart + segLen;
|
|
645
|
+
if (relativeVisualColForHighlight >= segStart &&
|
|
646
|
+
relativeVisualColForHighlight < segEnd) {
|
|
647
|
+
const charToHighlight = cpSlice(seg.text, relativeVisualColForHighlight - segStart, relativeVisualColForHighlight - segStart + 1);
|
|
617
648
|
const highlighted = chalk.inverse(charToHighlight);
|
|
618
649
|
display =
|
|
619
|
-
cpSlice(
|
|
650
|
+
cpSlice(seg.text, 0, relativeVisualColForHighlight - segStart) +
|
|
620
651
|
highlighted +
|
|
621
|
-
cpSlice(
|
|
652
|
+
cpSlice(seg.text, relativeVisualColForHighlight - segStart + 1);
|
|
622
653
|
}
|
|
654
|
+
charCount = segEnd;
|
|
655
|
+
}
|
|
656
|
+
else {
|
|
657
|
+
charCount += segLen;
|
|
623
658
|
}
|
|
624
|
-
const color =
|
|
659
|
+
const color = seg.type === 'command' || seg.type === 'file'
|
|
625
660
|
? theme.text.accent
|
|
626
661
|
: undefined;
|
|
627
|
-
if (
|
|
628
|
-
renderedLine.push(_jsx(Text, { color: color, children: display }, `token-${
|
|
662
|
+
if (segLen > 0) {
|
|
663
|
+
renderedLine.push(_jsx(Text, { color: color, children: display }, `token-${segIdx}`));
|
|
629
664
|
}
|
|
630
|
-
charCount = tokenEnd;
|
|
631
665
|
});
|
|
632
666
|
const currentLineGhost = isOnCursorLine ? inlineGhost : '';
|
|
633
667
|
if (isOnCursorLine &&
|