@umsai/ums-code 0.1.4-v2 → 0.3.0-v2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +11 -3
- package/dist/src/config/config.d.ts +6 -0
- package/dist/src/config/config.js +102 -11
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/settings.d.ts +5 -0
- package/dist/src/config/settings.js +15 -1
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +75 -17
- package/dist/src/config/settingsSchema.js +57 -17
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/webSearch.d.ts +35 -0
- package/dist/src/config/webSearch.js +87 -0
- package/dist/src/config/webSearch.js.map +1 -0
- package/dist/src/core/auth.d.ts +1 -1
- package/dist/src/core/auth.js +19 -3
- package/dist/src/core/auth.js.map +1 -1
- package/dist/src/core/initializer.js +13 -2
- package/dist/src/core/initializer.js.map +1 -1
- package/dist/src/core/theme.js +4 -1
- package/dist/src/core/theme.js.map +1 -1
- package/dist/src/gemini.d.ts +1 -1
- package/dist/src/gemini.js +53 -44
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +117 -0
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/i18n/index.d.ts +18 -0
- package/dist/src/i18n/index.js +184 -0
- package/dist/src/i18n/index.js.map +1 -0
- package/dist/src/i18n/locales/en.js +1129 -0
- package/dist/src/i18n/locales/zh.js +1052 -0
- package/dist/src/nonInteractive/control/ControlContext.d.ts +63 -0
- package/dist/src/nonInteractive/control/ControlContext.js +31 -0
- package/dist/src/nonInteractive/control/ControlContext.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.d.ts +86 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.js +238 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.d.ts +6 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.js +549 -0
- package/dist/src/nonInteractive/control/ControlDispatcher.test.js.map +1 -0
- package/dist/src/nonInteractive/control/ControlService.d.ts +78 -0
- package/dist/src/nonInteractive/control/ControlService.js +154 -0
- package/dist/src/nonInteractive/control/ControlService.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/baseController.d.ts +50 -0
- package/dist/src/nonInteractive/control/controllers/baseController.js +102 -0
- package/dist/src/nonInteractive/control/controllers/baseController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/hookController.d.ts +25 -0
- package/dist/src/nonInteractive/control/controllers/hookController.js +42 -0
- package/dist/src/nonInteractive/control/controllers/hookController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/mcpController.d.ts +42 -0
- package/dist/src/nonInteractive/control/controllers/mcpController.js +205 -0
- package/dist/src/nonInteractive/control/controllers/mcpController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.d.ts +78 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.js +358 -0
- package/dist/src/nonInteractive/control/controllers/permissionController.js.map +1 -0
- package/dist/src/nonInteractive/control/controllers/systemController.d.ts +56 -0
- package/dist/src/nonInteractive/control/controllers/systemController.js +166 -0
- package/dist/src/nonInteractive/control/controllers/systemController.js.map +1 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.d.ts +120 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.js +7 -0
- package/dist/src/nonInteractive/control/types/serviceAPIs.js.map +1 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.d.ts +446 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js +891 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js +1197 -0
- package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.d.ts +29 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.js +56 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js +624 -0
- package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.d.ts +16 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.js +54 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js +178 -0
- package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.d.ts +69 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js +185 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js.map +1 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.d.ts +6 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js +808 -0
- package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js.map +1 -0
- package/dist/src/nonInteractive/session.d.ts +23 -0
- package/dist/src/nonInteractive/session.js +549 -0
- package/dist/src/nonInteractive/session.js.map +1 -0
- package/dist/src/nonInteractive/session.test.d.ts +6 -0
- package/dist/src/nonInteractive/session.test.js +407 -0
- package/dist/src/nonInteractive/session.test.js.map +1 -0
- package/dist/src/nonInteractive/types.d.ts +344 -0
- package/dist/src/nonInteractive/types.js +78 -0
- package/dist/src/nonInteractive/types.js.map +1 -0
- package/dist/src/nonInteractiveCli.d.ts +21 -1
- package/dist/src/nonInteractiveCli.js +204 -57
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCliCommands.d.ts +19 -1
- package/dist/src/nonInteractiveCliCommands.js +69 -4
- package/dist/src/nonInteractiveCliCommands.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +2 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/FileCommandLoader.js +4 -1
- package/dist/src/services/FileCommandLoader.js.map +1 -1
- package/dist/src/ui/AppContainer.js +41 -38
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.d.ts +1 -13
- package/dist/src/ui/auth/AuthDialog.js +41 -111
- package/dist/src/ui/auth/AuthDialog.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +49 -19
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/AuthInProgress.js +2 -1
- package/dist/src/ui/auth/AuthInProgress.js.map +1 -1
- package/dist/src/ui/auth/useAuth.d.ts +9 -8
- package/dist/src/ui/auth/useAuth.js +135 -63
- package/dist/src/ui/auth/useAuth.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +7 -31
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/agentsCommand.js +10 -3
- package/dist/src/ui/commands/agentsCommand.js.map +1 -1
- package/dist/src/ui/commands/approvalModeCommand.js +8 -329
- package/dist/src/ui/commands/approvalModeCommand.js.map +1 -1
- package/dist/src/ui/commands/approvalModeCommand.test.js +19 -263
- package/dist/src/ui/commands/approvalModeCommand.test.js.map +1 -1
- package/dist/src/ui/commands/authCommand.js +4 -1
- package/dist/src/ui/commands/authCommand.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.js +13 -47
- package/dist/src/ui/commands/bugCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +51 -25
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +6 -3
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/compressCommand.js +9 -4
- package/dist/src/ui/commands/compressCommand.js.map +1 -1
- package/dist/src/ui/commands/copyCommand.js +4 -1
- package/dist/src/ui/commands/copyCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.js +30 -12
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/commands/docsCommand.js +9 -3
- package/dist/src/ui/commands/docsCommand.js.map +1 -1
- package/dist/src/ui/commands/editorCommand.js +4 -1
- package/dist/src/ui/commands/editorCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +10 -3
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/helpCommand.js +4 -1
- package/dist/src/ui/commands/helpCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +23 -7
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/initCommand.js +5 -3
- package/dist/src/ui/commands/initCommand.js.map +1 -1
- package/dist/src/ui/commands/languageCommand.d.ts +7 -0
- package/dist/src/ui/commands/languageCommand.js +386 -0
- package/dist/src/ui/commands/languageCommand.js.map +1 -0
- package/dist/src/ui/commands/mcpCommand.js +38 -18
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +54 -25
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.js +9 -4
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/permissionsCommand.js +4 -1
- package/dist/src/ui/commands/permissionsCommand.js.map +1 -1
- package/dist/src/ui/commands/quitCommand.js +7 -2
- package/dist/src/ui/commands/quitCommand.js.map +1 -1
- package/dist/src/ui/commands/settingsCommand.js +4 -1
- package/dist/src/ui/commands/settingsCommand.js.map +1 -1
- package/dist/src/ui/commands/setupGithubCommand.js +4 -1
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.js +11 -4
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/summaryCommand.js +15 -8
- package/dist/src/ui/commands/summaryCommand.js.map +1 -1
- package/dist/src/ui/commands/terminalSetupCommand.js +9 -3
- package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -1
- package/dist/src/ui/commands/themeCommand.js +4 -1
- package/dist/src/ui/commands/themeCommand.js.map +1 -1
- package/dist/src/ui/commands/toolsCommand.js +5 -2
- package/dist/src/ui/commands/toolsCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +1 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/commands/vimCommand.js +4 -1
- package/dist/src/ui/commands/vimCommand.js.map +1 -1
- package/dist/src/ui/components/AboutBox.d.ts +2 -9
- package/dist/src/ui/components/AboutBox.js +6 -2
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/ApprovalModeDialog.d.ts +21 -0
- package/dist/src/ui/components/ApprovalModeDialog.js +68 -0
- package/dist/src/ui/components/ApprovalModeDialog.js.map +1 -0
- package/dist/src/ui/components/AutoAcceptIndicator.js +7 -6
- package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/components/Composer.js +4 -3
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/ConfigInitDisplay.js +7 -3
- package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextSummaryDisplay.js +33 -9
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +60 -13
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/EditorSettingsDialog.js +8 -3
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/Help.js +14 -4
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +17 -8
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +10 -136
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +6 -1
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.js +2 -1
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.js +6 -5
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/OpenAIKeyPrompt.d.ts +19 -1
- package/dist/src/ui/components/OpenAIKeyPrompt.js +38 -6
- package/dist/src/ui/components/OpenAIKeyPrompt.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.js +5 -4
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/QuitConfirmationDialog.js +6 -5
- package/dist/src/ui/components/QuitConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/QwenOAuthProgress.d.ts +2 -2
- package/dist/src/ui/components/QwenOAuthProgress.js +14 -7
- package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -1
- package/dist/src/ui/components/QwenOAuthProgress.test.js +1 -0
- package/dist/src/ui/components/QwenOAuthProgress.test.js.map +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js +2 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
- package/dist/src/ui/components/SettingsDialog.js +35 -12
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +5 -4
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.js +5 -4
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.js +5 -4
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +5 -2
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ToolStatsDisplay.js +3 -2
- package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/WelcomeBackDialog.js +13 -4
- package/dist/src/ui/components/WelcomeBackDialog.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.js +10 -6
- package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +40 -29
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSelectionList.test.js +1 -1
- package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -1
- package/dist/src/ui/components/shared/ScopeSelector.js +3 -1
- package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +39 -26
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +1 -1
- package/dist/src/ui/components/subagents/create/CreationSummary.js +20 -10
- package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -1
- package/dist/src/ui/components/subagents/create/DescriptionInput.js +6 -3
- package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +1 -1
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +7 -2
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/LocationSelector.js +7 -2
- package/dist/src/ui/components/subagents/create/LocationSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/ToolSelector.js +8 -7
- package/dist/src/ui/components/subagents/create/ToolSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +29 -4
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js +6 -3
- package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js +14 -5
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +13 -6
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentViewerStep.js +3 -2
- package/dist/src/ui/components/subagents/manage/AgentViewerStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +14 -13
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +1 -1
- package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +8 -8
- package/dist/src/ui/components/views/McpStatus.js +28 -15
- package/dist/src/ui/components/views/McpStatus.js.map +1 -1
- package/dist/src/ui/components/views/ToolsList.js +2 -1
- package/dist/src/ui/components/views/ToolsList.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +5 -4
- package/dist/src/ui/contexts/UIActionsContext.js +1 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +5 -7
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/editors/editorSettingsManager.js +1 -0
- package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js +2 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -0
- package/dist/src/ui/hooks/slashCommandProcessor.js +4 -7
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useApprovalModeCommand.d.ts +14 -0
- package/dist/src/ui/hooks/useApprovalModeCommand.js +33 -0
- package/dist/src/ui/hooks/useApprovalModeCommand.js.map +1 -0
- package/dist/src/ui/hooks/useAttentionNotifications.d.ts +14 -0
- package/dist/src/ui/hooks/useAttentionNotifications.js +41 -0
- package/dist/src/ui/hooks/useAttentionNotifications.js.map +1 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.d.ts +6 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.js +113 -0
- package/dist/src/ui/hooks/useAttentionNotifications.test.js.map +1 -0
- package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -4
- package/dist/src/ui/hooks/useCommandCompletion.js +1 -23
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useDialogClose.d.ts +6 -3
- package/dist/src/ui/hooks/useDialogClose.js +5 -0
- package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.js +6 -3
- package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.test.js +39 -21
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
- package/dist/src/ui/hooks/useInitializationAuthError.d.ts +22 -0
- package/dist/src/ui/hooks/useInitializationAuthError.js +40 -0
- package/dist/src/ui/hooks/useInitializationAuthError.js.map +1 -0
- package/dist/src/ui/hooks/usePhraseCycler.js +6 -4
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/useQwenAuth.d.ts +7 -12
- package/dist/src/ui/hooks/useQwenAuth.js +4 -8
- package/dist/src/ui/hooks/useQwenAuth.js.map +1 -1
- package/dist/src/ui/hooks/useQwenAuth.test.js +72 -98
- package/dist/src/ui/hooks/useQwenAuth.test.js.map +1 -1
- package/dist/src/ui/hooks/useThemeCommand.js +8 -3
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
- package/dist/src/ui/models/availableModels.js +7 -2
- package/dist/src/ui/models/availableModels.js.map +1 -1
- package/dist/src/ui/types.d.ts +32 -14
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.js +3 -3
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.d.ts +16 -0
- package/dist/src/ui/utils/commandUtils.js +16 -1
- package/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.test.js +5 -2
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
- package/dist/src/ui/utils/terminalSetup.js +45 -18
- package/dist/src/ui/utils/terminalSetup.js.map +1 -1
- package/dist/src/utils/attentionNotification.d.ts +20 -0
- package/dist/src/utils/attentionNotification.js +34 -0
- package/dist/src/utils/attentionNotification.js.map +1 -0
- package/dist/src/utils/attentionNotification.test.d.ts +6 -0
- package/dist/src/utils/attentionNotification.test.js +46 -0
- package/dist/src/utils/attentionNotification.test.js.map +1 -0
- package/dist/src/utils/dialogScopeUtils.d.ts +0 -4
- package/dist/src/utils/dialogScopeUtils.js +5 -2
- package/dist/src/utils/dialogScopeUtils.js.map +1 -1
- package/dist/src/utils/errors.d.ts +10 -2
- package/dist/src/utils/errors.js +14 -13
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +91 -54
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/nonInteractiveHelpers.d.ts +88 -0
- package/dist/src/utils/nonInteractiveHelpers.js +470 -0
- package/dist/src/utils/nonInteractiveHelpers.js.map +1 -0
- package/dist/src/utils/nonInteractiveHelpers.test.d.ts +6 -0
- package/dist/src/utils/nonInteractiveHelpers.test.js +945 -0
- package/dist/src/utils/nonInteractiveHelpers.test.js.map +1 -0
- package/dist/src/utils/sandbox.js +1 -1
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.js +7 -1
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/systemInfo.d.ts +66 -0
- package/dist/src/utils/systemInfo.js +125 -0
- package/dist/src/utils/systemInfo.js.map +1 -0
- package/dist/src/utils/systemInfo.test.d.ts +6 -0
- package/dist/src/utils/systemInfo.test.js +259 -0
- package/dist/src/utils/systemInfo.test.js.map +1 -0
- package/dist/src/utils/systemInfoFields.d.ts +22 -0
- package/dist/src/utils/systemInfoFields.js +96 -0
- package/dist/src/utils/systemInfoFields.js.map +1 -0
- package/dist/src/utils/userStartupWarnings.js +9 -4
- package/dist/src/utils/userStartupWarnings.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.js +27 -6
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/zed-integration/acp.js +1 -2
- package/dist/src/zed-integration/acp.js.map +1 -1
- package/dist/src/zed-integration/schema.d.ts +506 -264
- package/dist/src/zed-integration/schema.js +13 -0
- package/dist/src/zed-integration/schema.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.js +376 -32
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -4
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Readable } from 'node:stream';
|
|
7
|
+
import type { CLIControlRequest, CLIControlResponse, CLIMessage, ControlCancelRequest } from '../types.js';
|
|
8
|
+
export type StreamJsonInputMessage = CLIMessage | CLIControlRequest | CLIControlResponse | ControlCancelRequest;
|
|
9
|
+
export declare class StreamJsonParseError extends Error {
|
|
10
|
+
}
|
|
11
|
+
export declare class StreamJsonInputReader {
|
|
12
|
+
private readonly input;
|
|
13
|
+
constructor(input?: Readable);
|
|
14
|
+
read(): AsyncGenerator<StreamJsonInputMessage>;
|
|
15
|
+
private parse;
|
|
16
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { createInterface } from 'node:readline/promises';
|
|
7
|
+
import process from 'node:process';
|
|
8
|
+
export class StreamJsonParseError extends Error {
|
|
9
|
+
}
|
|
10
|
+
export class StreamJsonInputReader {
|
|
11
|
+
input;
|
|
12
|
+
constructor(input = process.stdin) {
|
|
13
|
+
this.input = input;
|
|
14
|
+
}
|
|
15
|
+
async *read() {
|
|
16
|
+
const rl = createInterface({
|
|
17
|
+
input: this.input,
|
|
18
|
+
crlfDelay: Number.POSITIVE_INFINITY,
|
|
19
|
+
terminal: false,
|
|
20
|
+
});
|
|
21
|
+
try {
|
|
22
|
+
for await (const rawLine of rl) {
|
|
23
|
+
const line = rawLine.trim();
|
|
24
|
+
if (!line) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
yield this.parse(line);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
rl.close();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
parse(line) {
|
|
35
|
+
try {
|
|
36
|
+
const parsed = JSON.parse(line);
|
|
37
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
38
|
+
throw new StreamJsonParseError('Parsed value is not an object');
|
|
39
|
+
}
|
|
40
|
+
if (!('type' in parsed) || typeof parsed.type !== 'string') {
|
|
41
|
+
throw new StreamJsonParseError('Missing required "type" field');
|
|
42
|
+
}
|
|
43
|
+
return parsed;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (error instanceof StreamJsonParseError) {
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
50
|
+
throw new StreamJsonParseError(`Failed to parse stream-json line: ${reason}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=StreamJsonInputReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamJsonInputReader.js","sourceRoot":"","sources":["../../../../src/nonInteractive/io/StreamJsonInputReader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,OAAO,MAAM,cAAc,CAAC;AAcnC,MAAM,OAAO,oBAAqB,SAAQ,KAAK;CAAG;AAElD,MAAM,OAAO,qBAAqB;IACf,KAAK,CAAW;IAEjC,YAAY,QAAkB,OAAO,CAAC,KAAK;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,CAAC,IAAI;QACT,MAAM,EAAE,GAAG,eAAe,CAAC;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,MAAM,CAAC,iBAAiB;YACnC,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,EAAE,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAY;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA2B,CAAC;YAC1D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,MAAM,IAAI,oBAAoB,CAAC,+BAA+B,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3D,MAAM,IAAI,oBAAoB,CAAC,+BAA+B,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,IAAI,oBAAoB,CAC5B,qCAAqC,MAAM,EAAE,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { PassThrough } from 'node:stream';
|
|
7
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
8
|
+
import { StreamJsonInputReader, StreamJsonParseError, } from './StreamJsonInputReader.js';
|
|
9
|
+
describe('StreamJsonInputReader', () => {
|
|
10
|
+
afterEach(() => {
|
|
11
|
+
vi.restoreAllMocks();
|
|
12
|
+
});
|
|
13
|
+
describe('read', () => {
|
|
14
|
+
/**
|
|
15
|
+
* Test parsing all supported message types in a single test
|
|
16
|
+
*/
|
|
17
|
+
it('should parse valid messages of all types', async () => {
|
|
18
|
+
const input = new PassThrough();
|
|
19
|
+
const reader = new StreamJsonInputReader(input);
|
|
20
|
+
const messages = [
|
|
21
|
+
{
|
|
22
|
+
type: 'user',
|
|
23
|
+
session_id: 'test-session',
|
|
24
|
+
message: {
|
|
25
|
+
role: 'user',
|
|
26
|
+
content: [{ type: 'text', text: 'hello world' }],
|
|
27
|
+
},
|
|
28
|
+
parent_tool_use_id: null,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
type: 'control_request',
|
|
32
|
+
request_id: 'req-1',
|
|
33
|
+
request: { subtype: 'initialize' },
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
type: 'control_response',
|
|
37
|
+
response: {
|
|
38
|
+
subtype: 'success',
|
|
39
|
+
request_id: 'req-1',
|
|
40
|
+
response: { initialized: true },
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'control_cancel_request',
|
|
45
|
+
request_id: 'req-1',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
for (const msg of messages) {
|
|
49
|
+
input.write(JSON.stringify(msg) + '\n');
|
|
50
|
+
}
|
|
51
|
+
input.end();
|
|
52
|
+
const parsed = [];
|
|
53
|
+
for await (const msg of reader.read()) {
|
|
54
|
+
parsed.push(msg);
|
|
55
|
+
}
|
|
56
|
+
expect(parsed).toHaveLength(messages.length);
|
|
57
|
+
expect(parsed).toEqual(messages);
|
|
58
|
+
});
|
|
59
|
+
it('should parse multiple messages', async () => {
|
|
60
|
+
const input = new PassThrough();
|
|
61
|
+
const reader = new StreamJsonInputReader(input);
|
|
62
|
+
const message1 = {
|
|
63
|
+
type: 'control_request',
|
|
64
|
+
request_id: 'req-1',
|
|
65
|
+
request: { subtype: 'initialize' },
|
|
66
|
+
};
|
|
67
|
+
const message2 = {
|
|
68
|
+
type: 'user',
|
|
69
|
+
session_id: 'test-session',
|
|
70
|
+
message: {
|
|
71
|
+
role: 'user',
|
|
72
|
+
content: [{ type: 'text', text: 'hello' }],
|
|
73
|
+
},
|
|
74
|
+
parent_tool_use_id: null,
|
|
75
|
+
};
|
|
76
|
+
input.write(JSON.stringify(message1) + '\n');
|
|
77
|
+
input.write(JSON.stringify(message2) + '\n');
|
|
78
|
+
input.end();
|
|
79
|
+
const messages = [];
|
|
80
|
+
for await (const msg of reader.read()) {
|
|
81
|
+
messages.push(msg);
|
|
82
|
+
}
|
|
83
|
+
expect(messages).toHaveLength(2);
|
|
84
|
+
expect(messages[0]).toEqual(message1);
|
|
85
|
+
expect(messages[1]).toEqual(message2);
|
|
86
|
+
});
|
|
87
|
+
it('should skip empty lines and trim whitespace', async () => {
|
|
88
|
+
const input = new PassThrough();
|
|
89
|
+
const reader = new StreamJsonInputReader(input);
|
|
90
|
+
const message = {
|
|
91
|
+
type: 'user',
|
|
92
|
+
session_id: 'test-session',
|
|
93
|
+
message: {
|
|
94
|
+
role: 'user',
|
|
95
|
+
content: [{ type: 'text', text: 'hello' }],
|
|
96
|
+
},
|
|
97
|
+
parent_tool_use_id: null,
|
|
98
|
+
};
|
|
99
|
+
input.write('\n');
|
|
100
|
+
input.write(' ' + JSON.stringify(message) + ' \n');
|
|
101
|
+
input.write(' \n');
|
|
102
|
+
input.write('\t\n');
|
|
103
|
+
input.end();
|
|
104
|
+
const messages = [];
|
|
105
|
+
for await (const msg of reader.read()) {
|
|
106
|
+
messages.push(msg);
|
|
107
|
+
}
|
|
108
|
+
expect(messages).toHaveLength(1);
|
|
109
|
+
expect(messages[0]).toEqual(message);
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* Consolidated error handling test cases
|
|
113
|
+
*/
|
|
114
|
+
it.each([
|
|
115
|
+
{
|
|
116
|
+
name: 'invalid JSON',
|
|
117
|
+
input: '{"invalid": json}\n',
|
|
118
|
+
expectedError: 'Failed to parse stream-json line',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: 'missing type field',
|
|
122
|
+
input: JSON.stringify({ session_id: 'test-session', message: 'hello' }) +
|
|
123
|
+
'\n',
|
|
124
|
+
expectedError: 'Missing required "type" field',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'non-object value (string)',
|
|
128
|
+
input: '"just a string"\n',
|
|
129
|
+
expectedError: 'Parsed value is not an object',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'non-object value (null)',
|
|
133
|
+
input: 'null\n',
|
|
134
|
+
expectedError: 'Parsed value is not an object',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: 'array value',
|
|
138
|
+
input: '[1, 2, 3]\n',
|
|
139
|
+
expectedError: 'Missing required "type" field',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'type field not a string',
|
|
143
|
+
input: JSON.stringify({ type: 123, session_id: 'test-session' }) + '\n',
|
|
144
|
+
expectedError: 'Missing required "type" field',
|
|
145
|
+
},
|
|
146
|
+
])('should throw StreamJsonParseError for $name', async ({ input: inputLine, expectedError }) => {
|
|
147
|
+
const input = new PassThrough();
|
|
148
|
+
const reader = new StreamJsonInputReader(input);
|
|
149
|
+
input.write(inputLine);
|
|
150
|
+
input.end();
|
|
151
|
+
const messages = [];
|
|
152
|
+
let error;
|
|
153
|
+
try {
|
|
154
|
+
for await (const msg of reader.read()) {
|
|
155
|
+
messages.push(msg);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
error = e;
|
|
160
|
+
}
|
|
161
|
+
expect(messages).toHaveLength(0);
|
|
162
|
+
expect(error).toBeInstanceOf(StreamJsonParseError);
|
|
163
|
+
expect(error.message).toContain(expectedError);
|
|
164
|
+
});
|
|
165
|
+
it('should use process.stdin as default input', () => {
|
|
166
|
+
const reader = new StreamJsonInputReader();
|
|
167
|
+
// Access private field for testing constructor default parameter
|
|
168
|
+
expect(reader.input).toBe(process.stdin);
|
|
169
|
+
});
|
|
170
|
+
it('should use provided input stream', () => {
|
|
171
|
+
const customInput = new PassThrough();
|
|
172
|
+
const reader = new StreamJsonInputReader(customInput);
|
|
173
|
+
// Access private field for testing constructor parameter
|
|
174
|
+
expect(reader.input).toBe(customInput);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=StreamJsonInputReader.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamJsonInputReader.test.js","sourceRoot":"","sources":["../../../../src/nonInteractive/io/StreamJsonInputReader.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Config } from '@umsai/ums-code-core';
|
|
7
|
+
import type { CLIAssistantMessage, CLIMessage, ControlMessage, TextBlock, ThinkingBlock, ToolUseBlock } from '../types.js';
|
|
8
|
+
import { BaseJsonOutputAdapter, type MessageState, type ResultOptions, type JsonOutputAdapterInterface } from './BaseJsonOutputAdapter.js';
|
|
9
|
+
/**
|
|
10
|
+
* Stream JSON output adapter that emits messages immediately
|
|
11
|
+
* as they are completed during the streaming process.
|
|
12
|
+
* Supports both main agent and subagent messages through distinct APIs.
|
|
13
|
+
*/
|
|
14
|
+
export declare class StreamJsonOutputAdapter extends BaseJsonOutputAdapter implements JsonOutputAdapterInterface {
|
|
15
|
+
private readonly includePartialMessages;
|
|
16
|
+
constructor(config: Config, includePartialMessages: boolean);
|
|
17
|
+
/**
|
|
18
|
+
* Emits message immediately to stdout (stream mode).
|
|
19
|
+
*/
|
|
20
|
+
protected emitMessageImpl(message: CLIMessage | ControlMessage): void;
|
|
21
|
+
/**
|
|
22
|
+
* Stream mode emits stream events when includePartialMessages is enabled.
|
|
23
|
+
*/
|
|
24
|
+
protected shouldEmitStreamEvents(): boolean;
|
|
25
|
+
finalizeAssistantMessage(): CLIAssistantMessage;
|
|
26
|
+
emitResult(options: ResultOptions): void;
|
|
27
|
+
emitMessage(message: CLIMessage | ControlMessage): void;
|
|
28
|
+
send(message: CLIMessage | ControlMessage): void;
|
|
29
|
+
/**
|
|
30
|
+
* Overrides base class hook to emit stream event when text block is created.
|
|
31
|
+
*/
|
|
32
|
+
protected onTextBlockCreated(state: MessageState, index: number, block: TextBlock, parentToolUseId: string | null): void;
|
|
33
|
+
/**
|
|
34
|
+
* Overrides base class hook to emit stream event when text is appended.
|
|
35
|
+
*/
|
|
36
|
+
protected onTextAppended(state: MessageState, index: number, fragment: string, parentToolUseId: string | null): void;
|
|
37
|
+
/**
|
|
38
|
+
* Overrides base class hook to emit stream event when thinking block is created.
|
|
39
|
+
*/
|
|
40
|
+
protected onThinkingBlockCreated(state: MessageState, index: number, block: ThinkingBlock, parentToolUseId: string | null): void;
|
|
41
|
+
/**
|
|
42
|
+
* Overrides base class hook to emit stream event when thinking is appended.
|
|
43
|
+
*/
|
|
44
|
+
protected onThinkingAppended(state: MessageState, index: number, fragment: string, parentToolUseId: string | null): void;
|
|
45
|
+
/**
|
|
46
|
+
* Overrides base class hook to emit stream event when tool_use block is created.
|
|
47
|
+
*/
|
|
48
|
+
protected onToolUseBlockCreated(state: MessageState, index: number, block: ToolUseBlock, parentToolUseId: string | null): void;
|
|
49
|
+
/**
|
|
50
|
+
* Overrides base class hook to emit stream event when tool_use input is set.
|
|
51
|
+
*/
|
|
52
|
+
protected onToolUseInputSet(state: MessageState, index: number, input: unknown, parentToolUseId: string | null): void;
|
|
53
|
+
/**
|
|
54
|
+
* Overrides base class hook to emit stream event when block is closed.
|
|
55
|
+
*/
|
|
56
|
+
protected onBlockClosed(state: MessageState, index: number, parentToolUseId: string | null): void;
|
|
57
|
+
/**
|
|
58
|
+
* Overrides base class hook to emit message_start event when message is started.
|
|
59
|
+
* Only emits for main agent, not for subagents.
|
|
60
|
+
*/
|
|
61
|
+
protected onEnsureMessageStarted(state: MessageState, parentToolUseId: string | null): void;
|
|
62
|
+
/**
|
|
63
|
+
* Emits stream events when partial messages are enabled.
|
|
64
|
+
* This is a private method specific to StreamJsonOutputAdapter.
|
|
65
|
+
* @param event - Stream event to emit
|
|
66
|
+
* @param parentToolUseId - null for main agent, string for subagent
|
|
67
|
+
*/
|
|
68
|
+
private emitStreamEventIfEnabled;
|
|
69
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Qwen Team
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { randomUUID } from 'node:crypto';
|
|
7
|
+
import { BaseJsonOutputAdapter, } from './BaseJsonOutputAdapter.js';
|
|
8
|
+
/**
|
|
9
|
+
* Stream JSON output adapter that emits messages immediately
|
|
10
|
+
* as they are completed during the streaming process.
|
|
11
|
+
* Supports both main agent and subagent messages through distinct APIs.
|
|
12
|
+
*/
|
|
13
|
+
export class StreamJsonOutputAdapter extends BaseJsonOutputAdapter {
|
|
14
|
+
includePartialMessages;
|
|
15
|
+
constructor(config, includePartialMessages) {
|
|
16
|
+
super(config);
|
|
17
|
+
this.includePartialMessages = includePartialMessages;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Emits message immediately to stdout (stream mode).
|
|
21
|
+
*/
|
|
22
|
+
emitMessageImpl(message) {
|
|
23
|
+
// Track assistant messages for result generation
|
|
24
|
+
if (typeof message === 'object' &&
|
|
25
|
+
message !== null &&
|
|
26
|
+
'type' in message &&
|
|
27
|
+
message.type === 'assistant') {
|
|
28
|
+
this.updateLastAssistantMessage(message);
|
|
29
|
+
}
|
|
30
|
+
// Emit messages immediately in stream mode
|
|
31
|
+
process.stdout.write(`${JSON.stringify(message)}\n`);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Stream mode emits stream events when includePartialMessages is enabled.
|
|
35
|
+
*/
|
|
36
|
+
shouldEmitStreamEvents() {
|
|
37
|
+
return this.includePartialMessages;
|
|
38
|
+
}
|
|
39
|
+
finalizeAssistantMessage() {
|
|
40
|
+
const state = this.mainAgentMessageState;
|
|
41
|
+
if (state.finalized) {
|
|
42
|
+
return this.buildMessage(null);
|
|
43
|
+
}
|
|
44
|
+
state.finalized = true;
|
|
45
|
+
this.finalizePendingBlocks(state, null);
|
|
46
|
+
const orderedOpenBlocks = Array.from(state.openBlocks).sort((a, b) => a - b);
|
|
47
|
+
for (const index of orderedOpenBlocks) {
|
|
48
|
+
this.onBlockClosed(state, index, null);
|
|
49
|
+
this.closeBlock(state, index);
|
|
50
|
+
}
|
|
51
|
+
if (state.messageStarted && this.includePartialMessages) {
|
|
52
|
+
this.emitStreamEventIfEnabled({ type: 'message_stop' }, null);
|
|
53
|
+
}
|
|
54
|
+
const message = this.buildMessage(null);
|
|
55
|
+
this.updateLastAssistantMessage(message);
|
|
56
|
+
this.emitMessageImpl(message);
|
|
57
|
+
return message;
|
|
58
|
+
}
|
|
59
|
+
emitResult(options) {
|
|
60
|
+
const resultMessage = this.buildResultMessage(options, this.lastAssistantMessage);
|
|
61
|
+
this.emitMessageImpl(resultMessage);
|
|
62
|
+
}
|
|
63
|
+
emitMessage(message) {
|
|
64
|
+
// In stream mode, emit immediately
|
|
65
|
+
this.emitMessageImpl(message);
|
|
66
|
+
}
|
|
67
|
+
send(message) {
|
|
68
|
+
this.emitMessage(message);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Overrides base class hook to emit stream event when text block is created.
|
|
72
|
+
*/
|
|
73
|
+
onTextBlockCreated(state, index, block, parentToolUseId) {
|
|
74
|
+
this.emitStreamEventIfEnabled({
|
|
75
|
+
type: 'content_block_start',
|
|
76
|
+
index,
|
|
77
|
+
content_block: block,
|
|
78
|
+
}, parentToolUseId);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Overrides base class hook to emit stream event when text is appended.
|
|
82
|
+
*/
|
|
83
|
+
onTextAppended(state, index, fragment, parentToolUseId) {
|
|
84
|
+
this.emitStreamEventIfEnabled({
|
|
85
|
+
type: 'content_block_delta',
|
|
86
|
+
index,
|
|
87
|
+
delta: { type: 'text_delta', text: fragment },
|
|
88
|
+
}, parentToolUseId);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Overrides base class hook to emit stream event when thinking block is created.
|
|
92
|
+
*/
|
|
93
|
+
onThinkingBlockCreated(state, index, block, parentToolUseId) {
|
|
94
|
+
this.emitStreamEventIfEnabled({
|
|
95
|
+
type: 'content_block_start',
|
|
96
|
+
index,
|
|
97
|
+
content_block: block,
|
|
98
|
+
}, parentToolUseId);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Overrides base class hook to emit stream event when thinking is appended.
|
|
102
|
+
*/
|
|
103
|
+
onThinkingAppended(state, index, fragment, parentToolUseId) {
|
|
104
|
+
this.emitStreamEventIfEnabled({
|
|
105
|
+
type: 'content_block_delta',
|
|
106
|
+
index,
|
|
107
|
+
delta: { type: 'thinking_delta', thinking: fragment },
|
|
108
|
+
}, parentToolUseId);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Overrides base class hook to emit stream event when tool_use block is created.
|
|
112
|
+
*/
|
|
113
|
+
onToolUseBlockCreated(state, index, block, parentToolUseId) {
|
|
114
|
+
this.emitStreamEventIfEnabled({
|
|
115
|
+
type: 'content_block_start',
|
|
116
|
+
index,
|
|
117
|
+
content_block: block,
|
|
118
|
+
}, parentToolUseId);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Overrides base class hook to emit stream event when tool_use input is set.
|
|
122
|
+
*/
|
|
123
|
+
onToolUseInputSet(state, index, input, parentToolUseId) {
|
|
124
|
+
this.emitStreamEventIfEnabled({
|
|
125
|
+
type: 'content_block_delta',
|
|
126
|
+
index,
|
|
127
|
+
delta: {
|
|
128
|
+
type: 'input_json_delta',
|
|
129
|
+
partial_json: JSON.stringify(input),
|
|
130
|
+
},
|
|
131
|
+
}, parentToolUseId);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Overrides base class hook to emit stream event when block is closed.
|
|
135
|
+
*/
|
|
136
|
+
onBlockClosed(state, index, parentToolUseId) {
|
|
137
|
+
if (this.includePartialMessages) {
|
|
138
|
+
this.emitStreamEventIfEnabled({
|
|
139
|
+
type: 'content_block_stop',
|
|
140
|
+
index,
|
|
141
|
+
}, parentToolUseId);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Overrides base class hook to emit message_start event when message is started.
|
|
146
|
+
* Only emits for main agent, not for subagents.
|
|
147
|
+
*/
|
|
148
|
+
onEnsureMessageStarted(state, parentToolUseId) {
|
|
149
|
+
// Only emit message_start for main agent, not for subagents
|
|
150
|
+
if (parentToolUseId === null) {
|
|
151
|
+
this.emitStreamEventIfEnabled({
|
|
152
|
+
type: 'message_start',
|
|
153
|
+
message: {
|
|
154
|
+
id: state.messageId,
|
|
155
|
+
role: 'assistant',
|
|
156
|
+
model: this.config.getModel(),
|
|
157
|
+
},
|
|
158
|
+
}, null);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Emits stream events when partial messages are enabled.
|
|
163
|
+
* This is a private method specific to StreamJsonOutputAdapter.
|
|
164
|
+
* @param event - Stream event to emit
|
|
165
|
+
* @param parentToolUseId - null for main agent, string for subagent
|
|
166
|
+
*/
|
|
167
|
+
emitStreamEventIfEnabled(event, parentToolUseId) {
|
|
168
|
+
if (!this.includePartialMessages) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const state = this.getMessageState(parentToolUseId);
|
|
172
|
+
const enrichedEvent = state.messageStarted
|
|
173
|
+
? { ...event, message_id: state.messageId }
|
|
174
|
+
: event;
|
|
175
|
+
const partial = {
|
|
176
|
+
type: 'stream_event',
|
|
177
|
+
uuid: randomUUID(),
|
|
178
|
+
session_id: this.getSessionId(),
|
|
179
|
+
parent_tool_use_id: parentToolUseId,
|
|
180
|
+
event: enrichedEvent,
|
|
181
|
+
};
|
|
182
|
+
this.emitMessageImpl(partial);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=StreamJsonOutputAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamJsonOutputAdapter.js","sourceRoot":"","sources":["../../../../src/nonInteractive/io/StreamJsonOutputAdapter.ts"],"names":[],"mappings":"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"}
|