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
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Database } from 'sql.js';
|
|
7
|
+
/**
|
|
8
|
+
* Backup metadata interface
|
|
9
|
+
*/
|
|
10
|
+
export interface BackupMetadata {
|
|
11
|
+
id: string;
|
|
12
|
+
filename: string;
|
|
13
|
+
timestamp: string;
|
|
14
|
+
schemaVersion: number;
|
|
15
|
+
checksum: string;
|
|
16
|
+
size: number;
|
|
17
|
+
description?: string;
|
|
18
|
+
auto: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Backup verification result
|
|
22
|
+
*/
|
|
23
|
+
export interface BackupVerification {
|
|
24
|
+
valid: boolean;
|
|
25
|
+
checksumMatch: boolean;
|
|
26
|
+
readable: boolean;
|
|
27
|
+
schemaVersion?: number;
|
|
28
|
+
error?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Database Backup and Recovery Manager
|
|
32
|
+
* Handles automated backups, manual backups, and recovery operations
|
|
33
|
+
*/
|
|
34
|
+
export declare class DatabaseBackupManager {
|
|
35
|
+
private backupDir;
|
|
36
|
+
private maxAutoBackups;
|
|
37
|
+
private maxManualBackups;
|
|
38
|
+
constructor();
|
|
39
|
+
/**
|
|
40
|
+
* Ensure backup directory exists
|
|
41
|
+
*/
|
|
42
|
+
private ensureBackupDirectory;
|
|
43
|
+
/**
|
|
44
|
+
* Create a backup of the database
|
|
45
|
+
*/
|
|
46
|
+
createBackup(db: Database, description?: string, auto?: boolean): Promise<BackupMetadata>;
|
|
47
|
+
/**
|
|
48
|
+
* Create an automatic backup (triggered by system events)
|
|
49
|
+
*/
|
|
50
|
+
createAutoBackup(db: Database): Promise<BackupMetadata>;
|
|
51
|
+
/**
|
|
52
|
+
* Create a manual backup with description
|
|
53
|
+
*/
|
|
54
|
+
createManualBackup(db: Database, description: string): Promise<BackupMetadata>;
|
|
55
|
+
/**
|
|
56
|
+
* List all available backups
|
|
57
|
+
*/
|
|
58
|
+
listBackups(): Promise<BackupMetadata[]>;
|
|
59
|
+
/**
|
|
60
|
+
* Get backup by ID
|
|
61
|
+
*/
|
|
62
|
+
getBackup(backupId: string): Promise<BackupMetadata | null>;
|
|
63
|
+
/**
|
|
64
|
+
* Verify backup integrity
|
|
65
|
+
*/
|
|
66
|
+
verifyBackup(backupId: string): Promise<BackupVerification>;
|
|
67
|
+
/**
|
|
68
|
+
* Restore database from backup
|
|
69
|
+
*/
|
|
70
|
+
restoreFromBackup(backupId: string, targetPath: string): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Delete a backup
|
|
73
|
+
*/
|
|
74
|
+
deleteBackup(backupId: string): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Get backup statistics
|
|
77
|
+
*/
|
|
78
|
+
getBackupStats(): Promise<{
|
|
79
|
+
totalBackups: number;
|
|
80
|
+
autoBackups: number;
|
|
81
|
+
manualBackups: number;
|
|
82
|
+
totalSize: number;
|
|
83
|
+
oldestBackup?: string;
|
|
84
|
+
newestBackup?: string;
|
|
85
|
+
}>;
|
|
86
|
+
/**
|
|
87
|
+
* Clean up old automatic backups
|
|
88
|
+
*/
|
|
89
|
+
private cleanupAutoBackups;
|
|
90
|
+
/**
|
|
91
|
+
* Clean up old manual backups (more conservative)
|
|
92
|
+
*/
|
|
93
|
+
private cleanupManualBackups;
|
|
94
|
+
/**
|
|
95
|
+
* Save backup metadata to file
|
|
96
|
+
*/
|
|
97
|
+
private saveBackupMetadata;
|
|
98
|
+
/**
|
|
99
|
+
* Save all backup metadata to file
|
|
100
|
+
*/
|
|
101
|
+
private saveAllBackupMetadata;
|
|
102
|
+
/**
|
|
103
|
+
* Get schema version from database
|
|
104
|
+
*/
|
|
105
|
+
private getSchemaVersionFromDb;
|
|
106
|
+
/**
|
|
107
|
+
* Set backup retention limits
|
|
108
|
+
*/
|
|
109
|
+
setRetentionLimits(maxAutoBackups: number, maxManualBackups: number): void;
|
|
110
|
+
/**
|
|
111
|
+
* Get backup directory path
|
|
112
|
+
*/
|
|
113
|
+
getBackupDirectory(): string;
|
|
114
|
+
}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import * as crypto from 'crypto';
|
|
9
|
+
import { USER_SETTINGS_DIR } from './settings.js';
|
|
10
|
+
/**
|
|
11
|
+
* Database Backup and Recovery Manager
|
|
12
|
+
* Handles automated backups, manual backups, and recovery operations
|
|
13
|
+
*/
|
|
14
|
+
export class DatabaseBackupManager {
|
|
15
|
+
backupDir;
|
|
16
|
+
maxAutoBackups = 10;
|
|
17
|
+
maxManualBackups = 50;
|
|
18
|
+
constructor() {
|
|
19
|
+
this.backupDir = path.join(USER_SETTINGS_DIR, 'backups');
|
|
20
|
+
this.ensureBackupDirectory();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Ensure backup directory exists
|
|
24
|
+
*/
|
|
25
|
+
ensureBackupDirectory() {
|
|
26
|
+
if (!fs.existsSync(this.backupDir)) {
|
|
27
|
+
fs.mkdirSync(this.backupDir, { recursive: true });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a backup of the database
|
|
32
|
+
*/
|
|
33
|
+
async createBackup(db, description, auto = false) {
|
|
34
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
35
|
+
const backupId = crypto.randomBytes(8).toString('hex');
|
|
36
|
+
const filename = auto
|
|
37
|
+
? `auto-backup-${timestamp}-${backupId}.db`
|
|
38
|
+
: `manual-backup-${timestamp}-${backupId}.db`;
|
|
39
|
+
const backupPath = path.join(this.backupDir, filename);
|
|
40
|
+
try {
|
|
41
|
+
// Export database to binary data
|
|
42
|
+
const data = db.export();
|
|
43
|
+
const buffer = Buffer.from(data);
|
|
44
|
+
// Calculate checksum
|
|
45
|
+
const checksum = crypto.createHash('sha256').update(buffer).digest('hex');
|
|
46
|
+
// Write backup file
|
|
47
|
+
fs.writeFileSync(backupPath, buffer);
|
|
48
|
+
// Get schema version from database
|
|
49
|
+
const schemaVersion = this.getSchemaVersionFromDb(db);
|
|
50
|
+
// Create metadata
|
|
51
|
+
const metadata = {
|
|
52
|
+
id: backupId,
|
|
53
|
+
filename,
|
|
54
|
+
timestamp: new Date().toISOString(),
|
|
55
|
+
schemaVersion,
|
|
56
|
+
checksum,
|
|
57
|
+
size: buffer.length,
|
|
58
|
+
description,
|
|
59
|
+
auto
|
|
60
|
+
};
|
|
61
|
+
// Save metadata
|
|
62
|
+
await this.saveBackupMetadata(metadata);
|
|
63
|
+
// Cleanup old backups if necessary
|
|
64
|
+
if (auto) {
|
|
65
|
+
await this.cleanupAutoBackups();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
await this.cleanupManualBackups();
|
|
69
|
+
}
|
|
70
|
+
return metadata;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
// Clean up failed backup file if it exists
|
|
74
|
+
if (fs.existsSync(backupPath)) {
|
|
75
|
+
fs.unlinkSync(backupPath);
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`Failed to create backup: ${error}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create an automatic backup (triggered by system events)
|
|
82
|
+
*/
|
|
83
|
+
async createAutoBackup(db) {
|
|
84
|
+
return this.createBackup(db, 'Automatic backup', true);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Create a manual backup with description
|
|
88
|
+
*/
|
|
89
|
+
async createManualBackup(db, description) {
|
|
90
|
+
return this.createBackup(db, description, false);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* List all available backups
|
|
94
|
+
*/
|
|
95
|
+
async listBackups() {
|
|
96
|
+
const metadataFile = path.join(this.backupDir, 'backup-metadata.json');
|
|
97
|
+
if (!fs.existsSync(metadataFile)) {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const content = fs.readFileSync(metadataFile, 'utf-8');
|
|
102
|
+
const metadata = JSON.parse(content);
|
|
103
|
+
// Sort by timestamp (newest first)
|
|
104
|
+
return metadata.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.warn('Failed to load backup metadata:', error);
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get backup by ID
|
|
113
|
+
*/
|
|
114
|
+
async getBackup(backupId) {
|
|
115
|
+
const backups = await this.listBackups();
|
|
116
|
+
return backups.find(b => b.id === backupId) || null;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Verify backup integrity
|
|
120
|
+
*/
|
|
121
|
+
async verifyBackup(backupId) {
|
|
122
|
+
const backup = await this.getBackup(backupId);
|
|
123
|
+
if (!backup) {
|
|
124
|
+
return {
|
|
125
|
+
valid: false,
|
|
126
|
+
checksumMatch: false,
|
|
127
|
+
readable: false,
|
|
128
|
+
error: 'Backup not found'
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const backupPath = path.join(this.backupDir, backup.filename);
|
|
132
|
+
if (!fs.existsSync(backupPath)) {
|
|
133
|
+
return {
|
|
134
|
+
valid: false,
|
|
135
|
+
checksumMatch: false,
|
|
136
|
+
readable: false,
|
|
137
|
+
error: 'Backup file missing'
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
// Read backup file
|
|
142
|
+
const buffer = fs.readFileSync(backupPath);
|
|
143
|
+
// Verify checksum
|
|
144
|
+
const checksum = crypto.createHash('sha256').update(buffer).digest('hex');
|
|
145
|
+
const checksumMatch = checksum === backup.checksum;
|
|
146
|
+
// Try to read as SQLite database
|
|
147
|
+
let readable = false;
|
|
148
|
+
let schemaVersion;
|
|
149
|
+
try {
|
|
150
|
+
const initSqlJs = (await import('sql.js')).default;
|
|
151
|
+
const SQL = await initSqlJs();
|
|
152
|
+
const db = new SQL.Database(buffer);
|
|
153
|
+
// Try to query schema version
|
|
154
|
+
schemaVersion = this.getSchemaVersionFromDb(db);
|
|
155
|
+
readable = true;
|
|
156
|
+
db.close();
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
readable = false;
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
valid: checksumMatch && readable,
|
|
163
|
+
checksumMatch,
|
|
164
|
+
readable,
|
|
165
|
+
schemaVersion
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
return {
|
|
170
|
+
valid: false,
|
|
171
|
+
checksumMatch: false,
|
|
172
|
+
readable: false,
|
|
173
|
+
error: `Verification failed: ${error}`
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Restore database from backup
|
|
179
|
+
*/
|
|
180
|
+
async restoreFromBackup(backupId, targetPath) {
|
|
181
|
+
const backup = await this.getBackup(backupId);
|
|
182
|
+
if (!backup) {
|
|
183
|
+
throw new Error('Backup not found');
|
|
184
|
+
}
|
|
185
|
+
const backupPath = path.join(this.backupDir, backup.filename);
|
|
186
|
+
if (!fs.existsSync(backupPath)) {
|
|
187
|
+
throw new Error('Backup file missing');
|
|
188
|
+
}
|
|
189
|
+
// Verify backup before restore
|
|
190
|
+
const verification = await this.verifyBackup(backupId);
|
|
191
|
+
if (!verification.valid) {
|
|
192
|
+
throw new Error(`Backup verification failed: ${verification.error}`);
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
// Create backup of current database if it exists
|
|
196
|
+
if (fs.existsSync(targetPath)) {
|
|
197
|
+
const backupCurrentPath = `${targetPath}.pre-restore-${Date.now()}.backup`;
|
|
198
|
+
fs.copyFileSync(targetPath, backupCurrentPath);
|
|
199
|
+
console.log(`Current database backed up to: ${backupCurrentPath}`);
|
|
200
|
+
}
|
|
201
|
+
// Copy backup to target location
|
|
202
|
+
fs.copyFileSync(backupPath, targetPath);
|
|
203
|
+
console.log(`Database restored from backup: ${backup.description || backup.filename}`);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
throw new Error(`Failed to restore from backup: ${error}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Delete a backup
|
|
211
|
+
*/
|
|
212
|
+
async deleteBackup(backupId) {
|
|
213
|
+
const backup = await this.getBackup(backupId);
|
|
214
|
+
if (!backup) {
|
|
215
|
+
throw new Error('Backup not found');
|
|
216
|
+
}
|
|
217
|
+
const backupPath = path.join(this.backupDir, backup.filename);
|
|
218
|
+
// Remove backup file
|
|
219
|
+
if (fs.existsSync(backupPath)) {
|
|
220
|
+
fs.unlinkSync(backupPath);
|
|
221
|
+
}
|
|
222
|
+
// Remove from metadata
|
|
223
|
+
const backups = await this.listBackups();
|
|
224
|
+
const updatedBackups = backups.filter(b => b.id !== backupId);
|
|
225
|
+
await this.saveAllBackupMetadata(updatedBackups);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Get backup statistics
|
|
229
|
+
*/
|
|
230
|
+
async getBackupStats() {
|
|
231
|
+
const backups = await this.listBackups();
|
|
232
|
+
const autoBackups = backups.filter(b => b.auto).length;
|
|
233
|
+
const manualBackups = backups.filter(b => !b.auto).length;
|
|
234
|
+
const totalSize = backups.reduce((sum, b) => sum + b.size, 0);
|
|
235
|
+
const sortedByDate = backups.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
|
|
236
|
+
return {
|
|
237
|
+
totalBackups: backups.length,
|
|
238
|
+
autoBackups,
|
|
239
|
+
manualBackups,
|
|
240
|
+
totalSize,
|
|
241
|
+
oldestBackup: sortedByDate[0]?.timestamp,
|
|
242
|
+
newestBackup: sortedByDate[sortedByDate.length - 1]?.timestamp
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Clean up old automatic backups
|
|
247
|
+
*/
|
|
248
|
+
async cleanupAutoBackups() {
|
|
249
|
+
const backups = await this.listBackups();
|
|
250
|
+
const autoBackups = backups
|
|
251
|
+
.filter(b => b.auto)
|
|
252
|
+
.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
253
|
+
if (autoBackups.length > this.maxAutoBackups) {
|
|
254
|
+
const toDelete = autoBackups.slice(this.maxAutoBackups);
|
|
255
|
+
for (const backup of toDelete) {
|
|
256
|
+
try {
|
|
257
|
+
await this.deleteBackup(backup.id);
|
|
258
|
+
console.log(`Cleaned up old auto backup: ${backup.filename}`);
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
console.warn(`Failed to cleanup backup ${backup.id}:`, error);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Clean up old manual backups (more conservative)
|
|
268
|
+
*/
|
|
269
|
+
async cleanupManualBackups() {
|
|
270
|
+
const backups = await this.listBackups();
|
|
271
|
+
const manualBackups = backups
|
|
272
|
+
.filter(b => !b.auto)
|
|
273
|
+
.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
274
|
+
if (manualBackups.length > this.maxManualBackups) {
|
|
275
|
+
const toDelete = manualBackups.slice(this.maxManualBackups);
|
|
276
|
+
for (const backup of toDelete) {
|
|
277
|
+
try {
|
|
278
|
+
await this.deleteBackup(backup.id);
|
|
279
|
+
console.log(`Cleaned up old manual backup: ${backup.filename}`);
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
console.warn(`Failed to cleanup backup ${backup.id}:`, error);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Save backup metadata to file
|
|
289
|
+
*/
|
|
290
|
+
async saveBackupMetadata(metadata) {
|
|
291
|
+
const backups = await this.listBackups();
|
|
292
|
+
backups.push(metadata);
|
|
293
|
+
await this.saveAllBackupMetadata(backups);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Save all backup metadata to file
|
|
297
|
+
*/
|
|
298
|
+
async saveAllBackupMetadata(backups) {
|
|
299
|
+
const metadataFile = path.join(this.backupDir, 'backup-metadata.json');
|
|
300
|
+
const content = JSON.stringify(backups, null, 2);
|
|
301
|
+
fs.writeFileSync(metadataFile, content);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get schema version from database
|
|
305
|
+
*/
|
|
306
|
+
getSchemaVersionFromDb(db) {
|
|
307
|
+
try {
|
|
308
|
+
const result = db.exec(`
|
|
309
|
+
SELECT value FROM schema_info WHERE key = 'schema_version'
|
|
310
|
+
`);
|
|
311
|
+
if (result.length > 0 && result[0].values.length > 0) {
|
|
312
|
+
return parseInt(result[0].values[0][0], 10);
|
|
313
|
+
}
|
|
314
|
+
return 1; // Default version
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
return 1; // Default version if schema_info doesn't exist
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Set backup retention limits
|
|
322
|
+
*/
|
|
323
|
+
setRetentionLimits(maxAutoBackups, maxManualBackups) {
|
|
324
|
+
this.maxAutoBackups = maxAutoBackups;
|
|
325
|
+
this.maxManualBackups = maxManualBackups;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Get backup directory path
|
|
329
|
+
*/
|
|
330
|
+
getBackupDirectory() {
|
|
331
|
+
return this.backupDir;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=databaseBackup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"databaseBackup.js","sourceRoot":"","sources":["../../../src/config/databaseBackup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Database } from 'sql.js';
|
|
7
|
+
/**
|
|
8
|
+
* Database Migration Interface
|
|
9
|
+
*/
|
|
10
|
+
export interface Migration {
|
|
11
|
+
version: number;
|
|
12
|
+
name: string;
|
|
13
|
+
up: (db: Database) => void;
|
|
14
|
+
down: (db: Database) => void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Migration Manager for FSS Link Database
|
|
18
|
+
* Handles schema versioning and safe upgrades
|
|
19
|
+
*/
|
|
20
|
+
export declare class MigrationManager {
|
|
21
|
+
private migrations;
|
|
22
|
+
constructor();
|
|
23
|
+
/**
|
|
24
|
+
* Register all available migrations
|
|
25
|
+
*/
|
|
26
|
+
private registerMigrations;
|
|
27
|
+
/**
|
|
28
|
+
* Get current schema version from database
|
|
29
|
+
*/
|
|
30
|
+
getCurrentVersion(db: Database): number;
|
|
31
|
+
/**
|
|
32
|
+
* Get latest migration version
|
|
33
|
+
*/
|
|
34
|
+
getLatestVersion(): number;
|
|
35
|
+
/**
|
|
36
|
+
* Check if migrations are needed
|
|
37
|
+
*/
|
|
38
|
+
needsMigration(db: Database): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Run all pending migrations
|
|
41
|
+
*/
|
|
42
|
+
migrate(db: Database): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Rollback to a specific version
|
|
45
|
+
*/
|
|
46
|
+
rollback(db: Database, targetVersion: number): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Update schema version in database
|
|
49
|
+
*/
|
|
50
|
+
private updateSchemaVersion;
|
|
51
|
+
/**
|
|
52
|
+
* Get migration history
|
|
53
|
+
*/
|
|
54
|
+
getMigrationHistory(db: Database): Array<{
|
|
55
|
+
version: number;
|
|
56
|
+
name: string;
|
|
57
|
+
date: string;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Validate database schema integrity
|
|
61
|
+
*/
|
|
62
|
+
validateSchema(db: Database): boolean;
|
|
63
|
+
}
|