@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
|
@@ -1,51 +1,63 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright 2025
|
|
3
|
+
* Copyright 2025 Qwen team
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { CommandKind } from './types.js';
|
|
7
7
|
import { SettingScope } from '../../config/settings.js';
|
|
8
|
-
import { setLanguageAsync, getCurrentLanguage, t, } from '../../i18n/index.js';
|
|
8
|
+
import { setLanguageAsync, getCurrentLanguage, detectSystemLanguage, getLanguageNameFromLocale, t, } from '../../i18n/index.js';
|
|
9
|
+
import { SUPPORTED_LANGUAGES, } from '../../i18n/languages.js';
|
|
9
10
|
import * as fs from 'node:fs';
|
|
10
11
|
import * as path from 'node:path';
|
|
11
12
|
import { Storage } from '@umsai/ums-code-core';
|
|
12
13
|
const LLM_OUTPUT_LANGUAGE_RULE_FILENAME = 'output-language.md';
|
|
14
|
+
const LLM_OUTPUT_LANGUAGE_MARKER_PREFIX = 'qwen-code:llm-output-language:';
|
|
15
|
+
function parseUiLanguageArg(input) {
|
|
16
|
+
const lowered = input.trim().toLowerCase();
|
|
17
|
+
if (!lowered)
|
|
18
|
+
return null;
|
|
19
|
+
for (const lang of SUPPORTED_LANGUAGES) {
|
|
20
|
+
if (lowered === lang.code ||
|
|
21
|
+
lowered === lang.id.toLowerCase() ||
|
|
22
|
+
lowered === lang.fullName.toLowerCase()) {
|
|
23
|
+
return lang.code;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
function formatUiLanguageDisplay(lang) {
|
|
29
|
+
const option = SUPPORTED_LANGUAGES.find((o) => o.code === lang);
|
|
30
|
+
return option ? `${option.fullName}(${option.id})` : lang;
|
|
31
|
+
}
|
|
32
|
+
function sanitizeLanguageForMarker(language) {
|
|
33
|
+
// HTML comments cannot contain "--" or end markers like "-->" or "--!>" safely.
|
|
34
|
+
// Also avoid newlines to keep the marker single-line and robust to parsing.
|
|
35
|
+
return language
|
|
36
|
+
.replace(/[\r\n]/g, ' ')
|
|
37
|
+
.replace(/--!?>/g, '')
|
|
38
|
+
.replace(/--/g, '');
|
|
39
|
+
}
|
|
13
40
|
/**
|
|
14
41
|
* Generates the LLM output language rule template based on the language name.
|
|
15
42
|
*/
|
|
16
43
|
function generateLlmOutputLanguageRule(language) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
**YOU MUST RESPOND IN ${language.toUpperCase()} FOR EVERY SINGLE OUTPUT, REGARDLESS OF THE USER'S INPUT LANGUAGE.**
|
|
22
|
-
|
|
23
|
-
This is a **NON-NEGOTIABLE** requirement. Even if the user writes in English, says "hi", asks a simple question, or explicitly requests another language, **YOU MUST ALWAYS RESPOND IN ${language.toUpperCase()}.**
|
|
24
|
-
|
|
25
|
-
## What Must Be in ${language}
|
|
44
|
+
const markerLanguage = sanitizeLanguageForMarker(language);
|
|
45
|
+
return `# Output language preference: ${language}
|
|
46
|
+
<!-- ${LLM_OUTPUT_LANGUAGE_MARKER_PREFIX} ${markerLanguage} -->
|
|
26
47
|
|
|
27
|
-
|
|
48
|
+
## Goal
|
|
49
|
+
Prefer responding in **${language}** for normal assistant messages and explanations.
|
|
28
50
|
|
|
29
|
-
|
|
51
|
+
## Keep technical artifacts unchanged
|
|
52
|
+
Do **not** translate or rewrite:
|
|
53
|
+
- Code blocks, CLI commands, file paths, stack traces, logs, JSON keys, identifiers
|
|
54
|
+
- Exact quoted text from the user (keep quotes verbatim)
|
|
30
55
|
|
|
31
|
-
##
|
|
56
|
+
## When a conflict exists
|
|
57
|
+
If higher-priority instructions (system/developer) require a different behavior, follow them.
|
|
32
58
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- Tool result → "已成功读取文件 config.json" (if ${language} is Chinese)
|
|
36
|
-
- Error → "无法找到指定的文件" (if ${language} is Chinese)
|
|
37
|
-
|
|
38
|
-
### ❌ WRONG:
|
|
39
|
-
- User says "hi" → "Hello" in English
|
|
40
|
-
- Tool result → "Successfully read file" in English
|
|
41
|
-
- Error → "File not found" in English
|
|
42
|
-
|
|
43
|
-
## Notes
|
|
44
|
-
|
|
45
|
-
- Code elements (variable/function names, syntax) can remain in English
|
|
46
|
-
- Comments, documentation, and all other text MUST be in ${language}
|
|
47
|
-
|
|
48
|
-
**THIS RULE IS ACTIVE NOW. ALL OUTPUTS MUST BE IN ${language.toUpperCase()}. NO EXCEPTIONS.**
|
|
59
|
+
## Tool / system outputs
|
|
60
|
+
Raw tool/system outputs may contain fixed-format English. Preserve them verbatim, and if needed, add a short **${language}** explanation below.
|
|
49
61
|
`;
|
|
50
62
|
}
|
|
51
63
|
/**
|
|
@@ -54,6 +66,63 @@ This is a **NON-NEGOTIABLE** requirement. Even if the user writes in English, sa
|
|
|
54
66
|
function getLlmOutputLanguageRulePath() {
|
|
55
67
|
return path.join(Storage.getGlobalQwenDir(), LLM_OUTPUT_LANGUAGE_RULE_FILENAME);
|
|
56
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Normalizes a language input to its full English name.
|
|
71
|
+
* If the input is a known locale code (e.g., "ru", "zh"), converts it to the full name.
|
|
72
|
+
* Otherwise, returns the input as-is (e.g., "Japanese" stays "Japanese").
|
|
73
|
+
*/
|
|
74
|
+
function normalizeLanguageName(language) {
|
|
75
|
+
const lowered = language.toLowerCase();
|
|
76
|
+
// Check if it's a known locale code and convert to full name
|
|
77
|
+
const fullName = getLanguageNameFromLocale(lowered);
|
|
78
|
+
// If getLanguageNameFromLocale returned a different value, use it
|
|
79
|
+
// Otherwise, use the original input (preserves case for unknown languages)
|
|
80
|
+
if (fullName !== 'English' || lowered === 'en') {
|
|
81
|
+
return fullName;
|
|
82
|
+
}
|
|
83
|
+
return language;
|
|
84
|
+
}
|
|
85
|
+
function extractLlmOutputLanguageFromRuleFileContent(content) {
|
|
86
|
+
// Preferred: machine-readable marker that supports Unicode and spaces.
|
|
87
|
+
// Example: <!-- qwen-code:llm-output-language: 中文 -->
|
|
88
|
+
const markerMatch = content.match(new RegExp(String.raw `<!--\s*${LLM_OUTPUT_LANGUAGE_MARKER_PREFIX}\s*(.*?)\s*-->`, 'i'));
|
|
89
|
+
if (markerMatch?.[1]) {
|
|
90
|
+
const lang = markerMatch[1].trim();
|
|
91
|
+
if (lang)
|
|
92
|
+
return lang;
|
|
93
|
+
}
|
|
94
|
+
// Backward compatibility: parse the heading line.
|
|
95
|
+
// Example: "# CRITICAL: Chinese Output Language Rule - HIGHEST PRIORITY"
|
|
96
|
+
// Example: "# ⚠️ CRITICAL: 日本語 Output Language Rule - HIGHEST PRIORITY ⚠️"
|
|
97
|
+
const headingMatch = content.match(/^#.*?CRITICAL:\s*(.*?)\s+Output Language Rule\b/im);
|
|
98
|
+
if (headingMatch?.[1]) {
|
|
99
|
+
const lang = headingMatch[1].trim();
|
|
100
|
+
if (lang)
|
|
101
|
+
return lang;
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Initializes the LLM output language rule file on first startup.
|
|
107
|
+
* If the file already exists, it is not overwritten (respects user preference).
|
|
108
|
+
*/
|
|
109
|
+
export function initializeLlmOutputLanguage() {
|
|
110
|
+
const filePath = getLlmOutputLanguageRulePath();
|
|
111
|
+
// Skip if file already exists (user preference)
|
|
112
|
+
if (fs.existsSync(filePath)) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Detect system language and map to language name
|
|
116
|
+
const detectedLocale = detectSystemLanguage();
|
|
117
|
+
const languageName = getLanguageNameFromLocale(detectedLocale);
|
|
118
|
+
// Generate the rule file
|
|
119
|
+
const content = generateLlmOutputLanguageRule(languageName);
|
|
120
|
+
// Ensure directory exists
|
|
121
|
+
const dir = path.dirname(filePath);
|
|
122
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
123
|
+
// Write file
|
|
124
|
+
fs.writeFileSync(filePath, content, 'utf-8');
|
|
125
|
+
}
|
|
57
126
|
/**
|
|
58
127
|
* Gets the current LLM output language from the rule file if it exists.
|
|
59
128
|
*/
|
|
@@ -62,11 +131,7 @@ function getCurrentLlmOutputLanguage() {
|
|
|
62
131
|
if (fs.existsSync(filePath)) {
|
|
63
132
|
try {
|
|
64
133
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
65
|
-
|
|
66
|
-
const match = content.match(/^#\s+(.+?)\s+Response Rules/i);
|
|
67
|
-
if (match) {
|
|
68
|
-
return match[1];
|
|
69
|
-
}
|
|
134
|
+
return extractLlmOutputLanguageFromRuleFileContent(content);
|
|
70
135
|
}
|
|
71
136
|
catch {
|
|
72
137
|
// Ignore errors
|
|
@@ -100,16 +165,11 @@ async function setUiLanguage(context, lang) {
|
|
|
100
165
|
}
|
|
101
166
|
// Reload commands to update their descriptions with the new language
|
|
102
167
|
context.ui.reloadCommands();
|
|
103
|
-
// Map language codes to friendly display names
|
|
104
|
-
const langDisplayNames = {
|
|
105
|
-
zh: '中文(zh-CN)',
|
|
106
|
-
en: 'English(en-US)',
|
|
107
|
-
};
|
|
108
168
|
return {
|
|
109
169
|
type: 'message',
|
|
110
170
|
messageType: 'info',
|
|
111
171
|
content: t('UI language changed to {{lang}}', {
|
|
112
|
-
lang:
|
|
172
|
+
lang: formatUiLanguageDisplay(lang),
|
|
113
173
|
}),
|
|
114
174
|
};
|
|
115
175
|
}
|
|
@@ -119,7 +179,9 @@ async function setUiLanguage(context, lang) {
|
|
|
119
179
|
function generateLlmOutputLanguageRuleFile(language) {
|
|
120
180
|
try {
|
|
121
181
|
const filePath = getLlmOutputLanguageRulePath();
|
|
122
|
-
|
|
182
|
+
// Normalize locale codes (e.g., "ru" -> "Russian") to full language names
|
|
183
|
+
const normalizedLanguage = normalizeLanguageName(language);
|
|
184
|
+
const content = generateLlmOutputLanguageRule(normalizedLanguage);
|
|
123
185
|
// Ensure directory exists
|
|
124
186
|
const dir = path.dirname(filePath);
|
|
125
187
|
fs.mkdirSync(dir, { recursive: true });
|
|
@@ -163,18 +225,30 @@ export const languageCommand = {
|
|
|
163
225
|
};
|
|
164
226
|
}
|
|
165
227
|
const trimmedArgs = args.trim();
|
|
228
|
+
// Handle subcommands if called directly via action (for tests/backward compatibility)
|
|
229
|
+
const parts = trimmedArgs.split(/\s+/);
|
|
230
|
+
const firstArg = parts[0].toLowerCase();
|
|
231
|
+
const subArgs = parts.slice(1).join(' ');
|
|
232
|
+
if (firstArg === 'ui' || firstArg === 'output') {
|
|
233
|
+
const subCommand = languageCommand.subCommands?.find((s) => s.name === firstArg);
|
|
234
|
+
if (subCommand?.action) {
|
|
235
|
+
return subCommand.action(context, subArgs);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
166
238
|
// If no arguments, show current language settings and usage
|
|
167
239
|
if (!trimmedArgs) {
|
|
168
240
|
const currentUiLang = getCurrentLanguage();
|
|
169
241
|
const currentLlmLang = getCurrentLlmOutputLanguage();
|
|
170
242
|
const message = [
|
|
171
|
-
t('Current UI language: {{lang}}', {
|
|
243
|
+
t('Current UI language: {{lang}}', {
|
|
244
|
+
lang: formatUiLanguageDisplay(currentUiLang),
|
|
245
|
+
}),
|
|
172
246
|
currentLlmLang
|
|
173
247
|
? t('Current LLM output language: {{lang}}', { lang: currentLlmLang })
|
|
174
248
|
: t('LLM output language not set'),
|
|
175
249
|
'',
|
|
176
250
|
t('Available subcommands:'),
|
|
177
|
-
` /language ui [
|
|
251
|
+
` /language ui [${SUPPORTED_LANGUAGES.map((o) => o.id).join('|')}] - ${t('Set UI language')}`,
|
|
178
252
|
` /language output <language> - ${t('Set LLM output language')}`,
|
|
179
253
|
].join('\n');
|
|
180
254
|
return {
|
|
@@ -183,93 +257,20 @@ export const languageCommand = {
|
|
|
183
257
|
content: message,
|
|
184
258
|
};
|
|
185
259
|
}
|
|
186
|
-
//
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
if (subcommand === 'ui') {
|
|
190
|
-
// Handle /language ui [zh-CN|en-US]
|
|
191
|
-
if (parts.length === 1) {
|
|
192
|
-
// Show UI language subcommand help
|
|
193
|
-
return {
|
|
194
|
-
type: 'message',
|
|
195
|
-
messageType: 'info',
|
|
196
|
-
content: [
|
|
197
|
-
t('Set UI language'),
|
|
198
|
-
'',
|
|
199
|
-
t('Usage: /language ui [zh-CN|en-US]'),
|
|
200
|
-
'',
|
|
201
|
-
t('Available options:'),
|
|
202
|
-
t(' - zh-CN: Simplified Chinese'),
|
|
203
|
-
t(' - en-US: English'),
|
|
204
|
-
'',
|
|
205
|
-
t('To request additional UI language packs, please open an issue on GitHub.'),
|
|
206
|
-
].join('\n'),
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
const langArg = parts[1].toLowerCase();
|
|
210
|
-
let targetLang = null;
|
|
211
|
-
if (langArg === 'en' || langArg === 'english' || langArg === 'en-us') {
|
|
212
|
-
targetLang = 'en';
|
|
213
|
-
}
|
|
214
|
-
else if (langArg === 'zh' ||
|
|
215
|
-
langArg === 'chinese' ||
|
|
216
|
-
langArg === '中文' ||
|
|
217
|
-
langArg === 'zh-cn') {
|
|
218
|
-
targetLang = 'zh';
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
return {
|
|
222
|
-
type: 'message',
|
|
223
|
-
messageType: 'error',
|
|
224
|
-
content: t('Invalid language. Available: en-US, zh-CN'),
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
return setUiLanguage(context, targetLang);
|
|
228
|
-
}
|
|
229
|
-
else if (subcommand === 'output') {
|
|
230
|
-
// Handle /language output <language>
|
|
231
|
-
if (parts.length === 1) {
|
|
232
|
-
return {
|
|
233
|
-
type: 'message',
|
|
234
|
-
messageType: 'info',
|
|
235
|
-
content: [
|
|
236
|
-
t('Set LLM output language'),
|
|
237
|
-
'',
|
|
238
|
-
t('Usage: /language output <language>'),
|
|
239
|
-
` ${t('Example: /language output 中文')}`,
|
|
240
|
-
].join('\n'),
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
// Join all parts after "output" as the language name
|
|
244
|
-
const language = parts.slice(1).join(' ');
|
|
245
|
-
return generateLlmOutputLanguageRuleFile(language);
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
// Backward compatibility: treat as UI language
|
|
249
|
-
const langArg = trimmedArgs.toLowerCase();
|
|
250
|
-
let targetLang = null;
|
|
251
|
-
if (langArg === 'en' || langArg === 'english' || langArg === 'en-us') {
|
|
252
|
-
targetLang = 'en';
|
|
253
|
-
}
|
|
254
|
-
else if (langArg === 'zh' ||
|
|
255
|
-
langArg === 'chinese' ||
|
|
256
|
-
langArg === '中文' ||
|
|
257
|
-
langArg === 'zh-cn') {
|
|
258
|
-
targetLang = 'zh';
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
return {
|
|
262
|
-
type: 'message',
|
|
263
|
-
messageType: 'error',
|
|
264
|
-
content: [
|
|
265
|
-
t('Invalid command. Available subcommands:'),
|
|
266
|
-
' - /language ui [zh-CN|en-US] - ' + t('Set UI language'),
|
|
267
|
-
' - /language output <language> - ' + t('Set LLM output language'),
|
|
268
|
-
].join('\n'),
|
|
269
|
-
};
|
|
270
|
-
}
|
|
260
|
+
// Handle backward compatibility for /language [lang]
|
|
261
|
+
const targetLang = parseUiLanguageArg(trimmedArgs);
|
|
262
|
+
if (targetLang) {
|
|
271
263
|
return setUiLanguage(context, targetLang);
|
|
272
264
|
}
|
|
265
|
+
return {
|
|
266
|
+
type: 'message',
|
|
267
|
+
messageType: 'error',
|
|
268
|
+
content: [
|
|
269
|
+
t('Invalid command. Available subcommands:'),
|
|
270
|
+
` - /language ui [${SUPPORTED_LANGUAGES.map((o) => o.id).join('|')}] - ${t('Set UI language')}`,
|
|
271
|
+
' - /language output <language> - ' + t('Set LLM output language'),
|
|
272
|
+
].join('\n'),
|
|
273
|
+
};
|
|
273
274
|
},
|
|
274
275
|
subCommands: [
|
|
275
276
|
{
|
|
@@ -287,74 +288,30 @@ export const languageCommand = {
|
|
|
287
288
|
content: [
|
|
288
289
|
t('Set UI language'),
|
|
289
290
|
'',
|
|
290
|
-
t('Usage: /language ui [
|
|
291
|
+
t('Usage: /language ui [{{options}}]', {
|
|
292
|
+
options: SUPPORTED_LANGUAGES.map((o) => o.id).join('|'),
|
|
293
|
+
}),
|
|
291
294
|
'',
|
|
292
295
|
t('Available options:'),
|
|
293
|
-
|
|
294
|
-
t(' - en-US: English'),
|
|
296
|
+
...SUPPORTED_LANGUAGES.map((o) => ` - ${o.id}: ${t(o.fullName)}`),
|
|
295
297
|
'',
|
|
296
298
|
t('To request additional UI language packs, please open an issue on GitHub.'),
|
|
297
299
|
].join('\n'),
|
|
298
300
|
};
|
|
299
301
|
}
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
if (langArg === 'en' || langArg === 'english' || langArg === 'en-us') {
|
|
303
|
-
targetLang = 'en';
|
|
304
|
-
}
|
|
305
|
-
else if (langArg === 'zh' ||
|
|
306
|
-
langArg === 'chinese' ||
|
|
307
|
-
langArg === '中文' ||
|
|
308
|
-
langArg === 'zh-cn') {
|
|
309
|
-
targetLang = 'zh';
|
|
310
|
-
}
|
|
311
|
-
else {
|
|
302
|
+
const targetLang = parseUiLanguageArg(trimmedArgs);
|
|
303
|
+
if (!targetLang) {
|
|
312
304
|
return {
|
|
313
305
|
type: 'message',
|
|
314
306
|
messageType: 'error',
|
|
315
|
-
content: t('Invalid language. Available:
|
|
307
|
+
content: t('Invalid language. Available: {{options}}', {
|
|
308
|
+
options: SUPPORTED_LANGUAGES.map((o) => o.id).join(','),
|
|
309
|
+
}),
|
|
316
310
|
};
|
|
317
311
|
}
|
|
318
312
|
return setUiLanguage(context, targetLang);
|
|
319
313
|
},
|
|
320
|
-
subCommands:
|
|
321
|
-
{
|
|
322
|
-
name: 'zh-CN',
|
|
323
|
-
altNames: ['zh', 'chinese', '中文'],
|
|
324
|
-
get description() {
|
|
325
|
-
return t('Set UI language to Simplified Chinese (zh-CN)');
|
|
326
|
-
},
|
|
327
|
-
kind: CommandKind.BUILT_IN,
|
|
328
|
-
action: async (context, args) => {
|
|
329
|
-
if (args.trim().length > 0) {
|
|
330
|
-
return {
|
|
331
|
-
type: 'message',
|
|
332
|
-
messageType: 'error',
|
|
333
|
-
content: t('Language subcommands do not accept additional arguments.'),
|
|
334
|
-
};
|
|
335
|
-
}
|
|
336
|
-
return setUiLanguage(context, 'zh');
|
|
337
|
-
},
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
name: 'en-US',
|
|
341
|
-
altNames: ['en', 'english'],
|
|
342
|
-
get description() {
|
|
343
|
-
return t('Set UI language to English (en-US)');
|
|
344
|
-
},
|
|
345
|
-
kind: CommandKind.BUILT_IN,
|
|
346
|
-
action: async (context, args) => {
|
|
347
|
-
if (args.trim().length > 0) {
|
|
348
|
-
return {
|
|
349
|
-
type: 'message',
|
|
350
|
-
messageType: 'error',
|
|
351
|
-
content: t('Language subcommands do not accept additional arguments.'),
|
|
352
|
-
};
|
|
353
|
-
}
|
|
354
|
-
return setUiLanguage(context, 'en');
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
],
|
|
314
|
+
subCommands: SUPPORTED_LANGUAGES.map(createUiLanguageSubCommand),
|
|
358
315
|
},
|
|
359
316
|
{
|
|
360
317
|
name: 'output',
|
|
@@ -383,4 +340,26 @@ export const languageCommand = {
|
|
|
383
340
|
},
|
|
384
341
|
],
|
|
385
342
|
};
|
|
343
|
+
/**
|
|
344
|
+
* Helper to create a UI language subcommand.
|
|
345
|
+
*/
|
|
346
|
+
function createUiLanguageSubCommand(option) {
|
|
347
|
+
return {
|
|
348
|
+
name: option.id,
|
|
349
|
+
get description() {
|
|
350
|
+
return t('Set UI language to {{name}}', { name: option.fullName });
|
|
351
|
+
},
|
|
352
|
+
kind: CommandKind.BUILT_IN,
|
|
353
|
+
action: async (context, args) => {
|
|
354
|
+
if (args.trim().length > 0) {
|
|
355
|
+
return {
|
|
356
|
+
type: 'message',
|
|
357
|
+
messageType: 'error',
|
|
358
|
+
content: t('Language subcommands do not accept additional arguments.'),
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
return setUiLanguage(context, option.code);
|
|
362
|
+
},
|
|
363
|
+
};
|
|
364
|
+
}
|
|
386
365
|
//# sourceMappingURL=languageCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languageCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/languageCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"languageCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/languageCommand.ts"],"names":[],"mappings":"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"}
|