@codingame/monaco-vscode-chat-service-override 32.0.2 → 33.0.4
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.d.ts +1 -1
- package/index.js +15 -5
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +170 -24
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +372 -66
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +18 -1
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +160 -31
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.d.ts +8 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +19 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +134 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +257 -0
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +84 -3
- package/vscode/src/vs/platform/agentHost/common/agentService.js +9 -1
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +61 -1
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +61 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.js +3 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.js +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +4 -4
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +1 -1
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +2 -7
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +8 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +60 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +10 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +180 -174
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +64 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +330 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +77 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +267 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +53 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
- 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 +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +30 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +150 -119
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +45 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +58 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +25 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +2 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +88 -70
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +82 -56
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +10 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +2 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +89 -71
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +2 -2843
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +2934 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +99 -99
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +22 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +24 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +33 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +53 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +131 -61
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +23 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +91 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +23 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +29 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +15 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +203 -163
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +31 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +88 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +17 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +91 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.js +82 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.d.ts +21 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +55 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +106 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +59 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +25 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +27 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileContributions.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +39 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +38 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.js +106 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +75 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/{toolInvocationParts/chatToolOutputStateCache.d.ts → chatOutputPartStateCache.d.ts} +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/{toolInvocationParts/chatToolOutputStateCache.js → chatOutputPartStateCache.js} +19 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +58 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +9 -9
- 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 +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +18 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +13 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +6 -2
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +19 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +6 -7
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +14 -15
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +155 -156
- package/vscode/src/vs/workbench/contrib/chat/common/tools/copilotToolIds.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/copilotToolIds.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/toolResultCompressor.d.ts +88 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/toolResultCompressor.js +25 -0
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +237 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +600 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +47 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.js +7 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css +298 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +12 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +78 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +15 -11
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandParser.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandParser.js +286 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.js +285 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.d.ts +19 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.js +415 -47
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.d.ts +2 -7
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +1 -1
- package/vscode/src/vs/base/common/defaultAccount.d.ts +0 -69
- package/vscode/src/vs/base/common/defaultAccount.js +0 -12
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +0 -15
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +0 -85
|
@@ -79,7 +79,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
_progress.report({
|
|
82
|
-
message: ( new MarkdownString(( localize(
|
|
82
|
+
message: ( new MarkdownString(( localize(14545, "Resolving the task"))))
|
|
83
83
|
});
|
|
84
84
|
let task;
|
|
85
85
|
const start = Date.now();
|
|
@@ -96,7 +96,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
96
96
|
kind: "text",
|
|
97
97
|
value: `Task not found: ${args.task.label}`
|
|
98
98
|
}],
|
|
99
|
-
toolResultMessage: ( new MarkdownString(( localize(
|
|
99
|
+
toolResultMessage: ( new MarkdownString(( localize(14546, "Task not found: `{0}`", args.task.label))))
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
const preRunMarkersStore = ( new DisposableStore());
|
|
@@ -113,7 +113,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
_progress.report({
|
|
116
|
-
message: ( new MarkdownString(( localize(
|
|
116
|
+
message: ( new MarkdownString(( localize(14547, "Running task `{0}`", args.task.label))))
|
|
117
117
|
});
|
|
118
118
|
const raceResult = await Promise.race([
|
|
119
119
|
this._tasksService.run(task, undefined, TaskRunSource.ChatAgent),
|
|
@@ -131,7 +131,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
131
131
|
value: `Task started but no terminal was found for: ${args.task.label}`
|
|
132
132
|
}],
|
|
133
133
|
toolResultMessage: ( new MarkdownString(( localize(
|
|
134
|
-
|
|
134
|
+
14548,
|
|
135
135
|
"Task started but no terminal was found for: `{0}`",
|
|
136
136
|
args.task.label
|
|
137
137
|
))))
|
|
@@ -201,26 +201,26 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
|
|
|
201
201
|
const allTasks = await this._tasksService.tasks();
|
|
202
202
|
if (allTasks?.find(t => t._label === task.label)) {
|
|
203
203
|
return {
|
|
204
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
205
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
204
|
+
invocationMessage: ( new MarkdownString(( localize(14549, "Task `{0}` already exists.", task.label)))),
|
|
205
|
+
pastTenseMessage: ( new MarkdownString(( localize(14550, "Task `{0}` already exists.", task.label)))),
|
|
206
206
|
confirmationMessages: undefined
|
|
207
207
|
};
|
|
208
208
|
}
|
|
209
209
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
210
210
|
if (activeTasks.find(t => t._label === task.label)) {
|
|
211
211
|
return {
|
|
212
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
213
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
212
|
+
invocationMessage: ( new MarkdownString(( localize(14551, "Task `{0}` is already running.", task.label)))),
|
|
213
|
+
pastTenseMessage: ( new MarkdownString(( localize(14551, "Task `{0}` is already running.", task.label)))),
|
|
214
214
|
confirmationMessages: undefined
|
|
215
215
|
};
|
|
216
216
|
}
|
|
217
217
|
return {
|
|
218
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
219
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
218
|
+
invocationMessage: ( new MarkdownString(( localize(14552, "Created task `{0}`", task.label)))),
|
|
219
|
+
pastTenseMessage: ( new MarkdownString(( localize(14553, "Created task `{0}`", task.label)))),
|
|
220
220
|
confirmationMessages: {
|
|
221
|
-
title: ( localize(
|
|
221
|
+
title: ( localize(14554, "Allow task creation and execution?")),
|
|
222
222
|
message: ( new MarkdownString(( localize(
|
|
223
|
-
|
|
223
|
+
14555,
|
|
224
224
|
"A task `{0}` with command `{1}`{2} will be created.",
|
|
225
225
|
task.label,
|
|
226
226
|
task.command,
|
|
@@ -235,9 +235,9 @@ const CreateAndRunTaskToolData = {
|
|
|
235
235
|
id: TerminalToolId.CreateAndRunTask,
|
|
236
236
|
toolReferenceName: "createAndRunTask",
|
|
237
237
|
legacyToolReferenceFullNames: ["runTasks/createAndRunTask"],
|
|
238
|
-
displayName: ( localize(
|
|
238
|
+
displayName: ( localize(14556, "Create and run Task")),
|
|
239
239
|
modelDescription: "Creates and runs a build, run, or custom task for the workspace by generating or adding to a tasks.json file based on the project structure (such as package.json or README.md). If the user asks to build, run, launch and they have no tasks.json file, use this tool. If they ask to create or add a task, use this tool.",
|
|
240
|
-
userDescription: ( localize(
|
|
240
|
+
userDescription: ( localize(14557, "Create and run a task in the workspace")),
|
|
241
241
|
source: ToolDataSource.Internal,
|
|
242
242
|
inputSchema: {
|
|
243
243
|
"type": "object",
|
|
@@ -7,7 +7,6 @@ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
7
7
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
8
8
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
9
9
|
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
|
|
10
|
-
import { TasksAvailableContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService';
|
|
11
10
|
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
12
11
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
13
12
|
import { getTaskDefinition, getTaskForTool, resolveDependencyTasks, collectTerminalResults, tasksMatch } from '../../taskHelpers.js';
|
|
@@ -18,10 +17,9 @@ const GetTaskOutputToolData = {
|
|
|
18
17
|
id: TerminalToolId.GetTaskOutput,
|
|
19
18
|
toolReferenceName: "getTaskOutput",
|
|
20
19
|
legacyToolReferenceFullNames: ["runTasks/getTaskOutput"],
|
|
21
|
-
displayName: ( localize(
|
|
20
|
+
displayName: ( localize(14558, "Get Task Output")),
|
|
22
21
|
modelDescription: "Get the output of a task",
|
|
23
22
|
source: ToolDataSource.Internal,
|
|
24
|
-
when: TasksAvailableContext,
|
|
25
23
|
inputSchema: {
|
|
26
24
|
type: "object",
|
|
27
25
|
properties: {
|
|
@@ -65,19 +63,19 @@ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
|
65
63
|
);
|
|
66
64
|
if (!task) {
|
|
67
65
|
return {
|
|
68
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
66
|
+
invocationMessage: ( new MarkdownString(( localize(14559, "Task not found: `{0}`", args.id))))
|
|
69
67
|
};
|
|
70
68
|
}
|
|
71
69
|
const taskLabel = task._label;
|
|
72
70
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
73
71
|
if (activeTasks.includes(task)) {
|
|
74
72
|
return {
|
|
75
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
73
|
+
invocationMessage: ( new MarkdownString(( localize(14560, "The task `{0}` is already running.", taskLabel))))
|
|
76
74
|
};
|
|
77
75
|
}
|
|
78
76
|
return {
|
|
79
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
80
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
77
|
+
invocationMessage: ( new MarkdownString(( localize(14561, "Checking output for task `{0}`", taskLabel)))),
|
|
78
|
+
pastTenseMessage: ( new MarkdownString(( localize(14562, "Checked output for task `{0}`", taskLabel))))
|
|
81
79
|
};
|
|
82
80
|
}
|
|
83
81
|
async invoke(invocation, _countTokens, _progress, token) {
|
|
@@ -97,7 +95,7 @@ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
|
97
95
|
kind: "text",
|
|
98
96
|
value: `Task not found: ${args.id}`
|
|
99
97
|
}],
|
|
100
|
-
toolResultMessage: ( new MarkdownString(( localize(
|
|
98
|
+
toolResultMessage: ( new MarkdownString(( localize(14559, "Task not found: `{0}`", args.id))))
|
|
101
99
|
};
|
|
102
100
|
}
|
|
103
101
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
@@ -112,7 +110,7 @@ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
|
|
|
112
110
|
kind: "text",
|
|
113
111
|
value: `Terminal not found for task ${taskLabel}`
|
|
114
112
|
}],
|
|
115
|
-
toolResultMessage: ( new MarkdownString(( localize(
|
|
113
|
+
toolResultMessage: ( new MarkdownString(( localize(14563, "Terminal not found for task `{0}`", taskLabel))))
|
|
116
114
|
};
|
|
117
115
|
}
|
|
118
116
|
const startMarkersByTerminalInstanceId = task.configurationProperties.isBackground ? ( new Map()) : undefined;
|
|
@@ -4,7 +4,6 @@ import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/asyn
|
|
|
4
4
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
5
5
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
6
6
|
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
|
|
7
|
-
import { TasksAvailableContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService';
|
|
8
7
|
import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
9
8
|
import { TaskRunSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/tasks';
|
|
10
9
|
import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
|
|
@@ -57,7 +56,7 @@ let RunTaskTool = class RunTaskTool {
|
|
|
57
56
|
kind: "text",
|
|
58
57
|
value: `Task not found: ${args.id}`
|
|
59
58
|
}],
|
|
60
|
-
toolResultMessage: ( new MarkdownString(( localize(
|
|
59
|
+
toolResultMessage: ( new MarkdownString(( localize(14564, "Task not found: `{0}`", args.id))))
|
|
61
60
|
};
|
|
62
61
|
}
|
|
63
62
|
const taskLabel = task._label;
|
|
@@ -68,7 +67,7 @@ let RunTaskTool = class RunTaskTool {
|
|
|
68
67
|
kind: "text",
|
|
69
68
|
value: `The task ${taskLabel} is already running.`
|
|
70
69
|
}],
|
|
71
|
-
toolResultMessage: ( new MarkdownString(( localize(
|
|
70
|
+
toolResultMessage: ( new MarkdownString(( localize(14565, "The task `{0}` is already running.", taskLabel))))
|
|
72
71
|
};
|
|
73
72
|
}
|
|
74
73
|
const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
|
|
@@ -94,7 +93,7 @@ let RunTaskTool = class RunTaskTool {
|
|
|
94
93
|
kind: "text",
|
|
95
94
|
value: `Task started but no terminal was found for: ${taskLabel}`
|
|
96
95
|
}],
|
|
97
|
-
toolResultMessage: ( new MarkdownString(( localize(
|
|
96
|
+
toolResultMessage: ( new MarkdownString(( localize(14566, "Task started but no terminal was found for: `{0}`", taskLabel))))
|
|
98
97
|
};
|
|
99
98
|
}
|
|
100
99
|
const terminals = this._terminalService.instances.filter(t => ( resources.some(r => r.path === t.resource.path && r.scheme === t.resource.scheme)));
|
|
@@ -104,7 +103,7 @@ let RunTaskTool = class RunTaskTool {
|
|
|
104
103
|
kind: "text",
|
|
105
104
|
value: `Task started but no terminal was found for: ${taskLabel}`
|
|
106
105
|
}],
|
|
107
|
-
toolResultMessage: ( new MarkdownString(( localize(
|
|
106
|
+
toolResultMessage: ( new MarkdownString(( localize(14566, "Task started but no terminal was found for: `{0}`", taskLabel))))
|
|
108
107
|
};
|
|
109
108
|
}
|
|
110
109
|
const store = ( new DisposableStore());
|
|
@@ -179,29 +178,29 @@ let RunTaskTool = class RunTaskTool {
|
|
|
179
178
|
);
|
|
180
179
|
if (!task) {
|
|
181
180
|
return {
|
|
182
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
181
|
+
invocationMessage: ( new MarkdownString(( localize(14564, "Task not found: `{0}`", args.id))))
|
|
183
182
|
};
|
|
184
183
|
}
|
|
185
184
|
const taskLabel = task._label;
|
|
186
185
|
const activeTasks = await this._tasksService.getActiveTasks();
|
|
187
186
|
if (task && activeTasks.includes(task)) {
|
|
188
187
|
return {
|
|
189
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
188
|
+
invocationMessage: ( new MarkdownString(( localize(14567, "The task is already running."))))
|
|
190
189
|
};
|
|
191
190
|
}
|
|
192
191
|
if (await this._isTaskActive(task)) {
|
|
193
192
|
return {
|
|
194
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
195
|
-
pastTenseMessage: ( new MarkdownString(( localize(
|
|
193
|
+
invocationMessage: ( new MarkdownString(( localize(14568, "`{0}` is already running.", taskLabel)))),
|
|
194
|
+
pastTenseMessage: ( new MarkdownString(( localize(14569, "`{0}` was already running.", taskLabel)))),
|
|
196
195
|
confirmationMessages: undefined
|
|
197
196
|
};
|
|
198
197
|
}
|
|
199
198
|
return {
|
|
200
|
-
invocationMessage: ( new MarkdownString(( localize(
|
|
201
|
-
pastTenseMessage: ( new MarkdownString(task?.configurationProperties.isBackground ? ( localize(
|
|
199
|
+
invocationMessage: ( new MarkdownString(( localize(14570, "Running `{0}`", taskLabel)))),
|
|
200
|
+
pastTenseMessage: ( new MarkdownString(task?.configurationProperties.isBackground ? ( localize(14571, "Started `{0}`", taskLabel)) : ( localize(14572, "Ran `{0}`", taskLabel)))),
|
|
202
201
|
confirmationMessages: task ? {
|
|
203
|
-
title: ( localize(
|
|
204
|
-
message: ( localize(
|
|
202
|
+
title: ( localize(14573, "Allow task run?")),
|
|
203
|
+
message: ( localize(14574, "Allow to run the task `{0}`?", taskLabel))
|
|
205
204
|
} : undefined
|
|
206
205
|
};
|
|
207
206
|
}
|
|
@@ -211,12 +210,11 @@ const RunTaskToolData = {
|
|
|
211
210
|
id: TerminalToolId.RunTask,
|
|
212
211
|
toolReferenceName: "runTask",
|
|
213
212
|
legacyToolReferenceFullNames: ["runTasks/runTask"],
|
|
214
|
-
displayName: ( localize(
|
|
213
|
+
displayName: ( localize(14575, "Run Task")),
|
|
215
214
|
modelDescription: `Runs a VS Code task.\n\n- If you see that an appropriate task exists for building or running code, prefer to use this tool to run the task instead of using the ${TerminalToolId.RunInTerminal} tool.\n- Make sure that any appropriate build or watch task is running before trying to run tests or execute code.\n- If the user asks to run a task, use this tool to do so.`,
|
|
216
|
-
userDescription: ( localize(
|
|
215
|
+
userDescription: ( localize(14576, "Run tasks in the workspace")),
|
|
217
216
|
icon: Codicon.tools,
|
|
218
217
|
source: ToolDataSource.Internal,
|
|
219
|
-
when: TasksAvailableContext,
|
|
220
218
|
inputSchema: {
|
|
221
219
|
"type": "object",
|
|
222
220
|
"properties": {
|
|
@@ -26,7 +26,7 @@ function toolResultMessageFromResponse(
|
|
|
26
26
|
) {
|
|
27
27
|
let resultSummary = "";
|
|
28
28
|
if (result?.exitCode) {
|
|
29
|
-
resultSummary = ( localize(
|
|
29
|
+
resultSummary = ( localize(14577, "Task `{0}` failed with exit code {1}.", taskLabel, result.exitCode));
|
|
30
30
|
} else {
|
|
31
31
|
resultSummary += `\`${taskLabel}\` task `;
|
|
32
32
|
const problemCount = toolResultDetails.length;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenize a single command segment (no `|`, `&&`, `||`, `;`) into argv-style
|
|
3
|
+
* words. Respects single quotes (no escaping), double quotes (with `\\`,
|
|
4
|
+
* `\"`, `\$`, `\`` escapes), and backslash-escapes outside of quotes.
|
|
5
|
+
*
|
|
6
|
+
* Returns `[]` for empty input. Never throws on malformed input — unterminated
|
|
7
|
+
* quotes are treated as if they ran to end of string.
|
|
8
|
+
*/
|
|
9
|
+
export declare function tokenize(segment: string): string[];
|
|
10
|
+
export type SegmentSeparator = "|" | "&&" | "||" | ";" | "|&";
|
|
11
|
+
export interface ICommandSegment {
|
|
12
|
+
readonly raw: string;
|
|
13
|
+
/** Argv-style tokens after stripping env prefixes / wrappers. */
|
|
14
|
+
readonly tokens: readonly string[];
|
|
15
|
+
/** Argv as written, before stripping env prefixes / wrappers. */
|
|
16
|
+
readonly rawTokens: readonly string[];
|
|
17
|
+
/** Env assignments stripped from the head, in source order. */
|
|
18
|
+
readonly envPrefixes: readonly string[];
|
|
19
|
+
/** Wrapper programs stripped from the head, in source order. */
|
|
20
|
+
readonly wrappers: readonly string[];
|
|
21
|
+
/** Separator that ended this segment, or `undefined` for the last segment. */
|
|
22
|
+
readonly trailingSeparator: SegmentSeparator | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface IParsedCommand {
|
|
25
|
+
readonly raw: string;
|
|
26
|
+
readonly segments: readonly ICommandSegment[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse a full command line into segments. Each segment carries both the raw
|
|
30
|
+
* tokens and the "effective" tokens (with env / wrapper prefixes stripped).
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseCommand(command: string | undefined): IParsedCommand | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the head program (after stripping env / wrappers) and the first
|
|
35
|
+
* subcommand-like token. Long flags (`--no-pager`) are skipped between head
|
|
36
|
+
* and sub. Returns `undefined` when the segment has no tokens.
|
|
37
|
+
*/
|
|
38
|
+
export declare function segmentHead(segment: ICommandSegment): {
|
|
39
|
+
head: string;
|
|
40
|
+
sub: string | undefined;
|
|
41
|
+
} | undefined;
|
|
42
|
+
/** Convenience: parse + return head of first segment. */
|
|
43
|
+
export declare function parseCommandHead(command: string | undefined): {
|
|
44
|
+
head: string;
|
|
45
|
+
sub: string | undefined;
|
|
46
|
+
} | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Does the segment's flag set contain any of `flags`? Recognizes both
|
|
49
|
+
* short-bundled flags (`-la` contains `l` and `a`) and long flags.
|
|
50
|
+
*/
|
|
51
|
+
export declare function segmentHasFlag(segment: ICommandSegment, flags: readonly string[]): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Iterate over every segment in the parsed command. Useful for filters that
|
|
54
|
+
* want to act on any segment of a pipeline (e.g. `cat foo.txt | grep bar`
|
|
55
|
+
* — the `cat` filter wants to fire on the first segment).
|
|
56
|
+
*/
|
|
57
|
+
export declare function findSegments(parsed: IParsedCommand, predicate: (head: {
|
|
58
|
+
head: string;
|
|
59
|
+
sub: string | undefined;
|
|
60
|
+
}, segment: ICommandSegment) => boolean): ICommandSegment[];
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
const WRAPPER_PROGRAMS = ( new Set([
|
|
4
|
+
"sudo",
|
|
5
|
+
"doas",
|
|
6
|
+
"time",
|
|
7
|
+
"command",
|
|
8
|
+
"builtin",
|
|
9
|
+
"exec",
|
|
10
|
+
"nice",
|
|
11
|
+
"ionice",
|
|
12
|
+
"nohup",
|
|
13
|
+
"env",
|
|
14
|
+
"xargs",
|
|
15
|
+
"stdbuf",
|
|
16
|
+
"unbuffer",
|
|
17
|
+
"script",
|
|
18
|
+
"timeout"
|
|
19
|
+
]));
|
|
20
|
+
const ENV_ASSIGN_RE = /^[A-Za-z_][A-Za-z0-9_]*=.*$/;
|
|
21
|
+
function tokenize(segment) {
|
|
22
|
+
const tokens = [];
|
|
23
|
+
let cur = "";
|
|
24
|
+
let inSingle = false;
|
|
25
|
+
let inDouble = false;
|
|
26
|
+
let hasContent = false;
|
|
27
|
+
for (let i = 0; i < segment.length; i++) {
|
|
28
|
+
const ch = segment[i];
|
|
29
|
+
if (inSingle) {
|
|
30
|
+
if (ch === "'") {
|
|
31
|
+
inSingle = false;
|
|
32
|
+
} else {
|
|
33
|
+
cur += ch;
|
|
34
|
+
}
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (inDouble) {
|
|
38
|
+
if (ch === "\\" && i + 1 < segment.length) {
|
|
39
|
+
const next = segment[i + 1];
|
|
40
|
+
if (next === "\\" || next === "\"" || next === "$" || next === "`") {
|
|
41
|
+
cur += next;
|
|
42
|
+
i++;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
cur += ch;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (ch === "\"") {
|
|
49
|
+
inDouble = false;
|
|
50
|
+
} else {
|
|
51
|
+
cur += ch;
|
|
52
|
+
}
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (ch === "\\" && i + 1 < segment.length) {
|
|
56
|
+
cur += segment[i + 1];
|
|
57
|
+
i++;
|
|
58
|
+
hasContent = true;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (ch === "'") {
|
|
62
|
+
inSingle = true;
|
|
63
|
+
hasContent = true;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (ch === "\"") {
|
|
67
|
+
inDouble = true;
|
|
68
|
+
hasContent = true;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (/\s/.test(ch)) {
|
|
72
|
+
if (cur.length > 0 || hasContent) {
|
|
73
|
+
tokens.push(cur);
|
|
74
|
+
cur = "";
|
|
75
|
+
hasContent = false;
|
|
76
|
+
}
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
cur += ch;
|
|
80
|
+
hasContent = true;
|
|
81
|
+
}
|
|
82
|
+
if (cur.length > 0 || hasContent) {
|
|
83
|
+
tokens.push(cur);
|
|
84
|
+
}
|
|
85
|
+
return tokens;
|
|
86
|
+
}
|
|
87
|
+
function splitSegments(command) {
|
|
88
|
+
const out = [];
|
|
89
|
+
let cur = "";
|
|
90
|
+
let inSingle = false;
|
|
91
|
+
let inDouble = false;
|
|
92
|
+
const push = sep => {
|
|
93
|
+
const trimmed = cur.trim();
|
|
94
|
+
if (trimmed.length > 0 || sep !== undefined) {
|
|
95
|
+
out.push({
|
|
96
|
+
raw: trimmed,
|
|
97
|
+
sep
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
cur = "";
|
|
101
|
+
};
|
|
102
|
+
for (let i = 0; i < command.length; i++) {
|
|
103
|
+
const ch = command[i];
|
|
104
|
+
if (inSingle) {
|
|
105
|
+
cur += ch;
|
|
106
|
+
if (ch === "'") {
|
|
107
|
+
inSingle = false;
|
|
108
|
+
}
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (inDouble) {
|
|
112
|
+
if (ch === "\\" && i + 1 < command.length) {
|
|
113
|
+
cur += ch + command[i + 1];
|
|
114
|
+
i++;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
cur += ch;
|
|
118
|
+
if (ch === "\"") {
|
|
119
|
+
inDouble = false;
|
|
120
|
+
}
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (ch === "\\" && i + 1 < command.length) {
|
|
124
|
+
cur += ch + command[i + 1];
|
|
125
|
+
i++;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (ch === "'") {
|
|
129
|
+
inSingle = true;
|
|
130
|
+
cur += ch;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (ch === "\"") {
|
|
134
|
+
inDouble = true;
|
|
135
|
+
cur += ch;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (ch === "|" && command[i + 1] === "|") {
|
|
139
|
+
push("||");
|
|
140
|
+
i++;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (ch === "|" && command[i + 1] === "&") {
|
|
144
|
+
push("|&");
|
|
145
|
+
i++;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (ch === "|") {
|
|
149
|
+
push("|");
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (ch === "&" && command[i + 1] === "&") {
|
|
153
|
+
push("&&");
|
|
154
|
+
i++;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (ch === ";") {
|
|
158
|
+
push(";");
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
cur += ch;
|
|
162
|
+
}
|
|
163
|
+
push(undefined);
|
|
164
|
+
return out;
|
|
165
|
+
}
|
|
166
|
+
function stripPrefixesAndWrappers(rawTokens) {
|
|
167
|
+
const envPrefixes = [];
|
|
168
|
+
const wrappers = [];
|
|
169
|
+
let i = 0;
|
|
170
|
+
while (i < rawTokens.length && ENV_ASSIGN_RE.test(rawTokens[i])) {
|
|
171
|
+
envPrefixes.push(rawTokens[i]);
|
|
172
|
+
i++;
|
|
173
|
+
}
|
|
174
|
+
while (i < rawTokens.length) {
|
|
175
|
+
const tok = rawTokens[i];
|
|
176
|
+
if (( WRAPPER_PROGRAMS.has(tok))) {
|
|
177
|
+
wrappers.push(tok);
|
|
178
|
+
i++;
|
|
179
|
+
while (i < rawTokens.length) {
|
|
180
|
+
const next = rawTokens[i];
|
|
181
|
+
if (next === "--") {
|
|
182
|
+
i++;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
if (next.startsWith("-")) {
|
|
186
|
+
i++;
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if (ENV_ASSIGN_RE.test(next)) {
|
|
190
|
+
envPrefixes.push(next);
|
|
191
|
+
i++;
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if ((tok === "timeout" || tok === "nice" || tok === "ionice") && /^\d/.test(next)) {
|
|
195
|
+
i++;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
tokens: rawTokens.slice(i),
|
|
206
|
+
envPrefixes,
|
|
207
|
+
wrappers
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function parseCommand(command) {
|
|
211
|
+
if (!command) {
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
const trimmed = command.trim();
|
|
215
|
+
if (!trimmed) {
|
|
216
|
+
return undefined;
|
|
217
|
+
}
|
|
218
|
+
const rawSegments = splitSegments(trimmed);
|
|
219
|
+
if (rawSegments.length === 0) {
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
const segments = ( rawSegments.map(seg => {
|
|
223
|
+
const rawTokens = tokenize(seg.raw);
|
|
224
|
+
const {
|
|
225
|
+
tokens,
|
|
226
|
+
envPrefixes,
|
|
227
|
+
wrappers
|
|
228
|
+
} = stripPrefixesAndWrappers(rawTokens);
|
|
229
|
+
return {
|
|
230
|
+
raw: seg.raw,
|
|
231
|
+
rawTokens,
|
|
232
|
+
tokens,
|
|
233
|
+
envPrefixes,
|
|
234
|
+
wrappers,
|
|
235
|
+
trailingSeparator: seg.sep
|
|
236
|
+
};
|
|
237
|
+
}));
|
|
238
|
+
return {
|
|
239
|
+
raw: trimmed,
|
|
240
|
+
segments
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
function segmentHead(segment) {
|
|
244
|
+
const tokens = segment.tokens;
|
|
245
|
+
if (tokens.length === 0) {
|
|
246
|
+
return undefined;
|
|
247
|
+
}
|
|
248
|
+
const head = tokens[0];
|
|
249
|
+
let sub;
|
|
250
|
+
for (let i = 1; i < tokens.length; i++) {
|
|
251
|
+
if (tokens[i].startsWith("--")) {
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
sub = tokens[i];
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
head,
|
|
259
|
+
sub
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
function segmentHasFlag(segment, flags) {
|
|
263
|
+
const longFlags = ( flags.filter(f => f.length > 1).map(f => `--${f}`));
|
|
264
|
+
const shortFlags = flags.filter(f => f.length === 1);
|
|
265
|
+
for (const tok of segment.tokens) {
|
|
266
|
+
if (!tok.startsWith("-") || tok === "--") {
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
if (tok.startsWith("--")) {
|
|
270
|
+
const name = tok.slice(2).split("=")[0];
|
|
271
|
+
if (longFlags.includes(`--${name}`)) {
|
|
272
|
+
return true;
|
|
273
|
+
}
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
const bundled = tok.slice(1);
|
|
277
|
+
for (const f of shortFlags) {
|
|
278
|
+
if (bundled.includes(f)) {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export { parseCommand, segmentHasFlag, segmentHead, tokenize };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IToolResultCache, IToolResultCacheHit } from "../../../../chat/common/tools/toolResultCompressor.js";
|
|
2
|
+
import { TerminalToolId } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/terminalToolIds";
|
|
3
|
+
export declare enum CacheClass {
|
|
4
|
+
/** `git status`, `ls`, `pwd` — likely to change quickly. */
|
|
5
|
+
Fast = "fast",
|
|
6
|
+
/** test runners. */
|
|
7
|
+
Medium = "medium",
|
|
8
|
+
/** `git log`, `find`, `tree`. */
|
|
9
|
+
Slow = "slow"
|
|
10
|
+
}
|
|
11
|
+
export declare class TerminalOutputCache implements IToolResultCache {
|
|
12
|
+
readonly id = "terminal.session-dedup";
|
|
13
|
+
readonly toolIds: TerminalToolId[];
|
|
14
|
+
private readonly _entries;
|
|
15
|
+
private readonly _now;
|
|
16
|
+
constructor(now?: () => number);
|
|
17
|
+
private _key;
|
|
18
|
+
observe(_toolId: string, input: unknown): void;
|
|
19
|
+
lookup(_toolId: string, input: unknown): IToolResultCacheHit | undefined;
|
|
20
|
+
record(_toolId: string, input: unknown, text: string): void;
|
|
21
|
+
/** External hook for editor file-write notifications etc. */
|
|
22
|
+
invalidateCwd(cwd: string): void;
|
|
23
|
+
private _invalidateByProgram;
|
|
24
|
+
}
|