@codingame/monaco-vscode-katex-common 27.0.0 → 28.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/package.json +2 -2
- package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +2 -0
- package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
- package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +30 -2
- package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +17 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +90 -43
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +106 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +63 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +13 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +28 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +133 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +69 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +38 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +72 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.d.ts +1 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -110
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +59 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.js +29 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +8 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.js +55 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +26 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +290 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +9 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +263 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +22 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +12 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +3 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +6 -260
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +129 -117
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +56 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +20 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatResultListSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +43 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +42 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +2 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +61 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +7 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +1 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +81 -191
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +31 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +334 -181
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +7 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +51 -55
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +104 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +127 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +16 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +213 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +10 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +174 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +2 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +12 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +5 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +36 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +19 -4
- package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +22 -6
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +24 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +3 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +38 -46
- package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminal/browser/chatTerminalCommandMirror.js +6 -10
package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface IChatInputPickerOptions {
|
|
|
15
15
|
*/
|
|
16
16
|
readonly getOverflowAnchor?: () => HTMLElement | undefined;
|
|
17
17
|
readonly actionContext?: IChatExecuteActionContext;
|
|
18
|
-
readonly
|
|
18
|
+
readonly hideChevrons: IObservable<boolean>;
|
|
19
19
|
readonly hoverPosition?: IHoverPositionOptions;
|
|
20
20
|
}
|
|
21
21
|
/**
|
package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js
CHANGED
|
@@ -33,8 +33,9 @@ let ChatInputPickerActionViewItem = class ChatInputPickerActionViewItem extends
|
|
|
33
33
|
);
|
|
34
34
|
this.pickerOptions = pickerOptions;
|
|
35
35
|
this._register(autorun(reader => {
|
|
36
|
-
this.pickerOptions.
|
|
36
|
+
const hideChevrons = this.pickerOptions.hideChevrons.read(reader);
|
|
37
37
|
if (this.element) {
|
|
38
|
+
this.element.classList.toggle("hide-chevrons", hideChevrons);
|
|
38
39
|
this.renderLabel(this.element);
|
|
39
40
|
}
|
|
40
41
|
}));
|
|
@@ -48,6 +49,11 @@ let ChatInputPickerActionViewItem = class ChatInputPickerActionViewItem extends
|
|
|
48
49
|
render(container) {
|
|
49
50
|
super.render(container);
|
|
50
51
|
container.classList.add("chat-input-picker-item");
|
|
52
|
+
const hideChevrons = this.pickerOptions.hideChevrons.get();
|
|
53
|
+
if (this.element) {
|
|
54
|
+
this.element.classList.toggle("hide-chevrons", hideChevrons);
|
|
55
|
+
this.renderLabel(this.element);
|
|
56
|
+
}
|
|
51
57
|
}
|
|
52
58
|
};
|
|
53
59
|
ChatInputPickerActionViewItem = ( __decorate([( __param(3, IActionWidgetService)), ( __param(4, IKeybindingService)), ( __param(5, IContextKeyService)), ( __param(6, ITelemetryService))], ChatInputPickerActionViewItem));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IStringDictionary } from "@codingame/monaco-vscode-api/vscode/vs/base/common/collections";
|
|
2
2
|
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
3
3
|
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
4
|
+
import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
|
|
4
5
|
import { IActionListItem } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList";
|
|
5
6
|
import { IActionWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionWidget.service";
|
|
6
7
|
import { IActionWidgetDropdownAction } from "../../../../../../platform/actionWidget/browser/actionWidgetDropdown.js";
|
|
@@ -54,11 +55,13 @@ export declare class ModelPickerWidget extends Disposable {
|
|
|
54
55
|
readonly onDidChangeSelection: Event<ILanguageModelChatMetadataAndIdentifier>;
|
|
55
56
|
private _selectedModel;
|
|
56
57
|
private _badge;
|
|
58
|
+
private _hideChevrons;
|
|
57
59
|
private _domNode;
|
|
58
60
|
private _badgeIcon;
|
|
59
61
|
get selectedModel(): ILanguageModelChatMetadataAndIdentifier | undefined;
|
|
60
62
|
get domNode(): HTMLElement | undefined;
|
|
61
63
|
constructor(_delegate: IModelPickerDelegate, _actionWidgetService: IActionWidgetService, _commandService: ICommandService, _telemetryService: ITelemetryService, _languageModelsService: ILanguageModelsService, _productService: IProductService, _entitlementService: IChatEntitlementService, _updateService: IUpdateService);
|
|
64
|
+
setHideChevrons(hideChevrons: IObservable<boolean>): void;
|
|
62
65
|
setSelectedModel(model: ILanguageModelChatMetadataAndIdentifier | undefined): void;
|
|
63
66
|
setBadge(badge: ModelPickerBadge | undefined): void;
|
|
64
67
|
render(container: HTMLElement): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
-
import { append, $, addDisposableListener, EventType, EventHelper, getActiveElement, isHTMLElement, reset } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
3
|
+
import { append, $, addDisposableListener, EventType, EventHelper, getActiveElement, isHTMLElement, isHTMLInputElement, reset } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
4
4
|
import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
|
|
5
5
|
import { renderIcon, renderLabelWithIcons } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/iconLabel/iconLabels';
|
|
6
6
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
@@ -8,6 +8,7 @@ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/even
|
|
|
8
8
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
9
9
|
import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
|
|
10
10
|
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
11
|
+
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
11
12
|
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
12
13
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
13
14
|
import { ActionListItemKind } from '@codingame/monaco-vscode-api/vscode/vs/platform/actionWidget/browser/actionList';
|
|
@@ -23,6 +24,7 @@ import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/
|
|
|
23
24
|
import { semverExports } from '@codingame/monaco-vscode-api/_virtual/semver';
|
|
24
25
|
import { StateType } from '@codingame/monaco-vscode-api/vscode/vs/platform/update/common/update';
|
|
25
26
|
import { IUpdateService } from '@codingame/monaco-vscode-api/vscode/vs/platform/update/common/update.service';
|
|
27
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
26
28
|
|
|
27
29
|
function isVersionAtLeast(current, required) {
|
|
28
30
|
const currentSemver = semverExports.coerce(current);
|
|
@@ -39,20 +41,20 @@ function getUpdateHoverContent(updateState) {
|
|
|
39
41
|
switch (updateState) {
|
|
40
42
|
case StateType.AvailableForDownload:
|
|
41
43
|
hoverContent.appendMarkdown(( localize(
|
|
42
|
-
|
|
44
|
+
6788,
|
|
43
45
|
"This model requires a newer version of VS Code. [Download Update](command:update.downloadUpdate) to access it."
|
|
44
46
|
)));
|
|
45
47
|
break;
|
|
46
48
|
case StateType.Downloaded:
|
|
47
49
|
case StateType.Ready:
|
|
48
50
|
hoverContent.appendMarkdown(( localize(
|
|
49
|
-
|
|
51
|
+
6789,
|
|
50
52
|
"This model requires a newer version of VS Code. [Restart to Update](command:update.restartToUpdate) to access it."
|
|
51
53
|
)));
|
|
52
54
|
break;
|
|
53
55
|
default:
|
|
54
56
|
hoverContent.appendMarkdown(( localize(
|
|
55
|
-
|
|
57
|
+
6790,
|
|
56
58
|
"This model requires a newer version of VS Code. [Update VS Code](command:update.checkForUpdate) to access it."
|
|
57
59
|
)));
|
|
58
60
|
break;
|
|
@@ -113,8 +115,8 @@ function buildModelPickerItems(
|
|
|
113
115
|
enabled: true,
|
|
114
116
|
checked: true,
|
|
115
117
|
class: undefined,
|
|
116
|
-
tooltip: ( localize(
|
|
117
|
-
label: ( localize(
|
|
118
|
+
tooltip: ( localize(6791, "Auto")),
|
|
119
|
+
label: ( localize(6791, "Auto")),
|
|
118
120
|
run: () => {}
|
|
119
121
|
}));
|
|
120
122
|
}
|
|
@@ -244,7 +246,6 @@ function buildModelPickerItems(
|
|
|
244
246
|
});
|
|
245
247
|
}
|
|
246
248
|
}
|
|
247
|
-
let hasShownActionLink = false;
|
|
248
249
|
if (promotedItems.length > 0) {
|
|
249
250
|
promotedItems.sort((a, b) => {
|
|
250
251
|
const aAvail = a.kind === "available" ? 0 : 1;
|
|
@@ -262,19 +263,9 @@ function buildModelPickerItems(
|
|
|
262
263
|
createModelItem(createModelAction(item.model, selectedModelId, onSelect), item.model)
|
|
263
264
|
);
|
|
264
265
|
} else {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
}
|
|
269
|
-
items.push(createUnavailableModelItem(
|
|
270
|
-
item.id,
|
|
271
|
-
item.entry,
|
|
272
|
-
item.reason,
|
|
273
|
-
manageSettingsUrl,
|
|
274
|
-
updateStateType,
|
|
275
|
-
undefined,
|
|
276
|
-
showActionLink
|
|
277
|
-
));
|
|
266
|
+
items.push(
|
|
267
|
+
createUnavailableModelItem(item.id, item.entry, item.reason, manageSettingsUrl, updateStateType)
|
|
268
|
+
);
|
|
278
269
|
}
|
|
279
270
|
}
|
|
280
271
|
}
|
|
@@ -306,12 +297,12 @@ function buildModelPickerItems(
|
|
|
306
297
|
enabled: true,
|
|
307
298
|
checked: false,
|
|
308
299
|
class: undefined,
|
|
309
|
-
tooltip: ( localize(
|
|
310
|
-
label: ( localize(
|
|
300
|
+
tooltip: ( localize(6792, "Other Models")),
|
|
301
|
+
label: ( localize(6792, "Other Models")),
|
|
311
302
|
run: () => {}
|
|
312
303
|
},
|
|
313
304
|
kind: ActionListItemKind.Action,
|
|
314
|
-
label: ( localize(
|
|
305
|
+
label: ( localize(6792, "Other Models")),
|
|
315
306
|
group: {
|
|
316
307
|
title: "",
|
|
317
308
|
icon: Codicon.chevronDown
|
|
@@ -329,8 +320,7 @@ function buildModelPickerItems(
|
|
|
329
320
|
"update",
|
|
330
321
|
manageSettingsUrl,
|
|
331
322
|
updateStateType,
|
|
332
|
-
ModelPickerSection.Other
|
|
333
|
-
true
|
|
323
|
+
ModelPickerSection.Other
|
|
334
324
|
));
|
|
335
325
|
} else {
|
|
336
326
|
items.push(createModelItem(
|
|
@@ -352,14 +342,14 @@ function buildModelPickerItems(
|
|
|
352
342
|
enabled: true,
|
|
353
343
|
checked: false,
|
|
354
344
|
class: undefined,
|
|
355
|
-
tooltip: ( localize(
|
|
356
|
-
label: ( localize(
|
|
345
|
+
tooltip: ( localize(6793, "Manage Language Models")),
|
|
346
|
+
label: ( localize(6794, "Manage Models...")),
|
|
357
347
|
run: () => {
|
|
358
348
|
commandService.executeCommand(MANAGE_CHAT_COMMAND_ID);
|
|
359
349
|
}
|
|
360
350
|
},
|
|
361
351
|
kind: ActionListItemKind.Action,
|
|
362
|
-
label: ( localize(
|
|
352
|
+
label: ( localize(6794, "Manage Models...")),
|
|
363
353
|
group: {
|
|
364
354
|
title: "",
|
|
365
355
|
icon: Codicon.blank
|
|
@@ -389,29 +379,18 @@ function getModelPickerAccessibilityProvider() {
|
|
|
389
379
|
getWidgetRole: () => "menu"
|
|
390
380
|
};
|
|
391
381
|
}
|
|
392
|
-
function createUnavailableModelItem(
|
|
393
|
-
id,
|
|
394
|
-
entry,
|
|
395
|
-
reason,
|
|
396
|
-
manageSettingsUrl,
|
|
397
|
-
updateStateType,
|
|
398
|
-
section,
|
|
399
|
-
showActionLink = true
|
|
400
|
-
) {
|
|
382
|
+
function createUnavailableModelItem(id, entry, reason, manageSettingsUrl, updateStateType, section) {
|
|
401
383
|
let description;
|
|
402
384
|
if (reason === "upgrade") {
|
|
403
|
-
description =
|
|
404
|
-
6708,
|
|
405
|
-
"[Upgrade your plan](command:workbench.action.chat.upgradePlan \" \")"
|
|
406
|
-
)), {
|
|
385
|
+
description = ( new MarkdownString(( localize(6795, "[Upgrade](command:workbench.action.chat.upgradePlan \" \")")), {
|
|
407
386
|
isTrusted: true
|
|
408
|
-
}))
|
|
387
|
+
}));
|
|
409
388
|
} else if (reason === "update") {
|
|
410
|
-
description = ( localize(
|
|
389
|
+
description = ( localize(6796, "Update VS Code"));
|
|
411
390
|
} else {
|
|
412
|
-
description = manageSettingsUrl ? ( new MarkdownString(( localize(
|
|
391
|
+
description = manageSettingsUrl ? ( new MarkdownString(( localize(6797, "[Contact your admin]({0})", manageSettingsUrl)), {
|
|
413
392
|
isTrusted: true
|
|
414
|
-
})) : ( localize(
|
|
393
|
+
})) : ( localize(6798, "Contact your admin"));
|
|
415
394
|
}
|
|
416
395
|
let hoverContent;
|
|
417
396
|
if (reason === "upgrade") {
|
|
@@ -420,8 +399,8 @@ function createUnavailableModelItem(
|
|
|
420
399
|
supportThemeIcons: true
|
|
421
400
|
}));
|
|
422
401
|
hoverContent.appendMarkdown(( localize(
|
|
423
|
-
|
|
424
|
-
"[Upgrade
|
|
402
|
+
6799,
|
|
403
|
+
"[Upgrade to GitHub Copilot Pro](command:workbench.action.chat.upgradePlan \" \") with a free 30-day trial to use the best models."
|
|
425
404
|
)));
|
|
426
405
|
} else if (reason === "update") {
|
|
427
406
|
hoverContent = getUpdateHoverContent(updateStateType);
|
|
@@ -431,7 +410,7 @@ function createUnavailableModelItem(
|
|
|
431
410
|
supportThemeIcons: true
|
|
432
411
|
}));
|
|
433
412
|
hoverContent.appendMarkdown(( localize(
|
|
434
|
-
|
|
413
|
+
6800,
|
|
435
414
|
"This model is not available. Contact your administrator to enable it."
|
|
436
415
|
)));
|
|
437
416
|
}
|
|
@@ -491,6 +470,16 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
|
|
|
491
470
|
this._onDidChangeSelection = this._register(( new Emitter()));
|
|
492
471
|
this.onDidChangeSelection = this._onDidChangeSelection.event;
|
|
493
472
|
}
|
|
473
|
+
setHideChevrons(hideChevrons) {
|
|
474
|
+
this._hideChevrons = hideChevrons;
|
|
475
|
+
this._register(autorun(reader => {
|
|
476
|
+
const hide = hideChevrons.read(reader);
|
|
477
|
+
if (this._domNode) {
|
|
478
|
+
this._domNode.classList.toggle("hide-chevrons", hide);
|
|
479
|
+
}
|
|
480
|
+
this._renderLabel();
|
|
481
|
+
}));
|
|
482
|
+
}
|
|
494
483
|
setSelectedModel(model) {
|
|
495
484
|
this._selectedModel = model;
|
|
496
485
|
this._renderLabel();
|
|
@@ -505,6 +494,9 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
|
|
|
505
494
|
this._domNode.setAttribute("role", "button");
|
|
506
495
|
this._domNode.setAttribute("aria-haspopup", "true");
|
|
507
496
|
this._domNode.setAttribute("aria-expanded", "false");
|
|
497
|
+
if (this._hideChevrons?.get()) {
|
|
498
|
+
this._domNode.classList.toggle("hide-chevrons", true);
|
|
499
|
+
}
|
|
508
500
|
this._badgeIcon = append(this._domNode, $("span.model-picker-badge"));
|
|
509
501
|
this._updateBadge();
|
|
510
502
|
this._renderLabel();
|
|
@@ -557,10 +549,10 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
|
|
|
557
549
|
);
|
|
558
550
|
const listOptions = {
|
|
559
551
|
showFilter: models.length >= 10,
|
|
560
|
-
filterPlaceholder: ( localize(
|
|
552
|
+
filterPlaceholder: ( localize(6801, "Search models")),
|
|
561
553
|
focusFilterOnOpen: true,
|
|
562
554
|
collapsedByDefault: ( new Set([ModelPickerSection.Other])),
|
|
563
|
-
minWidth:
|
|
555
|
+
minWidth: 200
|
|
564
556
|
};
|
|
565
557
|
const previouslyFocusedElement = getActiveElement();
|
|
566
558
|
const delegate = {
|
|
@@ -587,6 +579,10 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
|
|
|
587
579
|
getModelPickerAccessibilityProvider(),
|
|
588
580
|
listOptions
|
|
589
581
|
);
|
|
582
|
+
const activeElement = getActiveElement();
|
|
583
|
+
if (isHTMLInputElement(activeElement) && activeElement.classList.contains("action-list-filter-input")) {
|
|
584
|
+
activeElement.classList.add("chat-model-picker-filter-input");
|
|
585
|
+
}
|
|
590
586
|
}
|
|
591
587
|
_updateBadge() {
|
|
592
588
|
if (this._badgeIcon) {
|
|
@@ -614,14 +610,14 @@ let ModelPickerWidget = class ModelPickerWidget extends Disposable {
|
|
|
614
610
|
const iconElement = renderIcon(statusIcon);
|
|
615
611
|
domChildren.push(iconElement);
|
|
616
612
|
}
|
|
617
|
-
domChildren.push($("span.chat-input-picker-label", undefined, name ?? ( localize(
|
|
613
|
+
domChildren.push($("span.chat-input-picker-label", undefined, name ?? ( localize(6791, "Auto"))));
|
|
618
614
|
if (this._badgeIcon) {
|
|
619
615
|
domChildren.push(this._badgeIcon);
|
|
620
616
|
}
|
|
621
617
|
domChildren.push(...renderLabelWithIcons(`$(chevron-down)`));
|
|
622
618
|
reset(this._domNode, ...domChildren);
|
|
623
|
-
const modelName = this._selectedModel?.metadata.name ?? ( localize(
|
|
624
|
-
this._domNode.ariaLabel = ( localize(
|
|
619
|
+
const modelName = this._selectedModel?.metadata.name ?? ( localize(6791, "Auto"));
|
|
620
|
+
this._domNode.ariaLabel = ( localize(6802, "Pick Model, {0}", modelName));
|
|
625
621
|
}
|
|
626
622
|
};
|
|
627
623
|
ModelPickerWidget = ( __decorate([( __param(1, IActionWidgetService)), ( __param(2, ICommandService)), ( __param(3, ITelemetryService)), ( __param(4, ILanguageModelsService)), ( __param(5, IProductService)), ( __param(6, IChatEntitlementService)), ( __param(7, IUpdateService))], ModelPickerWidget));
|
|
@@ -642,7 +638,7 @@ function getModelHoverContent(model) {
|
|
|
642
638
|
}
|
|
643
639
|
if (model.metadata.multiplier) {
|
|
644
640
|
markdown.appendMarkdown(`${( localize(
|
|
645
|
-
|
|
641
|
+
6803,
|
|
646
642
|
"Each chat message counts {0} toward your premium request quota",
|
|
647
643
|
model.metadata.multiplier
|
|
648
644
|
))}`);
|
|
@@ -650,7 +646,7 @@ function getModelHoverContent(model) {
|
|
|
650
646
|
}
|
|
651
647
|
if (!isAuto && (model.metadata.maxInputTokens || model.metadata.maxOutputTokens)) {
|
|
652
648
|
const totalTokens = (model.metadata.maxInputTokens ?? 0) + (model.metadata.maxOutputTokens ?? 0);
|
|
653
|
-
markdown.appendMarkdown(`${( localize(
|
|
649
|
+
markdown.appendMarkdown(`${( localize(6804, "Context Size"))}: `);
|
|
654
650
|
markdown.appendMarkdown(`${formatTokenCount(totalTokens)}`);
|
|
655
651
|
markdown.appendText(`\n`);
|
|
656
652
|
}
|
package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ChatAgentLocation, ChatModeKind } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
|
|
2
|
+
import { ILanguageModelChatMetadataAndIdentifier } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels";
|
|
3
|
+
/**
|
|
4
|
+
* Describes the context needed for model selection decisions.
|
|
5
|
+
*/
|
|
6
|
+
export interface IModelSelectionContext {
|
|
7
|
+
readonly location: ChatAgentLocation;
|
|
8
|
+
readonly currentModeKind: ChatModeKind;
|
|
9
|
+
readonly isInlineChatV2Enabled: boolean;
|
|
10
|
+
readonly sessionType: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Filter models based on session type.
|
|
14
|
+
* When a session has a specific type (and it's not 'local'), only models targeting that
|
|
15
|
+
* session type are returned. Otherwise, general-purpose models are returned.
|
|
16
|
+
*/
|
|
17
|
+
export declare function filterModelsForSession(models: ILanguageModelChatMetadataAndIdentifier[], sessionType: string | undefined, currentModeKind: ChatModeKind, location: ChatAgentLocation, isInlineChatV2Enabled: boolean): ILanguageModelChatMetadataAndIdentifier[];
|
|
18
|
+
/**
|
|
19
|
+
* Check if a model is suitable for the current chat mode (e.g., agent mode requires tool calling).
|
|
20
|
+
*/
|
|
21
|
+
export declare function isModelSupportedForMode(model: ILanguageModelChatMetadataAndIdentifier, currentModeKind: ChatModeKind): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a model is suitable for inline chat (editor inline) usage.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isModelSupportedForInlineChat(model: ILanguageModelChatMetadataAndIdentifier, location: ChatAgentLocation, isInlineChatV2Enabled: boolean): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Check if any models in the pool target a specific session type.
|
|
28
|
+
*/
|
|
29
|
+
export declare function hasModelsTargetingSession(allModels: ILanguageModelChatMetadataAndIdentifier[], sessionType: string | undefined): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a model is valid for the current session's model pool.
|
|
32
|
+
* If the session has targeted models, the model must target that session type.
|
|
33
|
+
* If no models target this session, the model must not be session-specific.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isModelValidForSession(model: ILanguageModelChatMetadataAndIdentifier, allModels: ILanguageModelChatMetadataAndIdentifier[], sessionType: string | undefined): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Find the default model for a given location from a list of models.
|
|
38
|
+
* Prefers the model marked as default for the location, falls back to the first model.
|
|
39
|
+
*/
|
|
40
|
+
export declare function findDefaultModel(models: ILanguageModelChatMetadataAndIdentifier[], location: ChatAgentLocation): ILanguageModelChatMetadataAndIdentifier | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Determine whether a persisted model selection should be restored.
|
|
43
|
+
*
|
|
44
|
+
* A persisted model should be restored if:
|
|
45
|
+
* 1. The model still exists in the available models list
|
|
46
|
+
* 2. Either the model wasn't the default at the time it was persisted,
|
|
47
|
+
* OR it is currently the default for the location
|
|
48
|
+
*
|
|
49
|
+
* This prevents scenarios where a user's explicit model choice gets overridden
|
|
50
|
+
* when the default model changes, while still tracking default model changes
|
|
51
|
+
* for users who never explicitly chose a model.
|
|
52
|
+
*/
|
|
53
|
+
export declare function shouldRestorePersistedModel(persistedModelId: string, persistedAsDefault: boolean, availableModels: ILanguageModelChatMetadataAndIdentifier[], location: ChatAgentLocation): {
|
|
54
|
+
shouldRestore: boolean;
|
|
55
|
+
model: ILanguageModelChatMetadataAndIdentifier | undefined;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Determines whether the current model should be reset because it is no longer
|
|
59
|
+
* compatible with the current mode, session, or availability.
|
|
60
|
+
*
|
|
61
|
+
* Returns true if the model should be reset to default.
|
|
62
|
+
*/
|
|
63
|
+
export declare function shouldResetModelToDefault(currentModel: ILanguageModelChatMetadataAndIdentifier | undefined, availableModels: ILanguageModelChatMetadataAndIdentifier[], context: IModelSelectionContext, allModels: ILanguageModelChatMetadataAndIdentifier[]): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Determines whether a model from a sync state should be applied to the current view.
|
|
66
|
+
*
|
|
67
|
+
* Returns an action:
|
|
68
|
+
* - `'keep'` - the view already has the same model; no change needed.
|
|
69
|
+
* - `'apply'` - the state model is valid; the caller should switch to it.
|
|
70
|
+
* - `'default'` - the state model is incompatible (wrong session pool, unsupported
|
|
71
|
+
* mode, or missing inline-chat capability); the caller should fall
|
|
72
|
+
* back to the default model for the current location.
|
|
73
|
+
*
|
|
74
|
+
* @param context Optional because some callers (e.g. unit tests, or code paths
|
|
75
|
+
* that only care about session-pool validation) don't have a full UI context
|
|
76
|
+
* available. When omitted, mode and inline-chat checks are skipped and only
|
|
77
|
+
* session-pool membership is validated.
|
|
78
|
+
*/
|
|
79
|
+
export declare function resolveModelFromSyncState(stateModel: ILanguageModelChatMetadataAndIdentifier, currentModel: ILanguageModelChatMetadataAndIdentifier | undefined, allModels: ILanguageModelChatMetadataAndIdentifier[], sessionType: string | undefined, context?: IModelSelectionContext): {
|
|
80
|
+
action: "keep" | "apply" | "default";
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Merges live models with cached models per-vendor.
|
|
84
|
+
* For vendors whose models have resolved, uses live data.
|
|
85
|
+
* For vendors that are contributed but haven't resolved yet (startup race), keeps cached models.
|
|
86
|
+
* Vendors no longer contributed are evicted from cache.
|
|
87
|
+
*/
|
|
88
|
+
export declare function mergeModelsWithCache(liveModels: ILanguageModelChatMetadataAndIdentifier[], cachedModels: ILanguageModelChatMetadataAndIdentifier[], contributedVendors: Set<string>): ILanguageModelChatMetadataAndIdentifier[];
|
|
89
|
+
/**
|
|
90
|
+
* Determines whether the currently selected model should be reset to default
|
|
91
|
+
* when the language model list changes.
|
|
92
|
+
*
|
|
93
|
+
* Returns true if the model should be reset to default (i.e., the selected model
|
|
94
|
+
* is no longer in the available models list).
|
|
95
|
+
*/
|
|
96
|
+
export declare function shouldResetOnModelListChange(currentModelId: string | undefined, availableModels: ILanguageModelChatMetadataAndIdentifier[]): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Determines whether a late-arriving persisted model should be restored.
|
|
99
|
+
* This handles the startup race where the model wasn't available during
|
|
100
|
+
* `initSelectedModel` but arrives later via `onDidChangeLanguageModels`.
|
|
101
|
+
*
|
|
102
|
+
* The model must pass both the persisted-default check and the `isUserSelectable` check.
|
|
103
|
+
*/
|
|
104
|
+
export declare function shouldRestoreLateArrivingModel(persistedModelId: string, persistedAsDefault: boolean, model: ILanguageModelChatMetadataAndIdentifier, location: ChatAgentLocation): boolean;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
|
|
2
|
+
import { ChatModeKind, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
3
|
+
import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
|
|
4
|
+
|
|
5
|
+
function filterModelsForSession(models, sessionType, currentModeKind, location, isInlineChatV2Enabled) {
|
|
6
|
+
if (sessionType && sessionType !== "local" && hasModelsTargetingSession(models, sessionType)) {
|
|
7
|
+
return models.filter(
|
|
8
|
+
entry => entry.metadata?.targetChatSessionType === sessionType && entry.metadata?.isUserSelectable
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
return models.filter(
|
|
12
|
+
entry => !entry.metadata?.targetChatSessionType && entry.metadata?.isUserSelectable && isModelSupportedForMode(entry, currentModeKind) && isModelSupportedForInlineChat(entry, location, isInlineChatV2Enabled)
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
function isModelSupportedForMode(model, currentModeKind) {
|
|
16
|
+
if (currentModeKind === ChatModeKind.Agent) {
|
|
17
|
+
return ILanguageModelChatMetadata.suitableForAgentMode(model.metadata);
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
function isModelSupportedForInlineChat(model, location, isInlineChatV2Enabled) {
|
|
22
|
+
if (location !== ChatAgentLocation.EditorInline || !isInlineChatV2Enabled) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return !!model.metadata.capabilities?.toolCalling;
|
|
26
|
+
}
|
|
27
|
+
function hasModelsTargetingSession(allModels, sessionType) {
|
|
28
|
+
if (!sessionType) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return ( allModels.some(m => m.metadata.targetChatSessionType === sessionType));
|
|
32
|
+
}
|
|
33
|
+
function isModelValidForSession(model, allModels, sessionType) {
|
|
34
|
+
if (hasModelsTargetingSession(allModels, sessionType)) {
|
|
35
|
+
return model.metadata.targetChatSessionType === sessionType;
|
|
36
|
+
}
|
|
37
|
+
return !model.metadata.targetChatSessionType;
|
|
38
|
+
}
|
|
39
|
+
function findDefaultModel(models, location) {
|
|
40
|
+
return models.find(m => m.metadata.isDefaultForLocation[location]) || models[0];
|
|
41
|
+
}
|
|
42
|
+
function shouldRestorePersistedModel(persistedModelId, persistedAsDefault, availableModels, location) {
|
|
43
|
+
const model = availableModels.find(m => m.identifier === persistedModelId);
|
|
44
|
+
if (!model) {
|
|
45
|
+
return {
|
|
46
|
+
shouldRestore: false,
|
|
47
|
+
model: undefined
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (!persistedAsDefault || model.metadata.isDefaultForLocation[location]) {
|
|
51
|
+
return {
|
|
52
|
+
shouldRestore: true,
|
|
53
|
+
model
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
shouldRestore: false,
|
|
58
|
+
model
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function shouldResetModelToDefault(currentModel, availableModels, context, allModels) {
|
|
62
|
+
if (!currentModel) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
if (!( availableModels.some(m => m.identifier === currentModel.identifier))) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
if (!isModelSupportedForMode(currentModel, context.currentModeKind)) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
if (!isModelSupportedForInlineChat(currentModel, context.location, context.isInlineChatV2Enabled)) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
if (!isModelValidForSession(currentModel, allModels, context.sessionType)) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
function resolveModelFromSyncState(stateModel, currentModel, allModels, sessionType, context) {
|
|
80
|
+
if (currentModel && currentModel.identifier === stateModel.identifier) {
|
|
81
|
+
return {
|
|
82
|
+
action: "keep"
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (!isModelValidForSession(stateModel, allModels, sessionType)) {
|
|
86
|
+
return {
|
|
87
|
+
action: "default"
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (context) {
|
|
91
|
+
if (!isModelSupportedForMode(stateModel, context.currentModeKind)) {
|
|
92
|
+
return {
|
|
93
|
+
action: "default"
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (!isModelSupportedForInlineChat(stateModel, context.location, context.isInlineChatV2Enabled)) {
|
|
97
|
+
return {
|
|
98
|
+
action: "default"
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
action: "apply"
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function mergeModelsWithCache(liveModels, cachedModels, contributedVendors) {
|
|
107
|
+
if (liveModels.length > 0) {
|
|
108
|
+
const liveVendors = ( new Set(( liveModels.map(m => m.metadata.vendor))));
|
|
109
|
+
return [...liveModels, ...cachedModels.filter(m => !( liveVendors.has(m.metadata.vendor)) && ( contributedVendors.has(m.metadata.vendor)))];
|
|
110
|
+
}
|
|
111
|
+
return cachedModels;
|
|
112
|
+
}
|
|
113
|
+
function shouldResetOnModelListChange(currentModelId, availableModels) {
|
|
114
|
+
if (!currentModelId) {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
return !( availableModels.some(m => m.identifier === currentModelId));
|
|
118
|
+
}
|
|
119
|
+
function shouldRestoreLateArrivingModel(persistedModelId, persistedAsDefault, model, location) {
|
|
120
|
+
if (!model.metadata.isUserSelectable) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
const result = shouldRestorePersistedModel(persistedModelId, persistedAsDefault, [model], location);
|
|
124
|
+
return result.shouldRestore;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export { filterModelsForSession, findDefaultModel, hasModelsTargetingSession, isModelSupportedForInlineChat, isModelSupportedForMode, isModelValidForSession, mergeModelsWithCache, resolveModelFromSyncState, shouldResetModelToDefault, shouldResetOnModelListChange, shouldRestoreLateArrivingModel, shouldRestorePersistedModel };
|
|
@@ -86,13 +86,13 @@ let DelegationSessionPickerActionItem = class DelegationSessionPickerActionItem
|
|
|
86
86
|
_getSessionCategory(sessionTypeItem) {
|
|
87
87
|
if (isFirstPartyAgentSessionProvider(sessionTypeItem.type)) {
|
|
88
88
|
return {
|
|
89
|
-
label: ( localize(
|
|
89
|
+
label: ( localize(6818, "Continue In")),
|
|
90
90
|
order: 1,
|
|
91
91
|
showHeader: true
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
94
|
return {
|
|
95
|
-
label: ( localize(
|
|
95
|
+
label: ( localize(6819, "Continue In (Third Party)")),
|
|
96
96
|
order: 2,
|
|
97
97
|
showHeader: false
|
|
98
98
|
};
|
|
@@ -101,7 +101,7 @@ let DelegationSessionPickerActionItem = class DelegationSessionPickerActionItem
|
|
|
101
101
|
const learnMoreUrl = "https://aka.ms/vscode-continue-chat-in";
|
|
102
102
|
return {
|
|
103
103
|
id: "workbench.action.chat.agentOverview.learnMoreHandOff",
|
|
104
|
-
label: ( localize(
|
|
104
|
+
label: ( localize(6820, "Learn about agent handoff...")),
|
|
105
105
|
tooltip: learnMoreUrl,
|
|
106
106
|
class: undefined,
|
|
107
107
|
enabled: true,
|
|
@@ -117,7 +117,7 @@ let DelegationSessionPickerActionItem = class DelegationSessionPickerActionItem
|
|
|
117
117
|
return [{
|
|
118
118
|
id: "newChatSession",
|
|
119
119
|
class: undefined,
|
|
120
|
-
label: ( localize(
|
|
120
|
+
label: ( localize(6821, "New Chat Session")),
|
|
121
121
|
tooltip: "",
|
|
122
122
|
hover: {
|
|
123
123
|
content: "",
|
|
@@ -127,7 +127,7 @@ let DelegationSessionPickerActionItem = class DelegationSessionPickerActionItem
|
|
|
127
127
|
icon: Codicon.plus,
|
|
128
128
|
enabled: true,
|
|
129
129
|
category: {
|
|
130
|
-
label: ( localize(
|
|
130
|
+
label: ( localize(6822, "New Chat Session")),
|
|
131
131
|
order: 0,
|
|
132
132
|
showHeader: false
|
|
133
133
|
},
|
|
@@ -13,7 +13,7 @@ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platfo
|
|
|
13
13
|
import { IChatAgentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service";
|
|
14
14
|
import { IChatMode } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes";
|
|
15
15
|
import { IChatModeService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service";
|
|
16
|
-
import { Target } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/
|
|
16
|
+
import { Target } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes";
|
|
17
17
|
import { ChatInputPickerActionViewItem, IChatInputPickerOptions } from "./chatInputPickerActionItem.js";
|
|
18
18
|
import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
|
|
19
19
|
import { IWorkbenchAssignmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/assignment/common/assignmentService.service";
|
|
@@ -33,5 +33,6 @@ export declare class ModePickerActionItem extends ChatInputPickerActionViewItem
|
|
|
33
33
|
private readonly _productService;
|
|
34
34
|
constructor(action: MenuItemAction, delegate: IModePickerDelegate, pickerOptions: IChatInputPickerOptions, actionWidgetService: IActionWidgetService, chatAgentService: IChatAgentService, keybindingService: IKeybindingService, configurationService: IConfigurationService, contextKeyService: IContextKeyService, chatModeService: IChatModeService, menuService: IMenuService, commandService: ICommandService, _productService: IProductService, telemetryService: ITelemetryService, openerService: IOpenerService, assignmentService: IWorkbenchAssignmentService);
|
|
35
35
|
private getModePickerActionBarActions;
|
|
36
|
+
render(container: HTMLElement): void;
|
|
36
37
|
protected renderLabel(element: HTMLElement): IDisposable | null;
|
|
37
38
|
}
|