@umsai/ums-code 0.1.4-v2 → 0.3.0-v1
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 +11 -3
- package/dist/src/config/config.d.ts +6 -0
- package/dist/src/config/config.js +102 -11
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/settings.d.ts +5 -0
- package/dist/src/config/settings.js +15 -1
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +75 -17
- package/dist/src/config/settingsSchema.js +57 -17
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/webSearch.d.ts +35 -0
- package/dist/src/config/webSearch.js +87 -0
- package/dist/src/config/webSearch.js.map +1 -0
- package/dist/src/core/auth.d.ts +1 -1
- package/dist/src/core/auth.js +19 -3
- package/dist/src/core/auth.js.map +1 -1
- package/dist/src/core/initializer.js +13 -2
- package/dist/src/core/initializer.js.map +1 -1
- package/dist/src/core/theme.js +4 -1
- package/dist/src/core/theme.js.map +1 -1
- package/dist/src/gemini.d.ts +1 -1
- package/dist/src/gemini.js +53 -44
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +117 -0
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/i18n/index.d.ts +18 -0
- package/dist/src/i18n/index.js +184 -0
- package/dist/src/i18n/index.js.map +1 -0
- package/dist/src/i18n/locales/en.js +1129 -0
- package/dist/src/i18n/locales/zh.js +1052 -0
- package/dist/src/nonInteractive/control/ControlContext.d.ts +63 -0
- package/dist/src/nonInteractive/control/ControlContext.js +31 -0
- package/dist/src/nonInteractive/control/ControlContext.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.d.ts +86 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.js +238 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.d.ts +6 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.js +549 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlService.d.ts +78 -0
- package/dist/src/nonInteractive/control/ControlService.js +154 -0
- package/dist/src/nonInteractive/control/ControlService.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/baseController.d.ts +50 -0
- package/dist/src/nonInteractive/control/controllers/baseController.js +102 -0
- package/dist/src/nonInteractive/control/controllers/baseController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/hookController.d.ts +25 -0
- package/dist/src/nonInteractive/control/controllers/hookController.js +42 -0
- package/dist/src/nonInteractive/control/controllers/hookController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/mcpController.d.ts +42 -0
- package/dist/src/nonInteractive/control/controllers/mcpController.js +205 -0
- package/dist/src/nonInteractive/control/controllers/mcpController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.d.ts +78 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.js +358 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/systemController.d.ts +56 -0
- package/dist/src/nonInteractive/control/controllers/systemController.js +166 -0
- package/dist/src/nonInteractive/control/controllers/systemController.js.map +1 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.d.ts +120 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.js +7 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.js.map +1 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.d.ts +446 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js +891 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js +1197 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.d.ts +29 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.js +56 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js +624 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.d.ts +16 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.js +54 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js +178 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.d.ts +69 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js +185 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js +808 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/session.d.ts +23 -0
- package/dist/src/nonInteractive/session.js +549 -0
- package/dist/src/nonInteractive/session.js.map +1 -0
- package/dist/src/nonInteractive/session.test.d.ts +6 -0
- package/dist/src/nonInteractive/session.test.js +407 -0
- package/dist/src/nonInteractive/session.test.js.map +1 -0
- package/dist/src/nonInteractive/types.d.ts +344 -0
- package/dist/src/nonInteractive/types.js +78 -0
- package/dist/src/nonInteractive/types.js.map +1 -0
- package/dist/src/nonInteractiveCli.d.ts +21 -1
- package/dist/src/nonInteractiveCli.js +204 -57
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCliCommands.d.ts +19 -1
- package/dist/src/nonInteractiveCliCommands.js +69 -4
- package/dist/src/nonInteractiveCliCommands.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +2 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/FileCommandLoader.js +4 -1
- package/dist/src/services/FileCommandLoader.js.map +1 -1
- package/dist/src/ui/AppContainer.js +41 -38
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.d.ts +1 -13
- package/dist/src/ui/auth/AuthDialog.js +41 -111
- package/dist/src/ui/auth/AuthDialog.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +49 -19
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/AuthInProgress.js +2 -1
- package/dist/src/ui/auth/AuthInProgress.js.map +1 -1
- package/dist/src/ui/auth/useAuth.d.ts +9 -8
- package/dist/src/ui/auth/useAuth.js +135 -63
- package/dist/src/ui/auth/useAuth.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +7 -31
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/agentsCommand.js +10 -3
- package/dist/src/ui/commands/agentsCommand.js.map +1 -1
- package/dist/src/ui/commands/approvalModeCommand.js +8 -329
- package/dist/src/ui/commands/approvalModeCommand.js.map +1 -1
- package/dist/src/ui/commands/approvalModeCommand.test.js +19 -263
- package/dist/src/ui/commands/approvalModeCommand.test.js.map +1 -1
- package/dist/src/ui/commands/authCommand.js +4 -1
- package/dist/src/ui/commands/authCommand.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.js +13 -47
- package/dist/src/ui/commands/bugCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +51 -25
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +6 -3
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/compressCommand.js +9 -4
- package/dist/src/ui/commands/compressCommand.js.map +1 -1
- package/dist/src/ui/commands/copyCommand.js +4 -1
- package/dist/src/ui/commands/copyCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.js +30 -12
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/commands/docsCommand.js +9 -3
- package/dist/src/ui/commands/docsCommand.js.map +1 -1
- package/dist/src/ui/commands/editorCommand.js +4 -1
- package/dist/src/ui/commands/editorCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +10 -3
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/helpCommand.js +4 -1
- package/dist/src/ui/commands/helpCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +23 -7
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/initCommand.js +5 -3
- package/dist/src/ui/commands/initCommand.js.map +1 -1
- package/dist/src/ui/commands/languageCommand.d.ts +7 -0
- package/dist/src/ui/commands/languageCommand.js +386 -0
- package/dist/src/ui/commands/languageCommand.js.map +1 -0
- package/dist/src/ui/commands/mcpCommand.js +38 -18
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +54 -25
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.js +9 -4
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/permissionsCommand.js +4 -1
- package/dist/src/ui/commands/permissionsCommand.js.map +1 -1
- package/dist/src/ui/commands/quitCommand.js +7 -2
- package/dist/src/ui/commands/quitCommand.js.map +1 -1
- package/dist/src/ui/commands/settingsCommand.js +4 -1
- package/dist/src/ui/commands/settingsCommand.js.map +1 -1
- package/dist/src/ui/commands/setupGithubCommand.js +4 -1
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.js +11 -4
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/summaryCommand.js +15 -8
- package/dist/src/ui/commands/summaryCommand.js.map +1 -1
- package/dist/src/ui/commands/terminalSetupCommand.js +9 -3
- package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -1
- package/dist/src/ui/commands/themeCommand.js +4 -1
- package/dist/src/ui/commands/themeCommand.js.map +1 -1
- package/dist/src/ui/commands/toolsCommand.js +5 -2
- package/dist/src/ui/commands/toolsCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +1 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/commands/vimCommand.js +4 -1
- package/dist/src/ui/commands/vimCommand.js.map +1 -1
- package/dist/src/ui/components/AboutBox.d.ts +2 -9
- package/dist/src/ui/components/AboutBox.js +6 -2
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/ApprovalModeDialog.d.ts +21 -0
- package/dist/src/ui/components/ApprovalModeDialog.js +68 -0
- package/dist/src/ui/components/ApprovalModeDialog.js.map +1 -0
- package/dist/src/ui/components/AutoAcceptIndicator.js +7 -6
- package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/components/Composer.js +4 -3
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/ConfigInitDisplay.js +7 -3
- package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextSummaryDisplay.js +33 -9
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +60 -13
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/EditorSettingsDialog.js +8 -3
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/Help.js +14 -4
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +17 -8
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +10 -136
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +6 -1
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.js +2 -1
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.js +6 -5
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/OpenAIKeyPrompt.d.ts +19 -1
- package/dist/src/ui/components/OpenAIKeyPrompt.js +38 -6
- package/dist/src/ui/components/OpenAIKeyPrompt.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.js +5 -4
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/QuitConfirmationDialog.js +6 -5
- package/dist/src/ui/components/QuitConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/QwenOAuthProgress.d.ts +2 -2
- package/dist/src/ui/components/QwenOAuthProgress.js +14 -7
- package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -1
- package/dist/src/ui/components/QwenOAuthProgress.test.js +1 -0
- package/dist/src/ui/components/QwenOAuthProgress.test.js.map +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js +2 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
- package/dist/src/ui/components/SettingsDialog.js +35 -12
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +5 -4
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.js +5 -4
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.js +5 -4
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +5 -2
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ToolStatsDisplay.js +3 -2
- package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/WelcomeBackDialog.js +13 -4
- package/dist/src/ui/components/WelcomeBackDialog.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.js +10 -6
- package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +40 -29
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSelectionList.test.js +1 -1
- package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -1
- package/dist/src/ui/components/shared/ScopeSelector.js +3 -1
- package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +39 -26
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +1 -1
- package/dist/src/ui/components/subagents/create/CreationSummary.js +20 -10
- package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -1
- package/dist/src/ui/components/subagents/create/DescriptionInput.js +6 -3
- package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +1 -1
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +7 -2
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/LocationSelector.js +7 -2
- package/dist/src/ui/components/subagents/create/LocationSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/ToolSelector.js +8 -7
- package/dist/src/ui/components/subagents/create/ToolSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +29 -4
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js +6 -3
- package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js +14 -5
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +13 -6
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentViewerStep.js +3 -2
- package/dist/src/ui/components/subagents/manage/AgentViewerStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +14 -13
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +1 -1
- package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +8 -8
- package/dist/src/ui/components/views/McpStatus.js +28 -15
- package/dist/src/ui/components/views/McpStatus.js.map +1 -1
- package/dist/src/ui/components/views/ToolsList.js +2 -1
- package/dist/src/ui/components/views/ToolsList.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +5 -4
- package/dist/src/ui/contexts/UIActionsContext.js +1 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +5 -7
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/editors/editorSettingsManager.js +1 -0
- package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js +2 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -0
- package/dist/src/ui/hooks/slashCommandProcessor.js +4 -7
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useApprovalModeCommand.d.ts +14 -0
- package/dist/src/ui/hooks/useApprovalModeCommand.js +33 -0
- package/dist/src/ui/hooks/useApprovalModeCommand.js.map +1 -0
- package/dist/src/ui/hooks/useAttentionNotifications.d.ts +14 -0
- package/dist/src/ui/hooks/useAttentionNotifications.js +41 -0
- package/dist/src/ui/hooks/useAttentionNotifications.js.map +1 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.d.ts +6 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.js +113 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.js.map +1 -0
- package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -4
- package/dist/src/ui/hooks/useCommandCompletion.js +1 -23
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useDialogClose.d.ts +6 -3
- package/dist/src/ui/hooks/useDialogClose.js +5 -0
- package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.js +6 -3
- package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.test.js +39 -21
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
- package/dist/src/ui/hooks/useInitializationAuthError.d.ts +22 -0
- package/dist/src/ui/hooks/useInitializationAuthError.js +40 -0
- package/dist/src/ui/hooks/useInitializationAuthError.js.map +1 -0
- package/dist/src/ui/hooks/usePhraseCycler.js +6 -4
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/useQwenAuth.d.ts +7 -12
- package/dist/src/ui/hooks/useQwenAuth.js +4 -8
- package/dist/src/ui/hooks/useQwenAuth.js.map +1 -1
- package/dist/src/ui/hooks/useQwenAuth.test.js +72 -98
- package/dist/src/ui/hooks/useQwenAuth.test.js.map +1 -1
- package/dist/src/ui/hooks/useThemeCommand.js +8 -3
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
- package/dist/src/ui/models/availableModels.js +7 -2
- package/dist/src/ui/models/availableModels.js.map +1 -1
- package/dist/src/ui/types.d.ts +32 -14
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.js +3 -3
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.d.ts +16 -0
- package/dist/src/ui/utils/commandUtils.js +16 -1
- package/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.test.js +5 -2
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
- package/dist/src/ui/utils/terminalSetup.js +45 -18
- package/dist/src/ui/utils/terminalSetup.js.map +1 -1
- package/dist/src/utils/attentionNotification.d.ts +20 -0
- package/dist/src/utils/attentionNotification.js +34 -0
- package/dist/src/utils/attentionNotification.js.map +1 -0
- package/dist/src/utils/attentionNotification.test.d.ts +6 -0
- package/dist/src/utils/attentionNotification.test.js +46 -0
- package/dist/src/utils/attentionNotification.test.js.map +1 -0
- package/dist/src/utils/dialogScopeUtils.d.ts +0 -4
- package/dist/src/utils/dialogScopeUtils.js +5 -2
- package/dist/src/utils/dialogScopeUtils.js.map +1 -1
- package/dist/src/utils/errors.d.ts +10 -2
- package/dist/src/utils/errors.js +14 -13
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +91 -54
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/nonInteractiveHelpers.d.ts +88 -0
- package/dist/src/utils/nonInteractiveHelpers.js +470 -0
- package/dist/src/utils/nonInteractiveHelpers.js.map +1 -0
- package/dist/src/utils/nonInteractiveHelpers.test.d.ts +6 -0
- package/dist/src/utils/nonInteractiveHelpers.test.js +945 -0
- package/dist/src/utils/nonInteractiveHelpers.test.js.map +1 -0
- package/dist/src/utils/sandbox.js +1 -1
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.js +7 -1
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/systemInfo.d.ts +66 -0
- package/dist/src/utils/systemInfo.js +125 -0
- package/dist/src/utils/systemInfo.js.map +1 -0
- package/dist/src/utils/systemInfo.test.d.ts +6 -0
- package/dist/src/utils/systemInfo.test.js +259 -0
- package/dist/src/utils/systemInfo.test.js.map +1 -0
- package/dist/src/utils/systemInfoFields.d.ts +22 -0
- package/dist/src/utils/systemInfoFields.js +96 -0
- package/dist/src/utils/systemInfoFields.js.map +1 -0
- package/dist/src/utils/userStartupWarnings.js +9 -4
- package/dist/src/utils/userStartupWarnings.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.js +27 -6
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/zed-integration/acp.js +1 -2
- package/dist/src/zed-integration/acp.js.map +1 -1
- package/dist/src/zed-integration/schema.d.ts +506 -264
- package/dist/src/zed-integration/schema.js +13 -0
- package/dist/src/zed-integration/schema.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.js +376 -32
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -4
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Control Service
|
|
8
|
+
*
|
|
9
|
+
* Facade layer providing domain-grouped APIs for control plane operations.
|
|
10
|
+
* Shares controller instances with ControlDispatcher to ensure single source
|
|
11
|
+
* of truth and state consistency.
|
|
12
|
+
*/
|
|
13
|
+
export class ControlService {
|
|
14
|
+
dispatcher;
|
|
15
|
+
/**
|
|
16
|
+
* Construct ControlService
|
|
17
|
+
*
|
|
18
|
+
* @param context - Control context (unused directly, passed to dispatcher)
|
|
19
|
+
* @param dispatcher - Control dispatcher that owns the controller instances
|
|
20
|
+
*/
|
|
21
|
+
constructor(context, dispatcher) {
|
|
22
|
+
this.dispatcher = dispatcher;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Permission Domain API
|
|
26
|
+
*
|
|
27
|
+
* Handles tool execution permissions, approval checks, and callbacks.
|
|
28
|
+
* Delegates to the shared PermissionController instance.
|
|
29
|
+
*/
|
|
30
|
+
// get permission(): PermissionServiceAPI {
|
|
31
|
+
// const controller = this.dispatcher.permissionController;
|
|
32
|
+
// return {
|
|
33
|
+
// /**
|
|
34
|
+
// * Check if a tool should be allowed based on current permission settings
|
|
35
|
+
// *
|
|
36
|
+
// * Evaluates permission mode and tool registry to determine if execution
|
|
37
|
+
// * should proceed. Can optionally modify tool arguments based on confirmation details.
|
|
38
|
+
// *
|
|
39
|
+
// * @param toolRequest - Tool call request information
|
|
40
|
+
// * @param confirmationDetails - Optional confirmation details for UI
|
|
41
|
+
// * @returns Permission decision with optional updated arguments
|
|
42
|
+
// */
|
|
43
|
+
// shouldAllowTool: controller.shouldAllowTool.bind(controller),
|
|
44
|
+
//
|
|
45
|
+
// /**
|
|
46
|
+
// * Build UI suggestions for tool confirmation dialogs
|
|
47
|
+
// *
|
|
48
|
+
// * Creates actionable permission suggestions based on tool confirmation details.
|
|
49
|
+
// *
|
|
50
|
+
// * @param confirmationDetails - Tool confirmation details
|
|
51
|
+
// * @returns Array of permission suggestions or null
|
|
52
|
+
// */
|
|
53
|
+
// buildPermissionSuggestions:
|
|
54
|
+
// controller.buildPermissionSuggestions.bind(controller),
|
|
55
|
+
//
|
|
56
|
+
// /**
|
|
57
|
+
// * Get callback for monitoring tool call status updates
|
|
58
|
+
// *
|
|
59
|
+
// * Returns callback function for integration with CoreToolScheduler.
|
|
60
|
+
// *
|
|
61
|
+
// * @returns Callback function for tool call updates
|
|
62
|
+
// */
|
|
63
|
+
// getToolCallUpdateCallback:
|
|
64
|
+
// controller.getToolCallUpdateCallback.bind(controller),
|
|
65
|
+
// };
|
|
66
|
+
// }
|
|
67
|
+
/**
|
|
68
|
+
* System Domain API
|
|
69
|
+
*
|
|
70
|
+
* Handles system-level operations and session management.
|
|
71
|
+
* Delegates to the shared SystemController instance.
|
|
72
|
+
*/
|
|
73
|
+
get system() {
|
|
74
|
+
const controller = this.dispatcher.systemController;
|
|
75
|
+
return {
|
|
76
|
+
/**
|
|
77
|
+
* Get control capabilities
|
|
78
|
+
*
|
|
79
|
+
* Returns the control capabilities object indicating what control
|
|
80
|
+
* features are available. Used exclusively for the initialize
|
|
81
|
+
* control response. System messages do not include capabilities.
|
|
82
|
+
*
|
|
83
|
+
* @returns Control capabilities object
|
|
84
|
+
*/
|
|
85
|
+
getControlCapabilities: () => controller.buildControlCapabilities(),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* MCP Domain API
|
|
90
|
+
*
|
|
91
|
+
* Handles Model Context Protocol server interactions.
|
|
92
|
+
* Delegates to the shared MCPController instance.
|
|
93
|
+
*/
|
|
94
|
+
// get mcp(): McpServiceAPI {
|
|
95
|
+
// return {
|
|
96
|
+
// /**
|
|
97
|
+
// * Get or create MCP client for a server (lazy initialization)
|
|
98
|
+
// *
|
|
99
|
+
// * Returns existing client or creates new connection.
|
|
100
|
+
// *
|
|
101
|
+
// * @param serverName - Name of the MCP server
|
|
102
|
+
// * @returns Promise with client and config
|
|
103
|
+
// */
|
|
104
|
+
// getMcpClient: async (serverName: string) => {
|
|
105
|
+
// // MCPController has a private method getOrCreateMcpClient
|
|
106
|
+
// // We need to expose it via the API
|
|
107
|
+
// // For now, throw error as placeholder
|
|
108
|
+
// // The actual implementation will be added when we update MCPController
|
|
109
|
+
// throw new Error(
|
|
110
|
+
// `getMcpClient not yet implemented in ControlService. Server: ${serverName}`,
|
|
111
|
+
// );
|
|
112
|
+
// },
|
|
113
|
+
//
|
|
114
|
+
// /**
|
|
115
|
+
// * List all available MCP servers
|
|
116
|
+
// *
|
|
117
|
+
// * Returns names of configured/connected MCP servers.
|
|
118
|
+
// *
|
|
119
|
+
// * @returns Array of server names
|
|
120
|
+
// */
|
|
121
|
+
// listServers: () => {
|
|
122
|
+
// // Get servers from context
|
|
123
|
+
// const sdkServers = Array.from(
|
|
124
|
+
// this.dispatcher.mcpController['context'].sdkMcpServers,
|
|
125
|
+
// );
|
|
126
|
+
// const cliServers = Array.from(
|
|
127
|
+
// this.dispatcher.mcpController['context'].mcpClients.keys(),
|
|
128
|
+
// );
|
|
129
|
+
// return [...new Set([...sdkServers, ...cliServers])];
|
|
130
|
+
// },
|
|
131
|
+
// };
|
|
132
|
+
// }
|
|
133
|
+
/**
|
|
134
|
+
* Hook Domain API
|
|
135
|
+
*
|
|
136
|
+
* Handles hook callback processing (placeholder for future expansion).
|
|
137
|
+
* Delegates to the shared HookController instance.
|
|
138
|
+
*/
|
|
139
|
+
// get hook(): HookServiceAPI {
|
|
140
|
+
// // HookController has no public methods yet - controller access reserved for future use
|
|
141
|
+
// return {};
|
|
142
|
+
// }
|
|
143
|
+
/**
|
|
144
|
+
* Cleanup all controllers
|
|
145
|
+
*
|
|
146
|
+
* Should be called on session shutdown. Delegates to dispatcher's shutdown
|
|
147
|
+
* method to ensure all controllers are properly cleaned up.
|
|
148
|
+
*/
|
|
149
|
+
cleanup() {
|
|
150
|
+
// Delegate to dispatcher which manages controller cleanup
|
|
151
|
+
this.dispatcher.shutdown();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=ControlService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ControlService.js","sourceRoot":"","sources":["../../../../src/nonInteractive/control/ControlService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;IACjB,UAAU,CAAoB;IAEtC;;;;;OAKG;IACH,YAAY,OAAwB,EAAE,UAA6B;QACjE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,2CAA2C;IAC3C,6DAA6D;IAC7D,aAAa;IACb,UAAU;IACV,gFAAgF;IAChF,SAAS;IACT,+EAA+E;IAC/E,6FAA6F;IAC7F,SAAS;IACT,4DAA4D;IAC5D,2EAA2E;IAC3E,sEAAsE;IACtE,UAAU;IACV,oEAAoE;IACpE,EAAE;IACF,UAAU;IACV,4DAA4D;IAC5D,SAAS;IACT,uFAAuF;IACvF,SAAS;IACT,gEAAgE;IAChE,0DAA0D;IAC1D,UAAU;IACV,kCAAkC;IAClC,gEAAgE;IAChE,EAAE;IACF,UAAU;IACV,8DAA8D;IAC9D,SAAS;IACT,2EAA2E;IAC3E,SAAS;IACT,0DAA0D;IAC1D,UAAU;IACV,iCAAiC;IACjC,+DAA+D;IAC/D,OAAO;IACP,IAAI;IAEJ;;;;;OAKG;IACH,IAAI,MAAM;QACR,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;QACpD,OAAO;YACL;;;;;;;;eAQG;YACH,sBAAsB,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,wBAAwB,EAAE;SACpE,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,6BAA6B;IAC7B,aAAa;IACb,UAAU;IACV,qEAAqE;IACrE,SAAS;IACT,4DAA4D;IAC5D,SAAS;IACT,oDAAoD;IACpD,iDAAiD;IACjD,UAAU;IACV,oDAAoD;IACpD,mEAAmE;IACnE,4CAA4C;IAC5C,+CAA+C;IAC/C,gFAAgF;IAChF,yBAAyB;IACzB,uFAAuF;IACvF,WAAW;IACX,SAAS;IACT,EAAE;IACF,UAAU;IACV,wCAAwC;IACxC,SAAS;IACT,4DAA4D;IAC5D,SAAS;IACT,wCAAwC;IACxC,UAAU;IACV,2BAA2B;IAC3B,oCAAoC;IACpC,uCAAuC;IACvC,kEAAkE;IAClE,WAAW;IACX,uCAAuC;IACvC,sEAAsE;IACtE,WAAW;IACX,6DAA6D;IAC7D,SAAS;IACT,OAAO;IACP,IAAI;IAEJ;;;;;OAKG;IACH,+BAA+B;IAC/B,4FAA4F;IAC5F,eAAe;IACf,IAAI;IAEJ;;;;;OAKG;IACH,OAAO;QACL,0DAA0D;QAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { IControlContext } from '../ControlContext.js';
|
|
7
|
+
import type { ControlRequestPayload, ControlResponse } from '../../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Registry interface for controllers to register/deregister pending requests
|
|
10
|
+
*/
|
|
11
|
+
export interface IPendingRequestRegistry {
|
|
12
|
+
registerIncomingRequest(requestId: string, controller: string, abortController: AbortController, timeoutId: NodeJS.Timeout): void;
|
|
13
|
+
deregisterIncomingRequest(requestId: string): void;
|
|
14
|
+
registerOutgoingRequest(requestId: string, controller: string, resolve: (response: ControlResponse) => void, reject: (error: Error) => void, timeoutId: NodeJS.Timeout): void;
|
|
15
|
+
deregisterOutgoingRequest(requestId: string): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Abstract base controller class
|
|
19
|
+
*
|
|
20
|
+
* Subclasses should implement handleRequestPayload() to process specific
|
|
21
|
+
* control request types.
|
|
22
|
+
*/
|
|
23
|
+
export declare abstract class BaseController {
|
|
24
|
+
protected context: IControlContext;
|
|
25
|
+
protected registry: IPendingRequestRegistry;
|
|
26
|
+
protected controllerName: string;
|
|
27
|
+
constructor(context: IControlContext, registry: IPendingRequestRegistry, controllerName: string);
|
|
28
|
+
/**
|
|
29
|
+
* Handle an incoming control request
|
|
30
|
+
*
|
|
31
|
+
* Manages lifecycle: register -> process -> deregister
|
|
32
|
+
*/
|
|
33
|
+
handleRequest(payload: ControlRequestPayload, requestId: string): Promise<Record<string, unknown>>;
|
|
34
|
+
/**
|
|
35
|
+
* Send an outgoing control request to SDK
|
|
36
|
+
*
|
|
37
|
+
* Manages lifecycle: register -> send -> wait for response -> deregister
|
|
38
|
+
*/
|
|
39
|
+
sendControlRequest(payload: ControlRequestPayload, timeoutMs?: number): Promise<ControlResponse>;
|
|
40
|
+
/**
|
|
41
|
+
* Abstract method: Handle specific request payload
|
|
42
|
+
*
|
|
43
|
+
* Subclasses must implement this to process their domain-specific requests.
|
|
44
|
+
*/
|
|
45
|
+
protected abstract handleRequestPayload(payload: ControlRequestPayload, signal: AbortSignal): Promise<Record<string, unknown>>;
|
|
46
|
+
/**
|
|
47
|
+
* Cleanup resources
|
|
48
|
+
*/
|
|
49
|
+
cleanup(): void;
|
|
50
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Base Controller
|
|
8
|
+
*
|
|
9
|
+
* Abstract base class for domain-specific control plane controllers.
|
|
10
|
+
* Provides common functionality for:
|
|
11
|
+
* - Handling incoming control requests (SDK -> CLI)
|
|
12
|
+
* - Sending outgoing control requests (CLI -> SDK)
|
|
13
|
+
* - Request lifecycle management with timeout and cancellation
|
|
14
|
+
* - Integration with central pending request registry
|
|
15
|
+
*/
|
|
16
|
+
import { randomUUID } from 'node:crypto';
|
|
17
|
+
const DEFAULT_REQUEST_TIMEOUT_MS = 30000; // 30 seconds
|
|
18
|
+
/**
|
|
19
|
+
* Abstract base controller class
|
|
20
|
+
*
|
|
21
|
+
* Subclasses should implement handleRequestPayload() to process specific
|
|
22
|
+
* control request types.
|
|
23
|
+
*/
|
|
24
|
+
export class BaseController {
|
|
25
|
+
context;
|
|
26
|
+
registry;
|
|
27
|
+
controllerName;
|
|
28
|
+
constructor(context, registry, controllerName) {
|
|
29
|
+
this.context = context;
|
|
30
|
+
this.registry = registry;
|
|
31
|
+
this.controllerName = controllerName;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Handle an incoming control request
|
|
35
|
+
*
|
|
36
|
+
* Manages lifecycle: register -> process -> deregister
|
|
37
|
+
*/
|
|
38
|
+
async handleRequest(payload, requestId) {
|
|
39
|
+
const requestAbortController = new AbortController();
|
|
40
|
+
// Setup timeout
|
|
41
|
+
const timeoutId = setTimeout(() => {
|
|
42
|
+
requestAbortController.abort();
|
|
43
|
+
this.registry.deregisterIncomingRequest(requestId);
|
|
44
|
+
if (this.context.debugMode) {
|
|
45
|
+
console.error(`[${this.controllerName}] Request timeout: ${requestId}`);
|
|
46
|
+
}
|
|
47
|
+
}, DEFAULT_REQUEST_TIMEOUT_MS);
|
|
48
|
+
// Register with central registry
|
|
49
|
+
this.registry.registerIncomingRequest(requestId, this.controllerName, requestAbortController, timeoutId);
|
|
50
|
+
try {
|
|
51
|
+
const response = await this.handleRequestPayload(payload, requestAbortController.signal);
|
|
52
|
+
// Success - deregister
|
|
53
|
+
this.registry.deregisterIncomingRequest(requestId);
|
|
54
|
+
return response;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
// Error - deregister
|
|
58
|
+
this.registry.deregisterIncomingRequest(requestId);
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Send an outgoing control request to SDK
|
|
64
|
+
*
|
|
65
|
+
* Manages lifecycle: register -> send -> wait for response -> deregister
|
|
66
|
+
*/
|
|
67
|
+
async sendControlRequest(payload, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
68
|
+
const requestId = randomUUID();
|
|
69
|
+
return new Promise((resolve, reject) => {
|
|
70
|
+
// Setup timeout
|
|
71
|
+
const timeoutId = setTimeout(() => {
|
|
72
|
+
this.registry.deregisterOutgoingRequest(requestId);
|
|
73
|
+
reject(new Error('Control request timeout'));
|
|
74
|
+
if (this.context.debugMode) {
|
|
75
|
+
console.error(`[${this.controllerName}] Outgoing request timeout: ${requestId}`);
|
|
76
|
+
}
|
|
77
|
+
}, timeoutMs);
|
|
78
|
+
// Register with central registry
|
|
79
|
+
this.registry.registerOutgoingRequest(requestId, this.controllerName, resolve, reject, timeoutId);
|
|
80
|
+
// Send control request
|
|
81
|
+
const request = {
|
|
82
|
+
type: 'control_request',
|
|
83
|
+
request_id: requestId,
|
|
84
|
+
request: payload,
|
|
85
|
+
};
|
|
86
|
+
try {
|
|
87
|
+
this.context.streamJson.send(request);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
this.registry.deregisterOutgoingRequest(requestId);
|
|
91
|
+
reject(error);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Cleanup resources
|
|
97
|
+
*/
|
|
98
|
+
cleanup() {
|
|
99
|
+
// Subclasses can override to add cleanup logic
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=baseController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseController.js","sourceRoot":"","sources":["../../../../../src/nonInteractive/control/controllers/baseController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Hook Controller
|
|
8
|
+
*
|
|
9
|
+
* Handles hook-related control requests:
|
|
10
|
+
* - hook_callback: Process hook callbacks (placeholder for future)
|
|
11
|
+
*/
|
|
12
|
+
import { BaseController } from './baseController.js';
|
|
13
|
+
import type { ControlRequestPayload } from '../../types.js';
|
|
14
|
+
export declare class HookController extends BaseController {
|
|
15
|
+
/**
|
|
16
|
+
* Handle hook control requests
|
|
17
|
+
*/
|
|
18
|
+
protected handleRequestPayload(payload: ControlRequestPayload, _signal: AbortSignal): Promise<Record<string, unknown>>;
|
|
19
|
+
/**
|
|
20
|
+
* Handle hook_callback request
|
|
21
|
+
*
|
|
22
|
+
* Processes hook callbacks (placeholder implementation)
|
|
23
|
+
*/
|
|
24
|
+
private handleHookCallback;
|
|
25
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Hook Controller
|
|
8
|
+
*
|
|
9
|
+
* Handles hook-related control requests:
|
|
10
|
+
* - hook_callback: Process hook callbacks (placeholder for future)
|
|
11
|
+
*/
|
|
12
|
+
import { BaseController } from './baseController.js';
|
|
13
|
+
export class HookController extends BaseController {
|
|
14
|
+
/**
|
|
15
|
+
* Handle hook control requests
|
|
16
|
+
*/
|
|
17
|
+
async handleRequestPayload(payload, _signal) {
|
|
18
|
+
switch (payload.subtype) {
|
|
19
|
+
case 'hook_callback':
|
|
20
|
+
return this.handleHookCallback(payload);
|
|
21
|
+
default:
|
|
22
|
+
throw new Error(`Unsupported request subtype in HookController`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Handle hook_callback request
|
|
27
|
+
*
|
|
28
|
+
* Processes hook callbacks (placeholder implementation)
|
|
29
|
+
*/
|
|
30
|
+
async handleHookCallback(payload) {
|
|
31
|
+
if (this.context.debugMode) {
|
|
32
|
+
console.error(`[HookController] Hook callback: ${payload.callback_id}`);
|
|
33
|
+
}
|
|
34
|
+
// Hook callback processing not yet implemented
|
|
35
|
+
return {
|
|
36
|
+
result: 'Hook callback processing not yet implemented',
|
|
37
|
+
callback_id: payload.callback_id,
|
|
38
|
+
tool_use_id: payload.tool_use_id,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=hookController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hookController.js","sourceRoot":"","sources":["../../../../../src/nonInteractive/control/controllers/hookController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD,MAAM,OAAO,cAAe,SAAQ,cAAc;IAChD;;OAEG;IACO,KAAK,CAAC,oBAAoB,CAClC,OAA8B,EAC9B,OAAoB;QAEpB,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAiC,CAAC,CAAC;YAEpE;gBACE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,kBAAkB,CAC9B,OAA+B;QAE/B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,mCAAmC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,+CAA+C;QAC/C,OAAO;YACL,MAAM,EAAE,8CAA8C;YACtD,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* MCP Controller
|
|
8
|
+
*
|
|
9
|
+
* Handles MCP-related control requests:
|
|
10
|
+
* - mcp_message: Route MCP messages
|
|
11
|
+
* - mcp_server_status: Return MCP server status
|
|
12
|
+
*/
|
|
13
|
+
import { BaseController } from './baseController.js';
|
|
14
|
+
import type { ControlRequestPayload } from '../../types.js';
|
|
15
|
+
export declare class MCPController extends BaseController {
|
|
16
|
+
/**
|
|
17
|
+
* Handle MCP control requests
|
|
18
|
+
*/
|
|
19
|
+
protected handleRequestPayload(payload: ControlRequestPayload, _signal: AbortSignal): Promise<Record<string, unknown>>;
|
|
20
|
+
/**
|
|
21
|
+
* Handle mcp_message request
|
|
22
|
+
*
|
|
23
|
+
* Routes JSON-RPC messages to MCP servers
|
|
24
|
+
*/
|
|
25
|
+
private handleMcpMessage;
|
|
26
|
+
/**
|
|
27
|
+
* Handle mcp_server_status request
|
|
28
|
+
*
|
|
29
|
+
* Returns status of registered MCP servers
|
|
30
|
+
*/
|
|
31
|
+
private handleMcpStatus;
|
|
32
|
+
/**
|
|
33
|
+
* Get or create MCP client for a server
|
|
34
|
+
*
|
|
35
|
+
* Implements lazy connection and caching
|
|
36
|
+
*/
|
|
37
|
+
private getOrCreateMcpClient;
|
|
38
|
+
/**
|
|
39
|
+
* Cleanup MCP clients
|
|
40
|
+
*/
|
|
41
|
+
cleanup(): void;
|
|
42
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* MCP Controller
|
|
8
|
+
*
|
|
9
|
+
* Handles MCP-related control requests:
|
|
10
|
+
* - mcp_message: Route MCP messages
|
|
11
|
+
* - mcp_server_status: Return MCP server status
|
|
12
|
+
*/
|
|
13
|
+
import { BaseController } from './baseController.js';
|
|
14
|
+
import { ResultSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
15
|
+
import { connectToMcpServer, MCP_DEFAULT_TIMEOUT_MSEC, } from '@umsai/ums-code-core';
|
|
16
|
+
export class MCPController extends BaseController {
|
|
17
|
+
/**
|
|
18
|
+
* Handle MCP control requests
|
|
19
|
+
*/
|
|
20
|
+
async handleRequestPayload(payload, _signal) {
|
|
21
|
+
switch (payload.subtype) {
|
|
22
|
+
case 'mcp_message':
|
|
23
|
+
return this.handleMcpMessage(payload);
|
|
24
|
+
case 'mcp_server_status':
|
|
25
|
+
return this.handleMcpStatus();
|
|
26
|
+
default:
|
|
27
|
+
throw new Error(`Unsupported request subtype in MCPController`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Handle mcp_message request
|
|
32
|
+
*
|
|
33
|
+
* Routes JSON-RPC messages to MCP servers
|
|
34
|
+
*/
|
|
35
|
+
async handleMcpMessage(payload) {
|
|
36
|
+
const serverNameRaw = payload.server_name;
|
|
37
|
+
if (typeof serverNameRaw !== 'string' ||
|
|
38
|
+
serverNameRaw.trim().length === 0) {
|
|
39
|
+
throw new Error('Missing server_name in mcp_message request');
|
|
40
|
+
}
|
|
41
|
+
const message = payload.message;
|
|
42
|
+
if (!message || typeof message !== 'object') {
|
|
43
|
+
throw new Error('Missing or invalid message payload for mcp_message request');
|
|
44
|
+
}
|
|
45
|
+
// Get or create MCP client
|
|
46
|
+
let clientEntry;
|
|
47
|
+
try {
|
|
48
|
+
clientEntry = await this.getOrCreateMcpClient(serverNameRaw.trim());
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
throw new Error(error instanceof Error
|
|
52
|
+
? error.message
|
|
53
|
+
: 'Failed to connect to MCP server');
|
|
54
|
+
}
|
|
55
|
+
const method = message.method;
|
|
56
|
+
if (typeof method !== 'string' || method.trim().length === 0) {
|
|
57
|
+
throw new Error('Invalid MCP message: missing method');
|
|
58
|
+
}
|
|
59
|
+
const jsonrpcVersion = typeof message.jsonrpc === 'string' ? message.jsonrpc : '2.0';
|
|
60
|
+
const messageId = message.id;
|
|
61
|
+
const params = message.params;
|
|
62
|
+
const timeout = typeof clientEntry.config.timeout === 'number'
|
|
63
|
+
? clientEntry.config.timeout
|
|
64
|
+
: MCP_DEFAULT_TIMEOUT_MSEC;
|
|
65
|
+
try {
|
|
66
|
+
// Handle notification (no id)
|
|
67
|
+
if (messageId === undefined) {
|
|
68
|
+
await clientEntry.client.notification({
|
|
69
|
+
method,
|
|
70
|
+
params,
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
subtype: 'mcp_message',
|
|
74
|
+
mcp_response: {
|
|
75
|
+
jsonrpc: jsonrpcVersion,
|
|
76
|
+
id: null,
|
|
77
|
+
result: { success: true, acknowledged: true },
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// Handle request (with id)
|
|
82
|
+
const result = await clientEntry.client.request({
|
|
83
|
+
method,
|
|
84
|
+
params,
|
|
85
|
+
}, ResultSchema, { timeout });
|
|
86
|
+
return {
|
|
87
|
+
subtype: 'mcp_message',
|
|
88
|
+
mcp_response: {
|
|
89
|
+
jsonrpc: jsonrpcVersion,
|
|
90
|
+
id: messageId,
|
|
91
|
+
result,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
// If connection closed, remove from cache
|
|
97
|
+
if (error instanceof Error && /closed/i.test(error.message)) {
|
|
98
|
+
this.context.mcpClients.delete(serverNameRaw.trim());
|
|
99
|
+
}
|
|
100
|
+
const errorCode = typeof error?.code === 'number'
|
|
101
|
+
? error.code
|
|
102
|
+
: -32603;
|
|
103
|
+
const errorMessage = error instanceof Error
|
|
104
|
+
? error.message
|
|
105
|
+
: 'Failed to execute MCP request';
|
|
106
|
+
const errorData = error?.data;
|
|
107
|
+
const errorBody = {
|
|
108
|
+
code: errorCode,
|
|
109
|
+
message: errorMessage,
|
|
110
|
+
};
|
|
111
|
+
if (errorData !== undefined) {
|
|
112
|
+
errorBody['data'] = errorData;
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
subtype: 'mcp_message',
|
|
116
|
+
mcp_response: {
|
|
117
|
+
jsonrpc: jsonrpcVersion,
|
|
118
|
+
id: messageId ?? null,
|
|
119
|
+
error: errorBody,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Handle mcp_server_status request
|
|
126
|
+
*
|
|
127
|
+
* Returns status of registered MCP servers
|
|
128
|
+
*/
|
|
129
|
+
async handleMcpStatus() {
|
|
130
|
+
const status = {};
|
|
131
|
+
// Include SDK MCP servers
|
|
132
|
+
for (const serverName of this.context.sdkMcpServers) {
|
|
133
|
+
status[serverName] = 'connected';
|
|
134
|
+
}
|
|
135
|
+
// Include CLI-managed MCP clients
|
|
136
|
+
for (const serverName of this.context.mcpClients.keys()) {
|
|
137
|
+
status[serverName] = 'connected';
|
|
138
|
+
}
|
|
139
|
+
if (this.context.debugMode) {
|
|
140
|
+
console.error(`[MCPController] MCP status: ${Object.keys(status).length} servers`);
|
|
141
|
+
}
|
|
142
|
+
return status;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get or create MCP client for a server
|
|
146
|
+
*
|
|
147
|
+
* Implements lazy connection and caching
|
|
148
|
+
*/
|
|
149
|
+
async getOrCreateMcpClient(serverName) {
|
|
150
|
+
// Check cache first
|
|
151
|
+
const cached = this.context.mcpClients.get(serverName);
|
|
152
|
+
if (cached) {
|
|
153
|
+
return cached;
|
|
154
|
+
}
|
|
155
|
+
// Get server configuration
|
|
156
|
+
const provider = this.context.config;
|
|
157
|
+
if (typeof provider.getMcpServers !== 'function') {
|
|
158
|
+
throw new Error(`MCP server "${serverName}" is not configured`);
|
|
159
|
+
}
|
|
160
|
+
const servers = provider.getMcpServers() ?? {};
|
|
161
|
+
const serverConfig = servers[serverName];
|
|
162
|
+
if (!serverConfig) {
|
|
163
|
+
throw new Error(`MCP server "${serverName}" is not configured`);
|
|
164
|
+
}
|
|
165
|
+
const debugMode = typeof provider.getDebugMode === 'function'
|
|
166
|
+
? provider.getDebugMode()
|
|
167
|
+
: false;
|
|
168
|
+
const workspaceContext = typeof provider.getWorkspaceContext === 'function'
|
|
169
|
+
? provider.getWorkspaceContext()
|
|
170
|
+
: undefined;
|
|
171
|
+
if (!workspaceContext) {
|
|
172
|
+
throw new Error('Workspace context is not available for MCP connection');
|
|
173
|
+
}
|
|
174
|
+
// Connect to MCP server
|
|
175
|
+
const client = await connectToMcpServer(serverName, serverConfig, debugMode, workspaceContext);
|
|
176
|
+
// Cache the client
|
|
177
|
+
const entry = { client, config: serverConfig };
|
|
178
|
+
this.context.mcpClients.set(serverName, entry);
|
|
179
|
+
if (this.context.debugMode) {
|
|
180
|
+
console.error(`[MCPController] Connected to MCP server: ${serverName}`);
|
|
181
|
+
}
|
|
182
|
+
return entry;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Cleanup MCP clients
|
|
186
|
+
*/
|
|
187
|
+
cleanup() {
|
|
188
|
+
if (this.context.debugMode) {
|
|
189
|
+
console.error(`[MCPController] Cleaning up ${this.context.mcpClients.size} MCP clients`);
|
|
190
|
+
}
|
|
191
|
+
// Close all MCP clients
|
|
192
|
+
for (const [serverName, { client }] of this.context.mcpClients.entries()) {
|
|
193
|
+
try {
|
|
194
|
+
client.close();
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
if (this.context.debugMode) {
|
|
198
|
+
console.error(`[MCPController] Failed to close MCP client ${serverName}:`, error);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
this.context.mcpClients.clear();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=mcpController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpController.js","sourceRoot":"","sources":["../../../../../src/nonInteractive/control/controllers/mcpController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AASlE,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,OAAO,aAAc,SAAQ,cAAc;IAC/C;;OAEG;IACO,KAAK,CAAC,oBAAoB,CAClC,OAA8B,EAC9B,OAAoB;QAEpB,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,aAAa;gBAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAsC,CAAC,CAAC;YAEvE,KAAK,mBAAmB;gBACtB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAEhC;gBACE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAC5B,OAAoC;QAEpC,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;QAC1C,IACE,OAAO,aAAa,KAAK,QAAQ;YACjC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,WAAwD,CAAC;QAC7D,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,iCAAiC,CACtC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,cAAc,GAClB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAChE,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,MAAM,OAAO,GACX,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ;YAC5C,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO;YAC5B,CAAC,CAAC,wBAAwB,CAAC;QAE/B,IAAI,CAAC;YACH,8BAA8B;YAC9B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC;oBACpC,MAAM;oBACN,MAAM;iBACP,CAAC,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE,aAAa;oBACtB,YAAY,EAAE;wBACZ,OAAO,EAAE,cAAc;wBACvB,EAAE,EAAE,IAAI;wBACR,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;qBAC9C;iBACF,CAAC;YACJ,CAAC;YAED,2BAA2B;YAC3B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,CAC7C;gBACE,MAAM;gBACN,MAAM;aACP,EACD,YAAY,EACZ,EAAE,OAAO,EAAE,CACZ,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,aAAa;gBACtB,YAAY,EAAE;oBACZ,OAAO,EAAE,cAAc;oBACvB,EAAE,EAAE,SAAS;oBACb,MAAM;iBACP;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0CAA0C;YAC1C,IAAI,KAAK,YAAY,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,SAAS,GACb,OAAQ,KAA4B,EAAE,IAAI,KAAK,QAAQ;gBACrD,CAAC,CAAG,KAA0B,CAAC,IAAe;gBAC9C,CAAC,CAAC,CAAC,KAAK,CAAC;YACb,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,+BAA+B,CAAC;YACtC,MAAM,SAAS,GAAI,KAA4B,EAAE,IAAI,CAAC;YAEtD,MAAM,SAAS,GAA4B;gBACzC,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,YAAY;aACtB,CAAC;YACF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;YAChC,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,aAAa;gBACtB,YAAY,EAAE;oBACZ,OAAO,EAAE,cAAc;oBACvB,EAAE,EAAE,SAAS,IAAI,IAAI;oBACrB,KAAK,EAAE,SAAS;iBACjB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,eAAe;QAC3B,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,0BAA0B;QAC1B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACpD,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;QACnC,CAAC;QAED,kCAAkC;QAClC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACxD,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CACX,+BAA+B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,UAAU,CACpE,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,oBAAoB,CAChC,UAAkB;QAElB,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAI7B,CAAC;QAEF,IAAI,OAAO,QAAQ,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,qBAAqB,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,qBAAqB,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,SAAS,GACb,OAAO,QAAQ,CAAC,YAAY,KAAK,UAAU;YACzC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE;YACzB,CAAC,CAAC,KAAK,CAAC;QAEZ,MAAM,gBAAgB,GACpB,OAAO,QAAQ,CAAC,mBAAmB,KAAK,UAAU;YAChD,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE;YAChC,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,UAAU,EACV,YAAY,EACZ,SAAS,EACT,gBAAoC,CACrC,CAAC;QAEF,mBAAmB;QACnB,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,4CAA4C,UAAU,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACM,OAAO;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CACX,+BAA+B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,cAAc,CAC1E,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YACzE,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC3B,OAAO,CAAC,KAAK,CACX,8CAA8C,UAAU,GAAG,EAC3D,KAAK,CACN,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;CACF"}
|