@codingame/monaco-vscode-chat-service-override 33.0.8 → 34.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +19 -5
- package/package.json +5 -5
- package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.d.ts +32 -0
- package/vscode/src/vs/platform/agentHost/browser/agentHostIpcChannelTransport.js +77 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +84 -17
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +235 -190
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +3 -2
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +23 -4
- package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/common/agentHost.config.contribution.js +22 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +107 -8
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +272 -49
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemService.js +2 -2
- package/vscode/src/vs/platform/agentHost/common/{agentHostPermissionService.d.ts → agentHostResourceService.d.ts} +26 -0
- package/vscode/src/vs/platform/agentHost/common/{agentHostPermissionService.js → agentHostResourceService.js} +11 -1
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.d.ts +13 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostSchema.js +26 -18
- package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.d.ts +1 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostStarter.config.contribution.js +119 -0
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +135 -19
- package/vscode/src/vs/platform/agentHost/common/agentService.js +8 -2
- package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.d.ts +5 -1
- package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.js +85 -22
- package/vscode/src/vs/platform/agentHost/common/customAgents.d.ts +36 -0
- package/vscode/src/vs/platform/agentHost/common/customAgents.js +12 -0
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.d.ts +81 -0
- package/vscode/src/vs/platform/agentHost/common/sandboxConfigSchema.js +103 -0
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +86 -10
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +129 -37
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.d.ts +12 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-changeset/reducer.js +72 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-root/reducer.d.ts +6 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-root/reducer.js +30 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-session/reducer.d.ts +6 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/{reducers.js → channels-session/reducer.js} +99 -168
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.d.ts +6 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/channels-terminal/reducer.js +110 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/{errors.d.ts → common/errors.d.ts} +13 -2
- package/vscode/src/vs/platform/agentHost/common/state/protocol/{errors.js → common/errors.js} +1 -2
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.d.ts +17 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/common/reducer-helpers.js +9 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +33 -8
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +2 -3
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +36 -5
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +6 -3
- package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +50 -0
- package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +138 -0
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +3 -3
- package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +12 -0
- package/vscode/src/vs/platform/networkFilter/common/settings.js +14 -0
- package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.d.ts +4 -1
- package/vscode/src/vs/platform/sandbox/browser/sandboxHelperService.js +9 -0
- package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +21 -0
- package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +28 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.d.ts +31 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxCommandRules.js +49 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.d.ts +182 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxEngine.js +784 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.d.ts +18 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxReadAllowList.js +305 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +7 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxRuntimeConfigurationPerOperation.js +120 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +100 -0
- package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +60 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +106 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +22 -36
- 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 +21 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +38 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
- 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 +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/openCopilotCliStateFileAction.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +40 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +15 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +23 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.js +119 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.js +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.js +104 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostModeSynchronizer.js +177 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostToolUtils.js +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostUntitledProvisionalSessionService.js +44 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/syncedCustomizationBundler.js +103 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +70 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +9 -7
- 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 +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +38 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +22 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +15 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +8 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +112 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +62 -68
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +149 -145
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +25 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +13 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +15 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +78 -55
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +140 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +11 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +59 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +440 -357
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +99 -99
- 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/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.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 +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatGoalSummaryService.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatGoalSummaryService.js +115 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +5 -2
- 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/chatModelsViewModel.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +28 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +187 -106
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +41 -0
- 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 +66 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +346 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +72 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +26 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +144 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +126 -80
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +32 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +40 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +25 -24
- 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/githubRepoFetcher.js +1 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.d.ts +12 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/hasByokModelsContribution.js +14 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +56 -18
- 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 +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginAutoUpdate.js +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +33 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +31 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +16 -13
- 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.d.ts +1 -1
- 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/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/languageModelToolsConfirmationService.js +39 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +24 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +23 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/utilityModelContribution.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +22 -13
- 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.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +14 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +55 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatSelectedModel.js +47 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +54 -12
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +39 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +40 -4
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +30 -8
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +205 -46
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +153 -38
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +12 -7
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +70 -37
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +6 -28
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
- 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.js +150 -150
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.js +10 -10
- package/vscode/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.js +10 -10
- package/vscode/src/vs/workbench/contrib/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 +17 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +21 -21
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +21 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/agentHostSandboxForwarder.js +122 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +232 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +65 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +225 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +143 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +205 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +40 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +174 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +43 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +52 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +260 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +98 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +14 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +226 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +392 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +243 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +54 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +310 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +177 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +22 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +102 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +27 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +55 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +31 -9
- 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 +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +177 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +518 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +42 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +297 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +2961 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +63 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +14 -14
- 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.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +118 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +58 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +223 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/sandboxSettingsReader.js +81 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +63 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +349 -0
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.d.ts +75 -0
- package/vscode/src/vs/workbench/services/agentHost/browser/editorRemoteAgentHostServiceClient.js +192 -0
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostResourceService.d.ts +89 -0
- package/vscode/src/vs/workbench/services/agentHost/common/{agentHostPermissionService.js → agentHostResourceService.js} +226 -9
- package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +0 -30
- package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.d.ts +0 -119
- package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.js +0 -552
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostPermissionService.d.ts +0 -83
|
@@ -63,13 +63,13 @@ let PromptValidator = class PromptValidator {
|
|
|
63
63
|
const location = this.promptsService.getAgentFileURIFromModeFile(promptAST.uri);
|
|
64
64
|
if (location && (await this.fileService.canCreateFile(location))) {
|
|
65
65
|
report(toMarker(( localize(
|
|
66
|
-
|
|
66
|
+
8166,
|
|
67
67
|
"Chat modes have been renamed to agents. Please move this file to {0}",
|
|
68
68
|
(location.toString())
|
|
69
69
|
)), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
70
70
|
} else {
|
|
71
71
|
report(toMarker(( localize(
|
|
72
|
-
|
|
72
|
+
8167,
|
|
73
73
|
"Chat modes have been renamed to agents. Please move the file to {0}",
|
|
74
74
|
AGENTS_SOURCE_FOLDER
|
|
75
75
|
)), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
@@ -82,13 +82,13 @@ let PromptValidator = class PromptValidator {
|
|
|
82
82
|
}
|
|
83
83
|
const nameAttribute = promptAST.header.getAttribute(PromptHeaderAttributes.name);
|
|
84
84
|
if (!nameAttribute) {
|
|
85
|
-
report(toMarker(( localize(
|
|
85
|
+
report(toMarker(( localize(8168, "Skill should provide a name.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
86
86
|
} else if (nameAttribute.value.type === "scalar") {
|
|
87
87
|
const skillName = nameAttribute.value.value.trim();
|
|
88
88
|
if (skillName.length > 0) {
|
|
89
89
|
if (!VALID_SKILL_NAME_REGEX.test(skillName)) {
|
|
90
90
|
report(toMarker(( localize(
|
|
91
|
-
|
|
91
|
+
8169,
|
|
92
92
|
"Skill name may only contain lowercase letters, numbers, and hyphens."
|
|
93
93
|
)), nameAttribute.value.range, MarkerSeverity.Error));
|
|
94
94
|
}
|
|
@@ -98,7 +98,7 @@ let PromptValidator = class PromptValidator {
|
|
|
98
98
|
const folderName = pathParts[skillIndex - 1];
|
|
99
99
|
if (folderName && skillName !== folderName) {
|
|
100
100
|
report(toMarker(( localize(
|
|
101
|
-
|
|
101
|
+
8170,
|
|
102
102
|
"The skill name '{0}' should match the folder name '{1}'.",
|
|
103
103
|
skillName,
|
|
104
104
|
folderName
|
|
@@ -109,12 +109,12 @@ let PromptValidator = class PromptValidator {
|
|
|
109
109
|
}
|
|
110
110
|
const descriptionAttribute = promptAST.header.getAttribute(PromptHeaderAttributes.description);
|
|
111
111
|
if (!descriptionAttribute) {
|
|
112
|
-
report(toMarker(( localize(
|
|
112
|
+
report(toMarker(( localize(8171, "Skill should provide a description.")), ( new Range(1, 1, 1, 4)), MarkerSeverity.Warning));
|
|
113
113
|
if (promptAST.header.userInvocable === false) {
|
|
114
114
|
const userInvocableAttr = promptAST.header.getAttribute(PromptHeaderAttributes.userInvocable);
|
|
115
115
|
if (userInvocableAttr) {
|
|
116
116
|
report(toMarker(( localize(
|
|
117
|
-
|
|
117
|
+
8172,
|
|
118
118
|
"A description is required when user-invocable is false, because the model needs a description to decide when to load the skill."
|
|
119
119
|
)), userInvocableAttr.value.range, MarkerSeverity.Error));
|
|
120
120
|
}
|
|
@@ -123,7 +123,7 @@ let PromptValidator = class PromptValidator {
|
|
|
123
123
|
const disableModelInvocationAttr = promptAST.header.getAttribute(PromptHeaderAttributes.disableModelInvocation);
|
|
124
124
|
if (disableModelInvocationAttr) {
|
|
125
125
|
report(toMarker(( localize(
|
|
126
|
-
|
|
126
|
+
8173,
|
|
127
127
|
"A description is required when model invocation is enabled, because the model needs a description to decide when to load the skill."
|
|
128
128
|
)), disableModelInvocationAttr.value.range, MarkerSeverity.Error));
|
|
129
129
|
}
|
|
@@ -134,7 +134,7 @@ let PromptValidator = class PromptValidator {
|
|
|
134
134
|
const skillToolEnabled = this.configurationService.getValue("github.copilot.chat.skillTool.enabled");
|
|
135
135
|
if (!skillToolEnabled) {
|
|
136
136
|
report(toMarker(( localize(
|
|
137
|
-
|
|
137
|
+
8174,
|
|
138
138
|
"The 'context: fork' attribute requires the skill tool to be enabled (github.copilot.chat.skillTool.enabled)."
|
|
139
139
|
)), contextAttribute.value.range, MarkerSeverity.Warning));
|
|
140
140
|
}
|
|
@@ -149,7 +149,7 @@ let PromptValidator = class PromptValidator {
|
|
|
149
149
|
for (const ref of body.fileReferences) {
|
|
150
150
|
const resolved = body.resolveFilePath(ref.content);
|
|
151
151
|
if (!resolved) {
|
|
152
|
-
report(toMarker(( localize(
|
|
152
|
+
report(toMarker(( localize(8175, "Invalid file reference '{0}'.", ref.content)), ref.range, MarkerSeverity.Warning));
|
|
153
153
|
continue;
|
|
154
154
|
}
|
|
155
155
|
if (promptAST.uri.scheme === resolved.scheme) {
|
|
@@ -158,7 +158,7 @@ let PromptValidator = class PromptValidator {
|
|
|
158
158
|
const exists = await this.fileService.exists(resolved);
|
|
159
159
|
if (!exists) {
|
|
160
160
|
const loc = this.labelService.getUriLabel(resolved);
|
|
161
|
-
report(toMarker(( localize(
|
|
161
|
+
report(toMarker(( localize(8176, "File '{0}' not found at '{1}'.", ref.content, loc)), ref.range, MarkerSeverity.Warning));
|
|
162
162
|
}
|
|
163
163
|
} catch (e) {
|
|
164
164
|
this.logger.warn(
|
|
@@ -181,7 +181,7 @@ let PromptValidator = class PromptValidator {
|
|
|
181
181
|
if (currentNames.size === 1) {
|
|
182
182
|
const newName = Array.from(currentNames)[0];
|
|
183
183
|
report(toMarker(( localize(
|
|
184
|
-
|
|
184
|
+
8177,
|
|
185
185
|
"Tool or toolset '{0}' has been renamed, use '{1}' instead.",
|
|
186
186
|
variable.name,
|
|
187
187
|
newName
|
|
@@ -189,7 +189,7 @@ let PromptValidator = class PromptValidator {
|
|
|
189
189
|
} else {
|
|
190
190
|
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
|
|
191
191
|
report(toMarker(( localize(
|
|
192
|
-
|
|
192
|
+
8178,
|
|
193
193
|
"Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
|
|
194
194
|
variable.name,
|
|
195
195
|
newNames
|
|
@@ -197,13 +197,13 @@ let PromptValidator = class PromptValidator {
|
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
} else {
|
|
200
|
-
report(toMarker(( localize(
|
|
200
|
+
report(toMarker(( localize(8179, "Unknown tool or toolset '{0}'.", variable.name)), variable.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
|
|
201
201
|
}
|
|
202
202
|
} else if (headerToolsMap) {
|
|
203
203
|
const tool = this.languageModelToolsService.getToolByFullReferenceName(variable.name);
|
|
204
204
|
if (tool && headerToolsMap.get(tool) === false) {
|
|
205
205
|
report(toMarker(( localize(
|
|
206
|
-
|
|
206
|
+
8180,
|
|
207
207
|
"Tool or toolset '{0}' also needs to be enabled in the header.",
|
|
208
208
|
variable.name
|
|
209
209
|
)), variable.range, MarkerSeverity.Warning));
|
|
@@ -277,7 +277,7 @@ let PromptValidator = class PromptValidator {
|
|
|
277
277
|
switch (promptType) {
|
|
278
278
|
case PromptsType.prompt:
|
|
279
279
|
report(toMarker(( localize(
|
|
280
|
-
|
|
280
|
+
8181,
|
|
281
281
|
"Attribute '{0}' is not supported in prompt files. Supported: {1}.",
|
|
282
282
|
attribute.key,
|
|
283
283
|
supportedNames.value
|
|
@@ -286,7 +286,7 @@ let PromptValidator = class PromptValidator {
|
|
|
286
286
|
case PromptsType.agent:
|
|
287
287
|
if (target === Target.GitHubCopilot) {
|
|
288
288
|
report(toMarker(( localize(
|
|
289
|
-
|
|
289
|
+
8182,
|
|
290
290
|
"Attribute '{0}' is not supported in custom GitHub Copilot agent files. Supported: {1}.",
|
|
291
291
|
attribute.key,
|
|
292
292
|
supportedNames.value
|
|
@@ -295,13 +295,13 @@ let PromptValidator = class PromptValidator {
|
|
|
295
295
|
; else {
|
|
296
296
|
if (( validGithubCopilotAttributeNames.value.has(attribute.key))) {
|
|
297
297
|
report(toMarker(( localize(
|
|
298
|
-
|
|
298
|
+
8183,
|
|
299
299
|
"Attribute '{0}' is ignored when running locally in VS Code.",
|
|
300
300
|
attribute.key
|
|
301
301
|
)), attribute.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
|
|
302
302
|
} else {
|
|
303
303
|
report(toMarker(( localize(
|
|
304
|
-
|
|
304
|
+
8184,
|
|
305
305
|
"Attribute '{0}' is not supported in VS Code agent files. Supported: {1}.",
|
|
306
306
|
attribute.key,
|
|
307
307
|
supportedNames.value
|
|
@@ -312,14 +312,14 @@ let PromptValidator = class PromptValidator {
|
|
|
312
312
|
case PromptsType.instructions:
|
|
313
313
|
if (target === Target.Claude) {
|
|
314
314
|
report(toMarker(( localize(
|
|
315
|
-
|
|
315
|
+
8185,
|
|
316
316
|
"Attribute '{0}' is not supported in rules files by VS Code agents. Supported: {1}.",
|
|
317
317
|
attribute.key,
|
|
318
318
|
supportedNames.value
|
|
319
319
|
)), attribute.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
|
|
320
320
|
} else {
|
|
321
321
|
report(toMarker(( localize(
|
|
322
|
-
|
|
322
|
+
8186,
|
|
323
323
|
"Attribute '{0}' is not supported in instructions files. Supported: {1}.",
|
|
324
324
|
attribute.key,
|
|
325
325
|
supportedNames.value
|
|
@@ -328,7 +328,7 @@ let PromptValidator = class PromptValidator {
|
|
|
328
328
|
break;
|
|
329
329
|
case PromptsType.skill:
|
|
330
330
|
report(toMarker(( localize(
|
|
331
|
-
|
|
331
|
+
8187,
|
|
332
332
|
"Attribute '{0}' is not supported by VS Code agents. Supported: {1}.",
|
|
333
333
|
attribute.key,
|
|
334
334
|
supportedNames.value
|
|
@@ -344,11 +344,11 @@ let PromptValidator = class PromptValidator {
|
|
|
344
344
|
return;
|
|
345
345
|
}
|
|
346
346
|
if (nameAttribute.value.type !== "scalar") {
|
|
347
|
-
report(toMarker(( localize(
|
|
347
|
+
report(toMarker(( localize(8188, "The 'name' attribute must be a string.")), nameAttribute.range, MarkerSeverity.Error));
|
|
348
348
|
return;
|
|
349
349
|
}
|
|
350
350
|
if (nameAttribute.value.value.trim().length === 0) {
|
|
351
|
-
report(toMarker(( localize(
|
|
351
|
+
report(toMarker(( localize(8189, "The 'name' attribute must not be empty.")), nameAttribute.value.range, MarkerSeverity.Error));
|
|
352
352
|
return;
|
|
353
353
|
}
|
|
354
354
|
}
|
|
@@ -358,11 +358,11 @@ let PromptValidator = class PromptValidator {
|
|
|
358
358
|
return;
|
|
359
359
|
}
|
|
360
360
|
if (descriptionAttribute.value.type !== "scalar") {
|
|
361
|
-
report(toMarker(( localize(
|
|
361
|
+
report(toMarker(( localize(8190, "The 'description' attribute must be a string.")), descriptionAttribute.range, MarkerSeverity.Error));
|
|
362
362
|
return;
|
|
363
363
|
}
|
|
364
364
|
if (descriptionAttribute.value.value.trim().length === 0) {
|
|
365
|
-
report(toMarker(( localize(
|
|
365
|
+
report(toMarker(( localize(8191, "The 'description' attribute should not be empty.")), descriptionAttribute.value.range, MarkerSeverity.Error));
|
|
366
366
|
return;
|
|
367
367
|
}
|
|
368
368
|
}
|
|
@@ -372,11 +372,11 @@ let PromptValidator = class PromptValidator {
|
|
|
372
372
|
return;
|
|
373
373
|
}
|
|
374
374
|
if (argumentHintAttribute.value.type !== "scalar") {
|
|
375
|
-
report(toMarker(( localize(
|
|
375
|
+
report(toMarker(( localize(8192, "The 'argument-hint' attribute must be a string.")), argumentHintAttribute.range, MarkerSeverity.Error));
|
|
376
376
|
return;
|
|
377
377
|
}
|
|
378
378
|
if (argumentHintAttribute.value.value.trim().length === 0) {
|
|
379
|
-
report(toMarker(( localize(
|
|
379
|
+
report(toMarker(( localize(8193, "The 'argument-hint' attribute should not be empty.")), argumentHintAttribute.value.range, MarkerSeverity.Warning));
|
|
380
380
|
return;
|
|
381
381
|
}
|
|
382
382
|
}
|
|
@@ -386,30 +386,30 @@ let PromptValidator = class PromptValidator {
|
|
|
386
386
|
return;
|
|
387
387
|
}
|
|
388
388
|
if (attribute.value.type !== "scalar" && attribute.value.type !== "sequence") {
|
|
389
|
-
report(toMarker(( localize(
|
|
389
|
+
report(toMarker(( localize(8194, "The 'model' attribute must be a string or an array of strings.")), attribute.value.range, MarkerSeverity.Error));
|
|
390
390
|
return;
|
|
391
391
|
}
|
|
392
392
|
const modelNames = [];
|
|
393
393
|
if (attribute.value.type === "scalar") {
|
|
394
394
|
const modelName = attribute.value.value.trim();
|
|
395
395
|
if (modelName.length === 0) {
|
|
396
|
-
report(toMarker(( localize(
|
|
396
|
+
report(toMarker(( localize(8195, "The 'model' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
|
|
397
397
|
return;
|
|
398
398
|
}
|
|
399
399
|
modelNames.push([modelName, attribute.value.range]);
|
|
400
400
|
} else if (attribute.value.type === "sequence") {
|
|
401
401
|
if (attribute.value.items.length === 0) {
|
|
402
|
-
report(toMarker(( localize(
|
|
402
|
+
report(toMarker(( localize(8196, "The 'model' array must not be empty.")), attribute.value.range, MarkerSeverity.Error));
|
|
403
403
|
return;
|
|
404
404
|
}
|
|
405
405
|
for (const item of attribute.value.items) {
|
|
406
406
|
if (item.type !== "scalar") {
|
|
407
|
-
report(toMarker(( localize(
|
|
407
|
+
report(toMarker(( localize(8197, "The 'model' array must contain only strings.")), item.range, MarkerSeverity.Error));
|
|
408
408
|
return;
|
|
409
409
|
}
|
|
410
410
|
const modelName = item.value.trim();
|
|
411
411
|
if (modelName.length === 0) {
|
|
412
|
-
report(toMarker(( localize(
|
|
412
|
+
report(toMarker(( localize(8198, "Model names in the array must be non-empty strings.")), item.range, MarkerSeverity.Error));
|
|
413
413
|
return;
|
|
414
414
|
}
|
|
415
415
|
modelNames.push([modelName, item.range]);
|
|
@@ -422,9 +422,9 @@ let PromptValidator = class PromptValidator {
|
|
|
422
422
|
for (const [modelName, range] of modelNames) {
|
|
423
423
|
const modelMetadata = this.findModelByName(modelName);
|
|
424
424
|
if (!modelMetadata) {
|
|
425
|
-
report(toMarker(( localize(
|
|
425
|
+
report(toMarker(( localize(8199, "Unknown model '{0}' will be ignored.", modelName)), range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
|
|
426
426
|
} else if (agentKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
|
|
427
|
-
report(toMarker(( localize(
|
|
427
|
+
report(toMarker(( localize(8200, "Model '{0}' is not suited for agent mode.", modelName)), range, MarkerSeverity.Warning));
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
430
|
}
|
|
@@ -438,13 +438,13 @@ let PromptValidator = class PromptValidator {
|
|
|
438
438
|
continue;
|
|
439
439
|
}
|
|
440
440
|
if (attribute.value.type !== "scalar") {
|
|
441
|
-
report(toMarker(( localize(
|
|
441
|
+
report(toMarker(( localize(8201, "The '{0}' attribute must be a string.", claudeAttributeName)), attribute.value.range, MarkerSeverity.Error));
|
|
442
442
|
continue;
|
|
443
443
|
} else {
|
|
444
444
|
const modelName = attribute.value.value.trim();
|
|
445
445
|
if (enumValues.every(model => model.name !== modelName)) {
|
|
446
446
|
const validValues = ( enumValues.map(model => model.name)).join(", ");
|
|
447
|
-
report(toMarker(( localize(
|
|
447
|
+
report(toMarker(( localize(8202, "Unknown value '{0}', valid: {1}.", modelName, validValues)), attribute.value.range, MarkerSeverity.Warning));
|
|
448
448
|
}
|
|
449
449
|
}
|
|
450
450
|
}
|
|
@@ -463,12 +463,12 @@ let PromptValidator = class PromptValidator {
|
|
|
463
463
|
if (modeAttribute) {
|
|
464
464
|
if (agentAttribute) {
|
|
465
465
|
report(toMarker(( localize(
|
|
466
|
-
|
|
466
|
+
8203,
|
|
467
467
|
"The 'mode' attribute has been deprecated. The 'agent' attribute is used instead."
|
|
468
468
|
)), modeAttribute.range, MarkerSeverity.Warning, [MarkerTag.Deprecated]));
|
|
469
469
|
} else {
|
|
470
470
|
report(toMarker(( localize(
|
|
471
|
-
|
|
471
|
+
8204,
|
|
472
472
|
"The 'mode' attribute has been deprecated. Please rename it to 'agent'."
|
|
473
473
|
)), modeAttribute.range, MarkerSeverity.Warning, [MarkerTag.Deprecated]));
|
|
474
474
|
}
|
|
@@ -478,12 +478,12 @@ let PromptValidator = class PromptValidator {
|
|
|
478
478
|
return undefined;
|
|
479
479
|
}
|
|
480
480
|
if (attribute.value.type !== "scalar") {
|
|
481
|
-
report(toMarker(( localize(
|
|
481
|
+
report(toMarker(( localize(8205, "The '{0}' attribute must be a string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
|
|
482
482
|
return undefined;
|
|
483
483
|
}
|
|
484
484
|
const agentValue = attribute.value.value;
|
|
485
485
|
if (agentValue.trim().length === 0) {
|
|
486
|
-
report(toMarker(( localize(
|
|
486
|
+
report(toMarker(( localize(8206, "The '{0}' attribute must be a non-empty string.", attribute.key)), attribute.value.range, MarkerSeverity.Error));
|
|
487
487
|
return undefined;
|
|
488
488
|
}
|
|
489
489
|
return await this.validateAgentValue(attribute.value, report);
|
|
@@ -498,7 +498,7 @@ let PromptValidator = class PromptValidator {
|
|
|
498
498
|
availableAgents.push(agent.name.get());
|
|
499
499
|
}
|
|
500
500
|
const errorMessage = ( localize(
|
|
501
|
-
|
|
501
|
+
8207,
|
|
502
502
|
"Unknown agent '{0}'. Available agents: {1}.",
|
|
503
503
|
value.value,
|
|
504
504
|
availableAgents.join(", ")
|
|
@@ -513,7 +513,7 @@ let PromptValidator = class PromptValidator {
|
|
|
513
513
|
}
|
|
514
514
|
if (agentKind !== ChatModeKind.Agent) {
|
|
515
515
|
report(toMarker(( localize(
|
|
516
|
-
|
|
516
|
+
8208,
|
|
517
517
|
"The 'tools' attribute is only supported when using agents. Attribute will be ignored."
|
|
518
518
|
)), attribute.range, MarkerSeverity.Warning));
|
|
519
519
|
}
|
|
@@ -523,7 +523,7 @@ let PromptValidator = class PromptValidator {
|
|
|
523
523
|
}
|
|
524
524
|
if (value.type !== "sequence") {
|
|
525
525
|
report(toMarker(( localize(
|
|
526
|
-
|
|
526
|
+
8209,
|
|
527
527
|
"The 'tools' attribute must be an array or a comma separated string."
|
|
528
528
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
529
529
|
return;
|
|
@@ -539,7 +539,7 @@ let PromptValidator = class PromptValidator {
|
|
|
539
539
|
const deprecatedNames = this.languageModelToolsService.getDeprecatedFullReferenceNames();
|
|
540
540
|
for (const item of valueItem.items) {
|
|
541
541
|
if (item.type !== "scalar") {
|
|
542
|
-
report(toMarker(( localize(
|
|
542
|
+
report(toMarker(( localize(8210, "Each tool name in the 'tools' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
543
543
|
} else if (item.value) {
|
|
544
544
|
if (!( available.has(item.value))) {
|
|
545
545
|
const currentNames = deprecatedNames.get(item.value);
|
|
@@ -547,7 +547,7 @@ let PromptValidator = class PromptValidator {
|
|
|
547
547
|
if (currentNames?.size === 1) {
|
|
548
548
|
const newName = Array.from(currentNames)[0];
|
|
549
549
|
report(toMarker(( localize(
|
|
550
|
-
|
|
550
|
+
8211,
|
|
551
551
|
"Tool or toolset '{0}' has been renamed, use '{1}' instead.",
|
|
552
552
|
item.value,
|
|
553
553
|
newName
|
|
@@ -555,14 +555,14 @@ let PromptValidator = class PromptValidator {
|
|
|
555
555
|
} else {
|
|
556
556
|
const newNames = Array.from(currentNames).sort((a, b) => a.localeCompare(b)).join(", ");
|
|
557
557
|
report(toMarker(( localize(
|
|
558
|
-
|
|
558
|
+
8212,
|
|
559
559
|
"Tool or toolset '{0}' has been renamed, use the following tools instead: {1}",
|
|
560
560
|
item.value,
|
|
561
561
|
newNames
|
|
562
562
|
)), item.range, MarkerSeverity.Info, [MarkerTag.Deprecated]));
|
|
563
563
|
}
|
|
564
564
|
} else {
|
|
565
|
-
report(toMarker(( localize(
|
|
565
|
+
report(toMarker(( localize(8213, "Unknown tool '{0}' will be ignored.", item.value)), item.range, MarkerSeverity.Hint, [MarkerTag.Unnecessary]));
|
|
566
566
|
}
|
|
567
567
|
}
|
|
568
568
|
}
|
|
@@ -575,25 +575,25 @@ let PromptValidator = class PromptValidator {
|
|
|
575
575
|
return;
|
|
576
576
|
}
|
|
577
577
|
if (attribute.value.type !== "scalar") {
|
|
578
|
-
report(toMarker(( localize(
|
|
578
|
+
report(toMarker(( localize(8214, "The 'applyTo' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
579
579
|
return;
|
|
580
580
|
}
|
|
581
581
|
const pattern = attribute.value.value;
|
|
582
582
|
try {
|
|
583
583
|
const patterns = splitGlobAware(pattern, ",");
|
|
584
584
|
if (patterns.length === 0) {
|
|
585
|
-
report(toMarker(( localize(
|
|
585
|
+
report(toMarker(( localize(8215, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
586
586
|
return;
|
|
587
587
|
}
|
|
588
588
|
for (const pattern of patterns) {
|
|
589
589
|
const globPattern = parse(pattern);
|
|
590
590
|
if (isEmptyPattern(globPattern)) {
|
|
591
|
-
report(toMarker(( localize(
|
|
591
|
+
report(toMarker(( localize(8215, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
592
592
|
return;
|
|
593
593
|
}
|
|
594
594
|
}
|
|
595
595
|
} catch (_error) {
|
|
596
|
-
report(toMarker(( localize(
|
|
596
|
+
report(toMarker(( localize(8215, "The 'applyTo' attribute must be a valid glob pattern.")), attribute.value.range, MarkerSeverity.Error));
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
599
|
validatePaths(attributes, report) {
|
|
@@ -602,26 +602,26 @@ let PromptValidator = class PromptValidator {
|
|
|
602
602
|
return;
|
|
603
603
|
}
|
|
604
604
|
if (attribute.value.type !== "sequence") {
|
|
605
|
-
report(toMarker(( localize(
|
|
605
|
+
report(toMarker(( localize(8216, "The 'paths' attribute must be an array of glob patterns.")), attribute.value.range, MarkerSeverity.Error));
|
|
606
606
|
return;
|
|
607
607
|
}
|
|
608
608
|
for (const item of attribute.value.items) {
|
|
609
609
|
if (item.type !== "scalar") {
|
|
610
|
-
report(toMarker(( localize(
|
|
610
|
+
report(toMarker(( localize(8217, "Each entry in the 'paths' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
611
611
|
continue;
|
|
612
612
|
}
|
|
613
613
|
const pattern = item.value.trim();
|
|
614
614
|
if (pattern.length === 0) {
|
|
615
|
-
report(toMarker(( localize(
|
|
615
|
+
report(toMarker(( localize(8218, "Path entries must be non-empty glob patterns.")), item.range, MarkerSeverity.Error));
|
|
616
616
|
continue;
|
|
617
617
|
}
|
|
618
618
|
try {
|
|
619
619
|
const globPattern = parse(pattern);
|
|
620
620
|
if (isEmptyPattern(globPattern)) {
|
|
621
|
-
report(toMarker(( localize(
|
|
621
|
+
report(toMarker(( localize(8219, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
|
|
622
622
|
}
|
|
623
623
|
} catch (_error) {
|
|
624
|
-
report(toMarker(( localize(
|
|
624
|
+
report(toMarker(( localize(8219, "'{0}' is not a valid glob pattern.", pattern)), item.range, MarkerSeverity.Error));
|
|
625
625
|
}
|
|
626
626
|
}
|
|
627
627
|
}
|
|
@@ -631,7 +631,7 @@ let PromptValidator = class PromptValidator {
|
|
|
631
631
|
return;
|
|
632
632
|
}
|
|
633
633
|
if (attribute.value.type !== "sequence" && attribute.value.type !== "scalar") {
|
|
634
|
-
report(toMarker(( localize(
|
|
634
|
+
report(toMarker(( localize(8220, "The 'excludeAgent' attribute must be an string or array.")), attribute.value.range, MarkerSeverity.Error));
|
|
635
635
|
return;
|
|
636
636
|
}
|
|
637
637
|
}
|
|
@@ -642,7 +642,7 @@ let PromptValidator = class PromptValidator {
|
|
|
642
642
|
}
|
|
643
643
|
if (attribute.value.type !== "map") {
|
|
644
644
|
report(toMarker(( localize(
|
|
645
|
-
|
|
645
|
+
8221,
|
|
646
646
|
"The 'hooks' attribute must be a map of hook event types to command arrays."
|
|
647
647
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
648
648
|
return;
|
|
@@ -651,7 +651,7 @@ let PromptValidator = class PromptValidator {
|
|
|
651
651
|
for (const prop of attribute.value.properties) {
|
|
652
652
|
if (!( validHookNames.has(prop.key.value))) {
|
|
653
653
|
report(toMarker(( localize(
|
|
654
|
-
|
|
654
|
+
8222,
|
|
655
655
|
"Unknown hook event type '{0}'. Supported: {1}.",
|
|
656
656
|
prop.key.value,
|
|
657
657
|
Array.from(validHookNames).join(", ")
|
|
@@ -659,7 +659,7 @@ let PromptValidator = class PromptValidator {
|
|
|
659
659
|
}
|
|
660
660
|
if (prop.value.type !== "sequence") {
|
|
661
661
|
report(toMarker(( localize(
|
|
662
|
-
|
|
662
|
+
8223,
|
|
663
663
|
"Hook event '{0}' must have an array of command objects as its value.",
|
|
664
664
|
prop.key.value
|
|
665
665
|
)), prop.value.range, MarkerSeverity.Error));
|
|
@@ -672,19 +672,19 @@ let PromptValidator = class PromptValidator {
|
|
|
672
672
|
}
|
|
673
673
|
validateHookCommand(item, target, report) {
|
|
674
674
|
if (item.type !== "map") {
|
|
675
|
-
report(toMarker(( localize(
|
|
675
|
+
report(toMarker(( localize(8224, "Each hook command must be an object.")), item.range, MarkerSeverity.Error));
|
|
676
676
|
return;
|
|
677
677
|
}
|
|
678
678
|
const hooksProperty = item.properties.find(p => p.key.value === "hooks");
|
|
679
679
|
if (hooksProperty) {
|
|
680
680
|
for (const prop of item.properties) {
|
|
681
681
|
if (prop.key.value !== "hooks" && prop.key.value !== "matcher") {
|
|
682
|
-
report(toMarker(( localize(
|
|
682
|
+
report(toMarker(( localize(8225, "Unknown property '{0}' in hook matcher.", prop.key.value)), prop.key.range, MarkerSeverity.Warning));
|
|
683
683
|
}
|
|
684
684
|
}
|
|
685
685
|
if (hooksProperty.value.type !== "sequence") {
|
|
686
686
|
report(toMarker(( localize(
|
|
687
|
-
|
|
687
|
+
8226,
|
|
688
688
|
"The 'hooks' property in a matcher must be an array of command objects."
|
|
689
689
|
)), hooksProperty.value.range, MarkerSeverity.Error));
|
|
690
690
|
return;
|
|
@@ -713,37 +713,37 @@ let PromptValidator = class PromptValidator {
|
|
|
713
713
|
for (const prop of item.properties) {
|
|
714
714
|
const key = prop.key.value;
|
|
715
715
|
if (!( validProperties.has(key))) {
|
|
716
|
-
report(toMarker(( localize(
|
|
716
|
+
report(toMarker(( localize(8227, "Unknown property '{0}' in hook command.", key)), prop.key.range, MarkerSeverity.Warning));
|
|
717
717
|
}
|
|
718
718
|
if (key === "type") {
|
|
719
719
|
hasType = true;
|
|
720
720
|
if (prop.value.type !== "scalar" || prop.value.value !== "command") {
|
|
721
|
-
report(toMarker(( localize(
|
|
721
|
+
report(toMarker(( localize(8228, "The 'type' property in a hook command must be 'command'.")), prop.value.range, MarkerSeverity.Error));
|
|
722
722
|
}
|
|
723
723
|
} else if (( validCommandFields.has(key))) {
|
|
724
724
|
hasCommandField = true;
|
|
725
725
|
if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
|
|
726
726
|
report(toMarker(( localize(
|
|
727
|
-
|
|
727
|
+
8229,
|
|
728
728
|
"The '{0}' property in a hook command must be a non-empty string.",
|
|
729
729
|
key
|
|
730
730
|
)), prop.value.range, MarkerSeverity.Error));
|
|
731
731
|
}
|
|
732
732
|
} else if (key === "cwd") {
|
|
733
733
|
if (prop.value.type !== "scalar") {
|
|
734
|
-
report(toMarker(( localize(
|
|
734
|
+
report(toMarker(( localize(8230, "The 'cwd' property in a hook command must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
735
735
|
}
|
|
736
736
|
} else if (key === "env") {
|
|
737
737
|
if (prop.value.type !== "map") {
|
|
738
738
|
report(toMarker(( localize(
|
|
739
|
-
|
|
739
|
+
8231,
|
|
740
740
|
"The 'env' property in a hook command must be a map of string values."
|
|
741
741
|
)), prop.value.range, MarkerSeverity.Error));
|
|
742
742
|
} else {
|
|
743
743
|
for (const envProp of prop.value.properties) {
|
|
744
744
|
if (envProp.value.type !== "scalar") {
|
|
745
745
|
report(toMarker(( localize(
|
|
746
|
-
|
|
746
|
+
8232,
|
|
747
747
|
"Environment variable '{0}' must have a string value.",
|
|
748
748
|
envProp.key.value
|
|
749
749
|
)), envProp.value.range, MarkerSeverity.Error));
|
|
@@ -752,19 +752,19 @@ let PromptValidator = class PromptValidator {
|
|
|
752
752
|
}
|
|
753
753
|
} else if (key === "timeout" || key === "timeoutSec") {
|
|
754
754
|
if (prop.value.type !== "scalar" || isNaN(Number(prop.value.value))) {
|
|
755
|
-
report(toMarker(( localize(
|
|
755
|
+
report(toMarker(( localize(8233, "The '{0}' property in a hook command must be a number.", key)), prop.value.range, MarkerSeverity.Error));
|
|
756
756
|
}
|
|
757
757
|
}
|
|
758
758
|
}
|
|
759
759
|
if (!hasType) {
|
|
760
|
-
report(toMarker(( localize(
|
|
760
|
+
report(toMarker(( localize(8234, "Hook command is missing required property 'type'.")), item.range, MarkerSeverity.Error));
|
|
761
761
|
}
|
|
762
762
|
if (!hasCommandField) {
|
|
763
763
|
if (isCopilotCli) {
|
|
764
|
-
report(toMarker(( localize(
|
|
764
|
+
report(toMarker(( localize(8235, "Hook command must specify at least one of 'bash' or 'powershell'.")), item.range, MarkerSeverity.Error));
|
|
765
765
|
} else {
|
|
766
766
|
report(toMarker(( localize(
|
|
767
|
-
|
|
767
|
+
8236,
|
|
768
768
|
"Hook command must specify at least one of 'command', 'windows', 'linux', or 'osx'."
|
|
769
769
|
)), item.range, MarkerSeverity.Error));
|
|
770
770
|
}
|
|
@@ -776,14 +776,14 @@ let PromptValidator = class PromptValidator {
|
|
|
776
776
|
return;
|
|
777
777
|
}
|
|
778
778
|
if (attribute.value.type !== "sequence") {
|
|
779
|
-
report(toMarker(( localize(
|
|
779
|
+
report(toMarker(( localize(8237, "The 'handoffs' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
780
780
|
return;
|
|
781
781
|
}
|
|
782
782
|
const seenLabels = ( new Map());
|
|
783
783
|
for (const item of attribute.value.items) {
|
|
784
784
|
if (item.type !== "map") {
|
|
785
785
|
report(toMarker(( localize(
|
|
786
|
-
|
|
786
|
+
8238,
|
|
787
787
|
"Each handoff in the 'handoffs' attribute must be an object with 'label', 'agent', 'prompt' and optional 'send'."
|
|
788
788
|
)), item.range, MarkerSeverity.Error));
|
|
789
789
|
continue;
|
|
@@ -793,44 +793,44 @@ let PromptValidator = class PromptValidator {
|
|
|
793
793
|
switch (prop.key.value) {
|
|
794
794
|
case "label":
|
|
795
795
|
if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
|
|
796
|
-
report(toMarker(( localize(
|
|
796
|
+
report(toMarker(( localize(8239, "The 'label' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
|
|
797
797
|
} else if (!/[a-zA-Z0-9]/.test(prop.value.value)) {
|
|
798
798
|
report(toMarker(( localize(
|
|
799
|
-
|
|
799
|
+
8240,
|
|
800
800
|
"The 'label' property in a handoff must contain at least one alphanumeric character."
|
|
801
801
|
)), prop.value.range, MarkerSeverity.Error));
|
|
802
802
|
}
|
|
803
803
|
break;
|
|
804
804
|
case "agent":
|
|
805
805
|
if (prop.value.type !== "scalar" || prop.value.value.trim().length === 0) {
|
|
806
|
-
report(toMarker(( localize(
|
|
806
|
+
report(toMarker(( localize(8241, "The 'agent' property in a handoff must be a non-empty string.")), prop.value.range, MarkerSeverity.Error));
|
|
807
807
|
} else {
|
|
808
808
|
this.validateAgentValue(prop.value, report);
|
|
809
809
|
}
|
|
810
810
|
break;
|
|
811
811
|
case "prompt":
|
|
812
812
|
if (prop.value.type !== "scalar") {
|
|
813
|
-
report(toMarker(( localize(
|
|
813
|
+
report(toMarker(( localize(8242, "The 'prompt' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
814
814
|
}
|
|
815
815
|
break;
|
|
816
816
|
case "send":
|
|
817
817
|
if (!isTrueOrFalse(prop.value)) {
|
|
818
|
-
report(toMarker(( localize(
|
|
818
|
+
report(toMarker(( localize(8243, "The 'send' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
|
|
819
819
|
}
|
|
820
820
|
break;
|
|
821
821
|
case "showContinueOn":
|
|
822
822
|
if (!isTrueOrFalse(prop.value)) {
|
|
823
|
-
report(toMarker(( localize(
|
|
823
|
+
report(toMarker(( localize(8244, "The 'showContinueOn' property in a handoff must be a boolean.")), prop.value.range, MarkerSeverity.Error));
|
|
824
824
|
}
|
|
825
825
|
break;
|
|
826
826
|
case "model":
|
|
827
827
|
if (prop.value.type !== "scalar") {
|
|
828
|
-
report(toMarker(( localize(
|
|
828
|
+
report(toMarker(( localize(8245, "The 'model' property in a handoff must be a string.")), prop.value.range, MarkerSeverity.Error));
|
|
829
829
|
}
|
|
830
830
|
break;
|
|
831
831
|
default:
|
|
832
832
|
report(toMarker(( localize(
|
|
833
|
-
|
|
833
|
+
8246,
|
|
834
834
|
"Unknown property '{0}' in handoff object. Supported properties are 'label', 'agent', 'prompt' and optional 'send', 'showContinueOn', 'model'.",
|
|
835
835
|
prop.key.value
|
|
836
836
|
)), prop.value.range, MarkerSeverity.Warning));
|
|
@@ -839,7 +839,7 @@ let PromptValidator = class PromptValidator {
|
|
|
839
839
|
}
|
|
840
840
|
if (required.size > 0) {
|
|
841
841
|
report(toMarker(( localize(
|
|
842
|
-
|
|
842
|
+
8247,
|
|
843
843
|
"Missing required properties {0} in handoff object.",
|
|
844
844
|
( Array.from(required).map(s => `'${s}'`)).join(", ")
|
|
845
845
|
)), item.range, MarkerSeverity.Error));
|
|
@@ -849,7 +849,7 @@ let PromptValidator = class PromptValidator {
|
|
|
849
849
|
const normalizedLabel = labelProp.value.value.toLowerCase();
|
|
850
850
|
if (normalizedLabel && ( seenLabels.has(normalizedLabel))) {
|
|
851
851
|
report(toMarker(( localize(
|
|
852
|
-
|
|
852
|
+
8248,
|
|
853
853
|
"Duplicate handoff label '{0}'. Each handoff must have a unique label.",
|
|
854
854
|
labelProp.value.value
|
|
855
855
|
)), labelProp.value.range, MarkerSeverity.Error));
|
|
@@ -865,7 +865,7 @@ let PromptValidator = class PromptValidator {
|
|
|
865
865
|
return;
|
|
866
866
|
}
|
|
867
867
|
report(toMarker(( localize(
|
|
868
|
-
|
|
868
|
+
8249,
|
|
869
869
|
"The 'infer' attribute is deprecated in favour of 'user-invocable' and 'disable-model-invocation'."
|
|
870
870
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
871
871
|
}
|
|
@@ -875,18 +875,18 @@ let PromptValidator = class PromptValidator {
|
|
|
875
875
|
return;
|
|
876
876
|
}
|
|
877
877
|
if (attribute.value.type !== "scalar") {
|
|
878
|
-
report(toMarker(( localize(
|
|
878
|
+
report(toMarker(( localize(8250, "The 'target' attribute must be a string.")), attribute.value.range, MarkerSeverity.Error));
|
|
879
879
|
return;
|
|
880
880
|
}
|
|
881
881
|
const targetValue = attribute.value.value.trim();
|
|
882
882
|
if (targetValue.length === 0) {
|
|
883
|
-
report(toMarker(( localize(
|
|
883
|
+
report(toMarker(( localize(8251, "The 'target' attribute must be a non-empty string.")), attribute.value.range, MarkerSeverity.Error));
|
|
884
884
|
return;
|
|
885
885
|
}
|
|
886
886
|
const validTargets = ["github-copilot", "vscode"];
|
|
887
887
|
if (!validTargets.includes(targetValue)) {
|
|
888
888
|
report(toMarker(( localize(
|
|
889
|
-
|
|
889
|
+
8252,
|
|
890
890
|
"The 'target' attribute must be one of: {0}.",
|
|
891
891
|
validTargets.join(", ")
|
|
892
892
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
@@ -898,7 +898,7 @@ let PromptValidator = class PromptValidator {
|
|
|
898
898
|
return;
|
|
899
899
|
}
|
|
900
900
|
if (!isTrueOrFalse(attribute.value)) {
|
|
901
|
-
report(toMarker(( localize(
|
|
901
|
+
report(toMarker(( localize(8253, "The 'user-invocable' attribute must be 'true' or 'false'.")), attribute.value.range, MarkerSeverity.Error));
|
|
902
902
|
return;
|
|
903
903
|
}
|
|
904
904
|
}
|
|
@@ -909,7 +909,7 @@ let PromptValidator = class PromptValidator {
|
|
|
909
909
|
}
|
|
910
910
|
if (!isTrueOrFalse(attribute.value)) {
|
|
911
911
|
report(toMarker(( localize(
|
|
912
|
-
|
|
912
|
+
8254,
|
|
913
913
|
"The 'disable-model-invocation' attribute must be 'true' or 'false'."
|
|
914
914
|
)), attribute.value.range, MarkerSeverity.Error));
|
|
915
915
|
return;
|
|
@@ -921,7 +921,7 @@ let PromptValidator = class PromptValidator {
|
|
|
921
921
|
return;
|
|
922
922
|
}
|
|
923
923
|
if (attribute.value.type !== "sequence") {
|
|
924
|
-
report(toMarker(( localize(
|
|
924
|
+
report(toMarker(( localize(8255, "The 'agents' attribute must be an array.")), attribute.value.range, MarkerSeverity.Error));
|
|
925
925
|
return;
|
|
926
926
|
}
|
|
927
927
|
const agents = (await this.promptsService.getCustomAgents(CancellationToken.None)).filter(a => a.enabled);
|
|
@@ -930,12 +930,12 @@ let PromptValidator = class PromptValidator {
|
|
|
930
930
|
const agentNames = [];
|
|
931
931
|
for (const item of attribute.value.items) {
|
|
932
932
|
if (item.type !== "scalar") {
|
|
933
|
-
report(toMarker(( localize(
|
|
933
|
+
report(toMarker(( localize(8256, "Each agent name in the 'agents' attribute must be a string.")), item.range, MarkerSeverity.Error));
|
|
934
934
|
} else if (item.value) {
|
|
935
935
|
agentNames.push(item.value);
|
|
936
936
|
if (item.value !== "*" && !( availableAgentNames.has(item.value))) {
|
|
937
937
|
report(toMarker(( localize(
|
|
938
|
-
|
|
938
|
+
8257,
|
|
939
939
|
"Unknown agent '{0}' will be ignored. Available agents: {1}.",
|
|
940
940
|
item.value,
|
|
941
941
|
Array.from(availableAgentNames).join(", ")
|
|
@@ -947,7 +947,7 @@ let PromptValidator = class PromptValidator {
|
|
|
947
947
|
const tools = header.tools;
|
|
948
948
|
if (tools && !tools.includes(SpecedToolAliases.agent)) {
|
|
949
949
|
report(toMarker(( localize(
|
|
950
|
-
|
|
950
|
+
8258,
|
|
951
951
|
"When 'agents' and 'tools' are specified, the 'agent' tool must be included in the 'tools' attribute."
|
|
952
952
|
)), attribute.value.range, MarkerSeverity.Warning));
|
|
953
953
|
}
|
|
@@ -959,20 +959,20 @@ let PromptValidator = class PromptValidator {
|
|
|
959
959
|
return;
|
|
960
960
|
}
|
|
961
961
|
if (attribute.value.type !== "map") {
|
|
962
|
-
report(toMarker(( localize(
|
|
962
|
+
report(toMarker(( localize(8259, "The 'github' attribute must be an object.")), attribute.value.range, MarkerSeverity.Error));
|
|
963
963
|
return;
|
|
964
964
|
}
|
|
965
965
|
for (const prop of attribute.value.properties) {
|
|
966
966
|
if (prop.key.value !== "permissions") {
|
|
967
967
|
report(toMarker(( localize(
|
|
968
|
-
|
|
968
|
+
8260,
|
|
969
969
|
"Unknown property '{0}' in 'github' object. Supported: 'permissions'.",
|
|
970
970
|
prop.key.value
|
|
971
971
|
)), prop.key.range, MarkerSeverity.Warning));
|
|
972
972
|
continue;
|
|
973
973
|
}
|
|
974
974
|
if (prop.value.type !== "map") {
|
|
975
|
-
report(toMarker(( localize(
|
|
975
|
+
report(toMarker(( localize(8261, "The 'permissions' property must be an object.")), prop.value.range, MarkerSeverity.Error));
|
|
976
976
|
continue;
|
|
977
977
|
}
|
|
978
978
|
for (const permProp of prop.value.properties) {
|
|
@@ -981,7 +981,7 @@ let PromptValidator = class PromptValidator {
|
|
|
981
981
|
if (!scopeInfo) {
|
|
982
982
|
const validScopes = ( Object.keys(githubPermissionScopes)).sort().join(", ");
|
|
983
983
|
report(toMarker(( localize(
|
|
984
|
-
|
|
984
|
+
8262,
|
|
985
985
|
"Unknown permission scope '{0}'. Valid scopes: {1}.",
|
|
986
986
|
scope,
|
|
987
987
|
validScopes
|
|
@@ -989,13 +989,13 @@ let PromptValidator = class PromptValidator {
|
|
|
989
989
|
continue;
|
|
990
990
|
}
|
|
991
991
|
if (permProp.value.type !== "scalar") {
|
|
992
|
-
report(toMarker(( localize(
|
|
992
|
+
report(toMarker(( localize(8263, "The permission value for '{0}' must be a string.", scope)), permProp.value.range, MarkerSeverity.Error));
|
|
993
993
|
continue;
|
|
994
994
|
}
|
|
995
995
|
const value = permProp.value.value;
|
|
996
996
|
if (!scopeInfo.allowedValues.includes(value)) {
|
|
997
997
|
report(toMarker(( localize(
|
|
998
|
-
|
|
998
|
+
8264,
|
|
999
999
|
"Invalid permission value '{0}' for scope '{1}'. Allowed values: {2}.",
|
|
1000
1000
|
value,
|
|
1001
1001
|
scope,
|
|
@@ -1010,39 +1010,39 @@ PromptValidator = ( __decorate([( __param(0, ILanguageModelsService)), ( __param
|
|
|
1010
1010
|
const githubPermissionScopes = {
|
|
1011
1011
|
"actions": {
|
|
1012
1012
|
allowedValues: ["read", "write", "none"],
|
|
1013
|
-
description: ( localize(
|
|
1013
|
+
description: ( localize(8265, "Access to GitHub Actions workflows and runs"))
|
|
1014
1014
|
},
|
|
1015
1015
|
"checks": {
|
|
1016
1016
|
allowedValues: ["read", "none"],
|
|
1017
|
-
description: ( localize(
|
|
1017
|
+
description: ( localize(8266, "Access to check runs and statuses"))
|
|
1018
1018
|
},
|
|
1019
1019
|
"contents": {
|
|
1020
1020
|
allowedValues: ["read", "write", "none"],
|
|
1021
|
-
description: ( localize(
|
|
1021
|
+
description: ( localize(8267, "Access to repository contents (files, commits, branches)"))
|
|
1022
1022
|
},
|
|
1023
1023
|
"discussions": {
|
|
1024
1024
|
allowedValues: ["read", "write", "none"],
|
|
1025
|
-
description: ( localize(
|
|
1025
|
+
description: ( localize(8268, "Access to discussions"))
|
|
1026
1026
|
},
|
|
1027
1027
|
"issues": {
|
|
1028
1028
|
allowedValues: ["read", "write", "none"],
|
|
1029
|
-
description: ( localize(
|
|
1029
|
+
description: ( localize(8269, "Access to issues (read, create, update, comment)"))
|
|
1030
1030
|
},
|
|
1031
1031
|
"metadata": {
|
|
1032
1032
|
allowedValues: ["read"],
|
|
1033
|
-
description: ( localize(
|
|
1033
|
+
description: ( localize(8270, "Repository metadata (always read-only)"))
|
|
1034
1034
|
},
|
|
1035
1035
|
"pull-requests": {
|
|
1036
1036
|
allowedValues: ["read", "write", "none"],
|
|
1037
|
-
description: ( localize(
|
|
1037
|
+
description: ( localize(8271, "Access to pull requests (read, create, update, review)"))
|
|
1038
1038
|
},
|
|
1039
1039
|
"security-events": {
|
|
1040
1040
|
allowedValues: ["read", "none"],
|
|
1041
|
-
description: ( localize(
|
|
1041
|
+
description: ( localize(8272, "Access to security-related events"))
|
|
1042
1042
|
},
|
|
1043
1043
|
"workflows": {
|
|
1044
1044
|
allowedValues: ["write", "none"],
|
|
1045
|
-
description: ( localize(
|
|
1045
|
+
description: ( localize(8273, "Access to modify workflow files"))
|
|
1046
1046
|
}
|
|
1047
1047
|
};
|
|
1048
1048
|
function isTrueOrFalse(value) {
|
|
@@ -1130,103 +1130,103 @@ function isNonRecommendedAttribute(attributeName) {
|
|
|
1130
1130
|
}
|
|
1131
1131
|
const knownClaudeTools = [{
|
|
1132
1132
|
name: "Bash",
|
|
1133
|
-
description: ( localize(
|
|
1133
|
+
description: ( localize(8274, "Execute shell commands")),
|
|
1134
1134
|
toolEquivalent: [SpecedToolAliases.execute]
|
|
1135
1135
|
}, {
|
|
1136
1136
|
name: "Edit",
|
|
1137
|
-
description: ( localize(
|
|
1137
|
+
description: ( localize(8275, "Make targeted file edits")),
|
|
1138
1138
|
toolEquivalent: ["edit/editNotebook", "edit/editFiles"]
|
|
1139
1139
|
}, {
|
|
1140
1140
|
name: "Glob",
|
|
1141
|
-
description: ( localize(
|
|
1141
|
+
description: ( localize(8276, "Find files by pattern")),
|
|
1142
1142
|
toolEquivalent: ["search/fileSearch"]
|
|
1143
1143
|
}, {
|
|
1144
1144
|
name: "Grep",
|
|
1145
|
-
description: ( localize(
|
|
1145
|
+
description: ( localize(8277, "Search file contents with regex")),
|
|
1146
1146
|
toolEquivalent: ["search/textSearch"]
|
|
1147
1147
|
}, {
|
|
1148
1148
|
name: "Read",
|
|
1149
|
-
description: ( localize(
|
|
1149
|
+
description: ( localize(8278, "Read file contents")),
|
|
1150
1150
|
toolEquivalent: ["read/readFile", "read/getNotebookSummary"]
|
|
1151
1151
|
}, {
|
|
1152
1152
|
name: "Write",
|
|
1153
|
-
description: ( localize(
|
|
1153
|
+
description: ( localize(8279, "Create/overwrite files")),
|
|
1154
1154
|
toolEquivalent: ["edit/createDirectory", "edit/createFile", "edit/createJupyterNotebook"]
|
|
1155
1155
|
}, {
|
|
1156
1156
|
name: "WebFetch",
|
|
1157
|
-
description: ( localize(
|
|
1157
|
+
description: ( localize(8280, "Fetch URL content")),
|
|
1158
1158
|
toolEquivalent: [SpecedToolAliases.web]
|
|
1159
1159
|
}, {
|
|
1160
1160
|
name: "WebSearch",
|
|
1161
|
-
description: ( localize(
|
|
1161
|
+
description: ( localize(8281, "Perform web searches")),
|
|
1162
1162
|
toolEquivalent: [SpecedToolAliases.web]
|
|
1163
1163
|
}, {
|
|
1164
1164
|
name: "Task",
|
|
1165
|
-
description: ( localize(
|
|
1165
|
+
description: ( localize(8282, "Run subagents for complex tasks")),
|
|
1166
1166
|
toolEquivalent: [SpecedToolAliases.agent]
|
|
1167
1167
|
}, {
|
|
1168
1168
|
name: "Skill",
|
|
1169
|
-
description: ( localize(
|
|
1169
|
+
description: ( localize(8283, "Execute skills")),
|
|
1170
1170
|
toolEquivalent: []
|
|
1171
1171
|
}, {
|
|
1172
1172
|
name: "LSP",
|
|
1173
|
-
description: ( localize(
|
|
1173
|
+
description: ( localize(8284, "Code intelligence (requires plugin)")),
|
|
1174
1174
|
toolEquivalent: []
|
|
1175
1175
|
}, {
|
|
1176
1176
|
name: "NotebookEdit",
|
|
1177
|
-
description: ( localize(
|
|
1177
|
+
description: ( localize(8285, "Modify Jupyter notebooks")),
|
|
1178
1178
|
toolEquivalent: ["edit/editNotebook"]
|
|
1179
1179
|
}, {
|
|
1180
1180
|
name: "AskUserQuestion",
|
|
1181
|
-
description: ( localize(
|
|
1181
|
+
description: ( localize(8286, "Ask multiple-choice questions")),
|
|
1182
1182
|
toolEquivalent: ["vscode/askQuestions"]
|
|
1183
1183
|
}, {
|
|
1184
1184
|
name: "MCPSearch",
|
|
1185
|
-
description: ( localize(
|
|
1185
|
+
description: ( localize(8287, "Searches for MCP tools when tool search is enabled")),
|
|
1186
1186
|
toolEquivalent: []
|
|
1187
1187
|
}];
|
|
1188
1188
|
const knownClaudeModels = [{
|
|
1189
1189
|
name: "sonnet",
|
|
1190
|
-
description: ( localize(
|
|
1190
|
+
description: ( localize(8288, "Latest Claude Sonnet")),
|
|
1191
1191
|
modelEquivalent: "Claude Sonnet 4.5 (copilot)"
|
|
1192
1192
|
}, {
|
|
1193
1193
|
name: "opus",
|
|
1194
|
-
description: ( localize(
|
|
1194
|
+
description: ( localize(8289, "Latest Claude Opus")),
|
|
1195
1195
|
modelEquivalent: "Claude Opus 4.6 (copilot)"
|
|
1196
1196
|
}, {
|
|
1197
1197
|
name: "haiku",
|
|
1198
|
-
description: ( localize(
|
|
1198
|
+
description: ( localize(8290, "Latest Claude Haiku, fast for simple tasks")),
|
|
1199
1199
|
modelEquivalent: "Claude Haiku 4.5 (copilot)"
|
|
1200
1200
|
}, {
|
|
1201
1201
|
name: "inherit",
|
|
1202
|
-
description: ( localize(
|
|
1202
|
+
description: ( localize(8291, "Inherit model from parent agent or prompt")),
|
|
1203
1203
|
modelEquivalent: undefined
|
|
1204
1204
|
}];
|
|
1205
1205
|
const claudeAgentAttributes = {
|
|
1206
1206
|
"name": {
|
|
1207
1207
|
type: "scalar",
|
|
1208
|
-
description: ( localize(
|
|
1208
|
+
description: ( localize(8292, "Unique identifier using lowercase letters and hyphens (required)"))
|
|
1209
1209
|
},
|
|
1210
1210
|
"description": {
|
|
1211
1211
|
type: "scalar",
|
|
1212
|
-
description: ( localize(
|
|
1212
|
+
description: ( localize(8293, "When to delegate to this subagent (required)"))
|
|
1213
1213
|
},
|
|
1214
1214
|
"tools": {
|
|
1215
1215
|
type: "sequence",
|
|
1216
|
-
description: ( localize(
|
|
1216
|
+
description: ( localize(8294, "Array of tools the subagent can use. Inherits all tools if omitted")),
|
|
1217
1217
|
defaults: ["Read, Edit, Bash"],
|
|
1218
1218
|
items: knownClaudeTools
|
|
1219
1219
|
},
|
|
1220
1220
|
"disallowedTools": {
|
|
1221
1221
|
type: "sequence",
|
|
1222
|
-
description: ( localize(
|
|
1222
|
+
description: ( localize(8295, "Tools to deny, removed from inherited or specified list")),
|
|
1223
1223
|
defaults: ["Write, Edit, Bash"],
|
|
1224
1224
|
items: knownClaudeTools
|
|
1225
1225
|
},
|
|
1226
1226
|
"model": {
|
|
1227
1227
|
type: "scalar",
|
|
1228
1228
|
description: ( localize(
|
|
1229
|
-
|
|
1229
|
+
8296,
|
|
1230
1230
|
"Model to use: sonnet, opus, haiku, or inherit. Defaults to inherit."
|
|
1231
1231
|
)),
|
|
1232
1232
|
defaults: ["sonnet", "opus", "haiku", "inherit"],
|
|
@@ -1235,77 +1235,77 @@ const claudeAgentAttributes = {
|
|
|
1235
1235
|
"permissionMode": {
|
|
1236
1236
|
type: "scalar",
|
|
1237
1237
|
description: ( localize(
|
|
1238
|
-
|
|
1238
|
+
8297,
|
|
1239
1239
|
"Permission mode: default, acceptEdits, dontAsk, bypassPermissions, or plan."
|
|
1240
1240
|
)),
|
|
1241
1241
|
defaults: ["default", "acceptEdits", "dontAsk", "bypassPermissions", "plan"],
|
|
1242
1242
|
enums: [{
|
|
1243
1243
|
name: "default",
|
|
1244
1244
|
description: ( localize(
|
|
1245
|
-
|
|
1245
|
+
8298,
|
|
1246
1246
|
"Standard behavior: prompts for permission on first use of each tool."
|
|
1247
1247
|
))
|
|
1248
1248
|
}, {
|
|
1249
1249
|
name: "acceptEdits",
|
|
1250
|
-
description: ( localize(
|
|
1250
|
+
description: ( localize(8299, "Automatically accepts file edit permissions for the session."))
|
|
1251
1251
|
}, {
|
|
1252
1252
|
name: "plan",
|
|
1253
1253
|
description: ( localize(
|
|
1254
|
-
|
|
1254
|
+
8300,
|
|
1255
1255
|
"Plan Mode: Claude can analyze but not modify files or execute commands."
|
|
1256
1256
|
))
|
|
1257
1257
|
}, {
|
|
1258
1258
|
name: "delegate",
|
|
1259
1259
|
description: ( localize(
|
|
1260
|
-
|
|
1260
|
+
8301,
|
|
1261
1261
|
"Coordination-only mode for agent team leads. Only available when an agent team is active."
|
|
1262
1262
|
))
|
|
1263
1263
|
}, {
|
|
1264
1264
|
name: "dontAsk",
|
|
1265
1265
|
description: ( localize(
|
|
1266
|
-
|
|
1266
|
+
8302,
|
|
1267
1267
|
"Auto-denies tools unless pre-approved via /permissions or permissions.allow rules."
|
|
1268
1268
|
))
|
|
1269
1269
|
}, {
|
|
1270
1270
|
name: "bypassPermissions",
|
|
1271
1271
|
description: ( localize(
|
|
1272
|
-
|
|
1272
|
+
8303,
|
|
1273
1273
|
"Skips all permission prompts (requires safe environment like containers)."
|
|
1274
1274
|
))
|
|
1275
1275
|
}]
|
|
1276
1276
|
},
|
|
1277
1277
|
"skills": {
|
|
1278
1278
|
type: "sequence",
|
|
1279
|
-
description: ( localize(
|
|
1279
|
+
description: ( localize(8304, "Skills to load into the subagent's context at startup."))
|
|
1280
1280
|
},
|
|
1281
1281
|
"mcpServers": {
|
|
1282
1282
|
type: "sequence",
|
|
1283
|
-
description: ( localize(
|
|
1283
|
+
description: ( localize(8305, "MCP servers available to this subagent."))
|
|
1284
1284
|
},
|
|
1285
1285
|
"hooks": {
|
|
1286
1286
|
type: "object",
|
|
1287
|
-
description: ( localize(
|
|
1287
|
+
description: ( localize(8306, "Lifecycle hooks scoped to this subagent."))
|
|
1288
1288
|
},
|
|
1289
1289
|
"memory": {
|
|
1290
1290
|
type: "scalar",
|
|
1291
1291
|
description: ( localize(
|
|
1292
|
-
|
|
1292
|
+
8307,
|
|
1293
1293
|
"Persistent memory scope: user, project, or local. Enables cross-session learning."
|
|
1294
1294
|
)),
|
|
1295
1295
|
defaults: ["user", "project", "local"],
|
|
1296
1296
|
enums: [{
|
|
1297
1297
|
name: "user",
|
|
1298
|
-
description: ( localize(
|
|
1298
|
+
description: ( localize(8308, "Remember learnings across all projects."))
|
|
1299
1299
|
}, {
|
|
1300
1300
|
name: "project",
|
|
1301
1301
|
description: ( localize(
|
|
1302
|
-
|
|
1302
|
+
8309,
|
|
1303
1303
|
"The subagent's knowledge is project-specific and shareable via version control."
|
|
1304
1304
|
))
|
|
1305
1305
|
}, {
|
|
1306
1306
|
name: "local",
|
|
1307
1307
|
description: ( localize(
|
|
1308
|
-
|
|
1308
|
+
8310,
|
|
1309
1309
|
"The subagent's knowledge is project-specific but should not be checked into version control."
|
|
1310
1310
|
))
|
|
1311
1311
|
}]
|
|
@@ -1315,14 +1315,14 @@ const claudeRulesAttributes = {
|
|
|
1315
1315
|
"description": {
|
|
1316
1316
|
type: "scalar",
|
|
1317
1317
|
description: ( localize(
|
|
1318
|
-
|
|
1318
|
+
8311,
|
|
1319
1319
|
"A description of what this rule covers, used to provide context about when it applies."
|
|
1320
1320
|
))
|
|
1321
1321
|
},
|
|
1322
1322
|
"paths": {
|
|
1323
1323
|
type: "sequence",
|
|
1324
1324
|
description: ( localize(
|
|
1325
|
-
|
|
1325
|
+
8312,
|
|
1326
1326
|
"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
1327
|
))
|
|
1328
1328
|
}
|