@codingame/monaco-vscode-chat-service-override 20.4.1 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/index.js +15 -7
  2. package/package.json +38 -36
  3. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +2 -0
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +60 -0
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +56 -46
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +18 -16
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +52 -11
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +28 -26
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +19 -13
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +15 -12
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +11 -11
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +10 -10
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +68 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +433 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -18
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +7 -3
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +205 -551
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +7 -5
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +52 -29
  24. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -163
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +1 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +20 -5
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +17 -17
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -14
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +32 -6
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -1
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +22 -3
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +22 -9
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +6 -8
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +1 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +47 -15
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +12 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +8 -2
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +33 -8
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +3 -3
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +3 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +74 -19
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +2 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +19 -19
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +3 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -19
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.d.ts +12 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.js +36 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +36 -35
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +6 -6
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +2 -2
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +37 -9
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +238 -52
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +23 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +257 -148
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +3 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +126 -77
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -3
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +3 -13
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +55 -45
  67. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +6 -3
  68. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +13 -7
  70. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +130 -47
  71. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +5 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +6 -6
  75. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +9 -9
  76. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +4 -4
  77. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +39 -35
  78. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +9 -9
  79. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +18 -18
  80. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +12 -12
  81. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  82. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  83. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  84. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  85. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +2 -2
  86. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -14
  87. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  88. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +5 -4
  89. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +7 -4
  90. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +4 -8
  91. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +153 -168
  92. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +127 -1
  93. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +111 -1
  94. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
  95. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +2 -1
  96. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +6 -3
  97. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.d.ts +20 -0
  98. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +66 -0
  99. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +38 -0
  100. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +143 -0
  101. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +3 -1
  102. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +12 -3
  103. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.d.ts +8 -3
  104. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +41 -8
  105. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.d.ts +4 -1
  106. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +55 -22
  107. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
  110. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.d.ts +2 -0
  112. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +5 -2
  113. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.d.ts +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.js +3 -4
  115. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
  116. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +0 -5
  117. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +8 -23
  118. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
  119. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +4 -5
  120. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +11 -5
  121. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +28 -28
  122. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  123. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +12 -0
  124. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +54 -0
  125. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
  126. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +33 -31
  127. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +9 -9
  128. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.d.ts +1 -3
  129. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +9 -13
  130. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  131. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -18
  132. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +2 -1
  133. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +11 -4
  134. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  135. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -2
  136. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +1 -6
  137. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +16 -1
  138. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +84 -25
  139. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +10 -0
  140. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +55 -0
  141. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +8 -2
  142. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +15 -7
  143. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +23 -0
  144. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +72 -1
  145. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +8 -2
  146. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +19 -9
  147. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +5 -0
  148. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -5
  149. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +12 -8
  150. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +6 -0
  151. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +85 -1
  152. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +35 -0
  153. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +448 -0
  154. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -1
  155. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +30 -77
  156. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +62 -0
  157. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +174 -0
  158. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +75 -10
  159. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +15 -2
  160. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +81 -38
  161. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +11 -0
  162. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +106 -0
  163. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.js → tools/getTerminalOutputTool.js} +5 -3
  164. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +11 -0
  165. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +59 -0
  166. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +57 -0
  167. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +452 -0
  168. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +45 -0
  169. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
  170. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +2 -0
  171. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +31 -0
  172. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.d.ts → tools/runInTerminalTool.d.ts} +11 -13
  173. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.js → tools/runInTerminalTool.js} +282 -133
  174. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.d.ts +5 -5
  175. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.js +51 -50
  176. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/getTaskOutputTool.d.ts +6 -1
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +117 -0
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.d.ts +3 -5
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.js +54 -50
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +19 -0
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +36 -0
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.d.ts +3 -0
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.js +8 -0
  184. package/vscode/src/vs/base/common/policy.d.ts +0 -41
  185. package/vscode/src/vs/base/common/policy.js +0 -11
  186. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +0 -12
  187. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +0 -738
  188. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -42
  189. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.d.ts +0 -67
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +0 -167
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.d.ts +0 -23
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +0 -63
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +0 -55
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +0 -163
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +0 -88
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +0 -35
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +0 -80
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +0 -1
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +0 -40
  200. /package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.d.ts → tools/getTerminalOutputTool.d.ts} +0 -0
@@ -1,9 +1,12 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
- import { regExpLeadsToEndlessLoop } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
4
+ import { regExpLeadsToEndlessLoop, escapeRegExpCharacters } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
5
+ import { isObject } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
6
+ import { structuralEquals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/equals';
7
+ import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration';
5
8
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
6
- import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-6883db80-c313-54eb-8fbc-5872c56b0326-common/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
9
+ import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-a175bd1a-4858-5944-9ae5-fb73305dcb13-common/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
7
10
  import { isPowerShell } from './runInTerminalHelpers.js';
8
11
 
9
12
  const neverMatchRegex = /(?!.*)/;
@@ -25,6 +28,7 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
25
28
  }
26
29
  updateConfiguration() {
27
30
  let configValue = this._configurationService.getValue(TerminalChatAgentToolsSettingId.AutoApprove);
31
+ const configInspectValue = this._configurationService.inspect(TerminalChatAgentToolsSettingId.AutoApprove);
28
32
  const deprecatedValue = this._configurationService.getValue(TerminalChatAgentToolsSettingId.DeprecatedAutoApproveCompatible);
29
33
  if (deprecatedValue && typeof deprecatedValue === 'object' && configValue && typeof configValue === 'object') {
30
34
  configValue = {
@@ -32,7 +36,7 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
32
36
  ...deprecatedValue
33
37
  };
34
38
  }
35
- const { denyListRules, allowListRules, allowListCommandLineRules, denyListCommandLineRules } = this._mapAutoApproveConfigToRules(configValue);
39
+ const { denyListRules, allowListRules, allowListCommandLineRules, denyListCommandLineRules } = this._mapAutoApproveConfigToRules(configValue, configInspectValue);
36
40
  this._allowListRules = allowListRules;
37
41
  this._denyListRules = denyListRules;
38
42
  this._allowListCommandLineRules = allowListCommandLineRules;
@@ -40,42 +44,65 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
40
44
  }
41
45
  isCommandAutoApproved(command, shell, os) {
42
46
  for (const rule of this._denyListRules) {
43
- if (this._commandMatchesRegex(rule.regex, command, shell, os)) {
44
- return { result: 'denied', reason: `Command '${command}' is denied by deny list rule: ${rule.sourceText}` };
47
+ if (this._commandMatchesRule(rule, command, shell, os)) {
48
+ return {
49
+ result: 'denied',
50
+ rule,
51
+ reason: `Command '${command}' is denied by deny list rule: ${rule.sourceText}`
52
+ };
45
53
  }
46
54
  }
47
55
  for (const rule of this._allowListRules) {
48
- if (this._commandMatchesRegex(rule.regex, command, shell, os)) {
49
- return { result: 'approved', reason: `Command '${command}' is approved by allow list rule: ${rule.sourceText}` };
56
+ if (this._commandMatchesRule(rule, command, shell, os)) {
57
+ return {
58
+ result: 'approved',
59
+ rule,
60
+ reason: `Command '${command}' is approved by allow list rule: ${rule.sourceText}`
61
+ };
50
62
  }
51
63
  }
52
- return { result: 'noMatch', reason: `Command '${command}' has no matching auto approve entries` };
64
+ return {
65
+ result: 'noMatch',
66
+ reason: `Command '${command}' has no matching auto approve entries`
67
+ };
53
68
  }
54
69
  isCommandLineAutoApproved(commandLine) {
55
70
  for (const rule of this._denyListCommandLineRules) {
56
71
  if (rule.regex.test(commandLine)) {
57
- return { result: 'denied', reason: `Command line '${commandLine}' is denied by deny list rule: ${rule.sourceText}` };
72
+ return {
73
+ result: 'denied',
74
+ rule,
75
+ reason: `Command line '${commandLine}' is denied by deny list rule: ${rule.sourceText}`
76
+ };
58
77
  }
59
78
  }
60
79
  for (const rule of this._allowListCommandLineRules) {
61
80
  if (rule.regex.test(commandLine)) {
62
- return { result: 'approved', reason: `Command line '${commandLine}' is approved by allow list rule: ${rule.sourceText}` };
81
+ return {
82
+ result: 'approved',
83
+ rule,
84
+ reason: `Command line '${commandLine}' is approved by allow list rule: ${rule.sourceText}`
85
+ };
63
86
  }
64
87
  }
65
- return { result: 'noMatch', reason: `Command line '${commandLine}' has no matching auto approve entries` };
88
+ return {
89
+ result: 'noMatch',
90
+ reason: `Command line '${commandLine}' has no matching auto approve entries`
91
+ };
66
92
  }
67
- _commandMatchesRegex(regex, command, shell, os) {
68
- if (regex.test(command)) {
93
+ _commandMatchesRule(rule, command, shell, os) {
94
+ const isPwsh = isPowerShell(shell, os);
95
+ if ((isPwsh ? rule.regexCaseInsensitive : rule.regex).test(command)) {
69
96
  return true;
70
97
  }
71
- else if (isPowerShell(shell, os) && command.startsWith('(')) {
72
- if (regex.test(command.slice(1))) {
98
+ else if (isPwsh && command.startsWith('(')) {
99
+ if (rule.regexCaseInsensitive.test(command.slice(1))) {
73
100
  return true;
74
101
  }
75
102
  }
76
103
  return false;
77
104
  }
78
- _mapAutoApproveConfigToRules(config) {
105
+ _mapAutoApproveConfigToRules(config, configInspectValue) {
79
106
  if (!config || typeof config !== 'object') {
80
107
  return {
81
108
  denyListRules: [],
@@ -89,33 +116,49 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
89
116
  const allowListCommandLineRules = [];
90
117
  const denyListCommandLineRules = [];
91
118
  Object.entries(config).forEach(([key, value]) => {
119
+ const defaultValue = configInspectValue?.default?.value;
120
+ const isDefaultRule = !!(isObject(defaultValue) &&
121
+ key in defaultValue &&
122
+ structuralEquals(defaultValue[key], value));
123
+ function checkTarget(inspectValue) {
124
+ return (isObject(inspectValue) &&
125
+ key in inspectValue &&
126
+ structuralEquals(inspectValue[key], value));
127
+ }
128
+ const sourceTarget = (checkTarget(configInspectValue.workspaceFolder) ? ConfigurationTarget.WORKSPACE_FOLDER
129
+ : checkTarget(configInspectValue.workspaceValue) ? ConfigurationTarget.WORKSPACE
130
+ : checkTarget(configInspectValue.userRemoteValue) ? ConfigurationTarget.USER_REMOTE
131
+ : checkTarget(configInspectValue.userLocalValue) ? ConfigurationTarget.USER_LOCAL
132
+ : checkTarget(configInspectValue.userValue) ? ConfigurationTarget.USER
133
+ : checkTarget(configInspectValue.applicationValue) ? ConfigurationTarget.APPLICATION
134
+ : ConfigurationTarget.DEFAULT);
92
135
  if (typeof value === 'boolean') {
93
- const regex = this._convertAutoApproveEntryToRegex(key);
136
+ const { regex, regexCaseInsensitive } = this._convertAutoApproveEntryToRegex(key);
94
137
  if (value === true) {
95
- allowListRules.push({ regex, sourceText: key });
138
+ allowListRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget, isDefaultRule });
96
139
  }
97
140
  else if (value === false) {
98
- denyListRules.push({ regex, sourceText: key });
141
+ denyListRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget, isDefaultRule });
99
142
  }
100
143
  }
101
144
  else if (typeof value === 'object' && value !== null) {
102
145
  const objectValue = value;
103
146
  if (typeof objectValue.approve === 'boolean') {
104
- const regex = this._convertAutoApproveEntryToRegex(key);
147
+ const { regex, regexCaseInsensitive } = this._convertAutoApproveEntryToRegex(key);
105
148
  if (objectValue.approve === true) {
106
149
  if (objectValue.matchCommandLine === true) {
107
- allowListCommandLineRules.push({ regex, sourceText: key });
150
+ allowListCommandLineRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget, isDefaultRule });
108
151
  }
109
152
  else {
110
- allowListRules.push({ regex, sourceText: key });
153
+ allowListRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget, isDefaultRule });
111
154
  }
112
155
  }
113
156
  else if (objectValue.approve === false) {
114
157
  if (objectValue.matchCommandLine === true) {
115
- denyListCommandLineRules.push({ regex, sourceText: key });
158
+ denyListCommandLineRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget, isDefaultRule });
116
159
  }
117
160
  else {
118
- denyListRules.push({ regex, sourceText: key });
161
+ denyListRules.push({ regex, regexCaseInsensitive, sourceText: key, sourceTarget, isDefaultRule });
119
162
  }
120
163
  }
121
164
  }
@@ -129,6 +172,13 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
129
172
  };
130
173
  }
131
174
  _convertAutoApproveEntryToRegex(value) {
175
+ const regex = this._doConvertAutoApproveEntryToRegex(value);
176
+ if (regex.flags.includes('i')) {
177
+ return { regex, regexCaseInsensitive: regex };
178
+ }
179
+ return { regex, regexCaseInsensitive: ( new RegExp(regex.source, regex.flags + 'i')) };
180
+ }
181
+ _doConvertAutoApproveEntryToRegex(value) {
132
182
  const regexMatch = value.match(/^\/(?<pattern>.+)\/(?<flags>[dgimsuvy]*)$/);
133
183
  const regexPattern = regexMatch?.groups?.pattern;
134
184
  if (regexPattern) {
@@ -153,7 +203,16 @@ let CommandLineAutoApprover = class CommandLineAutoApprover extends Disposable {
153
203
  if (value === '') {
154
204
  return neverMatchRegex;
155
205
  }
156
- const sanitizedValue = value.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&');
206
+ let sanitizedValue;
207
+ if (value.includes('/') || value.includes('\\')) {
208
+ let pattern = value.replace(/[/\\]/g, '%%PATH_SEP%%');
209
+ pattern = escapeRegExpCharacters(pattern);
210
+ pattern = pattern.replace(/%%PATH_SEP%%*/g, '[/\\\\]');
211
+ sanitizedValue = `^(?:\\.[/\\\\])?${pattern}`;
212
+ }
213
+ else {
214
+ sanitizedValue = escapeRegExpCharacters(value);
215
+ }
157
216
  return ( new RegExp(`^${sanitizedValue}\\b`));
158
217
  }
159
218
  };
@@ -0,0 +1,10 @@
1
+ import { OperatingSystem } from "@codingame/monaco-vscode-api/vscode/vs/base/common/platform";
2
+ import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
3
+ import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
4
+ import type { IRunInTerminalInputParams } from "./tools/runInTerminalTool.js";
5
+ export declare class CommandSimplifier {
6
+ private readonly _osBackend;
7
+ private readonly _workspaceContextService;
8
+ constructor(_osBackend: Promise<OperatingSystem>, _workspaceContextService: IWorkspaceContextService);
9
+ rewriteIfNeeded(args: IRunInTerminalInputParams, instance: Pick<ITerminalInstance, "getCwdResource"> | undefined, shell: string): Promise<string>;
10
+ }
@@ -0,0 +1,55 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { OperatingSystem } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
4
+ import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
5
+ import { isPowerShell } from './runInTerminalHelpers.js';
6
+
7
+ let CommandSimplifier = class CommandSimplifier {
8
+ constructor(_osBackend, _workspaceContextService) {
9
+ this._osBackend = _osBackend;
10
+ this._workspaceContextService = _workspaceContextService;
11
+ }
12
+ async rewriteIfNeeded(args, instance, shell) {
13
+ const commandLine = args.command;
14
+ const os = await this._osBackend;
15
+ const isPwsh = isPowerShell(shell, os);
16
+ const cdPrefixMatch = commandLine.match(isPwsh
17
+ ? /^(?:cd(?: \/d)?|Set-Location(?: -Path)?) (?<dir>[^\s]+) ?(?:&&|;)\s+(?<suffix>.+)$/i
18
+ : /^cd (?<dir>[^\s]+) &&\s+(?<suffix>.+)$/);
19
+ const cdDir = cdPrefixMatch?.groups?.dir;
20
+ const cdSuffix = cdPrefixMatch?.groups?.suffix;
21
+ if (cdDir && cdSuffix) {
22
+ let cwd;
23
+ if (instance) {
24
+ cwd = await instance.getCwdResource();
25
+ }
26
+ if (!cwd) {
27
+ const workspaceFolders = this._workspaceContextService.getWorkspace().folders;
28
+ if (workspaceFolders.length === 1) {
29
+ cwd = workspaceFolders[0].uri;
30
+ }
31
+ }
32
+ if (cwd) {
33
+ let cdDirPath = cdDir;
34
+ if (cdDirPath.startsWith('"') && cdDirPath.endsWith('"')) {
35
+ cdDirPath = cdDirPath.slice(1, -1);
36
+ }
37
+ cdDirPath = cdDirPath.replace(/(?:[\\\/])$/, '');
38
+ let cwdFsPath = cwd.fsPath.replace(/(?:[\\\/])$/, '');
39
+ if (os === OperatingSystem.Windows) {
40
+ cdDirPath = cdDirPath.toLowerCase();
41
+ cwdFsPath = cwdFsPath.toLowerCase();
42
+ }
43
+ if (cdDirPath === cwdFsPath) {
44
+ return cdSuffix;
45
+ }
46
+ }
47
+ }
48
+ return commandLine;
49
+ }
50
+ };
51
+ CommandSimplifier = ( __decorate([
52
+ ( __param(1, IWorkspaceContextService))
53
+ ], CommandSimplifier));
54
+
55
+ export { CommandSimplifier };
@@ -1,8 +1,10 @@
1
1
  import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
+ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
3
  import type { ICommandDetectionCapability } from "@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common/vscode/vs/platform/terminal/common/capabilities/capabilities";
3
4
  import { ITerminalLogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service";
4
- import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
5
5
  import { type ITerminalExecuteStrategy, type ITerminalExecuteStrategyResult } from "./executeStrategy.js";
6
+ import type { IMarker as IXtermMarker } from "@xterm/xterm";
7
+ import { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
6
8
  /**
7
9
  * This strategy is used when shell integration is enabled, but rich command detection was not
8
10
  * declared by the shell script. This is the large spectrum between rich command detection and no
@@ -27,10 +29,14 @@ import { type ITerminalExecuteStrategy, type ITerminalExecuteStrategyResult } fr
27
29
  */
28
30
  export declare class BasicExecuteStrategy implements ITerminalExecuteStrategy {
29
31
  private readonly _instance;
32
+ private readonly _hasReceivedUserInput;
30
33
  private readonly _commandDetection;
31
34
  private readonly _logService;
32
35
  readonly type = "basic";
33
- constructor(_instance: ITerminalInstance, _commandDetection: ICommandDetectionCapability, _logService: ITerminalLogService);
36
+ private _startMarker;
37
+ private readonly _onDidCreateStartMarker;
38
+ onDidCreateStartMarker: Event<IXtermMarker | undefined>;
39
+ constructor(_instance: ITerminalInstance, _hasReceivedUserInput: () => boolean, _commandDetection: ICommandDetectionCapability, _logService: ITerminalLogService);
34
40
  execute(commandLine: string, token: CancellationToken): Promise<ITerminalExecuteStrategyResult>;
35
41
  private _log;
36
42
  }
@@ -1,18 +1,21 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
4
- import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
4
+ import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
5
  import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
6
  import { isNumber } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
7
7
  import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
8
8
  import { trackIdleOnPrompt, waitForIdle } from './executeStrategy.js';
9
9
 
10
10
  let BasicExecuteStrategy = class BasicExecuteStrategy {
11
- constructor(_instance, _commandDetection, _logService) {
11
+ constructor(_instance, _hasReceivedUserInput, _commandDetection, _logService) {
12
12
  this._instance = _instance;
13
+ this._hasReceivedUserInput = _hasReceivedUserInput;
13
14
  this._commandDetection = _commandDetection;
14
15
  this._logService = _logService;
15
16
  this.type = 'basic';
17
+ this._onDidCreateStartMarker = ( new Emitter());
18
+ this.onDidCreateStartMarker = this._onDidCreateStartMarker.event;
16
19
  }
17
20
  async execute(commandLine, token) {
18
21
  const store = ( new DisposableStore());
@@ -40,11 +43,16 @@ let BasicExecuteStrategy = class BasicExecuteStrategy {
40
43
  }
41
44
  this._log('Waiting for idle');
42
45
  await waitForIdle(this._instance.onData, 1000);
43
- let startMarker = store.add(xterm.raw.registerMarker());
44
- store.add(startMarker.onDispose(() => {
46
+ this._onDidCreateStartMarker.fire(this._startMarker = store.add(xterm.raw.registerMarker()));
47
+ store.add(this._startMarker.onDispose(() => {
45
48
  this._log(`Start marker was disposed, recreating`);
46
- startMarker = xterm.raw.registerMarker();
49
+ this._onDidCreateStartMarker.fire(this._startMarker = store.add(xterm.raw.registerMarker()));
47
50
  }));
51
+ if (this._hasReceivedUserInput()) {
52
+ this._log('Command timed out, sending SIGINT and retrying');
53
+ await this._instance.sendText('\x03', false);
54
+ await waitForIdle(this._instance.onData, 100);
55
+ }
48
56
  this._log(`Executing command line \`${commandLine}\``);
49
57
  this._instance.sendText(commandLine, true);
50
58
  const finishedCommand = await onDone;
@@ -65,7 +73,7 @@ let BasicExecuteStrategy = class BasicExecuteStrategy {
65
73
  }
66
74
  if (output === undefined) {
67
75
  try {
68
- output = xterm.getContentsAsText(startMarker, endMarker);
76
+ output = xterm.getContentsAsText(this._startMarker, endMarker);
69
77
  this._log('Fetched output via markers');
70
78
  }
71
79
  catch {
@@ -95,7 +103,7 @@ let BasicExecuteStrategy = class BasicExecuteStrategy {
95
103
  }
96
104
  };
97
105
  BasicExecuteStrategy = ( __decorate([
98
- ( __param(2, ITerminalLogService))
106
+ ( __param(3, ITerminalLogService))
99
107
  ], BasicExecuteStrategy));
100
108
 
101
109
  export { BasicExecuteStrategy };
@@ -2,6 +2,7 @@ import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/b
2
2
  import type { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
3
3
  import { DisposableStore } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
4
  import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
5
+ import type { IMarker as IXtermMarker } from "@xterm/xterm";
5
6
  export interface ITerminalExecuteStrategy {
6
7
  readonly type: "rich" | "basic" | "none";
7
8
  /**
@@ -9,6 +10,7 @@ export interface ITerminalExecuteStrategy {
9
10
  * result will include information about the exit code.
10
11
  */
11
12
  execute(commandLine: string, token: CancellationToken): Promise<ITerminalExecuteStrategyResult>;
13
+ onDidCreateStartMarker: Event<IXtermMarker | undefined>;
12
14
  }
13
15
  export interface ITerminalExecuteStrategyResult {
14
16
  output: string | undefined;
@@ -17,6 +19,27 @@ export interface ITerminalExecuteStrategyResult {
17
19
  error?: string;
18
20
  }
19
21
  export declare function waitForIdle(onData: Event<unknown>, idleDurationMs: number): Promise<void>;
22
+ export interface IPromptDetectionResult {
23
+ /**
24
+ * Whether a prompt was detected.
25
+ */
26
+ detected: boolean;
27
+ /**
28
+ * The reason for logging.
29
+ */
30
+ reason?: string;
31
+ }
32
+ /**
33
+ * Detects if the given text content appears to end with a common prompt pattern.
34
+ */
35
+ export declare function detectsCommonPromptPattern(cursorLine: string): IPromptDetectionResult;
36
+ export declare function detectsInputRequiredPattern(cursorLine: string): boolean;
37
+ /**
38
+ * Enhanced version of {@link waitForIdle} that uses prompt detection heuristics. After the terminal
39
+ * idles for the specified period, checks if the terminal's cursor line looks like a common prompt.
40
+ * If not, extends the timeout to give the command more time to complete.
41
+ */
42
+ export declare function waitForIdleWithPromptHeuristics(onData: Event<unknown>, instance: ITerminalInstance, idlePollIntervalMs: number, extendedTimeoutMs: number): Promise<IPromptDetectionResult>;
20
43
  /**
21
44
  * Tracks the terminal for being idle on a prompt input. This must be called before `executeCommand`
22
45
  * is called.
@@ -10,6 +10,77 @@ async function waitForIdle(onData, idleDurationMs) {
10
10
  scheduler.schedule();
11
11
  return deferred.p.finally(() => store.dispose());
12
12
  }
13
+ function detectsCommonPromptPattern(cursorLine) {
14
+ if (cursorLine.trim().length === 0) {
15
+ return { detected: false, reason: 'Content is empty or contains only whitespace' };
16
+ }
17
+ if (/PS\s+[A-Z]:\\.*>\s*$/.test(cursorLine)) {
18
+ return { detected: true, reason: `PowerShell prompt pattern detected: "${cursorLine}"` };
19
+ }
20
+ if (/^[A-Z]:\\.*>\s*$/.test(cursorLine)) {
21
+ return { detected: true, reason: `Command Prompt pattern detected: "${cursorLine}"` };
22
+ }
23
+ if (/\$\s*$/.test(cursorLine)) {
24
+ return { detected: true, reason: `Bash-style prompt pattern detected: "${cursorLine}"` };
25
+ }
26
+ if (/#\s*$/.test(cursorLine)) {
27
+ return { detected: true, reason: `Root prompt pattern detected: "${cursorLine}"` };
28
+ }
29
+ if (/^>>>\s*$/.test(cursorLine)) {
30
+ return { detected: true, reason: `Python REPL prompt pattern detected: "${cursorLine}"` };
31
+ }
32
+ if (/\u276f\s*$/.test(cursorLine)) {
33
+ return { detected: true, reason: `Starship prompt pattern detected: "${cursorLine}"` };
34
+ }
35
+ if (/[>%]\s*$/.test(cursorLine)) {
36
+ return { detected: true, reason: `Generic prompt pattern detected: "${cursorLine}"` };
37
+ }
38
+ return { detected: false, reason: `No common prompt pattern found in last line: "${cursorLine}"` };
39
+ }
40
+ const PS_CONFIRM_RE = /\s*(?:\[[^\]]\]\s+[^\[]+\s*)+(?:\(default is\s+"[^"]+"\):)?\s+$/;
41
+ const YN_PAIRED_RE = /(?:\(|\[)\s*(?:y(?:es)?\s*\/\s*n(?:o)?|n(?:o)?\s*\/\s*y(?:es)?)\s*(?:\]|\))\s+$/i;
42
+ const YN_AFTER_PUNCT_RE = /[?:]\s*(?:\(|\[)?\s*y(?:es)?\s*\/\s*n(?:o)?\s*(?:\]|\))?\s+$/i;
43
+ const LINE_ENDS_WITH_COLON_RE = /:\s*$/;
44
+ function detectsInputRequiredPattern(cursorLine) {
45
+ return PS_CONFIRM_RE.test(cursorLine) || YN_PAIRED_RE.test(cursorLine) || YN_AFTER_PUNCT_RE.test(cursorLine) || LINE_ENDS_WITH_COLON_RE.test(cursorLine.trim());
46
+ }
47
+ async function waitForIdleWithPromptHeuristics(onData, instance, idlePollIntervalMs, extendedTimeoutMs) {
48
+ await waitForIdle(onData, idlePollIntervalMs);
49
+ const xterm = await instance.xtermReadyPromise;
50
+ if (!xterm) {
51
+ return { detected: false, reason: `Xterm not available, using ${idlePollIntervalMs}ms timeout` };
52
+ }
53
+ const startTime = Date.now();
54
+ while (Date.now() - startTime < extendedTimeoutMs) {
55
+ try {
56
+ let content = '';
57
+ const buffer = xterm.raw.buffer.active;
58
+ const line = buffer.getLine(buffer.baseY + buffer.cursorY);
59
+ if (line) {
60
+ content = line.translateToString(true);
61
+ }
62
+ const promptResult = detectsCommonPromptPattern(content);
63
+ if (promptResult.detected) {
64
+ return promptResult;
65
+ }
66
+ }
67
+ catch (error) {
68
+ }
69
+ await waitForIdle(onData, Math.min(idlePollIntervalMs, extendedTimeoutMs - (Date.now() - startTime)));
70
+ }
71
+ try {
72
+ let content = '';
73
+ const buffer = xterm.raw.buffer.active;
74
+ const line = buffer.getLine(buffer.baseY + buffer.cursorY);
75
+ if (line) {
76
+ content = line.translateToString(true) + '\n';
77
+ }
78
+ return { detected: false, reason: `Extended timeout reached without prompt detection. Last line: "${content.trim()}"` };
79
+ }
80
+ catch (error) {
81
+ return { detected: false, reason: `Extended timeout reached. Error reading terminal content: ${error}` };
82
+ }
83
+ }
13
84
  async function trackIdleOnPrompt(instance, idleDurationMs, store) {
14
85
  const idleOnPrompt = ( new DeferredPromise());
15
86
  const onData = instance.onData;
@@ -49,4 +120,4 @@ async function trackIdleOnPrompt(instance, idleDurationMs, store) {
49
120
  return idleOnPrompt.p;
50
121
  }
51
122
 
52
- export { trackIdleOnPrompt, waitForIdle };
123
+ export { detectsCommonPromptPattern, detectsInputRequiredPattern, trackIdleOnPrompt, waitForIdle, waitForIdleWithPromptHeuristics };
@@ -1,7 +1,9 @@
1
1
  import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
+ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
3
  import { ITerminalLogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service";
3
- import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
4
4
  import { type ITerminalExecuteStrategy, type ITerminalExecuteStrategyResult } from "./executeStrategy.js";
5
+ import type { IMarker as IXtermMarker } from "@xterm/xterm";
6
+ import { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
5
7
  /**
6
8
  * This strategy is used when no shell integration is available. There are very few extension APIs
7
9
  * available in this case. This uses similar strategies to the basic integration strategy, but
@@ -10,9 +12,13 @@ import { type ITerminalExecuteStrategy, type ITerminalExecuteStrategyResult } fr
10
12
  */
11
13
  export declare class NoneExecuteStrategy implements ITerminalExecuteStrategy {
12
14
  private readonly _instance;
15
+ private readonly _hasReceivedUserInput;
13
16
  private readonly _logService;
14
17
  readonly type = "none";
15
- constructor(_instance: ITerminalInstance, _logService: ITerminalLogService);
18
+ private _startMarker;
19
+ private readonly _onDidCreateStartMarker;
20
+ onDidCreateStartMarker: Event<IXtermMarker | undefined>;
21
+ constructor(_instance: ITerminalInstance, _hasReceivedUserInput: () => boolean, _logService: ITerminalLogService);
16
22
  execute(commandLine: string, token: CancellationToken): Promise<ITerminalExecuteStrategyResult>;
17
23
  private _log;
18
24
  }
@@ -1,15 +1,19 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
4
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
4
5
  import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
6
  import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
6
- import { waitForIdle } from './executeStrategy.js';
7
+ import { waitForIdle, waitForIdleWithPromptHeuristics } from './executeStrategy.js';
7
8
 
8
9
  let NoneExecuteStrategy = class NoneExecuteStrategy {
9
- constructor(_instance, _logService) {
10
+ constructor(_instance, _hasReceivedUserInput, _logService) {
10
11
  this._instance = _instance;
12
+ this._hasReceivedUserInput = _hasReceivedUserInput;
11
13
  this._logService = _logService;
12
14
  this.type = 'none';
15
+ this._onDidCreateStartMarker = ( new Emitter());
16
+ this.onDidCreateStartMarker = this._onDidCreateStartMarker.event;
13
17
  }
14
18
  async execute(commandLine, token) {
15
19
  const store = ( new DisposableStore());
@@ -27,15 +31,21 @@ let NoneExecuteStrategy = class NoneExecuteStrategy {
27
31
  if (token.isCancellationRequested) {
28
32
  throw ( new CancellationError());
29
33
  }
30
- let startMarker = store.add(xterm.raw.registerMarker());
31
- store.add(startMarker.onDispose(() => {
34
+ this._onDidCreateStartMarker.fire(this._startMarker = store.add(xterm.raw.registerMarker()));
35
+ store.add(this._startMarker.onDispose(() => {
32
36
  this._log(`Start marker was disposed, recreating`);
33
- startMarker = xterm.raw.registerMarker();
37
+ this._onDidCreateStartMarker.fire(this._startMarker = store.add(xterm.raw.registerMarker()));
34
38
  }));
39
+ if (this._hasReceivedUserInput()) {
40
+ this._log('Command timed out, sending SIGINT and retrying');
41
+ await this._instance.sendText('\x03', false);
42
+ await waitForIdle(this._instance.onData, 100);
43
+ }
35
44
  this._log(`Executing command line \`${commandLine}\``);
36
45
  this._instance.sendText(commandLine, true);
37
- this._log('Waiting for idle');
38
- await waitForIdle(this._instance.onData, 1000);
46
+ this._log('Waiting for idle with prompt heuristics');
47
+ const promptResult = await waitForIdleWithPromptHeuristics(this._instance.onData, this._instance, 1000, 10000);
48
+ this._log(`Prompt detection result: ${promptResult.detected ? 'detected' : 'not detected'} - ${promptResult.reason}`);
39
49
  if (token.isCancellationRequested) {
40
50
  throw ( new CancellationError());
41
51
  }
@@ -43,7 +53,7 @@ let NoneExecuteStrategy = class NoneExecuteStrategy {
43
53
  let output;
44
54
  const additionalInformationLines = [];
45
55
  try {
46
- output = xterm.getContentsAsText(startMarker, endMarker);
56
+ output = xterm.getContentsAsText(this._startMarker, endMarker);
47
57
  this._log('Fetched output via markers');
48
58
  }
49
59
  catch {
@@ -65,7 +75,7 @@ let NoneExecuteStrategy = class NoneExecuteStrategy {
65
75
  }
66
76
  };
67
77
  NoneExecuteStrategy = ( __decorate([
68
- ( __param(1, ITerminalLogService))
78
+ ( __param(2, ITerminalLogService))
69
79
  ], NoneExecuteStrategy));
70
80
 
71
81
  export { NoneExecuteStrategy };
@@ -1,8 +1,10 @@
1
1
  import type { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
+ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
2
3
  import type { ICommandDetectionCapability } from "@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common/vscode/vs/platform/terminal/common/capabilities/capabilities";
3
4
  import { ITerminalLogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service";
4
5
  import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
5
6
  import { type ITerminalExecuteStrategy, type ITerminalExecuteStrategyResult } from "./executeStrategy.js";
7
+ import type { IMarker as IXtermMarker } from "@xterm/xterm";
6
8
  /**
7
9
  * This strategy is used when the terminal has rich shell integration/command detection is
8
10
  * available, meaning every sequence we rely upon should be exactly where we expect it to be. In
@@ -15,6 +17,9 @@ export declare class RichExecuteStrategy implements ITerminalExecuteStrategy {
15
17
  private readonly _commandDetection;
16
18
  private readonly _logService;
17
19
  readonly type = "rich";
20
+ private _startMarker;
21
+ private readonly _onDidCreateStartMarker;
22
+ onDidCreateStartMarker: Event<IXtermMarker | undefined>;
18
23
  constructor(_instance: ITerminalInstance, _commandDetection: ICommandDetectionCapability, _logService: ITerminalLogService);
19
24
  execute(commandLine: string, token: CancellationToken): Promise<ITerminalExecuteStrategyResult>;
20
25
  private _log;
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { CancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
4
- import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
4
+ import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
5
  import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
6
  import { isNumber } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
7
7
  import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
@@ -13,6 +13,8 @@ let RichExecuteStrategy = class RichExecuteStrategy {
13
13
  this._commandDetection = _commandDetection;
14
14
  this._logService = _logService;
15
15
  this.type = 'rich';
16
+ this._onDidCreateStartMarker = ( new Emitter());
17
+ this.onDidCreateStartMarker = this._onDidCreateStartMarker.event;
16
18
  }
17
19
  async execute(commandLine, token) {
18
20
  const store = ( new DisposableStore());
@@ -34,10 +36,10 @@ let RichExecuteStrategy = class RichExecuteStrategy {
34
36
  this._log('onDone via idle prompt');
35
37
  }),
36
38
  ]);
37
- let startMarker = store.add(xterm.raw.registerMarker());
38
- store.add(startMarker.onDispose(() => {
39
+ this._onDidCreateStartMarker.fire(this._startMarker = store.add(xterm.raw.registerMarker()));
40
+ store.add(this._startMarker.onDispose(() => {
39
41
  this._log(`Start marker was disposed, recreating`);
40
- startMarker = xterm.raw.registerMarker();
42
+ this._onDidCreateStartMarker.fire(this._startMarker = store.add(xterm.raw.registerMarker()));
41
43
  }));
42
44
  this._log(`Executing command line \`${commandLine}\``);
43
45
  this._instance.runCommand(commandLine, true);
@@ -58,7 +60,7 @@ let RichExecuteStrategy = class RichExecuteStrategy {
58
60
  }
59
61
  if (output === undefined) {
60
62
  try {
61
- output = xterm.getContentsAsText(startMarker, endMarker);
63
+ output = xterm.getContentsAsText(this._startMarker, endMarker);
62
64
  this._log('Fetched output via markers');
63
65
  }
64
66
  catch {