@codingame/monaco-vscode-chat-service-override 22.1.9 → 23.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 (277) hide show
  1. package/index.js +17 -8
  2. package/package.json +43 -40
  3. package/vscode/src/vs/editor/common/diff/documentDiffProvider.d.ts +1 -1
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +6 -6
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +57 -48
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +19 -19
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +1 -1
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +26 -17
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +51 -5
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +2 -2
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +7 -7
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +19 -19
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/{chatClearActions.d.ts → chatNewActions.d.ts} +2 -1
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/{chatClearActions.js → chatNewActions.js} +32 -32
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +9 -9
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +101 -98
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +35 -24
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +43 -25
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +34 -33
  27. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +53 -0
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +154 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +7 -0
  30. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +13 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +44 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +347 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +85 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +250 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +24 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +97 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +290 -231
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +7 -10
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +6 -6
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.d.ts +24 -0
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +113 -0
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +31 -0
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +102 -0
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +646 -0
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +2 -3
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +46 -26
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +17 -4
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +44 -34
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +14 -14
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +25 -6
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +46 -10
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +45 -6
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +30 -10
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +10 -3
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +60 -9
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +117 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -0
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +6 -4
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +60 -55
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +29 -16
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +365 -143
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +2 -3
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +3 -30
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +7 -3
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +58 -22
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +1 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +5 -4
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +3 -3
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +3 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +5 -5
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +6 -18
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.d.ts +1 -3
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +7 -11
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +13 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +38 -33
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +11 -6
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +83 -24
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.d.ts +1 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +91 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +64 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +370 -0
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.d.ts +25 -0
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +56 -0
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +61 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +349 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +43 -0
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +787 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.d.ts +17 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +109 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatManagementEditor.css +122 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +211 -0
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatUsageWidget.css +69 -0
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +21 -20
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +54 -54
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +31 -22
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +16 -6
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +6 -3
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +29 -21
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +5 -2
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +37 -33
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +15 -12
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +96 -131
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +12 -7
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +66 -34
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +5 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +77 -71
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +91 -18
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +458 -138
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +3 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +212 -150
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +96 -89
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +3 -2
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +5 -5
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +3 -4
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +15 -16
  124. package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
  125. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +33 -17
  126. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
  127. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
  128. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.d.ts +27 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +688 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +15 -10
  131. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +126 -135
  132. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +6 -1
  133. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditorController.css +2 -1
  134. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +38 -1
  135. package/vscode/src/vs/workbench/contrib/chat/browser/media/simpleBrowserOverlay.css +14 -14
  136. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.d.ts +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +28 -26
  138. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
  139. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +3 -3
  140. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +9 -6
  141. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +24 -13
  142. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +15 -14
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +25 -23
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +21 -0
  145. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +89 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
  147. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +30 -29
  148. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +10 -19
  149. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +61 -43
  150. package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +7 -4
  151. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +28 -28
  152. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +254 -165
  153. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +4 -4
  154. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +2 -2
  155. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +1 -1
  156. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +4 -6
  157. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +10 -6
  158. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +20 -12
  159. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +13 -17
  160. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +9 -8
  161. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +1 -0
  162. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +51 -21
  163. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +7 -3
  164. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +74 -20
  165. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +11 -6
  166. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -2
  167. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +83 -53
  168. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +2 -1
  169. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +136 -78
  170. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +4 -4
  171. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +18 -10
  172. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +357 -157
  173. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  174. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +55 -28
  175. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +235 -108
  176. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +12 -2
  177. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +50 -4
  178. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +27 -27
  179. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
  180. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
  181. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +3 -1
  182. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +11 -7
  183. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +13 -15
  184. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  185. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +2 -2
  186. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +20 -32
  187. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +63 -140
  188. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +1 -1
  189. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +17 -16
  190. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -1
  191. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  192. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  193. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +3 -0
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +119 -15
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +6 -4
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +47 -0
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +192 -0
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -5
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +21 -16
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +8 -3
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -2
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +18 -27
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +5 -2
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +3 -1
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +1 -1
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -25
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -2
  210. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +18 -27
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +12 -0
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +31 -0
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +3 -0
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +24 -8
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +8 -0
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +1 -1
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +33 -4
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +42 -13
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +14 -21
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +23 -0
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +18 -0
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +227 -0
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +17 -0
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +133 -0
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +36 -0
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +17 -0
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +4 -4
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +5 -1
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +75 -37
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -0
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.d.ts +8 -0
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +71 -0
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +28 -15
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +366 -363
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +18 -18
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +9 -9
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +16 -16
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +19 -0
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +123 -0
  246. package/vscode/src/vs/base/common/yaml.d.ts +0 -74
  247. package/vscode/src/vs/base/common/yaml.js +0 -597
  248. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.d.ts +0 -8
  249. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +0 -239
  250. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +0 -102
  251. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +0 -435
  252. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.d.ts +0 -14
  253. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.js +0 -67
  254. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.d.ts +0 -49
  255. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +0 -380
  256. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/common.d.ts +0 -37
  257. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/common.js +0 -137
  258. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.d.ts +0 -44
  259. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +0 -176
  260. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.d.ts +0 -4
  261. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +0 -206
  262. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.d.ts +0 -7
  263. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +0 -79
  264. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.d.ts +0 -8
  265. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +0 -145
  266. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.d.ts +0 -65
  267. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +0 -306
  268. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.d.ts +0 -12
  269. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +0 -102
  270. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser.d.ts +0 -97
  271. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/newPromptsParser.js +0 -247
  272. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.d.ts +0 -118
  273. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +0 -10
  274. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +0 -10
  275. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +0 -55
  276. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -2
  277. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +0 -66
@@ -0,0 +1,787 @@
1
+
2
+ import { registerCss } from '@codingame/monaco-vscode-api/css';
3
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
4
+ import * as chatModelsWidget from './media/chatModelsWidget.css';
5
+ import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
+ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
7
+ import { $ as $$1, addDisposableListener, EventType, append, clearNode, getTotalWidth, Dimension } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
8
+ import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
9
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
10
+ import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
11
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
+ import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
13
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
14
+ import { WorkbenchTable } from '@codingame/monaco-vscode-api/vscode/vs/platform/list/browser/listService';
15
+ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
16
+ import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
17
+ import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
18
+ import { IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service';
19
+ import { Action, Separator, toAction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
20
+ import { ActionBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar';
21
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
22
+ import { isVendorEntry, ChatModelsViewModel, SEARCH_SUGGESTIONS } from './chatModelsViewModel.js';
23
+ import { HighlightedLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
24
+ import { SuggestEnabledInput } from '@codingame/monaco-vscode-3692fc2f-920d-56ed-accd-d988be683cc3-common/vscode/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput';
25
+ import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
26
+ import { settingsTextInputBorder } from '@codingame/monaco-vscode-02fe61a6-05e4-5021-8c27-16e910b9182c-common/vscode/vs/workbench/contrib/preferences/common/settingsEditorColorRegistry';
27
+ import { ChatEntitlement } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService';
28
+ import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service';
29
+ import { DropdownMenuActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/dropdown/dropdownActionViewItem';
30
+ import { AnchorAlignment } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/contextview/contextview';
31
+ import { ToolBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/toolbar/toolbar';
32
+ import { preferencesClearInputIcon } from '@codingame/monaco-vscode-2808e692-5fb9-54bf-bc21-1d3bff81e651-common/vscode/vs/workbench/contrib/preferences/browser/preferencesIcons';
33
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
34
+ import { IEditorProgressService } from '@codingame/monaco-vscode-api/vscode/vs/platform/progress/common/progress.service';
35
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
36
+ import { CONTEXT_MODELS_SEARCH_FOCUS } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
37
+
38
+ var GutterColumnRenderer_1, ModelNameColumnRenderer_1, TokenLimitsColumnRenderer_1, ActionsColumnRenderer_1, ChatModelsWidget_1;
39
+ registerCss(chatModelsWidget);
40
+ const $ = $$1;
41
+ const HEADER_HEIGHT = 30;
42
+ const VENDOR_ROW_HEIGHT = 30;
43
+ const MODEL_ROW_HEIGHT = 26;
44
+ class ModelsFilterAction extends Action {
45
+ constructor() {
46
+ super('workbench.models.filter', ( localize(5283, "Filter")), ThemeIcon.asClassName(Codicon.filter));
47
+ }
48
+ async run() {
49
+ }
50
+ }
51
+ function toggleFilter(currentQuery, query, alternativeQueries = []) {
52
+ const allQueries = [query, ...alternativeQueries];
53
+ const isChecked = ( allQueries.some(q => currentQuery.includes(q)));
54
+ if (!isChecked) {
55
+ const trimmedQuery = currentQuery.trim();
56
+ return trimmedQuery ? `${trimmedQuery} ${query}` : query;
57
+ }
58
+ else {
59
+ let queryWithRemovedFilter = currentQuery;
60
+ for (const q of allQueries) {
61
+ queryWithRemovedFilter = queryWithRemovedFilter.replace(q, '');
62
+ }
63
+ return queryWithRemovedFilter.replace(/\s+/g, ' ').trim();
64
+ }
65
+ }
66
+ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropdownMenuActionViewItem extends DropdownMenuActionViewItem {
67
+ constructor(action, options, searchWidget, viewModel, contextMenuService) {
68
+ super(action, { getActions: () => this.getActions() }, contextMenuService, {
69
+ ...options,
70
+ classNames: action.class,
71
+ anchorAlignmentProvider: () => AnchorAlignment.RIGHT,
72
+ menuAsChild: true
73
+ });
74
+ this.searchWidget = searchWidget;
75
+ this.viewModel = viewModel;
76
+ }
77
+ createProviderAction(vendor, displayName) {
78
+ const query = `@provider:"${displayName}"`;
79
+ const currentQuery = this.searchWidget.getValue();
80
+ const isChecked = currentQuery.includes(query) || currentQuery.includes(`@provider:${vendor}`);
81
+ return {
82
+ id: `provider-${vendor}`,
83
+ label: displayName,
84
+ tooltip: ( localize(5284, "Filter by {0}", displayName)),
85
+ class: undefined,
86
+ enabled: true,
87
+ checked: isChecked,
88
+ run: () => this.toggleFilterAndSearch(query, [`@provider:${vendor}`])
89
+ };
90
+ }
91
+ createCapabilityAction(capability, label) {
92
+ const query = `@capability:${capability}`;
93
+ const currentQuery = this.searchWidget.getValue();
94
+ const isChecked = currentQuery.includes(query);
95
+ return {
96
+ id: `capability-${capability}`,
97
+ label,
98
+ tooltip: ( localize(5285, "Filter by {0}", label)),
99
+ class: undefined,
100
+ enabled: true,
101
+ checked: isChecked,
102
+ run: () => this.toggleFilterAndSearch(query)
103
+ };
104
+ }
105
+ createVisibleAction(visible, label) {
106
+ const query = `@visible:${visible}`;
107
+ const oppositeQuery = `@visible:${!visible}`;
108
+ const currentQuery = this.searchWidget.getValue();
109
+ const isChecked = currentQuery.includes(query);
110
+ return {
111
+ id: `visible-${visible}`,
112
+ label,
113
+ tooltip: ( localize(5286, "Filter by {0}", label)),
114
+ class: undefined,
115
+ enabled: true,
116
+ checked: isChecked,
117
+ run: () => this.toggleFilterAndSearch(query, [oppositeQuery])
118
+ };
119
+ }
120
+ toggleFilterAndSearch(query, alternativeQueries = []) {
121
+ const currentQuery = this.searchWidget.getValue();
122
+ const newQuery = toggleFilter(currentQuery, query, alternativeQueries);
123
+ this.searchWidget.setValue(newQuery);
124
+ this.searchWidget.focus();
125
+ }
126
+ getActions() {
127
+ const actions = [];
128
+ actions.push(this.createVisibleAction(true, ( localize(5287, 'Visible'))));
129
+ actions.push(this.createVisibleAction(false, ( localize(5288, 'Hidden'))));
130
+ actions.push(( new Separator()));
131
+ actions.push(this.createCapabilityAction('tools', ( localize(5289, 'Tools'))), this.createCapabilityAction('vision', ( localize(5290, 'Vision'))), this.createCapabilityAction('agent', ( localize(5291, 'Agent Mode'))));
132
+ const configuredVendors = this.viewModel.getConfiguredVendors();
133
+ if (configuredVendors.length > 1) {
134
+ actions.push(( new Separator()));
135
+ actions.push(...( configuredVendors.map(
136
+ vendor => this.createProviderAction(vendor.vendorEntry.vendor, vendor.vendorEntry.vendorDisplayName)
137
+ )));
138
+ }
139
+ return actions;
140
+ }
141
+ };
142
+ ModelsSearchFilterDropdownMenuActionViewItem = ( __decorate([
143
+ ( __param(4, IContextMenuService))
144
+ ], ModelsSearchFilterDropdownMenuActionViewItem));
145
+ class Delegate {
146
+ constructor() {
147
+ this.headerRowHeight = HEADER_HEIGHT;
148
+ }
149
+ getHeight(element) {
150
+ return isVendorEntry(element) ? VENDOR_ROW_HEIGHT : MODEL_ROW_HEIGHT;
151
+ }
152
+ }
153
+ class ModelsTableColumnRenderer {
154
+ renderElement(element, index, templateData) {
155
+ templateData.elementDisposables.clear();
156
+ const isVendor = isVendorEntry(element);
157
+ templateData.container.classList.add('models-table-column');
158
+ templateData.container.parentElement.classList.toggle('models-vendor-row', isVendor);
159
+ templateData.container.parentElement.classList.toggle('models-model-row', !isVendor);
160
+ templateData.container.parentElement.classList.toggle('model-hidden', !isVendor && !element.modelEntry.metadata.isUserSelectable);
161
+ if (isVendor) {
162
+ this.renderVendorElement(element, index, templateData);
163
+ }
164
+ else {
165
+ this.renderModelElement(element, index, templateData);
166
+ }
167
+ }
168
+ disposeTemplate(templateData) {
169
+ templateData.elementDisposables.dispose();
170
+ templateData.disposables.dispose();
171
+ }
172
+ }
173
+ let GutterColumnRenderer = class GutterColumnRenderer extends ModelsTableColumnRenderer {
174
+ static { GutterColumnRenderer_1 = this; }
175
+ static { this.TEMPLATE_ID = 'gutter'; }
176
+ constructor(languageModelsService) {
177
+ super();
178
+ this.languageModelsService = languageModelsService;
179
+ this.templateId = GutterColumnRenderer_1.TEMPLATE_ID;
180
+ this._onDidToggleCollapse = ( new Emitter());
181
+ this.onDidToggleCollapse = this._onDidToggleCollapse.event;
182
+ this._onDidChange = ( new Emitter());
183
+ this.onDidChange = this._onDidChange.event;
184
+ }
185
+ renderTemplate(container) {
186
+ const disposables = ( new DisposableStore());
187
+ const elementDisposables = ( new DisposableStore());
188
+ container.classList.add('models-gutter-column');
189
+ const actionBar = disposables.add(( new ActionBar(container)));
190
+ return {
191
+ rowContainer: container.parentElement,
192
+ container,
193
+ actionBar,
194
+ disposables,
195
+ elementDisposables
196
+ };
197
+ }
198
+ renderElement(entry, index, templateData) {
199
+ templateData.actionBar.clear();
200
+ super.renderElement(entry, index, templateData);
201
+ }
202
+ renderVendorElement(entry, index, templateData) {
203
+ templateData.actionBar.push(this.createToggleCollapseAction(entry), { icon: true, label: false });
204
+ if (templateData.rowContainer) {
205
+ templateData.elementDisposables.add(addDisposableListener(templateData.rowContainer, EventType.CLICK, () => this._onDidToggleCollapse.fire(entry.vendorEntry.vendor)));
206
+ }
207
+ }
208
+ createToggleCollapseAction(entry) {
209
+ const label = entry.collapsed ? ( localize(5292, 'Expand')) : ( localize(5293, 'Collapse'));
210
+ return {
211
+ id: 'toggleCollapse',
212
+ label,
213
+ tooltip: label,
214
+ enabled: true,
215
+ class: ThemeIcon.asClassName(entry.collapsed ? Codicon.chevronRight : Codicon.chevronDown),
216
+ run: () => {
217
+ this._onDidToggleCollapse.fire(entry.vendorEntry.vendor);
218
+ }
219
+ };
220
+ }
221
+ renderModelElement(entry, index, templateData) {
222
+ const { modelEntry } = entry;
223
+ const isVisible = modelEntry.metadata.isUserSelectable ?? false;
224
+ const toggleVisibilityAction = toAction({
225
+ id: 'toggleVisibility',
226
+ label: isVisible ? ( localize(5294, 'Hide')) : ( localize(5295, 'Show')),
227
+ class: `model-visibility-toggle ${isVisible ? `${ThemeIcon.asClassName(Codicon.eyeClosed)} model-visible` : `${ThemeIcon.asClassName(Codicon.eye)} model-hidden`}`,
228
+ tooltip: isVisible ? ( localize(5296, 'Hide in the chat model picker')) : ( localize(5297, 'Show in the chat model picker')),
229
+ checked: !isVisible,
230
+ run: async () => {
231
+ const newVisibility = !isVisible;
232
+ this.languageModelsService.updateModelPickerPreference(modelEntry.identifier, newVisibility);
233
+ this._onDidChange.fire();
234
+ }
235
+ });
236
+ templateData.actionBar.push(toggleVisibilityAction, { icon: true, label: false });
237
+ }
238
+ };
239
+ GutterColumnRenderer = GutterColumnRenderer_1 = ( __decorate([
240
+ ( __param(0, ILanguageModelsService))
241
+ ], GutterColumnRenderer));
242
+ let ModelNameColumnRenderer = class ModelNameColumnRenderer extends ModelsTableColumnRenderer {
243
+ static { ModelNameColumnRenderer_1 = this; }
244
+ static { this.TEMPLATE_ID = 'modelName'; }
245
+ constructor(hoverService) {
246
+ super();
247
+ this.hoverService = hoverService;
248
+ this.templateId = ModelNameColumnRenderer_1.TEMPLATE_ID;
249
+ }
250
+ renderTemplate(container) {
251
+ const disposables = ( new DisposableStore());
252
+ const elementDisposables = ( new DisposableStore());
253
+ const nameContainer = append(container, $('.model-name-container'));
254
+ const nameLabel = disposables.add(( new HighlightedLabel(append(nameContainer, $('.model-name')))));
255
+ const statusIcon = append(nameContainer, $('.model-status-icon'));
256
+ const actionBar = disposables.add(( new ActionBar(append(nameContainer, $('.model-name-actions')))));
257
+ return {
258
+ container,
259
+ statusIcon,
260
+ nameLabel,
261
+ actionBar,
262
+ disposables,
263
+ elementDisposables
264
+ };
265
+ }
266
+ renderElement(entry, index, templateData) {
267
+ clearNode(templateData.statusIcon);
268
+ templateData.actionBar.clear();
269
+ super.renderElement(entry, index, templateData);
270
+ }
271
+ renderVendorElement(entry, index, templateData) {
272
+ templateData.nameLabel.set(entry.vendorEntry.vendorDisplayName, undefined);
273
+ }
274
+ renderModelElement(entry, index, templateData) {
275
+ const { modelEntry, modelNameMatches } = entry;
276
+ templateData.statusIcon.className = 'model-status-icon';
277
+ if (modelEntry.metadata.statusIcon) {
278
+ templateData.statusIcon.classList.add(...ThemeIcon.asClassNameArray(modelEntry.metadata.statusIcon));
279
+ templateData.statusIcon.style.display = '';
280
+ }
281
+ else {
282
+ templateData.statusIcon.style.display = 'none';
283
+ }
284
+ templateData.nameLabel.set(modelEntry.metadata.name, modelNameMatches);
285
+ const markdown = ( new MarkdownString('', { isTrusted: true, supportThemeIcons: true }));
286
+ markdown.appendMarkdown(`**${entry.modelEntry.metadata.name}**`);
287
+ if (entry.modelEntry.metadata.id !== entry.modelEntry.metadata.version) {
288
+ markdown.appendMarkdown(`&nbsp;<span style="background-color:#8080802B;">&nbsp;_${entry.modelEntry.metadata.id}@${entry.modelEntry.metadata.version}_&nbsp;</span>`);
289
+ }
290
+ else {
291
+ markdown.appendMarkdown(`&nbsp;<span style="background-color:#8080802B;">&nbsp;_${entry.modelEntry.metadata.id}_&nbsp;</span>`);
292
+ }
293
+ markdown.appendText(`\n`);
294
+ if (entry.modelEntry.metadata.statusIcon && entry.modelEntry.metadata.tooltip) {
295
+ if (entry.modelEntry.metadata.statusIcon) {
296
+ markdown.appendMarkdown(`$(${entry.modelEntry.metadata.statusIcon.id})&nbsp;`);
297
+ }
298
+ markdown.appendMarkdown(`${entry.modelEntry.metadata.tooltip}`);
299
+ markdown.appendText(`\n`);
300
+ }
301
+ if (!entry.modelEntry.metadata.isUserSelectable) {
302
+ markdown.appendMarkdown(`\n\n${( localize(5298, 'This model is hidden in the chat model picker'))}`);
303
+ }
304
+ templateData.elementDisposables.add(this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
305
+ content: markdown,
306
+ appearance: {
307
+ compact: true,
308
+ skipFadeInAnimation: true,
309
+ }
310
+ })));
311
+ }
312
+ };
313
+ ModelNameColumnRenderer = ModelNameColumnRenderer_1 = ( __decorate([
314
+ ( __param(0, IHoverService))
315
+ ], ModelNameColumnRenderer));
316
+ class MultiplierColumnRenderer extends ModelsTableColumnRenderer {
317
+ constructor() {
318
+ super(...arguments);
319
+ this.templateId = MultiplierColumnRenderer.TEMPLATE_ID;
320
+ }
321
+ static { this.TEMPLATE_ID = 'multiplier'; }
322
+ renderTemplate(container) {
323
+ const disposables = ( new DisposableStore());
324
+ const elementDisposables = ( new DisposableStore());
325
+ const multiplierElement = append(container, $('.model-multiplier'));
326
+ return {
327
+ container,
328
+ multiplierElement,
329
+ disposables,
330
+ elementDisposables
331
+ };
332
+ }
333
+ renderVendorElement(entry, index, templateData) {
334
+ templateData.multiplierElement.textContent = '';
335
+ }
336
+ renderModelElement(entry, index, templateData) {
337
+ templateData.multiplierElement.textContent = (entry.modelEntry.metadata.detail && entry.modelEntry.metadata.detail.trim().toLowerCase() !== entry.modelEntry.vendor.trim().toLowerCase()) ? entry.modelEntry.metadata.detail : '-';
338
+ }
339
+ }
340
+ let TokenLimitsColumnRenderer = class TokenLimitsColumnRenderer extends ModelsTableColumnRenderer {
341
+ static { TokenLimitsColumnRenderer_1 = this; }
342
+ static { this.TEMPLATE_ID = 'tokenLimits'; }
343
+ constructor(hoverService) {
344
+ super();
345
+ this.hoverService = hoverService;
346
+ this.templateId = TokenLimitsColumnRenderer_1.TEMPLATE_ID;
347
+ }
348
+ renderTemplate(container) {
349
+ const disposables = ( new DisposableStore());
350
+ const elementDisposables = ( new DisposableStore());
351
+ const tokenLimitsElement = append(container, $('.model-token-limits'));
352
+ return {
353
+ container,
354
+ tokenLimitsElement,
355
+ disposables,
356
+ elementDisposables
357
+ };
358
+ }
359
+ renderElement(entry, index, templateData) {
360
+ clearNode(templateData.tokenLimitsElement);
361
+ super.renderElement(entry, index, templateData);
362
+ }
363
+ renderVendorElement(entry, index, templateData) {
364
+ }
365
+ renderModelElement(entry, index, templateData) {
366
+ const { modelEntry } = entry;
367
+ const markdown = ( new MarkdownString('', { isTrusted: true, supportThemeIcons: true }));
368
+ if (modelEntry.metadata.maxInputTokens || modelEntry.metadata.maxOutputTokens) {
369
+ let addSeparator = false;
370
+ markdown.appendMarkdown(`${( localize(5299, 'Context Size'))}: `);
371
+ if (modelEntry.metadata.maxInputTokens) {
372
+ const inputDiv = append(templateData.tokenLimitsElement, $('.token-limit-item'));
373
+ append(inputDiv, $('span.codicon.codicon-arrow-down'));
374
+ const inputText = append(inputDiv, $('span'));
375
+ inputText.textContent = formatTokenCount(modelEntry.metadata.maxInputTokens);
376
+ markdown.appendMarkdown(`$(arrow-down) ${modelEntry.metadata.maxInputTokens} (${( localize(5300, 'Input'))})`);
377
+ addSeparator = true;
378
+ }
379
+ if (modelEntry.metadata.maxOutputTokens) {
380
+ const outputDiv = append(templateData.tokenLimitsElement, $('.token-limit-item'));
381
+ append(outputDiv, $('span.codicon.codicon-arrow-up'));
382
+ const outputText = append(outputDiv, $('span'));
383
+ outputText.textContent = formatTokenCount(modelEntry.metadata.maxOutputTokens);
384
+ if (addSeparator) {
385
+ markdown.appendText(` | `);
386
+ }
387
+ markdown.appendMarkdown(`$(arrow-up) ${modelEntry.metadata.maxOutputTokens} (${( localize(5301, 'Output'))})`);
388
+ }
389
+ }
390
+ templateData.elementDisposables.add(this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
391
+ content: markdown,
392
+ appearance: {
393
+ compact: true,
394
+ skipFadeInAnimation: true,
395
+ }
396
+ })));
397
+ }
398
+ };
399
+ TokenLimitsColumnRenderer = TokenLimitsColumnRenderer_1 = ( __decorate([
400
+ ( __param(0, IHoverService))
401
+ ], TokenLimitsColumnRenderer));
402
+ class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
403
+ constructor() {
404
+ super(...arguments);
405
+ this.templateId = CapabilitiesColumnRenderer.TEMPLATE_ID;
406
+ this._onDidClickCapability = ( new Emitter());
407
+ this.onDidClickCapability = this._onDidClickCapability.event;
408
+ }
409
+ static { this.TEMPLATE_ID = 'capabilities'; }
410
+ renderTemplate(container) {
411
+ const disposables = ( new DisposableStore());
412
+ const elementDisposables = ( new DisposableStore());
413
+ const metadataRow = append(container, $('.model-metadata'));
414
+ return {
415
+ container,
416
+ metadataRow,
417
+ disposables,
418
+ elementDisposables
419
+ };
420
+ }
421
+ renderElement(entry, index, templateData) {
422
+ clearNode(templateData.metadataRow);
423
+ super.renderElement(entry, index, templateData);
424
+ }
425
+ renderVendorElement(entry, index, templateData) {
426
+ }
427
+ renderModelElement(entry, index, templateData) {
428
+ const { modelEntry, capabilityMatches } = entry;
429
+ if (modelEntry.metadata.capabilities?.toolCalling) {
430
+ templateData.elementDisposables.add(this.createCapabilityButton(templateData.metadataRow, capabilityMatches?.includes('toolCalling') || false, ( localize(5302, 'Tools')), 'tools'));
431
+ }
432
+ if (modelEntry.metadata.capabilities?.vision) {
433
+ templateData.elementDisposables.add(this.createCapabilityButton(templateData.metadataRow, capabilityMatches?.includes('vision') || false, ( localize(5303, 'Vision')), 'vision'));
434
+ }
435
+ }
436
+ createCapabilityButton(container, isActive, label, capability) {
437
+ const disposables = ( new DisposableStore());
438
+ const buttonContainer = append(container, $('.model-badge-container'));
439
+ const button = disposables.add(( new Button(buttonContainer, { secondary: true })));
440
+ button.element.classList.add('model-capability');
441
+ button.element.classList.toggle('active', isActive);
442
+ button.label = label;
443
+ disposables.add(button.onDidClick(() => this._onDidClickCapability.fire(capability)));
444
+ return disposables;
445
+ }
446
+ }
447
+ let ActionsColumnRenderer = class ActionsColumnRenderer extends ModelsTableColumnRenderer {
448
+ static { ActionsColumnRenderer_1 = this; }
449
+ static { this.TEMPLATE_ID = 'actions'; }
450
+ constructor(commandService) {
451
+ super();
452
+ this.commandService = commandService;
453
+ this.templateId = ActionsColumnRenderer_1.TEMPLATE_ID;
454
+ this._onDidChange = ( new Emitter());
455
+ this.onDidChange = this._onDidChange.event;
456
+ }
457
+ renderTemplate(container) {
458
+ const disposables = ( new DisposableStore());
459
+ const elementDisposables = ( new DisposableStore());
460
+ const parent = append(container, $('.actions-column'));
461
+ const actionBar = disposables.add(( new ActionBar(parent)));
462
+ return {
463
+ container,
464
+ actionBar,
465
+ disposables,
466
+ elementDisposables
467
+ };
468
+ }
469
+ renderElement(entry, index, templateData) {
470
+ templateData.actionBar.clear();
471
+ super.renderElement(entry, index, templateData);
472
+ }
473
+ renderVendorElement(entry, index, templateData) {
474
+ if (entry.vendorEntry.managementCommand) {
475
+ const { vendorEntry } = entry;
476
+ const action = toAction({
477
+ id: 'manageVendor',
478
+ label: ( localize(5304, 'Manage {0}...', entry.vendorEntry.vendorDisplayName)),
479
+ class: ThemeIcon.asClassName(Codicon.gear),
480
+ run: async () => {
481
+ await this.commandService.executeCommand(vendorEntry.managementCommand, vendorEntry.vendor);
482
+ this._onDidChange.fire();
483
+ }
484
+ });
485
+ templateData.actionBar.push(action, { icon: true, label: false });
486
+ }
487
+ }
488
+ renderModelElement(entry, index, templateData) {
489
+ }
490
+ };
491
+ ActionsColumnRenderer = ActionsColumnRenderer_1 = ( __decorate([
492
+ ( __param(0, ICommandService))
493
+ ], ActionsColumnRenderer));
494
+ function formatTokenCount(count) {
495
+ if (count >= 1000000) {
496
+ return `${(count / 1000000).toFixed(1)}M`;
497
+ }
498
+ else if (count >= 1000) {
499
+ return `${(count / 1000).toFixed(0)}K`;
500
+ }
501
+ return ( count.toString());
502
+ }
503
+ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
504
+ static { ChatModelsWidget_1 = this; }
505
+ static { this.NUM_INSTANCES = 0; }
506
+ constructor(languageModelsService, instantiationService, extensionService, contextMenuService, chatEntitlementService, editorProgressService, commandService, contextKeyService) {
507
+ super();
508
+ this.languageModelsService = languageModelsService;
509
+ this.instantiationService = instantiationService;
510
+ this.extensionService = extensionService;
511
+ this.contextMenuService = contextMenuService;
512
+ this.chatEntitlementService = chatEntitlementService;
513
+ this.editorProgressService = editorProgressService;
514
+ this.commandService = commandService;
515
+ this.dropdownActions = [];
516
+ this.searchFocusContextKey = CONTEXT_MODELS_SEARCH_FOCUS.bindTo(contextKeyService);
517
+ this.delayedFiltering = ( new Delayer(300));
518
+ this.viewModel = this._register(this.instantiationService.createInstance(ChatModelsViewModel));
519
+ this.element = $$1('.models-widget');
520
+ this.create(this.element);
521
+ const loadingPromise = this.extensionService.whenInstalledExtensionsRegistered().then(async () => {
522
+ await this.viewModel.resolve();
523
+ this.refreshTable();
524
+ });
525
+ this.editorProgressService.showWhile(loadingPromise, 300);
526
+ this._register(this.viewModel.onDidChangeModelEntries(() => this.refreshTable()));
527
+ }
528
+ create(container) {
529
+ const searchAndButtonContainer = append(container, $('.models-search-and-button-container'));
530
+ const placeholder = ( localize(5305, "Type to search..."));
531
+ const searchContainer = append(searchAndButtonContainer, $('.models-search-container'));
532
+ this.searchWidget = this._register(this.instantiationService.createInstance(SuggestEnabledInput, 'chatModelsWidget.searchbox', searchContainer, {
533
+ triggerCharacters: ['@', ':'],
534
+ provideResults: (query) => {
535
+ const queryParts = query.split(/\s/g);
536
+ const lastPart = queryParts[queryParts.length - 1];
537
+ if (lastPart.startsWith('@provider:')) {
538
+ const vendors = this.viewModel.getVendors();
539
+ return ( vendors.map(v => `@provider:"${v.displayName}"`));
540
+ }
541
+ else if (lastPart.startsWith('@capability:')) {
542
+ return SEARCH_SUGGESTIONS.CAPABILITIES;
543
+ }
544
+ else if (lastPart.startsWith('@visible:')) {
545
+ return SEARCH_SUGGESTIONS.VISIBILITY;
546
+ }
547
+ else if (lastPart.startsWith('@')) {
548
+ return SEARCH_SUGGESTIONS.FILTER_TYPES;
549
+ }
550
+ return [];
551
+ }
552
+ }, placeholder, `chatModelsWidget:searchinput:${ChatModelsWidget_1.NUM_INSTANCES++}`, {
553
+ placeholderText: placeholder,
554
+ styleOverrides: {
555
+ inputBorder: settingsTextInputBorder
556
+ },
557
+ focusContextKey: this.searchFocusContextKey,
558
+ }));
559
+ this._register(this.searchWidget.onInputDidChange(() => this.filterModels()));
560
+ const filterAction = this._register(( new ModelsFilterAction()));
561
+ const clearSearchAction = this._register(( new Action('workbench.models.clearSearch', ( localize(5306, "Clear Search")), ThemeIcon.asClassName(preferencesClearInputIcon), false, () => {
562
+ this.searchWidget.setValue('');
563
+ this.searchWidget.focus();
564
+ })));
565
+ this._register(this.searchWidget.onInputDidChange(() => {
566
+ clearSearchAction.enabled = !!this.searchWidget.getValue();
567
+ }));
568
+ this.searchActionsContainer = append(searchContainer, $('.models-search-actions'));
569
+ const actions = [clearSearchAction, filterAction];
570
+ const toolBar = this._register(( new ToolBar(this.searchActionsContainer, this.contextMenuService, {
571
+ actionViewItemProvider: (action, options) => {
572
+ if (action.id === filterAction.id) {
573
+ return this.instantiationService.createInstance(ModelsSearchFilterDropdownMenuActionViewItem, action, options, this.searchWidget, this.viewModel);
574
+ }
575
+ return undefined;
576
+ },
577
+ getKeyBinding: () => undefined
578
+ })));
579
+ toolBar.setActions(actions);
580
+ this.searchWidget.inputWidget.getContainerDomNode().style.paddingRight = `${getTotalWidth(this.searchActionsContainer) + 12}px`;
581
+ this.addButtonContainer = append(searchAndButtonContainer, $('.section-title-actions'));
582
+ const buttonOptions = {
583
+ ...defaultButtonStyles,
584
+ supportIcons: true,
585
+ };
586
+ this.addButton = this._register(( new Button(this.addButtonContainer, buttonOptions)));
587
+ this.addButton.label = `$(${Codicon.add.id}) ${( localize(5307, 'Add Models...'))}`;
588
+ this.addButton.element.classList.add('models-add-model-button');
589
+ this.addButton.enabled = false;
590
+ this._register(this.addButton.onDidClick((e) => {
591
+ if (this.dropdownActions.length > 0) {
592
+ this.contextMenuService.showContextMenu({
593
+ getAnchor: () => this.addButton.element,
594
+ getActions: () => this.dropdownActions,
595
+ });
596
+ }
597
+ }));
598
+ this.tableContainer = append(container, $('.models-table-container'));
599
+ const gutterColumnRenderer = this.instantiationService.createInstance(GutterColumnRenderer);
600
+ const modelNameColumnRenderer = this.instantiationService.createInstance(ModelNameColumnRenderer);
601
+ const costColumnRenderer = this.instantiationService.createInstance(MultiplierColumnRenderer);
602
+ const tokenLimitsColumnRenderer = this.instantiationService.createInstance(TokenLimitsColumnRenderer);
603
+ const capabilitiesColumnRenderer = this.instantiationService.createInstance(CapabilitiesColumnRenderer);
604
+ const actionsColumnRenderer = this.instantiationService.createInstance(ActionsColumnRenderer);
605
+ this._register(gutterColumnRenderer.onDidToggleCollapse(vendorId => {
606
+ this.viewModel.toggleVendorCollapsed(vendorId);
607
+ }));
608
+ this._register(gutterColumnRenderer.onDidChange(e => {
609
+ this.viewModel.resolve().then(() => {
610
+ this.refreshTable();
611
+ });
612
+ }));
613
+ this._register(actionsColumnRenderer.onDidChange(e => {
614
+ this.viewModel.resolve().then(() => {
615
+ this.refreshTable();
616
+ });
617
+ }));
618
+ this._register(capabilitiesColumnRenderer.onDidClickCapability(capability => {
619
+ const currentQuery = this.searchWidget.getValue();
620
+ const query = `@capability:${capability}`;
621
+ const newQuery = toggleFilter(currentQuery, query);
622
+ this.searchWidget.setValue(newQuery);
623
+ this.searchWidget.focus();
624
+ }));
625
+ this.table = this._register(this.instantiationService.createInstance(WorkbenchTable, 'ModelsWidget', this.tableContainer, ( new Delegate()), [
626
+ {
627
+ label: '',
628
+ tooltip: '',
629
+ weight: 0.05,
630
+ minimumWidth: 40,
631
+ maximumWidth: 40,
632
+ templateId: GutterColumnRenderer.TEMPLATE_ID,
633
+ project(row) { return row; }
634
+ },
635
+ {
636
+ label: ( localize(5308, 'Name')),
637
+ tooltip: '',
638
+ weight: 0.40,
639
+ minimumWidth: 200,
640
+ templateId: ModelNameColumnRenderer.TEMPLATE_ID,
641
+ project(row) { return row; }
642
+ },
643
+ {
644
+ label: ( localize(5309, 'Capabilities')),
645
+ tooltip: '',
646
+ weight: 0.30,
647
+ minimumWidth: 180,
648
+ templateId: CapabilitiesColumnRenderer.TEMPLATE_ID,
649
+ project(row) { return row; }
650
+ },
651
+ {
652
+ label: ( localize(5310, 'Context Size')),
653
+ tooltip: '',
654
+ weight: 0.1,
655
+ minimumWidth: 140,
656
+ templateId: TokenLimitsColumnRenderer.TEMPLATE_ID,
657
+ project(row) { return row; }
658
+ },
659
+ {
660
+ label: ( localize(5311, 'Multiplier')),
661
+ tooltip: '',
662
+ weight: 0.1,
663
+ minimumWidth: 60,
664
+ templateId: MultiplierColumnRenderer.TEMPLATE_ID,
665
+ project(row) { return row; }
666
+ },
667
+ {
668
+ label: '',
669
+ tooltip: '',
670
+ weight: 0.05,
671
+ minimumWidth: 64,
672
+ maximumWidth: 64,
673
+ templateId: ActionsColumnRenderer.TEMPLATE_ID,
674
+ project(row) { return row; }
675
+ },
676
+ ], [
677
+ gutterColumnRenderer,
678
+ modelNameColumnRenderer,
679
+ costColumnRenderer,
680
+ tokenLimitsColumnRenderer,
681
+ capabilitiesColumnRenderer,
682
+ actionsColumnRenderer,
683
+ ], {
684
+ identityProvider: { getId: (e) => e.id },
685
+ horizontalScrolling: false,
686
+ accessibilityProvider: {
687
+ getAriaLabel: (e) => {
688
+ if (isVendorEntry(e)) {
689
+ return localize(5312, '{0} provider', e.vendorEntry.vendorDisplayName);
690
+ }
691
+ return localize(
692
+ 5313,
693
+ '{0} from {1}',
694
+ e.modelEntry.metadata.name,
695
+ e.modelEntry.vendorDisplayName
696
+ );
697
+ },
698
+ getWidgetAriaLabel: () => ( localize(5314, 'Language Models'))
699
+ },
700
+ multipleSelectionSupport: false,
701
+ setRowLineHeight: false,
702
+ openOnSingleClick: false,
703
+ alwaysConsumeMouseWheel: false,
704
+ }));
705
+ this._register(this.table.onContextMenu(e => {
706
+ if (!e.element) {
707
+ return;
708
+ }
709
+ const entry = e.element;
710
+ if (isVendorEntry(entry) && entry.vendorEntry.managementCommand) {
711
+ const actions = [
712
+ toAction({
713
+ id: 'manageVendor',
714
+ label: ( localize(5304, 'Manage {0}...', entry.vendorEntry.vendorDisplayName)),
715
+ run: async () => {
716
+ await this.commandService.executeCommand(entry.vendorEntry.managementCommand, entry.vendorEntry.vendor);
717
+ await this.viewModel.resolve();
718
+ this.refreshTable();
719
+ }
720
+ })
721
+ ];
722
+ this.contextMenuService.showContextMenu({
723
+ getAnchor: () => e.anchor,
724
+ getActions: () => actions
725
+ });
726
+ }
727
+ }));
728
+ }
729
+ filterModels() {
730
+ this.delayedFiltering.trigger(() => this.refreshTable());
731
+ }
732
+ async refreshTable() {
733
+ const searchValue = this.searchWidget.getValue();
734
+ const modelItems = this.viewModel.fetch(searchValue);
735
+ const vendors = this.viewModel.getVendors();
736
+ const configuredVendors = ( new Set(( this.viewModel.getConfiguredVendors().map(cv => cv.vendorEntry.vendor))));
737
+ const vendorsWithoutModels = vendors.filter(v => !( configuredVendors.has(v.vendor)));
738
+ this.table.splice(0, this.table.length, modelItems);
739
+ const hasPlan = this.chatEntitlementService.entitlement !== ChatEntitlement.Unknown && this.chatEntitlementService.entitlement !== ChatEntitlement.Available;
740
+ this.addButton.enabled = hasPlan && vendorsWithoutModels.length > 0;
741
+ this.dropdownActions = ( vendorsWithoutModels.map(vendor => toAction({
742
+ id: `enable-${vendor.vendor}`,
743
+ label: vendor.displayName,
744
+ run: async () => {
745
+ await this.enableProvider(vendor.vendor);
746
+ }
747
+ })));
748
+ }
749
+ async enableProvider(vendorId) {
750
+ await this.languageModelsService.selectLanguageModels({ vendor: vendorId }, true);
751
+ await this.viewModel.resolve();
752
+ this.refreshTable();
753
+ }
754
+ layout(height, width) {
755
+ width = width - 24;
756
+ this.searchWidget.layout(new Dimension(width - this.searchActionsContainer.clientWidth - this.addButtonContainer.clientWidth - 8, 22));
757
+ const tableHeight = height - 40;
758
+ this.tableContainer.style.height = `${tableHeight}px`;
759
+ this.table.layout(tableHeight, width);
760
+ }
761
+ focusSearch() {
762
+ this.searchWidget.focus();
763
+ }
764
+ search(filter) {
765
+ this.focusSearch();
766
+ this.searchWidget.setValue(filter);
767
+ }
768
+ clearSearch() {
769
+ this.searchWidget.setValue('');
770
+ }
771
+ async refresh() {
772
+ const refreshPromise = this.viewModel.resolve().then(() => this.refreshTable());
773
+ await this.editorProgressService.showWhile(refreshPromise, 300);
774
+ }
775
+ };
776
+ ChatModelsWidget = ChatModelsWidget_1 = ( __decorate([
777
+ ( __param(0, ILanguageModelsService)),
778
+ ( __param(1, IInstantiationService)),
779
+ ( __param(2, IExtensionService)),
780
+ ( __param(3, IContextMenuService)),
781
+ ( __param(4, IChatEntitlementService)),
782
+ ( __param(5, IEditorProgressService)),
783
+ ( __param(6, ICommandService)),
784
+ ( __param(7, IContextKeyService))
785
+ ], ChatModelsWidget));
786
+
787
+ export { ChatModelsWidget };