@codingame/monaco-vscode-chat-service-override 25.1.2 → 26.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 (334) hide show
  1. package/index.js +24 -3
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +23 -3
  4. package/vscode/src/vs/platform/browserElements/common/browserElements.js +13 -6
  5. package/vscode/src/vs/platform/domWidget/browser/domWidget.js +4 -4
  6. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -1
  7. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +42 -27
  8. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +14 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +218 -74
  10. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatTerminalOutputAccessibleView.js +6 -8
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -9
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +165 -168
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +27 -25
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +141 -140
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +189 -121
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +14 -15
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +60 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +435 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +28 -12
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +10 -12
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +37 -16
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.d.ts +11 -0
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +54 -24
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +73 -34
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +71 -30
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +151 -89
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +12 -15
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +39 -40
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +90 -125
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +5 -2
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +263 -143
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +4 -4
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +188 -126
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -1
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +37 -28
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +21 -9
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +392 -226
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +31 -27
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +25 -23
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -3
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.d.ts +2 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +13 -0
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +20 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +83 -0
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +68 -0
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +319 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.d.ts +1 -0
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +215 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +179 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +951 -0
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agentsessionprojection.css +20 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +388 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +195 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +120 -0
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +394 -0
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.d.ts +38 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +95 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +31 -29
  61. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +49 -47
  62. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +4 -6
  63. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/media/simpleBrowserOverlay.css +0 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +188 -151
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +1012 -639
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +256 -151
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +8 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +182 -101
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +79 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +193 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +9 -7
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.d.ts +68 -0
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +253 -0
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -5
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +69 -50
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -4
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +52 -33
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +5 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +274 -155
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -10
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +130 -104
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +12 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +385 -160
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +53 -36
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +112 -75
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +19 -10
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +31 -11
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +39 -17
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNewNotebookContentEdits.js +10 -14
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +0 -2
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +25 -16
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +265 -203
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +29 -26
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +114 -60
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +16 -19
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +44 -30
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +119 -45
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +152 -136
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +12 -8
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +51 -31
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +323 -217
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -3
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +653 -401
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +52 -40
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +5 -2
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +43 -28
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +182 -136
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +33 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +548 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +222 -138
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +3 -3
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +151 -113
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +6 -4
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +453 -217
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +162 -88
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +2 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +0 -2
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +1 -13
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +309 -233
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +55 -53
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.js +3 -1
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +37 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +109 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +35 -23
  132. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +9 -4
  133. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +73 -33
  134. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +47 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +333 -0
  136. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +39 -25
  137. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +9 -5
  138. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +23 -20
  139. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +20 -16
  141. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +65 -57
  142. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +48 -36
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +20 -12
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +52 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +155 -159
  147. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +24 -14
  148. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +521 -246
  149. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +107 -76
  150. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +28 -24
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.js +10 -6
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.d.ts +16 -0
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.js +57 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatLayoutService.js +4 -6
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +56 -44
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -3
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +37 -47
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +5 -7
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +10 -0
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +1284 -0
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +179 -125
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +9 -11
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/editorHoverWrapper.js +7 -6
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +96 -78
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +58 -53
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +25 -11
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +484 -292
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -6
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +65 -92
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +16 -19
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +1 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +9 -1
  173. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +331 -189
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +81 -93
  175. package/vscode/src/vs/workbench/contrib/chat/common/ignoredFiles.js +1 -3
  176. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -3
  177. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +6 -7
  178. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +36 -8
  179. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +169 -31
  180. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.d.ts +6 -0
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +141 -0
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -4
  183. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +218 -144
  184. package/vscode/src/vs/workbench/contrib/chat/common/model/chatTransferService.js +20 -10
  185. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +109 -0
  186. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +349 -0
  187. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +9 -8
  188. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +9 -0
  189. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +139 -36
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +3 -6
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +64 -51
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +49 -34
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +21 -13
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +125 -97
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +91 -131
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +8 -5
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -0
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +488 -222
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +32 -12
  201. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +58 -13
  202. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +717 -200
  203. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +79 -18
  204. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +371 -130
  205. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +0 -1
  206. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +3 -7
  207. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +79 -61
  208. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +27 -21
  209. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +7 -10
  210. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
  211. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +26 -32
  212. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +2 -2
  213. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -60
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +115 -426
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +15 -0
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +127 -0
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -37
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +16 -0
  219. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +21 -0
  220. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +51 -0
  221. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +334 -0
  222. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.d.ts +41 -0
  223. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +424 -0
  224. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.d.ts +4 -0
  225. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +58 -0
  226. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.d.ts +7 -0
  227. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +195 -0
  228. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.d.ts +8 -0
  229. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +368 -0
  230. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.d.ts +2 -0
  231. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +7 -0
  232. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  233. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +1 -1
  234. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +23 -25
  235. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +7 -8
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +34 -38
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +8 -12
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +103 -95
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +28 -16
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +4 -5
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +12 -8
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +65 -54
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +86 -60
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +13 -26
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -1
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +56 -46
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +2 -2
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +63 -31
  252. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +2 -1
  253. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +35 -30
  254. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -1
  255. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +44 -37
  256. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +3 -4
  257. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +3 -3
  258. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -0
  259. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +70 -50
  260. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +26 -394
  261. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +85 -49
  262. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +68 -27
  263. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +1 -0
  264. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +67 -45
  265. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.d.ts +12 -0
  266. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +106 -0
  267. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +2 -2
  268. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +177 -97
  269. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +136 -49
  270. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +2 -1
  271. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +128 -112
  272. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +51 -49
  273. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +8 -0
  274. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +25 -0
  275. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
  276. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
  277. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
  278. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
  279. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
  280. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
  281. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
  282. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +12 -0
  283. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +21 -0
  284. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +5 -14
  285. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +2 -4
  286. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +1 -0
  287. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -0
  288. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +29 -0
  289. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +30 -31
  290. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -17
  291. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +19 -20
  292. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.d.ts +11 -0
  293. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +58 -0
  294. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +31 -3
  295. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +325 -199
  296. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -1
  297. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +1 -1
  298. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +33 -38
  299. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +45 -5
  300. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +746 -456
  301. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +145 -98
  302. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +88 -37
  303. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +120 -51
  304. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +25 -28
  305. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +5 -0
  306. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +58 -12
  307. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +12 -0
  308. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.js +17 -0
  309. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +8 -1
  310. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +47 -28
  311. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +37 -0
  312. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +171 -0
  313. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +0 -58
  314. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +0 -213
  315. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +0 -39
  316. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +0 -243
  317. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +0 -7
  318. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +0 -41
  319. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +0 -166
  320. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +0 -607
  321. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +0 -255
  322. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
  323. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -396
  324. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -9
  325. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -379
  326. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -117
  327. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -141
  328. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -961
  329. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +0 -36
  330. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +0 -447
  331. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +0 -6
  332. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +0 -251
  333. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.d.ts +0 -10
  334. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +0 -42
@@ -3,7 +3,7 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
3
3
  import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
4
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
5
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
6
- import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
+ import { Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
7
  import { isObject, isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
8
8
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
9
  import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
@@ -20,15 +20,34 @@ import { OutputMonitorState, PollingConsts } from './types.js';
20
20
  import { getTextResponseFromStream } from './utils.js';
21
21
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
22
22
  import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
23
- import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
24
23
  import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
25
24
  import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
25
+ import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
26
26
 
27
27
  let OutputMonitor = class OutputMonitor extends Disposable {
28
- get state() { return this._state; }
29
- get pollingResult() { return this._pollingResult; }
30
- get outputMonitorTelemetryCounters() { return this._outputMonitorTelemetryCounters; }
31
- constructor(_execution, _pollFn, invocationContext, token, command, _languageModelsService, _taskService, _chatService, _chatWidgetService, _configurationService, _logService, _terminalService) {
28
+ get state() {
29
+ return this._state;
30
+ }
31
+ get pollingResult() {
32
+ return this._pollingResult;
33
+ }
34
+ get outputMonitorTelemetryCounters() {
35
+ return this._outputMonitorTelemetryCounters;
36
+ }
37
+ constructor(
38
+ _execution,
39
+ _pollFn,
40
+ invocationContext,
41
+ token,
42
+ command,
43
+ _languageModelsService,
44
+ _taskService,
45
+ _chatService,
46
+ _chatWidgetService,
47
+ _configurationService,
48
+ _logService,
49
+ _terminalService
50
+ ) {
32
51
  super();
33
52
  this._execution = _execution;
34
53
  this._pollFn = _pollFn;
@@ -40,6 +59,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
40
59
  this._logService = _logService;
41
60
  this._terminalService = _terminalService;
42
61
  this._state = OutputMonitorState.PollingForIdle;
62
+ this._userInputtedSinceIdleDetected = false;
63
+ this._userInputListener = this._register(( new MutableDisposable()));
43
64
  this._outputMonitorTelemetryCounters = {
44
65
  inputToolManualAcceptCount: 0,
45
66
  inputToolManualRejectCount: 0,
@@ -48,7 +69,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
48
69
  inputToolAutoChars: 0,
49
70
  inputToolManualShownCount: 0,
50
71
  inputToolFreeFormInputShownCount: 0,
51
- inputToolFreeFormInputCount: 0,
72
+ inputToolFreeFormInputCount: 0
52
73
  };
53
74
  this._onDidFinishCommand = this._register(( new Emitter()));
54
75
  this.onDidFinishCommand = this._onDidFinishCommand.event;
@@ -65,31 +86,33 @@ let OutputMonitor = class OutputMonitor extends Disposable {
65
86
  try {
66
87
  while (!token.isCancellationRequested) {
67
88
  switch (this._state) {
68
- case OutputMonitorState.PollingForIdle: {
89
+ case OutputMonitorState.PollingForIdle:
90
+ {
69
91
  this._state = await this._waitForIdle(this._execution, extended, token);
70
92
  continue;
71
93
  }
72
- case OutputMonitorState.Timeout: {
94
+ case OutputMonitorState.Timeout:
95
+ {
73
96
  const shouldContinuePolling = await this._handleTimeoutState(command, invocationContext, extended, token);
74
97
  if (shouldContinuePolling) {
75
98
  extended = true;
99
+ this._state = OutputMonitorState.PollingForIdle;
76
100
  continue;
77
- }
78
- else {
101
+ } else {
79
102
  this._promptPart?.hide();
80
103
  this._promptPart = undefined;
81
104
  break;
82
105
  }
83
106
  }
84
- case OutputMonitorState.Cancelled:
85
- break;
86
- case OutputMonitorState.Idle: {
107
+ case OutputMonitorState.Cancelled:
108
+ break;
109
+ case OutputMonitorState.Idle:
110
+ {
87
111
  const idleResult = await this._handleIdleState(token);
88
112
  if (idleResult.shouldContinuePollling) {
89
113
  this._state = OutputMonitorState.PollingForIdle;
90
114
  continue;
91
- }
92
- else {
115
+ } else {
93
116
  resources = idleResult.resources;
94
117
  modelOutputEvalResponse = idleResult.modelOutputEvalResponse;
95
118
  output = idleResult.output;
@@ -104,23 +127,22 @@ let OutputMonitor = class OutputMonitor extends Disposable {
104
127
  if (token.isCancellationRequested) {
105
128
  this._state = OutputMonitorState.Cancelled;
106
129
  }
107
- }
108
- finally {
130
+ } finally {
109
131
  this._pollingResult = {
110
132
  state: this._state,
111
133
  output: output ?? this._execution.getOutput(),
112
- modelOutputEvalResponse: token.isCancellationRequested ? 'Cancelled' : modelOutputEvalResponse,
134
+ modelOutputEvalResponse: token.isCancellationRequested ? "Cancelled" : modelOutputEvalResponse,
113
135
  pollDurationMs: Date.now() - pollStartTime,
114
136
  resources
115
137
  };
138
+ this._userInputListener.clear();
116
139
  const promptPart = this._promptPart;
117
140
  this._promptPart = undefined;
118
141
  if (promptPart) {
119
142
  try {
120
143
  promptPart.hide();
121
- }
122
- catch (err) {
123
- this._logService.error('OutputMonitor: Failed to hide prompt', err);
144
+ } catch (err) {
145
+ this._logService.error("OutputMonitor: Failed to hide prompt", err);
124
146
  }
125
147
  }
126
148
  this._onDidFinishCommand.fire();
@@ -129,87 +151,127 @@ let OutputMonitor = class OutputMonitor extends Disposable {
129
151
  async _handleIdleState(token) {
130
152
  const output = this._execution.getOutput(this._lastPromptMarker);
131
153
  if (detectsNonInteractiveHelpPattern(output)) {
132
- return { shouldContinuePollling: false, output };
154
+ return {
155
+ shouldContinuePollling: false,
156
+ output
157
+ };
158
+ }
159
+ const isTask = this._execution.task !== undefined;
160
+ const isTaskInactive = this._execution.isActive ? !(await this._execution.isActive()) : true;
161
+ if (isTask && isTaskInactive && detectsVSCodeTaskFinishMessage(output)) {
162
+ return {
163
+ shouldContinuePollling: false,
164
+ output
165
+ };
166
+ }
167
+ if ((!isTask || !isTaskInactive) && detectsGenericPressAnyKeyPattern(output)) {
168
+ const currentMarker = this._execution.instance.registerMarker();
169
+ if (currentMarker) {
170
+ this._lastPromptMarker = currentMarker;
171
+ }
172
+ this._cleanupIdleInputListener();
173
+ this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
174
+ const lastLine = output.trimEnd().split(/\r?\n/).pop() || "";
175
+ const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, {
176
+ prompt: lastLine,
177
+ options: [],
178
+ detectedRequestForFreeFormInput: true
179
+ }, true );
180
+ if (receivedTerminalInput) {
181
+ await timeout(200);
182
+ return {
183
+ shouldContinuePollling: true
184
+ };
185
+ } else {
186
+ return {
187
+ shouldContinuePollling: false
188
+ };
189
+ }
190
+ }
191
+ if (this._userInputtedSinceIdleDetected) {
192
+ this._cleanupIdleInputListener();
193
+ return {
194
+ shouldContinuePollling: true
195
+ };
133
196
  }
134
197
  const confirmationPrompt = await this._determineUserInputOptions(this._execution, token);
198
+ if (this._userInputtedSinceIdleDetected) {
199
+ this._cleanupIdleInputListener();
200
+ return {
201
+ shouldContinuePollling: true
202
+ };
203
+ }
135
204
  if (confirmationPrompt?.detectedRequestForFreeFormInput) {
205
+ if (this._userInputtedSinceIdleDetected) {
206
+ this._cleanupIdleInputListener();
207
+ return {
208
+ shouldContinuePollling: true
209
+ };
210
+ }
211
+ this._cleanupIdleInputListener();
136
212
  this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
137
213
  const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, confirmationPrompt);
138
214
  if (receivedTerminalInput) {
139
215
  await timeout(200);
140
- return { shouldContinuePollling: true };
141
- }
142
- else {
143
- return { shouldContinuePollling: false };
216
+ return {
217
+ shouldContinuePollling: true
218
+ };
219
+ } else {
220
+ return {
221
+ shouldContinuePollling: false
222
+ };
144
223
  }
145
224
  }
146
225
  if (confirmationPrompt?.options.length) {
147
226
  const suggestedOptionResult = await this._selectAndHandleOption(confirmationPrompt, token);
148
227
  if (suggestedOptionResult?.sentToTerminal) {
149
- return { shouldContinuePollling: true };
228
+ this._cleanupIdleInputListener();
229
+ return {
230
+ shouldContinuePollling: true
231
+ };
150
232
  }
151
- const confirmed = await this._confirmRunInTerminal(token, suggestedOptionResult?.suggestedOption ?? confirmationPrompt.options[0], this._execution, confirmationPrompt);
152
- if (confirmed) {
153
- return { shouldContinuePollling: true };
233
+ if (this._userInputtedSinceIdleDetected) {
234
+ this._cleanupIdleInputListener();
235
+ return {
236
+ shouldContinuePollling: true
237
+ };
154
238
  }
155
- else {
239
+ this._cleanupIdleInputListener();
240
+ const confirmed = await this._confirmRunInTerminal(
241
+ token,
242
+ suggestedOptionResult?.suggestedOption ?? confirmationPrompt.options[0],
243
+ this._execution,
244
+ confirmationPrompt
245
+ );
246
+ if (confirmed) {
247
+ return {
248
+ shouldContinuePollling: true
249
+ };
250
+ } else {
156
251
  this._execution.instance.focus(true);
157
- return { shouldContinuePollling: false };
252
+ return {
253
+ shouldContinuePollling: false
254
+ };
158
255
  }
159
256
  }
257
+ this._cleanupIdleInputListener();
160
258
  const custom = await this._pollFn?.(this._execution, token, this._taskService);
161
259
  const resources = custom?.resources;
162
260
  const modelOutputEvalResponse = await this._assessOutputForErrors(this._execution.getOutput(), token);
163
- return { resources, modelOutputEvalResponse, shouldContinuePollling: false, output: custom?.output ?? output };
261
+ return {
262
+ resources,
263
+ modelOutputEvalResponse,
264
+ shouldContinuePollling: false,
265
+ output: custom?.output ?? output
266
+ };
164
267
  }
165
- async _handleTimeoutState(command, invocationContext, extended, token) {
166
- let continuePollingPart;
167
- if (extended) {
268
+ async _handleTimeoutState(_command, _invocationContext, _extended, _token) {
269
+ if (_extended) {
270
+ this._logService.info("OutputMonitor: Extended polling timeout reached after 2 minutes");
168
271
  this._state = OutputMonitorState.Cancelled;
169
272
  return false;
170
273
  }
171
- extended = true;
172
- const { promise: p, part } = await this._promptForMorePolling(command, token, invocationContext);
173
- let continuePollingDecisionP = p;
174
- continuePollingPart = part;
175
- const nextPollP = this._waitForIdle(this._execution, extended, token)
176
- .catch(() => ({
177
- state: OutputMonitorState.Cancelled,
178
- output: this._execution.getOutput(),
179
- modelOutputEvalResponse: 'Cancelled'
180
- }));
181
- const race = await Promise.race([
182
- continuePollingDecisionP.then(v => ({ kind: 'decision', v })),
183
- nextPollP.then(r => ({ kind: 'poll', r }))
184
- ]);
185
- if (race.kind === 'decision') {
186
- try {
187
- continuePollingPart?.hide();
188
- }
189
- catch { }
190
- continuePollingPart = undefined;
191
- if (race.v === false) {
192
- this._state = OutputMonitorState.Cancelled;
193
- return false;
194
- }
195
- continuePollingDecisionP = undefined;
196
- return true;
197
- }
198
- else {
199
- const r = race.r;
200
- const state = (typeof r === 'object' && r !== null) ? r.state : r;
201
- if (state === OutputMonitorState.Idle || state === OutputMonitorState.Cancelled || state === OutputMonitorState.Timeout) {
202
- try {
203
- continuePollingPart?.hide();
204
- }
205
- catch { }
206
- continuePollingPart = undefined;
207
- continuePollingDecisionP = undefined;
208
- this._promptPart = undefined;
209
- return false;
210
- }
211
- return true;
212
- }
274
+ return true;
213
275
  }
214
276
  async _waitForIdle(execution, extendedPolling, token) {
215
277
  const maxWaitMs = extendedPolling ? PollingConsts.ExtendedPollingMaxDuration : PollingConsts.FirstPollingMaxDuration;
@@ -218,7 +280,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
218
280
  let waited = 0;
219
281
  let consecutiveIdleEvents = 0;
220
282
  let hasReceivedData = false;
221
- const onDataDisposable = execution.instance.onData((_data) => {
283
+ const onDataDisposable = execution.instance.onData(_data => {
222
284
  hasReceivedData = true;
223
285
  });
224
286
  try {
@@ -230,30 +292,33 @@ let OutputMonitor = class OutputMonitor extends Disposable {
230
292
  const currentOutput = execution.getOutput();
231
293
  if (detectsNonInteractiveHelpPattern(currentOutput)) {
232
294
  this._state = OutputMonitorState.Idle;
295
+ this._setupIdleInputListener();
233
296
  return this._state;
234
297
  }
235
298
  const promptResult = detectsInputRequiredPattern(currentOutput);
236
299
  if (promptResult) {
237
300
  this._state = OutputMonitorState.Idle;
301
+ this._setupIdleInputListener();
238
302
  return this._state;
239
303
  }
240
304
  if (hasReceivedData) {
241
305
  consecutiveIdleEvents = 0;
242
306
  hasReceivedData = false;
243
- }
244
- else {
307
+ } else {
245
308
  consecutiveIdleEvents++;
246
309
  }
247
310
  const recentlyIdle = consecutiveIdleEvents >= PollingConsts.MinIdleEvents;
248
311
  const isActive = execution.isActive ? await execution.isActive() : undefined;
249
- this._logService.trace(`OutputMonitor: waitForIdle check: waited=${waited}ms, recentlyIdle=${recentlyIdle}, isActive=${isActive}`);
312
+ this._logService.trace(
313
+ `OutputMonitor: waitForIdle check: waited=${waited}ms, recentlyIdle=${recentlyIdle}, isActive=${isActive}`
314
+ );
250
315
  if (recentlyIdle && isActive !== true) {
251
316
  this._state = OutputMonitorState.Idle;
317
+ this._setupIdleInputListener();
252
318
  return this._state;
253
319
  }
254
320
  }
255
- }
256
- finally {
321
+ } finally {
257
322
  onDataDisposable.dispose();
258
323
  }
259
324
  if (token.isCancellationRequested) {
@@ -261,29 +326,34 @@ let OutputMonitor = class OutputMonitor extends Disposable {
261
326
  }
262
327
  return OutputMonitorState.Timeout;
263
328
  }
264
- async _promptForMorePolling(command, token, context) {
265
- if (token.isCancellationRequested || this._state === OutputMonitorState.Cancelled) {
266
- return { promise: Promise.resolve(false) };
267
- }
268
- const result = this._createElicitationPart(token, context?.sessionId, ( new MarkdownString(( localize(12045, "Continue waiting for `{0}`?", command)))), ( new MarkdownString(( localize(
269
- 12046,
270
- "This will continue to poll for output to determine when the terminal becomes idle for up to 2 minutes."
271
- )))), '', ( localize(12047, 'Yes')), ( localize(12048, 'No')), async () => true, async () => { this._state = OutputMonitorState.Cancelled; return false; });
272
- return { promise: result.promise.then(p => p ?? false), part: result.part };
329
+ _setupIdleInputListener() {
330
+ this._userInputtedSinceIdleDetected = false;
331
+ this._userInputListener.value = this._execution.instance.onDidInputData(() => {
332
+ this._userInputtedSinceIdleDetected = true;
333
+ });
334
+ }
335
+ _cleanupIdleInputListener() {
336
+ this._userInputtedSinceIdleDetected = false;
337
+ this._userInputListener.clear();
273
338
  }
274
339
  async _assessOutputForErrors(buffer, token) {
275
340
  const model = await this._getLanguageModel();
276
341
  if (!model) {
277
- return 'No models available';
278
- }
279
- const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier('core')), [{ role: ChatMessageRole.User, content: [{ type: 'text', value: `Evaluate this terminal output to determine if there were errors. If there are errors, return them. Otherwise, return undefined: ${buffer}.` }] }], {}, token);
342
+ return "No models available";
343
+ }
344
+ const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier("core")), [{
345
+ role: ChatMessageRole.User,
346
+ content: [{
347
+ type: "text",
348
+ value: `Evaluate this terminal output to determine if there were errors. If there are errors, return them. Otherwise, return undefined: ${buffer}.`
349
+ }]
350
+ }], {}, token);
280
351
  try {
281
352
  const responseFromStream = getTextResponseFromStream(response);
282
353
  await Promise.all([response.result, responseFromStream]);
283
354
  return await responseFromStream;
284
- }
285
- catch (err) {
286
- return 'Error occurred ' + err;
355
+ } catch (err) {
356
+ return "Error occurred " + err;
287
357
  }
288
358
  }
289
359
  async _determineUserInputOptions(execution, token) {
@@ -294,82 +364,95 @@ let OutputMonitor = class OutputMonitor extends Disposable {
294
364
  if (!model) {
295
365
  return undefined;
296
366
  }
297
- const lastLines = execution.getOutput(this._lastPromptMarker).trimEnd().split('\n').slice(-15).join('\n');
367
+ const lastLines = execution.getOutput(this._lastPromptMarker).trimEnd().split("\n").slice(-15).join("\n");
298
368
  if (detectsNonInteractiveHelpPattern(lastLines)) {
299
369
  return undefined;
300
370
  }
301
- const promptText = `Analyze the following terminal output. If it contains a prompt requesting user input (such as a confirmation, selection, or yes/no question) and that prompt has NOT already been answered, extract the prompt text. The prompt may ask to choose from a set. If so, extract the possible options as a JSON object with keys 'prompt', 'options' (an array of strings or an object with option to description mappings), and 'freeFormInput': false. If no options are provided, and free form input is requested, for example: Password:, return the word freeFormInput. For example, if the options are "[Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel", the option to description mappings would be {"Y": "Yes", "A": "Yes to All", "N": "No", "L": "No to All", "C": "Cancel"}. If there is no such prompt, return null. If the option is ambiguous, return null.
302
- Examples:
303
- 1. Output: "Do you want to overwrite? (y/n)"
304
- Response: {"prompt": "Do you want to overwrite?", "options": ["y", "n"], "freeFormInput": false}
305
-
306
- 2. Output: "Confirm: [Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel"
307
- Response: {"prompt": "Confirm", "options": ["Y", "A", "N", "L", "C"], "freeFormInput": false}
308
-
309
- 3. Output: "Accept license terms? (yes/no)"
310
- Response: {"prompt": "Accept license terms?", "options": ["yes", "no"], "freeFormInput": false}
371
+ const promptText = `Analyze the following terminal output. If it contains a prompt requesting user input (such as a confirmation, selection, or yes/no question) that appears at the VERY END of the output and has NOT already been answered (i.e., there is no user response or subsequent output after the prompt), extract the prompt text. IMPORTANT: Only detect prompts that are at the end of the output with no content following them - if there is any output after the prompt, the prompt has already been answered and you should return null. The prompt may ask to choose from a set. If so, extract the possible options as a JSON object with keys 'prompt', 'options' (an array of strings or an object with option to description mappings), and 'freeFormInput': false. If no options are provided, and free form input is requested, for example: Password:, return the word freeFormInput. For example, if the options are "[Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel", the option to description mappings would be {"Y": "Yes", "A": "Yes to All", "N": "No", "L": "No to All", "C": "Cancel"}. If there is no such prompt, return null. If the option is ambiguous, return null.
372
+ Examples:
373
+ 1. Output: "Do you want to overwrite? (y/n)"
374
+ Response: {"prompt": "Do you want to overwrite?", "options": ["y", "n"], "freeFormInput": false}
311
375
 
312
- 4. Output: "Press Enter to continue"
313
- Response: {"prompt": "Press Enter to continue", "options": ["Enter"], "freeFormInput": false}
376
+ 2. Output: "Confirm: [Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel"
377
+ Response: {"prompt": "Confirm", "options": ["Y", "A", "N", "L", "C"], "freeFormInput": false}
314
378
 
315
- 5. Output: "Type Yes to proceed"
316
- Response: {"prompt": "Type Yes to proceed", "options": ["Yes"], "freeFormInput": false}
379
+ 3. Output: "Accept license terms? (yes/no)"
380
+ Response: {"prompt": "Accept license terms?", "options": ["yes", "no"], "freeFormInput": false}
317
381
 
318
- 6. Output: "Continue [y/N]"
319
- Response: {"prompt": "Continue", "options": ["y", "N"], "freeFormInput": false}
382
+ 4. Output: "Press Enter to continue"
383
+ Response: {"prompt": "Press Enter to continue", "options": ["Enter"], "freeFormInput": false}
320
384
 
321
- 7. Output: "Press any key to close the terminal."
322
- Response: null
385
+ 5. Output: "Type Yes to proceed"
386
+ Response: {"prompt": "Type Yes to proceed", "options": ["Yes"], "freeFormInput": false}
323
387
 
324
- 8. Output: "Terminal will be reused by tasks, press any key to close it."
325
- Response: null
388
+ 6. Output: "Continue [y/N]"
389
+ Response: {"prompt": "Continue", "options": ["y", "N"], "freeFormInput": false}
326
390
 
327
- 9. Output: "Password:"
328
- Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
329
- 10. Output: "press ctrl-c to detach, ctrl-d to kill"
330
- Response: null
391
+ 7. Output: "Password:"
392
+ Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
393
+ 8. Output: "press ctrl-c to detach, ctrl-d to kill"
394
+ Response: null
395
+ 9. Output: "Continue (y/n)? y"
396
+ Response: null (the prompt was already answered with 'y')
397
+ 10. Output: "Do you want to proceed? (yes/no)\nyes\nProceeding with operation..."
398
+ Response: null (the prompt was already answered and there is subsequent output)
331
399
 
332
- Alternatively, the prompt may request free form input, for example:
333
- 1. Output: "Enter your username:"
334
- Response: {"prompt": "Enter your username:", "freeFormInput": true, "options": []}
335
- 2. Output: "Password:"
336
- Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
337
- Now, analyze this output:
338
- ${lastLines}
339
- `;
340
- const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier('core')), [{ role: ChatMessageRole.User, content: [{ type: 'text', value: promptText }] }], {}, token);
400
+ Alternatively, the prompt may request free form input, for example:
401
+ 1. Output: "Enter your username:"
402
+ Response: {"prompt": "Enter your username:", "freeFormInput": true, "options": []}
403
+ 2. Output: "Password:"
404
+ Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
405
+ 3. Output: "Press any key to continue..."
406
+ Response: {"prompt": "Press any key to continue...", "freeFormInput": true, "options": []}
407
+ Now, analyze this output:
408
+ ${lastLines}
409
+ `;
410
+ const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier("core")), [{
411
+ role: ChatMessageRole.User,
412
+ content: [{
413
+ type: "text",
414
+ value: promptText
415
+ }]
416
+ }], {}, token);
341
417
  const responseText = await getTextResponseFromStream(response);
342
418
  try {
343
419
  const match = responseText.match(/\{[\s\S]*\}/);
344
420
  if (match) {
345
421
  const obj = JSON.parse(match[0]);
346
- if (isObject(obj) &&
347
- 'prompt' in obj && isString(obj.prompt) &&
348
- 'options' in obj &&
349
- 'options' in obj &&
350
- 'freeFormInput' in obj && typeof obj.freeFormInput === 'boolean') {
422
+ if (isObject(obj) && "prompt" in obj && isString(obj.prompt) && "options" in obj && "options" in obj && "freeFormInput" in obj && typeof obj.freeFormInput === "boolean") {
351
423
  if (this._lastPrompt === obj.prompt) {
352
424
  return;
353
425
  }
354
426
  if (obj.freeFormInput === true) {
355
- return { prompt: obj.prompt, options: [], detectedRequestForFreeFormInput: true };
427
+ return {
428
+ prompt: obj.prompt,
429
+ options: [],
430
+ detectedRequestForFreeFormInput: true
431
+ };
356
432
  }
357
433
  if (Array.isArray(obj.options) && obj.options.every(isString)) {
358
- return { prompt: obj.prompt, options: obj.options, detectedRequestForFreeFormInput: obj.freeFormInput };
359
- }
360
- else if (isObject(obj.options) && ( Object.values(obj.options)).every(isString)) {
434
+ return {
435
+ prompt: obj.prompt,
436
+ options: obj.options,
437
+ detectedRequestForFreeFormInput: obj.freeFormInput
438
+ };
439
+ } else if (isObject(obj.options) && ( Object.values(obj.options)).every(isString)) {
361
440
  const keys = ( Object.keys(obj.options));
362
441
  if (keys.length === 0) {
363
442
  return undefined;
364
443
  }
365
444
  const descriptions = ( keys.map(key => obj.options[key]));
366
- return { prompt: obj.prompt, options: keys, descriptions, detectedRequestForFreeFormInput: obj.freeFormInput };
445
+ return {
446
+ prompt: obj.prompt,
447
+ options: keys,
448
+ descriptions,
449
+ detectedRequestForFreeFormInput: obj.freeFormInput
450
+ };
367
451
  }
368
452
  }
369
453
  }
370
- }
371
- catch (err) {
372
- console.error('Failed to parse confirmation prompt from language model response:', err);
454
+ } catch (err) {
455
+ console.error("Failed to parse confirmation prompt from language model response:", err);
373
456
  }
374
457
  return undefined;
375
458
  }
@@ -381,7 +464,10 @@ let OutputMonitor = class OutputMonitor extends Disposable {
381
464
  if (!model) {
382
465
  return undefined;
383
466
  }
384
- const models = await this._languageModelsService.selectLanguageModels({ vendor: 'copilot', family: model.replaceAll('copilot/', '') });
467
+ const models = await this._languageModelsService.selectLanguageModels({
468
+ vendor: "copilot",
469
+ family: model.replaceAll("copilot/", "")
470
+ });
385
471
  if (!models.length) {
386
472
  return undefined;
387
473
  }
@@ -394,16 +480,20 @@ let OutputMonitor = class OutputMonitor extends Disposable {
394
480
  this._lastPromptMarker = currentMarker;
395
481
  this._lastPrompt = prompt;
396
482
  const promptText = `Given the following confirmation prompt and options from a terminal output, which option is the default?\nPrompt: "${prompt}"\nOptions: ${JSON.stringify(options)}\nRespond with only the option string.`;
397
- const response = await this._languageModelsService.sendChatRequest(models[0], ( new ExtensionIdentifier('core')), [
398
- { role: ChatMessageRole.User, content: [{ type: 'text', value: promptText }] }
399
- ], {}, token);
483
+ const response = await this._languageModelsService.sendChatRequest(models[0], ( new ExtensionIdentifier("core")), [{
484
+ role: ChatMessageRole.User,
485
+ content: [{
486
+ type: "text",
487
+ value: promptText
488
+ }]
489
+ }], {}, token);
400
490
  const suggestedOption = (await getTextResponseFromStream(response)).trim();
401
491
  if (!suggestedOption) {
402
492
  return;
403
493
  }
404
- const parsed = suggestedOption.replace(/['"`]/g, '').trim();
494
+ const parsed = suggestedOption.replace(/['"`]/g, "").trim();
405
495
  const index = confirmationPrompt.options.indexOf(parsed);
406
- const validOption = confirmationPrompt.options.find(opt => parsed === opt.replace(/['"`]/g, '').trim());
496
+ const validOption = confirmationPrompt.options.find(opt => parsed === opt.replace(/['"`]/g, "").trim());
407
497
  if (!validOption || index === -1) {
408
498
  return;
409
499
  }
@@ -415,15 +505,27 @@ let OutputMonitor = class OutputMonitor extends Disposable {
415
505
  sentToTerminal = true;
416
506
  }
417
507
  const description = confirmationPrompt.descriptions?.[index];
418
- return description ? { suggestedOption: { description, option: validOption }, sentToTerminal } : { suggestedOption: validOption, sentToTerminal };
508
+ return description ? {
509
+ suggestedOption: {
510
+ description,
511
+ option: validOption
512
+ },
513
+ sentToTerminal
514
+ } : {
515
+ suggestedOption: validOption,
516
+ sentToTerminal
517
+ };
419
518
  }
420
- async _requestFreeFormTerminalInput(token, execution, confirmationPrompt) {
421
- const focusTerminalSelection = Symbol('focusTerminalSelection');
422
- const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12049, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
423
- 12050,
519
+ async _requestFreeFormTerminalInput(token, execution, confirmationPrompt, acceptAnyKey = false) {
520
+ const focusTerminalSelection = Symbol("focusTerminalSelection");
521
+ const {
522
+ promise: userPrompt,
523
+ part
524
+ } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12379, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
525
+ 12380,
424
526
  "{0}\nPlease provide the required input to the terminal.\n\n",
425
527
  confirmationPrompt.prompt
426
- )))), '', ( localize(12051, 'Focus terminal')), undefined, () => {
528
+ )))), "", ( localize(12381, "Focus terminal")), undefined, () => {
427
529
  this._showInstance(execution.instance.instanceId);
428
530
  return focusTerminalSelection;
429
531
  });
@@ -442,8 +544,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
442
544
  this._state = state;
443
545
  resolve(value);
444
546
  };
445
- inputDataDisposable = this._register(execution.instance.onDidInputData((data) => {
446
- if (!data || data === '\r' || data === '\n' || data === '\r\n') {
547
+ inputDataDisposable = this._register(execution.instance.onDidInputData(data => {
548
+ if ((acceptAnyKey && data.length > 0) || (!acceptAnyKey && (data === "\r" || data === "\n" || data === "\r\n"))) {
447
549
  this._outputMonitorTelemetryCounters.inputToolFreeFormInputCount++;
448
550
  settle(true, OutputMonitorState.PollingForIdle);
449
551
  }
@@ -470,25 +572,24 @@ let OutputMonitor = class OutputMonitor extends Disposable {
470
572
  }
471
573
  async _confirmRunInTerminal(token, suggestedOption, execution, confirmationPrompt) {
472
574
  const suggestedOptionValue = isString(suggestedOption) ? suggestedOption : suggestedOption.option;
473
- if (suggestedOptionValue === 'any key') {
474
- return;
475
- }
476
- const focusTerminalSelection = Symbol('focusTerminalSelection');
575
+ const focusTerminalSelection = Symbol("focusTerminalSelection");
477
576
  let inputDataDisposable = Disposable.None;
478
577
  let instanceDisposedDisposable = Disposable.None;
479
- const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12052, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
480
- 12053,
578
+ const {
579
+ promise: userPrompt,
580
+ part
581
+ } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12382, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
582
+ 12383,
481
583
  "{0}\n Do you want to send `{1}`{2} followed by `Enter` to the terminal?",
482
584
  confirmationPrompt.prompt,
483
585
  suggestedOptionValue,
484
- isString(suggestedOption) ? '' : suggestedOption.description ? ' (' + suggestedOption.description + ')' : ''
485
- )))), '', ( localize(12054, 'Allow')), ( localize(12055, 'Focus Terminal')), async (value) => {
586
+ isString(suggestedOption) ? "" : suggestedOption.description ? " (" + suggestedOption.description + ")" : ""
587
+ )))), "", ( localize(12384, "Allow")), ( localize(12385, "Focus Terminal")), async value => {
486
588
  let option = undefined;
487
589
  if (value === true) {
488
590
  option = suggestedOptionValue;
489
- }
490
- else if (typeof value === 'object' && 'label' in value) {
491
- option = value.label.split(' (')[0];
591
+ } else if (typeof value === "object" && "label" in value) {
592
+ option = value.label.split(" (")[0];
492
593
  }
493
594
  this._outputMonitorTelemetryCounters.inputToolManualAcceptCount++;
494
595
  this._outputMonitorTelemetryCounters.inputToolManualChars += option?.length || 0;
@@ -531,7 +632,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
531
632
  disposeListeners();
532
633
  return true;
533
634
  }
534
- if (typeof optionToRun === 'string' && optionToRun.length) {
635
+ if (typeof optionToRun === "string" && optionToRun.length) {
535
636
  execution.instance.focus(true);
536
637
  disposeListeners();
537
638
  await execution.instance.sendText(optionToRun, true);
@@ -551,25 +652,35 @@ let OutputMonitor = class OutputMonitor extends Disposable {
551
652
  this._terminalService.setActiveInstance(instance);
552
653
  this._terminalService.revealActiveTerminal(true);
553
654
  }
554
- _createElicitationPart(token, sessionId, title, detail, subtitle, acceptLabel, rejectLabel, onAccept, onReject, moreActions) {
655
+ _createElicitationPart(
656
+ token,
657
+ sessionId,
658
+ title,
659
+ detail,
660
+ subtitle,
661
+ acceptLabel,
662
+ rejectLabel,
663
+ onAccept,
664
+ onReject,
665
+ moreActions
666
+ ) {
555
667
  const chatModel = sessionId && this._chatService.getSession(LocalChatSessionUri.forSession(sessionId));
556
668
  if (!(chatModel instanceof ChatModel)) {
557
- throw ( new Error('No model'));
669
+ throw ( new Error("No model"));
558
670
  }
559
671
  const request = chatModel.getRequests().at(-1);
560
672
  if (!request) {
561
- throw ( new Error('No request'));
673
+ throw ( new Error("No request"));
562
674
  }
563
675
  let part;
564
676
  const promise = ( new Promise(resolve => {
565
- const thePart = part = this._register(( new ChatElicitationRequestPart(title, detail, subtitle, acceptLabel, rejectLabel, async (value) => {
677
+ const thePart = part = ( new ChatElicitationRequestPart(title, detail, subtitle, acceptLabel, rejectLabel, async value => {
566
678
  thePart.hide();
567
679
  this._promptPart = undefined;
568
680
  try {
569
681
  const r = await (onAccept ? onAccept(value) : undefined);
570
682
  resolve(r);
571
- }
572
- catch {
683
+ } catch {
573
684
  resolve(undefined);
574
685
  }
575
686
  return ElicitationState.Accepted;
@@ -579,49 +690,51 @@ let OutputMonitor = class OutputMonitor extends Disposable {
579
690
  try {
580
691
  const r = await (onReject ? onReject() : undefined);
581
692
  resolve(r);
582
- }
583
- catch {
693
+ } catch {
584
694
  resolve(undefined);
585
695
  }
586
696
  return ElicitationState.Rejected;
587
697
  },
588
- undefined, moreActions, () => this._outputMonitorTelemetryCounters.inputToolManualShownCount++)));
698
+ undefined, moreActions, () => this._outputMonitorTelemetryCounters.inputToolManualShownCount++));
589
699
  chatModel.acceptResponseProgress(request, thePart);
590
700
  this._promptPart = thePart;
591
701
  }));
592
702
  this._register(token.onCancellationRequested(() => part.hide()));
593
- return { promise, part };
703
+ return {
704
+ promise,
705
+ part
706
+ };
594
707
  }
595
708
  async _getLanguageModel() {
596
- let models = await this._languageModelsService.selectLanguageModels({ vendor: 'copilot', id: 'copilot-fast' });
709
+ let models = await this._languageModelsService.selectLanguageModels({
710
+ vendor: "copilot",
711
+ id: "copilot-fast"
712
+ });
597
713
  if (!models.length) {
598
- models = await this._languageModelsService.selectLanguageModels({ vendor: 'copilot', family: 'gpt-4o-mini' });
714
+ models = await this._languageModelsService.selectLanguageModels({
715
+ vendor: "copilot",
716
+ family: "gpt-4o-mini"
717
+ });
599
718
  }
600
719
  return models.length ? models[0] : undefined;
601
720
  }
602
721
  };
603
- OutputMonitor = ( __decorate([
604
- ( __param(5, ILanguageModelsService)),
605
- ( __param(6, ITaskService)),
606
- ( __param(7, IChatService)),
607
- ( __param(8, IChatWidgetService)),
608
- ( __param(9, IConfigurationService)),
609
- ( __param(10, ILogService)),
610
- ( __param(11, ITerminalService))
611
- ], OutputMonitor));
722
+ OutputMonitor = ( __decorate([( __param(5, ILanguageModelsService)), ( __param(6, ITaskService)), ( __param(7, IChatService)), ( __param(8, IChatWidgetService)), ( __param(9, IConfigurationService)), ( __param(10, ITerminalLogService)), ( __param(11, ITerminalService))], OutputMonitor));
612
723
  function getMoreActions(suggestedOption, confirmationPrompt) {
613
724
  const moreActions = [];
614
- const moreOptions = confirmationPrompt.options.filter(a => a !== (isString(suggestedOption) ? suggestedOption : suggestedOption.option));
725
+ const moreOptions = confirmationPrompt.options.filter(
726
+ a => a !== (isString(suggestedOption) ? suggestedOption : suggestedOption.option)
727
+ );
615
728
  let i = 0;
616
729
  for (const option of moreOptions) {
617
- const label = option + (confirmationPrompt.descriptions ? ' (' + confirmationPrompt.descriptions[i] + ')' : '');
730
+ const label = option + (confirmationPrompt.descriptions ? " (" + confirmationPrompt.descriptions[i] + ")" : "");
618
731
  const action = {
619
732
  label,
620
733
  tooltip: label,
621
734
  id: `terminal.poll.send.${option}`,
622
735
  class: undefined,
623
736
  enabled: true,
624
- run: async () => { }
737
+ run: async () => {}
625
738
  };
626
739
  i++;
627
740
  moreActions.push(action);
@@ -638,7 +751,7 @@ function detectsInputRequiredPattern(cursorLine) {
638
751
  /\(END\)$/,
639
752
  /password[:]?$/i,
640
753
  /\?\s*(?:\([a-z\s]+\))?$/i,
641
- /press a(?:ny)? key/i,
754
+ /press a(?:ny)? key/i
642
755
  ].some(e => e.test(cursorLine)));
643
756
  }
644
757
  function detectsNonInteractiveHelpPattern(cursorLine) {
@@ -654,5 +767,18 @@ function detectsNonInteractiveHelpPattern(cursorLine) {
654
767
  /press u\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:show|print|display)\s*(?:the )?(?:server )?urls?/i
655
768
  ].some(e => e.test(cursorLine)));
656
769
  }
770
+ const taskFinishMessages = [(
771
+ localize(12386, "Terminal will be reused by tasks, press any key to close it.")), ( localize(12387, "Terminal will be reused by tasks, press any key to close it.")), (
772
+ localize(12388, "Press any key to close the terminal.")), ( localize(12389, "Press any key to close the terminal."))];
773
+ function detectsVSCodeTaskFinishMessage(cursorLine) {
774
+ const normalized = cursorLine.replace(/\s/g, "").toLowerCase();
775
+ return (taskFinishMessages.some(msg => normalized.includes(msg.replace(/\s/g, "").toLowerCase())));
776
+ }
777
+ function detectsGenericPressAnyKeyPattern(cursorLine) {
778
+ if (detectsVSCodeTaskFinishMessage(cursorLine)) {
779
+ return false;
780
+ }
781
+ return /press a(?:ny)? key/i.test(cursorLine);
782
+ }
657
783
 
658
- export { OutputMonitor, detectsInputRequiredPattern, detectsNonInteractiveHelpPattern };
784
+ export { OutputMonitor, detectsGenericPressAnyKeyPattern, detectsInputRequiredPattern, detectsNonInteractiveHelpPattern, detectsVSCodeTaskFinishMessage };