@codingame/monaco-vscode-chat-service-override 27.0.0 → 28.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 +5 -2
- package/package.json +5 -5
- package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +54 -4
- package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +179 -11
- package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +5 -1
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +6 -1
- package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +25 -10
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +67 -0
- package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +263 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +6 -0
- package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +25 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
- 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 +13 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +5 -5
- 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 +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +49 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +58 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +537 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.js +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/media/agentPluginEditor.css +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +17 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +89 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +4 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +146 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +56 -54
- 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 +5 -5
- 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.js +25 -25
- 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/aiCustomization/aiCustomizationIcons.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +13 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +7 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +189 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +42 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +20 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +210 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +14 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +122 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +87 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +62 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +702 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +279 -214
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +12 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +63 -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 +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +62 -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 +28 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +32 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +4 -5
- 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/media/chatEditorController.css +2 -2
- 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 +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +13 -13
- 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 +49 -49
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
- 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 +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +14 -14
- 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 +26 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +103 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +61 -61
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +245 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.d.ts +78 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.js +234 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +31 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +229 -524
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.js +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +54 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +11 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +112 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +99 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +489 -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 +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +348 -285
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +18 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +107 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +4 -4
- 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/tools/languageModelToolsConfirmationService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +55 -38
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +20 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +148 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +29 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +72 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +5 -3
- 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 +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +11 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +8 -0
- package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +20 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +72 -23
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +19 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +5 -1
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +37 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +36 -3
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +71 -25
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +217 -91
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +85 -3
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +257 -63
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +3 -16
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +7 -50
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +32 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +3 -1
- 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 +7 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +26 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +287 -88
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +10 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +75 -20
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +121 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +1422 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +81 -41
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +8 -6
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +14 -2
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +54 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +6 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +38 -22
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +8 -8
- 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/runInTerminalHelpers.js +6 -6
- 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/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 +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +36 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +27 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +1 -1
- 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 +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.d.ts +0 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +0 -67
|
@@ -3,7 +3,8 @@ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
|
3
3
|
import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
|
|
4
4
|
import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
|
|
5
5
|
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
6
|
-
import {
|
|
6
|
+
import { IHookCommand } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema";
|
|
7
|
+
import { HookType } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookTypes";
|
|
7
8
|
import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service";
|
|
8
9
|
import { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/common/platform";
|
|
9
10
|
/**
|
|
@@ -21,6 +22,18 @@ import { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/com
|
|
|
21
22
|
* @returns The selection range for the field value, or undefined if not found
|
|
22
23
|
*/
|
|
23
24
|
export declare function findHookCommandSelection(content: string, hookType: string, index: number, fieldName: string): ITextEditorSelection | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Finds the selection range for a hook command string in a YAML/Markdown file
|
|
27
|
+
* (e.g., an agent `.md` file with YAML frontmatter).
|
|
28
|
+
*
|
|
29
|
+
* Searches for the command text within command field lines and selects the value.
|
|
30
|
+
* Supports all hook command field keys: command, windows, linux, osx, bash, powershell.
|
|
31
|
+
*
|
|
32
|
+
* @param content The full file content
|
|
33
|
+
* @param commandText The command string to locate
|
|
34
|
+
* @returns The selection range, or undefined if not found
|
|
35
|
+
*/
|
|
36
|
+
export declare function findHookCommandInYaml(content: string, commandText: string): ITextEditorSelection | undefined;
|
|
24
37
|
/**
|
|
25
38
|
* Parsed hook information.
|
|
26
39
|
*/
|
|
@@ -36,10 +49,14 @@ export interface IParsedHook {
|
|
|
36
49
|
originalHookTypeId: string;
|
|
37
50
|
/** If true, this hook is disabled via `disableAllHooks: true` in its file */
|
|
38
51
|
disabled?: boolean;
|
|
52
|
+
/** If set, this hook came from a custom agent's frontmatter */
|
|
53
|
+
agentName?: string;
|
|
39
54
|
}
|
|
40
55
|
export interface IParseAllHookFilesOptions {
|
|
41
56
|
/** Additional file URIs to parse (e.g., files skipped due to disableAllHooks) */
|
|
42
57
|
additionalDisabledFileUris?: readonly URI[];
|
|
58
|
+
/** If true, also collect hooks from custom agent frontmatter */
|
|
59
|
+
includeAgentHooks?: boolean;
|
|
43
60
|
}
|
|
44
61
|
/**
|
|
45
62
|
* Parses all hook files and extracts individual hooks.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
import { findNodeAtLocation, parseTree, parse } from '@codingame/monaco-vscode-api/vscode/vs/base/common/json';
|
|
3
3
|
import { PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { formatHookCommandLabel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
|
|
5
|
+
import { HOOK_METADATA, HookType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookTypes';
|
|
6
|
+
import { parseHooksFromFile, parseHooksIgnoringDisableAll } from '../../common/promptSyntax/hookCompatibility.js';
|
|
6
7
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
7
8
|
|
|
8
9
|
function offsetToPosition(content, offset) {
|
|
@@ -69,6 +70,33 @@ function findHookCommandSelection(content, hookType, index, fieldName) {
|
|
|
69
70
|
endColumn: end.column
|
|
70
71
|
};
|
|
71
72
|
}
|
|
73
|
+
function findHookCommandInYaml(content, commandText) {
|
|
74
|
+
const commandFieldKeys = ["command", "windows", "linux", "osx", "bash", "powershell"];
|
|
75
|
+
const lines = content.split("\n");
|
|
76
|
+
for (let i = 0; i < lines.length; i++) {
|
|
77
|
+
const line = lines[i];
|
|
78
|
+
const trimmed = line.trimStart();
|
|
79
|
+
const matchedKey = commandFieldKeys.find(key => trimmed.startsWith(`${key}:`) || trimmed.startsWith(`- ${key}:`));
|
|
80
|
+
if (!matchedKey) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const colonIdx = line.indexOf(":");
|
|
84
|
+
const idx = line.indexOf(commandText, colonIdx + 1);
|
|
85
|
+
if (idx !== -1) {
|
|
86
|
+
const afterIdx = idx + commandText.length;
|
|
87
|
+
const charAfter = afterIdx < line.length ? line.charCodeAt(afterIdx) : -1;
|
|
88
|
+
if (charAfter === -1 || charAfter === 34 || charAfter === 39 || charAfter === 32 || charAfter === 9 ) {
|
|
89
|
+
return {
|
|
90
|
+
startLineNumber: i + 1,
|
|
91
|
+
startColumn: idx + 1,
|
|
92
|
+
endLineNumber: i + 1,
|
|
93
|
+
endColumn: idx + 1 + commandText.length
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
72
100
|
async function parseAllHookFiles(
|
|
73
101
|
promptsService,
|
|
74
102
|
fileService,
|
|
@@ -92,13 +120,13 @@ async function parseAllHookFiles(
|
|
|
92
120
|
hooks: commands,
|
|
93
121
|
originalId
|
|
94
122
|
}] of hooks) {
|
|
95
|
-
const hookTypeMeta =
|
|
123
|
+
const hookTypeMeta = HOOK_METADATA[hookType];
|
|
96
124
|
if (!hookTypeMeta) {
|
|
97
125
|
continue;
|
|
98
126
|
}
|
|
99
127
|
for (let i = 0; i < commands.length; i++) {
|
|
100
128
|
const command = commands[i];
|
|
101
|
-
const commandLabel = formatHookCommandLabel(command, os) || ( localize(
|
|
129
|
+
const commandLabel = formatHookCommandLabel(command, os) || ( localize(6298, "(empty command)"));
|
|
102
130
|
parsedHooks.push({
|
|
103
131
|
hookType,
|
|
104
132
|
hookTypeLabel: hookTypeMeta.label,
|
|
@@ -117,7 +145,81 @@ async function parseAllHookFiles(
|
|
|
117
145
|
console.error("Failed to read or parse hook file", ( hookFile.uri.toString()), error);
|
|
118
146
|
}
|
|
119
147
|
}
|
|
148
|
+
if (options?.additionalDisabledFileUris) {
|
|
149
|
+
for (const uri of options.additionalDisabledFileUris) {
|
|
150
|
+
try {
|
|
151
|
+
const content = await fileService.readFile(uri);
|
|
152
|
+
const json = parse(( content.value.toString()));
|
|
153
|
+
const {
|
|
154
|
+
hooks
|
|
155
|
+
} = parseHooksIgnoringDisableAll(uri, json, workspaceRootUri, userHome);
|
|
156
|
+
for (const [hookType, {
|
|
157
|
+
hooks: commands,
|
|
158
|
+
originalId
|
|
159
|
+
}] of hooks) {
|
|
160
|
+
const hookTypeMeta = HOOK_METADATA[hookType];
|
|
161
|
+
if (!hookTypeMeta) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
for (let i = 0; i < commands.length; i++) {
|
|
165
|
+
const command = commands[i];
|
|
166
|
+
const commandLabel = formatHookCommandLabel(command, os) || ( localize(6298, "(empty command)"));
|
|
167
|
+
parsedHooks.push({
|
|
168
|
+
hookType,
|
|
169
|
+
hookTypeLabel: hookTypeMeta.label,
|
|
170
|
+
command,
|
|
171
|
+
commandLabel,
|
|
172
|
+
fileUri: uri,
|
|
173
|
+
filePath: labelService.getUriLabel(uri, {
|
|
174
|
+
relative: true
|
|
175
|
+
}),
|
|
176
|
+
index: i,
|
|
177
|
+
originalHookTypeId: originalId,
|
|
178
|
+
disabled: true
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
} catch (error) {
|
|
183
|
+
console.error("Failed to read or parse disabled hook file", ( uri.toString()), error);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
{
|
|
188
|
+
const agents = await promptsService.getCustomAgents(token);
|
|
189
|
+
for (const agent of agents) {
|
|
190
|
+
if (!agent.hooks) {
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
for (const hookTypeValue of ( Object.values(HookType))) {
|
|
194
|
+
const commands = agent.hooks[hookTypeValue];
|
|
195
|
+
if (!commands || commands.length === 0) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const hookTypeMeta = HOOK_METADATA[hookTypeValue];
|
|
199
|
+
if (!hookTypeMeta) {
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
for (let i = 0; i < commands.length; i++) {
|
|
203
|
+
const command = commands[i];
|
|
204
|
+
const commandLabel = formatHookCommandLabel(command, os) || ( localize(6298, "(empty command)"));
|
|
205
|
+
parsedHooks.push({
|
|
206
|
+
hookType: hookTypeValue,
|
|
207
|
+
hookTypeLabel: hookTypeMeta.label,
|
|
208
|
+
command,
|
|
209
|
+
commandLabel,
|
|
210
|
+
fileUri: agent.uri,
|
|
211
|
+
filePath: labelService.getUriLabel(agent.uri, {
|
|
212
|
+
relative: true
|
|
213
|
+
}),
|
|
214
|
+
index: i,
|
|
215
|
+
originalHookTypeId: hookTypeValue,
|
|
216
|
+
agentName: agent.name
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
120
222
|
return parsedHooks;
|
|
121
223
|
}
|
|
122
224
|
|
|
123
|
-
export { findHookCommandSelection, parseAllHookFiles };
|
|
225
|
+
export { findHookCommandInYaml, findHookCommandSelection, parseAllHookFiles };
|
package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js
CHANGED
|
@@ -38,11 +38,11 @@ let PromptCodingAgentActionOverlayWidget = class PromptCodingAgentActionOverlayW
|
|
|
38
38
|
this._domNode = $(".prompt-coding-agent-action-overlay");
|
|
39
39
|
this._button = this._register(( new Button(this._domNode, {
|
|
40
40
|
supportIcons: true,
|
|
41
|
-
title: ( localize(
|
|
41
|
+
title: ( localize(6380, "Run prompt file in a remote coding agent"))
|
|
42
42
|
})));
|
|
43
43
|
this._button.element.style.background = "var(--vscode-button-background)";
|
|
44
44
|
this._button.element.style.color = "var(--vscode-button-foreground)";
|
|
45
|
-
this._button.label = ( localize(
|
|
45
|
+
this._button.label = ( localize(6381, "{0} Delegate to Copilot coding agent", "$(cloud-upload)"));
|
|
46
46
|
this._register(this._button.onDidClick(async () => {
|
|
47
47
|
await this._execute();
|
|
48
48
|
}));
|
package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js
CHANGED
|
@@ -14,9 +14,9 @@ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbenc
|
|
|
14
14
|
import { registerEditorFeature } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/editorFeatures';
|
|
15
15
|
import { PromptFileRewriter } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/promptSyntax/promptFileRewriter';
|
|
16
16
|
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
17
|
-
import {
|
|
18
|
-
import { getTarget, isVSCodeOrDefaultTarget } from '@codingame/monaco-vscode-xterm-addons-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator';
|
|
17
|
+
import { PromptHeaderAttributes, parseCommaSeparatedList } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptFileParser';
|
|
19
18
|
import { isBoolean } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
19
|
+
import { isTarget, getTarget, isVSCodeOrDefaultTarget } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptFileAttributes';
|
|
20
20
|
|
|
21
21
|
let PromptToolsCodeLensProvider = class PromptToolsCodeLensProvider extends Disposable {
|
|
22
22
|
constructor(
|
|
@@ -72,7 +72,7 @@ let PromptToolsCodeLensProvider = class PromptToolsCodeLensProvider extends Disp
|
|
|
72
72
|
const codeLens = {
|
|
73
73
|
range: toolsAttr.range.collapseToStart(),
|
|
74
74
|
command: {
|
|
75
|
-
title: ( localize(
|
|
75
|
+
title: ( localize(6382, "Configure Tools...")),
|
|
76
76
|
id: this.cmdId,
|
|
77
77
|
arguments: [
|
|
78
78
|
model,
|
|
@@ -89,7 +89,7 @@ let PromptToolsCodeLensProvider = class PromptToolsCodeLensProvider extends Disp
|
|
|
89
89
|
}
|
|
90
90
|
async updateTools(model, range, isString, selectedTools, target) {
|
|
91
91
|
const selectedToolsNow = () => this.languageModelToolsService.toToolAndToolSetEnablementMap(selectedTools, undefined);
|
|
92
|
-
const newSelectedAfter = await this.instantiationService.invokeFunction(showToolsPicker, ( localize(
|
|
92
|
+
const newSelectedAfter = await this.instantiationService.invokeFunction(showToolsPicker, ( localize(6383, "Select tools")), "codeLens", undefined, selectedToolsNow);
|
|
93
93
|
if (!newSelectedAfter) {
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
@@ -85,7 +85,7 @@ let PromptUrlHandler = class PromptUrlHandler extends Disposable {
|
|
|
85
85
|
}, CancellationToken.None);
|
|
86
86
|
if (result.res.statusCode !== 200) {
|
|
87
87
|
this.logService.error(`[PromptUrlHandler] Failed to fetch URL: ${urlString}`);
|
|
88
|
-
this.notificationService.error(( localize(
|
|
88
|
+
this.notificationService.error(( localize(6384, "Failed to fetch URL: {0}", urlString)));
|
|
89
89
|
return true;
|
|
90
90
|
}
|
|
91
91
|
const responseData = ( (await streamToBuffer(result.stream)).toString());
|
|
@@ -115,28 +115,28 @@ let PromptUrlHandler = class PromptUrlHandler extends Disposable {
|
|
|
115
115
|
const detail = ( new MarkdownString("", {
|
|
116
116
|
supportHtml: true
|
|
117
117
|
}));
|
|
118
|
-
detail.appendMarkdown(( localize(
|
|
118
|
+
detail.appendMarkdown(( localize(6385, "This will access {0}.\n\n", `[${uriLabel}](${( url.toString())})`)));
|
|
119
119
|
detail.appendMarkdown(( localize(
|
|
120
|
-
|
|
120
|
+
6386,
|
|
121
121
|
"If you did not initiate this request, it may represent an attempted attack on your system. Unless you took an explicit action to initiate this request, you should press 'No'"
|
|
122
122
|
)));
|
|
123
123
|
let message;
|
|
124
124
|
switch (promptType) {
|
|
125
125
|
case PromptsType.prompt:
|
|
126
126
|
message = ( localize(
|
|
127
|
-
|
|
127
|
+
6387,
|
|
128
128
|
"An external application wants to create a prompt file with content from a URL. Do you want to continue by selecting a destination folder and name?"
|
|
129
129
|
));
|
|
130
130
|
break;
|
|
131
131
|
case PromptsType.instructions:
|
|
132
132
|
message = ( localize(
|
|
133
|
-
|
|
133
|
+
6388,
|
|
134
134
|
"An external application wants to create an instructions file with content from a URL. Do you want to continue by selecting a destination folder and name?"
|
|
135
135
|
));
|
|
136
136
|
break;
|
|
137
137
|
default:
|
|
138
138
|
message = ( localize(
|
|
139
|
-
|
|
139
|
+
6389,
|
|
140
140
|
"An external application wants to create a custom agent with content from a URL. Do you want to continue by selecting a destination folder and name?"
|
|
141
141
|
));
|
|
142
142
|
break;
|
|
@@ -145,8 +145,8 @@ let PromptUrlHandler = class PromptUrlHandler extends Disposable {
|
|
|
145
145
|
confirmed
|
|
146
146
|
} = await this.dialogService.confirm({
|
|
147
147
|
type: "warning",
|
|
148
|
-
primaryButton: ( localize(
|
|
149
|
-
cancelButton: ( localize(
|
|
148
|
+
primaryButton: ( localize(6390, "&&Yes")),
|
|
149
|
+
cancelButton: ( localize(6391, "No")),
|
|
150
150
|
message,
|
|
151
151
|
custom: {
|
|
152
152
|
markdownDetails: [{
|
|
@@ -70,7 +70,7 @@ class RunPromptBaseAction extends Action2 {
|
|
|
70
70
|
return widget;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
const RUN_CURRENT_PROMPT_ACTION_TITLE = ( localize2(
|
|
73
|
+
const RUN_CURRENT_PROMPT_ACTION_TITLE = ( localize2(6392, "Run Prompt in Current Chat"));
|
|
74
74
|
const RUN_CURRENT_PROMPT_ACTION_ICON = Codicon.playCircle;
|
|
75
75
|
class RunCurrentPromptAction extends RunPromptBaseAction {
|
|
76
76
|
constructor() {
|
|
@@ -89,7 +89,7 @@ class RunSelectedPromptAction extends Action2 {
|
|
|
89
89
|
constructor() {
|
|
90
90
|
super({
|
|
91
91
|
id: RUN_SELECTED_PROMPT_ACTION_ID,
|
|
92
|
-
title: ( localize2(
|
|
92
|
+
title: ( localize2(6393, "Run Prompt...")),
|
|
93
93
|
icon: Codicon.bookmark,
|
|
94
94
|
f1: true,
|
|
95
95
|
precondition: ChatContextKeys.enabled,
|
|
@@ -108,7 +108,7 @@ class RunSelectedPromptAction extends Action2 {
|
|
|
108
108
|
const widgetService = accessor.get(IChatWidgetService);
|
|
109
109
|
const pickers = instaService.createInstance(PromptFilePickers);
|
|
110
110
|
const placeholder = ( localize(
|
|
111
|
-
|
|
111
|
+
6394,
|
|
112
112
|
"Select the prompt file to run (hold {0}-key to use in new chat)",
|
|
113
113
|
UILabelProvider.modifierLabels[OS].ctrlKey
|
|
114
114
|
));
|
|
@@ -140,8 +140,8 @@ class ManagePromptFilesAction extends Action2 {
|
|
|
140
140
|
constructor() {
|
|
141
141
|
super({
|
|
142
142
|
id: CONFIGURE_PROMPTS_ACTION_ID,
|
|
143
|
-
title: ( localize2(
|
|
144
|
-
shortTitle: ( localize2(
|
|
143
|
+
title: ( localize2(6395, "Configure Prompt Files...")),
|
|
144
|
+
shortTitle: ( localize2(6396, "Prompt Files")),
|
|
145
145
|
icon: Codicon.bookmark,
|
|
146
146
|
f1: true,
|
|
147
147
|
precondition: ChatContextKeys.enabled,
|
|
@@ -158,7 +158,7 @@ class ManagePromptFilesAction extends Action2 {
|
|
|
158
158
|
const openerService = accessor.get(IOpenerService);
|
|
159
159
|
const instaService = accessor.get(IInstantiationService);
|
|
160
160
|
const pickers = instaService.createInstance(PromptFilePickers);
|
|
161
|
-
const placeholder = ( localize(
|
|
161
|
+
const placeholder = ( localize(6397, "Select the prompt file to open"));
|
|
162
162
|
const result = await pickers.selectPromptFile({
|
|
163
163
|
placeholder,
|
|
164
164
|
type: PromptsType.prompt,
|
|
@@ -178,7 +178,7 @@ function getActivePromptFileUri(accessor) {
|
|
|
178
178
|
return undefined;
|
|
179
179
|
}
|
|
180
180
|
const RUN_CURRENT_PROMPT_IN_NEW_CHAT_ACTION_ID = "workbench.action.chat.run-in-new-chat.prompt.current";
|
|
181
|
-
const RUN_IN_NEW_CHAT_ACTION_TITLE = ( localize2(
|
|
181
|
+
const RUN_IN_NEW_CHAT_ACTION_TITLE = ( localize2(6398, "Run Prompt In New Chat"));
|
|
182
182
|
const RUN_IN_NEW_CHAT_ACTION_ICON = Codicon.play;
|
|
183
183
|
class RunCurrentPromptInNewChatAction extends RunPromptBaseAction {
|
|
184
184
|
constructor() {
|
package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js
CHANGED
|
@@ -78,19 +78,19 @@ function createOptions(id, title, description, languageId) {
|
|
|
78
78
|
const SAVE_AS_PROMPT_FILE_ACTION_ID = "workbench.action.chat.save-as-prompt";
|
|
79
79
|
class SaveAsPromptFileAction extends BaseSaveAsPromptFileAction {
|
|
80
80
|
constructor() {
|
|
81
|
-
super(createOptions(SAVE_AS_PROMPT_FILE_ACTION_ID, ( localize2(
|
|
81
|
+
super(createOptions(SAVE_AS_PROMPT_FILE_ACTION_ID, ( localize2(6399, "Save As Prompt File")), ( localize2(6400, "Save as prompt file")), PROMPT_LANGUAGE_ID), PromptsType.prompt);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
const SAVE_AS_AGENT_FILE_ACTION_ID = "workbench.action.chat.save-as-agent";
|
|
85
85
|
class SaveAsAgentFileAction extends BaseSaveAsPromptFileAction {
|
|
86
86
|
constructor() {
|
|
87
|
-
super(createOptions(SAVE_AS_AGENT_FILE_ACTION_ID, ( localize2(
|
|
87
|
+
super(createOptions(SAVE_AS_AGENT_FILE_ACTION_ID, ( localize2(6401, "Save As Agent File")), ( localize2(6402, "Save as agent file")), AGENT_LANGUAGE_ID), PromptsType.agent);
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
const SAVE_AS_INSTRUCTIONS_FILE_ACTION_ID = "workbench.action.chat.save-as-instructions";
|
|
91
91
|
class SaveAsInstructionsFileAction extends BaseSaveAsPromptFileAction {
|
|
92
92
|
constructor() {
|
|
93
|
-
super(createOptions(SAVE_AS_INSTRUCTIONS_FILE_ACTION_ID, ( localize2(
|
|
93
|
+
super(createOptions(SAVE_AS_INSTRUCTIONS_FILE_ACTION_ID, ( localize2(6403, "Save As Instructions File")), ( localize2(6404, "Save as instructions file")), INSTRUCTIONS_LANGUAGE_ID), PromptsType.instructions);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -16,8 +16,8 @@ class ManageSkillsAction extends Action2 {
|
|
|
16
16
|
constructor() {
|
|
17
17
|
super({
|
|
18
18
|
id: CONFIGURE_SKILLS_ACTION_ID,
|
|
19
|
-
title: ( localize2(
|
|
20
|
-
shortTitle: ( localize2(
|
|
19
|
+
title: ( localize2(6405, "Configure Skills...")),
|
|
20
|
+
shortTitle: ( localize2(6406, "Skills")),
|
|
21
21
|
icon: Codicon.lightbulb,
|
|
22
22
|
f1: true,
|
|
23
23
|
precondition: ChatContextKeys.enabled,
|
|
@@ -34,7 +34,7 @@ class ManageSkillsAction extends Action2 {
|
|
|
34
34
|
const openerService = accessor.get(IOpenerService);
|
|
35
35
|
const instaService = accessor.get(IInstantiationService);
|
|
36
36
|
const pickers = instaService.createInstance(PromptFilePickers);
|
|
37
|
-
const placeholder = ( localize(
|
|
37
|
+
const placeholder = ( localize(6407, "Select the skill to open"));
|
|
38
38
|
const result = await pickers.selectPromptFile({
|
|
39
39
|
placeholder,
|
|
40
40
|
type: PromptsType.skill,
|
|
@@ -20,8 +20,10 @@ export declare class LanguageModelToolsConfirmationService extends Disposable im
|
|
|
20
20
|
getPreConfirmActions(ref: ILanguageModelToolConfirmationRef): ILanguageModelToolConfirmationActions[];
|
|
21
21
|
getPostConfirmActions(ref: ILanguageModelToolConfirmationRef): ILanguageModelToolConfirmationActions[];
|
|
22
22
|
registerConfirmationContribution(toolName: string, contribution: ILanguageModelToolConfirmationContribution): IDisposable;
|
|
23
|
+
toolCanManageConfirmation(tool: IToolData): boolean;
|
|
23
24
|
manageConfirmationPreferences(tools: readonly IToolData[], options?: {
|
|
24
25
|
defaultScope?: "workspace" | "profile" | "session";
|
|
26
|
+
focusToolId?: string;
|
|
25
27
|
}): void;
|
|
26
28
|
resetToolAutoConfirmation(): void;
|
|
27
29
|
}
|
package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js
CHANGED
|
@@ -13,8 +13,8 @@ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode
|
|
|
13
13
|
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
14
14
|
import { ToolConfirmKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
|
|
15
15
|
|
|
16
|
-
const RUN_WITHOUT_APPROVAL = ( localize(
|
|
17
|
-
const CONTINUE_WITHOUT_REVIEWING_RESULTS = ( localize(
|
|
16
|
+
const RUN_WITHOUT_APPROVAL = ( localize(6408, "without approval"));
|
|
17
|
+
const CONTINUE_WITHOUT_REVIEWING_RESULTS = ( localize(6409, "without reviewing result"));
|
|
18
18
|
class GenericConfirmStore extends Disposable {
|
|
19
19
|
constructor(_storageKey, _instantiationService) {
|
|
20
20
|
super();
|
|
@@ -213,8 +213,8 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
213
213
|
return actions;
|
|
214
214
|
}
|
|
215
215
|
actions.push({
|
|
216
|
-
label: ( localize(
|
|
217
|
-
detail: ( localize(
|
|
216
|
+
label: ( localize(6410, "Allow in this Session")),
|
|
217
|
+
detail: ( localize(6411, "Allow this tool to run in this session without confirmation.")),
|
|
218
218
|
divider: !!actions.length,
|
|
219
219
|
scope: "session",
|
|
220
220
|
select: async () => {
|
|
@@ -222,16 +222,16 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
222
222
|
return true;
|
|
223
223
|
}
|
|
224
224
|
}, {
|
|
225
|
-
label: ( localize(
|
|
226
|
-
detail: ( localize(
|
|
225
|
+
label: ( localize(6412, "Allow in this Workspace")),
|
|
226
|
+
detail: ( localize(6413, "Allow this tool to run in this workspace without confirmation.")),
|
|
227
227
|
scope: "workspace",
|
|
228
228
|
select: async () => {
|
|
229
229
|
this._preExecutionToolConfirmStore.setAutoConfirmation(ref.toolId, "workspace");
|
|
230
230
|
return true;
|
|
231
231
|
}
|
|
232
232
|
}, {
|
|
233
|
-
label: ( localize(
|
|
234
|
-
detail: ( localize(
|
|
233
|
+
label: ( localize(6414, "Always Allow")),
|
|
234
|
+
detail: ( localize(6415, "Always allow this tool to run without confirmation.")),
|
|
235
235
|
scope: "profile",
|
|
236
236
|
select: async () => {
|
|
237
237
|
this._preExecutionToolConfirmStore.setAutoConfirmation(ref.toolId, "profile");
|
|
@@ -244,9 +244,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
244
244
|
definitionId
|
|
245
245
|
} = ref.source;
|
|
246
246
|
actions.push({
|
|
247
|
-
label: ( localize(
|
|
247
|
+
label: ( localize(6416, "Allow Tools from {0} in this Session", serverLabel)),
|
|
248
248
|
detail: ( localize(
|
|
249
|
-
|
|
249
|
+
6417,
|
|
250
250
|
"Allow all tools from this server to run in this session without confirmation."
|
|
251
251
|
)),
|
|
252
252
|
divider: true,
|
|
@@ -256,9 +256,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
256
256
|
return true;
|
|
257
257
|
}
|
|
258
258
|
}, {
|
|
259
|
-
label: ( localize(
|
|
259
|
+
label: ( localize(6418, "Allow Tools from {0} in this Workspace", serverLabel)),
|
|
260
260
|
detail: ( localize(
|
|
261
|
-
|
|
261
|
+
6419,
|
|
262
262
|
"Allow all tools from this server to run in this workspace without confirmation."
|
|
263
263
|
)),
|
|
264
264
|
scope: "workspace",
|
|
@@ -267,9 +267,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
267
267
|
return true;
|
|
268
268
|
}
|
|
269
269
|
}, {
|
|
270
|
-
label: ( localize(
|
|
270
|
+
label: ( localize(6420, "Always Allow Tools from {0}", serverLabel)),
|
|
271
271
|
detail: ( localize(
|
|
272
|
-
|
|
272
|
+
6421,
|
|
273
273
|
"Always allow all tools from this server to run without confirmation."
|
|
274
274
|
)),
|
|
275
275
|
scope: "profile",
|
|
@@ -291,9 +291,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
291
291
|
return actions;
|
|
292
292
|
}
|
|
293
293
|
actions.push({
|
|
294
|
-
label: ( localize(
|
|
294
|
+
label: ( localize(6422, "Allow Without Review in this Session")),
|
|
295
295
|
detail: ( localize(
|
|
296
|
-
|
|
296
|
+
6423,
|
|
297
297
|
"Allow results from this tool to be sent without confirmation in this session."
|
|
298
298
|
)),
|
|
299
299
|
divider: !!actions.length,
|
|
@@ -303,9 +303,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
303
303
|
return true;
|
|
304
304
|
}
|
|
305
305
|
}, {
|
|
306
|
-
label: ( localize(
|
|
306
|
+
label: ( localize(6424, "Allow Without Review in this Workspace")),
|
|
307
307
|
detail: ( localize(
|
|
308
|
-
|
|
308
|
+
6425,
|
|
309
309
|
"Allow results from this tool to be sent without confirmation in this workspace."
|
|
310
310
|
)),
|
|
311
311
|
scope: "workspace",
|
|
@@ -314,9 +314,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
314
314
|
return true;
|
|
315
315
|
}
|
|
316
316
|
}, {
|
|
317
|
-
label: ( localize(
|
|
317
|
+
label: ( localize(6426, "Always Allow Without Review")),
|
|
318
318
|
detail: ( localize(
|
|
319
|
-
|
|
319
|
+
6427,
|
|
320
320
|
"Always allow results from this tool to be sent without confirmation."
|
|
321
321
|
)),
|
|
322
322
|
scope: "profile",
|
|
@@ -331,9 +331,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
331
331
|
definitionId
|
|
332
332
|
} = ref.source;
|
|
333
333
|
actions.push({
|
|
334
|
-
label: ( localize(
|
|
334
|
+
label: ( localize(6428, "Allow Tools from {0} Without Review in this Session", serverLabel)),
|
|
335
335
|
detail: ( localize(
|
|
336
|
-
|
|
336
|
+
6429,
|
|
337
337
|
"Allow results from all tools from this server to be sent without confirmation in this session."
|
|
338
338
|
)),
|
|
339
339
|
divider: true,
|
|
@@ -343,9 +343,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
343
343
|
return true;
|
|
344
344
|
}
|
|
345
345
|
}, {
|
|
346
|
-
label: ( localize(
|
|
346
|
+
label: ( localize(6430, "Allow Tools from {0} Without Review in this Workspace", serverLabel)),
|
|
347
347
|
detail: ( localize(
|
|
348
|
-
|
|
348
|
+
6431,
|
|
349
349
|
"Allow results from all tools from this server to be sent without confirmation in this workspace."
|
|
350
350
|
)),
|
|
351
351
|
scope: "workspace",
|
|
@@ -354,9 +354,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
354
354
|
return true;
|
|
355
355
|
}
|
|
356
356
|
}, {
|
|
357
|
-
label: ( localize(
|
|
357
|
+
label: ( localize(6432, "Always Allow Tools from {0} Without Review", serverLabel)),
|
|
358
358
|
detail: ( localize(
|
|
359
|
-
|
|
359
|
+
6433,
|
|
360
360
|
"Always allow results from all tools from this server to be sent without confirmation."
|
|
361
361
|
)),
|
|
362
362
|
scope: "profile",
|
|
@@ -376,6 +376,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
376
376
|
}
|
|
377
377
|
};
|
|
378
378
|
}
|
|
379
|
+
toolCanManageConfirmation(tool) {
|
|
380
|
+
return !!tool.canRequestPreApproval || !!tool.canRequestPostApproval || ( this._contributions.has(tool.id)) || !!this._preExecutionToolConfirmStore.checkAutoConfirmation(tool.id) || !!this._postExecutionToolConfirmStore.checkAutoConfirmation(tool.id);
|
|
381
|
+
}
|
|
379
382
|
manageConfirmationPreferences(tools, options) {
|
|
380
383
|
const trackServerTool = (serverId, label, toolId, serversWithTools) => {
|
|
381
384
|
if (!( serversWithTools.has(serverId))) {
|
|
@@ -495,7 +498,7 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
495
498
|
type: "server-post",
|
|
496
499
|
serverId,
|
|
497
500
|
iconClass: ThemeIcon.asClassName(Codicon.play),
|
|
498
|
-
label: ( localize(
|
|
501
|
+
label: ( localize(6434, "Continue without reviewing any tool results")),
|
|
499
502
|
checked: serverPostConfirmed
|
|
500
503
|
});
|
|
501
504
|
}
|
|
@@ -504,7 +507,7 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
504
507
|
type: "server-pre",
|
|
505
508
|
serverId,
|
|
506
509
|
iconClass: ThemeIcon.asClassName(Codicon.play),
|
|
507
|
-
label: ( localize(
|
|
510
|
+
label: ( localize(6435, "Run any tool without approval")),
|
|
508
511
|
checked: serverPreConfirmed
|
|
509
512
|
});
|
|
510
513
|
}
|
|
@@ -590,7 +593,7 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
590
593
|
description,
|
|
591
594
|
checked,
|
|
592
595
|
pickable,
|
|
593
|
-
collapsed:
|
|
596
|
+
collapsed: tools.length > 1,
|
|
594
597
|
children: toolChildren.length > 0 ? toolChildren : undefined
|
|
595
598
|
});
|
|
596
599
|
}
|
|
@@ -603,7 +606,7 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
603
606
|
if (currentScope !== "session") {
|
|
604
607
|
const scopeButton = {
|
|
605
608
|
iconClass: ThemeIcon.asClassName(Codicon.folder),
|
|
606
|
-
tooltip: ( localize(
|
|
609
|
+
tooltip: ( localize(6436, "Configure for this workspace only")),
|
|
607
610
|
toggle: {
|
|
608
611
|
checked: currentScope === "workspace"
|
|
609
612
|
},
|
|
@@ -620,9 +623,9 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
620
623
|
}
|
|
621
624
|
const updatePlaceholder = () => {
|
|
622
625
|
if (currentScope === "session") {
|
|
623
|
-
quickTree.placeholder = ( localize(
|
|
626
|
+
quickTree.placeholder = ( localize(6437, "Configure session tool approvals"));
|
|
624
627
|
} else {
|
|
625
|
-
quickTree.placeholder = currentScope === "workspace" ? ( localize(
|
|
628
|
+
quickTree.placeholder = currentScope === "workspace" ? ( localize(6438, "Configure workspace tool approvals")) : ( localize(6439, "Configure global tool approvals"));
|
|
626
629
|
}
|
|
627
630
|
};
|
|
628
631
|
updatePlaceholder();
|
|
@@ -662,18 +665,32 @@ let LanguageModelToolsConfirmationService = class LanguageModelToolsConfirmation
|
|
|
662
665
|
i.item.onDidTriggerItemButton?.(i.button);
|
|
663
666
|
}
|
|
664
667
|
}));
|
|
665
|
-
disposables.add(quickTree.onDidAccept(() => {
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
668
|
+
disposables.add(quickTree.onDidAccept(async () => {
|
|
669
|
+
const manageItem = quickTree.activeItems.find(i => i.type === "manage");
|
|
670
|
+
if (manageItem) {
|
|
671
|
+
quickTree.hide();
|
|
672
|
+
await manageItem.onDidOpen?.();
|
|
673
|
+
this.manageConfirmationPreferences(tools, options);
|
|
671
674
|
}
|
|
672
675
|
}));
|
|
673
676
|
disposables.add(quickTree.onDidHide(() => {
|
|
674
677
|
disposables.dispose();
|
|
675
678
|
}));
|
|
676
679
|
quickTree.show();
|
|
680
|
+
if (options?.focusToolId) {
|
|
681
|
+
const focusToolId = options.focusToolId;
|
|
682
|
+
for (const serverItem of quickTree.itemTree) {
|
|
683
|
+
const serverItemTyped = serverItem;
|
|
684
|
+
if (serverItemTyped.children) {
|
|
685
|
+
const toolItem = serverItemTyped.children.find(c => c.type === "tool" && c.toolId === focusToolId);
|
|
686
|
+
if (toolItem) {
|
|
687
|
+
quickTree.expand(serverItem);
|
|
688
|
+
quickTree.reveal(toolItem);
|
|
689
|
+
break;
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
}
|
|
677
694
|
}
|
|
678
695
|
resetToolAutoConfirmation() {
|
|
679
696
|
this._preExecutionToolConfirmStore.reset();
|