fss-link 1.0.49 ā 1.0.51
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/index.js +0 -0
- package/dist/package.json +2 -2
- package/dist/src/config/auth.js +8 -5
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/database.d.ts +103 -11
- package/dist/src/config/database.js +301 -59
- package/dist/src/config/database.js.map +1 -1
- package/dist/src/config/databaseBackup.d.ts +114 -0
- package/dist/src/config/databaseBackup.js +334 -0
- package/dist/src/config/databaseBackup.js.map +1 -0
- package/dist/src/config/databaseMigrations.d.ts +63 -0
- package/dist/src/config/databaseMigrations.js +379 -0
- package/dist/src/config/databaseMigrations.js.map +1 -0
- package/dist/src/config/databasePool.d.ts +70 -0
- package/dist/src/config/databasePool.js +193 -0
- package/dist/src/config/databasePool.js.map +1 -0
- package/dist/src/config/queryOptimizer.d.ts +127 -0
- package/dist/src/config/queryOptimizer.js +309 -0
- package/dist/src/config/queryOptimizer.js.map +1 -0
- package/dist/src/utils/sandbox.js +2 -8
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.js +3 -7
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/commands/mcp/add.test.ts +0 -122
- package/dist/commands/mcp/add.ts +0 -222
- package/dist/commands/mcp/list.test.ts +0 -154
- package/dist/commands/mcp/list.ts +0 -139
- package/dist/commands/mcp/remove.test.ts +0 -69
- package/dist/commands/mcp/remove.ts +0 -60
- package/dist/commands/mcp.test.ts +0 -55
- package/dist/commands/mcp.ts +0 -27
- package/dist/config/apiValidation.test.ts +0 -118
- package/dist/config/auth.test.ts +0 -79
- package/dist/config/auth.ts +0 -100
- package/dist/config/config.integration.test.ts +0 -407
- package/dist/config/config.test.ts +0 -1952
- package/dist/config/config.ts +0 -690
- package/dist/config/database.test.ts +0 -96
- package/dist/config/database.ts +0 -824
- package/dist/config/extension.test.ts +0 -236
- package/dist/config/extension.ts +0 -180
- package/dist/config/keyBindings.test.ts +0 -62
- package/dist/config/keyBindings.ts +0 -184
- package/dist/config/modelManager.ts +0 -326
- package/dist/config/providerManager.ts +0 -244
- package/dist/config/providerPersistence.test.ts +0 -377
- package/dist/config/providerPersistence.ts +0 -105
- package/dist/config/sandboxConfig.ts +0 -107
- package/dist/config/settings.test.ts +0 -1424
- package/dist/config/settings.ts +0 -517
- package/dist/config/settingsSchema.test.ts +0 -252
- package/dist/config/settingsSchema.ts +0 -728
- package/dist/config/trustedFolders.test.ts +0 -208
- package/dist/config/trustedFolders.ts +0 -167
- package/dist/gemini.test.tsx +0 -252
- package/dist/gemini.tsx +0 -357
- package/dist/generated/git-commit.ts +0 -10
- package/dist/index.ts +0 -21
- package/dist/nonInteractiveCli.test.ts +0 -276
- package/dist/nonInteractiveCli.ts +0 -143
- package/dist/patches/is-in-ci.ts +0 -17
- package/dist/services/BuiltinCommandLoader.test.ts +0 -127
- package/dist/services/BuiltinCommandLoader.ts +0 -95
- package/dist/services/CommandService.test.ts +0 -352
- package/dist/services/CommandService.ts +0 -103
- package/dist/services/FileCommandLoader.test.ts +0 -1002
- package/dist/services/FileCommandLoader.ts +0 -289
- package/dist/services/McpPromptLoader.ts +0 -231
- package/dist/services/SearchEngineConfigProvider.ts +0 -100
- package/dist/services/prompt-processors/argumentProcessor.test.ts +0 -41
- package/dist/services/prompt-processors/argumentProcessor.ts +0 -23
- package/dist/services/prompt-processors/shellProcessor.test.ts +0 -709
- package/dist/services/prompt-processors/shellProcessor.ts +0 -248
- package/dist/services/prompt-processors/types.ts +0 -44
- package/dist/services/types.ts +0 -24
- package/dist/src/config/apiValidation.test.d.ts +0 -6
- package/dist/src/config/apiValidation.test.js +0 -99
- package/dist/src/config/apiValidation.test.js.map +0 -1
- package/dist/src/config/database.test.d.ts +0 -6
- package/dist/src/config/database.test.js +0 -80
- package/dist/src/config/database.test.js.map +0 -1
- package/dist/src/config/providerManager.d.ts +0 -74
- package/dist/src/config/providerManager.js +0 -203
- package/dist/src/config/providerManager.js.map +0 -1
- package/dist/src/config/providerPersistence.test.d.ts +0 -6
- package/dist/src/config/providerPersistence.test.js +0 -283
- package/dist/src/config/providerPersistence.test.js.map +0 -1
- package/dist/src/ui/components/GeminiKeyDialog.d.ts +0 -11
- package/dist/src/ui/components/GeminiKeyDialog.js +0 -156
- package/dist/src/ui/components/GeminiKeyDialog.js.map +0 -1
- package/dist/src/ui/components/OpenAIEndpointDialog.d.ts +0 -19
- package/dist/src/ui/components/OpenAIEndpointDialog.js +0 -163
- package/dist/src/ui/components/OpenAIEndpointDialog.js.map +0 -1
- package/dist/test-setup.ts +0 -12
- package/dist/test-utils/customMatchers.ts +0 -65
- package/dist/test-utils/mockCommandContext.test.ts +0 -62
- package/dist/test-utils/mockCommandContext.ts +0 -105
- package/dist/test-utils/render.tsx +0 -18
- package/dist/ui/App.test.tsx +0 -2181
- package/dist/ui/App.tsx +0 -1344
- package/dist/ui/IdeIntegrationNudge.tsx +0 -98
- package/dist/ui/__snapshots__/App.test.tsx.snap +0 -124
- package/dist/ui/colors.ts +0 -56
- package/dist/ui/commands/aboutCommand.test.ts +0 -153
- package/dist/ui/commands/aboutCommand.ts +0 -49
- package/dist/ui/commands/authCommand.test.ts +0 -36
- package/dist/ui/commands/authCommand.ts +0 -17
- package/dist/ui/commands/bugCommand.test.ts +0 -114
- package/dist/ui/commands/bugCommand.ts +0 -92
- package/dist/ui/commands/chatCommand.test.ts +0 -414
- package/dist/ui/commands/chatCommand.ts +0 -280
- package/dist/ui/commands/clearCommand.test.ts +0 -100
- package/dist/ui/commands/clearCommand.ts +0 -29
- package/dist/ui/commands/compressCommand.test.ts +0 -129
- package/dist/ui/commands/compressCommand.ts +0 -78
- package/dist/ui/commands/contextCommand.ts +0 -132
- package/dist/ui/commands/copyCommand.test.ts +0 -296
- package/dist/ui/commands/copyCommand.ts +0 -67
- package/dist/ui/commands/corgiCommand.test.ts +0 -34
- package/dist/ui/commands/corgiCommand.ts +0 -16
- package/dist/ui/commands/directoryCommand.test.tsx +0 -185
- package/dist/ui/commands/directoryCommand.tsx +0 -179
- package/dist/ui/commands/docsCommand.test.ts +0 -99
- package/dist/ui/commands/docsCommand.ts +0 -42
- package/dist/ui/commands/editorCommand.test.ts +0 -30
- package/dist/ui/commands/editorCommand.ts +0 -21
- package/dist/ui/commands/extensionsCommand.test.ts +0 -67
- package/dist/ui/commands/extensionsCommand.ts +0 -46
- package/dist/ui/commands/helpCommand.test.ts +0 -52
- package/dist/ui/commands/helpCommand.ts +0 -23
- package/dist/ui/commands/ideCommand.test.ts +0 -255
- package/dist/ui/commands/ideCommand.ts +0 -283
- package/dist/ui/commands/initCommand.test.ts +0 -127
- package/dist/ui/commands/initCommand.ts +0 -117
- package/dist/ui/commands/mcpCommand.test.ts +0 -1057
- package/dist/ui/commands/mcpCommand.ts +0 -531
- package/dist/ui/commands/memoryCommand.test.ts +0 -344
- package/dist/ui/commands/memoryCommand.ts +0 -305
- package/dist/ui/commands/privacyCommand.test.ts +0 -38
- package/dist/ui/commands/privacyCommand.ts +0 -17
- package/dist/ui/commands/quitCommand.test.ts +0 -55
- package/dist/ui/commands/quitCommand.ts +0 -36
- package/dist/ui/commands/restoreCommand.test.ts +0 -250
- package/dist/ui/commands/restoreCommand.ts +0 -157
- package/dist/ui/commands/searchEngineSetupCommand.ts +0 -18
- package/dist/ui/commands/settingsCommand.test.ts +0 -36
- package/dist/ui/commands/settingsCommand.ts +0 -17
- package/dist/ui/commands/setupGithubCommand.test.ts +0 -238
- package/dist/ui/commands/setupGithubCommand.ts +0 -212
- package/dist/ui/commands/speakCommand.ts +0 -175
- package/dist/ui/commands/statsCommand.test.ts +0 -78
- package/dist/ui/commands/statsCommand.ts +0 -70
- package/dist/ui/commands/terminalSetupCommand.test.ts +0 -85
- package/dist/ui/commands/terminalSetupCommand.ts +0 -45
- package/dist/ui/commands/themeCommand.test.ts +0 -38
- package/dist/ui/commands/themeCommand.ts +0 -17
- package/dist/ui/commands/toolsCommand.test.ts +0 -105
- package/dist/ui/commands/toolsCommand.ts +0 -71
- package/dist/ui/commands/ttsCommand.ts +0 -143
- package/dist/ui/commands/types.ts +0 -204
- package/dist/ui/commands/vimCommand.ts +0 -25
- package/dist/ui/commands/voiceCommand.ts +0 -125
- package/dist/ui/components/AboutBox.tsx +0 -133
- package/dist/ui/components/AsciiArt.ts +0 -54
- package/dist/ui/components/AuthDialog.test.tsx +0 -334
- package/dist/ui/components/AuthDialog.tsx +0 -289
- package/dist/ui/components/AuthInProgress.tsx +0 -62
- package/dist/ui/components/AutoAcceptIndicator.tsx +0 -47
- package/dist/ui/components/ConsoleSummaryDisplay.tsx +0 -35
- package/dist/ui/components/ContextSummaryDisplay.test.tsx +0 -85
- package/dist/ui/components/ContextSummaryDisplay.tsx +0 -120
- package/dist/ui/components/ContextUsageDisplay.tsx +0 -77
- package/dist/ui/components/DebugProfiler.tsx +0 -36
- package/dist/ui/components/DetailedMessagesDisplay.tsx +0 -82
- package/dist/ui/components/EditorSettingsDialog.tsx +0 -172
- package/dist/ui/components/FolderTrustDialog.test.tsx +0 -36
- package/dist/ui/components/FolderTrustDialog.tsx +0 -74
- package/dist/ui/components/Footer.test.tsx +0 -159
- package/dist/ui/components/Footer.tsx +0 -158
- package/dist/ui/components/GeminiKeyDialog.tsx +0 -252
- package/dist/ui/components/GeminiRespondingSpinner.tsx +0 -34
- package/dist/ui/components/Header.test.tsx +0 -44
- package/dist/ui/components/Header.tsx +0 -70
- package/dist/ui/components/Help.tsx +0 -174
- package/dist/ui/components/HistoryItemDisplay.test.tsx +0 -125
- package/dist/ui/components/HistoryItemDisplay.tsx +0 -98
- package/dist/ui/components/InputPrompt.test.tsx +0 -1467
- package/dist/ui/components/InputPrompt.tsx +0 -641
- package/dist/ui/components/LMStudioModelPrompt.tsx +0 -215
- package/dist/ui/components/LoadingIndicator.test.tsx +0 -296
- package/dist/ui/components/LoadingIndicator.tsx +0 -82
- package/dist/ui/components/MemoryUsageDisplay.tsx +0 -36
- package/dist/ui/components/ModelStatsDisplay.test.tsx +0 -252
- package/dist/ui/components/ModelStatsDisplay.tsx +0 -197
- package/dist/ui/components/OllamaModelPrompt.tsx +0 -206
- package/dist/ui/components/OpenAIEndpointDialog.tsx +0 -261
- package/dist/ui/components/OpenAIKeyPrompt.test.tsx +0 -64
- package/dist/ui/components/OpenAIKeyPrompt.tsx +0 -197
- package/dist/ui/components/PrepareLabel.tsx +0 -48
- package/dist/ui/components/SearchEngineConfigDialog.tsx +0 -280
- package/dist/ui/components/SessionSummaryDisplay.test.tsx +0 -75
- package/dist/ui/components/SessionSummaryDisplay.tsx +0 -18
- package/dist/ui/components/SettingsDialog.test.tsx +0 -865
- package/dist/ui/components/SettingsDialog.tsx +0 -753
- package/dist/ui/components/ShellConfirmationDialog.test.tsx +0 -53
- package/dist/ui/components/ShellConfirmationDialog.tsx +0 -103
- package/dist/ui/components/ShellModeIndicator.tsx +0 -18
- package/dist/ui/components/ShowMoreLines.tsx +0 -40
- package/dist/ui/components/StatsDisplay.test.tsx +0 -401
- package/dist/ui/components/StatsDisplay.tsx +0 -273
- package/dist/ui/components/SuggestionsDisplay.tsx +0 -102
- package/dist/ui/components/ThemeDialog.tsx +0 -310
- package/dist/ui/components/Tips.tsx +0 -45
- package/dist/ui/components/TodoDisplay.test.tsx +0 -97
- package/dist/ui/components/TodoDisplay.tsx +0 -72
- package/dist/ui/components/ToolStatsDisplay.test.tsx +0 -180
- package/dist/ui/components/ToolStatsDisplay.tsx +0 -208
- package/dist/ui/components/UpdateNotification.tsx +0 -23
- package/dist/ui/components/WelcomeBackDialog.tsx +0 -290
- package/dist/ui/components/__snapshots__/IDEContextDetailDisplay.test.tsx.snap +0 -24
- package/dist/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap +0 -121
- package/dist/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap +0 -30
- package/dist/ui/components/__snapshots__/ShellConfirmationDialog.test.tsx.snap +0 -21
- package/dist/ui/components/__snapshots__/StatsDisplay.test.tsx.snap +0 -264
- package/dist/ui/components/__snapshots__/ToolStatsDisplay.test.tsx.snap +0 -91
- package/dist/ui/components/messages/CompressionMessage.tsx +0 -49
- package/dist/ui/components/messages/DiffRenderer.test.tsx +0 -365
- package/dist/ui/components/messages/DiffRenderer.tsx +0 -358
- package/dist/ui/components/messages/ErrorMessage.tsx +0 -31
- package/dist/ui/components/messages/GeminiMessage.tsx +0 -43
- package/dist/ui/components/messages/GeminiMessageContent.tsx +0 -43
- package/dist/ui/components/messages/InfoMessage.tsx +0 -32
- package/dist/ui/components/messages/ToolConfirmationMessage.test.tsx +0 -58
- package/dist/ui/components/messages/ToolConfirmationMessage.tsx +0 -297
- package/dist/ui/components/messages/ToolGroupMessage.tsx +0 -126
- package/dist/ui/components/messages/ToolMessage.test.tsx +0 -183
- package/dist/ui/components/messages/ToolMessage.tsx +0 -296
- package/dist/ui/components/messages/UserMessage.tsx +0 -43
- package/dist/ui/components/messages/UserShellMessage.tsx +0 -25
- package/dist/ui/components/shared/MaxSizedBox.test.tsx +0 -425
- package/dist/ui/components/shared/MaxSizedBox.tsx +0 -624
- package/dist/ui/components/shared/RadioButtonSelect.test.tsx +0 -181
- package/dist/ui/components/shared/RadioButtonSelect.tsx +0 -234
- package/dist/ui/components/shared/__snapshots__/RadioButtonSelect.test.tsx.snap +0 -47
- package/dist/ui/components/shared/text-buffer.test.ts +0 -1728
- package/dist/ui/components/shared/text-buffer.ts +0 -2227
- package/dist/ui/components/shared/vim-buffer-actions.test.ts +0 -1119
- package/dist/ui/components/shared/vim-buffer-actions.ts +0 -814
- package/dist/ui/constants.ts +0 -17
- package/dist/ui/contexts/KeypressContext.test.tsx +0 -391
- package/dist/ui/contexts/KeypressContext.tsx +0 -440
- package/dist/ui/contexts/OverflowContext.tsx +0 -87
- package/dist/ui/contexts/SessionContext.test.tsx +0 -132
- package/dist/ui/contexts/SessionContext.tsx +0 -143
- package/dist/ui/contexts/SettingsContext.tsx +0 -20
- package/dist/ui/contexts/StreamingContext.tsx +0 -22
- package/dist/ui/contexts/VimModeContext.tsx +0 -79
- package/dist/ui/editors/editorSettingsManager.ts +0 -66
- package/dist/ui/hooks/atCommandProcessor.test.ts +0 -1102
- package/dist/ui/hooks/atCommandProcessor.ts +0 -485
- package/dist/ui/hooks/shellCommandProcessor.test.ts +0 -481
- package/dist/ui/hooks/shellCommandProcessor.ts +0 -314
- package/dist/ui/hooks/slashCommandProcessor.test.ts +0 -1044
- package/dist/ui/hooks/slashCommandProcessor.ts +0 -595
- package/dist/ui/hooks/useAtCompletion.test.ts +0 -497
- package/dist/ui/hooks/useAtCompletion.ts +0 -244
- package/dist/ui/hooks/useAuthCommand.ts +0 -129
- package/dist/ui/hooks/useAutoAcceptIndicator.test.ts +0 -300
- package/dist/ui/hooks/useAutoAcceptIndicator.ts +0 -52
- package/dist/ui/hooks/useBracketedPaste.ts +0 -37
- package/dist/ui/hooks/useCommandCompletion.test.ts +0 -518
- package/dist/ui/hooks/useCommandCompletion.tsx +0 -238
- package/dist/ui/hooks/useCompletion.ts +0 -128
- package/dist/ui/hooks/useConsoleMessages.test.ts +0 -147
- package/dist/ui/hooks/useConsoleMessages.ts +0 -110
- package/dist/ui/hooks/useEditorSettings.test.ts +0 -283
- package/dist/ui/hooks/useEditorSettings.ts +0 -75
- package/dist/ui/hooks/useFocus.test.ts +0 -119
- package/dist/ui/hooks/useFocus.ts +0 -48
- package/dist/ui/hooks/useFolderTrust.test.ts +0 -159
- package/dist/ui/hooks/useFolderTrust.ts +0 -72
- package/dist/ui/hooks/useGeminiStream.test.tsx +0 -1998
- package/dist/ui/hooks/useGeminiStream.ts +0 -1017
- package/dist/ui/hooks/useGitBranchName.test.ts +0 -280
- package/dist/ui/hooks/useGitBranchName.ts +0 -79
- package/dist/ui/hooks/useHistoryManager.test.ts +0 -202
- package/dist/ui/hooks/useHistoryManager.ts +0 -111
- package/dist/ui/hooks/useInputHistory.test.ts +0 -261
- package/dist/ui/hooks/useInputHistory.ts +0 -111
- package/dist/ui/hooks/useKeypress.test.ts +0 -280
- package/dist/ui/hooks/useKeypress.ts +0 -39
- package/dist/ui/hooks/useKittyKeyboardProtocol.ts +0 -31
- package/dist/ui/hooks/useLoadingIndicator.test.ts +0 -139
- package/dist/ui/hooks/useLoadingIndicator.ts +0 -57
- package/dist/ui/hooks/useLogger.ts +0 -32
- package/dist/ui/hooks/useMessageQueue.test.ts +0 -226
- package/dist/ui/hooks/useMessageQueue.ts +0 -69
- package/dist/ui/hooks/usePhraseCycler.test.ts +0 -145
- package/dist/ui/hooks/usePhraseCycler.ts +0 -198
- package/dist/ui/hooks/usePrivacySettings.test.ts +0 -242
- package/dist/ui/hooks/usePrivacySettings.ts +0 -150
- package/dist/ui/hooks/useReactToolScheduler.ts +0 -309
- package/dist/ui/hooks/useRefreshMemoryCommand.ts +0 -7
- package/dist/ui/hooks/useReverseSearchCompletion.test.tsx +0 -260
- package/dist/ui/hooks/useReverseSearchCompletion.tsx +0 -95
- package/dist/ui/hooks/useSettingsCommand.ts +0 -25
- package/dist/ui/hooks/useShellHistory.test.ts +0 -219
- package/dist/ui/hooks/useShellHistory.ts +0 -133
- package/dist/ui/hooks/useShowMemoryCommand.ts +0 -75
- package/dist/ui/hooks/useSlashCompletion.test.ts +0 -434
- package/dist/ui/hooks/useSlashCompletion.ts +0 -187
- package/dist/ui/hooks/useStateAndRef.ts +0 -36
- package/dist/ui/hooks/useTerminalSize.ts +0 -32
- package/dist/ui/hooks/useThemeCommand.ts +0 -110
- package/dist/ui/hooks/useTimer.test.ts +0 -120
- package/dist/ui/hooks/useTimer.ts +0 -65
- package/dist/ui/hooks/useToolScheduler.test.ts +0 -1123
- package/dist/ui/hooks/useWelcomeBack.ts +0 -253
- package/dist/ui/hooks/vim.test.ts +0 -1691
- package/dist/ui/hooks/vim.ts +0 -784
- package/dist/ui/keyMatchers.test.ts +0 -337
- package/dist/ui/keyMatchers.ts +0 -105
- package/dist/ui/privacy/CloudFreePrivacyNotice.tsx +0 -117
- package/dist/ui/privacy/CloudPaidPrivacyNotice.tsx +0 -59
- package/dist/ui/privacy/GeminiPrivacyNotice.tsx +0 -62
- package/dist/ui/privacy/PrivacyNotice.tsx +0 -42
- package/dist/ui/semantic-colors.ts +0 -26
- package/dist/ui/themes/ansi-light.ts +0 -150
- package/dist/ui/themes/ansi.ts +0 -159
- package/dist/ui/themes/atom-one-dark.ts +0 -147
- package/dist/ui/themes/ayu-light.ts +0 -139
- package/dist/ui/themes/ayu.ts +0 -113
- package/dist/ui/themes/color-utils.test.ts +0 -221
- package/dist/ui/themes/color-utils.ts +0 -231
- package/dist/ui/themes/default-light.ts +0 -108
- package/dist/ui/themes/default.ts +0 -151
- package/dist/ui/themes/dracula.ts +0 -124
- package/dist/ui/themes/fss-code-dark.ts +0 -156
- package/dist/ui/themes/fss-dark.ts +0 -113
- package/dist/ui/themes/fss-light.ts +0 -139
- package/dist/ui/themes/github-dark.ts +0 -147
- package/dist/ui/themes/github-light.ts +0 -149
- package/dist/ui/themes/googlecode.ts +0 -146
- package/dist/ui/themes/no-color.ts +0 -125
- package/dist/ui/themes/qwen-dark.ts +0 -118
- package/dist/ui/themes/qwen-light.ts +0 -144
- package/dist/ui/themes/semantic-tokens.ts +0 -127
- package/dist/ui/themes/shades-of-purple.ts +0 -352
- package/dist/ui/themes/theme-manager.test.ts +0 -99
- package/dist/ui/themes/theme-manager.ts +0 -257
- package/dist/ui/themes/theme.test.ts +0 -97
- package/dist/ui/themes/theme.ts +0 -451
- package/dist/ui/themes/xcode.ts +0 -154
- package/dist/ui/types.ts +0 -255
- package/dist/ui/utils/CodeColorizer.tsx +0 -217
- package/dist/ui/utils/ConsolePatcher.ts +0 -71
- package/dist/ui/utils/InlineMarkdownRenderer.tsx +0 -173
- package/dist/ui/utils/MarkdownDisplay.test.tsx +0 -244
- package/dist/ui/utils/MarkdownDisplay.tsx +0 -415
- package/dist/ui/utils/TableRenderer.tsx +0 -159
- package/dist/ui/utils/__snapshots__/MarkdownDisplay.test.tsx.snap +0 -93
- package/dist/ui/utils/clipboardUtils.test.ts +0 -76
- package/dist/ui/utils/clipboardUtils.ts +0 -149
- package/dist/ui/utils/commandUtils.test.ts +0 -384
- package/dist/ui/utils/commandUtils.ts +0 -106
- package/dist/ui/utils/computeStats.test.ts +0 -292
- package/dist/ui/utils/computeStats.ts +0 -86
- package/dist/ui/utils/displayUtils.test.ts +0 -58
- package/dist/ui/utils/displayUtils.ts +0 -32
- package/dist/ui/utils/formatters.test.ts +0 -72
- package/dist/ui/utils/formatters.ts +0 -63
- package/dist/ui/utils/isNarrowWidth.ts +0 -9
- package/dist/ui/utils/kittyProtocolDetector.ts +0 -105
- package/dist/ui/utils/markdownUtilities.test.ts +0 -50
- package/dist/ui/utils/markdownUtilities.ts +0 -125
- package/dist/ui/utils/platformConstants.ts +0 -52
- package/dist/ui/utils/terminalSetup.ts +0 -342
- package/dist/ui/utils/textUtils.ts +0 -40
- package/dist/ui/utils/updateCheck.test.ts +0 -163
- package/dist/ui/utils/updateCheck.ts +0 -100
- package/dist/utils/checks.ts +0 -28
- package/dist/utils/cleanup.test.ts +0 -68
- package/dist/utils/cleanup.ts +0 -36
- package/dist/utils/dialogScopeUtils.ts +0 -64
- package/dist/utils/events.ts +0 -14
- package/dist/utils/gitUtils.test.ts +0 -149
- package/dist/utils/gitUtils.ts +0 -116
- package/dist/utils/handleAutoUpdate.test.ts +0 -272
- package/dist/utils/handleAutoUpdate.ts +0 -145
- package/dist/utils/installationInfo.test.ts +0 -315
- package/dist/utils/installationInfo.ts +0 -176
- package/dist/utils/package.ts +0 -38
- package/dist/utils/readStdin.ts +0 -51
- package/dist/utils/resolvePath.ts +0 -21
- package/dist/utils/sandbox-macos-permissive-closed.sb +0 -32
- package/dist/utils/sandbox-macos-permissive-open.sb +0 -25
- package/dist/utils/sandbox-macos-permissive-proxied.sb +0 -37
- package/dist/utils/sandbox-macos-restrictive-closed.sb +0 -93
- package/dist/utils/sandbox-macos-restrictive-open.sb +0 -96
- package/dist/utils/sandbox-macos-restrictive-proxied.sb +0 -98
- package/dist/utils/sandbox.ts +0 -962
- package/dist/utils/settingsUtils.test.ts +0 -797
- package/dist/utils/settingsUtils.ts +0 -489
- package/dist/utils/spawnWrapper.ts +0 -9
- package/dist/utils/startupWarnings.test.ts +0 -83
- package/dist/utils/startupWarnings.ts +0 -40
- package/dist/utils/updateEventEmitter.ts +0 -13
- package/dist/utils/userStartupWarnings.test.ts +0 -87
- package/dist/utils/userStartupWarnings.ts +0 -69
- package/dist/utils/version.ts +0 -12
- package/dist/validateNonInterActiveAuth.test.ts +0 -260
- package/dist/validateNonInterActiveAuth.ts +0 -51
- package/dist/vitest.config.ts +0 -37
- package/dist/zed-integration/acp.ts +0 -366
- package/dist/zed-integration/fileSystemService.ts +0 -47
- package/dist/zed-integration/schema.ts +0 -466
- package/dist/zed-integration/zedIntegration.ts +0 -944
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { MessageType, HistoryItemStats } from '../types.js';
|
|
8
|
-
import { formatDuration } from '../utils/formatters.js';
|
|
9
|
-
import {
|
|
10
|
-
type CommandContext,
|
|
11
|
-
type SlashCommand,
|
|
12
|
-
CommandKind,
|
|
13
|
-
} from './types.js';
|
|
14
|
-
|
|
15
|
-
export const statsCommand: SlashCommand = {
|
|
16
|
-
name: 'stats',
|
|
17
|
-
altNames: ['usage'],
|
|
18
|
-
description: 'check session stats. Usage: /stats [model|tools]',
|
|
19
|
-
kind: CommandKind.BUILT_IN,
|
|
20
|
-
action: (context: CommandContext) => {
|
|
21
|
-
const now = new Date();
|
|
22
|
-
const { sessionStartTime } = context.session.stats;
|
|
23
|
-
if (!sessionStartTime) {
|
|
24
|
-
context.ui.addItem(
|
|
25
|
-
{
|
|
26
|
-
type: MessageType.ERROR,
|
|
27
|
-
text: 'Session start time is unavailable, cannot calculate stats.',
|
|
28
|
-
},
|
|
29
|
-
Date.now(),
|
|
30
|
-
);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const wallDuration = now.getTime() - sessionStartTime.getTime();
|
|
34
|
-
|
|
35
|
-
const statsItem: HistoryItemStats = {
|
|
36
|
-
type: MessageType.STATS,
|
|
37
|
-
duration: formatDuration(wallDuration),
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
context.ui.addItem(statsItem, Date.now());
|
|
41
|
-
},
|
|
42
|
-
subCommands: [
|
|
43
|
-
{
|
|
44
|
-
name: 'model',
|
|
45
|
-
description: 'Show model-specific usage statistics.',
|
|
46
|
-
kind: CommandKind.BUILT_IN,
|
|
47
|
-
action: (context: CommandContext) => {
|
|
48
|
-
context.ui.addItem(
|
|
49
|
-
{
|
|
50
|
-
type: MessageType.MODEL_STATS,
|
|
51
|
-
},
|
|
52
|
-
Date.now(),
|
|
53
|
-
);
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: 'tools',
|
|
58
|
-
description: 'Show tool-specific usage statistics.',
|
|
59
|
-
kind: CommandKind.BUILT_IN,
|
|
60
|
-
action: (context: CommandContext) => {
|
|
61
|
-
context.ui.addItem(
|
|
62
|
-
{
|
|
63
|
-
type: MessageType.TOOL_STATS,
|
|
64
|
-
},
|
|
65
|
-
Date.now(),
|
|
66
|
-
);
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
};
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
8
|
-
import { terminalSetupCommand } from './terminalSetupCommand.js';
|
|
9
|
-
import * as terminalSetupModule from '../utils/terminalSetup.js';
|
|
10
|
-
import { CommandContext } from './types.js';
|
|
11
|
-
|
|
12
|
-
vi.mock('../utils/terminalSetup.js');
|
|
13
|
-
|
|
14
|
-
describe('terminalSetupCommand', () => {
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
vi.clearAllMocks();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('should have correct metadata', () => {
|
|
20
|
-
expect(terminalSetupCommand.name).toBe('terminal-setup');
|
|
21
|
-
expect(terminalSetupCommand.description).toContain('multiline input');
|
|
22
|
-
expect(terminalSetupCommand.kind).toBe('built-in');
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('should return success message when terminal setup succeeds', async () => {
|
|
26
|
-
vi.spyOn(terminalSetupModule, 'terminalSetup').mockResolvedValue({
|
|
27
|
-
success: true,
|
|
28
|
-
message: 'Terminal configured successfully',
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
const result = await terminalSetupCommand.action({} as CommandContext, '');
|
|
32
|
-
|
|
33
|
-
expect(result).toEqual({
|
|
34
|
-
type: 'message',
|
|
35
|
-
content: 'Terminal configured successfully',
|
|
36
|
-
messageType: 'info',
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('should append restart message when terminal setup requires restart', async () => {
|
|
41
|
-
vi.spyOn(terminalSetupModule, 'terminalSetup').mockResolvedValue({
|
|
42
|
-
success: true,
|
|
43
|
-
message: 'Terminal configured successfully',
|
|
44
|
-
requiresRestart: true,
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
const result = await terminalSetupCommand.action({} as CommandContext, '');
|
|
48
|
-
|
|
49
|
-
expect(result).toEqual({
|
|
50
|
-
type: 'message',
|
|
51
|
-
content:
|
|
52
|
-
'Terminal configured successfully\n\nPlease restart your terminal for the changes to take effect.',
|
|
53
|
-
messageType: 'info',
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('should return error message when terminal setup fails', async () => {
|
|
58
|
-
vi.spyOn(terminalSetupModule, 'terminalSetup').mockResolvedValue({
|
|
59
|
-
success: false,
|
|
60
|
-
message: 'Failed to detect terminal',
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
const result = await terminalSetupCommand.action({} as CommandContext, '');
|
|
64
|
-
|
|
65
|
-
expect(result).toEqual({
|
|
66
|
-
type: 'message',
|
|
67
|
-
content: 'Failed to detect terminal',
|
|
68
|
-
messageType: 'error',
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it('should handle exceptions from terminal setup', async () => {
|
|
73
|
-
vi.spyOn(terminalSetupModule, 'terminalSetup').mockRejectedValue(
|
|
74
|
-
new Error('Unexpected error'),
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
const result = await terminalSetupCommand.action({} as CommandContext, '');
|
|
78
|
-
|
|
79
|
-
expect(result).toEqual({
|
|
80
|
-
type: 'message',
|
|
81
|
-
content: 'Failed to configure terminal: Error: Unexpected error',
|
|
82
|
-
messageType: 'error',
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
});
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { MessageActionReturn, SlashCommand, CommandKind } from './types.js';
|
|
8
|
-
import { terminalSetup } from '../utils/terminalSetup.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Command to configure terminal keybindings for multiline input support.
|
|
12
|
-
*
|
|
13
|
-
* This command automatically detects and configures VS Code, Cursor, and Windsurf
|
|
14
|
-
* to support Shift+Enter and Ctrl+Enter for multiline input.
|
|
15
|
-
*/
|
|
16
|
-
export const terminalSetupCommand: SlashCommand = {
|
|
17
|
-
name: 'terminal-setup',
|
|
18
|
-
description:
|
|
19
|
-
'Configure terminal keybindings for multiline input (VS Code, Cursor, Windsurf)',
|
|
20
|
-
kind: CommandKind.BUILT_IN,
|
|
21
|
-
|
|
22
|
-
action: async (): Promise<MessageActionReturn> => {
|
|
23
|
-
try {
|
|
24
|
-
const result = await terminalSetup();
|
|
25
|
-
|
|
26
|
-
let content = result.message;
|
|
27
|
-
if (result.requiresRestart) {
|
|
28
|
-
content +=
|
|
29
|
-
'\n\nPlease restart your terminal for the changes to take effect.';
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
type: 'message',
|
|
34
|
-
content,
|
|
35
|
-
messageType: result.success ? 'info' : 'error',
|
|
36
|
-
};
|
|
37
|
-
} catch (error) {
|
|
38
|
-
return {
|
|
39
|
-
type: 'message',
|
|
40
|
-
content: `Failed to configure terminal: ${error}`,
|
|
41
|
-
messageType: 'error',
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
8
|
-
import { themeCommand } from './themeCommand.js';
|
|
9
|
-
import { type CommandContext } from './types.js';
|
|
10
|
-
import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
|
|
11
|
-
|
|
12
|
-
describe('themeCommand', () => {
|
|
13
|
-
let mockContext: CommandContext;
|
|
14
|
-
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
mockContext = createMockCommandContext();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('should return a dialog action to open the theme dialog', () => {
|
|
20
|
-
// Ensure the command has an action to test.
|
|
21
|
-
if (!themeCommand.action) {
|
|
22
|
-
throw new Error('The theme command must have an action.');
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const result = themeCommand.action(mockContext, '');
|
|
26
|
-
|
|
27
|
-
// Assert that the action returns the correct object to trigger the theme dialog.
|
|
28
|
-
expect(result).toEqual({
|
|
29
|
-
type: 'dialog',
|
|
30
|
-
dialog: 'theme',
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('should have the correct name and description', () => {
|
|
35
|
-
expect(themeCommand.name).toBe('theme');
|
|
36
|
-
expect(themeCommand.description).toBe('change the theme');
|
|
37
|
-
});
|
|
38
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { CommandKind, OpenDialogActionReturn, SlashCommand } from './types.js';
|
|
8
|
-
|
|
9
|
-
export const themeCommand: SlashCommand = {
|
|
10
|
-
name: 'theme',
|
|
11
|
-
description: 'change the theme',
|
|
12
|
-
kind: CommandKind.BUILT_IN,
|
|
13
|
-
action: (_context, _args): OpenDialogActionReturn => ({
|
|
14
|
-
type: 'dialog',
|
|
15
|
-
dialog: 'theme',
|
|
16
|
-
}),
|
|
17
|
-
};
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { describe, it, expect, vi } from 'vitest';
|
|
8
|
-
import { toolsCommand } from './toolsCommand.js';
|
|
9
|
-
import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
|
|
10
|
-
import { MessageType } from '../types.js';
|
|
11
|
-
import { Tool } from 'fss-link-core';
|
|
12
|
-
|
|
13
|
-
// Mock tools for testing
|
|
14
|
-
const mockTools = [
|
|
15
|
-
{
|
|
16
|
-
name: 'file-reader',
|
|
17
|
-
displayName: 'File Reader',
|
|
18
|
-
description: 'Reads files from the local system.',
|
|
19
|
-
schema: {},
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
name: 'code-editor',
|
|
23
|
-
displayName: 'Code Editor',
|
|
24
|
-
description: 'Edits code files.',
|
|
25
|
-
schema: {},
|
|
26
|
-
},
|
|
27
|
-
] as Tool[];
|
|
28
|
-
|
|
29
|
-
describe('toolsCommand', () => {
|
|
30
|
-
it('should display an error if the tool registry is unavailable', async () => {
|
|
31
|
-
const mockContext = createMockCommandContext({
|
|
32
|
-
services: {
|
|
33
|
-
config: {
|
|
34
|
-
getToolRegistry: () => undefined,
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
if (!toolsCommand.action) throw new Error('Action not defined');
|
|
40
|
-
await toolsCommand.action(mockContext, '');
|
|
41
|
-
|
|
42
|
-
expect(mockContext.ui.addItem).toHaveBeenCalledWith(
|
|
43
|
-
{
|
|
44
|
-
type: MessageType.ERROR,
|
|
45
|
-
text: 'Could not retrieve tool registry.',
|
|
46
|
-
},
|
|
47
|
-
expect.any(Number),
|
|
48
|
-
);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('should display "No tools available" when none are found', async () => {
|
|
52
|
-
const mockContext = createMockCommandContext({
|
|
53
|
-
services: {
|
|
54
|
-
config: {
|
|
55
|
-
getToolRegistry: () => ({ getAllTools: () => [] as Tool[] }),
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
if (!toolsCommand.action) throw new Error('Action not defined');
|
|
61
|
-
await toolsCommand.action(mockContext, '');
|
|
62
|
-
|
|
63
|
-
expect(mockContext.ui.addItem).toHaveBeenCalledWith(
|
|
64
|
-
expect.objectContaining({
|
|
65
|
-
text: expect.stringContaining('No tools available'),
|
|
66
|
-
}),
|
|
67
|
-
expect.any(Number),
|
|
68
|
-
);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it('should list tools without descriptions by default', async () => {
|
|
72
|
-
const mockContext = createMockCommandContext({
|
|
73
|
-
services: {
|
|
74
|
-
config: {
|
|
75
|
-
getToolRegistry: () => ({ getAllTools: () => mockTools }),
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
if (!toolsCommand.action) throw new Error('Action not defined');
|
|
81
|
-
await toolsCommand.action(mockContext, '');
|
|
82
|
-
|
|
83
|
-
const message = (mockContext.ui.addItem as vi.Mock).mock.calls[0][0].text;
|
|
84
|
-
expect(message).not.toContain('Reads files from the local system.');
|
|
85
|
-
expect(message).toContain('File Reader');
|
|
86
|
-
expect(message).toContain('Code Editor');
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it('should list tools with descriptions when "desc" arg is passed', async () => {
|
|
90
|
-
const mockContext = createMockCommandContext({
|
|
91
|
-
services: {
|
|
92
|
-
config: {
|
|
93
|
-
getToolRegistry: () => ({ getAllTools: () => mockTools }),
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
if (!toolsCommand.action) throw new Error('Action not defined');
|
|
99
|
-
await toolsCommand.action(mockContext, 'desc');
|
|
100
|
-
|
|
101
|
-
const message = (mockContext.ui.addItem as vi.Mock).mock.calls[0][0].text;
|
|
102
|
-
expect(message).toContain('Reads files from the local system.');
|
|
103
|
-
expect(message).toContain('Edits code files.');
|
|
104
|
-
});
|
|
105
|
-
});
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
type CommandContext,
|
|
9
|
-
type SlashCommand,
|
|
10
|
-
CommandKind,
|
|
11
|
-
} from './types.js';
|
|
12
|
-
import { MessageType } from '../types.js';
|
|
13
|
-
|
|
14
|
-
export const toolsCommand: SlashCommand = {
|
|
15
|
-
name: 'tools',
|
|
16
|
-
description: 'list available FSS Link tools',
|
|
17
|
-
kind: CommandKind.BUILT_IN,
|
|
18
|
-
action: async (context: CommandContext, args?: string): Promise<void> => {
|
|
19
|
-
const subCommand = args?.trim();
|
|
20
|
-
|
|
21
|
-
// Default to NOT showing descriptions. The user must opt in with an argument.
|
|
22
|
-
let useShowDescriptions = false;
|
|
23
|
-
if (subCommand === 'desc' || subCommand === 'descriptions') {
|
|
24
|
-
useShowDescriptions = true;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const toolRegistry = context.services.config?.getToolRegistry();
|
|
28
|
-
if (!toolRegistry) {
|
|
29
|
-
context.ui.addItem(
|
|
30
|
-
{
|
|
31
|
-
type: MessageType.ERROR,
|
|
32
|
-
text: 'Could not retrieve tool registry.',
|
|
33
|
-
},
|
|
34
|
-
Date.now(),
|
|
35
|
-
);
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const tools = toolRegistry.getAllTools();
|
|
40
|
-
// Filter out MCP tools by checking for the absence of a serverName property
|
|
41
|
-
const geminiTools = tools.filter((tool) => !('serverName' in tool));
|
|
42
|
-
|
|
43
|
-
let message = 'Available FSS Link tools:\n\n';
|
|
44
|
-
|
|
45
|
-
if (geminiTools.length > 0) {
|
|
46
|
-
geminiTools.forEach((tool) => {
|
|
47
|
-
if (useShowDescriptions && tool.description) {
|
|
48
|
-
message += ` - \u001b[36m${tool.displayName} (${tool.name})\u001b[0m:\n`;
|
|
49
|
-
|
|
50
|
-
const greenColor = '\u001b[32m';
|
|
51
|
-
const resetColor = '\u001b[0m';
|
|
52
|
-
|
|
53
|
-
// Handle multi-line descriptions
|
|
54
|
-
const descLines = tool.description.trim().split('\n');
|
|
55
|
-
for (const descLine of descLines) {
|
|
56
|
-
message += ` ${greenColor}${descLine}${resetColor}\n`;
|
|
57
|
-
}
|
|
58
|
-
} else {
|
|
59
|
-
message += ` - \u001b[36m${tool.displayName}\u001b[0m\n`;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
} else {
|
|
63
|
-
message += ' No tools available\n';
|
|
64
|
-
}
|
|
65
|
-
message += '\n';
|
|
66
|
-
|
|
67
|
-
message += '\u001b[0m';
|
|
68
|
-
|
|
69
|
-
context.ui.addItem({ type: MessageType.INFO, text: message }, Date.now());
|
|
70
|
-
},
|
|
71
|
-
};
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { CommandKind, SlashCommand } from './types.js';
|
|
8
|
-
import { MessageType } from '../types.js';
|
|
9
|
-
|
|
10
|
-
export const ttsCommand: SlashCommand = {
|
|
11
|
-
name: 'tts',
|
|
12
|
-
description: 'control text-to-speech settings',
|
|
13
|
-
kind: CommandKind.BUILT_IN,
|
|
14
|
-
subCommands: [
|
|
15
|
-
{
|
|
16
|
-
name: 'on',
|
|
17
|
-
description: 'enable text-to-speech',
|
|
18
|
-
kind: CommandKind.BUILT_IN,
|
|
19
|
-
action: async (context) => {
|
|
20
|
-
// Set TTS enabled using setter
|
|
21
|
-
if (!context.session.ttsEnabled) {
|
|
22
|
-
context.ui.setTtsEnabled(true);
|
|
23
|
-
context.ui.addItem(
|
|
24
|
-
{
|
|
25
|
-
type: MessageType.INFO,
|
|
26
|
-
text: 'šµ TTS enabled - Use /speak "message" to test',
|
|
27
|
-
},
|
|
28
|
-
Date.now()
|
|
29
|
-
);
|
|
30
|
-
} else {
|
|
31
|
-
context.ui.addItem(
|
|
32
|
-
{
|
|
33
|
-
type: MessageType.INFO,
|
|
34
|
-
text: 'šµ TTS is already enabled',
|
|
35
|
-
},
|
|
36
|
-
Date.now()
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'off',
|
|
43
|
-
description: 'disable text-to-speech',
|
|
44
|
-
kind: CommandKind.BUILT_IN,
|
|
45
|
-
action: async (context) => {
|
|
46
|
-
// Set TTS disabled using setter
|
|
47
|
-
if (context.session.ttsEnabled) {
|
|
48
|
-
context.ui.setTtsEnabled(false);
|
|
49
|
-
context.ui.addItem(
|
|
50
|
-
{
|
|
51
|
-
type: MessageType.INFO,
|
|
52
|
-
text: 'š TTS disabled',
|
|
53
|
-
},
|
|
54
|
-
Date.now()
|
|
55
|
-
);
|
|
56
|
-
} else {
|
|
57
|
-
context.ui.addItem(
|
|
58
|
-
{
|
|
59
|
-
type: MessageType.INFO,
|
|
60
|
-
text: 'š TTS is already disabled',
|
|
61
|
-
},
|
|
62
|
-
Date.now()
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: 'status',
|
|
69
|
-
description: 'show TTS status and configuration',
|
|
70
|
-
kind: CommandKind.BUILT_IN,
|
|
71
|
-
action: async (context) => {
|
|
72
|
-
const enabled = context.session.ttsEnabled || false;
|
|
73
|
-
const voice = context.session.ttsVoice || 'Bella';
|
|
74
|
-
|
|
75
|
-
// Show checking server status with animation
|
|
76
|
-
context.ui.addItem(
|
|
77
|
-
{
|
|
78
|
-
type: MessageType.INFO,
|
|
79
|
-
text: 'š Checking TTS server status...',
|
|
80
|
-
},
|
|
81
|
-
Date.now()
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
// Test server availability with timeout
|
|
85
|
-
let serverAvailable = false;
|
|
86
|
-
let serverInfo = '';
|
|
87
|
-
try {
|
|
88
|
-
const response = await fetch('http://192.168.1.5:11450/health', {
|
|
89
|
-
method: 'GET',
|
|
90
|
-
});
|
|
91
|
-
serverAvailable = response.ok;
|
|
92
|
-
if (response.ok) {
|
|
93
|
-
const data = await response.json();
|
|
94
|
-
serverInfo = `Version: ${data.version || 'unknown'}`;
|
|
95
|
-
}
|
|
96
|
-
} catch (error) {
|
|
97
|
-
serverInfo = `Connection failed: ${error instanceof Error ? error.message : 'Unknown error'}`;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Voice personality emojis
|
|
101
|
-
const voiceEmojis: Record<string, string> = {
|
|
102
|
-
'Bella': 'š©āš¼', 'Emma': 'š©āšØ', 'George': 'šØāš§',
|
|
103
|
-
'Lewis': 'šØāš»', 'Sarah': 'š©āš«', 'Michael': 'šØāāļø'
|
|
104
|
-
};
|
|
105
|
-
const voiceEmoji = voiceEmojis[voice] || 'š£ļø';
|
|
106
|
-
|
|
107
|
-
// Rich status display
|
|
108
|
-
let status = `šµ FSS-TTS Integration Status\n`;
|
|
109
|
-
status += `āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n\n`;
|
|
110
|
-
status += `Session Settings:\n`;
|
|
111
|
-
status += ` š TTS Mode: ${enabled ? 'ā
Enabled' : 'ā Disabled'}\n`;
|
|
112
|
-
status += ` ${voiceEmoji} Voice: ${voice}\n`;
|
|
113
|
-
status += ` šļø Session-based (resets on restart)\n\n`;
|
|
114
|
-
status += `Server Status:\n`;
|
|
115
|
-
status += ` š Endpoint: http://192.168.1.5:11450\n`;
|
|
116
|
-
status += ` š” Connection: ${serverAvailable ? 'ā
Connected' : 'ā Failed'}\n`;
|
|
117
|
-
if (serverInfo) {
|
|
118
|
-
status += ` ā¹ļø Info: ${serverInfo}\n`;
|
|
119
|
-
}
|
|
120
|
-
status += `\n`;
|
|
121
|
-
status += `Available Commands:\n`;
|
|
122
|
-
status += ` /tts on - Enable TTS for this session\n`;
|
|
123
|
-
status += ` /tts off - Disable TTS for this session\n`;
|
|
124
|
-
status += ` /speak "message" - Immediate TTS output\n`;
|
|
125
|
-
status += ` /voice VoiceName - Select voice personality\n\n`;
|
|
126
|
-
status += `Available Voices:\n`;
|
|
127
|
-
Object.entries(voiceEmojis).forEach(([name, emoji]) => {
|
|
128
|
-
const marker = name === voice ? 'š' : ' ';
|
|
129
|
-
status += `${marker} ${emoji} ${name}\n`;
|
|
130
|
-
});
|
|
131
|
-
status += `\nš” Tip: Use /speak "Build completed!" for progress updates`;
|
|
132
|
-
|
|
133
|
-
context.ui.addItem(
|
|
134
|
-
{
|
|
135
|
-
type: MessageType.INFO,
|
|
136
|
-
text: status,
|
|
137
|
-
},
|
|
138
|
-
Date.now()
|
|
139
|
-
);
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
],
|
|
143
|
-
};
|