@codingame/monaco-vscode-chat-service-override 20.4.1 → 21.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 (200) hide show
  1. package/index.js +15 -7
  2. package/package.json +38 -36
  3. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +2 -0
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +60 -0
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +56 -46
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +18 -16
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +52 -11
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +28 -26
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +19 -13
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +15 -12
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +11 -11
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +10 -10
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +68 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +433 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -18
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +7 -3
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +205 -551
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +7 -5
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +52 -29
  24. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -163
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +1 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +20 -5
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +17 -17
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -14
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +32 -6
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -1
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +22 -3
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +22 -9
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +6 -8
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +1 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +47 -15
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +12 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +8 -2
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +33 -8
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +3 -3
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +3 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +74 -19
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +2 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +19 -19
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +3 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -19
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.d.ts +12 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.js +36 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +36 -35
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +6 -6
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +2 -2
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +37 -9
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +238 -52
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +23 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +257 -148
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +3 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +126 -77
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -3
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +3 -13
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +55 -45
  67. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +6 -3
  68. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +13 -7
  70. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +130 -47
  71. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +5 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +6 -6
  75. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +9 -9
  76. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +4 -4
  77. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +39 -35
  78. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +9 -9
  79. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +18 -18
  80. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +12 -12
  81. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  82. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  83. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  84. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  85. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +2 -2
  86. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -14
  87. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  88. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +5 -4
  89. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +7 -4
  90. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +4 -8
  91. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +153 -168
  92. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +127 -1
  93. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +111 -1
  94. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
  95. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +2 -1
  96. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +6 -3
  97. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.d.ts +20 -0
  98. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +66 -0
  99. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +38 -0
  100. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +143 -0
  101. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +3 -1
  102. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +12 -3
  103. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.d.ts +8 -3
  104. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +41 -8
  105. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.d.ts +4 -1
  106. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +55 -22
  107. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
  110. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.d.ts +2 -0
  112. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +5 -2
  113. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.d.ts +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.js +3 -4
  115. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
  116. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +0 -5
  117. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +8 -23
  118. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
  119. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +4 -5
  120. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +11 -5
  121. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +28 -28
  122. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  123. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +12 -0
  124. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +54 -0
  125. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
  126. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +33 -31
  127. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +9 -9
  128. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.d.ts +1 -3
  129. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +9 -13
  130. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  131. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -18
  132. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +2 -1
  133. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +11 -4
  134. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  135. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -2
  136. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +1 -6
  137. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +16 -1
  138. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +84 -25
  139. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +10 -0
  140. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +55 -0
  141. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +8 -2
  142. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +15 -7
  143. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +23 -0
  144. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +72 -1
  145. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +8 -2
  146. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +19 -9
  147. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +5 -0
  148. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -5
  149. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +12 -8
  150. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +6 -0
  151. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +85 -1
  152. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +35 -0
  153. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +448 -0
  154. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -1
  155. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +30 -77
  156. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +62 -0
  157. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +174 -0
  158. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +75 -10
  159. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +15 -2
  160. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +81 -38
  161. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +11 -0
  162. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +106 -0
  163. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.js → tools/getTerminalOutputTool.js} +5 -3
  164. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +11 -0
  165. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +59 -0
  166. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +57 -0
  167. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +452 -0
  168. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +45 -0
  169. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
  170. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +2 -0
  171. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +31 -0
  172. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.d.ts → tools/runInTerminalTool.d.ts} +11 -13
  173. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.js → tools/runInTerminalTool.js} +282 -133
  174. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.d.ts +5 -5
  175. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.js +51 -50
  176. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/getTaskOutputTool.d.ts +6 -1
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +117 -0
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.d.ts +3 -5
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.js +54 -50
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +19 -0
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +36 -0
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.d.ts +3 -0
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.js +8 -0
  184. package/vscode/src/vs/base/common/policy.d.ts +0 -41
  185. package/vscode/src/vs/base/common/policy.js +0 -11
  186. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +0 -12
  187. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +0 -738
  188. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -42
  189. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.d.ts +0 -67
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +0 -167
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.d.ts +0 -23
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +0 -63
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +0 -55
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +0 -163
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +0 -88
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +0 -35
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +0 -80
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +0 -1
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +0 -40
  200. /package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.d.ts → tools/getTerminalOutputTool.d.ts} +0 -0
@@ -1,19 +1,19 @@
1
1
  import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
2
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
3
- import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service";
4
- import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
5
3
  import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolInvocationPreparationContext, IToolResult, ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
6
4
  import { ITaskService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service";
7
5
  import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service";
8
6
  import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
7
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
8
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
9
9
  export declare class CreateAndRunTaskTool implements IToolImpl {
10
10
  private readonly _tasksService;
11
11
  private readonly _telemetryService;
12
12
  private readonly _terminalService;
13
- private readonly _languageModelsService;
14
- private readonly _chatService;
15
13
  private readonly _fileService;
16
- constructor(_tasksService: ITaskService, _telemetryService: ITelemetryService, _terminalService: ITerminalService, _languageModelsService: ILanguageModelsService, _chatService: IChatService, _fileService: IFileService);
14
+ private readonly _configurationService;
15
+ private readonly _instantiationService;
16
+ constructor(_tasksService: ITaskService, _telemetryService: ITelemetryService, _terminalService: ITerminalService, _fileService: IFileService, _configurationService: IConfigurationService, _instantiationService: IInstantiationService);
17
17
  invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
18
18
  private _isTaskActive;
19
19
  prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
@@ -3,26 +3,27 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
3
3
  import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
4
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
5
5
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
6
- import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
7
- import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
8
6
  import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
9
7
  import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
10
8
  import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
11
- import { pollForOutputAndIdle, racePollingOrPrompt, promptForMorePolling } from '../bufferOutputPolling.js';
12
- import { getOutput } from '../outputHelpers.js';
9
+ import { resolveDependencyTasks, collectTerminalResults } from '../../taskHelpers.js';
13
10
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
14
11
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
15
12
  import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
16
13
  import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
14
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
15
+ import { toolResultDetailsFromResponse, toolResultMessageFromResponse } from './taskHelpers.js';
16
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
17
+ import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
17
18
 
18
19
  let CreateAndRunTaskTool = class CreateAndRunTaskTool {
19
- constructor(_tasksService, _telemetryService, _terminalService, _languageModelsService, _chatService, _fileService) {
20
+ constructor(_tasksService, _telemetryService, _terminalService, _fileService, _configurationService, _instantiationService) {
20
21
  this._tasksService = _tasksService;
21
22
  this._telemetryService = _telemetryService;
22
23
  this._terminalService = _terminalService;
23
- this._languageModelsService = _languageModelsService;
24
- this._chatService = _chatService;
25
24
  this._fileService = _fileService;
25
+ this._configurationService = _configurationService;
26
+ this._instantiationService = _instantiationService;
26
27
  }
27
28
  async invoke(invocation, _countTokens, _progress, token) {
28
29
  const args = invocation.parameters;
@@ -55,7 +56,7 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
55
56
  await this._fileService.writeFile(tasksJsonUri, VSBuffer.fromString(JSON.stringify(tasksJson, null, '\t')));
56
57
  _progress.report({ message: 'Updated tasks.json file' });
57
58
  }
58
- _progress.report({ message: ( new MarkdownString(( localize(11269, 'Resolving the task')))) });
59
+ _progress.report({ message: ( new MarkdownString(( localize(11463, 'Resolving the task')))) });
59
60
  let task;
60
61
  const start = Date.now();
61
62
  while (Date.now() - start < 5000 && !token.isCancellationRequested) {
@@ -66,43 +67,43 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
66
67
  await timeout(100);
67
68
  }
68
69
  if (!task) {
69
- return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(11270, 'Task not found: `{0}`', args.task.label)))) };
70
+ return { content: [{ kind: 'text', value: `Task not found: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(11464, 'Task not found: `{0}`', args.task.label)))) };
70
71
  }
71
- _progress.report({ message: ( new MarkdownString(( localize(11271, 'Running task `{0}`', args.task.label)))) });
72
+ _progress.report({ message: ( new MarkdownString(( localize(11465, 'Running task `{0}`', args.task.label)))) });
72
73
  const raceResult = await Promise.race([this._tasksService.run(task), timeout(3000)]);
73
74
  const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
74
- const resource = this._tasksService.getTerminalForTask(task);
75
- const terminal = this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme);
76
- if (!terminal) {
75
+ const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
76
+ const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
77
+ const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(Boolean);
78
+ if (!terminals || terminals.length === 0) {
77
79
  return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${args.task.label}` }], toolResultMessage: ( new MarkdownString(( localize(
78
- 11272,
80
+ 11466,
79
81
  'Task started but no terminal was found for: `{0}`',
80
82
  args.task.label
81
83
  )))) };
82
84
  }
83
- _progress.report({ message: ( new MarkdownString(( localize(11273, 'Checking output for `{0}`', args.task.label)))) });
84
- let outputAndIdle = await pollForOutputAndIdle({ getOutput: () => getOutput(terminal), isActive: () => this._isTaskActive(task) }, false, token, this._languageModelsService);
85
- if (!outputAndIdle.terminalExecutionIdleBeforeTimeout) {
86
- outputAndIdle = await racePollingOrPrompt(() => pollForOutputAndIdle({ getOutput: () => getOutput(terminal), isActive: () => this._isTaskActive(task) }, true, token, this._languageModelsService), () => promptForMorePolling(args.task.label, token, invocation.context, this._chatService), outputAndIdle, token, this._languageModelsService, { getOutput: () => getOutput(terminal), isActive: () => this._isTaskActive(task) });
85
+ const store = ( new DisposableStore());
86
+ const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
87
+ store.dispose();
88
+ for (const r of terminalResults) {
89
+ this._telemetryService.publicLog2?.('copilotChat.runTaskTool.createAndRunTask', {
90
+ taskLabel: args.task.label,
91
+ bufferLength: r.output.length ?? 0,
92
+ pollDurationMs: r.pollDurationMs ?? 0,
93
+ inputToolManualAcceptCount: r.inputToolManualAcceptCount ?? 0,
94
+ inputToolManualRejectCount: r.inputToolManualRejectCount ?? 0,
95
+ inputToolManualChars: r.inputToolManualChars ?? 0,
96
+ });
87
97
  }
88
- let output = '';
89
- if (result?.exitCode) {
90
- output = `Task \`${args.task.label}\` failed with exit code ${result.exitCode}.`;
91
- }
92
- else {
93
- if (outputAndIdle.terminalExecutionIdleBeforeTimeout) {
94
- output += `Task \`${args.task.label}\` finished`;
95
- }
96
- else {
97
- output += `Task \`${args.task.label}\` started and will continue to run in the background.`;
98
- }
99
- }
100
- this._telemetryService.publicLog2?.('copilotChat.runTaskTool.createAndRunTask', {
101
- taskLabel: args.task.label,
102
- bufferLength: outputAndIdle.output.length,
103
- pollDurationMs: outputAndIdle?.pollDurationMs ?? 0,
104
- });
105
- return { content: [{ kind: 'text', value: `The output was ${outputAndIdle.output}` }], toolResultMessage: output };
98
+ const details = ( terminalResults.map(r => `Terminal: ${r.name}\nOutput:\n${r.output}`));
99
+ const uniqueDetails = Array.from(( new Set(details))).join('\n\n');
100
+ const toolResultDetails = toolResultDetailsFromResponse(terminalResults);
101
+ const toolResultMessage = toolResultMessageFromResponse(result, args.task.label, toolResultDetails, terminalResults);
102
+ return {
103
+ content: [{ kind: 'text', value: uniqueDetails }],
104
+ toolResultMessage,
105
+ toolResultDetails
106
+ };
106
107
  }
107
108
  async _isTaskActive(task) {
108
109
  const activeTasks = await this._tasksService.getActiveTasks();
@@ -114,26 +115,26 @@ let CreateAndRunTaskTool = class CreateAndRunTaskTool {
114
115
  const allTasks = await this._tasksService.tasks();
115
116
  if (allTasks?.find(t => t._label === task.label)) {
116
117
  return {
117
- invocationMessage: ( new MarkdownString(( localize(11274, 'Task `{0}` already exists.', task.label)))),
118
- pastTenseMessage: ( new MarkdownString(( localize(11275, 'Task `{0}` already exists.', task.label)))),
118
+ invocationMessage: ( new MarkdownString(( localize(11467, 'Task `{0}` already exists.', task.label)))),
119
+ pastTenseMessage: ( new MarkdownString(( localize(11468, 'Task `{0}` already exists.', task.label)))),
119
120
  confirmationMessages: undefined
120
121
  };
121
122
  }
122
123
  const activeTasks = await this._tasksService.getActiveTasks();
123
124
  if (activeTasks.find(t => t._label === task.label)) {
124
125
  return {
125
- invocationMessage: ( new MarkdownString(( localize(11276, 'Task \`{0}\` is already running.', task.label)))),
126
- pastTenseMessage: ( new MarkdownString(( localize(11276, 'Task \`{0}\` is already running.', task.label)))),
126
+ invocationMessage: ( new MarkdownString(( localize(11469, 'Task \`{0}\` is already running.', task.label)))),
127
+ pastTenseMessage: ( new MarkdownString(( localize(11469, 'Task \`{0}\` is already running.', task.label)))),
127
128
  confirmationMessages: undefined
128
129
  };
129
130
  }
130
131
  return {
131
- invocationMessage: ( new MarkdownString(( localize(11277, 'Created task \`{0}\`', task.label)))),
132
- pastTenseMessage: ( new MarkdownString(( localize(11278, 'Created task \`{0}\`', task.label)))),
132
+ invocationMessage: ( new MarkdownString(( localize(11470, 'Created task \`{0}\`', task.label)))),
133
+ pastTenseMessage: ( new MarkdownString(( localize(11471, 'Created task \`{0}\`', task.label)))),
133
134
  confirmationMessages: {
134
- title: ( localize(11279, 'Allow task creation and execution?')),
135
+ title: ( localize(11472, 'Allow task creation and execution?')),
135
136
  message: ( new MarkdownString(( localize(
136
- 11280,
137
+ 11473,
137
138
  'Copilot will create the task \`{0}\` with command \`{1}\`{2}.',
138
139
  task.label,
139
140
  task.command,
@@ -147,19 +148,19 @@ CreateAndRunTaskTool = ( __decorate([
147
148
  ( __param(0, ITaskService)),
148
149
  ( __param(1, ITelemetryService)),
149
150
  ( __param(2, ITerminalService)),
150
- ( __param(3, ILanguageModelsService)),
151
- ( __param(4, IChatService)),
152
- ( __param(5, IFileService))
151
+ ( __param(3, IFileService)),
152
+ ( __param(4, IConfigurationService)),
153
+ ( __param(5, IInstantiationService))
153
154
  ], CreateAndRunTaskTool));
154
155
  const CreateAndRunTaskToolData = {
155
156
  id: 'create_and_run_task',
156
157
  toolReferenceName: 'createAndRunTask',
157
- displayName: ( localize(11281, 'Create and run Task')),
158
+ displayName: ( localize(11474, 'Create and run Task')),
158
159
  modelDescription: ( localize(
159
- 11282,
160
+ 11475,
160
161
  'Creates and runs a build, run, or custom task for the workspace by generating or adding to a tasks.json file based on the project structure (such as package.json or README.md). If the user asks to build, run, launch and they have no tasks.json file, use this tool. If they ask to create or add a task, use this tool.'
161
162
  )),
162
- userDescription: ( localize(11283, "Create and run a task in the workspace")),
163
+ userDescription: ( localize(11476, "Create and run a task in the workspace")),
163
164
  source: ToolDataSource.Internal,
164
165
  inputSchema: {
165
166
  'type': 'object',
@@ -1,6 +1,8 @@
1
1
  import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
2
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
3
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
4
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
5
+ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
4
6
  import { type CountTokensCallback, type IPreparedToolInvocation, type IToolData, type IToolImpl, type IToolInvocation, type IToolInvocationPreparationContext, type IToolResult, type ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
5
7
  import { ITaskService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service";
6
8
  import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service";
@@ -13,7 +15,10 @@ export declare class GetTaskOutputTool extends Disposable implements IToolImpl {
13
15
  private readonly _tasksService;
14
16
  private readonly _terminalService;
15
17
  private readonly _configurationService;
16
- constructor(_tasksService: ITaskService, _terminalService: ITerminalService, _configurationService: IConfigurationService);
18
+ private readonly _instantiationService;
19
+ private readonly _telemetryService;
20
+ constructor(_tasksService: ITaskService, _terminalService: ITerminalService, _configurationService: IConfigurationService, _instantiationService: IInstantiationService, _telemetryService: ITelemetryService);
17
21
  prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
18
22
  invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
23
+ private _isTaskActive;
19
24
  }
@@ -0,0 +1,117 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
4
+ import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
6
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
7
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
8
+ import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
9
+ import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
10
+ import { TasksAvailableContext } from '@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common/vscode/vs/workbench/contrib/tasks/common/taskService';
11
+ import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
12
+ import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
13
+ import { getTaskDefinition, getTaskForTool, resolveDependencyTasks, collectTerminalResults } from '../../taskHelpers.js';
14
+ import { toolResultDetailsFromResponse, toolResultMessageFromResponse } from './taskHelpers.js';
15
+
16
+ const GetTaskOutputToolData = {
17
+ id: 'get_task_output',
18
+ toolReferenceName: 'getTaskOutput',
19
+ displayName: ( localize(11477, 'Get Task Output')),
20
+ modelDescription: 'Get the output of a task',
21
+ source: ToolDataSource.Internal,
22
+ when: TasksAvailableContext,
23
+ inputSchema: {
24
+ type: 'object',
25
+ properties: {
26
+ id: {
27
+ type: 'string',
28
+ description: 'The task ID for which to get the output.'
29
+ },
30
+ workspaceFolder: {
31
+ type: 'string',
32
+ description: 'The workspace folder path containing the task'
33
+ },
34
+ },
35
+ required: [
36
+ 'id',
37
+ 'workspaceFolder'
38
+ ]
39
+ }
40
+ };
41
+ let GetTaskOutputTool = class GetTaskOutputTool extends Disposable {
42
+ constructor(_tasksService, _terminalService, _configurationService, _instantiationService, _telemetryService) {
43
+ super();
44
+ this._tasksService = _tasksService;
45
+ this._terminalService = _terminalService;
46
+ this._configurationService = _configurationService;
47
+ this._instantiationService = _instantiationService;
48
+ this._telemetryService = _telemetryService;
49
+ }
50
+ async prepareToolInvocation(context, token) {
51
+ const args = context.parameters;
52
+ const taskDefinition = getTaskDefinition(args.id);
53
+ const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
54
+ if (!task) {
55
+ return { invocationMessage: ( new MarkdownString(( localize(11478, 'Task not found: `{0}`', args.id)))) };
56
+ }
57
+ const taskLabel = task._label;
58
+ const activeTasks = await this._tasksService.getActiveTasks();
59
+ if (activeTasks.includes(task)) {
60
+ return { invocationMessage: ( new MarkdownString(( localize(11479, 'The task `{0}` is already running.', taskLabel)))) };
61
+ }
62
+ return {
63
+ invocationMessage: ( new MarkdownString(( localize(11480, 'Checking output for task `{0}`', taskLabel)))),
64
+ pastTenseMessage: ( new MarkdownString(( localize(11481, 'Checked output for task `{0}`', taskLabel)))),
65
+ };
66
+ }
67
+ async invoke(invocation, _countTokens, _progress, token) {
68
+ const args = invocation.parameters;
69
+ const taskDefinition = getTaskDefinition(args.id);
70
+ const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
71
+ if (!task) {
72
+ return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(11478, 'Task not found: `{0}`', args.id)))) };
73
+ }
74
+ const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
75
+ const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
76
+ const taskLabel = task._label;
77
+ const terminals = resources?.map(resource => this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme)).filter(t => !!t);
78
+ if (!terminals || terminals.length === 0) {
79
+ return { content: [{ kind: 'text', value: `Terminal not found for task ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11482, 'Terminal not found for task `{0}`', taskLabel)))) };
80
+ }
81
+ const store = ( new DisposableStore());
82
+ const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
83
+ store.dispose();
84
+ for (const r of terminalResults) {
85
+ this._telemetryService.publicLog2?.('copilotChat.getTaskOutputTool.get', {
86
+ taskId: args.id,
87
+ bufferLength: r.output.length ?? 0,
88
+ pollDurationMs: r.pollDurationMs ?? 0,
89
+ inputToolManualAcceptCount: r.inputToolManualAcceptCount ?? 0,
90
+ inputToolManualRejectCount: r.inputToolManualRejectCount ?? 0,
91
+ inputToolManualChars: r.inputToolManualChars ?? 0,
92
+ });
93
+ }
94
+ const details = ( terminalResults.map(r => `Terminal: ${r.name}\nOutput:\n${r.output}`));
95
+ const uniqueDetails = Array.from(( new Set(details))).join('\n\n');
96
+ const toolResultDetails = toolResultDetailsFromResponse(terminalResults);
97
+ const toolResultMessage = toolResultMessageFromResponse(undefined, taskLabel, toolResultDetails, terminalResults);
98
+ return {
99
+ content: [{ kind: 'text', value: uniqueDetails }],
100
+ toolResultMessage,
101
+ toolResultDetails
102
+ };
103
+ }
104
+ async _isTaskActive(task) {
105
+ const activeTasks = await this._tasksService.getActiveTasks();
106
+ return activeTasks?.includes(task) ?? false;
107
+ }
108
+ };
109
+ GetTaskOutputTool = ( __decorate([
110
+ ( __param(0, ITaskService)),
111
+ ( __param(1, ITerminalService)),
112
+ ( __param(2, IConfigurationService)),
113
+ ( __param(3, IInstantiationService)),
114
+ ( __param(4, ITelemetryService))
115
+ ], GetTaskOutputTool));
116
+
117
+ export { GetTaskOutputTool, GetTaskOutputToolData };
@@ -1,19 +1,17 @@
1
1
  import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
2
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
3
- import { IChatService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service";
4
- import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
5
3
  import { CountTokensCallback, IPreparedToolInvocation, IToolData, IToolImpl, IToolInvocation, IToolInvocationPreparationContext, IToolResult, ToolProgress } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
6
4
  import { ITaskService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service";
7
5
  import { ITerminalService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service";
8
6
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
7
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
9
8
  export declare class RunTaskTool implements IToolImpl {
10
9
  private readonly _tasksService;
11
10
  private readonly _telemetryService;
12
11
  private readonly _terminalService;
13
- private readonly _languageModelsService;
14
- private readonly _chatService;
15
12
  private readonly _configurationService;
16
- constructor(_tasksService: ITaskService, _telemetryService: ITelemetryService, _terminalService: ITerminalService, _languageModelsService: ILanguageModelsService, _chatService: IChatService, _configurationService: IConfigurationService);
13
+ private readonly _instantiationService;
14
+ constructor(_tasksService: ITaskService, _telemetryService: ITelemetryService, _terminalService: ITerminalService, _configurationService: IConfigurationService, _instantiationService: IInstantiationService);
17
15
  invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
18
16
  private _isTaskActive;
19
17
  prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
@@ -3,25 +3,25 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
3
3
  import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
4
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
5
5
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
6
- import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
7
- import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
8
6
  import { ToolDataSource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
7
+ import { TasksAvailableContext } from '@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common/vscode/vs/workbench/contrib/tasks/common/taskService';
9
8
  import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
10
9
  import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
11
- import { pollForOutputAndIdle, racePollingOrPrompt, promptForMorePolling } from '../bufferOutputPolling.js';
12
- import { getOutput } from '../outputHelpers.js';
13
- import { getTaskDefinition, getTaskForTool } from './taskHelpers.js';
10
+ import { getTaskDefinition, getTaskForTool, resolveDependencyTasks, collectTerminalResults } from '../../taskHelpers.js';
14
11
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
15
12
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
13
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
14
+ import { toolResultDetailsFromResponse, toolResultMessageFromResponse } from './taskHelpers.js';
15
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
16
+ import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
16
17
 
17
18
  let RunTaskTool = class RunTaskTool {
18
- constructor(_tasksService, _telemetryService, _terminalService, _languageModelsService, _chatService, _configurationService) {
19
+ constructor(_tasksService, _telemetryService, _terminalService, _configurationService, _instantiationService) {
19
20
  this._tasksService = _tasksService;
20
21
  this._telemetryService = _telemetryService;
21
22
  this._terminalService = _terminalService;
22
- this._languageModelsService = _languageModelsService;
23
- this._chatService = _chatService;
24
23
  this._configurationService = _configurationService;
24
+ this._instantiationService = _instantiationService;
25
25
  }
26
26
  async invoke(invocation, _countTokens, _progress, token) {
27
27
  const args = invocation.parameters;
@@ -29,45 +29,48 @@ let RunTaskTool = class RunTaskTool {
29
29
  return { content: [{ kind: 'text', value: `No invocation context` }], toolResultMessage: `No invocation context` };
30
30
  }
31
31
  const taskDefinition = getTaskDefinition(args.id);
32
- const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService);
32
+ const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
33
33
  if (!task) {
34
- return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(11290, 'Task not found: `{0}`', args.id)))) };
34
+ return { content: [{ kind: 'text', value: `Task not found: ${args.id}` }], toolResultMessage: ( new MarkdownString(( localize(11483, 'Task not found: `{0}`', args.id)))) };
35
35
  }
36
36
  const taskLabel = task._label;
37
37
  const activeTasks = await this._tasksService.getActiveTasks();
38
38
  if (activeTasks.includes(task)) {
39
- return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(11291, 'The task `{0}` is already running.', taskLabel)))) };
39
+ return { content: [{ kind: 'text', value: `The task ${taskLabel} is already running.` }], toolResultMessage: ( new MarkdownString(( localize(11484, 'The task `{0}` is already running.', taskLabel)))) };
40
40
  }
41
41
  const raceResult = await Promise.race([this._tasksService.run(task), timeout(3000)]);
42
42
  const result = raceResult && typeof raceResult === 'object' ? raceResult : undefined;
43
- const resource = this._tasksService.getTerminalForTask(task);
44
- const terminal = this._terminalService.instances.find(t => t.resource.path === resource?.path && t.resource.scheme === resource.scheme);
45
- if (!terminal) {
46
- return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11292, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
43
+ const dependencyTasks = await resolveDependencyTasks(task, args.workspaceFolder, this._configurationService, this._tasksService);
44
+ const resources = this._tasksService.getTerminalsForTasks(dependencyTasks ?? task);
45
+ if (!resources || resources.length === 0) {
46
+ return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11485, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
47
47
  }
48
- _progress.report({ message: ( new MarkdownString(( localize(11293, 'Checking output for `{0}`', taskLabel)))) });
49
- let outputAndIdle = await pollForOutputAndIdle({ getOutput: () => getOutput(terminal), isActive: () => this._isTaskActive(task) }, false, token, this._languageModelsService);
50
- if (!outputAndIdle.terminalExecutionIdleBeforeTimeout) {
51
- outputAndIdle = await racePollingOrPrompt(() => pollForOutputAndIdle({ getOutput: () => getOutput(terminal), isActive: () => this._isTaskActive(task) }, true, token, this._languageModelsService), () => promptForMorePolling(taskLabel, token, invocation.context, this._chatService), outputAndIdle, token, this._languageModelsService, { getOutput: () => getOutput(terminal), isActive: () => this._isTaskActive(task) });
48
+ const terminals = this._terminalService.instances.filter(t => ( resources.some(r => r.path === t.resource.path && r.scheme === t.resource.scheme)));
49
+ if (terminals.length === 0) {
50
+ return { content: [{ kind: 'text', value: `Task started but no terminal was found for: ${taskLabel}` }], toolResultMessage: ( new MarkdownString(( localize(11485, 'Task started but no terminal was found for: `{0}`', taskLabel)))) };
52
51
  }
53
- let output = '';
54
- if (result?.exitCode) {
55
- output = `Task \`${taskLabel}\` failed with exit code ${result.exitCode}.`;
52
+ const store = ( new DisposableStore());
53
+ const terminalResults = await collectTerminalResults(terminals, task, this._instantiationService, invocation.context, _progress, token, store, () => this._isTaskActive(task), dependencyTasks);
54
+ store.dispose();
55
+ for (const r of terminalResults) {
56
+ this._telemetryService.publicLog2?.('copilotChat.runTaskTool.run', {
57
+ taskId: args.id,
58
+ bufferLength: r.output.length ?? 0,
59
+ pollDurationMs: r.pollDurationMs ?? 0,
60
+ inputToolManualAcceptCount: r.inputToolManualAcceptCount ?? 0,
61
+ inputToolManualRejectCount: r.inputToolManualRejectCount ?? 0,
62
+ inputToolManualChars: r.inputToolManualChars ?? 0,
63
+ });
56
64
  }
57
- else {
58
- if (outputAndIdle.terminalExecutionIdleBeforeTimeout) {
59
- output += `Task \`${taskLabel}\` finished`;
60
- }
61
- else {
62
- output += `Task \`${taskLabel}\` started and will continue to run in the background.`;
63
- }
64
- }
65
- this._telemetryService.publicLog2?.('copilotChat.runTaskTool.run', {
66
- taskId: args.id,
67
- bufferLength: outputAndIdle.output.length,
68
- pollDurationMs: outputAndIdle?.pollDurationMs ?? 0,
69
- });
70
- return { content: [{ kind: 'text', value: `The output was ${outputAndIdle.output}` }], toolResultMessage: output };
65
+ const details = ( terminalResults.map(r => `Terminal: ${r.name}\nOutput:\n${r.output}`));
66
+ const uniqueDetails = Array.from(( new Set(details))).join('\n\n');
67
+ const toolResultDetails = toolResultDetailsFromResponse(terminalResults);
68
+ const toolResultMessage = toolResultMessageFromResponse(result, taskLabel, toolResultDetails, terminalResults);
69
+ return {
70
+ content: [{ kind: 'text', value: uniqueDetails }],
71
+ toolResultMessage,
72
+ toolResultDetails
73
+ };
71
74
  }
72
75
  async _isTaskActive(task) {
73
76
  const activeTasks = await this._tasksService.getActiveTasks();
@@ -76,29 +79,29 @@ let RunTaskTool = class RunTaskTool {
76
79
  async prepareToolInvocation(context, token) {
77
80
  const args = context.parameters;
78
81
  const taskDefinition = getTaskDefinition(args.id);
79
- const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService);
82
+ const task = await getTaskForTool(args.id, taskDefinition, args.workspaceFolder, this._configurationService, this._tasksService, true);
80
83
  if (!task) {
81
- return { invocationMessage: ( new MarkdownString(( localize(11290, 'Task not found: `{0}`', args.id)))) };
84
+ return { invocationMessage: ( new MarkdownString(( localize(11483, 'Task not found: `{0}`', args.id)))) };
82
85
  }
83
86
  const taskLabel = task._label;
84
87
  const activeTasks = await this._tasksService.getActiveTasks();
85
88
  if (task && activeTasks.includes(task)) {
86
- return { invocationMessage: ( new MarkdownString(( localize(11294, 'The task is already running.')))) };
89
+ return { invocationMessage: ( new MarkdownString(( localize(11486, 'The task is already running.')))) };
87
90
  }
88
91
  if (await this._isTaskActive(task)) {
89
92
  return {
90
- invocationMessage: ( new MarkdownString(( localize(11295, '`{0}` is already running.', taskLabel)))),
91
- pastTenseMessage: ( new MarkdownString(( localize(11296, '`{0}` was already running.', taskLabel)))),
93
+ invocationMessage: ( new MarkdownString(( localize(11487, '`{0}` is already running.', taskLabel)))),
94
+ pastTenseMessage: ( new MarkdownString(( localize(11488, '`{0}` was already running.', taskLabel)))),
92
95
  confirmationMessages: undefined
93
96
  };
94
97
  }
95
98
  return {
96
- invocationMessage: ( new MarkdownString(( localize(11297, 'Running `{0}`', taskLabel)))),
99
+ invocationMessage: ( new MarkdownString(( localize(11489, 'Running `{0}`', taskLabel)))),
97
100
  pastTenseMessage: ( new MarkdownString(task?.configurationProperties.isBackground
98
- ? ( localize(11298, 'Started `{0}`', taskLabel))
99
- : ( localize(11299, 'Ran `{0}`', taskLabel)))),
101
+ ? ( localize(11490, 'Started `{0}`', taskLabel))
102
+ : ( localize(11491, 'Ran `{0}`', taskLabel)))),
100
103
  confirmationMessages: task
101
- ? { title: ( localize(11300, 'Allow task run?')), message: ( localize(11301, 'Allow Copilot to run the task `{0}`?', taskLabel)) }
104
+ ? { title: ( localize(11492, 'Allow task run?')), message: ( localize(11493, 'Allow Copilot to run the task `{0}`?', taskLabel)) }
102
105
  : undefined
103
106
  };
104
107
  }
@@ -107,17 +110,18 @@ RunTaskTool = ( __decorate([
107
110
  ( __param(0, ITaskService)),
108
111
  ( __param(1, ITelemetryService)),
109
112
  ( __param(2, ITerminalService)),
110
- ( __param(3, ILanguageModelsService)),
111
- ( __param(4, IChatService)),
112
- ( __param(5, IConfigurationService))
113
+ ( __param(3, IConfigurationService)),
114
+ ( __param(4, IInstantiationService))
113
115
  ], RunTaskTool));
114
116
  const RunTaskToolData = {
115
117
  id: 'run_task',
116
118
  toolReferenceName: 'runTask',
117
- displayName: ( localize(11302, 'Run Task')),
119
+ displayName: ( localize(11494, 'Run Task')),
118
120
  modelDescription: 'Runs a VS Code task.\n\n- If you see that an appropriate task exists for building or running code, prefer to use this tool to run the task instead of using the run_in_terminal tool.\n- Make sure that any appropriate build or watch task is running before trying to run tests or execute code.\n- If the user asks to run a task, use this tool to do so.',
119
- userDescription: ( localize(11303, 'Tool for running tasks in the workspace')),
121
+ userDescription: ( localize(11495, 'Tool for running tasks in the workspace')),
122
+ icon: Codicon.tools,
120
123
  source: ToolDataSource.Internal,
124
+ when: TasksAvailableContext,
121
125
  inputSchema: {
122
126
  'type': 'object',
123
127
  'properties': {
@@ -0,0 +1,19 @@
1
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
+ import { Location } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages";
3
+ import { Range } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
4
+ import { ITaskSummary } from "@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common/vscode/vs/workbench/contrib/tasks/common/taskService";
5
+ import { OutputMonitorState } from "../monitoring/types.js";
6
+ import { MarkdownString } from "@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent";
7
+ export declare function toolResultDetailsFromResponse(terminalResults: {
8
+ output: string;
9
+ resources?: ILinkLocation[];
10
+ }[]): (URI | Location)[];
11
+ export declare function toolResultMessageFromResponse(result: ITaskSummary | undefined, taskLabel: string, toolResultDetails: (URI | Location)[], terminalResults: {
12
+ output: string;
13
+ resources?: ILinkLocation[];
14
+ state: OutputMonitorState;
15
+ }[]): MarkdownString;
16
+ export interface ILinkLocation {
17
+ uri: URI;
18
+ range?: Range;
19
+ }
@@ -0,0 +1,36 @@
1
+
2
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
3
+ import { OutputMonitorState } from '../monitoring/types.js';
4
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
5
+
6
+ function toolResultDetailsFromResponse(terminalResults) {
7
+ return Array.from(( ( new Map(terminalResults
8
+ .flatMap(r => r.resources?.filter(res => res.uri).map(res => {
9
+ const range = res.range;
10
+ const item = range !== undefined ? { uri: res.uri, range } : res.uri;
11
+ const key = range !== undefined
12
+ ? `${( res.uri.toString())}-${( range.toString())}`
13
+ : `${( res.uri.toString())}`;
14
+ return [key, item];
15
+ }) ?? []))).values()));
16
+ }
17
+ function toolResultMessageFromResponse(result, taskLabel, toolResultDetails, terminalResults) {
18
+ let resultSummary = '';
19
+ if (result?.exitCode) {
20
+ resultSummary = ( localize(11496, 'Task `{0}` failed with exit code {1}.', taskLabel, result.exitCode));
21
+ }
22
+ else {
23
+ resultSummary += `\`${taskLabel}\` task `;
24
+ const problemCount = toolResultDetails.length;
25
+ resultSummary += terminalResults.every(r => r.state === OutputMonitorState.Idle)
26
+ ? (problemCount
27
+ ? `finished with \`${problemCount}\` problem${problemCount === 1 ? '' : 's'}`
28
+ : 'finished')
29
+ : (problemCount
30
+ ? `started and will continue to run in the background with \`${problemCount}\` problem${problemCount === 1 ? '' : 's'}`
31
+ : 'started and will continue to run in the background');
32
+ }
33
+ return ( new MarkdownString(resultSummary));
34
+ }
35
+
36
+ export { toolResultDetailsFromResponse, toolResultMessageFromResponse };
@@ -0,0 +1,3 @@
1
+ export declare enum TerminalChatAgentToolsCommandId {
2
+ ChatAddTerminalSelection = "workbench.action.terminal.chat.addTerminalSelection"
3
+ }