@codingame/monaco-vscode-katex-common 29.1.1 → 30.0.1
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 +14 -13
- 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 +34 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +208 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +637 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +202 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +17 -8
- 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 +53 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +296 -63
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +59 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +55 -42
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +110 -59
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +384 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +12 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +220 -61
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +1 -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 +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +14 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.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.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.js +5 -4
- 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.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +40 -12
- 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/chatProgressContentPart.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +97 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +5 -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 +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +8 -7
- 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 +15 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +155 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +36 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
- 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/chatThinkingContent.css +13 -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.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +68 -0
- 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 +16 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +33 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +12 -3
- 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 +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/chatDragAndDrop.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +4 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +37 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +10 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +66 -39
- 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 +13 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +103 -61
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +35 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +39 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +6 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +44 -18
- 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 +60 -10
- 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 +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.js +4 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +5 -5
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +5 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +6 -11
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -39
- 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.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +746 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +300 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffCellEditorOptions.js +55 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.d.ts +273 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +1963 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.d.ts +50 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +314 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.d.ts +258 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementViewModel.js +886 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel.js +118 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/editorHeightCalculator.js +71 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/eventDispatcher.js +40 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookCellDiffDecorator.js +313 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookDeletedCellDecorator.js +265 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiff.js +185 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInlineDiffWidget.js +104 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookInsertedCellDecorator.js +43 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.d.ts +21 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalCellModelFactory.js +41 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookOriginalModelRefFactory.js +69 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiff.css +469 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.d.ts +149 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +933 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.d.ts +180 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +32 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.d.ts +102 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +643 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffOverviewRuler.js +197 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.d.ts +75 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffViewModel.js +539 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/unchangedEditorRegions.js +39 -0
- package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/notebook/common/model/notebookMetadataTextModel.js +90 -0
- package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/notebook/common/notebookDiff.js +92 -0
- 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/chatSessions/chatSessions.contribution.d.ts +0 -152
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -1317
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +0 -47
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.js +0 -95
|
@@ -53,8 +53,8 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
|
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
55
|
this._currentMode = mode;
|
|
56
|
-
const modeName = mode.name.get() || mode.label.get() || ( localize(
|
|
57
|
-
this.titleElement.textContent = ( localize(
|
|
56
|
+
const modeName = mode.name.get() || mode.label.get() || ( localize(6830, "current mode"));
|
|
57
|
+
this.titleElement.textContent = ( localize(6831, "Proceed from {0}", modeName));
|
|
58
58
|
const childrenToRemove = [];
|
|
59
59
|
for (let i = 1; i < this.promptsContainer.children.length; i++) {
|
|
60
60
|
childrenToRemove.push(this.promptsContainer.children[i]);
|
|
@@ -68,7 +68,8 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
|
|
|
68
68
|
this.promptsContainer.removeChild(child);
|
|
69
69
|
}
|
|
70
70
|
const isAutopilotEnabled = this.configurationService.getValue(ChatConfiguration.AutopilotEnabled) !== false;
|
|
71
|
-
const
|
|
71
|
+
const isAutopilotPolicyRestricted = this.configurationService.inspect(ChatConfiguration.GlobalAutoApprove).policyValue === false;
|
|
72
|
+
const firstAutoSendHandoff = isAutopilotEnabled && !isAutopilotPolicyRestricted ? handoffs.find(h => h.send) : undefined;
|
|
72
73
|
for (const handoff of handoffs) {
|
|
73
74
|
const promptButton = this.createPromptButton(handoff);
|
|
74
75
|
this.promptsContainer.appendChild(promptButton);
|
|
@@ -90,7 +91,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
|
|
|
90
91
|
const button = $(".chat-welcome-view-suggested-prompt");
|
|
91
92
|
button.setAttribute("tabindex", "0");
|
|
92
93
|
button.setAttribute("role", "button");
|
|
93
|
-
button.setAttribute("aria-label", ( localize(
|
|
94
|
+
button.setAttribute("aria-label", ( localize(6832, "{0}", handoff.label)));
|
|
94
95
|
const titleElement = append(button, $(".chat-welcome-view-suggested-prompt-title"));
|
|
95
96
|
titleElement.textContent = handoff.label;
|
|
96
97
|
const showContinueOn = handoff.showContinueOn ?? true;
|
|
@@ -111,7 +112,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
|
|
|
111
112
|
const dropdownContainer = append(button, $(".chat-suggest-next-dropdown"));
|
|
112
113
|
dropdownContainer.setAttribute("tabindex", "0");
|
|
113
114
|
dropdownContainer.setAttribute("role", "button");
|
|
114
|
-
dropdownContainer.setAttribute("aria-label", ( localize(
|
|
115
|
+
dropdownContainer.setAttribute("aria-label", ( localize(6833, "More options for {0}", handoff.label)));
|
|
115
116
|
dropdownContainer.setAttribute("aria-haspopup", "true");
|
|
116
117
|
const separator = append(dropdownContainer, $(".chat-suggest-next-separator"));
|
|
117
118
|
separator.setAttribute("aria-hidden", "true");
|
|
@@ -126,7 +127,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
|
|
|
126
127
|
const name = getAgentSessionProviderName(provider);
|
|
127
128
|
return (new Action(
|
|
128
129
|
contrib.type,
|
|
129
|
-
localize(
|
|
130
|
+
localize(6834, "Continue in {0}", name),
|
|
130
131
|
ThemeIcon.isThemeIcon(icon) ? ThemeIcon.asClassName(icon) : undefined,
|
|
131
132
|
true,
|
|
132
133
|
() => {
|
|
@@ -196,7 +197,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
|
|
|
196
197
|
const currentHandoffs = this._currentMode?.handOffs?.get();
|
|
197
198
|
return currentHandoffs?.find(h => h.label === handoffLabel) ?? handoff;
|
|
198
199
|
};
|
|
199
|
-
const label = ( localize(
|
|
200
|
+
const label = ( localize(6835, "Start with Autopilot"));
|
|
200
201
|
const button = $(".chat-welcome-view-suggested-prompt");
|
|
201
202
|
button.setAttribute("tabindex", "0");
|
|
202
203
|
button.setAttribute("role", "button");
|
|
@@ -39,7 +39,7 @@ let ChatTextEditContentPart = class ChatTextEditContentPart extends Disposable {
|
|
|
39
39
|
this.domNode = $(
|
|
40
40
|
".interactive-edits-summary",
|
|
41
41
|
undefined,
|
|
42
|
-
!element.isComplete ? "" : element.isCanceled ? ( localize(
|
|
42
|
+
!element.isComplete ? "" : element.isCanceled ? ( localize(6836, "Making changes was aborted.")) : ( localize(6837, "Made changes."))
|
|
43
43
|
);
|
|
44
44
|
} else {
|
|
45
45
|
this.domNode = $("div");
|
|
@@ -7,10 +7,13 @@ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
7
7
|
import { IMarkdownRenderer } from "@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer";
|
|
8
8
|
import { ChatCollapsibleContentPart } from "./chatCollapsibleContentPart.js";
|
|
9
9
|
import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
|
|
10
|
+
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
10
11
|
import { IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
11
12
|
import { IChatMarkdownAnchorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service";
|
|
12
13
|
import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
|
|
13
14
|
import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
|
|
15
|
+
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
16
|
+
import { IEditSessionDiffStats } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService";
|
|
14
17
|
export declare function getToolInvocationIcon(toolId: string, registeredIcon?: ThemeIcon): ThemeIcon;
|
|
15
18
|
export declare function createThinkingIcon(icon: ThemeIcon): HTMLElement;
|
|
16
19
|
/**
|
|
@@ -26,6 +29,7 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
|
|
|
26
29
|
private readonly configurationService;
|
|
27
30
|
private readonly chatMarkdownAnchorService;
|
|
28
31
|
private readonly languageModelsService;
|
|
32
|
+
private readonly storageService;
|
|
29
33
|
private static _codeBlockRendererSync;
|
|
30
34
|
readonly codeblocks: undefined;
|
|
31
35
|
readonly codeblocksPartId: undefined;
|
|
@@ -73,8 +77,11 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
|
|
|
73
77
|
private titleDetailContainer;
|
|
74
78
|
private readonly _externalResourceWidget;
|
|
75
79
|
private readonly _titleDetailRendered;
|
|
80
|
+
private readonly diffStatsByPartId;
|
|
81
|
+
private _aggregatedDiff;
|
|
82
|
+
get aggregatedDiff(): IEditSessionDiffStats;
|
|
76
83
|
private getRandomWorkingMessage;
|
|
77
|
-
constructor(content: IChatThinkingPart, context: IChatContentPartRenderContext, chatContentMarkdownRenderer: IMarkdownRenderer, streamingCompleted: boolean, instantiationService: IInstantiationService, configurationService: IConfigurationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, languageModelsService: ILanguageModelsService, hoverService: IHoverService);
|
|
84
|
+
constructor(content: IChatThinkingPart, context: IChatContentPartRenderContext, chatContentMarkdownRenderer: IMarkdownRenderer, streamingCompleted: boolean, instantiationService: IInstantiationService, configurationService: IConfigurationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, languageModelsService: ILanguageModelsService, hoverService: IHoverService, storageService: IStorageService);
|
|
78
85
|
protected shouldInitEarly(): boolean;
|
|
79
86
|
protected initContent(): HTMLElement;
|
|
80
87
|
private handleScroll;
|
|
@@ -106,8 +113,14 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
|
|
|
106
113
|
markAsInactive(): void;
|
|
107
114
|
finalizeTitleIfDefault(): void;
|
|
108
115
|
private setGeneratedTitleOnAllParts;
|
|
116
|
+
private loadTitleCache;
|
|
117
|
+
private saveTitleCache;
|
|
118
|
+
private getTitleCacheKey;
|
|
119
|
+
private getCachedTitle;
|
|
120
|
+
private setCachedTitle;
|
|
109
121
|
private generateTitleViaLLM;
|
|
110
122
|
private restoreSingleItemToOriginalPosition;
|
|
123
|
+
private updateAggregatedDiff;
|
|
111
124
|
private setFallbackTitle;
|
|
112
125
|
/**
|
|
113
126
|
* Appends a tool invocation or content item to the thinking group.
|
|
@@ -117,7 +130,7 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
|
|
|
117
130
|
appendItem(factory: () => {
|
|
118
131
|
domNode: HTMLElement;
|
|
119
132
|
disposable?: IDisposable;
|
|
120
|
-
}, toolInvocationId?: string, toolInvocationOrMarkdown?: IChatToolInvocation | IChatToolInvocationSerialized | IChatMarkdownContent, originalParent?: HTMLElement): void;
|
|
133
|
+
}, toolInvocationId?: string, toolInvocationOrMarkdown?: IChatToolInvocation | IChatToolInvocationSerialized | IChatMarkdownContent, originalParent?: HTMLElement, onDidChangeDiff?: Event<IEditSessionDiffStats>): void;
|
|
121
134
|
removeMaterializedItem(toolCallId: string): void;
|
|
122
135
|
/**
|
|
123
136
|
* removes/re-establishes a lazy item from the thinking container
|
|
@@ -28,8 +28,11 @@ import { ChatMessageRole } from '@codingame/monaco-vscode-api/vscode/vs/workbenc
|
|
|
28
28
|
import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
|
|
29
29
|
import * as chatThinkingContent from './media/chatThinkingContent.css';
|
|
30
30
|
import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
|
|
31
|
+
import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
32
|
+
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
31
33
|
import { extractImagesFromToolInvocationOutputDetails } from '../../../common/chatImageExtraction.js';
|
|
32
34
|
import { ChatThinkingExternalResourceWidget } from './chatThinkingExternalResourcesWidget.js';
|
|
35
|
+
import { LocalChatSessionUri, chatSessionResourceToId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
|
|
33
36
|
import { mainWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/window';
|
|
34
37
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
35
38
|
|
|
@@ -79,15 +82,18 @@ function extractTitleFromThinkingContent(content) {
|
|
|
79
82
|
return headerMatch ? headerMatch[1] : undefined;
|
|
80
83
|
}
|
|
81
84
|
const THINKING_SCROLL_MAX_HEIGHT = 200;
|
|
85
|
+
const TITLE_CACHE_STORAGE_KEY = "chat.thinkingTitleCache";
|
|
86
|
+
const TITLE_CACHE_TTL_MS = 7 * 24 * 60 * 60 * 1000;
|
|
87
|
+
const TITLE_CACHE_MAX_ENTRIES = 1000;
|
|
82
88
|
var WorkingMessageCategory;
|
|
83
89
|
(function(WorkingMessageCategory) {
|
|
84
90
|
WorkingMessageCategory["Thinking"] = "thinking";
|
|
85
91
|
WorkingMessageCategory["Terminal"] = "terminal";
|
|
86
92
|
WorkingMessageCategory["Tool"] = "tool";
|
|
87
93
|
})(WorkingMessageCategory || (WorkingMessageCategory = {}));
|
|
88
|
-
const defaultThinkingMessages = [( localize(
|
|
89
|
-
const terminalMessages = [( localize(
|
|
90
|
-
const toolMessages = [( localize(
|
|
94
|
+
const defaultThinkingMessages = [( localize(6838, "Thinking")), ( localize(6839, "Reasoning")), ( localize(6840, "Considering")), ( localize(6841, "Analyzing")), ( localize(6842, "Evaluating"))];
|
|
95
|
+
const terminalMessages = [( localize(6843, "Executing")), ( localize(6844, "Running")), ( localize(6845, "Processing"))];
|
|
96
|
+
const toolMessages = [( localize(6846, "Processing")), ( localize(6847, "Preparing")), ( localize(6848, "Loading")), ( localize(6849, "Analyzing")), ( localize(6850, "Evaluating"))];
|
|
91
97
|
function buildPhrasePool(defaults, configurationService) {
|
|
92
98
|
const config = configurationService.getValue(ChatConfiguration.ThinkingPhrases);
|
|
93
99
|
const customPhrases = Array.isArray(config?.phrases) ? ( config.phrases.filter(phrase => typeof phrase === "string").map(phrase => phrase.trim())).filter(phrase => phrase.length > 0) : [];
|
|
@@ -102,6 +108,9 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
|
|
|
102
108
|
codeElement.textContent = text;
|
|
103
109
|
return codeElement;
|
|
104
110
|
}
|
|
111
|
+
get aggregatedDiff() {
|
|
112
|
+
return this._aggregatedDiff;
|
|
113
|
+
}
|
|
105
114
|
getRandomWorkingMessage(category = WorkingMessageCategory.Tool) {
|
|
106
115
|
let pool = this.availableMessagesByCategory.get(category);
|
|
107
116
|
if (!pool || pool.length === 0) {
|
|
@@ -133,10 +142,11 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
|
|
|
133
142
|
configurationService,
|
|
134
143
|
chatMarkdownAnchorService,
|
|
135
144
|
languageModelsService,
|
|
136
|
-
hoverService
|
|
145
|
+
hoverService,
|
|
146
|
+
storageService
|
|
137
147
|
) {
|
|
138
148
|
const initialText = extractTextFromPart(content);
|
|
139
|
-
const extractedTitle = extractTitleFromThinkingContent(initialText) ?? ( localize(
|
|
149
|
+
const extractedTitle = extractTitleFromThinkingContent(initialText) ?? ( localize(6851, "Thinking"));
|
|
140
150
|
super(extractedTitle, context, undefined, hoverService, configurationService);
|
|
141
151
|
this.chatContentMarkdownRenderer = chatContentMarkdownRenderer;
|
|
142
152
|
this.streamingCompleted = streamingCompleted;
|
|
@@ -144,10 +154,11 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
|
|
|
144
154
|
this.configurationService = configurationService;
|
|
145
155
|
this.chatMarkdownAnchorService = chatMarkdownAnchorService;
|
|
146
156
|
this.languageModelsService = languageModelsService;
|
|
157
|
+
this.storageService = storageService;
|
|
147
158
|
this._onDidChangeHeight = this._register(( new Emitter()));
|
|
148
159
|
this._asyncRenderCallback = () => this._onDidChangeHeight.fire();
|
|
149
|
-
this.defaultTitle = ( localize(
|
|
150
|
-
this.workingTitle = ( localize(
|
|
160
|
+
this.defaultTitle = ( localize(6852, "Thinking"));
|
|
161
|
+
this.workingTitle = ( localize(6853, "Working"));
|
|
151
162
|
this._markdownResult = this._register(( new MutableDisposable()));
|
|
152
163
|
this.fixedScrollingMode = false;
|
|
153
164
|
this.autoScrollEnabled = true;
|
|
@@ -171,6 +182,11 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
|
|
|
171
182
|
this.lastKnownContentHeight = 0;
|
|
172
183
|
this.lastKnownScrollTop = 0;
|
|
173
184
|
this._titleDetailRendered = this._register(( new MutableDisposable()));
|
|
185
|
+
this.diffStatsByPartId = ( new Map());
|
|
186
|
+
this._aggregatedDiff = {
|
|
187
|
+
added: 0,
|
|
188
|
+
removed: 0
|
|
189
|
+
};
|
|
174
190
|
this.id = content.id;
|
|
175
191
|
this.content = content;
|
|
176
192
|
this.allThinkingParts.push(content);
|
|
@@ -185,7 +201,7 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
|
|
|
185
201
|
this.appendedItemCount++;
|
|
186
202
|
}
|
|
187
203
|
if (this.configurationService.getValue(AccessibilityWorkbenchSettingId.VerboseChatProgressUpdates)) {
|
|
188
|
-
alert(( localize(
|
|
204
|
+
alert(( localize(6854, "Thinking")));
|
|
189
205
|
}
|
|
190
206
|
if (configuredMode === ThinkingDisplayMode.Collapsed) {
|
|
191
207
|
this.setExpanded(false);
|
|
@@ -483,7 +499,25 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
|
|
|
483
499
|
restSpan.textContent = rest;
|
|
484
500
|
labelElement.appendChild(restSpan);
|
|
485
501
|
}
|
|
486
|
-
this.
|
|
502
|
+
if (this.diffStatsByPartId.size > 0) {
|
|
503
|
+
const {
|
|
504
|
+
added,
|
|
505
|
+
removed
|
|
506
|
+
} = this._aggregatedDiff;
|
|
507
|
+
if (added > 0 || removed > 0) {
|
|
508
|
+
const diffContainer = $("span.chat-thinking-title-diff");
|
|
509
|
+
diffContainer.appendChild($("span.label-added", {}, `+${added}`));
|
|
510
|
+
diffContainer.appendChild($("span.label-removed", {}, `-${removed}`));
|
|
511
|
+
labelElement.appendChild(diffContainer);
|
|
512
|
+
const insertionsFragment = added === 1 ? ( localize(6855, "1 insertion")) : ( localize(6856, "{0} insertions", added));
|
|
513
|
+
const deletionsFragment = removed === 1 ? ( localize(6857, "1 deletion")) : ( localize(6858, "{0} deletions", removed));
|
|
514
|
+
this._collapseButton.element.ariaLabel = ( localize(6859, "{0}, {1}, {2}", title, insertionsFragment, deletionsFragment));
|
|
515
|
+
} else {
|
|
516
|
+
this._collapseButton.element.ariaLabel = title;
|
|
517
|
+
}
|
|
518
|
+
} else {
|
|
519
|
+
this._collapseButton.element.ariaLabel = title;
|
|
520
|
+
}
|
|
487
521
|
}
|
|
488
522
|
setDropdownClickable(clickable) {
|
|
489
523
|
if (this._collapseButton) {
|
|
@@ -640,6 +674,22 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
|
|
|
640
674
|
this.setFinalizedTitle(existingTitle);
|
|
641
675
|
return;
|
|
642
676
|
}
|
|
677
|
+
const allSerialized = this.toolInvocations.length > 0 && this.toolInvocations.every(t => t.kind === "toolInvocationSerialized");
|
|
678
|
+
if (allSerialized) {
|
|
679
|
+
if (!LocalChatSessionUri.isLocalSession(this.element.sessionResource)) {
|
|
680
|
+
const lastToolInvocation = this.toolInvocations[this.toolInvocations.length - 1];
|
|
681
|
+
if (lastToolInvocation) {
|
|
682
|
+
const cachedTitle = this.getCachedTitle(lastToolInvocation.toolCallId);
|
|
683
|
+
if (cachedTitle) {
|
|
684
|
+
this.currentTitle = cachedTitle;
|
|
685
|
+
this.content.generatedTitle = cachedTitle;
|
|
686
|
+
this.setGeneratedTitleOnAllParts(cachedTitle);
|
|
687
|
+
this.setFinalizedTitle(cachedTitle);
|
|
688
|
+
return;
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
643
693
|
if (this.toolInvocationCount === 1 && this.hookCount === 0 && this.currentThinkingValue.trim() === "") {
|
|
644
694
|
if (!this.singleItemInfo) {
|
|
645
695
|
const lazyItem = this.lazyItems.find(item => item.kind === "tool" && item.originalParent);
|
|
@@ -690,6 +740,52 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
|
|
|
690
740
|
thinkingPart.generatedTitle = title;
|
|
691
741
|
}
|
|
692
742
|
}
|
|
743
|
+
loadTitleCache() {
|
|
744
|
+
return this.storageService.getObject(TITLE_CACHE_STORAGE_KEY, StorageScope.PROFILE) ?? {};
|
|
745
|
+
}
|
|
746
|
+
saveTitleCache(cache) {
|
|
747
|
+
if (( Object.keys(cache)).length === 0) {
|
|
748
|
+
this.storageService.remove(TITLE_CACHE_STORAGE_KEY, StorageScope.PROFILE);
|
|
749
|
+
} else {
|
|
750
|
+
this.storageService.store(
|
|
751
|
+
TITLE_CACHE_STORAGE_KEY,
|
|
752
|
+
JSON.stringify(cache),
|
|
753
|
+
StorageScope.PROFILE,
|
|
754
|
+
StorageTarget.MACHINE
|
|
755
|
+
);
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
getTitleCacheKey(toolCallId) {
|
|
759
|
+
return `${chatSessionResourceToId(this.element.sessionResource)}:${toolCallId}`;
|
|
760
|
+
}
|
|
761
|
+
getCachedTitle(toolCallId) {
|
|
762
|
+
const entry = this.loadTitleCache()[this.getTitleCacheKey(toolCallId)];
|
|
763
|
+
if (!entry || (Date.now() - entry.storedAt) > TITLE_CACHE_TTL_MS) {
|
|
764
|
+
return undefined;
|
|
765
|
+
}
|
|
766
|
+
return entry.title;
|
|
767
|
+
}
|
|
768
|
+
setCachedTitle(toolCallId, title) {
|
|
769
|
+
const cache = this.loadTitleCache();
|
|
770
|
+
const now = Date.now();
|
|
771
|
+
for (const key of ( Object.keys(cache))) {
|
|
772
|
+
if ((now - cache[key].storedAt) > TITLE_CACHE_TTL_MS) {
|
|
773
|
+
delete cache[key];
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
cache[this.getTitleCacheKey(toolCallId)] = {
|
|
777
|
+
title,
|
|
778
|
+
storedAt: now
|
|
779
|
+
};
|
|
780
|
+
const keys = ( Object.keys(cache));
|
|
781
|
+
if (keys.length > TITLE_CACHE_MAX_ENTRIES) {
|
|
782
|
+
const sorted = keys.sort((a, b) => cache[a].storedAt - cache[b].storedAt);
|
|
783
|
+
for (let i = 0; i < sorted.length - TITLE_CACHE_MAX_ENTRIES; i++) {
|
|
784
|
+
delete cache[sorted[i]];
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
this.saveTitleCache(cache);
|
|
788
|
+
}
|
|
693
789
|
async generateTitleViaLLM() {
|
|
694
790
|
const cts = ( new CancellationTokenSource());
|
|
695
791
|
const timeout = setTimeout(() => cts.cancel(), 5000);
|
|
@@ -840,6 +936,12 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
840
936
|
this.setFinalizedTitle(generatedTitle);
|
|
841
937
|
this.content.generatedTitle = generatedTitle;
|
|
842
938
|
this.setGeneratedTitleOnAllParts(generatedTitle);
|
|
939
|
+
if (!LocalChatSessionUri.isLocalSession(this.element.sessionResource)) {
|
|
940
|
+
const lastTool = this.toolInvocations[this.toolInvocations.length - 1];
|
|
941
|
+
if (lastTool) {
|
|
942
|
+
this.setCachedTitle(lastTool.toolCallId, generatedTitle);
|
|
943
|
+
}
|
|
944
|
+
}
|
|
843
945
|
return;
|
|
844
946
|
}
|
|
845
947
|
} catch (error) {} finally {
|
|
@@ -874,13 +976,23 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
874
976
|
this.singleItemInfo = undefined;
|
|
875
977
|
return true;
|
|
876
978
|
}
|
|
979
|
+
updateAggregatedDiff() {
|
|
980
|
+
let totalAdded = 0;
|
|
981
|
+
let totalRemoved = 0;
|
|
982
|
+
for (const stats of ( this.diffStatsByPartId.values())) {
|
|
983
|
+
totalAdded += stats.added;
|
|
984
|
+
totalRemoved += stats.removed;
|
|
985
|
+
}
|
|
986
|
+
this._aggregatedDiff = {
|
|
987
|
+
added: totalAdded,
|
|
988
|
+
removed: totalRemoved
|
|
989
|
+
};
|
|
990
|
+
if (this.streamingCompleted || this.element.isComplete) {
|
|
991
|
+
this.setFinalizedTitle(this.currentTitle);
|
|
992
|
+
}
|
|
993
|
+
}
|
|
877
994
|
setFallbackTitle() {
|
|
878
|
-
const finalLabel = this.appendedItemCount > 0 ? ( localize(
|
|
879
|
-
6800,
|
|
880
|
-
"Finished with {0} step{1}",
|
|
881
|
-
this.appendedItemCount,
|
|
882
|
-
this.appendedItemCount === 1 ? "" : "s"
|
|
883
|
-
)) : ( localize(6801, "Finished Working"));
|
|
995
|
+
const finalLabel = this.appendedItemCount > 0 ? this.appendedItemCount === 1 ? ( localize(6860, "Finished with 1 step")) : ( localize(6861, "Finished with {0} steps", this.appendedItemCount)) : ( localize(6862, "Finished Working"));
|
|
884
996
|
this.currentTitle = finalLabel;
|
|
885
997
|
if (this.wrapper) {
|
|
886
998
|
this.wrapper.classList.remove("chat-thinking-streaming");
|
|
@@ -893,10 +1005,22 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
893
1005
|
}
|
|
894
1006
|
this.updateDropdownClickability();
|
|
895
1007
|
}
|
|
896
|
-
appendItem(
|
|
1008
|
+
appendItem(
|
|
1009
|
+
factory,
|
|
1010
|
+
toolInvocationId,
|
|
1011
|
+
toolInvocationOrMarkdown,
|
|
1012
|
+
originalParent,
|
|
1013
|
+
onDidChangeDiff
|
|
1014
|
+
) {
|
|
897
1015
|
this.processPendingRemovals();
|
|
898
1016
|
this.trackToolMetadata(toolInvocationId, toolInvocationOrMarkdown);
|
|
899
1017
|
this.appendedItemCount++;
|
|
1018
|
+
if (onDidChangeDiff && toolInvocationId) {
|
|
1019
|
+
this._register(onDidChangeDiff(stats => {
|
|
1020
|
+
this.diffStatsByPartId.set(toolInvocationId, stats);
|
|
1021
|
+
this.updateAggregatedDiff();
|
|
1022
|
+
}));
|
|
1023
|
+
}
|
|
900
1024
|
if (this.workingSpinnerLabel) {
|
|
901
1025
|
const isTerminalTool = toolInvocationOrMarkdown && (toolInvocationOrMarkdown.kind === "toolInvocation" || toolInvocationOrMarkdown.kind === "toolInvocationSerialized") && toolInvocationOrMarkdown.toolSpecificData?.kind === "terminal";
|
|
902
1026
|
const category = isTerminalTool ? WorkingMessageCategory.Terminal : WorkingMessageCategory.Tool;
|
|
@@ -1069,7 +1193,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
1069
1193
|
const message = typeof toolInvocationOrMarkdown.invocationMessage === "string" ? toolInvocationOrMarkdown.invocationMessage : toolInvocationOrMarkdown.invocationMessage.value;
|
|
1070
1194
|
const isStreamingEditTool = toolInvocationOrMarkdown.kind === "toolInvocation" && IChatToolInvocation.isStreaming(toolInvocationOrMarkdown) && isGenericEditToolId(toolInvocationOrMarkdown.toolId);
|
|
1071
1195
|
if (isStreamingEditTool) {
|
|
1072
|
-
toolCallLabel = ( localize(
|
|
1196
|
+
toolCallLabel = ( localize(6863, "Editing files"));
|
|
1073
1197
|
} else {
|
|
1074
1198
|
toolCallLabel = message;
|
|
1075
1199
|
}
|
|
@@ -1181,9 +1305,9 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
1181
1305
|
const codeblockInfo = extractCodeblockUrisFromText(toolInvocationOrMarkdown.content.value);
|
|
1182
1306
|
if (codeblockInfo?.uri) {
|
|
1183
1307
|
const filename = basename(codeblockInfo.uri);
|
|
1184
|
-
toolCallLabel = ( localize(
|
|
1308
|
+
toolCallLabel = ( localize(6864, "Edited {0}", filename));
|
|
1185
1309
|
} else {
|
|
1186
|
-
toolCallLabel = ( localize(
|
|
1310
|
+
toolCallLabel = ( localize(6865, "Edited file"));
|
|
1187
1311
|
}
|
|
1188
1312
|
} else {
|
|
1189
1313
|
toolCallLabel = toolInvocationId;
|
|
@@ -1276,6 +1400,15 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
1276
1400
|
this.workingSpinnerLabel.textContent = this.getRandomWorkingMessage(category);
|
|
1277
1401
|
}
|
|
1278
1402
|
if (item.lazy.hasValue) {
|
|
1403
|
+
const result = item.lazy.value;
|
|
1404
|
+
if (!result.domNode.parentElement) {
|
|
1405
|
+
this.appendItemToDOM(
|
|
1406
|
+
result.domNode,
|
|
1407
|
+
item.toolInvocationId,
|
|
1408
|
+
item.toolInvocationOrMarkdown,
|
|
1409
|
+
item.originalParent
|
|
1410
|
+
);
|
|
1411
|
+
}
|
|
1279
1412
|
return;
|
|
1280
1413
|
}
|
|
1281
1414
|
const result = item.lazy.value;
|
|
@@ -1342,7 +1475,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
1342
1475
|
return;
|
|
1343
1476
|
}
|
|
1344
1477
|
this.lastExtractedTitle = title;
|
|
1345
|
-
const thinkingLabel = ( localize(
|
|
1478
|
+
const thinkingLabel = ( localize(6866, "{0}: {1}", this.defaultTitle, title));
|
|
1346
1479
|
this.currentTitle = thinkingLabel;
|
|
1347
1480
|
if (!this._collapseButton) {
|
|
1348
1481
|
return;
|
|
@@ -1353,7 +1486,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
1353
1486
|
this.titleShimmerSpan = $("span.chat-thinking-title-shimmer");
|
|
1354
1487
|
labelElement.appendChild(this.titleShimmerSpan);
|
|
1355
1488
|
}
|
|
1356
|
-
this.titleShimmerSpan.textContent = ( localize(
|
|
1489
|
+
this.titleShimmerSpan.textContent = ( localize(6867, "{0}: ", this.defaultTitle));
|
|
1357
1490
|
this._titleDetailRendered.clear();
|
|
1358
1491
|
const result = this.chatContentMarkdownRenderer.render(( new MarkdownString(title)));
|
|
1359
1492
|
result.element.classList.add("collapsible-title-content", "chat-thinking-title-detail");
|
|
@@ -1398,6 +1531,6 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
|
|
|
1398
1531
|
super.dispose();
|
|
1399
1532
|
}
|
|
1400
1533
|
};
|
|
1401
|
-
ChatThinkingContentPart = ChatThinkingContentPart_1 = ( __decorate([( __param(4, IInstantiationService)), ( __param(5, IConfigurationService)), ( __param(6, IChatMarkdownAnchorService)), ( __param(7, ILanguageModelsService)), ( __param(8, IHoverService))], ChatThinkingContentPart));
|
|
1534
|
+
ChatThinkingContentPart = ChatThinkingContentPart_1 = ( __decorate([( __param(4, IInstantiationService)), ( __param(5, IConfigurationService)), ( __param(6, IChatMarkdownAnchorService)), ( __param(7, ILanguageModelsService)), ( __param(8, IHoverService)), ( __param(9, IStorageService))], ChatThinkingContentPart));
|
|
1402
1535
|
|
|
1403
1536
|
export { ChatThinkingContentPart, buildPhrasePool, createThinkingIcon, getToolInvocationIcon };
|
package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js
CHANGED
|
@@ -57,7 +57,7 @@ let ChatTipContentPart = class ChatTipContentPart extends Disposable {
|
|
|
57
57
|
this.domNode = $(".chat-tip-widget");
|
|
58
58
|
this.domNode.tabIndex = 0;
|
|
59
59
|
this.domNode.setAttribute("role", "region");
|
|
60
|
-
this.domNode.setAttribute("aria-roledescription", ( localize(
|
|
60
|
+
this.domNode.setAttribute("aria-roledescription", ( localize(6868, "tip")));
|
|
61
61
|
this._inChatTipContextKey = ChatContextKeys.inChatTip.bindTo(this._contextKeyService);
|
|
62
62
|
this._multipleChatTipsContextKey = ChatContextKeys.multipleChatTips.bindTo(this._contextKeyService);
|
|
63
63
|
const focusTracker = this._register(trackFocus(this.domNode));
|
|
@@ -119,9 +119,9 @@ let ChatTipContentPart = class ChatTipContentPart extends Disposable {
|
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
121
|
this.domNode.appendChild(toolbarContainer);
|
|
122
|
-
const textContent = markdownContent.element.textContent ?? ( localize(
|
|
122
|
+
const textContent = markdownContent.element.textContent ?? ( localize(6869, "Chat tip"));
|
|
123
123
|
const hasLink = /\[.*?\]\(.*?\)/.test(tip.content.value);
|
|
124
|
-
const ariaLabel = hasLink ? ( localize(
|
|
124
|
+
const ariaLabel = hasLink ? ( localize(6870, "{0} Tab to reach the action.", textContent)) : textContent;
|
|
125
125
|
this.domNode.setAttribute("aria-label", ariaLabel);
|
|
126
126
|
}
|
|
127
127
|
async _handleTipAction(link, mdStr) {
|
|
@@ -146,7 +146,7 @@ registerAction2(class PreviousTipAction extends Action2 {
|
|
|
146
146
|
constructor() {
|
|
147
147
|
super({
|
|
148
148
|
id: "workbench.action.chat.previousTip",
|
|
149
|
-
title: ( localize2(
|
|
149
|
+
title: ( localize2(6871, "Previous tip")),
|
|
150
150
|
icon: Codicon.chevronLeft,
|
|
151
151
|
precondition: ChatContextKeys.multipleChatTips,
|
|
152
152
|
f1: false,
|
|
@@ -166,7 +166,7 @@ registerAction2(class NextTipAction extends Action2 {
|
|
|
166
166
|
constructor() {
|
|
167
167
|
super({
|
|
168
168
|
id: "workbench.action.chat.nextTip",
|
|
169
|
-
title: ( localize2(
|
|
169
|
+
title: ( localize2(6872, "Next tip")),
|
|
170
170
|
icon: Codicon.chevronRight,
|
|
171
171
|
precondition: ChatContextKeys.multipleChatTips,
|
|
172
172
|
f1: false,
|
|
@@ -186,7 +186,7 @@ registerAction2(class DismissTipToolbarAction extends Action2 {
|
|
|
186
186
|
constructor() {
|
|
187
187
|
super({
|
|
188
188
|
id: "workbench.action.chat.dismissTipToolbar",
|
|
189
|
-
title: ( localize2(
|
|
189
|
+
title: ( localize2(6873, "Dismiss tip")),
|
|
190
190
|
icon: Codicon.check,
|
|
191
191
|
f1: false,
|
|
192
192
|
menu: [{
|
|
@@ -204,7 +204,7 @@ registerAction2(class DismissTipAction extends Action2 {
|
|
|
204
204
|
constructor() {
|
|
205
205
|
super({
|
|
206
206
|
id: "workbench.action.chat.dismissTip",
|
|
207
|
-
title: ( localize2(
|
|
207
|
+
title: ( localize2(6874, "Dismiss this tip")),
|
|
208
208
|
f1: false,
|
|
209
209
|
menu: [{
|
|
210
210
|
id: MenuId.ChatTipContext,
|
|
@@ -221,7 +221,7 @@ registerAction2(class DisableTipsAction extends Action2 {
|
|
|
221
221
|
constructor() {
|
|
222
222
|
super({
|
|
223
223
|
id: "workbench.action.chat.disableTips",
|
|
224
|
-
title: ( localize2(
|
|
224
|
+
title: ( localize2(6875, "Disable tips")),
|
|
225
225
|
icon: Codicon.bellSlash,
|
|
226
226
|
f1: false,
|
|
227
227
|
menu: [{
|
|
@@ -246,7 +246,7 @@ registerAction2(class ResetDismissedTipsAction extends Action2 {
|
|
|
246
246
|
constructor() {
|
|
247
247
|
super({
|
|
248
248
|
id: "workbench.action.chat.resetDismissedTips",
|
|
249
|
-
title: ( localize2(
|
|
249
|
+
title: ( localize2(6876, "Reset Dismissed Tips")),
|
|
250
250
|
f1: true,
|
|
251
251
|
precondition: ChatContextKeys.enabled
|
|
252
252
|
});
|
package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts
CHANGED
|
@@ -2,11 +2,13 @@ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/l
|
|
|
2
2
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
3
3
|
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
4
4
|
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
5
|
+
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
5
6
|
import { IChatTodoListService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/chatTodoListService.service";
|
|
6
7
|
export declare class ChatTodoListWidget extends Disposable {
|
|
7
8
|
private readonly chatTodoListService;
|
|
8
9
|
private readonly instantiationService;
|
|
9
10
|
private readonly contextKeyService;
|
|
11
|
+
private readonly telemetryService;
|
|
10
12
|
readonly domNode: HTMLElement;
|
|
11
13
|
private _isExpanded;
|
|
12
14
|
private _userManuallyExpanded;
|
|
@@ -19,7 +21,7 @@ export declare class ChatTodoListWidget extends Disposable {
|
|
|
19
21
|
private _currentSessionResource;
|
|
20
22
|
private _todoList;
|
|
21
23
|
private readonly _inChatTodoListContextKey;
|
|
22
|
-
constructor(chatTodoListService: IChatTodoListService, instantiationService: IInstantiationService, contextKeyService: IContextKeyService);
|
|
24
|
+
constructor(chatTodoListService: IChatTodoListService, instantiationService: IInstantiationService, contextKeyService: IContextKeyService, telemetryService: ITelemetryService);
|
|
23
25
|
get height(): number;
|
|
24
26
|
private hideWidget;
|
|
25
27
|
private createChatTodoWidget;
|