@codingame/monaco-vscode-chat-service-override 37.1.0 → 37.2.0
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/index.js +15 -5
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.js +1 -1
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +104 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +827 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.d.ts +15 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.js +71 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.d.ts +16 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.js +95 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatDebug.d.ts +22 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatDebug.js +286 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatInputNotification.d.ts +10 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatInputNotification.js +38 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatQuota.d.ts +9 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatQuota.js +22 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +130 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +907 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatStatus.d.ts +10 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadChatStatus.js +28 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.d.ts +27 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +167 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.d.ts +46 -0
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +356 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationContentExpander.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationItemProvider.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostExistingSessionHarnessPickerEnablement.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPromptCacheNotification.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionHandler.js +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSettings.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSignedOutModelsNotification.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentSessionSettings.contribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/openSessionLinkOpener.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionDescription.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionDescription.js +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +10 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugEvents.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.d.ts +253 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +20 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/customizationHarnessService.d.ts +300 -0
- package/vscode/src/vs/workbench/contrib/chat/common/customizationHarnessService.js +272 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +178 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +78 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.js +51 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +67 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +195 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +67 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +294 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +212 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +955 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +122 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.d.ts +65 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.js +698 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +50 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +78 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +77 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +120 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +23 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/extensionPromptFileService.d.ts +92 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/extensionPromptFileService.js +335 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +235 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +1673 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +202 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +872 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/confirmationTool.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/confirmationTool.js +239 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/editFileTool.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/editFileTool.js +143 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/manageTodoListTool.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/manageTodoListTool.js +298 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/reviewPlanTool.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/reviewPlanTool.js +177 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.d.ts +73 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.js +577 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactRulesTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactRulesTool.js +90 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactsTool.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactsTool.js +130 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/taskCompleteTool.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/taskCompleteTool.js +53 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/toolHelpers.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/toolHelpers.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/tools.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/tools.js +91 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +518 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +231 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.js +1 -1
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
|
+
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
5
|
+
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
6
|
+
import { ToolDataSource, ToolInvocationPresentation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
|
|
7
|
+
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
8
|
+
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
9
|
+
import { IChatTodoListService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/chatTodoListService.service';
|
|
10
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
11
|
+
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
12
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
13
|
+
|
|
14
|
+
const ManageTodoListToolToolId = "manage_todo_list";
|
|
15
|
+
function createManageTodoListToolData() {
|
|
16
|
+
const inputSchema = {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
todoList: {
|
|
20
|
+
type: "array",
|
|
21
|
+
description: "Complete array of all todo items. Must include ALL items - both existing and new.",
|
|
22
|
+
items: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {
|
|
25
|
+
id: {
|
|
26
|
+
type: "number",
|
|
27
|
+
description: "Unique identifier for the todo. Use sequential numbers starting from 1."
|
|
28
|
+
},
|
|
29
|
+
title: {
|
|
30
|
+
type: "string",
|
|
31
|
+
description: "Concise action-oriented todo label (3-7 words). Displayed in UI."
|
|
32
|
+
},
|
|
33
|
+
status: {
|
|
34
|
+
type: "string",
|
|
35
|
+
enum: ["not-started", "in-progress", "completed"],
|
|
36
|
+
description: "not-started: Not begun | in-progress: Currently working (max 1) | completed: Fully finished with no blockers"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
required: ["id", "title", "status"]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
required: ["todoList"]
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
id: ManageTodoListToolToolId,
|
|
47
|
+
toolReferenceName: "todo",
|
|
48
|
+
legacyToolReferenceFullNames: ["todos"],
|
|
49
|
+
canBeReferencedInPrompt: true,
|
|
50
|
+
icon: ThemeIcon.fromId(Codicon.checklist.id),
|
|
51
|
+
displayName: ( localize(10876, "Manage and track todo items for task planning")),
|
|
52
|
+
userDescription: ( localize(10877, "Manage and track todo items for task planning")),
|
|
53
|
+
modelDescription: "Manage a structured todo list to track progress and plan tasks throughout your coding session. Use this tool VERY frequently to ensure task visibility and proper planning.\n\nWhen to use this tool:\n- Complex multi-step work requiring planning and tracking\n- When user provides multiple tasks or requests (numbered/comma-separated)\n- After receiving new instructions that require multiple steps\n- BEFORE starting work on any todo (mark as in-progress)\n- IMMEDIATELY after completing each todo (mark completed individually)\n- When breaking down larger tasks into smaller actionable steps\n- To give users visibility into your progress and planning\n\nWhen NOT to use:\n- Single, trivial tasks that can be completed in one step\n- Purely conversational/informational requests\n- When just reading files or performing simple searches\n\nCRITICAL workflow:\n1. Plan tasks by writing todo list with specific, actionable items\n2. Mark ONE todo as in-progress before starting work\n3. Complete the work for that specific todo\n4. Mark that todo as completed IMMEDIATELY\n5. Move to next todo and repeat\n\nTodo states:\n- not-started: Todo not yet begun\n- in-progress: Currently working (limit ONE at a time)\n- completed: Finished successfully\n\nIMPORTANT: Mark todos completed as soon as they are done. Do not batch completions.",
|
|
54
|
+
source: ToolDataSource.Internal,
|
|
55
|
+
inputSchema: inputSchema
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
createManageTodoListToolData();
|
|
59
|
+
let ManageTodoListTool = class ManageTodoListTool extends Disposable {
|
|
60
|
+
constructor(chatTodoListService, logService, telemetryService) {
|
|
61
|
+
super();
|
|
62
|
+
this.chatTodoListService = chatTodoListService;
|
|
63
|
+
this.logService = logService;
|
|
64
|
+
this.telemetryService = telemetryService;
|
|
65
|
+
}
|
|
66
|
+
async invoke(invocation, _countTokens, _progress, _token) {
|
|
67
|
+
const args = invocation.parameters;
|
|
68
|
+
let chatSessionResource = invocation.context?.sessionResource;
|
|
69
|
+
if (!chatSessionResource && args.operation === "read" && args.chatSessionResource) {
|
|
70
|
+
try {
|
|
71
|
+
chatSessionResource = ( URI.parse(args.chatSessionResource));
|
|
72
|
+
} catch (error) {
|
|
73
|
+
this.logService.error("ManageTodoListTool: Invalid chatSessionResource URI", error);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (!chatSessionResource) {
|
|
77
|
+
return {
|
|
78
|
+
content: [{
|
|
79
|
+
kind: "text",
|
|
80
|
+
value: "Error: No session resource available"
|
|
81
|
+
}]
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
this.logService.debug(`ManageTodoListTool: Invoking with options ${JSON.stringify(args)}`);
|
|
85
|
+
try {
|
|
86
|
+
if (args.operation === "read") {
|
|
87
|
+
return this.handleReadOperation(chatSessionResource);
|
|
88
|
+
} else {
|
|
89
|
+
return this.handleWriteOperation(args, chatSessionResource);
|
|
90
|
+
}
|
|
91
|
+
} catch (error) {
|
|
92
|
+
const errorMessage = `Error: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
93
|
+
return {
|
|
94
|
+
content: [{
|
|
95
|
+
kind: "text",
|
|
96
|
+
value: errorMessage
|
|
97
|
+
}]
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async prepareToolInvocation(context, _token) {
|
|
102
|
+
const args = context.parameters;
|
|
103
|
+
const chatSessionResource = context.chatSessionResource;
|
|
104
|
+
if (!chatSessionResource) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const currentTodoItems = this.chatTodoListService.getTodos(chatSessionResource);
|
|
108
|
+
let message;
|
|
109
|
+
if (args.operation === "read") {
|
|
110
|
+
message = ( localize(10878, "Read todo list"));
|
|
111
|
+
} else if (args.todoList) {
|
|
112
|
+
message = this.generatePastTenseMessage(currentTodoItems, args.todoList);
|
|
113
|
+
}
|
|
114
|
+
const items = args.todoList ?? currentTodoItems;
|
|
115
|
+
const todoList = ( items.map(todo => ({
|
|
116
|
+
id: ( todo.id.toString()),
|
|
117
|
+
title: todo.title,
|
|
118
|
+
status: todo.status
|
|
119
|
+
})));
|
|
120
|
+
const invocationLabel = message?.replace(/^(Starting|Completed): /i, "") ?? ( localize(10879, "Updating todo list"));
|
|
121
|
+
const invocationMessage = ( new MarkdownString(invocationLabel));
|
|
122
|
+
return {
|
|
123
|
+
invocationMessage,
|
|
124
|
+
presentation: items.length ? undefined : ToolInvocationPresentation.Hidden,
|
|
125
|
+
pastTenseMessage: ( new MarkdownString(message ?? ( localize(10880, "Updated todo list")))),
|
|
126
|
+
toolSpecificData: {
|
|
127
|
+
kind: "todoList",
|
|
128
|
+
todoList: todoList
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
generatePastTenseMessage(currentTodos, newTodos) {
|
|
133
|
+
if (currentTodos.length === 0 && newTodos.length > 0) {
|
|
134
|
+
return newTodos.length === 1 ? ( localize(10881, "Created 1 todo")) : ( localize(10882, "Created {0} todos", newTodos.length));
|
|
135
|
+
}
|
|
136
|
+
const currentTodoMap = ( new Map(( currentTodos.map(todo => [todo.id, todo]))));
|
|
137
|
+
const startedTodos = newTodos.filter(newTodo => {
|
|
138
|
+
const currentTodo = currentTodoMap.get(newTodo.id);
|
|
139
|
+
return currentTodo && currentTodo.status !== "in-progress" && newTodo.status === "in-progress";
|
|
140
|
+
});
|
|
141
|
+
if (startedTodos.length > 0) {
|
|
142
|
+
const startedTodo = startedTodos[0];
|
|
143
|
+
const totalTodos = newTodos.length;
|
|
144
|
+
const currentPosition = newTodos.findIndex(todo => todo.id === startedTodo.id) + 1;
|
|
145
|
+
return localize(
|
|
146
|
+
10883,
|
|
147
|
+
"Starting: *{0}* ({1}/{2})",
|
|
148
|
+
startedTodo.title,
|
|
149
|
+
currentPosition,
|
|
150
|
+
totalTodos
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
const completedTodos = newTodos.filter(newTodo => {
|
|
154
|
+
const currentTodo = currentTodoMap.get(newTodo.id);
|
|
155
|
+
return currentTodo && currentTodo.status !== "completed" && newTodo.status === "completed";
|
|
156
|
+
});
|
|
157
|
+
if (completedTodos.length > 0) {
|
|
158
|
+
const completedTodo = completedTodos[0];
|
|
159
|
+
const totalTodos = newTodos.length;
|
|
160
|
+
const currentPosition = newTodos.findIndex(todo => todo.id === completedTodo.id) + 1;
|
|
161
|
+
return localize(
|
|
162
|
+
10884,
|
|
163
|
+
"Completed: *{0}* ({1}/{2})",
|
|
164
|
+
completedTodo.title,
|
|
165
|
+
currentPosition,
|
|
166
|
+
totalTodos
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
const addedTodos = newTodos.filter(newTodo => !( currentTodoMap.has(newTodo.id)));
|
|
170
|
+
if (addedTodos.length > 0) {
|
|
171
|
+
return addedTodos.length === 1 ? ( localize(10885, "Added 1 todo")) : ( localize(10886, "Added {0} todos", addedTodos.length));
|
|
172
|
+
}
|
|
173
|
+
return localize(10887, "Updated todo list");
|
|
174
|
+
}
|
|
175
|
+
handleRead(todoItems, sessionResource) {
|
|
176
|
+
if (todoItems.length === 0) {
|
|
177
|
+
return "No todo list found.";
|
|
178
|
+
}
|
|
179
|
+
const markdownTaskList = this.formatTodoListAsMarkdownTaskList(todoItems);
|
|
180
|
+
return `# Todo List\n\n${markdownTaskList}`;
|
|
181
|
+
}
|
|
182
|
+
handleReadOperation(chatSessionResource) {
|
|
183
|
+
const todoItems = this.chatTodoListService.getTodos(chatSessionResource);
|
|
184
|
+
const readResult = this.handleRead(todoItems, chatSessionResource);
|
|
185
|
+
const statusCounts = this.calculateStatusCounts(todoItems);
|
|
186
|
+
this.telemetryService.publicLog2("todoListToolInvoked", {
|
|
187
|
+
operation: "read",
|
|
188
|
+
notStartedCount: statusCounts.notStartedCount,
|
|
189
|
+
inProgressCount: statusCounts.inProgressCount,
|
|
190
|
+
completedCount: statusCounts.completedCount
|
|
191
|
+
});
|
|
192
|
+
return {
|
|
193
|
+
content: [{
|
|
194
|
+
kind: "text",
|
|
195
|
+
value: readResult
|
|
196
|
+
}]
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
handleWriteOperation(args, chatSessionResource) {
|
|
200
|
+
if (!args.todoList) {
|
|
201
|
+
return {
|
|
202
|
+
content: [{
|
|
203
|
+
kind: "text",
|
|
204
|
+
value: "Error: todoList is required for write operation"
|
|
205
|
+
}]
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
const todoList = ( args.todoList.map(parsedTodo => ({
|
|
209
|
+
id: parsedTodo.id,
|
|
210
|
+
title: parsedTodo.title,
|
|
211
|
+
status: parsedTodo.status
|
|
212
|
+
})));
|
|
213
|
+
const existingTodos = this.chatTodoListService.getTodos(chatSessionResource);
|
|
214
|
+
const changes = this.calculateTodoChanges(existingTodos, todoList);
|
|
215
|
+
this.chatTodoListService.setTodos(chatSessionResource, todoList);
|
|
216
|
+
const statusCounts = this.calculateStatusCounts(todoList);
|
|
217
|
+
const warnings = [];
|
|
218
|
+
if (todoList.length < 3) {
|
|
219
|
+
warnings.push(
|
|
220
|
+
"Warning: Small todo list (<3 items). This task might not need a todo list."
|
|
221
|
+
);
|
|
222
|
+
} else if (todoList.length > 10) {
|
|
223
|
+
warnings.push(
|
|
224
|
+
"Warning: Large todo list (>10 items). Consider keeping the list focused and actionable."
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
if (changes > 3) {
|
|
228
|
+
warnings.push(
|
|
229
|
+
"Warning: Did you mean to update so many todos at the same time? Consider working on them one by one."
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
this.telemetryService.publicLog2("todoListToolInvoked", {
|
|
233
|
+
operation: "write",
|
|
234
|
+
notStartedCount: statusCounts.notStartedCount,
|
|
235
|
+
inProgressCount: statusCounts.inProgressCount,
|
|
236
|
+
completedCount: statusCounts.completedCount
|
|
237
|
+
});
|
|
238
|
+
return {
|
|
239
|
+
content: [{
|
|
240
|
+
kind: "text",
|
|
241
|
+
value: `Successfully wrote todo list${warnings.length ? "\n\n" + warnings.join("\n") : ""}`
|
|
242
|
+
}],
|
|
243
|
+
toolMetadata: {
|
|
244
|
+
warnings: warnings
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
calculateStatusCounts(todos) {
|
|
249
|
+
const notStartedCount = todos.filter(todo => todo.status === "not-started").length;
|
|
250
|
+
const inProgressCount = todos.filter(todo => todo.status === "in-progress").length;
|
|
251
|
+
const completedCount = todos.filter(todo => todo.status === "completed").length;
|
|
252
|
+
return {
|
|
253
|
+
notStartedCount,
|
|
254
|
+
inProgressCount,
|
|
255
|
+
completedCount
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
formatTodoListAsMarkdownTaskList(todoList) {
|
|
259
|
+
if (todoList.length === 0) {
|
|
260
|
+
return "";
|
|
261
|
+
}
|
|
262
|
+
return ( todoList.map(todo => {
|
|
263
|
+
let checkbox;
|
|
264
|
+
switch (todo.status) {
|
|
265
|
+
case "completed":
|
|
266
|
+
checkbox = "[x]";
|
|
267
|
+
break;
|
|
268
|
+
case "in-progress":
|
|
269
|
+
checkbox = "[-]";
|
|
270
|
+
break;
|
|
271
|
+
case "not-started":
|
|
272
|
+
default:
|
|
273
|
+
checkbox = "[ ]";
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
const lines = [`- ${checkbox} ${todo.title}`];
|
|
277
|
+
return lines.join("\n");
|
|
278
|
+
})).join("\n");
|
|
279
|
+
}
|
|
280
|
+
calculateTodoChanges(oldList, newList) {
|
|
281
|
+
let modified = 0;
|
|
282
|
+
const minLen = Math.min(oldList.length, newList.length);
|
|
283
|
+
for (let i = 0; i < minLen; i++) {
|
|
284
|
+
const o = oldList[i];
|
|
285
|
+
const n = newList[i];
|
|
286
|
+
if (o.title !== n.title || o.status !== n.status) {
|
|
287
|
+
modified++;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
const added = Math.max(0, newList.length - oldList.length);
|
|
291
|
+
const removed = Math.max(0, oldList.length - newList.length);
|
|
292
|
+
const totalChanges = added + removed + modified;
|
|
293
|
+
return totalChanges;
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
ManageTodoListTool = ( __decorate([( __param(0, IChatTodoListService)), ( __param(1, ILogService)), ( __param(2, ITelemetryService))], ManageTodoListTool));
|
|
297
|
+
|
|
298
|
+
export { ManageTodoListTool, ManageTodoListToolToolId, createManageTodoListToolData };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
|
+
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
4
|
+
import { IChatPlanApprovalAction } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
|
|
5
|
+
import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service";
|
|
6
|
+
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolInvocationPreparationContext, IToolResult, ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
|
|
7
|
+
export declare const ReviewPlanToolId = "vscode_reviewPlan";
|
|
8
|
+
export interface IReviewPlanParams {
|
|
9
|
+
readonly title?: string;
|
|
10
|
+
readonly plan?: string;
|
|
11
|
+
readonly content: string;
|
|
12
|
+
readonly actions: IChatPlanApprovalAction[];
|
|
13
|
+
readonly canProvideFeedback: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function createReviewPlanToolData(): IToolData;
|
|
16
|
+
export declare const ReviewPlanToolData: IToolData;
|
|
17
|
+
export declare class ReviewPlanTool extends Disposable implements IToolImpl {
|
|
18
|
+
private readonly chatService;
|
|
19
|
+
private readonly logService;
|
|
20
|
+
constructor(chatService: IChatService, logService: ILogService);
|
|
21
|
+
invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
|
|
22
|
+
prepareToolInvocation(context: IToolInvocationPreparationContext, _token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
|
23
|
+
private toResult;
|
|
24
|
+
private getRequest;
|
|
25
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { raceCancellation } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
4
|
+
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
5
|
+
import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
6
|
+
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
7
|
+
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
8
|
+
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
9
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
10
|
+
import { generateUuid } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
11
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
12
|
+
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
13
|
+
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
|
|
14
|
+
import { ChatPlanReviewData } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatPlanReviewData';
|
|
15
|
+
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
|
|
16
|
+
|
|
17
|
+
const ReviewPlanToolId = "vscode_reviewPlan";
|
|
18
|
+
function createReviewPlanToolData() {
|
|
19
|
+
const approvalActionSchema = {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
label: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Short action label shown in the dropdown button."
|
|
25
|
+
},
|
|
26
|
+
description: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "Optional detail shown below the label in the dropdown list."
|
|
29
|
+
},
|
|
30
|
+
default: {
|
|
31
|
+
type: "boolean",
|
|
32
|
+
description: "Whether this action should be selected by default."
|
|
33
|
+
},
|
|
34
|
+
permissionLevel: {
|
|
35
|
+
type: "string",
|
|
36
|
+
enum: ["autopilot"],
|
|
37
|
+
description: "When set to \"autopilot\", a confirmation dialog is shown before proceeding."
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
required: ["label"]
|
|
41
|
+
};
|
|
42
|
+
const inputSchema = {
|
|
43
|
+
type: "object",
|
|
44
|
+
properties: {
|
|
45
|
+
title: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "Title displayed in the widget header. Defaults to \"Plan summary\" if omitted."
|
|
48
|
+
},
|
|
49
|
+
plan: {
|
|
50
|
+
type: "string",
|
|
51
|
+
description: "Optional URI of an editable plan file. An Edit button in the widget header opens it in the editor."
|
|
52
|
+
},
|
|
53
|
+
content: {
|
|
54
|
+
type: "string",
|
|
55
|
+
description: "Markdown content rendered in the body of the widget. May be the plan summary or full plan text."
|
|
56
|
+
},
|
|
57
|
+
actions: {
|
|
58
|
+
type: "array",
|
|
59
|
+
description: "List of approval actions offered in the primary dropdown button. Order is preserved.",
|
|
60
|
+
items: approvalActionSchema,
|
|
61
|
+
minItems: 1
|
|
62
|
+
},
|
|
63
|
+
canProvideFeedback: {
|
|
64
|
+
type: "boolean",
|
|
65
|
+
description: "When true, an additional feedback textarea is shown below the plan content."
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
required: ["content", "actions", "canProvideFeedback"]
|
|
69
|
+
};
|
|
70
|
+
return {
|
|
71
|
+
id: ReviewPlanToolId,
|
|
72
|
+
toolReferenceName: "reviewPlan",
|
|
73
|
+
canBeReferencedInPrompt: false,
|
|
74
|
+
icon: ThemeIcon.fromId(Codicon.checklist.id),
|
|
75
|
+
displayName: ( localize(10888, "Review Plan")),
|
|
76
|
+
userDescription: ( localize(10889, "Ask the user to review and approve a plan before proceeding.")),
|
|
77
|
+
modelDescription: "Use this tool to present a plan to the user for review. Provide the plan content as markdown, a list of approval actions (with optional default), and whether the user can provide freeform feedback. Optionally provide a URI to the backing plan file so the user can edit it. The tool returns the chosen action, whether the plan was rejected, and any feedback.",
|
|
78
|
+
source: ToolDataSource.Internal,
|
|
79
|
+
inputSchema
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const ReviewPlanToolData = createReviewPlanToolData();
|
|
83
|
+
let ReviewPlanTool = class ReviewPlanTool extends Disposable {
|
|
84
|
+
constructor(chatService, logService) {
|
|
85
|
+
super();
|
|
86
|
+
this.chatService = chatService;
|
|
87
|
+
this.logService = logService;
|
|
88
|
+
}
|
|
89
|
+
async invoke(invocation, _countTokens, _progress, token) {
|
|
90
|
+
const parameters = invocation.parameters;
|
|
91
|
+
const {
|
|
92
|
+
title,
|
|
93
|
+
plan,
|
|
94
|
+
content,
|
|
95
|
+
actions,
|
|
96
|
+
canProvideFeedback
|
|
97
|
+
} = parameters;
|
|
98
|
+
if (!actions || actions.length === 0) {
|
|
99
|
+
throw ( new Error(( localize(10890, "At least one approval action must be provided."))));
|
|
100
|
+
}
|
|
101
|
+
const {
|
|
102
|
+
request
|
|
103
|
+
} = this.getRequest(invocation.context?.sessionResource, invocation.chatRequestId);
|
|
104
|
+
if (!request) {
|
|
105
|
+
this.logService.warn("[ReviewPlanTool] Missing chat context; returning rejected result.");
|
|
106
|
+
return this.toResult({
|
|
107
|
+
rejected: true
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
let planUri;
|
|
111
|
+
if (plan) {
|
|
112
|
+
try {
|
|
113
|
+
planUri = ( URI.parse(plan));
|
|
114
|
+
} catch {
|
|
115
|
+
try {
|
|
116
|
+
planUri = URI.file(plan);
|
|
117
|
+
} catch {
|
|
118
|
+
planUri = undefined;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const reviewData = ( new ChatPlanReviewData(title ?? ( localize(10891, "Plan summary")), content, actions, canProvideFeedback, planUri?.toJSON(), generateUuid()));
|
|
123
|
+
this.chatService.appendProgress(request, reviewData);
|
|
124
|
+
const result = await raceCancellation(reviewData.completion.p, token);
|
|
125
|
+
if (token.isCancellationRequested) {
|
|
126
|
+
reviewData.dismiss();
|
|
127
|
+
throw ( new CancellationError());
|
|
128
|
+
}
|
|
129
|
+
return this.toResult(result ?? {
|
|
130
|
+
rejected: true
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
async prepareToolInvocation(context, _token) {
|
|
134
|
+
const parameters = context.parameters;
|
|
135
|
+
if (!parameters.actions || parameters.actions.length === 0) {
|
|
136
|
+
throw ( new Error(( localize(10890, "At least one approval action must be provided."))));
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
invocationMessage: ( new MarkdownString(( localize(10892, "Asking you to review the plan")))),
|
|
140
|
+
pastTenseMessage: ( new MarkdownString(( localize(10893, "Asked you to review the plan"))))
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
toResult(result) {
|
|
144
|
+
return {
|
|
145
|
+
content: [{
|
|
146
|
+
kind: "text",
|
|
147
|
+
value: JSON.stringify(result)
|
|
148
|
+
}]
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
getRequest(chatSessionResource, chatRequestId) {
|
|
152
|
+
if (!chatSessionResource) {
|
|
153
|
+
return {
|
|
154
|
+
request: undefined
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
const model = this.chatService.getSession(chatSessionResource);
|
|
158
|
+
if (!model) {
|
|
159
|
+
return {
|
|
160
|
+
request: undefined
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
let request;
|
|
164
|
+
if (chatRequestId) {
|
|
165
|
+
request = model.getRequests().find(r => r.id === chatRequestId);
|
|
166
|
+
}
|
|
167
|
+
if (!request) {
|
|
168
|
+
request = model.getRequests().at(-1);
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
request
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
ReviewPlanTool = ( __decorate([( __param(0, IChatService)), ( __param(1, ILogService))], ReviewPlanTool));
|
|
176
|
+
|
|
177
|
+
export { ReviewPlanTool, ReviewPlanToolData, ReviewPlanToolId, createReviewPlanToolData };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { type Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
3
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
4
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
5
|
+
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
6
|
+
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
7
|
+
import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service";
|
|
8
|
+
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
9
|
+
import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service";
|
|
10
|
+
import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
|
|
11
|
+
import { IChatAgentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service";
|
|
12
|
+
import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
|
|
13
|
+
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolInvocationPreparationContext, IToolResult, ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
|
|
14
|
+
import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service";
|
|
15
|
+
export interface IRunSubagentToolInputParams {
|
|
16
|
+
prompt: string;
|
|
17
|
+
description: string;
|
|
18
|
+
agentName?: string;
|
|
19
|
+
model?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const RUN_SUBAGENT_MAX_NESTING_DEPTH = 5;
|
|
22
|
+
export declare class RunSubagentTool extends Disposable implements IToolImpl {
|
|
23
|
+
private readonly chatAgentService;
|
|
24
|
+
private readonly chatService;
|
|
25
|
+
private readonly languageModelToolsService;
|
|
26
|
+
private readonly languageModelsService;
|
|
27
|
+
private readonly logService;
|
|
28
|
+
private readonly configurationService;
|
|
29
|
+
private readonly promptsService;
|
|
30
|
+
private readonly instantiationService;
|
|
31
|
+
private readonly productService;
|
|
32
|
+
private readonly telemetryService;
|
|
33
|
+
static readonly Id = "runSubagent";
|
|
34
|
+
private readonly _onDidUpdateToolData;
|
|
35
|
+
readonly onDidUpdateToolData: Event<void>;
|
|
36
|
+
/** Hack to port data between prepare/invoke */
|
|
37
|
+
private readonly _resolvedModels;
|
|
38
|
+
/** Tracks the current subagent nesting depth per session to detect and limit recursion. */
|
|
39
|
+
private readonly _sessionDepth;
|
|
40
|
+
private _autoModelResolution;
|
|
41
|
+
constructor(chatAgentService: IChatAgentService, chatService: IChatService, languageModelToolsService: ILanguageModelToolsService, languageModelsService: ILanguageModelsService, logService: ILogService, configurationService: IConfigurationService, promptsService: IPromptsService, instantiationService: IInstantiationService, productService: IProductService, telemetryService: ITelemetryService);
|
|
42
|
+
getToolData(): IToolData;
|
|
43
|
+
invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
|
|
44
|
+
private getSubAgentByName;
|
|
45
|
+
/**
|
|
46
|
+
* Checks if a model exceeds the main model's cost tier based on multiplier.
|
|
47
|
+
* @returns An object with `exceeds: true` and a reason string if blocked, or `exceeds: false` if allowed.
|
|
48
|
+
*/
|
|
49
|
+
private checkMultiplierConstraint;
|
|
50
|
+
/**
|
|
51
|
+
* Returns information about available models for error messages.
|
|
52
|
+
* Includes which models are unavailable due to multiplier restrictions.
|
|
53
|
+
*/
|
|
54
|
+
private getAvailableModelsInfo;
|
|
55
|
+
/**
|
|
56
|
+
* Resolves the model to be used by a subagent.
|
|
57
|
+
* @param explicitModelQualifiedName Optional explicit model specified by the caller.
|
|
58
|
+
* If provided and not found or not allowed, throws an error with available models.
|
|
59
|
+
* @param currentModeInstructions The current agent inherited when no subagent is requested.
|
|
60
|
+
* Its configured model keeps precedence over the Auto default.
|
|
61
|
+
* @throws Error if the requested model is not found or exceeds the main model's cost tier.
|
|
62
|
+
*/
|
|
63
|
+
private resolveSubagentModel;
|
|
64
|
+
private inheritedAgentHasModel;
|
|
65
|
+
private isSelectableForAgentMode;
|
|
66
|
+
private findEligibleAutoModelId;
|
|
67
|
+
private resolveAutoModelId;
|
|
68
|
+
private activateAutoModel;
|
|
69
|
+
prepareToolInvocation(context: IToolInvocationPreparationContext, _token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
|
70
|
+
private normalizeRequestedAgentName;
|
|
71
|
+
private getCurrentModeInstructions;
|
|
72
|
+
private validateSubagentAllowed;
|
|
73
|
+
}
|