@codingame/monaco-vscode-chat-service-override 37.1.0 → 37.2.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 (205) hide show
  1. package/index.js +15 -5
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/browser/agentHostEnablementService.js +1 -1
  4. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.d.ts +104 -0
  5. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +827 -0
  6. package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.d.ts +15 -0
  7. package/vscode/src/vs/workbench/api/browser/mainThreadChatCodeMapper.js +71 -0
  8. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.d.ts +16 -0
  9. package/vscode/src/vs/workbench/api/browser/mainThreadChatContext.js +95 -0
  10. package/vscode/src/vs/workbench/api/browser/mainThreadChatDebug.d.ts +22 -0
  11. package/vscode/src/vs/workbench/api/browser/mainThreadChatDebug.js +286 -0
  12. package/vscode/src/vs/workbench/api/browser/mainThreadChatInputNotification.d.ts +10 -0
  13. package/vscode/src/vs/workbench/api/browser/mainThreadChatInputNotification.js +38 -0
  14. package/vscode/src/vs/workbench/api/browser/mainThreadChatQuota.d.ts +9 -0
  15. package/vscode/src/vs/workbench/api/browser/mainThreadChatQuota.js +22 -0
  16. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.d.ts +130 -0
  17. package/vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js +907 -0
  18. package/vscode/src/vs/workbench/api/browser/mainThreadChatStatus.d.ts +10 -0
  19. package/vscode/src/vs/workbench/api/browser/mainThreadChatStatus.js +28 -0
  20. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.d.ts +27 -0
  21. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js +167 -0
  22. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.d.ts +46 -0
  23. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +356 -0
  24. package/vscode/src/vs/workbench/contrib/agentsVoice/browser/agentsVoiceWidgetBinding.js +1 -1
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +1 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +2 -2
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/exportAgentHostDebugLogsAction.js +1 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +1 -1
  29. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +2 -2
  30. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +1 -1
  31. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +2 -2
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +1 -1
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationContentExpander.d.ts +1 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationItemProvider.d.ts +1 -1
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentCustomizationSyncProvider.d.ts +1 -1
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostActiveClientService.d.ts +1 -1
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostExistingSessionHarnessPickerEnablement.js +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.d.ts +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPermissionUiContribution.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostPromptCacheNotification.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionHandler.js +5 -3
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSettings.contribution.js +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSignedOutModelsNotification.js +2 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentSessionSettings.contribution.js +2 -2
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/openSessionLinkOpener.contribution.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +1 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +1 -1
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.js +2 -2
  59. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +1 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemsModel.js +3 -3
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationPresentation.d.ts +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigration.d.ts +1 -1
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMigrationCategories.js +1 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/embeddedAgentPluginDetail.d.ts +1 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +1 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +1 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chat.shared.contribution.js +12 -12
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.d.ts +1 -1
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/agentHostChatDebugProvider.js +1 -1
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +1 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCacheExplorerView.d.ts +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.d.ts +1 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.d.ts +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.d.ts +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +1 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.d.ts +1 -1
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.d.ts +1 -1
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.d.ts +1 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.d.ts +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +1 -1
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.d.ts +1 -1
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +1 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatPromoNotification.js +1 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuotaNotification.js +2 -2
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionDescription.d.ts +2 -0
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionDescription.js +57 -0
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +2 -2
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +1 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +1 -1
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +1 -1
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +1 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.d.ts +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationConfig.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/browser/expNotification/chatExpNotificationContribution.js +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +1 -1
  111. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +2 -2
  112. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +1 -1
  113. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +1 -1
  114. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +1 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +3 -3
  116. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +1 -1
  117. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +1 -1
  119. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/agentHostInputCompletions.js +1 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCommandArgumentHint.js +1 -1
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +2 -2
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +1 -1
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +10 -2
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputReferenceDecorations.js +1 -1
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +1 -1
  129. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugEvents.d.ts +1 -1
  130. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.d.ts +253 -0
  131. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +20 -0
  132. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +1 -1
  133. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +1 -1
  134. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +2 -2
  135. package/vscode/src/vs/workbench/contrib/chat/common/customizationHarnessService.d.ts +300 -0
  136. package/vscode/src/vs/workbench/contrib/chat/common/customizationHarnessService.js +272 -0
  137. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.d.ts +25 -0
  138. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginEnablement.js +178 -0
  139. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +78 -0
  140. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.js +51 -0
  141. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +2 -2
  142. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +2 -2
  143. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.d.ts +67 -0
  144. package/vscode/src/vs/workbench/contrib/chat/common/plugins/fileBackedInstalledPluginsStore.js +195 -0
  145. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.d.ts +67 -0
  146. package/vscode/src/vs/workbench/contrib/chat/common/plugins/marketplaceReference.js +294 -0
  147. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +212 -0
  148. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +955 -0
  149. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.d.ts +31 -0
  150. package/vscode/src/vs/workbench/contrib/chat/common/plugins/strictKnownMarketplaces.js +122 -0
  151. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.d.ts +1 -1
  152. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +1 -1
  153. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.d.ts +65 -0
  154. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/computeAutomaticInstructions.js +698 -0
  155. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +50 -0
  156. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +78 -0
  157. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +77 -0
  158. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +120 -0
  159. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +10 -0
  160. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +23 -0
  161. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/extensionPromptFileService.d.ts +92 -0
  162. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/extensionPromptFileService.js +335 -0
  163. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +235 -0
  164. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +1673 -0
  165. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +202 -0
  166. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +872 -0
  167. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/confirmationTool.d.ts +36 -0
  168. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/confirmationTool.js +239 -0
  169. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/editFileTool.d.ts +21 -0
  170. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/editFileTool.js +143 -0
  171. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/manageTodoListTool.d.ts +24 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/manageTodoListTool.js +298 -0
  173. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/reviewPlanTool.d.ts +25 -0
  174. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/reviewPlanTool.js +177 -0
  175. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.d.ts +73 -0
  176. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.js +577 -0
  177. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactRulesTool.d.ts +11 -0
  178. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactRulesTool.js +90 -0
  179. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactsTool.d.ts +16 -0
  180. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/setArtifactsTool.js +130 -0
  181. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/taskCompleteTool.d.ts +12 -0
  182. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/taskCompleteTool.js +53 -0
  183. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/toolHelpers.d.ts +5 -0
  184. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/toolHelpers.js +12 -0
  185. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/tools.d.ts +10 -0
  186. package/vscode/src/vs/workbench/contrib/chat/common/tools/builtinTools/tools.js +91 -0
  187. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +38 -0
  188. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +518 -0
  189. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +6 -0
  190. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +231 -0
  191. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +1 -1
  192. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +4 -4
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +1 -1
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +1 -1
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +1 -1
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +1 -1
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +1 -1
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +1 -1
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +1 -1
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +1 -1
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +1 -1
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +1 -1
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.d.ts +1 -1
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCache.js +1 -1
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalOutputCompressor.js +1 -1
@@ -0,0 +1,827 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { DeferredPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
+ import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
5
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
6
+ import { Disposable, DisposableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
8
+ import { revive } from '@codingame/monaco-vscode-api/vscode/vs/base/common/marshalling';
9
+ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
10
+ import { escapeRegExpCharacters } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
11
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
12
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
13
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
14
+ import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
15
+ import { getWordAtText } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/wordHelper';
16
+ import { CompletionItemKind } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
17
+ import { ILanguageFeaturesService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service';
18
+ import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
19
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
20
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
21
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
22
+ import { IUriIdentityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
23
+ import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
24
+ import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service';
25
+ import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
26
+ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
27
+ import { PromptsType, isValidPromptType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
28
+ import { ChatRequestAgentPart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/requestParser/chatParserTypes';
29
+ import { ChatRequestParser } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/common/requestParser/chatRequestParser';
30
+ import { getDynamicVariablesForWidget, getSelectedToolAndToolSetsForWidget } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/attachments/chatVariables';
31
+ import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
32
+ import { ChatSessionOptionsMap } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
33
+ import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
34
+ import { ChatModeKind, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
35
+ import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
36
+ import { extHostNamedCustomer } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extHostCustomers';
37
+ import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
38
+ import { ExtHostContext, MainContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol';
39
+ import { NotebookDto } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/api/browser/mainThreadNotebookDto';
40
+ import { isUntitledChatSession, getChatSessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
41
+ import { ICustomizationHarnessService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/customizationHarnessService.service';
42
+ import { AICustomizationManagementSection } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService';
43
+ import { IAgentPluginService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/plugins/agentPluginService.service';
44
+ import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
45
+ import { getAgentSessionProvider, AgentSessionProviders } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessions';
46
+ import { addDynamicVariableActionId } from '@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/widget/input/editor/chatDynamicVariablesConstant';
47
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
48
+
49
+ class MainThreadChatTask {
50
+ get onDidAddProgress() {
51
+ return this._onDidAddProgress.event;
52
+ }
53
+ constructor(content) {
54
+ this.content = content;
55
+ this.kind = "progressTask";
56
+ this.deferred = ( new DeferredPromise());
57
+ this._onDidAddProgress = ( new Emitter());
58
+ this.progress = [];
59
+ }
60
+ task() {
61
+ return this.deferred.p;
62
+ }
63
+ isSettled() {
64
+ return this.deferred.isSettled;
65
+ }
66
+ complete(v) {
67
+ this.deferred.complete(v);
68
+ }
69
+ add(progress) {
70
+ this.progress.push(progress);
71
+ this._onDidAddProgress.fire(progress);
72
+ }
73
+ toJSON() {
74
+ return {
75
+ kind: "progressTaskSerialized",
76
+ content: this.content,
77
+ progress: this.progress
78
+ };
79
+ }
80
+ }
81
+ let MainThreadChatAgents2 = class MainThreadChatAgents2 extends Disposable {
82
+ constructor(
83
+ extHostContext,
84
+ _chatAgentService,
85
+ _chatSessionService,
86
+ _chatService,
87
+ _languageFeaturesService,
88
+ _chatWidgetService,
89
+ _instantiationService,
90
+ _logService,
91
+ _extensionService,
92
+ _uriIdentityService,
93
+ _promptsService,
94
+ _languageModelToolsService,
95
+ _customizationHarnessService,
96
+ _telemetryService,
97
+ _agentPluginService,
98
+ _environmentService
99
+ ) {
100
+ super();
101
+ this._chatAgentService = _chatAgentService;
102
+ this._chatSessionService = _chatSessionService;
103
+ this._chatService = _chatService;
104
+ this._languageFeaturesService = _languageFeaturesService;
105
+ this._chatWidgetService = _chatWidgetService;
106
+ this._instantiationService = _instantiationService;
107
+ this._logService = _logService;
108
+ this._extensionService = _extensionService;
109
+ this._uriIdentityService = _uriIdentityService;
110
+ this._promptsService = _promptsService;
111
+ this._languageModelToolsService = _languageModelToolsService;
112
+ this._customizationHarnessService = _customizationHarnessService;
113
+ this._telemetryService = _telemetryService;
114
+ this._agentPluginService = _agentPluginService;
115
+ this._environmentService = _environmentService;
116
+ this._agents = this._register(( new DisposableMap()));
117
+ this._agentCompletionProviders = this._register(( new DisposableMap()));
118
+ this._agentIdsToCompletionProviders = this._register(( new DisposableMap()));
119
+ this._chatParticipantDetectionProviders = this._register(( new DisposableMap()));
120
+ this._promptFileProviders = this._register(( new DisposableMap()));
121
+ this._promptFileProviderEmitters = this._register(( new DisposableMap()));
122
+ this._promptFileContentRegistrations = this._register(( new DisposableMap()));
123
+ this._customizationProviders = this._register(( new DisposableMap()));
124
+ this._customizationProviderEmitters = this._register(( new DisposableMap()));
125
+ this._pendingProgress = ( new Map());
126
+ this._activeTasks = ( new Map());
127
+ this._unresolvedAnchors = ( new Map());
128
+ this._proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostChatAgents2));
129
+ this._register(this._chatService.onDidDisposeSession(e => {
130
+ for (const resource of e.sessionResources) {
131
+ this._proxy.$releaseSession(resource);
132
+ }
133
+ }));
134
+ this._register(this._chatService.onDidPerformUserAction(e => {
135
+ if (typeof e.agentId === "string") {
136
+ for (const [handle, agent] of this._agents) {
137
+ if (agent.id === e.agentId) {
138
+ if (e.action.kind === "vote") {
139
+ this._proxy.$acceptFeedback(handle, e.result ?? {}, e.action);
140
+ } else {
141
+ this._proxy.$acceptAction(handle, e.result || {}, e);
142
+ }
143
+ break;
144
+ }
145
+ }
146
+ }
147
+ }));
148
+ this._register(this._chatService.onDidReceiveQuestionCarouselAnswer(e => {
149
+ this._proxy.$handleQuestionCarouselAnswer(e.requestId, e.resolveId, e.answers);
150
+ }));
151
+ this._register(this._chatWidgetService.onDidChangeFocusedSession(() => {
152
+ this._acceptActiveChatSession(this._chatWidgetService.lastFocusedWidget);
153
+ }));
154
+ this._acceptActiveChatSession(this._chatWidgetService.lastFocusedWidget);
155
+ this._register(this._promptsService.onDidChangeCustomAgents(() => {
156
+ this._proxy.$onDidChangeCustomAgents();
157
+ }));
158
+ this._register(this._promptsService.onDidChangeInstructions(() => {
159
+ this._proxy.$onDidChangeInstructions();
160
+ }));
161
+ this._register(this._promptsService.onDidChangeSkills(() => {
162
+ this._proxy.$onDidChangeSkills();
163
+ }));
164
+ this._register(this._promptsService.onDidChangeSlashCommands(() => {
165
+ this._proxy.$onDidChangeSlashCommands();
166
+ }));
167
+ this._register(this._promptsService.onDidChangeHooks(() => {
168
+ this._proxy.$onDidChangeHooks();
169
+ }));
170
+ this._register(autorun(reader => {
171
+ this._agentPluginService.plugins.read(reader);
172
+ this._proxy.$onDidChangePlugins();
173
+ }));
174
+ }
175
+ _acceptActiveChatSession(widget) {
176
+ const sessionResource = widget?.viewModel?.sessionResource;
177
+ const isLocal = sessionResource && getAgentSessionProvider(sessionResource) === AgentSessionProviders.Local;
178
+ this._proxy.$acceptActiveChatSession(isLocal ? sessionResource : undefined);
179
+ }
180
+ _toChatResourceSource(storage) {
181
+ switch (storage) {
182
+ case PromptsStorage.local:
183
+ return "local";
184
+ case PromptsStorage.user:
185
+ return "user";
186
+ case PromptsStorage.extension:
187
+ return "extension";
188
+ case PromptsStorage.plugin:
189
+ return "plugin";
190
+ case PromptsStorage.builtIn:
191
+ return "builtin";
192
+ }
193
+ }
194
+ _toCustomAgentDto(agent) {
195
+ return {
196
+ uri: agent.uri,
197
+ name: agent.name,
198
+ description: agent.description,
199
+ source: this._toChatResourceSource(agent.source.storage),
200
+ extensionId: agent.source.storage === PromptsStorage.extension ? agent.source.extensionId.value : undefined,
201
+ pluginUri: agent.source.storage === PromptsStorage.plugin ? agent.source.pluginUri : undefined,
202
+ sessionTypes: agent.sessionTypes,
203
+ argumentHint: agent.argumentHint,
204
+ tools: agent.tools,
205
+ model: agent.model,
206
+ userInvocable: agent.visibility.userInvocable,
207
+ disableModelInvocation: !agent.visibility.agentInvocable,
208
+ enabled: agent.enabled
209
+ };
210
+ }
211
+ _toInstructionDto(instruction) {
212
+ return {
213
+ uri: instruction.uri,
214
+ name: instruction.name,
215
+ description: instruction.description,
216
+ source: this._toChatResourceSource(instruction.storage),
217
+ extensionId: instruction.extension?.identifier.value,
218
+ pluginUri: instruction.pluginUri,
219
+ sessionTypes: instruction.sessionTypes,
220
+ pattern: instruction.pattern
221
+ };
222
+ }
223
+ _toSkillDto(skill) {
224
+ return {
225
+ uri: skill.uri,
226
+ name: skill.name,
227
+ description: skill.description,
228
+ source: this._toChatResourceSource(skill.storage),
229
+ extensionId: skill.extension?.identifier.value,
230
+ pluginUri: skill.pluginUri,
231
+ sessionTypes: skill.sessionTypes,
232
+ userInvocable: skill.userInvocable,
233
+ disableModelInvocation: skill.disableModelInvocation
234
+ };
235
+ }
236
+ _toSlashCommandDto(slashCommand) {
237
+ return {
238
+ uri: slashCommand.uri,
239
+ name: slashCommand.name,
240
+ description: slashCommand.description,
241
+ source: this._toChatResourceSource(slashCommand.storage),
242
+ extensionId: slashCommand.extension?.identifier.value,
243
+ pluginUri: slashCommand.pluginUri,
244
+ sessionTypes: slashCommand.sessionTypes,
245
+ argumentHint: slashCommand.argumentHint,
246
+ userInvocable: slashCommand.userInvocable
247
+ };
248
+ }
249
+ _toHookDto(hookFile) {
250
+ return {
251
+ uri: hookFile.uri,
252
+ sessionTypes: hookFile.sessionTypes,
253
+ source: this._toChatResourceSource(hookFile.storage),
254
+ extensionId: hookFile.extension?.identifier.value,
255
+ pluginUri: hookFile.pluginUri
256
+ };
257
+ }
258
+ _toPluginDto(plugin) {
259
+ return {
260
+ uri: plugin.uri
261
+ };
262
+ }
263
+ async $provideCustomAgents(token) {
264
+ const customAgents = await this._promptsService.getCustomAgents(token);
265
+ return ( customAgents.map(agent => this._toCustomAgentDto(agent)));
266
+ }
267
+ async $provideInstructions(token) {
268
+ const instructions = await this._promptsService.getInstructionFiles(token);
269
+ return ( instructions.map(instruction => this._toInstructionDto(instruction)));
270
+ }
271
+ async $provideSkills(token) {
272
+ const skills = (await this._promptsService.findAgentSkills(token)) ?? [];
273
+ return ( skills.map(skill => this._toSkillDto(skill)));
274
+ }
275
+ async $provideSlashCommands(token) {
276
+ const slashCommands = await this._promptsService.getPromptSlashCommands(token);
277
+ return ( slashCommands.map(slashCommand => this._toSlashCommandDto(slashCommand)));
278
+ }
279
+ async $provideHooks(token) {
280
+ const hookFiles = await this._promptsService.listPromptFiles(PromptsType.hook, token);
281
+ return ( hookFiles.map(hookFile => this._toHookDto(hookFile)));
282
+ }
283
+ async $providePlugins(_token) {
284
+ const plugins = this._agentPluginService.plugins.get();
285
+ return ( plugins.map(plugin => this._toPluginDto(plugin)));
286
+ }
287
+ $unregisterAgent(handle) {
288
+ this._agents.deleteAndDispose(handle);
289
+ }
290
+ async $transferActiveChatSession(toWorkspace) {
291
+ const widget = this._chatWidgetService.lastFocusedWidget;
292
+ const model = widget?.viewModel?.model;
293
+ if (!model) {
294
+ this._logService.error(`MainThreadChat#$transferActiveChatSession: No active chat session found`);
295
+ return;
296
+ }
297
+ await this._chatService.transferChatSession(model.sessionResource, URI.revive(toWorkspace));
298
+ }
299
+ async $registerAgent(handle, extension, id, metadata, dynamicProps) {
300
+ await this._extensionService.whenInstalledExtensionsRegistered();
301
+ const staticAgentRegistration = this._chatAgentService.getAgent(id, true);
302
+ const chatSessionRegistration = this._chatSessionService.getAllChatSessionContributions().find(c => c.type === id || c.alternativeIds?.includes(id));
303
+ if (!staticAgentRegistration && !chatSessionRegistration && !dynamicProps) {
304
+ if (this._chatAgentService.getAgentsByName(id).length) {
305
+ throw ( new Error(
306
+ `chatParticipant must be declared with an ID in package.json. The "id" property may be missing! "${id}"`
307
+ ));
308
+ }
309
+ throw ( new Error(`chatParticipant must be declared in package.json: ${id}`));
310
+ }
311
+ const impl = {
312
+ invoke: async (request, progress, history, token) => {
313
+ const chatSession = this._chatService.getSession(request.sessionResource);
314
+ this._pendingProgress.set(request.requestId, {
315
+ progress,
316
+ chatSession,
317
+ isSubagent: !!request.subAgentInvocationId
318
+ });
319
+ try {
320
+ const chatSessionResource = request.sessionResource;
321
+ const chatSessionContext = {
322
+ chatSessionResource,
323
+ isUntitled: isUntitledChatSession(chatSessionResource),
324
+ initialSessionOptions: ChatSessionOptionsMap.toStrValueArray(this._chatSessionService.getSessionOptions(chatSessionResource))
325
+ };
326
+ const rpcResult = await this._proxy.$invokeAgent(handle, request, {
327
+ history,
328
+ chatSessionContext
329
+ }, token);
330
+ if (rpcResult?.errorCallstack && !rpcResult.errorDetails?.isRateLimited && !rpcResult.errorDetails?.isQuotaExceeded && !rpcResult.errorDetails?.isExpectedError) {
331
+ this._telemetryService.publicLogError2("chatAgentError", {
332
+ callstack: rpcResult.errorCallstack,
333
+ msg: rpcResult.errorDetails?.message ?? "",
334
+ errorName: rpcResult.errorName ?? "",
335
+ agent: id,
336
+ agentExtensionId: extension.value
337
+ });
338
+ }
339
+ if (rpcResult) {
340
+ const {
341
+ errorCallstack: _,
342
+ errorName: _2,
343
+ ...result
344
+ } = rpcResult;
345
+ return result;
346
+ }
347
+ return {};
348
+ } finally {
349
+ this._pendingProgress.delete(request.requestId);
350
+ }
351
+ },
352
+ setRequestTools: (requestId, tools) => {
353
+ this._proxy.$setRequestTools(requestId, tools);
354
+ },
355
+ setYieldRequested: (requestId, value) => {
356
+ this._proxy.$setYieldRequested(requestId, value);
357
+ },
358
+ provideFollowups: async (request, result, history, token) => {
359
+ if (!this._agents.get(handle)?.hasFollowups) {
360
+ return [];
361
+ }
362
+ return this._proxy.$provideFollowups(request, handle, result, {
363
+ history
364
+ }, token);
365
+ },
366
+ provideChatTitle: (history, token) => {
367
+ return this._proxy.$provideChatTitle(handle, history, token);
368
+ },
369
+ provideChatSummary: (history, token) => {
370
+ return this._proxy.$provideChatSummary(handle, history, token);
371
+ }
372
+ };
373
+ if (chatSessionRegistration?.alternativeIds?.includes(id)) {
374
+ return;
375
+ }
376
+ let disposable;
377
+ if (!staticAgentRegistration && dynamicProps) {
378
+ const extensionDescription = this._extensionService.extensions.find(e => ExtensionIdentifier.equals(e.identifier, extension));
379
+ disposable = this._chatAgentService.registerDynamicAgent({
380
+ id,
381
+ name: dynamicProps.name,
382
+ description: dynamicProps.description,
383
+ extensionId: extension,
384
+ extensionVersion: extensionDescription?.version,
385
+ extensionDisplayName: extensionDescription?.displayName ?? extension.value,
386
+ extensionPublisherId: extensionDescription?.publisher ?? "",
387
+ publisherDisplayName: dynamicProps.publisherName,
388
+ fullName: dynamicProps.fullName,
389
+ metadata: revive(metadata),
390
+ slashCommands: [],
391
+ disambiguation: [],
392
+ locations: [ChatAgentLocation.Chat],
393
+ modes: [ChatModeKind.Ask, ChatModeKind.Agent, ChatModeKind.Edit]
394
+ }, impl);
395
+ } else {
396
+ disposable = this._chatAgentService.registerAgentImplementation(id, impl);
397
+ }
398
+ this._agents.set(handle, {
399
+ id: id,
400
+ extensionId: extension,
401
+ dispose: () => disposable.dispose(),
402
+ hasFollowups: metadata.hasFollowups
403
+ });
404
+ }
405
+ async $updateAgent(handle, metadataUpdate) {
406
+ await this._extensionService.whenInstalledExtensionsRegistered();
407
+ const data = this._agents.get(handle);
408
+ if (!data) {
409
+ this._logService.error(
410
+ `MainThreadChatAgents2#$updateAgent: No agent with handle ${handle} registered`
411
+ );
412
+ return;
413
+ }
414
+ data.hasFollowups = metadataUpdate.hasFollowups;
415
+ this._chatAgentService.updateAgent(data.id, revive(metadataUpdate));
416
+ }
417
+ async $handleProgressChunk(requestId, chunks) {
418
+ const pendingProgress = this._pendingProgress.get(requestId);
419
+ if (!pendingProgress) {
420
+ this._logService.warn(
421
+ `MainThreadChatAgents2#$handleProgressChunk: No pending progress for requestId ${requestId}`
422
+ );
423
+ return;
424
+ }
425
+ const {
426
+ progress,
427
+ chatSession,
428
+ isSubagent
429
+ } = pendingProgress;
430
+ const chatProgressParts = [];
431
+ const response = chatSession?.getRequests().find(req => req.id === requestId)?.response;
432
+ for (const item of chunks) {
433
+ const [progress, responsePartHandle] = Array.isArray(item) ? item : [item];
434
+ if (progress.kind === "externalEdits") {
435
+ if (chatSession?.editingSession && responsePartHandle !== undefined && response) {
436
+ const parts = progress.start ? await chatSession.editingSession.startExternalEdits(
437
+ response,
438
+ responsePartHandle,
439
+ revive(progress.resources),
440
+ progress.undoStopId
441
+ ) : await chatSession.editingSession.stopExternalEdits(response, responsePartHandle);
442
+ chatProgressParts.push(...parts);
443
+ }
444
+ continue;
445
+ }
446
+ if (progress.kind === "beginToolInvocation") {
447
+ this._languageModelToolsService.beginToolCall({
448
+ toolCallId: progress.toolCallId,
449
+ toolId: progress.toolName,
450
+ chatRequestId: requestId,
451
+ sessionResource: chatSession?.sessionResource,
452
+ subagentInvocationId: progress.subagentInvocationId
453
+ });
454
+ continue;
455
+ }
456
+ if (progress.kind === "updateToolInvocation") {
457
+ this._languageModelToolsService.updateToolStream(
458
+ progress.toolCallId,
459
+ progress.streamData?.partialInput,
460
+ CancellationToken.None
461
+ );
462
+ continue;
463
+ }
464
+ if (progress.kind === "usage") {
465
+ if (isSubagent) {
466
+ chatProgressParts.push({
467
+ kind: "usage",
468
+ promptTokens: progress.promptTokens,
469
+ completionTokens: progress.completionTokens,
470
+ outputBuffer: progress.outputBuffer,
471
+ copilotCredits: progress.copilotCredits,
472
+ promptTokenDetails: progress.promptTokenDetails
473
+ });
474
+ } else if (response) {
475
+ response.setUsage({
476
+ kind: "usage",
477
+ promptTokens: progress.promptTokens,
478
+ completionTokens: progress.completionTokens,
479
+ outputBuffer: progress.outputBuffer,
480
+ copilotCredits: progress.copilotCredits,
481
+ promptTokenDetails: progress.promptTokenDetails
482
+ });
483
+ } else {
484
+ this._logService.warn(
485
+ `MainThreadChatAgents2#$handleProgressChunk: No response model for usage of non-subagent request ${requestId}; dropping usage.`
486
+ );
487
+ }
488
+ continue;
489
+ }
490
+ const revivedProgress = progress.kind === "notebookEdit" ? ChatNotebookEdit.fromChatEdit(progress) : revive(progress);
491
+ if (revivedProgress.kind === "notebookEdit" || revivedProgress.kind === "textEdit" || revivedProgress.kind === "codeblockUri") {
492
+ revivedProgress.uri = this._uriIdentityService.asCanonicalUri(revivedProgress.uri);
493
+ }
494
+ if (responsePartHandle !== undefined) {
495
+ if (revivedProgress.kind === "progressTask") {
496
+ const handle = responsePartHandle;
497
+ const responsePartId = `${requestId}_${handle}`;
498
+ const task = ( new MainThreadChatTask(revivedProgress.content));
499
+ this._activeTasks.set(responsePartId, task);
500
+ chatProgressParts.push(task);
501
+ } else if (responsePartHandle !== undefined) {
502
+ const responsePartId = `${requestId}_${responsePartHandle}`;
503
+ const task = this._activeTasks.get(responsePartId);
504
+ switch (revivedProgress.kind) {
505
+ case "progressTaskResult":
506
+ if (task && revivedProgress.content) {
507
+ task.complete(revivedProgress.content.value);
508
+ this._activeTasks.delete(responsePartId);
509
+ } else {
510
+ task?.complete(undefined);
511
+ }
512
+ break;
513
+ case "warning":
514
+ case "reference":
515
+ task?.add(revivedProgress);
516
+ break;
517
+ }
518
+ }
519
+ continue;
520
+ }
521
+ if (revivedProgress.kind === "inlineReference" && revivedProgress.resolveId && response) {
522
+ if (!( this._unresolvedAnchors.has(requestId))) {
523
+ this._unresolvedAnchors.set(requestId, ( new Map()));
524
+ }
525
+ this._unresolvedAnchors.get(requestId)?.set(revivedProgress.resolveId, {
526
+ response
527
+ });
528
+ }
529
+ chatProgressParts.push(revivedProgress);
530
+ }
531
+ progress(chatProgressParts);
532
+ }
533
+ $handleAnchorResolve(requestId, handle, resolveAnchor) {
534
+ const unresolvedAnchorsForRequest = this._unresolvedAnchors.get(requestId);
535
+ if (!unresolvedAnchorsForRequest) {
536
+ return;
537
+ }
538
+ const unresolvedAnchor = unresolvedAnchorsForRequest.get(handle);
539
+ if (!unresolvedAnchor) {
540
+ return;
541
+ }
542
+ unresolvedAnchorsForRequest.delete(handle);
543
+ if (unresolvedAnchorsForRequest.size === 0) {
544
+ this._unresolvedAnchors.delete(requestId);
545
+ }
546
+ if (resolveAnchor) {
547
+ const revivedAnchor = revive(resolveAnchor);
548
+ unresolvedAnchor.response.resolveInlineReference(handle, revivedAnchor);
549
+ }
550
+ }
551
+ $registerAgentCompletionsProvider(handle, id, triggerCharacters) {
552
+ const provide = async (query, token) => {
553
+ const completions = await this._proxy.$invokeCompletionProvider(handle, query, token);
554
+ return ( completions.map(c => ({
555
+ ...c,
556
+ icon: c.icon ? ThemeIcon.fromId(c.icon) : undefined
557
+ })));
558
+ };
559
+ this._agentIdsToCompletionProviders.set(id, this._chatAgentService.registerAgentCompletionProvider(id, provide));
560
+ this._agentCompletionProviders.set(handle, this._languageFeaturesService.completionProvider.register({
561
+ scheme: Schemas.vscodeChatInput,
562
+ hasAccessToAllModels: true
563
+ }, {
564
+ _debugDisplayName: "chatAgentCompletions:" + handle,
565
+ triggerCharacters,
566
+ provideCompletionItems: async (model, position, _context, token) => {
567
+ const widget = this._chatWidgetService.getWidgetByInputUri(model.uri);
568
+ if (!widget || !widget.viewModel) {
569
+ return;
570
+ }
571
+ const triggerCharsPart = ( triggerCharacters.map(c => escapeRegExpCharacters(c))).join("");
572
+ const wordRegex = ( new RegExp(`[${triggerCharsPart}]\\S*`, "g"));
573
+ const query = getWordAtText(position.column, wordRegex, model.getLineContent(position.lineNumber), 0)?.word ?? "";
574
+ if (query && !( triggerCharacters.some(c => query.startsWith(c)))) {
575
+ return;
576
+ }
577
+ const context = {
578
+ sessionType: getChatSessionType(widget.viewModel.model.sessionResource)
579
+ };
580
+ const parsedRequest = this._instantiationService.createInstance(ChatRequestParser).parseChatRequestWithReferences(
581
+ getDynamicVariablesForWidget(widget),
582
+ getSelectedToolAndToolSetsForWidget(widget),
583
+ model.getValue(),
584
+ ChatAgentLocation.Chat,
585
+ context
586
+ ).parts;
587
+ const agentPart = parsedRequest.find(part => part instanceof ChatRequestAgentPart);
588
+ const thisAgentId = this._agents.get(handle)?.id;
589
+ if (agentPart?.agent.id !== thisAgentId) {
590
+ return;
591
+ }
592
+ const range = computeCompletionRanges(model, position, wordRegex);
593
+ if (!range) {
594
+ return null;
595
+ }
596
+ const result = await provide(query, token);
597
+ const variableItems = ( result.map(v => {
598
+ const insertText = v.insertText ?? (typeof v.label === "string" ? v.label : v.label.label);
599
+ const rangeAfterInsert = ( new Range(
600
+ range.insert.startLineNumber,
601
+ range.insert.startColumn,
602
+ range.insert.endLineNumber,
603
+ range.insert.startColumn + insertText.length
604
+ ));
605
+ return {
606
+ label: v.label,
607
+ range,
608
+ insertText: insertText + " ",
609
+ kind: CompletionItemKind.Text,
610
+ detail: v.detail,
611
+ documentation: v.documentation,
612
+ command: {
613
+ id: addDynamicVariableActionId,
614
+ title: "",
615
+ arguments: [{
616
+ id: v.id,
617
+ widget,
618
+ range: rangeAfterInsert,
619
+ variableData: revive(v.value),
620
+ command: v.command
621
+ }]
622
+ }
623
+ };
624
+ }));
625
+ return {
626
+ suggestions: variableItems
627
+ };
628
+ }
629
+ }));
630
+ }
631
+ $unregisterAgentCompletionsProvider(handle, id) {
632
+ this._agentCompletionProviders.deleteAndDispose(handle);
633
+ this._agentIdsToCompletionProviders.deleteAndDispose(id);
634
+ }
635
+ $registerChatParticipantDetectionProvider(handle) {
636
+ this._chatParticipantDetectionProviders.set(
637
+ handle,
638
+ this._chatAgentService.registerChatParticipantDetectionProvider(handle, {
639
+ provideParticipantDetection: async (request, history, options, token) => {
640
+ return await this._proxy.$detectChatParticipant(handle, request, {
641
+ history
642
+ }, options, token);
643
+ }
644
+ })
645
+ );
646
+ }
647
+ $unregisterChatParticipantDetectionProvider(handle) {
648
+ this._chatParticipantDetectionProviders.deleteAndDispose(handle);
649
+ }
650
+ async $registerPromptFileProvider(handle, type, extensionId) {
651
+ const extension = await this._extensionService.getExtension(extensionId.value);
652
+ if (!extension) {
653
+ this._logService.error(
654
+ `[MainThreadChatAgents2] Could not find extension for prompt file provider: ${extensionId.value}`
655
+ );
656
+ return;
657
+ }
658
+ if (!isValidPromptType(type)) {
659
+ this._logService.error(`[MainThreadChatAgents2] Invalid contribution type: ${type}`);
660
+ return;
661
+ }
662
+ const emitter = ( new Emitter());
663
+ this._promptFileProviderEmitters.set(handle, emitter);
664
+ const contentRegistrations = ( new DisposableMap());
665
+ this._promptFileContentRegistrations.set(handle, contentRegistrations);
666
+ const disposable = this._promptsService.registerPromptFileProvider(extension, type, {
667
+ onDidChangePromptFiles: emitter.event,
668
+ providePromptFiles: async (context, token) => {
669
+ const contributions = await this._proxy.$providePromptFiles(handle, type, context, token);
670
+ if (!contributions) {
671
+ return undefined;
672
+ }
673
+ return ( contributions.map(c => {
674
+ return {
675
+ name: c.name,
676
+ description: c.description,
677
+ sessionTypes: c.sessionTypes,
678
+ when: c.when,
679
+ uri: URI.revive(c.uri)
680
+ };
681
+ }));
682
+ }
683
+ });
684
+ this._promptFileProviders.set(handle, disposable);
685
+ }
686
+ $unregisterPromptFileProvider(handle) {
687
+ this._promptFileProviders.deleteAndDispose(handle);
688
+ this._promptFileProviderEmitters.deleteAndDispose(handle);
689
+ this._promptFileContentRegistrations.deleteAndDispose(handle);
690
+ }
691
+ $onDidChangePromptFiles(handle) {
692
+ const emitter = this._promptFileProviderEmitters.get(handle);
693
+ if (emitter) {
694
+ emitter.fire();
695
+ }
696
+ }
697
+ async $registerChatSessionCustomizationProvider(handle, chatSessionType, metadata, extensionId) {
698
+ if (this._environmentService.isSessionsWindow && !this._chatSessionService.getContentProviderSchemes().includes(chatSessionType)) {
699
+ return;
700
+ }
701
+ const extension = await this._extensionService.getExtension(extensionId.value);
702
+ if (!extension) {
703
+ this._logService.error(
704
+ `[MainThreadChatAgents2] Could not find extension for customization provider: ${extensionId.value}`
705
+ );
706
+ return;
707
+ }
708
+ const emitter = ( new Emitter());
709
+ this._customizationProviderEmitters.set(handle, emitter);
710
+ const itemProvider = {
711
+ onDidChange: emitter.event,
712
+ provideChatSessionCustomizations: async (sessionResource, token) => {
713
+ const items = await this._proxy.$provideChatSessionCustomizations(handle, sessionResource, token);
714
+ if (!items) {
715
+ return undefined;
716
+ }
717
+ return ( items.map(item => ({
718
+ uri: URI.revive(item.uri),
719
+ type: item.type,
720
+ name: item.name,
721
+ source: item.source,
722
+ description: item.description,
723
+ groupKey: item.groupKey,
724
+ badge: item.badge,
725
+ badgeTooltip: item.badgeTooltip,
726
+ extensionId: item.extensionId,
727
+ pluginUri: item.pluginUri ? URI.revive(item.pluginUri) : undefined,
728
+ pluginLabel: item.pluginLabel,
729
+ userInvocable: item.userInvocable
730
+ })));
731
+ },
732
+ provideSourceFolders: async (sessionResource, type, token) => {
733
+ const folders = await this._proxy.$provideSourceFolders(handle, sessionResource, type, token);
734
+ if (!folders) {
735
+ return undefined;
736
+ }
737
+ return ( folders.map(folder => ({
738
+ uri: URI.revive(folder.uri),
739
+ label: folder.label,
740
+ source: folder.source,
741
+ destinationGroupId: folder.destinationGroupId
742
+ })));
743
+ }
744
+ };
745
+ const typeToSection = {
746
+ "agent": AICustomizationManagementSection.Agents,
747
+ "skill": AICustomizationManagementSection.Skills,
748
+ "instructions": AICustomizationManagementSection.Instructions,
749
+ "prompt": AICustomizationManagementSection.Prompts,
750
+ "hook": AICustomizationManagementSection.Hooks,
751
+ "plugins": AICustomizationManagementSection.Plugins
752
+ };
753
+ let hiddenSections;
754
+ if (metadata.supportedTypes) {
755
+ const supportedSections = ( new Set());
756
+ for (const t of metadata.supportedTypes) {
757
+ const section = typeToSection[t];
758
+ if (section) {
759
+ supportedSections.add(section);
760
+ }
761
+ }
762
+ hiddenSections = ( Object.values(typeToSection)).filter(section => !( supportedSections.has(section)));
763
+ }
764
+ const descriptor = {
765
+ id: chatSessionType,
766
+ label: metadata.label,
767
+ icon: metadata.iconId ? ThemeIcon.fromId(metadata.iconId) : ThemeIcon.fromId(Codicon.extensions.id),
768
+ hiddenSections,
769
+ itemProvider
770
+ };
771
+ const registration = this._customizationHarnessService.registerExternalHarness(descriptor);
772
+ this._customizationProviders.set(handle, registration);
773
+ }
774
+ $unregisterChatSessionCustomizationProvider(handle) {
775
+ this._customizationProviders.deleteAndDispose(handle);
776
+ this._customizationProviderEmitters.deleteAndDispose(handle);
777
+ }
778
+ $onDidChangeCustomizations(handle) {
779
+ const emitter = this._customizationProviderEmitters.get(handle);
780
+ if (emitter) {
781
+ emitter.fire();
782
+ }
783
+ }
784
+ };
785
+ MainThreadChatAgents2 = __decorate([extHostNamedCustomer(MainContext.MainThreadChatAgents2), ( __param(1, IChatAgentService)), ( __param(2, IChatSessionsService)), ( __param(3, IChatService)), ( __param(4, ILanguageFeaturesService)), ( __param(5, IChatWidgetService)), ( __param(6, IInstantiationService)), ( __param(7, ILogService)), ( __param(8, IExtensionService)), ( __param(9, IUriIdentityService)), ( __param(10, IPromptsService)), ( __param(11, ILanguageModelToolsService)), ( __param(12, ICustomizationHarnessService)), ( __param(13, ITelemetryService)), ( __param(14, IAgentPluginService)), ( __param(15, IWorkbenchEnvironmentService))], MainThreadChatAgents2);
786
+ function computeCompletionRanges(model, position, reg) {
787
+ const varWord = getWordAtText(position.column, reg, model.getLineContent(position.lineNumber), 0);
788
+ if (!varWord && model.getWordUntilPosition(position).word) {
789
+ return;
790
+ }
791
+ let insert;
792
+ let replace;
793
+ if (!varWord) {
794
+ insert = replace = Range.fromPositions(position);
795
+ } else {
796
+ insert = ( new Range(
797
+ position.lineNumber,
798
+ varWord.startColumn,
799
+ position.lineNumber,
800
+ position.column
801
+ ));
802
+ replace = ( new Range(
803
+ position.lineNumber,
804
+ varWord.startColumn,
805
+ position.lineNumber,
806
+ varWord.endColumn
807
+ ));
808
+ }
809
+ return {
810
+ insert,
811
+ replace
812
+ };
813
+ }
814
+ var ChatNotebookEdit;
815
+ (function(ChatNotebookEdit) {
816
+ function fromChatEdit(part) {
817
+ return {
818
+ kind: "notebookEdit",
819
+ uri: URI.revive(part.uri),
820
+ done: part.done,
821
+ edits: ( part.edits.map(NotebookDto.fromCellEditOperationDto))
822
+ };
823
+ }
824
+ ChatNotebookEdit.fromChatEdit = fromChatEdit;
825
+ })(ChatNotebookEdit || (ChatNotebookEdit = {}));
826
+
827
+ export { MainThreadChatAgents2, MainThreadChatTask };