@codingame/monaco-vscode-chat-service-override 31.0.1 → 32.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +1 -1
- package/index.js +22 -5
- package/package.json +5 -5
- package/vscode/src/vs/base/common/defaultAccount.d.ts +69 -0
- package/vscode/src/vs/base/common/defaultAccount.js +12 -0
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +91 -22
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +301 -68
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +24 -5
- package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +89 -16
- package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.d.ts +17 -5
- package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.js +73 -10
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +32 -6
- package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +32 -20
- package/vscode/src/vs/platform/agentHost/common/agentHostPermissionService.d.ts +37 -0
- package/vscode/src/vs/platform/agentHost/common/agentHostPermissionService.js +15 -0
- package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +242 -201
- package/vscode/src/vs/platform/agentHost/common/agentService.js +3 -1
- package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.d.ts +35 -0
- package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.js +106 -0
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +38 -30
- package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +2 -1
- package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +114 -4
- package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +10 -10
- package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.js +52 -19
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +42 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +7 -0
- package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +42 -41
- package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.d.ts +6 -6
- package/vscode/src/vs/platform/agentHost/common/transportConstants.d.ts +15 -0
- package/vscode/src/vs/platform/agentHost/common/transportConstants.js +6 -0
- package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.d.ts +4 -3
- package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.js +4 -3
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +4 -2
- package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +15 -7
- package/vscode/src/vs/workbench/contrib/browserView/common/browserChatToolReferenceNames.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/browserView/common/browserChatToolReferenceNames.js +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +64 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +31 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +18 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +30 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +8 -7
- 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 +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +27 -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 +21 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +22 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/reviewEdits.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/reviewEdits.js +171 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +12 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +0 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +16 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +99 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectoryResolver.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectoryResolver.js +11 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +9 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +63 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +10 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +3 -3
- 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 +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +25 -48
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +8 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +99 -39
- 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 +17 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +78 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +35 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +347 -326
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.d.ts +6 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.js +1 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +113 -109
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +37 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +436 -134
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +52 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +7 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +13 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +93 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +9 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +73 -104
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +272 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +30 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +430 -185
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +44 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +480 -279
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.view.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.view.contribution.js +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheDiff.d.ts +138 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheDiff.js +221 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +84 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +1216 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +32 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +26 -19
- 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 +28 -25
- 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 +25 -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.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +68 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +650 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +46 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +533 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +390 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.d.ts +101 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +509 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +18 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +130 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +276 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -7
- 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 +1 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +6 -87
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +116 -182
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +12 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +31 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +61 -41
- 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 +27 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +16 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +106 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +25 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +629 -425
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +105 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +175 -148
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +20 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +9 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
- 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.d.ts +58 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/githubRepoFetcher.js +339 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/media/planReviewFeedback.css +160 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +123 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +572 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.js +167 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.d.ts +49 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +315 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +45 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +44 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileContributions.js +4 -1
- 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.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +111 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +3 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +13 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +4 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.js +56 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +3 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +14 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +17 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +23 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +39 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +136 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.d.ts +72 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.js +56 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +14 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +41 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +30 -12
- 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 +2 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +25 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +108 -45
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +7 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +20 -1
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +65 -26
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +38 -11
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +17 -1
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +165 -16
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +62 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +2 -1
- 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.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +15 -21
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +18 -24
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +203 -180
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.js +35 -0
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +27 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +14 -49
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +0 -16
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +35 -177
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -8
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +2 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +11 -11
- 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 +13 -13
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +29 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +129 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +3 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +14 -6
- 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 +1 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +12 -38
- 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/runInTerminalConfirmationTool.js +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.d.ts +12 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +77 -70
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.d.ts +32 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.js +232 -0
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostPermissionService.d.ts +83 -0
- package/vscode/src/vs/workbench/services/agentHost/common/agentHostPermissionService.js +243 -0
- package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +0 -749
- package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.js +0 -14
- package/vscode/src/vs/platform/agentHost/common/state/sessionCapabilities.d.ts +0 -17
- package/vscode/src/vs/platform/agentHost/common/state/sessionCapabilities.js +0 -5
- package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +0 -40
- package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.js +0 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +0 -131
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +0 -363
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +0 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +0 -306
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +0 -97
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatStatusWidget.css +0 -57
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +0 -50
- package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.js +0 -29
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +0 -50
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +0 -78
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +0 -77
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +0 -120
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +0 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +0 -242
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +0 -1701
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +0 -191
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +0 -728
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.d.ts +0 -14
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.js +0 -69
|
@@ -5,15 +5,23 @@ import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode
|
|
|
5
5
|
import { raceTimeout, DeferredPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
6
6
|
import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
|
|
7
7
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
8
|
+
import { IEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service';
|
|
8
9
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
10
|
+
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
|
|
9
11
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
12
|
+
import { AgentHostAhpJsonlLoggingSettingId } from '../common/agentService.js';
|
|
10
13
|
import { RemoteAgentHostsSettingId, RemoteAgentHostsEnabledSettingId, RemoteAgentHostEntryType, getEntryAddress, RemoteAgentHostConnectionStatus, rawEntryToEntry, entryToRawEntry } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/remoteAgentHostService';
|
|
11
14
|
import { RemoteAgentHostProtocolClient } from './remoteAgentHostProtocolClient.js';
|
|
12
15
|
import { WebSocketClientTransport } from './webSocketClientTransport.js';
|
|
13
|
-
import { normalizeRemoteAgentHostAddress } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
|
|
16
|
+
import { normalizeRemoteAgentHostAddress, AGENT_HOST_LABEL_FORMATTER, agentHostAuthority, AGENT_HOST_SCHEME } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
|
|
14
17
|
import { isDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
18
|
+
import { PROTOCOL_VERSION } from '../common/state/protocol/version/registry.js';
|
|
15
19
|
|
|
16
20
|
var RemoteAgentHostService_1;
|
|
21
|
+
function disposeEntry(entry) {
|
|
22
|
+
entry.store.dispose();
|
|
23
|
+
entry.transportDisposable?.dispose();
|
|
24
|
+
}
|
|
17
25
|
let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
18
26
|
static {
|
|
19
27
|
RemoteAgentHostService_1 = this;
|
|
@@ -27,11 +35,19 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
27
35
|
static {
|
|
28
36
|
this.ReconnectMaxDelay = 30000;
|
|
29
37
|
}
|
|
30
|
-
constructor(
|
|
38
|
+
constructor(
|
|
39
|
+
_configurationService,
|
|
40
|
+
_instantiationService,
|
|
41
|
+
_logService,
|
|
42
|
+
_labelService,
|
|
43
|
+
_environmentService
|
|
44
|
+
) {
|
|
31
45
|
super();
|
|
32
46
|
this._configurationService = _configurationService;
|
|
33
47
|
this._instantiationService = _instantiationService;
|
|
34
48
|
this._logService = _logService;
|
|
49
|
+
this._labelService = _labelService;
|
|
50
|
+
this._environmentService = _environmentService;
|
|
35
51
|
this._onDidChangeConnections = this._register(( new Emitter()));
|
|
36
52
|
this.onDidChangeConnections = this._onDidChangeConnections.event;
|
|
37
53
|
this._entries = ( new Map());
|
|
@@ -41,6 +57,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
41
57
|
this._pendingConnectionWaits = ( new Map());
|
|
42
58
|
this._reconnectTimeouts = ( new Map());
|
|
43
59
|
this._reconnectAttempts = ( new Map());
|
|
60
|
+
this._labelFormatters = ( new Map());
|
|
44
61
|
this._register(this._configurationService.onDidChangeConfiguration(e => {
|
|
45
62
|
if (e.affectsConfiguration(RemoteAgentHostsSettingId) || e.affectsConfiguration(RemoteAgentHostsEnabledSettingId)) {
|
|
46
63
|
this._reconcileConnections();
|
|
@@ -129,7 +146,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
129
146
|
address,
|
|
130
147
|
name: entry.name,
|
|
131
148
|
clientId: "",
|
|
132
|
-
status: RemoteAgentHostConnectionStatus.
|
|
149
|
+
status: RemoteAgentHostConnectionStatus.disconnected
|
|
133
150
|
};
|
|
134
151
|
}
|
|
135
152
|
const connectedConnection = this._getConnectionInfo(address);
|
|
@@ -145,7 +162,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
145
162
|
}
|
|
146
163
|
return connection;
|
|
147
164
|
}
|
|
148
|
-
async
|
|
165
|
+
async addManagedConnection(entry, connection, transportDisposable) {
|
|
149
166
|
const address = getEntryAddress(entry);
|
|
150
167
|
const existingEntry = this._entries.get(address);
|
|
151
168
|
if (existingEntry) {
|
|
@@ -158,19 +175,21 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
158
175
|
const connEntry = {
|
|
159
176
|
store,
|
|
160
177
|
client: protocolClient,
|
|
178
|
+
transportDisposable,
|
|
161
179
|
connected: true,
|
|
162
|
-
status: RemoteAgentHostConnectionStatus.
|
|
180
|
+
status: RemoteAgentHostConnectionStatus.connected
|
|
163
181
|
};
|
|
164
182
|
this._entries.set(address, connEntry);
|
|
165
183
|
this._names.set(address, entry.name);
|
|
166
184
|
this._registeredEntries.set(address, entry);
|
|
185
|
+
this._updateHostLabelFormatter(address, entry.name);
|
|
167
186
|
if (entry.connectionToken) {
|
|
168
187
|
this._tokens.set(address, entry.connectionToken);
|
|
169
188
|
}
|
|
170
189
|
store.add(protocolClient.onDidClose(() => {
|
|
171
190
|
if (this._entries.get(address) === connEntry) {
|
|
172
191
|
connEntry.connected = false;
|
|
173
|
-
connEntry.status = RemoteAgentHostConnectionStatus.
|
|
192
|
+
connEntry.status = RemoteAgentHostConnectionStatus.disconnected;
|
|
174
193
|
this._onDidChangeConnections.fire();
|
|
175
194
|
}
|
|
176
195
|
}));
|
|
@@ -181,7 +200,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
181
200
|
name: entry.name,
|
|
182
201
|
clientId: protocolClient.clientId,
|
|
183
202
|
defaultDirectory: protocolClient.defaultDirectory,
|
|
184
|
-
status: RemoteAgentHostConnectionStatus.
|
|
203
|
+
status: RemoteAgentHostConnectionStatus.connected
|
|
185
204
|
};
|
|
186
205
|
}
|
|
187
206
|
async removeRemoteAgentHost(address) {
|
|
@@ -191,6 +210,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
191
210
|
this._names.delete(normalized);
|
|
192
211
|
this._tokens.delete(normalized);
|
|
193
212
|
this._registeredEntries.delete(normalized);
|
|
213
|
+
this._clearHostLabelFormatter(normalized);
|
|
194
214
|
this._cancelReconnect(normalized);
|
|
195
215
|
this._reconnectAttempts.delete(normalized);
|
|
196
216
|
this._removeConnection(normalized);
|
|
@@ -199,7 +219,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
199
219
|
const entry = this._entries.get(address);
|
|
200
220
|
if (entry) {
|
|
201
221
|
this._entries.delete(address);
|
|
202
|
-
entry
|
|
222
|
+
disposeEntry(entry);
|
|
203
223
|
this._rejectPendingConnectionWait(address, ( new Error(`Connection closed: ${address}`)));
|
|
204
224
|
this._onDidChangeConnections.fire();
|
|
205
225
|
}
|
|
@@ -213,6 +233,11 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
213
233
|
this._names.clear();
|
|
214
234
|
this._tokens.clear();
|
|
215
235
|
this._reconnectAttempts.clear();
|
|
236
|
+
for (const address of [...( this._labelFormatters.keys())]) {
|
|
237
|
+
if (!( this._registeredEntries.has(address))) {
|
|
238
|
+
this._clearHostLabelFormatter(address);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
216
241
|
return;
|
|
217
242
|
}
|
|
218
243
|
const rawEntries = ( (this._configurationService.getValue(RemoteAgentHostsSettingId) ?? []).map(rawEntryToEntry)).filter(isDefined);
|
|
@@ -234,10 +259,16 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
234
259
|
} of entriesWithAddress) {
|
|
235
260
|
this._names.set(address, entry.name);
|
|
236
261
|
this._tokens.set(address, entry.connectionToken);
|
|
262
|
+
this._updateHostLabelFormatter(address, entry.name);
|
|
237
263
|
if (( this._entries.has(address)) && oldNames.get(address) !== entry.name) {
|
|
238
264
|
namesChanged = true;
|
|
239
265
|
}
|
|
240
266
|
}
|
|
267
|
+
for (const address of [...( this._labelFormatters.keys())]) {
|
|
268
|
+
if (!( desired.has(address)) && !( this._registeredEntries.has(address))) {
|
|
269
|
+
this._clearHostLabelFormatter(address);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
241
272
|
for (const address of [...( this._entries.keys())]) {
|
|
242
273
|
if (!( desired.has(address))) {
|
|
243
274
|
this._logService.info(`[RemoteAgentHost] Disconnecting from ${address}`);
|
|
@@ -265,7 +296,14 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
265
296
|
existingEntry.store.dispose();
|
|
266
297
|
}
|
|
267
298
|
const store = ( new DisposableStore());
|
|
268
|
-
const
|
|
299
|
+
const ahpLoggingEnabled = !!this._configurationService.getValue(AgentHostAhpJsonlLoggingSettingId);
|
|
300
|
+
const transport = store.add(
|
|
301
|
+
this._instantiationService.createInstance(WebSocketClientTransport, address, connectionToken, ahpLoggingEnabled ? {
|
|
302
|
+
logsHome: this._environmentService.logsHome,
|
|
303
|
+
connectionId: address,
|
|
304
|
+
transport: "websocket"
|
|
305
|
+
} : undefined)
|
|
306
|
+
);
|
|
269
307
|
const client = store.add(
|
|
270
308
|
this._instantiationService.createInstance(RemoteAgentHostProtocolClient, address, transport)
|
|
271
309
|
);
|
|
@@ -273,7 +311,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
273
311
|
store,
|
|
274
312
|
client,
|
|
275
313
|
connected: false,
|
|
276
|
-
status: RemoteAgentHostConnectionStatus.
|
|
314
|
+
status: RemoteAgentHostConnectionStatus.connecting
|
|
277
315
|
};
|
|
278
316
|
this._entries.set(address, entry);
|
|
279
317
|
const isCurrentEntry = () => this._entries.get(address) === entry;
|
|
@@ -283,7 +321,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
283
321
|
}
|
|
284
322
|
this._logService.warn(`[RemoteAgentHost] Connection closed: ${address}`);
|
|
285
323
|
entry.connected = false;
|
|
286
|
-
entry.status = RemoteAgentHostConnectionStatus.
|
|
324
|
+
entry.status = RemoteAgentHostConnectionStatus.disconnected;
|
|
287
325
|
this._onDidChangeConnections.fire();
|
|
288
326
|
this._scheduleReconnect(address, connectionToken);
|
|
289
327
|
}));
|
|
@@ -295,7 +333,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
295
333
|
}
|
|
296
334
|
this._logService.info(`[RemoteAgentHost] Connected to ${address}`);
|
|
297
335
|
entry.connected = true;
|
|
298
|
-
entry.status = RemoteAgentHostConnectionStatus.
|
|
336
|
+
entry.status = RemoteAgentHostConnectionStatus.connected;
|
|
299
337
|
this._reconnectAttempts.delete(address);
|
|
300
338
|
this._resolvePendingConnectionWait(address);
|
|
301
339
|
this._onDidChangeConnections.fire();
|
|
@@ -303,11 +341,22 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
303
341
|
if (!isCurrentEntry()) {
|
|
304
342
|
return;
|
|
305
343
|
}
|
|
344
|
+
const incompatible = RemoteAgentHostConnectionStatus.fromConnectError(err, [PROTOCOL_VERSION]);
|
|
345
|
+
if (incompatible) {
|
|
346
|
+
this._logService.warn(
|
|
347
|
+
`[RemoteAgentHost] Incompatible with ${address}: ${incompatible.kind === "incompatible" ? incompatible.message : ""}`
|
|
348
|
+
);
|
|
349
|
+
entry.status = incompatible;
|
|
350
|
+
this._reconnectAttempts.delete(address);
|
|
351
|
+
this._rejectPendingConnectionWait(address, err);
|
|
352
|
+
this._onDidChangeConnections.fire();
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
306
355
|
this._logService.error(
|
|
307
356
|
`[RemoteAgentHost] Failed to connect to ${address}. Verify address and connectionToken`,
|
|
308
357
|
err
|
|
309
358
|
);
|
|
310
|
-
entry.status = RemoteAgentHostConnectionStatus.
|
|
359
|
+
entry.status = RemoteAgentHostConnectionStatus.disconnected;
|
|
311
360
|
this._entries.delete(address);
|
|
312
361
|
entry.store.dispose();
|
|
313
362
|
this._rejectPendingConnectionWait(address, err);
|
|
@@ -351,7 +400,7 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
351
400
|
}
|
|
352
401
|
_getConnectionInfo(address) {
|
|
353
402
|
return this.connections.find(
|
|
354
|
-
connection => connection.address === address && connection.status
|
|
403
|
+
connection => connection.address === address && RemoteAgentHostConnectionStatus.isConnected(connection.status)
|
|
355
404
|
);
|
|
356
405
|
}
|
|
357
406
|
_getConfiguredEntries() {
|
|
@@ -431,6 +480,26 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
431
480
|
this._pendingConnectionWaits.delete(address);
|
|
432
481
|
void wait.error(err);
|
|
433
482
|
}
|
|
483
|
+
_updateHostLabelFormatter(address, name) {
|
|
484
|
+
this._clearHostLabelFormatter(address);
|
|
485
|
+
const handle = this._labelService.registerFormatter({
|
|
486
|
+
scheme: AGENT_HOST_SCHEME,
|
|
487
|
+
authority: agentHostAuthority(address),
|
|
488
|
+
priority: true,
|
|
489
|
+
formatting: {
|
|
490
|
+
...AGENT_HOST_LABEL_FORMATTER.formatting,
|
|
491
|
+
workspaceSuffix: name
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
this._labelFormatters.set(address, handle);
|
|
495
|
+
}
|
|
496
|
+
_clearHostLabelFormatter(address) {
|
|
497
|
+
const existing = this._labelFormatters.get(address);
|
|
498
|
+
if (existing) {
|
|
499
|
+
existing.dispose();
|
|
500
|
+
this._labelFormatters.delete(address);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
434
503
|
dispose() {
|
|
435
504
|
for (const timeout of ( this._reconnectTimeouts.values())) {
|
|
436
505
|
clearTimeout(timeout);
|
|
@@ -442,12 +511,16 @@ let RemoteAgentHostService = class RemoteAgentHostService extends Disposable {
|
|
|
442
511
|
}
|
|
443
512
|
this._pendingConnectionWaits.clear();
|
|
444
513
|
for (const entry of ( this._entries.values())) {
|
|
445
|
-
entry
|
|
514
|
+
disposeEntry(entry);
|
|
446
515
|
}
|
|
447
516
|
this._entries.clear();
|
|
517
|
+
for (const handle of ( this._labelFormatters.values())) {
|
|
518
|
+
handle.dispose();
|
|
519
|
+
}
|
|
520
|
+
this._labelFormatters.clear();
|
|
448
521
|
super.dispose();
|
|
449
522
|
}
|
|
450
523
|
};
|
|
451
|
-
RemoteAgentHostService = RemoteAgentHostService_1 = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IInstantiationService)), ( __param(2, ILogService))], RemoteAgentHostService));
|
|
524
|
+
RemoteAgentHostService = RemoteAgentHostService_1 = ( __decorate([( __param(0, IConfigurationService)), ( __param(1, IInstantiationService)), ( __param(2, ILogService)), ( __param(3, ILabelService)), ( __param(4, IEnvironmentService))], RemoteAgentHostService));
|
|
452
525
|
|
|
453
526
|
export { RemoteAgentHostService };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
-
import
|
|
2
|
+
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
3
|
+
import { IAhpJsonlLoggerOptions } from "../common/ahpJsonlLogger.js";
|
|
4
|
+
import type { AhpServerNotification, JsonRpcNotification, JsonRpcRequest, JsonRpcResponse, ProtocolMessage } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/sessionProtocol";
|
|
3
5
|
import type { IClientTransport } from "../common/state/sessionTransport.js";
|
|
4
6
|
/**
|
|
5
7
|
* A WebSocket client transport that connects to a remote agent host server.
|
|
@@ -8,21 +10,31 @@ import type { IClientTransport } from "../common/state/sessionTransport.js";
|
|
|
8
10
|
*/
|
|
9
11
|
export declare class WebSocketClientTransport extends Disposable implements IClientTransport {
|
|
10
12
|
private readonly _address;
|
|
11
|
-
private readonly _connectionToken
|
|
13
|
+
private readonly _connectionToken;
|
|
12
14
|
private readonly _onMessage;
|
|
13
|
-
readonly onMessage: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<
|
|
15
|
+
readonly onMessage: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<ProtocolMessage>;
|
|
14
16
|
private readonly _onClose;
|
|
15
17
|
readonly onClose: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<void>;
|
|
16
18
|
private readonly _onOpen;
|
|
17
19
|
readonly onOpen: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<void>;
|
|
18
20
|
private _ws;
|
|
21
|
+
private _malformedFrames;
|
|
22
|
+
/** Guards against firing onClose more than once. */
|
|
23
|
+
private _closeFired;
|
|
19
24
|
get isOpen(): boolean;
|
|
20
|
-
|
|
25
|
+
private readonly _ahpLogger?;
|
|
26
|
+
constructor(_address: string, _connectionToken: string | undefined, ahpLogOptions: IAhpJsonlLoggerOptions | undefined, instantiationService: IInstantiationService);
|
|
21
27
|
/**
|
|
22
28
|
* Initiate the WebSocket connection. Resolves when the connection
|
|
23
29
|
* is open, or rejects on error/timeout.
|
|
24
30
|
*/
|
|
25
31
|
connect(): Promise<void>;
|
|
26
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Send a message to the remote end. Returns `true` if the message was
|
|
34
|
+
* sent, `false` if it was dropped (socket not open). On failure, the
|
|
35
|
+
* transport is force-closed so reconnection is triggered immediately
|
|
36
|
+
* rather than silently losing messages.
|
|
37
|
+
*/
|
|
38
|
+
send(message: ProtocolMessage | AhpServerNotification | JsonRpcNotification | JsonRpcResponse | JsonRpcRequest): boolean;
|
|
27
39
|
dispose(): void;
|
|
28
40
|
}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
2
3
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
3
4
|
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
5
|
import { connectionTokenQueryName } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
6
|
+
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
7
|
+
import { AhpJsonlLogger, getAhpLogByteLength } from '../common/ahpJsonlLogger.js';
|
|
8
|
+
import { MALFORMED_FRAMES_LOG_CAP, MALFORMED_FRAMES_FORCE_CLOSE_THRESHOLD } from '../common/transportConstants.js';
|
|
5
9
|
|
|
6
|
-
class WebSocketClientTransport extends Disposable {
|
|
10
|
+
let WebSocketClientTransport = class WebSocketClientTransport extends Disposable {
|
|
7
11
|
get isOpen() {
|
|
8
12
|
return this._ws?.readyState === WebSocket.OPEN;
|
|
9
13
|
}
|
|
10
|
-
constructor(_address, _connectionToken) {
|
|
14
|
+
constructor(_address, _connectionToken, ahpLogOptions, instantiationService) {
|
|
11
15
|
super();
|
|
12
16
|
this._address = _address;
|
|
13
17
|
this._connectionToken = _connectionToken;
|
|
@@ -17,6 +21,11 @@ class WebSocketClientTransport extends Disposable {
|
|
|
17
21
|
this.onClose = this._onClose.event;
|
|
18
22
|
this._onOpen = this._register(( new Emitter()));
|
|
19
23
|
this.onOpen = this._onOpen.event;
|
|
24
|
+
this._malformedFrames = 0;
|
|
25
|
+
this._closeFired = false;
|
|
26
|
+
if (ahpLogOptions) {
|
|
27
|
+
this._ahpLogger = this._register(instantiationService.createInstance(AhpJsonlLogger, ahpLogOptions));
|
|
28
|
+
}
|
|
20
29
|
}
|
|
21
30
|
connect() {
|
|
22
31
|
return ( new Promise((resolve, reject) => {
|
|
@@ -53,29 +62,83 @@ class WebSocketClientTransport extends Disposable {
|
|
|
53
62
|
ws.addEventListener("error", onError);
|
|
54
63
|
ws.addEventListener("close", onClose);
|
|
55
64
|
ws.addEventListener("message", event => {
|
|
65
|
+
if (typeof event.data !== "string") {
|
|
66
|
+
this._malformedFrames++;
|
|
67
|
+
if (this._malformedFrames <= MALFORMED_FRAMES_LOG_CAP) {
|
|
68
|
+
const dataType = event.data instanceof ArrayBuffer ? "ArrayBuffer" : event.data instanceof Blob ? "Blob" : typeof event.data;
|
|
69
|
+
const byteLen = event.data instanceof ArrayBuffer ? event.data.byteLength : event.data instanceof Blob ? event.data.size : 0;
|
|
70
|
+
console.warn(
|
|
71
|
+
`[WebSocketClientTransport] Non-string frame #${this._malformedFrames} (type=${dataType}, bytes=${byteLen})`
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
if (this._malformedFrames > MALFORMED_FRAMES_FORCE_CLOSE_THRESHOLD) {
|
|
75
|
+
console.warn(
|
|
76
|
+
`[WebSocketClientTransport] Malformed frame threshold exceeded; forcing close of ${this._address}.`
|
|
77
|
+
);
|
|
78
|
+
this._ws?.close(4002, "malformed-frames");
|
|
79
|
+
}
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const text = event.data;
|
|
83
|
+
let message;
|
|
56
84
|
try {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
this.
|
|
60
|
-
|
|
85
|
+
message = JSON.parse(text);
|
|
86
|
+
} catch (err) {
|
|
87
|
+
this._malformedFrames++;
|
|
88
|
+
if (this._malformedFrames <= MALFORMED_FRAMES_LOG_CAP) {
|
|
89
|
+
const preview = text.length > 80 ? text.slice(0, 80) + "…" : text;
|
|
90
|
+
console.warn(
|
|
91
|
+
`[WebSocketClientTransport] Malformed frame #${this._malformedFrames} (len=${text.length}): ${preview}`,
|
|
92
|
+
err instanceof Error ? err.message : String(err)
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
if (this._malformedFrames > MALFORMED_FRAMES_FORCE_CLOSE_THRESHOLD) {
|
|
96
|
+
console.warn(
|
|
97
|
+
`[WebSocketClientTransport] Malformed frame threshold exceeded; forcing close of ${this._address}.`
|
|
98
|
+
);
|
|
99
|
+
this._ws?.close(4002, "malformed-frames");
|
|
100
|
+
}
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
this._ahpLogger?.log(message, "s2c", getAhpLogByteLength(text));
|
|
104
|
+
this._onMessage.fire(message);
|
|
61
105
|
});
|
|
62
106
|
ws.addEventListener("close", () => {
|
|
63
|
-
this.
|
|
107
|
+
if (!this._closeFired) {
|
|
108
|
+
this._closeFired = true;
|
|
109
|
+
this._onClose.fire();
|
|
110
|
+
}
|
|
64
111
|
});
|
|
65
112
|
ws.addEventListener("error", () => {
|
|
66
|
-
this.
|
|
113
|
+
if (!this._closeFired) {
|
|
114
|
+
this._closeFired = true;
|
|
115
|
+
this._onClose.fire();
|
|
116
|
+
}
|
|
67
117
|
});
|
|
68
118
|
}));
|
|
69
119
|
}
|
|
70
120
|
send(message) {
|
|
71
121
|
if (this._ws?.readyState === WebSocket.OPEN) {
|
|
72
|
-
|
|
122
|
+
const text = JSON.stringify(message);
|
|
123
|
+
this._ahpLogger?.log(message, "c2s", getAhpLogByteLength(text));
|
|
124
|
+
this._ws.send(text);
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
console.warn(
|
|
128
|
+
`[WebSocketClientTransport] Message dropped: readyState=${this._ws?.readyState ?? "no-socket"}`
|
|
129
|
+
);
|
|
130
|
+
this._ws?.close(4001, "send-on-dead-socket");
|
|
131
|
+
if (!this._closeFired) {
|
|
132
|
+
this._closeFired = true;
|
|
133
|
+
this._onClose.fire();
|
|
73
134
|
}
|
|
135
|
+
return false;
|
|
74
136
|
}
|
|
75
137
|
dispose() {
|
|
76
138
|
this._ws?.close();
|
|
77
139
|
super.dispose();
|
|
78
140
|
}
|
|
79
|
-
}
|
|
141
|
+
};
|
|
142
|
+
WebSocketClientTransport = ( __decorate([( __param(3, IInstantiationService))], WebSocketClientTransport));
|
|
80
143
|
|
|
81
144
|
export { WebSocketClientTransport };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
2
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
3
3
|
import { FileType, IFileChange, IFileDeleteOptions, IFileOverwriteOptions, IFileSystemProvider, IFileWriteOptions, IStat } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files";
|
|
4
|
-
import { type
|
|
4
|
+
import { type ResourceDeleteParams, type ResourceDeleteResult, type ResourceListResult, type ResourceMoveParams, type ResourceMoveResult, type ResourceReadResult, type ResourceRequestParams, type ResourceRequestResult, type ResourceWriteParams, type ResourceWriteResult } from "@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/commands";
|
|
5
5
|
/**
|
|
6
6
|
* Interface for performing resource operations on a remote endpoint.
|
|
7
7
|
*
|
|
@@ -9,11 +9,17 @@ import { type IResourceDeleteParams, type IResourceDeleteResult, type IResourceL
|
|
|
9
9
|
* filesystems (server→client) satisfy this contract.
|
|
10
10
|
*/
|
|
11
11
|
export interface IRemoteFilesystemConnection {
|
|
12
|
-
resourceList(uri: URI): Promise<
|
|
13
|
-
resourceRead(uri: URI): Promise<
|
|
14
|
-
resourceWrite(params:
|
|
15
|
-
resourceDelete(params:
|
|
16
|
-
resourceMove(params:
|
|
12
|
+
resourceList(uri: URI): Promise<ResourceListResult>;
|
|
13
|
+
resourceRead(uri: URI): Promise<ResourceReadResult>;
|
|
14
|
+
resourceWrite(params: ResourceWriteParams): Promise<ResourceWriteResult>;
|
|
15
|
+
resourceDelete(params: ResourceDeleteParams): Promise<ResourceDeleteResult>;
|
|
16
|
+
resourceMove(params: ResourceMoveParams): Promise<ResourceMoveResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Negotiate access to a resource the receiver mediates. Optional because
|
|
19
|
+
* not every connection in the codebase carries one — only the agent-host
|
|
20
|
+
* server-to-client direction needs to send `resourceRequest` today.
|
|
21
|
+
*/
|
|
22
|
+
resourceRequest?(params: ResourceRequestParams): Promise<ResourceRequestResult>;
|
|
17
23
|
}
|
|
18
24
|
/**
|
|
19
25
|
* Build a {@link AGENT_HOST_SCHEME} URI for a given connection authority
|
|
@@ -59,7 +65,27 @@ export declare abstract class AHPFileSystemProvider extends Disposable implement
|
|
|
59
65
|
mkdir(): Promise<void>;
|
|
60
66
|
delete(resource: URI, opts: IFileDeleteOptions): Promise<void>;
|
|
61
67
|
rename(from: URI, to: URI, opts: IFileOverwriteOptions): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Negotiate access to {@link resource} with the receiver, asking for the
|
|
70
|
+
* granted modes in {@link opts}. Used after a `NoPermissions` failure to
|
|
71
|
+
* prompt the receiver to grant access; the caller can then retry.
|
|
72
|
+
*
|
|
73
|
+
* Resolves on success. Rejects if the receiver denies, the connection
|
|
74
|
+
* is missing, or the connection doesn't implement `resourceRequest`.
|
|
75
|
+
*/
|
|
76
|
+
requestResourceAccess(resource: URI, opts: {
|
|
77
|
+
readonly read?: boolean;
|
|
78
|
+
readonly write?: boolean;
|
|
79
|
+
}): Promise<void>;
|
|
62
80
|
private _getConnection;
|
|
81
|
+
/**
|
|
82
|
+
* Translate a thrown error from a {@link IRemoteFilesystemConnection}
|
|
83
|
+
* into a {@link FileSystemProviderError}. Preserves `PermissionDenied`
|
|
84
|
+
* (-32009) as `NoPermissions` so callers can distinguish a
|
|
85
|
+
* permission failure from `NotFound` and decide whether to negotiate
|
|
86
|
+
* via {@link requestResourceAccess}.
|
|
87
|
+
*/
|
|
88
|
+
private _mapError;
|
|
63
89
|
private _listDirectory;
|
|
64
90
|
}
|
|
65
91
|
/**
|
|
@@ -9,7 +9,9 @@ import '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
|
|
|
9
9
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
10
10
|
import { FileSystemProviderCapabilities, FilePermission, FileType, createFileSystemProviderError, FileSystemProviderErrorCode } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
|
|
11
11
|
import { fromAgentHostUri } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/agentHostUri';
|
|
12
|
-
import { ContentEncoding } from '
|
|
12
|
+
import { ContentEncoding } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/commands';
|
|
13
|
+
import { AhpErrorCodes } from './state/protocol/errors.js';
|
|
14
|
+
import { ProtocolError } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/sessionProtocol';
|
|
13
15
|
|
|
14
16
|
class AHPFileSystemProvider extends Disposable {
|
|
15
17
|
constructor() {
|
|
@@ -40,7 +42,7 @@ class AHPFileSystemProvider extends Disposable {
|
|
|
40
42
|
};
|
|
41
43
|
}
|
|
42
44
|
const decoded = this._decodeUri(resource);
|
|
43
|
-
if (decoded.scheme === "session-db") {
|
|
45
|
+
if (decoded.scheme === "session-db" || decoded.scheme === "git-blob") {
|
|
44
46
|
return {
|
|
45
47
|
type: FileType.File,
|
|
46
48
|
mtime: 0,
|
|
@@ -87,10 +89,7 @@ class AHPFileSystemProvider extends Disposable {
|
|
|
87
89
|
}
|
|
88
90
|
return VSBuffer.fromString(result.data).buffer;
|
|
89
91
|
} catch (err) {
|
|
90
|
-
throw
|
|
91
|
-
err instanceof Error ? err.message : String(err),
|
|
92
|
-
FileSystemProviderErrorCode.FileNotFound
|
|
93
|
-
);
|
|
92
|
+
throw this._mapError(err, FileSystemProviderErrorCode.FileNotFound);
|
|
94
93
|
}
|
|
95
94
|
}
|
|
96
95
|
async writeFile(resource, content, _opts) {
|
|
@@ -103,10 +102,7 @@ class AHPFileSystemProvider extends Disposable {
|
|
|
103
102
|
encoding: ContentEncoding.Utf8
|
|
104
103
|
});
|
|
105
104
|
} catch (err) {
|
|
106
|
-
throw
|
|
107
|
-
err instanceof Error ? err.message : String(err),
|
|
108
|
-
FileSystemProviderErrorCode.NoPermissions
|
|
109
|
-
);
|
|
105
|
+
throw this._mapError(err, FileSystemProviderErrorCode.NoPermissions);
|
|
110
106
|
}
|
|
111
107
|
}
|
|
112
108
|
async mkdir() {
|
|
@@ -124,10 +120,7 @@ class AHPFileSystemProvider extends Disposable {
|
|
|
124
120
|
recursive: opts.recursive
|
|
125
121
|
});
|
|
126
122
|
} catch (err) {
|
|
127
|
-
throw
|
|
128
|
-
err instanceof Error ? err.message : String(err),
|
|
129
|
-
FileSystemProviderErrorCode.NoPermissions
|
|
130
|
-
);
|
|
123
|
+
throw this._mapError(err, FileSystemProviderErrorCode.NoPermissions);
|
|
131
124
|
}
|
|
132
125
|
}
|
|
133
126
|
async rename(from, to, opts) {
|
|
@@ -141,11 +134,27 @@ class AHPFileSystemProvider extends Disposable {
|
|
|
141
134
|
failIfExists: !opts.overwrite
|
|
142
135
|
});
|
|
143
136
|
} catch (err) {
|
|
137
|
+
throw this._mapError(err, FileSystemProviderErrorCode.NoPermissions);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async requestResourceAccess(resource, opts) {
|
|
141
|
+
const connection = this._getConnection(resource.authority);
|
|
142
|
+
if (!connection.resourceRequest) {
|
|
144
143
|
throw createFileSystemProviderError(
|
|
145
|
-
|
|
146
|
-
FileSystemProviderErrorCode.
|
|
144
|
+
`Connection for ${resource.authority} does not support resourceRequest`,
|
|
145
|
+
FileSystemProviderErrorCode.Unavailable
|
|
147
146
|
);
|
|
148
147
|
}
|
|
148
|
+
const originalUri = this._decodeUri(resource);
|
|
149
|
+
try {
|
|
150
|
+
await connection.resourceRequest({
|
|
151
|
+
uri: ( originalUri.toString()),
|
|
152
|
+
read: opts.read,
|
|
153
|
+
write: opts.write
|
|
154
|
+
});
|
|
155
|
+
} catch (err) {
|
|
156
|
+
throw this._mapError(err, FileSystemProviderErrorCode.NoPermissions);
|
|
157
|
+
}
|
|
149
158
|
}
|
|
150
159
|
_getConnection(authority) {
|
|
151
160
|
const connection = this._authorityToConnection.get(authority);
|
|
@@ -157,6 +166,12 @@ class AHPFileSystemProvider extends Disposable {
|
|
|
157
166
|
}
|
|
158
167
|
return connection;
|
|
159
168
|
}
|
|
169
|
+
_mapError(err, defaultCode) {
|
|
170
|
+
if (err instanceof ProtocolError && err.code === AhpErrorCodes.PermissionDenied) {
|
|
171
|
+
return createFileSystemProviderError(err.message, FileSystemProviderErrorCode.NoPermissions);
|
|
172
|
+
}
|
|
173
|
+
return createFileSystemProviderError(err instanceof Error ? err.message : String(err), defaultCode);
|
|
174
|
+
}
|
|
160
175
|
async _listDirectory(authority, resource) {
|
|
161
176
|
const connection = this._getConnection(authority);
|
|
162
177
|
try {
|
|
@@ -164,10 +179,7 @@ class AHPFileSystemProvider extends Disposable {
|
|
|
164
179
|
const result = await connection.resourceList(originalUri);
|
|
165
180
|
return result.entries;
|
|
166
181
|
} catch (err) {
|
|
167
|
-
throw
|
|
168
|
-
err instanceof Error ? err.message : String(err),
|
|
169
|
-
FileSystemProviderErrorCode.Unavailable
|
|
170
|
-
);
|
|
182
|
+
throw this._mapError(err, FileSystemProviderErrorCode.Unavailable);
|
|
171
183
|
}
|
|
172
184
|
}
|
|
173
185
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
|
+
/** Configuration key for persisted per-host filesystem grants. */
|
|
3
|
+
export declare const AgentHostLocalFilePermissionsSettingId = "chat.agentHost.localFilePermissions";
|
|
4
|
+
/** Persisted access mode for a granted URI. */
|
|
5
|
+
export declare enum AgentHostAccessMode {
|
|
6
|
+
Read = "r",
|
|
7
|
+
ReadWrite = "rw"
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Persisted shape of {@link AgentHostLocalFilePermissionsSettingId}:
|
|
11
|
+
* `{ [normalizedAddress]: { [uriString]: 'r' | 'rw' } }`.
|
|
12
|
+
*/
|
|
13
|
+
export type AgentHostPermissionsSetting = Record<string, Record<string, AgentHostAccessMode>>;
|
|
14
|
+
/**
|
|
15
|
+
* Capability a request needs from the user. The protocol-level `read` and
|
|
16
|
+
* `write` flags are split into one or two of these requests.
|
|
17
|
+
*/
|
|
18
|
+
export declare enum AgentHostPermissionMode {
|
|
19
|
+
Read = "read",
|
|
20
|
+
Write = "write"
|
|
21
|
+
}
|
|
22
|
+
/** A single pending permission request awaiting user input. */
|
|
23
|
+
export interface IPendingResourceRequest {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly address: string;
|
|
26
|
+
readonly uri: URI;
|
|
27
|
+
readonly mode: AgentHostPermissionMode;
|
|
28
|
+
/** Approve and remember the grant in user settings. */
|
|
29
|
+
allowAlways(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Approve the request and remember it in memory for the lifetime of the
|
|
32
|
+
* connection (cleared on connection close or window reload).
|
|
33
|
+
*/
|
|
34
|
+
allow(): void;
|
|
35
|
+
/** Reject this request. */
|
|
36
|
+
deny(): void;
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
const AgentHostLocalFilePermissionsSettingId = 'chat.agentHost.localFilePermissions';
|
|
4
|
+
var AgentHostAccessMode;
|
|
5
|
+
(function (AgentHostAccessMode) {
|
|
6
|
+
AgentHostAccessMode["Read"] = "r";
|
|
7
|
+
AgentHostAccessMode["ReadWrite"] = "rw";
|
|
8
|
+
})(AgentHostAccessMode || (AgentHostAccessMode = {}));
|
|
9
|
+
var AgentHostPermissionMode;
|
|
10
|
+
(function (AgentHostPermissionMode) {
|
|
11
|
+
AgentHostPermissionMode["Read"] = "read";
|
|
12
|
+
AgentHostPermissionMode["Write"] = "write";
|
|
13
|
+
})(AgentHostPermissionMode || (AgentHostPermissionMode = {}));
|
|
14
|
+
|
|
15
|
+
export { AgentHostAccessMode, AgentHostLocalFilePermissionsSettingId, AgentHostPermissionMode };
|