@codingame/monaco-vscode-chat-service-override 31.0.0 → 32.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.
Files changed (341) hide show
  1. package/index.d.ts +1 -1
  2. package/index.js +21 -5
  3. package/package.json +5 -5
  4. package/vscode/src/vs/base/common/defaultAccount.d.ts +69 -0
  5. package/vscode/src/vs/base/common/defaultAccount.js +12 -0
  6. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +91 -22
  7. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +301 -68
  8. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +24 -5
  9. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +89 -16
  10. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.d.ts +17 -5
  11. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.js +73 -10
  12. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +32 -6
  13. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +32 -20
  14. package/vscode/src/vs/platform/agentHost/common/agentHostPermissionService.d.ts +37 -0
  15. package/vscode/src/vs/platform/agentHost/common/agentHostPermissionService.js +15 -0
  16. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +242 -201
  17. package/vscode/src/vs/platform/agentHost/common/agentService.js +3 -1
  18. package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.d.ts +35 -0
  19. package/vscode/src/vs/platform/agentHost/common/ahpJsonlLogger.js +106 -0
  20. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +38 -30
  21. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +2 -1
  22. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +114 -4
  23. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +10 -10
  24. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.js +52 -19
  25. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.d.ts +42 -0
  26. package/vscode/src/vs/platform/agentHost/common/state/protocol/version/registry.js +7 -0
  27. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +42 -41
  28. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.d.ts +6 -6
  29. package/vscode/src/vs/platform/agentHost/common/transportConstants.d.ts +15 -0
  30. package/vscode/src/vs/platform/agentHost/common/transportConstants.js +6 -0
  31. package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.d.ts +4 -3
  32. package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.js +4 -3
  33. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +4 -2
  34. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +15 -7
  35. package/vscode/src/vs/workbench/contrib/browserView/common/browserChatToolReferenceNames.d.ts +19 -0
  36. package/vscode/src/vs/workbench/contrib/browserView/common/browserChatToolReferenceNames.js +17 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +16 -16
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -10
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +64 -59
  42. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +31 -16
  44. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +18 -9
  45. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.d.ts +16 -0
  46. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +8 -8
  47. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +30 -5
  48. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  49. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +8 -7
  50. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  51. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  52. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  53. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +12 -12
  54. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +12 -12
  55. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +27 -18
  56. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +11 -11
  58. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  59. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +21 -20
  60. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +22 -22
  61. package/vscode/src/vs/workbench/contrib/chat/browser/actions/reviewEdits.d.ts +12 -0
  62. package/vscode/src/vs/workbench/contrib/chat/browser/actions/reviewEdits.js +171 -0
  63. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.d.ts +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
  65. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +4 -4
  66. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  67. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +1 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +3 -2
  69. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +12 -10
  70. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.d.ts +28 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +99 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectoryResolver.d.ts +2 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectoryResolver.js +11 -4
  74. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +9 -3
  75. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +63 -53
  76. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +2 -0
  77. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +10 -7
  78. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +3 -3
  79. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  81. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +5 -4
  83. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +25 -48
  84. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  85. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  86. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +5 -0
  87. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +8 -4
  88. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +99 -39
  89. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +2 -2
  90. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +17 -30
  91. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.d.ts +78 -0
  92. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +38 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +35 -37
  94. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +347 -326
  95. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.d.ts +6 -2
  96. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.js +1 -11
  97. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +113 -109
  98. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +37 -15
  99. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +436 -134
  100. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +2 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +52 -26
  103. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +7 -1
  104. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +2 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +13 -5
  106. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +23 -0
  107. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.js +60 -0
  108. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.d.ts +25 -0
  109. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedMcpServerDetail.js +93 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +9 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +73 -104
  112. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +272 -41
  113. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +12 -2
  114. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +30 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +430 -185
  116. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.d.ts +5 -2
  117. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +44 -3
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +480 -279
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +32 -32
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheDiff.d.ts +138 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheDiff.js +221 -0
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +84 -0
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.js +1216 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +2 -1
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +32 -4
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +26 -19
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +4 -4
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +28 -25
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +13 -13
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +25 -24
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +2 -1
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +68 -33
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +3 -2
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +1 -0
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +650 -6
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +2 -2
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +46 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +533 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +29 -0
  148. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +390 -0
  149. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +3 -3
  150. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.d.ts +101 -0
  151. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +509 -0
  152. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  153. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +18 -3
  154. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  155. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +11 -11
  156. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +3 -2
  157. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +130 -0
  158. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +276 -0
  159. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  160. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
  161. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -7
  162. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +2 -2
  163. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +1 -7
  164. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +6 -87
  165. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +1 -1
  166. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +116 -182
  167. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +12 -39
  168. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  169. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +31 -31
  170. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  171. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +61 -41
  172. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  173. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  174. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +27 -27
  175. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +2 -0
  176. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +16 -13
  177. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +20 -0
  178. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +106 -36
  179. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +25 -7
  180. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +629 -425
  181. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.d.ts +9 -1
  182. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +105 -29
  183. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.d.ts +1 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +175 -148
  185. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +20 -33
  186. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +9 -2
  187. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +4 -4
  188. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  189. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  190. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  191. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  192. package/vscode/src/vs/workbench/contrib/chat/browser/githubRepoFetcher.d.ts +58 -0
  193. package/vscode/src/vs/workbench/contrib/chat/browser/githubRepoFetcher.js +339 -0
  194. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  195. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/media/planReviewFeedback.css +160 -0
  196. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.d.ts +9 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorActions.js +123 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.d.ts +37 -0
  199. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackEditorContribution.js +572 -0
  200. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.d.ts +36 -0
  201. package/vscode/src/vs/workbench/contrib/chat/browser/planReviewFeedback/planReviewFeedbackService.js +167 -0
  202. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.d.ts +49 -7
  203. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +315 -19
  204. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +45 -24
  205. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +15 -15
  206. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +6 -6
  207. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  208. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +44 -40
  209. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +5 -5
  210. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  211. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileContributions.js +4 -1
  212. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  213. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  214. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  215. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  216. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  217. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +20 -20
  218. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +39 -39
  219. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +9 -1
  220. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +111 -52
  221. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +3 -7
  222. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +13 -47
  223. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +3 -2
  224. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +4 -8
  225. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.d.ts +18 -0
  226. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolResultCompressorService.js +56 -0
  227. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +3 -7
  228. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +14 -52
  229. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  230. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +3 -1
  231. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +17 -2
  232. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +2 -0
  233. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +23 -12
  234. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.d.ts +39 -0
  235. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +136 -0
  236. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.d.ts +72 -0
  237. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletionsBase.js +56 -0
  238. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.d.ts +7 -0
  239. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletionUtils.js +14 -1
  240. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +41 -26
  241. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +30 -12
  242. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  243. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  244. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +2 -5
  245. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +25 -6
  246. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  247. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +2 -2
  248. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +5 -4
  249. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +1 -0
  250. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +108 -45
  251. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +7 -3
  252. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +3 -1
  253. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +20 -1
  254. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +65 -26
  255. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +5 -3
  256. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +38 -11
  257. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +17 -1
  258. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +165 -16
  259. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +1 -0
  260. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +62 -1
  261. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +18 -18
  262. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +2 -1
  263. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  264. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -3
  265. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +15 -21
  266. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +1 -3
  267. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +18 -24
  268. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +4 -2
  269. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +203 -180
  270. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  271. package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.d.ts +30 -0
  272. package/vscode/src/vs/workbench/contrib/chat/common/workingDirectory.js +35 -0
  273. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +2 -1
  274. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +27 -2
  275. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
  276. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +14 -49
  277. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +0 -16
  278. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +35 -177
  279. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -8
  280. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.d.ts +1 -2
  281. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +2 -3
  282. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +4 -4
  283. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +11 -11
  284. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  285. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  286. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +13 -13
  287. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  288. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  289. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  290. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  291. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  292. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +29 -3
  293. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +129 -3
  294. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +3 -2
  295. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +2 -1
  296. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +14 -6
  297. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  298. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +1 -4
  299. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +12 -38
  300. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  301. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +4 -4
  302. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  303. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.d.ts +12 -7
  304. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +77 -70
  305. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  306. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  307. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  308. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  309. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.d.ts +32 -0
  310. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.js +232 -0
  311. package/vscode/src/vs/workbench/services/agentHost/common/agentHostPermissionService.d.ts +83 -0
  312. package/vscode/src/vs/workbench/services/agentHost/common/agentHostPermissionService.js +243 -0
  313. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +0 -749
  314. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.js +0 -14
  315. package/vscode/src/vs/platform/agentHost/common/state/sessionCapabilities.d.ts +0 -17
  316. package/vscode/src/vs/platform/agentHost/common/state/sessionCapabilities.js +0 -5
  317. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +0 -40
  318. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.js +0 -14
  319. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +0 -61
  320. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +0 -638
  321. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +0 -131
  322. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +0 -363
  323. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +0 -24
  324. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +0 -306
  325. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -23
  326. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +0 -97
  327. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatStatusWidget.css +0 -57
  328. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +0 -50
  329. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.js +0 -29
  330. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +0 -50
  331. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +0 -78
  332. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +0 -77
  333. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +0 -120
  334. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +0 -10
  335. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +0 -23
  336. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +0 -242
  337. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +0 -1701
  338. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +0 -191
  339. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +0 -728
  340. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.d.ts +0 -14
  341. 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(_configurationService, _instantiationService, _logService) {
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.Disconnected
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 addSSHConnection(entry, connection) {
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.Connected
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.Disconnected;
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.Connected
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.store.dispose();
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 transport = store.add(( new WebSocketClientTransport(address, connectionToken)));
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.Connecting
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.Disconnected;
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.Connected;
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.Disconnected;
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 === RemoteAgentHostConnectionStatus.Connected
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.store.dispose();
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 type { IAhpServerNotification, IJsonRpcResponse, IProtocolMessage } from "../common/state/sessionProtocol.js";
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<IProtocolMessage>;
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
- constructor(_address: string, _connectionToken?: string | undefined);
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
- send(message: IProtocolMessage | IAhpServerNotification | IJsonRpcResponse): void;
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
- const text = typeof event.data === "string" ? event.data : "";
58
- const message = JSON.parse(text);
59
- this._onMessage.fire(message);
60
- } catch {}
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._onClose.fire();
107
+ if (!this._closeFired) {
108
+ this._closeFired = true;
109
+ this._onClose.fire();
110
+ }
64
111
  });
65
112
  ws.addEventListener("error", () => {
66
- this._onClose.fire();
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
- this._ws.send(JSON.stringify(message));
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 IResourceDeleteParams, type IResourceDeleteResult, type IResourceListResult, type IResourceMoveParams, type IResourceMoveResult, type IResourceReadResult, type IResourceWriteParams, type IResourceWriteResult } from "./state/protocol/commands.js";
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<IResourceListResult>;
13
- resourceRead(uri: URI): Promise<IResourceReadResult>;
14
- resourceWrite(params: IResourceWriteParams): Promise<IResourceWriteResult>;
15
- resourceDelete(params: IResourceDeleteParams): Promise<IResourceDeleteResult>;
16
- resourceMove(params: IResourceMoveParams): Promise<IResourceMoveResult>;
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 './state/protocol/commands.js';
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 createFileSystemProviderError(
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 createFileSystemProviderError(
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 createFileSystemProviderError(
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
- err instanceof Error ? err.message : String(err),
146
- FileSystemProviderErrorCode.NoPermissions
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 createFileSystemProviderError(
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 };