@codingame/monaco-vscode-chat-service-override 26.2.2 → 27.0.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 +31 -1
- package/package.json +5 -5
- package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +15 -0
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.d.ts +53 -0
- package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.js +219 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +39 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +83 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/newSession.d.ts +123 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +274 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +71 -0
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +284 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +79 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +378 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +27 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +9 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +74 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +54 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +87 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +71 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +43 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +22 -3
- 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 +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +154 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +6 -8
- 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 +53 -43
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +84 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +15 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +204 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +77 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +541 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +10 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +70 -65
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +7 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +27 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +4 -2
- 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 +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +90 -51
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +20 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +43 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +7 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +84 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/{localAgentSessionsProvider.d.ts → localAgentSessionsController.d.ts} +7 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/{localAgentSessionsProvider.js → localAgentSessionsController.js} +24 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +171 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +48 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +19 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +181 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +943 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +248 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +118 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +727 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +72 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +165 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +75 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +623 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +858 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +30 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgetRegistry.d.ts +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgetRegistry.js +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +19 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +36 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +529 -363
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +419 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.js +46 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.d.ts +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +198 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +305 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +64 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +84 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +110 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +111 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.d.ts +71 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +611 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.d.ts +125 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +504 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.js +914 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +128 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +58 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +429 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +113 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +126 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +279 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +122 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +85 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +781 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +5 -22
- 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 +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +16 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +63 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +26 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatManagementEditor.css +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +15 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +40 -413
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +38 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +56 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +15 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +138 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +11 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +166 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +37 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +351 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +118 -63
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +182 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +892 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +55 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +28 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/createSlashCommandsUsageTracker.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/createSlashCommandsUsageTracker.js +62 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +110 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.js +39 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.js +39 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +102 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +16 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +69 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +2 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +76 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.js +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +43 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +67 -42
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +242 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +45 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +311 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +10 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +8 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +64 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +4 -2
- 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 +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +15 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +42 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +58 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +8 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +15 -6
- package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +39 -0
- package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.d.ts +190 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +11 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +188 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +18 -8
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +192 -85
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +16 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +8 -4
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +111 -7
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.js +29 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +73 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +622 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +64 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +478 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +35 -16
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +1 -30
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +2 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +23 -22
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +44 -14
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +345 -113
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +14 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +34 -24
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +11 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +248 -24
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +6 -11
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +18 -81
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +2 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +10 -10
- 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 +6 -6
- 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/media/terminalChatWidget.css +6 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +35 -26
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +1 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +13 -11
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
- 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.js +3 -3
- 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/monitoring/outputMonitor.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +280 -65
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +47 -19
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +31 -0
- 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 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +38 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +0 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +0 -587
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +0 -71
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +0 -293
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +0 -31
|
@@ -39,7 +39,7 @@ import { toToolSetVariableEntry, toToolVariableEntry } from '@codingame/monaco-v
|
|
|
39
39
|
import { ToolConfirmKind, IChatToolInvocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
|
|
40
40
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
|
|
41
41
|
import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
42
|
-
import { ChatToolInvocation } from '
|
|
42
|
+
import { ChatToolInvocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation';
|
|
43
43
|
import { chatSessionResourceToId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
|
|
44
44
|
import { HookType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
|
|
45
45
|
import { ILanguageModelToolsConfirmationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsConfirmationService.service';
|
|
@@ -58,9 +58,10 @@ var AutoApproveStorageKeys;
|
|
|
58
58
|
AutoApproveStorageKeys["GlobalAutoApproveOptIn"] = "chat.tools.global.autoApprove.optIn";
|
|
59
59
|
})(AutoApproveStorageKeys || (AutoApproveStorageKeys = {}));
|
|
60
60
|
const SkipAutoApproveConfirmationKey = "vscode.chat.tools.global.autoApprove.testMode";
|
|
61
|
+
const toolIdThatCannotBeAutoApproved = "vscode_get_confirmation_with_options";
|
|
61
62
|
const globalAutoApproveDescription = ( localize2(
|
|
62
|
-
|
|
63
|
-
"Global auto approve also known as \"YOLO mode\" disables manual approval completely for _all tools in all workspaces_, allowing the agent to act fully autonomously. This is extremely dangerous and is *never* recommended, even containerized environments like [Codespaces](https://github.com/features/codespaces) and [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) have user keys forwarded into the container that could be compromised.\n\n**This feature disables [critical security protections](https://code.visualstudio.com/docs/copilot/security) and makes it much easier for an attacker to compromise the machine
|
|
63
|
+
6345,
|
|
64
|
+
"Global auto approve also known as \"YOLO mode\" disables manual approval completely for _all tools in all workspaces_, allowing the agent to act fully autonomously. This is extremely dangerous and is *never* recommended, even containerized environments like [Codespaces](https://github.com/features/codespaces) and [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) have user keys forwarded into the container that could be compromised.\n\n**This feature disables [critical security protections](https://code.visualstudio.com/docs/copilot/security) and makes it much easier for an attacker to compromise the machine.**\n\nNote: This setting only controls tool approval and does not prevent the agent from asking questions. To automatically answer agent questions, use the [`chat.autoReply`](command:workbench.action.openSettings?%5B%22chat.autoReply%22%5D) setting."
|
|
64
65
|
));
|
|
65
66
|
let LanguageModelToolsService = class LanguageModelToolsService extends Disposable {
|
|
66
67
|
static {
|
|
@@ -101,7 +102,7 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
101
102
|
this.onDidPrepareToolCallBecomeUnresponsive = this._onDidPrepareToolCallBecomeUnresponsive.event;
|
|
102
103
|
this._onDidInvokeTool = this._register(( new Emitter()));
|
|
103
104
|
this.onDidInvokeTool = this._onDidInvokeTool.event;
|
|
104
|
-
this._onDidChangeToolsScheduler = ( new RunOnceScheduler(() => this._onDidChangeTools.fire(), 750));
|
|
105
|
+
this._onDidChangeToolsScheduler = this._register(( new RunOnceScheduler(() => this._onDidChangeTools.fire(), 750)));
|
|
105
106
|
this._tools = ( new Map());
|
|
106
107
|
this._toolContextKeys = ( new Set());
|
|
107
108
|
this._callsByRequestId = ( new Map());
|
|
@@ -160,25 +161,25 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
160
161
|
this.vscodeToolSet = this._register(
|
|
161
162
|
this.createToolSet(ToolDataSource.Internal, "vscode", VSCodeToolReference.vscode, {
|
|
162
163
|
icon: ThemeIcon.fromId(Codicon.vscode.id),
|
|
163
|
-
description: ( localize(
|
|
164
|
+
description: ( localize(6346, "Use VS Code features"))
|
|
164
165
|
})
|
|
165
166
|
);
|
|
166
167
|
this.executeToolSet = this._register(
|
|
167
168
|
this.createToolSet(ToolDataSource.Internal, "execute", SpecedToolAliases.execute, {
|
|
168
169
|
icon: ThemeIcon.fromId(Codicon.terminal.id),
|
|
169
|
-
description: ( localize(
|
|
170
|
+
description: ( localize(6347, "Execute code and applications on your machine"))
|
|
170
171
|
})
|
|
171
172
|
);
|
|
172
173
|
this.readToolSet = this._register(
|
|
173
174
|
this.createToolSet(ToolDataSource.Internal, "read", SpecedToolAliases.read, {
|
|
174
175
|
icon: ThemeIcon.fromId(Codicon.book.id),
|
|
175
|
-
description: ( localize(
|
|
176
|
+
description: ( localize(6348, "Read files in your workspace"))
|
|
176
177
|
})
|
|
177
178
|
);
|
|
178
179
|
this.agentToolSet = this._register(
|
|
179
180
|
this.createToolSet(ToolDataSource.Internal, "agent", SpecedToolAliases.agent, {
|
|
180
181
|
icon: ThemeIcon.fromId(Codicon.agent.id),
|
|
181
|
-
description: ( localize(
|
|
182
|
+
description: ( localize(6349, "Delegate tasks to other agents"))
|
|
182
183
|
})
|
|
183
184
|
);
|
|
184
185
|
}
|
|
@@ -187,6 +188,9 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
187
188
|
if (agentModeEnabled !== false) {
|
|
188
189
|
return true;
|
|
189
190
|
}
|
|
191
|
+
if (!isToolSet(toolOrToolSet) && toolOrToolSet.canBeReferencedInPrompt === false && toolOrToolSet.source.type === "internal") {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
190
194
|
const permittedInternalToolSetIds = [SpecedToolAliases.read, SpecedToolAliases.search, SpecedToolAliases.web];
|
|
191
195
|
if (isToolSet(toolOrToolSet)) {
|
|
192
196
|
const permitted = toolOrToolSet.source.type === "internal" && permittedInternalToolSetIds.includes(toolOrToolSet.referenceName);
|
|
@@ -329,8 +333,8 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
329
333
|
return undefined;
|
|
330
334
|
}
|
|
331
335
|
_handlePreToolUseDenial(dto, hookResult, toolData, pendingInvocation, request) {
|
|
332
|
-
const hookReason = hookResult.permissionDecisionReason ?? ( localize(
|
|
333
|
-
const reason = ( localize(
|
|
336
|
+
const hookReason = hookResult.permissionDecisionReason ?? ( localize(6350, "Hook denied tool execution"));
|
|
337
|
+
const reason = ( localize(6351, "Denied by {0} hook: {1}", HookType.PreToolUse, hookReason));
|
|
334
338
|
this._logService.debug(
|
|
335
339
|
`[LanguageModelToolsService#invokeTool] Tool ${dto.toolId} denied by preToolUse hook: ${hookReason}`
|
|
336
340
|
);
|
|
@@ -386,6 +390,12 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
386
390
|
if (dto.context?.sessionResource) {
|
|
387
391
|
model = this._chatService.getSession(dto.context.sessionResource);
|
|
388
392
|
request = model?.getRequests().at(-1);
|
|
393
|
+
if (request?.response?.isCanceled || request?.response?.isComplete) {
|
|
394
|
+
this._logService.debug(
|
|
395
|
+
`[LanguageModelToolsService#invokeTool] Ignoring tool ${dto.toolId} for cancelled/complete request ${request.id}`
|
|
396
|
+
);
|
|
397
|
+
throw ( new CancellationError());
|
|
398
|
+
}
|
|
389
399
|
}
|
|
390
400
|
let pendingToolCallKey;
|
|
391
401
|
let toolInvocation;
|
|
@@ -530,6 +540,9 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
530
540
|
};
|
|
531
541
|
return toolResult;
|
|
532
542
|
}
|
|
543
|
+
if (userConfirmed.type === ToolConfirmKind.UserAction && userConfirmed.selectedButton) {
|
|
544
|
+
dto.selectedCustomButton = userConfirmed.selectedButton;
|
|
545
|
+
}
|
|
533
546
|
if (dto.toolSpecificData?.kind === "input") {
|
|
534
547
|
dto.parameters = dto.toolSpecificData.rawInput;
|
|
535
548
|
dto.toolSpecificData = undefined;
|
|
@@ -566,17 +579,14 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
566
579
|
}, token);
|
|
567
580
|
invocationTimeWatch.stop();
|
|
568
581
|
this.ensureToolDetails(dto, toolResult, tool.data);
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
if (autoConfirmedPost) {
|
|
578
|
-
IChatToolInvocation.confirmWith(toolInvocation, autoConfirmedPost);
|
|
579
|
-
}
|
|
582
|
+
const afterExecuteState = await toolInvocation?.didExecuteTool(toolResult, undefined, () => this.shouldAutoConfirmPostExecution(
|
|
583
|
+
tool.data.id,
|
|
584
|
+
tool.data.runsInWorkspace,
|
|
585
|
+
tool.data.source,
|
|
586
|
+
dto.parameters,
|
|
587
|
+
dto.context?.sessionResource
|
|
588
|
+
));
|
|
589
|
+
if (toolInvocation && afterExecuteState?.type === IChatToolInvocation.StateKind.WaitingForPostApproval) {
|
|
580
590
|
const postConfirm = await IChatToolInvocation.awaitPostConfirmation(toolInvocation, token);
|
|
581
591
|
if (postConfirm.type === ToolConfirmKind.Denied) {
|
|
582
592
|
throw ( new CancellationError());
|
|
@@ -604,7 +614,7 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
604
614
|
const result = isCancellationError(err) ? "userCancelled" : "error";
|
|
605
615
|
this._telemetryService.publicLog2("languageModelToolInvoked", {
|
|
606
616
|
result,
|
|
607
|
-
chatSessionId: dto.context?.
|
|
617
|
+
chatSessionId: dto.context?.sessionResource ? chatSessionResourceToId(dto.context.sessionResource) : undefined,
|
|
608
618
|
toolId: tool.data.id,
|
|
609
619
|
toolExtensionId: tool.data.source.type === "extension" ? tool.data.source.extensionId.value : undefined,
|
|
610
620
|
toolSourceKind: tool.data.source.type,
|
|
@@ -642,7 +652,7 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
642
652
|
async prepareToolInvocationWithHookResult(tool, dto, hookResult, token) {
|
|
643
653
|
let forceConfirmationReason;
|
|
644
654
|
if (hookResult?.permissionDecision === "ask") {
|
|
645
|
-
const hookMessage = ( localize(
|
|
655
|
+
const hookMessage = ( localize(6352, "{0} required confirmation", HookType.PreToolUse));
|
|
646
656
|
forceConfirmationReason = hookResult.permissionDecisionReason ? `${hookMessage}: ${hookResult.permissionDecisionReason}` : hookMessage;
|
|
647
657
|
}
|
|
648
658
|
return this.prepareToolInvocation(tool, dto, forceConfirmationReason, token);
|
|
@@ -655,7 +665,7 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
655
665
|
return {
|
|
656
666
|
autoConfirmed: {
|
|
657
667
|
type: ToolConfirmKind.ConfirmationNotNeeded,
|
|
658
|
-
reason: ( localize(
|
|
668
|
+
reason: ( localize(6353, "Allowed by hook"))
|
|
659
669
|
},
|
|
660
670
|
preparedInvocation
|
|
661
671
|
};
|
|
@@ -671,14 +681,14 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
671
681
|
const fullReferenceName = getToolFullReferenceName(tool.data);
|
|
672
682
|
const hookReason = hookResult.permissionDecisionReason;
|
|
673
683
|
const hookNote = hookReason ? ( localize(
|
|
674
|
-
|
|
684
|
+
6354,
|
|
675
685
|
"{0} hook required confirmation: {1}",
|
|
676
686
|
HookType.PreToolUse,
|
|
677
687
|
hookReason
|
|
678
|
-
)) : ( localize(
|
|
688
|
+
)) : ( localize(6355, "{0} hook required confirmation", HookType.PreToolUse));
|
|
679
689
|
preparedInvocation.confirmationMessages = {
|
|
680
690
|
...preparedInvocation.confirmationMessages,
|
|
681
|
-
title: ( localize(
|
|
691
|
+
title: ( localize(6356, "Use the '{0}' tool?", fullReferenceName)),
|
|
682
692
|
message: ( new MarkdownString(`_${hookNote}_`)),
|
|
683
693
|
allowAutoConfirm: false
|
|
684
694
|
};
|
|
@@ -689,11 +699,11 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
689
699
|
} else {
|
|
690
700
|
const hookReason = hookResult.permissionDecisionReason;
|
|
691
701
|
const hookNote = hookReason ? ( localize(
|
|
692
|
-
|
|
702
|
+
6357,
|
|
693
703
|
"{0} hook required confirmation: {1}",
|
|
694
704
|
HookType.PreToolUse,
|
|
695
705
|
hookReason
|
|
696
|
-
)) : ( localize(
|
|
706
|
+
)) : ( localize(6358, "{0} hook required confirmation", HookType.PreToolUse));
|
|
697
707
|
const existing = preparedInvocation.confirmationMessages;
|
|
698
708
|
if (preparedInvocation.toolSpecificData?.kind === "terminal") {
|
|
699
709
|
const existingDisclaimerText = existing.disclaimer ? (typeof existing.disclaimer === "string" ? existing.disclaimer : existing.disclaimer.value) : undefined;
|
|
@@ -736,7 +746,6 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
736
746
|
parameters: dto.parameters,
|
|
737
747
|
toolCallId: dto.callId,
|
|
738
748
|
chatRequestId: dto.chatRequestId,
|
|
739
|
-
chatSessionId: dto.context?.sessionId,
|
|
740
749
|
chatSessionResource: dto.context?.sessionResource,
|
|
741
750
|
chatInteractionId: dto.chatInteractionId,
|
|
742
751
|
modelId: dto.modelId,
|
|
@@ -759,10 +768,10 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
759
768
|
const fullReferenceName = getToolFullReferenceName(tool.data);
|
|
760
769
|
prepared.confirmationMessages = {
|
|
761
770
|
...prepared.confirmationMessages,
|
|
762
|
-
title: ( localize(
|
|
763
|
-
message: ( localize(
|
|
764
|
-
disclaimer: ( new MarkdownString(( localize(
|
|
765
|
-
|
|
771
|
+
title: ( localize(6359, "Confirm tool execution")),
|
|
772
|
+
message: ( localize(6360, "Run the '{0}' tool?", fullReferenceName)),
|
|
773
|
+
disclaimer: tool.data.id === toolIdThatCannotBeAutoApproved ? undefined : ( new MarkdownString(( localize(
|
|
774
|
+
6361,
|
|
766
775
|
"Auto approval for '{0}' is restricted via {1}.",
|
|
767
776
|
getToolFullReferenceName(tool.data),
|
|
768
777
|
createMarkdownCommandLink({
|
|
@@ -777,8 +786,8 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
777
786
|
};
|
|
778
787
|
}
|
|
779
788
|
if (!isEligibleForAutoApproval && prepared?.confirmationMessages?.title) {
|
|
780
|
-
prepared.confirmationMessages.disclaimer = ( new MarkdownString(( localize(
|
|
781
|
-
|
|
789
|
+
prepared.confirmationMessages.disclaimer = tool.data.id === toolIdThatCannotBeAutoApproved ? undefined : ( new MarkdownString(( localize(
|
|
790
|
+
6361,
|
|
782
791
|
"Auto approval for '{0}' is restricted via {1}.",
|
|
783
792
|
getToolFullReferenceName(tool.data),
|
|
784
793
|
createMarkdownCommandLink({
|
|
@@ -873,6 +882,10 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
873
882
|
if (autoApproved) {
|
|
874
883
|
return;
|
|
875
884
|
}
|
|
885
|
+
const pendingInvocations = toolInvocations.filter(inv => !IChatToolInvocation.executionConfirmedOrDenied(inv));
|
|
886
|
+
if (pendingInvocations.length === 0) {
|
|
887
|
+
return;
|
|
888
|
+
}
|
|
876
889
|
const setting = this._configurationService.getValue(AccessibilitySignal.chatUserActionRequired.settingsKey);
|
|
877
890
|
if (!setting) {
|
|
878
891
|
return;
|
|
@@ -881,7 +894,7 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
881
894
|
const announcementEnabled = this._accessibilityService.isScreenReaderOptimized() && setting.announcement === "auto";
|
|
882
895
|
if (soundEnabled || announcementEnabled) {
|
|
883
896
|
this._accessibilitySignalService.playSignal(AccessibilitySignal.chatUserActionRequired, {
|
|
884
|
-
customAlertMessage: this._instantiationService.invokeFunction(getToolConfirmationAlert,
|
|
897
|
+
customAlertMessage: this._instantiationService.invokeFunction(getToolConfirmationAlert, pendingInvocations),
|
|
885
898
|
userGesture: true,
|
|
886
899
|
modality: !soundEnabled ? "announcement" : undefined
|
|
887
900
|
});
|
|
@@ -934,6 +947,9 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
934
947
|
if (toolData.id === "copilot_fetchWebPage") {
|
|
935
948
|
return true;
|
|
936
949
|
}
|
|
950
|
+
if (toolData.id === toolIdThatCannotBeAutoApproved) {
|
|
951
|
+
return false;
|
|
952
|
+
}
|
|
937
953
|
const eligibilityConfig = this._configurationService.getValue(ChatConfiguration.EligibleForAutoApproval);
|
|
938
954
|
if (eligibilityConfig && typeof eligibilityConfig === "object" && fullReferenceName) {
|
|
939
955
|
if (Object.prototype.hasOwnProperty.call(eligibilityConfig, fullReferenceName)) {
|
|
@@ -1019,19 +1035,22 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
1019
1035
|
}
|
|
1020
1036
|
const promptResult = await this._dialogService.prompt({
|
|
1021
1037
|
type: Severity.Warning,
|
|
1022
|
-
message: ( localize(
|
|
1038
|
+
message: ( localize(6362, "Enable global auto approve?")),
|
|
1023
1039
|
buttons: [{
|
|
1024
|
-
label: ( localize(
|
|
1040
|
+
label: ( localize(6363, "Enable")),
|
|
1025
1041
|
run: () => true
|
|
1026
1042
|
}, {
|
|
1027
|
-
label: ( localize(
|
|
1043
|
+
label: ( localize(6364, "Disable")),
|
|
1028
1044
|
run: () => false
|
|
1029
1045
|
}],
|
|
1030
1046
|
custom: {
|
|
1031
1047
|
icon: Codicon.warning,
|
|
1032
|
-
disableCloseAction: true,
|
|
1033
1048
|
markdownDetails: [{
|
|
1034
|
-
markdown: ( new MarkdownString(globalAutoApproveDescription.value
|
|
1049
|
+
markdown: ( new MarkdownString(globalAutoApproveDescription.value, {
|
|
1050
|
+
isTrusted: {
|
|
1051
|
+
enabledCommands: ["workbench.action.openSettings"]
|
|
1052
|
+
}
|
|
1053
|
+
}))
|
|
1035
1054
|
}]
|
|
1036
1055
|
}
|
|
1037
1056
|
});
|
|
@@ -1070,6 +1089,7 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
1070
1089
|
}
|
|
1071
1090
|
for (const [toolCallId, invocation] of this._pendingToolCalls) {
|
|
1072
1091
|
if (invocation.chatRequestId === requestId) {
|
|
1092
|
+
invocation.cancelFromStreaming(ToolConfirmKind.Skipped);
|
|
1073
1093
|
this._pendingToolCalls.delete(toolCallId);
|
|
1074
1094
|
}
|
|
1075
1095
|
}
|
|
@@ -1303,7 +1323,12 @@ let LanguageModelToolsService = class LanguageModelToolsService extends Disposab
|
|
|
1303
1323
|
add(alias, fullReferenceName);
|
|
1304
1324
|
}
|
|
1305
1325
|
if (tool.legacyToolReferenceFullNames) {
|
|
1326
|
+
const slashIndex = fullReferenceName.lastIndexOf("/");
|
|
1327
|
+
const toolSetPrefix = slashIndex !== -1 ? fullReferenceName.substring(0, slashIndex + 1) : undefined;
|
|
1306
1328
|
for (const legacyName of tool.legacyToolReferenceFullNames) {
|
|
1329
|
+
if (toolSetPrefix && !legacyName.includes("/")) {
|
|
1330
|
+
add(toolSetPrefix + legacyName, fullReferenceName);
|
|
1331
|
+
}
|
|
1307
1332
|
if (legacyName.includes("/")) {
|
|
1308
1333
|
const toolSetFullName = legacyName.substring(0, legacyName.lastIndexOf("/"));
|
|
1309
1334
|
if (!( knownToolSetNames.has(toolSetFullName))) {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
2
|
+
import { 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 { IBulkEditService } from "@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/bulkEditService.service";
|
|
5
|
+
import { ILanguageFeaturesService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service";
|
|
6
|
+
import { ITextModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/resolverService.service";
|
|
7
|
+
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
8
|
+
import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
|
|
9
|
+
import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions";
|
|
10
|
+
import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service";
|
|
11
|
+
import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolInvocationPreparationContext, IToolResult, ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
|
|
12
|
+
import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service";
|
|
13
|
+
export declare const RenameToolId = "vscode_renameSymbol";
|
|
14
|
+
export declare class RenameTool extends Disposable implements IToolImpl {
|
|
15
|
+
private readonly _languageFeaturesService;
|
|
16
|
+
private readonly _textModelService;
|
|
17
|
+
private readonly _workspaceContextService;
|
|
18
|
+
private readonly _chatService;
|
|
19
|
+
private readonly _bulkEditService;
|
|
20
|
+
private readonly _onDidUpdateToolData;
|
|
21
|
+
readonly onDidUpdateToolData: Event<void>;
|
|
22
|
+
constructor(_languageFeaturesService: ILanguageFeaturesService, _textModelService: ITextModelService, _workspaceContextService: IWorkspaceContextService, _chatService: IChatService, _bulkEditService: IBulkEditService);
|
|
23
|
+
getToolData(): IToolData;
|
|
24
|
+
prepareToolInvocation(context: IToolInvocationPreparationContext, _token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
|
|
25
|
+
invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
|
|
26
|
+
private _successResult;
|
|
27
|
+
}
|
|
28
|
+
export declare class RenameToolContribution extends Disposable implements IWorkbenchContribution {
|
|
29
|
+
static readonly ID = "chat.renameTool";
|
|
30
|
+
constructor(toolsService: ILanguageModelToolsService, instantiationService: IInstantiationService);
|
|
31
|
+
}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
4
|
+
import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
5
|
+
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
6
|
+
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
7
|
+
import { ResourceMap, ResourceSet } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
8
|
+
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
9
|
+
import { Position } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position';
|
|
10
|
+
import { ResourceTextEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/bulkEditService';
|
|
11
|
+
import { IBulkEditService } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/bulkEditService.service';
|
|
12
|
+
import { ILanguageFeaturesService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service';
|
|
13
|
+
import { ITextModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/resolverService.service';
|
|
14
|
+
import { rename } from '@codingame/monaco-vscode-api/vscode/vs/editor/contrib/rename/browser/rename';
|
|
15
|
+
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
16
|
+
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
17
|
+
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
18
|
+
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
19
|
+
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
|
|
20
|
+
import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService';
|
|
21
|
+
import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
|
|
22
|
+
import { createToolSimpleTextResult } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/builtinTools/toolHelpers';
|
|
23
|
+
import { resolveToolUri, errorResult, findLineNumber, findSymbolColumn } from './toolHelpers.js';
|
|
24
|
+
|
|
25
|
+
const RenameToolId = "vscode_renameSymbol";
|
|
26
|
+
const BaseModelDescription = `Rename a code symbol across the workspace using the language server's rename functionality. This performs a precise, semantics-aware rename that updates all references.
|
|
27
|
+
|
|
28
|
+
Input:
|
|
29
|
+
- "symbol": The exact current name of the symbol to rename.
|
|
30
|
+
- "newName": The new name for the symbol.
|
|
31
|
+
- "uri": A full URI (e.g. "file:///path/to/file.ts") of a file where the symbol appears. Provide either "uri" or "filePath".
|
|
32
|
+
- "filePath": A workspace-relative file path (e.g. "src/utils/helpers.ts") of a file where the symbol appears. Provide either "uri" or "filePath".
|
|
33
|
+
- "lineContent": A substring of the line of code where the symbol appears. This is used to locate the exact position in the file. Must be the actual text from the file - do NOT fabricate it.
|
|
34
|
+
|
|
35
|
+
IMPORTANT: The file and line do NOT need to be the definition of the symbol. Any occurrence works - a usage, an import, a call site, etc. You can pick whichever occurrence is most convenient.
|
|
36
|
+
|
|
37
|
+
If the tool returns an error, retry with corrected input - ensure the file path is correct, the line content matches the actual file content, and the symbol name appears in that line.`;
|
|
38
|
+
let RenameTool = class RenameTool extends Disposable {
|
|
39
|
+
constructor(
|
|
40
|
+
_languageFeaturesService,
|
|
41
|
+
_textModelService,
|
|
42
|
+
_workspaceContextService,
|
|
43
|
+
_chatService,
|
|
44
|
+
_bulkEditService
|
|
45
|
+
) {
|
|
46
|
+
super();
|
|
47
|
+
this._languageFeaturesService = _languageFeaturesService;
|
|
48
|
+
this._textModelService = _textModelService;
|
|
49
|
+
this._workspaceContextService = _workspaceContextService;
|
|
50
|
+
this._chatService = _chatService;
|
|
51
|
+
this._bulkEditService = _bulkEditService;
|
|
52
|
+
this._onDidUpdateToolData = this._store.add(( new Emitter()));
|
|
53
|
+
this.onDidUpdateToolData = this._onDidUpdateToolData.event;
|
|
54
|
+
this._store.add(
|
|
55
|
+
Event.debounce(this._languageFeaturesService.renameProvider.onDidChange, () => {}, 2000)((() => this._onDidUpdateToolData.fire()))
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
getToolData() {
|
|
59
|
+
const languageIds = this._languageFeaturesService.renameProvider.registeredLanguageIds;
|
|
60
|
+
let modelDescription = BaseModelDescription;
|
|
61
|
+
if (( languageIds.has("*"))) {
|
|
62
|
+
modelDescription += "\n\nSupported for all languages.";
|
|
63
|
+
} else if (languageIds.size > 0) {
|
|
64
|
+
const sorted = [...languageIds].sort();
|
|
65
|
+
modelDescription += `\n\nCurrently supported for: ${sorted.join(", ")}.`;
|
|
66
|
+
} else {
|
|
67
|
+
modelDescription += "\n\nNo languages currently have rename providers registered.";
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
id: RenameToolId,
|
|
71
|
+
toolReferenceName: "rename",
|
|
72
|
+
canBeReferencedInPrompt: false,
|
|
73
|
+
icon: ThemeIcon.fromId(Codicon.rename.id),
|
|
74
|
+
displayName: ( localize(6365, "Rename Symbol")),
|
|
75
|
+
userDescription: ( localize(6366, "Rename a symbol across the workspace")),
|
|
76
|
+
modelDescription,
|
|
77
|
+
source: ToolDataSource.Internal,
|
|
78
|
+
when: ( ContextKeyExpr.has("config.chat.tools.renameTool.enabled")),
|
|
79
|
+
inputSchema: {
|
|
80
|
+
type: "object",
|
|
81
|
+
properties: {
|
|
82
|
+
symbol: {
|
|
83
|
+
type: "string",
|
|
84
|
+
description: "The exact current name of the symbol to rename."
|
|
85
|
+
},
|
|
86
|
+
newName: {
|
|
87
|
+
type: "string",
|
|
88
|
+
description: "The new name for the symbol."
|
|
89
|
+
},
|
|
90
|
+
uri: {
|
|
91
|
+
type: "string",
|
|
92
|
+
description: "A full URI of a file where the symbol appears (e.g. \"file:///path/to/file.ts\"). Provide either \"uri\" or \"filePath\"."
|
|
93
|
+
},
|
|
94
|
+
filePath: {
|
|
95
|
+
type: "string",
|
|
96
|
+
description: "A workspace-relative file path where the symbol appears (e.g. \"src/utils/helpers.ts\"). Provide either \"uri\" or \"filePath\"."
|
|
97
|
+
},
|
|
98
|
+
lineContent: {
|
|
99
|
+
type: "string",
|
|
100
|
+
description: "A substring of the line of code where the symbol appears. Used to locate the exact position. Must be actual text from the file."
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
required: ["symbol", "newName", "lineContent"]
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
async prepareToolInvocation(context, _token) {
|
|
108
|
+
const input = context.parameters;
|
|
109
|
+
return {
|
|
110
|
+
invocationMessage: ( localize(6367, "Renaming `{0}` to `{1}`", input.symbol, input.newName))
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
async invoke(invocation, _countTokens, _progress, token) {
|
|
114
|
+
const input = invocation.parameters;
|
|
115
|
+
const uri = resolveToolUri(input, this._workspaceContextService);
|
|
116
|
+
if (!uri) {
|
|
117
|
+
return errorResult(
|
|
118
|
+
"Provide either \"uri\" (a full URI) or \"filePath\" (a workspace-relative path) to identify the file."
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
const ref = await this._textModelService.createModelReference(uri);
|
|
122
|
+
try {
|
|
123
|
+
const model = ref.object.textEditorModel;
|
|
124
|
+
if (!( this._languageFeaturesService.renameProvider.has(model))) {
|
|
125
|
+
return errorResult(
|
|
126
|
+
`No rename provider available for this file's language. The rename tool may not support this language.`
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
const lineNumber = findLineNumber(model, input.lineContent);
|
|
130
|
+
if (lineNumber === undefined) {
|
|
131
|
+
return errorResult(`Could not find line content "${input.lineContent}" in ${( uri.toString())}. Provide the exact text from the line where the symbol appears.`);
|
|
132
|
+
}
|
|
133
|
+
const lineText = model.getLineContent(lineNumber);
|
|
134
|
+
const column = findSymbolColumn(lineText, input.symbol);
|
|
135
|
+
if (column === undefined) {
|
|
136
|
+
return errorResult(
|
|
137
|
+
`Could not find symbol "${input.symbol}" in the matched line. Ensure the symbol name is correct and appears in the provided line content.`
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
const position = ( new Position(lineNumber, column));
|
|
141
|
+
const renameResult = await rename(
|
|
142
|
+
this._languageFeaturesService.renameProvider,
|
|
143
|
+
model,
|
|
144
|
+
position,
|
|
145
|
+
input.newName
|
|
146
|
+
);
|
|
147
|
+
if (renameResult.rejectReason) {
|
|
148
|
+
return errorResult(`Rename rejected: ${renameResult.rejectReason}`);
|
|
149
|
+
}
|
|
150
|
+
if (renameResult.edits.length === 0) {
|
|
151
|
+
return errorResult(`Rename produced no edits.`);
|
|
152
|
+
}
|
|
153
|
+
if (invocation.context) {
|
|
154
|
+
const chatModel = this._chatService.getSession(invocation.context.sessionResource);
|
|
155
|
+
const request = chatModel?.getRequests().at(-1);
|
|
156
|
+
if (chatModel && request) {
|
|
157
|
+
const editsByUri = ( new ResourceMap());
|
|
158
|
+
for (const edit of renameResult.edits) {
|
|
159
|
+
if (ResourceTextEdit.is(edit)) {
|
|
160
|
+
let edits = editsByUri.get(edit.resource);
|
|
161
|
+
if (!edits) {
|
|
162
|
+
edits = [];
|
|
163
|
+
editsByUri.set(edit.resource, edits);
|
|
164
|
+
}
|
|
165
|
+
edits.push(edit.textEdit);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
for (const [editUri, edits] of editsByUri) {
|
|
169
|
+
chatModel.acceptResponseProgress(request, {
|
|
170
|
+
kind: "textEdit",
|
|
171
|
+
uri: editUri,
|
|
172
|
+
edits: []
|
|
173
|
+
});
|
|
174
|
+
chatModel.acceptResponseProgress(request, {
|
|
175
|
+
kind: "textEdit",
|
|
176
|
+
uri: editUri,
|
|
177
|
+
edits
|
|
178
|
+
});
|
|
179
|
+
chatModel.acceptResponseProgress(request, {
|
|
180
|
+
kind: "textEdit",
|
|
181
|
+
uri: editUri,
|
|
182
|
+
edits: [],
|
|
183
|
+
done: true
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return this._successResult(input, editsByUri.size, renameResult.edits.length);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
await this._bulkEditService.apply(renameResult);
|
|
190
|
+
const fileCount = ( new ResourceSet(( renameResult.edits.filter(ResourceTextEdit.is).map(e => e.resource)))).size;
|
|
191
|
+
return this._successResult(input, fileCount, renameResult.edits.length);
|
|
192
|
+
} finally {
|
|
193
|
+
ref.dispose();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
_successResult(input, fileCount, editCount) {
|
|
197
|
+
const text = editCount === 1 ? ( localize(
|
|
198
|
+
6368,
|
|
199
|
+
"Renamed `{0}` to `{1}` - 1 edit in {2} file.",
|
|
200
|
+
input.symbol,
|
|
201
|
+
input.newName,
|
|
202
|
+
fileCount
|
|
203
|
+
)) : ( localize(
|
|
204
|
+
6369,
|
|
205
|
+
"Renamed `{0}` to `{1}` - {2} edits across {3} files.",
|
|
206
|
+
input.symbol,
|
|
207
|
+
input.newName,
|
|
208
|
+
editCount,
|
|
209
|
+
fileCount
|
|
210
|
+
));
|
|
211
|
+
const result = createToolSimpleTextResult(text);
|
|
212
|
+
result.toolResultMessage = ( new MarkdownString(text));
|
|
213
|
+
return result;
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
RenameTool = ( __decorate([( __param(0, ILanguageFeaturesService)), ( __param(1, ITextModelService)), ( __param(2, IWorkspaceContextService)), ( __param(3, IChatService)), ( __param(4, IBulkEditService))], RenameTool));
|
|
217
|
+
let RenameToolContribution = class RenameToolContribution extends Disposable {
|
|
218
|
+
static {
|
|
219
|
+
this.ID = "chat.renameTool";
|
|
220
|
+
}
|
|
221
|
+
constructor(toolsService, instantiationService) {
|
|
222
|
+
super();
|
|
223
|
+
const renameTool = this._store.add(instantiationService.createInstance(RenameTool));
|
|
224
|
+
let registration;
|
|
225
|
+
const registerRenameTool = () => {
|
|
226
|
+
registration?.dispose();
|
|
227
|
+
toolsService.flushToolUpdates();
|
|
228
|
+
const toolData = renameTool.getToolData();
|
|
229
|
+
registration = toolsService.registerTool(toolData, renameTool);
|
|
230
|
+
};
|
|
231
|
+
registerRenameTool();
|
|
232
|
+
this._store.add(renameTool.onDidUpdateToolData(registerRenameTool));
|
|
233
|
+
this._store.add({
|
|
234
|
+
dispose: () => {
|
|
235
|
+
registration?.dispose();
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
RenameToolContribution = ( __decorate([( __param(0, ILanguageModelToolsService)), ( __param(1, IInstantiationService))], RenameToolContribution));
|
|
241
|
+
|
|
242
|
+
export { RenameTool, RenameToolContribution, RenameToolId };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
|
+
import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
|
|
3
|
+
import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
|
|
4
|
+
import { IToolResult } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService";
|
|
5
|
+
export interface ISymbolToolInput {
|
|
6
|
+
symbol: string;
|
|
7
|
+
uri?: string;
|
|
8
|
+
filePath?: string;
|
|
9
|
+
lineContent: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolves a URI from tool input. Accepts either a full URI string or a
|
|
13
|
+
* workspace-relative file path.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveToolUri(input: ISymbolToolInput, workspaceContextService: IWorkspaceContextService): URI | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Finds the line number in the model that matches the given line content.
|
|
18
|
+
* Whitespace is normalized so that extra spaces in the input still match.
|
|
19
|
+
*
|
|
20
|
+
* @returns The 1-based line number, or `undefined` if not found.
|
|
21
|
+
*/
|
|
22
|
+
export declare function findLineNumber(model: ITextModel, lineContent: string): number | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Finds the 1-based column of a symbol within a line of text using word
|
|
25
|
+
* boundary matching.
|
|
26
|
+
*
|
|
27
|
+
* @returns The 1-based column, or `undefined` if not found.
|
|
28
|
+
*/
|
|
29
|
+
export declare function findSymbolColumn(lineText: string, symbol: string): number | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Creates an error tool result with the given message as both the content
|
|
32
|
+
* and the tool result message.
|
|
33
|
+
*/
|
|
34
|
+
export declare function errorResult(message: string): IToolResult;
|