@codingame/monaco-vscode-chat-service-override 36.2.7 → 37.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.d.ts +1 -0
- package/index.js +92 -10
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.d.ts +10 -3
- package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.js +54 -17
- package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.d.ts +14 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.js +46 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.d.ts +7 -2
- package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.js +34 -2
- package/vscode/src/vs/platform/agentHost/browser/{remoteAgentHostProtocolClient.d.ts → agentHostProtocolClient.d.ts} +240 -60
- package/vscode/src/vs/platform/agentHost/browser/agentHostProtocolClient.js +1911 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +30 -33
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +381 -315
- package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.d.ts +3 -1
- package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.js +2 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.d.ts +9 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostClientInfo.js +20 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.d.ts +144 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostExtensionProtocol.js +20 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +14 -6
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +14 -10
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +1 -1
- package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.d.ts +47 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostManagedRules.js +75 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.d.ts +68 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostManagedSettings.js +161 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +288 -45
- package/vscode/src/vs/platform/agentHost/common/agentMerge.d.ts +261 -0
- package/vscode/src/vs/platform/agentHost/common/agentMerge.js +67 -0
- package/vscode/src/vs/platform/agentHost/common/agentSdkSetup.d.ts +53 -0
- package/vscode/src/vs/platform/agentHost/common/agentSdkSetup.js +45 -0
- package/vscode/src/vs/platform/agentHost/common/changesetUri.d.ts +130 -0
- package/vscode/src/vs/platform/agentHost/common/changesetUri.js +27 -0
- package/vscode/src/vs/platform/agentHost/common/customAgents.d.ts +8 -2
- package/vscode/src/vs/platform/agentHost/common/customAgents.js +7 -0
- package/vscode/src/vs/platform/agentHost/common/meta/agentChatSurfaceMeta.d.ts +39 -0
- package/vscode/src/vs/platform/agentHost/common/meta/agentChatSurfaceMeta.js +25 -0
- package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.d.ts +110 -0
- package/vscode/src/vs/platform/agentHost/common/meta/agentCompletionAttachmentMeta.js +38 -0
- package/vscode/src/vs/platform/agentHost/common/meta/agentHostArtifactRemovalMeta.d.ts +4 -0
- package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.d.ts +7 -0
- package/vscode/src/vs/platform/agentHost/common/meta/clientPluginCustomizationMeta.js +14 -0
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +3 -3
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +16 -24
- package/vscode/src/vs/platform/agentHost/common/semanticSearchConstants.d.ts +8 -0
- package/vscode/src/vs/platform/agentHost/common/semanticSearchConstants.js +8 -0
- package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.d.ts +75 -0
- package/vscode/src/vs/platform/agentHost/common/sessionArtifacts.js +84 -0
- package/vscode/src/vs/platform/agentHost/common/shellInitScript.d.ts +24 -0
- package/vscode/src/vs/platform/agentHost/common/shellInitScript.js +63 -0
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +71 -20
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +187 -26
- package/vscode/src/vs/platform/agentHost/common/state/legacyProtocolCompatibility.d.ts +30 -0
- package/vscode/src/vs/platform/agentHost/common/state/legacyProtocolCompatibility.js +87 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.js +2 -2
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.d.ts +4 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation/reducer.js +37 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.d.ts +4 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-automation-run/reducer.js +45 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.d.ts +5 -4
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +100 -35
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.js +193 -49
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.js +161 -40
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.d.ts +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.js +5 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +2 -2
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/timestamps.js +7 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +114 -3
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +28 -5
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +4 -2
- package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.d.ts +34 -0
- package/vscode/src/vs/platform/agentHost/common/state/sessionWorkingDirectories.js +28 -0
- package/vscode/src/vs/platform/agentHost/common/worktreePaths.d.ts +24 -0
- package/vscode/src/vs/platform/agentHost/common/worktreePaths.js +15 -0
- package/vscode/src/vs/platform/browserView/common/browserChatToolReferenceNames.d.ts +1 -1
- package/vscode/src/vs/platform/chat/common/aiAgentEnv.d.ts +18 -0
- package/vscode/src/vs/platform/chat/common/aiAgentEnv.js +6 -0
- package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +5 -1
- package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +77 -5
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +1 -1
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +9 -5
- package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +1 -5
- package/vscode/src/vs/platform/networkFilter/common/settings.js +0 -4
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +19 -7
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +49 -37
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.d.ts +2 -1
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +12 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +1 -2
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +1 -0
- package/vscode/src/vs/platform/terminal/common/autoApprove/autoApproveParseSafety.d.ts +5 -0
- package/vscode/src/vs/platform/terminal/common/autoApprove/autoApproveParseSafety.js +7 -0
- package/vscode/src/vs/platform/terminal/common/autoApprove/cmdDelayedExpansion.d.ts +5 -0
- package/vscode/src/vs/platform/terminal/common/autoApprove/cmdDelayedExpansion.js +8 -0
- package/vscode/src/vs/{workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers → platform/terminal/common/autoApprove}/sedFileWriteParser.d.ts +1 -2
- package/vscode/src/vs/workbench/browser/chatChangesPill.d.ts +29 -0
- package/vscode/src/vs/workbench/browser/chatChangesPill.js +84 -0
- package/vscode/src/vs/workbench/common/chatPullRequest.d.ts +19 -0
- package/vscode/src/vs/workbench/common/chatPullRequest.js +53 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.js +342 -155
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.js +2 -2
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.d.ts +25 -2
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.js +150 -67
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +5 -3
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.js +39 -9
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.js +3 -3
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.js +6 -6
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.js +54 -17
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.js +11 -11
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.js +9 -9
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.js +5 -5
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.js +5 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.js +2 -2
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/media/voiceModeOnboarding.css +252 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.js +13 -13
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.js +7 -7
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.d.ts +146 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/voiceModeOnboarding.js +889 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +2 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +3 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +32 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +214 -161
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +256 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +11 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +19 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +30 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +19 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFindActions.js +237 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +68 -61
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +17 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +17 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +68 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +21 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +7 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +222 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +64 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +530 -305
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openAgentHostStateFileAction.js +63 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentHostCompletionAction.js +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginCommands.js +95 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +18 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +86 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +61 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +43 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +326 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +112 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +33 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostImportConversationStore.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostImportConversationStore.js +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +28 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +110 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.d.ts +131 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupport.js +638 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupportScope.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostMcpServerSupportScope.js +202 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.d.ts +24 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +26 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +10 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostProtectedResourcesService.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.d.ts +62 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostResponseFileChanges.js +40 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.d.ts +59 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionInputPills.js +624 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.d.ts +90 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectorySynchronizer.js +207 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostShellInitSynchronizer.js +140 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.js +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +74 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +511 -171
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.d.ts +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/applyAgentHostSessionConfig.js +48 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +55 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +210 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +43 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +46 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +216 -110
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +9 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +26 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +30 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/externalSessionsFilterMenu.js +62 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/sessionSummaryHover.css +104 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.d.ts +115 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHover.js +168 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/sessionSummaryHoverService.js +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessionsConfiguration.js +56 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +0 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +16 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +10 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +48 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +913 -220
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +148 -84
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +161 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +2367 -247
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +21 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementSectionRegistry.js +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.js +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +10 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +143 -68
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +10 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.d.ts +40 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCardList.js +302 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +49 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationGroupHeaderRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.js +240 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationAccessibility.js +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.d.ts +82 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.js +762 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.d.ts +80 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationDashboard.js +279 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationServiceImpl.js +437 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +85 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +697 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +40 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +164 -42
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.js +6 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +260 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +2097 -589
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.d.ts +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpServerCustomizationMigration.js +860 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +2229 -1338
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +79 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/customizationMigrationDashboard.css +354 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +85 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +1550 -357
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +2 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +13 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.d.ts +38 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.js +637 -319
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +28 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatPasteTargetService.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatPasteTargetService.js +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatReferenceAttachmentWidget.contribution.js +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/transcriptContextAttachmentWidget.contribution.js +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +1675 -633
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +93 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +823 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.d.ts +132 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostLogSources.js +446 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.d.ts +183 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostUsageSidecar.js +218 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +45 -42
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +163 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.js +72 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +22 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +105 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.d.ts +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEnablement.js +49 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +27 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +22 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +25 -25
- 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.d.ts +7 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +76 -43
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.d.ts +145 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugWireLogView.js +839 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +277 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +8 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +35 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +16 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +7 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.d.ts +86 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatInputPills.js +282 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +14 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +37 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +135 -82
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutlineCreator.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutlineCreator.js +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementPreview.js +114 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievements.contribution.js +326 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditor.js +99 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsEditorInput.js +46 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPetAchievementsWidget.js +301 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.js +103 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +9 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +103 -196
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +36 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +51 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +31 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +65 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +291 -138
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/microsoft-dark.svg +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/microsoft-light.svg +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSideChat.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSideChat.js +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +59 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +7 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +221 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +15 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +21 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSubmitRequestHandlerService.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSubmitRequestHandlerService.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +23 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +62 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +15 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +97 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +11 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +24 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.js +232 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.js +127 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/feedbackSurvey/chatModelFeedbackSurveyPromptContribution.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/feedbackSurvey/chatModelFeedbackSurveyPromptContribution.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatPetAchievements.css +236 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorOverlay.js +260 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.d.ts +39 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.js +155 -56
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +10 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +29 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +76 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +53 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +8 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +29 -71
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +36 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +9 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +5 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/media/promptTimeline.css +820 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptBucketing.js +100 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimeline.contribution.js +51 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineCard.js +113 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.d.ts +146 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineGutterRail.js +440 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineLayout.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineLayout.js +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.d.ts +194 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineModel.js +525 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRail.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.d.ts +128 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineRulerRail.js +460 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineStickyHeader.js +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptTimeline/promptTimelineWidgetContrib.js +160 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +25 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/sessionChatPillOptions.js +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/sessionPullRequestPill.js +58 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/speechToText/voiceCodeTranscriptionClient.d.ts +63 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/speechToText/voiceCodeTranscriptionClient.js +361 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.d.ts +35 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatEditorTopologyTelemetry.js +90 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.js +25 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +77 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +60 -43
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +60 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +10 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +13 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +44 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.d.ts +52 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.js +446 -79
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceInputUtils.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceInputMode/voiceInputMode.js +297 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.d.ts +137 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentOpenChat.js +714 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentOpenChat.css +379 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatFind/chatFindAccessibilityHelp.js +78 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatPetWidgetService.js +172 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNoticeHub.js +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +11 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +41 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +133 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.js +11 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.js +96 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +36 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +67 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +23 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +72 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputPlaceholderDecoration.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/{agentsVoice/common/agentsVoiceColors.js → chat/browser/widget/input/editor/chatInputPlaceholderDecoration.js} +17 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.js +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +21 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +48 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +457 -142
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +22 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +6 -22
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationBlueprint.js +163 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +27 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +79 -32
- package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatNotification.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +44 -11
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +404 -51
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +64 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +33 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSideChatService.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatSideChatService.js +70 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +18 -5
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +43 -14
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +4 -9
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +164 -71
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +19 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +172 -159
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.d.ts +115 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/customizationMigrationService.js +69 -0
- package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/chat/common/sessionChatPills.js +139 -0
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.js +21 -1
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +25 -2
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +55 -18
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +10 -10
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +1 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.d.ts +59 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditReviewSession.js +323 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionResolver.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionResolver.js +79 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +6 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +118 -13
- 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 +8 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.d.ts +81 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat.js +85 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +17 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +23 -23
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +17 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +81 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatSessionResolver.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatSessionResolver.js +86 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +10 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +97 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +2 -22
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +10 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.js +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +42 -36
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +2 -1
- 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 +25 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.d.ts +70 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/consoleCompactor/consoleCompactor.js +4316 -0
- 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 +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +188 -148
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +10 -10
- 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/browser/treeSitterCommandParser.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +82 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +5 -42
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalOutput.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalOutput.js +8 -0
- 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 +27 -8
- package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.d.ts +205 -0
- package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.js +1580 -0
- package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.d.ts +30 -0
- package/vscode/src/vs/workbench/services/agentEditorComments/browser/agentEditorCommentsOverlayWidget.js +175 -0
- package/vscode/src/vs/workbench/services/agentEditorComments/browser/media/agentEditorCommentsOverlayWidget.css +65 -0
- package/vscode/src/vs/workbench/services/agentHost/browser/agentSdkSetupService.d.ts +47 -0
- package/vscode/src/vs/workbench/services/agentHost/browser/agentSdkSetupService.js +129 -0
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +26 -8
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +89 -27
- package/vscode/src/vs/workbench/services/agentHost/browser/webAgentHostEnablementService.d.ts +8 -0
- package/vscode/src/vs/workbench/services/agentHost/browser/webAgentHostEnablementService.js +28 -0
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +5 -1
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.d.ts +18 -18
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.js +159 -60
- package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.d.ts +47 -0
- package/vscode/src/vs/workbench/services/agentHost/common/editorRemoteAgentHostTransport.js +362 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.d.ts +0 -1
- package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.js +0 -40
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +0 -1110
- package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +0 -76
- package/vscode/src/vs/platform/agentHost/common/agentHostResourceService.d.ts +0 -63
- package/vscode/src/vs/platform/agentHost/common/agentHostResourceService.js +0 -25
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +0 -254
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +0 -451
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +0 -1294
- package/vscode/src/vs/platform/agentHost/common/agentService.js +0 -92
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/errors.d.ts +0 -186
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/errors.js +0 -10
- package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.d.ts +0 -42
- package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.js +0 -7
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.d.ts +0 -15
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.js +0 -15
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +0 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +0 -243
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.d.ts +0 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +0 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +0 -92
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +0 -224
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.d.ts +0 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.js +0 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +0 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +0 -96
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.d.ts +0 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.js +0 -152
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.d.ts +0 -87
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.js +0 -772
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.d.ts +0 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.js +0 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.d.ts +0 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +0 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/media/planReviewFeedback.css +0 -160
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.d.ts +0 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +0 -123
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.d.ts +0 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +0 -572
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.d.ts +0 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.js +0 -399
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.d.ts +0 -321
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.js +0 -2117
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.d.ts +0 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.js +0 -367
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automation.d.ts +0 -78
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.d.ts +0 -13
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.d.ts +0 -11
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.d.ts +0 -16
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.d.ts +0 -36
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.d.ts +0 -12
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +0 -9
- package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +0 -15
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +0 -177
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +0 -67
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +0 -195
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +0 -65
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +0 -264
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +0 -190
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +0 -865
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +0 -31
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +0 -122
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +0 -24
- /package/vscode/src/vs/{workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers → platform/terminal/common/autoApprove}/sedFileWriteParser.js +0 -0
- /package/vscode/src/vs/{platform/agentHost/common/agentHost.config.contribution.d.ts → workbench/contrib/chat/browser/agentSessionsConfiguration.d.ts} +0 -0
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, createTextNode, addDisposableListener, getWindow, DisposableResizeObserver } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
5
|
+
import { $ as $$1, append, createTextNode, addDisposableListener, getWindow, DisposableResizeObserver, EventType, getActiveElement, clearNode, scheduleAtNextAnimationFrame, addDisposableGenericMouseDownListener } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
6
6
|
import { status } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
|
|
7
7
|
import { ActionBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar';
|
|
8
8
|
import { DisposableStore, Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
@@ -15,14 +15,15 @@ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codi
|
|
|
15
15
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
16
16
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
17
17
|
import { WorkbenchList } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService';
|
|
18
|
+
import { NotSelectableGroupId } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/list/list';
|
|
18
19
|
import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
|
|
19
20
|
import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
|
|
20
21
|
import { PromptsType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
|
|
21
|
-
import { promptIcon, hookIcon, instructionsIcon, skillIcon, agentIcon, workspaceIcon, userIcon, pluginIcon,
|
|
22
|
-
import { AI_CUSTOMIZATION_ITEM_TYPE_KEY, AI_CUSTOMIZATION_ITEM_URI_KEY, AI_CUSTOMIZATION_ITEM_DISABLED_KEY, AI_CUSTOMIZATION_ITEM_STORAGE_KEY, AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY,
|
|
22
|
+
import { promptIcon, hookIcon, instructionsIcon, skillIcon, agentIcon, workspaceIcon, userIcon, pluginIcon, extensionIcon, builtinIcon } from './aiCustomizationIcons.js';
|
|
23
|
+
import { AI_CUSTOMIZATION_ITEM_TYPE_KEY, AI_CUSTOMIZATION_ITEM_URI_KEY, AI_CUSTOMIZATION_ITEM_DISABLED_KEY, AI_CUSTOMIZATION_ITEM_STORAGE_KEY, AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, getAICustomizationManagementItemMenuId, sectionToPromptType, AICustomizationManagementCreateMenuId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement';
|
|
23
24
|
import { IAgentPluginService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginService.service';
|
|
24
25
|
import { InputBox } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/inputbox/inputBox';
|
|
25
|
-
import { defaultInputBoxStyles, defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
|
|
26
|
+
import { defaultInputBoxStyles, defaultButtonStyles, getButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
|
|
26
27
|
import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
27
28
|
import { IContextViewService, IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
|
|
28
29
|
import { HighlightedLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
|
|
@@ -34,13 +35,14 @@ import { IMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/ac
|
|
|
34
35
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
35
36
|
import { createActionViewItem, getContextMenuActions } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
|
|
36
37
|
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
|
|
37
|
-
import { AICustomizationSources, AICustomizationManagementSection
|
|
38
|
+
import { AICustomizationSources, AICustomizationManagementSection } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService';
|
|
38
39
|
import { IAICustomizationWorkspaceService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.service';
|
|
39
|
-
import {
|
|
40
|
+
import { Action, Separator } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
|
|
40
41
|
import { IClipboardService } from '@codingame/monaco-vscode-api/vscode/vs/platform/clipboard/common/clipboardService.service';
|
|
41
42
|
import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
|
|
42
43
|
import { getDefaultHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
|
|
43
44
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
45
|
+
import { hasReadableCustomizationContent } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostCustomizationUri';
|
|
44
46
|
import { generateCustomizationDebugReport } from './aiCustomizationDebugPanel.js';
|
|
45
47
|
import { getCustomizationSecondaryText } from './aiCustomizationListWidgetUtils.js';
|
|
46
48
|
export { truncateToFirstLine } from './aiCustomizationListWidgetUtils.js';
|
|
@@ -48,6 +50,9 @@ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platfo
|
|
|
48
50
|
import { ICustomizationHarnessService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService.service';
|
|
49
51
|
import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
|
|
50
52
|
import { IAICustomizationItemsModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.service';
|
|
53
|
+
import { setupCollapsibleSection, renderVirtualizedSectionLoadingPlaceholder, layoutVirtualizedSections, getVirtualizedSectionMinimumHeight, layoutVirtualizedSectionList, createCustomizationCardPrimaryAction } from './customizationCardList.js';
|
|
54
|
+
import { DomScrollableElement } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/scrollbar/scrollableElement';
|
|
55
|
+
import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
|
|
51
56
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
52
57
|
|
|
53
58
|
registerCss(aiCustomizationManagement);
|
|
@@ -96,9 +101,9 @@ class GroupHeaderRenderer {
|
|
|
96
101
|
renderElement(element, _index, templateData) {
|
|
97
102
|
templateData.elementDisposables.clear();
|
|
98
103
|
templateData.chevron.className = "group-chevron";
|
|
99
|
-
templateData.chevron.classList.add(
|
|
100
|
-
|
|
101
|
-
);
|
|
104
|
+
templateData.chevron.classList.add(...ThemeIcon.asClassNameArray(
|
|
105
|
+
element.collapsed ? Codicon.chevronRightCompact : Codicon.chevronDownCompact
|
|
106
|
+
));
|
|
102
107
|
templateData.icon.className = "group-icon";
|
|
103
108
|
templateData.icon.classList.add(...ThemeIcon.asClassNameArray(element.icon));
|
|
104
109
|
templateData.label.textContent = element.label;
|
|
@@ -139,6 +144,7 @@ function formatDisplayName(name) {
|
|
|
139
144
|
}
|
|
140
145
|
let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
141
146
|
constructor(
|
|
147
|
+
showItemActions,
|
|
142
148
|
hoverService,
|
|
143
149
|
labelService,
|
|
144
150
|
menuService,
|
|
@@ -146,6 +152,7 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
|
146
152
|
instantiationService,
|
|
147
153
|
agentPluginService
|
|
148
154
|
) {
|
|
155
|
+
this.showItemActions = showItemActions;
|
|
149
156
|
this.hoverService = hoverService;
|
|
150
157
|
this.labelService = labelService;
|
|
151
158
|
this.menuService = menuService;
|
|
@@ -207,9 +214,9 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
|
207
214
|
templateData.elementDisposables.add(this.hoverService.setupDelayedHover(templateData.container, () => {
|
|
208
215
|
let content;
|
|
209
216
|
if (element.isBuiltin) {
|
|
210
|
-
content = `${element.name}\n${( localize(
|
|
217
|
+
content = `${element.name}\n${( localize(6240, "Built-in"))}`;
|
|
211
218
|
} else if (element.extensionId) {
|
|
212
|
-
content = `${element.name}\n${( localize(
|
|
219
|
+
content = `${element.name}\n${( localize(6241, "Extension: {0}", element.extensionId))}`;
|
|
213
220
|
} else {
|
|
214
221
|
const isWorkspaceItem = element.source === AICustomizationSources.local;
|
|
215
222
|
const uriLabel = this.labelService.getUriLabel(element.uri, {
|
|
@@ -222,7 +229,7 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
|
222
229
|
}
|
|
223
230
|
const plugin = element.pluginUri && this.agentPluginService.plugins.get().find(p => isEqual(p.uri, element.pluginUri));
|
|
224
231
|
if (plugin) {
|
|
225
|
-
content += `\n${( localize(
|
|
232
|
+
content += `\n${( localize(6242, "Plugin: {0}", plugin.label))}`;
|
|
226
233
|
}
|
|
227
234
|
return {
|
|
228
235
|
content,
|
|
@@ -235,7 +242,7 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
|
235
242
|
templateData.container.classList.toggle("disabled", element.disabled);
|
|
236
243
|
const displayName = element.displayName ?? formatDisplayName(element.name);
|
|
237
244
|
templateData.nameLabel.set(displayName, element.nameMatches);
|
|
238
|
-
if (element.badge) {
|
|
245
|
+
if (element.badge && element.promptType !== PromptsType.instructions) {
|
|
239
246
|
templateData.badge.textContent = element.badge;
|
|
240
247
|
templateData.badge.style.display = "";
|
|
241
248
|
if (element.badgeTooltip) {
|
|
@@ -247,7 +254,8 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
|
247
254
|
templateData.badge.textContent = "";
|
|
248
255
|
templateData.badge.style.display = "none";
|
|
249
256
|
}
|
|
250
|
-
|
|
257
|
+
const hideLoadedStatus = element.status === "loaded" && (element.promptType === PromptsType.agent || element.promptType === PromptsType.skill || element.promptType === PromptsType.instructions);
|
|
258
|
+
if (element.status && !hideLoadedStatus) {
|
|
251
259
|
templateData.statusIcon.style.display = "";
|
|
252
260
|
templateData.statusIcon.className = "item-status-icon";
|
|
253
261
|
switch (element.status) {
|
|
@@ -324,20 +332,30 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
|
324
332
|
overlayPairs.push([AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, ( element.pluginUri.toString())]);
|
|
325
333
|
}
|
|
326
334
|
const overlay = this.contextKeyService.createOverlay(overlayPairs);
|
|
327
|
-
const menu = templateData.elementDisposables.add(
|
|
335
|
+
const menu = templateData.elementDisposables.add(
|
|
336
|
+
this.menuService.createMenu(getAICustomizationManagementItemMenuId(element.uri), overlay)
|
|
337
|
+
);
|
|
328
338
|
const updateActions = () => {
|
|
329
|
-
const actions = menu.getActions({
|
|
330
|
-
arg: context,
|
|
331
|
-
shouldForwardArgs: true
|
|
332
|
-
});
|
|
333
|
-
const {
|
|
334
|
-
primary
|
|
335
|
-
} = getContextMenuActions(actions, "inline");
|
|
336
339
|
templateData.actionBar.clear();
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
340
|
+
if (element.promptType === PromptsType.agent || element.promptType === PromptsType.skill || element.promptType === PromptsType.instructions) {
|
|
341
|
+
const moreAction = templateData.elementDisposables.add(( new Action("aiCustomization.moreActions", ( localize(6243, "More actions for {0}", displayName)), ThemeIcon.asClassName(Codicon.ellipsis), true, () => this.showItemActions(element, templateData.actionsContainer))));
|
|
342
|
+
templateData.actionBar.push(moreAction, {
|
|
343
|
+
icon: true,
|
|
344
|
+
label: false
|
|
345
|
+
});
|
|
346
|
+
} else {
|
|
347
|
+
const actions = menu.getActions({
|
|
348
|
+
arg: context,
|
|
349
|
+
shouldForwardArgs: true
|
|
350
|
+
});
|
|
351
|
+
const {
|
|
352
|
+
primary
|
|
353
|
+
} = getContextMenuActions(actions, "inline");
|
|
354
|
+
templateData.actionBar.push(primary, {
|
|
355
|
+
icon: true,
|
|
356
|
+
label: false
|
|
357
|
+
});
|
|
358
|
+
}
|
|
341
359
|
};
|
|
342
360
|
updateActions();
|
|
343
361
|
templateData.elementDisposables.add(menu.onDidChange(updateActions));
|
|
@@ -352,7 +370,7 @@ let AICustomizationItemRenderer = class AICustomizationItemRenderer {
|
|
|
352
370
|
templateData.disposables.dispose();
|
|
353
371
|
}
|
|
354
372
|
};
|
|
355
|
-
AICustomizationItemRenderer = ( __decorate([( __param(
|
|
373
|
+
AICustomizationItemRenderer = ( __decorate([( __param(1, IHoverService)), ( __param(2, ILabelService)), ( __param(3, IMenuService)), ( __param(4, IContextKeyService)), ( __param(5, IInstantiationService)), ( __param(6, IAgentPluginService))], AICustomizationItemRenderer));
|
|
356
374
|
function toItemsModelSection(section) {
|
|
357
375
|
switch (section) {
|
|
358
376
|
case AICustomizationManagementSection.Agents:
|
|
@@ -365,96 +383,130 @@ function toItemsModelSection(section) {
|
|
|
365
383
|
return undefined;
|
|
366
384
|
}
|
|
367
385
|
}
|
|
386
|
+
function usesCustomizationCardLayout(section) {
|
|
387
|
+
return section === AICustomizationManagementSection.Agents || section === AICustomizationManagementSection.Skills || section === AICustomizationManagementSection.Instructions || section === AICustomizationManagementSection.Hooks || section === AICustomizationManagementSection.Prompts;
|
|
388
|
+
}
|
|
389
|
+
function getAlwaysVisibleCustomizationGroupKeys(section, isFiltering) {
|
|
390
|
+
return usesCustomizationCardLayout(section) && !isFiltering ? [PromptsStorage.local, PromptsStorage.user] : [];
|
|
391
|
+
}
|
|
392
|
+
function getTargetedCreateActionLabel(label, compactLabel) {
|
|
393
|
+
return compactLabel ?? label.replace(/^\$\([^)]+\)\s*/, "");
|
|
394
|
+
}
|
|
368
395
|
function getCountAnnouncement(section, count, isFiltering) {
|
|
369
396
|
switch (section) {
|
|
370
397
|
case AICustomizationManagementSection.Agents:
|
|
371
398
|
if (isFiltering) {
|
|
372
399
|
if (count === 0) {
|
|
373
|
-
return localize(
|
|
400
|
+
return localize(6244, "No agents found");
|
|
374
401
|
}
|
|
375
402
|
if (count === 1) {
|
|
376
|
-
return localize(
|
|
403
|
+
return localize(6245, "1 agent found");
|
|
377
404
|
}
|
|
378
|
-
return localize(
|
|
405
|
+
return localize(6246, "{0} agents found", count);
|
|
379
406
|
}
|
|
380
407
|
if (count === 0) {
|
|
381
|
-
return localize(
|
|
408
|
+
return localize(6247, "No agents");
|
|
382
409
|
}
|
|
383
410
|
if (count === 1) {
|
|
384
|
-
return localize(
|
|
411
|
+
return localize(6248, "1 agent");
|
|
385
412
|
}
|
|
386
|
-
return localize(
|
|
413
|
+
return localize(6249, "{0} agents", count);
|
|
387
414
|
case AICustomizationManagementSection.Skills:
|
|
388
415
|
if (isFiltering) {
|
|
389
416
|
if (count === 0) {
|
|
390
|
-
return localize(
|
|
417
|
+
return localize(6250, "No skills found");
|
|
391
418
|
}
|
|
392
419
|
if (count === 1) {
|
|
393
|
-
return localize(
|
|
420
|
+
return localize(6251, "1 skill found");
|
|
394
421
|
}
|
|
395
|
-
return localize(
|
|
422
|
+
return localize(6252, "{0} skills found", count);
|
|
396
423
|
}
|
|
397
424
|
if (count === 0) {
|
|
398
|
-
return localize(
|
|
425
|
+
return localize(6253, "No skills");
|
|
399
426
|
}
|
|
400
427
|
if (count === 1) {
|
|
401
|
-
return localize(
|
|
428
|
+
return localize(6254, "1 skill");
|
|
402
429
|
}
|
|
403
|
-
return localize(
|
|
430
|
+
return localize(6255, "{0} skills", count);
|
|
404
431
|
case AICustomizationManagementSection.Instructions:
|
|
405
432
|
if (isFiltering) {
|
|
406
433
|
if (count === 0) {
|
|
407
|
-
return localize(
|
|
434
|
+
return localize(6256, "No instructions found");
|
|
408
435
|
}
|
|
409
436
|
if (count === 1) {
|
|
410
|
-
return localize(
|
|
437
|
+
return localize(6257, "1 instruction file found");
|
|
411
438
|
}
|
|
412
|
-
return localize(
|
|
439
|
+
return localize(6258, "{0} instruction files found", count);
|
|
413
440
|
}
|
|
414
441
|
if (count === 0) {
|
|
415
|
-
return localize(
|
|
442
|
+
return localize(6259, "No instructions");
|
|
416
443
|
}
|
|
417
444
|
if (count === 1) {
|
|
418
|
-
return localize(
|
|
445
|
+
return localize(6260, "1 instruction file");
|
|
419
446
|
}
|
|
420
|
-
return localize(
|
|
447
|
+
return localize(6261, "{0} instruction files", count);
|
|
421
448
|
case AICustomizationManagementSection.Hooks:
|
|
422
449
|
if (isFiltering) {
|
|
423
450
|
if (count === 0) {
|
|
424
|
-
return localize(
|
|
451
|
+
return localize(6262, "No hooks found");
|
|
425
452
|
}
|
|
426
453
|
if (count === 1) {
|
|
427
|
-
return localize(
|
|
454
|
+
return localize(6263, "1 hook found");
|
|
428
455
|
}
|
|
429
|
-
return localize(
|
|
456
|
+
return localize(6264, "{0} hooks found", count);
|
|
430
457
|
}
|
|
431
458
|
if (count === 0) {
|
|
432
|
-
return localize(
|
|
459
|
+
return localize(6265, "No hooks");
|
|
433
460
|
}
|
|
434
461
|
if (count === 1) {
|
|
435
|
-
return localize(
|
|
462
|
+
return localize(6266, "1 hook");
|
|
436
463
|
}
|
|
437
|
-
return localize(
|
|
464
|
+
return localize(6267, "{0} hooks", count);
|
|
438
465
|
case AICustomizationManagementSection.Prompts:
|
|
439
466
|
default:
|
|
440
467
|
if (isFiltering) {
|
|
441
468
|
if (count === 0) {
|
|
442
|
-
return localize(
|
|
469
|
+
return localize(6268, "No prompts found");
|
|
443
470
|
}
|
|
444
471
|
if (count === 1) {
|
|
445
|
-
return localize(
|
|
472
|
+
return localize(6269, "1 prompt found");
|
|
446
473
|
}
|
|
447
|
-
return localize(
|
|
474
|
+
return localize(6270, "{0} prompts found", count);
|
|
448
475
|
}
|
|
449
476
|
if (count === 0) {
|
|
450
|
-
return localize(
|
|
477
|
+
return localize(6271, "No prompts");
|
|
451
478
|
}
|
|
452
479
|
if (count === 1) {
|
|
453
|
-
return localize(
|
|
480
|
+
return localize(6272, "1 prompt");
|
|
454
481
|
}
|
|
455
|
-
return localize(
|
|
482
|
+
return localize(6273, "{0} prompts", count);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
function getCollapsedCustomizationGroupKey(section, groupKey) {
|
|
486
|
+
return `${section}:${groupKey}`;
|
|
487
|
+
}
|
|
488
|
+
function getCustomizationItemStatusLabel(item) {
|
|
489
|
+
switch (item.status) {
|
|
490
|
+
case "loading":
|
|
491
|
+
return localize(6274, "Loading");
|
|
492
|
+
case "loaded":
|
|
493
|
+
return localize(6275, "Loaded");
|
|
494
|
+
case "degraded":
|
|
495
|
+
return localize(6276, "Needs attention");
|
|
496
|
+
case "error":
|
|
497
|
+
return localize(6277, "Error");
|
|
498
|
+
default:
|
|
499
|
+
return undefined;
|
|
456
500
|
}
|
|
457
501
|
}
|
|
502
|
+
function getCustomizationItemAriaLabel(item) {
|
|
503
|
+
const displayName = item.displayName ?? formatDisplayName(item.name);
|
|
504
|
+
const secondaryText = getCustomizationSecondaryText(item.description, item.filename, item.promptType);
|
|
505
|
+
const statusLabel = getCustomizationItemStatusLabel(item);
|
|
506
|
+
const accessibleSecondaryText = [secondaryText, statusLabel, item.statusMessage].filter(Boolean).join(". ");
|
|
507
|
+
const nameAndDescription = accessibleSecondaryText ? ( localize(6278, "{0}. {1}", displayName, accessibleSecondaryText)) : displayName;
|
|
508
|
+
return item.disabled ? ( localize(6279, "{0}, disabled", nameAndDescription)) : nameAndDescription;
|
|
509
|
+
}
|
|
458
510
|
let AICustomizationListWidget = class AICustomizationListWidget extends Disposable {
|
|
459
511
|
constructor(
|
|
460
512
|
instantiationService,
|
|
@@ -493,16 +545,26 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
493
545
|
this.commandService = commandService;
|
|
494
546
|
this.itemsModel = itemsModel;
|
|
495
547
|
this.agentPluginService = agentPluginService;
|
|
548
|
+
this.cardSectionLists = [];
|
|
549
|
+
this.cardRowsByUri = ( new Map());
|
|
550
|
+
this.cardRowsById = ( new Map());
|
|
551
|
+
this.cardMenuButtonsById = ( new Map());
|
|
552
|
+
this.cardMenuOpen = false;
|
|
496
553
|
this.currentSection = AICustomizationManagementSection.Agents;
|
|
497
554
|
this.allItems = [];
|
|
498
555
|
this.displayEntries = [];
|
|
499
556
|
this.searchQuery = "";
|
|
557
|
+
this.sectionLoading = false;
|
|
500
558
|
this.collapsedGroups = ( new Set());
|
|
501
559
|
this._layoutDeferred = false;
|
|
560
|
+
this.revealLastItemScheduler = this._register(( new MutableDisposable()));
|
|
502
561
|
this.lastLayoutWidth = 0;
|
|
503
562
|
this.lastLayoutHeight = 0;
|
|
504
563
|
this.lastHeaderHeight = 0;
|
|
505
564
|
this.dropdownActionDisposables = this._register(( new DisposableStore()));
|
|
565
|
+
this.cardDisposables = this._register(( new DisposableStore()));
|
|
566
|
+
this.pendingCardSectionLayout = this._register(( new MutableDisposable()));
|
|
567
|
+
this.cardSectionScrollPositions = ( new Map());
|
|
506
568
|
this._sectionLoadId = 0;
|
|
507
569
|
this.delayedFilter = ( new Delayer(200));
|
|
508
570
|
this.currentSectionSubscription = this._register(( new MutableDisposable()));
|
|
@@ -514,7 +576,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
514
576
|
this.onDidRequestCreate = this._onDidRequestCreate.event;
|
|
515
577
|
this._onDidRequestCreateManual = this._register(( new Emitter()));
|
|
516
578
|
this.onDidRequestCreateManual = this._onDidRequestCreateManual.event;
|
|
517
|
-
this.element = $(".ai-customization-list-widget");
|
|
579
|
+
this.element = $(".ai-customization-list-widget.plugin-list-widget");
|
|
518
580
|
this.create();
|
|
519
581
|
this._register(autorun(reader => {
|
|
520
582
|
this.workspaceService.activeProjectRoot.read(reader);
|
|
@@ -558,7 +620,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
558
620
|
this.searchAndButtonContainer = append(this.element, $(".list-search-and-button-container"));
|
|
559
621
|
this.searchContainer = append(this.searchAndButtonContainer, $(".list-search-container"));
|
|
560
622
|
this.searchInput = this._register(( new InputBox(this.searchContainer, this.contextViewService, {
|
|
561
|
-
placeholder: ( localize(
|
|
623
|
+
placeholder: ( localize(6280, "Type to search...")),
|
|
562
624
|
inputBoxStyles: defaultInputBoxStyles
|
|
563
625
|
})));
|
|
564
626
|
this._register(this.searchInput.onDidChange(() => {
|
|
@@ -576,14 +638,12 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
576
638
|
}));
|
|
577
639
|
this.addButtonContainer = append(this.searchAndButtonContainer, $(".list-add-button-container"));
|
|
578
640
|
this.addButtonSimple = this._register(( new Button(this.addButtonContainer, {
|
|
579
|
-
...defaultButtonStyles
|
|
580
|
-
supportIcons: true
|
|
641
|
+
...defaultButtonStyles
|
|
581
642
|
})));
|
|
582
643
|
this.addButtonSimple.element.classList.add("list-add-button");
|
|
583
644
|
this._register(this.addButtonSimple.onDidClick(() => this.executePrimaryCreateAction()));
|
|
584
645
|
this.addButton = this._register(( new ButtonWithDropdown(this.addButtonContainer, {
|
|
585
646
|
...defaultButtonStyles,
|
|
586
|
-
supportIcons: true,
|
|
587
647
|
contextMenuProvider: this.contextMenuService,
|
|
588
648
|
addPrimaryActionToDropdown: false,
|
|
589
649
|
actions: {
|
|
@@ -592,14 +652,38 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
592
652
|
})));
|
|
593
653
|
this.addButton.element.classList.add("list-add-button");
|
|
594
654
|
this._register(this.addButton.onDidClick(() => this.executePrimaryCreateAction()));
|
|
595
|
-
this.
|
|
655
|
+
this.cardContainer = append(this.element, $(".plugin-card-container.customization-card-container"));
|
|
656
|
+
this.cardScrollable = this._register(( new DomScrollableElement(this.cardContainer, {
|
|
657
|
+
horizontal: ScrollbarVisibility.Hidden,
|
|
658
|
+
vertical: ScrollbarVisibility.Auto,
|
|
659
|
+
useShadows: false
|
|
660
|
+
})));
|
|
661
|
+
this._register(
|
|
662
|
+
addDisposableListener(this.cardContainer, EventType.SCROLL, () => {
|
|
663
|
+
this.cardScrollable.setScrollPosition({
|
|
664
|
+
scrollTop: this.cardContainer.scrollTop
|
|
665
|
+
});
|
|
666
|
+
})
|
|
667
|
+
);
|
|
668
|
+
this.cardScrollableNode = this.cardScrollable.getDomNode();
|
|
669
|
+
this.cardScrollableNode.classList.add("plugin-card-scrollable");
|
|
670
|
+
this.cardScrollableNode.style.display = "none";
|
|
671
|
+
this.element.appendChild(this.cardScrollableNode);
|
|
672
|
+
const cardResizeObserver = this._register(new DisposableResizeObserver(
|
|
673
|
+
"AICustomizationListWidget.cardScrollable",
|
|
674
|
+
() => this.scheduleCardSectionLayout()
|
|
675
|
+
));
|
|
676
|
+
this._register(cardResizeObserver.observe(this.cardScrollableNode));
|
|
596
677
|
this.listContainer = append(this.element, $(".list-container"));
|
|
597
678
|
this.emptyStateContainer = append(this.element, $(".list-empty-state"));
|
|
598
679
|
const emptyStateHeader = append(this.emptyStateContainer, $(".empty-state-header"));
|
|
599
680
|
this.emptyStateText = append(emptyStateHeader, $(".empty-state-text"));
|
|
600
681
|
this.emptyStateSubtext = append(this.emptyStateContainer, $(".empty-state-subtext"));
|
|
601
682
|
this.emptyStateContainer.style.display = "none";
|
|
602
|
-
const itemRenderer = this.instantiationService.createInstance(
|
|
683
|
+
const itemRenderer = this.instantiationService.createInstance(
|
|
684
|
+
AICustomizationItemRenderer,
|
|
685
|
+
(item, anchor) => this.showCardItemActions(item, anchor)
|
|
686
|
+
);
|
|
603
687
|
this.list = this._register(this.instantiationService.createInstance(
|
|
604
688
|
WorkbenchList,
|
|
605
689
|
"AICustomizationManagementList",
|
|
@@ -608,25 +692,27 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
608
692
|
[( new GroupHeaderRenderer(this.hoverService)), itemRenderer],
|
|
609
693
|
{
|
|
610
694
|
identityProvider: {
|
|
611
|
-
getId: entry => entry.type === "group-header" ? entry.id : entry.item.id
|
|
695
|
+
getId: entry => entry.type === "group-header" ? entry.id : entry.item.id,
|
|
696
|
+
getGroupId: entry => entry.type === "group-header" ? NotSelectableGroupId : 0
|
|
612
697
|
},
|
|
613
698
|
accessibilityProvider: {
|
|
614
699
|
getAriaLabel: entry => {
|
|
615
700
|
if (entry.type === "group-header") {
|
|
616
701
|
return localize(
|
|
617
|
-
|
|
702
|
+
6281,
|
|
618
703
|
"{0}, {1} items, {2}",
|
|
619
704
|
entry.label,
|
|
620
705
|
entry.count,
|
|
621
|
-
entry.collapsed ? ( localize(
|
|
706
|
+
entry.collapsed ? ( localize(6282, "collapsed")) : ( localize(6283, "expanded"))
|
|
622
707
|
);
|
|
623
708
|
}
|
|
624
|
-
const
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
709
|
+
const label = getCustomizationItemAriaLabel(entry.item);
|
|
710
|
+
if (!hasReadableCustomizationContent(entry.item.uri)) {
|
|
711
|
+
return localize(6284, "{0}, source content unavailable", label);
|
|
712
|
+
}
|
|
713
|
+
return label;
|
|
628
714
|
},
|
|
629
|
-
getWidgetAriaLabel: () => ( localize(
|
|
715
|
+
getWidgetAriaLabel: () => ( localize(6285, "Agent Customizations"))
|
|
630
716
|
},
|
|
631
717
|
keyboardNavigationLabelProvider: {
|
|
632
718
|
getKeyboardNavigationLabel: entry => entry.type === "group-header" ? entry.label : entry.item.name
|
|
@@ -640,7 +726,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
640
726
|
if (e.element.type === "group-header") {
|
|
641
727
|
this.toggleGroup(e.element);
|
|
642
728
|
} else {
|
|
643
|
-
|
|
729
|
+
if (hasReadableCustomizationContent(e.element.item.uri)) {
|
|
730
|
+
this._onDidSelectItem.fire(e.element.item);
|
|
731
|
+
}
|
|
644
732
|
}
|
|
645
733
|
}
|
|
646
734
|
}));
|
|
@@ -655,13 +743,18 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
655
743
|
}
|
|
656
744
|
}
|
|
657
745
|
}));
|
|
658
|
-
this._register(this.list.onContextMenu(e =>
|
|
746
|
+
this._register(this.list.onContextMenu(e => {
|
|
747
|
+
if (!this.usesCardLayout()) {
|
|
748
|
+
this.onContextMenu(e);
|
|
749
|
+
}
|
|
750
|
+
}));
|
|
659
751
|
this._register(this.fileService.onDidFilesChange(e => {
|
|
660
752
|
if (e.gotDeleted()) {
|
|
661
753
|
this.refresh();
|
|
662
754
|
}
|
|
663
755
|
}));
|
|
664
756
|
this.updateSectionHeader();
|
|
757
|
+
this.updateAddButton();
|
|
665
758
|
}
|
|
666
759
|
onContextMenu(e) {
|
|
667
760
|
if (!e.element || e.element.type !== "file-item") {
|
|
@@ -688,16 +781,16 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
688
781
|
overlayPairs.push([AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, ( item.pluginUri.toString())]);
|
|
689
782
|
}
|
|
690
783
|
const overlay = this.contextKeyService.createOverlay(overlayPairs);
|
|
691
|
-
const actions = this.menuService.getMenuActions(
|
|
784
|
+
const actions = this.menuService.getMenuActions(getAICustomizationManagementItemMenuId(item.uri), overlay, {
|
|
692
785
|
arg: context,
|
|
693
786
|
shouldForwardArgs: true
|
|
694
787
|
});
|
|
695
788
|
const {
|
|
696
789
|
secondary
|
|
697
790
|
} = getContextMenuActions(actions, "inline");
|
|
698
|
-
const copyActions = item.isBuiltin ? [] : [( new Separator()), ( new Action("copyFullPath", ( localize(
|
|
791
|
+
const copyActions = item.isBuiltin || !hasReadableCustomizationContent(item.uri) ? [] : [( new Separator()), ( new Action("copyFullPath", ( localize(6286, "Copy Full Path")), undefined, true, async () => {
|
|
699
792
|
await this.clipboardService.writeText(item.uri.fsPath);
|
|
700
|
-
})), ( new Action("copyRelativePath", ( localize(
|
|
793
|
+
})), ( new Action("copyRelativePath", ( localize(6287, "Copy Relative Path")), undefined, true, async () => {
|
|
701
794
|
const basePath = this.workspaceService.getActiveProjectRoot();
|
|
702
795
|
if (basePath && item.uri.fsPath.startsWith(basePath.fsPath)) {
|
|
703
796
|
const relative = item.uri.fsPath.substring(basePath.fsPath.length + 1);
|
|
@@ -714,12 +807,102 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
714
807
|
getActions: () => [...secondary, ...copyActions]
|
|
715
808
|
});
|
|
716
809
|
}
|
|
810
|
+
showCardItemActions(item, anchor) {
|
|
811
|
+
this.cardMenuOpen = true;
|
|
812
|
+
this.lastCardFocusItemId = item.id;
|
|
813
|
+
const disposables = ( new DisposableStore());
|
|
814
|
+
const context = {
|
|
815
|
+
uri: ( item.uri.toString()),
|
|
816
|
+
name: item.name,
|
|
817
|
+
promptType: item.promptType,
|
|
818
|
+
source: item.source,
|
|
819
|
+
pluginUri: item.pluginUri?.toString(),
|
|
820
|
+
itemId: item.id
|
|
821
|
+
};
|
|
822
|
+
const menu = disposables.add(this.createCardItemMenu(item));
|
|
823
|
+
const groups = menu.getActions({
|
|
824
|
+
arg: context,
|
|
825
|
+
shouldForwardArgs: true
|
|
826
|
+
});
|
|
827
|
+
const actions = [];
|
|
828
|
+
const addedActionIds = ( new Set());
|
|
829
|
+
for (const [, groupActions] of groups) {
|
|
830
|
+
const uniqueGroupActions = groupActions.filter(action => {
|
|
831
|
+
if (( addedActionIds.has(action.id))) {
|
|
832
|
+
return false;
|
|
833
|
+
}
|
|
834
|
+
addedActionIds.add(action.id);
|
|
835
|
+
return true;
|
|
836
|
+
});
|
|
837
|
+
if (uniqueGroupActions.length === 0) {
|
|
838
|
+
continue;
|
|
839
|
+
}
|
|
840
|
+
if (actions.length > 0) {
|
|
841
|
+
actions.push(( new Separator()));
|
|
842
|
+
}
|
|
843
|
+
actions.push(...uniqueGroupActions);
|
|
844
|
+
}
|
|
845
|
+
if (!item.isBuiltin && hasReadableCustomizationContent(item.uri)) {
|
|
846
|
+
if (actions.length > 0) {
|
|
847
|
+
actions.push(( new Separator()));
|
|
848
|
+
}
|
|
849
|
+
actions.push(disposables.add(( new Action("copyRelativePath", ( localize(6287, "Copy Relative Path")), undefined, true, async () => {
|
|
850
|
+
const basePath = this.workspaceService.getActiveProjectRoot();
|
|
851
|
+
const relativePath = basePath && item.uri.fsPath.startsWith(basePath.fsPath) ? item.uri.fsPath.substring(basePath.fsPath.length + 1) : this.labelService.getUriLabel(item.uri, {
|
|
852
|
+
relative: true
|
|
853
|
+
});
|
|
854
|
+
await this.clipboardService.writeText(relativePath);
|
|
855
|
+
}))));
|
|
856
|
+
}
|
|
857
|
+
if (actions.length === 0) {
|
|
858
|
+
this.cardMenuOpen = false;
|
|
859
|
+
disposables.dispose();
|
|
860
|
+
return;
|
|
861
|
+
}
|
|
862
|
+
this.contextMenuService.showContextMenu({
|
|
863
|
+
getAnchor: () => anchor,
|
|
864
|
+
getActions: () => actions,
|
|
865
|
+
onHide: () => {
|
|
866
|
+
this.cardMenuOpen = false;
|
|
867
|
+
if (!this.focusCardSectionItem(item.id)) {
|
|
868
|
+
(this.cardMenuButtonsById.get(item.id) ?? this.cardRowsById.get(item.id) ?? this.firstCardFocusElement)?.focus();
|
|
869
|
+
}
|
|
870
|
+
disposables.dispose();
|
|
871
|
+
}
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
createCardItemMenu(item) {
|
|
875
|
+
const overlayPairs = [
|
|
876
|
+
[AI_CUSTOMIZATION_ITEM_TYPE_KEY, item.promptType],
|
|
877
|
+
[AI_CUSTOMIZATION_ITEM_URI_KEY, ( item.uri.toString())],
|
|
878
|
+
[AI_CUSTOMIZATION_ITEM_DISABLED_KEY, item.disabled],
|
|
879
|
+
[AI_CUSTOMIZATION_ITEM_STORAGE_KEY, item.source]
|
|
880
|
+
];
|
|
881
|
+
if (item.pluginUri) {
|
|
882
|
+
overlayPairs.push([AI_CUSTOMIZATION_ITEM_PLUGIN_URI_KEY, ( item.pluginUri.toString())]);
|
|
883
|
+
}
|
|
884
|
+
const overlay = this.contextKeyService.createOverlay(overlayPairs);
|
|
885
|
+
return this.menuService.createMenu(getAICustomizationManagementItemMenuId(item.uri), overlay);
|
|
886
|
+
}
|
|
887
|
+
hasCardItemActions(item) {
|
|
888
|
+
if (hasReadableCustomizationContent(item.uri)) {
|
|
889
|
+
return true;
|
|
890
|
+
}
|
|
891
|
+
const menu = this.createCardItemMenu(item);
|
|
892
|
+
try {
|
|
893
|
+
return ( menu.getActions().some(([, actions]) => actions.length > 0));
|
|
894
|
+
} finally {
|
|
895
|
+
menu.dispose();
|
|
896
|
+
}
|
|
897
|
+
}
|
|
717
898
|
async setSection(section) {
|
|
718
899
|
const loadId = ++this._sectionLoadId;
|
|
719
900
|
this.currentSection = section;
|
|
901
|
+
this.element.classList.toggle("plugin-list-widget", this.usesCardLayout());
|
|
720
902
|
this.updateSectionHeader();
|
|
721
903
|
const modelSection = toItemsModelSection(section);
|
|
722
904
|
if (!modelSection) {
|
|
905
|
+
this.sectionLoading = false;
|
|
723
906
|
this.currentSectionSubscription.clear();
|
|
724
907
|
this.allItems = [];
|
|
725
908
|
const matchCount = this.filterItems();
|
|
@@ -729,6 +912,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
729
912
|
return;
|
|
730
913
|
}
|
|
731
914
|
const observable = this.itemsModel.getItems(modelSection);
|
|
915
|
+
this.sectionLoading = true;
|
|
732
916
|
this.currentSectionSubscription.value = autorun(reader => {
|
|
733
917
|
const items = observable.read(reader);
|
|
734
918
|
this.allItems = items;
|
|
@@ -738,6 +922,8 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
738
922
|
this.updateAddButton();
|
|
739
923
|
await this.itemsModel.whenSectionLoaded(modelSection);
|
|
740
924
|
if (loadId === this._sectionLoadId) {
|
|
925
|
+
this.sectionLoading = false;
|
|
926
|
+
this.filterItems();
|
|
741
927
|
this.announceItemCount(this.applySearchFilter(this.allItems).length);
|
|
742
928
|
}
|
|
743
929
|
}
|
|
@@ -748,47 +934,47 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
748
934
|
let learnMoreLabel;
|
|
749
935
|
switch (this.currentSection) {
|
|
750
936
|
case AICustomizationManagementSection.Agents:
|
|
751
|
-
title = ( localize(
|
|
937
|
+
title = ( localize(6288, "Agents"));
|
|
752
938
|
description = ( localize(
|
|
753
|
-
|
|
939
|
+
6289,
|
|
754
940
|
"Configure the AI to adopt different personas tailored to specific development tasks. Each agent has its own instructions, tools, and behavior."
|
|
755
941
|
));
|
|
756
942
|
docsUrl = "https://code.visualstudio.com/docs/agent-customization/custom-agents?referrer=in-product";
|
|
757
|
-
learnMoreLabel = ( localize(
|
|
943
|
+
learnMoreLabel = ( localize(6290, "Learn more about custom agents"));
|
|
758
944
|
break;
|
|
759
945
|
case AICustomizationManagementSection.Skills:
|
|
760
|
-
title = ( localize(
|
|
946
|
+
title = ( localize(6291, "Skills"));
|
|
761
947
|
description = ( localize(
|
|
762
|
-
|
|
948
|
+
6292,
|
|
763
949
|
"Folders of instructions, scripts, and resources that Copilot loads when relevant to perform specialized tasks."
|
|
764
950
|
));
|
|
765
951
|
docsUrl = "https://code.visualstudio.com/docs/agent-customization/agent-skills?referrer=in-product";
|
|
766
|
-
learnMoreLabel = ( localize(
|
|
952
|
+
learnMoreLabel = ( localize(6293, "Learn more about agent skills"));
|
|
767
953
|
break;
|
|
768
954
|
case AICustomizationManagementSection.Instructions:
|
|
769
|
-
title = ( localize(
|
|
955
|
+
title = ( localize(6294, "Instructions"));
|
|
770
956
|
description = ( localize(
|
|
771
|
-
|
|
957
|
+
6295,
|
|
772
958
|
"Define common guidelines and rules that automatically influence how AI generates code and handles development tasks."
|
|
773
959
|
));
|
|
774
960
|
docsUrl = "https://code.visualstudio.com/docs/agent-customization/custom-instructions?referrer=in-product";
|
|
775
|
-
learnMoreLabel = ( localize(
|
|
961
|
+
learnMoreLabel = ( localize(6296, "Learn more about custom instructions"));
|
|
776
962
|
break;
|
|
777
963
|
case AICustomizationManagementSection.Hooks:
|
|
778
|
-
title = ( localize(
|
|
779
|
-
description = ( localize(
|
|
964
|
+
title = ( localize(6297, "Hooks"));
|
|
965
|
+
description = ( localize(6298, "Prompts executed at specific points during an agentic lifecycle."));
|
|
780
966
|
docsUrl = "https://code.visualstudio.com/docs/agent-customization/hooks?referrer=in-product";
|
|
781
|
-
learnMoreLabel = ( localize(
|
|
967
|
+
learnMoreLabel = ( localize(6299, "Learn more about hooks"));
|
|
782
968
|
break;
|
|
783
969
|
case AICustomizationManagementSection.Prompts:
|
|
784
970
|
default:
|
|
785
|
-
title = ( localize(
|
|
971
|
+
title = ( localize(6300, "Prompts"));
|
|
786
972
|
description = ( localize(
|
|
787
|
-
|
|
973
|
+
6301,
|
|
788
974
|
"Reusable prompts for common development tasks like generating code, performing reviews, or scaffolding components."
|
|
789
975
|
));
|
|
790
976
|
docsUrl = "https://code.visualstudio.com/docs/agent-customization/prompt-files?referrer=in-product";
|
|
791
|
-
learnMoreLabel = ( localize(
|
|
977
|
+
learnMoreLabel = ( localize(6302, "Learn more about prompt files"));
|
|
792
978
|
break;
|
|
793
979
|
}
|
|
794
980
|
this.sectionTitle.textContent = title;
|
|
@@ -797,6 +983,14 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
797
983
|
this.sectionLink.href = docsUrl;
|
|
798
984
|
}
|
|
799
985
|
updateAddButton() {
|
|
986
|
+
if (this.usesCardLayout()) {
|
|
987
|
+
this.addButton.element.style.display = "none";
|
|
988
|
+
this.addButtonSimple.element.style.display = "none";
|
|
989
|
+
if (this.allItems.length > 0 || !this.searchQuery.trim()) {
|
|
990
|
+
this.filterItems();
|
|
991
|
+
}
|
|
992
|
+
return;
|
|
993
|
+
}
|
|
800
994
|
const actions = this.buildCreateActions();
|
|
801
995
|
const [primary, ...dropdown] = actions;
|
|
802
996
|
const hasDropdown = dropdown.length > 0;
|
|
@@ -826,7 +1020,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
826
1020
|
const hasWorkspace = this.hasActiveWorkspace();
|
|
827
1021
|
if (override?.commandId) {
|
|
828
1022
|
return [{
|
|
829
|
-
label:
|
|
1023
|
+
label: override.label ?? ( localize(6303, "New {0}", typeLabel)),
|
|
830
1024
|
enabled: true,
|
|
831
1025
|
run: () => {
|
|
832
1026
|
this.commandService.executeCommand(override.commandId);
|
|
@@ -840,9 +1034,8 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
840
1034
|
for (const [, group] of menuActions) {
|
|
841
1035
|
for (const menuItem of group) {
|
|
842
1036
|
if (menuItem instanceof MenuItemAction) {
|
|
843
|
-
const icon = ThemeIcon.isThemeIcon(menuItem.item.icon) ? menuItem.item.icon.id : Codicon.add.id;
|
|
844
1037
|
extensionCreateActions.push({
|
|
845
|
-
label:
|
|
1038
|
+
label: typeof menuItem.item.title === "string" ? menuItem.item.title : menuItem.item.title.value,
|
|
846
1039
|
enabled: menuItem.enabled,
|
|
847
1040
|
run: () => {
|
|
848
1041
|
menuItem.run();
|
|
@@ -859,8 +1052,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
859
1052
|
const addedTargets = ( new Set());
|
|
860
1053
|
if (override?.rootFile && hasWorkspace) {
|
|
861
1054
|
actions.push({
|
|
862
|
-
label:
|
|
1055
|
+
label: override.label ?? ( localize(6303, "New {0}", typeLabel)),
|
|
863
1056
|
enabled: true,
|
|
1057
|
+
target: "workspace",
|
|
864
1058
|
run: () => {
|
|
865
1059
|
this._onDidRequestCreateManual.fire({
|
|
866
1060
|
type: promptType,
|
|
@@ -873,64 +1067,74 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
873
1067
|
if (promptType === PromptsType.hook) {
|
|
874
1068
|
if (!this.workspaceService.isSessionsWindow && !descriptor.hideGenerateButton) {
|
|
875
1069
|
actions.push({
|
|
876
|
-
label:
|
|
1070
|
+
label: ( localize(6304, "Generate with AI")),
|
|
1071
|
+
tooltip: ( localize(6305, "Generate {0} with AI", typeLabel)),
|
|
877
1072
|
enabled: true,
|
|
1073
|
+
kind: "generate",
|
|
878
1074
|
run: () => {
|
|
879
1075
|
this._onDidRequestCreate.fire(promptType);
|
|
880
1076
|
}
|
|
881
1077
|
});
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
label: `$(${Codicon.add.id}) ${( localize(5787, "Configure Hooks"))}`,
|
|
885
|
-
enabled: true,
|
|
886
|
-
run: () => {
|
|
887
|
-
this._onDidRequestCreateManual.fire({
|
|
888
|
-
type: promptType,
|
|
889
|
-
target: "workspace"
|
|
890
|
-
});
|
|
891
|
-
}
|
|
892
|
-
});
|
|
893
|
-
}
|
|
894
|
-
} else if (!override?.commandId) {
|
|
1078
|
+
}
|
|
1079
|
+
if (hasWorkspace) {
|
|
895
1080
|
actions.push({
|
|
896
|
-
label:
|
|
897
|
-
|
|
898
|
-
|
|
1081
|
+
label: ( localize(6306, "New Hook")),
|
|
1082
|
+
compactLabel: ( localize(6306, "New Hook")),
|
|
1083
|
+
enabled: true,
|
|
1084
|
+
target: "workspace",
|
|
899
1085
|
run: () => {
|
|
900
1086
|
this._onDidRequestCreateManual.fire({
|
|
901
1087
|
type: promptType,
|
|
902
|
-
target: "
|
|
1088
|
+
target: "local"
|
|
903
1089
|
});
|
|
904
1090
|
}
|
|
905
1091
|
});
|
|
906
1092
|
}
|
|
1093
|
+
actions.push({
|
|
1094
|
+
label: ( localize(6306, "New Hook")),
|
|
1095
|
+
compactLabel: ( localize(6306, "New Hook")),
|
|
1096
|
+
enabled: true,
|
|
1097
|
+
target: "user",
|
|
1098
|
+
run: () => {
|
|
1099
|
+
this._onDidRequestCreateManual.fire({
|
|
1100
|
+
type: promptType,
|
|
1101
|
+
target: "user"
|
|
1102
|
+
});
|
|
1103
|
+
}
|
|
1104
|
+
});
|
|
907
1105
|
return actions;
|
|
908
1106
|
}
|
|
909
1107
|
if (!override?.rootFile) {
|
|
910
1108
|
if (!this.workspaceService.isSessionsWindow && !descriptor.hideGenerateButton) {
|
|
911
1109
|
actions.push({
|
|
912
|
-
label:
|
|
1110
|
+
label: ( localize(6304, "Generate with AI")),
|
|
1111
|
+
tooltip: ( localize(6305, "Generate {0} with AI", typeLabel)),
|
|
913
1112
|
enabled: true,
|
|
1113
|
+
kind: "generate",
|
|
914
1114
|
run: () => {
|
|
915
1115
|
this._onDidRequestCreate.fire(promptType);
|
|
916
1116
|
}
|
|
917
1117
|
});
|
|
918
1118
|
} else if (hasWorkspace) {
|
|
919
1119
|
actions.push({
|
|
920
|
-
label:
|
|
1120
|
+
label: ( localize(6307, "New {0} (Workspace)", createTypeLabel)),
|
|
1121
|
+
compactLabel: ( localize(6303, "New {0}", createTypeLabel)),
|
|
921
1122
|
enabled: true,
|
|
1123
|
+
target: "workspace",
|
|
922
1124
|
run: () => {
|
|
923
1125
|
this._onDidRequestCreateManual.fire({
|
|
924
1126
|
type: promptType,
|
|
925
|
-
target: "
|
|
1127
|
+
target: "local"
|
|
926
1128
|
});
|
|
927
1129
|
}
|
|
928
1130
|
});
|
|
929
1131
|
addedTargets.add("workspace");
|
|
930
1132
|
} else {
|
|
931
1133
|
actions.push({
|
|
932
|
-
label:
|
|
1134
|
+
label: ( localize(6308, "New {0} (User)", createTypeLabel)),
|
|
1135
|
+
compactLabel: ( localize(6303, "New {0}", createTypeLabel)),
|
|
933
1136
|
enabled: true,
|
|
1137
|
+
target: "user",
|
|
934
1138
|
run: () => {
|
|
935
1139
|
this._onDidRequestCreateManual.fire({
|
|
936
1140
|
type: promptType,
|
|
@@ -943,20 +1147,24 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
943
1147
|
}
|
|
944
1148
|
if (hasWorkspace && !( addedTargets.has("workspace"))) {
|
|
945
1149
|
actions.push({
|
|
946
|
-
label:
|
|
1150
|
+
label: ( localize(6307, "New {0} (Workspace)", createTypeLabel)),
|
|
1151
|
+
compactLabel: ( localize(6303, "New {0}", createTypeLabel)),
|
|
947
1152
|
enabled: true,
|
|
1153
|
+
target: "workspace",
|
|
948
1154
|
run: () => {
|
|
949
1155
|
this._onDidRequestCreateManual.fire({
|
|
950
1156
|
type: promptType,
|
|
951
|
-
target: "
|
|
1157
|
+
target: "local"
|
|
952
1158
|
});
|
|
953
1159
|
}
|
|
954
1160
|
});
|
|
955
1161
|
}
|
|
956
1162
|
if (!( addedTargets.has("user"))) {
|
|
957
1163
|
actions.push({
|
|
958
|
-
label:
|
|
1164
|
+
label: ( localize(6308, "New {0} (User)", createTypeLabel)),
|
|
1165
|
+
compactLabel: ( localize(6303, "New {0}", createTypeLabel)),
|
|
959
1166
|
enabled: true,
|
|
1167
|
+
target: "user",
|
|
960
1168
|
run: () => {
|
|
961
1169
|
this._onDidRequestCreateManual.fire({
|
|
962
1170
|
type: promptType,
|
|
@@ -968,8 +1176,9 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
968
1176
|
if (hasWorkspace && override?.rootFileShortcuts && !( addedTargets.has("workspace-root"))) {
|
|
969
1177
|
for (const fileName of override.rootFileShortcuts) {
|
|
970
1178
|
actions.push({
|
|
971
|
-
label:
|
|
1179
|
+
label: ( localize(6309, "New {0}", fileName)),
|
|
972
1180
|
enabled: true,
|
|
1181
|
+
target: "workspace",
|
|
973
1182
|
run: () => {
|
|
974
1183
|
this._onDidRequestCreateManual.fire({
|
|
975
1184
|
type: promptType,
|
|
@@ -999,16 +1208,16 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
999
1208
|
getTypeLabel() {
|
|
1000
1209
|
switch (this.currentSection) {
|
|
1001
1210
|
case AICustomizationManagementSection.Agents:
|
|
1002
|
-
return localize(
|
|
1211
|
+
return localize(6310, "Agent");
|
|
1003
1212
|
case AICustomizationManagementSection.Skills:
|
|
1004
|
-
return localize(
|
|
1213
|
+
return localize(6311, "Skill");
|
|
1005
1214
|
case AICustomizationManagementSection.Instructions:
|
|
1006
|
-
return localize(
|
|
1215
|
+
return localize(6312, "Instruction");
|
|
1007
1216
|
case AICustomizationManagementSection.Hooks:
|
|
1008
|
-
return localize(
|
|
1217
|
+
return localize(6313, "Hook");
|
|
1009
1218
|
case AICustomizationManagementSection.Prompts:
|
|
1010
1219
|
default:
|
|
1011
|
-
return localize(
|
|
1220
|
+
return localize(6314, "Prompt");
|
|
1012
1221
|
}
|
|
1013
1222
|
}
|
|
1014
1223
|
announceItemCount(count) {
|
|
@@ -1068,7 +1277,7 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1068
1277
|
if (group.items.length === 0) {
|
|
1069
1278
|
continue;
|
|
1070
1279
|
}
|
|
1071
|
-
const collapsed = ( this.collapsedGroups.has(group.groupKey));
|
|
1280
|
+
const collapsed = !this.usesCardLayout() && ( this.collapsedGroups.has(this.getCollapsedGroupKey(group.groupKey)));
|
|
1072
1281
|
this.displayEntries.push({
|
|
1073
1282
|
type: "group-header",
|
|
1074
1283
|
id: `group-${group.groupKey}`,
|
|
@@ -1096,108 +1305,69 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1096
1305
|
this.updateEmptyState();
|
|
1097
1306
|
}
|
|
1098
1307
|
groupMatchedItems(matchedItems) {
|
|
1099
|
-
const groups =
|
|
1100
|
-
groupKey: "agent-instructions",
|
|
1101
|
-
label: ( localize(5793, "Agent Instructions")),
|
|
1102
|
-
icon: instructionsIcon,
|
|
1103
|
-
description: ( localize(
|
|
1104
|
-
5794,
|
|
1105
|
-
"Instruction files automatically loaded for all agent interactions (e.g. AGENTS.md, CLAUDE.md, copilot-instructions.md)."
|
|
1106
|
-
)),
|
|
1107
|
-
items: []
|
|
1108
|
-
}, {
|
|
1109
|
-
groupKey: "context-instructions",
|
|
1110
|
-
label: ( localize(5795, "Included Based on Context")),
|
|
1111
|
-
icon: instructionsIcon,
|
|
1112
|
-
description: ( localize(
|
|
1113
|
-
5796,
|
|
1114
|
-
"Instructions automatically loaded when matching files are part of the context."
|
|
1115
|
-
)),
|
|
1116
|
-
items: []
|
|
1117
|
-
}, {
|
|
1118
|
-
groupKey: "on-demand-instructions",
|
|
1119
|
-
label: ( localize(5797, "Loaded on Demand")),
|
|
1120
|
-
icon: instructionsIcon,
|
|
1121
|
-
description: ( localize(5798, "Instructions loaded only when explicitly referenced.")),
|
|
1122
|
-
items: []
|
|
1123
|
-
}, {
|
|
1308
|
+
const groups = [{
|
|
1124
1309
|
groupKey: PromptsStorage.local,
|
|
1125
|
-
label: ( localize(
|
|
1310
|
+
label: ( localize(6315, "Workspace")),
|
|
1126
1311
|
icon: workspaceIcon,
|
|
1127
1312
|
description: ( localize(
|
|
1128
|
-
|
|
1313
|
+
6316,
|
|
1129
1314
|
"Customizations stored as files in your project folder and shared with your team via version control."
|
|
1130
1315
|
)),
|
|
1131
1316
|
items: []
|
|
1132
1317
|
}, {
|
|
1133
1318
|
groupKey: PromptsStorage.user,
|
|
1134
|
-
label: ( localize(
|
|
1319
|
+
label: ( localize(6317, "User")),
|
|
1135
1320
|
icon: userIcon,
|
|
1136
1321
|
description: ( localize(
|
|
1137
|
-
|
|
1322
|
+
6318,
|
|
1138
1323
|
"Customizations stored locally on your machine in a central location. Private to you and available across all projects."
|
|
1139
1324
|
)),
|
|
1140
1325
|
items: []
|
|
1141
1326
|
}, {
|
|
1142
1327
|
groupKey: PromptsStorage.plugin,
|
|
1143
|
-
label: ( localize(
|
|
1328
|
+
label: ( localize(6319, "Plugins")),
|
|
1144
1329
|
icon: pluginIcon,
|
|
1145
|
-
description: ( localize(
|
|
1146
|
-
items: []
|
|
1147
|
-
}, {
|
|
1148
|
-
groupKey: BUILTIN_STORAGE,
|
|
1149
|
-
label: ( localize(5805, "Built-in")),
|
|
1150
|
-
icon: builtinIcon,
|
|
1151
|
-
description: ( localize(5806, "Built-in customizations shipped with the application.")),
|
|
1152
|
-
items: []
|
|
1153
|
-
}] : [{
|
|
1154
|
-
groupKey: PromptsStorage.local,
|
|
1155
|
-
label: ( localize(5799, "Workspace")),
|
|
1156
|
-
icon: workspaceIcon,
|
|
1157
|
-
description: ( localize(
|
|
1158
|
-
5800,
|
|
1159
|
-
"Customizations stored as files in your project folder and shared with your team via version control."
|
|
1160
|
-
)),
|
|
1161
|
-
items: []
|
|
1162
|
-
}, {
|
|
1163
|
-
groupKey: PromptsStorage.user,
|
|
1164
|
-
label: ( localize(5801, "User")),
|
|
1165
|
-
icon: userIcon,
|
|
1166
|
-
description: ( localize(
|
|
1167
|
-
5802,
|
|
1168
|
-
"Customizations stored locally on your machine in a central location. Private to you and available across all projects."
|
|
1169
|
-
)),
|
|
1170
|
-
items: []
|
|
1171
|
-
}, {
|
|
1172
|
-
groupKey: PromptsStorage.plugin,
|
|
1173
|
-
label: ( localize(5803, "Plugins")),
|
|
1174
|
-
icon: pluginIcon,
|
|
1175
|
-
description: ( localize(5804, "Read-only customizations provided by installed plugins.")),
|
|
1330
|
+
description: ( localize(6320, "Read-only customizations provided by installed plugins.")),
|
|
1176
1331
|
items: []
|
|
1177
1332
|
}, {
|
|
1178
1333
|
groupKey: PromptsStorage.extension,
|
|
1179
|
-
label: ( localize(
|
|
1334
|
+
label: ( localize(6321, "Extensions")),
|
|
1180
1335
|
icon: extensionIcon,
|
|
1181
|
-
description: ( localize(
|
|
1336
|
+
description: ( localize(6322, "Read-only customizations provided by installed extensions.")),
|
|
1182
1337
|
items: []
|
|
1183
1338
|
}, {
|
|
1184
|
-
groupKey:
|
|
1185
|
-
label: ( localize(
|
|
1339
|
+
groupKey: PromptsStorage.builtIn,
|
|
1340
|
+
label: ( localize(6323, "Built-in")),
|
|
1186
1341
|
icon: builtinIcon,
|
|
1187
|
-
description: ( localize(
|
|
1342
|
+
description: ( localize(6324, "Built-in customizations shipped with the application.")),
|
|
1188
1343
|
items: []
|
|
1189
1344
|
}];
|
|
1190
1345
|
for (const item of matchedItems) {
|
|
1191
|
-
const key = item.groupKey ?? item.source ?? AICustomizationSources.local;
|
|
1346
|
+
const key = this.currentSection === AICustomizationManagementSection.Instructions ? item.source : item.groupKey ?? item.source ?? AICustomizationSources.local;
|
|
1192
1347
|
let group = groups.find(g => g.groupKey === key);
|
|
1193
1348
|
if (!group) {
|
|
1194
1349
|
let label;
|
|
1350
|
+
let description = "";
|
|
1195
1351
|
switch (key) {
|
|
1196
1352
|
case "remote-host":
|
|
1197
|
-
label = ( localize(
|
|
1353
|
+
label = ( localize(6325, "Remote"));
|
|
1354
|
+
if (this.currentSection === AICustomizationManagementSection.Skills) {
|
|
1355
|
+
description = ( localize(
|
|
1356
|
+
6326,
|
|
1357
|
+
"Skills available from {0}, the active remote agent environment.",
|
|
1358
|
+
this.harnessService.getActiveDescriptor().label
|
|
1359
|
+
));
|
|
1360
|
+
}
|
|
1198
1361
|
break;
|
|
1199
1362
|
case "remote-client":
|
|
1200
|
-
label = ( localize(
|
|
1363
|
+
label = ( localize(6327, "Local"));
|
|
1364
|
+
if (this.currentSection === AICustomizationManagementSection.Skills) {
|
|
1365
|
+
description = ( localize(
|
|
1366
|
+
6328,
|
|
1367
|
+
"Skills stored on your local machine and synced to {0}, the active remote agent environment.",
|
|
1368
|
+
this.harnessService.getActiveDescriptor().label
|
|
1369
|
+
));
|
|
1370
|
+
}
|
|
1201
1371
|
break;
|
|
1202
1372
|
default:
|
|
1203
1373
|
label = formatDisplayName(key);
|
|
@@ -1206,10 +1376,10 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1206
1376
|
groupKey: key,
|
|
1207
1377
|
label,
|
|
1208
1378
|
icon: Codicon.folder,
|
|
1209
|
-
description
|
|
1379
|
+
description,
|
|
1210
1380
|
items: []
|
|
1211
1381
|
};
|
|
1212
|
-
const builtinIdx = groups.findIndex(g => g.groupKey ===
|
|
1382
|
+
const builtinIdx = groups.findIndex(g => g.groupKey === PromptsStorage.builtIn);
|
|
1213
1383
|
if (builtinIdx >= 0) {
|
|
1214
1384
|
groups.splice(builtinIdx, 0, group);
|
|
1215
1385
|
} else {
|
|
@@ -1219,7 +1389,458 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1219
1389
|
group.items.push(item);
|
|
1220
1390
|
}
|
|
1221
1391
|
this.buildGroupedEntries(groups);
|
|
1222
|
-
this.
|
|
1392
|
+
if (this.usesCardLayout()) {
|
|
1393
|
+
this.renderCardGroups(groups);
|
|
1394
|
+
} else {
|
|
1395
|
+
this.commitDisplayEntries();
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1398
|
+
usesCardLayout() {
|
|
1399
|
+
return usesCustomizationCardLayout(this.currentSection);
|
|
1400
|
+
}
|
|
1401
|
+
renderCardGroups(groups) {
|
|
1402
|
+
const activeElement = getActiveElement();
|
|
1403
|
+
const shouldRestoreFocus = this.cardMenuOpen || !!activeElement && this.cardContainer.contains(activeElement);
|
|
1404
|
+
const focusItemId = this.lastCardFocusItemId;
|
|
1405
|
+
const isFiltering = !!this.searchQuery.trim();
|
|
1406
|
+
const usesTargetedCreateActions = this.usesTargetedCreateActions();
|
|
1407
|
+
const createGroupKey = isFiltering || usesTargetedCreateActions ? undefined : this.getCreateActionGroupKey();
|
|
1408
|
+
const alwaysVisibleGroupKeys = ( new Set(getAlwaysVisibleCustomizationGroupKeys(this.currentSection, isFiltering)));
|
|
1409
|
+
const visibleGroups = groups.filter(group => group.items.length > 0 || ( alwaysVisibleGroupKeys.has(group.groupKey)) || group.groupKey === createGroupKey || this.sectionLoading && !isFiltering);
|
|
1410
|
+
if (visibleGroups.length === 0) {
|
|
1411
|
+
this.captureCardSectionScrollPositions();
|
|
1412
|
+
this.cardDisposables.clear();
|
|
1413
|
+
this.cardSectionLists = [];
|
|
1414
|
+
this.cardRowsByUri.clear();
|
|
1415
|
+
this.cardRowsById.clear();
|
|
1416
|
+
this.cardMenuButtonsById.clear();
|
|
1417
|
+
this.firstCardFocusElement = undefined;
|
|
1418
|
+
this.cardSectionLayoutContainer = undefined;
|
|
1419
|
+
clearNode(this.cardContainer);
|
|
1420
|
+
this.cardScrollableNode.style.display = "none";
|
|
1421
|
+
this.updateEmptyState();
|
|
1422
|
+
return;
|
|
1423
|
+
}
|
|
1424
|
+
if (createGroupKey) {
|
|
1425
|
+
const createGroupIndex = visibleGroups.findIndex(group => group.groupKey === createGroupKey);
|
|
1426
|
+
if (createGroupIndex > 0) {
|
|
1427
|
+
visibleGroups.unshift(...visibleGroups.splice(createGroupIndex, 1));
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
this.captureCardSectionScrollPositions();
|
|
1431
|
+
this.cardDisposables.clear();
|
|
1432
|
+
this.cardSectionLists = [];
|
|
1433
|
+
this.cardRowsByUri.clear();
|
|
1434
|
+
this.cardRowsById.clear();
|
|
1435
|
+
this.cardMenuButtonsById.clear();
|
|
1436
|
+
this.firstCardFocusElement = undefined;
|
|
1437
|
+
this.cardSectionLayoutContainer = undefined;
|
|
1438
|
+
clearNode(this.cardContainer);
|
|
1439
|
+
this.listContainer.style.display = "none";
|
|
1440
|
+
this.emptyStateContainer.style.display = "none";
|
|
1441
|
+
this.cardScrollableNode.style.display = "";
|
|
1442
|
+
const content = append(this.cardContainer, $(
|
|
1443
|
+
".plugin-card-scroll.plugin-card-scroll-content.customization-card-scroll.distributed-section-layout"
|
|
1444
|
+
));
|
|
1445
|
+
this.cardSectionLayoutContainer = content;
|
|
1446
|
+
const contentResizeObserver = this.cardDisposables.add(new DisposableResizeObserver(
|
|
1447
|
+
"AICustomizationListWidget.cardScrollContent",
|
|
1448
|
+
() => this.scheduleCardSectionLayout()
|
|
1449
|
+
));
|
|
1450
|
+
this.cardDisposables.add(contentResizeObserver.observe(content));
|
|
1451
|
+
for (const group of visibleGroups) {
|
|
1452
|
+
const collapsedGroupKey = this.getCollapsedGroupKey(group.groupKey);
|
|
1453
|
+
const section = append(content, $(".plugin-card-section.customization-card-section"));
|
|
1454
|
+
const header = append(section, $(".plugin-card-section-header"));
|
|
1455
|
+
const text = append(header, $(".plugin-card-section-text"));
|
|
1456
|
+
const headingRow = append(text, $(".plugin-card-section-heading-row"));
|
|
1457
|
+
const heading = append(headingRow, $("h3.plugin-card-section-title"));
|
|
1458
|
+
heading.textContent = group.label;
|
|
1459
|
+
const count = append(headingRow, $(".plugin-card-section-count"));
|
|
1460
|
+
count.textContent = String(group.items.length);
|
|
1461
|
+
if (group.description) {
|
|
1462
|
+
const description = append(text, $(".plugin-card-section-description"));
|
|
1463
|
+
description.textContent = group.description;
|
|
1464
|
+
}
|
|
1465
|
+
if (!isFiltering && usesTargetedCreateActions && (group.groupKey === PromptsStorage.local || group.groupKey === PromptsStorage.user)) {
|
|
1466
|
+
this.renderTargetedCardCreateActions(header, group.groupKey);
|
|
1467
|
+
} else if (group.groupKey === createGroupKey) {
|
|
1468
|
+
this.renderCardCreateActions(header);
|
|
1469
|
+
}
|
|
1470
|
+
const inventory = append(section, $(
|
|
1471
|
+
".plugin-card-grid.plugin-inventory-list.customization-inventory-list.virtualized-section-list"
|
|
1472
|
+
));
|
|
1473
|
+
setupCollapsibleSection(headingRow, inventory, group.label, this.cardDisposables, ( this.collapsedGroups.has(collapsedGroupKey)), collapsed => {
|
|
1474
|
+
if (collapsed) {
|
|
1475
|
+
this.collapsedGroups.add(collapsedGroupKey);
|
|
1476
|
+
} else {
|
|
1477
|
+
this.collapsedGroups.delete(collapsedGroupKey);
|
|
1478
|
+
}
|
|
1479
|
+
this.layoutCardSectionLists();
|
|
1480
|
+
this.cardScrollable.scanDomNode();
|
|
1481
|
+
this.scheduleCardSectionLayout();
|
|
1482
|
+
});
|
|
1483
|
+
if (group.items.length === 0) {
|
|
1484
|
+
if (this.sectionLoading) {
|
|
1485
|
+
renderVirtualizedSectionLoadingPlaceholder(inventory, ( localize(6329, "Loading customizations...")), ITEM_HEIGHT);
|
|
1486
|
+
} else {
|
|
1487
|
+
const empty = append(inventory, $(".plugin-inventory-empty"));
|
|
1488
|
+
empty.textContent = this.getEmptyGroupMessage(group.groupKey);
|
|
1489
|
+
}
|
|
1490
|
+
continue;
|
|
1491
|
+
}
|
|
1492
|
+
this.createCustomizationSectionList(inventory, group.groupKey, group.label, group.items);
|
|
1493
|
+
}
|
|
1494
|
+
this.layoutCardSectionLists();
|
|
1495
|
+
this.cardScrollable.scanDomNode();
|
|
1496
|
+
this.scheduleCardSectionLayout();
|
|
1497
|
+
if (shouldRestoreFocus) {
|
|
1498
|
+
getWindow(this.element).requestAnimationFrame(() => {
|
|
1499
|
+
if (!focusItemId || !this.focusCardSectionItem(focusItemId)) {
|
|
1500
|
+
this.firstCardFocusElement?.focus();
|
|
1501
|
+
}
|
|
1502
|
+
});
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
createCustomizationSectionList(container, groupKey, label, items) {
|
|
1506
|
+
const key = `${this.currentSection}:${groupKey}`;
|
|
1507
|
+
container.style.height = `${ITEM_HEIGHT}px`;
|
|
1508
|
+
const itemRenderer = this.instantiationService.createInstance(
|
|
1509
|
+
AICustomizationItemRenderer,
|
|
1510
|
+
(item, anchor) => this.showCardItemActions(item, anchor)
|
|
1511
|
+
);
|
|
1512
|
+
const list = this.cardDisposables.add(this.instantiationService.createInstance(
|
|
1513
|
+
WorkbenchList,
|
|
1514
|
+
`AICustomizationManagementList.${label}`,
|
|
1515
|
+
container,
|
|
1516
|
+
( new AICustomizationListDelegate()),
|
|
1517
|
+
[itemRenderer],
|
|
1518
|
+
{
|
|
1519
|
+
identityProvider: {
|
|
1520
|
+
getId: entry => entry.item.id
|
|
1521
|
+
},
|
|
1522
|
+
accessibilityProvider: {
|
|
1523
|
+
getAriaLabel: entry => getCustomizationItemAriaLabel(entry.item),
|
|
1524
|
+
getWidgetAriaLabel: () => label,
|
|
1525
|
+
getSetSize: (_entry, _index, listLength) => listLength,
|
|
1526
|
+
getPosInSet: (_entry, index) => index + 1
|
|
1527
|
+
},
|
|
1528
|
+
keyboardNavigationLabelProvider: {
|
|
1529
|
+
getKeyboardNavigationLabel: entry => entry.item.name
|
|
1530
|
+
},
|
|
1531
|
+
multipleSelectionSupport: false,
|
|
1532
|
+
openOnSingleClick: true
|
|
1533
|
+
}
|
|
1534
|
+
));
|
|
1535
|
+
list.splice(0, 0, ( items.map(item => ({
|
|
1536
|
+
type: "file-item",
|
|
1537
|
+
item
|
|
1538
|
+
}))));
|
|
1539
|
+
list.scrollTop = this.cardSectionScrollPositions.get(key) ?? 0;
|
|
1540
|
+
this.cardDisposables.add(list.onDidOpen(event => {
|
|
1541
|
+
if (event.element) {
|
|
1542
|
+
this._onDidSelectItem.fire(event.element.item);
|
|
1543
|
+
}
|
|
1544
|
+
}));
|
|
1545
|
+
this.cardDisposables.add(list.onDidChangeFocus(event => {
|
|
1546
|
+
itemRenderer.setFocusedIndex(event.indexes.length ? event.indexes[0] : -1);
|
|
1547
|
+
if (event.elements.length > 0) {
|
|
1548
|
+
this.lastCardFocusItemId = event.elements[0].item.id;
|
|
1549
|
+
}
|
|
1550
|
+
}));
|
|
1551
|
+
this.cardDisposables.add(list.onDidFocus(() => {
|
|
1552
|
+
if (list.getFocus().length === 0 && items.length > 0) {
|
|
1553
|
+
list.setFocus([0]);
|
|
1554
|
+
}
|
|
1555
|
+
}));
|
|
1556
|
+
this.cardDisposables.add(list.onContextMenu(event => this.onContextMenu(event)));
|
|
1557
|
+
this.cardSectionLists.push({
|
|
1558
|
+
list,
|
|
1559
|
+
items,
|
|
1560
|
+
container,
|
|
1561
|
+
key
|
|
1562
|
+
});
|
|
1563
|
+
}
|
|
1564
|
+
captureCardSectionScrollPositions() {
|
|
1565
|
+
for (const section of this.cardSectionLists) {
|
|
1566
|
+
this.cardSectionScrollPositions.set(section.key, section.list.scrollTop);
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
1569
|
+
layoutCardSectionLists() {
|
|
1570
|
+
const content = this.cardSectionLayoutContainer;
|
|
1571
|
+
if (!content) {
|
|
1572
|
+
return;
|
|
1573
|
+
}
|
|
1574
|
+
const heights = layoutVirtualizedSections(content, ( this.cardSectionLists.map(section => ({
|
|
1575
|
+
container: section.container,
|
|
1576
|
+
contentHeight: section.items.length * ITEM_HEIGHT,
|
|
1577
|
+
minimumHeight: getVirtualizedSectionMinimumHeight(section.items, () => ITEM_HEIGHT)
|
|
1578
|
+
}))));
|
|
1579
|
+
for (let index = 0; index < this.cardSectionLists.length; index++) {
|
|
1580
|
+
const section = this.cardSectionLists[index];
|
|
1581
|
+
const height = heights[index];
|
|
1582
|
+
layoutVirtualizedSectionList(
|
|
1583
|
+
section.list,
|
|
1584
|
+
section.container,
|
|
1585
|
+
height,
|
|
1586
|
+
section.container.clientWidth || undefined
|
|
1587
|
+
);
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
scheduleCardSectionLayout() {
|
|
1591
|
+
const targetWindow = getWindow(this.element);
|
|
1592
|
+
this.pendingCardSectionLayout.value = scheduleAtNextAnimationFrame(targetWindow, () => {
|
|
1593
|
+
this.layoutCardSectionLists();
|
|
1594
|
+
this.cardScrollable.scanDomNode();
|
|
1595
|
+
});
|
|
1596
|
+
}
|
|
1597
|
+
focusCardSectionItem(itemId) {
|
|
1598
|
+
for (const section of this.cardSectionLists) {
|
|
1599
|
+
const index = section.items.findIndex(item => item.id === itemId);
|
|
1600
|
+
if (index >= 0) {
|
|
1601
|
+
section.list.reveal(index);
|
|
1602
|
+
section.list.setFocus([index]);
|
|
1603
|
+
section.list.domFocus();
|
|
1604
|
+
return true;
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
return false;
|
|
1608
|
+
}
|
|
1609
|
+
usesTargetedCreateActions() {
|
|
1610
|
+
return this.currentSection === AICustomizationManagementSection.Agents || this.currentSection === AICustomizationManagementSection.Skills || this.currentSection === AICustomizationManagementSection.Instructions || this.currentSection === AICustomizationManagementSection.Hooks || this.currentSection === AICustomizationManagementSection.Prompts;
|
|
1611
|
+
}
|
|
1612
|
+
getCreateActionGroupKey() {
|
|
1613
|
+
if (this.buildCreateActions().length === 0) {
|
|
1614
|
+
return undefined;
|
|
1615
|
+
}
|
|
1616
|
+
return this.hasActiveWorkspace() ? PromptsStorage.local : PromptsStorage.user;
|
|
1617
|
+
}
|
|
1618
|
+
renderTargetedCardCreateActions(header, groupKey) {
|
|
1619
|
+
const target = groupKey === PromptsStorage.local ? "workspace" : "user";
|
|
1620
|
+
const hasWorkspace = this.hasActiveWorkspace();
|
|
1621
|
+
const actions = this.buildCreateActions().filter(
|
|
1622
|
+
action => action.target === target || action.target === undefined && (target === "workspace" ? hasWorkspace : !hasWorkspace)
|
|
1623
|
+
);
|
|
1624
|
+
const primary = actions.find(action => action.target === target) ?? actions[0];
|
|
1625
|
+
if (!primary) {
|
|
1626
|
+
return;
|
|
1627
|
+
}
|
|
1628
|
+
const container = append(header, $(".plugin-card-section-actions"));
|
|
1629
|
+
const label = this.formatTargetedCreateActionLabel(primary);
|
|
1630
|
+
const button = this.cardDisposables.add(( new Button(container, {
|
|
1631
|
+
...defaultButtonStyles,
|
|
1632
|
+
secondary: true,
|
|
1633
|
+
title: primary.tooltip ?? label,
|
|
1634
|
+
ariaLabel: primary.tooltip ?? label
|
|
1635
|
+
})));
|
|
1636
|
+
button.element.classList.add("customization-create-action");
|
|
1637
|
+
button.label = label;
|
|
1638
|
+
button.enabled = primary.enabled;
|
|
1639
|
+
this.firstCardFocusElement ??= button.element;
|
|
1640
|
+
this.cardDisposables.add(button.onDidClick(() => primary.run()));
|
|
1641
|
+
const generateAction = actions.find(action => action.kind === "generate");
|
|
1642
|
+
if (generateAction && generateAction !== primary) {
|
|
1643
|
+
const generateButton = this.cardDisposables.add(( new Button(container, {
|
|
1644
|
+
...defaultButtonStyles,
|
|
1645
|
+
secondary: true,
|
|
1646
|
+
title: generateAction.tooltip ?? generateAction.label,
|
|
1647
|
+
ariaLabel: generateAction.tooltip ?? generateAction.label
|
|
1648
|
+
})));
|
|
1649
|
+
generateButton.element.classList.add("customization-generate-action");
|
|
1650
|
+
generateButton.label = generateAction.label;
|
|
1651
|
+
generateButton.enabled = generateAction.enabled;
|
|
1652
|
+
this.cardDisposables.add(generateButton.onDidClick(() => generateAction.run()));
|
|
1653
|
+
}
|
|
1654
|
+
const secondaryActions = actions.filter(action => action !== primary && action !== generateAction);
|
|
1655
|
+
if (secondaryActions.length > 0) {
|
|
1656
|
+
const moreLabel = ( localize(
|
|
1657
|
+
6330,
|
|
1658
|
+
"More creation actions for {0}",
|
|
1659
|
+
groupKey === PromptsStorage.local ? ( localize(6331, "Workspace")) : ( localize(6332, "User"))
|
|
1660
|
+
));
|
|
1661
|
+
const more = this.cardDisposables.add(( new Button(container, {
|
|
1662
|
+
...getButtonStyles({
|
|
1663
|
+
buttonSecondaryBackground: undefined,
|
|
1664
|
+
buttonSecondaryBorder: undefined
|
|
1665
|
+
}),
|
|
1666
|
+
secondary: true,
|
|
1667
|
+
supportIcons: true,
|
|
1668
|
+
title: moreLabel,
|
|
1669
|
+
ariaLabel: moreLabel
|
|
1670
|
+
})));
|
|
1671
|
+
more.element.classList.add("plugin-card-icon-button", "customization-create-more-action");
|
|
1672
|
+
more.label = `$(${Codicon.ellipsis.id})`;
|
|
1673
|
+
this.cardDisposables.add(
|
|
1674
|
+
more.onDidClick(() => this.showCreateActionsMenu(secondaryActions, more.element))
|
|
1675
|
+
);
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
formatTargetedCreateActionLabel(action) {
|
|
1679
|
+
return getTargetedCreateActionLabel(action.label, action.compactLabel);
|
|
1680
|
+
}
|
|
1681
|
+
showCreateActionsMenu(createActions, anchor) {
|
|
1682
|
+
const disposables = ( new DisposableStore());
|
|
1683
|
+
const actions = ( createActions.map((action, index) => disposables.add(( new Action(
|
|
1684
|
+
`customization.create.${index}`,
|
|
1685
|
+
action.label.replace(/^\$\([^)]+\)\s*/, ""),
|
|
1686
|
+
undefined,
|
|
1687
|
+
action.enabled,
|
|
1688
|
+
() => action.run()
|
|
1689
|
+
)))));
|
|
1690
|
+
this.contextMenuService.showContextMenu({
|
|
1691
|
+
getAnchor: () => anchor,
|
|
1692
|
+
getActions: () => actions,
|
|
1693
|
+
onHide: () => disposables.dispose()
|
|
1694
|
+
});
|
|
1695
|
+
}
|
|
1696
|
+
getEmptyGroupMessage(groupKey) {
|
|
1697
|
+
const workspace = groupKey === PromptsStorage.local;
|
|
1698
|
+
switch (this.currentSection) {
|
|
1699
|
+
case AICustomizationManagementSection.Agents:
|
|
1700
|
+
return workspace ? ( localize(6333, "No workspace agents yet.")) : ( localize(6334, "No user agents yet."));
|
|
1701
|
+
case AICustomizationManagementSection.Skills:
|
|
1702
|
+
return workspace ? ( localize(6335, "No workspace skills yet.")) : ( localize(6336, "No user skills yet."));
|
|
1703
|
+
case AICustomizationManagementSection.Instructions:
|
|
1704
|
+
return workspace ? ( localize(6337, "No workspace instructions yet.")) : ( localize(6338, "No user instructions yet."));
|
|
1705
|
+
case AICustomizationManagementSection.Hooks:
|
|
1706
|
+
return workspace ? ( localize(6339, "No workspace hooks yet.")) : ( localize(6340, "No user hooks yet."));
|
|
1707
|
+
case AICustomizationManagementSection.Prompts:
|
|
1708
|
+
return workspace ? ( localize(6341, "No workspace prompts yet.")) : ( localize(6342, "No user prompts yet."));
|
|
1709
|
+
default:
|
|
1710
|
+
return localize(6343, "No customizations are available.");
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
renderCardCreateActions(header) {
|
|
1714
|
+
const actions = this.buildCreateActions();
|
|
1715
|
+
const [primary, ...dropdown] = actions;
|
|
1716
|
+
if (!primary) {
|
|
1717
|
+
return;
|
|
1718
|
+
}
|
|
1719
|
+
const container = append(header, $(".plugin-card-section-actions"));
|
|
1720
|
+
const accessibleLabel = primary.tooltip ?? primary.label.replace(/\$\([^)]+\)\s*/g, "");
|
|
1721
|
+
if (dropdown.length > 0) {
|
|
1722
|
+
const button = this.cardDisposables.add(( new ButtonWithDropdown(container, {
|
|
1723
|
+
...defaultButtonStyles,
|
|
1724
|
+
secondary: true,
|
|
1725
|
+
contextMenuProvider: this.contextMenuService,
|
|
1726
|
+
addPrimaryActionToDropdown: false,
|
|
1727
|
+
actions: {
|
|
1728
|
+
getActions: () => this.getDropdownActions()
|
|
1729
|
+
},
|
|
1730
|
+
title: accessibleLabel,
|
|
1731
|
+
ariaLabel: accessibleLabel
|
|
1732
|
+
})));
|
|
1733
|
+
button.element.classList.add("customization-create-action");
|
|
1734
|
+
button.label = primary.label;
|
|
1735
|
+
button.enabled = primary.enabled;
|
|
1736
|
+
this.firstCardFocusElement ??= button.element;
|
|
1737
|
+
this.cardDisposables.add(button.onDidClick(() => this.executePrimaryCreateAction()));
|
|
1738
|
+
return;
|
|
1739
|
+
}
|
|
1740
|
+
const button = this.cardDisposables.add(( new Button(container, {
|
|
1741
|
+
...defaultButtonStyles,
|
|
1742
|
+
secondary: true,
|
|
1743
|
+
title: accessibleLabel,
|
|
1744
|
+
ariaLabel: accessibleLabel
|
|
1745
|
+
})));
|
|
1746
|
+
button.element.classList.add("customization-create-action");
|
|
1747
|
+
button.label = primary.label;
|
|
1748
|
+
button.enabled = primary.enabled;
|
|
1749
|
+
this.firstCardFocusElement ??= button.element;
|
|
1750
|
+
this.cardDisposables.add(button.onDidClick(() => this.executePrimaryCreateAction()));
|
|
1751
|
+
}
|
|
1752
|
+
appendCustomizationCardRow(parent, item, groupLabel, cardList) {
|
|
1753
|
+
const row = append(parent, $(".plugin-list-item.plugin-home-row.customization-home-row"));
|
|
1754
|
+
row.classList.toggle("disabled", item.disabled);
|
|
1755
|
+
const displayName = item.displayName ?? formatDisplayName(item.name);
|
|
1756
|
+
const secondaryText = getCustomizationSecondaryText(item.description, item.filename, item.promptType);
|
|
1757
|
+
const statusLabel = getCustomizationItemStatusLabel(item);
|
|
1758
|
+
const accessibleSecondaryText = [secondaryText, statusLabel].filter(Boolean).join(". ");
|
|
1759
|
+
const accessibleLabel = item.disabled ? ( localize(
|
|
1760
|
+
6344,
|
|
1761
|
+
"{0}. {1}. Disabled",
|
|
1762
|
+
displayName,
|
|
1763
|
+
accessibleSecondaryText || groupLabel
|
|
1764
|
+
)) : ( localize(6345, "{0}. {1}", displayName, accessibleSecondaryText || groupLabel));
|
|
1765
|
+
const primary = createCustomizationCardPrimaryAction(row, accessibleLabel, "customization-row-primary");
|
|
1766
|
+
const hasReadableContent = hasReadableCustomizationContent(item.uri);
|
|
1767
|
+
if (!hasReadableContent) {
|
|
1768
|
+
primary.setAttribute("aria-disabled", "true");
|
|
1769
|
+
}
|
|
1770
|
+
this.firstCardFocusElement ??= primary;
|
|
1771
|
+
if (!( this.cardRowsByUri.has(( item.uri.toString())))) {
|
|
1772
|
+
this.cardRowsByUri.set(( item.uri.toString()), primary);
|
|
1773
|
+
}
|
|
1774
|
+
this.cardRowsById.set(item.id, primary);
|
|
1775
|
+
this.cardDisposables.add(addDisposableListener(primary, "focus", () => {
|
|
1776
|
+
this.lastCardFocusItemId = item.id;
|
|
1777
|
+
}));
|
|
1778
|
+
if (hasReadableContent) {
|
|
1779
|
+
this.cardDisposables.add(
|
|
1780
|
+
addDisposableListener(primary, "click", () => this._onDidSelectItem.fire(item))
|
|
1781
|
+
);
|
|
1782
|
+
}
|
|
1783
|
+
const hasItemActions = this.hasCardItemActions(item);
|
|
1784
|
+
if (hasItemActions) {
|
|
1785
|
+
this.cardDisposables.add(addDisposableListener(row, "contextmenu", event => {
|
|
1786
|
+
event.preventDefault();
|
|
1787
|
+
this.showCardItemActions(item, row);
|
|
1788
|
+
}));
|
|
1789
|
+
}
|
|
1790
|
+
this.cardDisposables.add(this.hoverService.setupDelayedHover(row, () => ({
|
|
1791
|
+
content: `${displayName}\n${this.labelService.getUriLabel(item.uri, {
|
|
1792
|
+
relative: item.source === AICustomizationSources.local
|
|
1793
|
+
})}`,
|
|
1794
|
+
appearance: {
|
|
1795
|
+
compact: true,
|
|
1796
|
+
skipFadeInAnimation: true
|
|
1797
|
+
}
|
|
1798
|
+
})));
|
|
1799
|
+
const details = append(primary, $(".plugin-list-item-details"));
|
|
1800
|
+
const nameRow = append(details, $(".plugin-list-item-name-row"));
|
|
1801
|
+
const name = append(nameRow, $(".plugin-list-item-name"));
|
|
1802
|
+
name.textContent = displayName;
|
|
1803
|
+
if (item.badge && item.promptType !== PromptsType.instructions) {
|
|
1804
|
+
const badge = append(nameRow, $(".inline-badge.item-badge"));
|
|
1805
|
+
badge.textContent = item.badge;
|
|
1806
|
+
badge.title = item.badgeTooltip ?? item.badge;
|
|
1807
|
+
}
|
|
1808
|
+
const description = append(details, $(".plugin-list-item-description"));
|
|
1809
|
+
description.textContent = secondaryText ?? ( localize(6346, "No description provided."));
|
|
1810
|
+
const actionElements = [];
|
|
1811
|
+
if (hasItemActions) {
|
|
1812
|
+
const actionContainer = append(row, $(".plugin-list-item-action"));
|
|
1813
|
+
this.cardDisposables.add(
|
|
1814
|
+
addDisposableGenericMouseDownListener(actionContainer, e => e.stopPropagation())
|
|
1815
|
+
);
|
|
1816
|
+
this.cardDisposables.add(
|
|
1817
|
+
addDisposableListener(actionContainer, "click", e => e.stopPropagation())
|
|
1818
|
+
);
|
|
1819
|
+
const more = this.cardDisposables.add(( new Button(actionContainer, {
|
|
1820
|
+
...getButtonStyles({
|
|
1821
|
+
buttonSecondaryBackground: undefined,
|
|
1822
|
+
buttonSecondaryBorder: undefined
|
|
1823
|
+
}),
|
|
1824
|
+
secondary: true,
|
|
1825
|
+
supportIcons: true,
|
|
1826
|
+
ariaLabel: ( localize(6243, "More actions for {0}", displayName))
|
|
1827
|
+
})));
|
|
1828
|
+
more.element.classList.add("plugin-card-icon-button");
|
|
1829
|
+
more.label = `$(${Codicon.ellipsis.id})`;
|
|
1830
|
+
this.cardMenuButtonsById.set(item.id, more.element);
|
|
1831
|
+
this.cardDisposables.add(addDisposableListener(more.element, "focus", () => {
|
|
1832
|
+
this.lastCardFocusItemId = item.id;
|
|
1833
|
+
}));
|
|
1834
|
+
this.cardDisposables.add(more.onDidClick(() => this.showCardItemActions(item, more.element)));
|
|
1835
|
+
actionElements.push(more.element);
|
|
1836
|
+
}
|
|
1837
|
+
cardList.addItem({
|
|
1838
|
+
row,
|
|
1839
|
+
primaryAction: primary,
|
|
1840
|
+
label: displayName,
|
|
1841
|
+
actions: actionElements,
|
|
1842
|
+
contextMenuAction: actionElements[0]
|
|
1843
|
+
});
|
|
1223
1844
|
}
|
|
1224
1845
|
filterItems() {
|
|
1225
1846
|
const matchedItems = this.applySearchFilter(this.allItems);
|
|
@@ -1227,21 +1848,26 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1227
1848
|
return matchedItems.length;
|
|
1228
1849
|
}
|
|
1229
1850
|
toggleGroup(entry) {
|
|
1230
|
-
|
|
1231
|
-
|
|
1851
|
+
const collapsedGroupKey = this.getCollapsedGroupKey(entry.groupKey);
|
|
1852
|
+
if (( this.collapsedGroups.has(collapsedGroupKey))) {
|
|
1853
|
+
this.collapsedGroups.delete(collapsedGroupKey);
|
|
1232
1854
|
} else {
|
|
1233
|
-
this.collapsedGroups.add(
|
|
1855
|
+
this.collapsedGroups.add(collapsedGroupKey);
|
|
1234
1856
|
}
|
|
1235
1857
|
this.filterItems();
|
|
1236
1858
|
}
|
|
1859
|
+
getCollapsedGroupKey(groupKey) {
|
|
1860
|
+
return getCollapsedCustomizationGroupKey(this.currentSection, groupKey);
|
|
1861
|
+
}
|
|
1237
1862
|
updateEmptyState() {
|
|
1238
1863
|
const hasItems = this.displayEntries.length > 0;
|
|
1239
1864
|
if (!hasItems) {
|
|
1865
|
+
this.cardScrollableNode.style.display = "none";
|
|
1240
1866
|
this.emptyStateContainer.style.display = "flex";
|
|
1241
1867
|
this.listContainer.style.display = "none";
|
|
1242
1868
|
if (this.searchQuery.trim()) {
|
|
1243
|
-
this.emptyStateText.textContent = ( localize(
|
|
1244
|
-
this.emptyStateSubtext.textContent = ( localize(
|
|
1869
|
+
this.emptyStateText.textContent = ( localize(6347, "No items match '{0}'", this.searchQuery));
|
|
1870
|
+
this.emptyStateSubtext.textContent = ( localize(6348, "Try a different search term"));
|
|
1245
1871
|
} else {
|
|
1246
1872
|
const emptyInfo = this.getEmptyStateInfo();
|
|
1247
1873
|
this.emptyStateText.textContent = emptyInfo.title;
|
|
@@ -1249,36 +1875,37 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1249
1875
|
}
|
|
1250
1876
|
} else {
|
|
1251
1877
|
this.emptyStateContainer.style.display = "none";
|
|
1252
|
-
this.listContainer.style.display = "";
|
|
1878
|
+
this.listContainer.style.display = this.usesCardLayout() ? "none" : "";
|
|
1879
|
+
this.cardScrollableNode.style.display = this.usesCardLayout() ? "" : "none";
|
|
1253
1880
|
}
|
|
1254
1881
|
}
|
|
1255
1882
|
getEmptyStateInfo() {
|
|
1256
1883
|
switch (this.currentSection) {
|
|
1257
1884
|
case AICustomizationManagementSection.Agents:
|
|
1258
1885
|
return {
|
|
1259
|
-
title: ( localize(
|
|
1260
|
-
description: ( localize(
|
|
1886
|
+
title: ( localize(6349, "No agents yet")),
|
|
1887
|
+
description: ( localize(6350, "Create your first custom agent to get started"))
|
|
1261
1888
|
};
|
|
1262
1889
|
case AICustomizationManagementSection.Skills:
|
|
1263
1890
|
return {
|
|
1264
|
-
title: ( localize(
|
|
1265
|
-
description: ( localize(
|
|
1891
|
+
title: ( localize(6351, "No skills yet")),
|
|
1892
|
+
description: ( localize(6352, "Create your first skill to extend agent capabilities"))
|
|
1266
1893
|
};
|
|
1267
1894
|
case AICustomizationManagementSection.Instructions:
|
|
1268
1895
|
return {
|
|
1269
|
-
title: ( localize(
|
|
1270
|
-
description: ( localize(
|
|
1896
|
+
title: ( localize(6353, "No instructions yet")),
|
|
1897
|
+
description: ( localize(6354, "Add instructions to teach Copilot about your codebase"))
|
|
1271
1898
|
};
|
|
1272
1899
|
case AICustomizationManagementSection.Hooks:
|
|
1273
1900
|
return {
|
|
1274
|
-
title: ( localize(
|
|
1275
|
-
description: ( localize(
|
|
1901
|
+
title: ( localize(6355, "No hooks yet")),
|
|
1902
|
+
description: ( localize(6356, "Create hooks to execute commands at agent lifecycle events"))
|
|
1276
1903
|
};
|
|
1277
1904
|
case AICustomizationManagementSection.Prompts:
|
|
1278
1905
|
default:
|
|
1279
1906
|
return {
|
|
1280
|
-
title: ( localize(
|
|
1281
|
-
description: ( localize(
|
|
1907
|
+
title: ( localize(6357, "No prompts yet")),
|
|
1908
|
+
description: ( localize(6358, "Create reusable prompts for common tasks"))
|
|
1282
1909
|
};
|
|
1283
1910
|
}
|
|
1284
1911
|
}
|
|
@@ -1292,20 +1919,78 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1292
1919
|
this.searchInput.focus();
|
|
1293
1920
|
}
|
|
1294
1921
|
focusList() {
|
|
1922
|
+
if (this.usesCardLayout()) {
|
|
1923
|
+
if (!this.firstCardFocusElement) {
|
|
1924
|
+
const firstSection = this.cardSectionLists[0];
|
|
1925
|
+
if (firstSection?.items.length) {
|
|
1926
|
+
firstSection.list.setFocus([0]);
|
|
1927
|
+
firstSection.list.domFocus();
|
|
1928
|
+
}
|
|
1929
|
+
} else {
|
|
1930
|
+
this.firstCardFocusElement.focus();
|
|
1931
|
+
}
|
|
1932
|
+
return;
|
|
1933
|
+
}
|
|
1295
1934
|
this.list.domFocus();
|
|
1296
1935
|
if (this.displayEntries.length > 0) {
|
|
1297
1936
|
this.list.setFocus([0]);
|
|
1298
1937
|
}
|
|
1299
1938
|
}
|
|
1300
1939
|
revealLastItem() {
|
|
1940
|
+
if (this.usesCardLayout()) {
|
|
1941
|
+
const reveal = () => {
|
|
1942
|
+
const section = this.cardSectionLists.at(-1);
|
|
1943
|
+
if (section?.items.length) {
|
|
1944
|
+
section.list.reveal(section.items.length - 1);
|
|
1945
|
+
}
|
|
1946
|
+
this.cardScrollable.scanDomNode();
|
|
1947
|
+
this.cardScrollable.setScrollPosition({
|
|
1948
|
+
scrollTop: this.cardContainer.scrollHeight
|
|
1949
|
+
});
|
|
1950
|
+
};
|
|
1951
|
+
reveal();
|
|
1952
|
+
this.revealLastItemScheduler.value = scheduleAtNextAnimationFrame(getWindow(this.element), reveal);
|
|
1953
|
+
return;
|
|
1954
|
+
}
|
|
1301
1955
|
if (this.displayEntries.length > 0) {
|
|
1302
1956
|
this.list.reveal(this.displayEntries.length - 1);
|
|
1303
1957
|
}
|
|
1304
1958
|
}
|
|
1959
|
+
revealAndSelectFirstItemByUri(uris) {
|
|
1960
|
+
if (this.usesCardLayout()) {
|
|
1961
|
+
for (const section of this.cardSectionLists) {
|
|
1962
|
+
const index = section.items.findIndex(item => ( uris.some(uri => isEqual(item.uri, uri))));
|
|
1963
|
+
if (index >= 0) {
|
|
1964
|
+
section.list.reveal(index);
|
|
1965
|
+
section.list.setFocus([index]);
|
|
1966
|
+
section.list.setSelection([index]);
|
|
1967
|
+
section.list.domFocus();
|
|
1968
|
+
return true;
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1971
|
+
return false;
|
|
1972
|
+
}
|
|
1973
|
+
const entryIndex = this.displayEntries.findIndex(entry => {
|
|
1974
|
+
return entry.type === "file-item" && ( uris.some(uri => isEqual(entry.item.uri, uri)));
|
|
1975
|
+
});
|
|
1976
|
+
if (entryIndex < 0) {
|
|
1977
|
+
return false;
|
|
1978
|
+
}
|
|
1979
|
+
this.list.reveal(entryIndex);
|
|
1980
|
+
this.list.setFocus([entryIndex]);
|
|
1981
|
+
this.list.setSelection([entryIndex]);
|
|
1982
|
+
this.list.domFocus();
|
|
1983
|
+
return true;
|
|
1984
|
+
}
|
|
1305
1985
|
layout(height, width) {
|
|
1306
1986
|
this.lastLayoutHeight = height;
|
|
1307
1987
|
this.lastLayoutWidth = width;
|
|
1308
|
-
this.element.style.
|
|
1988
|
+
if (this.element.parentElement?.style.display === "none") {
|
|
1989
|
+
return;
|
|
1990
|
+
}
|
|
1991
|
+
this.element.classList.toggle("narrow-layout", width < 500);
|
|
1992
|
+
this.element.classList.toggle("wide-layout", width >= 600);
|
|
1993
|
+
this.element.style.height = "";
|
|
1309
1994
|
this.searchInput.layout();
|
|
1310
1995
|
const searchBarHeight = this.searchAndButtonContainer.offsetHeight;
|
|
1311
1996
|
if (searchBarHeight === 0 && !this._layoutDeferred) {
|
|
@@ -1321,9 +2006,17 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1321
2006
|
}
|
|
1322
2007
|
const headerHeight = this.sectionTitleHeader.offsetHeight;
|
|
1323
2008
|
this.lastHeaderHeight = headerHeight;
|
|
1324
|
-
const
|
|
2009
|
+
const availableHeight = this.element.clientHeight || height;
|
|
2010
|
+
const listHeight = Math.max(0, availableHeight - searchBarHeight - headerHeight);
|
|
2011
|
+
this.cardScrollableNode.style.height = `${listHeight}px`;
|
|
1325
2012
|
this.listContainer.style.height = `${listHeight}px`;
|
|
1326
|
-
this.
|
|
2013
|
+
if (this.usesCardLayout()) {
|
|
2014
|
+
this.layoutCardSectionLists();
|
|
2015
|
+
this.cardScrollable.scanDomNode();
|
|
2016
|
+
this.scheduleCardSectionLayout();
|
|
2017
|
+
} else {
|
|
2018
|
+
this.list.layout(listHeight, width);
|
|
2019
|
+
}
|
|
1327
2020
|
}
|
|
1328
2021
|
get itemCount() {
|
|
1329
2022
|
return this.allItems.length;
|
|
@@ -1340,4 +2033,4 @@ let AICustomizationListWidget = class AICustomizationListWidget extends Disposab
|
|
|
1340
2033
|
};
|
|
1341
2034
|
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, ILabelService)), ( __param(8, IAICustomizationWorkspaceService)), ( __param(9, IClipboardService)), ( __param(10, IHoverService)), ( __param(11, IFileService)), ( __param(12, ITelemetryService)), ( __param(13, ICustomizationHarnessService)), ( __param(14, ICommandService)), ( __param(15, IAICustomizationItemsModel)), ( __param(16, IAgentPluginService))], AICustomizationListWidget));
|
|
1342
2035
|
|
|
1343
|
-
export { AICustomizationListWidget, formatDisplayName, getCountAnnouncement };
|
|
2036
|
+
export { AICustomizationListWidget, formatDisplayName, getAlwaysVisibleCustomizationGroupKeys, getCollapsedCustomizationGroupKey, getCountAnnouncement, getCustomizationItemAriaLabel, getCustomizationItemStatusLabel, getTargetedCreateActionLabel, usesCustomizationCardLayout };
|