@umsai/ums-code 0.3.0-v2 → 0.5.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 +4 -4
- package/dist/src/{zed-integration → acp-integration}/acp.d.ts +7 -0
- package/dist/src/{zed-integration → acp-integration}/acp.js +25 -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 +238 -0
- package/dist/src/acp-integration/acpAgent.js.map +1 -0
- package/dist/src/{zed-integration → acp-integration}/schema.d.ts +1030 -43
- package/dist/src/{zed-integration → acp-integration}/schema.js +81 -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/acp-integration/service/filesystem.test.d.ts +6 -0
- 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 +66 -0
- package/dist/src/acp-integration/session/Session.js +760 -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/config/auth.d.ts +1 -0
- package/dist/src/config/auth.js +3 -0
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +11 -3
- package/dist/src/config/config.js +84 -8
- 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/settingsSchema.d.ts +12 -0
- package/dist/src/config/settingsSchema.js +10 -0
- 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/gemini.js +38 -18
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +7 -0
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/i18n/index.d.ts +1 -1
- package/dist/src/i18n/index.js +4 -0
- package/dist/src/i18n/index.js.map +1 -1
- package/dist/src/i18n/locales/en.js +1 -13
- package/dist/src/i18n/locales/ru.js +1121 -0
- package/dist/src/i18n/locales/zh.js +1 -10
- 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 +189 -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 +54 -2
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.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 +25 -46
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +5 -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/test-utils/mockCommandContext.js +11 -2
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/ui/AppContainer.js +39 -36
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/auth/useAuth.js +20 -1
- package/dist/src/ui/auth/useAuth.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/languageCommand.js +41 -8
- 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 +463 -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/reviewCommand.d.ts +9 -0
- package/dist/src/ui/commands/reviewCommand.js +1267 -0
- package/dist/src/ui/commands/reviewCommand.js.map +1 -0
- package/dist/src/ui/commands/reviewCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/reviewCommand.test.js +545 -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/types.d.ts +4 -9
- 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 +3 -19
- 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/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/ResumeSessionPicker.d.ts +10 -0
- package/dist/src/ui/components/ResumeSessionPicker.js +249 -0
- package/dist/src/ui/components/ResumeSessionPicker.js.map +1 -0
- package/dist/src/ui/components/SessionSummaryDisplay.js +10 -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/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 +23 -3
- 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/UIStateContext.d.ts +1 -3
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -8
- package/dist/src/ui/hooks/slashCommandProcessor.js +68 -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 +49 -9
- package/dist/src/ui/hooks/useGeminiStream.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/useReactToolScheduler.js +2 -2
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- 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 +1 -0
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/models/availableModels.d.ts +8 -2
- package/dist/src/ui/models/availableModels.js +24 -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 +263 -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 +248 -0
- package/dist/src/ui/utils/resumeHistoryUtils.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/gitUtils.js +3 -3
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/nonInteractiveHelpers.js +1 -1
- package/dist/src/utils/nonInteractiveHelpers.js.map +1 -1
- package/dist/src/utils/nonInteractiveHelpers.test.js +1 -1
- package/dist/src/utils/nonInteractiveHelpers.test.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.js +1 -1
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- 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/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/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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UMSKeyPrompt.js","sourceRoot":"","sources":["../../../../../src/ui/components/ums/UMSKeyPrompt.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAOzD,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,GACU;IAClB,gBAAgB;IAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,gBAAgB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"UMSKeyPrompt.js","sourceRoot":"","sources":["../../../../../src/ui/components/ums/UMSKeyPrompt.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 UMS
|
|
4
|
+
*/
|
|
5
|
+
import { AuthType, UmsModelType } from '@umsai/ums-code-core';
|
|
6
|
+
export function getUmsModelWarnings(config) {
|
|
7
|
+
try {
|
|
8
|
+
const umsModelWarnings = [];
|
|
9
|
+
// 如果当前使用的是UMS认证,才检查
|
|
10
|
+
if (!config) {
|
|
11
|
+
return umsModelWarnings;
|
|
12
|
+
}
|
|
13
|
+
const contentGeneratorConfig = config.getContentGeneratorConfig();
|
|
14
|
+
if (!contentGeneratorConfig) {
|
|
15
|
+
return umsModelWarnings;
|
|
16
|
+
}
|
|
17
|
+
const authType = contentGeneratorConfig.authType;
|
|
18
|
+
// 非UMS认证,跳过
|
|
19
|
+
if (!authType || authType !== AuthType.UMS_OAUTH) {
|
|
20
|
+
return umsModelWarnings;
|
|
21
|
+
}
|
|
22
|
+
// 获取插件推荐模型列表
|
|
23
|
+
const pluginModelList = config.getUmsModelList();
|
|
24
|
+
// 获取失败
|
|
25
|
+
if (pluginModelList.length === 0) {
|
|
26
|
+
return umsModelWarnings;
|
|
27
|
+
}
|
|
28
|
+
// 正常
|
|
29
|
+
for (const pluginModel of pluginModelList) {
|
|
30
|
+
// 过滤,只保留聊天-推荐模型
|
|
31
|
+
if (pluginModel && pluginModel.type === UmsModelType.Chat && pluginModel.isDefault) {
|
|
32
|
+
// 比较模型名称是否一致
|
|
33
|
+
if (contentGeneratorConfig.model !== pluginModel.model) {
|
|
34
|
+
const warnMsg = `检测到当前UMS认证使用模型为:【${contentGeneratorConfig.model}】,推荐使用模型:【${pluginModel.model}】,建议使用 /model 或 /auth 命令切换到推荐模型!`;
|
|
35
|
+
console.warn(warnMsg);
|
|
36
|
+
umsModelWarnings.push(warnMsg);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return umsModelWarnings;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.warn(`获取UMS模型列表失败: ${error instanceof Error ? error.message : String(error)}`);
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=umsStartupWarnings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"umsStartupWarnings.js","sourceRoot":"","sources":["../../../../../src/ui/components/ums/umsStartupWarnings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAQ,EAAE,QAAQ,EAAe,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE5E,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,oBAAoB;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,yBAAyB,EAAE,CAAC;QAClE,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC;QACjD,YAAY;QACZ,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;YACjD,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,aAAa;QACb,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAEjD,OAAO;QACP,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,KAAK;QACL,KAAK,MAAM,WAAW,IAAI,eAAe,EAAE,CAAC;YAC1C,gBAAgB;YAChB,IAAG,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,WAAW,CAAC,SAAS,EAAC,CAAC;gBACjF,aAAa;gBACb,IAAG,sBAAsB,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,EAAC,CAAC;oBACrD,MAAM,OAAO,GAAG,oBAAoB,sBAAsB,CAAC,KAAK,aAAa,WAAW,CAAC,KAAK,kCAAkC,CAAC;oBACjI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAEtB,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEvF,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -36,10 +36,12 @@ export interface ComputedSessionStats {
|
|
|
36
36
|
}
|
|
37
37
|
interface SessionStatsContextValue {
|
|
38
38
|
stats: SessionStatsState;
|
|
39
|
+
startNewSession: (sessionId: string) => void;
|
|
39
40
|
startNewPrompt: () => void;
|
|
40
41
|
getPromptCount: () => number;
|
|
41
42
|
}
|
|
42
43
|
export declare const SessionStatsProvider: React.FC<{
|
|
44
|
+
sessionId?: string;
|
|
43
45
|
children: React.ReactNode;
|
|
44
46
|
}>;
|
|
45
47
|
export declare const useSessionStats: () => SessionStatsContextValue;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useCallback, useContext, useState, useMemo, useEffect, } from 'react';
|
|
3
|
-
import { uiTelemetryService
|
|
3
|
+
import { uiTelemetryService } from '@umsai/ums-code-core';
|
|
4
4
|
export var ToolCallDecision;
|
|
5
5
|
(function (ToolCallDecision) {
|
|
6
6
|
ToolCallDecision["ACCEPT"] = "accept";
|
|
@@ -99,15 +99,16 @@ function areMetricsEqual(a, b) {
|
|
|
99
99
|
}
|
|
100
100
|
// --- Context Definition ---
|
|
101
101
|
const SessionStatsContext = createContext(undefined);
|
|
102
|
+
const createDefaultStats = (sessionId = '') => ({
|
|
103
|
+
sessionId,
|
|
104
|
+
sessionStartTime: new Date(),
|
|
105
|
+
metrics: uiTelemetryService.getMetrics(),
|
|
106
|
+
lastPromptTokenCount: 0,
|
|
107
|
+
promptCount: 0,
|
|
108
|
+
});
|
|
102
109
|
// --- Provider Component ---
|
|
103
|
-
export const SessionStatsProvider = ({
|
|
104
|
-
const [stats, setStats] = useState(
|
|
105
|
-
sessionId,
|
|
106
|
-
sessionStartTime: new Date(),
|
|
107
|
-
metrics: uiTelemetryService.getMetrics(),
|
|
108
|
-
lastPromptTokenCount: 0,
|
|
109
|
-
promptCount: 0,
|
|
110
|
-
});
|
|
110
|
+
export const SessionStatsProvider = ({ sessionId, children }) => {
|
|
111
|
+
const [stats, setStats] = useState(() => createDefaultStats(sessionId ?? ''));
|
|
111
112
|
useEffect(() => {
|
|
112
113
|
const handleUpdate = ({ metrics, lastPromptTokenCount, }) => {
|
|
113
114
|
setStats((prevState) => {
|
|
@@ -132,6 +133,12 @@ export const SessionStatsProvider = ({ children, }) => {
|
|
|
132
133
|
uiTelemetryService.off('update', handleUpdate);
|
|
133
134
|
};
|
|
134
135
|
}, []);
|
|
136
|
+
const startNewSession = useCallback((sessionId) => {
|
|
137
|
+
setStats(() => ({
|
|
138
|
+
...createDefaultStats(sessionId),
|
|
139
|
+
lastPromptTokenCount: uiTelemetryService.getLastPromptTokenCount(),
|
|
140
|
+
}));
|
|
141
|
+
}, []);
|
|
135
142
|
const startNewPrompt = useCallback(() => {
|
|
136
143
|
setStats((prevState) => ({
|
|
137
144
|
...prevState,
|
|
@@ -141,9 +148,10 @@ export const SessionStatsProvider = ({ children, }) => {
|
|
|
141
148
|
const getPromptCount = useCallback(() => stats.promptCount, [stats.promptCount]);
|
|
142
149
|
const value = useMemo(() => ({
|
|
143
150
|
stats,
|
|
151
|
+
startNewSession,
|
|
144
152
|
startNewPrompt,
|
|
145
153
|
getPromptCount,
|
|
146
|
-
}), [stats, startNewPrompt, getPromptCount]);
|
|
154
|
+
}), [stats, startNewSession, startNewPrompt, getPromptCount]);
|
|
147
155
|
return (_jsx(SessionStatsContext.Provider, { value: value, children: children }));
|
|
148
156
|
};
|
|
149
157
|
// --- Consumer Hook ---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/SessionContext.tsx"],"names":[],"mappings":";AAOA,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,GACV,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"SessionContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/SessionContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import type { HistoryItem, ThoughtSummary, ConsoleMessageItem, ShellConfirmationRequest, ConfirmationRequest, LoopDetectionConfirmationRequest,
|
|
6
|
+
import type { HistoryItem, ThoughtSummary, ConsoleMessageItem, ShellConfirmationRequest, ConfirmationRequest, LoopDetectionConfirmationRequest, HistoryItemWithoutId, StreamingState } from '../types.js';
|
|
7
7
|
import type { QwenAuthState } from '../hooks/useQwenAuth.js';
|
|
8
8
|
import type { CommandContext, SlashCommand } from '../commands/types.js';
|
|
9
9
|
import type { TextBuffer } from '../components/shared/text-buffer.js';
|
|
@@ -32,7 +32,6 @@ export interface UIState {
|
|
|
32
32
|
qwenAuthState: QwenAuthState;
|
|
33
33
|
editorError: string | null;
|
|
34
34
|
isEditorDialogOpen: boolean;
|
|
35
|
-
corgiMode: boolean;
|
|
36
35
|
debugMessage: string;
|
|
37
36
|
quittingMessages: HistoryItem[] | null;
|
|
38
37
|
isSettingsDialogOpen: boolean;
|
|
@@ -46,7 +45,6 @@ export interface UIState {
|
|
|
46
45
|
confirmationRequest: ConfirmationRequest | null;
|
|
47
46
|
confirmUpdateExtensionRequests: ConfirmationRequest[];
|
|
48
47
|
loopDetectionConfirmationRequest: LoopDetectionConfirmationRequest | null;
|
|
49
|
-
quitConfirmationRequest: QuitConfirmationRequest | null;
|
|
50
48
|
geminiMdFileCount: number;
|
|
51
49
|
streamingState: StreamingState;
|
|
52
50
|
initError: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIStateContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/UIStateContext.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UIStateContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/UIStateContext.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAiClD,OAAO,EAAgC,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAsB,MAAM,iCAAiC,CAAC;AAmGrE,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAiB,IAAI,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { type PartListUnion } from '@google/genai';
|
|
7
7
|
import type { UseHistoryManagerReturn } from './useHistoryManager.js';
|
|
8
|
-
import type
|
|
9
|
-
import { ToolConfirmationOutcome } from '@umsai/ums-code-core';
|
|
8
|
+
import { type Logger, type Config, ToolConfirmationOutcome } from '@umsai/ums-code-core';
|
|
10
9
|
import type { HistoryItemWithoutId, SlashCommandProcessorResult, HistoryItem, ConfirmationRequest } from '../types.js';
|
|
11
10
|
import type { LoadedSettings } from '../../config/settings.js';
|
|
12
11
|
import { type CommandContext, type SlashCommand } from '../commands/types.js';
|
|
@@ -21,17 +20,15 @@ interface SlashCommandProcessorActions {
|
|
|
21
20
|
openApprovalModeDialog: () => void;
|
|
22
21
|
quit: (messages: HistoryItem[]) => void;
|
|
23
22
|
setDebugMessage: (message: string) => void;
|
|
24
|
-
toggleCorgiMode: () => void;
|
|
25
23
|
dispatchExtensionStateUpdate: (action: ExtensionUpdateAction) => void;
|
|
26
24
|
addConfirmUpdateExtensionRequest: (request: ConfirmationRequest) => void;
|
|
27
25
|
openSubagentCreateDialog: () => void;
|
|
28
26
|
openAgentsManagerDialog: () => void;
|
|
29
|
-
_showQuitConfirmation: () => void;
|
|
30
27
|
}
|
|
31
28
|
/**
|
|
32
29
|
* Hook to define and process slash commands (e.g., /help, /clear).
|
|
33
30
|
*/
|
|
34
|
-
export declare const useSlashCommandProcessor: (config: Config | null, settings: LoadedSettings, addItem: UseHistoryManagerReturn["addItem"], clearItems: UseHistoryManagerReturn["clearItems"], loadHistory: UseHistoryManagerReturn["loadHistory"], refreshStatic: () => void, toggleVimEnabled: () => Promise<boolean>, setIsProcessing: (isProcessing: boolean) => void, setGeminiMdFileCount: (count: number) => void, actions: SlashCommandProcessorActions, extensionsUpdateState: Map<string, ExtensionUpdateStatus>, isConfigInitialized: boolean) => {
|
|
31
|
+
export declare const useSlashCommandProcessor: (config: Config | null, settings: LoadedSettings, addItem: UseHistoryManagerReturn["addItem"], clearItems: UseHistoryManagerReturn["clearItems"], loadHistory: UseHistoryManagerReturn["loadHistory"], refreshStatic: () => void, toggleVimEnabled: () => Promise<boolean>, setIsProcessing: (isProcessing: boolean) => void, setGeminiMdFileCount: (count: number) => void, actions: SlashCommandProcessorActions, extensionsUpdateState: Map<string, ExtensionUpdateStatus>, isConfigInitialized: boolean, logger: Logger | null) => {
|
|
35
32
|
handleSlashCommand: (rawQuery: PartListUnion, oneTimeShellAllowlist?: Set<string>, overwriteConfirmed?: boolean) => Promise<SlashCommandProcessorResult | false>;
|
|
36
33
|
slashCommands: readonly SlashCommand[];
|
|
37
34
|
pendingHistoryItems: HistoryItemWithoutId[];
|
|
@@ -44,8 +41,5 @@ export declare const useSlashCommandProcessor: (config: Config | null, settings:
|
|
|
44
41
|
prompt: React.ReactNode;
|
|
45
42
|
onConfirm: (confirmed: boolean) => void;
|
|
46
43
|
} | null;
|
|
47
|
-
quitConfirmationRequest: {
|
|
48
|
-
onConfirm: (shouldQuit: boolean, action?: string) => void;
|
|
49
|
-
} | null;
|
|
50
44
|
};
|
|
51
45
|
export {};
|
|
@@ -5,10 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { useCallback, useMemo, useEffect, useState } from 'react';
|
|
7
7
|
import {} from '@google/genai';
|
|
8
|
-
import
|
|
9
|
-
import { GitService, Logger, logSlashCommand, makeSlashCommandEvent, SlashCommandStatus, ToolConfirmationOutcome, Storage, IdeClient, trackSlashCommandEvent, } from '@umsai/ums-code-core';
|
|
8
|
+
import { GitService, logSlashCommand, makeSlashCommandEvent, SlashCommandStatus, ToolConfirmationOutcome, IdeClient, trackSlashCommandEvent, } from '@umsai/ums-code-core';
|
|
10
9
|
import { useSessionStats } from '../contexts/SessionContext.js';
|
|
11
|
-
import { formatDuration } from '../utils/formatters.js';
|
|
12
10
|
import { MessageType } from '../types.js';
|
|
13
11
|
import {} from '../commands/types.js';
|
|
14
12
|
import { CommandService } from '../../services/CommandService.js';
|
|
@@ -17,11 +15,25 @@ import { FileCommandLoader } from '../../services/FileCommandLoader.js';
|
|
|
17
15
|
import { McpPromptLoader } from '../../services/McpPromptLoader.js';
|
|
18
16
|
import { parseSlashCommand } from '../../utils/commands.js';
|
|
19
17
|
import {} from '../state/extensions.js';
|
|
18
|
+
function serializeHistoryItemForRecording(item) {
|
|
19
|
+
const clone = { ...item };
|
|
20
|
+
if ('timestamp' in clone && clone['timestamp'] instanceof Date) {
|
|
21
|
+
clone['timestamp'] = clone['timestamp'].toISOString();
|
|
22
|
+
}
|
|
23
|
+
return clone;
|
|
24
|
+
}
|
|
25
|
+
const SLASH_COMMANDS_SKIP_RECORDING = new Set([
|
|
26
|
+
'quit',
|
|
27
|
+
'exit',
|
|
28
|
+
'clear',
|
|
29
|
+
'reset',
|
|
30
|
+
'new',
|
|
31
|
+
]);
|
|
20
32
|
/**
|
|
21
33
|
* Hook to define and process slash commands (e.g., /help, /clear).
|
|
22
34
|
*/
|
|
23
|
-
export const useSlashCommandProcessor = (config, settings, addItem, clearItems, loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, setGeminiMdFileCount, actions, extensionsUpdateState, isConfigInitialized) => {
|
|
24
|
-
const
|
|
35
|
+
export const useSlashCommandProcessor = (config, settings, addItem, clearItems, loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, setGeminiMdFileCount, actions, extensionsUpdateState, isConfigInitialized, logger) => {
|
|
36
|
+
const { stats: sessionStats, startNewSession } = useSessionStats();
|
|
25
37
|
const [commands, setCommands] = useState([]);
|
|
26
38
|
const [reloadTrigger, setReloadTrigger] = useState(0);
|
|
27
39
|
const reloadCommands = useCallback(() => {
|
|
@@ -29,7 +41,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
29
41
|
}, []);
|
|
30
42
|
const [shellConfirmationRequest, setShellConfirmationRequest] = useState(null);
|
|
31
43
|
const [confirmationRequest, setConfirmationRequest] = useState(null);
|
|
32
|
-
const [quitConfirmationRequest, setQuitConfirmationRequest] = useState(null);
|
|
33
44
|
const [sessionShellAllowlist, setSessionShellAllowlist] = useState(new Set());
|
|
34
45
|
const gitService = useMemo(() => {
|
|
35
46
|
if (!config?.getProjectRoot()) {
|
|
@@ -37,12 +48,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
37
48
|
}
|
|
38
49
|
return new GitService(config.getProjectRoot(), config.storage);
|
|
39
50
|
}, [config]);
|
|
40
|
-
const logger = useMemo(() => {
|
|
41
|
-
const l = new Logger(config?.getSessionId() || '', config?.storage ?? new Storage(process.cwd()));
|
|
42
|
-
// The logger's initialize is async, but we can create the instance
|
|
43
|
-
// synchronously. Commands that use it will await its initialization.
|
|
44
|
-
return l;
|
|
45
|
-
}, [config]);
|
|
46
51
|
const [pendingItem, setPendingItem] = useState(null);
|
|
47
52
|
const pendingHistoryItems = useMemo(() => {
|
|
48
53
|
const items = [];
|
|
@@ -88,12 +93,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
88
93
|
duration: message.duration,
|
|
89
94
|
};
|
|
90
95
|
}
|
|
91
|
-
else if (message.type === MessageType.QUIT_CONFIRMATION) {
|
|
92
|
-
historyItemContent = {
|
|
93
|
-
type: 'quit_confirmation',
|
|
94
|
-
duration: message.duration,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
96
|
else if (message.type === MessageType.COMPRESSION) {
|
|
98
97
|
historyItemContent = {
|
|
99
98
|
type: 'compression',
|
|
@@ -132,7 +131,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
132
131
|
setDebugMessage: actions.setDebugMessage,
|
|
133
132
|
pendingItem,
|
|
134
133
|
setPendingItem,
|
|
135
|
-
toggleCorgiMode: actions.toggleCorgiMode,
|
|
136
134
|
toggleVimEnabled,
|
|
137
135
|
setGeminiMdFileCount,
|
|
138
136
|
reloadCommands,
|
|
@@ -141,8 +139,9 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
141
139
|
addConfirmUpdateExtensionRequest: actions.addConfirmUpdateExtensionRequest,
|
|
142
140
|
},
|
|
143
141
|
session: {
|
|
144
|
-
stats:
|
|
142
|
+
stats: sessionStats,
|
|
145
143
|
sessionShellAllowlist,
|
|
144
|
+
startNewSession,
|
|
146
145
|
},
|
|
147
146
|
}), [
|
|
148
147
|
config,
|
|
@@ -153,7 +152,8 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
153
152
|
addItem,
|
|
154
153
|
clearItems,
|
|
155
154
|
refreshStatic,
|
|
156
|
-
|
|
155
|
+
sessionStats,
|
|
156
|
+
startNewSession,
|
|
157
157
|
actions,
|
|
158
158
|
pendingItem,
|
|
159
159
|
setPendingItem,
|
|
@@ -171,17 +171,13 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
171
171
|
reloadCommands();
|
|
172
172
|
};
|
|
173
173
|
(async () => {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
ideClient.addStatusChangeListener(listener);
|
|
177
|
-
}
|
|
174
|
+
const ideClient = await IdeClient.getInstance();
|
|
175
|
+
ideClient.addStatusChangeListener(listener);
|
|
178
176
|
})();
|
|
179
177
|
return () => {
|
|
180
178
|
(async () => {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
ideClient.removeStatusChangeListener(listener);
|
|
184
|
-
}
|
|
179
|
+
const ideClient = await IdeClient.getInstance();
|
|
180
|
+
ideClient.removeStatusChangeListener(listener);
|
|
185
181
|
})();
|
|
186
182
|
};
|
|
187
183
|
}, [config, reloadCommands]);
|
|
@@ -194,7 +190,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
194
190
|
new FileCommandLoader(config),
|
|
195
191
|
];
|
|
196
192
|
const commandService = await CommandService.create(loaders, controller.signal);
|
|
197
|
-
// 获取所有命令
|
|
198
193
|
setCommands(commandService.getCommands());
|
|
199
194
|
};
|
|
200
195
|
load();
|
|
@@ -202,7 +197,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
202
197
|
controller.abort();
|
|
203
198
|
};
|
|
204
199
|
}, [config, reloadTrigger, isConfigInitialized]);
|
|
205
|
-
// 处理 /xxx 命令
|
|
206
200
|
const handleSlashCommand = useCallback(async (rawQuery, oneTimeShellAllowlist, overwriteConfirmed) => {
|
|
207
201
|
if (typeof rawQuery !== 'string') {
|
|
208
202
|
return false;
|
|
@@ -211,9 +205,17 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
211
205
|
if (!trimmed.startsWith('/') && !trimmed.startsWith('?')) {
|
|
212
206
|
return false;
|
|
213
207
|
}
|
|
208
|
+
const recordedItems = [];
|
|
209
|
+
const recordItem = (item) => {
|
|
210
|
+
recordedItems.push(item);
|
|
211
|
+
};
|
|
212
|
+
const addItemWithRecording = (item, timestamp) => {
|
|
213
|
+
recordItem(item);
|
|
214
|
+
return addItem(item, timestamp);
|
|
215
|
+
};
|
|
214
216
|
setIsProcessing(true);
|
|
215
217
|
const userMessageTimestamp = Date.now();
|
|
216
|
-
|
|
218
|
+
addItemWithRecording({ type: MessageType.USER, text: trimmed }, userMessageTimestamp);
|
|
217
219
|
let hasError = false;
|
|
218
220
|
const { commandToExecute, args, canonicalPath: resolvedCommandPath, } = parseSlashCommand(trimmed, commands);
|
|
219
221
|
const subcommand = resolvedCommandPath.length > 1
|
|
@@ -237,6 +239,10 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
237
239
|
}
|
|
238
240
|
const fullCommandContext = {
|
|
239
241
|
...commandContext,
|
|
242
|
+
ui: {
|
|
243
|
+
...commandContext.ui,
|
|
244
|
+
addItem: addItemWithRecording,
|
|
245
|
+
},
|
|
240
246
|
invocation: {
|
|
241
247
|
raw: trimmed,
|
|
242
248
|
name: commandToExecute.name,
|
|
@@ -256,7 +262,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
256
262
|
};
|
|
257
263
|
}
|
|
258
264
|
const result = await commandToExecute.action(fullCommandContext, args);
|
|
259
|
-
// 命令执行-结果
|
|
260
265
|
if (result) {
|
|
261
266
|
switch (result.type) {
|
|
262
267
|
case 'tool':
|
|
@@ -326,70 +331,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
326
331
|
});
|
|
327
332
|
return { type: 'handled' };
|
|
328
333
|
}
|
|
329
|
-
case 'quit_confirmation':
|
|
330
|
-
// Show quit confirmation dialog instead of immediately quitting
|
|
331
|
-
setQuitConfirmationRequest({
|
|
332
|
-
onConfirm: (shouldQuit, action) => {
|
|
333
|
-
setQuitConfirmationRequest(null);
|
|
334
|
-
if (!shouldQuit) {
|
|
335
|
-
// User cancelled the quit operation - do nothing
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
if (shouldQuit) {
|
|
339
|
-
if (action === 'save_and_quit') {
|
|
340
|
-
// First save conversation with auto-generated tag, then quit
|
|
341
|
-
const timestamp = new Date()
|
|
342
|
-
.toISOString()
|
|
343
|
-
.replace(/[:.]/g, '-');
|
|
344
|
-
const autoSaveTag = `auto-save chat ${timestamp}`;
|
|
345
|
-
handleSlashCommand(`/chat save "${autoSaveTag}"`);
|
|
346
|
-
setTimeout(() => handleSlashCommand('/quit'), 100);
|
|
347
|
-
}
|
|
348
|
-
else if (action === 'summary_and_quit') {
|
|
349
|
-
// Generate summary and then quit
|
|
350
|
-
handleSlashCommand('/summary')
|
|
351
|
-
.then(() => {
|
|
352
|
-
// Wait for user to see the summary result
|
|
353
|
-
setTimeout(() => {
|
|
354
|
-
handleSlashCommand('/quit');
|
|
355
|
-
}, 1200);
|
|
356
|
-
})
|
|
357
|
-
.catch((error) => {
|
|
358
|
-
// If summary fails, still quit but show error
|
|
359
|
-
addItem({
|
|
360
|
-
type: 'error',
|
|
361
|
-
text: `Failed to generate summary before quit: ${error instanceof Error
|
|
362
|
-
? error.message
|
|
363
|
-
: String(error)}`,
|
|
364
|
-
}, Date.now());
|
|
365
|
-
// Give user time to see the error message
|
|
366
|
-
setTimeout(() => {
|
|
367
|
-
handleSlashCommand('/quit');
|
|
368
|
-
}, 1000);
|
|
369
|
-
});
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
// Just quit immediately - trigger the actual quit action
|
|
373
|
-
const now = Date.now();
|
|
374
|
-
const { sessionStartTime } = session.stats;
|
|
375
|
-
const wallDuration = now - sessionStartTime.getTime();
|
|
376
|
-
actions.quit([
|
|
377
|
-
{
|
|
378
|
-
type: 'user',
|
|
379
|
-
text: `/quit`,
|
|
380
|
-
id: now - 1,
|
|
381
|
-
},
|
|
382
|
-
{
|
|
383
|
-
type: 'quit',
|
|
384
|
-
duration: formatDuration(wallDuration),
|
|
385
|
-
id: now,
|
|
386
|
-
},
|
|
387
|
-
]);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
},
|
|
391
|
-
});
|
|
392
|
-
return { type: 'handled' };
|
|
393
334
|
case 'quit':
|
|
394
335
|
actions.quit(result.messages);
|
|
395
336
|
return { type: 'handled' };
|
|
@@ -434,7 +375,7 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
434
375
|
});
|
|
435
376
|
});
|
|
436
377
|
if (!confirmed) {
|
|
437
|
-
|
|
378
|
+
addItemWithRecording({
|
|
438
379
|
type: MessageType.INFO,
|
|
439
380
|
text: 'Operation cancelled.',
|
|
440
381
|
}, Date.now());
|
|
@@ -479,13 +420,41 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
479
420
|
});
|
|
480
421
|
logSlashCommand(config, event);
|
|
481
422
|
}
|
|
482
|
-
|
|
423
|
+
addItemWithRecording({
|
|
483
424
|
type: MessageType.ERROR,
|
|
484
425
|
text: e instanceof Error ? e.message : String(e),
|
|
485
426
|
}, Date.now());
|
|
486
427
|
return { type: 'handled' };
|
|
487
428
|
}
|
|
488
429
|
finally {
|
|
430
|
+
if (config?.getChatRecordingService) {
|
|
431
|
+
const chatRecorder = config.getChatRecordingService();
|
|
432
|
+
const primaryCommand = resolvedCommandPath[0] ||
|
|
433
|
+
trimmed.replace(/^[/?]/, '').split(/\s+/)[0] ||
|
|
434
|
+
trimmed;
|
|
435
|
+
const shouldRecord = !SLASH_COMMANDS_SKIP_RECORDING.has(primaryCommand);
|
|
436
|
+
try {
|
|
437
|
+
if (shouldRecord) {
|
|
438
|
+
chatRecorder?.recordSlashCommand({
|
|
439
|
+
phase: 'invocation',
|
|
440
|
+
rawCommand: trimmed,
|
|
441
|
+
});
|
|
442
|
+
const outputItems = recordedItems
|
|
443
|
+
.filter((item) => item.type !== 'user')
|
|
444
|
+
.map(serializeHistoryItemForRecording);
|
|
445
|
+
chatRecorder?.recordSlashCommand({
|
|
446
|
+
phase: 'result',
|
|
447
|
+
rawCommand: trimmed,
|
|
448
|
+
outputHistoryItems: outputItems,
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
catch (recordError) {
|
|
453
|
+
if (config.getDebugMode()) {
|
|
454
|
+
console.error('[slashCommand] Failed to record slash command:', recordError);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
489
458
|
if (config && resolvedCommandPath[0] && !hasError) {
|
|
490
459
|
const event = makeSlashCommandEvent({
|
|
491
460
|
command: resolvedCommandPath[0],
|
|
@@ -507,7 +476,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
507
476
|
setSessionShellAllowlist,
|
|
508
477
|
setIsProcessing,
|
|
509
478
|
setConfirmationRequest,
|
|
510
|
-
session.stats,
|
|
511
479
|
]);
|
|
512
480
|
return {
|
|
513
481
|
handleSlashCommand,
|
|
@@ -516,7 +484,6 @@ export const useSlashCommandProcessor = (config, settings, addItem, clearItems,
|
|
|
516
484
|
commandContext,
|
|
517
485
|
shellConfirmationRequest,
|
|
518
486
|
confirmationRequest,
|
|
519
|
-
quitConfirmationRequest,
|
|
520
487
|
};
|
|
521
488
|
};
|
|
522
489
|
//# sourceMappingURL=slashCommandProcessor.js.map
|