@codingame/monaco-vscode-chat-service-override 23.2.2 → 24.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +13 -10
- package/package.json +5 -41
- package/vscode/src/vs/platform/domWidget/browser/domWidget.d.ts +52 -0
- package/vscode/src/vs/platform/domWidget/browser/domWidget.js +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +61 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +152 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +37 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +7 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +12 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +21 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +27 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +6 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +44 -208
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +23 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +140 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +85 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +358 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +222 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +241 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.d.ts +11 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsView.js +67 -230
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +65 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +186 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +140 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsview.css +2 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +115 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +389 -166
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +22 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.d.ts +10 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContextService.js +63 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimeline.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +14 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +173 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +66 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +32 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +8 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +12 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +15 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +13 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +66 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +6 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +15 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +30 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +13 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +20 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +47 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +270 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +310 -170
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +42 -42
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +35 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.d.ts +1 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/chatSessionsView.js +22 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.d.ts +18 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsTreeRenderer.js +80 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.d.ts +2 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/view/sessionsViewPane.js +48 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +16 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +257 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatSetup.d.ts → chatSetup/chatSetupContributions.d.ts} +4 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +622 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +359 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +89 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +667 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +260 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/chatSetup.css +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +21 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.js → chatStatus/chatStatusDashboard.js} +193 -325
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatus.d.ts → chatStatus/chatStatusEntry.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +190 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.d.ts → chatStatus/chatStatusItemService.d.ts} +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatStatus/media}/chatStatus.css +22 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusWidget.js +108 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTerminalOutputAccessibleView.js +34 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +57 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +478 -146
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.d.ts +43 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewTitleControl.js +204 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWidgetService.js +187 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +108 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsConfirmationService.js +37 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +37 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +232 -97
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatusWidget.css +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewPane.css +142 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewTitleControl.css +39 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +51 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +19 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatCodeMapperService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.d.ts +49 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatModelStore.js +100 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +41 -15
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +208 -162
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +15 -7
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +61 -7
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +60 -43
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +27 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +37 -47
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +120 -87
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +49 -42
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +293 -187
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +17 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +43 -9
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +48 -29
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +8 -13
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +36 -41
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminal.chat.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +18 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +142 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +3 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +19 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +78 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.d.ts +7 -11
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +26 -44
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +9 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +23 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +4 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +26 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +32 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +15 -29
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +10 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +38 -19
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +32 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +5 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +4 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +128 -62
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +12 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +68 -22
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +20 -22
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +13 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +20 -19
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +72 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +5 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.d.ts +0 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionViewModel.js +0 -154
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.js +0 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.d.ts +0 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionTracker.js +0 -135
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.d.ts +0 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/localChatSessionsProvider.js +0 -216
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +0 -1617
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.d.ts +0 -44
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +0 -313
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-dark.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/apple-light.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/github.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{media → chatSetup/media}/google.svg +0 -0
- /package/vscode/src/vs/workbench/contrib/chat/browser/{chatStatusItemService.js → chatStatus/chatStatusItemService.js} +0 -0
|
@@ -4,7 +4,7 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
|
|
|
4
4
|
import * as chatModelsWidget from './media/chatModelsWidget.css';
|
|
5
5
|
import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
6
6
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
7
|
-
import { $ as $$1,
|
|
7
|
+
import { $ as $$1, append, clearNode, getTotalWidth, isMouseEvent, Dimension } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
8
8
|
import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
|
|
9
9
|
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
10
10
|
import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
|
|
@@ -16,26 +16,26 @@ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/h
|
|
|
16
16
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
17
17
|
import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
18
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';
|
|
19
|
+
import { Action, Separator, SubmenuAction, toAction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
|
|
20
20
|
import { ActionBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar';
|
|
21
21
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
22
|
-
import { isVendorEntry, ChatModelsViewModel, SEARCH_SUGGESTIONS } from './chatModelsViewModel.js';
|
|
22
|
+
import { ChatModelGroup, isVendorEntry, isGroupEntry, ChatModelsViewModel, SEARCH_SUGGESTIONS } from './chatModelsViewModel.js';
|
|
23
23
|
import { HighlightedLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
|
|
24
|
-
import { SuggestEnabledInput } from '@codingame/monaco-vscode-
|
|
24
|
+
import { SuggestEnabledInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput';
|
|
25
25
|
import { Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
26
|
-
import { settingsTextInputBorder } from '@codingame/monaco-vscode-
|
|
26
|
+
import { settingsTextInputBorder } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/preferences/common/settingsEditorColorRegistry';
|
|
27
27
|
import { ChatEntitlement } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService';
|
|
28
28
|
import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service';
|
|
29
29
|
import { DropdownMenuActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/dropdown/dropdownActionViewItem';
|
|
30
30
|
import { AnchorAlignment } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/contextview/contextview';
|
|
31
31
|
import { ToolBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/toolbar/toolbar';
|
|
32
|
-
import { preferencesClearInputIcon } from '@codingame/monaco-vscode-
|
|
32
|
+
import { preferencesClearInputIcon } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/preferences/browser/preferencesIcons';
|
|
33
33
|
import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
|
|
34
34
|
import { IEditorProgressService } from '@codingame/monaco-vscode-api/vscode/vs/platform/progress/common/progress.service';
|
|
35
35
|
import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
36
36
|
import { CONTEXT_MODELS_SEARCH_FOCUS } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var ModelNameColumnRenderer_1, MultiplierColumnRenderer_1, TokenLimitsColumnRenderer_1, ActionsColumnRenderer_1, ChatModelsWidget_1;
|
|
39
39
|
registerCss(chatModelsWidget);
|
|
40
40
|
const $ = $$1;
|
|
41
41
|
const HEADER_HEIGHT = 30;
|
|
@@ -43,7 +43,7 @@ const VENDOR_ROW_HEIGHT = 30;
|
|
|
43
43
|
const MODEL_ROW_HEIGHT = 26;
|
|
44
44
|
class ModelsFilterAction extends Action {
|
|
45
45
|
constructor() {
|
|
46
|
-
super('workbench.models.filter', ( localize(
|
|
46
|
+
super('workbench.models.filter', ( localize(5370, "Filter")), ThemeIcon.asClassName(Codicon.filter));
|
|
47
47
|
}
|
|
48
48
|
async run() {
|
|
49
49
|
}
|
|
@@ -74,6 +74,19 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
|
|
|
74
74
|
this.searchWidget = searchWidget;
|
|
75
75
|
this.viewModel = viewModel;
|
|
76
76
|
}
|
|
77
|
+
createGroupByAction(grouping, label) {
|
|
78
|
+
return {
|
|
79
|
+
id: `groupBy.${grouping}`,
|
|
80
|
+
label,
|
|
81
|
+
class: undefined,
|
|
82
|
+
enabled: true,
|
|
83
|
+
tooltip: ( localize(5371, "Group by {0}", label)),
|
|
84
|
+
checked: this.viewModel.groupBy === grouping,
|
|
85
|
+
run: () => {
|
|
86
|
+
this.viewModel.groupBy = grouping;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
77
90
|
createProviderAction(vendor, displayName) {
|
|
78
91
|
const query = `@provider:"${displayName}"`;
|
|
79
92
|
const currentQuery = this.searchWidget.getValue();
|
|
@@ -81,7 +94,7 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
|
|
|
81
94
|
return {
|
|
82
95
|
id: `provider-${vendor}`,
|
|
83
96
|
label: displayName,
|
|
84
|
-
tooltip: ( localize(
|
|
97
|
+
tooltip: ( localize(5372, "Filter by {0}", displayName)),
|
|
85
98
|
class: undefined,
|
|
86
99
|
enabled: true,
|
|
87
100
|
checked: isChecked,
|
|
@@ -95,7 +108,7 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
|
|
|
95
108
|
return {
|
|
96
109
|
id: `capability-${capability}`,
|
|
97
110
|
label,
|
|
98
|
-
tooltip: ( localize(
|
|
111
|
+
tooltip: ( localize(5373, "Filter by {0}", label)),
|
|
99
112
|
class: undefined,
|
|
100
113
|
enabled: true,
|
|
101
114
|
checked: isChecked,
|
|
@@ -110,7 +123,7 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
|
|
|
110
123
|
return {
|
|
111
124
|
id: `visible-${visible}`,
|
|
112
125
|
label,
|
|
113
|
-
tooltip: ( localize(
|
|
126
|
+
tooltip: ( localize(5374, "Filter by {0}", label)),
|
|
114
127
|
class: undefined,
|
|
115
128
|
enabled: true,
|
|
116
129
|
checked: isChecked,
|
|
@@ -125,17 +138,22 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
|
|
|
125
138
|
}
|
|
126
139
|
getActions() {
|
|
127
140
|
const actions = [];
|
|
128
|
-
actions.push(this.createVisibleAction(true, ( localize(
|
|
129
|
-
actions.push(this.createVisibleAction(false, ( localize(
|
|
141
|
+
actions.push(this.createVisibleAction(true, ( localize(5375, 'Visible'))));
|
|
142
|
+
actions.push(this.createVisibleAction(false, ( localize(5376, 'Hidden'))));
|
|
130
143
|
actions.push(( new Separator()));
|
|
131
|
-
actions.push(this.createCapabilityAction('tools', ( localize(
|
|
144
|
+
actions.push(this.createCapabilityAction('tools', ( localize(5377, 'Tools'))), this.createCapabilityAction('vision', ( localize(5378, 'Vision'))), this.createCapabilityAction('agent', ( localize(5379, 'Agent Mode'))));
|
|
132
145
|
const configuredVendors = this.viewModel.getConfiguredVendors();
|
|
133
146
|
if (configuredVendors.length > 1) {
|
|
134
147
|
actions.push(( new Separator()));
|
|
135
148
|
actions.push(...( configuredVendors.map(
|
|
136
|
-
vendor => this.createProviderAction(vendor.
|
|
149
|
+
vendor => this.createProviderAction(vendor.vendor, vendor.vendorDisplayName)
|
|
137
150
|
)));
|
|
138
151
|
}
|
|
152
|
+
actions.push(( new Separator()));
|
|
153
|
+
const groupByActions = [];
|
|
154
|
+
groupByActions.push(this.createGroupByAction(ChatModelGroup.Vendor, ( localize(5380, 'Provider'))));
|
|
155
|
+
groupByActions.push(this.createGroupByAction(ChatModelGroup.Visibility, ( localize(5381, 'Visibility'))));
|
|
156
|
+
actions.push(( new SubmenuAction('groupBy', ( localize(5382, "Group By")), groupByActions)));
|
|
139
157
|
return actions;
|
|
140
158
|
}
|
|
141
159
|
};
|
|
@@ -147,20 +165,24 @@ class Delegate {
|
|
|
147
165
|
this.headerRowHeight = HEADER_HEIGHT;
|
|
148
166
|
}
|
|
149
167
|
getHeight(element) {
|
|
150
|
-
return isVendorEntry(element) ? VENDOR_ROW_HEIGHT : MODEL_ROW_HEIGHT;
|
|
168
|
+
return isVendorEntry(element) || isGroupEntry(element) ? VENDOR_ROW_HEIGHT : MODEL_ROW_HEIGHT;
|
|
151
169
|
}
|
|
152
170
|
}
|
|
153
171
|
class ModelsTableColumnRenderer {
|
|
154
172
|
renderElement(element, index, templateData) {
|
|
155
173
|
templateData.elementDisposables.clear();
|
|
156
174
|
const isVendor = isVendorEntry(element);
|
|
175
|
+
const isGroup = isGroupEntry(element);
|
|
157
176
|
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);
|
|
177
|
+
templateData.container.parentElement.classList.toggle('models-vendor-row', isVendor || isGroup);
|
|
178
|
+
templateData.container.parentElement.classList.toggle('models-model-row', !isVendor && !isGroup);
|
|
179
|
+
templateData.container.parentElement.classList.toggle('model-hidden', !isVendor && !isGroup && !element.modelEntry.metadata.isUserSelectable);
|
|
161
180
|
if (isVendor) {
|
|
162
181
|
this.renderVendorElement(element, index, templateData);
|
|
163
182
|
}
|
|
183
|
+
else if (isGroup) {
|
|
184
|
+
this.renderGroupElement(element, index, templateData);
|
|
185
|
+
}
|
|
164
186
|
else {
|
|
165
187
|
this.renderModelElement(element, index, templateData);
|
|
166
188
|
}
|
|
@@ -170,17 +192,12 @@ class ModelsTableColumnRenderer {
|
|
|
170
192
|
templateData.disposables.dispose();
|
|
171
193
|
}
|
|
172
194
|
}
|
|
173
|
-
|
|
174
|
-
static { GutterColumnRenderer_1 = this; }
|
|
195
|
+
class GutterColumnRenderer extends ModelsTableColumnRenderer {
|
|
175
196
|
static { this.TEMPLATE_ID = 'gutter'; }
|
|
176
|
-
constructor(
|
|
197
|
+
constructor(viewModel) {
|
|
177
198
|
super();
|
|
178
|
-
this.
|
|
179
|
-
this.templateId =
|
|
180
|
-
this._onDidToggleCollapse = ( new Emitter());
|
|
181
|
-
this.onDidToggleCollapse = this._onDidToggleCollapse.event;
|
|
182
|
-
this._onDidChange = ( new Emitter());
|
|
183
|
-
this.onDidChange = this._onDidChange.event;
|
|
199
|
+
this.viewModel = viewModel;
|
|
200
|
+
this.templateId = GutterColumnRenderer.TEMPLATE_ID;
|
|
184
201
|
}
|
|
185
202
|
renderTemplate(container) {
|
|
186
203
|
const disposables = ( new DisposableStore());
|
|
@@ -188,7 +205,7 @@ let GutterColumnRenderer = class GutterColumnRenderer extends ModelsTableColumnR
|
|
|
188
205
|
container.classList.add('models-gutter-column');
|
|
189
206
|
const actionBar = disposables.add(( new ActionBar(container)));
|
|
190
207
|
return {
|
|
191
|
-
|
|
208
|
+
listRowElement: container.parentElement?.parentElement ?? null,
|
|
192
209
|
container,
|
|
193
210
|
actionBar,
|
|
194
211
|
disposables,
|
|
@@ -200,45 +217,40 @@ let GutterColumnRenderer = class GutterColumnRenderer extends ModelsTableColumnR
|
|
|
200
217
|
super.renderElement(entry, index, templateData);
|
|
201
218
|
}
|
|
202
219
|
renderVendorElement(entry, index, templateData) {
|
|
203
|
-
|
|
204
|
-
if (templateData.rowContainer) {
|
|
205
|
-
templateData.elementDisposables.add(addDisposableListener(templateData.rowContainer, EventType.CLICK, () => this._onDidToggleCollapse.fire(entry.vendorEntry.vendor)));
|
|
206
|
-
}
|
|
220
|
+
this.renderCollapsableElement(entry, templateData);
|
|
207
221
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
222
|
+
renderGroupElement(entry, index, templateData) {
|
|
223
|
+
this.renderCollapsableElement(entry, templateData);
|
|
224
|
+
}
|
|
225
|
+
renderCollapsableElement(entry, templateData) {
|
|
226
|
+
if (templateData.listRowElement) {
|
|
227
|
+
templateData.listRowElement.setAttribute('aria-expanded', entry.collapsed ? 'false' : 'true');
|
|
228
|
+
}
|
|
229
|
+
const label = entry.collapsed ? ( localize(5383, 'Expand')) : ( localize(5384, 'Collapse'));
|
|
230
|
+
const toggleCollapseAction = {
|
|
211
231
|
id: 'toggleCollapse',
|
|
212
232
|
label,
|
|
213
233
|
tooltip: label,
|
|
214
234
|
enabled: true,
|
|
215
235
|
class: ThemeIcon.asClassName(entry.collapsed ? Codicon.chevronRight : Codicon.chevronDown),
|
|
216
|
-
run: () =>
|
|
217
|
-
this._onDidToggleCollapse.fire(entry.vendorEntry.vendor);
|
|
218
|
-
}
|
|
236
|
+
run: () => this.viewModel.toggleCollapsed(entry)
|
|
219
237
|
};
|
|
238
|
+
templateData.actionBar.push(toggleCollapseAction, { icon: true, label: false });
|
|
220
239
|
}
|
|
221
240
|
renderModelElement(entry, index, templateData) {
|
|
222
241
|
const { modelEntry } = entry;
|
|
223
242
|
const isVisible = modelEntry.metadata.isUserSelectable ?? false;
|
|
224
243
|
const toggleVisibilityAction = toAction({
|
|
225
244
|
id: 'toggleVisibility',
|
|
226
|
-
label: isVisible ? ( localize(
|
|
227
|
-
class: `model-visibility-toggle ${isVisible ? `${ThemeIcon.asClassName(Codicon.
|
|
228
|
-
tooltip: isVisible ? ( localize(
|
|
245
|
+
label: isVisible ? ( localize(5385, 'Hide')) : ( localize(5386, 'Show')),
|
|
246
|
+
class: `model-visibility-toggle ${isVisible ? `${ThemeIcon.asClassName(Codicon.eye)} model-visible` : `${ThemeIcon.asClassName(Codicon.eyeClosed)} model-hidden`}`,
|
|
247
|
+
tooltip: isVisible ? ( localize(5387, 'Hide in the chat model picker')) : ( localize(5388, 'Show in the chat model picker')),
|
|
229
248
|
checked: !isVisible,
|
|
230
|
-
run: async () =>
|
|
231
|
-
const newVisibility = !isVisible;
|
|
232
|
-
this.languageModelsService.updateModelPickerPreference(modelEntry.identifier, newVisibility);
|
|
233
|
-
this._onDidChange.fire();
|
|
234
|
-
}
|
|
249
|
+
run: async () => this.viewModel.toggleVisibility(entry)
|
|
235
250
|
});
|
|
236
251
|
templateData.actionBar.push(toggleVisibilityAction, { icon: true, label: false });
|
|
237
252
|
}
|
|
238
|
-
}
|
|
239
|
-
GutterColumnRenderer = GutterColumnRenderer_1 = ( __decorate([
|
|
240
|
-
( __param(0, ILanguageModelsService))
|
|
241
|
-
], GutterColumnRenderer));
|
|
253
|
+
}
|
|
242
254
|
let ModelNameColumnRenderer = class ModelNameColumnRenderer extends ModelsTableColumnRenderer {
|
|
243
255
|
static { ModelNameColumnRenderer_1 = this; }
|
|
244
256
|
static { this.TEMPLATE_ID = 'modelName'; }
|
|
@@ -271,6 +283,9 @@ let ModelNameColumnRenderer = class ModelNameColumnRenderer extends ModelsTableC
|
|
|
271
283
|
renderVendorElement(entry, index, templateData) {
|
|
272
284
|
templateData.nameLabel.set(entry.vendorEntry.vendorDisplayName, undefined);
|
|
273
285
|
}
|
|
286
|
+
renderGroupElement(entry, index, templateData) {
|
|
287
|
+
templateData.nameLabel.set(entry.label, undefined);
|
|
288
|
+
}
|
|
274
289
|
renderModelElement(entry, index, templateData) {
|
|
275
290
|
const { modelEntry, modelNameMatches } = entry;
|
|
276
291
|
templateData.statusIcon.className = 'model-status-icon';
|
|
@@ -299,7 +314,7 @@ let ModelNameColumnRenderer = class ModelNameColumnRenderer extends ModelsTableC
|
|
|
299
314
|
markdown.appendText(`\n`);
|
|
300
315
|
}
|
|
301
316
|
if (!entry.modelEntry.metadata.isUserSelectable) {
|
|
302
|
-
markdown.appendMarkdown(`\n\n${( localize(
|
|
317
|
+
markdown.appendMarkdown(`\n\n${( localize(5389, 'This model is hidden in the chat model picker'))}`);
|
|
303
318
|
}
|
|
304
319
|
templateData.elementDisposables.add(this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
|
|
305
320
|
content: markdown,
|
|
@@ -313,12 +328,14 @@ let ModelNameColumnRenderer = class ModelNameColumnRenderer extends ModelsTableC
|
|
|
313
328
|
ModelNameColumnRenderer = ModelNameColumnRenderer_1 = ( __decorate([
|
|
314
329
|
( __param(0, IHoverService))
|
|
315
330
|
], ModelNameColumnRenderer));
|
|
316
|
-
class MultiplierColumnRenderer extends ModelsTableColumnRenderer {
|
|
317
|
-
|
|
318
|
-
super(...arguments);
|
|
319
|
-
this.templateId = MultiplierColumnRenderer.TEMPLATE_ID;
|
|
320
|
-
}
|
|
331
|
+
let MultiplierColumnRenderer = class MultiplierColumnRenderer extends ModelsTableColumnRenderer {
|
|
332
|
+
static { MultiplierColumnRenderer_1 = this; }
|
|
321
333
|
static { this.TEMPLATE_ID = 'multiplier'; }
|
|
334
|
+
constructor(hoverService) {
|
|
335
|
+
super();
|
|
336
|
+
this.hoverService = hoverService;
|
|
337
|
+
this.templateId = MultiplierColumnRenderer_1.TEMPLATE_ID;
|
|
338
|
+
}
|
|
322
339
|
renderTemplate(container) {
|
|
323
340
|
const disposables = ( new DisposableStore());
|
|
324
341
|
const elementDisposables = ( new DisposableStore());
|
|
@@ -333,10 +350,30 @@ class MultiplierColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
333
350
|
renderVendorElement(entry, index, templateData) {
|
|
334
351
|
templateData.multiplierElement.textContent = '';
|
|
335
352
|
}
|
|
353
|
+
renderGroupElement(entry, index, templateData) {
|
|
354
|
+
templateData.multiplierElement.textContent = '';
|
|
355
|
+
}
|
|
336
356
|
renderModelElement(entry, index, templateData) {
|
|
337
|
-
|
|
357
|
+
const multiplierText = (entry.modelEntry.metadata.detail && entry.modelEntry.metadata.detail.trim().toLowerCase() !== entry.modelEntry.vendor.trim().toLowerCase()) ? entry.modelEntry.metadata.detail : '-';
|
|
358
|
+
templateData.multiplierElement.textContent = multiplierText;
|
|
359
|
+
if (multiplierText !== '-') {
|
|
360
|
+
templateData.elementDisposables.add(this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
|
|
361
|
+
content: ( localize(
|
|
362
|
+
5390,
|
|
363
|
+
"Every chat message counts {0} towards your premium model request quota",
|
|
364
|
+
multiplierText
|
|
365
|
+
)),
|
|
366
|
+
appearance: {
|
|
367
|
+
compact: true,
|
|
368
|
+
skipFadeInAnimation: true
|
|
369
|
+
}
|
|
370
|
+
})));
|
|
371
|
+
}
|
|
338
372
|
}
|
|
339
|
-
}
|
|
373
|
+
};
|
|
374
|
+
MultiplierColumnRenderer = MultiplierColumnRenderer_1 = ( __decorate([
|
|
375
|
+
( __param(0, IHoverService))
|
|
376
|
+
], MultiplierColumnRenderer));
|
|
340
377
|
let TokenLimitsColumnRenderer = class TokenLimitsColumnRenderer extends ModelsTableColumnRenderer {
|
|
341
378
|
static { TokenLimitsColumnRenderer_1 = this; }
|
|
342
379
|
static { this.TEMPLATE_ID = 'tokenLimits'; }
|
|
@@ -362,18 +399,20 @@ let TokenLimitsColumnRenderer = class TokenLimitsColumnRenderer extends ModelsTa
|
|
|
362
399
|
}
|
|
363
400
|
renderVendorElement(entry, index, templateData) {
|
|
364
401
|
}
|
|
402
|
+
renderGroupElement(entry, index, templateData) {
|
|
403
|
+
}
|
|
365
404
|
renderModelElement(entry, index, templateData) {
|
|
366
405
|
const { modelEntry } = entry;
|
|
367
406
|
const markdown = ( new MarkdownString('', { isTrusted: true, supportThemeIcons: true }));
|
|
368
407
|
if (modelEntry.metadata.maxInputTokens || modelEntry.metadata.maxOutputTokens) {
|
|
369
408
|
let addSeparator = false;
|
|
370
|
-
markdown.appendMarkdown(`${( localize(
|
|
409
|
+
markdown.appendMarkdown(`${( localize(5391, 'Context Size'))}: `);
|
|
371
410
|
if (modelEntry.metadata.maxInputTokens) {
|
|
372
411
|
const inputDiv = append(templateData.tokenLimitsElement, $('.token-limit-item'));
|
|
373
412
|
append(inputDiv, $('span.codicon.codicon-arrow-down'));
|
|
374
413
|
const inputText = append(inputDiv, $('span'));
|
|
375
414
|
inputText.textContent = formatTokenCount(modelEntry.metadata.maxInputTokens);
|
|
376
|
-
markdown.appendMarkdown(`$(arrow-down) ${modelEntry.metadata.maxInputTokens} (${( localize(
|
|
415
|
+
markdown.appendMarkdown(`$(arrow-down) ${modelEntry.metadata.maxInputTokens} (${( localize(5392, 'Input'))})`);
|
|
377
416
|
addSeparator = true;
|
|
378
417
|
}
|
|
379
418
|
if (modelEntry.metadata.maxOutputTokens) {
|
|
@@ -384,7 +423,7 @@ let TokenLimitsColumnRenderer = class TokenLimitsColumnRenderer extends ModelsTa
|
|
|
384
423
|
if (addSeparator) {
|
|
385
424
|
markdown.appendText(` | `);
|
|
386
425
|
}
|
|
387
|
-
markdown.appendMarkdown(`$(arrow-up) ${modelEntry.metadata.maxOutputTokens} (${( localize(
|
|
426
|
+
markdown.appendMarkdown(`$(arrow-up) ${modelEntry.metadata.maxOutputTokens} (${( localize(5393, 'Output'))})`);
|
|
388
427
|
}
|
|
389
428
|
}
|
|
390
429
|
templateData.elementDisposables.add(this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
|
|
@@ -410,7 +449,8 @@ class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
410
449
|
renderTemplate(container) {
|
|
411
450
|
const disposables = ( new DisposableStore());
|
|
412
451
|
const elementDisposables = ( new DisposableStore());
|
|
413
|
-
|
|
452
|
+
container.classList.add('model-capability-column');
|
|
453
|
+
const metadataRow = append(container, $('.model-capabilities'));
|
|
414
454
|
return {
|
|
415
455
|
container,
|
|
416
456
|
metadataRow,
|
|
@@ -424,13 +464,15 @@ class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
424
464
|
}
|
|
425
465
|
renderVendorElement(entry, index, templateData) {
|
|
426
466
|
}
|
|
467
|
+
renderGroupElement(entry, index, templateData) {
|
|
468
|
+
}
|
|
427
469
|
renderModelElement(entry, index, templateData) {
|
|
428
470
|
const { modelEntry, capabilityMatches } = entry;
|
|
429
471
|
if (modelEntry.metadata.capabilities?.toolCalling) {
|
|
430
|
-
templateData.elementDisposables.add(this.createCapabilityButton(templateData.metadataRow, capabilityMatches?.includes('toolCalling') || false, ( localize(
|
|
472
|
+
templateData.elementDisposables.add(this.createCapabilityButton(templateData.metadataRow, capabilityMatches?.includes('toolCalling') || false, ( localize(5394, 'Tools')), 'tools'));
|
|
431
473
|
}
|
|
432
474
|
if (modelEntry.metadata.capabilities?.vision) {
|
|
433
|
-
templateData.elementDisposables.add(this.createCapabilityButton(templateData.metadataRow, capabilityMatches?.includes('vision') || false, ( localize(
|
|
475
|
+
templateData.elementDisposables.add(this.createCapabilityButton(templateData.metadataRow, capabilityMatches?.includes('vision') || false, ( localize(5395, 'Vision')), 'vision'));
|
|
434
476
|
}
|
|
435
477
|
}
|
|
436
478
|
createCapabilityButton(container, isActive, label, capability) {
|
|
@@ -447,12 +489,11 @@ class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
447
489
|
let ActionsColumnRenderer = class ActionsColumnRenderer extends ModelsTableColumnRenderer {
|
|
448
490
|
static { ActionsColumnRenderer_1 = this; }
|
|
449
491
|
static { this.TEMPLATE_ID = 'actions'; }
|
|
450
|
-
constructor(commandService) {
|
|
492
|
+
constructor(viewModel, commandService) {
|
|
451
493
|
super();
|
|
494
|
+
this.viewModel = viewModel;
|
|
452
495
|
this.commandService = commandService;
|
|
453
496
|
this.templateId = ActionsColumnRenderer_1.TEMPLATE_ID;
|
|
454
|
-
this._onDidChange = ( new Emitter());
|
|
455
|
-
this.onDidChange = this._onDidChange.event;
|
|
456
497
|
}
|
|
457
498
|
renderTemplate(container) {
|
|
458
499
|
const disposables = ( new DisposableStore());
|
|
@@ -475,22 +516,51 @@ let ActionsColumnRenderer = class ActionsColumnRenderer extends ModelsTableColum
|
|
|
475
516
|
const { vendorEntry } = entry;
|
|
476
517
|
const action = toAction({
|
|
477
518
|
id: 'manageVendor',
|
|
478
|
-
label: ( localize(
|
|
519
|
+
label: ( localize(5396, 'Manage {0}...', entry.vendorEntry.vendorDisplayName)),
|
|
479
520
|
class: ThemeIcon.asClassName(Codicon.gear),
|
|
480
521
|
run: async () => {
|
|
481
522
|
await this.commandService.executeCommand(vendorEntry.managementCommand, vendorEntry.vendor);
|
|
482
|
-
this.
|
|
523
|
+
this.viewModel.refresh();
|
|
483
524
|
}
|
|
484
525
|
});
|
|
485
526
|
templateData.actionBar.push(action, { icon: true, label: false });
|
|
486
527
|
}
|
|
487
528
|
}
|
|
529
|
+
renderGroupElement(entry, index, templateData) {
|
|
530
|
+
}
|
|
488
531
|
renderModelElement(entry, index, templateData) {
|
|
489
532
|
}
|
|
490
533
|
};
|
|
491
534
|
ActionsColumnRenderer = ActionsColumnRenderer_1 = ( __decorate([
|
|
492
|
-
( __param(
|
|
535
|
+
( __param(1, ICommandService))
|
|
493
536
|
], ActionsColumnRenderer));
|
|
537
|
+
class ProviderColumnRenderer extends ModelsTableColumnRenderer {
|
|
538
|
+
constructor() {
|
|
539
|
+
super(...arguments);
|
|
540
|
+
this.templateId = ProviderColumnRenderer.TEMPLATE_ID;
|
|
541
|
+
}
|
|
542
|
+
static { this.TEMPLATE_ID = 'provider'; }
|
|
543
|
+
renderTemplate(container) {
|
|
544
|
+
const disposables = ( new DisposableStore());
|
|
545
|
+
const elementDisposables = ( new DisposableStore());
|
|
546
|
+
const providerElement = append(container, $('.model-provider'));
|
|
547
|
+
return {
|
|
548
|
+
container,
|
|
549
|
+
providerElement,
|
|
550
|
+
disposables,
|
|
551
|
+
elementDisposables
|
|
552
|
+
};
|
|
553
|
+
}
|
|
554
|
+
renderVendorElement(entry, index, templateData) {
|
|
555
|
+
templateData.providerElement.textContent = '';
|
|
556
|
+
}
|
|
557
|
+
renderGroupElement(entry, index, templateData) {
|
|
558
|
+
templateData.providerElement.textContent = '';
|
|
559
|
+
}
|
|
560
|
+
renderModelElement(entry, index, templateData) {
|
|
561
|
+
templateData.providerElement.textContent = entry.modelEntry.vendorDisplayName;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
494
564
|
function formatTokenCount(count) {
|
|
495
565
|
if (count >= 1000000) {
|
|
496
566
|
return `${(count / 1000000).toFixed(1)}M`;
|
|
@@ -513,30 +583,35 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
513
583
|
this.editorProgressService = editorProgressService;
|
|
514
584
|
this.commandService = commandService;
|
|
515
585
|
this.dropdownActions = [];
|
|
586
|
+
this.tableDisposables = this._register(( new DisposableStore()));
|
|
516
587
|
this.searchFocusContextKey = CONTEXT_MODELS_SEARCH_FOCUS.bindTo(contextKeyService);
|
|
517
|
-
this.delayedFiltering = ( new Delayer(
|
|
588
|
+
this.delayedFiltering = ( new Delayer(200));
|
|
518
589
|
this.viewModel = this._register(this.instantiationService.createInstance(ChatModelsViewModel));
|
|
519
590
|
this.element = $$1('.models-widget');
|
|
520
591
|
this.create(this.element);
|
|
521
|
-
const loadingPromise = this.extensionService.whenInstalledExtensionsRegistered().then(
|
|
522
|
-
await this.viewModel.resolve();
|
|
523
|
-
this.refreshTable();
|
|
524
|
-
});
|
|
592
|
+
const loadingPromise = this.extensionService.whenInstalledExtensionsRegistered().then(() => this.viewModel.refresh());
|
|
525
593
|
this.editorProgressService.showWhile(loadingPromise, 300);
|
|
526
|
-
this._register(this.viewModel.onDidChangeModelEntries(() => this.refreshTable()));
|
|
527
594
|
}
|
|
528
595
|
create(container) {
|
|
529
596
|
const searchAndButtonContainer = append(container, $('.models-search-and-button-container'));
|
|
530
|
-
const placeholder = ( localize(
|
|
597
|
+
const placeholder = ( localize(5397, "Type to search..."));
|
|
531
598
|
const searchContainer = append(searchAndButtonContainer, $('.models-search-container'));
|
|
532
599
|
this.searchWidget = this._register(this.instantiationService.createInstance(SuggestEnabledInput, 'chatModelsWidget.searchbox', searchContainer, {
|
|
533
600
|
triggerCharacters: ['@', ':'],
|
|
534
601
|
provideResults: (query) => {
|
|
602
|
+
const providerSuggestions = ( this.viewModel.getVendors().map(v => `@provider:"${v.displayName}"`));
|
|
603
|
+
const allSuggestions = [
|
|
604
|
+
...providerSuggestions,
|
|
605
|
+
...SEARCH_SUGGESTIONS.CAPABILITIES,
|
|
606
|
+
...SEARCH_SUGGESTIONS.VISIBILITY,
|
|
607
|
+
];
|
|
608
|
+
if (!query.trim()) {
|
|
609
|
+
return allSuggestions;
|
|
610
|
+
}
|
|
535
611
|
const queryParts = query.split(/\s/g);
|
|
536
612
|
const lastPart = queryParts[queryParts.length - 1];
|
|
537
613
|
if (lastPart.startsWith('@provider:')) {
|
|
538
|
-
|
|
539
|
-
return ( vendors.map(v => `@provider:"${v.displayName}"`));
|
|
614
|
+
return providerSuggestions;
|
|
540
615
|
}
|
|
541
616
|
else if (lastPart.startsWith('@capability:')) {
|
|
542
617
|
return SEARCH_SUGGESTIONS.CAPABILITIES;
|
|
@@ -545,7 +620,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
545
620
|
return SEARCH_SUGGESTIONS.VISIBILITY;
|
|
546
621
|
}
|
|
547
622
|
else if (lastPart.startsWith('@')) {
|
|
548
|
-
return
|
|
623
|
+
return allSuggestions;
|
|
549
624
|
}
|
|
550
625
|
return [];
|
|
551
626
|
}
|
|
@@ -556,17 +631,22 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
556
631
|
},
|
|
557
632
|
focusContextKey: this.searchFocusContextKey,
|
|
558
633
|
}));
|
|
559
|
-
this._register(this.searchWidget.onInputDidChange(() => this.filterModels()));
|
|
560
634
|
const filterAction = this._register(( new ModelsFilterAction()));
|
|
561
|
-
const clearSearchAction = this._register(( new Action('workbench.models.clearSearch', ( localize(
|
|
635
|
+
const clearSearchAction = this._register(( new Action('workbench.models.clearSearch', ( localize(5398, "Clear Search")), ThemeIcon.asClassName(preferencesClearInputIcon), false, () => {
|
|
562
636
|
this.searchWidget.setValue('');
|
|
563
637
|
this.searchWidget.focus();
|
|
564
638
|
})));
|
|
639
|
+
const collapseAllAction = this._register(( new Action('workbench.models.collapseAll', ( localize(5399, "Collapse All")), ThemeIcon.asClassName(Codicon.collapseAll), false, () => {
|
|
640
|
+
this.viewModel.collapseAll();
|
|
641
|
+
})));
|
|
642
|
+
collapseAllAction.enabled = ( this.viewModel.viewModelEntries.some(e => isVendorEntry(e) || isGroupEntry(e)));
|
|
643
|
+
this._register(this.viewModel.onDidChange(() => collapseAllAction.enabled = ( this.viewModel.viewModelEntries.some(e => isVendorEntry(e) || isGroupEntry(e)))));
|
|
565
644
|
this._register(this.searchWidget.onInputDidChange(() => {
|
|
566
645
|
clearSearchAction.enabled = !!this.searchWidget.getValue();
|
|
646
|
+
this.filterModels();
|
|
567
647
|
}));
|
|
568
648
|
this.searchActionsContainer = append(searchContainer, $('.models-search-actions'));
|
|
569
|
-
const actions = [clearSearchAction, filterAction];
|
|
649
|
+
const actions = [clearSearchAction, collapseAllAction, filterAction];
|
|
570
650
|
const toolBar = this._register(( new ToolBar(this.searchActionsContainer, this.contextMenuService, {
|
|
571
651
|
actionViewItemProvider: (action, options) => {
|
|
572
652
|
if (action.id === filterAction.id) {
|
|
@@ -584,7 +664,7 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
584
664
|
supportIcons: true,
|
|
585
665
|
};
|
|
586
666
|
this.addButton = this._register(( new Button(this.addButtonContainer, buttonOptions)));
|
|
587
|
-
this.addButton.label = `$(${Codicon.add.id}) ${( localize(
|
|
667
|
+
this.addButton.label = `$(${Codicon.add.id}) ${( localize(5400, 'Add Models...'))}`;
|
|
588
668
|
this.addButton.element.classList.add('models-add-model-button');
|
|
589
669
|
this.addButton.enabled = false;
|
|
590
670
|
this._register(this.addButton.onDidClick((e) => {
|
|
@@ -596,33 +676,27 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
596
676
|
}
|
|
597
677
|
}));
|
|
598
678
|
this.tableContainer = append(container, $('.models-table-container'));
|
|
599
|
-
|
|
679
|
+
this.createTable();
|
|
680
|
+
this._register(this.viewModel.onDidChangeGrouping(() => this.createTable()));
|
|
681
|
+
}
|
|
682
|
+
createTable() {
|
|
683
|
+
this.tableDisposables.clear();
|
|
684
|
+
clearNode(this.tableContainer);
|
|
685
|
+
const gutterColumnRenderer = this.instantiationService.createInstance(GutterColumnRenderer, this.viewModel);
|
|
600
686
|
const modelNameColumnRenderer = this.instantiationService.createInstance(ModelNameColumnRenderer);
|
|
601
687
|
const costColumnRenderer = this.instantiationService.createInstance(MultiplierColumnRenderer);
|
|
602
688
|
const tokenLimitsColumnRenderer = this.instantiationService.createInstance(TokenLimitsColumnRenderer);
|
|
603
689
|
const capabilitiesColumnRenderer = this.instantiationService.createInstance(CapabilitiesColumnRenderer);
|
|
604
|
-
const actionsColumnRenderer = this.instantiationService.createInstance(ActionsColumnRenderer);
|
|
605
|
-
this.
|
|
606
|
-
|
|
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 => {
|
|
690
|
+
const actionsColumnRenderer = this.instantiationService.createInstance(ActionsColumnRenderer, this.viewModel);
|
|
691
|
+
const providerColumnRenderer = this.instantiationService.createInstance(ProviderColumnRenderer);
|
|
692
|
+
this.tableDisposables.add(capabilitiesColumnRenderer.onDidClickCapability(capability => {
|
|
619
693
|
const currentQuery = this.searchWidget.getValue();
|
|
620
694
|
const query = `@capability:${capability}`;
|
|
621
695
|
const newQuery = toggleFilter(currentQuery, query);
|
|
622
696
|
this.searchWidget.setValue(newQuery);
|
|
623
697
|
this.searchWidget.focus();
|
|
624
698
|
}));
|
|
625
|
-
|
|
699
|
+
const columns = [
|
|
626
700
|
{
|
|
627
701
|
label: '',
|
|
628
702
|
tooltip: '',
|
|
@@ -633,76 +707,119 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
633
707
|
project(row) { return row; }
|
|
634
708
|
},
|
|
635
709
|
{
|
|
636
|
-
label: ( localize(
|
|
710
|
+
label: ( localize(5401, 'Name')),
|
|
637
711
|
tooltip: '',
|
|
638
|
-
weight: 0.
|
|
712
|
+
weight: 0.35,
|
|
639
713
|
minimumWidth: 200,
|
|
640
714
|
templateId: ModelNameColumnRenderer.TEMPLATE_ID,
|
|
641
715
|
project(row) { return row; }
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
minimumWidth: 180,
|
|
648
|
-
templateId: CapabilitiesColumnRenderer.TEMPLATE_ID,
|
|
649
|
-
project(row) { return row; }
|
|
650
|
-
},
|
|
651
|
-
{
|
|
652
|
-
label: ( localize(5330, '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(5331, 'Multiplier')),
|
|
661
|
-
tooltip: '',
|
|
662
|
-
weight: 0.1,
|
|
663
|
-
minimumWidth: 60,
|
|
664
|
-
templateId: MultiplierColumnRenderer.TEMPLATE_ID,
|
|
665
|
-
project(row) { return row; }
|
|
666
|
-
},
|
|
667
|
-
{
|
|
668
|
-
label: '',
|
|
716
|
+
}
|
|
717
|
+
];
|
|
718
|
+
if (this.viewModel.groupBy === ChatModelGroup.Visibility) {
|
|
719
|
+
columns.push({
|
|
720
|
+
label: ( localize(5402, 'Provider')),
|
|
669
721
|
tooltip: '',
|
|
670
|
-
weight: 0.
|
|
671
|
-
minimumWidth:
|
|
672
|
-
|
|
673
|
-
templateId: ActionsColumnRenderer.TEMPLATE_ID,
|
|
722
|
+
weight: 0.15,
|
|
723
|
+
minimumWidth: 100,
|
|
724
|
+
templateId: ProviderColumnRenderer.TEMPLATE_ID,
|
|
674
725
|
project(row) { return row; }
|
|
675
|
-
}
|
|
676
|
-
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
columns.push({
|
|
729
|
+
label: ( localize(5403, 'Context Size')),
|
|
730
|
+
tooltip: '',
|
|
731
|
+
weight: 0.1,
|
|
732
|
+
minimumWidth: 140,
|
|
733
|
+
templateId: TokenLimitsColumnRenderer.TEMPLATE_ID,
|
|
734
|
+
project(row) { return row; }
|
|
735
|
+
}, {
|
|
736
|
+
label: ( localize(5404, 'Capabilities')),
|
|
737
|
+
tooltip: '',
|
|
738
|
+
weight: 0.25,
|
|
739
|
+
minimumWidth: 180,
|
|
740
|
+
templateId: CapabilitiesColumnRenderer.TEMPLATE_ID,
|
|
741
|
+
project(row) { return row; }
|
|
742
|
+
}, {
|
|
743
|
+
label: ( localize(5405, 'Multiplier')),
|
|
744
|
+
tooltip: '',
|
|
745
|
+
weight: 0.05,
|
|
746
|
+
minimumWidth: 60,
|
|
747
|
+
templateId: MultiplierColumnRenderer.TEMPLATE_ID,
|
|
748
|
+
project(row) { return row; }
|
|
749
|
+
}, {
|
|
750
|
+
label: '',
|
|
751
|
+
tooltip: '',
|
|
752
|
+
weight: 0.05,
|
|
753
|
+
minimumWidth: 64,
|
|
754
|
+
maximumWidth: 64,
|
|
755
|
+
templateId: ActionsColumnRenderer.TEMPLATE_ID,
|
|
756
|
+
project(row) { return row; }
|
|
757
|
+
});
|
|
758
|
+
this.table = this.tableDisposables.add(this.instantiationService.createInstance(WorkbenchTable, 'ModelsWidget', this.tableContainer, ( new Delegate()), columns, [
|
|
677
759
|
gutterColumnRenderer,
|
|
678
760
|
modelNameColumnRenderer,
|
|
679
761
|
costColumnRenderer,
|
|
680
762
|
tokenLimitsColumnRenderer,
|
|
681
763
|
capabilitiesColumnRenderer,
|
|
682
764
|
actionsColumnRenderer,
|
|
765
|
+
providerColumnRenderer
|
|
683
766
|
], {
|
|
684
767
|
identityProvider: { getId: (e) => e.id },
|
|
685
768
|
horizontalScrolling: false,
|
|
686
769
|
accessibilityProvider: {
|
|
687
770
|
getAriaLabel: (e) => {
|
|
688
771
|
if (isVendorEntry(e)) {
|
|
689
|
-
return localize(
|
|
772
|
+
return localize(5406, '{0} Models', e.vendorEntry.vendorDisplayName);
|
|
773
|
+
}
|
|
774
|
+
else if (isGroupEntry(e)) {
|
|
775
|
+
return e.id === 'visible' ? ( localize(5407, 'Visible Models')) : ( localize(5408, 'Hidden Models'));
|
|
690
776
|
}
|
|
691
|
-
|
|
692
|
-
|
|
777
|
+
const ariaLabels = [];
|
|
778
|
+
ariaLabels.push(( localize(
|
|
779
|
+
5409,
|
|
693
780
|
'{0} from {1}',
|
|
694
781
|
e.modelEntry.metadata.name,
|
|
695
782
|
e.modelEntry.vendorDisplayName
|
|
696
|
-
);
|
|
783
|
+
)));
|
|
784
|
+
if (e.modelEntry.metadata.maxInputTokens && e.modelEntry.metadata.maxOutputTokens) {
|
|
785
|
+
ariaLabels.push(( localize(
|
|
786
|
+
5410,
|
|
787
|
+
'Context size: {0} input tokens and {1} output tokens',
|
|
788
|
+
formatTokenCount(e.modelEntry.metadata.maxInputTokens),
|
|
789
|
+
formatTokenCount(e.modelEntry.metadata.maxOutputTokens)
|
|
790
|
+
)));
|
|
791
|
+
}
|
|
792
|
+
if (e.modelEntry.metadata.capabilities) {
|
|
793
|
+
ariaLabels.push(( localize(
|
|
794
|
+
5411,
|
|
795
|
+
'Capabilities: {0}',
|
|
796
|
+
( Object.keys(e.modelEntry.metadata.capabilities)).join(', ')
|
|
797
|
+
)));
|
|
798
|
+
}
|
|
799
|
+
const multiplierText = (e.modelEntry.metadata.detail && e.modelEntry.metadata.detail.trim().toLowerCase() !== e.modelEntry.vendor.trim().toLowerCase()) ? e.modelEntry.metadata.detail : '-';
|
|
800
|
+
if (multiplierText !== '-') {
|
|
801
|
+
ariaLabels.push(( localize(
|
|
802
|
+
5390,
|
|
803
|
+
"Every chat message counts {0} towards your premium model request quota",
|
|
804
|
+
multiplierText
|
|
805
|
+
)));
|
|
806
|
+
}
|
|
807
|
+
if (e.modelEntry.metadata.isUserSelectable) {
|
|
808
|
+
ariaLabels.push(( localize(5412, 'This model is visible in the chat model picker')));
|
|
809
|
+
}
|
|
810
|
+
else {
|
|
811
|
+
ariaLabels.push(( localize(5413, 'This model is hidden in the chat model picker')));
|
|
812
|
+
}
|
|
813
|
+
return ariaLabels.join('. ');
|
|
697
814
|
},
|
|
698
|
-
getWidgetAriaLabel: () => ( localize(
|
|
815
|
+
getWidgetAriaLabel: () => ( localize(5414, 'Language Models'))
|
|
699
816
|
},
|
|
700
817
|
multipleSelectionSupport: false,
|
|
701
818
|
setRowLineHeight: false,
|
|
702
|
-
openOnSingleClick:
|
|
819
|
+
openOnSingleClick: true,
|
|
703
820
|
alwaysConsumeMouseWheel: false,
|
|
704
821
|
}));
|
|
705
|
-
this.
|
|
822
|
+
this.tableDisposables.add(this.table.onContextMenu(e => {
|
|
706
823
|
if (!e.element) {
|
|
707
824
|
return;
|
|
708
825
|
}
|
|
@@ -711,11 +828,10 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
711
828
|
const actions = [
|
|
712
829
|
toAction({
|
|
713
830
|
id: 'manageVendor',
|
|
714
|
-
label: ( localize(
|
|
831
|
+
label: ( localize(5396, 'Manage {0}...', entry.vendorEntry.vendorDisplayName)),
|
|
715
832
|
run: async () => {
|
|
716
833
|
await this.commandService.executeCommand(entry.vendorEntry.managementCommand, entry.vendorEntry.vendor);
|
|
717
|
-
await this.viewModel.
|
|
718
|
-
this.refreshTable();
|
|
834
|
+
await this.viewModel.refresh();
|
|
719
835
|
}
|
|
720
836
|
})
|
|
721
837
|
];
|
|
@@ -725,31 +841,54 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
725
841
|
});
|
|
726
842
|
}
|
|
727
843
|
}));
|
|
844
|
+
this.table.splice(0, this.table.length, this.viewModel.viewModelEntries);
|
|
845
|
+
this.tableDisposables.add(this.viewModel.onDidChange(({ at, removed, added }) => {
|
|
846
|
+
this.table.splice(at, removed, added);
|
|
847
|
+
if (this.viewModel.selectedEntry) {
|
|
848
|
+
const selectedEntryIndex = this.viewModel.viewModelEntries.indexOf(this.viewModel.selectedEntry);
|
|
849
|
+
this.table.setFocus([selectedEntryIndex]);
|
|
850
|
+
this.table.setSelection([selectedEntryIndex]);
|
|
851
|
+
}
|
|
852
|
+
const vendors = this.viewModel.getVendors();
|
|
853
|
+
const configuredVendors = ( new Set(( this.viewModel.getConfiguredVendors().map(cv => cv.vendor))));
|
|
854
|
+
const vendorsWithoutModels = vendors.filter(v => !( configuredVendors.has(v.vendor)));
|
|
855
|
+
const hasPlan = this.chatEntitlementService.entitlement !== ChatEntitlement.Unknown && this.chatEntitlementService.entitlement !== ChatEntitlement.Available;
|
|
856
|
+
this.addButton.enabled = hasPlan && vendorsWithoutModels.length > 0;
|
|
857
|
+
this.dropdownActions = ( vendorsWithoutModels.map(vendor => toAction({
|
|
858
|
+
id: `enable-${vendor.vendor}`,
|
|
859
|
+
label: vendor.displayName,
|
|
860
|
+
run: async () => {
|
|
861
|
+
await this.enableProvider(vendor.vendor);
|
|
862
|
+
}
|
|
863
|
+
})));
|
|
864
|
+
}));
|
|
865
|
+
this.tableDisposables.add(this.table.onDidOpen(async ({ element, browserEvent }) => {
|
|
866
|
+
if (!element) {
|
|
867
|
+
return;
|
|
868
|
+
}
|
|
869
|
+
if (isVendorEntry(element) || isGroupEntry(element)) {
|
|
870
|
+
this.viewModel.toggleCollapsed(element);
|
|
871
|
+
}
|
|
872
|
+
else if (!isMouseEvent(browserEvent) || browserEvent.detail === 2) {
|
|
873
|
+
this.viewModel.toggleVisibility(element);
|
|
874
|
+
}
|
|
875
|
+
}));
|
|
876
|
+
this.tableDisposables.add(this.table.onDidChangeSelection(e => this.viewModel.selectedEntry = e.elements[0]));
|
|
877
|
+
this.tableDisposables.add(this.table.onDidBlur(() => {
|
|
878
|
+
if (this.viewModel.shouldRefilter()) {
|
|
879
|
+
this.viewModel.filter(this.searchWidget.getValue());
|
|
880
|
+
}
|
|
881
|
+
}));
|
|
882
|
+
this.layout(this.element.clientHeight, this.element.clientWidth);
|
|
728
883
|
}
|
|
729
884
|
filterModels() {
|
|
730
|
-
this.delayedFiltering.trigger(() =>
|
|
731
|
-
|
|
732
|
-
|
|
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
|
-
})));
|
|
885
|
+
this.delayedFiltering.trigger(() => {
|
|
886
|
+
this.viewModel.filter(this.searchWidget.getValue());
|
|
887
|
+
});
|
|
748
888
|
}
|
|
749
889
|
async enableProvider(vendorId) {
|
|
750
890
|
await this.languageModelsService.selectLanguageModels({ vendor: vendorId }, true);
|
|
751
|
-
await this.viewModel.
|
|
752
|
-
this.refreshTable();
|
|
891
|
+
await this.viewModel.refresh();
|
|
753
892
|
}
|
|
754
893
|
layout(height, width) {
|
|
755
894
|
width = width - 24;
|
|
@@ -768,9 +907,10 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
768
907
|
clearSearch() {
|
|
769
908
|
this.searchWidget.setValue('');
|
|
770
909
|
}
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
910
|
+
render() {
|
|
911
|
+
if (this.viewModel.shouldRefilter()) {
|
|
912
|
+
this.viewModel.filter(this.searchWidget.getValue());
|
|
913
|
+
}
|
|
774
914
|
}
|
|
775
915
|
};
|
|
776
916
|
ChatModelsWidget = ChatModelsWidget_1 = ( __decorate([
|