@codingame/monaco-vscode-katex-common 26.2.1 → 27.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.d.ts +10 -4
- package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +35 -11
- package/vscode/src/vs/platform/actions/browser/buttonbar.d.ts +3 -0
- package/vscode/src/vs/platform/actions/browser/buttonbar.js +15 -4
- package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +548 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +168 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +67 -51
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +42 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +12 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +63 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +77 -73
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +69 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +381 -83
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +28 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +38 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +109 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +16 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +28 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +226 -123
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- 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.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +9 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +7 -10
- 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 +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.js +22 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.js +11 -3
- 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.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.js +6 -3
- 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 +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +26 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +52 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -7
- 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 +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +20 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.js +11 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +36 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +166 -45
- 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 +3 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +16 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +14 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +98 -26
- 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.js +1 -0
- 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 +10 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +244 -80
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.d.ts +29 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +252 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +39 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +36 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +5 -5
- 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.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +42 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +12 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +48 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css +9 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +351 -422
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +14 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +102 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +69 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/codeBlockPart.css +48 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +47 -23
- 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 +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +0 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +18 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +103 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +63 -69
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +7 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +41 -2
- 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 +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +13 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.js +2 -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 +17 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +310 -79
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +13 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +35 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +441 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +24 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +392 -86
- 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 +52 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +271 -187
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +668 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +12 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +57 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +2 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +78 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +86 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +9 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +393 -134
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +36 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +20 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +25 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +141 -79
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +18 -13
- package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +108 -27
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +20 -14
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +4 -6
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +74 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +11 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +68 -27
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +125 -13
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.d.ts +8 -11
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +54 -45
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +11 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +172 -112
- 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 +0 -42
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +27 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +83 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +58 -33
- package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/common/modelContextProtocolApps.d.ts +1 -548
- 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/chat/browser/widget/input/modelPickerActionItem.js +0 -187
- /package/vscode/src/vs/{workbench/contrib → platform}/mcp/common/modelContextProtocolApps.js +0 -0
package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { sep } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
|
|
4
4
|
import { raceCancellationError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
5
|
-
import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
5
|
+
import { CancellationToken, CancellationTokenSource } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
6
6
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
7
7
|
import { Emitter, AsyncEmitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
8
8
|
import { Disposable, DisposableMap, DisposableStore, combinedDisposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
@@ -40,7 +40,7 @@ import { renderAsPlaintext } from '@codingame/monaco-vscode-api/vscode/vs/base/b
|
|
|
40
40
|
import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
|
|
41
41
|
import { ChatViewId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat';
|
|
42
42
|
import { AgentSessionProviders, backgroundAgentDisplayName, getAgentSessionProviderName } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessions';
|
|
43
|
-
import { BugIndicatingError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
43
|
+
import { isCancellationError, BugIndicatingError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
44
44
|
import { IEditorGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
|
|
45
45
|
import { LocalChatSessionUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
|
|
46
46
|
import { assertNever } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
|
|
@@ -53,39 +53,39 @@ import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/v
|
|
|
53
53
|
const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
54
54
|
extensionPoint: "chatSessions",
|
|
55
55
|
jsonSchema: {
|
|
56
|
-
description: ( localize(
|
|
56
|
+
description: ( localize(5941, "Contributes chat session integrations to the chat widget.")),
|
|
57
57
|
type: "array",
|
|
58
58
|
items: {
|
|
59
59
|
type: "object",
|
|
60
60
|
additionalProperties: false,
|
|
61
61
|
properties: {
|
|
62
62
|
type: {
|
|
63
|
-
description: ( localize(
|
|
63
|
+
description: ( localize(5942, "Unique identifier for the type of chat session.")),
|
|
64
64
|
type: "string"
|
|
65
65
|
},
|
|
66
66
|
name: {
|
|
67
67
|
description: ( localize(
|
|
68
|
-
|
|
68
|
+
5943,
|
|
69
69
|
"Name of the dynamically registered chat participant (eg: @agent). Must not contain whitespace."
|
|
70
70
|
)),
|
|
71
71
|
type: "string",
|
|
72
72
|
pattern: "^[\\w-]+$"
|
|
73
73
|
},
|
|
74
74
|
displayName: {
|
|
75
|
-
description: ( localize(
|
|
75
|
+
description: ( localize(5944, "A longer name for this item which is used for display in menus.")),
|
|
76
76
|
type: "string"
|
|
77
77
|
},
|
|
78
78
|
description: {
|
|
79
|
-
description: ( localize(
|
|
79
|
+
description: ( localize(5945, "Description of the chat session for use in menus and tooltips.")),
|
|
80
80
|
type: "string"
|
|
81
81
|
},
|
|
82
82
|
when: {
|
|
83
|
-
description: ( localize(
|
|
83
|
+
description: ( localize(5946, "Condition which must be true to show this item.")),
|
|
84
84
|
type: "string"
|
|
85
85
|
},
|
|
86
86
|
icon: {
|
|
87
87
|
description: ( localize(
|
|
88
|
-
|
|
88
|
+
5947,
|
|
89
89
|
"Icon identifier (codicon ID) for the chat session editor tab. For example, \"$(github)\" or \"$(cloud)\"."
|
|
90
90
|
)),
|
|
91
91
|
anyOf: [{
|
|
@@ -94,22 +94,22 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
94
94
|
type: "object",
|
|
95
95
|
properties: {
|
|
96
96
|
light: {
|
|
97
|
-
description: ( localize(
|
|
97
|
+
description: ( localize(5948, "Icon path when a light theme is used")),
|
|
98
98
|
type: "string"
|
|
99
99
|
},
|
|
100
100
|
dark: {
|
|
101
|
-
description: ( localize(
|
|
101
|
+
description: ( localize(5949, "Icon path when a dark theme is used")),
|
|
102
102
|
type: "string"
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
}]
|
|
106
106
|
},
|
|
107
107
|
order: {
|
|
108
|
-
description: ( localize(
|
|
108
|
+
description: ( localize(5950, "Order in which this item should be displayed.")),
|
|
109
109
|
type: "integer"
|
|
110
110
|
},
|
|
111
111
|
alternativeIds: {
|
|
112
|
-
description: ( localize(
|
|
112
|
+
description: ( localize(5951, "Alternative identifiers for backward compatibility.")),
|
|
113
113
|
type: "array",
|
|
114
114
|
items: {
|
|
115
115
|
type: "string"
|
|
@@ -117,87 +117,91 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
117
117
|
},
|
|
118
118
|
welcomeTitle: {
|
|
119
119
|
description: ( localize(
|
|
120
|
-
|
|
120
|
+
5952,
|
|
121
121
|
"Title text to display in the chat welcome view for this session type."
|
|
122
122
|
)),
|
|
123
123
|
type: "string"
|
|
124
124
|
},
|
|
125
125
|
welcomeMessage: {
|
|
126
126
|
description: ( localize(
|
|
127
|
-
|
|
127
|
+
5953,
|
|
128
128
|
"Message text (supports markdown) to display in the chat welcome view for this session type."
|
|
129
129
|
)),
|
|
130
130
|
type: "string"
|
|
131
131
|
},
|
|
132
132
|
welcomeTips: {
|
|
133
133
|
description: ( localize(
|
|
134
|
-
|
|
134
|
+
5954,
|
|
135
135
|
"Tips text (supports markdown and theme icons) to display in the chat welcome view for this session type."
|
|
136
136
|
)),
|
|
137
137
|
type: "string"
|
|
138
138
|
},
|
|
139
139
|
inputPlaceholder: {
|
|
140
140
|
description: ( localize(
|
|
141
|
-
|
|
141
|
+
5955,
|
|
142
142
|
"Placeholder text to display in the chat input box for this session type."
|
|
143
143
|
)),
|
|
144
144
|
type: "string"
|
|
145
145
|
},
|
|
146
146
|
capabilities: {
|
|
147
|
-
description: ( localize(
|
|
147
|
+
description: ( localize(5956, "Optional capabilities for this chat session.")),
|
|
148
148
|
type: "object",
|
|
149
149
|
additionalProperties: false,
|
|
150
150
|
properties: {
|
|
151
151
|
supportsFileAttachments: {
|
|
152
152
|
description: ( localize(
|
|
153
|
-
|
|
153
|
+
5957,
|
|
154
154
|
"Whether this chat session supports attaching files or file references."
|
|
155
155
|
)),
|
|
156
156
|
type: "boolean"
|
|
157
157
|
},
|
|
158
158
|
supportsToolAttachments: {
|
|
159
159
|
description: ( localize(
|
|
160
|
-
|
|
160
|
+
5958,
|
|
161
161
|
"Whether this chat session supports attaching tools or tool references."
|
|
162
162
|
)),
|
|
163
163
|
type: "boolean"
|
|
164
164
|
},
|
|
165
165
|
supportsMCPAttachments: {
|
|
166
|
-
description: ( localize(
|
|
166
|
+
description: ( localize(5959, "Whether this chat session supports attaching MCP resources.")),
|
|
167
167
|
type: "boolean"
|
|
168
168
|
},
|
|
169
169
|
supportsImageAttachments: {
|
|
170
|
-
description: ( localize(
|
|
170
|
+
description: ( localize(5960, "Whether this chat session supports attaching images.")),
|
|
171
171
|
type: "boolean"
|
|
172
172
|
},
|
|
173
173
|
supportsSearchResultAttachments: {
|
|
174
|
-
description: ( localize(
|
|
174
|
+
description: ( localize(5961, "Whether this chat session supports attaching search results.")),
|
|
175
175
|
type: "boolean"
|
|
176
176
|
},
|
|
177
177
|
supportsInstructionAttachments: {
|
|
178
|
-
description: ( localize(
|
|
178
|
+
description: ( localize(5962, "Whether this chat session supports attaching instructions.")),
|
|
179
179
|
type: "boolean"
|
|
180
180
|
},
|
|
181
181
|
supportsSourceControlAttachments: {
|
|
182
182
|
description: ( localize(
|
|
183
|
-
|
|
183
|
+
5963,
|
|
184
184
|
"Whether this chat session supports attaching source control changes."
|
|
185
185
|
)),
|
|
186
186
|
type: "boolean"
|
|
187
187
|
},
|
|
188
188
|
supportsProblemAttachments: {
|
|
189
|
-
description: ( localize(
|
|
189
|
+
description: ( localize(5964, "Whether this chat session supports attaching problems.")),
|
|
190
190
|
type: "boolean"
|
|
191
191
|
},
|
|
192
192
|
supportsSymbolAttachments: {
|
|
193
|
-
description: ( localize(
|
|
193
|
+
description: ( localize(5965, "Whether this chat session supports attaching symbols.")),
|
|
194
|
+
type: "boolean"
|
|
195
|
+
},
|
|
196
|
+
supportsPromptAttachments: {
|
|
197
|
+
description: ( localize(5966, "Whether this chat session supports attaching prompts.")),
|
|
194
198
|
type: "boolean"
|
|
195
199
|
}
|
|
196
200
|
}
|
|
197
201
|
},
|
|
198
202
|
commands: {
|
|
199
203
|
markdownDescription: ( localize(
|
|
200
|
-
|
|
204
|
+
5967,
|
|
201
205
|
"Commands available for this chat session, which the user can invoke with a `/`."
|
|
202
206
|
)),
|
|
203
207
|
type: "array",
|
|
@@ -214,17 +218,17 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
214
218
|
properties: {
|
|
215
219
|
name: {
|
|
216
220
|
description: ( localize(
|
|
217
|
-
|
|
221
|
+
5968,
|
|
218
222
|
"A short name by which this command is referred to in the UI, e.g. `fix` or `explain` for commands that fix an issue or explain code. The name should be unique among the commands provided by this participant."
|
|
219
223
|
)),
|
|
220
224
|
type: "string"
|
|
221
225
|
},
|
|
222
226
|
description: {
|
|
223
|
-
description: ( localize(
|
|
227
|
+
description: ( localize(5969, "A description of this command.")),
|
|
224
228
|
type: "string"
|
|
225
229
|
},
|
|
226
230
|
when: {
|
|
227
|
-
description: ( localize(
|
|
231
|
+
description: ( localize(5970, "A condition which must be true to enable this command.")),
|
|
228
232
|
type: "string"
|
|
229
233
|
}
|
|
230
234
|
}
|
|
@@ -232,7 +236,7 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
232
236
|
},
|
|
233
237
|
canDelegate: {
|
|
234
238
|
description: ( localize(
|
|
235
|
-
|
|
239
|
+
5971,
|
|
236
240
|
"Whether delegation is supported. Default is false. Note that enabling this is experimental and may not be respected at all times."
|
|
237
241
|
)),
|
|
238
242
|
type: "boolean",
|
|
@@ -240,10 +244,18 @@ const extensionPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
240
244
|
},
|
|
241
245
|
customAgentTarget: {
|
|
242
246
|
description: ( localize(
|
|
243
|
-
|
|
247
|
+
5972,
|
|
244
248
|
"When set, the chat session will show a filtered mode picker that prefers custom agents whose target property matches this value. Custom agents without a target property are still shown in all session types. This enables the use of standard agent/mode with contributed sessions."
|
|
245
249
|
)),
|
|
246
250
|
type: "string"
|
|
251
|
+
},
|
|
252
|
+
requiresCustomModels: {
|
|
253
|
+
description: ( localize(
|
|
254
|
+
5973,
|
|
255
|
+
"When set, the chat session will show a filtered model picker that prefers custom models. This enables the use of standard model picker with contributed sessions."
|
|
256
|
+
)),
|
|
257
|
+
type: "boolean",
|
|
258
|
+
default: false
|
|
247
259
|
}
|
|
248
260
|
},
|
|
249
261
|
required: ["type", "name", "displayName", "description"]
|
|
@@ -313,7 +325,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
313
325
|
this._menuService = _menuService;
|
|
314
326
|
this._themeService = _themeService;
|
|
315
327
|
this._labelService = _labelService;
|
|
316
|
-
this.
|
|
328
|
+
this._itemControllers = ( new Map());
|
|
317
329
|
this._contributions = ( new Map());
|
|
318
330
|
this._contributionDisposables = this._register(( new DisposableMap()));
|
|
319
331
|
this._contentProviders = ( new Map());
|
|
@@ -332,12 +344,14 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
332
344
|
this._onRequestNotifyExtension = this._register(( new AsyncEmitter()));
|
|
333
345
|
this.inProgressMap = ( new Map());
|
|
334
346
|
this._sessionTypeOptions = ( new Map());
|
|
347
|
+
this._sessionTypeNewSessionOptions = ( new Map());
|
|
335
348
|
this._sessionTypeIcons = ( new Map());
|
|
336
349
|
this._sessionTypeWelcomeTitles = ( new Map());
|
|
337
350
|
this._sessionTypeWelcomeMessages = ( new Map());
|
|
338
351
|
this._sessionTypeWelcomeTips = ( new Map());
|
|
339
352
|
this._sessionTypeInputPlaceholders = ( new Map());
|
|
340
353
|
this._sessions = ( new ResourceMap());
|
|
354
|
+
this._resourceAliases = ( new ResourceMap());
|
|
341
355
|
this._hasCanDelegateProvidersKey = ChatContextKeys.hasCanDelegateProviders.bindTo(this._contextKeyService);
|
|
342
356
|
this._register(extensionPoint.setHandler(extensions => {
|
|
343
357
|
for (const ext of extensions) {
|
|
@@ -359,7 +373,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
359
373
|
this._evaluateAvailability();
|
|
360
374
|
}));
|
|
361
375
|
const builtinSessionProviders = [AgentSessionProviders.Local];
|
|
362
|
-
const contributedSessionProviders = observableFromEvent(this.onDidChangeAvailability, () => Array.from(( this._contributions.keys())).filter(isAgentSessionProviderType)).recomputeInitiallyAndOnChange(this._store);
|
|
376
|
+
const contributedSessionProviders = observableFromEvent(this.onDidChangeAvailability, () => Array.from(( this._contributions.keys())).filter(key => ( this._contributionDisposables.has(key)) && isAgentSessionProviderType(key))).recomputeInitiallyAndOnChange(this._store);
|
|
363
377
|
this._register(autorun(reader => {
|
|
364
378
|
backgroundAgentDisplayName.read(reader);
|
|
365
379
|
const activatedProviders = [...builtinSessionProviders, ...contributedSessionProviders.read(reader)];
|
|
@@ -371,7 +385,11 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
371
385
|
}
|
|
372
386
|
}
|
|
373
387
|
}));
|
|
374
|
-
this._register(this.onDidChangeSessionItems(
|
|
388
|
+
this._register(this.onDidChangeSessionItems((
|
|
389
|
+
{
|
|
390
|
+
chatSessionType
|
|
391
|
+
}
|
|
392
|
+
) => {
|
|
375
393
|
this.updateInProgressStatus(chatSessionType).catch(error => {
|
|
376
394
|
this._logService.warn(`Failed to update progress status for '${chatSessionType}':`, error);
|
|
377
395
|
});
|
|
@@ -388,11 +406,11 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
388
406
|
reportInProgress(chatSessionType, count) {
|
|
389
407
|
let displayName;
|
|
390
408
|
if (chatSessionType === AgentSessionProviders.Local) {
|
|
391
|
-
displayName = ( localize(
|
|
409
|
+
displayName = ( localize(5974, "Local Agent"));
|
|
392
410
|
} else if (chatSessionType === AgentSessionProviders.Background) {
|
|
393
|
-
displayName = ( localize(
|
|
411
|
+
displayName = ( localize(5975, "Background Agent"));
|
|
394
412
|
} else if (chatSessionType === AgentSessionProviders.Cloud) {
|
|
395
|
-
displayName = ( localize(
|
|
413
|
+
displayName = ( localize(5976, "Cloud Agent"));
|
|
396
414
|
} else {
|
|
397
415
|
displayName = this._contributions.get(chatSessionType)?.contribution.displayName;
|
|
398
416
|
}
|
|
@@ -548,7 +566,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
548
566
|
constructor() {
|
|
549
567
|
super({
|
|
550
568
|
id: `workbench.action.chat.openSessionWithPrompt.${contribution.type}`,
|
|
551
|
-
title: ( localize2(
|
|
569
|
+
title: ( localize2(5977, "New {0} with Prompt", contribution.displayName)),
|
|
552
570
|
category: CHAT_CATEGORY,
|
|
553
571
|
icon: Codicon.plus,
|
|
554
572
|
f1: false,
|
|
@@ -562,12 +580,20 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
562
580
|
} = contribution;
|
|
563
581
|
if (chatOptions) {
|
|
564
582
|
const resource = URI.revive(chatOptions.resource);
|
|
565
|
-
const ref = await chatService.
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
583
|
+
const ref = await chatService.acquireOrLoadSession(resource, ChatAgentLocation.Chat, CancellationToken.None);
|
|
584
|
+
try {
|
|
585
|
+
const result = await chatService.sendRequest(resource, chatOptions.prompt, {
|
|
586
|
+
agentIdSilent: type,
|
|
587
|
+
attachedContext: chatOptions.attachedContext
|
|
588
|
+
});
|
|
589
|
+
if (result.kind === "queued") {
|
|
590
|
+
await result.deferred;
|
|
591
|
+
} else if (result.kind === "sent") {
|
|
592
|
+
await result.data.responseCompletePromise;
|
|
593
|
+
}
|
|
594
|
+
} finally {
|
|
595
|
+
ref?.dispose();
|
|
596
|
+
}
|
|
571
597
|
}
|
|
572
598
|
}
|
|
573
599
|
}),
|
|
@@ -575,7 +601,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
575
601
|
constructor() {
|
|
576
602
|
super({
|
|
577
603
|
id: `workbench.action.chat.openNewSessionEditor.${contribution.type}`,
|
|
578
|
-
title: ( localize2(
|
|
604
|
+
title: ( localize2(5978, "New {0}", contribution.displayName)),
|
|
579
605
|
category: CHAT_CATEGORY,
|
|
580
606
|
icon: Codicon.plus,
|
|
581
607
|
f1: true,
|
|
@@ -598,7 +624,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
598
624
|
constructor() {
|
|
599
625
|
super({
|
|
600
626
|
id: `workbench.action.chat.openNewSessionSidebar.${contribution.type}`,
|
|
601
|
-
title: ( localize2(
|
|
627
|
+
title: ( localize2(5979, "New {0}", contribution.displayName)),
|
|
602
628
|
category: CHAT_CATEGORY,
|
|
603
629
|
icon: Codicon.plus,
|
|
604
630
|
f1: false,
|
|
@@ -641,13 +667,17 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
641
667
|
}
|
|
642
668
|
if (hasChanges) {
|
|
643
669
|
this._onDidChangeAvailability.fire();
|
|
644
|
-
for (const
|
|
645
|
-
this._onDidChangeItemsProviders.fire(
|
|
670
|
+
for (const chatSessionType of ( this._itemControllers.keys())) {
|
|
671
|
+
this._onDidChangeItemsProviders.fire({
|
|
672
|
+
chatSessionType
|
|
673
|
+
});
|
|
646
674
|
}
|
|
647
675
|
for (const {
|
|
648
676
|
contribution
|
|
649
677
|
} of ( this._contributions.values())) {
|
|
650
|
-
this._onDidChangeSessionItems.fire(
|
|
678
|
+
this._onDidChangeSessionItems.fire({
|
|
679
|
+
chatSessionType: contribution.type
|
|
680
|
+
});
|
|
651
681
|
}
|
|
652
682
|
}
|
|
653
683
|
this._updateHasCanDelegateProvidersContextKey();
|
|
@@ -741,6 +771,9 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
741
771
|
return this._isContributionAvailable(contribution) ? contribution : undefined;
|
|
742
772
|
}
|
|
743
773
|
async activateChatSessionItemProvider(chatViewType) {
|
|
774
|
+
await this.doActivateChatSessionItemController(chatViewType);
|
|
775
|
+
}
|
|
776
|
+
async doActivateChatSessionItemController(chatViewType) {
|
|
744
777
|
await this._extensionService.whenInstalledExtensionsRegistered();
|
|
745
778
|
const resolvedType = this._resolveToPrimaryType(chatViewType);
|
|
746
779
|
if (resolvedType) {
|
|
@@ -748,13 +781,14 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
748
781
|
}
|
|
749
782
|
const contribution = this._contributions.get(chatViewType)?.contribution;
|
|
750
783
|
if (contribution && !this._isContributionAvailable(contribution)) {
|
|
751
|
-
return
|
|
784
|
+
return false;
|
|
752
785
|
}
|
|
753
|
-
if (( this.
|
|
754
|
-
return
|
|
786
|
+
if (( this._itemControllers.has(chatViewType))) {
|
|
787
|
+
return true;
|
|
755
788
|
}
|
|
756
789
|
await this._extensionService.activateByEvent(`onChatSession:${chatViewType}`);
|
|
757
|
-
|
|
790
|
+
const controller = this._itemControllers.get(chatViewType);
|
|
791
|
+
return !!controller;
|
|
758
792
|
}
|
|
759
793
|
async canResolveChatSession(chatSessionResource) {
|
|
760
794
|
await this._extensionService.whenInstalledExtensionsRegistered();
|
|
@@ -769,73 +803,78 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
769
803
|
await this._extensionService.activateByEvent(`onChatSession:${chatSessionResource.scheme}`);
|
|
770
804
|
return ( this._contentProviders.has(chatSessionResource.scheme));
|
|
771
805
|
}
|
|
772
|
-
async
|
|
773
|
-
|
|
774
|
-
const resolvedProviderTypes = ( new Set());
|
|
775
|
-
for (const contrib of this.getAllChatSessionContributions()) {
|
|
806
|
+
async tryActivateControllers(providersToResolve) {
|
|
807
|
+
await Promise.all(( this.getAllChatSessionContributions().map(async contrib => {
|
|
776
808
|
if (providersToResolve && !providersToResolve.includes(contrib.type)) {
|
|
777
|
-
|
|
809
|
+
return;
|
|
778
810
|
}
|
|
779
|
-
|
|
780
|
-
if (!provider) {
|
|
811
|
+
if (!(await this.doActivateChatSessionItemController(contrib.type))) {
|
|
781
812
|
if (providersToResolve?.includes(contrib.type)) {
|
|
782
813
|
this._logService.trace(
|
|
783
814
|
`[ChatSessionsService] No enabled provider found for chat session type ${contrib.type}`
|
|
784
815
|
);
|
|
785
816
|
}
|
|
786
|
-
continue;
|
|
787
|
-
}
|
|
788
|
-
try {
|
|
789
|
-
const providerSessions = await raceCancellationError(provider.provideChatSessionItems(token), token);
|
|
790
|
-
this._logService.trace(
|
|
791
|
-
`[ChatSessionsService] Resolved ${providerSessions.length} sessions for provider ${provider.chatSessionType}`
|
|
792
|
-
);
|
|
793
|
-
results.push({
|
|
794
|
-
chatSessionType: provider.chatSessionType,
|
|
795
|
-
items: providerSessions
|
|
796
|
-
});
|
|
797
|
-
resolvedProviderTypes.add(provider.chatSessionType);
|
|
798
|
-
} catch (error) {
|
|
799
|
-
this._logService.error(
|
|
800
|
-
`[ChatSessionsService] Failed to resolve sessions for provider ${provider.chatSessionType}`,
|
|
801
|
-
error
|
|
802
|
-
);
|
|
803
|
-
continue;
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
for (const [chatSessionType, provider] of this._itemsProviders) {
|
|
807
|
-
if (( resolvedProviderTypes.has(chatSessionType))) {
|
|
808
|
-
continue;
|
|
809
817
|
}
|
|
810
|
-
|
|
811
|
-
|
|
818
|
+
})));
|
|
819
|
+
}
|
|
820
|
+
async getChatSessionItems(providersToResolve, token) {
|
|
821
|
+
await this.tryActivateControllers(providersToResolve);
|
|
822
|
+
const results = [];
|
|
823
|
+
await Promise.all(( Array.from(this._itemControllers).map(async ([chatSessionType, controllerEntry]) => {
|
|
824
|
+
const resolvedType = this._resolveToPrimaryType(chatSessionType) ?? chatSessionType;
|
|
825
|
+
if (providersToResolve && !providersToResolve.includes(resolvedType)) {
|
|
826
|
+
return;
|
|
812
827
|
}
|
|
813
828
|
try {
|
|
814
|
-
|
|
829
|
+
await controllerEntry.initialRefresh;
|
|
830
|
+
const providerSessions = controllerEntry.controller.items;
|
|
815
831
|
this._logService.trace(
|
|
816
|
-
`[ChatSessionsService] Resolved ${providerSessions.length} sessions for
|
|
832
|
+
`[ChatSessionsService] Resolved ${providerSessions.length} sessions for provider ${resolvedType}`
|
|
817
833
|
);
|
|
818
834
|
results.push({
|
|
819
|
-
chatSessionType,
|
|
835
|
+
chatSessionType: resolvedType,
|
|
820
836
|
items: providerSessions
|
|
821
837
|
});
|
|
822
|
-
} catch (
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
838
|
+
} catch (err) {
|
|
839
|
+
if (!isCancellationError(err)) {
|
|
840
|
+
this._logService.error(
|
|
841
|
+
`[ChatSessionsService] Failed to resolve sessions for provider ${resolvedType}`,
|
|
842
|
+
err
|
|
843
|
+
);
|
|
844
|
+
}
|
|
828
845
|
}
|
|
829
|
-
}
|
|
846
|
+
})));
|
|
830
847
|
return results;
|
|
831
848
|
}
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
this.
|
|
835
|
-
|
|
849
|
+
async refreshChatSessionItems(providersToResolve, token) {
|
|
850
|
+
await this.tryActivateControllers(providersToResolve);
|
|
851
|
+
await Promise.all(( Array.from(this._itemControllers).map(async ([chatSessionType, controllerEntry]) => {
|
|
852
|
+
try {
|
|
853
|
+
await controllerEntry.controller.refresh(token);
|
|
854
|
+
} catch (err) {
|
|
855
|
+
if (!isCancellationError(err)) {
|
|
856
|
+
this._logService.error(
|
|
857
|
+
`[ChatSessionsService] Failed to resolve sessions for provider ${chatSessionType}`,
|
|
858
|
+
err
|
|
859
|
+
);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
})));
|
|
863
|
+
}
|
|
864
|
+
registerChatSessionItemController(chatSessionType, controller) {
|
|
836
865
|
const disposables = ( new DisposableStore());
|
|
837
|
-
disposables.add(
|
|
838
|
-
|
|
866
|
+
const initialRefreshCts = disposables.add(( new CancellationTokenSource()));
|
|
867
|
+
this._itemControllers.set(chatSessionType, {
|
|
868
|
+
controller,
|
|
869
|
+
initialRefresh: controller.refresh(initialRefreshCts.token)
|
|
870
|
+
});
|
|
871
|
+
this._onDidChangeItemsProviders.fire({
|
|
872
|
+
chatSessionType
|
|
873
|
+
});
|
|
874
|
+
disposables.add(controller.onDidChangeChatSessionItems(() => {
|
|
875
|
+
this._onDidChangeSessionItems.fire({
|
|
876
|
+
chatSessionType
|
|
877
|
+
});
|
|
839
878
|
}));
|
|
840
879
|
this.updateInProgressStatus(chatSessionType).catch(error => {
|
|
841
880
|
this._logService.warn(
|
|
@@ -845,11 +884,14 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
845
884
|
});
|
|
846
885
|
return {
|
|
847
886
|
dispose: () => {
|
|
887
|
+
initialRefreshCts.cancel();
|
|
848
888
|
disposables.dispose();
|
|
849
|
-
const
|
|
850
|
-
if (
|
|
851
|
-
this.
|
|
852
|
-
this._onDidChangeItemsProviders.fire(
|
|
889
|
+
const controller = this._itemControllers.get(chatSessionType);
|
|
890
|
+
if (controller) {
|
|
891
|
+
this._itemControllers.delete(chatSessionType);
|
|
892
|
+
this._onDidChangeItemsProviders.fire({
|
|
893
|
+
chatSessionType
|
|
894
|
+
});
|
|
853
895
|
}
|
|
854
896
|
}
|
|
855
897
|
};
|
|
@@ -948,34 +990,72 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
948
990
|
const confirmationTitle = state.confirmationMessages?.title;
|
|
949
991
|
const titleMessage = confirmationTitle && (typeof confirmationTitle === "string" ? confirmationTitle : confirmationTitle.value);
|
|
950
992
|
const descriptionValue = typeof description === "string" ? description : description.value;
|
|
951
|
-
description = titleMessage ?? ( localize(
|
|
993
|
+
description = titleMessage ?? ( localize(5980, "Waiting for confirmation: {0}", descriptionValue));
|
|
952
994
|
}
|
|
953
995
|
} else if (part.kind === "toolInvocationSerialized") {
|
|
954
996
|
description = part.invocationMessage;
|
|
955
997
|
} else if (part.kind === "progressMessage") {
|
|
956
998
|
description = part.content;
|
|
957
999
|
} else if (part.kind === "thinking") {
|
|
958
|
-
description = ( localize(
|
|
1000
|
+
description = ( localize(5981, "Thinking..."));
|
|
959
1001
|
}
|
|
960
1002
|
}
|
|
961
1003
|
return description ? renderAsPlaintext(description, {
|
|
962
1004
|
useLinkFormatter: true
|
|
963
1005
|
}) : "";
|
|
964
1006
|
}
|
|
1007
|
+
async createNewChatSessionItem(chatSessionType, request, token) {
|
|
1008
|
+
const controllerData = this._itemControllers.get(chatSessionType);
|
|
1009
|
+
if (!controllerData) {
|
|
1010
|
+
return undefined;
|
|
1011
|
+
}
|
|
1012
|
+
await controllerData.initialRefresh;
|
|
1013
|
+
return controllerData.controller.newChatSessionItem?.(request, token);
|
|
1014
|
+
}
|
|
965
1015
|
async getOrCreateChatSession(sessionResource, token) {
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
1016
|
+
{
|
|
1017
|
+
const existingSessionData = this._sessions.get(sessionResource);
|
|
1018
|
+
if (existingSessionData) {
|
|
1019
|
+
return existingSessionData.session;
|
|
1020
|
+
}
|
|
969
1021
|
}
|
|
970
1022
|
if (!(await raceCancellationError(this.canResolveChatSession(sessionResource), token))) {
|
|
971
1023
|
throw Error(`Can not find provider for ${sessionResource}`);
|
|
972
1024
|
}
|
|
1025
|
+
{
|
|
1026
|
+
const existingSessionData = this._sessions.get(sessionResource);
|
|
1027
|
+
if (existingSessionData) {
|
|
1028
|
+
return existingSessionData.session;
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
973
1031
|
const resolvedType = this._resolveToPrimaryType(sessionResource.scheme) || sessionResource.scheme;
|
|
974
1032
|
const provider = this._contentProviders.get(resolvedType);
|
|
975
1033
|
if (!provider) {
|
|
976
1034
|
throw Error(`Can not find provider for ${sessionResource}`);
|
|
977
1035
|
}
|
|
978
|
-
|
|
1036
|
+
let session;
|
|
1037
|
+
const newSessionOptions = this.getNewSessionOptionsForSessionType(resolvedType);
|
|
1038
|
+
if (sessionResource.path.startsWith("/untitled") && newSessionOptions) {
|
|
1039
|
+
session = {
|
|
1040
|
+
sessionResource: sessionResource,
|
|
1041
|
+
onWillDispose: Event.None,
|
|
1042
|
+
history: [],
|
|
1043
|
+
options: newSessionOptions ?? {},
|
|
1044
|
+
dispose: () => {}
|
|
1045
|
+
};
|
|
1046
|
+
for (const [optionId, value] of Object.entries(newSessionOptions ?? {})) {
|
|
1047
|
+
this.setSessionOption(sessionResource, optionId, value);
|
|
1048
|
+
}
|
|
1049
|
+
} else {
|
|
1050
|
+
session = await raceCancellationError(provider.provideChatSessionContent(sessionResource, token), token);
|
|
1051
|
+
}
|
|
1052
|
+
{
|
|
1053
|
+
const existingSessionData = this._sessions.get(sessionResource);
|
|
1054
|
+
if (existingSessionData) {
|
|
1055
|
+
session.dispose();
|
|
1056
|
+
return existingSessionData.session;
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
979
1059
|
const sessionData = ( new ContributedChatSessionData(
|
|
980
1060
|
session,
|
|
981
1061
|
sessionResource.scheme,
|
|
@@ -987,22 +1067,26 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
987
1067
|
}
|
|
988
1068
|
));
|
|
989
1069
|
this._sessions.set(sessionResource, sessionData);
|
|
1070
|
+
this._onDidChangeSessionOptions.fire(sessionResource);
|
|
990
1071
|
return session;
|
|
991
1072
|
}
|
|
992
1073
|
hasAnySessionOptions(sessionResource) {
|
|
993
|
-
const session = this._sessions.get(sessionResource);
|
|
1074
|
+
const session = this._sessions.get(this._resolveResource(sessionResource));
|
|
994
1075
|
return !!session && !!session.options && ( Object.keys(session.options)).length > 0;
|
|
995
1076
|
}
|
|
996
1077
|
getSessionOption(sessionResource, optionId) {
|
|
997
|
-
const session = this._sessions.get(sessionResource);
|
|
1078
|
+
const session = this._sessions.get(this._resolveResource(sessionResource));
|
|
998
1079
|
return session?.getOption(optionId);
|
|
999
1080
|
}
|
|
1000
1081
|
setSessionOption(sessionResource, optionId, value) {
|
|
1001
|
-
const session = this._sessions.get(sessionResource);
|
|
1082
|
+
const session = this._sessions.get(this._resolveResource(sessionResource));
|
|
1002
1083
|
return !!session?.setOption(optionId, value);
|
|
1003
1084
|
}
|
|
1004
|
-
|
|
1005
|
-
this.
|
|
1085
|
+
_resolveResource(resource) {
|
|
1086
|
+
return this._resourceAliases.get(resource) ?? resource;
|
|
1087
|
+
}
|
|
1088
|
+
registerSessionResourceAlias(untitledResource, realResource) {
|
|
1089
|
+
this._resourceAliases.set(realResource, untitledResource);
|
|
1006
1090
|
}
|
|
1007
1091
|
setOptionGroupsForSessionType(chatSessionType, handle, optionGroups) {
|
|
1008
1092
|
if (optionGroups) {
|
|
@@ -1015,6 +1099,12 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
1015
1099
|
getOptionGroupsForSessionType(chatSessionType) {
|
|
1016
1100
|
return this._sessionTypeOptions.get(chatSessionType);
|
|
1017
1101
|
}
|
|
1102
|
+
getNewSessionOptionsForSessionType(chatSessionType) {
|
|
1103
|
+
return this._sessionTypeNewSessionOptions.get(chatSessionType);
|
|
1104
|
+
}
|
|
1105
|
+
setNewSessionOptionsForSessionType(chatSessionType, options) {
|
|
1106
|
+
this._sessionTypeNewSessionOptions.set(chatSessionType, options);
|
|
1107
|
+
}
|
|
1018
1108
|
async notifySessionOptionsChange(sessionResource, updates) {
|
|
1019
1109
|
if (!updates.length) {
|
|
1020
1110
|
return;
|
|
@@ -1032,7 +1122,7 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
1032
1122
|
for (const u of updates) {
|
|
1033
1123
|
this.setSessionOption(sessionResource, u.optionId, u.value);
|
|
1034
1124
|
}
|
|
1035
|
-
this._onDidChangeSessionOptions.fire(sessionResource);
|
|
1125
|
+
this._onDidChangeSessionOptions.fire(this._resolveResource(sessionResource));
|
|
1036
1126
|
this._logService.trace(
|
|
1037
1127
|
`[ChatSessionsService] notifySessionOptionsChange: finished for ${sessionResource}`
|
|
1038
1128
|
);
|
|
@@ -1065,6 +1155,10 @@ let ChatSessionsService = class ChatSessionsService extends Disposable {
|
|
|
1065
1155
|
const contribution = this._contributions.get(chatSessionType)?.contribution;
|
|
1066
1156
|
return contribution?.customAgentTarget ?? Target.Undefined;
|
|
1067
1157
|
}
|
|
1158
|
+
requiresCustomModelsForSessionType(chatSessionType) {
|
|
1159
|
+
const contribution = this._contributions.get(chatSessionType)?.contribution;
|
|
1160
|
+
return !!contribution?.requiresCustomModels;
|
|
1161
|
+
}
|
|
1068
1162
|
getContentProviderSchemes() {
|
|
1069
1163
|
return Array.from(( this._contentProviders.keys()));
|
|
1070
1164
|
}
|
|
@@ -1075,7 +1169,7 @@ function registerNewSessionInPlaceAction(type, displayName) {
|
|
|
1075
1169
|
constructor() {
|
|
1076
1170
|
super({
|
|
1077
1171
|
id: `workbench.action.chat.openNewChatSessionInPlace.${type}`,
|
|
1078
|
-
title: ( localize2(
|
|
1172
|
+
title: ( localize2(5982, "New {0}", displayName)),
|
|
1079
1173
|
category: CHAT_CATEGORY,
|
|
1080
1174
|
f1: false,
|
|
1081
1175
|
precondition: ChatContextKeys.enabled
|
|
@@ -1091,7 +1185,7 @@ function registerNewSessionInPlaceAction(type, displayName) {
|
|
|
1091
1185
|
}
|
|
1092
1186
|
await openChatSession(accessor, {
|
|
1093
1187
|
type: type,
|
|
1094
|
-
displayName: ( localize(
|
|
1188
|
+
displayName: ( localize(5983, "Chat")),
|
|
1095
1189
|
position: chatSessionPosition,
|
|
1096
1190
|
replaceEditor: true
|
|
1097
1191
|
});
|
|
@@ -1103,7 +1197,7 @@ function registerNewSessionExternalAction(type, displayName, commandId) {
|
|
|
1103
1197
|
constructor() {
|
|
1104
1198
|
super({
|
|
1105
1199
|
id: `workbench.action.chat.openNewChatSessionExternal.${type}`,
|
|
1106
|
-
title: ( localize2(
|
|
1200
|
+
title: ( localize2(5984, "New {0}", displayName)),
|
|
1107
1201
|
category: CHAT_CATEGORY,
|
|
1108
1202
|
f1: false,
|
|
1109
1203
|
precondition: ChatContextKeys.enabled
|
|
@@ -1146,7 +1240,7 @@ async function openChatSession(accessor, openOptions, chatSendOptions) {
|
|
|
1146
1240
|
override: ChatEditorInput.EditorID,
|
|
1147
1241
|
pinned: true,
|
|
1148
1242
|
title: {
|
|
1149
|
-
fallback: ( localize(
|
|
1243
|
+
fallback: ( localize(5985, "{0}", openOptions.displayName))
|
|
1150
1244
|
}
|
|
1151
1245
|
};
|
|
1152
1246
|
if (openOptions.replaceEditor) {
|
|
@@ -1184,6 +1278,15 @@ async function openChatSession(accessor, openOptions, chatSendOptions) {
|
|
|
1184
1278
|
}
|
|
1185
1279
|
if (chatSendOptions) {
|
|
1186
1280
|
try {
|
|
1281
|
+
if (chatSendOptions.initialSessionOptions) {
|
|
1282
|
+
const model = chatService.getSession(resource);
|
|
1283
|
+
if (model?.contributedChatSession) {
|
|
1284
|
+
model.setContributedChatSession({
|
|
1285
|
+
...model.contributedChatSession,
|
|
1286
|
+
initialSessionOptions: chatSendOptions.initialSessionOptions
|
|
1287
|
+
});
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1187
1290
|
await chatService.sendRequest(resource, chatSendOptions.prompt, {
|
|
1188
1291
|
agentIdSilent: openOptions.type,
|
|
1189
1292
|
attachedContext: chatSendOptions.attachedContext
|