@codingame/monaco-vscode-chat-service-override 26.2.2 → 28.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 (356) hide show
  1. package/index.js +35 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +15 -0
  4. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.d.ts +53 -0
  5. package/vscode/src/vs/sessions/contrib/agentFeedback/browser/agentFeedbackService.js +219 -0
  6. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +89 -0
  7. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +251 -0
  8. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.d.ts +123 -0
  9. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +278 -0
  10. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +76 -0
  11. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +299 -0
  12. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +67 -0
  13. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +263 -0
  14. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +85 -0
  15. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +397 -0
  16. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -2
  17. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +27 -40
  18. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +9 -3
  19. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +74 -18
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +1 -0
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +54 -8
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +87 -53
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +71 -15
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +43 -21
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +13 -5
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +22 -3
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.d.ts +1 -0
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +154 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +6 -8
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +53 -43
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.d.ts +4 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +85 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.d.ts +8 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +33 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +18 -32
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  42. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +13 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -17
  44. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +49 -13
  45. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +58 -0
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +537 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.d.ts +17 -0
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +55 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +26 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.js +9 -0
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/media/agentPluginEditor.css +32 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +48 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +282 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +55 -0
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +634 -0
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +10 -11
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +74 -67
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.d.ts +7 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +27 -18
  61. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.d.ts +1 -0
  62. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +4 -2
  63. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -5
  65. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +2 -0
  66. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +90 -51
  67. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +20 -5
  68. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +3 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +43 -27
  70. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +7 -2
  71. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +3 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +84 -22
  73. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  74. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/{localAgentSessionsProvider.d.ts → localAgentSessionsController.d.ts} +7 -4
  75. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/{localAgentSessionsProvider.js → localAgentSessionsController.js} +24 -17
  76. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +23 -0
  77. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +171 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +52 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +20 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +179 -0
  81. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +987 -0
  82. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.d.ts +1 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +246 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +56 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +26 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +130 -0
  87. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +878 -0
  88. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.d.ts +22 -0
  89. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +38 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +1 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +83 -0
  92. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.d.ts +45 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +165 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +75 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +692 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +936 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +62 -0
  98. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +702 -0
  99. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.d.ts +2 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +30 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgetRegistry.d.ts +32 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgetRegistry.js +26 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +36 -26
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +622 -391
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +18 -0
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +419 -0
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.d.ts +12 -0
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugCollapsible.js +46 -0
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.d.ts +34 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +198 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +55 -0
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +314 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.d.ts +23 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +64 -0
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.d.ts +5 -0
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +84 -0
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.d.ts +27 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +110 -0
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +46 -0
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +170 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.d.ts +71 -0
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +611 -0
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.d.ts +125 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +504 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.d.ts +10 -0
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.js +914 -0
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +19 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +128 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +61 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +467 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.d.ts +31 -0
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +113 -0
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.d.ts +14 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +126 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.d.ts +38 -0
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +279 -0
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.d.ts +18 -0
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +122 -0
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +47 -0
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.js +85 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +788 -0
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -5
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +32 -36
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +6 -24
  146. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  147. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  148. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  149. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  150. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +3 -3
  151. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +2 -1
  152. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +2 -2
  153. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  154. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +12 -12
  155. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
  156. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +16 -15
  157. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  158. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  159. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +63 -76
  160. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +26 -15
  161. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatManagementEditor.css +2 -2
  162. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  163. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  164. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +24 -7
  165. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +40 -413
  166. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +10 -0
  167. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +38 -6
  168. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +5 -1
  169. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +56 -46
  170. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +15 -11
  171. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.d.ts +52 -0
  172. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +138 -0
  173. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +11 -1
  174. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +166 -41
  175. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +6 -0
  176. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +37 -23
  177. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +17 -0
  178. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +394 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +118 -63
  181. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  182. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +28 -0
  183. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +66 -0
  184. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +245 -0
  185. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.d.ts +78 -0
  186. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.js +234 -0
  187. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +88 -14
  188. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +624 -68
  189. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.d.ts +41 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.js +22 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +5 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +88 -24
  193. package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +28 -19
  194. package/vscode/src/vs/workbench/contrib/chat/browser/createSlashCommandsUsageTracker.d.ts +14 -0
  195. package/vscode/src/vs/workbench/contrib/chat/browser/createSlashCommandsUsageTracker.js +62 -0
  196. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.d.ts +36 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +110 -0
  198. package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.d.ts +10 -0
  199. package/vscode/src/vs/workbench/contrib/chat/browser/exploreAgentDefaultModel.js +39 -0
  200. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +3 -3
  201. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +6 -6
  202. package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.d.ts +10 -0
  203. package/vscode/src/vs/workbench/contrib/chat/browser/planAgentDefaultModel.js +39 -0
  204. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +26 -0
  205. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +175 -0
  206. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +99 -0
  207. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +489 -0
  208. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  209. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +19 -1
  210. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +364 -279
  211. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +18 -1
  212. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +69 -6
  213. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  214. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +9 -9
  215. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  216. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.d.ts +4 -0
  217. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +8 -8
  218. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  219. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
  220. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +4 -4
  221. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.d.ts +22 -0
  222. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +76 -0
  223. package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.d.ts +5 -0
  224. package/vscode/src/vs/workbench/contrib/chat/browser/sessionResourceMatching.js +30 -0
  225. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +2 -0
  226. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +67 -38
  227. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +20 -1
  228. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +187 -74
  229. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.d.ts +31 -0
  230. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +242 -0
  231. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.d.ts +34 -0
  232. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolHelpers.js +45 -0
  233. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  234. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.d.ts +33 -0
  235. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +311 -0
  236. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  237. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.d.ts +4 -0
  238. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +10 -1
  239. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +2 -0
  240. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +29 -14
  241. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +8 -9
  242. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +126 -30
  243. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +9 -5
  244. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  245. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +2 -2
  246. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.d.ts +15 -4
  247. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +46 -9
  248. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +8 -1
  249. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +65 -37
  250. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +6 -5
  251. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +16 -20
  252. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +15 -6
  253. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +40 -0
  254. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +28 -0
  255. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.d.ts +190 -0
  256. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugService.js +11 -0
  257. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +44 -0
  258. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +208 -0
  259. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +19 -9
  260. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +261 -105
  261. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +21 -2
  262. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +7 -2
  263. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -6
  264. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +16 -8
  265. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +13 -4
  266. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +144 -11
  267. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +36 -3
  268. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +5 -3
  269. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +2 -2
  270. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +57 -0
  271. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.js +29 -0
  272. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +119 -0
  273. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +748 -0
  274. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +146 -0
  275. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +672 -0
  276. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +35 -16
  277. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +3 -16
  278. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +7 -50
  279. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +2 -1
  280. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +2 -2
  281. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +1 -6
  282. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +4 -8
  283. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +2 -2
  284. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +10 -9
  285. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
  286. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +26 -1
  287. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +293 -94
  288. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +10 -1
  289. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +86 -30
  290. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +121 -0
  291. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +1422 -0
  292. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  293. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +48 -14
  294. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +404 -132
  295. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +17 -2
  296. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +40 -28
  297. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +3 -0
  298. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +13 -0
  299. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  300. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +14 -2
  301. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +54 -5
  302. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +12 -5
  303. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +27 -4
  304. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +265 -25
  305. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +6 -11
  306. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +18 -81
  307. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +2 -3
  308. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +10 -10
  309. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  310. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  311. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  312. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +6 -6
  313. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  314. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  315. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/media/terminalChatWidget.css +6 -2
  316. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  317. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +35 -26
  318. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +0 -1
  319. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +1 -5
  320. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +3 -3
  321. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  322. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +4 -1
  323. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +13 -11
  324. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
  325. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +3 -1
  326. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  327. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  328. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  329. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  330. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  331. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  332. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  333. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  334. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +17 -0
  335. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +302 -69
  336. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +3 -1
  337. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +8 -0
  338. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -10
  339. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +7 -0
  340. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +63 -21
  341. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +8 -0
  342. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +31 -0
  343. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  344. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  345. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  346. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  347. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +7 -1
  348. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +46 -17
  349. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +0 -72
  350. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +0 -587
  351. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.d.ts +0 -12
  352. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +0 -51
  353. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +0 -71
  354. package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +0 -293
  355. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +0 -2
  356. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +0 -31
@@ -6,28 +6,47 @@ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/comm
6
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
- import { ExtensionIdentifier } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
10
9
  import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
11
10
  import { ChatElicitationRequestPart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatElicitationRequestPart';
12
11
  import { ChatModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
13
12
  import { ElicitationState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
14
13
  import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
15
- import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
16
- import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
14
+ import { ChatPermissionLevel, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
15
+ import { ChatMessageRole, getTextResponseFromStream } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
17
16
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
18
17
  import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
19
18
  import { OutputMonitorState, PollingConsts } from './types.js';
20
- import { getTextResponseFromStream } from './utils.js';
21
19
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
22
20
  import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
23
21
  import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
24
- import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
25
22
  import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
26
23
 
27
24
  let OutputMonitor = class OutputMonitor extends Disposable {
28
25
  get state() {
29
26
  return this._state;
30
27
  }
28
+ _formatLastLineForLog(output) {
29
+ if (!output) {
30
+ return "<empty>";
31
+ }
32
+ const lastLine = output.trimEnd().split(/\r?\n/).pop() ?? "";
33
+ if (!lastLine) {
34
+ return "<empty>";
35
+ }
36
+ if (this._isSensitivePrompt(lastLine)) {
37
+ return "<redacted>";
38
+ }
39
+ return lastLine.length > 200 ? lastLine.slice(0, 200) + "…" : lastLine;
40
+ }
41
+ _formatOptionsForLog(options) {
42
+ if (!options.length) {
43
+ return "[]";
44
+ }
45
+ const maxOptions = 12;
46
+ const shown = ( options.slice(0, maxOptions).map(o => o.replace(/\r?\n/g, "return")));
47
+ const suffix = options.length > maxOptions ? `, …(+${options.length - maxOptions})` : "";
48
+ return `[${shown.join(", ")}${suffix}]`;
49
+ }
31
50
  get pollingResult() {
32
51
  return this._pollingResult;
33
52
  }
@@ -73,6 +92,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
73
92
  };
74
93
  this._onDidFinishCommand = this._register(( new Emitter()));
75
94
  this.onDidFinishCommand = this._onDidFinishCommand.event;
95
+ this._sessionResource = invocationContext?.sessionResource;
76
96
  timeout(0).then(() => {
77
97
  this._startMonitoring(command, invocationContext, token);
78
98
  });
@@ -88,11 +108,16 @@ let OutputMonitor = class OutputMonitor extends Disposable {
88
108
  switch (this._state) {
89
109
  case OutputMonitorState.PollingForIdle:
90
110
  {
111
+ this._logService.trace(`OutputMonitor: Entering PollingForIdle (extended=${extended})`);
91
112
  this._state = await this._waitForIdle(this._execution, extended, token);
113
+ this._logService.trace(
114
+ `OutputMonitor: PollingForIdle completed -> state=${OutputMonitorState[this._state]}`
115
+ );
92
116
  continue;
93
117
  }
94
118
  case OutputMonitorState.Timeout:
95
119
  {
120
+ this._logService.trace(`OutputMonitor: Entering Timeout state (extended=${extended})`);
96
121
  const shouldContinuePolling = await this._handleTimeoutState(command, invocationContext, extended, token);
97
122
  if (shouldContinuePolling) {
98
123
  extended = true;
@@ -108,11 +133,16 @@ let OutputMonitor = class OutputMonitor extends Disposable {
108
133
  break;
109
134
  case OutputMonitorState.Idle:
110
135
  {
136
+ this._logService.trace("OutputMonitor: Entering Idle handler");
111
137
  const idleResult = await this._handleIdleState(token);
112
138
  if (idleResult.shouldContinuePollling) {
139
+ this._logService.trace("OutputMonitor: Idle handler -> continue polling");
113
140
  this._state = OutputMonitorState.PollingForIdle;
114
141
  continue;
115
142
  } else {
143
+ this._logService.trace(
144
+ `OutputMonitor: Idle handler -> stop polling (hasResources=${!!idleResult.resources}, hasModelEval=${!!idleResult.modelOutputEvalResponse}, outputLen=${idleResult.output?.length ?? 0})`
145
+ );
116
146
  resources = idleResult.resources;
117
147
  modelOutputEvalResponse = idleResult.modelOutputEvalResponse;
118
148
  output = idleResult.output;
@@ -128,6 +158,9 @@ let OutputMonitor = class OutputMonitor extends Disposable {
128
158
  this._state = OutputMonitorState.Cancelled;
129
159
  }
130
160
  } finally {
161
+ this._logService.trace(
162
+ `OutputMonitor: Monitoring finished (state=${OutputMonitorState[this._state]}, duration=${Date.now() - pollStartTime}ms)`
163
+ );
131
164
  this._pollingResult = {
132
165
  state: this._state,
133
166
  output: output ?? this._execution.getOutput(),
@@ -150,7 +183,11 @@ let OutputMonitor = class OutputMonitor extends Disposable {
150
183
  }
151
184
  async _handleIdleState(token) {
152
185
  const output = this._execution.getOutput(this._lastPromptMarker);
186
+ this._logService.trace(
187
+ `OutputMonitor: Idle output summary: len=${output.length}, lastLine=${this._formatLastLineForLog(output)}`
188
+ );
153
189
  if (detectsNonInteractiveHelpPattern(output)) {
190
+ this._logService.trace("OutputMonitor: Idle -> non-interactive help pattern detected, stopping");
154
191
  return {
155
192
  shouldContinuePollling: false,
156
193
  output
@@ -159,12 +196,24 @@ let OutputMonitor = class OutputMonitor extends Disposable {
159
196
  const isTask = this._execution.task !== undefined;
160
197
  const isTaskInactive = this._execution.isActive ? !(await this._execution.isActive()) : true;
161
198
  if (isTask && isTaskInactive && detectsVSCodeTaskFinishMessage(output)) {
199
+ this._logService.trace(
200
+ "OutputMonitor: Idle -> VS Code task finish message detected for inactive task, stopping"
201
+ );
162
202
  return {
163
203
  shouldContinuePollling: false,
164
204
  output
165
205
  };
166
206
  }
167
207
  if ((!isTask || !isTaskInactive) && detectsGenericPressAnyKeyPattern(output)) {
208
+ this._logService.trace("OutputMonitor: Idle -> generic \"press any key\" detected");
209
+ if (this._isAutopilotMode()) {
210
+ this._logService.trace("OutputMonitor: Autopilot mode -> auto-replying to \"press any key\"");
211
+ await this._execution.instance.sendText("", true);
212
+ return {
213
+ shouldContinuePollling: true
214
+ };
215
+ }
216
+ this._logService.trace("OutputMonitor: Requesting free-form input for \"press any key\"");
168
217
  const currentMarker = this._execution.instance.registerMarker();
169
218
  if (currentMarker) {
170
219
  this._lastPromptMarker = currentMarker;
@@ -178,24 +227,38 @@ let OutputMonitor = class OutputMonitor extends Disposable {
178
227
  detectedRequestForFreeFormInput: true
179
228
  }, true );
180
229
  if (receivedTerminalInput) {
230
+ this._logService.trace(
231
+ "OutputMonitor: Free-form input received for \"press any key\", continue polling"
232
+ );
181
233
  await timeout(200);
182
234
  return {
183
235
  shouldContinuePollling: true
184
236
  };
185
237
  } else {
238
+ this._logService.trace("OutputMonitor: Free-form input declined for \"press any key\", stopping");
186
239
  return {
187
240
  shouldContinuePollling: false
188
241
  };
189
242
  }
190
243
  }
191
244
  if (this._userInputtedSinceIdleDetected) {
245
+ this._logService.trace(
246
+ "OutputMonitor: User input detected since idle; skipping prompt and continuing polling"
247
+ );
192
248
  this._cleanupIdleInputListener();
193
249
  return {
194
250
  shouldContinuePollling: true
195
251
  };
196
252
  }
253
+ this._logService.trace("OutputMonitor: Determining user input options via language model");
197
254
  const confirmationPrompt = await this._determineUserInputOptions(this._execution, token);
255
+ this._logService.trace(
256
+ `OutputMonitor: Input options result: ${confirmationPrompt ? `prompt=${this._formatLastLineForLog(confirmationPrompt.prompt)}, options=${confirmationPrompt.options.length} ${this._formatOptionsForLog(confirmationPrompt.options)}, freeForm=${!!confirmationPrompt.detectedRequestForFreeFormInput}` : "none"}`
257
+ );
198
258
  if (this._userInputtedSinceIdleDetected) {
259
+ this._logService.trace(
260
+ "OutputMonitor: User input arrived during input-option analysis; continuing polling"
261
+ );
199
262
  this._cleanupIdleInputListener();
200
263
  return {
201
264
  shouldContinuePollling: true
@@ -203,27 +266,53 @@ let OutputMonitor = class OutputMonitor extends Disposable {
203
266
  }
204
267
  if (confirmationPrompt?.detectedRequestForFreeFormInput) {
205
268
  if (this._userInputtedSinceIdleDetected) {
269
+ this._logService.trace(
270
+ "OutputMonitor: User input arrived before showing free-form prompt; continuing polling"
271
+ );
206
272
  this._cleanupIdleInputListener();
207
273
  return {
208
274
  shouldContinuePollling: true
209
275
  };
210
276
  }
277
+ const autoReply = this._configurationService.getValue(TerminalChatAgentToolsSettingId.AutoReplyToPrompts) || this._isAutopilotMode();
278
+ if (autoReply && !this._isSensitivePrompt(confirmationPrompt.prompt)) {
279
+ const explicitInput = confirmationPrompt.suggestedInput ?? this._extractExplicitInputFromPrompt(confirmationPrompt.prompt);
280
+ const normalizedInput = this._normalizeAutoReplyInput(explicitInput);
281
+ if (normalizedInput !== undefined) {
282
+ this._logService.trace("OutputMonitor: Auto-replying to free-form prompt");
283
+ await this._execution.instance.sendText(normalizedInput, true);
284
+ this._outputMonitorTelemetryCounters.inputToolAutoAcceptCount++;
285
+ this._outputMonitorTelemetryCounters.inputToolAutoChars += normalizedInput.length;
286
+ return {
287
+ shouldContinuePollling: true
288
+ };
289
+ }
290
+ }
211
291
  this._cleanupIdleInputListener();
212
292
  this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
293
+ this._logService.trace("OutputMonitor: Showing free-form input elicitation");
213
294
  const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, confirmationPrompt);
214
295
  if (receivedTerminalInput) {
296
+ this._logService.trace("OutputMonitor: Free-form input received; continuing polling");
215
297
  await timeout(200);
216
298
  return {
217
299
  shouldContinuePollling: true
218
300
  };
219
301
  } else {
302
+ this._logService.trace("OutputMonitor: Free-form input declined; stopping");
220
303
  return {
221
304
  shouldContinuePollling: false
222
305
  };
223
306
  }
224
307
  }
225
308
  if (confirmationPrompt?.options.length) {
309
+ this._logService.trace(
310
+ `OutputMonitor: Showing option-based input flow (options=${confirmationPrompt.options.length})`
311
+ );
226
312
  const suggestedOptionResult = await this._selectAndHandleOption(confirmationPrompt, token);
313
+ this._logService.trace(
314
+ `OutputMonitor: Suggested option result: ${suggestedOptionResult?.suggestedOption ? "hasSuggestion" : "none"} (autoSent=${!!suggestedOptionResult?.sentToTerminal})`
315
+ );
227
316
  if (suggestedOptionResult?.sentToTerminal) {
228
317
  this._cleanupIdleInputListener();
229
318
  return {
@@ -231,12 +320,16 @@ let OutputMonitor = class OutputMonitor extends Disposable {
231
320
  };
232
321
  }
233
322
  if (this._userInputtedSinceIdleDetected) {
323
+ this._logService.trace(
324
+ "OutputMonitor: User input arrived during option selection; continuing polling"
325
+ );
234
326
  this._cleanupIdleInputListener();
235
327
  return {
236
328
  shouldContinuePollling: true
237
329
  };
238
330
  }
239
331
  this._cleanupIdleInputListener();
332
+ this._logService.trace("OutputMonitor: Showing confirmation elicitation for suggested option");
240
333
  const confirmed = await this._confirmRunInTerminal(
241
334
  token,
242
335
  suggestedOptionResult?.suggestedOption ?? confirmationPrompt.options[0],
@@ -244,10 +337,12 @@ let OutputMonitor = class OutputMonitor extends Disposable {
244
337
  confirmationPrompt
245
338
  );
246
339
  if (confirmed) {
340
+ this._logService.trace("OutputMonitor: Option confirmed/sent; continuing polling");
247
341
  return {
248
342
  shouldContinuePollling: true
249
343
  };
250
344
  } else {
345
+ this._logService.trace("OutputMonitor: Option declined; stopping");
251
346
  this._execution.instance.focus(true);
252
347
  return {
253
348
  shouldContinuePollling: false
@@ -256,8 +351,9 @@ let OutputMonitor = class OutputMonitor extends Disposable {
256
351
  }
257
352
  this._cleanupIdleInputListener();
258
353
  const custom = await this._pollFn?.(this._execution, token, this._taskService);
354
+ this._logService.trace(`OutputMonitor: Custom poller result: ${custom ? "provided" : "none"}`);
259
355
  const resources = custom?.resources;
260
- const modelOutputEvalResponse = await this._assessOutputForErrors(this._execution.getOutput(), token);
356
+ const modelOutputEvalResponse = this._pollFn ? undefined : await this._assessOutputForErrors(this._execution.getOutput(), token);
261
357
  return {
262
358
  resources,
263
359
  modelOutputEvalResponse,
@@ -291,12 +387,18 @@ let OutputMonitor = class OutputMonitor extends Disposable {
291
387
  currentInterval = Math.min(currentInterval * 2, maxInterval);
292
388
  const currentOutput = execution.getOutput();
293
389
  if (detectsNonInteractiveHelpPattern(currentOutput)) {
390
+ this._logService.trace(
391
+ `OutputMonitor: waitForIdle -> non-interactive help detected (waited=${waited}ms)`
392
+ );
294
393
  this._state = OutputMonitorState.Idle;
295
394
  this._setupIdleInputListener();
296
395
  return this._state;
297
396
  }
298
397
  const promptResult = detectsInputRequiredPattern(currentOutput);
299
398
  if (promptResult) {
399
+ this._logService.trace(
400
+ `OutputMonitor: waitForIdle -> input-required pattern detected (waited=${waited}ms, lastLine=${this._formatLastLineForLog(currentOutput)})`
401
+ );
300
402
  this._state = OutputMonitorState.Idle;
301
403
  this._setupIdleInputListener();
302
404
  return this._state;
@@ -313,6 +415,9 @@ let OutputMonitor = class OutputMonitor extends Disposable {
313
415
  `OutputMonitor: waitForIdle check: waited=${waited}ms, recentlyIdle=${recentlyIdle}, isActive=${isActive}`
314
416
  );
315
417
  if (recentlyIdle && isActive !== true) {
418
+ this._logService.trace(
419
+ `OutputMonitor: waitForIdle -> recentlyIdle && !active (waited=${waited}ms, lastLine=${this._formatLastLineForLog(currentOutput)})`
420
+ );
316
421
  this._state = OutputMonitorState.Idle;
317
422
  this._setupIdleInputListener();
318
423
  return this._state;
@@ -328,8 +433,10 @@ let OutputMonitor = class OutputMonitor extends Disposable {
328
433
  }
329
434
  _setupIdleInputListener() {
330
435
  this._userInputtedSinceIdleDetected = false;
436
+ this._logService.trace("OutputMonitor: Setting up idle input listener");
331
437
  this._userInputListener.value = this._execution.instance.onDidInputData(() => {
332
438
  this._userInputtedSinceIdleDetected = true;
439
+ this._logService.trace("OutputMonitor: Detected user terminal input while idle");
333
440
  });
334
441
  }
335
442
  _cleanupIdleInputListener() {
@@ -341,7 +448,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
341
448
  if (!model) {
342
449
  return "No models available";
343
450
  }
344
- const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier("core")), [{
451
+ const response = await this._languageModelsService.sendChatRequest(model, undefined, [{
345
452
  role: ChatMessageRole.User,
346
453
  content: [{
347
454
  type: "text",
@@ -349,26 +456,29 @@ let OutputMonitor = class OutputMonitor extends Disposable {
349
456
  }]
350
457
  }], {}, token);
351
458
  try {
352
- const responseFromStream = getTextResponseFromStream(response);
353
- await Promise.all([response.result, responseFromStream]);
354
- return await responseFromStream;
459
+ return await getTextResponseFromStream(response);
355
460
  } catch (err) {
356
461
  return "Error occurred " + err;
357
462
  }
358
463
  }
359
464
  async _determineUserInputOptions(execution, token) {
360
465
  if (token.isCancellationRequested) {
466
+ this._logService.trace("OutputMonitor: determineUserInputOptions cancelled before start");
361
467
  return;
362
468
  }
363
469
  const model = await this._getLanguageModel();
364
470
  if (!model) {
471
+ this._logService.trace("OutputMonitor: determineUserInputOptions no language model available");
365
472
  return undefined;
366
473
  }
367
474
  const lastLines = execution.getOutput(this._lastPromptMarker).trimEnd().split("\n").slice(-15).join("\n");
475
+ this._logService.trace(
476
+ `OutputMonitor: determineUserInputOptions analyzing lastLines (len=${lastLines.length})`
477
+ );
368
478
  if (detectsNonInteractiveHelpPattern(lastLines)) {
369
479
  return undefined;
370
480
  }
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.
481
+ 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, return a JSON object with keys 'prompt', 'options', 'freeFormInput': true, and 'input'. The 'input' field should be the exact text to type only when the output explicitly states what to type (for example, Type "exit" to quit). If there is no explicit input, set 'input' to null. For Enter, set 'input' to "\\r". If the option is ambiguous, return null.
372
482
  Examples:
373
483
  1. Output: "Do you want to overwrite? (y/n)"
374
484
  Response: {"prompt": "Do you want to overwrite?", "options": ["y", "n"], "freeFormInput": false}
@@ -389,7 +499,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
389
499
  Response: {"prompt": "Continue", "options": ["y", "N"], "freeFormInput": false}
390
500
 
391
501
  7. Output: "Password:"
392
- Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
502
+ Response: {"prompt": "Password:", "freeFormInput": true, "options": [], "input": null}
393
503
  8. Output: "press ctrl-c to detach, ctrl-d to kill"
394
504
  Response: null
395
505
  9. Output: "Continue (y/n)? y"
@@ -399,15 +509,17 @@ let OutputMonitor = class OutputMonitor extends Disposable {
399
509
 
400
510
  Alternatively, the prompt may request free form input, for example:
401
511
  1. Output: "Enter your username:"
402
- Response: {"prompt": "Enter your username:", "freeFormInput": true, "options": []}
512
+ Response: {"prompt": "Enter your username:", "freeFormInput": true, "options": [], "input": null}
403
513
  2. Output: "Password:"
404
- Response: {"prompt": "Password:", "freeFormInput": true, "options": []}
514
+ Response: {"prompt": "Password:", "freeFormInput": true, "options": [], "input": null}
405
515
  3. Output: "Press any key to continue..."
406
- Response: {"prompt": "Press any key to continue...", "freeFormInput": true, "options": []}
516
+ Response: {"prompt": "Press any key to continue...", "freeFormInput": true, "options": [], "input": "\\r"}
517
+ 4. Output: "Type 'exit' to quit the game."
518
+ Response: {"prompt": "Type 'exit' to quit the game.", "freeFormInput": true, "options": [], "input": "exit"}
407
519
  Now, analyze this output:
408
520
  ${lastLines}
409
521
  `;
410
- const response = await this._languageModelsService.sendChatRequest(model, ( new ExtensionIdentifier("core")), [{
522
+ const response = await this._languageModelsService.sendChatRequest(model, undefined, [{
411
523
  role: ChatMessageRole.User,
412
524
  content: [{
413
525
  type: "text",
@@ -418,16 +530,20 @@ let OutputMonitor = class OutputMonitor extends Disposable {
418
530
  try {
419
531
  const match = responseText.match(/\{[\s\S]*\}/);
420
532
  if (match) {
421
- const obj = JSON.parse(match[0]);
422
- if (isObject(obj) && "prompt" in obj && isString(obj.prompt) && "options" in obj && "options" in obj && "freeFormInput" in obj && typeof obj.freeFormInput === "boolean") {
533
+ const parsed = JSON.parse(match[0]);
534
+ if (isObject(parsed) && Object.hasOwn(parsed, "prompt") && isString(parsed.prompt) && Object.hasOwn(parsed, "options") && Object.hasOwn(parsed, "freeFormInput") && typeof parsed.freeFormInput === "boolean") {
535
+ const obj = parsed;
423
536
  if (this._lastPrompt === obj.prompt) {
537
+ this._logService.trace("OutputMonitor: determineUserInputOptions ignoring duplicate prompt");
424
538
  return;
425
539
  }
426
540
  if (obj.freeFormInput === true) {
541
+ const suggestedInput = isString(obj.input) && obj.input.trim().length ? obj.input.trim() : undefined;
427
542
  return {
428
543
  prompt: obj.prompt,
429
544
  options: [],
430
- detectedRequestForFreeFormInput: true
545
+ detectedRequestForFreeFormInput: true,
546
+ suggestedInput
431
547
  };
432
548
  }
433
549
  if (Array.isArray(obj.options) && obj.options.every(isString)) {
@@ -452,25 +568,73 @@ let OutputMonitor = class OutputMonitor extends Disposable {
452
568
  }
453
569
  }
454
570
  } catch (err) {
455
- console.error("Failed to parse confirmation prompt from language model response:", err);
571
+ this._logService.trace(
572
+ "OutputMonitor: Failed to parse confirmation prompt from language model response",
573
+ err
574
+ );
456
575
  }
457
576
  return undefined;
458
577
  }
459
- async _selectAndHandleOption(confirmationPrompt, token) {
460
- if (!confirmationPrompt?.options.length) {
578
+ _isSensitivePrompt(prompt) {
579
+ return /(password|passphrase|token|api\s*key|secret)/i.test(prompt);
580
+ }
581
+ _isAutopilotMode() {
582
+ if (!this._sessionResource) {
583
+ return false;
584
+ }
585
+ const widget = this._chatWidgetService.getWidgetBySessionResource(this._sessionResource) ?? this._chatWidgetService.lastFocusedWidget;
586
+ if (widget?.input.currentModeInfo.permissionLevel === ChatPermissionLevel.Autopilot) {
587
+ return true;
588
+ }
589
+ const model = this._chatService.getSession(this._sessionResource);
590
+ const request = model?.getRequests().at(-1);
591
+ return request?.modeInfo?.permissionLevel === ChatPermissionLevel.Autopilot;
592
+ }
593
+ _normalizeAutoReplyInput(input) {
594
+ if (!input) {
461
595
  return undefined;
462
596
  }
463
- const model = this._chatWidgetService.getWidgetsByLocations(ChatAgentLocation.Chat)[0]?.input.currentLanguageModel;
464
- if (!model) {
597
+ const trimmed = input.trim();
598
+ if (!trimmed) {
465
599
  return undefined;
466
600
  }
467
- const models = await this._languageModelsService.selectLanguageModels({
468
- vendor: "copilot",
469
- family: model.replaceAll("copilot/", "")
470
- });
471
- if (!models.length) {
601
+ const lowered = trimmed.toLowerCase();
602
+ if (lowered === "\\r" || lowered === "\\n" || lowered === "enter" || lowered === "return") {
603
+ return "";
604
+ }
605
+ return trimmed;
606
+ }
607
+ _extractExplicitInputFromPrompt(prompt) {
608
+ const normalizedPrompt = prompt.trim();
609
+ if (!normalizedPrompt) {
472
610
  return undefined;
473
611
  }
612
+ const directCommandMatch = normalizedPrompt.match(/\b(?:type|enter|input)\s+["'`]([^"'`]+)["'`]/i);
613
+ if (directCommandMatch?.[1]) {
614
+ return directCommandMatch[1];
615
+ }
616
+ const bareCommandMatch = normalizedPrompt.match(/\b(?:type|enter|input)\s+([\w.-]+)\b/i);
617
+ if (bareCommandMatch?.[1]) {
618
+ return bareCommandMatch[1];
619
+ }
620
+ return undefined;
621
+ }
622
+ async _selectAndHandleOption(confirmationPrompt, token) {
623
+ if (!confirmationPrompt?.options.length) {
624
+ return undefined;
625
+ }
626
+ const autoReply = this._configurationService.getValue(TerminalChatAgentToolsSettingId.AutoReplyToPrompts) || this._isAutopilotMode();
627
+ let model = this._chatWidgetService.getWidgetsByLocations(ChatAgentLocation.Chat)[0]?.input.currentLanguageModel;
628
+ if (model) {
629
+ const models = await this._languageModelsService.selectLanguageModels({
630
+ vendor: "copilot",
631
+ family: model.replaceAll("copilot/", "")
632
+ });
633
+ model = models[0];
634
+ }
635
+ if (!model) {
636
+ model = await this._getLanguageModel();
637
+ }
474
638
  const prompt = confirmationPrompt.prompt;
475
639
  const options = confirmationPrompt.options;
476
640
  const currentMarker = this._execution.instance.registerMarker();
@@ -479,26 +643,55 @@ let OutputMonitor = class OutputMonitor extends Disposable {
479
643
  }
480
644
  this._lastPromptMarker = currentMarker;
481
645
  this._lastPrompt = prompt;
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.`;
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);
490
- const suggestedOption = (await getTextResponseFromStream(response)).trim();
491
- if (!suggestedOption) {
492
- return;
646
+ let suggestedOption = "";
647
+ if (model) {
648
+ try {
649
+ 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.`;
650
+ const response = await this._languageModelsService.sendChatRequest(model, undefined, [{
651
+ role: ChatMessageRole.User,
652
+ content: [{
653
+ type: "text",
654
+ value: promptText
655
+ }]
656
+ }], {}, token);
657
+ suggestedOption = (await getTextResponseFromStream(response)).trim();
658
+ } catch (err) {
659
+ this._logService.trace("OutputMonitor: Failed to get suggested option from model", err);
660
+ }
661
+ } else if (!autoReply) {
662
+ return undefined;
493
663
  }
494
- const parsed = suggestedOption.replace(/['"`]/g, "").trim();
495
- const index = confirmationPrompt.options.indexOf(parsed);
496
- const validOption = confirmationPrompt.options.find(opt => parsed === opt.replace(/['"`]/g, "").trim());
497
- if (!validOption || index === -1) {
498
- return;
664
+ let validOption;
665
+ let index;
666
+ if (!suggestedOption) {
667
+ if (autoReply) {
668
+ validOption = options[0];
669
+ index = 0;
670
+ this._logService.trace(
671
+ `OutputMonitor: No LLM suggestion, falling back to first option: ${validOption}`
672
+ );
673
+ } else {
674
+ return;
675
+ }
676
+ } else {
677
+ const match = matchTerminalPromptOption(confirmationPrompt.options, suggestedOption);
678
+ if (!match.option || match.index === -1) {
679
+ if (autoReply) {
680
+ validOption = options[0];
681
+ index = 0;
682
+ this._logService.trace(
683
+ `OutputMonitor: LLM suggestion '${suggestedOption}' didn't match options, falling back to first option: ${validOption}`
684
+ );
685
+ } else {
686
+ return;
687
+ }
688
+ } else {
689
+ validOption = match.option;
690
+ index = match.index;
691
+ }
499
692
  }
500
693
  let sentToTerminal = false;
501
- if (this._configurationService.getValue(TerminalChatAgentToolsSettingId.AutoReplyToPrompts)) {
694
+ if (autoReply) {
502
695
  await this._execution.instance.sendText(validOption, true);
503
696
  this._outputMonitorTelemetryCounters.inputToolAutoAcceptCount++;
504
697
  this._outputMonitorTelemetryCounters.inputToolAutoChars += validOption?.length || 0;
@@ -521,11 +714,11 @@ let OutputMonitor = class OutputMonitor extends Disposable {
521
714
  const {
522
715
  promise: userPrompt,
523
716
  part
524
- } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12569, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
525
- 12570,
717
+ } = this._createElicitationPart(token, execution.sessionResource, ( new MarkdownString(( localize(13580, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
718
+ 13581,
526
719
  "{0}\nPlease provide the required input to the terminal.\n\n",
527
720
  confirmationPrompt.prompt
528
- )))), "", ( localize(12571, "Focus terminal")), undefined, () => {
721
+ )))), "", ( localize(13582, "Focus terminal")), undefined, () => {
529
722
  this._showInstance(execution.instance.instanceId);
530
723
  return focusTerminalSelection;
531
724
  });
@@ -578,17 +771,17 @@ let OutputMonitor = class OutputMonitor extends Disposable {
578
771
  const {
579
772
  promise: userPrompt,
580
773
  part
581
- } = this._createElicitationPart(token, execution.sessionId, ( new MarkdownString(( localize(12572, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
582
- 12573,
774
+ } = this._createElicitationPart(token, execution.sessionResource, ( new MarkdownString(( localize(13583, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
775
+ 13584,
583
776
  "{0}\n Do you want to send `{1}`{2} followed by `Enter` to the terminal?",
584
777
  confirmationPrompt.prompt,
585
778
  suggestedOptionValue,
586
779
  isString(suggestedOption) ? "" : suggestedOption.description ? " (" + suggestedOption.description + ")" : ""
587
- )))), "", ( localize(12574, "Allow")), ( localize(12575, "Focus Terminal")), async value => {
780
+ )))), "", ( localize(13585, "Allow")), ( localize(13586, "Focus Terminal")), async value => {
588
781
  let option = undefined;
589
782
  if (value === true) {
590
783
  option = suggestedOptionValue;
591
- } else if (typeof value === "object" && "label" in value) {
784
+ } else if (typeof value === "object" && Object.hasOwn(value, "label")) {
592
785
  option = value.label.split(" (")[0];
593
786
  }
594
787
  this._outputMonitorTelemetryCounters.inputToolManualAcceptCount++;
@@ -654,7 +847,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
654
847
  }
655
848
  _createElicitationPart(
656
849
  token,
657
- sessionId,
850
+ sessionResource,
658
851
  title,
659
852
  detail,
660
853
  subtitle,
@@ -664,7 +857,7 @@ let OutputMonitor = class OutputMonitor extends Disposable {
664
857
  onReject,
665
858
  moreActions
666
859
  ) {
667
- const chatModel = sessionId && this._chatService.getSession(LocalChatSessionUri.forSession(sessionId));
860
+ const chatModel = sessionResource && this._chatService.getSession(sessionResource);
668
861
  if (!(chatModel instanceof ChatModel)) {
669
862
  throw ( new Error("No model"));
670
863
  }
@@ -675,24 +868,30 @@ let OutputMonitor = class OutputMonitor extends Disposable {
675
868
  let part;
676
869
  const promise = ( new Promise(resolve => {
677
870
  const thePart = part = ( new ChatElicitationRequestPart(title, detail, subtitle, acceptLabel, rejectLabel, async value => {
678
- thePart.hide();
679
- this._promptPart = undefined;
680
871
  try {
681
872
  const r = await (onAccept ? onAccept(value) : undefined);
682
873
  resolve(r);
874
+ if (typeof r === "symbol") {
875
+ return ElicitationState.Pending;
876
+ }
683
877
  } catch {
684
878
  resolve(undefined);
685
879
  }
686
- return ElicitationState.Accepted;
687
- }, async () => {
688
880
  thePart.hide();
689
881
  this._promptPart = undefined;
882
+ return ElicitationState.Accepted;
883
+ }, async () => {
690
884
  try {
691
885
  const r = await (onReject ? onReject() : undefined);
692
886
  resolve(r);
887
+ if (typeof r === "symbol") {
888
+ return ElicitationState.Pending;
889
+ }
693
890
  } catch {
694
891
  resolve(undefined);
695
892
  }
893
+ thePart.hide();
894
+ this._promptPart = undefined;
696
895
  return ElicitationState.Rejected;
697
896
  },
698
897
  undefined, moreActions, () => this._outputMonitorTelemetryCounters.inputToolManualShownCount++));
@@ -706,16 +905,10 @@ let OutputMonitor = class OutputMonitor extends Disposable {
706
905
  };
707
906
  }
708
907
  async _getLanguageModel() {
709
- let models = await this._languageModelsService.selectLanguageModels({
908
+ const models = await this._languageModelsService.selectLanguageModels({
710
909
  vendor: "copilot",
711
910
  id: "copilot-fast"
712
911
  });
713
- if (!models.length) {
714
- models = await this._languageModelsService.selectLanguageModels({
715
- vendor: "copilot",
716
- family: "gpt-4o-mini"
717
- });
718
- }
719
912
  return models.length ? models[0] : undefined;
720
913
  }
721
914
  };
@@ -741,6 +934,46 @@ function getMoreActions(suggestedOption, confirmationPrompt) {
741
934
  }
742
935
  return moreActions.length ? moreActions : undefined;
743
936
  }
937
+ function matchTerminalPromptOption(options, suggestedOption) {
938
+ const normalize = value => value.replace(/['"`]/g, "").trim().replace(/[.,:;]+$/, "");
939
+ const normalizedSuggestion = normalize(suggestedOption);
940
+ if (!normalizedSuggestion) {
941
+ return {
942
+ option: undefined,
943
+ index: -1
944
+ };
945
+ }
946
+ const candidates = [normalizedSuggestion];
947
+ const firstWhitespaceToken = normalizedSuggestion.split(/\s+/)[0];
948
+ if (firstWhitespaceToken && firstWhitespaceToken !== normalizedSuggestion) {
949
+ candidates.push(firstWhitespaceToken);
950
+ }
951
+ const firstAlphaNum = normalizedSuggestion.match(/[A-Za-z0-9]+/);
952
+ if (firstAlphaNum?.[0] && firstAlphaNum[0] !== normalizedSuggestion && firstAlphaNum[0] !== firstWhitespaceToken) {
953
+ candidates.push(firstAlphaNum[0]);
954
+ }
955
+ for (const candidate of candidates) {
956
+ const exactIndex = options.findIndex(opt => normalize(opt) === candidate);
957
+ if (exactIndex !== -1) {
958
+ return {
959
+ option: options[exactIndex],
960
+ index: exactIndex
961
+ };
962
+ }
963
+ const lowerCandidate = candidate.toLowerCase();
964
+ const ciIndex = options.findIndex(opt => normalize(opt).toLowerCase() === lowerCandidate);
965
+ if (ciIndex !== -1) {
966
+ return {
967
+ option: options[ciIndex],
968
+ index: ciIndex
969
+ };
970
+ }
971
+ }
972
+ return {
973
+ option: undefined,
974
+ index: -1
975
+ };
976
+ }
744
977
  function detectsInputRequiredPattern(cursorLine) {
745
978
  return ([
746
979
  /\s*(?:\[[^\]]\]\s+[^\[\s][^\[]*\s*)+(?:\(default is\s+"[^"]+"\):)?\s+$/,
@@ -768,8 +1001,8 @@ function detectsNonInteractiveHelpPattern(cursorLine) {
768
1001
  ].some(e => e.test(cursorLine)));
769
1002
  }
770
1003
  const taskFinishMessages = [(
771
- localize(12576, "Terminal will be reused by tasks, press any key to close it.")), ( localize(12577, "Terminal will be reused by tasks, press any key to close it.")), (
772
- localize(12578, "Press any key to close the terminal.")), ( localize(12579, "Press any key to close the terminal."))];
1004
+ localize(13587, "Terminal will be reused by tasks, press any key to close it.")), ( localize(13588, "Terminal will be reused by tasks, press any key to close it.")), (
1005
+ localize(13589, "Press any key to close the terminal.")), ( localize(13590, "Press any key to close the terminal."))];
773
1006
  function detectsVSCodeTaskFinishMessage(cursorLine) {
774
1007
  const normalized = cursorLine.replace(/\s/g, "").toLowerCase();
775
1008
  return (taskFinishMessages.some(msg => normalized.includes(msg.replace(/\s/g, "").toLowerCase())));
@@ -781,4 +1014,4 @@ function detectsGenericPressAnyKeyPattern(cursorLine) {
781
1014
  return /press a(?:ny)? key/i.test(cursorLine);
782
1015
  }
783
1016
 
784
- export { OutputMonitor, detectsGenericPressAnyKeyPattern, detectsInputRequiredPattern, detectsNonInteractiveHelpPattern, detectsVSCodeTaskFinishMessage };
1017
+ export { OutputMonitor, detectsGenericPressAnyKeyPattern, detectsInputRequiredPattern, detectsNonInteractiveHelpPattern, detectsVSCodeTaskFinishMessage, matchTerminalPromptOption };