@umsai/ums-code 0.3.0-v2 → 0.6.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 +6 -6
- package/dist/src/{zed-integration → acp-integration}/acp.d.ts +13 -0
- package/dist/src/{zed-integration → acp-integration}/acp.js +32 -0
- package/dist/src/acp-integration/acp.js.map +1 -0
- package/dist/src/acp-integration/acpAgent.d.ts +10 -0
- package/dist/src/acp-integration/acpAgent.js +264 -0
- package/dist/src/acp-integration/acpAgent.js.map +1 -0
- package/dist/src/{zed-integration → acp-integration}/schema.d.ts +2235 -905
- package/dist/src/{zed-integration → acp-integration}/schema.js +100 -2
- package/dist/src/acp-integration/schema.js.map +1 -0
- package/dist/src/{zed-integration/fileSystemService.d.ts → acp-integration/service/filesystem.d.ts} +1 -1
- package/dist/src/{zed-integration/fileSystemService.js → acp-integration/service/filesystem.js} +14 -1
- package/dist/src/acp-integration/service/filesystem.js.map +1 -0
- package/dist/src/{ui/hooks/useQuotaAndFallback.test.d.ts → acp-integration/service/filesystem.test.d.ts} +1 -1
- package/dist/src/acp-integration/service/filesystem.test.js +39 -0
- package/dist/src/acp-integration/service/filesystem.test.js.map +1 -0
- package/dist/src/acp-integration/session/HistoryReplayer.d.ts +51 -0
- package/dist/src/acp-integration/session/HistoryReplayer.js +164 -0
- package/dist/src/acp-integration/session/HistoryReplayer.js.map +1 -0
- package/dist/src/acp-integration/session/HistoryReplayer.test.d.ts +6 -0
- package/dist/src/acp-integration/session/HistoryReplayer.test.js +374 -0
- package/dist/src/acp-integration/session/HistoryReplayer.test.js.map +1 -0
- package/dist/src/acp-integration/session/Session.d.ts +61 -0
- package/dist/src/acp-integration/session/Session.js +839 -0
- package/dist/src/acp-integration/session/Session.js.map +1 -0
- package/dist/src/acp-integration/session/SubAgentTracker.d.ts +51 -0
- package/dist/src/acp-integration/session/SubAgentTracker.js +257 -0
- package/dist/src/acp-integration/session/SubAgentTracker.js.map +1 -0
- package/dist/src/acp-integration/session/SubAgentTracker.test.d.ts +6 -0
- package/dist/src/acp-integration/session/SubAgentTracker.test.js +369 -0
- package/dist/src/acp-integration/session/SubAgentTracker.test.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/BaseEmitter.d.ts +27 -0
- package/dist/src/acp-integration/session/emitters/BaseEmitter.js +34 -0
- package/dist/src/acp-integration/session/emitters/BaseEmitter.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.d.ts +41 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.js +77 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.test.d.ts +6 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.test.js +174 -0
- package/dist/src/acp-integration/session/emitters/MessageEmitter.test.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.d.ts +39 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.js +83 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.test.d.ts +6 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.test.js +176 -0
- package/dist/src/acp-integration/session/emitters/PlanEmitter.test.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.d.ts +80 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.js +248 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.d.ts +6 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.js +561 -0
- package/dist/src/acp-integration/session/emitters/ToolCallEmitter.test.js.map +1 -0
- package/dist/src/acp-integration/session/emitters/index.d.ts +9 -0
- package/dist/src/acp-integration/session/emitters/index.js +10 -0
- package/dist/src/acp-integration/session/emitters/index.js.map +1 -0
- package/dist/src/acp-integration/session/index.d.ts +24 -0
- package/dist/src/acp-integration/session/index.js +16 -0
- package/dist/src/acp-integration/session/index.js.map +1 -0
- package/dist/src/acp-integration/session/types.d.ts +71 -0
- package/dist/src/acp-integration/session/types.js +7 -0
- package/dist/src/acp-integration/session/types.js.map +1 -0
- package/dist/src/commandMode.d.ts +11 -0
- package/dist/src/commandMode.js +238 -0
- package/dist/src/commandMode.js.map +1 -0
- package/dist/src/config/auth.d.ts +1 -0
- package/dist/src/config/auth.js +29 -0
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +19 -3
- package/dist/src/config/config.js +175 -24
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.js +0 -2
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/extensions/update.test.js +9 -0
- package/dist/src/config/extensions/update.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +53 -2
- package/dist/src/config/settingsSchema.js +46 -2
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/core/auth.d.ts +1 -1
- package/dist/src/core/auth.js +3 -2
- package/dist/src/core/auth.js.map +1 -1
- package/dist/src/core/initializer.js +3 -0
- package/dist/src/core/initializer.js.map +1 -1
- package/dist/src/gemini.js +75 -35
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +37 -4
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +3 -3
- package/dist/src/generated/git-commit.js +3 -3
- package/dist/src/i18n/index.d.ts +10 -2
- package/dist/src/i18n/index.js +26 -1
- package/dist/src/i18n/index.js.map +1 -1
- package/dist/src/i18n/languages.d.ts +20 -0
- package/dist/src/i18n/languages.js +36 -0
- package/dist/src/i18n/languages.js.map +1 -0
- package/dist/src/i18n/locales/de.js +1073 -0
- package/dist/src/i18n/locales/en.js +121 -175
- package/dist/src/i18n/locales/ru.js +1095 -0
- package/dist/src/i18n/locales/zh.js +52 -174
- package/dist/src/nonInteractive/control/ControlDispatcher.d.ts +24 -1
- package/dist/src/nonInteractive/control/ControlDispatcher.js +46 -17
- package/dist/src/nonInteractive/control/ControlDispatcher.js.map +1 -1
- package/dist/src/nonInteractive/control/ControlService.d.ts +2 -1
- package/dist/src/nonInteractive/control/ControlService.js +22 -37
- package/dist/src/nonInteractive/control/ControlService.js.map +1 -1
- package/dist/src/nonInteractive/control/controllers/baseController.d.ts +2 -1
- package/dist/src/nonInteractive/control/controllers/baseController.js +38 -5
- package/dist/src/nonInteractive/control/controllers/baseController.js.map +1 -1
- package/dist/src/nonInteractive/control/controllers/permissionController.d.ts +1 -22
- package/dist/src/nonInteractive/control/controllers/permissionController.js +38 -38
- package/dist/src/nonInteractive/control/controllers/permissionController.js.map +1 -1
- package/dist/src/nonInteractive/control/controllers/sdkMcpController.d.ts +54 -0
- package/dist/src/nonInteractive/control/controllers/sdkMcpController.js +84 -0
- package/dist/src/nonInteractive/control/controllers/sdkMcpController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/systemController.d.ts +16 -6
- package/dist/src/nonInteractive/control/controllers/systemController.js +184 -44
- package/dist/src/nonInteractive/control/controllers/systemController.js.map +1 -1
- package/dist/src/nonInteractive/control/types/serviceAPIs.d.ts +1 -16
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.d.ts +11 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js +64 -5
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js.map +1 -1
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js +40 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js.map +1 -1
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js +50 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js.map +1 -1
- package/dist/src/nonInteractive/session.d.ts +0 -16
- package/dist/src/nonInteractive/session.js +317 -321
- package/dist/src/nonInteractive/session.js.map +1 -1
- package/dist/src/nonInteractive/session.test.js +6 -0
- package/dist/src/nonInteractive/session.test.js.map +1 -1
- package/dist/src/nonInteractive/types.d.ts +57 -3
- package/dist/src/nonInteractive/types.js +0 -1
- package/dist/src/nonInteractive/types.js.map +1 -1
- package/dist/src/nonInteractiveCli.js +121 -56
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCliCommands.d.ts +48 -9
- package/dist/src/nonInteractiveCliCommands.js +180 -64
- package/dist/src/nonInteractiveCliCommands.js.map +1 -1
- package/dist/src/nonInteractiveCliCommands.test.d.ts +6 -0
- package/dist/src/nonInteractiveCliCommands.test.js +157 -0
- package/dist/src/nonInteractiveCliCommands.test.js.map +1 -0
- package/dist/src/services/BuiltinCommandLoader.js +7 -6
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +0 -3
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/services/McpPromptLoader.js +4 -2
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.test.js +1 -1
- package/dist/src/services/McpPromptLoader.test.js.map +1 -1
- package/dist/src/test-utils/mockCommandContext.js +11 -2
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/ui/AppContainer.js +62 -56
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +0 -46
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +4 -4
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/useAuth.js +31 -4
- package/dist/src/ui/auth/useAuth.js.map +1 -1
- package/dist/src/ui/commands/approvalModeCommand.js +53 -4
- package/dist/src/ui/commands/approvalModeCommand.js.map +1 -1
- package/dist/src/ui/commands/approvalModeCommand.test.js +72 -10
- package/dist/src/ui/commands/approvalModeCommand.test.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +22 -10
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/compressCommand.js +86 -16
- package/dist/src/ui/commands/compressCommand.js.map +1 -1
- package/dist/src/ui/commands/languageCommand.d.ts +6 -1
- package/dist/src/ui/commands/languageCommand.js +162 -183
- package/dist/src/ui/commands/languageCommand.js.map +1 -1
- package/dist/src/ui/commands/languageCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/languageCommand.test.js +558 -0
- package/dist/src/ui/commands/languageCommand.test.js.map +1 -0
- package/dist/src/ui/commands/modelCommand.js +4 -2
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/quitCommand.d.ts +0 -1
- package/dist/src/ui/commands/quitCommand.js +0 -27
- package/dist/src/ui/commands/quitCommand.js.map +1 -1
- package/dist/src/ui/commands/restoreCommand.js +1 -1
- package/dist/src/ui/commands/restoreCommand.js.map +1 -1
- package/dist/src/ui/commands/resumeCommand.d.ts +7 -0
- package/dist/src/ui/commands/resumeCommand.js +19 -0
- package/dist/src/ui/commands/resumeCommand.js.map +1 -0
- package/dist/src/ui/commands/resumeCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/resumeCommand.test.js +32 -0
- package/dist/src/ui/commands/resumeCommand.test.js.map +1 -0
- package/dist/src/ui/commands/reviewCommand.d.ts +9 -0
- package/dist/src/ui/commands/reviewCommand.js +2046 -0
- package/dist/src/ui/commands/reviewCommand.js.map +1 -0
- package/dist/src/ui/commands/reviewCommand.test.js +600 -0
- package/dist/src/ui/commands/reviewCommand.test.js.map +1 -0
- package/dist/src/ui/commands/setupGithubCommand.js +11 -10
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
- package/dist/src/ui/commands/setupGithubCommand.test.js +14 -14
- package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
- package/dist/src/ui/commands/summaryCommand.js +129 -42
- package/dist/src/ui/commands/summaryCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +24 -10
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/commands/ums/unittestCommand.d.ts +9 -0
- package/dist/src/ui/commands/ums/unittestCommand.js +387 -0
- package/dist/src/ui/commands/ums/unittestCommand.js.map +1 -0
- package/dist/src/ui/components/Composer.test.js +1 -2
- package/dist/src/ui/components/Composer.test.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.d.ts +3 -2
- package/dist/src/ui/components/ContextUsageDisplay.js +8 -2
- package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +7 -23
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/Footer.js +2 -3
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/Help.js +13 -2
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/Help.test.js +6 -0
- package/dist/src/ui/components/Help.test.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +3 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +5 -2
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +6 -4
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.d.ts +3 -1
- package/dist/src/ui/components/ModelDialog.js +25 -5
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/OpenAIKeyPrompt.d.ts +3 -0
- package/dist/src/ui/components/OpenAIKeyPrompt.js +1 -0
- package/dist/src/ui/components/OpenAIKeyPrompt.js.map +1 -1
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js +1 -1
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
- package/dist/src/ui/components/SessionPicker.d.ts +18 -0
- package/dist/src/ui/components/SessionPicker.js +69 -0
- package/dist/src/ui/components/SessionPicker.js.map +1 -0
- package/dist/src/ui/components/SessionSummaryDisplay.js +14 -2
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +2 -2
- package/dist/src/ui/components/StandaloneSessionPicker.d.ts +10 -0
- package/dist/src/ui/components/StandaloneSessionPicker.js +78 -0
- package/dist/src/ui/components/StandaloneSessionPicker.js.map +1 -0
- package/dist/src/ui/components/StandaloneSessionPicker.test.d.ts +6 -0
- package/dist/src/ui/components/StandaloneSessionPicker.test.js +410 -0
- package/dist/src/ui/components/StandaloneSessionPicker.test.js.map +1 -0
- package/dist/src/ui/components/SuggestionsDisplay.js +3 -2
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiThoughtMessage.d.ts +18 -0
- package/dist/src/ui/components/messages/GeminiThoughtMessage.js +14 -0
- package/dist/src/ui/components/messages/GeminiThoughtMessage.js.map +1 -0
- package/dist/src/ui/components/messages/GeminiThoughtMessageContent.d.ts +18 -0
- package/dist/src/ui/components/messages/GeminiThoughtMessageContent.js +14 -0
- package/dist/src/ui/components/messages/GeminiThoughtMessageContent.js.map +1 -0
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js +4 -1
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +2 -2
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -1
- package/dist/src/ui/components/ums/UMSKeyPrompt.d.ts +1 -1
- package/dist/src/ui/components/ums/UMSKeyPrompt.js +24 -4
- package/dist/src/ui/components/ums/UMSKeyPrompt.js.map +1 -1
- package/dist/src/ui/components/ums/umsStartupWarnings.d.ts +6 -0
- package/dist/src/ui/components/ums/umsStartupWarnings.js +47 -0
- package/dist/src/ui/components/ums/umsStartupWarnings.js.map +1 -0
- package/dist/src/ui/contexts/SessionContext.d.ts +2 -0
- package/dist/src/ui/contexts/SessionContext.js +18 -10
- package/dist/src/ui/contexts/SessionContext.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -1
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +3 -11
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +3 -8
- package/dist/src/ui/hooks/slashCommandProcessor.js +77 -101
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAttentionNotifications.d.ts +3 -1
- package/dist/src/ui/hooks/useAttentionNotifications.js +10 -5
- package/dist/src/ui/hooks/useAttentionNotifications.js.map +1 -1
- package/dist/src/ui/hooks/useAttentionNotifications.test.js +39 -2
- package/dist/src/ui/hooks/useAttentionNotifications.test.js.map +1 -1
- package/dist/src/ui/hooks/useDialogClose.d.ts +0 -3
- package/dist/src/ui/hooks/useDialogClose.js +0 -2
- package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +87 -12
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +11 -6
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useLogger.d.ts +1 -1
- package/dist/src/ui/hooks/useLogger.js +6 -3
- package/dist/src/ui/hooks/useLogger.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.js +12 -136
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/useQwenAuth.test.js +1 -1
- package/dist/src/ui/hooks/useQwenAuth.test.js.map +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js +2 -2
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useResumeCommand.d.ts +20 -0
- package/dist/src/ui/hooks/useResumeCommand.js +49 -0
- package/dist/src/ui/hooks/useResumeCommand.js.map +1 -0
- package/dist/src/ui/hooks/useResumeCommand.test.d.ts +6 -0
- package/dist/src/ui/hooks/useResumeCommand.test.js +144 -0
- package/dist/src/ui/hooks/useResumeCommand.test.js.map +1 -0
- package/dist/src/ui/hooks/useSessionPicker.d.ts +36 -0
- package/dist/src/ui/hooks/useSessionPicker.js +189 -0
- package/dist/src/ui/hooks/useSessionPicker.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.js +9 -1
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +36 -31
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +2 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/models/availableModels.d.ts +9 -2
- package/dist/src/ui/models/availableModels.js +32 -35
- package/dist/src/ui/models/availableModels.js.map +1 -1
- package/dist/src/ui/noninteractive/nonInteractiveUi.js +0 -1
- package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -1
- package/dist/src/ui/types.d.ts +9 -14
- package/dist/src/ui/types.js +0 -1
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +1 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +2 -2
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.d.ts +1 -0
- package/dist/src/ui/utils/MarkdownDisplay.js +13 -13
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/formatters.d.ts +6 -0
- package/dist/src/ui/utils/formatters.js +31 -0
- package/dist/src/ui/utils/formatters.js.map +1 -1
- package/dist/src/ui/utils/formatters.test.js +51 -2
- package/dist/src/ui/utils/formatters.test.js.map +1 -1
- package/dist/src/ui/utils/resumeHistoryUtils.d.ts +19 -0
- package/dist/src/ui/utils/resumeHistoryUtils.js +267 -0
- package/dist/src/ui/utils/resumeHistoryUtils.js.map +1 -0
- package/dist/src/ui/utils/resumeHistoryUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/resumeHistoryUtils.test.js +253 -0
- package/dist/src/ui/utils/resumeHistoryUtils.test.js.map +1 -0
- package/dist/src/ui/utils/sessionPickerUtils.d.ts +30 -0
- package/dist/src/ui/utils/sessionPickerUtils.js +41 -0
- package/dist/src/ui/utils/sessionPickerUtils.js.map +1 -0
- package/dist/src/ui/utils/sessionPickerUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/sessionPickerUtils.test.js +38 -0
- package/dist/src/ui/utils/sessionPickerUtils.test.js.map +1 -0
- package/dist/src/utils/attentionNotification.d.ts +1 -0
- package/dist/src/utils/attentionNotification.js +4 -0
- package/dist/src/utils/attentionNotification.js.map +1 -1
- package/dist/src/utils/errors.d.ts +1 -1
- package/dist/src/utils/errors.js +14 -3
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +43 -1
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/gitUtils.js +25 -8
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/gitUtils.test.js +59 -0
- package/dist/src/utils/gitUtils.test.js.map +1 -1
- package/dist/src/utils/nonInteractiveHelpers.d.ts +3 -1
- package/dist/src/utils/nonInteractiveHelpers.js +14 -15
- package/dist/src/utils/nonInteractiveHelpers.js.map +1 -1
- package/dist/src/utils/nonInteractiveHelpers.test.js +36 -21
- package/dist/src/utils/nonInteractiveHelpers.test.js.map +1 -1
- package/dist/src/utils/relaunch.js +2 -2
- package/dist/src/utils/relaunch.js.map +1 -1
- package/dist/src/utils/relaunch.test.js +5 -5
- package/dist/src/utils/relaunch.test.js.map +1 -1
- package/dist/src/utils/systemInfo.js +2 -1
- package/dist/src/utils/systemInfo.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.js +10 -1
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/dist/src/nonInteractive/control/controllers/mcpController.d.ts +0 -42
- package/dist/src/nonInteractive/control/controllers/mcpController.js +0 -205
- package/dist/src/nonInteractive/control/controllers/mcpController.js.map +0 -1
- package/dist/src/ui/commands/chatCommand.d.ts +0 -9
- package/dist/src/ui/commands/chatCommand.js +0 -351
- package/dist/src/ui/commands/chatCommand.js.map +0 -1
- package/dist/src/ui/commands/corgiCommand.d.ts +0 -7
- package/dist/src/ui/commands/corgiCommand.js +0 -16
- package/dist/src/ui/commands/corgiCommand.js.map +0 -1
- package/dist/src/ui/components/ProQuotaDialog.d.ts +0 -13
- package/dist/src/ui/components/ProQuotaDialog.js +0 -24
- package/dist/src/ui/components/ProQuotaDialog.js.map +0 -1
- package/dist/src/ui/components/ProQuotaDialog.test.js +0 -58
- package/dist/src/ui/components/ProQuotaDialog.test.js.map +0 -1
- package/dist/src/ui/components/QuitConfirmationDialog.d.ts +0 -17
- package/dist/src/ui/components/QuitConfirmationDialog.js +0 -49
- package/dist/src/ui/components/QuitConfirmationDialog.js.map +0 -1
- package/dist/src/ui/hooks/usePromptCompletion.d.ts +0 -23
- package/dist/src/ui/hooks/usePromptCompletion.js +0 -177
- package/dist/src/ui/hooks/usePromptCompletion.js.map +0 -1
- package/dist/src/ui/hooks/useQuitConfirmation.d.ts +0 -14
- package/dist/src/ui/hooks/useQuitConfirmation.js +0 -36
- package/dist/src/ui/hooks/useQuitConfirmation.js.map +0 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +0 -21
- package/dist/src/ui/hooks/useQuotaAndFallback.js +0 -122
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +0 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +0 -269
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +0 -1
- package/dist/src/zed-integration/acp.js.map +0 -1
- package/dist/src/zed-integration/fileSystemService.js.map +0 -1
- package/dist/src/zed-integration/schema.js.map +0 -1
- package/dist/src/zed-integration/zedIntegration.d.ts +0 -17
- package/dist/src/zed-integration/zedIntegration.js +0 -1135
- package/dist/src/zed-integration/zedIntegration.js.map +0 -1
- /package/dist/src/ui/{components/ProQuotaDialog.test.d.ts → commands/reviewCommand.test.d.ts} +0 -0
|
@@ -63,20 +63,52 @@ export class BaseController {
|
|
|
63
63
|
* Send an outgoing control request to SDK
|
|
64
64
|
*
|
|
65
65
|
* Manages lifecycle: register -> send -> wait for response -> deregister
|
|
66
|
+
* Respects the provided AbortSignal for cancellation.
|
|
66
67
|
*/
|
|
67
|
-
async sendControlRequest(payload, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
68
|
+
async sendControlRequest(payload, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS, signal) {
|
|
69
|
+
// Check if already aborted
|
|
70
|
+
if (signal?.aborted) {
|
|
71
|
+
throw new Error('Request aborted');
|
|
72
|
+
}
|
|
68
73
|
const requestId = randomUUID();
|
|
69
74
|
return new Promise((resolve, reject) => {
|
|
75
|
+
// Setup abort handler
|
|
76
|
+
const abortHandler = () => {
|
|
77
|
+
this.registry.deregisterOutgoingRequest(requestId);
|
|
78
|
+
reject(new Error('Request aborted'));
|
|
79
|
+
if (this.context.debugMode) {
|
|
80
|
+
console.error(`[${this.controllerName}] Outgoing request aborted: ${requestId}`);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
if (signal) {
|
|
84
|
+
signal.addEventListener('abort', abortHandler, { once: true });
|
|
85
|
+
}
|
|
70
86
|
// Setup timeout
|
|
71
87
|
const timeoutId = setTimeout(() => {
|
|
88
|
+
if (signal) {
|
|
89
|
+
signal.removeEventListener('abort', abortHandler);
|
|
90
|
+
}
|
|
72
91
|
this.registry.deregisterOutgoingRequest(requestId);
|
|
73
92
|
reject(new Error('Control request timeout'));
|
|
74
93
|
if (this.context.debugMode) {
|
|
75
94
|
console.error(`[${this.controllerName}] Outgoing request timeout: ${requestId}`);
|
|
76
95
|
}
|
|
77
96
|
}, timeoutMs);
|
|
97
|
+
// Wrap resolve/reject to clean up abort listener
|
|
98
|
+
const wrappedResolve = (response) => {
|
|
99
|
+
if (signal) {
|
|
100
|
+
signal.removeEventListener('abort', abortHandler);
|
|
101
|
+
}
|
|
102
|
+
resolve(response);
|
|
103
|
+
};
|
|
104
|
+
const wrappedReject = (error) => {
|
|
105
|
+
if (signal) {
|
|
106
|
+
signal.removeEventListener('abort', abortHandler);
|
|
107
|
+
}
|
|
108
|
+
reject(error);
|
|
109
|
+
};
|
|
78
110
|
// Register with central registry
|
|
79
|
-
this.registry.registerOutgoingRequest(requestId, this.controllerName,
|
|
111
|
+
this.registry.registerOutgoingRequest(requestId, this.controllerName, wrappedResolve, wrappedReject, timeoutId);
|
|
80
112
|
// Send control request
|
|
81
113
|
const request = {
|
|
82
114
|
type: 'control_request',
|
|
@@ -87,6 +119,9 @@ export class BaseController {
|
|
|
87
119
|
this.context.streamJson.send(request);
|
|
88
120
|
}
|
|
89
121
|
catch (error) {
|
|
122
|
+
if (signal) {
|
|
123
|
+
signal.removeEventListener('abort', abortHandler);
|
|
124
|
+
}
|
|
90
125
|
this.registry.deregisterOutgoingRequest(requestId);
|
|
91
126
|
reject(error);
|
|
92
127
|
}
|
|
@@ -95,8 +130,6 @@ export class BaseController {
|
|
|
95
130
|
/**
|
|
96
131
|
* Cleanup resources
|
|
97
132
|
*/
|
|
98
|
-
cleanup() {
|
|
99
|
-
// Subclasses can override to add cleanup logic
|
|
100
|
-
}
|
|
133
|
+
cleanup() { }
|
|
101
134
|
}
|
|
102
135
|
//# sourceMappingURL=baseController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseController.js","sourceRoot":"","sources":["../../../../../src/nonInteractive/control/controllers/baseController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,MAAM,0BAA0B,GAAG,KAAK,CAAC,CAAC,aAAa;AAwBvD;;;;;GAKG;AACH,MAAM,OAAgB,cAAc;IACxB,OAAO,CAAkB;IACzB,QAAQ,CAA0B;IAClC,cAAc,CAAS;IAEjC,YACE,OAAwB,EACxB,QAAiC,EACjC,cAAsB;QAEtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CACjB,OAA8B,EAC9B,SAAiB;QAEjB,MAAM,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC;QAErD,gBAAgB;QAChB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,sBAAsB,SAAS,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAE/B,iCAAiC;QACjC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CACnC,SAAS,EACT,IAAI,CAAC,cAAc,EACnB,sBAAsB,EACtB,SAAS,CACV,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC9C,OAAO,EACP,sBAAsB,CAAC,MAAM,CAC9B,CAAC;YAEF,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;YAEnD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;YACrB,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"baseController.js","sourceRoot":"","sources":["../../../../../src/nonInteractive/control/controllers/baseController.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,16 +3,6 @@
|
|
|
3
3
|
* Copyright 2025 Qwen Team
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
7
|
-
* Permission Controller
|
|
8
|
-
*
|
|
9
|
-
* Handles permission-related control requests:
|
|
10
|
-
* - can_use_tool: Check if tool usage is allowed
|
|
11
|
-
* - set_permission_mode: Change permission mode at runtime
|
|
12
|
-
*
|
|
13
|
-
* Abstracts all permission logic from the session manager to keep it clean.
|
|
14
|
-
*/
|
|
15
|
-
import type { ToolCallRequestInfo } from '@umsai/ums-code-core';
|
|
16
6
|
import type { ControlRequestPayload, PermissionSuggestion } from '../../types.js';
|
|
17
7
|
import { BaseController } from './baseController.js';
|
|
18
8
|
export declare class PermissionController extends BaseController {
|
|
@@ -20,7 +10,7 @@ export declare class PermissionController extends BaseController {
|
|
|
20
10
|
/**
|
|
21
11
|
* Handle permission control requests
|
|
22
12
|
*/
|
|
23
|
-
protected handleRequestPayload(payload: ControlRequestPayload,
|
|
13
|
+
protected handleRequestPayload(payload: ControlRequestPayload, signal: AbortSignal): Promise<Record<string, unknown>>;
|
|
24
14
|
/**
|
|
25
15
|
* Handle can_use_tool request
|
|
26
16
|
*
|
|
@@ -51,17 +41,6 @@ export declare class PermissionController extends BaseController {
|
|
|
51
41
|
* helping the host application present appropriate permission options.
|
|
52
42
|
*/
|
|
53
43
|
buildPermissionSuggestions(confirmationDetails: unknown): PermissionSuggestion[] | null;
|
|
54
|
-
/**
|
|
55
|
-
* Check if a tool should be executed based on current permission settings
|
|
56
|
-
*
|
|
57
|
-
* This is a convenience method for direct tool execution checks without
|
|
58
|
-
* going through the control request flow.
|
|
59
|
-
*/
|
|
60
|
-
shouldAllowTool(toolRequest: ToolCallRequestInfo, confirmationDetails?: unknown): Promise<{
|
|
61
|
-
allowed: boolean;
|
|
62
|
-
message?: string;
|
|
63
|
-
updatedArgs?: Record<string, unknown>;
|
|
64
|
-
}>;
|
|
65
44
|
/**
|
|
66
45
|
* Get callback for monitoring tool calls and handling outgoing permission requests
|
|
67
46
|
* This is passed to executeToolCall to hook into CoreToolScheduler updates
|
|
@@ -10,12 +10,15 @@ export class PermissionController extends BaseController {
|
|
|
10
10
|
/**
|
|
11
11
|
* Handle permission control requests
|
|
12
12
|
*/
|
|
13
|
-
async handleRequestPayload(payload,
|
|
13
|
+
async handleRequestPayload(payload, signal) {
|
|
14
|
+
if (signal.aborted) {
|
|
15
|
+
throw new Error('Request aborted');
|
|
16
|
+
}
|
|
14
17
|
switch (payload.subtype) {
|
|
15
18
|
case 'can_use_tool':
|
|
16
|
-
return this.handleCanUseTool(payload);
|
|
19
|
+
return this.handleCanUseTool(payload, signal);
|
|
17
20
|
case 'set_permission_mode':
|
|
18
|
-
return this.handleSetPermissionMode(payload);
|
|
21
|
+
return this.handleSetPermissionMode(payload, signal);
|
|
19
22
|
default:
|
|
20
23
|
throw new Error(`Unsupported request subtype in PermissionController`);
|
|
21
24
|
}
|
|
@@ -28,7 +31,10 @@ export class PermissionController extends BaseController {
|
|
|
28
31
|
* - Tool registry validation
|
|
29
32
|
* - Error handling with safe defaults
|
|
30
33
|
*/
|
|
31
|
-
async handleCanUseTool(payload) {
|
|
34
|
+
async handleCanUseTool(payload, signal) {
|
|
35
|
+
if (signal.aborted) {
|
|
36
|
+
throw new Error('Request aborted');
|
|
37
|
+
}
|
|
32
38
|
const toolName = payload.tool_name;
|
|
33
39
|
if (!toolName ||
|
|
34
40
|
typeof toolName !== 'string' ||
|
|
@@ -125,7 +131,10 @@ export class PermissionController extends BaseController {
|
|
|
125
131
|
*
|
|
126
132
|
* Updates the permission mode in the context
|
|
127
133
|
*/
|
|
128
|
-
async handleSetPermissionMode(payload) {
|
|
134
|
+
async handleSetPermissionMode(payload, signal) {
|
|
135
|
+
if (signal.aborted) {
|
|
136
|
+
throw new Error('Request aborted');
|
|
137
|
+
}
|
|
129
138
|
const mode = payload.mode;
|
|
130
139
|
const validModes = [
|
|
131
140
|
'default',
|
|
@@ -137,6 +146,7 @@ export class PermissionController extends BaseController {
|
|
|
137
146
|
throw new Error(`Invalid permission mode: ${mode}. Valid values are: ${validModes.join(', ')}`);
|
|
138
147
|
}
|
|
139
148
|
this.context.permissionMode = mode;
|
|
149
|
+
this.context.config.setApprovalMode(mode);
|
|
140
150
|
if (this.context.debugMode) {
|
|
141
151
|
console.error(`[PermissionController] Permission mode updated to: ${mode}`);
|
|
142
152
|
}
|
|
@@ -246,36 +256,6 @@ export class PermissionController extends BaseController {
|
|
|
246
256
|
];
|
|
247
257
|
}
|
|
248
258
|
}
|
|
249
|
-
/**
|
|
250
|
-
* Check if a tool should be executed based on current permission settings
|
|
251
|
-
*
|
|
252
|
-
* This is a convenience method for direct tool execution checks without
|
|
253
|
-
* going through the control request flow.
|
|
254
|
-
*/
|
|
255
|
-
async shouldAllowTool(toolRequest, confirmationDetails) {
|
|
256
|
-
// Check permission mode
|
|
257
|
-
const modeResult = this.checkPermissionMode();
|
|
258
|
-
if (!modeResult.allowed) {
|
|
259
|
-
return {
|
|
260
|
-
allowed: false,
|
|
261
|
-
message: modeResult.message,
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
// Check tool registry
|
|
265
|
-
const registryResult = this.checkToolRegistry(toolRequest.name);
|
|
266
|
-
if (!registryResult.allowed) {
|
|
267
|
-
return {
|
|
268
|
-
allowed: false,
|
|
269
|
-
message: registryResult.message,
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
// If we have confirmation details, we could potentially modify args
|
|
273
|
-
// This is a hook for future enhancement
|
|
274
|
-
if (confirmationDetails) {
|
|
275
|
-
// Future: handle argument modifications based on confirmation details
|
|
276
|
-
}
|
|
277
|
-
return { allowed: true };
|
|
278
|
-
}
|
|
279
259
|
/**
|
|
280
260
|
* Get callback for monitoring tool calls and handling outgoing permission requests
|
|
281
261
|
* This is passed to executeToolCall to hook into CoreToolScheduler updates
|
|
@@ -305,6 +285,11 @@ export class PermissionController extends BaseController {
|
|
|
305
285
|
*/
|
|
306
286
|
async handleOutgoingPermissionRequest(toolCall) {
|
|
307
287
|
try {
|
|
288
|
+
// Check if already aborted
|
|
289
|
+
if (this.context.abortSignal?.aborted) {
|
|
290
|
+
await toolCall.confirmationDetails.onConfirm(ToolConfirmationOutcome.Cancel);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
308
293
|
const inputFormat = this.context.config.getInputFormat?.();
|
|
309
294
|
const isStreamJsonMode = inputFormat === InputFormat.STREAM_JSON;
|
|
310
295
|
if (!isStreamJsonMode) {
|
|
@@ -325,7 +310,8 @@ export class PermissionController extends BaseController {
|
|
|
325
310
|
input: toolCall.request.args,
|
|
326
311
|
permission_suggestions: permissionSuggestions,
|
|
327
312
|
blocked_path: null,
|
|
328
|
-
},
|
|
313
|
+
}, undefined, // use default timeout
|
|
314
|
+
this.context.abortSignal);
|
|
329
315
|
if (response.subtype !== 'success') {
|
|
330
316
|
await toolCall.confirmationDetails.onConfirm(ToolConfirmationOutcome.Cancel);
|
|
331
317
|
return;
|
|
@@ -341,14 +327,28 @@ export class PermissionController extends BaseController {
|
|
|
341
327
|
await toolCall.confirmationDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce);
|
|
342
328
|
}
|
|
343
329
|
else {
|
|
344
|
-
|
|
330
|
+
// Extract cancel message from response if available
|
|
331
|
+
const cancelMessage = typeof payload['message'] === 'string'
|
|
332
|
+
? payload['message']
|
|
333
|
+
: undefined;
|
|
334
|
+
await toolCall.confirmationDetails.onConfirm(ToolConfirmationOutcome.Cancel, cancelMessage ? { cancelMessage } : undefined);
|
|
345
335
|
}
|
|
346
336
|
}
|
|
347
337
|
catch (error) {
|
|
348
338
|
if (this.context.debugMode) {
|
|
349
339
|
console.error('[PermissionController] Outgoing permission failed:', error);
|
|
350
340
|
}
|
|
351
|
-
|
|
341
|
+
// On error, use default cancel message
|
|
342
|
+
// Only pass payload for exec and mcp types that support it
|
|
343
|
+
const confirmationType = toolCall.confirmationDetails.type;
|
|
344
|
+
if (['edit', 'exec', 'mcp'].includes(confirmationType)) {
|
|
345
|
+
const execOrMcpDetails = toolCall.confirmationDetails;
|
|
346
|
+
await execOrMcpDetails.onConfirm(ToolConfirmationOutcome.Cancel, undefined);
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
// For other types, don't pass payload (backward compatible)
|
|
350
|
+
await toolCall.confirmationDetails.onConfirm(ToolConfirmationOutcome.Cancel);
|
|
351
|
+
}
|
|
352
352
|
}
|
|
353
353
|
finally {
|
|
354
354
|
this.pendingOutgoingRequests.delete(toolCall.request.callId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionController.js","sourceRoot":"","sources":["../../../../../src/nonInteractive/control/controllers/permissionController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"permissionController.js","sourceRoot":"","sources":["../../../../../src/nonInteractive/control/controllers/permissionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* SDK MCP Controller
|
|
8
|
+
*
|
|
9
|
+
* Handles MCP communication between CLI MCP clients and SDK MCP servers:
|
|
10
|
+
* - Provides sendSdkMcpMessage callback for CLI → SDK MCP message routing
|
|
11
|
+
* - mcp_server_status: Returns status of SDK MCP servers
|
|
12
|
+
*
|
|
13
|
+
* Message Flow (CLI MCP Client → SDK MCP Server):
|
|
14
|
+
* CLI MCP Client → SdkControlClientTransport.send() →
|
|
15
|
+
* sendSdkMcpMessage callback → control_request (mcp_message) → SDK →
|
|
16
|
+
* SDK MCP Server processes → control_response → CLI MCP Client
|
|
17
|
+
*/
|
|
18
|
+
import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
19
|
+
import { BaseController } from './baseController.js';
|
|
20
|
+
import type { ControlRequestPayload } from '../../types.js';
|
|
21
|
+
export declare class SdkMcpController extends BaseController {
|
|
22
|
+
/**
|
|
23
|
+
* Handle SDK MCP control requests from ControlDispatcher
|
|
24
|
+
*
|
|
25
|
+
* Note: mcp_message requests are NOT handled here. CLI MCP clients
|
|
26
|
+
* send messages via the sendSdkMcpMessage callback directly, not
|
|
27
|
+
* through the control dispatcher.
|
|
28
|
+
*/
|
|
29
|
+
protected handleRequestPayload(payload: ControlRequestPayload, signal: AbortSignal): Promise<Record<string, unknown>>;
|
|
30
|
+
/**
|
|
31
|
+
* Handle mcp_server_status request
|
|
32
|
+
*
|
|
33
|
+
* Returns status of all registered SDK MCP servers.
|
|
34
|
+
* SDK servers are considered "connected" if they are registered.
|
|
35
|
+
*/
|
|
36
|
+
private handleMcpStatus;
|
|
37
|
+
/**
|
|
38
|
+
* Send MCP message to SDK server via control plane
|
|
39
|
+
*
|
|
40
|
+
* @param serverName - Name of the SDK MCP server
|
|
41
|
+
* @param message - MCP JSON-RPC message to send
|
|
42
|
+
* @returns MCP JSON-RPC response from SDK server
|
|
43
|
+
*/
|
|
44
|
+
private sendMcpMessageToSdk;
|
|
45
|
+
/**
|
|
46
|
+
* Create a callback function for sending MCP messages to SDK servers.
|
|
47
|
+
*
|
|
48
|
+
* This callback is used by McpClientManager/SdkControlClientTransport to send
|
|
49
|
+
* MCP messages from CLI MCP clients to SDK MCP servers via the control plane.
|
|
50
|
+
*
|
|
51
|
+
* @returns A function that sends MCP messages to SDK and returns the response
|
|
52
|
+
*/
|
|
53
|
+
createSendSdkMcpMessage(): (serverName: string, message: JSONRPCMessage) => Promise<JSONRPCMessage>;
|
|
54
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseController } from './baseController.js';
|
|
7
|
+
const MCP_REQUEST_TIMEOUT = 30_000; // 30 seconds
|
|
8
|
+
export class SdkMcpController extends BaseController {
|
|
9
|
+
/**
|
|
10
|
+
* Handle SDK MCP control requests from ControlDispatcher
|
|
11
|
+
*
|
|
12
|
+
* Note: mcp_message requests are NOT handled here. CLI MCP clients
|
|
13
|
+
* send messages via the sendSdkMcpMessage callback directly, not
|
|
14
|
+
* through the control dispatcher.
|
|
15
|
+
*/
|
|
16
|
+
async handleRequestPayload(payload, signal) {
|
|
17
|
+
if (signal.aborted) {
|
|
18
|
+
throw new Error('Request aborted');
|
|
19
|
+
}
|
|
20
|
+
switch (payload.subtype) {
|
|
21
|
+
case 'mcp_server_status':
|
|
22
|
+
return this.handleMcpStatus();
|
|
23
|
+
default:
|
|
24
|
+
throw new Error(`Unsupported request subtype in SdkMcpController`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Handle mcp_server_status request
|
|
29
|
+
*
|
|
30
|
+
* Returns status of all registered SDK MCP servers.
|
|
31
|
+
* SDK servers are considered "connected" if they are registered.
|
|
32
|
+
*/
|
|
33
|
+
async handleMcpStatus() {
|
|
34
|
+
const status = {};
|
|
35
|
+
for (const serverName of this.context.sdkMcpServers) {
|
|
36
|
+
// SDK MCP servers are "connected" once registered since they run in SDK process
|
|
37
|
+
status[serverName] = 'connected';
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
subtype: 'mcp_server_status',
|
|
41
|
+
status,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Send MCP message to SDK server via control plane
|
|
46
|
+
*
|
|
47
|
+
* @param serverName - Name of the SDK MCP server
|
|
48
|
+
* @param message - MCP JSON-RPC message to send
|
|
49
|
+
* @returns MCP JSON-RPC response from SDK server
|
|
50
|
+
*/
|
|
51
|
+
async sendMcpMessageToSdk(serverName, message) {
|
|
52
|
+
if (this.context.debugMode) {
|
|
53
|
+
console.error(`[SdkMcpController] Sending MCP message to SDK server '${serverName}':`, JSON.stringify(message));
|
|
54
|
+
}
|
|
55
|
+
// Send control request to SDK with the MCP message
|
|
56
|
+
const response = await this.sendControlRequest({
|
|
57
|
+
subtype: 'mcp_message',
|
|
58
|
+
server_name: serverName,
|
|
59
|
+
message: message,
|
|
60
|
+
}, MCP_REQUEST_TIMEOUT, this.context.abortSignal);
|
|
61
|
+
// Extract MCP response from control response
|
|
62
|
+
const responsePayload = response.response;
|
|
63
|
+
const mcpResponse = responsePayload?.['mcp_response'];
|
|
64
|
+
if (!mcpResponse) {
|
|
65
|
+
throw new Error(`Invalid MCP response from SDK for server '${serverName}'`);
|
|
66
|
+
}
|
|
67
|
+
if (this.context.debugMode) {
|
|
68
|
+
console.error(`[SdkMcpController] Received MCP response from SDK server '${serverName}':`, JSON.stringify(mcpResponse));
|
|
69
|
+
}
|
|
70
|
+
return mcpResponse;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create a callback function for sending MCP messages to SDK servers.
|
|
74
|
+
*
|
|
75
|
+
* This callback is used by McpClientManager/SdkControlClientTransport to send
|
|
76
|
+
* MCP messages from CLI MCP clients to SDK MCP servers via the control plane.
|
|
77
|
+
*
|
|
78
|
+
* @returns A function that sends MCP messages to SDK and returns the response
|
|
79
|
+
*/
|
|
80
|
+
createSendSdkMcpMessage() {
|
|
81
|
+
return (serverName, message) => this.sendMcpMessageToSdk(serverName, message);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=sdkMcpController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkMcpController.js","sourceRoot":"","sources":["../../../../../src/nonInteractive/control/controllers/sdkMcpController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,aAAa;AAEjD,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAClD;;;;;;OAMG;IACO,KAAK,CAAC,oBAAoB,CAClC,OAA8B,EAC9B,MAAmB;QAEnB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,mBAAmB;gBACtB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAEhC;gBACE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,eAAe;QAC3B,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACpD,gFAAgF;YAChF,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;QACnC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,mBAAmB;YAC5B,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,mBAAmB,CAC/B,UAAkB,EAClB,OAAuB;QAEvB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CACX,yDAAyD,UAAU,IAAI,EACvE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC5C;YACE,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,UAAU;YACvB,OAAO,EAAE,OAAiD;SAC3D,EACD,mBAAmB,EACnB,IAAI,CAAC,OAAO,CAAC,WAAW,CACzB,CAAC;QAEF,6CAA6C;QAC7C,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAmC,CAAC;QACrE,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC,cAAc,CAAmB,CAAC;QAExE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,6CAA6C,UAAU,GAAG,CAC3D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CACX,6DAA6D,UAAU,IAAI,EAC3E,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACH,uBAAuB;QAIrB,OAAO,CAAC,UAAkB,EAAE,OAAuB,EAAE,EAAE,CACrD,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -17,11 +17,14 @@ export declare class SystemController extends BaseController {
|
|
|
17
17
|
/**
|
|
18
18
|
* Handle system control requests
|
|
19
19
|
*/
|
|
20
|
-
protected handleRequestPayload(payload: ControlRequestPayload,
|
|
20
|
+
protected handleRequestPayload(payload: ControlRequestPayload, signal: AbortSignal): Promise<Record<string, unknown>>;
|
|
21
21
|
/**
|
|
22
22
|
* Handle initialize request
|
|
23
23
|
*
|
|
24
|
-
*
|
|
24
|
+
* Processes SDK MCP servers config.
|
|
25
|
+
* SDK servers are registered in context.sdkMcpServers
|
|
26
|
+
* and added to config.mcpServers with the sdk type flag.
|
|
27
|
+
* External MCP servers are configured separately in settings.
|
|
25
28
|
*/
|
|
26
29
|
private handleInitialize;
|
|
27
30
|
/**
|
|
@@ -32,6 +35,9 @@ export declare class SystemController extends BaseController {
|
|
|
32
35
|
* initialize control response.
|
|
33
36
|
*/
|
|
34
37
|
buildControlCapabilities(): Record<string, unknown>;
|
|
38
|
+
private normalizeMcpServerConfig;
|
|
39
|
+
private normalizeAuthProviderType;
|
|
40
|
+
private normalizeOAuthConfig;
|
|
35
41
|
/**
|
|
36
42
|
* Handle interrupt request
|
|
37
43
|
*
|
|
@@ -47,10 +53,14 @@ export declare class SystemController extends BaseController {
|
|
|
47
53
|
/**
|
|
48
54
|
* Handle supported_commands request
|
|
49
55
|
*
|
|
50
|
-
* Returns list of supported
|
|
51
|
-
*
|
|
52
|
-
* Note: This list should match the ControlRequestType enum in
|
|
53
|
-
* packages/sdk/typescript/src/types/controlRequests.ts
|
|
56
|
+
* Returns list of supported slash commands loaded dynamically
|
|
54
57
|
*/
|
|
55
58
|
private handleSupportedCommands;
|
|
59
|
+
/**
|
|
60
|
+
* Load slash command names using getAvailableCommands
|
|
61
|
+
*
|
|
62
|
+
* @param signal - AbortSignal to respect for cancellation
|
|
63
|
+
* @returns Promise resolving to array of slash command names
|
|
64
|
+
*/
|
|
65
|
+
private loadSlashCommandNames;
|
|
56
66
|
}
|