@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
package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { registerCss } from '@codingame/monaco-vscode-api/css';
|
|
3
3
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
4
4
|
import * as aiCustomizationManagement from './media/aiCustomizationManagement.css';
|
|
5
|
-
import { $ as $$1, append, addDisposableListener } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
5
|
+
import { $ as $$1, append, addDisposableListener, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
6
6
|
import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
7
7
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
8
8
|
import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
@@ -17,7 +17,7 @@ import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/l
|
|
|
17
17
|
import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
|
|
18
18
|
import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
|
|
19
19
|
import { PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
|
|
20
|
-
import {
|
|
20
|
+
import { workspaceIcon, userIcon, extensionIcon, pluginIcon, agentIcon, promptIcon, hookIcon, instructionsIcon, skillIcon } from './aiCustomizationIcons.js';
|
|
21
21
|
import { AICustomizationManagementItemMenuId } from './aiCustomizationManagement.js';
|
|
22
22
|
import { InputBox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/inputbox/inputBox';
|
|
23
23
|
import { defaultInputBoxStyles, defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
|
|
@@ -36,15 +36,22 @@ import { AICustomizationManagementSection, applyStorageSourceFilter } from '../.
|
|
|
36
36
|
import { IAICustomizationWorkspaceService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.service';
|
|
37
37
|
import { Separator, Action } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
|
|
38
38
|
import { IClipboardService } from '@codingame/monaco-vscode-api/vscode/vs/platform/clipboard/common/clipboardService.service';
|
|
39
|
-
import { ISCMService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/scm.service';
|
|
40
39
|
import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
|
|
40
|
+
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
41
|
+
import { IPathService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/path/common/pathService.service';
|
|
41
42
|
import { generateCustomizationDebugReport } from './aiCustomizationDebugPanel.js';
|
|
43
|
+
import { parseHooksFromFile } from '../../common/promptSyntax/hookCompatibility.js';
|
|
44
|
+
import { formatHookCommandLabel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookSchema';
|
|
45
|
+
import { HOOK_METADATA, HookType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/hookTypes';
|
|
46
|
+
import { parse } from '@codingame/monaco-vscode-api/vscode/vs/base/common/json';
|
|
47
|
+
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
48
|
+
import { OS } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
42
49
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
43
50
|
|
|
44
51
|
registerCss(aiCustomizationManagement);
|
|
45
52
|
const $ = $$1;
|
|
46
53
|
const ITEM_HEIGHT = 44;
|
|
47
|
-
const GROUP_HEADER_HEIGHT =
|
|
54
|
+
const GROUP_HEADER_HEIGHT = 36;
|
|
48
55
|
const GROUP_HEADER_HEIGHT_WITH_SEPARATOR = 40;
|
|
49
56
|
class AICustomizationListDelegate {
|
|
50
57
|
getHeight(element) {
|
|
@@ -109,8 +116,10 @@ class GroupHeaderRenderer {
|
|
|
109
116
|
templateData.disposables.dispose();
|
|
110
117
|
}
|
|
111
118
|
}
|
|
112
|
-
class AICustomizationItemRenderer {
|
|
113
|
-
constructor() {
|
|
119
|
+
let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
120
|
+
constructor(hoverService, labelService) {
|
|
121
|
+
this.hoverService = hoverService;
|
|
122
|
+
this.labelService = labelService;
|
|
114
123
|
this.templateId = "aiCustomizationItem";
|
|
115
124
|
}
|
|
116
125
|
renderTemplate(container) {
|
|
@@ -118,19 +127,15 @@ class AICustomizationItemRenderer {
|
|
|
118
127
|
const elementDisposables = ( new DisposableStore());
|
|
119
128
|
container.classList.add("ai-customization-list-item");
|
|
120
129
|
const leftSection = append(container, $(".item-left"));
|
|
121
|
-
const storageBadge = append(leftSection, $(".storage-badge"));
|
|
122
130
|
const textContainer = append(leftSection, $(".item-text"));
|
|
123
131
|
const nameLabel = disposables.add(( new HighlightedLabel(append(textContainer, $(".item-name")))));
|
|
124
132
|
const description = disposables.add(( new HighlightedLabel(append(textContainer, $(".item-description")))));
|
|
125
|
-
const gitStatusBadge = append(container, $(".git-status-badge"));
|
|
126
133
|
const actionsContainer = append(container, $(".item-right"));
|
|
127
134
|
return {
|
|
128
135
|
container,
|
|
129
136
|
actionsContainer,
|
|
130
137
|
nameLabel,
|
|
131
138
|
description,
|
|
132
|
-
storageBadge,
|
|
133
|
-
gitStatusBadge,
|
|
134
139
|
disposables,
|
|
135
140
|
elementDisposables
|
|
136
141
|
};
|
|
@@ -138,6 +143,18 @@ class AICustomizationItemRenderer {
|
|
|
138
143
|
renderElement(entry, index, templateData) {
|
|
139
144
|
templateData.elementDisposables.clear();
|
|
140
145
|
const element = entry.item;
|
|
146
|
+
templateData.elementDisposables.add(this.hoverService.setupDelayedHover(templateData.container, () => {
|
|
147
|
+
const uriLabel = this.labelService.getUriLabel(element.uri, {
|
|
148
|
+
relative: false
|
|
149
|
+
});
|
|
150
|
+
return {
|
|
151
|
+
content: `${element.name}\n${uriLabel}`,
|
|
152
|
+
appearance: {
|
|
153
|
+
compact: true,
|
|
154
|
+
skipFadeInAnimation: true
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}));
|
|
141
158
|
templateData.nameLabel.set(element.name, element.nameMatches);
|
|
142
159
|
const secondaryText = element.description || element.filename;
|
|
143
160
|
if (secondaryText) {
|
|
@@ -151,46 +168,13 @@ class AICustomizationItemRenderer {
|
|
|
151
168
|
templateData.description.set("", undefined);
|
|
152
169
|
templateData.description.element.style.display = "none";
|
|
153
170
|
}
|
|
154
|
-
let storageBadgeIcon;
|
|
155
|
-
let storageBadgeLabel;
|
|
156
|
-
switch (element.storage) {
|
|
157
|
-
case PromptsStorage.local:
|
|
158
|
-
storageBadgeIcon = workspaceIcon;
|
|
159
|
-
storageBadgeLabel = ( localize(5206, "Workspace"));
|
|
160
|
-
break;
|
|
161
|
-
case PromptsStorage.user:
|
|
162
|
-
storageBadgeIcon = userIcon;
|
|
163
|
-
storageBadgeLabel = ( localize(5207, "User"));
|
|
164
|
-
break;
|
|
165
|
-
case PromptsStorage.extension:
|
|
166
|
-
storageBadgeIcon = extensionIcon;
|
|
167
|
-
storageBadgeLabel = ( localize(5208, "Extension"));
|
|
168
|
-
break;
|
|
169
|
-
case PromptsStorage.plugin:
|
|
170
|
-
storageBadgeIcon = pluginIcon;
|
|
171
|
-
storageBadgeLabel = ( localize(5209, "Plugin"));
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
templateData.storageBadge.className = "storage-badge";
|
|
175
|
-
templateData.storageBadge.classList.add(...ThemeIcon.asClassNameArray(storageBadgeIcon));
|
|
176
|
-
templateData.storageBadge.title = storageBadgeLabel;
|
|
177
|
-
const gitBadge = templateData.gitStatusBadge;
|
|
178
|
-
gitBadge.className = "git-status-badge";
|
|
179
|
-
if (element.gitStatus === "committed") {
|
|
180
|
-
gitBadge.classList.add(...ThemeIcon.asClassNameArray(Codicon.check));
|
|
181
|
-
gitBadge.classList.add("committed");
|
|
182
|
-
gitBadge.textContent = "";
|
|
183
|
-
gitBadge.title = ( localize(5210, "Committed"));
|
|
184
|
-
gitBadge.style.display = "";
|
|
185
|
-
} else {
|
|
186
|
-
gitBadge.style.display = "none";
|
|
187
|
-
}
|
|
188
171
|
}
|
|
189
172
|
disposeTemplate(templateData) {
|
|
190
173
|
templateData.elementDisposables.dispose();
|
|
191
174
|
templateData.disposables.dispose();
|
|
192
175
|
}
|
|
193
|
-
}
|
|
176
|
+
};
|
|
177
|
+
AICustomizationItemRenderer = ( __decorate([( __param(0, IHoverService)), ( __param(1, ILabelService))], AICustomizationItemRenderer));
|
|
194
178
|
function sectionToPromptType(section) {
|
|
195
179
|
switch (section) {
|
|
196
180
|
case AICustomizationManagementSection.Agents:
|
|
@@ -219,8 +203,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
219
203
|
labelService,
|
|
220
204
|
workspaceService,
|
|
221
205
|
clipboardService,
|
|
222
|
-
|
|
223
|
-
|
|
206
|
+
hoverService,
|
|
207
|
+
fileService,
|
|
208
|
+
pathService
|
|
224
209
|
) {
|
|
225
210
|
super();
|
|
226
211
|
this.instantiationService = instantiationService;
|
|
@@ -234,8 +219,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
234
219
|
this.labelService = labelService;
|
|
235
220
|
this.workspaceService = workspaceService;
|
|
236
221
|
this.clipboardService = clipboardService;
|
|
237
|
-
this.scmService = scmService;
|
|
238
222
|
this.hoverService = hoverService;
|
|
223
|
+
this.fileService = fileService;
|
|
224
|
+
this.pathService = pathService;
|
|
239
225
|
this.currentSection = AICustomizationManagementSection.Agents;
|
|
240
226
|
this.allItems = [];
|
|
241
227
|
this.displayEntries = [];
|
|
@@ -261,22 +247,12 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
261
247
|
this.updateAddButton();
|
|
262
248
|
this.refresh();
|
|
263
249
|
}));
|
|
264
|
-
const trackRepoChanges = repo => {
|
|
265
|
-
this._register(repo.provider.onDidChangeResources(() => {
|
|
266
|
-
this.updateGitStatus(this.allItems);
|
|
267
|
-
this.filterItems();
|
|
268
|
-
}));
|
|
269
|
-
};
|
|
270
|
-
for (const repo of [...this.scmService.repositories]) {
|
|
271
|
-
trackRepoChanges(repo);
|
|
272
|
-
}
|
|
273
|
-
this._register(this.scmService.onDidAddRepository(repo => trackRepoChanges(repo)));
|
|
274
250
|
}
|
|
275
251
|
create() {
|
|
276
252
|
this.searchAndButtonContainer = append(this.element, $(".list-search-and-button-container"));
|
|
277
253
|
this.searchContainer = append(this.searchAndButtonContainer, $(".list-search-container"));
|
|
278
254
|
this.searchInput = this._register(( new InputBox(this.searchContainer, this.contextViewService, {
|
|
279
|
-
placeholder: ( localize(
|
|
255
|
+
placeholder: ( localize(5231, "Type to search...")),
|
|
280
256
|
inputBoxStyles: defaultInputBoxStyles
|
|
281
257
|
})));
|
|
282
258
|
this._register(this.searchInput.onDidChange(() => {
|
|
@@ -322,16 +298,16 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
322
298
|
getAriaLabel: entry => {
|
|
323
299
|
if (entry.type === "group-header") {
|
|
324
300
|
return localize(
|
|
325
|
-
|
|
301
|
+
5232,
|
|
326
302
|
"{0}, {1} items, {2}",
|
|
327
303
|
entry.label,
|
|
328
304
|
entry.count,
|
|
329
|
-
entry.collapsed ? ( localize(
|
|
305
|
+
entry.collapsed ? ( localize(5233, "collapsed")) : ( localize(5234, "expanded"))
|
|
330
306
|
);
|
|
331
307
|
}
|
|
332
|
-
return entry.item.description ? ( localize(
|
|
308
|
+
return entry.item.description ? ( localize(5235, "{0}, {1}", entry.item.name, entry.item.description)) : entry.item.name;
|
|
333
309
|
},
|
|
334
|
-
getWidgetAriaLabel: () => ( localize(
|
|
310
|
+
getWidgetAriaLabel: () => ( localize(5236, "Chat Customizations"))
|
|
335
311
|
},
|
|
336
312
|
keyboardNavigationLabelProvider: {
|
|
337
313
|
getKeyboardNavigationLabel: entry => entry.type === "group-header" ? entry.label : entry.item.name
|
|
@@ -380,9 +356,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
380
356
|
shouldForwardArgs: true
|
|
381
357
|
});
|
|
382
358
|
const flatActions = getFlatContextMenuActions(actions);
|
|
383
|
-
const copyActions = [( new Separator()), ( new Action("copyFullPath", ( localize(
|
|
359
|
+
const copyActions = [( new Separator()), ( new Action("copyFullPath", ( localize(5237, "Copy Full Path")), undefined, true, async () => {
|
|
384
360
|
await this.clipboardService.writeText(item.uri.fsPath);
|
|
385
|
-
})), ( new Action("copyRelativePath", ( localize(
|
|
361
|
+
})), ( new Action("copyRelativePath", ( localize(5238, "Copy Relative Path")), undefined, true, async () => {
|
|
386
362
|
const basePath = this.workspaceService.getActiveProjectRoot();
|
|
387
363
|
if (basePath && item.uri.fsPath.startsWith(basePath.fsPath)) {
|
|
388
364
|
const relative = item.uri.fsPath.substring(basePath.fsPath.length + 1);
|
|
@@ -412,41 +388,41 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
412
388
|
switch (this.currentSection) {
|
|
413
389
|
case AICustomizationManagementSection.Agents:
|
|
414
390
|
description = ( localize(
|
|
415
|
-
|
|
391
|
+
5239,
|
|
416
392
|
"Configure the AI to adopt different personas tailored to specific development tasks. Each agent has its own instructions, tools, and behavior."
|
|
417
393
|
));
|
|
418
394
|
docsUrl = "https://code.visualstudio.com/docs/copilot/customization/custom-agents";
|
|
419
|
-
learnMoreLabel = ( localize(
|
|
395
|
+
learnMoreLabel = ( localize(5240, "Learn more about custom agents"));
|
|
420
396
|
break;
|
|
421
397
|
case AICustomizationManagementSection.Skills:
|
|
422
398
|
description = ( localize(
|
|
423
|
-
|
|
399
|
+
5241,
|
|
424
400
|
"Folders of instructions, scripts, and resources that Copilot loads when relevant to perform specialized tasks."
|
|
425
401
|
));
|
|
426
402
|
docsUrl = "https://code.visualstudio.com/docs/copilot/customization/agent-skills";
|
|
427
|
-
learnMoreLabel = ( localize(
|
|
403
|
+
learnMoreLabel = ( localize(5242, "Learn more about agent skills"));
|
|
428
404
|
break;
|
|
429
405
|
case AICustomizationManagementSection.Instructions:
|
|
430
406
|
description = ( localize(
|
|
431
|
-
|
|
407
|
+
5243,
|
|
432
408
|
"Define common guidelines and rules that automatically influence how AI generates code and handles development tasks."
|
|
433
409
|
));
|
|
434
410
|
docsUrl = "https://code.visualstudio.com/docs/copilot/customization/custom-instructions";
|
|
435
|
-
learnMoreLabel = ( localize(
|
|
411
|
+
learnMoreLabel = ( localize(5244, "Learn more about custom instructions"));
|
|
436
412
|
break;
|
|
437
413
|
case AICustomizationManagementSection.Hooks:
|
|
438
|
-
description = ( localize(
|
|
414
|
+
description = ( localize(5245, "Prompts executed at specific points during an agentic lifecycle."));
|
|
439
415
|
docsUrl = "https://code.visualstudio.com/docs/copilot/customization/hooks";
|
|
440
|
-
learnMoreLabel = ( localize(
|
|
416
|
+
learnMoreLabel = ( localize(5246, "Learn more about hooks"));
|
|
441
417
|
break;
|
|
442
418
|
case AICustomizationManagementSection.Prompts:
|
|
443
419
|
default:
|
|
444
420
|
description = ( localize(
|
|
445
|
-
|
|
421
|
+
5247,
|
|
446
422
|
"Reusable prompts for common development tasks like generating code, performing reviews, or scaffolding components."
|
|
447
423
|
));
|
|
448
424
|
docsUrl = "https://code.visualstudio.com/docs/copilot/customization/prompt-files";
|
|
449
|
-
learnMoreLabel = ( localize(
|
|
425
|
+
learnMoreLabel = ( localize(5248, "Learn more about prompt files"));
|
|
450
426
|
break;
|
|
451
427
|
}
|
|
452
428
|
this.sectionDescription.textContent = description;
|
|
@@ -468,7 +444,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
468
444
|
this.addButton.primaryButton.setTitle("");
|
|
469
445
|
this.addButton.dropdownButton.setTitle("");
|
|
470
446
|
if (!hasWorkspace) {
|
|
471
|
-
const disabledTitle = ( localize(
|
|
447
|
+
const disabledTitle = ( localize(5249, "Open a workspace folder to create customizations."));
|
|
472
448
|
this.addButton.primaryButton.setTitle(disabledTitle);
|
|
473
449
|
this.addButton.dropdownButton.setTitle(disabledTitle);
|
|
474
450
|
}
|
|
@@ -476,7 +452,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
476
452
|
this.addButtonSimple.label = label;
|
|
477
453
|
this.addButtonSimple.enabled = hasWorkspace;
|
|
478
454
|
if (!hasWorkspace) {
|
|
479
|
-
this.addButtonSimple.setTitle(( localize(
|
|
455
|
+
this.addButtonSimple.setTitle(( localize(5249, "Open a workspace folder to create customizations.")));
|
|
480
456
|
} else {
|
|
481
457
|
this.addButtonSimple.setTitle("");
|
|
482
458
|
}
|
|
@@ -583,16 +559,16 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
583
559
|
getTypeLabel() {
|
|
584
560
|
switch (this.currentSection) {
|
|
585
561
|
case AICustomizationManagementSection.Agents:
|
|
586
|
-
return localize(
|
|
562
|
+
return localize(5250, "Agent");
|
|
587
563
|
case AICustomizationManagementSection.Skills:
|
|
588
|
-
return localize(
|
|
564
|
+
return localize(5251, "Skill");
|
|
589
565
|
case AICustomizationManagementSection.Instructions:
|
|
590
|
-
return localize(
|
|
566
|
+
return localize(5252, "Instructions");
|
|
591
567
|
case AICustomizationManagementSection.Hooks:
|
|
592
|
-
return localize(
|
|
568
|
+
return localize(5253, "Hook");
|
|
593
569
|
case AICustomizationManagementSection.Prompts:
|
|
594
570
|
default:
|
|
595
|
-
return localize(
|
|
571
|
+
return localize(5254, "Prompt");
|
|
596
572
|
}
|
|
597
573
|
}
|
|
598
574
|
async refresh() {
|
|
@@ -600,7 +576,8 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
600
576
|
await this.loadItems();
|
|
601
577
|
}
|
|
602
578
|
async loadItems() {
|
|
603
|
-
const
|
|
579
|
+
const section = this.currentSection;
|
|
580
|
+
const promptType = sectionToPromptType(section);
|
|
604
581
|
const items = [];
|
|
605
582
|
if (promptType === PromptsType.agent) {
|
|
606
583
|
const agents = await this.promptsService.getCustomAgents(CancellationToken.None);
|
|
@@ -650,16 +627,77 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
650
627
|
}
|
|
651
628
|
} else if (promptType === PromptsType.hook) {
|
|
652
629
|
const hookFiles = await this.promptsService.listPromptFiles(PromptsType.hook, CancellationToken.None);
|
|
630
|
+
const activeRoot = this.workspaceService.getActiveProjectRoot();
|
|
631
|
+
const userHomeUri = await this.pathService.userHome();
|
|
632
|
+
const userHome = userHomeUri.scheme === Schemas.file ? userHomeUri.fsPath : userHomeUri.path;
|
|
653
633
|
for (const hookFile of hookFiles) {
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
634
|
+
let parsedHooks = false;
|
|
635
|
+
try {
|
|
636
|
+
const content = await this.fileService.readFile(hookFile.uri);
|
|
637
|
+
const json = parse(( content.value.toString()));
|
|
638
|
+
const {
|
|
639
|
+
hooks
|
|
640
|
+
} = parseHooksFromFile(hookFile.uri, json, activeRoot, userHome);
|
|
641
|
+
if (hooks.size > 0) {
|
|
642
|
+
parsedHooks = true;
|
|
643
|
+
for (const [hookType, entry] of hooks) {
|
|
644
|
+
const hookMeta = HOOK_METADATA[hookType];
|
|
645
|
+
for (let i = 0; i < entry.hooks.length; i++) {
|
|
646
|
+
const hook = entry.hooks[i];
|
|
647
|
+
const cmdLabel = formatHookCommandLabel(hook, OS);
|
|
648
|
+
const truncatedCmd = cmdLabel.length > 60 ? cmdLabel.substring(0, 57) + "..." : cmdLabel;
|
|
649
|
+
items.push({
|
|
650
|
+
id: `${( hookFile.uri.toString())}#${entry.originalId}[${i}]`,
|
|
651
|
+
uri: hookFile.uri,
|
|
652
|
+
name: hookMeta?.label ?? entry.originalId,
|
|
653
|
+
filename: basename(hookFile.uri),
|
|
654
|
+
description: truncatedCmd || ( localize(5255, "(unset)")),
|
|
655
|
+
storage: hookFile.storage,
|
|
656
|
+
promptType
|
|
657
|
+
});
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
} catch {}
|
|
662
|
+
if (!parsedHooks) {
|
|
663
|
+
const filename = basename(hookFile.uri);
|
|
664
|
+
items.push({
|
|
665
|
+
id: ( hookFile.uri.toString()),
|
|
666
|
+
uri: hookFile.uri,
|
|
667
|
+
name: this.getFriendlyName(filename),
|
|
668
|
+
filename,
|
|
669
|
+
storage: hookFile.storage,
|
|
670
|
+
promptType
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
const agents = !this.workspaceService.isSessionsWindow ? await this.promptsService.getCustomAgents(CancellationToken.None) : [];
|
|
675
|
+
for (const agent of agents) {
|
|
676
|
+
if (!agent.hooks) {
|
|
677
|
+
continue;
|
|
678
|
+
}
|
|
679
|
+
for (const hookType of ( Object.values(HookType))) {
|
|
680
|
+
const hookCommands = agent.hooks[hookType];
|
|
681
|
+
if (!hookCommands || hookCommands.length === 0) {
|
|
682
|
+
continue;
|
|
683
|
+
}
|
|
684
|
+
const hookMeta = HOOK_METADATA[hookType];
|
|
685
|
+
for (let i = 0; i < hookCommands.length; i++) {
|
|
686
|
+
const hook = hookCommands[i];
|
|
687
|
+
const cmdLabel = formatHookCommandLabel(hook, OS);
|
|
688
|
+
const truncatedCmd = cmdLabel.length > 60 ? cmdLabel.substring(0, 57) + "..." : cmdLabel;
|
|
689
|
+
items.push({
|
|
690
|
+
id: `${( agent.uri.toString())}#hook:${hookType}[${i}]`,
|
|
691
|
+
uri: agent.uri,
|
|
692
|
+
name: hookMeta?.label ?? hookType,
|
|
693
|
+
filename: basename(agent.uri),
|
|
694
|
+
description: `${agent.name}: ${truncatedCmd || ( localize(5255, "(unset)"))}`,
|
|
695
|
+
storage: agent.source.storage,
|
|
696
|
+
groupKey: "agents",
|
|
697
|
+
promptType
|
|
698
|
+
});
|
|
699
|
+
}
|
|
700
|
+
}
|
|
663
701
|
}
|
|
664
702
|
} else {
|
|
665
703
|
const promptFiles = await this.promptsService.listPromptFiles(promptType, CancellationToken.None);
|
|
@@ -708,26 +746,13 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
708
746
|
items.length = 0;
|
|
709
747
|
items.push(...filteredItems);
|
|
710
748
|
items.sort((a, b) => a.name.localeCompare(b.name));
|
|
711
|
-
this.
|
|
749
|
+
if (this.currentSection !== section) {
|
|
750
|
+
return;
|
|
751
|
+
}
|
|
712
752
|
this.allItems = items;
|
|
713
753
|
this.filterItems();
|
|
714
754
|
this._onDidChangeItemCount.fire(items.length);
|
|
715
755
|
}
|
|
716
|
-
updateGitStatus(items) {
|
|
717
|
-
const uncommittedUris = ( new Set());
|
|
718
|
-
for (const repo of [...this.scmService.repositories]) {
|
|
719
|
-
for (const group of repo.provider.groups) {
|
|
720
|
-
for (const resource of group.resources) {
|
|
721
|
-
uncommittedUris.add(( resource.sourceUri.toString()));
|
|
722
|
-
}
|
|
723
|
-
}
|
|
724
|
-
}
|
|
725
|
-
for (const item of items) {
|
|
726
|
-
if (item.storage === PromptsStorage.local) {
|
|
727
|
-
item.gitStatus = ( uncommittedUris.has(( item.uri.toString()))) ? "uncommitted" : "committed";
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
}
|
|
731
756
|
getFriendlyName(filename) {
|
|
732
757
|
let name = filename.replace(/\.instructions\.md$/i, "").replace(/\.prompt\.md$/i, "").replace(/\.agent\.md$/i, "").replace(/\.md$/i, "");
|
|
733
758
|
name = name.replace(/[-_]/g, " ").replace(/\b\w/g, c => c.toUpperCase());
|
|
@@ -760,38 +785,45 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
760
785
|
const promptType = sectionToPromptType(this.currentSection);
|
|
761
786
|
const visibleSources = ( new Set(this.workspaceService.getStorageSourceFilter(promptType).sources));
|
|
762
787
|
const groups = [{
|
|
763
|
-
|
|
764
|
-
label: ( localize(
|
|
788
|
+
groupKey: PromptsStorage.local,
|
|
789
|
+
label: ( localize(5256, "Workspace")),
|
|
765
790
|
icon: workspaceIcon,
|
|
766
791
|
description: ( localize(
|
|
767
|
-
|
|
792
|
+
5257,
|
|
768
793
|
"Customizations stored as files in your project folder and shared with your team via version control."
|
|
769
794
|
)),
|
|
770
795
|
items: []
|
|
771
796
|
}, {
|
|
772
|
-
|
|
773
|
-
label: ( localize(
|
|
797
|
+
groupKey: PromptsStorage.user,
|
|
798
|
+
label: ( localize(5258, "User")),
|
|
774
799
|
icon: userIcon,
|
|
775
800
|
description: ( localize(
|
|
776
|
-
|
|
801
|
+
5259,
|
|
777
802
|
"Customizations stored locally on your machine in a central location. Private to you and available across all projects."
|
|
778
803
|
)),
|
|
779
804
|
items: []
|
|
780
805
|
}, {
|
|
781
|
-
|
|
782
|
-
label: ( localize(
|
|
806
|
+
groupKey: PromptsStorage.extension,
|
|
807
|
+
label: ( localize(5260, "Extensions")),
|
|
783
808
|
icon: extensionIcon,
|
|
784
|
-
description: ( localize(
|
|
809
|
+
description: ( localize(5261, "Read-only customizations provided by installed extensions.")),
|
|
785
810
|
items: []
|
|
786
811
|
}, {
|
|
787
|
-
|
|
788
|
-
label: ( localize(
|
|
812
|
+
groupKey: PromptsStorage.plugin,
|
|
813
|
+
label: ( localize(5262, "Plugins")),
|
|
789
814
|
icon: pluginIcon,
|
|
790
|
-
description: ( localize(
|
|
815
|
+
description: ( localize(5263, "Read-only customizations provided by installed plugins.")),
|
|
791
816
|
items: []
|
|
792
|
-
}
|
|
817
|
+
}, {
|
|
818
|
+
groupKey: "agents",
|
|
819
|
+
label: ( localize(5264, "Agents")),
|
|
820
|
+
icon: agentIcon,
|
|
821
|
+
description: ( localize(5265, "Hooks defined in agent files.")),
|
|
822
|
+
items: []
|
|
823
|
+
}].filter(g => ( visibleSources.has(g.groupKey)) || g.groupKey === "agents");
|
|
793
824
|
for (const item of matchedItems) {
|
|
794
|
-
const
|
|
825
|
+
const key = item.groupKey ?? item.storage;
|
|
826
|
+
const group = groups.find(g => g.groupKey === key);
|
|
795
827
|
if (group) {
|
|
796
828
|
group.items.push(item);
|
|
797
829
|
}
|
|
@@ -805,11 +837,11 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
805
837
|
if (group.items.length === 0) {
|
|
806
838
|
continue;
|
|
807
839
|
}
|
|
808
|
-
const collapsed = ( this.collapsedGroups.has(group.
|
|
840
|
+
const collapsed = ( this.collapsedGroups.has(group.groupKey));
|
|
809
841
|
this.displayEntries.push({
|
|
810
842
|
type: "group-header",
|
|
811
|
-
id: `group-${group.
|
|
812
|
-
|
|
843
|
+
id: `group-${group.groupKey}`,
|
|
844
|
+
groupKey: group.groupKey,
|
|
813
845
|
label: group.label,
|
|
814
846
|
icon: group.icon,
|
|
815
847
|
count: group.items.length,
|
|
@@ -831,10 +863,10 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
831
863
|
this.updateEmptyState();
|
|
832
864
|
}
|
|
833
865
|
toggleGroup(entry) {
|
|
834
|
-
if (( this.collapsedGroups.has(entry.
|
|
835
|
-
this.collapsedGroups.delete(entry.
|
|
866
|
+
if (( this.collapsedGroups.has(entry.groupKey))) {
|
|
867
|
+
this.collapsedGroups.delete(entry.groupKey);
|
|
836
868
|
} else {
|
|
837
|
-
this.collapsedGroups.add(entry.
|
|
869
|
+
this.collapsedGroups.add(entry.groupKey);
|
|
838
870
|
}
|
|
839
871
|
this.filterItems();
|
|
840
872
|
}
|
|
@@ -847,8 +879,8 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
847
879
|
const sectionIcon = this.getSectionIcon();
|
|
848
880
|
this.emptyStateIcon.classList.add(...ThemeIcon.asClassNameArray(sectionIcon));
|
|
849
881
|
if (this.searchQuery.trim()) {
|
|
850
|
-
this.emptyStateText.textContent = ( localize(
|
|
851
|
-
this.emptyStateSubtext.textContent = ( localize(
|
|
882
|
+
this.emptyStateText.textContent = ( localize(5266, "No items match '{0}'", this.searchQuery));
|
|
883
|
+
this.emptyStateSubtext.textContent = ( localize(5267, "Try a different search term"));
|
|
852
884
|
} else {
|
|
853
885
|
const emptyInfo = this.getEmptyStateInfo();
|
|
854
886
|
this.emptyStateText.textContent = emptyInfo.title;
|
|
@@ -878,29 +910,29 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
878
910
|
switch (this.currentSection) {
|
|
879
911
|
case AICustomizationManagementSection.Agents:
|
|
880
912
|
return {
|
|
881
|
-
title: ( localize(
|
|
882
|
-
description: ( localize(
|
|
913
|
+
title: ( localize(5268, "No agents yet")),
|
|
914
|
+
description: ( localize(5269, "Create your first custom agent to get started"))
|
|
883
915
|
};
|
|
884
916
|
case AICustomizationManagementSection.Skills:
|
|
885
917
|
return {
|
|
886
|
-
title: ( localize(
|
|
887
|
-
description: ( localize(
|
|
918
|
+
title: ( localize(5270, "No skills yet")),
|
|
919
|
+
description: ( localize(5271, "Create your first skill to extend agent capabilities"))
|
|
888
920
|
};
|
|
889
921
|
case AICustomizationManagementSection.Instructions:
|
|
890
922
|
return {
|
|
891
|
-
title: ( localize(
|
|
892
|
-
description: ( localize(
|
|
923
|
+
title: ( localize(5272, "No instructions yet")),
|
|
924
|
+
description: ( localize(5273, "Add instructions to teach Copilot about your codebase"))
|
|
893
925
|
};
|
|
894
926
|
case AICustomizationManagementSection.Hooks:
|
|
895
927
|
return {
|
|
896
|
-
title: ( localize(
|
|
897
|
-
description: ( localize(
|
|
928
|
+
title: ( localize(5274, "No hooks yet")),
|
|
929
|
+
description: ( localize(5275, "Create hooks to execute commands at agent lifecycle events"))
|
|
898
930
|
};
|
|
899
931
|
case AICustomizationManagementSection.Prompts:
|
|
900
932
|
default:
|
|
901
933
|
return {
|
|
902
|
-
title: ( localize(
|
|
903
|
-
description: ( localize(
|
|
934
|
+
title: ( localize(5276, "No prompts yet")),
|
|
935
|
+
description: ( localize(5277, "Create reusable prompts for common tasks"))
|
|
904
936
|
};
|
|
905
937
|
}
|
|
906
938
|
}
|
|
@@ -920,13 +952,25 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
920
952
|
}
|
|
921
953
|
}
|
|
922
954
|
layout(height, width) {
|
|
923
|
-
const sectionFooterHeight = this.sectionHeader.offsetHeight ||
|
|
924
|
-
const searchBarHeight = this.searchAndButtonContainer.offsetHeight ||
|
|
925
|
-
const
|
|
926
|
-
const listHeight = height - sectionFooterHeight - searchBarHeight - margins;
|
|
955
|
+
const sectionFooterHeight = this.sectionHeader.offsetHeight || 0;
|
|
956
|
+
const searchBarHeight = this.searchAndButtonContainer.offsetHeight || 52;
|
|
957
|
+
const listHeight = height - sectionFooterHeight - searchBarHeight;
|
|
927
958
|
this.searchInput.layout();
|
|
928
959
|
this.listContainer.style.height = `${Math.max(0, listHeight)}px`;
|
|
929
960
|
this.list.layout(Math.max(0, listHeight), width);
|
|
961
|
+
if (sectionFooterHeight === 0) {
|
|
962
|
+
getWindow(this.listContainer).requestAnimationFrame(() => {
|
|
963
|
+
if (this._store.isDisposed) {
|
|
964
|
+
return;
|
|
965
|
+
}
|
|
966
|
+
const actualFooterHeight = this.sectionHeader.offsetHeight;
|
|
967
|
+
if (actualFooterHeight > 0) {
|
|
968
|
+
const correctedHeight = height - actualFooterHeight - searchBarHeight;
|
|
969
|
+
this.listContainer.style.height = `${Math.max(0, correctedHeight)}px`;
|
|
970
|
+
this.list.layout(Math.max(0, correctedHeight), width);
|
|
971
|
+
}
|
|
972
|
+
});
|
|
973
|
+
}
|
|
930
974
|
}
|
|
931
975
|
get itemCount() {
|
|
932
976
|
return this.allItems.length;
|
|
@@ -938,6 +982,6 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
938
982
|
});
|
|
939
983
|
}
|
|
940
984
|
};
|
|
941
|
-
AICustomizationListWidget = ( __decorate([( __param(0, IInstantiationService)), ( __param(1, IPromptsService)), ( __param(2, IContextViewService)), ( __param(3, IOpenerService)), ( __param(4, IContextMenuService)), ( __param(5, IMenuService)), ( __param(6, IContextKeyService)), ( __param(7, IWorkspaceContextService)), ( __param(8, ILabelService)), ( __param(9, IAICustomizationWorkspaceService)), ( __param(10, IClipboardService)), ( __param(11,
|
|
985
|
+
AICustomizationListWidget = ( __decorate([( __param(0, IInstantiationService)), ( __param(1, IPromptsService)), ( __param(2, IContextViewService)), ( __param(3, IOpenerService)), ( __param(4, IContextMenuService)), ( __param(5, IMenuService)), ( __param(6, IContextKeyService)), ( __param(7, IWorkspaceContextService)), ( __param(8, ILabelService)), ( __param(9, IAICustomizationWorkspaceService)), ( __param(10, IClipboardService)), ( __param(11, IHoverService)), ( __param(12, IFileService)), ( __param(13, IPathService))], AICustomizationListWidget));
|
|
942
986
|
|
|
943
987
|
export { AICustomizationListWidget, sectionToPromptType };
|