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