@codingame/monaco-vscode-chat-service-override 25.1.2 → 26.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.
- package/index.js +24 -3
- package/package.json +5 -5
- package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +23 -3
- package/vscode/src/vs/platform/browserElements/common/browserElements.js +13 -6
- package/vscode/src/vs/platform/domWidget/browser/domWidget.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +42 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +218 -74
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatTerminalOutputAccessibleView.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +165 -168
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +27 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +141 -140
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +189 -121
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +14 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +435 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +28 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +10 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +37 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +54 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +73 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +71 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +151 -89
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +12 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +39 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +90 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +263 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +188 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +37 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +21 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +392 -226
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +31 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +25 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +83 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +319 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +215 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +179 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +951 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agentsessionprojection.css +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +388 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +195 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +394 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +95 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +31 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +49 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/media/simpleBrowserOverlay.css +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +188 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +1012 -639
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +256 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +182 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +79 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +193 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +9 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +253 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +69 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +52 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +274 -155
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +130 -104
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +385 -160
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +53 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +112 -75
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +19 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +31 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +39 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNewNotebookContentEdits.js +10 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +25 -16
- 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 +265 -203
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +29 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +114 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +44 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +119 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +152 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +51 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +323 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +653 -401
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +52 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +43 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +182 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +548 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +222 -138
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +151 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +453 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +162 -88
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +1 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +309 -233
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +55 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +35 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +9 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +73 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +333 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +39 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +9 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +23 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +20 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +65 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +48 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +20 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +155 -159
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +24 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +521 -246
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +107 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +28 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.js +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.js +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatLayoutService.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +56 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +37 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +1284 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +179 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +9 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/editorHoverWrapper.js +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +96 -78
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +58 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +25 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +484 -292
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +65 -92
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +331 -189
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +81 -93
- package/vscode/src/vs/workbench/contrib/chat/common/ignoredFiles.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +6 -7
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +36 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +169 -31
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +141 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +218 -144
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatTransferService.js +20 -10
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +109 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +349 -0
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +139 -36
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +3 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +64 -51
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +49 -34
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +21 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +125 -97
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +91 -131
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +8 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +488 -222
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +32 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +58 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +717 -200
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +79 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +371 -130
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +3 -7
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +79 -61
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +27 -21
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +7 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +26 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -60
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +115 -426
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +127 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -37
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +21 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +334 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +424 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +58 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +195 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +368 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +7 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +23 -25
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +7 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +34 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +8 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +103 -95
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +28 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +4 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +65 -54
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +86 -60
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +13 -26
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +56 -46
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +63 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +35 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +44 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +3 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +70 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +26 -394
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +85 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +68 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +67 -45
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +177 -97
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +136 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +128 -112
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +51 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +25 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +21 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +5 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +2 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +30 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +19 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +58 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +31 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +325 -199
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +33 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +45 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +746 -456
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +145 -98
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +88 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +120 -51
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +25 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +58 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.js +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +47 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +171 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +0 -58
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +0 -213
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +0 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +0 -243
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +0 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +0 -166
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +0 -607
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +0 -255
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -396
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -379
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -117
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -141
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -961
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +0 -36
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +0 -447
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +0 -251
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +0 -42
|
@@ -19,7 +19,7 @@ import { IContextMenuService } from '@codingame/monaco-vscode-api/vscode/vs/plat
|
|
|
19
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 { ChatModelGroup,
|
|
22
|
+
import { ChatModelGroup, isLanguageModelProviderEntry, isLanguageModelGroupEntry, isStatusEntry, ChatModelsViewModel, SEARCH_SUGGESTIONS } from './chatModelsViewModel.js';
|
|
23
23
|
import { HighlightedLabel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
|
|
24
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';
|
|
@@ -34,6 +34,8 @@ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform
|
|
|
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
|
+
import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
|
|
38
|
+
import Severity from '@codingame/monaco-vscode-api/vscode/vs/base/common/severity';
|
|
37
39
|
|
|
38
40
|
var ModelNameColumnRenderer_1, MultiplierColumnRenderer_1, TokenLimitsColumnRenderer_1, ActionsColumnRenderer_1, ChatModelsWidget_1;
|
|
39
41
|
registerCss(chatModelsWidget);
|
|
@@ -43,35 +45,48 @@ const VENDOR_ROW_HEIGHT = 30;
|
|
|
43
45
|
const MODEL_ROW_HEIGHT = 26;
|
|
44
46
|
class ModelsFilterAction extends Action {
|
|
45
47
|
constructor() {
|
|
46
|
-
super(
|
|
47
|
-
}
|
|
48
|
-
async run() {
|
|
48
|
+
super("workbench.models.filter", ( localize(5373, "Filter")), ThemeIcon.asClassName(Codicon.filter));
|
|
49
49
|
}
|
|
50
|
+
async run() {}
|
|
50
51
|
}
|
|
51
|
-
function toggleFilter(currentQuery,
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
function toggleFilter(currentQuery, filter) {
|
|
53
|
+
const {
|
|
54
|
+
query,
|
|
55
|
+
synonyms = [],
|
|
56
|
+
excludes = []
|
|
57
|
+
} = filter;
|
|
58
|
+
const allSynonyms = [query, ...synonyms];
|
|
59
|
+
const isChecked = ( allSynonyms.some(q => currentQuery.includes(q)));
|
|
60
|
+
const hasExcludedQuery = ( excludes.some(q => currentQuery.includes(q)));
|
|
61
|
+
if (isChecked) {
|
|
59
62
|
let queryWithRemovedFilter = currentQuery;
|
|
60
|
-
for (const q of
|
|
61
|
-
queryWithRemovedFilter = queryWithRemovedFilter.replace(q,
|
|
63
|
+
for (const q of allSynonyms) {
|
|
64
|
+
queryWithRemovedFilter = queryWithRemovedFilter.replace(q, "");
|
|
65
|
+
}
|
|
66
|
+
return queryWithRemovedFilter.replace(/\s+/g, " ").trim();
|
|
67
|
+
} else if (hasExcludedQuery) {
|
|
68
|
+
let newQuery = currentQuery;
|
|
69
|
+
for (const q of excludes) {
|
|
70
|
+
newQuery = newQuery.replace(q, "");
|
|
62
71
|
}
|
|
63
|
-
|
|
72
|
+
newQuery = newQuery.replace(/\s+/g, " ").trim();
|
|
73
|
+
return newQuery ? `${newQuery} ${query}` : query;
|
|
74
|
+
} else {
|
|
75
|
+
const trimmedQuery = currentQuery.trim();
|
|
76
|
+
return trimmedQuery ? `${trimmedQuery} ${query}` : query;
|
|
64
77
|
}
|
|
65
78
|
}
|
|
66
79
|
let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropdownMenuActionViewItem extends DropdownMenuActionViewItem {
|
|
67
|
-
constructor(action, options,
|
|
68
|
-
super(action, {
|
|
80
|
+
constructor(action, options, search, viewModel, contextMenuService) {
|
|
81
|
+
super(action, {
|
|
82
|
+
getActions: () => this.getActions()
|
|
83
|
+
}, contextMenuService, {
|
|
69
84
|
...options,
|
|
70
85
|
classNames: action.class,
|
|
71
86
|
anchorAlignmentProvider: () => AnchorAlignment.RIGHT,
|
|
72
87
|
menuAsChild: true
|
|
73
88
|
});
|
|
74
|
-
this.
|
|
89
|
+
this.search = search;
|
|
75
90
|
this.viewModel = viewModel;
|
|
76
91
|
}
|
|
77
92
|
createGroupByAction(grouping, label) {
|
|
@@ -80,7 +95,7 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
|
|
|
80
95
|
label,
|
|
81
96
|
class: undefined,
|
|
82
97
|
enabled: true,
|
|
83
|
-
tooltip: ( localize(
|
|
98
|
+
tooltip: ( localize(5374, "Group by {0}", label)),
|
|
84
99
|
checked: this.viewModel.groupBy === grouping,
|
|
85
100
|
run: () => {
|
|
86
101
|
this.viewModel.groupBy = grouping;
|
|
@@ -89,111 +104,123 @@ let ModelsSearchFilterDropdownMenuActionViewItem = class ModelsSearchFilterDropd
|
|
|
89
104
|
}
|
|
90
105
|
createProviderAction(vendor, displayName) {
|
|
91
106
|
const query = `@provider:"${displayName}"`;
|
|
92
|
-
const currentQuery = this.
|
|
107
|
+
const currentQuery = this.search.getValue();
|
|
93
108
|
const isChecked = currentQuery.includes(query) || currentQuery.includes(`@provider:${vendor}`);
|
|
94
109
|
return {
|
|
95
110
|
id: `provider-${vendor}`,
|
|
96
111
|
label: displayName,
|
|
97
|
-
tooltip: ( localize(
|
|
112
|
+
tooltip: ( localize(5375, "Filter by {0}", displayName)),
|
|
98
113
|
class: undefined,
|
|
99
114
|
enabled: true,
|
|
100
115
|
checked: isChecked,
|
|
101
|
-
run: () => this.toggleFilterAndSearch(
|
|
116
|
+
run: () => this.toggleFilterAndSearch({
|
|
117
|
+
query,
|
|
118
|
+
synonyms: [`@provider:${vendor}`]
|
|
119
|
+
})
|
|
102
120
|
};
|
|
103
121
|
}
|
|
104
122
|
createCapabilityAction(capability, label) {
|
|
105
123
|
const query = `@capability:${capability}`;
|
|
106
|
-
const currentQuery = this.
|
|
124
|
+
const currentQuery = this.search.getValue();
|
|
107
125
|
const isChecked = currentQuery.includes(query);
|
|
108
126
|
return {
|
|
109
127
|
id: `capability-${capability}`,
|
|
110
128
|
label,
|
|
111
|
-
tooltip: ( localize(
|
|
129
|
+
tooltip: ( localize(5376, "Filter by {0}", label)),
|
|
112
130
|
class: undefined,
|
|
113
131
|
enabled: true,
|
|
114
132
|
checked: isChecked,
|
|
115
|
-
run: () => this.toggleFilterAndSearch(
|
|
133
|
+
run: () => this.toggleFilterAndSearch({
|
|
134
|
+
query
|
|
135
|
+
})
|
|
116
136
|
};
|
|
117
137
|
}
|
|
118
138
|
createVisibleAction(visible, label) {
|
|
119
139
|
const query = `@visible:${visible}`;
|
|
120
|
-
const
|
|
121
|
-
const currentQuery = this.searchWidget.getValue();
|
|
140
|
+
const currentQuery = this.search.getValue();
|
|
122
141
|
const isChecked = currentQuery.includes(query);
|
|
123
142
|
return {
|
|
124
143
|
id: `visible-${visible}`,
|
|
125
144
|
label,
|
|
126
|
-
tooltip: ( localize(
|
|
145
|
+
tooltip: ( localize(5377, "Filter by {0}", label)),
|
|
127
146
|
class: undefined,
|
|
128
147
|
enabled: true,
|
|
129
148
|
checked: isChecked,
|
|
130
|
-
run: () => this.toggleFilterAndSearch(
|
|
149
|
+
run: () => this.toggleFilterAndSearch({
|
|
150
|
+
query,
|
|
151
|
+
excludes: [`@visible:${!visible}`]
|
|
152
|
+
})
|
|
131
153
|
};
|
|
132
154
|
}
|
|
133
|
-
toggleFilterAndSearch(
|
|
134
|
-
const currentQuery = this.
|
|
135
|
-
const newQuery = toggleFilter(currentQuery,
|
|
136
|
-
this.
|
|
137
|
-
this.searchWidget.focus();
|
|
155
|
+
toggleFilterAndSearch(filter) {
|
|
156
|
+
const currentQuery = this.search.getValue();
|
|
157
|
+
const newQuery = toggleFilter(currentQuery, filter);
|
|
158
|
+
this.search.setValue(newQuery);
|
|
138
159
|
}
|
|
139
160
|
getActions() {
|
|
140
161
|
const actions = [];
|
|
141
|
-
actions.push(this.
|
|
142
|
-
actions.push(this.createVisibleAction(false, ( localize(5211, 'Hidden'))));
|
|
162
|
+
actions.push(this.createCapabilityAction("tools", ( localize(5378, "Tools"))), this.createCapabilityAction("vision", ( localize(5379, "Vision"))), this.createCapabilityAction("agent", ( localize(5380, "Agent Mode"))));
|
|
143
163
|
actions.push(( new Separator()));
|
|
144
|
-
actions.push(this.
|
|
164
|
+
actions.push(this.createVisibleAction(true, ( localize(5381, "Visible in Chat Model Picker"))));
|
|
165
|
+
actions.push(this.createVisibleAction(false, ( localize(5382, "Hidden in Chat Model Picker"))));
|
|
145
166
|
const configuredVendors = this.viewModel.getConfiguredVendors();
|
|
146
167
|
if (configuredVendors.length > 1) {
|
|
147
168
|
actions.push(( new Separator()));
|
|
148
169
|
actions.push(...( configuredVendors.map(
|
|
149
|
-
vendor => this.createProviderAction(vendor.vendor, vendor.
|
|
170
|
+
vendor => this.createProviderAction(vendor.vendor.vendor, vendor.group.name)
|
|
150
171
|
)));
|
|
151
172
|
}
|
|
152
173
|
actions.push(( new Separator()));
|
|
153
174
|
const groupByActions = [];
|
|
154
|
-
groupByActions.push(this.createGroupByAction(ChatModelGroup.Vendor, ( localize(
|
|
155
|
-
groupByActions.push(this.createGroupByAction(ChatModelGroup.Visibility, ( localize(
|
|
156
|
-
actions.push(( new SubmenuAction(
|
|
175
|
+
groupByActions.push(this.createGroupByAction(ChatModelGroup.Vendor, ( localize(5383, "Provider"))));
|
|
176
|
+
groupByActions.push(this.createGroupByAction(ChatModelGroup.Visibility, ( localize(5384, "Visibility (Chat Model Picker)"))));
|
|
177
|
+
actions.push(( new SubmenuAction("groupBy", ( localize(5385, "Group By")), groupByActions)));
|
|
157
178
|
return actions;
|
|
158
179
|
}
|
|
159
180
|
};
|
|
160
|
-
ModelsSearchFilterDropdownMenuActionViewItem = ( __decorate([
|
|
161
|
-
( __param(4, IContextMenuService))
|
|
162
|
-
], ModelsSearchFilterDropdownMenuActionViewItem));
|
|
181
|
+
ModelsSearchFilterDropdownMenuActionViewItem = ( __decorate([( __param(4, IContextMenuService))], ModelsSearchFilterDropdownMenuActionViewItem));
|
|
163
182
|
class Delegate {
|
|
164
183
|
constructor() {
|
|
165
184
|
this.headerRowHeight = HEADER_HEIGHT;
|
|
166
185
|
}
|
|
167
186
|
getHeight(element) {
|
|
168
|
-
return
|
|
187
|
+
return isLanguageModelProviderEntry(element) || isLanguageModelGroupEntry(element) ? VENDOR_ROW_HEIGHT : MODEL_ROW_HEIGHT;
|
|
169
188
|
}
|
|
170
189
|
}
|
|
171
190
|
class ModelsTableColumnRenderer {
|
|
172
191
|
renderElement(element, index, templateData) {
|
|
173
192
|
templateData.elementDisposables.clear();
|
|
174
|
-
const isVendor =
|
|
175
|
-
const isGroup =
|
|
176
|
-
|
|
177
|
-
templateData.container.
|
|
178
|
-
templateData.container.parentElement.classList.toggle(
|
|
179
|
-
templateData.container.parentElement.classList.toggle(
|
|
193
|
+
const isVendor = isLanguageModelProviderEntry(element);
|
|
194
|
+
const isGroup = isLanguageModelGroupEntry(element);
|
|
195
|
+
const isStatus = isStatusEntry(element);
|
|
196
|
+
templateData.container.classList.add("models-table-column");
|
|
197
|
+
templateData.container.parentElement.classList.toggle("models-vendor-row", isVendor || isGroup);
|
|
198
|
+
templateData.container.parentElement.classList.toggle("models-model-row", !isVendor && !isGroup);
|
|
199
|
+
templateData.container.parentElement.classList.toggle("models-status-row", isStatus);
|
|
200
|
+
templateData.container.parentElement.classList.toggle(
|
|
201
|
+
"model-hidden",
|
|
202
|
+
!isVendor && !isGroup && !isStatus && !element.model.visible
|
|
203
|
+
);
|
|
180
204
|
if (isVendor) {
|
|
181
205
|
this.renderVendorElement(element, index, templateData);
|
|
182
|
-
}
|
|
183
|
-
else if (isGroup) {
|
|
206
|
+
} else if (isGroup) {
|
|
184
207
|
this.renderGroupElement(element, index, templateData);
|
|
185
|
-
}
|
|
186
|
-
|
|
208
|
+
} else if (isStatus) {
|
|
209
|
+
this.renderStatusElement(element, index, templateData);
|
|
210
|
+
} else {
|
|
187
211
|
this.renderModelElement(element, index, templateData);
|
|
188
212
|
}
|
|
189
213
|
}
|
|
214
|
+
renderStatusElement(element, index, templateData) {}
|
|
190
215
|
disposeTemplate(templateData) {
|
|
191
216
|
templateData.elementDisposables.dispose();
|
|
192
217
|
templateData.disposables.dispose();
|
|
193
218
|
}
|
|
194
219
|
}
|
|
195
220
|
class GutterColumnRenderer extends ModelsTableColumnRenderer {
|
|
196
|
-
static {
|
|
221
|
+
static {
|
|
222
|
+
this.TEMPLATE_ID = "gutter";
|
|
223
|
+
}
|
|
197
224
|
constructor(viewModel) {
|
|
198
225
|
super();
|
|
199
226
|
this.viewModel = viewModel;
|
|
@@ -202,7 +229,7 @@ class GutterColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
202
229
|
renderTemplate(container) {
|
|
203
230
|
const disposables = ( new DisposableStore());
|
|
204
231
|
const elementDisposables = ( new DisposableStore());
|
|
205
|
-
container.classList.add(
|
|
232
|
+
container.classList.add("models-gutter-column");
|
|
206
233
|
const actionBar = disposables.add(( new ActionBar(container)));
|
|
207
234
|
return {
|
|
208
235
|
listRowElement: container.parentElement?.parentElement ?? null,
|
|
@@ -224,36 +251,48 @@ class GutterColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
224
251
|
}
|
|
225
252
|
renderCollapsableElement(entry, templateData) {
|
|
226
253
|
if (templateData.listRowElement) {
|
|
227
|
-
templateData.listRowElement.setAttribute(
|
|
254
|
+
templateData.listRowElement.setAttribute("aria-expanded", entry.collapsed ? "false" : "true");
|
|
228
255
|
}
|
|
229
|
-
const label = entry.collapsed ? ( localize(
|
|
256
|
+
const label = entry.collapsed ? ( localize(5386, "Expand")) : ( localize(5387, "Collapse"));
|
|
230
257
|
const toggleCollapseAction = {
|
|
231
|
-
id:
|
|
258
|
+
id: "toggleCollapse",
|
|
232
259
|
label,
|
|
233
260
|
tooltip: label,
|
|
234
261
|
enabled: true,
|
|
235
262
|
class: ThemeIcon.asClassName(entry.collapsed ? Codicon.chevronRight : Codicon.chevronDown),
|
|
236
263
|
run: () => this.viewModel.toggleCollapsed(entry)
|
|
237
264
|
};
|
|
238
|
-
templateData.actionBar.push(toggleCollapseAction, {
|
|
265
|
+
templateData.actionBar.push(toggleCollapseAction, {
|
|
266
|
+
icon: true,
|
|
267
|
+
label: false
|
|
268
|
+
});
|
|
239
269
|
}
|
|
240
270
|
renderModelElement(entry, index, templateData) {
|
|
241
|
-
const {
|
|
242
|
-
|
|
271
|
+
const {
|
|
272
|
+
model: modelEntry
|
|
273
|
+
} = entry;
|
|
274
|
+
const isVisible = modelEntry.visible;
|
|
243
275
|
const toggleVisibilityAction = toAction({
|
|
244
|
-
id:
|
|
245
|
-
label: isVisible ? ( localize(
|
|
276
|
+
id: "toggleVisibility",
|
|
277
|
+
label: isVisible ? ( localize(5388, "Hide")) : ( localize(5389, "Show")),
|
|
246
278
|
class: `model-visibility-toggle ${isVisible ? `${ThemeIcon.asClassName(Codicon.eye)} model-visible` : `${ThemeIcon.asClassName(Codicon.eyeClosed)} model-hidden`}`,
|
|
247
|
-
tooltip: isVisible ? ( localize(
|
|
279
|
+
tooltip: isVisible ? ( localize(5390, "Hide in the chat model picker")) : ( localize(5391, "Show in the chat model picker")),
|
|
248
280
|
checked: !isVisible,
|
|
249
281
|
run: async () => this.viewModel.toggleVisibility(entry)
|
|
250
282
|
});
|
|
251
|
-
templateData.actionBar.push(toggleVisibilityAction, {
|
|
283
|
+
templateData.actionBar.push(toggleVisibilityAction, {
|
|
284
|
+
icon: true,
|
|
285
|
+
label: false
|
|
286
|
+
});
|
|
252
287
|
}
|
|
253
288
|
}
|
|
254
289
|
let ModelNameColumnRenderer = class ModelNameColumnRenderer extends ModelsTableColumnRenderer {
|
|
255
|
-
static {
|
|
256
|
-
|
|
290
|
+
static {
|
|
291
|
+
ModelNameColumnRenderer_1 = this;
|
|
292
|
+
}
|
|
293
|
+
static {
|
|
294
|
+
this.TEMPLATE_ID = "modelName";
|
|
295
|
+
}
|
|
257
296
|
constructor(hoverService) {
|
|
258
297
|
super();
|
|
259
298
|
this.hoverService = hoverService;
|
|
@@ -262,75 +301,110 @@ let ModelNameColumnRenderer = class ModelNameColumnRenderer extends ModelsTableC
|
|
|
262
301
|
renderTemplate(container) {
|
|
263
302
|
const disposables = ( new DisposableStore());
|
|
264
303
|
const elementDisposables = ( new DisposableStore());
|
|
265
|
-
const nameContainer = append(container, $(
|
|
266
|
-
const
|
|
267
|
-
const
|
|
268
|
-
const
|
|
304
|
+
const nameContainer = append(container, $(".model-name-container"));
|
|
305
|
+
const statusIcon = append(nameContainer, $(".status-icon"));
|
|
306
|
+
const nameLabel = disposables.add(( new HighlightedLabel(append(nameContainer, $(".model-name")))));
|
|
307
|
+
const modelStatusIcon = append(nameContainer, $(".model-status-icon"));
|
|
308
|
+
const actionBar = disposables.add(( new ActionBar(append(nameContainer, $(".model-name-actions")))));
|
|
269
309
|
return {
|
|
270
310
|
container,
|
|
271
311
|
statusIcon,
|
|
272
312
|
nameLabel,
|
|
313
|
+
modelStatusIcon,
|
|
273
314
|
actionBar,
|
|
274
315
|
disposables,
|
|
275
316
|
elementDisposables
|
|
276
317
|
};
|
|
277
318
|
}
|
|
278
319
|
renderElement(entry, index, templateData) {
|
|
279
|
-
clearNode(templateData.
|
|
320
|
+
clearNode(templateData.modelStatusIcon);
|
|
280
321
|
templateData.actionBar.clear();
|
|
322
|
+
templateData.nameLabel.element.classList.remove("error-status", "warning-status", "info-status");
|
|
281
323
|
super.renderElement(entry, index, templateData);
|
|
282
324
|
}
|
|
283
325
|
renderVendorElement(entry, index, templateData) {
|
|
284
|
-
templateData.nameLabel.set(entry.vendorEntry.
|
|
326
|
+
templateData.nameLabel.set(entry.vendorEntry.group.name, undefined);
|
|
285
327
|
}
|
|
286
328
|
renderGroupElement(entry, index, templateData) {
|
|
287
329
|
templateData.nameLabel.set(entry.label, undefined);
|
|
288
330
|
}
|
|
289
331
|
renderModelElement(entry, index, templateData) {
|
|
290
|
-
const {
|
|
291
|
-
|
|
332
|
+
const {
|
|
333
|
+
model: modelEntry,
|
|
334
|
+
modelNameMatches
|
|
335
|
+
} = entry;
|
|
336
|
+
templateData.statusIcon.style.display = "none";
|
|
337
|
+
templateData.modelStatusIcon.className = "model-status-icon";
|
|
292
338
|
if (modelEntry.metadata.statusIcon) {
|
|
293
|
-
templateData.
|
|
294
|
-
templateData.
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
templateData.statusIcon.style.display = 'none';
|
|
339
|
+
templateData.modelStatusIcon.classList.add(...ThemeIcon.asClassNameArray(modelEntry.metadata.statusIcon));
|
|
340
|
+
templateData.modelStatusIcon.style.display = "";
|
|
341
|
+
} else {
|
|
342
|
+
templateData.modelStatusIcon.style.display = "none";
|
|
298
343
|
}
|
|
299
344
|
templateData.nameLabel.set(modelEntry.metadata.name, modelNameMatches);
|
|
300
|
-
const markdown = ( new MarkdownString(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
markdown.appendMarkdown(
|
|
345
|
+
const markdown = ( new MarkdownString("", {
|
|
346
|
+
isTrusted: true,
|
|
347
|
+
supportThemeIcons: true
|
|
348
|
+
}));
|
|
349
|
+
markdown.appendMarkdown(`**${entry.model.metadata.name}**`);
|
|
350
|
+
if (entry.model.metadata.id !== entry.model.metadata.version) {
|
|
351
|
+
markdown.appendMarkdown(
|
|
352
|
+
` <span style="background-color:#8080802B;"> _${entry.model.metadata.id}@${entry.model.metadata.version}_ </span>`
|
|
353
|
+
);
|
|
354
|
+
} else {
|
|
355
|
+
markdown.appendMarkdown(
|
|
356
|
+
` <span style="background-color:#8080802B;"> _${entry.model.metadata.id}_ </span>`
|
|
357
|
+
);
|
|
307
358
|
}
|
|
308
359
|
markdown.appendText(`\n`);
|
|
309
|
-
if (entry.
|
|
310
|
-
if (entry.
|
|
311
|
-
markdown.appendMarkdown(`$(${entry.
|
|
360
|
+
if (entry.model.metadata.statusIcon && entry.model.metadata.tooltip) {
|
|
361
|
+
if (entry.model.metadata.statusIcon) {
|
|
362
|
+
markdown.appendMarkdown(`$(${entry.model.metadata.statusIcon.id}) `);
|
|
312
363
|
}
|
|
313
|
-
markdown.appendMarkdown(`${entry.
|
|
364
|
+
markdown.appendMarkdown(`${entry.model.metadata.tooltip}`);
|
|
314
365
|
markdown.appendText(`\n`);
|
|
315
366
|
}
|
|
316
|
-
if (!entry.
|
|
317
|
-
markdown.appendMarkdown(`\n\n${( localize(
|
|
367
|
+
if (!entry.model.visible) {
|
|
368
|
+
markdown.appendMarkdown(`\n\n${( localize(5392, "This model is hidden in the chat model picker"))}`);
|
|
318
369
|
}
|
|
319
|
-
templateData.elementDisposables.add(
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
370
|
+
templateData.elementDisposables.add(
|
|
371
|
+
this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
|
|
372
|
+
content: markdown,
|
|
373
|
+
appearance: {
|
|
374
|
+
compact: true,
|
|
375
|
+
skipFadeInAnimation: true
|
|
376
|
+
}
|
|
377
|
+
}))
|
|
378
|
+
);
|
|
379
|
+
}
|
|
380
|
+
renderStatusElement(entry, index, templateData) {
|
|
381
|
+
templateData.statusIcon.style.display = "";
|
|
382
|
+
templateData.statusIcon.className = "status-icon";
|
|
383
|
+
switch (entry.severity) {
|
|
384
|
+
case Severity.Error:
|
|
385
|
+
templateData.nameLabel.element.classList.add("error-status");
|
|
386
|
+
templateData.statusIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.error));
|
|
387
|
+
break;
|
|
388
|
+
case Severity.Warning:
|
|
389
|
+
templateData.nameLabel.element.classList.add("warning-status");
|
|
390
|
+
templateData.statusIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.warning));
|
|
391
|
+
break;
|
|
392
|
+
case Severity.Info:
|
|
393
|
+
templateData.nameLabel.element.classList.add("info-status");
|
|
394
|
+
templateData.statusIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.info));
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
templateData.nameLabel.set(entry.message, undefined, entry.message);
|
|
326
398
|
}
|
|
327
399
|
};
|
|
328
|
-
ModelNameColumnRenderer = ModelNameColumnRenderer_1 = ( __decorate([
|
|
329
|
-
( __param(0, IHoverService))
|
|
330
|
-
], ModelNameColumnRenderer));
|
|
400
|
+
ModelNameColumnRenderer = ModelNameColumnRenderer_1 = ( __decorate([( __param(0, IHoverService))], ModelNameColumnRenderer));
|
|
331
401
|
let MultiplierColumnRenderer = class MultiplierColumnRenderer extends ModelsTableColumnRenderer {
|
|
332
|
-
static {
|
|
333
|
-
|
|
402
|
+
static {
|
|
403
|
+
MultiplierColumnRenderer_1 = this;
|
|
404
|
+
}
|
|
405
|
+
static {
|
|
406
|
+
this.TEMPLATE_ID = "multiplier";
|
|
407
|
+
}
|
|
334
408
|
constructor(hoverService) {
|
|
335
409
|
super();
|
|
336
410
|
this.hoverService = hoverService;
|
|
@@ -339,7 +413,7 @@ let MultiplierColumnRenderer = class MultiplierColumnRenderer extends ModelsTabl
|
|
|
339
413
|
renderTemplate(container) {
|
|
340
414
|
const disposables = ( new DisposableStore());
|
|
341
415
|
const elementDisposables = ( new DisposableStore());
|
|
342
|
-
const multiplierElement = append(container, $(
|
|
416
|
+
const multiplierElement = append(container, $(".model-multiplier"));
|
|
343
417
|
return {
|
|
344
418
|
container,
|
|
345
419
|
multiplierElement,
|
|
@@ -347,36 +421,40 @@ let MultiplierColumnRenderer = class MultiplierColumnRenderer extends ModelsTabl
|
|
|
347
421
|
elementDisposables
|
|
348
422
|
};
|
|
349
423
|
}
|
|
350
|
-
|
|
351
|
-
templateData.multiplierElement.textContent =
|
|
352
|
-
|
|
353
|
-
renderGroupElement(entry, index, templateData) {
|
|
354
|
-
templateData.multiplierElement.textContent = '';
|
|
424
|
+
renderElement(entry, index, templateData) {
|
|
425
|
+
templateData.multiplierElement.textContent = "";
|
|
426
|
+
super.renderElement(entry, index, templateData);
|
|
355
427
|
}
|
|
428
|
+
renderGroupElement(element, index, templateData) {}
|
|
429
|
+
renderVendorElement(element, index, templateData) {}
|
|
356
430
|
renderModelElement(entry, index, templateData) {
|
|
357
|
-
const multiplierText =
|
|
431
|
+
const multiplierText = entry.model.metadata.multiplier ?? "-";
|
|
358
432
|
templateData.multiplierElement.textContent = multiplierText;
|
|
359
|
-
if (multiplierText !==
|
|
360
|
-
templateData.elementDisposables.add(
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
433
|
+
if (multiplierText !== "-") {
|
|
434
|
+
templateData.elementDisposables.add(
|
|
435
|
+
this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
|
|
436
|
+
content: ( localize(
|
|
437
|
+
5393,
|
|
438
|
+
"Every chat message counts {0} towards your premium model request quota",
|
|
439
|
+
multiplierText
|
|
440
|
+
)),
|
|
441
|
+
appearance: {
|
|
442
|
+
compact: true,
|
|
443
|
+
skipFadeInAnimation: true
|
|
444
|
+
}
|
|
445
|
+
}))
|
|
446
|
+
);
|
|
371
447
|
}
|
|
372
448
|
}
|
|
373
449
|
};
|
|
374
|
-
MultiplierColumnRenderer = MultiplierColumnRenderer_1 = ( __decorate([
|
|
375
|
-
( __param(0, IHoverService))
|
|
376
|
-
], MultiplierColumnRenderer));
|
|
450
|
+
MultiplierColumnRenderer = MultiplierColumnRenderer_1 = ( __decorate([( __param(0, IHoverService))], MultiplierColumnRenderer));
|
|
377
451
|
let TokenLimitsColumnRenderer = class TokenLimitsColumnRenderer extends ModelsTableColumnRenderer {
|
|
378
|
-
static {
|
|
379
|
-
|
|
452
|
+
static {
|
|
453
|
+
TokenLimitsColumnRenderer_1 = this;
|
|
454
|
+
}
|
|
455
|
+
static {
|
|
456
|
+
this.TEMPLATE_ID = "tokenLimits";
|
|
457
|
+
}
|
|
380
458
|
constructor(hoverService) {
|
|
381
459
|
super();
|
|
382
460
|
this.hoverService = hoverService;
|
|
@@ -385,7 +463,7 @@ let TokenLimitsColumnRenderer = class TokenLimitsColumnRenderer extends ModelsTa
|
|
|
385
463
|
renderTemplate(container) {
|
|
386
464
|
const disposables = ( new DisposableStore());
|
|
387
465
|
const elementDisposables = ( new DisposableStore());
|
|
388
|
-
const tokenLimitsElement = append(container, $(
|
|
466
|
+
const tokenLimitsElement = append(container, $(".model-token-limits"));
|
|
389
467
|
return {
|
|
390
468
|
container,
|
|
391
469
|
tokenLimitsElement,
|
|
@@ -397,47 +475,50 @@ let TokenLimitsColumnRenderer = class TokenLimitsColumnRenderer extends ModelsTa
|
|
|
397
475
|
clearNode(templateData.tokenLimitsElement);
|
|
398
476
|
super.renderElement(entry, index, templateData);
|
|
399
477
|
}
|
|
400
|
-
renderVendorElement(entry, index, templateData) {
|
|
401
|
-
}
|
|
402
|
-
renderGroupElement(entry, index, templateData) {
|
|
403
|
-
}
|
|
478
|
+
renderVendorElement(entry, index, templateData) {}
|
|
479
|
+
renderGroupElement(entry, index, templateData) {}
|
|
404
480
|
renderModelElement(entry, index, templateData) {
|
|
405
|
-
const {
|
|
406
|
-
|
|
481
|
+
const {
|
|
482
|
+
model: modelEntry
|
|
483
|
+
} = entry;
|
|
484
|
+
const markdown = ( new MarkdownString("", {
|
|
485
|
+
isTrusted: true,
|
|
486
|
+
supportThemeIcons: true
|
|
487
|
+
}));
|
|
407
488
|
if (modelEntry.metadata.maxInputTokens || modelEntry.metadata.maxOutputTokens) {
|
|
408
489
|
let addSeparator = false;
|
|
409
|
-
markdown.appendMarkdown(`${( localize(
|
|
490
|
+
markdown.appendMarkdown(`${( localize(5394, "Context Size"))}: `);
|
|
410
491
|
if (modelEntry.metadata.maxInputTokens) {
|
|
411
|
-
const inputDiv = append(templateData.tokenLimitsElement, $(
|
|
412
|
-
append(inputDiv, $(
|
|
413
|
-
const inputText = append(inputDiv, $(
|
|
492
|
+
const inputDiv = append(templateData.tokenLimitsElement, $(".token-limit-item"));
|
|
493
|
+
append(inputDiv, $("span.codicon.codicon-arrow-down"));
|
|
494
|
+
const inputText = append(inputDiv, $("span"));
|
|
414
495
|
inputText.textContent = formatTokenCount(modelEntry.metadata.maxInputTokens);
|
|
415
|
-
markdown.appendMarkdown(`$(arrow-down) ${modelEntry.metadata.maxInputTokens} (${( localize(
|
|
496
|
+
markdown.appendMarkdown(`$(arrow-down) ${modelEntry.metadata.maxInputTokens} (${( localize(5395, "Input"))})`);
|
|
416
497
|
addSeparator = true;
|
|
417
498
|
}
|
|
418
499
|
if (modelEntry.metadata.maxOutputTokens) {
|
|
419
|
-
const outputDiv = append(templateData.tokenLimitsElement, $(
|
|
420
|
-
append(outputDiv, $(
|
|
421
|
-
const outputText = append(outputDiv, $(
|
|
500
|
+
const outputDiv = append(templateData.tokenLimitsElement, $(".token-limit-item"));
|
|
501
|
+
append(outputDiv, $("span.codicon.codicon-arrow-up"));
|
|
502
|
+
const outputText = append(outputDiv, $("span"));
|
|
422
503
|
outputText.textContent = formatTokenCount(modelEntry.metadata.maxOutputTokens);
|
|
423
504
|
if (addSeparator) {
|
|
424
505
|
markdown.appendText(` | `);
|
|
425
506
|
}
|
|
426
|
-
markdown.appendMarkdown(`$(arrow-up) ${modelEntry.metadata.maxOutputTokens} (${( localize(
|
|
507
|
+
markdown.appendMarkdown(`$(arrow-up) ${modelEntry.metadata.maxOutputTokens} (${( localize(5396, "Output"))})`);
|
|
427
508
|
}
|
|
428
509
|
}
|
|
429
|
-
templateData.elementDisposables.add(
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
510
|
+
templateData.elementDisposables.add(
|
|
511
|
+
this.hoverService.setupDelayedHoverAtMouse(templateData.container, () => ({
|
|
512
|
+
content: markdown,
|
|
513
|
+
appearance: {
|
|
514
|
+
compact: true,
|
|
515
|
+
skipFadeInAnimation: true
|
|
516
|
+
}
|
|
517
|
+
}))
|
|
518
|
+
);
|
|
436
519
|
}
|
|
437
520
|
};
|
|
438
|
-
TokenLimitsColumnRenderer = TokenLimitsColumnRenderer_1 = ( __decorate([
|
|
439
|
-
( __param(0, IHoverService))
|
|
440
|
-
], TokenLimitsColumnRenderer));
|
|
521
|
+
TokenLimitsColumnRenderer = TokenLimitsColumnRenderer_1 = ( __decorate([( __param(0, IHoverService))], TokenLimitsColumnRenderer));
|
|
441
522
|
class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
|
|
442
523
|
constructor() {
|
|
443
524
|
super(...arguments);
|
|
@@ -445,12 +526,14 @@ class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
445
526
|
this._onDidClickCapability = ( new Emitter());
|
|
446
527
|
this.onDidClickCapability = this._onDidClickCapability.event;
|
|
447
528
|
}
|
|
448
|
-
static {
|
|
529
|
+
static {
|
|
530
|
+
this.TEMPLATE_ID = "capabilities";
|
|
531
|
+
}
|
|
449
532
|
renderTemplate(container) {
|
|
450
533
|
const disposables = ( new DisposableStore());
|
|
451
534
|
const elementDisposables = ( new DisposableStore());
|
|
452
|
-
container.classList.add(
|
|
453
|
-
const metadataRow = append(container, $(
|
|
535
|
+
container.classList.add("model-capability-column");
|
|
536
|
+
const metadataRow = append(container, $(".model-capabilities"));
|
|
454
537
|
return {
|
|
455
538
|
container,
|
|
456
539
|
metadataRow,
|
|
@@ -462,44 +545,80 @@ class CapabilitiesColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
462
545
|
clearNode(templateData.metadataRow);
|
|
463
546
|
super.renderElement(entry, index, templateData);
|
|
464
547
|
}
|
|
465
|
-
renderVendorElement(entry, index, templateData) {
|
|
466
|
-
}
|
|
467
|
-
renderGroupElement(entry, index, templateData) {
|
|
468
|
-
}
|
|
548
|
+
renderVendorElement(entry, index, templateData) {}
|
|
549
|
+
renderGroupElement(entry, index, templateData) {}
|
|
469
550
|
renderModelElement(entry, index, templateData) {
|
|
470
|
-
const {
|
|
551
|
+
const {
|
|
552
|
+
model: modelEntry,
|
|
553
|
+
capabilityMatches
|
|
554
|
+
} = entry;
|
|
471
555
|
if (modelEntry.metadata.capabilities?.toolCalling) {
|
|
472
|
-
templateData.elementDisposables.add(this.createCapabilityButton(
|
|
556
|
+
templateData.elementDisposables.add(this.createCapabilityButton(
|
|
557
|
+
templateData.metadataRow,
|
|
558
|
+
capabilityMatches?.includes("toolCalling") || false,
|
|
559
|
+
( localize(5397, "Tools")),
|
|
560
|
+
"tools"
|
|
561
|
+
));
|
|
473
562
|
}
|
|
474
563
|
if (modelEntry.metadata.capabilities?.vision) {
|
|
475
|
-
templateData.elementDisposables.add(this.createCapabilityButton(
|
|
564
|
+
templateData.elementDisposables.add(this.createCapabilityButton(
|
|
565
|
+
templateData.metadataRow,
|
|
566
|
+
capabilityMatches?.includes("vision") || false,
|
|
567
|
+
( localize(5398, "Vision")),
|
|
568
|
+
"vision"
|
|
569
|
+
));
|
|
476
570
|
}
|
|
477
571
|
}
|
|
478
572
|
createCapabilityButton(container, isActive, label, capability) {
|
|
479
573
|
const disposables = ( new DisposableStore());
|
|
480
|
-
const buttonContainer = append(container, $(
|
|
481
|
-
const button = disposables.add(( new Button(buttonContainer, {
|
|
482
|
-
|
|
483
|
-
|
|
574
|
+
const buttonContainer = append(container, $(".model-badge-container"));
|
|
575
|
+
const button = disposables.add(( new Button(buttonContainer, {
|
|
576
|
+
secondary: true
|
|
577
|
+
})));
|
|
578
|
+
button.element.classList.add("model-capability");
|
|
579
|
+
button.element.classList.toggle("active", isActive);
|
|
484
580
|
button.label = label;
|
|
485
581
|
disposables.add(button.onDidClick(() => this._onDidClickCapability.fire(capability)));
|
|
486
582
|
return disposables;
|
|
487
583
|
}
|
|
488
584
|
}
|
|
489
585
|
let ActionsColumnRenderer = class ActionsColumnRenderer extends ModelsTableColumnRenderer {
|
|
490
|
-
static {
|
|
491
|
-
|
|
492
|
-
|
|
586
|
+
static {
|
|
587
|
+
ActionsColumnRenderer_1 = this;
|
|
588
|
+
}
|
|
589
|
+
static {
|
|
590
|
+
this.TEMPLATE_ID = "actions";
|
|
591
|
+
}
|
|
592
|
+
constructor(
|
|
593
|
+
viewModel,
|
|
594
|
+
instantiationService,
|
|
595
|
+
languageModelsService,
|
|
596
|
+
dialogService,
|
|
597
|
+
commandService,
|
|
598
|
+
contextMenuService
|
|
599
|
+
) {
|
|
493
600
|
super();
|
|
494
601
|
this.viewModel = viewModel;
|
|
602
|
+
this.instantiationService = instantiationService;
|
|
603
|
+
this.languageModelsService = languageModelsService;
|
|
604
|
+
this.dialogService = dialogService;
|
|
495
605
|
this.commandService = commandService;
|
|
606
|
+
this.contextMenuService = contextMenuService;
|
|
496
607
|
this.templateId = ActionsColumnRenderer_1.TEMPLATE_ID;
|
|
497
608
|
}
|
|
498
609
|
renderTemplate(container) {
|
|
499
610
|
const disposables = ( new DisposableStore());
|
|
500
611
|
const elementDisposables = ( new DisposableStore());
|
|
501
|
-
|
|
502
|
-
const
|
|
612
|
+
container.classList.add("models-actions-column");
|
|
613
|
+
const parent = append(container, $(".actions-container"));
|
|
614
|
+
const actionBar = disposables.add(
|
|
615
|
+
this.instantiationService.createInstance(ToolBar, parent, this.contextMenuService, {
|
|
616
|
+
icon: true,
|
|
617
|
+
label: false,
|
|
618
|
+
moreIcon: Codicon.gear,
|
|
619
|
+
anchorAlignmentProvider: () => AnchorAlignment.RIGHT
|
|
620
|
+
})
|
|
621
|
+
);
|
|
503
622
|
return {
|
|
504
623
|
container,
|
|
505
624
|
actionBar,
|
|
@@ -508,42 +627,65 @@ let ActionsColumnRenderer = class ActionsColumnRenderer extends ModelsTableColum
|
|
|
508
627
|
};
|
|
509
628
|
}
|
|
510
629
|
renderElement(entry, index, templateData) {
|
|
511
|
-
templateData.actionBar.
|
|
630
|
+
templateData.actionBar.setActions([]);
|
|
512
631
|
super.renderElement(entry, index, templateData);
|
|
513
632
|
}
|
|
514
633
|
renderVendorElement(entry, index, templateData) {
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
634
|
+
const {
|
|
635
|
+
vendorEntry
|
|
636
|
+
} = entry;
|
|
637
|
+
const primaryActions = [];
|
|
638
|
+
const secondaryActions = [];
|
|
639
|
+
if (vendorEntry.vendor.configuration) {
|
|
640
|
+
secondaryActions.push(toAction({
|
|
641
|
+
id: "configureAction",
|
|
642
|
+
label: ( localize(5399, "Configure...")),
|
|
643
|
+
run: () => this.languageModelsService.configureLanguageModelsProviderGroup(vendorEntry.vendor.vendor, vendorEntry.group.name)
|
|
644
|
+
}));
|
|
645
|
+
secondaryActions.push(toAction({
|
|
646
|
+
id: "deleteAction",
|
|
647
|
+
label: ( localize(5400, "Delete")),
|
|
648
|
+
class: ThemeIcon.asClassName(Codicon.trash),
|
|
649
|
+
run: async () => {
|
|
650
|
+
const result = await this.dialogService.confirm({
|
|
651
|
+
type: "info",
|
|
652
|
+
message: ( localize(5401, "Would you like to delete {0}?", vendorEntry.group.name))
|
|
653
|
+
});
|
|
654
|
+
if (!result.confirmed) {
|
|
655
|
+
return;
|
|
656
|
+
}
|
|
657
|
+
await this.languageModelsService.removeLanguageModelsProviderGroup(vendorEntry.vendor.vendor, vendorEntry.group.name);
|
|
658
|
+
}
|
|
659
|
+
}));
|
|
660
|
+
} else if (vendorEntry.vendor.managementCommand) {
|
|
661
|
+
primaryActions.push(toAction({
|
|
662
|
+
id: "manageVendor",
|
|
663
|
+
label: ( localize(5402, "Manage {0}...", vendorEntry.group.name)),
|
|
520
664
|
class: ThemeIcon.asClassName(Codicon.gear),
|
|
521
665
|
run: async () => {
|
|
522
|
-
await this.commandService.executeCommand(vendorEntry.managementCommand, vendorEntry.vendor);
|
|
666
|
+
await this.commandService.executeCommand(vendorEntry.vendor.managementCommand, vendorEntry.vendor.vendor);
|
|
523
667
|
this.viewModel.refresh();
|
|
524
668
|
}
|
|
525
|
-
});
|
|
526
|
-
templateData.actionBar.push(action, { icon: true, label: false });
|
|
669
|
+
}));
|
|
527
670
|
}
|
|
671
|
+
templateData.actionBar.setActions(primaryActions, secondaryActions);
|
|
528
672
|
}
|
|
529
|
-
renderGroupElement(entry, index, templateData) {
|
|
530
|
-
}
|
|
531
|
-
renderModelElement(entry, index, templateData) {
|
|
532
|
-
}
|
|
673
|
+
renderGroupElement(entry, index, templateData) {}
|
|
674
|
+
renderModelElement(entry, index, templateData) {}
|
|
533
675
|
};
|
|
534
|
-
ActionsColumnRenderer = ActionsColumnRenderer_1 = ( __decorate([
|
|
535
|
-
( __param(1, ICommandService))
|
|
536
|
-
], ActionsColumnRenderer));
|
|
676
|
+
ActionsColumnRenderer = ActionsColumnRenderer_1 = ( __decorate([( __param(1, IInstantiationService)), ( __param(2, ILanguageModelsService)), ( __param(3, IDialogService)), ( __param(4, ICommandService)), ( __param(5, IContextMenuService))], ActionsColumnRenderer));
|
|
537
677
|
class ProviderColumnRenderer extends ModelsTableColumnRenderer {
|
|
538
678
|
constructor() {
|
|
539
679
|
super(...arguments);
|
|
540
680
|
this.templateId = ProviderColumnRenderer.TEMPLATE_ID;
|
|
541
681
|
}
|
|
542
|
-
static {
|
|
682
|
+
static {
|
|
683
|
+
this.TEMPLATE_ID = "provider";
|
|
684
|
+
}
|
|
543
685
|
renderTemplate(container) {
|
|
544
686
|
const disposables = ( new DisposableStore());
|
|
545
687
|
const elementDisposables = ( new DisposableStore());
|
|
546
|
-
const providerElement = append(container, $(
|
|
688
|
+
const providerElement = append(container, $(".model-provider"));
|
|
547
689
|
return {
|
|
548
690
|
container,
|
|
549
691
|
providerElement,
|
|
@@ -552,28 +694,40 @@ class ProviderColumnRenderer extends ModelsTableColumnRenderer {
|
|
|
552
694
|
};
|
|
553
695
|
}
|
|
554
696
|
renderVendorElement(entry, index, templateData) {
|
|
555
|
-
templateData.providerElement.textContent =
|
|
697
|
+
templateData.providerElement.textContent = "";
|
|
556
698
|
}
|
|
557
699
|
renderGroupElement(entry, index, templateData) {
|
|
558
|
-
templateData.providerElement.textContent =
|
|
700
|
+
templateData.providerElement.textContent = "";
|
|
559
701
|
}
|
|
560
702
|
renderModelElement(entry, index, templateData) {
|
|
561
|
-
templateData.providerElement.textContent = entry.
|
|
703
|
+
templateData.providerElement.textContent = entry.model.provider.vendor.displayName;
|
|
562
704
|
}
|
|
563
705
|
}
|
|
564
706
|
function formatTokenCount(count) {
|
|
565
707
|
if (count >= 1000000) {
|
|
566
708
|
return `${(count / 1000000).toFixed(1)}M`;
|
|
567
|
-
}
|
|
568
|
-
else if (count >= 1000) {
|
|
709
|
+
} else if (count >= 1000) {
|
|
569
710
|
return `${(count / 1000).toFixed(0)}K`;
|
|
570
711
|
}
|
|
571
712
|
return ( count.toString());
|
|
572
713
|
}
|
|
573
714
|
let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
574
|
-
static {
|
|
575
|
-
|
|
576
|
-
|
|
715
|
+
static {
|
|
716
|
+
ChatModelsWidget_1 = this;
|
|
717
|
+
}
|
|
718
|
+
static {
|
|
719
|
+
this.NUM_INSTANCES = 0;
|
|
720
|
+
}
|
|
721
|
+
constructor(
|
|
722
|
+
languageModelsService,
|
|
723
|
+
instantiationService,
|
|
724
|
+
extensionService,
|
|
725
|
+
contextMenuService,
|
|
726
|
+
chatEntitlementService,
|
|
727
|
+
editorProgressService,
|
|
728
|
+
commandService,
|
|
729
|
+
contextKeyService
|
|
730
|
+
) {
|
|
577
731
|
super();
|
|
578
732
|
this.languageModelsService = languageModelsService;
|
|
579
733
|
this.instantiationService = instantiationService;
|
|
@@ -587,70 +741,71 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
587
741
|
this.searchFocusContextKey = CONTEXT_MODELS_SEARCH_FOCUS.bindTo(contextKeyService);
|
|
588
742
|
this.delayedFiltering = ( new Delayer(200));
|
|
589
743
|
this.viewModel = this._register(this.instantiationService.createInstance(ChatModelsViewModel));
|
|
590
|
-
this.element = $$1(
|
|
744
|
+
this.element = $$1(".models-widget");
|
|
591
745
|
this.create(this.element);
|
|
592
746
|
const loadingPromise = this.extensionService.whenInstalledExtensionsRegistered().then(() => this.viewModel.refresh());
|
|
593
747
|
this.editorProgressService.showWhile(loadingPromise, 300);
|
|
594
748
|
}
|
|
595
749
|
create(container) {
|
|
596
|
-
const searchAndButtonContainer = append(container, $(
|
|
597
|
-
const placeholder = ( localize(
|
|
598
|
-
const searchContainer = append(searchAndButtonContainer, $(
|
|
599
|
-
this.searchWidget = this._register(
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
return
|
|
750
|
+
const searchAndButtonContainer = append(container, $(".models-search-and-button-container"));
|
|
751
|
+
const placeholder = ( localize(5403, "Type to search..."));
|
|
752
|
+
const searchContainer = append(searchAndButtonContainer, $(".models-search-container"));
|
|
753
|
+
this.searchWidget = this._register(
|
|
754
|
+
this.instantiationService.createInstance(SuggestEnabledInput, "chatModelsWidget.searchbox", searchContainer, {
|
|
755
|
+
triggerCharacters: ["@", ":"],
|
|
756
|
+
provideResults: query => {
|
|
757
|
+
const providerSuggestions = ( this.viewModel.getVendors().map(v => `@provider:"${v.displayName}"`));
|
|
758
|
+
const allSuggestions = [
|
|
759
|
+
...providerSuggestions,
|
|
760
|
+
...SEARCH_SUGGESTIONS.CAPABILITIES,
|
|
761
|
+
...SEARCH_SUGGESTIONS.VISIBILITY
|
|
762
|
+
];
|
|
763
|
+
if (!query.trim()) {
|
|
764
|
+
return allSuggestions;
|
|
765
|
+
}
|
|
766
|
+
const queryParts = query.split(/\s/g);
|
|
767
|
+
const lastPart = queryParts[queryParts.length - 1];
|
|
768
|
+
if (lastPart.startsWith("@provider:")) {
|
|
769
|
+
return providerSuggestions;
|
|
770
|
+
} else if (lastPart.startsWith("@capability:")) {
|
|
771
|
+
return SEARCH_SUGGESTIONS.CAPABILITIES;
|
|
772
|
+
} else if (lastPart.startsWith("@visible:")) {
|
|
773
|
+
return SEARCH_SUGGESTIONS.VISIBILITY;
|
|
774
|
+
} else if (lastPart.startsWith("@")) {
|
|
775
|
+
return allSuggestions;
|
|
776
|
+
}
|
|
777
|
+
return [];
|
|
624
778
|
}
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
}));
|
|
779
|
+
}, placeholder, `chatModelsWidget:searchinput:${ChatModelsWidget_1.NUM_INSTANCES++}`, {
|
|
780
|
+
placeholderText: placeholder,
|
|
781
|
+
styleOverrides: {
|
|
782
|
+
inputBorder: settingsTextInputBorder
|
|
783
|
+
},
|
|
784
|
+
focusContextKey: this.searchFocusContextKey
|
|
785
|
+
})
|
|
786
|
+
);
|
|
634
787
|
const filterAction = this._register(( new ModelsFilterAction()));
|
|
635
|
-
const clearSearchAction = this._register(( new Action(
|
|
636
|
-
|
|
637
|
-
this.searchWidget.focus();
|
|
638
|
-
})));
|
|
639
|
-
const collapseAllAction = this._register(( new Action('workbench.models.collapseAll', ( localize(5234, "Collapse All")), ThemeIcon.asClassName(Codicon.collapseAll), false, () => {
|
|
788
|
+
const clearSearchAction = this._register(( new Action("workbench.models.clearSearch", ( localize(5404, "Clear Search")), ThemeIcon.asClassName(preferencesClearInputIcon), false, () => this.clearSearch())));
|
|
789
|
+
const collapseAllAction = this._register(( new Action("workbench.models.collapseAll", ( localize(5405, "Collapse All")), ThemeIcon.asClassName(Codicon.collapseAll), false, () => {
|
|
640
790
|
this.viewModel.collapseAll();
|
|
641
791
|
})));
|
|
642
|
-
collapseAllAction.enabled = ( this.viewModel.viewModelEntries.some(e =>
|
|
643
|
-
this._register(
|
|
792
|
+
collapseAllAction.enabled = ( this.viewModel.viewModelEntries.some(e => isLanguageModelGroupEntry(e) || isLanguageModelProviderEntry(e)));
|
|
793
|
+
this._register(
|
|
794
|
+
this.viewModel.onDidChange(() => collapseAllAction.enabled = ( this.viewModel.viewModelEntries.some(e => isLanguageModelProviderEntry(e) || isLanguageModelGroupEntry(e))))
|
|
795
|
+
);
|
|
644
796
|
this._register(this.searchWidget.onInputDidChange(() => {
|
|
645
797
|
clearSearchAction.enabled = !!this.searchWidget.getValue();
|
|
646
798
|
this.filterModels();
|
|
647
799
|
}));
|
|
648
|
-
this.searchActionsContainer = append(searchContainer, $(
|
|
800
|
+
this.searchActionsContainer = append(searchContainer, $(".models-search-actions"));
|
|
649
801
|
const actions = [clearSearchAction, collapseAllAction, filterAction];
|
|
650
802
|
const toolBar = this._register(( new ToolBar(this.searchActionsContainer, this.contextMenuService, {
|
|
651
803
|
actionViewItemProvider: (action, options) => {
|
|
652
804
|
if (action.id === filterAction.id) {
|
|
653
|
-
return this.instantiationService.createInstance(ModelsSearchFilterDropdownMenuActionViewItem, action, options,
|
|
805
|
+
return this.instantiationService.createInstance(ModelsSearchFilterDropdownMenuActionViewItem, action, options, {
|
|
806
|
+
getValue: () => this.searchWidget.getValue(),
|
|
807
|
+
setValue: searchValue => this.search(searchValue)
|
|
808
|
+
}, this.viewModel);
|
|
654
809
|
}
|
|
655
810
|
return undefined;
|
|
656
811
|
},
|
|
@@ -658,26 +813,32 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
658
813
|
})));
|
|
659
814
|
toolBar.setActions(actions);
|
|
660
815
|
this.searchWidget.inputWidget.getContainerDomNode().style.paddingRight = `${getTotalWidth(this.searchActionsContainer) + 12}px`;
|
|
661
|
-
this.addButtonContainer = append(searchAndButtonContainer, $(
|
|
816
|
+
this.addButtonContainer = append(searchAndButtonContainer, $(".section-title-actions"));
|
|
662
817
|
const buttonOptions = {
|
|
663
818
|
...defaultButtonStyles,
|
|
664
|
-
supportIcons: true
|
|
819
|
+
supportIcons: true
|
|
665
820
|
};
|
|
666
821
|
this.addButton = this._register(( new Button(this.addButtonContainer, buttonOptions)));
|
|
667
|
-
this.addButton.label = `$(${Codicon.add.id}) ${( localize(
|
|
668
|
-
this.addButton.element.classList.add(
|
|
669
|
-
this.
|
|
670
|
-
this._register(this.addButton.onDidClick(
|
|
822
|
+
this.addButton.label = `$(${Codicon.add.id}) ${( localize(5406, "Add Models..."))}`;
|
|
823
|
+
this.addButton.element.classList.add("models-add-model-button");
|
|
824
|
+
this.updateAddModelsButton();
|
|
825
|
+
this._register(this.addButton.onDidClick(e => {
|
|
671
826
|
if (this.dropdownActions.length > 0) {
|
|
672
827
|
this.contextMenuService.showContextMenu({
|
|
673
828
|
getAnchor: () => this.addButton.element,
|
|
674
|
-
getActions: () => this.dropdownActions
|
|
829
|
+
getActions: () => this.dropdownActions
|
|
675
830
|
});
|
|
676
831
|
}
|
|
677
832
|
}));
|
|
678
|
-
this.tableContainer = append(container, $(
|
|
833
|
+
this.tableContainer = append(container, $(".models-table-container"));
|
|
679
834
|
this.createTable();
|
|
680
835
|
this._register(this.viewModel.onDidChangeGrouping(() => this.createTable()));
|
|
836
|
+
this._register(
|
|
837
|
+
this.chatEntitlementService.onDidChangeEntitlement(() => this.updateAddModelsButton())
|
|
838
|
+
);
|
|
839
|
+
this._register(
|
|
840
|
+
this.languageModelsService.onDidChangeLanguageModelVendors(() => this.updateAddModelsButton())
|
|
841
|
+
);
|
|
681
842
|
}
|
|
682
843
|
createTable() {
|
|
683
844
|
this.tableDisposables.clear();
|
|
@@ -692,149 +853,227 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
692
853
|
this.tableDisposables.add(capabilitiesColumnRenderer.onDidClickCapability(capability => {
|
|
693
854
|
const currentQuery = this.searchWidget.getValue();
|
|
694
855
|
const query = `@capability:${capability}`;
|
|
695
|
-
const newQuery = toggleFilter(currentQuery,
|
|
696
|
-
|
|
697
|
-
|
|
856
|
+
const newQuery = toggleFilter(currentQuery, {
|
|
857
|
+
query
|
|
858
|
+
});
|
|
859
|
+
this.search(newQuery);
|
|
698
860
|
}));
|
|
699
|
-
const columns = [
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
861
|
+
const columns = [{
|
|
862
|
+
label: "",
|
|
863
|
+
tooltip: "",
|
|
864
|
+
weight: 0.05,
|
|
865
|
+
minimumWidth: 40,
|
|
866
|
+
maximumWidth: 40,
|
|
867
|
+
templateId: GutterColumnRenderer.TEMPLATE_ID,
|
|
868
|
+
project(row) {
|
|
869
|
+
return row;
|
|
870
|
+
}
|
|
871
|
+
}, {
|
|
872
|
+
label: ( localize(5407, "Name")),
|
|
873
|
+
tooltip: "",
|
|
874
|
+
weight: 0.35,
|
|
875
|
+
minimumWidth: 200,
|
|
876
|
+
templateId: ModelNameColumnRenderer.TEMPLATE_ID,
|
|
877
|
+
project(row) {
|
|
878
|
+
return row;
|
|
716
879
|
}
|
|
717
|
-
];
|
|
880
|
+
}];
|
|
718
881
|
if (this.viewModel.groupBy === ChatModelGroup.Visibility) {
|
|
719
882
|
columns.push({
|
|
720
|
-
label: ( localize(
|
|
721
|
-
tooltip:
|
|
883
|
+
label: ( localize(5408, "Provider")),
|
|
884
|
+
tooltip: "",
|
|
722
885
|
weight: 0.15,
|
|
723
886
|
minimumWidth: 100,
|
|
724
887
|
templateId: ProviderColumnRenderer.TEMPLATE_ID,
|
|
725
|
-
project(row) {
|
|
888
|
+
project(row) {
|
|
889
|
+
return row;
|
|
890
|
+
}
|
|
726
891
|
});
|
|
727
892
|
}
|
|
728
893
|
columns.push({
|
|
729
|
-
label: ( localize(
|
|
730
|
-
tooltip:
|
|
894
|
+
label: ( localize(5409, "Context Size")),
|
|
895
|
+
tooltip: "",
|
|
731
896
|
weight: 0.1,
|
|
732
897
|
minimumWidth: 140,
|
|
733
898
|
templateId: TokenLimitsColumnRenderer.TEMPLATE_ID,
|
|
734
|
-
project(row) {
|
|
899
|
+
project(row) {
|
|
900
|
+
return row;
|
|
901
|
+
}
|
|
735
902
|
}, {
|
|
736
|
-
label: ( localize(
|
|
737
|
-
tooltip:
|
|
738
|
-
weight: 0.
|
|
903
|
+
label: ( localize(5410, "Capabilities")),
|
|
904
|
+
tooltip: "",
|
|
905
|
+
weight: 0.2,
|
|
739
906
|
minimumWidth: 180,
|
|
740
907
|
templateId: CapabilitiesColumnRenderer.TEMPLATE_ID,
|
|
741
|
-
project(row) {
|
|
908
|
+
project(row) {
|
|
909
|
+
return row;
|
|
910
|
+
}
|
|
742
911
|
}, {
|
|
743
|
-
label: ( localize(
|
|
744
|
-
tooltip:
|
|
745
|
-
weight: 0.
|
|
912
|
+
label: ( localize(5411, "Request Multiplier")),
|
|
913
|
+
tooltip: "",
|
|
914
|
+
weight: 0.1,
|
|
746
915
|
minimumWidth: 60,
|
|
747
916
|
templateId: MultiplierColumnRenderer.TEMPLATE_ID,
|
|
748
|
-
project(row) {
|
|
917
|
+
project(row) {
|
|
918
|
+
return row;
|
|
919
|
+
}
|
|
749
920
|
}, {
|
|
750
|
-
label:
|
|
751
|
-
tooltip:
|
|
921
|
+
label: "",
|
|
922
|
+
tooltip: "",
|
|
752
923
|
weight: 0.05,
|
|
753
924
|
minimumWidth: 64,
|
|
754
925
|
maximumWidth: 64,
|
|
755
926
|
templateId: ActionsColumnRenderer.TEMPLATE_ID,
|
|
756
|
-
project(row) {
|
|
927
|
+
project(row) {
|
|
928
|
+
return row;
|
|
929
|
+
}
|
|
757
930
|
});
|
|
758
|
-
this.table = this.tableDisposables.add(
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
e.modelEntry.vendorDisplayName
|
|
783
|
-
)));
|
|
784
|
-
if (e.modelEntry.metadata.maxInputTokens && e.modelEntry.metadata.maxOutputTokens) {
|
|
785
|
-
ariaLabels.push(( localize(
|
|
786
|
-
5245,
|
|
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
|
-
5246,
|
|
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 !== '-') {
|
|
931
|
+
this.table = this.tableDisposables.add(
|
|
932
|
+
this.instantiationService.createInstance(WorkbenchTable, "ModelsWidget", this.tableContainer, ( new Delegate()), columns, [
|
|
933
|
+
gutterColumnRenderer,
|
|
934
|
+
modelNameColumnRenderer,
|
|
935
|
+
costColumnRenderer,
|
|
936
|
+
tokenLimitsColumnRenderer,
|
|
937
|
+
capabilitiesColumnRenderer,
|
|
938
|
+
actionsColumnRenderer,
|
|
939
|
+
providerColumnRenderer
|
|
940
|
+
], {
|
|
941
|
+
identityProvider: {
|
|
942
|
+
getId: e => e.id
|
|
943
|
+
},
|
|
944
|
+
horizontalScrolling: false,
|
|
945
|
+
accessibilityProvider: {
|
|
946
|
+
getAriaLabel: e => {
|
|
947
|
+
if (isLanguageModelProviderEntry(e)) {
|
|
948
|
+
return localize(5412, "{0} Models", e.vendorEntry.group.name);
|
|
949
|
+
} else if (isLanguageModelGroupEntry(e)) {
|
|
950
|
+
return e.id === "visible" ? ( localize(5413, "Visible Models")) : ( localize(5414, "Hidden Models"));
|
|
951
|
+
} else if (isStatusEntry(e)) {
|
|
952
|
+
return localize(5415, "Status: {0}", e.message);
|
|
953
|
+
}
|
|
954
|
+
const ariaLabels = [];
|
|
801
955
|
ariaLabels.push(( localize(
|
|
802
|
-
|
|
803
|
-
"
|
|
804
|
-
|
|
956
|
+
5416,
|
|
957
|
+
"{0} from {1}",
|
|
958
|
+
e.model.metadata.name,
|
|
959
|
+
e.model.provider.vendor.displayName
|
|
805
960
|
)));
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
961
|
+
if (e.model.metadata.maxInputTokens && e.model.metadata.maxOutputTokens) {
|
|
962
|
+
ariaLabels.push(( localize(
|
|
963
|
+
5417,
|
|
964
|
+
"Context size: {0} input tokens and {1} output tokens",
|
|
965
|
+
formatTokenCount(e.model.metadata.maxInputTokens),
|
|
966
|
+
formatTokenCount(e.model.metadata.maxOutputTokens)
|
|
967
|
+
)));
|
|
968
|
+
}
|
|
969
|
+
if (e.model.metadata.capabilities) {
|
|
970
|
+
ariaLabels.push(( localize(
|
|
971
|
+
5418,
|
|
972
|
+
"Capabilities: {0}",
|
|
973
|
+
( Object.keys(e.model.metadata.capabilities)).join(", ")
|
|
974
|
+
)));
|
|
975
|
+
}
|
|
976
|
+
const multiplierText = e.model.metadata.multiplier ?? "-";
|
|
977
|
+
if (multiplierText !== "-") {
|
|
978
|
+
ariaLabels.push(( localize(
|
|
979
|
+
5393,
|
|
980
|
+
"Every chat message counts {0} towards your premium model request quota",
|
|
981
|
+
multiplierText
|
|
982
|
+
)));
|
|
983
|
+
}
|
|
984
|
+
if (e.model.visible) {
|
|
985
|
+
ariaLabels.push(( localize(5419, "This model is visible in the chat model picker")));
|
|
986
|
+
} else {
|
|
987
|
+
ariaLabels.push(( localize(5420, "This model is hidden in the chat model picker")));
|
|
988
|
+
}
|
|
989
|
+
return ariaLabels.join(". ");
|
|
990
|
+
},
|
|
991
|
+
getWidgetAriaLabel: () => ( localize(5421, "Language Models"))
|
|
814
992
|
},
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
}));
|
|
993
|
+
multipleSelectionSupport: true,
|
|
994
|
+
setRowLineHeight: false,
|
|
995
|
+
openOnSingleClick: true,
|
|
996
|
+
alwaysConsumeMouseWheel: false
|
|
997
|
+
})
|
|
998
|
+
);
|
|
822
999
|
this.tableDisposables.add(this.table.onContextMenu(e => {
|
|
823
1000
|
if (!e.element) {
|
|
824
1001
|
return;
|
|
825
1002
|
}
|
|
826
|
-
const
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
1003
|
+
const selection = this.table.getSelection();
|
|
1004
|
+
const selectedEntries = selection.every(i => i !== e.index) ? [e.element] : ( selection.map(i => this.viewModel.viewModelEntries[i])).filter(e => !!e);
|
|
1005
|
+
const selectedModelEntries = selectedEntries.filter(
|
|
1006
|
+
entry => !isLanguageModelProviderEntry(entry) && !isLanguageModelGroupEntry(entry) && !isStatusEntry(entry)
|
|
1007
|
+
);
|
|
1008
|
+
const actions = [];
|
|
1009
|
+
let configureGroup;
|
|
1010
|
+
let configureVendor;
|
|
1011
|
+
if (selectedModelEntries.length) {
|
|
1012
|
+
const visibleModels = selectedModelEntries.filter(entry => entry.model.visible);
|
|
1013
|
+
const hiddenModels = selectedModelEntries.filter(entry => !entry.model.visible);
|
|
1014
|
+
actions.push(toAction({
|
|
1015
|
+
id: "hideSelectedModels",
|
|
1016
|
+
label: ( localize(5422, "Hide in the Chat Model Picker")),
|
|
1017
|
+
enabled: visibleModels.length > 0,
|
|
1018
|
+
run: () => this.viewModel.setModelsVisibility(selectedModelEntries, false)
|
|
1019
|
+
}));
|
|
1020
|
+
actions.push(toAction({
|
|
1021
|
+
id: "showSelectedModels",
|
|
1022
|
+
label: ( localize(5423, "Show in the Chat Model Picker")),
|
|
1023
|
+
enabled: hiddenModels.length > 0,
|
|
1024
|
+
run: () => this.viewModel.setModelsVisibility(selectedModelEntries, true)
|
|
1025
|
+
}));
|
|
1026
|
+
configureGroup = selectedModelEntries[0].model.provider.group.name;
|
|
1027
|
+
configureVendor = selectedModelEntries[0].model.provider.vendor;
|
|
1028
|
+
if (( selectedModelEntries.some(
|
|
1029
|
+
entry => entry.model.provider.vendor.isDefault || entry.model.provider.group.name !== configureGroup
|
|
1030
|
+
))) {
|
|
1031
|
+
configureGroup = undefined;
|
|
1032
|
+
configureVendor = undefined;
|
|
1033
|
+
}
|
|
1034
|
+
} else if (selectedEntries.length === 1) {
|
|
1035
|
+
const entry = e.element;
|
|
1036
|
+
if (isLanguageModelProviderEntry(entry)) {
|
|
1037
|
+
if (!entry.vendorEntry.vendor.isDefault) {
|
|
1038
|
+
actions.push(toAction({
|
|
1039
|
+
id: "hideAllModels",
|
|
1040
|
+
label: ( localize(5424, "Hide in the Chat Model Picker")),
|
|
1041
|
+
run: () => this.viewModel.setGroupVisibility(entry, false)
|
|
1042
|
+
}));
|
|
1043
|
+
actions.push(toAction({
|
|
1044
|
+
id: "showAllModels",
|
|
1045
|
+
label: ( localize(5425, "Show in the Chat Model Picker")),
|
|
1046
|
+
run: () => this.viewModel.setGroupVisibility(entry, true)
|
|
1047
|
+
}));
|
|
1048
|
+
}
|
|
1049
|
+
configureGroup = entry.vendorEntry.group.name;
|
|
1050
|
+
configureVendor = entry.vendorEntry.vendor;
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
if (configureGroup && configureVendor) {
|
|
1054
|
+
if (configureVendor.managementCommand || configureVendor.configuration) {
|
|
1055
|
+
if (actions.length) {
|
|
1056
|
+
actions.push(( new Separator()));
|
|
1057
|
+
}
|
|
1058
|
+
if (configureVendor.managementCommand) {
|
|
1059
|
+
actions.push(toAction({
|
|
1060
|
+
id: "configureVendor",
|
|
1061
|
+
label: ( localize(5426, "Configure")),
|
|
1062
|
+
run: async () => {
|
|
1063
|
+
await this.commandService.executeCommand(configureVendor.managementCommand, configureVendor.vendor);
|
|
1064
|
+
await this.viewModel.refresh();
|
|
1065
|
+
}
|
|
1066
|
+
}));
|
|
1067
|
+
} else {
|
|
1068
|
+
actions.push(toAction({
|
|
1069
|
+
id: "configureVendor",
|
|
1070
|
+
label: ( localize(5426, "Configure")),
|
|
1071
|
+
run: () => this.languageModelsService.configureLanguageModelsProviderGroup(configureVendor.vendor, configureGroup)
|
|
1072
|
+
}));
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
if (actions.length > 0) {
|
|
838
1077
|
this.contextMenuService.showContextMenu({
|
|
839
1078
|
getAnchor: () => e.anchor,
|
|
840
1079
|
getActions: () => actions
|
|
@@ -842,38 +1081,41 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
842
1081
|
}
|
|
843
1082
|
}));
|
|
844
1083
|
this.table.splice(0, this.table.length, this.viewModel.viewModelEntries);
|
|
845
|
-
this.tableDisposables.add(this.viewModel.onDidChange((
|
|
1084
|
+
this.tableDisposables.add(this.viewModel.onDidChange((
|
|
1085
|
+
{
|
|
1086
|
+
at,
|
|
1087
|
+
removed,
|
|
1088
|
+
added
|
|
1089
|
+
}
|
|
1090
|
+
) => {
|
|
846
1091
|
this.table.splice(at, removed, added);
|
|
847
1092
|
if (this.viewModel.selectedEntry) {
|
|
848
1093
|
const selectedEntryIndex = this.viewModel.viewModelEntries.indexOf(this.viewModel.selectedEntry);
|
|
849
1094
|
this.table.setFocus([selectedEntryIndex]);
|
|
850
1095
|
this.table.setSelection([selectedEntryIndex]);
|
|
851
1096
|
}
|
|
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
1097
|
}));
|
|
865
|
-
this.tableDisposables.add(this.table.onDidOpen(async (
|
|
1098
|
+
this.tableDisposables.add(this.table.onDidOpen(async (
|
|
1099
|
+
{
|
|
1100
|
+
element,
|
|
1101
|
+
browserEvent
|
|
1102
|
+
}
|
|
1103
|
+
) => {
|
|
866
1104
|
if (!element) {
|
|
867
1105
|
return;
|
|
868
1106
|
}
|
|
869
|
-
if (
|
|
870
|
-
|
|
1107
|
+
if (isStatusEntry(element)) {
|
|
1108
|
+
return;
|
|
871
1109
|
}
|
|
872
|
-
|
|
1110
|
+
if (isLanguageModelProviderEntry(element) || isLanguageModelGroupEntry(element)) {
|
|
1111
|
+
this.viewModel.toggleCollapsed(element);
|
|
1112
|
+
} else if (!isMouseEvent(browserEvent) || browserEvent.detail === 2) {
|
|
873
1113
|
this.viewModel.toggleVisibility(element);
|
|
874
1114
|
}
|
|
875
1115
|
}));
|
|
876
|
-
this.tableDisposables.add(
|
|
1116
|
+
this.tableDisposables.add(
|
|
1117
|
+
this.table.onDidChangeSelection(e => this.viewModel.selectedEntry = e.elements[0])
|
|
1118
|
+
);
|
|
877
1119
|
this.tableDisposables.add(this.table.onDidBlur(() => {
|
|
878
1120
|
if (this.viewModel.shouldRefilter()) {
|
|
879
1121
|
this.viewModel.filter(this.searchWidget.getValue());
|
|
@@ -881,18 +1123,35 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
881
1123
|
}));
|
|
882
1124
|
this.layout(this.element.clientHeight, this.element.clientWidth);
|
|
883
1125
|
}
|
|
1126
|
+
updateAddModelsButton() {
|
|
1127
|
+
const configurableVendors = this.languageModelsService.getVendors().filter(vendor => vendor.managementCommand || vendor.configuration);
|
|
1128
|
+
const entitlement = this.chatEntitlementService.entitlement;
|
|
1129
|
+
const isManagedEntitlement = entitlement === ChatEntitlement.Business || entitlement === ChatEntitlement.Enterprise;
|
|
1130
|
+
const supportsAddingModels = this.chatEntitlementService.isInternal || (entitlement !== ChatEntitlement.Unknown && entitlement !== ChatEntitlement.Available && !isManagedEntitlement);
|
|
1131
|
+
this.addButton.enabled = supportsAddingModels && configurableVendors.length > 0;
|
|
1132
|
+
this.addButton.setTitle(!supportsAddingModels && isManagedEntitlement ? ( localize(5427, "Adding models is managed by your organization")) : "");
|
|
1133
|
+
this.dropdownActions = ( configurableVendors.map(vendor => toAction({
|
|
1134
|
+
id: `enable-${vendor.vendor}`,
|
|
1135
|
+
label: vendor.displayName,
|
|
1136
|
+
run: async () => {
|
|
1137
|
+
await this.addModelsForVendor(vendor);
|
|
1138
|
+
}
|
|
1139
|
+
})));
|
|
1140
|
+
}
|
|
884
1141
|
filterModels() {
|
|
885
1142
|
this.delayedFiltering.trigger(() => {
|
|
886
1143
|
this.viewModel.filter(this.searchWidget.getValue());
|
|
887
1144
|
});
|
|
888
1145
|
}
|
|
889
|
-
async
|
|
890
|
-
|
|
891
|
-
await this.viewModel.refresh();
|
|
1146
|
+
async addModelsForVendor(vendor) {
|
|
1147
|
+
this.languageModelsService.configureLanguageModelsProviderGroup(vendor.vendor);
|
|
892
1148
|
}
|
|
893
1149
|
layout(height, width) {
|
|
894
1150
|
width = width - 24;
|
|
895
|
-
this.searchWidget.layout(new Dimension(
|
|
1151
|
+
this.searchWidget.layout(new Dimension(
|
|
1152
|
+
width - this.searchActionsContainer.clientWidth - this.addButtonContainer.clientWidth - 8,
|
|
1153
|
+
22
|
|
1154
|
+
));
|
|
896
1155
|
const tableHeight = height - 40;
|
|
897
1156
|
this.tableContainer.style.height = `${tableHeight}px`;
|
|
898
1157
|
this.table.layout(tableHeight, width);
|
|
@@ -903,9 +1162,11 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
903
1162
|
search(filter) {
|
|
904
1163
|
this.focusSearch();
|
|
905
1164
|
this.searchWidget.setValue(filter);
|
|
1165
|
+
this.viewModel.filter(filter);
|
|
906
1166
|
}
|
|
907
1167
|
clearSearch() {
|
|
908
|
-
this.
|
|
1168
|
+
this.focusSearch();
|
|
1169
|
+
this.searchWidget.setValue("");
|
|
909
1170
|
}
|
|
910
1171
|
render() {
|
|
911
1172
|
if (this.viewModel.shouldRefilter()) {
|
|
@@ -913,15 +1174,6 @@ let ChatModelsWidget = class ChatModelsWidget extends Disposable {
|
|
|
913
1174
|
}
|
|
914
1175
|
}
|
|
915
1176
|
};
|
|
916
|
-
ChatModelsWidget = ChatModelsWidget_1 = ( __decorate([
|
|
917
|
-
( __param(0, ILanguageModelsService)),
|
|
918
|
-
( __param(1, IInstantiationService)),
|
|
919
|
-
( __param(2, IExtensionService)),
|
|
920
|
-
( __param(3, IContextMenuService)),
|
|
921
|
-
( __param(4, IChatEntitlementService)),
|
|
922
|
-
( __param(5, IEditorProgressService)),
|
|
923
|
-
( __param(6, ICommandService)),
|
|
924
|
-
( __param(7, IContextKeyService))
|
|
925
|
-
], ChatModelsWidget));
|
|
1177
|
+
ChatModelsWidget = ChatModelsWidget_1 = ( __decorate([( __param(0, ILanguageModelsService)), ( __param(1, IInstantiationService)), ( __param(2, IExtensionService)), ( __param(3, IContextMenuService)), ( __param(4, IChatEntitlementService)), ( __param(5, IEditorProgressService)), ( __param(6, ICommandService)), ( __param(7, IContextKeyService))], ChatModelsWidget));
|
|
926
1178
|
|
|
927
1179
|
export { ChatModelsWidget };
|