@codingame/monaco-vscode-chat-service-override 34.1.3 → 35.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +38 -0
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHost.config.contribution.js +40 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.d.ts +27 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHostConnectionsService.js +91 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +20 -4
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +148 -15
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +9 -1
- package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +57 -3
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +10 -14
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +29 -8
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +109 -2
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +207 -21
- package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +362 -37
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +698 -91
- package/vscode/src/vs/platform/agentHost/common/agentService.js +46 -3
- package/vscode/src/vs/platform/agentHost/common/customAgents.js +1 -0
- package/vscode/src/vs/platform/agentHost/common/resourceReadLogging.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/common/resourceReadLogging.js +26 -0
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +5 -5
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +17 -17
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +96 -12
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +226 -19
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.d.ts +18 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-annotations/reducer.js +89 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +10 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.d.ts +6 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-chat/reducer.js +400 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.js +129 -446
- 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/version/registry.d.ts +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +1 -1
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +35 -25
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +7 -1
- package/vscode/src/vs/{workbench/contrib → platform}/browserView/common/browserChatToolReferenceNames.d.ts +4 -0
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +1 -1
- package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +1 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.d.ts +0 -6
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.js +5 -18
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +52 -3
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +212 -34
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +3 -4
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +11 -10
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +13 -6
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +6 -1
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoice.contribution.js +399 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceSessionsPicker.js +85 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.d.ts +177 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidget.js +898 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +204 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.d.ts +61 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWindowService.js +338 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/confirmationComponent.js +57 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/feedbackDialog.js +98 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/headerComponent.js +149 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/onboardingComponent.js +116 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.d.ts +32 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/sessionListComponent.js +226 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/statusRowsComponent.js +138 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/tokens.js +25 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/transcriptComponent.js +108 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/components/voiceBarComponent.js +63 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscripts.contribution.js +178 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/browser/transcriptsView/voiceTranscriptsView.js +322 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoice.js +15 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/agentsVoiceColors.js +26 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.d.ts +132 -0
- package/vscode/src/vs/workbench/contrib/agentsVoice/common/voiceTranscriptStore.js +237 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +32 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +71 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClear.js +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +19 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +14 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +66 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +15 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +128 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/reviewEdits.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +58 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +15 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +64 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +45 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +25 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +143 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +7 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostNewSessionFolderService.js +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolSetEnablementService.js +163 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +26 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +106 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +16 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +44 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +70 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +22 -22
- 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/localAgentDisabledInputTipContribution.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentDisabledInputTipContribution.js +152 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +11 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +9 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +17 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +143 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +107 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +46 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +19 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +244 -190
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +13 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +7 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +47 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +2 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +4 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.d.ts +87 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/automationsListWidget.js +772 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +24 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +3 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +1 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedExtensionToolsDetail.js +130 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.d.ts +46 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/galleryItemRenderer.js +94 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +421 -201
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +1424 -97
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +107 -127
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +331 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.d.ts +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/toolsListWidget.js +898 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +581 -336
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +123 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +567 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheDiff.js +168 -84
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +183 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +897 -251
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.d.ts +213 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheInsights.js +720 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +22 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +24 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +33 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +354 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +9 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +11 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.d.ts +9 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +55 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +18 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +192 -87
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +37 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.d.ts +40 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +230 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseFileChangesService.js +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +23 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +35 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +26 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +56 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +109 -68
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +38 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +175 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContext.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.d.ts +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +32 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +183 -84
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +20 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +27 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolSetsCodeLensProvider.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +20 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/clientToolSetsContribution.js +117 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +39 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +40 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +169 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.d.ts +125 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/micCaptureService.js +399 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/ttsPlaybackService.d.ts +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/ttsPlaybackService.js +198 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.d.ts +85 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceClientService.js +504 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.d.ts +321 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceSessionController.js +2117 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/voiceClient/voiceToolDispatchService.js +367 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +16 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +68 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +11 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +13 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +23 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +320 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +80 -4
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automation.d.ts +78 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationDialogService.service.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationRunner.service.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.d.ts +46 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationService.service.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/automationsEnabled.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/automations/schedule.js +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +7 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +226 -88
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +13 -2
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +177 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +2 -18
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +78 -136
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +1 -16
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +1 -17
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +16 -5
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +122 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +24 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +113 -10
- 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/promptValidator.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +227 -152
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/chat/common/voicePlaybackService.js +98 -0
- package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.js +7 -6
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +11 -12
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.js +7 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +32 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +23 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +37 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/largeOutputFileWriter.js +71 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +29 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +7 -20
- 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 +12 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +10 -8
- 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 +4 -4
- 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.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +26 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +32 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +416 -252
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +3 -2
- 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/common/sandboxSettingsReader.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +5 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +6 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +25 -8
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +8 -3
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +0 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +0 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.d.ts +0 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/copilotCliEventsUri.js +0 -82
- package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.d.ts +0 -38
- package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.js +0 -47
- /package/vscode/src/vs/{workbench/contrib → platform}/browserView/common/browserChatToolReferenceNames.js +0 -0
|
@@ -28,6 +28,14 @@ import { GithubPromptHeaderAttributes } from '@codingame/monaco-vscode-api/vscod
|
|
|
28
28
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
29
29
|
|
|
30
30
|
const MARKERS_OWNER_ID = "prompts-diagnostics-provider";
|
|
31
|
+
var PromptValidatorMarkerCode;
|
|
32
|
+
(function(PromptValidatorMarkerCode) {
|
|
33
|
+
PromptValidatorMarkerCode["MissingGithubMcpServer"] = "promptValidator.missingGithubMcpServer";
|
|
34
|
+
PromptValidatorMarkerCode["MissingPlaywrightMcpServer"] = "promptValidator.missingPlaywrightMcpServer";
|
|
35
|
+
PromptValidatorMarkerCode["UnknownExtensionReference"] = "promptValidator.unknownExtensionReference";
|
|
36
|
+
PromptValidatorMarkerCode["UnknownMcpServerReference"] = "promptValidator.unknownMcpServerReference";
|
|
37
|
+
PromptValidatorMarkerCode["UnknownExtensionOrMcpServerReference"] = "promptValidator.unknownExtensionOrMcpServerReference";
|
|
38
|
+
})(PromptValidatorMarkerCode || (PromptValidatorMarkerCode = {}));
|
|
31
39
|
let PromptValidator = class PromptValidator {
|
|
32
40
|
constructor(
|
|
33
41
|
languageModelsService,
|
|
@@ -63,13 +71,13 @@ let PromptValidator = class PromptValidator {
|
|
|
63
71
|
const location = this.promptsService.getAgentFileURIFromModeFile(promptAST.uri);
|
|
64
72
|
if (location && (await this.fileService.canCreateFile(location))) {
|
|
65
73
|
report(toMarker(( localize(
|
|
66
|
-
|
|
74
|
+
8779,
|
|
67
75
|
"Chat modes have been renamed to agents. Please move this file to {0}",
|
|
68
76
|
(location.toString())
|
|
69
77
|
)), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
70
78
|
} else {
|
|
71
79
|
report(toMarker(( localize(
|
|
72
|
-
|
|
80
|
+
8780,
|
|
73
81
|
"Chat modes have been renamed to agents. Please move the file to {0}",
|
|
74
82
|
AGENTS_SOURCE_FOLDER
|
|
75
83
|
)), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
@@ -82,13 +90,13 @@ let PromptValidator = class PromptValidator {
|
|
|
82
90
|
}
|
|
83
91
|
const nameAttribute = promptAST.header.getAttribute(PromptHeaderAttributes.name);
|
|
84
92
|
if (!nameAttribute) {
|
|
85
|
-
report(toMarker(( localize(
|
|
93
|
+
report(toMarker(( localize(8781, "Skill should provide a name.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
86
94
|
} else if (nameAttribute.value.type === "scalar") {
|
|
87
95
|
const skillName = nameAttribute.value.value.trim();
|
|
88
96
|
if (skillName.length > 0) {
|
|
89
97
|
if (!VALID_SKILL_NAME_REGEX.test(skillName)) {
|
|
90
98
|
report(toMarker(( localize(
|
|
91
|
-
|
|
99
|
+
8782,
|
|
92
100
|
"Skill name may only contain lowercase letters, numbers, and hyphens."
|
|
93
101
|
)), nameAttribute.value.range, MarkerSeverity.Error));
|
|
94
102
|
}
|
|
@@ -98,7 +106,7 @@ let PromptValidator = class PromptValidator {
|
|
|
98
106
|
const folderName = pathParts[skillIndex - 1];
|
|
99
107
|
if (folderName && skillName !== folderName) {
|
|
100
108
|
report(toMarker(( localize(
|
|
101
|
-
|
|
109
|
+
8783,
|
|
102
110
|
"The skill name '{0}' should match the folder name '{1}'.",
|
|
103
111
|
skillName,
|
|
104
112
|
folderName
|
|
@@ -109,12 +117,12 @@ let PromptValidator = class PromptValidator {
|
|
|
109
117
|
}
|
|
110
118
|
const descriptionAttribute = promptAST.header.getAttribute(PromptHeaderAttributes.description);
|
|
111
119
|
if (!descriptionAttribute) {
|
|
112
|
-
report(toMarker(( localize(
|
|
120
|
+
report(toMarker(( localize(8784, "Skill should provide a description.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
113
121
|
if (promptAST.header.userInvocable === false) {
|
|
114
122
|
const userInvocableAttr = promptAST.header.getAttribute(PromptHeaderAttributes.userInvocable);
|
|
115
123
|
if (userInvocableAttr) {
|
|
116
124
|
report(toMarker(( localize(
|
|
117
|
-
|
|
125
|
+
8785,
|
|
118
126
|
"A description is required when user-invocable is false, because the model needs a description to decide when to load the skill."
|
|
119
127
|
)), userInvocableAttr.value.range, MarkerSeverity.Error));
|
|
120
128
|
}
|
|
@@ -123,7 +131,7 @@ let PromptValidator = class PromptValidator {
|
|
|
123
131
|
const disableModelInvocationAttr = promptAST.header.getAttribute(PromptHeaderAttributes.disableModelInvocation);
|
|
124
132
|
if (disableModelInvocationAttr) {
|
|
125
133
|
report(toMarker(( localize(
|
|
126
|
-
|
|
134
|
+
8786,
|
|
127
135
|
"A description is required when model invocation is enabled, because the model needs a description to decide when to load the skill."
|
|
128
136
|
)), disableModelInvocationAttr.value.range, MarkerSeverity.Error));
|
|
129
137
|
}
|
|
@@ -134,7 +142,7 @@ let PromptValidator = class PromptValidator {
|
|
|
134
142
|
const skillToolEnabled = this.configurationService.getValue("github.copilot.chat.skillTool.enabled");
|
|
135
143
|
if (!skillToolEnabled) {
|
|
136
144
|
report(toMarker(( localize(
|
|
137
|
-
|
|
145
|
+
8787,
|
|
138
146
|
"The 'context: fork' attribute requires the skill tool to be enabled (github.copilot.chat.skillTool.enabled)."
|
|
139
147
|
)), contextAttribute.value.range, MarkerSeverity.Warning));
|
|
140
148
|
}
|
|
@@ -149,7 +157,7 @@ let PromptValidator = class PromptValidator {
|
|
|
149
157
|
for (const ref of body.fileReferences) {
|
|
150
158
|
const resolved = body.resolveFilePath(ref.content);
|
|
151
159
|
if (!resolved) {
|
|
152
|
-
report(toMarker(( localize(
|
|
160
|
+
report(toMarker(( localize(8788, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
|
|
153
161
|
continue;
|
|
154
162
|
}
|
|
155
163
|
if (promptAST.uri.scheme === resolved.scheme) {
|
|
@@ -158,7 +166,7 @@ let PromptValidator = class PromptValidator {
|
|
|
158
166
|
const exists = await this.fileService.exists(resolved);
|
|
159
167
|
if (!exists) {
|
|
160
168
|
const loc = this.labelService.getUriLabel(resolved);
|
|
161
|
-
report(toMarker(( localize(
|
|
169
|
+
report(toMarker(( localize(8789, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
|
|
162
170
|
}
|
|
163
171
|
} catch (e) {
|
|
164
172
|
this.logger.warn(
|
|
@@ -181,7 +189,7 @@ let PromptValidator = class PromptValidator {
|
|
|
181
189
|
if (currentNames.size === 1) {
|
|
182
190
|
const newName = Array.from(currentNames)[0];
|
|
183
191
|
report(toMarker(( localize(
|
|
184
|
-
|
|
192
|
+
8790,
|
|
185
193
|
"Tool or toolset '{0}' has been renamed, use '{1}' instead.",
|
|
186
194
|
variable.name,
|
|
187
195
|
newName
|
|
@@ -189,7 +197,7 @@ let PromptValidator = class PromptValidator {
|
|
|
189
197
|
} else {
|
|
190
198
|
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
|
|
191
199
|
report(toMarker(( localize(
|
|
192
|
-
|
|
200
|
+
8791,
|
|
193
201
|
"Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
|
|
194
202
|
variable.name,
|
|
195
203
|
newNames
|
|
@@ -197,13 +205,23 @@ let PromptValidator = class PromptValidator {
|
|
|
197
205
|
}
|
|
198
206
|
}
|
|
199
207
|
} else {
|
|
200
|
-
|
|
208
|
+
const missingGithubServerMarker = this.getMissingGithubMcpServerMarker(variable.name, variable.range);
|
|
209
|
+
if (missingGithubServerMarker) {
|
|
210
|
+
report(missingGithubServerMarker);
|
|
211
|
+
} else {
|
|
212
|
+
const missingPlaywrightServerMarker = this.getMissingPlaywrightMcpServerMarker(variable.name, variable.range);
|
|
213
|
+
if (missingPlaywrightServerMarker) {
|
|
214
|
+
report(missingPlaywrightServerMarker);
|
|
215
|
+
} else {
|
|
216
|
+
report(this.getUnknownToolMarker(variable.name, variable.range, true));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
201
219
|
}
|
|
202
220
|
} else if (headerToolsMap) {
|
|
203
221
|
const tool = this.languageModelToolsService.getToolByFullReferenceName(variable.name);
|
|
204
222
|
if (tool && headerToolsMap.get(tool) === false) {
|
|
205
223
|
report(toMarker(( localize(
|
|
206
|
-
|
|
224
|
+
8792,
|
|
207
225
|
"Tool or toolset '{0}' also needs to be enabled in the header.",
|
|
208
226
|
variable.name
|
|
209
227
|
)), variable.range, MarkerSeverity.Warning));
|
|
@@ -277,7 +295,7 @@ let PromptValidator = class PromptValidator {
|
|
|
277
295
|
switch (promptType) {
|
|
278
296
|
case PromptsType.prompt:
|
|
279
297
|
report(toMarker(( localize(
|
|
280
|
-
|
|
298
|
+
8793,
|
|
281
299
|
"Attribute '{0}' is not supported in prompt files. Supported: {1}.",
|
|
282
300
|
attribute.key,
|
|
283
301
|
supportedNames.value
|
|
@@ -286,7 +304,7 @@ let PromptValidator = class PromptValidator {
|
|
|
286
304
|
case PromptsType.agent:
|
|
287
305
|
if (target === Target.GitHubCopilot) {
|
|
288
306
|
report(toMarker(( localize(
|
|
289
|
-
|
|
307
|
+
8794,
|
|
290
308
|
"Attribute '{0}' is not supported in custom GitHub Copilot agent files. Supported: {1}.",
|
|
291
309
|
attribute.key,
|
|
292
310
|
supportedNames.value
|
|
@@ -295,13 +313,13 @@ let PromptValidator = class PromptValidator {
|
|
|
295
313
|
; else {
|
|
296
314
|
if (( validGithubCopilotAttributeNames.value.has(attribute.key))) {
|
|
297
315
|
report(toMarker(( localize(
|
|
298
|
-
|
|
316
|
+
8795,
|
|
299
317
|
"Attribute '{0}' is ignored when running locally in VS Code.",
|
|
300
318
|
attribute.key
|
|
301
319
|
)), attribute.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
|
|
302
320
|
} else {
|
|
303
321
|
report(toMarker(( localize(
|
|
304
|
-
|
|
322
|
+
8796,
|
|
305
323
|
"Attribute '{0}' is not supported in VS Code agent files. Supported: {1}.",
|
|
306
324
|
attribute.key,
|
|
307
325
|
supportedNames.value
|
|
@@ -312,14 +330,14 @@ let PromptValidator = class PromptValidator {
|
|
|
312
330
|
case PromptsType.instructions:
|
|
313
331
|
if (target === Target.Claude) {
|
|
314
332
|
report(toMarker(( localize(
|
|
315
|
-
|
|
333
|
+
8797,
|
|
316
334
|
"Attribute '{0}' is not supported in rules files by VS Code agents. Supported: {1}.",
|
|
317
335
|
attribute.key,
|
|
318
336
|
supportedNames.value
|
|
319
337
|
)), attribute.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
|
|
320
338
|
} else {
|
|
321
339
|
report(toMarker(( localize(
|
|
322
|
-
|
|
340
|
+
8798,
|
|
323
341
|
"Attribute '{0}' is not supported in instructions files. Supported: {1}.",
|
|
324
342
|
attribute.key,
|
|
325
343
|
supportedNames.value
|
|
@@ -328,7 +346,7 @@ let PromptValidator = class PromptValidator {
|
|
|
328
346
|
break;
|
|
329
347
|
case PromptsType.skill:
|
|
330
348
|
report(toMarker(( localize(
|
|
331
|
-
|
|
349
|
+
8799,
|
|
332
350
|
"Attribute '{0}' is not supported by VS Code agents. Supported: {1}.",
|
|
333
351
|
attribute.key,
|
|
334
352
|
supportedNames.value
|
|
@@ -344,11 +362,11 @@ let PromptValidator = class PromptValidator {
|
|
|
344
362
|
return;
|
|
345
363
|
}
|
|
346
364
|
if (nameAttribute.value.type !== "scalar") {
|
|
347
|
-
report(toMarker(( localize(
|
|
365
|
+
report(toMarker(( localize(8800, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
|
|
348
366
|
return;
|
|
349
367
|
}
|
|
350
368
|
if (nameAttribute.value.value.trim().length === 0) {
|
|
351
|
-
report(toMarker(( localize(
|
|
369
|
+
report(toMarker(( localize(8801, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
|
|
352
370
|
return;
|
|
353
371
|
}
|
|
354
372
|
}
|
|
@@ -358,11 +376,11 @@ let PromptValidator = class PromptValidator {
|
|
|
358
376
|
return;
|
|
359
377
|
}
|
|
360
378
|
if (descriptionAttribute.value.type !== "scalar") {
|
|
361
|
-
report(toMarker(( localize(
|
|
379
|
+
report(toMarker(( localize(8802, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
|
|
362
380
|
return;
|
|
363
381
|
}
|
|
364
382
|
if (descriptionAttribute.value.value.trim().length === 0) {
|
|
365
|
-
report(toMarker(( localize(
|
|
383
|
+
report(toMarker(( localize(8803, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
|
|
366
384
|
return;
|
|
367
385
|
}
|
|
368
386
|
}
|
|
@@ -372,11 +390,11 @@ let PromptValidator = class PromptValidator {
|
|
|
372
390
|
return;
|
|
373
391
|
}
|
|
374
392
|
if (argumentHintAttribute.value.type !== "scalar") {
|
|
375
|
-
report(toMarker(( localize(
|
|
393
|
+
report(toMarker(( localize(8804, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
|
|
376
394
|
return;
|
|
377
395
|
}
|
|
378
396
|
if (argumentHintAttribute.value.value.trim().length === 0) {
|
|
379
|
-
report(toMarker(( localize(
|
|
397
|
+
report(toMarker(( localize(8805, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Warning));
|
|
380
398
|
return;
|
|
381
399
|
}
|
|
382
400
|
}
|
|
@@ -386,30 +404,30 @@ let PromptValidator = class PromptValidator {
|
|
|
386
404
|
return;
|
|
387
405
|
}
|
|
388
406
|
if (attribute.value.type !== "scalar" && attribute.value.type !== "sequence") {
|
|
389
|
-
report(toMarker(( localize(
|
|
407
|
+
report(toMarker(( localize(8806, "The 'model' attribute must be a string or an array of strings.")), attribute.value.range, MarkerSeverity.Error));
|
|
390
408
|
return;
|
|
391
409
|
}
|
|
392
410
|
const modelNames = [];
|
|
393
411
|
if (attribute.value.type === "scalar") {
|
|
394
412
|
const modelName = attribute.value.value.trim();
|
|
395
413
|
if (modelName.length === 0) {
|
|
396
|
-
report(toMarker(( localize(
|
|
414
|
+
report(toMarker(( localize(8807, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
|
|
397
415
|
return;
|
|
398
416
|
}
|
|
399
417
|
modelNames.push([modelName, attribute.value.range]);
|
|
400
418
|
} else if (attribute.value.type === "sequence") {
|
|
401
419
|
if (attribute.value.items.length === 0) {
|
|
402
|
-
report(toMarker(( localize(
|
|
420
|
+
report(toMarker(( localize(8808, "The 'model' array must not be empty.")), attribute.value.range, MarkerSeverity.Error));
|
|
403
421
|
return;
|
|
404
422
|
}
|
|
405
423
|
for (const item of attribute.value.items) {
|
|
406
424
|
if (item.type !== "scalar") {
|
|
407
|
-
report(toMarker(( localize(
|
|
425
|
+
report(toMarker(( localize(8809, "The 'model' array must contain only strings.")), item.range, MarkerSeverity.Error));
|
|
408
426
|
return;
|
|
409
427
|
}
|
|
410
428
|
const modelName = item.value.trim();
|
|
411
429
|
if (modelName.length === 0) {
|
|
412
|
-
report(toMarker(( localize(
|
|
430
|
+
report(toMarker(( localize(8810, "Model names in the array must be non-empty strings.")), item.range, MarkerSeverity.Error));
|
|
413
431
|
return;
|
|
414
432
|
}
|
|
415
433
|
modelNames.push([modelName, item.range]);
|
|
@@ -422,9 +440,9 @@ let PromptValidator = class PromptValidator {
|
|
|
422
440
|
for (const [modelName, range] of modelNames) {
|
|
423
441
|
const modelMetadata = this.findModelByName(modelName);
|
|
424
442
|
if (!modelMetadata) {
|
|
425
|
-
report(toMarker(( localize(
|
|
443
|
+
report(toMarker(( localize(8811, "Unknown model '{0}' will be ignored.", modelName)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
|
|
426
444
|
} else if (agentKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
|
|
427
|
-
report(toMarker(( localize(
|
|
445
|
+
report(toMarker(( localize(8812, "Model '{0}' is not suited for agent mode.", modelName)), range, MarkerSeverity.Warning));
|
|
428
446
|
}
|
|
429
447
|
}
|
|
430
448
|
}
|
|
@@ -438,13 +456,13 @@ let PromptValidator = class PromptValidator {
|
|
|
438
456
|
continue;
|
|
439
457
|
}
|
|
440
458
|
if (attribute.value.type !== "scalar") {
|
|
441
|
-
report(toMarker(( localize(
|
|
459
|
+
report(toMarker(( localize(8813, "The '{0}' attribute must be a string.", claudeAttributeName)), attribute.value.range, MarkerSeverity.Error));
|
|
442
460
|
continue;
|
|
443
461
|
} else {
|
|
444
462
|
const modelName = attribute.value.value.trim();
|
|
445
463
|
if (enumValues.every(model => model.name !== modelName)) {
|
|
446
464
|
const validValues = ( enumValues.map(model => model.name)).join(", ");
|
|
447
|
-
report(toMarker(( localize(
|
|
465
|
+
report(toMarker(( localize(8814, "Unknown value '{0}', valid: {1}.", modelName, validValues)), attribute.value.range, MarkerSeverity.Warning));
|
|
448
466
|
}
|
|
449
467
|
}
|
|
450
468
|
}
|
|
@@ -463,12 +481,12 @@ let PromptValidator = class PromptValidator {
|
|
|
463
481
|
if (modeAttribute) {
|
|
464
482
|
if (agentAttribute) {
|
|
465
483
|
report(toMarker(( localize(
|
|
466
|
-
|
|
484
|
+
8815,
|
|
467
485
|
"The 'mode' attribute has been deprecated. The 'agent' attribute is used instead."
|
|
468
486
|
)), modeAttribute.range, MarkerSeverity.Warning, [MarkerTag.Deprecated]));
|
|
469
487
|
} else {
|
|
470
488
|
report(toMarker(( localize(
|
|
471
|
-
|
|
489
|
+
8816,
|
|
472
490
|
"The 'mode' attribute has been deprecated. Please rename it to 'agent'."
|
|
473
491
|
)), modeAttribute.range, MarkerSeverity.Warning, [MarkerTag.Deprecated]));
|
|
474
492
|
}
|
|
@@ -478,12 +496,12 @@ let PromptValidator = class PromptValidator {
|
|
|
478
496
|
return undefined;
|
|
479
497
|
}
|
|
480
498
|
if (attribute.value.type !== "scalar") {
|
|
481
|
-
report(toMarker(( localize(
|
|
499
|
+
report(toMarker(( localize(8817, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
|
|
482
500
|
return undefined;
|
|
483
501
|
}
|
|
484
502
|
const agentValue = attribute.value.value;
|
|
485
503
|
if (agentValue.trim().length === 0) {
|
|
486
|
-
report(toMarker(( localize(
|
|
504
|
+
report(toMarker(( localize(8818, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
|
|
487
505
|
return undefined;
|
|
488
506
|
}
|
|
489
507
|
return await this.validateAgentValue(attribute.value, report);
|
|
@@ -498,7 +516,7 @@ let PromptValidator = class PromptValidator {
|
|
|
498
516
|
availableAgents.push(agent.name.get());
|
|
499
517
|
}
|
|
500
518
|
const errorMessage = ( localize(
|
|
501
|
-
|
|
519
|
+
8819,
|
|
502
520
|
"Unknown agent '{0}'. Available agents: {1}.",
|
|
503
521
|
value.value,
|
|
504
522
|
availableAgents.join(", ")
|
|
@@ -513,7 +531,7 @@ let PromptValidator = class PromptValidator {
|
|
|
513
531
|
}
|
|
514
532
|
if (agentKind !== ChatModeKind.Agent) {
|
|
515
533
|
report(toMarker(( localize(
|
|
516
|
-
|
|
534
|
+
8820,
|
|
517
535
|
"The 'tools' attribute is only supported when using agents. Attribute will be ignored."
|
|
518
536
|
)), attribute.range, MarkerSeverity.Warning));
|
|
519
537
|
}
|
|
@@ -523,7 +541,7 @@ let PromptValidator = class PromptValidator {
|
|
|
523
541
|
}
|
|
524
542
|
if (value.type !== "sequence") {
|
|
525
543
|
report(toMarker(( localize(
|
|
526
|
-
|
|
544
|
+
8821,
|
|
527
545
|
"The 'tools' attribute must be an array or a comma separated string."
|
|
528
546
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
529
547
|
return;
|
|
@@ -539,7 +557,7 @@ let PromptValidator = class PromptValidator {
|
|
|
539
557
|
const deprecatedNames = this.languageModelToolsService.getDeprecatedFullReferenceNames();
|
|
540
558
|
for (const item of valueItem.items) {
|
|
541
559
|
if (item.type !== "scalar") {
|
|
542
|
-
report(toMarker(( localize(
|
|
560
|
+
report(toMarker(( localize(8822, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
543
561
|
} else if (item.value) {
|
|
544
562
|
if (!( available.has(item.value))) {
|
|
545
563
|
const currentNames = deprecatedNames.get(item.value);
|
|
@@ -547,7 +565,7 @@ let PromptValidator = class PromptValidator {
|
|
|
547
565
|
if (currentNames?.size === 1) {
|
|
548
566
|
const newName = Array.from(currentNames)[0];
|
|
549
567
|
report(toMarker(( localize(
|
|
550
|
-
|
|
568
|
+
8823,
|
|
551
569
|
"Tool or toolset '{0}' has been renamed, use '{1}' instead.",
|
|
552
570
|
item.value,
|
|
553
571
|
newName
|
|
@@ -555,45 +573,99 @@ let PromptValidator = class PromptValidator {
|
|
|
555
573
|
} else {
|
|
556
574
|
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
|
|
557
575
|
report(toMarker(( localize(
|
|
558
|
-
|
|
576
|
+
8824,
|
|
559
577
|
"Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
|
|
560
578
|
item.value,
|
|
561
579
|
newNames
|
|
562
580
|
)), item.range, MarkerSeverity.Info, [MarkerTag.Deprecated]));
|
|
563
581
|
}
|
|
564
582
|
} else {
|
|
565
|
-
|
|
583
|
+
const missingGithubServerMarker = this.getMissingGithubMcpServerMarker(item.value, item.range);
|
|
584
|
+
if (missingGithubServerMarker) {
|
|
585
|
+
report(missingGithubServerMarker);
|
|
586
|
+
} else {
|
|
587
|
+
const missingPlaywrightServerMarker = this.getMissingPlaywrightMcpServerMarker(item.value, item.range);
|
|
588
|
+
if (missingPlaywrightServerMarker) {
|
|
589
|
+
report(missingPlaywrightServerMarker);
|
|
590
|
+
} else {
|
|
591
|
+
report(this.getUnknownToolMarker(item.value, item.range, false));
|
|
592
|
+
}
|
|
593
|
+
}
|
|
566
594
|
}
|
|
567
595
|
}
|
|
568
596
|
}
|
|
569
597
|
}
|
|
570
598
|
}
|
|
571
599
|
}
|
|
600
|
+
getUnknownToolMarker(toolReferenceName, range, isVariableReference) {
|
|
601
|
+
const splitBySlash = toolReferenceName.split("/");
|
|
602
|
+
const slashCount = splitBySlash.length - 1;
|
|
603
|
+
const hasExtensionLikeName = splitBySlash[0].includes(".");
|
|
604
|
+
if (slashCount >= 2) {
|
|
605
|
+
return toMarker(( localize(
|
|
606
|
+
8825,
|
|
607
|
+
"Unknown tool '{0}'. It is likely to be a missing MCP server, please ensure it is installed and enabled.",
|
|
608
|
+
toolReferenceName
|
|
609
|
+
)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.UnknownMcpServerReference);
|
|
610
|
+
}
|
|
611
|
+
if (hasExtensionLikeName) {
|
|
612
|
+
return toMarker(( localize(
|
|
613
|
+
8826,
|
|
614
|
+
"Unknown extension tool '{0}'. It is likely to be a missing extension, please ensure it is installed and enabled.",
|
|
615
|
+
toolReferenceName
|
|
616
|
+
)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.UnknownExtensionReference);
|
|
617
|
+
}
|
|
618
|
+
if (isVariableReference) {
|
|
619
|
+
return toMarker(( localize(8827, "Unknown tool or toolset '{0}'.", toolReferenceName)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.UnknownExtensionOrMcpServerReference);
|
|
620
|
+
} else {
|
|
621
|
+
return toMarker(( localize(8828, "Unknown tool '{0}' will be ignored.", toolReferenceName)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.UnknownExtensionOrMcpServerReference);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
getMissingGithubMcpServerMarker(toolReferenceName, range) {
|
|
625
|
+
if (toolReferenceName !== "github/*") {
|
|
626
|
+
return undefined;
|
|
627
|
+
}
|
|
628
|
+
return toMarker(( localize(
|
|
629
|
+
8829,
|
|
630
|
+
"Tool alias '{0}' requires the GitHub MCP server. Enable the built-in server with setting 'github.copilot.chat.githubMcpServer.enabled' or install extension 'io.github.github/github-mcp-server' from Extensions (`@mcp github`).",
|
|
631
|
+
toolReferenceName
|
|
632
|
+
)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.MissingGithubMcpServer);
|
|
633
|
+
}
|
|
634
|
+
getMissingPlaywrightMcpServerMarker(toolReferenceName, range) {
|
|
635
|
+
if (toolReferenceName !== "playwright/*") {
|
|
636
|
+
return undefined;
|
|
637
|
+
}
|
|
638
|
+
return toMarker(( localize(
|
|
639
|
+
8830,
|
|
640
|
+
"Tool alias '{0}' requires the Playwright MCP server. Install it from Extensions (`@mcp playwright`).",
|
|
641
|
+
toolReferenceName
|
|
642
|
+
)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary], PromptValidatorMarkerCode.MissingPlaywrightMcpServer);
|
|
643
|
+
}
|
|
572
644
|
validateApplyTo(attributes, report) {
|
|
573
645
|
const attribute = attributes.find(attr => attr.key === PromptHeaderAttributes.applyTo);
|
|
574
646
|
if (!attribute) {
|
|
575
647
|
return;
|
|
576
648
|
}
|
|
577
649
|
if (attribute.value.type !== "scalar") {
|
|
578
|
-
report(toMarker(( localize(
|
|
650
|
+
report(toMarker(( localize(8831, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
579
651
|
return;
|
|
580
652
|
}
|
|
581
653
|
const pattern = attribute.value.value;
|
|
582
654
|
try {
|
|
583
655
|
const patterns = splitGlobAware(pattern, ",");
|
|
584
656
|
if (patterns.length === 0) {
|
|
585
|
-
report(toMarker(( localize(
|
|
657
|
+
report(toMarker(( localize(8832, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
586
658
|
return;
|
|
587
659
|
}
|
|
588
660
|
for (const pattern of patterns) {
|
|
589
661
|
const globPattern = parse(pattern);
|
|
590
662
|
if (isEmptyPattern(globPattern)) {
|
|
591
|
-
report(toMarker(( localize(
|
|
663
|
+
report(toMarker(( localize(8832, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
592
664
|
return;
|
|
593
665
|
}
|
|
594
666
|
}
|
|
595
667
|
} catch (_error) {
|
|
596
|
-
report(toMarker(( localize(
|
|
668
|
+
report(toMarker(( localize(8832, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
597
669
|
}
|
|
598
670
|
}
|
|
599
671
|
validatePaths(attributes, report) {
|
|
@@ -602,26 +674,26 @@ let PromptValidator = class PromptValidator {
|
|
|
602
674
|
return;
|
|
603
675
|
}
|
|
604
676
|
if (attribute.value.type !== "sequence") {
|
|
605
|
-
report(toMarker(( localize(
|
|
677
|
+
report(toMarker(( localize(8833, "The 'paths' attribute must be an array of glob patterns.")), attribute.value.range, MarkerSeverity.Error));
|
|
606
678
|
return;
|
|
607
679
|
}
|
|
608
680
|
for (const item of attribute.value.items) {
|
|
609
681
|
if (item.type !== "scalar") {
|
|
610
|
-
report(toMarker(( localize(
|
|
682
|
+
report(toMarker(( localize(8834, "Each entry in the 'paths' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
611
683
|
continue;
|
|
612
684
|
}
|
|
613
685
|
const pattern = item.value.trim();
|
|
614
686
|
if (pattern.length === 0) {
|
|
615
|
-
report(toMarker(( localize(
|
|
687
|
+
report(toMarker(( localize(8835, "Path entries must be non-empty glob patterns.")), item.range, MarkerSeverity.Error));
|
|
616
688
|
continue;
|
|
617
689
|
}
|
|
618
690
|
try {
|
|
619
691
|
const globPattern = parse(pattern);
|
|
620
692
|
if (isEmptyPattern(globPattern)) {
|
|
621
|
-
report(toMarker(( localize(
|
|
693
|
+
report(toMarker(( localize(8836, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
|
|
622
694
|
}
|
|
623
695
|
} catch (_error) {
|
|
624
|
-
report(toMarker(( localize(
|
|
696
|
+
report(toMarker(( localize(8836, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
|
|
625
697
|
}
|
|
626
698
|
}
|
|
627
699
|
}
|
|
@@ -631,7 +703,7 @@ let PromptValidator = class PromptValidator {
|
|
|
631
703
|
return;
|
|
632
704
|
}
|
|
633
705
|
if (attribute.value.type !== "sequence" && attribute.value.type !== "scalar") {
|
|
634
|
-
report(toMarker(( localize(
|
|
706
|
+
report(toMarker(( localize(8837, "The 'excludeAgent' attribute must be an string or array.")), attribute.value.range, MarkerSeverity.Error));
|
|
635
707
|
return;
|
|
636
708
|
}
|
|
637
709
|
}
|
|
@@ -642,7 +714,7 @@ let PromptValidator = class PromptValidator {
|
|
|
642
714
|
}
|
|
643
715
|
if (attribute.value.type !== "map") {
|
|
644
716
|
report(toMarker(( localize(
|
|
645
|
-
|
|
717
|
+
8838,
|
|
646
718
|
"The 'hooks' attribute must be a map of hook event types to command arrays."
|
|
647
719
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
648
720
|
return;
|
|
@@ -651,7 +723,7 @@ let PromptValidator = class PromptValidator {
|
|
|
651
723
|
for (const prop of attribute.value.properties) {
|
|
652
724
|
if (!( validHookNames.has(prop.key.value))) {
|
|
653
725
|
report(toMarker(( localize(
|
|
654
|
-
|
|
726
|
+
8839,
|
|
655
727
|
"Unknown hook event type '{0}'. Supported: {1}.",
|
|
656
728
|
prop.key.value,
|
|
657
729
|
Array.from(validHookNames).join(", ")
|
|
@@ -659,7 +731,7 @@ let PromptValidator = class PromptValidator {
|
|
|
659
731
|
}
|
|
660
732
|
if (prop.value.type !== "sequence") {
|
|
661
733
|
report(toMarker(( localize(
|
|
662
|
-
|
|
734
|
+
8840,
|
|
663
735
|
"Hook event '{0}' must have an array of command objects as its value.",
|
|
664
736
|
prop.key.value
|
|
665
737
|
)), prop.value.range, MarkerSeverity.Error));
|
|
@@ -672,19 +744,19 @@ let PromptValidator = class PromptValidator {
|
|
|
672
744
|
}
|
|
673
745
|
validateHookCommand(item, target, report) {
|
|
674
746
|
if (item.type !== "map") {
|
|
675
|
-
report(toMarker(( localize(
|
|
747
|
+
report(toMarker(( localize(8841, "Each hook command must be an object.")), item.range, MarkerSeverity.Error));
|
|
676
748
|
return;
|
|
677
749
|
}
|
|
678
750
|
const hooksProperty = item.properties.find(p => p.key.value === "hooks");
|
|
679
751
|
if (hooksProperty) {
|
|
680
752
|
for (const prop of item.properties) {
|
|
681
753
|
if (prop.key.value !== "hooks" && prop.key.value !== "matcher") {
|
|
682
|
-
report(toMarker(( localize(
|
|
754
|
+
report(toMarker(( localize(8842, "Unknown property '{0}' in hook matcher.", prop.key.value)), prop.key.range, MarkerSeverity.Warning));
|
|
683
755
|
}
|
|
684
756
|
}
|
|
685
757
|
if (hooksProperty.value.type !== "sequence") {
|
|
686
758
|
report(toMarker(( localize(
|
|
687
|
-
|
|
759
|
+
8843,
|
|
688
760
|
"The 'hooks' property in a matcher must be an array of command objects."
|
|
689
761
|
)), hooksProperty.value.range, MarkerSeverity.Error));
|
|
690
762
|
return;
|
|
@@ -713,37 +785,37 @@ let PromptValidator = class PromptValidator {
|
|
|
713
785
|
for (const prop of item.properties) {
|
|
714
786
|
const key = prop.key.value;
|
|
715
787
|
if (!( validProperties.has(key))) {
|
|
716
|
-
report(toMarker(( localize(
|
|
788
|
+
report(toMarker(( localize(8844, "Unknown property '{0}' in hook command.", key)), prop.key.range, MarkerSeverity.Warning));
|
|
717
789
|
}
|
|
718
790
|
if (key === "type") {
|
|
719
791
|
hasType = true;
|
|
720
792
|
if (prop.value.type !== "scalar" || prop.value.value !== "command") {
|
|
721
|
-
report(toMarker(( localize(
|
|
793
|
+
report(toMarker(( localize(8845, "The 'type' property in a hook command must be 'command'.")), prop.value.range, MarkerSeverity.Error));
|
|
722
794
|
}
|
|
723
795
|
} else if (( validCommandFields.has(key))) {
|
|
724
796
|
hasCommandField = true;
|
|
725
797
|
if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
|
|
726
798
|
report(toMarker(( localize(
|
|
727
|
-
|
|
799
|
+
8846,
|
|
728
800
|
"The '{0}' property in a hook command must be a non-empty string.",
|
|
729
801
|
key
|
|
730
802
|
)), prop.value.range, MarkerSeverity.Error));
|
|
731
803
|
}
|
|
732
804
|
} else if (key === "cwd") {
|
|
733
805
|
if (prop.value.type !== "scalar") {
|
|
734
|
-
report(toMarker(( localize(
|
|
806
|
+
report(toMarker(( localize(8847, "The 'cwd' property in a hook command must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
735
807
|
}
|
|
736
808
|
} else if (key === "env") {
|
|
737
809
|
if (prop.value.type !== "map") {
|
|
738
810
|
report(toMarker(( localize(
|
|
739
|
-
|
|
811
|
+
8848,
|
|
740
812
|
"The 'env' property in a hook command must be a map of string values."
|
|
741
813
|
)), prop.value.range, MarkerSeverity.Error));
|
|
742
814
|
} else {
|
|
743
815
|
for (const envProp of prop.value.properties) {
|
|
744
816
|
if (envProp.value.type !== "scalar") {
|
|
745
817
|
report(toMarker(( localize(
|
|
746
|
-
|
|
818
|
+
8849,
|
|
747
819
|
"Environment variable '{0}' must have a string value.",
|
|
748
820
|
envProp.key.value
|
|
749
821
|
)), envProp.value.range, MarkerSeverity.Error));
|
|
@@ -752,19 +824,19 @@ let PromptValidator = class PromptValidator {
|
|
|
752
824
|
}
|
|
753
825
|
} else if (key === "timeout" || key === "timeoutSec") {
|
|
754
826
|
if (prop.value.type !== "scalar" || isNaN(Number(prop.value.value))) {
|
|
755
|
-
report(toMarker(( localize(
|
|
827
|
+
report(toMarker(( localize(8850, "The '{0}' property in a hook command must be a number.", key)), prop.value.range, MarkerSeverity.Error));
|
|
756
828
|
}
|
|
757
829
|
}
|
|
758
830
|
}
|
|
759
831
|
if (!hasType) {
|
|
760
|
-
report(toMarker(( localize(
|
|
832
|
+
report(toMarker(( localize(8851, "Hook command is missing required property 'type'.")), item.range, MarkerSeverity.Error));
|
|
761
833
|
}
|
|
762
834
|
if (!hasCommandField) {
|
|
763
835
|
if (isCopilotCli) {
|
|
764
|
-
report(toMarker(( localize(
|
|
836
|
+
report(toMarker(( localize(8852, "Hook command must specify at least one of 'bash' or 'powershell'.")), item.range, MarkerSeverity.Error));
|
|
765
837
|
} else {
|
|
766
838
|
report(toMarker(( localize(
|
|
767
|
-
|
|
839
|
+
8853,
|
|
768
840
|
"Hook command must specify at least one of 'command', 'windows', 'linux', or 'osx'."
|
|
769
841
|
)), item.range, MarkerSeverity.Error));
|
|
770
842
|
}
|
|
@@ -776,14 +848,14 @@ let PromptValidator = class PromptValidator {
|
|
|
776
848
|
return;
|
|
777
849
|
}
|
|
778
850
|
if (attribute.value.type !== "sequence") {
|
|
779
|
-
report(toMarker(( localize(
|
|
851
|
+
report(toMarker(( localize(8854, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
780
852
|
return;
|
|
781
853
|
}
|
|
782
854
|
const seenLabels = ( new Map());
|
|
783
855
|
for (const item of attribute.value.items) {
|
|
784
856
|
if (item.type !== "map") {
|
|
785
857
|
report(toMarker(( localize(
|
|
786
|
-
|
|
858
|
+
8855,
|
|
787
859
|
"Each handoff in the 'handoffs' attribute must be an object with 'label', 'agent', 'prompt' and optional 'send'."
|
|
788
860
|
)), item.range, MarkerSeverity.Error));
|
|
789
861
|
continue;
|
|
@@ -793,44 +865,44 @@ let PromptValidator = class PromptValidator {
|
|
|
793
865
|
switch (prop.key.value) {
|
|
794
866
|
case "label":
|
|
795
867
|
if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
|
|
796
|
-
report(toMarker(( localize(
|
|
868
|
+
report(toMarker(( localize(8856, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
|
|
797
869
|
} else if (!/[a-zA-Z0-9]/.test(prop.value.value)) {
|
|
798
870
|
report(toMarker(( localize(
|
|
799
|
-
|
|
871
|
+
8857,
|
|
800
872
|
"The 'label' property in a handoff must contain at least one alphanumeric character."
|
|
801
873
|
)), prop.value.range, MarkerSeverity.Error));
|
|
802
874
|
}
|
|
803
875
|
break;
|
|
804
876
|
case "agent":
|
|
805
877
|
if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
|
|
806
|
-
report(toMarker(( localize(
|
|
878
|
+
report(toMarker(( localize(8858, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
|
|
807
879
|
} else {
|
|
808
880
|
this.validateAgentValue(prop.value, report);
|
|
809
881
|
}
|
|
810
882
|
break;
|
|
811
883
|
case "prompt":
|
|
812
884
|
if (prop.value.type !== "scalar") {
|
|
813
|
-
report(toMarker(( localize(
|
|
885
|
+
report(toMarker(( localize(8859, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
814
886
|
}
|
|
815
887
|
break;
|
|
816
888
|
case "send":
|
|
817
889
|
if (!isTrueOrFalse(prop.value)) {
|
|
818
|
-
report(toMarker(( localize(
|
|
890
|
+
report(toMarker(( localize(8860, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
|
|
819
891
|
}
|
|
820
892
|
break;
|
|
821
893
|
case "showContinueOn":
|
|
822
894
|
if (!isTrueOrFalse(prop.value)) {
|
|
823
|
-
report(toMarker(( localize(
|
|
895
|
+
report(toMarker(( localize(8861, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
|
|
824
896
|
}
|
|
825
897
|
break;
|
|
826
898
|
case "model":
|
|
827
899
|
if (prop.value.type !== "scalar") {
|
|
828
|
-
report(toMarker(( localize(
|
|
900
|
+
report(toMarker(( localize(8862, "The 'model' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
829
901
|
}
|
|
830
902
|
break;
|
|
831
903
|
default:
|
|
832
904
|
report(toMarker(( localize(
|
|
833
|
-
|
|
905
|
+
8863,
|
|
834
906
|
"Unknown property '{0}' in handoff object. Supported properties are 'label', 'agent', 'prompt' and optional 'send', 'showContinueOn', 'model'.",
|
|
835
907
|
prop.key.value
|
|
836
908
|
)), prop.value.range, MarkerSeverity.Warning));
|
|
@@ -839,7 +911,7 @@ let PromptValidator = class PromptValidator {
|
|
|
839
911
|
}
|
|
840
912
|
if (required.size > 0) {
|
|
841
913
|
report(toMarker(( localize(
|
|
842
|
-
|
|
914
|
+
8864,
|
|
843
915
|
"Missing required properties {0} in handoff object.",
|
|
844
916
|
( Array.from(required).map(s => `'${s}'`)).join(", ")
|
|
845
917
|
)), item.range, MarkerSeverity.Error));
|
|
@@ -849,7 +921,7 @@ let PromptValidator = class PromptValidator {
|
|
|
849
921
|
const normalizedLabel = labelProp.value.value.toLowerCase();
|
|
850
922
|
if (normalizedLabel && ( seenLabels.has(normalizedLabel))) {
|
|
851
923
|
report(toMarker(( localize(
|
|
852
|
-
|
|
924
|
+
8865,
|
|
853
925
|
"Duplicate handoff label '{0}'. Each handoff must have a unique label.",
|
|
854
926
|
labelProp.value.value
|
|
855
927
|
)), labelProp.value.range, MarkerSeverity.Error));
|
|
@@ -865,7 +937,7 @@ let PromptValidator = class PromptValidator {
|
|
|
865
937
|
return;
|
|
866
938
|
}
|
|
867
939
|
report(toMarker(( localize(
|
|
868
|
-
|
|
940
|
+
8866,
|
|
869
941
|
"The 'infer' attribute is deprecated in favour of 'user-invocable' and 'disable-model-invocation'."
|
|
870
942
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
871
943
|
}
|
|
@@ -875,18 +947,18 @@ let PromptValidator = class PromptValidator {
|
|
|
875
947
|
return;
|
|
876
948
|
}
|
|
877
949
|
if (attribute.value.type !== "scalar") {
|
|
878
|
-
report(toMarker(( localize(
|
|
950
|
+
report(toMarker(( localize(8867, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
879
951
|
return;
|
|
880
952
|
}
|
|
881
953
|
const targetValue = attribute.value.value.trim();
|
|
882
954
|
if (targetValue.length === 0) {
|
|
883
|
-
report(toMarker(( localize(
|
|
955
|
+
report(toMarker(( localize(8868, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
|
|
884
956
|
return;
|
|
885
957
|
}
|
|
886
958
|
const validTargets = ["github-copilot", "vscode"];
|
|
887
959
|
if (!validTargets.includes(targetValue)) {
|
|
888
960
|
report(toMarker(( localize(
|
|
889
|
-
|
|
961
|
+
8869,
|
|
890
962
|
"The 'target' attribute must be one of: {0}.",
|
|
891
963
|
validTargets.join(", ")
|
|
892
964
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
@@ -898,7 +970,7 @@ let PromptValidator = class PromptValidator {
|
|
|
898
970
|
return;
|
|
899
971
|
}
|
|
900
972
|
if (!isTrueOrFalse(attribute.value)) {
|
|
901
|
-
report(toMarker(( localize(
|
|
973
|
+
report(toMarker(( localize(8870, "The 'user-invocable' attribute must be 'true' or 'false'.")), attribute.value.range, MarkerSeverity.Error));
|
|
902
974
|
return;
|
|
903
975
|
}
|
|
904
976
|
}
|
|
@@ -909,7 +981,7 @@ let PromptValidator = class PromptValidator {
|
|
|
909
981
|
}
|
|
910
982
|
if (!isTrueOrFalse(attribute.value)) {
|
|
911
983
|
report(toMarker(( localize(
|
|
912
|
-
|
|
984
|
+
8871,
|
|
913
985
|
"The 'disable-model-invocation' attribute must be 'true' or 'false'."
|
|
914
986
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
915
987
|
return;
|
|
@@ -921,7 +993,7 @@ let PromptValidator = class PromptValidator {
|
|
|
921
993
|
return;
|
|
922
994
|
}
|
|
923
995
|
if (attribute.value.type !== "sequence") {
|
|
924
|
-
report(toMarker(( localize(
|
|
996
|
+
report(toMarker(( localize(8872, "The 'agents' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
925
997
|
return;
|
|
926
998
|
}
|
|
927
999
|
const agents = (await this.promptsService.getCustomAgents(CancellationToken.None)).filter(a => a.enabled);
|
|
@@ -930,12 +1002,12 @@ let PromptValidator = class PromptValidator {
|
|
|
930
1002
|
const agentNames = [];
|
|
931
1003
|
for (const item of attribute.value.items) {
|
|
932
1004
|
if (item.type !== "scalar") {
|
|
933
|
-
report(toMarker(( localize(
|
|
1005
|
+
report(toMarker(( localize(8873, "Each agent name in the 'agents' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
934
1006
|
} else if (item.value) {
|
|
935
1007
|
agentNames.push(item.value);
|
|
936
1008
|
if (item.value !== "*" && !( availableAgentNames.has(item.value))) {
|
|
937
1009
|
report(toMarker(( localize(
|
|
938
|
-
|
|
1010
|
+
8874,
|
|
939
1011
|
"Unknown agent '{0}' will be ignored. Available agents: {1}.",
|
|
940
1012
|
item.value,
|
|
941
1013
|
Array.from(availableAgentNames).join(", ")
|
|
@@ -947,7 +1019,7 @@ let PromptValidator = class PromptValidator {
|
|
|
947
1019
|
const tools = header.tools;
|
|
948
1020
|
if (tools && !tools.includes(SpecedToolAliases.agent)) {
|
|
949
1021
|
report(toMarker(( localize(
|
|
950
|
-
|
|
1022
|
+
8875,
|
|
951
1023
|
"When 'agents' and 'tools' are specified, the 'agent' tool must be included in the 'tools' attribute."
|
|
952
1024
|
)), attribute.value.range, MarkerSeverity.Warning));
|
|
953
1025
|
}
|
|
@@ -959,20 +1031,20 @@ let PromptValidator = class PromptValidator {
|
|
|
959
1031
|
return;
|
|
960
1032
|
}
|
|
961
1033
|
if (attribute.value.type !== "map") {
|
|
962
|
-
report(toMarker(( localize(
|
|
1034
|
+
report(toMarker(( localize(8876, "The 'github' attribute must be an object.")), attribute.value.range, MarkerSeverity.Error));
|
|
963
1035
|
return;
|
|
964
1036
|
}
|
|
965
1037
|
for (const prop of attribute.value.properties) {
|
|
966
1038
|
if (prop.key.value !== "permissions") {
|
|
967
1039
|
report(toMarker(( localize(
|
|
968
|
-
|
|
1040
|
+
8877,
|
|
969
1041
|
"Unknown property '{0}' in 'github' object. Supported: 'permissions'.",
|
|
970
1042
|
prop.key.value
|
|
971
1043
|
)), prop.key.range, MarkerSeverity.Warning));
|
|
972
1044
|
continue;
|
|
973
1045
|
}
|
|
974
1046
|
if (prop.value.type !== "map") {
|
|
975
|
-
report(toMarker(( localize(
|
|
1047
|
+
report(toMarker(( localize(8878, "The 'permissions' property must be an object.")), prop.value.range, MarkerSeverity.Error));
|
|
976
1048
|
continue;
|
|
977
1049
|
}
|
|
978
1050
|
for (const permProp of prop.value.properties) {
|
|
@@ -981,7 +1053,7 @@ let PromptValidator = class PromptValidator {
|
|
|
981
1053
|
if (!scopeInfo) {
|
|
982
1054
|
const validScopes = ( Object.keys(githubPermissionScopes)).sort().join(", ");
|
|
983
1055
|
report(toMarker(( localize(
|
|
984
|
-
|
|
1056
|
+
8879,
|
|
985
1057
|
"Unknown permission scope '{0}'. Valid scopes: {1}.",
|
|
986
1058
|
scope,
|
|
987
1059
|
validScopes
|
|
@@ -989,13 +1061,13 @@ let PromptValidator = class PromptValidator {
|
|
|
989
1061
|
continue;
|
|
990
1062
|
}
|
|
991
1063
|
if (permProp.value.type !== "scalar") {
|
|
992
|
-
report(toMarker(( localize(
|
|
1064
|
+
report(toMarker(( localize(8880, "The permission value for '{0}' must be a string.", scope)), permProp.value.range, MarkerSeverity.Error));
|
|
993
1065
|
continue;
|
|
994
1066
|
}
|
|
995
1067
|
const value = permProp.value.value;
|
|
996
1068
|
if (!scopeInfo.allowedValues.includes(value)) {
|
|
997
1069
|
report(toMarker(( localize(
|
|
998
|
-
|
|
1070
|
+
8881,
|
|
999
1071
|
"Invalid permission value '{0}' for scope '{1}'. Allowed values: {2}.",
|
|
1000
1072
|
value,
|
|
1001
1073
|
scope,
|
|
@@ -1010,39 +1082,39 @@ PromptValidator = ( __decorate([( __param(0, ILanguageModelsService)), ( __param
|
|
|
1010
1082
|
const githubPermissionScopes = {
|
|
1011
1083
|
"actions": {
|
|
1012
1084
|
allowedValues: ["read", "write", "none"],
|
|
1013
|
-
description: ( localize(
|
|
1085
|
+
description: ( localize(8882, "Access to GitHub Actions workflows and runs"))
|
|
1014
1086
|
},
|
|
1015
1087
|
"checks": {
|
|
1016
1088
|
allowedValues: ["read", "none"],
|
|
1017
|
-
description: ( localize(
|
|
1089
|
+
description: ( localize(8883, "Access to check runs and statuses"))
|
|
1018
1090
|
},
|
|
1019
1091
|
"contents": {
|
|
1020
1092
|
allowedValues: ["read", "write", "none"],
|
|
1021
|
-
description: ( localize(
|
|
1093
|
+
description: ( localize(8884, "Access to repository contents (files, commits, branches)"))
|
|
1022
1094
|
},
|
|
1023
1095
|
"discussions": {
|
|
1024
1096
|
allowedValues: ["read", "write", "none"],
|
|
1025
|
-
description: ( localize(
|
|
1097
|
+
description: ( localize(8885, "Access to discussions"))
|
|
1026
1098
|
},
|
|
1027
1099
|
"issues": {
|
|
1028
1100
|
allowedValues: ["read", "write", "none"],
|
|
1029
|
-
description: ( localize(
|
|
1101
|
+
description: ( localize(8886, "Access to issues (read, create, update, comment)"))
|
|
1030
1102
|
},
|
|
1031
1103
|
"metadata": {
|
|
1032
1104
|
allowedValues: ["read"],
|
|
1033
|
-
description: ( localize(
|
|
1105
|
+
description: ( localize(8887, "Repository metadata (always read-only)"))
|
|
1034
1106
|
},
|
|
1035
1107
|
"pull-requests": {
|
|
1036
1108
|
allowedValues: ["read", "write", "none"],
|
|
1037
|
-
description: ( localize(
|
|
1109
|
+
description: ( localize(8888, "Access to pull requests (read, create, update, review)"))
|
|
1038
1110
|
},
|
|
1039
1111
|
"security-events": {
|
|
1040
1112
|
allowedValues: ["read", "none"],
|
|
1041
|
-
description: ( localize(
|
|
1113
|
+
description: ( localize(8889, "Access to security-related events"))
|
|
1042
1114
|
},
|
|
1043
1115
|
"workflows": {
|
|
1044
1116
|
allowedValues: ["write", "none"],
|
|
1045
|
-
description: ( localize(
|
|
1117
|
+
description: ( localize(8890, "Access to modify workflow files"))
|
|
1046
1118
|
}
|
|
1047
1119
|
};
|
|
1048
1120
|
function isTrueOrFalse(value) {
|
|
@@ -1130,103 +1202,103 @@ function isNonRecommendedAttribute(attributeName) {
|
|
|
1130
1202
|
}
|
|
1131
1203
|
const knownClaudeTools = [{
|
|
1132
1204
|
name: "Bash",
|
|
1133
|
-
description: ( localize(
|
|
1205
|
+
description: ( localize(8891, "Execute shell commands")),
|
|
1134
1206
|
toolEquivalent: [SpecedToolAliases.execute]
|
|
1135
1207
|
}, {
|
|
1136
1208
|
name: "Edit",
|
|
1137
|
-
description: ( localize(
|
|
1209
|
+
description: ( localize(8892, "Make targeted file edits")),
|
|
1138
1210
|
toolEquivalent: ["edit/editNotebook", "edit/editFiles"]
|
|
1139
1211
|
}, {
|
|
1140
1212
|
name: "Glob",
|
|
1141
|
-
description: ( localize(
|
|
1213
|
+
description: ( localize(8893, "Find files by pattern")),
|
|
1142
1214
|
toolEquivalent: ["search/fileSearch"]
|
|
1143
1215
|
}, {
|
|
1144
1216
|
name: "Grep",
|
|
1145
|
-
description: ( localize(
|
|
1217
|
+
description: ( localize(8894, "Search file contents with regex")),
|
|
1146
1218
|
toolEquivalent: ["search/textSearch"]
|
|
1147
1219
|
}, {
|
|
1148
1220
|
name: "Read",
|
|
1149
|
-
description: ( localize(
|
|
1221
|
+
description: ( localize(8895, "Read file contents")),
|
|
1150
1222
|
toolEquivalent: ["read/readFile", "read/getNotebookSummary"]
|
|
1151
1223
|
}, {
|
|
1152
1224
|
name: "Write",
|
|
1153
|
-
description: ( localize(
|
|
1225
|
+
description: ( localize(8896, "Create/overwrite files")),
|
|
1154
1226
|
toolEquivalent: ["edit/createDirectory", "edit/createFile", "edit/createJupyterNotebook"]
|
|
1155
1227
|
}, {
|
|
1156
1228
|
name: "WebFetch",
|
|
1157
|
-
description: ( localize(
|
|
1229
|
+
description: ( localize(8897, "Fetch URL content")),
|
|
1158
1230
|
toolEquivalent: [SpecedToolAliases.web]
|
|
1159
1231
|
}, {
|
|
1160
1232
|
name: "WebSearch",
|
|
1161
|
-
description: ( localize(
|
|
1233
|
+
description: ( localize(8898, "Perform web searches")),
|
|
1162
1234
|
toolEquivalent: [SpecedToolAliases.web]
|
|
1163
1235
|
}, {
|
|
1164
1236
|
name: "Task",
|
|
1165
|
-
description: ( localize(
|
|
1237
|
+
description: ( localize(8899, "Run subagents for complex tasks")),
|
|
1166
1238
|
toolEquivalent: [SpecedToolAliases.agent]
|
|
1167
1239
|
}, {
|
|
1168
1240
|
name: "Skill",
|
|
1169
|
-
description: ( localize(
|
|
1241
|
+
description: ( localize(8900, "Execute skills")),
|
|
1170
1242
|
toolEquivalent: []
|
|
1171
1243
|
}, {
|
|
1172
1244
|
name: "LSP",
|
|
1173
|
-
description: ( localize(
|
|
1245
|
+
description: ( localize(8901, "Code intelligence (requires plugin)")),
|
|
1174
1246
|
toolEquivalent: []
|
|
1175
1247
|
}, {
|
|
1176
1248
|
name: "NotebookEdit",
|
|
1177
|
-
description: ( localize(
|
|
1249
|
+
description: ( localize(8902, "Modify Jupyter notebooks")),
|
|
1178
1250
|
toolEquivalent: ["edit/editNotebook"]
|
|
1179
1251
|
}, {
|
|
1180
1252
|
name: "AskUserQuestion",
|
|
1181
|
-
description: ( localize(
|
|
1253
|
+
description: ( localize(8903, "Ask multiple-choice questions")),
|
|
1182
1254
|
toolEquivalent: ["vscode/askQuestions"]
|
|
1183
1255
|
}, {
|
|
1184
1256
|
name: "MCPSearch",
|
|
1185
|
-
description: ( localize(
|
|
1257
|
+
description: ( localize(8904, "Searches for MCP tools when tool search is enabled")),
|
|
1186
1258
|
toolEquivalent: []
|
|
1187
1259
|
}];
|
|
1188
1260
|
const knownClaudeModels = [{
|
|
1189
1261
|
name: "sonnet",
|
|
1190
|
-
description: ( localize(
|
|
1262
|
+
description: ( localize(8905, "Latest Claude Sonnet")),
|
|
1191
1263
|
modelEquivalent: "Claude Sonnet 4.5 (copilot)"
|
|
1192
1264
|
}, {
|
|
1193
1265
|
name: "opus",
|
|
1194
|
-
description: ( localize(
|
|
1266
|
+
description: ( localize(8906, "Latest Claude Opus")),
|
|
1195
1267
|
modelEquivalent: "Claude Opus 4.6 (copilot)"
|
|
1196
1268
|
}, {
|
|
1197
1269
|
name: "haiku",
|
|
1198
|
-
description: ( localize(
|
|
1270
|
+
description: ( localize(8907, "Latest Claude Haiku, fast for simple tasks")),
|
|
1199
1271
|
modelEquivalent: "Claude Haiku 4.5 (copilot)"
|
|
1200
1272
|
}, {
|
|
1201
1273
|
name: "inherit",
|
|
1202
|
-
description: ( localize(
|
|
1274
|
+
description: ( localize(8908, "Inherit model from parent agent or prompt")),
|
|
1203
1275
|
modelEquivalent: undefined
|
|
1204
1276
|
}];
|
|
1205
1277
|
const claudeAgentAttributes = {
|
|
1206
1278
|
"name": {
|
|
1207
1279
|
type: "scalar",
|
|
1208
|
-
description: ( localize(
|
|
1280
|
+
description: ( localize(8909, "Unique identifier using lowercase letters and hyphens (required)"))
|
|
1209
1281
|
},
|
|
1210
1282
|
"description": {
|
|
1211
1283
|
type: "scalar",
|
|
1212
|
-
description: ( localize(
|
|
1284
|
+
description: ( localize(8910, "When to delegate to this subagent (required)"))
|
|
1213
1285
|
},
|
|
1214
1286
|
"tools": {
|
|
1215
1287
|
type: "sequence",
|
|
1216
|
-
description: ( localize(
|
|
1288
|
+
description: ( localize(8911, "Array of tools the subagent can use. Inherits all tools if omitted")),
|
|
1217
1289
|
defaults: ["Read, Edit, Bash"],
|
|
1218
1290
|
items: knownClaudeTools
|
|
1219
1291
|
},
|
|
1220
1292
|
"disallowedTools": {
|
|
1221
1293
|
type: "sequence",
|
|
1222
|
-
description: ( localize(
|
|
1294
|
+
description: ( localize(8912, "Tools to deny, removed from inherited or specified list")),
|
|
1223
1295
|
defaults: ["Write, Edit, Bash"],
|
|
1224
1296
|
items: knownClaudeTools
|
|
1225
1297
|
},
|
|
1226
1298
|
"model": {
|
|
1227
1299
|
type: "scalar",
|
|
1228
1300
|
description: ( localize(
|
|
1229
|
-
|
|
1301
|
+
8913,
|
|
1230
1302
|
"Model to use: sonnet, opus, haiku, or inherit. Defaults to inherit."
|
|
1231
1303
|
)),
|
|
1232
1304
|
defaults: ["sonnet", "opus", "haiku", "inherit"],
|
|
@@ -1235,77 +1307,77 @@ const claudeAgentAttributes = {
|
|
|
1235
1307
|
"permissionMode": {
|
|
1236
1308
|
type: "scalar",
|
|
1237
1309
|
description: ( localize(
|
|
1238
|
-
|
|
1310
|
+
8914,
|
|
1239
1311
|
"Permission mode: default, acceptEdits, dontAsk, bypassPermissions, or plan."
|
|
1240
1312
|
)),
|
|
1241
1313
|
defaults: ["default", "acceptEdits", "dontAsk", "bypassPermissions", "plan"],
|
|
1242
1314
|
enums: [{
|
|
1243
1315
|
name: "default",
|
|
1244
1316
|
description: ( localize(
|
|
1245
|
-
|
|
1317
|
+
8915,
|
|
1246
1318
|
"Standard behavior: prompts for permission on first use of each tool."
|
|
1247
1319
|
))
|
|
1248
1320
|
}, {
|
|
1249
1321
|
name: "acceptEdits",
|
|
1250
|
-
description: ( localize(
|
|
1322
|
+
description: ( localize(8916, "Automatically accepts file edit permissions for the session."))
|
|
1251
1323
|
}, {
|
|
1252
1324
|
name: "plan",
|
|
1253
1325
|
description: ( localize(
|
|
1254
|
-
|
|
1326
|
+
8917,
|
|
1255
1327
|
"Plan Mode: Claude can analyze but not modify files or execute commands."
|
|
1256
1328
|
))
|
|
1257
1329
|
}, {
|
|
1258
1330
|
name: "delegate",
|
|
1259
1331
|
description: ( localize(
|
|
1260
|
-
|
|
1332
|
+
8918,
|
|
1261
1333
|
"Coordination-only mode for agent team leads. Only available when an agent team is active."
|
|
1262
1334
|
))
|
|
1263
1335
|
}, {
|
|
1264
1336
|
name: "dontAsk",
|
|
1265
1337
|
description: ( localize(
|
|
1266
|
-
|
|
1338
|
+
8919,
|
|
1267
1339
|
"Auto-denies tools unless pre-approved via /permissions or permissions.allow rules."
|
|
1268
1340
|
))
|
|
1269
1341
|
}, {
|
|
1270
1342
|
name: "bypassPermissions",
|
|
1271
1343
|
description: ( localize(
|
|
1272
|
-
|
|
1344
|
+
8920,
|
|
1273
1345
|
"Skips all permission prompts (requires safe environment like containers)."
|
|
1274
1346
|
))
|
|
1275
1347
|
}]
|
|
1276
1348
|
},
|
|
1277
1349
|
"skills": {
|
|
1278
1350
|
type: "sequence",
|
|
1279
|
-
description: ( localize(
|
|
1351
|
+
description: ( localize(8921, "Skills to load into the subagent's context at startup."))
|
|
1280
1352
|
},
|
|
1281
1353
|
"mcpServers": {
|
|
1282
1354
|
type: "sequence",
|
|
1283
|
-
description: ( localize(
|
|
1355
|
+
description: ( localize(8922, "MCP servers available to this subagent."))
|
|
1284
1356
|
},
|
|
1285
1357
|
"hooks": {
|
|
1286
1358
|
type: "object",
|
|
1287
|
-
description: ( localize(
|
|
1359
|
+
description: ( localize(8923, "Lifecycle hooks scoped to this subagent."))
|
|
1288
1360
|
},
|
|
1289
1361
|
"memory": {
|
|
1290
1362
|
type: "scalar",
|
|
1291
1363
|
description: ( localize(
|
|
1292
|
-
|
|
1364
|
+
8924,
|
|
1293
1365
|
"Persistent memory scope: user, project, or local. Enables cross-session learning."
|
|
1294
1366
|
)),
|
|
1295
1367
|
defaults: ["user", "project", "local"],
|
|
1296
1368
|
enums: [{
|
|
1297
1369
|
name: "user",
|
|
1298
|
-
description: ( localize(
|
|
1370
|
+
description: ( localize(8925, "Remember learnings across all projects."))
|
|
1299
1371
|
}, {
|
|
1300
1372
|
name: "project",
|
|
1301
1373
|
description: ( localize(
|
|
1302
|
-
|
|
1374
|
+
8926,
|
|
1303
1375
|
"The subagent's knowledge is project-specific and shareable via version control."
|
|
1304
1376
|
))
|
|
1305
1377
|
}, {
|
|
1306
1378
|
name: "local",
|
|
1307
1379
|
description: ( localize(
|
|
1308
|
-
|
|
1380
|
+
8927,
|
|
1309
1381
|
"The subagent's knowledge is project-specific but should not be checked into version control."
|
|
1310
1382
|
))
|
|
1311
1383
|
}]
|
|
@@ -1315,14 +1387,14 @@ const claudeRulesAttributes = {
|
|
|
1315
1387
|
"description": {
|
|
1316
1388
|
type: "scalar",
|
|
1317
1389
|
description: ( localize(
|
|
1318
|
-
|
|
1390
|
+
8928,
|
|
1319
1391
|
"A description of what this rule covers, used to provide context about when it applies."
|
|
1320
1392
|
))
|
|
1321
1393
|
},
|
|
1322
1394
|
"paths": {
|
|
1323
1395
|
type: "sequence",
|
|
1324
1396
|
description: ( localize(
|
|
1325
|
-
|
|
1397
|
+
8929,
|
|
1326
1398
|
"Array of glob patterns that describe for which files the rule applies. Based on these patterns, the file is automatically included in the prompt when the context contains a file that matches.\nExample: `['src/**/*.ts', 'test/**']`"
|
|
1327
1399
|
))
|
|
1328
1400
|
}
|
|
@@ -1351,15 +1423,18 @@ function getTarget(promptType, header) {
|
|
|
1351
1423
|
}
|
|
1352
1424
|
return Target.Undefined;
|
|
1353
1425
|
}
|
|
1354
|
-
function toMarker(message, range, severity = MarkerSeverity.Error, tags) {
|
|
1426
|
+
function toMarker(message, range, severity = MarkerSeverity.Error, tags, code) {
|
|
1355
1427
|
return {
|
|
1356
1428
|
severity,
|
|
1357
1429
|
message,
|
|
1358
1430
|
...(tags ? {
|
|
1359
1431
|
tags
|
|
1360
1432
|
} : {}),
|
|
1433
|
+
...(code ? {
|
|
1434
|
+
code
|
|
1435
|
+
} : {}),
|
|
1361
1436
|
...range
|
|
1362
1437
|
};
|
|
1363
1438
|
}
|
|
1364
1439
|
|
|
1365
|
-
export { MARKERS_OWNER_ID, PromptValidator, claudeAgentAttributes, claudeRulesAttributes, getTarget, getValidAttributeNames, githubPermissionScopes, isNonRecommendedAttribute, isVSCodeOrDefaultTarget, knownClaudeModels, knownClaudeTools };
|
|
1440
|
+
export { MARKERS_OWNER_ID, PromptValidator, PromptValidatorMarkerCode, claudeAgentAttributes, claudeRulesAttributes, getTarget, getValidAttributeNames, githubPermissionScopes, isNonRecommendedAttribute, isVSCodeOrDefaultTarget, knownClaudeModels, knownClaudeTools };
|