@codingame/monaco-vscode-katex-common 28.4.1 → 29.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  3. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +17 -15
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +2 -2
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +3 -1
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +158 -47
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +22 -17
  10. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  11. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +16 -4
  12. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +121 -14
  13. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +8 -1
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +15 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +29 -13
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +349 -109
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +47 -23
  19. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +6 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +104 -62
  21. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +1 -3
  22. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +13 -11
  23. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -40
  24. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +21 -16
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +7 -7
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +8 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +13 -4
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +29 -50
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +261 -282
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.d.ts +2 -1
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +7 -5
  33. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +31 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +184 -0
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +4 -2
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +4 -3
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +3 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +42 -34
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +1 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +14 -18
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +11 -9
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +6 -2
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +25 -2
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +332 -114
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +1 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +7 -7
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +2 -0
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +10 -5
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +11 -16
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +7 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +66 -7
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +28 -3
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +272 -107
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingExternalResourcesWidget.d.ts +18 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingExternalResourcesWidget.js +70 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +6 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +151 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +6 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +96 -10
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +6 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +86 -10
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +7 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +5 -2
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +8 -6
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.d.ts +28 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +273 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +3 -2
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +28 -16
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +22 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +81 -32
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +1 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +20 -7
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +11 -1
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.d.ts +6 -0
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +21 -7
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +2 -12
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +12 -12
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +0 -6
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +112 -163
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +11 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +9 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +137 -52
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +12 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +108 -38
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +9 -3
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +385 -247
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +5 -1
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +23 -7
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +6 -6
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +4 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +4 -2
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +23 -23
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +124 -17
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +4 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +24 -7
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +30 -11
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +84 -0
  127. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.d.ts +31 -0
  128. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +170 -0
  129. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.d.ts +47 -0
  130. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/internalCustomizations/internalPromptFileSystem.js +95 -0
  131. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +4 -1
  132. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  133. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +1 -1
  134. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +4 -3
  135. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -0
  136. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +38 -6
  137. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +1 -0
  138. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +31 -0
  139. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +12 -3
  140. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +130 -23
  141. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +23 -0
  142. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +41 -0
  143. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  144. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  145. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +55 -3
  146. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +4 -1
  147. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +50 -39
  148. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  149. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  150. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  151. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  152. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +0 -35
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +0 -440
@@ -41,10 +41,12 @@ import { globMatchesResource } from '@codingame/monaco-vscode-api/vscode/vs/work
41
41
  import { INotebookDocumentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/notebook/common/notebookDocumentService.service';
42
42
  import { ExplorerFolderContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/files/common/files';
43
43
  import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
44
+ import { IChatImageCarouselService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatImageCarouselService.service';
44
45
  import { hookUpSymbolAttachmentDragAndContextMenu, chatAttachmentResourceContextKey } from '../../attachments/chatAttachmentWidgets.js';
45
46
  import { IChatMarkdownAnchorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.service';
46
47
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
47
48
  import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
49
+ import { getMediaMime } from '@codingame/monaco-vscode-api/vscode/vs/base/common/mime';
48
50
 
49
51
  var InlineAnchorWidget_1;
50
52
  registerCss(chatInlineAnchorWidget);
@@ -82,6 +84,11 @@ function renderFileWidgets(element, instantiationService, chatMarkdownAnchorServ
82
84
  linkText
83
85
  };
84
86
  shouldRenderWidget = true;
87
+ searchParams.delete("vscodeLinkType");
88
+ const remainingQuery = ( searchParams.toString());
89
+ uri = uri.with({
90
+ query: remainingQuery
91
+ });
85
92
  }
86
93
  }
87
94
  if (shouldRenderWidget && uri?.scheme) {
@@ -105,6 +112,7 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
105
112
  element,
106
113
  inlineReference,
107
114
  metadata,
115
+ chatImageCarouselService,
108
116
  configurationService,
109
117
  originalContextKeyService,
110
118
  contextMenuService,
@@ -124,6 +132,7 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
124
132
  this.element = element;
125
133
  this.inlineReference = inlineReference;
126
134
  this.metadata = metadata;
135
+ this.chatImageCarouselService = chatImageCarouselService;
127
136
  this.configurationService = configurationService;
128
137
  this.notebookDocumentService = notebookDocumentService;
129
138
  this.openerService = openerService;
@@ -180,9 +189,6 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
180
189
  iconClasses = recomputeIconClasses();
181
190
  iconEl.classList.add(...iconClasses);
182
191
  };
183
- this._register(themeService.onDidFileIconThemeChange(() => {
184
- refreshIconClasses();
185
- }));
186
192
  let isDirectory = false;
187
193
  fileService.stat(location.uri).then(stat => {
188
194
  isDirectory = stat.isDirectory;
@@ -191,17 +197,25 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
191
197
  refreshIconClasses();
192
198
  }
193
199
  }).catch(() => {});
194
- const contextKeyService = this._register(originalContextKeyService.createScoped(element));
195
- chatAttachmentResourceContextKey.bindTo(contextKeyService).set(( location.uri.toString()));
196
- const isFolderContext = ExplorerFolderContext.bindTo(contextKeyService);
200
+ let contextKeyService;
201
+ let isFolderContext;
197
202
  let contextMenuInitialized = false;
203
+ const ensureContextKeyService = () => {
204
+ if (!contextKeyService) {
205
+ contextKeyService = this._register(originalContextKeyService.createScoped(element));
206
+ chatAttachmentResourceContextKey.bindTo(contextKeyService).set(( location.uri.toString()));
207
+ isFolderContext = ExplorerFolderContext.bindTo(contextKeyService);
208
+ }
209
+ return contextKeyService;
210
+ };
198
211
  this._register(
199
212
  addDisposableListener(element, EventType.CONTEXT_MENU, async domEvent => {
200
213
  const event = ( new StandardMouseEvent(getWindow(domEvent), domEvent));
201
214
  EventHelper.stop(domEvent, true);
215
+ const cks = ensureContextKeyService();
202
216
  if (!contextMenuInitialized) {
203
217
  contextMenuInitialized = true;
204
- const resourceContextKey = ( new StaticResourceContextKey(contextKeyService, fileService, languageService, modelService));
218
+ const resourceContextKey = ( new StaticResourceContextKey(cks, fileService, languageService, modelService));
205
219
  resourceContextKey.set(location.uri);
206
220
  }
207
221
  isFolderContext.set(isDirectory);
@@ -209,10 +223,10 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
209
223
  return;
210
224
  }
211
225
  contextMenuService.showContextMenu({
212
- contextKeyService,
226
+ contextKeyService: cks,
213
227
  getAnchor: () => event,
214
228
  getActions: () => {
215
- const menu = menuService.getMenuActions(MenuId.ChatInlineResourceAnchorContext, contextKeyService, {
229
+ const menu = menuService.getMenuActions(MenuId.ChatInlineResourceAnchorContext, cks, {
216
230
  arg: location.uri
217
231
  });
218
232
  return getFlatContextMenuActions(menu);
@@ -222,10 +236,10 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
222
236
  );
223
237
  if (location.range) {
224
238
  if (location.range.startLineNumber === location.range.endLineNumber) {
225
- element.setAttribute("aria-label", ( localize(6507, "{0} line {1}", filePathLabel, location.range.startLineNumber)));
239
+ element.setAttribute("aria-label", ( localize(6679, "{0} line {1}", filePathLabel, location.range.startLineNumber)));
226
240
  } else {
227
241
  element.setAttribute("aria-label", ( localize(
228
- 6508,
242
+ 6680,
229
243
  "{0} lines {1} to {2}",
230
244
  filePathLabel,
231
245
  location.range.startLineNumber,
@@ -247,12 +261,6 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
247
261
  this._register(
248
262
  hoverService.setupManagedHover(getDefaultHoverDelegate("element"), element, relativeLabel)
249
263
  );
250
- this.updateAppearance();
251
- this._register(this.configurationService.onDidChangeConfiguration(e => {
252
- if (e.affectsConfiguration(ChatConfiguration.InlineReferencesStyle)) {
253
- this.updateAppearance();
254
- }
255
- }));
256
264
  if (this.data.kind !== "symbol") {
257
265
  element.draggable = true;
258
266
  this._register(addDisposableListener(element, "dragstart", e => {
@@ -266,6 +274,11 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
266
274
  }
267
275
  this._register(addDisposableListener(element, "click", async e => {
268
276
  EventHelper.stop(e, true);
277
+ const mimeType = getMediaMime(location.uri.path);
278
+ if (mimeType?.startsWith("image/") && this.configurationService.getValue(ChatConfiguration.ImageCarouselEnabled)) {
279
+ await this.chatImageCarouselService.openCarouselAtResource(location.uri);
280
+ return;
281
+ }
269
282
  const editorOverride = getEditorOverrideForChatResource(location.uri, this.configurationService);
270
283
  const editorOptions = {
271
284
  override: editorOverride
@@ -282,18 +295,13 @@ let InlineAnchorWidget = class InlineAnchorWidget extends Disposable {
282
295
  getHTMLElement() {
283
296
  return this.element;
284
297
  }
285
- updateAppearance() {
286
- const style = this.configurationService.getValue(ChatConfiguration.InlineReferencesStyle);
287
- const useLinkStyle = style === "link";
288
- this.element.classList.toggle("link-style", useLinkStyle);
289
- }
290
298
  getCellIndex(location) {
291
299
  const notebook = this.notebookDocumentService.getNotebook(location);
292
300
  const index = notebook?.getCellIndex(location) ?? -1;
293
301
  return index >= 0 ? ` ${index + 1}` : "";
294
302
  }
295
303
  };
296
- InlineAnchorWidget = InlineAnchorWidget_1 = ( __decorate([( __param(3, IConfigurationService)), ( __param(4, IContextKeyService)), ( __param(5, IContextMenuService)), ( __param(6, IFileService)), ( __param(7, IHoverService)), ( __param(8, IInstantiationService)), ( __param(9, ILabelService)), ( __param(10, ILanguageService)), ( __param(11, IMenuService)), ( __param(12, IModelService)), ( __param(13, ITelemetryService)), ( __param(14, IThemeService)), ( __param(15, INotebookDocumentService)), ( __param(16, IOpenerService))], InlineAnchorWidget));
304
+ InlineAnchorWidget = InlineAnchorWidget_1 = ( __decorate([( __param(3, IChatImageCarouselService)), ( __param(4, IConfigurationService)), ( __param(5, IContextKeyService)), ( __param(6, IContextMenuService)), ( __param(7, IFileService)), ( __param(8, IHoverService)), ( __param(9, IInstantiationService)), ( __param(10, ILabelService)), ( __param(11, ILanguageService)), ( __param(12, IMenuService)), ( __param(13, IModelService)), ( __param(14, ITelemetryService)), ( __param(15, IThemeService)), ( __param(16, INotebookDocumentService)), ( __param(17, IOpenerService))], InlineAnchorWidget));
297
305
  registerAction2(class AddFileToChatAction extends Action2 {
298
306
  static {
299
307
  this.id = "chat.inlineResourceAnchor.addFileToChat";
@@ -301,7 +309,7 @@ registerAction2(class AddFileToChatAction extends Action2 {
301
309
  constructor() {
302
310
  super({
303
311
  id: AddFileToChatAction.id,
304
- title: ( localize2(6509, "Add File to Chat")),
312
+ title: ( localize2(6681, "Add File to Chat")),
305
313
  menu: [{
306
314
  id: MenuId.ChatInlineResourceAnchorContext,
307
315
  group: "chat",
@@ -325,7 +333,7 @@ registerAction2(class CopyResourceAction extends Action2 {
325
333
  constructor() {
326
334
  super({
327
335
  id: CopyResourceAction.id,
328
- title: ( localize2(6510, "Copy")),
336
+ title: ( localize2(6682, "Copy")),
329
337
  f1: false,
330
338
  precondition: chatAttachmentResourceContextKey,
331
339
  keybinding: {
@@ -352,7 +360,7 @@ registerAction2(class OpenToSideResourceAction extends Action2 {
352
360
  constructor() {
353
361
  super({
354
362
  id: OpenToSideResourceAction.id,
355
- title: ( localize2(6511, "Open to the Side")),
363
+ title: ( localize2(6683, "Open to the Side")),
356
364
  f1: false,
357
365
  precondition: chatAttachmentResourceContextKey,
358
366
  keybinding: {
@@ -418,8 +426,8 @@ registerAction2(class GoToDefinitionAction extends Action2 {
418
426
  super({
419
427
  id: GoToDefinitionAction.id,
420
428
  title: {
421
- ...( localize2(6512, "Go to Definition")),
422
- mnemonicTitle: ( localize(6513, "Go to &&Definition"))
429
+ ...( localize2(6684, "Go to Definition")),
430
+ mnemonicTitle: ( localize(6685, "Go to &&Definition"))
423
431
  },
424
432
  menu: ( [
425
433
  MenuId.ChatInlineSymbolAnchorContext,
@@ -476,8 +484,8 @@ registerAction2(class GoToTypeDefinitionsAction extends Action2 {
476
484
  super({
477
485
  id: GoToTypeDefinitionsAction.id,
478
486
  title: {
479
- ...( localize2(6514, "Go to Type Definitions")),
480
- mnemonicTitle: ( localize(6515, "Go to &&Type Definitions"))
487
+ ...( localize2(6686, "Go to Type Definitions")),
488
+ mnemonicTitle: ( localize(6687, "Go to &&Type Definitions"))
481
489
  },
482
490
  menu: ( [
483
491
  MenuId.ChatInlineSymbolAnchorContext,
@@ -502,8 +510,8 @@ registerAction2(class GoToImplementations extends Action2 {
502
510
  super({
503
511
  id: GoToImplementations.id,
504
512
  title: {
505
- ...( localize2(6516, "Go to Implementations")),
506
- mnemonicTitle: ( localize(6517, "Go to &&Implementations"))
513
+ ...( localize2(6688, "Go to Implementations")),
514
+ mnemonicTitle: ( localize(6689, "Go to &&Implementations"))
507
515
  },
508
516
  menu: ( [
509
517
  MenuId.ChatInlineSymbolAnchorContext,
@@ -528,8 +536,8 @@ registerAction2(class GoToReferencesAction extends Action2 {
528
536
  super({
529
537
  id: GoToReferencesAction.id,
530
538
  title: {
531
- ...( localize2(6518, "Go to References")),
532
- mnemonicTitle: ( localize(6519, "Go to &&References"))
539
+ ...( localize2(6690, "Go to References")),
540
+ mnemonicTitle: ( localize(6691, "Go to &&References"))
533
541
  },
534
542
  menu: ( [
535
543
  MenuId.ChatInlineSymbolAnchorContext,
@@ -53,6 +53,7 @@ export declare class ChatMarkdownContentPart extends Disposable implements IChat
53
53
  get codeblocks(): IChatCodeBlockInfo[];
54
54
  private readonly mathLayoutParticipants;
55
55
  constructor(markdown: IChatMarkdownContent, context: IChatContentPartRenderContext, editorPool: EditorPool, fillInIncompleteTokens: boolean | undefined, codeBlockStartIndex: number | undefined, renderer: IMarkdownRenderer, markdownRenderOptions: MarkdownRenderOptions | undefined, currentWidth: number, codeBlockModelCollection: CodeBlockModelCollection, rendererOptions: IChatMarkdownContentPartOptions, contextKeyService: IContextKeyService, configurationService: IConfigurationService, textModelService: ITextModelService, instantiationService: IInstantiationService, aiEditTelemetryService: IAiEditTelemetryService);
56
+ dispose(): void;
56
57
  private renderCodeBlockPill;
57
58
  private renderCodeBlock;
58
59
  hasSameContent(other: IChatProgressRenderableResponseContent): boolean;
@@ -13,12 +13,13 @@ import { coalesce } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arr
13
13
  import { findLast } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arraysFind';
14
14
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
15
15
  import { Lazy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
16
- import { Disposable, MutableDisposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
16
+ import { Disposable, MutableDisposable, DisposableStore, dispose } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
17
17
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
18
18
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
19
19
  import { ScrollbarVisibility } from '@codingame/monaco-vscode-api/vscode/vs/base/common/scrollable';
20
20
  import { equalsIgnoreCase } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
21
21
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
22
+ import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
22
23
  import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
23
24
  import { ILanguageService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/language.service';
24
25
  import { getIconClasses } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/getIconClasses';
@@ -374,6 +375,11 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
374
375
  });
375
376
  }
376
377
  }
378
+ dispose() {
379
+ super.dispose();
380
+ dispose(this.allRefs);
381
+ this.allRefs.length = 0;
382
+ }
377
383
  renderCodeBlockPill(sessionResource, requestId, inUndoStop, codemapperUri) {
378
384
  const codeBlock = this.instantiationService.createInstance(CollapsedCodeBlock, sessionResource, requestId, inUndoStop);
379
385
  if (codemapperUri) {
@@ -423,7 +429,7 @@ let ChatMarkdownContentPart = class ChatMarkdownContentPart extends Disposable {
423
429
  ref.object.layout(width);
424
430
  } else if (ref.object instanceof CollapsedCodeBlock) {
425
431
  const codeblockModel = this._codeblocks[index];
426
- if (codeblockModel.codemapperUri && ref.object.uri?.toString() !== ( codeblockModel.codemapperUri.toString())) {
432
+ if (codeblockModel.codemapperUri && !isEqual(ref.object.uri, codeblockModel.codemapperUri)) {
427
433
  ref.object.render(codeblockModel.codemapperUri);
428
434
  }
429
435
  }
@@ -489,16 +495,6 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
489
495
  this.pillElement.role = "button";
490
496
  this.element.appendChild(this.statusIndicatorContainer);
491
497
  this.element.appendChild(this.pillElement);
492
- const updateCheckmarks = () => this.element.classList.toggle(
493
- "show-checkmarks",
494
- !!this.configurationService.getValue(AccessibilityWorkbenchSettingId.ShowChatCheckmarks)
495
- );
496
- updateCheckmarks();
497
- this._register(this.configurationService.onDidChangeConfiguration(e => {
498
- if (e.affectsConfiguration(AccessibilityWorkbenchSettingId.ShowChatCheckmarks)) {
499
- updateCheckmarks();
500
- }
501
- }));
502
498
  this.registerListeners();
503
499
  }
504
500
  registerListeners() {
@@ -592,7 +588,7 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
592
588
  statusIconEl.classList.add(...statusIconClasses);
593
589
  const entry = editSession.readEntry(uri, r);
594
590
  const rwRatio = Math.floor((entry?.rewriteRatio.read(r) || 0) * 100);
595
- statusLabelEl.textContent = ( localize(6520, "Applying edits"));
591
+ statusLabelEl.textContent = ( localize(6692, "Applying edits"));
596
592
  const showAnimation = this.configurationService.getValue(ChatConfiguration.ShowCodeBlockProgressAnimation);
597
593
  if (showAnimation) {
598
594
  progressFill.style.width = `${rwRatio}%`;
@@ -601,13 +597,13 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
601
597
  } else {
602
598
  progressFill.style.width = "0%";
603
599
  this.pillElement.classList.remove("progress-filling");
604
- labelDetail.textContent = rwRatio === 0 || !rwRatio ? ( localize(6521, "Generating edits...")) : ( localize(6522, "({0}%)...", rwRatio));
600
+ labelDetail.textContent = rwRatio === 0 || !rwRatio ? ( localize(6693, "Generating edits...")) : ( localize(6694, "({0}%)...", rwRatio));
605
601
  }
606
602
  } else {
607
603
  const statusCodeicon = Codicon.check;
608
604
  statusIconClasses = ThemeIcon.asClassNameArray(statusCodeicon);
609
605
  statusIconEl.classList.add(...statusIconClasses);
610
- statusLabelEl.textContent = ( localize(6523, "Edited"));
606
+ statusLabelEl.textContent = ( localize(6695, "Edited"));
611
607
  const fileKind = uri.path.endsWith("/") ? FileKind.FOLDER : FileKind.FILE;
612
608
  pillIconClasses = getIconClasses(this.modelService, this.languageService, uri, fileKind);
613
609
  iconEl.classList.add(...pillIconClasses);
@@ -627,10 +623,10 @@ let CollapsedCodeBlock = class CollapsedCodeBlock extends Disposable {
627
623
  this.currentDiff = changes;
628
624
  labelAdded.textContent = `+${changes.added}`;
629
625
  labelRemoved.textContent = `-${changes.removed}`;
630
- const insertionsFragment = changes.added === 1 ? ( localize(6524, "1 insertion")) : ( localize(6525, "{0} insertions", changes.added));
631
- const deletionsFragment = changes.removed === 1 ? ( localize(6526, "1 deletion")) : ( localize(6527, "{0} deletions", changes.removed));
626
+ const insertionsFragment = changes.added === 1 ? ( localize(6696, "1 insertion")) : ( localize(6697, "{0} insertions", changes.added));
627
+ const deletionsFragment = changes.removed === 1 ? ( localize(6698, "1 deletion")) : ( localize(6699, "{0} deletions", changes.removed));
632
628
  const summary = ( localize(
633
- 6528,
629
+ 6700,
634
630
  "Edited {0}, {1}, {2}",
635
631
  iconText,
636
632
  insertionsFragment,
@@ -89,26 +89,28 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
89
89
  }
90
90
  createServerCommandLinks(servers) {
91
91
  return ( servers.map(s => createMarkdownCommandLink({
92
- title: "`" + escapeMarkdownSyntaxTokens(s.label) + "`",
92
+ text: "`" + escapeMarkdownSyntaxTokens(s.label) + "`",
93
93
  id: McpCommandIds.ServerOptions,
94
- arguments: [s.id]
94
+ arguments: [s.id],
95
+ tooltip: ( localize(6701, "Show options for {0}", s.label))
95
96
  }, false))).join(", ");
96
97
  }
97
98
  updateDetailedProgress(state) {
98
99
  const skipText = createMarkdownCommandLink({
99
- title: ( localize(6529, "Skip?")),
100
- id: McpCommandIds.SkipCurrentAutostart
100
+ text: ( localize(6702, "Skip?")),
101
+ id: McpCommandIds.SkipCurrentAutostart,
102
+ tooltip: ( localize(6703, "Skip starting this MCP server"))
101
103
  });
102
104
  let content;
103
105
  if (state.starting.length === 0) {
104
106
  content = ( new MarkdownString(undefined, {
105
107
  isTrusted: true
106
- })).appendText(( localize(6530, "Activating MCP extensions...")) + " ").appendMarkdown(skipText);
108
+ })).appendText(( localize(6704, "Activating MCP extensions...")) + " ").appendMarkdown(skipText);
107
109
  } else {
108
110
  const serverLinks = this.createServerCommandLinks(state.starting);
109
111
  content = ( new MarkdownString(undefined, {
110
112
  isTrusted: true
111
- })).appendMarkdown(( localize(6531, "Starting MCP servers {0}...", serverLinks)) + " ").appendMarkdown(skipText);
113
+ })).appendMarkdown(( localize(6705, "Starting MCP servers {0}...", serverLinks)) + " ").appendMarkdown(skipText);
112
114
  }
113
115
  if (this.workingProgressPart) {
114
116
  this.workingProgressPart.updateMessage(content);
@@ -147,12 +149,12 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
147
149
  const count = serversRequiringInteraction.length;
148
150
  const links = this.createServerCommandLinks(serversRequiringInteraction);
149
151
  const content = count === 1 ? ( localize(
150
- 6532,
152
+ 6706,
151
153
  "The MCP server {0} may have new tools and requires interaction to start. [Start it now?]({1})",
152
154
  links,
153
155
  "#start"
154
156
  )) : ( localize(
155
- 6533,
157
+ 6707,
156
158
  "The MCP servers {0} may have new tools and require interaction to start. [Start them now?]({1})",
157
159
  links,
158
160
  "#start"
@@ -194,7 +196,7 @@ let ChatMcpServersInteractionContentPart = class ChatMcpServersInteractionConten
194
196
  const serversToStart = state.serversRequiringInteraction;
195
197
  for (let i = 0; i < serversToStart.length; i++) {
196
198
  const serverInfo = serversToStart[i];
197
- startLink.textContent = ( localize(6534, "Starting {0}...", serverInfo.label));
199
+ startLink.textContent = ( localize(6708, "Starting {0}...", serverInfo.label));
198
200
  const server = this.mcpService.servers.get().find(s => s.definition.id === serverInfo.id);
199
201
  if (server) {
200
202
  await startServerAndWaitForLiveTools(server, {
@@ -64,7 +64,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
64
64
  const viewListButton = ( new ButtonWithIcon(viewListButtonContainer, {}));
65
65
  this._register(autorun(reader => {
66
66
  const fileCount = this.diffData.read(reader).resources.length;
67
- viewListButton.label = fileCount === 1 ? ( localize(6535, "Changed 1 file")) : ( localize(6536, "Changed {0} files", fileCount));
67
+ viewListButton.label = fileCount === 1 ? ( localize(6709, "Changed 1 file")) : ( localize(6710, "Changed {0} files", fileCount));
68
68
  }));
69
69
  const setExpansionState = () => {
70
70
  viewListButton.icon = this.isCollapsed ? Codicon.chevronRight : Codicon.chevronDown;
@@ -86,7 +86,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
86
86
  renderViewAllFileChangesButton(container) {
87
87
  const button = container.appendChild($(".chat-view-changes-icon"));
88
88
  button.classList.add(...ThemeIcon.asClassNameArray(Codicon.diffMultiple));
89
- button.title = ( localize(6537, "Open Changes"));
89
+ button.title = ( localize(6711, "Open Changes"));
90
90
  return addDisposableListener(button, "click", e => {
91
91
  const source = ( URI.parse(`multi-diff-editor:${( ( new Date()).getMilliseconds().toString()) + ( Math.random().toString())}`));
92
92
  const {
@@ -143,7 +143,7 @@ let ChatMultiDiffContentPart = class ChatMultiDiffContentPart extends Disposable
143
143
  alwaysConsumeMouseWheel: false,
144
144
  accessibilityProvider: {
145
145
  getAriaLabel: element => element.uri.path,
146
- getWidgetAriaLabel: () => ( localize(6538, "File Changes"))
146
+ getWidgetAriaLabel: () => ( localize(6712, "File Changes"))
147
147
  }
148
148
  })
149
149
  );
@@ -259,7 +259,7 @@ class ChatMultiDiffListRenderer {
259
259
  const removedElement = changesSummary.appendChild($(".deletions"));
260
260
  removedElement.textContent = `-${element.diff.removed}`;
261
261
  changesSummary.setAttribute("aria-label", ( localize(
262
- 6539,
262
+ 6713,
263
263
  "{0} lines added, {1} lines removed",
264
264
  element.diff.added,
265
265
  element.diff.removed
@@ -20,6 +20,7 @@ import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/h
20
20
  import { HoverStyle } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hover';
21
21
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/tools/languageModelToolsService.service';
22
22
  import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
23
+ import { buildPhrasePool } from './chatThinkingContentPart.js';
23
24
 
24
25
  let ChatProgressContentPart = class ChatProgressContentPart extends Disposable {
25
26
  constructor(
@@ -145,9 +146,12 @@ let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extend
145
146
  configurationService,
146
147
  languageModelToolsService
147
148
  ) {
149
+ const defaultLabel = ( localize(6714, "Working"));
150
+ const pool = buildPhrasePool([defaultLabel], configurationService);
151
+ const label = pool[Math.floor(Math.random() * pool.length)];
148
152
  const progressMessage = {
149
153
  kind: "progressMessage",
150
- content: ( new MarkdownString()).appendText(( localize(6540, "Working")))
154
+ content: ( new MarkdownString()).appendText(label)
151
155
  };
152
156
  super(
153
157
  progressMessage,
@@ -164,7 +168,7 @@ let ChatWorkingProgressContentPart = class ChatWorkingProgressContentPart extend
164
168
  );
165
169
  this._register(languageModelToolsService.onDidPrepareToolCallBecomeUnresponsive(e => {
166
170
  if (isEqual(context.element.sessionResource, e.sessionResource)) {
167
- this.updateMessage(( new MarkdownString(( localize(6541, "Waiting for tool '{0}' to respond...", e.toolData.displayName)))));
171
+ this.updateMessage(( new MarkdownString(( localize(6715, "Waiting for tool '{0}' to respond...", e.toolData.displayName)))));
168
172
  }
169
173
  }));
170
174
  }
@@ -2,7 +2,7 @@ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event"
2
2
  import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
3
  import { IAccessibilityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service";
4
4
  import { IMarkdownRendererService } from "@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer.service";
5
- import { IChatQuestionCarousel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
5
+ import { IChatQuestionCarousel, IChatQuestionAnswerValue } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService";
6
6
  import { IChatContentPart, IChatContentPartRenderContext } from "./chatContentParts.js";
7
7
  import { IChatRendererContent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel";
8
8
  import { ChatTreeItem } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
@@ -10,7 +10,7 @@ import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/h
10
10
  import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
11
11
  import { IKeybindingService } from "@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service";
12
12
  export interface IChatQuestionCarouselOptions {
13
- onSubmit: (answers: Map<string, unknown> | undefined) => void;
13
+ onSubmit: (answers: Map<string, IChatQuestionAnswerValue> | undefined) => void;
14
14
  shouldAutoFocus?: boolean;
15
15
  }
16
16
  export declare class ChatQuestionCarouselPart extends Disposable implements IChatContentPart {
@@ -26,12 +26,15 @@ export declare class ChatQuestionCarouselPart extends Disposable implements ICha
26
26
  readonly onDidChangeHeight: Event<void>;
27
27
  private _currentIndex;
28
28
  private readonly _answers;
29
+ private _isCollapsed;
29
30
  private _questionContainer;
31
+ private _headerActionsContainer;
30
32
  private _closeButtonContainer;
31
33
  private _footerRow;
32
34
  private _stepIndicator;
33
35
  private _submitHint;
34
36
  private _submitButton;
37
+ private _collapseButton;
35
38
  private _prevButton;
36
39
  private _nextButton;
37
40
  private _skipAllButton;
@@ -49,12 +52,16 @@ export declare class ChatQuestionCarouselPart extends Disposable implements ICha
49
52
  */
50
53
  private readonly _interactiveUIStore;
51
54
  private readonly _inChatQuestionCarouselContextKey;
55
+ private _validationMessageElement;
56
+ private _currentValidationError;
52
57
  constructor(carousel: IChatQuestionCarousel, context: IChatContentPartRenderContext, _options: IChatQuestionCarouselOptions, _markdownRendererService: IMarkdownRendererService, _hoverService: IHoverService, _accessibilityService: IAccessibilityService, _contextKeyService: IContextKeyService, _keybindingService: IKeybindingService);
53
58
  /**
54
59
  * Saves the current question's answer to the answers map.
55
60
  */
56
61
  private saveCurrentAnswer;
57
62
  private persistDraftState;
63
+ private toggleCollapsed;
64
+ private updateCollapsedPresentation;
58
65
  /**
59
66
  * Navigates the carousel by the given delta.
60
67
  * @param delta Negative for previous, positive for next
@@ -157,6 +164,22 @@ export declare class ChatQuestionCarouselPart extends Disposable implements ICha
157
164
  */
158
165
  private formatAnswerForSummary;
159
166
  private getQuestionText;
167
+ /**
168
+ * Validates the current question's answer against its validation rules.
169
+ * Returns true if valid, false if validation errors were shown.
170
+ */
171
+ private validateCurrentQuestion;
172
+ /**
173
+ * Validates that all required questions have been answered.
174
+ * Returns true if all required fields are satisfied.
175
+ */
176
+ private validateRequiredFields;
177
+ /**
178
+ * Returns a validation error message for the given value, or undefined if valid.
179
+ */
180
+ private getValidationError;
181
+ private showValidationError;
182
+ private clearValidationError;
160
183
  hasSameContent(other: IChatRendererContent, _followingContent: IChatRendererContent[], element: ChatTreeItem): boolean;
161
184
  addDisposable(disposable: {
162
185
  dispose(): void;