@codingame/monaco-vscode-chat-service-override 20.5.0 → 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,42 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License. See License.txt in the project root for license information.
4
- *--------------------------------------------------------------------------------------------*/
5
-
6
- .chat-sessions-tree .monaco-tl-twistie {
7
- display: none !important;
8
- }
9
-
10
- .chat-sessions-tree {
11
- line-height: 22px;
12
- }
13
-
14
- /* Ensure consistent title background regardless of number of views */
15
- .composite.viewlet[id="workbench.view.chat.sessions"] .pane-header.expanded.not-collapsible {
16
- background-color: var(--vscode-sideBarSectionHeader-background) !important;
17
- }
18
-
19
- /* Add padding to chat session item icons */
20
- .chat-sessions-tree .chat-session-item .monaco-icon-label-iconpath {
21
- margin-right: 4px;
22
- margin-left: 4px;
23
- }
24
-
25
- /* Style for empty state message */
26
- .chat-sessions-message {
27
- padding: 20px;
28
- text-align: center;
29
- color: var(--vscode-descriptionForeground);
30
- }
31
-
32
- .chat-sessions-message .no-sessions-message {
33
- display: flex;
34
- align-items: center;
35
- justify-content: center;
36
- gap: 8px;
37
- font-style: italic;
38
- }
39
-
40
- .chat-sessions-message .no-sessions-message .codicon {
41
- opacity: 0.7;
42
- }
@@ -1,67 +0,0 @@
1
- /**
2
- * Notes on what to implement next:
3
- * - re-trigger suggestions dialog on `folder` selection because the `#file:` references take
4
- * `file` paths, therefore a "folder" completion is never final
5
- * - provide the same suggestions that the `#file:` variables in the chat input have, e.g.,
6
- * recently used files, related files, etc.
7
- * - support markdown links; markdown extension does sometimes provide the paths completions, but
8
- * the prompt completions give more options (e.g., recently used files, related files, etc.)
9
- * - add `Windows` support
10
- */
11
- import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
12
- import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
13
- import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
14
- import { Position } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position";
15
- import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
16
- import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
17
- import { ILanguageFeaturesService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service";
18
- import { CompletionContext, CompletionItemProvider, CompletionList } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages";
19
- /**
20
- * Type for trigger characters handled by this autocompletion provider.
21
- */
22
- type TTriggerCharacter = ":" | "." | "/";
23
- /**
24
- * Provides reference paths autocompletion for the `#file:` variables inside prompts.
25
- */
26
- export declare class PromptPathAutocompletion extends Disposable implements CompletionItemProvider {
27
- private readonly fileService;
28
- private readonly promptsService;
29
- private readonly languageService;
30
- /**
31
- * Debug display name for this provider.
32
- */
33
- readonly _debugDisplayName: string;
34
- /**
35
- * List of trigger characters handled by this provider.
36
- */
37
- readonly triggerCharacters: TTriggerCharacter[];
38
- constructor(fileService: IFileService, promptsService: IPromptsService, languageService: ILanguageFeaturesService);
39
- /**
40
- * The main function of this provider that calculates
41
- * completion items based on the provided arguments.
42
- */
43
- provideCompletionItems(model: ITextModel, position: Position, context: CompletionContext, token: CancellationToken): Promise<CompletionList | undefined>;
44
- /**
45
- * Gets "raw" folder suggestions. Unlike the full completion items,
46
- * these ones do not have `insertText` and `range` properties which
47
- * are meant to be added by the caller later on.
48
- */
49
- private getFolderSuggestions;
50
- /**
51
- * Gets suggestions for a first folder/file name in the path. E.g., the one
52
- * that follows immediately after the `:` character of the `#file:` variable.
53
- *
54
- * The main difference between this and "subsequent" folder cases is that in
55
- * the beginning of the path the suggestions also contain the `..` item and
56
- * the `./` normalization prefix for relative paths.
57
- *
58
- * See also {@link getNonFirstFolderSuggestions}.
59
- */
60
- private getFirstFolderSuggestions;
61
- /**
62
- * Gets suggestions for a folder/file name that follows after the first one.
63
- * See also {@link getFirstFolderSuggestions}.
64
- */
65
- private getNonFirstFolderSuggestions;
66
- }
67
- export {};
@@ -1,167 +0,0 @@
1
-
2
- import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
4
- import { isOneOf } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
5
- import { dirname, extUri } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
6
- import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
- import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
8
- import { ALL_PROMPTS_LANGUAGE_SELECTOR } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
9
- import { assert, assertNever } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
10
- import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
11
- import { ILanguageFeaturesService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service';
12
- import { CompletionItemKind } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
13
-
14
- function findFileReference(references, position) {
15
- for (const reference of references) {
16
- const { range } = reference;
17
- if (reference.type !== 'file') {
18
- return undefined;
19
- }
20
- if (reference.subtype !== 'prompt') {
21
- return undefined;
22
- }
23
- const { startLineNumber, endColumn } = range;
24
- if ((startLineNumber !== position.lineNumber) || (endColumn !== position.column)) {
25
- continue;
26
- }
27
- return reference;
28
- }
29
- return undefined;
30
- }
31
- let PromptPathAutocompletion = class PromptPathAutocompletion extends Disposable {
32
- constructor(fileService, promptsService, languageService) {
33
- super();
34
- this.fileService = fileService;
35
- this.promptsService = promptsService;
36
- this.languageService = languageService;
37
- this._debugDisplayName = 'PromptPathAutocompletion';
38
- this.triggerCharacters = [':', '.', '/'];
39
- this._register(this.languageService.completionProvider.register(ALL_PROMPTS_LANGUAGE_SELECTOR, this));
40
- }
41
- async provideCompletionItems(model, position, context, token) {
42
- assert(!token.isCancellationRequested, ( new CancellationError()));
43
- const { triggerCharacter } = context;
44
- if (!triggerCharacter) {
45
- return undefined;
46
- }
47
- assert(isOneOf(triggerCharacter, this.triggerCharacters), `Prompt path autocompletion provider`);
48
- const parser = this.promptsService.getSyntaxParserFor(model);
49
- assert(parser.isDisposed === false, 'Prompt parser must not be disposed.');
50
- const completed = await parser.start(token).settled();
51
- if (!completed || token.isCancellationRequested) {
52
- return undefined;
53
- }
54
- const { references } = parser;
55
- const fileReference = findFileReference(references, position);
56
- if (!fileReference) {
57
- return undefined;
58
- }
59
- const parentFolder = dirname(parser.uri);
60
- if (triggerCharacter === ':' || (triggerCharacter === '.' && fileReference.path === '.')) {
61
- return {
62
- suggestions: await this.getFirstFolderSuggestions(triggerCharacter, parentFolder, fileReference),
63
- };
64
- }
65
- if (triggerCharacter === '/' || triggerCharacter === '.') {
66
- return {
67
- suggestions: await this.getNonFirstFolderSuggestions(triggerCharacter, parentFolder, fileReference),
68
- };
69
- }
70
- assertNever(triggerCharacter, `Unexpected trigger character '${triggerCharacter}'.`);
71
- }
72
- async getFolderSuggestions(uri) {
73
- const { children } = await this.fileService.resolve(uri);
74
- const suggestions = [];
75
- if (!children) {
76
- return suggestions;
77
- }
78
- for (const child of children) {
79
- const kind = child.isDirectory
80
- ? CompletionItemKind.Folder
81
- : CompletionItemKind.File;
82
- const sortText = child.isDirectory
83
- ? '1'
84
- : '2';
85
- suggestions.push({
86
- label: child.name,
87
- kind,
88
- sortText,
89
- });
90
- }
91
- return suggestions;
92
- }
93
- async getFirstFolderSuggestions(character, fileFolderUri, fileReference) {
94
- const { linkRange } = fileReference;
95
- if ((character === ':') && (linkRange !== undefined)) {
96
- return [];
97
- }
98
- if ((character === '.') && (linkRange === undefined)) {
99
- return [];
100
- }
101
- const suggestions = await this.getFolderSuggestions(fileFolderUri);
102
- const startColumnOffset = (character === '.') ? 1 : 0;
103
- const range = {
104
- ...fileReference.range,
105
- endColumn: fileReference.range.endColumn,
106
- startColumn: fileReference.range.endColumn - startColumnOffset,
107
- };
108
- return [
109
- {
110
- label: '..',
111
- kind: CompletionItemKind.Folder,
112
- insertText: '..',
113
- range,
114
- sortText: '0',
115
- },
116
- ...( suggestions
117
- .map((suggestion) => {
118
- const suffix = (suggestion.kind === CompletionItemKind.File)
119
- ? ' '
120
- : '';
121
- return {
122
- ...suggestion,
123
- range,
124
- label: `./${suggestion.label}${suffix}`,
125
- insertText: `./${suggestion.label}${suffix}`,
126
- };
127
- })),
128
- ];
129
- }
130
- async getNonFirstFolderSuggestions(character, fileFolderUri, fileReference) {
131
- const { linkRange, path } = fileReference;
132
- if (linkRange === undefined) {
133
- return [];
134
- }
135
- const currentFolder = extUri.resolvePath(fileFolderUri, path);
136
- let suggestions = await this.getFolderSuggestions(currentFolder);
137
- if (character === '.') {
138
- suggestions = suggestions.filter((suggestion) => {
139
- return suggestion.label.startsWith('.');
140
- });
141
- }
142
- const startColumnOffset = (character === '.') ? 1 : 0;
143
- const range = {
144
- ...fileReference.range,
145
- endColumn: fileReference.range.endColumn,
146
- startColumn: fileReference.range.endColumn - startColumnOffset,
147
- };
148
- return ( suggestions
149
- .map((suggestion) => {
150
- const suffix = (suggestion.kind === CompletionItemKind.File)
151
- ? ' '
152
- : '';
153
- return {
154
- ...suggestion,
155
- insertText: `${suggestion.label}${suffix}`,
156
- range,
157
- };
158
- }));
159
- }
160
- };
161
- PromptPathAutocompletion = ( __decorate([
162
- ( __param(0, IFileService)),
163
- ( __param(1, IPromptsService)),
164
- ( __param(2, ILanguageFeaturesService))
165
- ], PromptPathAutocompletion));
166
-
167
- export { PromptPathAutocompletion };
@@ -1,23 +0,0 @@
1
- import { PromptStringMetadata } from "./string.js";
2
- import { PromptMetadataDiagnostic } from "../../diagnostics.js";
3
- import { FrontMatterRecord } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/codecs/base/frontMatterCodec/tokens/index";
4
- /**
5
- * Enum type is the special case of the {@link PromptStringMetadata string}
6
- * type that can take only a well-defined set of {@link validValues}.
7
- */
8
- export declare abstract class PromptEnumMetadata<TValidValues extends string = string> extends PromptStringMetadata {
9
- private readonly validValues;
10
- constructor(validValues: readonly TValidValues[], expectedRecordName: string, recordToken: FrontMatterRecord, languageId: string);
11
- /**
12
- * Valid enum value or 'undefined'.
13
- */
14
- private enumValue;
15
- /**
16
- * Valid enum value or 'undefined'.
17
- */
18
- get value(): TValidValues | undefined;
19
- /**
20
- * Validate the metadata record has an allowed value.
21
- */
22
- validate(): readonly PromptMetadataDiagnostic[];
23
- }
@@ -1,63 +0,0 @@
1
-
2
- import { PromptStringMetadata } from './string.js';
3
- import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
- import { assert } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
5
- import { isOneOf } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
6
- import { PromptMetadataError } from '../../diagnostics.js';
7
- import { FrontMatterSequence } from '../../../../codecs/base/frontMatterCodec/tokens/frontMatterSequence.js';
8
- import { FrontMatterString } from '../../../../codecs/base/frontMatterCodec/tokens/frontMatterString.js';
9
- import '../../../../codecs/base/simpleCodec/tokens/at.js';
10
- import '../../../../codecs/base/simpleCodec/tokens/tab.js';
11
- import '../../../../codecs/base/simpleCodec/tokens/dash.js';
12
- import '../../../../codecs/base/simpleCodec/tokens/hash.js';
13
- import '../../../../codecs/base/simpleCodec/tokens/colon.js';
14
- import '../../../../codecs/base/simpleCodec/tokens/quote.js';
15
- import '../../../../codecs/base/simpleCodec/tokens/slash.js';
16
- import '../../../../codecs/base/simpleCodec/tokens/space.js';
17
- import '../../../../codecs/base/simpleCodec/tokens/comma.js';
18
- import '../../../../codecs/base/simpleCodec/tokens/formFeed.js';
19
- import '../../../../codecs/base/simpleCodec/tokens/dollarSign.js';
20
- import '../../../../codecs/base/simpleCodec/tokens/verticalTab.js';
21
- import '../../../../codecs/base/simpleCodec/tokens/doubleQuote.js';
22
- import '../../../../codecs/base/simpleCodec/tokens/exclamationMark.js';
23
- import '../../../../codecs/base/simpleCodec/tokens/brackets.js';
24
- import '../../../../codecs/base/simpleCodec/tokens/curlyBraces.js';
25
- import '../../../../codecs/base/simpleCodec/tokens/parentheses.js';
26
- import '../../../../codecs/base/simpleCodec/tokens/angleBrackets.js';
27
-
28
- class PromptEnumMetadata extends PromptStringMetadata {
29
- constructor(validValues, expectedRecordName, recordToken, languageId) {
30
- super(expectedRecordName, recordToken, languageId);
31
- this.validValues = validValues;
32
- }
33
- get value() {
34
- return this.enumValue;
35
- }
36
- validate() {
37
- super.validate();
38
- if (this.valueToken === undefined) {
39
- return this.issues;
40
- }
41
- assert(this.valueToken instanceof FrontMatterString
42
- || this.valueToken instanceof FrontMatterSequence, `Record token must be 'string', got '${this.valueToken}'.`);
43
- const { cleanText } = this.valueToken;
44
- if (isOneOf(cleanText, this.validValues)) {
45
- this.enumValue = cleanText;
46
- return this.issues;
47
- }
48
- this.issues.push(( new PromptMetadataError(this.valueToken.range, ( localize(
49
- 5465,
50
- "The '{0}' metadata must be one of {1}, got '{2}'.",
51
- this.recordName,
52
- ( this.validValues
53
- .map((value) => {
54
- return `'${value}'`;
55
- })).join(' | '),
56
- cleanText
57
- )))));
58
- delete this.valueToken;
59
- return this.issues;
60
- }
61
- }
62
-
63
- export { PromptEnumMetadata };
@@ -1,55 +0,0 @@
1
- import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
- import { ChatElicitationRequestPart } from "@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common/vscode/vs/workbench/contrib/chat/browser/chatElicitationRequestPart";
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
- import { IToolInvocationContext } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
6
- import { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
7
- import type { IMarker as IXtermMarker } from "@xterm/xterm";
8
- export declare enum PollingConsts {
9
- MinNoDataEvents = 2,// Minimum number of no data checks before considering the terminal idle
10
- MinPollingDuration = 500,
11
- FirstPollingMaxDuration = 20000,// 20 seconds
12
- ExtendedPollingMaxDuration = 120000,// 2 minutes
13
- MaxPollingIntervalDuration = 2000
14
- }
15
- /**
16
- * Waits for either polling to complete (terminal idle or timeout) or for the user to respond to a prompt.
17
- * If polling completes first, the prompt is removed. If the prompt completes first and is accepted, polling continues.
18
- */
19
- export declare function racePollingOrPrompt(pollFn: () => Promise<{
20
- terminalExecutionIdleBeforeTimeout: boolean;
21
- output: string;
22
- pollDurationMs?: number;
23
- modelOutputEvalResponse?: string;
24
- }>, promptFn: () => {
25
- promise: Promise<boolean>;
26
- part?: Pick<ChatElicitationRequestPart, "hide" | "onDidRequestHide">;
27
- }, originalResult: {
28
- terminalExecutionIdleBeforeTimeout: boolean;
29
- output: string;
30
- pollDurationMs?: number;
31
- modelOutputEvalResponse?: string;
32
- }, token: CancellationToken, languageModelsService: ILanguageModelsService, execution: {
33
- getOutput: () => string;
34
- isActive?: () => Promise<boolean>;
35
- }): Promise<{
36
- terminalExecutionIdleBeforeTimeout: boolean;
37
- output: string;
38
- pollDurationMs?: number;
39
- modelOutputEvalResponse?: string;
40
- }>;
41
- export declare function getOutput(instance: ITerminalInstance, startMarker?: IXtermMarker): string;
42
- export declare function pollForOutputAndIdle(execution: {
43
- getOutput: () => string;
44
- isActive?: () => Promise<boolean>;
45
- }, extendedPolling: boolean, token: CancellationToken, languageModelsService: ILanguageModelsService): Promise<{
46
- terminalExecutionIdleBeforeTimeout: boolean;
47
- output: string;
48
- pollDurationMs?: number;
49
- modelOutputEvalResponse?: string;
50
- }>;
51
- export declare function promptForMorePolling(command: string, token: CancellationToken, context: IToolInvocationContext, chatService: IChatService): {
52
- promise: Promise<boolean>;
53
- part?: ChatElicitationRequestPart;
54
- };
55
- export declare function assessOutputForErrors(buffer: string, token: CancellationToken, languageModelsService: ILanguageModelsService): Promise<string>;
@@ -1,163 +0,0 @@
1
-
2
- import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
3
- import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
4
- import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
5
- import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
6
- import { ChatElicitationRequestPart } from '@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common/vscode/vs/workbench/contrib/chat/browser/chatElicitationRequestPart';
7
- import { ChatModel } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel';
8
- import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
9
-
10
- var PollingConsts;
11
- (function (PollingConsts) {
12
- PollingConsts[PollingConsts["MinNoDataEvents"] = 2] = "MinNoDataEvents";
13
- PollingConsts[PollingConsts["MinPollingDuration"] = 500] = "MinPollingDuration";
14
- PollingConsts[PollingConsts["FirstPollingMaxDuration"] = 20000] = "FirstPollingMaxDuration";
15
- PollingConsts[PollingConsts["ExtendedPollingMaxDuration"] = 120000] = "ExtendedPollingMaxDuration";
16
- PollingConsts[PollingConsts["MaxPollingIntervalDuration"] = 2000] = "MaxPollingIntervalDuration";
17
- })(PollingConsts || (PollingConsts = {}));
18
- async function racePollingOrPrompt(pollFn, promptFn, originalResult, token, languageModelsService, execution) {
19
- const pollPromise = pollFn();
20
- const { promise: promptPromise, part } = promptFn();
21
- let promptResolved = false;
22
- const pollPromiseWrapped = pollPromise.then(async (result) => {
23
- if (!promptResolved && part) {
24
- part.hide();
25
- }
26
- return { type: 'poll', result };
27
- });
28
- const promptPromiseWrapped = promptPromise.then(result => {
29
- promptResolved = true;
30
- return { type: 'prompt', result };
31
- });
32
- const raceResult = await Promise.race([
33
- pollPromiseWrapped,
34
- promptPromiseWrapped
35
- ]);
36
- if (raceResult.type === 'poll') {
37
- return raceResult.result;
38
- }
39
- else if (raceResult.type === 'prompt') {
40
- const promptResult = raceResult.result;
41
- if (promptResult) {
42
- return await pollForOutputAndIdle(execution, true, token, languageModelsService);
43
- }
44
- else {
45
- return originalResult;
46
- }
47
- }
48
- return await pollFn();
49
- }
50
- function getOutput(instance, startMarker) {
51
- if (!instance.xterm || !instance.xterm.raw) {
52
- return '';
53
- }
54
- const lines = [];
55
- for (let y = Math.min(startMarker?.line ?? 0, 0); y < instance.xterm.raw.buffer.active.length; y++) {
56
- const line = instance.xterm.raw.buffer.active.getLine(y);
57
- if (!line) {
58
- continue;
59
- }
60
- lines.push(line.translateToString(true));
61
- }
62
- return lines.join('\n');
63
- }
64
- async function pollForOutputAndIdle(execution, extendedPolling, token, languageModelsService) {
65
- const maxWaitMs = extendedPolling ? PollingConsts.ExtendedPollingMaxDuration : PollingConsts.FirstPollingMaxDuration;
66
- const maxInterval = PollingConsts.MaxPollingIntervalDuration;
67
- let currentInterval = PollingConsts.MinPollingDuration;
68
- const pollStartTime = Date.now();
69
- let lastBufferLength = 0;
70
- let noNewDataCount = 0;
71
- let buffer = '';
72
- let terminalExecutionIdleBeforeTimeout = false;
73
- while (true) {
74
- if (token.isCancellationRequested) {
75
- break;
76
- }
77
- const now = Date.now();
78
- const elapsed = now - pollStartTime;
79
- const timeLeft = maxWaitMs - elapsed;
80
- if (timeLeft <= 0) {
81
- break;
82
- }
83
- const waitTime = Math.min(currentInterval, timeLeft);
84
- await timeout(waitTime);
85
- if (Date.now() - pollStartTime >= maxWaitMs) {
86
- break;
87
- }
88
- currentInterval = Math.min(currentInterval * 2, maxInterval);
89
- buffer = execution.getOutput();
90
- const currentBufferLength = buffer.length;
91
- if (currentBufferLength === lastBufferLength) {
92
- noNewDataCount++;
93
- }
94
- else {
95
- noNewDataCount = 0;
96
- lastBufferLength = currentBufferLength;
97
- }
98
- if (noNewDataCount >= PollingConsts.MinNoDataEvents) {
99
- if (execution.isActive && ((await execution.isActive()) === true)) {
100
- noNewDataCount = 0;
101
- lastBufferLength = currentBufferLength;
102
- continue;
103
- }
104
- terminalExecutionIdleBeforeTimeout = true;
105
- const modelOutputEvalResponse = await assessOutputForErrors(buffer, token, languageModelsService);
106
- return { modelOutputEvalResponse, terminalExecutionIdleBeforeTimeout, output: buffer, pollDurationMs: Date.now() - pollStartTime + (extendedPolling ? PollingConsts.FirstPollingMaxDuration : 0) };
107
- }
108
- }
109
- return { terminalExecutionIdleBeforeTimeout: false, output: buffer, pollDurationMs: Date.now() - pollStartTime + (extendedPolling ? PollingConsts.FirstPollingMaxDuration : 0) };
110
- }
111
- function promptForMorePolling(command, token, context, chatService) {
112
- if (token.isCancellationRequested) {
113
- return { promise: Promise.resolve(false) };
114
- }
115
- const chatModel = chatService.getSession(context.sessionId);
116
- if (chatModel instanceof ChatModel) {
117
- const request = chatModel.getRequests().at(-1);
118
- if (request) {
119
- let part = undefined;
120
- const promise = ( new Promise(resolve => {
121
- const thePart = part = ( new ChatElicitationRequestPart(( new MarkdownString(( localize(11257, "Continue waiting for `{0}` to finish?", command)))), ( new MarkdownString(( localize(
122
- 11258,
123
- "Copilot will continue to poll for output to determine when the terminal becomes idle for up to 2 minutes."
124
- )))), '', ( localize(11259, 'Yes')), ( localize(11260, 'No')), async () => {
125
- thePart.state = 'accepted';
126
- thePart.hide();
127
- resolve(true);
128
- }, async () => {
129
- thePart.state = 'rejected';
130
- thePart.hide();
131
- resolve(false);
132
- }));
133
- chatModel.acceptResponseProgress(request, thePart);
134
- }));
135
- return { promise, part };
136
- }
137
- }
138
- return { promise: Promise.resolve(false) };
139
- }
140
- async function assessOutputForErrors(buffer, token, languageModelsService) {
141
- const models = await languageModelsService.selectLanguageModels({ vendor: 'copilot', family: 'gpt-4o-mini' });
142
- if (!models.length) {
143
- return 'No models available';
144
- }
145
- const response = await languageModelsService.sendChatRequest(models[0], ( new ExtensionIdentifier('Github.copilot-chat')), [{ role: ChatMessageRole.Assistant, content: [{ type: 'text', value: `Evaluate this terminal output to determine if there were errors or if the command ran successfully: ${buffer}.` }] }], {}, token);
146
- const streaming = (async () => {
147
- for await (const part of response.stream) {
148
- if (Array.isArray(part)) {
149
- for (const p of part) {
150
- }
151
- }
152
- }
153
- })();
154
- try {
155
- await Promise.all([response.result, streaming]);
156
- return response.result;
157
- }
158
- catch (err) {
159
- return 'Error occurred ' + err;
160
- }
161
- }
162
-
163
- export { PollingConsts, assessOutputForErrors, getOutput, pollForOutputAndIdle, promptForMorePolling, racePollingOrPrompt };