@codingame/monaco-vscode-chat-service-override 30.0.0 → 31.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 (377) hide show
  1. package/index.js +21 -3
  2. package/package.json +5 -5
  3. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.d.ts +125 -0
  4. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostProtocolClient.js +393 -0
  5. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.d.ts +65 -0
  6. package/vscode/src/vs/platform/agentHost/browser/remoteAgentHostServiceImpl.js +453 -0
  7. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.d.ts +28 -0
  8. package/vscode/src/vs/platform/agentHost/browser/webSocketClientTransport.js +81 -0
  9. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.d.ts +75 -0
  10. package/vscode/src/vs/platform/agentHost/common/agentHostFileSystemProvider.js +180 -0
  11. package/vscode/src/vs/platform/agentHost/common/agentService.d.ts +202 -51
  12. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.d.ts +182 -0
  13. package/vscode/src/vs/platform/agentHost/common/state/agentSubscription.js +282 -0
  14. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.d.ts +303 -32
  15. package/vscode/src/vs/platform/agentHost/common/state/protocol/commands.js +14 -0
  16. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.d.ts +1 -1
  17. package/vscode/src/vs/platform/agentHost/common/state/protocol/errors.js +9 -0
  18. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.d.ts +30 -0
  19. package/vscode/src/vs/platform/agentHost/common/state/protocol/reducers.js +662 -0
  20. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.d.ts +12 -5
  21. package/vscode/src/vs/platform/agentHost/common/state/sessionActions.js +9 -0
  22. package/vscode/src/vs/platform/agentHost/common/state/sessionCapabilities.d.ts +17 -0
  23. package/vscode/src/vs/platform/agentHost/common/state/sessionCapabilities.js +5 -0
  24. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.d.ts +5 -5
  25. package/vscode/src/vs/platform/agentHost/common/state/sessionProtocol.js +14 -0
  26. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.d.ts +42 -0
  27. package/vscode/src/vs/platform/agentHost/common/state/sessionTransport.js +7 -0
  28. package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.d.ts +118 -0
  29. package/vscode/src/vs/platform/agentPlugins/common/pluginParsers.js +551 -0
  30. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.d.ts +22 -0
  31. package/vscode/src/vs/platform/networkFilter/common/networkFilterService.js +83 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  33. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +16 -16
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +2 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +17 -15
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.d.ts +8 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +113 -9
  42. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +81 -4
  43. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +47 -26
  45. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +15 -10
  46. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  47. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  48. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +14 -14
  49. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +13 -14
  50. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +15 -14
  51. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  52. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.d.ts +5 -0
  53. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +58 -23
  54. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  55. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  56. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.d.ts +2 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/actions/createPluginAction.js +24 -22
  58. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginActions.js +8 -8
  59. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +2 -2
  60. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +2 -2
  61. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +3 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +29 -20
  63. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +16 -16
  64. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectoryResolver.d.ts +9 -0
  65. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionWorkingDirectoryResolver.js +23 -0
  66. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  67. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +2 -2
  68. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +65 -55
  69. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  70. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +4 -4
  73. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +5 -5
  75. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +28 -28
  76. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  77. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  78. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.d.ts +10 -3
  79. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDebugPanel.js +80 -15
  80. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +20 -14
  81. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +30 -15
  82. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.d.ts +131 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationItemSource.js +363 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +31 -76
  85. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +374 -764
  86. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.d.ts +8 -0
  87. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidgetUtils.js +11 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +222 -44
  89. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +20 -11
  90. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +269 -123
  91. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.d.ts +40 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePage.js +40 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.d.ts +26 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWelcomePagePromptLaunchers.js +249 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.d.ts +3 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +3 -0
  98. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.d.ts +4 -3
  99. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.js +5 -17
  100. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.d.ts +14 -1
  101. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +113 -58
  102. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +202 -68
  103. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationWelcomePromptLaunchers.css +246 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +15 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +162 -50
  106. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.d.ts +24 -0
  107. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.js +306 -0
  108. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +581 -257
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.d.ts +15 -1
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +245 -26
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +25 -7
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.d.ts +1 -1
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +3 -5
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +6 -6
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +103 -28
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowLayout.js +3 -2
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.d.ts +11 -1
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +80 -29
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHookContentRenderer.js +17 -17
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +20 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +128 -65
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +11 -11
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +18 -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 +3 -3
  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.d.ts +1 -0
  137. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +11 -1
  138. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  139. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +6 -5
  140. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  141. package/vscode/src/vs/workbench/contrib/chat/browser/chatImageCarouselService.js +1 -1
  142. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +10 -27
  143. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +4 -41
  144. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +4 -310
  145. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.d.ts +0 -12
  146. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +3 -30
  147. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  148. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +1 -0
  149. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +61 -53
  150. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatManagementEditor.css +0 -110
  151. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  152. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +31 -31
  153. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  154. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +46 -34
  155. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +4 -4
  156. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +17 -18
  157. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  158. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +1 -0
  159. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +96 -82
  160. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +2 -1
  161. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +21 -14
  162. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +18 -18
  163. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +1 -1
  164. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +15 -8
  165. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +315 -263
  166. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +14 -14
  167. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/media/chatStatus.css +196 -24
  168. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +56 -17
  169. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.d.ts +2 -2
  170. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +2 -2
  171. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +8 -4
  172. package/vscode/src/vs/workbench/contrib/chat/browser/claudePluginRecommendations.js +2 -2
  173. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  174. package/vscode/src/vs/workbench/contrib/chat/browser/enablementActions.js +4 -4
  175. package/vscode/src/vs/workbench/contrib/chat/browser/enablementStatusWidget.js +2 -2
  176. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.d.ts +18 -0
  178. package/vscode/src/vs/workbench/contrib/chat/browser/pluginGitCommandService.js +31 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +26 -25
  180. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +3 -1
  181. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +48 -57
  182. package/vscode/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.js +6 -6
  183. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  184. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +26 -26
  185. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +2 -2
  186. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +3 -3
  187. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  188. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  189. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  190. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  191. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  192. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  193. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.d.ts +11 -6
  194. package/vscode/src/vs/workbench/contrib/chat/browser/promptsDebugContribution.js +226 -36
  195. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatModelCountTelemetry.d.ts +23 -0
  196. package/vscode/src/vs/workbench/contrib/chat/browser/telemetry/chatModelCountTelemetry.js +82 -0
  197. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +3 -1
  198. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +108 -56
  199. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +24 -24
  200. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +6 -6
  201. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +7 -7
  202. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  203. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +9 -9
  204. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +3 -4
  205. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +9 -16
  206. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +21 -80
  207. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +26 -59
  208. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  209. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +4 -3
  210. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +9 -1
  211. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +2 -1
  212. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +46 -14
  213. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  214. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugEvents.d.ts +40 -0
  215. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugEvents.js +60 -0
  216. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +32 -5
  217. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +152 -26
  218. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +5 -9
  219. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +265 -261
  220. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +28 -2
  221. package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +75 -7
  222. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +9 -1
  223. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +6 -5
  224. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +18 -0
  225. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +32 -4
  226. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +10 -25
  227. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +7 -52
  228. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +58 -466
  229. package/vscode/src/vs/workbench/contrib/chat/common/plugins/workspacePluginSettingsService.js +3 -1
  230. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +36 -18
  231. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +5 -5
  232. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +5 -5
  233. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +12 -12
  234. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +0 -1
  235. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +168 -182
  236. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +49 -29
  237. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +491 -462
  238. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +16 -6
  239. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +18 -12
  240. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.d.ts +24 -4
  241. package/vscode/src/vs/workbench/contrib/chat/common/tools/chatArtifactsService.js +145 -68
  242. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  243. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +2 -2
  244. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
  245. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +25 -25
  246. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  247. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.d.ts +2 -4
  248. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.js +19 -17
  249. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.d.ts +1 -1
  250. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +3 -3
  251. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +5 -17
  252. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +77 -157
  253. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  254. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  255. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  256. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  257. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  258. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  259. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +17 -17
  260. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
  261. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +21 -21
  262. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
  263. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +4 -1
  264. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +29 -7
  265. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +2 -2
  266. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
  267. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +3 -3
  268. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +12 -14
  269. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
  270. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.d.ts +5 -1
  271. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +49 -12
  272. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -4
  273. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +9 -8
  274. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +2 -2
  275. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +13 -8
  276. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.d.ts +53 -0
  277. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sendToTerminalTool.js +319 -0
  278. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +15 -15
  279. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +8 -8
  280. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +15 -15
  281. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
  282. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +2 -2
  283. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.d.ts +21 -0
  284. package/vscode/src/vs/workbench/services/agentHost/common/agentHostFileSystemService.js +35 -0
  285. package/vscode/src/vs/platform/agentHost/common/agentService.service.d.ts +0 -94
  286. package/vscode/src/vs/platform/agentHost/common/state/protocol/action-origin.generated.d.ts +0 -16
  287. package/vscode/src/vs/platform/agentHost/common/state/protocol/actions.d.ts +0 -578
  288. package/vscode/src/vs/platform/agentHost/common/state/protocol/messages.d.ts +0 -206
  289. package/vscode/src/vs/platform/agentHost/common/state/protocol/notifications.d.ts +0 -114
  290. package/vscode/src/vs/platform/agentHost/common/state/protocol/state.d.ts +0 -860
  291. package/vscode/src/vs/platform/agentHost/common/state/sessionState.d.ts +0 -27
  292. package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +0 -58
  293. package/vscode/src/vs/platform/browserElements/common/browserElements.js +0 -16
  294. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +0 -18
  295. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +0 -13
  296. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/media/simpleBrowserOverlay.css +0 -85
  297. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.d.ts +0 -9
  298. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +0 -443
  299. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.d.ts +0 -17
  300. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +0 -132
  301. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatUsageWidget.css +0 -69
  302. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +0 -65
  303. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +0 -66
  304. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.d.ts +0 -8
  305. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +0 -158
  306. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +0 -2
  307. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +0 -41
  308. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +0 -24
  309. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +0 -26
  310. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +0 -142
  311. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +0 -45
  312. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +0 -164
  313. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -50
  314. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +0 -163
  315. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +0 -27
  316. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +0 -142
  317. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +0 -29
  318. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +0 -137
  319. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +0 -40
  320. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +0 -174
  321. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +0 -3
  322. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +0 -39
  323. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +0 -32
  324. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +0 -249
  325. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +0 -41
  326. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +0 -92
  327. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +0 -40
  328. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +0 -209
  329. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.d.ts +0 -12
  330. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +0 -106
  331. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +0 -31
  332. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +0 -392
  333. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +0 -45
  334. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +0 -243
  335. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +0 -52
  336. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +0 -10
  337. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +0 -20
  338. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +0 -310
  339. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +0 -19
  340. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +0 -168
  341. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +0 -8
  342. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +0 -25
  343. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +0 -41
  344. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +0 -19
  345. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +0 -37
  346. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +0 -19
  347. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +0 -37
  348. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +0 -19
  349. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +0 -44
  350. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +0 -13
  351. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +0 -21
  352. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +0 -5
  353. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +0 -27
  354. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +0 -14
  355. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +0 -29
  356. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +0 -8
  357. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +0 -33
  358. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +0 -20
  359. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +0 -8
  360. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +0 -28
  361. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +0 -118
  362. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +0 -1019
  363. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +0 -49
  364. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +0 -23
  365. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +0 -9
  366. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +0 -150
  367. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +0 -1619
  368. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +0 -22
  369. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +0 -41
  370. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +0 -17
  371. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +0 -118
  372. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +0 -12
  373. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.js +0 -17
  374. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +0 -25
  375. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +0 -130
  376. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +0 -122
  377. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +0 -482
@@ -1,1019 +0,0 @@
1
-
2
- import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
- import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
5
- import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
6
- import { Disposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
7
- import { isObject, isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
8
- import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
9
- import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
10
- import { ChatElicitationRequestPart } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatElicitationRequestPart';
11
- import { ChatModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
12
- import { ElicitationState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService';
13
- import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
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';
16
- import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
17
- import { ITaskService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/tasks/common/taskService.service';
18
- import { OutputMonitorState, PollingConsts } from './types.js';
19
- import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
20
- import { TerminalChatAgentToolsSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalChatAgentToolsConfiguration';
21
- import { ITerminalService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal.service';
22
- import { ITerminalLogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal.service';
23
-
24
- let OutputMonitor = class OutputMonitor extends Disposable {
25
- get state() {
26
- return this._state;
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
- }
50
- get pollingResult() {
51
- return this._pollingResult;
52
- }
53
- get outputMonitorTelemetryCounters() {
54
- return this._outputMonitorTelemetryCounters;
55
- }
56
- constructor(
57
- _execution,
58
- _pollFn,
59
- invocationContext,
60
- token,
61
- command,
62
- _languageModelsService,
63
- _taskService,
64
- _chatService,
65
- _chatWidgetService,
66
- _configurationService,
67
- _logService,
68
- _terminalService
69
- ) {
70
- super();
71
- this._execution = _execution;
72
- this._pollFn = _pollFn;
73
- this._languageModelsService = _languageModelsService;
74
- this._taskService = _taskService;
75
- this._chatService = _chatService;
76
- this._chatWidgetService = _chatWidgetService;
77
- this._configurationService = _configurationService;
78
- this._logService = _logService;
79
- this._terminalService = _terminalService;
80
- this._state = OutputMonitorState.PollingForIdle;
81
- this._userInputtedSinceIdleDetected = false;
82
- this._userInputListener = this._register(( new MutableDisposable()));
83
- this._outputMonitorTelemetryCounters = {
84
- inputToolManualAcceptCount: 0,
85
- inputToolManualRejectCount: 0,
86
- inputToolManualChars: 0,
87
- inputToolAutoAcceptCount: 0,
88
- inputToolAutoChars: 0,
89
- inputToolManualShownCount: 0,
90
- inputToolFreeFormInputShownCount: 0,
91
- inputToolFreeFormInputCount: 0
92
- };
93
- this._onDidFinishCommand = this._register(( new Emitter()));
94
- this.onDidFinishCommand = this._onDidFinishCommand.event;
95
- this._sessionResource = invocationContext?.sessionResource;
96
- timeout(0).then(() => {
97
- this._startMonitoring(command, invocationContext, token);
98
- });
99
- }
100
- async _startMonitoring(command, invocationContext, token) {
101
- const pollStartTime = Date.now();
102
- let modelOutputEvalResponse;
103
- let resources;
104
- let output;
105
- let extended = false;
106
- try {
107
- while (!token.isCancellationRequested) {
108
- switch (this._state) {
109
- case OutputMonitorState.PollingForIdle:
110
- {
111
- this._logService.trace(`OutputMonitor: Entering PollingForIdle (extended=${extended})`);
112
- this._state = await this._waitForIdle(this._execution, extended, token);
113
- this._logService.trace(
114
- `OutputMonitor: PollingForIdle completed -> state=${OutputMonitorState[this._state]}`
115
- );
116
- continue;
117
- }
118
- case OutputMonitorState.Timeout:
119
- {
120
- this._logService.trace(`OutputMonitor: Entering Timeout state (extended=${extended})`);
121
- const shouldContinuePolling = await this._handleTimeoutState(command, invocationContext, extended, token);
122
- if (shouldContinuePolling) {
123
- extended = true;
124
- this._state = OutputMonitorState.PollingForIdle;
125
- continue;
126
- } else {
127
- this._promptPart?.hide();
128
- this._promptPart = undefined;
129
- break;
130
- }
131
- }
132
- case OutputMonitorState.Cancelled:
133
- break;
134
- case OutputMonitorState.Idle:
135
- {
136
- this._logService.trace("OutputMonitor: Entering Idle handler");
137
- const idleResult = await this._handleIdleState(token);
138
- if (idleResult.shouldContinuePollling) {
139
- this._logService.trace("OutputMonitor: Idle handler -> continue polling");
140
- this._state = OutputMonitorState.PollingForIdle;
141
- continue;
142
- } else {
143
- this._logService.trace(
144
- `OutputMonitor: Idle handler -> stop polling (hasResources=${!!idleResult.resources}, hasModelEval=${!!idleResult.modelOutputEvalResponse}, outputLen=${idleResult.output?.length ?? 0})`
145
- );
146
- resources = idleResult.resources;
147
- modelOutputEvalResponse = idleResult.modelOutputEvalResponse;
148
- output = idleResult.output;
149
- }
150
- break;
151
- }
152
- }
153
- if (this._state === OutputMonitorState.Idle || this._state === OutputMonitorState.Cancelled || this._state === OutputMonitorState.Timeout) {
154
- break;
155
- }
156
- }
157
- if (token.isCancellationRequested) {
158
- this._state = OutputMonitorState.Cancelled;
159
- }
160
- } finally {
161
- this._logService.trace(
162
- `OutputMonitor: Monitoring finished (state=${OutputMonitorState[this._state]}, duration=${Date.now() - pollStartTime}ms)`
163
- );
164
- this._pollingResult = {
165
- state: this._state,
166
- output: output ?? this._execution.getOutput(),
167
- modelOutputEvalResponse: token.isCancellationRequested ? "Cancelled" : modelOutputEvalResponse,
168
- pollDurationMs: Date.now() - pollStartTime,
169
- resources
170
- };
171
- this._userInputListener.clear();
172
- const promptPart = this._promptPart;
173
- this._promptPart = undefined;
174
- if (promptPart) {
175
- try {
176
- promptPart.hide();
177
- } catch (err) {
178
- this._logService.error("OutputMonitor: Failed to hide prompt", err);
179
- }
180
- }
181
- this._onDidFinishCommand.fire();
182
- }
183
- }
184
- async _handleIdleState(token) {
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
- );
189
- if (detectsNonInteractiveHelpPattern(output)) {
190
- this._logService.trace("OutputMonitor: Idle -> non-interactive help pattern detected, stopping");
191
- return {
192
- shouldContinuePollling: false,
193
- output
194
- };
195
- }
196
- const isTask = this._execution.task !== undefined;
197
- if (isTask && detectsVSCodeTaskFinishMessage(output)) {
198
- this._logService.trace("OutputMonitor: Idle -> VS Code task finish message detected, stopping");
199
- return {
200
- shouldContinuePollling: false,
201
- output
202
- };
203
- }
204
- if (!isTask && detectsGenericPressAnyKeyPattern(output)) {
205
- this._logService.trace("OutputMonitor: Idle -> generic \"press any key\" detected");
206
- const autoReply = this._configurationService.getValue(TerminalChatAgentToolsSettingId.AutoReplyToPrompts) || this._isAutopilotMode();
207
- if (autoReply) {
208
- this._logService.trace(
209
- "OutputMonitor: Auto-reply enabled -> not showing free-form prompt for \"press any key\", stopping"
210
- );
211
- this._cleanupIdleInputListener();
212
- return {
213
- shouldContinuePollling: false,
214
- output
215
- };
216
- }
217
- this._logService.trace("OutputMonitor: Requesting free-form input for \"press any key\"");
218
- const currentMarker = this._execution.instance.registerMarker();
219
- if (currentMarker) {
220
- this._lastPromptMarker = currentMarker;
221
- }
222
- this._cleanupIdleInputListener();
223
- this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
224
- const lastLine = output.trimEnd().split(/\r?\n/).pop() || "";
225
- const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, {
226
- prompt: lastLine,
227
- options: [],
228
- detectedRequestForFreeFormInput: true
229
- }, true );
230
- if (receivedTerminalInput) {
231
- this._logService.trace(
232
- "OutputMonitor: Free-form input received for \"press any key\", continue polling"
233
- );
234
- await timeout(200);
235
- return {
236
- shouldContinuePollling: true
237
- };
238
- } else {
239
- this._logService.trace("OutputMonitor: Free-form input declined for \"press any key\", stopping");
240
- return {
241
- shouldContinuePollling: false
242
- };
243
- }
244
- }
245
- if (this._userInputtedSinceIdleDetected) {
246
- this._logService.trace(
247
- "OutputMonitor: User input detected since idle; skipping prompt and continuing polling"
248
- );
249
- this._cleanupIdleInputListener();
250
- return {
251
- shouldContinuePollling: true
252
- };
253
- }
254
- this._logService.trace("OutputMonitor: Determining user input options via language model");
255
- const confirmationPrompt = await this._determineUserInputOptions(this._execution, token);
256
- this._logService.trace(
257
- `OutputMonitor: Input options result: ${confirmationPrompt ? `prompt=${this._formatLastLineForLog(confirmationPrompt.prompt)}, options=${confirmationPrompt.options.length} ${this._formatOptionsForLog(confirmationPrompt.options)}, freeForm=${!!confirmationPrompt.detectedRequestForFreeFormInput}` : "none"}`
258
- );
259
- if (this._userInputtedSinceIdleDetected) {
260
- this._logService.trace(
261
- "OutputMonitor: User input arrived during input-option analysis; continuing polling"
262
- );
263
- this._cleanupIdleInputListener();
264
- return {
265
- shouldContinuePollling: true
266
- };
267
- }
268
- if (confirmationPrompt?.detectedRequestForFreeFormInput) {
269
- if (this._userInputtedSinceIdleDetected) {
270
- this._logService.trace(
271
- "OutputMonitor: User input arrived before showing free-form prompt; continuing polling"
272
- );
273
- this._cleanupIdleInputListener();
274
- return {
275
- shouldContinuePollling: true
276
- };
277
- }
278
- const autoReply = this._configurationService.getValue(TerminalChatAgentToolsSettingId.AutoReplyToPrompts) || this._isAutopilotMode();
279
- if (autoReply) {
280
- this._logService.trace(
281
- "OutputMonitor: Auto-reply enabled -> not propagating free-form prompt, stopping"
282
- );
283
- this._cleanupIdleInputListener();
284
- return {
285
- shouldContinuePollling: false,
286
- output
287
- };
288
- }
289
- this._cleanupIdleInputListener();
290
- this._outputMonitorTelemetryCounters.inputToolFreeFormInputShownCount++;
291
- this._logService.trace("OutputMonitor: Showing free-form input elicitation");
292
- const receivedTerminalInput = await this._requestFreeFormTerminalInput(token, this._execution, confirmationPrompt);
293
- if (receivedTerminalInput) {
294
- this._logService.trace("OutputMonitor: Free-form input received; continuing polling");
295
- await timeout(200);
296
- return {
297
- shouldContinuePollling: true
298
- };
299
- } else {
300
- this._logService.trace("OutputMonitor: Free-form input declined; stopping");
301
- return {
302
- shouldContinuePollling: false
303
- };
304
- }
305
- }
306
- if (confirmationPrompt?.options.length) {
307
- this._logService.trace(
308
- `OutputMonitor: Showing option-based input flow (options=${confirmationPrompt.options.length})`
309
- );
310
- const suggestedOptionResult = await this._selectAndHandleOption(confirmationPrompt, token);
311
- this._logService.trace(
312
- `OutputMonitor: Suggested option result: ${suggestedOptionResult?.suggestedOption ? "hasSuggestion" : "none"} (autoSent=${!!suggestedOptionResult?.sentToTerminal})`
313
- );
314
- if (suggestedOptionResult?.sentToTerminal) {
315
- this._cleanupIdleInputListener();
316
- return {
317
- shouldContinuePollling: true
318
- };
319
- }
320
- if (this._userInputtedSinceIdleDetected) {
321
- this._logService.trace(
322
- "OutputMonitor: User input arrived during option selection; continuing polling"
323
- );
324
- this._cleanupIdleInputListener();
325
- return {
326
- shouldContinuePollling: true
327
- };
328
- }
329
- this._cleanupIdleInputListener();
330
- this._logService.trace("OutputMonitor: Showing confirmation elicitation for suggested option");
331
- const confirmed = await this._confirmRunInTerminal(
332
- token,
333
- suggestedOptionResult?.suggestedOption ?? confirmationPrompt.options[0],
334
- this._execution,
335
- confirmationPrompt
336
- );
337
- if (confirmed) {
338
- this._logService.trace("OutputMonitor: Option confirmed/sent; continuing polling");
339
- return {
340
- shouldContinuePollling: true
341
- };
342
- } else {
343
- this._logService.trace("OutputMonitor: Option declined; stopping");
344
- this._execution.instance.focus(true);
345
- return {
346
- shouldContinuePollling: false
347
- };
348
- }
349
- }
350
- this._cleanupIdleInputListener();
351
- const custom = await this._pollFn?.(this._execution, token, this._taskService);
352
- this._logService.trace(`OutputMonitor: Custom poller result: ${custom ? "provided" : "none"}`);
353
- const resources = custom?.resources;
354
- const modelOutputEvalResponse = this._pollFn ? undefined : await this._assessOutputForErrors(this._execution.getOutput(), token);
355
- return {
356
- resources,
357
- modelOutputEvalResponse,
358
- shouldContinuePollling: false,
359
- output: custom?.output ?? output
360
- };
361
- }
362
- async _handleTimeoutState(_command, _invocationContext, _extended, _token) {
363
- if (_extended) {
364
- this._logService.info("OutputMonitor: Extended polling timeout reached after 2 minutes");
365
- this._state = OutputMonitorState.Cancelled;
366
- return false;
367
- }
368
- return true;
369
- }
370
- async _waitForIdle(execution, extendedPolling, token) {
371
- const maxWaitMs = extendedPolling ? PollingConsts.ExtendedPollingMaxDuration : PollingConsts.FirstPollingMaxDuration;
372
- const maxInterval = PollingConsts.MaxPollingIntervalDuration;
373
- let currentInterval = PollingConsts.MinPollingDuration;
374
- let waited = 0;
375
- let consecutiveIdleEvents = 0;
376
- let hasReceivedData = false;
377
- const onDataDisposable = execution.instance.onData(_data => {
378
- hasReceivedData = true;
379
- });
380
- try {
381
- while (!token.isCancellationRequested && waited < maxWaitMs) {
382
- const waitTime = Math.min(currentInterval, maxWaitMs - waited);
383
- await timeout(waitTime, token);
384
- waited += waitTime;
385
- currentInterval = Math.min(currentInterval * 2, maxInterval);
386
- const currentOutput = execution.getOutput();
387
- if (detectsNonInteractiveHelpPattern(currentOutput)) {
388
- this._logService.trace(
389
- `OutputMonitor: waitForIdle -> non-interactive help detected (waited=${waited}ms)`
390
- );
391
- this._state = OutputMonitorState.Idle;
392
- this._setupIdleInputListener();
393
- return this._state;
394
- }
395
- const promptResult = detectsInputRequiredPattern(currentOutput);
396
- if (promptResult) {
397
- this._logService.trace(
398
- `OutputMonitor: waitForIdle -> input-required pattern detected (waited=${waited}ms, lastLine=${this._formatLastLineForLog(currentOutput)})`
399
- );
400
- this._state = OutputMonitorState.Idle;
401
- this._setupIdleInputListener();
402
- return this._state;
403
- }
404
- if (hasReceivedData) {
405
- consecutiveIdleEvents = 0;
406
- hasReceivedData = false;
407
- } else {
408
- consecutiveIdleEvents++;
409
- }
410
- const recentlyIdle = consecutiveIdleEvents >= PollingConsts.MinIdleEvents;
411
- const isActive = execution.isActive ? await execution.isActive() : undefined;
412
- this._logService.trace(
413
- `OutputMonitor: waitForIdle check: waited=${waited}ms, recentlyIdle=${recentlyIdle}, isActive=${isActive}`
414
- );
415
- if (recentlyIdle && isActive !== true) {
416
- this._logService.trace(
417
- `OutputMonitor: waitForIdle -> recentlyIdle && !active (waited=${waited}ms, lastLine=${this._formatLastLineForLog(currentOutput)})`
418
- );
419
- this._state = OutputMonitorState.Idle;
420
- this._setupIdleInputListener();
421
- return this._state;
422
- }
423
- }
424
- } finally {
425
- onDataDisposable.dispose();
426
- }
427
- if (token.isCancellationRequested) {
428
- return OutputMonitorState.Cancelled;
429
- }
430
- return OutputMonitorState.Timeout;
431
- }
432
- _setupIdleInputListener() {
433
- this._userInputtedSinceIdleDetected = false;
434
- this._logService.trace("OutputMonitor: Setting up idle input listener");
435
- this._userInputListener.value = this._execution.instance.onDidInputData(() => {
436
- this._userInputtedSinceIdleDetected = true;
437
- this._logService.trace("OutputMonitor: Detected user terminal input while idle");
438
- });
439
- }
440
- _cleanupIdleInputListener() {
441
- this._userInputtedSinceIdleDetected = false;
442
- this._userInputListener.clear();
443
- }
444
- async _assessOutputForErrors(buffer, token) {
445
- const model = await this._getLanguageModel();
446
- if (!model) {
447
- return "No models available";
448
- }
449
- const response = await this._languageModelsService.sendChatRequest(model, undefined, [{
450
- role: ChatMessageRole.User,
451
- content: [{
452
- type: "text",
453
- value: `Evaluate this terminal output to determine if there were errors. If there are errors, return them. Otherwise, return undefined: ${buffer}.`
454
- }]
455
- }], {}, token);
456
- try {
457
- return await getTextResponseFromStream(response);
458
- } catch (err) {
459
- return "Error occurred " + err;
460
- }
461
- }
462
- async _determineUserInputOptions(execution, token) {
463
- if (token.isCancellationRequested) {
464
- this._logService.trace("OutputMonitor: determineUserInputOptions cancelled before start");
465
- return;
466
- }
467
- const model = await this._getLanguageModel();
468
- if (!model) {
469
- this._logService.trace("OutputMonitor: determineUserInputOptions no language model available");
470
- return undefined;
471
- }
472
- const lastLines = execution.getOutput(this._lastPromptMarker).trimEnd().split("\n").slice(-15).join("\n");
473
- this._logService.trace(
474
- `OutputMonitor: determineUserInputOptions analyzing lastLines (len=${lastLines.length})`
475
- );
476
- if (detectsNonInteractiveHelpPattern(lastLines)) {
477
- return undefined;
478
- }
479
- 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.
480
- Examples:
481
- 1. Output: "Do you want to overwrite? (y/n)"
482
- Response: {"prompt": "Do you want to overwrite?", "options": ["y", "n"], "freeFormInput": false}
483
-
484
- 2. Output: "Confirm: [Y] Yes [A] Yes to All [N] No [L] No to All [C] Cancel"
485
- Response: {"prompt": "Confirm", "options": ["Y", "A", "N", "L", "C"], "freeFormInput": false}
486
-
487
- 3. Output: "Accept license terms? (yes/no)"
488
- Response: {"prompt": "Accept license terms?", "options": ["yes", "no"], "freeFormInput": false}
489
-
490
- 4. Output: "Press Enter to continue"
491
- Response: {"prompt": "Press Enter to continue", "options": ["Enter"], "freeFormInput": false}
492
-
493
- 5. Output: "Type Yes to proceed"
494
- Response: {"prompt": "Type Yes to proceed", "options": ["Yes"], "freeFormInput": false}
495
-
496
- 6. Output: "Continue [y/N]"
497
- Response: {"prompt": "Continue", "options": ["y", "N"], "freeFormInput": false}
498
-
499
- 7. Output: "Password:"
500
- Response: {"prompt": "Password:", "freeFormInput": true, "options": [], "input": null}
501
- 8. Output: "press ctrl-c to detach, ctrl-d to kill"
502
- Response: null
503
- 9. Output: "Continue (y/n)? y"
504
- Response: null (the prompt was already answered with 'y')
505
- 10. Output: "Do you want to proceed? (yes/no)\nyes\nProceeding with operation..."
506
- Response: null (the prompt was already answered and there is subsequent output)
507
-
508
- Alternatively, the prompt may request free form input, for example:
509
- 1. Output: "Enter your username:"
510
- Response: {"prompt": "Enter your username:", "freeFormInput": true, "options": [], "input": null}
511
- 2. Output: "Password:"
512
- Response: {"prompt": "Password:", "freeFormInput": true, "options": [], "input": null}
513
- 3. Output: "Press any key to continue..."
514
- Response: {"prompt": "Press any key to continue...", "freeFormInput": true, "options": [], "input": "\\r"}
515
- 4. Output: "Type 'exit' to quit the game."
516
- Response: {"prompt": "Type 'exit' to quit the game.", "freeFormInput": true, "options": [], "input": "exit"}
517
- Now, analyze this output:
518
- ${lastLines}
519
- `;
520
- const response = await this._languageModelsService.sendChatRequest(model, undefined, [{
521
- role: ChatMessageRole.User,
522
- content: [{
523
- type: "text",
524
- value: promptText
525
- }]
526
- }], {}, token);
527
- const responseText = await getTextResponseFromStream(response);
528
- try {
529
- const match = responseText.match(/\{[\s\S]*\}/);
530
- if (match) {
531
- const parsed = JSON.parse(match[0]);
532
- if (isObject(parsed) && Object.hasOwn(parsed, "prompt") && isString(parsed.prompt) && Object.hasOwn(parsed, "options") && Object.hasOwn(parsed, "freeFormInput") && typeof parsed.freeFormInput === "boolean") {
533
- const obj = parsed;
534
- if (this._lastPrompt === obj.prompt) {
535
- this._logService.trace("OutputMonitor: determineUserInputOptions ignoring duplicate prompt");
536
- return;
537
- }
538
- if (obj.freeFormInput === true) {
539
- const suggestedInput = isString(obj.input) && obj.input.trim().length ? obj.input.trim() : undefined;
540
- return {
541
- prompt: obj.prompt,
542
- options: [],
543
- detectedRequestForFreeFormInput: true,
544
- suggestedInput
545
- };
546
- }
547
- if (Array.isArray(obj.options) && obj.options.every(isString)) {
548
- return {
549
- prompt: obj.prompt,
550
- options: obj.options,
551
- detectedRequestForFreeFormInput: obj.freeFormInput
552
- };
553
- } else if (isObject(obj.options) && ( Object.values(obj.options)).every(isString)) {
554
- const keys = ( Object.keys(obj.options));
555
- if (keys.length === 0) {
556
- return undefined;
557
- }
558
- const descriptions = ( keys.map(key => obj.options[key]));
559
- return {
560
- prompt: obj.prompt,
561
- options: keys,
562
- descriptions,
563
- detectedRequestForFreeFormInput: obj.freeFormInput
564
- };
565
- }
566
- }
567
- }
568
- } catch (err) {
569
- this._logService.trace(
570
- "OutputMonitor: Failed to parse confirmation prompt from language model response",
571
- err
572
- );
573
- }
574
- return undefined;
575
- }
576
- _isSensitivePrompt(prompt) {
577
- return /(password|passphrase|token|api\s*key|secret)/i.test(prompt);
578
- }
579
- _isAutopilotMode() {
580
- if (!this._sessionResource) {
581
- return false;
582
- }
583
- const widget = this._chatWidgetService.getWidgetBySessionResource(this._sessionResource) ?? this._chatWidgetService.lastFocusedWidget;
584
- if (widget?.input.currentModeInfo.permissionLevel === ChatPermissionLevel.Autopilot) {
585
- return true;
586
- }
587
- const model = this._chatService.getSession(this._sessionResource);
588
- const request = model?.getRequests().at(-1);
589
- return request?.modeInfo?.permissionLevel === ChatPermissionLevel.Autopilot;
590
- }
591
- async _selectAndHandleOption(confirmationPrompt, token) {
592
- if (!confirmationPrompt?.options.length) {
593
- return undefined;
594
- }
595
- const autoReply = this._configurationService.getValue(TerminalChatAgentToolsSettingId.AutoReplyToPrompts) || this._isAutopilotMode();
596
- let model = this._chatWidgetService.getWidgetsByLocations(ChatAgentLocation.Chat)[0]?.input.currentLanguageModel;
597
- if (model) {
598
- const models = await this._safeSelectLanguageModels({
599
- vendor: "copilot",
600
- family: model.replaceAll("copilot/", "")
601
- });
602
- model = models[0];
603
- }
604
- if (!model) {
605
- model = await this._getLanguageModel();
606
- }
607
- const prompt = confirmationPrompt.prompt;
608
- const options = confirmationPrompt.options;
609
- const currentMarker = this._execution.instance.registerMarker();
610
- if (!currentMarker) {
611
- return undefined;
612
- }
613
- this._lastPromptMarker = currentMarker;
614
- this._lastPrompt = prompt;
615
- let suggestedOption = "";
616
- if (model) {
617
- try {
618
- 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.`;
619
- const response = await this._languageModelsService.sendChatRequest(model, undefined, [{
620
- role: ChatMessageRole.User,
621
- content: [{
622
- type: "text",
623
- value: promptText
624
- }]
625
- }], {}, token);
626
- suggestedOption = (await getTextResponseFromStream(response)).trim();
627
- } catch (err) {
628
- this._logService.trace("OutputMonitor: Failed to get suggested option from model", err);
629
- }
630
- } else if (!autoReply) {
631
- return undefined;
632
- }
633
- let validOption;
634
- let index;
635
- if (!suggestedOption) {
636
- if (autoReply) {
637
- validOption = options[0];
638
- index = 0;
639
- this._logService.trace(
640
- `OutputMonitor: No LLM suggestion, falling back to first option: ${validOption}`
641
- );
642
- } else {
643
- return;
644
- }
645
- } else {
646
- const match = matchTerminalPromptOption(confirmationPrompt.options, suggestedOption);
647
- if (!match.option || match.index === -1) {
648
- if (autoReply) {
649
- validOption = options[0];
650
- index = 0;
651
- this._logService.trace(
652
- `OutputMonitor: LLM suggestion '${suggestedOption}' didn't match options, falling back to first option: ${validOption}`
653
- );
654
- } else {
655
- return;
656
- }
657
- } else {
658
- validOption = match.option;
659
- index = match.index;
660
- }
661
- }
662
- let sentToTerminal = false;
663
- if (autoReply) {
664
- await this._execution.instance.sendText(validOption, true);
665
- this._outputMonitorTelemetryCounters.inputToolAutoAcceptCount++;
666
- this._outputMonitorTelemetryCounters.inputToolAutoChars += validOption?.length || 0;
667
- sentToTerminal = true;
668
- }
669
- const description = confirmationPrompt.descriptions?.[index];
670
- return description ? {
671
- suggestedOption: {
672
- description,
673
- option: validOption
674
- },
675
- sentToTerminal
676
- } : {
677
- suggestedOption: validOption,
678
- sentToTerminal
679
- };
680
- }
681
- async _requestFreeFormTerminalInput(token, execution, confirmationPrompt, acceptAnyKey = false) {
682
- const focusTerminalSelection = Symbol("focusTerminalSelection");
683
- const {
684
- promise: userPrompt,
685
- part
686
- } = this._createElicitationPart(token, execution.sessionResource, ( new MarkdownString(( localize(13893, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
687
- 13894,
688
- "{0}\nPlease provide the required input to the terminal.\n\n",
689
- confirmationPrompt.prompt
690
- )))), "", ( localize(13895, "Focus terminal")), undefined, () => {
691
- this._showInstance(execution.instance.instanceId);
692
- return focusTerminalSelection;
693
- });
694
- let inputDataDisposable = Disposable.None;
695
- let instanceDisposedDisposable = Disposable.None;
696
- const inputPromise = ( new Promise(resolve => {
697
- let settled = false;
698
- const settle = (value, state) => {
699
- if (settled) {
700
- return;
701
- }
702
- settled = true;
703
- part.hide();
704
- inputDataDisposable.dispose();
705
- instanceDisposedDisposable.dispose();
706
- this._state = state;
707
- resolve(value);
708
- };
709
- inputDataDisposable = this._register(execution.instance.onDidInputData(data => {
710
- if ((acceptAnyKey && data.length > 0) || (!acceptAnyKey && (data === "\r" || data === "\n" || data === "\r\n"))) {
711
- this._outputMonitorTelemetryCounters.inputToolFreeFormInputCount++;
712
- settle(true, OutputMonitorState.PollingForIdle);
713
- }
714
- }));
715
- instanceDisposedDisposable = this._register(execution.instance.onDisposed(() => {
716
- settle(false, OutputMonitorState.Cancelled);
717
- }));
718
- }));
719
- const disposeListeners = () => {
720
- inputDataDisposable.dispose();
721
- instanceDisposedDisposable.dispose();
722
- };
723
- const result = await Promise.race([userPrompt, inputPromise]);
724
- if (result === focusTerminalSelection) {
725
- execution.instance.focus(true);
726
- return await inputPromise;
727
- }
728
- if (result === undefined) {
729
- disposeListeners();
730
- return false;
731
- }
732
- disposeListeners();
733
- return !!result;
734
- }
735
- async _confirmRunInTerminal(token, suggestedOption, execution, confirmationPrompt) {
736
- const suggestedOptionValue = isString(suggestedOption) ? suggestedOption : suggestedOption.option;
737
- const focusTerminalSelection = Symbol("focusTerminalSelection");
738
- let inputDataDisposable = Disposable.None;
739
- let instanceDisposedDisposable = Disposable.None;
740
- const {
741
- promise: userPrompt,
742
- part
743
- } = this._createElicitationPart(token, execution.sessionResource, ( new MarkdownString(( localize(13896, "The terminal is awaiting input.")))), ( new MarkdownString(( localize(
744
- 13897,
745
- "{0}\n Do you want to send `{1}`{2} followed by `Enter` to the terminal?",
746
- confirmationPrompt.prompt,
747
- suggestedOptionValue,
748
- isString(suggestedOption) ? "" : suggestedOption.description ? " (" + suggestedOption.description + ")" : ""
749
- )))), "", ( localize(13898, "Allow")), ( localize(13899, "Focus Terminal")), async value => {
750
- let option = undefined;
751
- if (value === true) {
752
- option = suggestedOptionValue;
753
- } else if (typeof value === "object" && Object.hasOwn(value, "label")) {
754
- option = value.label.split(" (")[0];
755
- }
756
- this._outputMonitorTelemetryCounters.inputToolManualAcceptCount++;
757
- this._outputMonitorTelemetryCounters.inputToolManualChars += option?.length || 0;
758
- return option;
759
- }, () => {
760
- this._showInstance(execution.instance.instanceId);
761
- this._outputMonitorTelemetryCounters.inputToolManualRejectCount++;
762
- return focusTerminalSelection;
763
- }, getMoreActions(suggestedOption, confirmationPrompt));
764
- const inputPromise = ( new Promise(resolve => {
765
- let settled = false;
766
- const settle = (value, state) => {
767
- if (settled) {
768
- return;
769
- }
770
- settled = true;
771
- part.hide();
772
- inputDataDisposable.dispose();
773
- instanceDisposedDisposable.dispose();
774
- this._state = state;
775
- resolve(value);
776
- };
777
- inputDataDisposable = this._register(execution.instance.onDidInputData(() => {
778
- settle(true, OutputMonitorState.PollingForIdle);
779
- }));
780
- instanceDisposedDisposable = this._register(execution.instance.onDisposed(() => {
781
- settle(false, OutputMonitorState.Cancelled);
782
- }));
783
- }));
784
- const disposeListeners = () => {
785
- inputDataDisposable.dispose();
786
- instanceDisposedDisposable.dispose();
787
- };
788
- const optionToRun = await Promise.race([userPrompt, inputPromise]);
789
- if (optionToRun === focusTerminalSelection) {
790
- execution.instance.focus(true);
791
- return await inputPromise;
792
- }
793
- if (optionToRun === true) {
794
- disposeListeners();
795
- return true;
796
- }
797
- if (typeof optionToRun === "string" && optionToRun.length) {
798
- execution.instance.focus(true);
799
- disposeListeners();
800
- await execution.instance.sendText(optionToRun, true);
801
- return optionToRun;
802
- }
803
- disposeListeners();
804
- return optionToRun;
805
- }
806
- _showInstance(instanceId) {
807
- if (!instanceId) {
808
- return;
809
- }
810
- const instance = this._terminalService.getInstanceFromId(instanceId);
811
- if (!instance) {
812
- return;
813
- }
814
- this._terminalService.setActiveInstance(instance);
815
- this._terminalService.revealActiveTerminal(true);
816
- }
817
- _createElicitationPart(
818
- token,
819
- sessionResource,
820
- title,
821
- detail,
822
- subtitle,
823
- acceptLabel,
824
- rejectLabel,
825
- onAccept,
826
- onReject,
827
- moreActions
828
- ) {
829
- const chatModel = sessionResource && this._chatService.getSession(sessionResource);
830
- if (!(chatModel instanceof ChatModel)) {
831
- throw ( new Error("No model"));
832
- }
833
- const request = chatModel.getRequests().at(-1);
834
- if (!request) {
835
- throw ( new Error("No request"));
836
- }
837
- let part;
838
- const promise = ( new Promise(resolve => {
839
- const thePart = part = ( new ChatElicitationRequestPart(title, detail, subtitle, acceptLabel, rejectLabel, async value => {
840
- try {
841
- const r = await (onAccept ? onAccept(value) : undefined);
842
- resolve(r);
843
- if (typeof r === "symbol") {
844
- return ElicitationState.Pending;
845
- }
846
- } catch {
847
- resolve(undefined);
848
- }
849
- thePart.hide();
850
- this._promptPart = undefined;
851
- return ElicitationState.Accepted;
852
- }, async () => {
853
- try {
854
- const r = await (onReject ? onReject() : undefined);
855
- resolve(r);
856
- if (typeof r === "symbol") {
857
- return ElicitationState.Pending;
858
- }
859
- } catch {
860
- resolve(undefined);
861
- }
862
- thePart.hide();
863
- this._promptPart = undefined;
864
- return ElicitationState.Rejected;
865
- },
866
- undefined, moreActions, () => this._outputMonitorTelemetryCounters.inputToolManualShownCount++));
867
- chatModel.acceptResponseProgress(request, thePart);
868
- this._promptPart = thePart;
869
- }));
870
- this._register(token.onCancellationRequested(() => part.hide()));
871
- return {
872
- promise,
873
- part
874
- };
875
- }
876
- async _getLanguageModel() {
877
- const fastModels = await this._safeSelectLanguageModels({
878
- vendor: "copilot",
879
- id: "copilot-fast"
880
- });
881
- if (fastModels.length) {
882
- return fastModels[0];
883
- }
884
- const widget = this._chatWidgetService.lastFocusedWidget ?? this._chatWidgetService.getWidgetsByLocations(ChatAgentLocation.Chat)[0];
885
- const currentModel = widget?.input.currentLanguageModel;
886
- if (currentModel) {
887
- const currentFamilyModels = await this._safeSelectLanguageModels({
888
- vendor: "copilot",
889
- family: currentModel.replaceAll("copilot/", "")
890
- });
891
- if (currentFamilyModels.length) {
892
- return currentFamilyModels[0];
893
- }
894
- }
895
- const copilotModels = await this._safeSelectLanguageModels({
896
- vendor: "copilot"
897
- });
898
- if (copilotModels.length) {
899
- return copilotModels[0];
900
- }
901
- return undefined;
902
- }
903
- async _safeSelectLanguageModels(selector) {
904
- try {
905
- return await this._languageModelsService.selectLanguageModels(selector);
906
- } catch (error) {
907
- this._logService.trace("OutputMonitor: selectLanguageModels failed", {
908
- selector,
909
- error
910
- });
911
- return [];
912
- }
913
- }
914
- };
915
- OutputMonitor = ( __decorate([( __param(5, ILanguageModelsService)), ( __param(6, ITaskService)), ( __param(7, IChatService)), ( __param(8, IChatWidgetService)), ( __param(9, IConfigurationService)), ( __param(10, ITerminalLogService)), ( __param(11, ITerminalService))], OutputMonitor));
916
- function getMoreActions(suggestedOption, confirmationPrompt) {
917
- const moreActions = [];
918
- const moreOptions = confirmationPrompt.options.filter(
919
- a => a !== (isString(suggestedOption) ? suggestedOption : suggestedOption.option)
920
- );
921
- let i = 0;
922
- for (const option of moreOptions) {
923
- const label = option + (confirmationPrompt.descriptions ? " (" + confirmationPrompt.descriptions[i] + ")" : "");
924
- const action = {
925
- label,
926
- tooltip: label,
927
- id: `terminal.poll.send.${option}`,
928
- class: undefined,
929
- enabled: true,
930
- run: async () => {}
931
- };
932
- i++;
933
- moreActions.push(action);
934
- }
935
- return moreActions.length ? moreActions : undefined;
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
- }
977
- function detectsInputRequiredPattern(cursorLine) {
978
- return ([
979
- /\s*(?:\[[^\]]\]\s+[^\[\s][^\[]*\s*)+(?:\(default is\s+"[^"]+"\):)?\s+$/,
980
- /(?:\(|\[)\s*(?:y(?:es)?\s*\/\s*n(?:o)?|n(?:o)?\s*\/\s*y(?:es)?)\s*(?:\]|\))\s+$/i,
981
- /[?:]\s*(?:\(|\[)?\s*y(?:es)?\s*\/\s*n(?:o)?\s*(?:\]|\))?\s+$/i,
982
- /\(y\)\s*$/i,
983
- /:\s*$/,
984
- /\(END\)$/,
985
- /password[:]?$/i,
986
- /\?\s*(?:\([a-z\s]+\))?$/i,
987
- /press a(?:ny)? key/i
988
- ].some(e => e.test(cursorLine)));
989
- }
990
- function detectsNonInteractiveHelpPattern(cursorLine) {
991
- return ([
992
- /press [h?]\s*(?:\+\s*enter)?\s*to (?:show|open|display|get|see)\s*(?:available )?(?:help|commands|options)/i,
993
- /press h\s*(?:or\s*\?)?\s*(?:\+\s*enter)?\s*for (?:help|commands|options)/i,
994
- /press \?\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:help|commands|options|list)/i,
995
- /type\s*[h?]\s*(?:\+\s*enter)?\s*(?:for|to see|to show)\s*(?:help|commands|options)/i,
996
- /hit\s*[h?]\s*(?:\+\s*enter)?\s*(?:for|to see|to show)\s*(?:help|commands|options)/i,
997
- /press o\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:open|launch)(?:\s*(?:the )?(?:app|application|browser)|\s+in\s+(?:the\s+)?browser)?/i,
998
- /press r\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:restart|reload|refresh)(?:\s*(?:the )?(?:server|dev server|service))?/i,
999
- /press q\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:quit|exit|stop)(?:\s*(?:the )?(?:server|app|process))?/i,
1000
- /press u\s*(?:\+\s*enter)?\s*(?:to|for)?\s*(?:show|print|display)\s*(?:the )?(?:server )?urls?/i
1001
- ].some(e => e.test(cursorLine)));
1002
- }
1003
- const taskFinishMessages = [(
1004
- localize(13900, "Terminal will be reused by tasks, press any key to close it.")), ( localize(13901, "Terminal will be reused by tasks, press any key to close it.")), (
1005
- localize(13902, "Press any key to close the terminal.")), ( localize(13903, "Press any key to close the terminal.")), (
1006
- localize(13904, "The terminal will be reused by tasks. Press any key to close."))];
1007
- const normalizedTaskFinishMessages = ( taskFinishMessages.map(msg => msg.replace(/[\s.,:;!?"'`()[\]{}<>\-_/\\]+/g, "").toLowerCase()));
1008
- function detectsVSCodeTaskFinishMessage(cursorLine) {
1009
- const compact = cursorLine.replace(/[\s.,:;!?"'`()[\]{}<>\-_/\\]+/g, "").toLowerCase();
1010
- return ( normalizedTaskFinishMessages.some(msg => compact.includes(msg)));
1011
- }
1012
- function detectsGenericPressAnyKeyPattern(cursorLine) {
1013
- if (detectsVSCodeTaskFinishMessage(cursorLine)) {
1014
- return false;
1015
- }
1016
- return /press a(?:ny)? key/i.test(cursorLine);
1017
- }
1018
-
1019
- export { OutputMonitor, detectsGenericPressAnyKeyPattern, detectsInputRequiredPattern, detectsNonInteractiveHelpPattern, detectsVSCodeTaskFinishMessage, matchTerminalPromptOption };