@codingame/monaco-vscode-katex-common 32.0.2 → 33.0.7
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/actions/browser/buttonbar.js +2 -2
- package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.d.ts +30 -0
- package/vscode/src/vs/platform/agentHost/common/claudeSessionConfigKeys.js +8 -0
- package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.d.ts +32 -0
- package/vscode/src/vs/platform/agentHost/common/sessionConfigKeys.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +56 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +114 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +87 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +502 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +188 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +153 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +30 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +52 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +23 -20
- 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/chatChangesSummaryPart.js +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/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.d.ts +13 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +40 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -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.js +1 -1
- 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 +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +217 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +44 -44
- 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.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +6 -6
- 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 +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +36 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +12 -9
- 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 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +8 -13
- 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.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +16 -0
- 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.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +24 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +72 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +2 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +7 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
- 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.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/media/toolRiskBadge.css +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +25 -5
- 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 +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +41 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +31 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +89 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +203 -107
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -2
- 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.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +32 -81
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
- 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/common/inlineChat.js +30 -30
- 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/notebook/browser/controller/cellOperations.js +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
- 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/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +4 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +4 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +29 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +27 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +17 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +150 -69
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +9 -14
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
import { registerCss } from '@codingame/monaco-vscode-api/css';
|
|
3
3
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
4
|
-
import {
|
|
4
|
+
import { $, addDisposableListener, EventType } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
5
|
+
import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
|
|
5
6
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
6
7
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
7
8
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
9
|
+
import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
|
|
8
10
|
import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
9
11
|
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
10
12
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
@@ -16,6 +18,9 @@ import * as toolRiskBadge from './media/toolRiskBadge.css';
|
|
|
16
18
|
registerCss(toolRiskBadge);
|
|
17
19
|
const RISK_BADGE_CLASS = "tool-risk-badge";
|
|
18
20
|
let ToolRiskBadgeWidget = class ToolRiskBadgeWidget extends Disposable {
|
|
21
|
+
get isDisposed() {
|
|
22
|
+
return this._store.isDisposed;
|
|
23
|
+
}
|
|
19
24
|
constructor(_hoverService) {
|
|
20
25
|
super();
|
|
21
26
|
this._hoverService = _hoverService;
|
|
@@ -30,17 +35,32 @@ let ToolRiskBadgeWidget = class ToolRiskBadgeWidget extends Disposable {
|
|
|
30
35
|
this._detailsIconEl.classList.add(...ThemeIcon.asClassNameArray(Codicon.info));
|
|
31
36
|
this._detailsIconEl.tabIndex = 0;
|
|
32
37
|
this._detailsIconEl.setAttribute("role", "button");
|
|
33
|
-
this._detailsIconEl.setAttribute("aria-label", ( localize(
|
|
38
|
+
this._detailsIconEl.setAttribute("aria-label", ( localize(7474, "Risk assessment details")));
|
|
34
39
|
this.domNode.append(this._iconEl, this._textEl, this._detailsIconEl);
|
|
35
40
|
this._refreshDetailsHover();
|
|
36
41
|
this.setLoading();
|
|
42
|
+
this._register(addDisposableListener(this._detailsIconEl, EventType.CLICK, e => {
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
e.stopPropagation();
|
|
45
|
+
this._hoverService.showManagedHover(this._detailsIconEl);
|
|
46
|
+
}));
|
|
47
|
+
this._register(
|
|
48
|
+
addDisposableListener(this._detailsIconEl, EventType.KEY_DOWN, e => {
|
|
49
|
+
const ev = ( new StandardKeyboardEvent(e));
|
|
50
|
+
if (ev.keyCode === KeyCode.Enter || ev.keyCode === KeyCode.Space) {
|
|
51
|
+
ev.preventDefault();
|
|
52
|
+
ev.stopPropagation();
|
|
53
|
+
this._hoverService.showManagedHover(this._detailsIconEl);
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
);
|
|
37
57
|
}
|
|
38
58
|
setLoading() {
|
|
39
59
|
this._setVariant("loading");
|
|
40
60
|
this._setIcon(ThemeIcon.modify(Codicon.loading, "spin"));
|
|
41
|
-
const text = ( localize(
|
|
61
|
+
const text = ( localize(7475, "Assessing risk…"));
|
|
42
62
|
this._textEl.textContent = text;
|
|
43
|
-
this._setHover(( localize(
|
|
63
|
+
this._setHover(( localize(7476, "Generating a risk assessment for this tool call.")));
|
|
44
64
|
}
|
|
45
65
|
setHidden() {
|
|
46
66
|
this.domNode.style.display = "none";
|
|
@@ -102,7 +122,7 @@ let ToolRiskBadgeWidget = class ToolRiskBadgeWidget extends Disposable {
|
|
|
102
122
|
);
|
|
103
123
|
}
|
|
104
124
|
_buildDetailsMarkdown() {
|
|
105
|
-
const aiNote = ( localize(
|
|
125
|
+
const aiNote = ( localize(7477, "Risk assessments are AI-generated and may be inaccurate."));
|
|
106
126
|
const details = this._details;
|
|
107
127
|
const md = ( new MarkdownString(undefined, {
|
|
108
128
|
supportThemeIcons: true,
|
|
@@ -209,23 +209,23 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
|
|
|
209
209
|
getDropTypeName(type) {
|
|
210
210
|
switch (type) {
|
|
211
211
|
case ChatDragAndDropType.FILE_INTERNAL:
|
|
212
|
-
return localize(
|
|
212
|
+
return localize(7478, "File");
|
|
213
213
|
case ChatDragAndDropType.FILE_EXTERNAL:
|
|
214
|
-
return localize(
|
|
214
|
+
return localize(7478, "File");
|
|
215
215
|
case ChatDragAndDropType.FOLDER:
|
|
216
|
-
return localize(
|
|
216
|
+
return localize(7479, "Folder");
|
|
217
217
|
case ChatDragAndDropType.IMAGE:
|
|
218
|
-
return localize(
|
|
218
|
+
return localize(7480, "Image");
|
|
219
219
|
case ChatDragAndDropType.SYMBOL:
|
|
220
|
-
return localize(
|
|
220
|
+
return localize(7481, "Symbol");
|
|
221
221
|
case ChatDragAndDropType.MARKER:
|
|
222
|
-
return localize(
|
|
222
|
+
return localize(7482, "Problem");
|
|
223
223
|
case ChatDragAndDropType.HTML:
|
|
224
|
-
return localize(
|
|
224
|
+
return localize(7483, "URL");
|
|
225
225
|
case ChatDragAndDropType.NOTEBOOK_CELL_OUTPUT:
|
|
226
|
-
return localize(
|
|
226
|
+
return localize(7484, "Output");
|
|
227
227
|
case ChatDragAndDropType.SCM_HISTORY_ITEM:
|
|
228
|
-
return localize(
|
|
228
|
+
return localize(7485, "Change");
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
async resolveAttachmentsFromDragEvent(e) {
|
|
@@ -297,7 +297,7 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
|
|
|
297
297
|
async resolveHTMLAttachContext(e) {
|
|
298
298
|
const existingAttachmentNames = ( new Set(( this.attachmentModel.attachments.map(attachment => attachment.name))));
|
|
299
299
|
const createDisplayName = () => {
|
|
300
|
-
const baseName = ( localize(
|
|
300
|
+
const baseName = ( localize(7486, "Image from URL"));
|
|
301
301
|
let uniqueName = baseName;
|
|
302
302
|
let baseNameInstance = 1;
|
|
303
303
|
while (( existingAttachmentNames.has(uniqueName))) {
|
|
@@ -375,7 +375,7 @@ let ChatDragAndDrop = class ChatDragAndDrop extends Themable {
|
|
|
375
375
|
}
|
|
376
376
|
getOverlayText(type) {
|
|
377
377
|
const typeName = this.getDropTypeName(type);
|
|
378
|
-
return localize(
|
|
378
|
+
return localize(7487, "Attach {0} as Context", typeName);
|
|
379
379
|
}
|
|
380
380
|
updateOverlayStyles(overlay) {
|
|
381
381
|
overlay.style.backgroundColor = this.getColor(this.styles.overlayBackground) || "";
|
|
@@ -2,7 +2,7 @@ import { CachedListVirtualDelegate, IListElementRenderDetails } from "@codingame
|
|
|
2
2
|
import { ITreeNode, ITreeRenderer } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/tree/tree";
|
|
3
3
|
import { Emitter, Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
4
4
|
import { FuzzyScore } from "@codingame/monaco-vscode-api/vscode/vs/base/common/filters";
|
|
5
|
-
import { Disposable, DisposableStore, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
5
|
+
import { Disposable, DisposableMap, DisposableStore, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
6
6
|
import { ScrollEvent } from "@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable";
|
|
7
7
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
8
8
|
import { MenuWorkbenchToolBar } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/browser/toolbar";
|
|
@@ -36,6 +36,13 @@ export interface IChatListItemTemplate {
|
|
|
36
36
|
* they are disposed in a separate cycle after diffing with the next content to render.
|
|
37
37
|
*/
|
|
38
38
|
renderedParts?: IChatContentPart[];
|
|
39
|
+
/**
|
|
40
|
+
* Tool parts that have been moved out of a thinking part into the row's value
|
|
41
|
+
* container. Their lifecycle matches `renderedParts` (cleared by
|
|
42
|
+
* `clearRenderedParts`), not `elementDisposables` which is cleared on
|
|
43
|
+
* virtualization recycle.
|
|
44
|
+
*/
|
|
45
|
+
movedOutToolParts?: DisposableMap<string, IDisposable>;
|
|
39
46
|
/**
|
|
40
47
|
* Element used to track whether the template is mounted in the DOM.
|
|
41
48
|
*/
|
|
@@ -179,6 +186,7 @@ export declare class ChatListItemRenderer extends Disposable implements ITreeRen
|
|
|
179
186
|
private getConfirmationPendingLabel;
|
|
180
187
|
private removeWorkingProgressContentPart;
|
|
181
188
|
private updateWorkingProgressForPendingConfirmations;
|
|
189
|
+
private doUpdateWorkingProgressForPendingConfirmations;
|
|
182
190
|
private getWorkingProgressContentPart;
|
|
183
191
|
private createUpdateWorkingProgressOnConfirmationEnd;
|
|
184
192
|
private hasBeenCaughtUpLongEnough;
|
|
@@ -14,7 +14,7 @@ import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/even
|
|
|
14
14
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
15
15
|
import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
|
|
16
16
|
import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
|
|
17
|
-
import { Disposable, DisposableStore, dispose, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
17
|
+
import { Disposable, DisposableStore, dispose, toDisposable, DisposableMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
18
18
|
import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
19
19
|
import { FileAccess, Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
20
20
|
import { clamp } from '@codingame/monaco-vscode-api/vscode/vs/base/common/numbers';
|
|
@@ -268,8 +268,9 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
268
268
|
if (normalizedHeight === template.currentElement.currentRenderedHeight) {
|
|
269
269
|
return;
|
|
270
270
|
}
|
|
271
|
+
const originalStoredHeight = template.currentElement.currentRenderedHeight;
|
|
271
272
|
template.currentElement.currentRenderedHeight = normalizedHeight;
|
|
272
|
-
if (template.currentElement !== this._elementBeingRendered) {
|
|
273
|
+
if (template.currentElement !== this._elementBeingRendered && typeof originalStoredHeight === "number") {
|
|
273
274
|
this._onDidChangeItemHeight.fire({
|
|
274
275
|
element: template.currentElement,
|
|
275
276
|
height: normalizedHeight
|
|
@@ -464,7 +465,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
464
465
|
const checkpointRestoreContainer = append(rowContainer, $(".checkpoint-restore-container"));
|
|
465
466
|
append(checkpointRestoreContainer, $(".checkpoint-line-left"));
|
|
466
467
|
const label = append(checkpointRestoreContainer, $("span.checkpoint-label-text"));
|
|
467
|
-
label.textContent = ( localize(
|
|
468
|
+
label.textContent = ( localize(7488, "Checkpoint Restored"));
|
|
468
469
|
const dot = append(checkpointRestoreContainer, $("span.checkpoint-dot-separator"));
|
|
469
470
|
dot.textContent = "·";
|
|
470
471
|
dot.setAttribute("aria-hidden", "true");
|
|
@@ -595,6 +596,8 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
595
596
|
} else if (isPendingDividerVM(templateData.currentElement)) {
|
|
596
597
|
clearNode(templateData.value);
|
|
597
598
|
}
|
|
599
|
+
templateData.movedOutToolParts?.dispose();
|
|
600
|
+
templateData.movedOutToolParts = undefined;
|
|
598
601
|
if (templateData.titleToolbar) {
|
|
599
602
|
templateData.titleToolbar.context = undefined;
|
|
600
603
|
}
|
|
@@ -839,15 +842,15 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
839
842
|
const label = append(dividerContent, $$1("span.pending-divider-label"));
|
|
840
843
|
if (element.dividerKind === ChatRequestQueueKind.Steering) {
|
|
841
844
|
if (element.isSystemInitiated) {
|
|
842
|
-
label.textContent = ( localize(
|
|
843
|
-
label.title = ( localize(
|
|
845
|
+
label.textContent = ( localize(7489, "System Notification"));
|
|
846
|
+
label.title = ( localize(7490, "System notification will be sent after the next tool call happens"));
|
|
844
847
|
} else {
|
|
845
|
-
label.textContent = ( localize(
|
|
846
|
-
label.title = ( localize(
|
|
848
|
+
label.textContent = ( localize(7491, "Steering"));
|
|
849
|
+
label.title = ( localize(7492, "Steering message will be sent after the next tool call happens"));
|
|
847
850
|
}
|
|
848
851
|
} else {
|
|
849
|
-
label.textContent = ( localize(
|
|
850
|
-
label.title = ( localize(
|
|
852
|
+
label.textContent = ( localize(7493, "Queued"));
|
|
853
|
+
label.title = ( localize(7494, "Queued messages will be sent after the current request completes"));
|
|
851
854
|
}
|
|
852
855
|
templateData.value.appendChild(dividerContent);
|
|
853
856
|
}
|
|
@@ -855,10 +858,10 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
855
858
|
clearNode(templateData.detail);
|
|
856
859
|
if (element.agentOrSlashCommandDetected) {
|
|
857
860
|
const msg = element.slashCommand ? ( localize(
|
|
858
|
-
|
|
861
|
+
7495,
|
|
859
862
|
"used {0} [[(rerun without)]]",
|
|
860
863
|
`${chatSubcommandLeader}${element.slashCommand.name}`
|
|
861
|
-
)) : ( localize(
|
|
864
|
+
)) : ( localize(7496, "[[(rerun without)]]"));
|
|
862
865
|
reset(templateData.detail, renderFormattedText(msg, {
|
|
863
866
|
actionHandler: {
|
|
864
867
|
disposables: templateData.elementDisposables,
|
|
@@ -871,7 +874,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
871
874
|
this.delegate.currentChatMode(),
|
|
872
875
|
this.rendererOptions.progressMessageAtBottomOfResponse
|
|
873
876
|
)) {
|
|
874
|
-
templateData.detail.textContent = ( localize(
|
|
877
|
+
templateData.detail.textContent = ( localize(7497, "Working"));
|
|
875
878
|
}
|
|
876
879
|
}
|
|
877
880
|
renderConfirmationAction(element, templateData) {
|
|
@@ -880,7 +883,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
880
883
|
append(templateData.detail, $("span.codicon.codicon-check", {
|
|
881
884
|
"aria-hidden": "true"
|
|
882
885
|
}));
|
|
883
|
-
append(templateData.detail, $("span.confirmation-text", undefined, ( localize(
|
|
886
|
+
append(templateData.detail, $("span.confirmation-text", undefined, ( localize(7498, "Selected \"{0}\"", element.confirmation))));
|
|
884
887
|
templateData.header?.classList.remove("header-disabled");
|
|
885
888
|
templateData.header?.classList.add("partially-disabled");
|
|
886
889
|
}
|
|
@@ -1080,7 +1083,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
1080
1083
|
}).length;
|
|
1081
1084
|
}
|
|
1082
1085
|
getConfirmationPendingLabel(count) {
|
|
1083
|
-
return count === 1 ? ( localize(
|
|
1086
|
+
return count === 1 ? ( localize(7499, "1 confirmation pending")) : ( localize(7500, "{0} confirmations pending", count));
|
|
1084
1087
|
}
|
|
1085
1088
|
removeWorkingProgressContentPart(templateData) {
|
|
1086
1089
|
const renderedParts = templateData.renderedParts;
|
|
@@ -1099,6 +1102,15 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
1099
1102
|
}
|
|
1100
1103
|
}
|
|
1101
1104
|
updateWorkingProgressForPendingConfirmations(templateData) {
|
|
1105
|
+
const originalElement = templateData.currentElement;
|
|
1106
|
+
queueMicrotask(() => {
|
|
1107
|
+
if (templateData.currentElement !== originalElement) {
|
|
1108
|
+
return;
|
|
1109
|
+
}
|
|
1110
|
+
this.doUpdateWorkingProgressForPendingConfirmations(templateData);
|
|
1111
|
+
});
|
|
1112
|
+
}
|
|
1113
|
+
doUpdateWorkingProgressForPendingConfirmations(templateData) {
|
|
1102
1114
|
const element = templateData.currentElement;
|
|
1103
1115
|
if (!isResponseVM(element)) {
|
|
1104
1116
|
return;
|
|
@@ -1954,7 +1966,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
1954
1966
|
"ChatListItemRenderer#renderChatContentPart: error rendering content",
|
|
1955
1967
|
toErrorMessage(err, true)
|
|
1956
1968
|
);
|
|
1957
|
-
const errorPart = this.instantiationService.createInstance(ChatErrorContentPart, ChatErrorLevel.Error, ( new MarkdownString(( localize(
|
|
1969
|
+
const errorPart = this.instantiationService.createInstance(ChatErrorContentPart, ChatErrorLevel.Error, ( new MarkdownString(( localize(7501, "Failed to render content")) + `: ${toErrorMessage(err, false)}`)), content, this.chatContentMarkdownRenderer);
|
|
1958
1970
|
return {
|
|
1959
1971
|
dispose: () => errorPart.dispose(),
|
|
1960
1972
|
domNode: errorPart.domNode,
|
|
@@ -2220,6 +2232,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
2220
2232
|
}
|
|
2221
2233
|
templateData.value.appendChild(createdPart.domNode);
|
|
2222
2234
|
thinkingPart.removeMaterializedItem(toolInvocation.toolCallId);
|
|
2235
|
+
(templateData.movedOutToolParts ??= ( new DisposableMap())).set(toolInvocation.toolCallId, createdPart);
|
|
2223
2236
|
} else {
|
|
2224
2237
|
thinkingPart.removeLazyItem(toolInvocation.toolId);
|
|
2225
2238
|
const {
|
|
@@ -2227,6 +2240,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
2227
2240
|
part: createdPart
|
|
2228
2241
|
} = createToolPart();
|
|
2229
2242
|
part = createdPart;
|
|
2243
|
+
(templateData.movedOutToolParts ??= ( new DisposableMap())).set(toolInvocation.toolCallId, createdPart);
|
|
2230
2244
|
templateData.value.appendChild(domNode);
|
|
2231
2245
|
}
|
|
2232
2246
|
this.finalizeCurrentThinkingPart(context, templateData);
|
|
@@ -2331,7 +2345,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
2331
2345
|
}
|
|
2332
2346
|
const shouldPinToThinking = hookPart.hookType === HookType.PreToolUse || hookPart.hookType === HookType.PostToolUse;
|
|
2333
2347
|
if (shouldPinToThinking) {
|
|
2334
|
-
const hookTitle = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(
|
|
2348
|
+
const hookTitle = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(7502, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(7503, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(7504, "Used {0}, but received a warning", hookPart.toolDisplayName)) : ( localize(7505, "Tool call received a warning")));
|
|
2335
2349
|
let thinkingPart = this.getLastThinkingPart(templateData.renderedParts);
|
|
2336
2350
|
if (!thinkingPart) {
|
|
2337
2351
|
const newThinking = this.renderThinkingPart({
|
|
@@ -2508,10 +2522,10 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
2508
2522
|
return;
|
|
2509
2523
|
}
|
|
2510
2524
|
const questionCount = carousel.questions.length;
|
|
2511
|
-
const question = carousel.questions.length > 0 && carousel.questions[0].message ? carousel.questions[0].message : ( localize(
|
|
2525
|
+
const question = carousel.questions.length > 0 && carousel.questions[0].message ? carousel.questions[0].message : ( localize(7506, "Chat input required."));
|
|
2512
2526
|
const stringQuestion = typeof question === "string" ? question : question.value;
|
|
2513
|
-
const alertMessage = questionCount === 1 ? ( localize(
|
|
2514
|
-
|
|
2527
|
+
const alertMessage = questionCount === 1 ? ( localize(7507, "Chat input required (1 question): {0}", stringQuestion)) : ( localize(
|
|
2528
|
+
7508,
|
|
2515
2529
|
"Chat input required ({0} questions): {1}",
|
|
2516
2530
|
questionCount,
|
|
2517
2531
|
stringQuestion
|
|
@@ -2520,7 +2534,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
2520
2534
|
if (stableKey) {
|
|
2521
2535
|
this._notifiedQuestionCarousels.add(stableKey);
|
|
2522
2536
|
}
|
|
2523
|
-
const signalMessage = questionCount === 1 ? ( localize(
|
|
2537
|
+
const signalMessage = questionCount === 1 ? ( localize(7509, "Chat needs your input (1 question).")) : ( localize(7510, "Chat needs your input ({0} questions).", questionCount));
|
|
2524
2538
|
this.accessibilitySignalService.playSignal(AccessibilitySignal.chatUserActionRequired, {
|
|
2525
2539
|
allowManyInParallel: true,
|
|
2526
2540
|
customAlertMessage: signalMessage
|
|
@@ -2566,7 +2580,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
2566
2580
|
supportThemeIcons: true
|
|
2567
2581
|
}));
|
|
2568
2582
|
if (overall) {
|
|
2569
|
-
content.appendText(( localize(
|
|
2583
|
+
content.appendText(( localize(7511, "{0}: {1}", message, overall.replace(/\s+/g, " "))));
|
|
2570
2584
|
} else {
|
|
2571
2585
|
content.appendText(message);
|
|
2572
2586
|
}
|
|
@@ -2611,23 +2625,23 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
2611
2625
|
}
|
|
2612
2626
|
getPlanReviewProgressMessage(review) {
|
|
2613
2627
|
if (!review.isUsed) {
|
|
2614
|
-
return localize(
|
|
2628
|
+
return localize(7512, "Plan review required");
|
|
2615
2629
|
}
|
|
2616
2630
|
const result = review.data;
|
|
2617
2631
|
if (!result) {
|
|
2618
2632
|
return undefined;
|
|
2619
2633
|
}
|
|
2620
2634
|
if (result.rejected) {
|
|
2621
|
-
return localize(
|
|
2635
|
+
return localize(7513, "Rejected plan");
|
|
2622
2636
|
}
|
|
2623
2637
|
if (result.feedback) {
|
|
2624
|
-
return localize(
|
|
2638
|
+
return localize(7514, "Provided feedback");
|
|
2625
2639
|
}
|
|
2626
2640
|
const action = review.actions.find(a => a.label === result.action);
|
|
2627
2641
|
if (action?.permissionLevel === "autopilot") {
|
|
2628
|
-
return localize(
|
|
2642
|
+
return localize(7515, "Started implementation with Autopilot");
|
|
2629
2643
|
}
|
|
2630
|
-
return localize(
|
|
2644
|
+
return localize(7516, "Approved plan");
|
|
2631
2645
|
}
|
|
2632
2646
|
removeCarouselFromTracking(context, part) {
|
|
2633
2647
|
if (isResponseVM(context.element)) {
|
|
@@ -2714,7 +2728,7 @@ let ChatListItemRenderer = class ChatListItemRenderer extends Disposable {
|
|
|
2714
2728
|
})
|
|
2715
2729
|
);
|
|
2716
2730
|
markdownPart.addDisposable(
|
|
2717
|
-
this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), markdownPart.domNode, ( localize(
|
|
2731
|
+
this.hoverService.setupManagedHover(getDefaultHoverDelegate("element"), markdownPart.domNode, ( localize(7517, "Click to Edit")), {
|
|
2718
2732
|
trapFocus: true
|
|
2719
2733
|
})
|
|
2720
2734
|
);
|
|
@@ -41,6 +41,7 @@ import { bindContextKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/
|
|
|
41
41
|
import product from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/product';
|
|
42
42
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
43
43
|
import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
|
|
44
|
+
import { ChatEntitlementContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService';
|
|
44
45
|
import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service';
|
|
45
46
|
import { ILifecycleService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service';
|
|
46
47
|
import { checkModeOption } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chat';
|
|
@@ -113,7 +114,7 @@ const supportsAllAttachments = {
|
|
|
113
114
|
supportsHandOffs: true,
|
|
114
115
|
supportsCheckpoints: true
|
|
115
116
|
};
|
|
116
|
-
const DISCLAIMER = ( localize(
|
|
117
|
+
const DISCLAIMER = ( localize(7518, "AI responses may be inaccurate"));
|
|
117
118
|
let ChatWidget = class ChatWidget extends Disposable {
|
|
118
119
|
static {
|
|
119
120
|
ChatWidget_1 = this;
|
|
@@ -797,8 +798,8 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
797
798
|
} else {
|
|
798
799
|
this.unlockFromCodingAgent();
|
|
799
800
|
}
|
|
800
|
-
this.inputPart
|
|
801
|
-
this.inputPart
|
|
801
|
+
this.inputPart?.clearTodoListWidget(this.viewModel?.sessionResource, true);
|
|
802
|
+
this.inputPart?.clearArtifactsWidget();
|
|
802
803
|
this.chatSuggestNextWidget.hide();
|
|
803
804
|
await this.viewOptions.clear?.();
|
|
804
805
|
}
|
|
@@ -839,7 +840,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
839
840
|
}
|
|
840
841
|
this.container.classList.toggle(
|
|
841
842
|
"chat-view-getting-started-disabled",
|
|
842
|
-
this.chatEntitlementService.sentiment.completed
|
|
843
|
+
this.chatEntitlementService.sentiment.completed || this.chatEntitlementService.hasByokModels
|
|
843
844
|
);
|
|
844
845
|
this._onDidChangeEmptyState.fire();
|
|
845
846
|
}
|
|
@@ -865,7 +866,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
865
866
|
if (this.chatEntitlementService.anonymous && !this.chatEntitlementService.sentiment.completed) {
|
|
866
867
|
const providers = product.defaultChatAgent.provider;
|
|
867
868
|
additionalMessage = ( new MarkdownString(( localize(
|
|
868
|
-
|
|
869
|
+
7519,
|
|
869
870
|
"By continuing with {0} Copilot, you agree to {1}'s [Terms]({2}) and [Privacy Statement]({3}).",
|
|
870
871
|
providers.default.name,
|
|
871
872
|
providers.default.name,
|
|
@@ -947,7 +948,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
947
948
|
return ( new MarkdownString(""));
|
|
948
949
|
} else if (this._instructionFilesExist === false) {
|
|
949
950
|
return (new MarkdownString(localize(
|
|
950
|
-
|
|
951
|
+
7520,
|
|
951
952
|
"[Generate Agent Instructions]({0}) to onboard AI onto your codebase.",
|
|
952
953
|
`command:${GENERATE_AGENT_INSTRUCTIONS_COMMAND_ID}`
|
|
953
954
|
), {
|
|
@@ -973,19 +974,19 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
973
974
|
const providerTitle = contribution?.welcomeTitle;
|
|
974
975
|
const providerMessage = contribution?.welcomeMessage;
|
|
975
976
|
const message = providerMessage ? ( new MarkdownString(providerMessage)) : (this._lockedAgent?.prefix === "@copilot " ? ( new MarkdownString(( localize(
|
|
976
|
-
|
|
977
|
+
7521,
|
|
977
978
|
"This chat session will be forwarded to the {0} [coding agent]({1}) where work is completed in the background. ",
|
|
978
979
|
this._lockedAgent.prefix,
|
|
979
980
|
"https://aka.ms/coding-agent-docs"
|
|
980
981
|
)) + DISCLAIMER, {
|
|
981
982
|
isTrusted: true
|
|
982
983
|
})) : ( new MarkdownString(( localize(
|
|
983
|
-
|
|
984
|
+
7522,
|
|
984
985
|
"This chat session will be forwarded to the {0} coding agent where work is completed in the background. ",
|
|
985
986
|
this._lockedAgent?.prefix
|
|
986
987
|
)) + DISCLAIMER)));
|
|
987
988
|
return {
|
|
988
|
-
title: providerTitle ?? ( localize(
|
|
989
|
+
title: providerTitle ?? ( localize(7523, "Delegate to {0}", this._lockedAgent?.prefix)),
|
|
989
990
|
message,
|
|
990
991
|
icon: providerIcon ?? Codicon.sendToRemoteAgent,
|
|
991
992
|
additionalMessage,
|
|
@@ -994,11 +995,11 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
994
995
|
}
|
|
995
996
|
let title;
|
|
996
997
|
if (this.input.currentModeKind === ChatModeKind.Ask) {
|
|
997
|
-
title = ( localize(
|
|
998
|
+
title = ( localize(7524, "Ask about your code"));
|
|
998
999
|
} else if (this.input.currentModeKind === ChatModeKind.Edit) {
|
|
999
|
-
title = ( localize(
|
|
1000
|
+
title = ( localize(7525, "Edit in context"));
|
|
1000
1001
|
} else {
|
|
1001
|
-
title = ( localize(
|
|
1002
|
+
title = ( localize(7526, "Build with Agent"));
|
|
1002
1003
|
}
|
|
1003
1004
|
return {
|
|
1004
1005
|
title,
|
|
@@ -1590,10 +1591,14 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1590
1591
|
this.renderChatSuggestNextWidget();
|
|
1591
1592
|
}));
|
|
1592
1593
|
const foregroundSessionCountContextKeys = ( new Set([ChatContextKeys.foregroundSessionCount.key]));
|
|
1594
|
+
const hasByokModelsContextKeys = ( new Set([ChatEntitlementContextKeys.hasByokModels.key]));
|
|
1593
1595
|
this._register(this.contextKeyService.onDidChangeContext(e => {
|
|
1594
1596
|
if (e.affectsSome(foregroundSessionCountContextKeys) && this.isEmpty()) {
|
|
1595
1597
|
this.renderGettingStartedTipIfNeeded();
|
|
1596
1598
|
}
|
|
1599
|
+
if (e.affectsSome(hasByokModelsContextKeys)) {
|
|
1600
|
+
this.updateChatViewVisibility();
|
|
1601
|
+
}
|
|
1597
1602
|
}));
|
|
1598
1603
|
let previousModelIdentifier;
|
|
1599
1604
|
this._register(autorun(reader => {
|
|
@@ -1643,8 +1648,9 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1643
1648
|
);
|
|
1644
1649
|
}
|
|
1645
1650
|
setModel(model) {
|
|
1646
|
-
if (!this.container) {
|
|
1647
|
-
|
|
1651
|
+
if (!this.container || !this.inputPart) {
|
|
1652
|
+
this.logService.warn("ChatWidget#setModel called before render() completed");
|
|
1653
|
+
return;
|
|
1648
1654
|
}
|
|
1649
1655
|
if (!model) {
|
|
1650
1656
|
this.inputPart.flushInputStateToModel();
|
|
@@ -1663,8 +1669,8 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1663
1669
|
if (this.viewModel?.editing) {
|
|
1664
1670
|
this.finishedEditing();
|
|
1665
1671
|
}
|
|
1666
|
-
this.inputPart
|
|
1667
|
-
this.inputPart
|
|
1672
|
+
this.inputPart?.clearTodoListWidget(model.sessionResource, false);
|
|
1673
|
+
this.inputPart?.clearArtifactsWidget();
|
|
1668
1674
|
this.chatSuggestNextWidget.hide();
|
|
1669
1675
|
this.chatTipService.resetSession();
|
|
1670
1676
|
this._gettingStartedTipPartRef = undefined;
|
|
@@ -1679,7 +1685,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1679
1685
|
let placeholder = this.chatSessionsService.getChatSessionContribution(this._lockedAgent.id)?.inputPlaceholder;
|
|
1680
1686
|
if (!placeholder) {
|
|
1681
1687
|
placeholder = ( localize(
|
|
1682
|
-
|
|
1688
|
+
7527,
|
|
1683
1689
|
"Chat with {0}",
|
|
1684
1690
|
this._lockedAgent.displayName || this._lockedAgent.name
|
|
1685
1691
|
));
|
|
@@ -1742,7 +1748,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1742
1748
|
this._hasPendingRequestsContextKey.set(pendingCount > 0);
|
|
1743
1749
|
const steeringCount = pendingRequests.filter(pending => pending.kind === ChatRequestQueueKind.Steering).length;
|
|
1744
1750
|
if (announceSteering && steeringCount > 0 && lastSteeringCount === 0) {
|
|
1745
|
-
status(( localize(
|
|
1751
|
+
status(( localize(7528, "Steering")));
|
|
1746
1752
|
}
|
|
1747
1753
|
lastSteeringCount = steeringCount;
|
|
1748
1754
|
};
|
|
@@ -1758,12 +1764,12 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1758
1764
|
this._updateAgentCapabilitiesContextKeys(e.agent);
|
|
1759
1765
|
}
|
|
1760
1766
|
if (e.kind === "addRequest") {
|
|
1761
|
-
this.inputPart
|
|
1767
|
+
this.inputPart?.clearTodoListWidget(this.viewModel?.sessionResource, false);
|
|
1762
1768
|
this._sessionIsEmptyContextKey.set(false);
|
|
1763
1769
|
this.chatSuggestNextWidget.hide();
|
|
1764
1770
|
}
|
|
1765
1771
|
if (e.kind === "removeRequest") {
|
|
1766
|
-
this.inputPart
|
|
1772
|
+
this.inputPart?.clearTodoListWidget(this.viewModel?.sessionResource, true);
|
|
1767
1773
|
this.chatSuggestNextWidget.hide();
|
|
1768
1774
|
this._sessionIsEmptyContextKey.set((this.viewModel?.model.getRequests().length ?? 0) === 0);
|
|
1769
1775
|
}
|
|
@@ -1771,7 +1777,7 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
1771
1777
|
const lastRequest = this.viewModel?.model.getRequests().at(-1);
|
|
1772
1778
|
const wasCancelled = lastRequest?.response?.isCanceled ?? false;
|
|
1773
1779
|
if (wasCancelled) {
|
|
1774
|
-
this.inputPart
|
|
1780
|
+
this.inputPart?.clearTodoListWidget(this.viewModel?.sessionResource, true);
|
|
1775
1781
|
}
|
|
1776
1782
|
this.renderChatSuggestNextWidget();
|
|
1777
1783
|
if (this.visible && this.viewModel?.sessionResource) {
|
|
@@ -2169,16 +2175,16 @@ let ChatWidget = class ChatWidget extends Disposable {
|
|
|
2169
2175
|
}
|
|
2170
2176
|
const promptResult = await this.dialogService.prompt({
|
|
2171
2177
|
type: "question",
|
|
2172
|
-
message: ( localize(
|
|
2178
|
+
message: ( localize(7529, "You already have pending requests.")),
|
|
2173
2179
|
detail: ( localize(
|
|
2174
|
-
|
|
2180
|
+
7530,
|
|
2175
2181
|
"Do you want to keep them in the queue or remove them before sending this message?"
|
|
2176
2182
|
)),
|
|
2177
2183
|
buttons: [{
|
|
2178
|
-
label: ( localize(
|
|
2184
|
+
label: ( localize(7531, "Keep Pending Requests")),
|
|
2179
2185
|
run: () => "keep"
|
|
2180
2186
|
}, {
|
|
2181
|
-
label: ( localize(
|
|
2187
|
+
label: ( localize(7532, "Remove Pending Requests")),
|
|
2182
2188
|
run: () => "remove"
|
|
2183
2189
|
}],
|
|
2184
2190
|
cancelButton: true
|
|
@@ -45,7 +45,7 @@ let ChatFollowups = class ChatFollowups extends Disposable {
|
|
|
45
45
|
} else if (followup.kind === "command") {
|
|
46
46
|
button.element.classList.add("interactive-followup-command");
|
|
47
47
|
}
|
|
48
|
-
button.element.ariaLabel = ( localize(
|
|
48
|
+
button.element.ariaLabel = ( localize(7533, "Follow up question: {0}", baseTitle));
|
|
49
49
|
button.label = ( new MarkdownString(baseTitle));
|
|
50
50
|
this._register(button.onDidClick(() => this.clickHandler(followup)));
|
|
51
51
|
}
|
package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js
CHANGED
|
@@ -76,7 +76,7 @@ let ChatInputNotificationWidget = class ChatInputNotificationWidget extends Disp
|
|
|
76
76
|
dismissButton.appendChild($$1(ThemeIcon.asCSSSelector(Codicon.close)));
|
|
77
77
|
dismissButton.tabIndex = 0;
|
|
78
78
|
dismissButton.role = "button";
|
|
79
|
-
dismissButton.ariaLabel = ( localize(
|
|
79
|
+
dismissButton.ariaLabel = ( localize(7534, "Dismiss notification"));
|
|
80
80
|
this._contentDisposables.add(addDisposableListener(dismissButton, EventType.CLICK, () => {
|
|
81
81
|
this._notificationService.dismissNotification(notification.id);
|
|
82
82
|
}));
|
|
@@ -220,6 +220,7 @@ export declare class ChatInputPart extends Disposable implements IHistoryNavigat
|
|
|
220
220
|
private _forceVisibleScrollbarUntilAccept;
|
|
221
221
|
private _inputModel;
|
|
222
222
|
private readonly _modelSyncDisposables;
|
|
223
|
+
private readonly _currentChatModes;
|
|
223
224
|
private _isSyncingToOrFromInputModel;
|
|
224
225
|
private readonly _syncTextDebounced;
|
|
225
226
|
private executeToolbar;
|
|
@@ -249,6 +250,7 @@ export declare class ChatInputPart extends Disposable implements IHistoryNavigat
|
|
|
249
250
|
private modelWidget;
|
|
250
251
|
private modeWidget;
|
|
251
252
|
private permissionWidget;
|
|
253
|
+
private readonly permissionWidgetDisposeListener;
|
|
252
254
|
private sessionTargetWidget;
|
|
253
255
|
private delegationWidget;
|
|
254
256
|
private readonly chatSessionPickerWidgets;
|
|
@@ -256,6 +258,7 @@ export declare class ChatInputPart extends Disposable implements IHistoryNavigat
|
|
|
256
258
|
private _lastSessionPickerAction;
|
|
257
259
|
private _lastSessionPickerOptions;
|
|
258
260
|
private readonly _waitForPersistedLanguageModel;
|
|
261
|
+
private readonly _waitForSessionHistoryLanguageModel;
|
|
259
262
|
private readonly _chatSessionOptionEmitters;
|
|
260
263
|
/**
|
|
261
264
|
* Scoped context key service for this chat input part.
|
|
@@ -323,6 +326,7 @@ export declare class ChatInputPart extends Disposable implements IHistoryNavigat
|
|
|
323
326
|
switchModel(modelMetadata: Pick<ILanguageModelChatMetadata, "vendor" | "id" | "family">): void;
|
|
324
327
|
switchModelByQualifiedName(qualifiedModelNames: readonly string[]): boolean;
|
|
325
328
|
switchToNextModel(): void;
|
|
329
|
+
switchToNextPinnedModel(): void;
|
|
326
330
|
openModelPicker(): void;
|
|
327
331
|
openModePicker(): void;
|
|
328
332
|
private _showCombinedPhonePickerSheet;
|