@codingame/monaco-vscode-chat-service-override 23.2.2 → 24.1.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 (273) hide show
  1. package/index.js +13 -10
  2. package/package.json +5 -41
  3. package/vscode/src/vs/platform/domWidget/browser/domWidget.d.ts +52 -0
  4. package/vscode/src/vs/platform/domWidget/browser/domWidget.js +53 -0
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -10
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +61 -50
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.d.ts +18 -0
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +152 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +14 -14
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +37 -28
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +9 -9
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -5
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +7 -11
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +10 -10
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +12 -14
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +21 -18
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +27 -18
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +6 -27
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +44 -208
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -17
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +17 -17
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +23 -24
  30. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +140 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +85 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +358 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +55 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +222 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +37 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +241 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +13 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +27 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +11 -19
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +67 -230
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +65 -33
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +186 -62
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +23 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +140 -0
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +2 -7
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +115 -29
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +389 -166
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +9 -6
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +22 -16
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +8 -8
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.d.ts +10 -3
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +63 -3
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +7 -3
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +14 -5
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +173 -32
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +1 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +66 -17
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +32 -29
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +12 -12
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -2
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +9 -6
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +2 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +6 -4
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +4 -4
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +8 -18
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +1 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +5 -6
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +15 -24
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +13 -11
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +66 -50
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +3 -2
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +6 -5
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +3 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +7 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +2 -2
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +6 -7
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +3 -3
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +4 -4
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +2 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +15 -4
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +3 -4
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +30 -37
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +13 -10
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -32
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -9
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +20 -19
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +47 -15
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +270 -143
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +3 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +310 -170
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +10 -10
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +12 -2
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +42 -42
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +3 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +35 -25
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +4 -4
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +1 -4
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +22 -26
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +18 -14
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +80 -72
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +2 -8
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +48 -77
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +16 -17
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +257 -77
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +55 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +34 -0
  119. package/vscode/src/vs/workbench/contrib/chat/browser/{chatSetup.d.ts → chatSetup/chatSetupContributions.d.ts} +4 -11
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +622 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +53 -0
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +359 -0
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +89 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +667 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +37 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +260 -0
  127. package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/chatSetup.css +4 -6
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +4 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +21 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +55 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.js → chatStatus/chatStatusDashboard.js} +193 -325
  132. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.d.ts → chatStatus/chatStatusEntry.d.ts} +1 -1
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +190 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.d.ts → chatStatus/chatStatusItemService.d.ts} +1 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatStatus/media}/chatStatus.css +22 -1
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.d.ts +25 -0
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.js +108 -0
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.d.ts +10 -0
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.js +34 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +1 -1
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +57 -18
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +478 -146
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.d.ts +43 -0
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.js +204 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.d.ts +44 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.js +187 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
  148. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +108 -62
  149. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
  150. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
  151. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.d.ts +1 -1
  152. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +37 -32
  153. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +37 -20
  154. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +232 -97
  155. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatusWidget.css +57 -0
  156. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewPane.css +142 -0
  157. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css +39 -0
  158. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +51 -35
  159. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
  160. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +5 -4
  161. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -2
  162. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +12 -12
  164. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +19 -21
  165. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +1 -1
  166. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +8 -8
  167. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
  168. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
  169. package/vscode/src/vs/workbench/contrib/chat/common/chatCodeMapperService.d.ts +1 -1
  170. package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.d.ts +49 -0
  171. package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.js +100 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +1 -0
  173. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +2 -1
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +3 -4
  175. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +41 -15
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +208 -162
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +3 -3
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +15 -7
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +61 -7
  180. package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.d.ts +3 -2
  181. package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +2 -2
  182. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +1 -1
  183. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +10 -10
  184. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +2 -2
  185. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +3 -3
  186. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +5 -1
  187. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +60 -43
  188. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
  189. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +27 -4
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +37 -47
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -3
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +120 -87
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +49 -42
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +293 -187
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +17 -5
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +43 -9
  198. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +2 -0
  199. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +48 -29
  200. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
  201. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
  202. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +8 -13
  203. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  204. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +2 -2
  205. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +3 -3
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +36 -41
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +3 -3
  208. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +2 -2
  209. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  210. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +18 -18
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +142 -38
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +1 -1
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +3 -7
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +19 -2
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +78 -6
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -11
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +26 -44
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +3 -3
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +1 -1
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +9 -0
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -1
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +23 -17
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +1 -1
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +4 -2
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +26 -5
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +3 -1
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +32 -4
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +15 -29
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +10 -7
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +12 -0
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +3 -1
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +38 -19
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +1 -0
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +32 -7
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +5 -4
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -3
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -3
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +1 -0
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +128 -62
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +2 -2
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +12 -2
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +5 -2
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +68 -22
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +20 -22
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +13 -12
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +20 -19
  252. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
  253. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  254. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +12 -0
  255. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +72 -0
  256. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +1 -2
  257. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +5 -17
  258. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +0 -53
  259. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +0 -154
  260. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +0 -7
  261. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +0 -13
  262. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +0 -25
  263. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +0 -135
  264. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +0 -35
  265. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +0 -216
  266. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +0 -1617
  267. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +0 -44
  268. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +0 -313
  269. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-dark.svg +0 -0
  270. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-light.svg +0 -0
  271. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/github.svg +0 -0
  272. /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/google.svg +0 -0
  273. /package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.js → chatStatus/chatStatusItemService.js} +0 -0
@@ -8,18 +8,18 @@ import { isObject, isString } from '@codingame/monaco-vscode-api/vscode/vs/base/
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';
10
10
  import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
11
- import { ChatElicitationRequestPart } from '@codingame/monaco-vscode-dc3fa21d-a483-5b99-a7ab-173235644a34-common/vscode/vs/workbench/contrib/chat/browser/chatElicitationRequestPart';
12
- import { ChatModel } from '@codingame/monaco-vscode-2339d6ac-d6bb-53cd-95ee-81911735d1c7-common/vscode/vs/workbench/contrib/chat/common/chatModel';
11
+ import { ChatElicitationRequestPart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatElicitationRequestPart';
12
+ import { ChatModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModel';
13
+ import { ElicitationState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService';
13
14
  import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
14
15
  import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
15
16
  import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
16
17
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
17
18
  import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
18
- import { detectsInputRequiredPattern } from '../../executeStrategy/executeStrategy.js';
19
19
  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
- import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-de235d7f-e72a-5adb-9256-acf6c64eb6f2-common/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
22
+ import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
23
23
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
24
24
  import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
25
25
  import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatUri';
@@ -86,6 +86,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
86
86
  case OutputMonitorState.Idle: {
87
87
  const idleResult = await this._handleIdleState(token);
88
88
  if (idleResult.shouldContinuePollling) {
89
+ this._state = OutputMonitorState.PollingForIdle;
89
90
  continue;
90
91
  }
91
92
  else {
@@ -121,17 +122,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
121
122
  const confirmationPrompt = await this._determineUserInputOptions(this._execution, token);
122
123
  if (confirmationPrompt?.detectedRequestForFreeFormInput) {
123
124
  this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
124
- const focusedTerminal = await this._requestFreeFormTerminalInput(token, this._execution, confirmationPrompt);
125
- if (focusedTerminal) {
126
- await ( new Promise(resolve => {
127
- const disposable = this._execution.instance.onData(data => {
128
- if (data === '\r' || data === '\n' || data === '\r\n') {
129
- this._outputMonitorTelemetryCounters.inputToolFreeFormInputCount++;
130
- disposable.dispose();
131
- resolve();
132
- }
133
- });
134
- }));
125
+ const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, confirmationPrompt);
126
+ if (receivedTerminalInput) {
135
127
  await timeout(200);
136
128
  return { shouldContinuePollling: true };
137
129
  }
@@ -193,13 +185,15 @@ let OutputMonitor = class OutputMonitor extends Disposable {
193
185
  }
194
186
  else {
195
187
  const r = race.r;
196
- if (r === OutputMonitorState.Idle || r === OutputMonitorState.Cancelled || r === OutputMonitorState.Timeout) {
188
+ const state = (typeof r === 'object' && r !== null) ? r.state : r;
189
+ if (state === OutputMonitorState.Idle || state === OutputMonitorState.Cancelled || state === OutputMonitorState.Timeout) {
197
190
  try {
198
191
  continuePollingPart?.hide();
199
192
  }
200
193
  catch { }
201
194
  continuePollingPart = undefined;
202
195
  continuePollingDecisionP = undefined;
196
+ this._promptPart = undefined;
203
197
  return false;
204
198
  }
205
199
  return true;
@@ -237,7 +231,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
237
231
  const recentlyIdle = consecutiveIdleEvents >= PollingConsts.MinIdleEvents;
238
232
  const isActive = execution.isActive ? await execution.isActive() : undefined;
239
233
  this._logService.trace(`OutputMonitor: waitForIdle check: waited=${waited}ms, recentlyIdle=${recentlyIdle}, isActive=${isActive}`);
240
- if (recentlyIdle || isActive === false) {
234
+ if (recentlyIdle && isActive !== true) {
241
235
  this._state = OutputMonitorState.Idle;
242
236
  return this._state;
243
237
  }
@@ -255,10 +249,10 @@ let OutputMonitor = class OutputMonitor extends Disposable {
255
249
  if (token.isCancellationRequested || this._state === OutputMonitorState.Cancelled) {
256
250
  return { promise: Promise.resolve(false) };
257
251
  }
258
- const result = this._createElicitationPart(token, context?.sessionId, ( new MarkdownString(( localize(11877, "Continue waiting for `{0}`?", command)))), ( new MarkdownString(( localize(
259
- 11878,
252
+ const result = this._createElicitationPart(token, context?.sessionId, ( new MarkdownString(( localize(12018, "Continue waiting for `{0}`?", command)))), ( new MarkdownString(( localize(
253
+ 12019,
260
254
  "This will continue to poll for output to determine when the terminal becomes idle for up to 2 minutes."
261
- )))), '', ( localize(11879, 'Yes')), ( localize(11880, 'No')), async () => true, async () => { this._state = OutputMonitorState.Cancelled; return false; });
255
+ )))), '', ( localize(12020, 'Yes')), ( localize(12021, 'No')), async () => true, async () => { this._state = OutputMonitorState.Cancelled; return false; });
262
256
  return { promise: result.promise.then(p => p ?? false), part: result.part };
263
257
  }
264
258
  async _assessOutputForErrors(buffer, token) {
@@ -284,8 +278,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
284
278
  if (!model) {
285
279
  return undefined;
286
280
  }
287
- const lastFiveLines = execution.getOutput(this._lastPromptMarker).trimEnd().split('\n').slice(-5).join('\n');
288
- 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 or non-specific (like "any key" or "some key"), return null.
281
+ const lastLines = execution.getOutput(this._lastPromptMarker).trimEnd().split('\n').slice(-15).join('\n');
282
+ 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.
289
283
  Examples:
290
284
  1. Output: "Do you want to overwrite? (y/n)"
291
285
  Response: {"prompt": "Do you want to overwrite?", "options": ["y", "n"], "freeFormInput": false}
@@ -306,9 +300,14 @@ let OutputMonitor = class OutputMonitor extends Disposable {
306
300
  Response: {"prompt": "Continue", "options": ["y", "N"], "freeFormInput": false}
307
301
 
308
302
  7. Output: "Press any key to close the terminal."
309
- Response: null
303
+ Response: {"prompt": "Press any key to continue...", "options": ["a"], "freeFormInput": false}
310
304
 
311
305
  8. Output: "Terminal will be reused by tasks, press any key to close it."
306
+ Response: {"prompt": "Terminal will be reused by tasks, press any key to close it.", "options": ["a"], "freeFormInput": false}
307
+
308
+ 9. Output: "Password:"
309
+ Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
310
+ 10. Output: "press ctrl-c to detach, ctrl-d to kill"
312
311
  Response: null
313
312
 
314
313
  Alternatively, the prompt may request free form input, for example:
@@ -317,7 +316,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
317
316
  2. Output: "Password:"
318
317
  Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
319
318
  Now, analyze this output:
320
- ${lastFiveLines}
319
+ ${lastLines}
321
320
  `;
322
321
  const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier('core')), [{ role: ChatMessageRole.User, content: [{ type: 'text', value: promptText }] }], {}, token);
323
322
  const responseText = await getTextResponseFromStream(response);
@@ -333,20 +332,14 @@ let OutputMonitor = class OutputMonitor extends Disposable {
333
332
  if (this._lastPrompt === obj.prompt) {
334
333
  return;
335
334
  }
336
- const NON_SPECIFIC_OPTIONS = ( new Set(['any key', 'some key', 'a key']));
337
- const isNonSpecificOption = (option) => {
338
- const lowerOption = option.toLowerCase().trim();
339
- return ( NON_SPECIFIC_OPTIONS.has(lowerOption));
340
- };
335
+ if (obj.freeFormInput === true) {
336
+ return { prompt: obj.prompt, options: [], detectedRequestForFreeFormInput: true };
337
+ }
341
338
  if (Array.isArray(obj.options) && obj.options.every(isString)) {
342
- const filteredOptions = obj.options.filter(opt => !isNonSpecificOption(opt));
343
- if (filteredOptions.length === 0) {
344
- return undefined;
345
- }
346
- return { prompt: obj.prompt, options: filteredOptions, detectedRequestForFreeFormInput: obj.freeFormInput };
339
+ return { prompt: obj.prompt, options: obj.options, detectedRequestForFreeFormInput: obj.freeFormInput };
347
340
  }
348
341
  else if (isObject(obj.options) && ( Object.values(obj.options)).every(isString)) {
349
- const keys = ( Object.keys(obj.options)).filter(key => !isNonSpecificOption(key));
342
+ const keys = ( Object.keys(obj.options));
350
343
  if (keys.length === 0) {
351
344
  return undefined;
352
345
  }
@@ -391,7 +384,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
391
384
  }
392
385
  const parsed = suggestedOption.replace(/['"`]/g, '').trim();
393
386
  const index = confirmationPrompt.options.indexOf(parsed);
394
- const validOption = confirmationPrompt.options.find(opt => parsed === opt.replace(/['"`]/g, '').trim());
387
+ const validOption = confirmationPrompt.options.find(opt => parsed === 'any key' || parsed === opt.replace(/['"`]/g, '').trim());
395
388
  if (!validOption || index === -1) {
396
389
  return;
397
390
  }
@@ -406,37 +399,71 @@ let OutputMonitor = class OutputMonitor extends Disposable {
406
399
  return description ? { suggestedOption: { description, option: validOption }, sentToTerminal } : { suggestedOption: validOption, sentToTerminal };
407
400
  }
408
401
  async _requestFreeFormTerminalInput(token, execution, confirmationPrompt) {
409
- const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(11881, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
410
- 11882,
402
+ const focusTerminalSelection = Symbol('focusTerminalSelection');
403
+ const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12022, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
404
+ 12023,
411
405
  "{0}\nPlease provide the required input to the terminal.\n\n",
412
406
  confirmationPrompt.prompt
413
- )))), '', ( localize(11883, 'Focus terminal')), undefined, async () => {
407
+ )))), '', ( localize(12024, 'Focus terminal')), undefined, () => {
414
408
  this._showInstance(execution.instance.instanceId);
415
- return true;
409
+ return focusTerminalSelection;
416
410
  });
411
+ let inputDataDisposable = Disposable.None;
412
+ let instanceDisposedDisposable = Disposable.None;
417
413
  const inputPromise = ( new Promise(resolve => {
418
- const inputDataDisposable = this._register(execution.instance.onDidInputData((data) => {
414
+ let settled = false;
415
+ const settle = (value, state) => {
416
+ if (settled) {
417
+ return;
418
+ }
419
+ settled = true;
420
+ part.hide();
421
+ inputDataDisposable.dispose();
422
+ instanceDisposedDisposable.dispose();
423
+ this._state = state;
424
+ resolve(value);
425
+ };
426
+ inputDataDisposable = this._register(execution.instance.onDidInputData((data) => {
419
427
  if (!data || data === '\r' || data === '\n' || data === '\r\n') {
420
- part.hide();
421
- inputDataDisposable.dispose();
422
- this._state = OutputMonitorState.PollingForIdle;
423
- resolve(true);
428
+ this._outputMonitorTelemetryCounters.inputToolFreeFormInputCount++;
429
+ settle(true, OutputMonitorState.PollingForIdle);
424
430
  }
425
431
  }));
432
+ instanceDisposedDisposable = this._register(execution.instance.onDisposed(() => {
433
+ settle(false, OutputMonitorState.Cancelled);
434
+ }));
426
435
  }));
436
+ const disposeListeners = () => {
437
+ inputDataDisposable.dispose();
438
+ instanceDisposedDisposable.dispose();
439
+ };
427
440
  const result = await Promise.race([userPrompt, inputPromise]);
441
+ if (result === focusTerminalSelection) {
442
+ execution.instance.focus(true);
443
+ return await inputPromise;
444
+ }
445
+ if (result === undefined) {
446
+ disposeListeners();
447
+ return false;
448
+ }
449
+ disposeListeners();
428
450
  return !!result;
429
451
  }
430
452
  async _confirmRunInTerminal(token, suggestedOption, execution, confirmationPrompt) {
431
- const suggestedOptionValue = typeof suggestedOption === 'string' ? suggestedOption : suggestedOption.option;
453
+ let suggestedOptionValue = isString(suggestedOption) ? suggestedOption : suggestedOption.option;
454
+ if (suggestedOptionValue === 'any key') {
455
+ suggestedOptionValue = 'a';
456
+ }
457
+ const focusTerminalSelection = Symbol('focusTerminalSelection');
432
458
  let inputDataDisposable = Disposable.None;
433
- const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(11884, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
434
- 11885,
459
+ let instanceDisposedDisposable = Disposable.None;
460
+ const { promise: userPrompt, part } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12025, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
461
+ 12026,
435
462
  "{0}\n Do you want to send `{1}`{2} followed by `Enter` to the terminal?",
436
463
  confirmationPrompt.prompt,
437
464
  suggestedOptionValue,
438
- typeof suggestedOption === 'string' ? '' : suggestedOption.description ? ' (' + suggestedOption.description + ')' : ''
439
- )))), '', ( localize(11886, 'Allow')), ( localize(11887, 'Focus Terminal')), async (value) => {
465
+ isString(suggestedOption) ? '' : suggestedOption.description ? ' (' + suggestedOption.description + ')' : ''
466
+ )))), '', ( localize(12027, 'Allow')), ( localize(12028, 'Focus Terminal')), async (value) => {
440
467
  let option = undefined;
441
468
  if (value === true) {
442
469
  option = suggestedOptionValue;
@@ -447,25 +474,51 @@ let OutputMonitor = class OutputMonitor extends Disposable {
447
474
  this._outputMonitorTelemetryCounters.inputToolManualAcceptCount++;
448
475
  this._outputMonitorTelemetryCounters.inputToolManualChars += option?.length || 0;
449
476
  return option;
450
- }, async () => {
477
+ }, () => {
451
478
  this._showInstance(execution.instance.instanceId);
452
- this._state = OutputMonitorState.Cancelled;
453
479
  this._outputMonitorTelemetryCounters.inputToolManualRejectCount++;
454
- inputDataDisposable.dispose();
455
- return undefined;
480
+ return focusTerminalSelection;
456
481
  }, getMoreActions(suggestedOption, confirmationPrompt));
457
482
  const inputPromise = ( new Promise(resolve => {
458
- inputDataDisposable = this._register(execution.instance.onDidInputData(() => {
483
+ let settled = false;
484
+ const settle = (value, state) => {
485
+ if (settled) {
486
+ return;
487
+ }
488
+ settled = true;
459
489
  part.hide();
460
490
  inputDataDisposable.dispose();
461
- this._state = OutputMonitorState.PollingForIdle;
462
- resolve(undefined);
491
+ instanceDisposedDisposable.dispose();
492
+ this._state = state;
493
+ resolve(value);
494
+ };
495
+ inputDataDisposable = this._register(execution.instance.onDidInputData(() => {
496
+ settle(true, OutputMonitorState.PollingForIdle);
497
+ }));
498
+ instanceDisposedDisposable = this._register(execution.instance.onDisposed(() => {
499
+ settle(false, OutputMonitorState.Cancelled);
463
500
  }));
464
501
  }));
502
+ const disposeListeners = () => {
503
+ inputDataDisposable.dispose();
504
+ instanceDisposedDisposable.dispose();
505
+ };
465
506
  const optionToRun = await Promise.race([userPrompt, inputPromise]);
466
- if (optionToRun) {
507
+ if (optionToRun === focusTerminalSelection) {
508
+ execution.instance.focus(true);
509
+ return await inputPromise;
510
+ }
511
+ if (optionToRun === true) {
512
+ disposeListeners();
513
+ return true;
514
+ }
515
+ if (typeof optionToRun === 'string' && optionToRun.length) {
516
+ execution.instance.focus(true);
517
+ disposeListeners();
467
518
  await execution.instance.sendText(optionToRun, true);
519
+ return optionToRun;
468
520
  }
521
+ disposeListeners();
469
522
  return optionToRun;
470
523
  }
471
524
  _showInstance(instanceId) {
@@ -491,7 +544,6 @@ let OutputMonitor = class OutputMonitor extends Disposable {
491
544
  let part;
492
545
  const promise = ( new Promise(resolve => {
493
546
  const thePart = part = this._register(( new ChatElicitationRequestPart(title, detail, subtitle, acceptLabel, rejectLabel, async (value) => {
494
- thePart.state = 'accepted';
495
547
  thePart.hide();
496
548
  this._promptPart = undefined;
497
549
  try {
@@ -501,8 +553,8 @@ let OutputMonitor = class OutputMonitor extends Disposable {
501
553
  catch {
502
554
  resolve(undefined);
503
555
  }
556
+ return ElicitationState.Accepted;
504
557
  }, async () => {
505
- thePart.state = 'rejected';
506
558
  thePart.hide();
507
559
  this._promptPart = undefined;
508
560
  try {
@@ -512,6 +564,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
512
564
  catch {
513
565
  resolve(undefined);
514
566
  }
567
+ return ElicitationState.Rejected;
515
568
  },
516
569
  undefined, moreActions, () => this._outputMonitorTelemetryCounters.inputToolManualShownCount++)));
517
570
  chatModel.acceptResponseProgress(request, thePart);
@@ -539,7 +592,7 @@ OutputMonitor = ( __decorate([
539
592
  ], OutputMonitor));
540
593
  function getMoreActions(suggestedOption, confirmationPrompt) {
541
594
  const moreActions = [];
542
- const moreOptions = confirmationPrompt.options.filter(a => a !== (typeof suggestedOption === 'string' ? suggestedOption : suggestedOption.option));
595
+ const moreOptions = confirmationPrompt.options.filter(a => a !== (isString(suggestedOption) ? suggestedOption : suggestedOption.option));
543
596
  let i = 0;
544
597
  for (const option of moreOptions) {
545
598
  const label = option + (confirmationPrompt.descriptions ? ' (' + confirmationPrompt.descriptions[i] + ')' : '');
@@ -556,5 +609,18 @@ function getMoreActions(suggestedOption, confirmationPrompt) {
556
609
  }
557
610
  return moreActions.length ? moreActions : undefined;
558
611
  }
612
+ function detectsInputRequiredPattern(cursorLine) {
613
+ return ([
614
+ /\s*(?:\[[^\]]\]\s+[^\[]+\s*)+(?:\(default is\s+"[^"]+"\):)?\s+$/,
615
+ /(?:\(|\[)\s*(?:y(?:es)?\s*\/\s*n(?:o)?|n(?:o)?\s*\/\s*y(?:es)?)\s*(?:\]|\))\s+$/i,
616
+ /[?:]\s*(?:\(|\[)?\s*y(?:es)?\s*\/\s*n(?:o)?\s*(?:\]|\))?\s+$/i,
617
+ /\(y\)\s*$/i,
618
+ /:\s*$/,
619
+ /\(END\)$/,
620
+ /password[:]?$/i,
621
+ /\?\s*(?:\([a-z\s]+\))?$/i,
622
+ /press a(?:ny)? key/i,
623
+ ].some(e => e.test(cursorLine)));
624
+ }
559
625
 
560
- export { OutputMonitor };
626
+ export { OutputMonitor, detectsInputRequiredPattern };
@@ -1,4 +1,4 @@
1
- import type { Task } from "@codingame/monaco-vscode-05a2a821-e4de-5941-b7f9-bbf01c09f229-common/vscode/vs/workbench/contrib/tasks/common/taskService";
1
+ import type { Task } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService";
2
2
  import type { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
3
3
  import type { ILinkLocation } from "../../taskHelpers.js";
4
4
  import type { IMarker as XtermMarker } from "@xterm/xterm";
@@ -13,7 +13,7 @@ export interface IExecution {
13
13
  isActive?: () => Promise<boolean>;
14
14
  task?: Task | Pick<Task, "configurationProperties">;
15
15
  dependencyTasks?: Task[];
16
- instance: Pick<ITerminalInstance, "sendText" | "instanceId" | "onDidInputData" | "onData" | "focus" | "registerMarker">;
16
+ instance: Pick<ITerminalInstance, "sendText" | "instanceId" | "onDidInputData" | "onDisposed" | "onData" | "focus" | "registerMarker">;
17
17
  sessionId: string | undefined;
18
18
  }
19
19
  export interface IPollingResult {
@@ -1,12 +1,13 @@
1
1
 
2
2
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
3
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
3
4
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
5
  import { ToolDataSource, ToolInvocationPresentation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService';
5
6
  import { RunInTerminalTool } from './runInTerminalTool.js';
6
7
 
7
8
  const ConfirmTerminalCommandToolData = {
8
9
  id: 'vscode_get_terminal_confirmation',
9
- displayName: ( localize(11888, 'Confirm Terminal Command')),
10
+ displayName: ( localize(12029, 'Confirm Terminal Command')),
10
11
  modelDescription: [
11
12
  'This tool allows you to get explicit user confirmation for a terminal command without executing it.',
12
13
  '',
@@ -24,7 +25,7 @@ const ConfirmTerminalCommandToolData = {
24
25
  '',
25
26
  'After confirmation, use a tool to actually execute the command.'
26
27
  ].join('\n'),
27
- userDescription: ( localize(11889, 'Tool for confirming terminal commands')),
28
+ userDescription: ( localize(12030, 'Tool for confirming terminal commands')),
28
29
  source: ToolDataSource.Internal,
29
30
  icon: Codicon.shield,
30
31
  inputSchema: {
@@ -52,6 +53,15 @@ const ConfirmTerminalCommandToolData = {
52
53
  };
53
54
  class ConfirmTerminalCommandTool extends RunInTerminalTool {
54
55
  async prepareToolInvocation(context, token) {
56
+ try {
57
+ const sessionUri = context.chatSessionId ? ( URI.parse(context.chatSessionId)) : undefined;
58
+ const sessionId = sessionUri ? this._chatService.getSession(sessionUri)?.sessionId : undefined;
59
+ if (sessionId) {
60
+ context.chatSessionId = sessionId;
61
+ }
62
+ }
63
+ catch {
64
+ }
55
65
  const preparedInvocation = await super.prepareToolInvocation(context, token);
56
66
  if (preparedInvocation) {
57
67
  preparedInvocation.presentation = ToolInvocationPresentation.HiddenAfterComplete;
@@ -16,6 +16,7 @@ import { ITerminalProfileResolverService } from "@codingame/monaco-vscode-api/vs
16
16
  import { type IToolTerminal } from "../toolTerminalCreator.js";
17
17
  import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
18
18
  import { IHistoryService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/history/common/history.service";
19
+ import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
19
20
  export declare function createRunInTerminalToolData(accessor: ServicesAccessor): Promise<IToolData>;
20
21
  export interface IRunInTerminalInputParams {
21
22
  command: string;
@@ -23,7 +24,7 @@ export interface IRunInTerminalInputParams {
23
24
  isBackground: boolean;
24
25
  }
25
26
  export declare class RunInTerminalTool extends Disposable implements IToolImpl {
26
- private readonly _chatService;
27
+ protected readonly _chatService: IChatService;
27
28
  private readonly _configurationService;
28
29
  private readonly _historyService;
29
30
  private readonly _instantiationService;
@@ -34,9 +35,11 @@ export declare class RunInTerminalTool extends Disposable implements IToolImpl {
34
35
  private readonly _logService;
35
36
  private readonly _terminalService;
36
37
  private readonly _workspaceContextService;
38
+ private readonly _chatWidgetService;
37
39
  private readonly _terminalToolCreator;
38
40
  private readonly _treeSitterCommandParser;
39
41
  private readonly _telemetry;
42
+ private readonly _commandArtifactCollector;
40
43
  protected readonly _profileFetcher: TerminalProfileFetcher;
41
44
  private readonly _commandLineRewriters;
42
45
  private readonly _commandLineAnalyzers;
@@ -44,7 +47,7 @@ export declare class RunInTerminalTool extends Disposable implements IToolImpl {
44
47
  protected readonly _osBackend: Promise<OperatingSystem>;
45
48
  private static readonly _backgroundExecutions;
46
49
  static getBackgroundOutput(id: string): string;
47
- constructor(_chatService: IChatService, _configurationService: IConfigurationService, _historyService: IHistoryService, _instantiationService: IInstantiationService, _languageModelToolsService: ILanguageModelToolsService, _remoteAgentService: IRemoteAgentService, _storageService: IStorageService, _terminalChatService: ITerminalChatService, _logService: ITerminalLogService, _terminalService: ITerminalService, _workspaceContextService: IWorkspaceContextService);
50
+ constructor(_chatService: IChatService, _configurationService: IConfigurationService, _historyService: IHistoryService, _instantiationService: IInstantiationService, _languageModelToolsService: ILanguageModelToolsService, _remoteAgentService: IRemoteAgentService, _storageService: IStorageService, _terminalChatService: ITerminalChatService, _logService: ITerminalLogService, _terminalService: ITerminalService, _workspaceContextService: IWorkspaceContextService, _chatWidgetService: IChatWidgetService);
48
51
  prepareToolInvocation(context: IToolInvocationPreparationContext, token: CancellationToken): Promise<IPreparedToolInvocation | undefined>;
49
52
  invoke(invocation: IToolInvocation, _countTokens: CountTokensCallback, _progress: ToolProgress, token: CancellationToken): Promise<IToolResult>;
50
53
  private _handleTerminalVisibility;