@codingame/monaco-vscode-chat-service-override 19.1.3 → 20.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 (211) hide show
  1. package/index.js +20 -8
  2. package/package.json +36 -31
  3. package/vscode/src/vs/base/common/policy.d.ts +14 -0
  4. package/vscode/src/vs/base/common/policy.js +11 -0
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +53 -43
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +54 -24
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +14 -14
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +15 -15
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +37 -25
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +4 -4
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +1 -1
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +6 -6
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +23 -11
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +9 -9
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +83 -14
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +421 -21
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +20 -20
  24. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +215 -104
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +3 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +9 -3
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +3 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +18 -6
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +4 -4
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +20 -20
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +6 -3
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +4 -2
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +9 -6
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +11 -8
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +5 -3
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +16 -11
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +7 -23
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +58 -326
  43. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +0 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +33 -30
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +12 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +39 -17
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +55 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +380 -0
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +3 -2
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +5 -5
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +4 -2
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +22 -22
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +9 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +44 -10
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +38 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +145 -0
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +34 -34
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +7 -7
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +3 -3
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +36 -11
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +49 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +407 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +12 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +738 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +142 -151
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +1 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +54 -54
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +20 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -3
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +5 -4
  78. package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +23 -7
  80. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
  82. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +1 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +13 -8
  84. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +3 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +3 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +28 -0
  87. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSetup.css +7 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.d.ts +2 -2
  89. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +14 -14
  90. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +8 -8
  91. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +10 -10
  92. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.d.ts +1 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +11 -11
  94. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.d.ts +1 -1
  95. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +19 -19
  96. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.d.ts +1 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +14 -14
  98. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
  100. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +4 -4
  101. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +10 -10
  102. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +11 -11
  103. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.d.ts +1 -7
  104. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +52 -90
  105. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +15 -15
  106. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
  107. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +2 -2
  108. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +6 -2
  109. package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +9 -6
  110. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +11 -6
  111. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +137 -30
  112. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +8 -0
  113. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +1 -1
  114. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
  115. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +27 -0
  116. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +44 -0
  117. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/config/configMigration.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/filePromptContentsProvider.js +2 -2
  119. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/promptContentsProviderBase.d.ts +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/promptContentsProviderBase.js +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +3 -5
  123. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +14 -14
  124. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +1 -1
  126. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/providerInstanceManagerBase.js +2 -2
  127. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
  128. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
  129. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/instructionsHeader.d.ts +1 -1
  130. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +3 -3
  131. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +1 -1
  132. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +1 -1
  133. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
  134. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/modeHeader.d.ts +1 -1
  135. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +1 -1
  136. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
  138. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +1 -1
  139. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +8 -8
  140. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +1 -1
  141. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +2 -2
  142. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +27 -27
  143. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
  144. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
  145. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +9 -9
  146. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  147. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +4 -4
  148. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +104 -0
  149. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +667 -0
  150. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +14 -14
  151. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -1
  152. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  153. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  154. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  155. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css +56 -0
  156. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.d.ts +1 -0
  157. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +14 -0
  158. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.d.ts +11 -0
  159. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +111 -0
  160. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.d.ts +10 -0
  161. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +52 -0
  162. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.d.ts +1 -0
  163. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +262 -0
  164. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +35 -0
  165. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +129 -0
  166. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatControllerHolder.d.ts +3 -0
  167. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatControllerHolder.js +8 -0
  168. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.d.ts +9 -0
  169. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +30 -0
  170. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +72 -0
  171. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +411 -0
  172. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +3 -0
  173. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +59 -0
  174. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +51 -0
  175. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +163 -0
  176. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +24 -0
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +164 -0
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +14 -0
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +101 -0
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +16 -0
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +52 -0
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +12 -0
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +71 -0
  184. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +14 -0
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +94 -0
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/getTerminalOutputTool.d.ts +11 -0
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/getTerminalOutputTool.js +44 -0
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +3 -0
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +18 -0
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -0
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +13 -0
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalTool.d.ts +55 -0
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalTool.js +603 -0
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +3 -0
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +113 -0
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/createAndRunTaskTool.d.ts +21 -0
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/createAndRunTaskTool.js +227 -0
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.d.ts +19 -0
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +88 -0
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/runTaskTool.d.ts +21 -0
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/runTaskTool.js +140 -0
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +22 -0
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +80 -0
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +1 -0
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +40 -0
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.d.ts +1 -0
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +36 -0
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +20 -0
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +114 -0
  210. package/vscode/src/vs/workbench/contrib/chat/browser/media/google-mono-dark.svg +0 -3
  211. package/vscode/src/vs/workbench/contrib/chat/browser/media/google-mono-light.svg +0 -3
@@ -0,0 +1,411 @@
1
+
2
+ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import { createElement, trackFocus, getActiveWindow, Dimension } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
5
+ import { createCancelablePromise, DeferredPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
6
+ import { CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
7
+ import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
8
+ import { Disposable, MutableDisposable, toDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
9
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
10
+ import { MicrotaskDelay } from '@codingame/monaco-vscode-api/vscode/vs/base/common/symbols';
11
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
+ import { MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
13
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
14
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
15
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
16
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
17
+ import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
18
+ import { showChatView } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/browser/chat';
19
+ import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
20
+ import { isCellTextEditOperation } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel';
21
+ import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
22
+ import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
23
+ import { InlineChatWidget } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/inlineChat/browser/inlineChatWidget';
24
+ import { MENU_INLINE_CHAT_WIDGET_SECONDARY } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/inlineChat/common/inlineChat';
25
+ import { TerminalStickyScrollContribution } from '@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common/vscode/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollContribution';
26
+ import * as terminalChatWidget from './media/terminalChatWidget.css';
27
+ import { TerminalChatContextKeys, MENU_TERMINAL_CHAT_WIDGET_INPUT_SIDE_TOOLBAR, TerminalChatCommandId, MENU_TERMINAL_CHAT_WIDGET_STATUS } from '@codingame/monaco-vscode-07eaa805-9dea-5ec6-a422-a4f04872424d-common/vscode/vs/workbench/contrib/terminalContrib/chat/browser/terminalChat';
28
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
29
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
30
+
31
+ registerCss(terminalChatWidget);
32
+ var Constants;
33
+ (function (Constants) {
34
+ Constants[Constants["HorizontalMargin"] = 10] = "HorizontalMargin";
35
+ Constants[Constants["VerticalMargin"] = 30] = "VerticalMargin";
36
+ Constants[Constants["RightPadding"] = 12] = "RightPadding";
37
+ Constants[Constants["MaxHeight"] = 480] = "MaxHeight";
38
+ Constants[Constants["MaxHeightPercentageOfViewport"] = 0.75] = "MaxHeightPercentageOfViewport";
39
+ })(Constants || (Constants = {}));
40
+ var Message;
41
+ (function (Message) {
42
+ Message[Message["None"] = 0] = "None";
43
+ Message[Message["AcceptSession"] = 1] = "AcceptSession";
44
+ Message[Message["CancelSession"] = 2] = "CancelSession";
45
+ Message[Message["PauseSession"] = 4] = "PauseSession";
46
+ Message[Message["CancelRequest"] = 8] = "CancelRequest";
47
+ Message[Message["CancelInput"] = 16] = "CancelInput";
48
+ Message[Message["AcceptInput"] = 32] = "AcceptInput";
49
+ Message[Message["ReturnInput"] = 64] = "ReturnInput";
50
+ })(Message || (Message = {}));
51
+ let TerminalChatWidget = class TerminalChatWidget extends Disposable {
52
+ get inlineChatWidget() { return this._inlineChatWidget; }
53
+ get lastResponseContent() {
54
+ return this._lastResponseContent;
55
+ }
56
+ constructor(_terminalElement, _instance, _xterm, contextKeyService, _chatService, _storageService, _viewsService, instantiationService, _chatAgentService) {
57
+ super();
58
+ this._terminalElement = _terminalElement;
59
+ this._instance = _instance;
60
+ this._xterm = _xterm;
61
+ this._chatService = _chatService;
62
+ this._storageService = _storageService;
63
+ this._viewsService = _viewsService;
64
+ this._chatAgentService = _chatAgentService;
65
+ this._onDidHide = this._register(( new Emitter()));
66
+ this.onDidHide = this._onDidHide.event;
67
+ this._messages = this._store.add(( new Emitter()));
68
+ this._viewStateStorageKey = 'terminal-inline-chat-view-state';
69
+ this._terminalAgentName = 'terminal';
70
+ this._model = this._register(( new MutableDisposable()));
71
+ this._requestInProgress = observableValue(this, false);
72
+ this.requestInProgress = this._requestInProgress;
73
+ this._focusedContextKey = TerminalChatContextKeys.focused.bindTo(contextKeyService);
74
+ this._visibleContextKey = TerminalChatContextKeys.visible.bindTo(contextKeyService);
75
+ this._requestActiveContextKey = TerminalChatContextKeys.requestActive.bindTo(contextKeyService);
76
+ this._responseContainsCodeBlockContextKey = TerminalChatContextKeys.responseContainsCodeBlock.bindTo(contextKeyService);
77
+ this._responseContainsMulitpleCodeBlocksContextKey = TerminalChatContextKeys.responseContainsMultipleCodeBlocks.bindTo(contextKeyService);
78
+ this._container = createElement('div');
79
+ this._container.classList.add('terminal-inline-chat');
80
+ this._terminalElement.appendChild(this._container);
81
+ this._inlineChatWidget = instantiationService.createInstance(InlineChatWidget, {
82
+ location: ChatAgentLocation.Terminal,
83
+ resolveData: () => {
84
+ return undefined;
85
+ }
86
+ }, {
87
+ statusMenuId: {
88
+ menu: MENU_TERMINAL_CHAT_WIDGET_STATUS,
89
+ options: {
90
+ buttonConfigProvider: action => ({
91
+ showLabel: action.id !== TerminalChatCommandId.RerunRequest,
92
+ showIcon: action.id === TerminalChatCommandId.RerunRequest,
93
+ isSecondary: action.id !== TerminalChatCommandId.RunCommand && action.id !== TerminalChatCommandId.RunFirstCommand
94
+ })
95
+ }
96
+ },
97
+ secondaryMenuId: MENU_INLINE_CHAT_WIDGET_SECONDARY,
98
+ chatWidgetViewOptions: {
99
+ menus: {
100
+ telemetrySource: 'terminal-inline-chat',
101
+ executeToolbar: MenuId.ChatExecute,
102
+ inputSideToolbar: MENU_TERMINAL_CHAT_WIDGET_INPUT_SIDE_TOOLBAR,
103
+ }
104
+ }
105
+ });
106
+ this._register(this._inlineChatWidget.chatWidget.onDidChangeViewModel(() => this._saveViewState()));
107
+ this._register(Event.any(this._inlineChatWidget.onDidChangeHeight, this._instance.onDimensionsChanged, this._inlineChatWidget.chatWidget.onDidChangeContentHeight, Event.debounce(this._xterm.raw.onCursorMove, () => void 0, MicrotaskDelay))(() => this._relayout()));
108
+ const observer = ( new ResizeObserver(() => this._relayout()));
109
+ observer.observe(this._terminalElement);
110
+ this._register(toDisposable(() => observer.disconnect()));
111
+ this._resetPlaceholder();
112
+ this._container.appendChild(this._inlineChatWidget.domNode);
113
+ this._focusTracker = this._register(trackFocus(this._container));
114
+ this._register(this._focusTracker.onDidFocus(() => this._focusedContextKey.set(true)));
115
+ this._register(this._focusTracker.onDidBlur(() => this._focusedContextKey.set(false)));
116
+ this._register(autorun(r => {
117
+ const isBusy = this._inlineChatWidget.requestInProgress.read(r);
118
+ this._container.classList.toggle('busy', isBusy);
119
+ this._inlineChatWidget.toggleStatus(!!this._inlineChatWidget.responseContent);
120
+ if (isBusy || !this._inlineChatWidget.responseContent) {
121
+ this._responseContainsCodeBlockContextKey.set(false);
122
+ this._responseContainsMulitpleCodeBlocksContextKey.set(false);
123
+ }
124
+ else {
125
+ Promise.all([
126
+ this._inlineChatWidget.getCodeBlockInfo(0),
127
+ this._inlineChatWidget.getCodeBlockInfo(1)
128
+ ]).then(([firstCodeBlock, secondCodeBlock]) => {
129
+ this._responseContainsCodeBlockContextKey.set(!!firstCodeBlock);
130
+ this._responseContainsMulitpleCodeBlocksContextKey.set(!!secondCodeBlock);
131
+ this._inlineChatWidget.updateToolbar(true);
132
+ });
133
+ }
134
+ }));
135
+ this.hide();
136
+ }
137
+ _relayout() {
138
+ if (this._dimension) {
139
+ this._doLayout();
140
+ }
141
+ }
142
+ _doLayout() {
143
+ const xtermElement = this._xterm.raw.element;
144
+ if (!xtermElement) {
145
+ return;
146
+ }
147
+ const style = getActiveWindow().getComputedStyle(xtermElement);
148
+ const xtermLeftPadding = parseInt(style.paddingLeft);
149
+ const width = xtermElement.clientWidth - xtermLeftPadding - Constants.RightPadding;
150
+ if (width === 0) {
151
+ return;
152
+ }
153
+ const terminalViewportHeight = this._getTerminalViewportHeight();
154
+ const widgetAllowedPercentBasedHeight = (terminalViewportHeight ?? 0) * Constants.MaxHeightPercentageOfViewport;
155
+ const height = Math.max(Math.min(Constants.MaxHeight, this._inlineChatWidget.contentHeight, widgetAllowedPercentBasedHeight), this._inlineChatWidget.minHeight);
156
+ if (height === 0) {
157
+ return;
158
+ }
159
+ this._dimension = ( new Dimension(width, height));
160
+ this._inlineChatWidget.layout(this._dimension);
161
+ this._inlineChatWidget.domNode.style.paddingLeft = `${xtermLeftPadding}px`;
162
+ this._updateXtermViewportPosition();
163
+ }
164
+ _resetPlaceholder() {
165
+ const defaultAgent = this._chatAgentService.getDefaultAgent(ChatAgentLocation.Terminal);
166
+ this.inlineChatWidget.placeholder = defaultAgent?.description ?? ( localize(11252, 'Ask about commands'));
167
+ }
168
+ async reveal(viewState) {
169
+ await this._createSession(viewState);
170
+ this._doLayout();
171
+ this._container.classList.remove('hide');
172
+ this._visibleContextKey.set(true);
173
+ this._resetPlaceholder();
174
+ this._inlineChatWidget.focus();
175
+ this._instance.scrollToBottom();
176
+ }
177
+ _getTerminalCursorTop() {
178
+ const font = this._instance.xterm?.getFont();
179
+ if (!font?.charHeight) {
180
+ return;
181
+ }
182
+ const terminalWrapperHeight = this._getTerminalViewportHeight() ?? 0;
183
+ const cellHeight = font.charHeight * font.lineHeight;
184
+ const topPadding = terminalWrapperHeight - (this._instance.rows * cellHeight);
185
+ const cursorY = (this._instance.xterm?.raw.buffer.active.cursorY ?? 0) + 1;
186
+ return topPadding + cursorY * cellHeight;
187
+ }
188
+ _updateXtermViewportPosition() {
189
+ const top = this._getTerminalCursorTop();
190
+ if (!top) {
191
+ return;
192
+ }
193
+ this._container.style.top = `${top}px`;
194
+ const terminalViewportHeight = this._getTerminalViewportHeight();
195
+ if (!terminalViewportHeight) {
196
+ return;
197
+ }
198
+ const widgetAllowedPercentBasedHeight = terminalViewportHeight * Constants.MaxHeightPercentageOfViewport;
199
+ const height = Math.max(Math.min(Constants.MaxHeight, this._inlineChatWidget.contentHeight, widgetAllowedPercentBasedHeight), this._inlineChatWidget.minHeight);
200
+ if (top > terminalViewportHeight - height && terminalViewportHeight - height > 0) {
201
+ this._setTerminalViewportOffset(top - (terminalViewportHeight - height));
202
+ }
203
+ else {
204
+ this._setTerminalViewportOffset(undefined);
205
+ }
206
+ }
207
+ _getTerminalViewportHeight() {
208
+ return this._terminalElement.clientHeight;
209
+ }
210
+ hide() {
211
+ this._container.classList.add('hide');
212
+ this._inlineChatWidget.reset();
213
+ this._resetPlaceholder();
214
+ this._inlineChatWidget.updateToolbar(false);
215
+ this._visibleContextKey.set(false);
216
+ this._inlineChatWidget.value = '';
217
+ this._instance.focus();
218
+ this._setTerminalViewportOffset(undefined);
219
+ this._onDidHide.fire();
220
+ }
221
+ _setTerminalViewportOffset(offset) {
222
+ if (offset === undefined || this._container.classList.contains('hide')) {
223
+ this._terminalElement.style.position = '';
224
+ this._terminalElement.style.bottom = '';
225
+ TerminalStickyScrollContribution.get(this._instance)?.hideUnlock();
226
+ }
227
+ else {
228
+ this._terminalElement.style.position = 'relative';
229
+ this._terminalElement.style.bottom = `${offset}px`;
230
+ TerminalStickyScrollContribution.get(this._instance)?.hideLock();
231
+ }
232
+ }
233
+ focus() {
234
+ this.inlineChatWidget.focus();
235
+ }
236
+ hasFocus() {
237
+ return this._inlineChatWidget.hasFocus();
238
+ }
239
+ setValue(value) {
240
+ this._inlineChatWidget.value = value ?? '';
241
+ }
242
+ async acceptCommand(shouldExecute) {
243
+ const code = await this.inlineChatWidget.getCodeBlockInfo(0);
244
+ if (!code) {
245
+ return;
246
+ }
247
+ const value = code.getValue();
248
+ this._instance.runCommand(value, shouldExecute);
249
+ this.clear();
250
+ }
251
+ get focusTracker() {
252
+ return this._focusTracker;
253
+ }
254
+ async _createSession(viewState) {
255
+ this._sessionCtor = createCancelablePromise(async (token) => {
256
+ if (!this._model.value) {
257
+ this._model.value = this._chatService.startSession(ChatAgentLocation.Terminal, token);
258
+ const model = this._model.value;
259
+ if (model) {
260
+ this._inlineChatWidget.setChatModel(model, this._loadViewState());
261
+ this._resetPlaceholder();
262
+ }
263
+ if (!this._model.value) {
264
+ throw ( new Error('Failed to start chat session'));
265
+ }
266
+ }
267
+ });
268
+ this._register(toDisposable(() => this._sessionCtor?.cancel()));
269
+ }
270
+ _loadViewState() {
271
+ const rawViewState = this._storageService.get(this._viewStateStorageKey, StorageScope.PROFILE, undefined);
272
+ let viewState;
273
+ if (rawViewState) {
274
+ try {
275
+ viewState = JSON.parse(rawViewState);
276
+ }
277
+ catch {
278
+ viewState = undefined;
279
+ }
280
+ }
281
+ return viewState;
282
+ }
283
+ _saveViewState() {
284
+ this._storageService.store(this._viewStateStorageKey, JSON.stringify(this._inlineChatWidget.chatWidget.getViewState()), StorageScope.PROFILE, StorageTarget.USER);
285
+ }
286
+ clear() {
287
+ this.cancel();
288
+ this._model.clear();
289
+ this._responseContainsCodeBlockContextKey.reset();
290
+ this._requestActiveContextKey.reset();
291
+ this.hide();
292
+ this.setValue(undefined);
293
+ }
294
+ async acceptInput(query, options) {
295
+ if (!this._model.value) {
296
+ await this.reveal();
297
+ }
298
+ this._messages.fire(Message.AcceptInput);
299
+ const lastInput = this._inlineChatWidget.value;
300
+ if (!lastInput) {
301
+ return;
302
+ }
303
+ this._activeRequestCts?.cancel();
304
+ this._activeRequestCts = ( new CancellationTokenSource());
305
+ const store = ( new DisposableStore());
306
+ this._requestActiveContextKey.set(true);
307
+ const response = await this._inlineChatWidget.chatWidget.acceptInput(lastInput, { isVoiceInput: options?.isVoiceInput });
308
+ this._currentRequestId = response?.requestId;
309
+ const responsePromise = ( new DeferredPromise());
310
+ try {
311
+ this._requestActiveContextKey.set(true);
312
+ if (response) {
313
+ store.add(response.onDidChange(async () => {
314
+ if (response.isCanceled) {
315
+ this._requestActiveContextKey.set(false);
316
+ responsePromise.complete(undefined);
317
+ return;
318
+ }
319
+ if (response.isComplete) {
320
+ this._requestActiveContextKey.set(false);
321
+ this._requestActiveContextKey.set(false);
322
+ const firstCodeBlock = await this._inlineChatWidget.getCodeBlockInfo(0);
323
+ const secondCodeBlock = await this._inlineChatWidget.getCodeBlockInfo(1);
324
+ this._responseContainsCodeBlockContextKey.set(!!firstCodeBlock);
325
+ this._responseContainsMulitpleCodeBlocksContextKey.set(!!secondCodeBlock);
326
+ this._inlineChatWidget.updateToolbar(true);
327
+ responsePromise.complete(response);
328
+ }
329
+ }));
330
+ }
331
+ await responsePromise.p;
332
+ this._lastResponseContent = response?.response.getMarkdown();
333
+ return response;
334
+ }
335
+ catch {
336
+ this._lastResponseContent = undefined;
337
+ return;
338
+ }
339
+ finally {
340
+ store.dispose();
341
+ }
342
+ }
343
+ cancel() {
344
+ this._sessionCtor?.cancel();
345
+ this._sessionCtor = undefined;
346
+ this._activeRequestCts?.cancel();
347
+ this._requestActiveContextKey.set(false);
348
+ const model = this._inlineChatWidget.getChatModel();
349
+ if (!model?.sessionId) {
350
+ return;
351
+ }
352
+ this._chatService.cancelCurrentRequestForSession(model?.sessionId);
353
+ }
354
+ async viewInChat() {
355
+ const widget = await showChatView(this._viewsService);
356
+ const currentRequest = this._inlineChatWidget.chatWidget.viewModel?.model.getRequests().find(r => r.id === this._currentRequestId);
357
+ if (!widget || !currentRequest?.response) {
358
+ return;
359
+ }
360
+ const message = [];
361
+ for (const item of currentRequest.response.response.value) {
362
+ if (item.kind === 'textEditGroup') {
363
+ for (const group of item.edits) {
364
+ message.push({
365
+ kind: 'textEdit',
366
+ edits: group,
367
+ uri: item.uri
368
+ });
369
+ }
370
+ }
371
+ else if (item.kind === 'notebookEditGroup') {
372
+ for (const group of item.edits) {
373
+ if (isCellTextEditOperation(group)) {
374
+ message.push({
375
+ kind: 'textEdit',
376
+ edits: [group.edit],
377
+ uri: group.uri
378
+ });
379
+ }
380
+ else {
381
+ message.push({
382
+ kind: 'notebookEdit',
383
+ edits: [group],
384
+ uri: item.uri
385
+ });
386
+ }
387
+ }
388
+ }
389
+ else {
390
+ message.push(item);
391
+ }
392
+ }
393
+ this._chatService.addCompleteRequest(widget.viewModel.sessionId, `@${this._terminalAgentName} ${currentRequest.message.text}`, currentRequest.variableData, currentRequest.attempt, {
394
+ message,
395
+ result: currentRequest.response.result,
396
+ followups: currentRequest.response.followups
397
+ });
398
+ widget.focusLastMessage();
399
+ this.hide();
400
+ }
401
+ };
402
+ TerminalChatWidget = ( __decorate([
403
+ ( __param(3, IContextKeyService)),
404
+ ( __param(4, IChatService)),
405
+ ( __param(5, IStorageService)),
406
+ ( __param(6, IViewsService)),
407
+ ( __param(7, IInstantiationService)),
408
+ ( __param(8, IChatAgentService))
409
+ ], TerminalChatWidget));
410
+
411
+ export { TerminalChatWidget };
@@ -0,0 +1,3 @@
1
+ import type { IToolResult } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService";
2
+ import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service";
3
+ export declare function getRecommendedToolsOverRunInTerminal(commandLine: string, languageModelToolsService: ILanguageModelToolsService): IToolResult | undefined;
@@ -0,0 +1,59 @@
1
+
2
+
3
+ let previouslyRecommededInSession = false;
4
+ const terminalCommands = [
5
+ {
6
+ commands: [
7
+ ( new RegExp(/^python3? -m pip install(\b)/)),
8
+ ( new RegExp(/^pip3? install(\b)/)),
9
+ ],
10
+ tags: ['python environment'],
11
+ },
12
+ {
13
+ commands: [
14
+ ( new RegExp(/^python3? -m jupyter(\b)/)),
15
+ ( new RegExp(/^python3? -m pip install\b.*jupyter\b.*/)),
16
+ ( new RegExp(/^pip3? install\b.*jupyter\b.*/)),
17
+ (
18
+ new RegExp(/^jupyter(\b)/)),
19
+ ],
20
+ tags: ['python environment', 'jupyter environment'],
21
+ }
22
+ ];
23
+ function getRecommendedToolsOverRunInTerminal(commandLine, languageModelToolsService) {
24
+ const tools = languageModelToolsService.getTools();
25
+ if (!tools || previouslyRecommededInSession) {
26
+ return;
27
+ }
28
+ const recommendedTools = ( new Set());
29
+ const messages = [
30
+ `The terminal command '${commandLine}' was not executed.`,
31
+ `Try using some of the following tools instead of running a Terminal Command (if unable to use one of these tools as an alternative then run the same terminal command again):`,
32
+ ];
33
+ for (const terminalCommand of terminalCommands) {
34
+ if (!( terminalCommand.commands.some((condition) => condition.test(commandLine)))) {
35
+ continue;
36
+ }
37
+ const tagsToSearchFor = terminalCommand.tags;
38
+ Array.from(tools)
39
+ .filter(t => ( tagsToSearchFor.some(tag => t.tags?.includes(tag))))
40
+ .forEach(tool => {
41
+ recommendedTools.add(tool.id);
42
+ });
43
+ }
44
+ recommendedTools.forEach(toolName => {
45
+ messages.push(`- ${toolName}`);
46
+ });
47
+ if (recommendedTools.size) {
48
+ previouslyRecommededInSession = true;
49
+ return {
50
+ content: [{
51
+ kind: 'text',
52
+ value: messages.join(' \n')
53
+ }],
54
+ };
55
+ }
56
+ return undefined;
57
+ }
58
+
59
+ export { getRecommendedToolsOverRunInTerminal };
@@ -0,0 +1,51 @@
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,
10
+ MinPollingDuration = 500,
11
+ FirstPollingMaxDuration = 20000,
12
+ ExtendedPollingMaxDuration = 120000,
13
+ MaxPollingIntervalDuration = 2000
14
+ }
15
+ export declare function racePollingOrPrompt(pollFn: () => Promise<{
16
+ terminalExecutionIdleBeforeTimeout: boolean;
17
+ output: string;
18
+ pollDurationMs?: number;
19
+ modelOutputEvalResponse?: string;
20
+ }>, promptFn: () => {
21
+ promise: Promise<boolean>;
22
+ part?: Pick<ChatElicitationRequestPart, "hide" | "onDidRequestHide">;
23
+ }, originalResult: {
24
+ terminalExecutionIdleBeforeTimeout: boolean;
25
+ output: string;
26
+ pollDurationMs?: number;
27
+ modelOutputEvalResponse?: string;
28
+ }, token: CancellationToken, languageModelsService: ILanguageModelsService, execution: {
29
+ getOutput: () => string;
30
+ isActive?: () => Promise<boolean>;
31
+ }): Promise<{
32
+ terminalExecutionIdleBeforeTimeout: boolean;
33
+ output: string;
34
+ pollDurationMs?: number;
35
+ modelOutputEvalResponse?: string;
36
+ }>;
37
+ export declare function getOutput(instance: ITerminalInstance, startMarker?: IXtermMarker): string;
38
+ export declare function pollForOutputAndIdle(execution: {
39
+ getOutput: () => string;
40
+ isActive?: () => Promise<boolean>;
41
+ }, extendedPolling: boolean, token: CancellationToken, languageModelsService: ILanguageModelsService): Promise<{
42
+ terminalExecutionIdleBeforeTimeout: boolean;
43
+ output: string;
44
+ pollDurationMs?: number;
45
+ modelOutputEvalResponse?: string;
46
+ }>;
47
+ export declare function promptForMorePolling(command: string, token: CancellationToken, context: IToolInvocationContext, chatService: IChatService): {
48
+ promise: Promise<boolean>;
49
+ part?: ChatElicitationRequestPart;
50
+ };
51
+ export declare function assessOutputForErrors(buffer: string, token: CancellationToken, languageModelsService: ILanguageModelsService): Promise<string>;