@codingame/monaco-vscode-chat-service-override 8.0.4 → 9.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 (33) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +24 -24
  3. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +2 -2
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +73 -22
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +47 -36
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +1 -1
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +5 -4
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +5 -4
  11. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +27 -21
  12. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.js +10 -3
  13. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +2 -2
  14. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipantContributions.js +179 -35
  15. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +1 -1
  16. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +2 -9
  17. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +14 -4
  18. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +14 -7
  19. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatContextAttachments.js +0 -5
  20. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputCompletions.js +37 -9
  21. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +6 -2
  22. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +253 -67
  24. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +16 -0
  25. package/vscode/src/vs/workbench/contrib/chat/common/languageModelStats.js +2 -2
  26. package/vscode/src/vs/workbench/contrib/chat/common/languageModelToolsService.js +59 -18
  27. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +51 -20
  28. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  29. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +28 -49
  30. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +130 -0
  31. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +10 -2
  32. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSavingServiceImpl.js +2 -2
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +0 -258
@@ -178,7 +178,7 @@ let QuickChat = class QuickChat extends Disposable {
178
178
  IContextKeyService,
179
179
  this._register(this.contextKeyService.createScoped(parent))
180
180
  ]))));
181
- this.widget = this._register(scopedInstantiationService.createInstance(ChatWidget, ChatAgentLocation.Panel, { resource: true }, { renderInputOnTop: true, renderStyle: 'compact', menus: { inputSideToolbar: MenuId.ChatInputSide } }, {
181
+ this.widget = this._register(scopedInstantiationService.createInstance(ChatWidget, ChatAgentLocation.Panel, { isQuickChat: true }, { renderInputOnTop: true, renderStyle: 'compact', menus: { inputSideToolbar: MenuId.ChatInputSide } }, {
182
182
  listForeground: quickInputForeground,
183
183
  listBackground: quickInputBackground,
184
184
  inputEditorBackground: inputBackground,
@@ -1,6 +1,5 @@
1
1
  import { renderMarkdownAsPlaintext } from 'vscode/vscode/vs/base/browser/markdownRenderer';
2
2
  import { MarkdownString } from 'vscode/vscode/vs/base/common/htmlContent';
3
- import { ICodeEditorService } from 'vscode/vscode/vs/editor/browser/services/codeEditorService';
4
3
  import { AccessibleViewType, AccessibleViewProviderId } from 'vscode/vscode/vs/platform/accessibility/browser/accessibleView';
5
4
  import { AccessibilityVerbositySettingId } from 'vscode/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
6
5
  import { IChatWidgetService } from 'vscode/vscode/vs/workbench/contrib/chat/browser/chat.service';
@@ -15,22 +14,16 @@ class ChatResponseAccessibleView {
15
14
  this.name = 'panelChat';
16
15
  this.type = AccessibleViewType.View;
17
16
  this.when = CONTEXT_IN_CHAT_SESSION;
18
- this._initialRender = true;
19
17
  }
20
18
  getProvider(accessor) {
21
19
  const widgetService = accessor.get(IChatWidgetService);
22
- const codeEditorService = accessor.get(ICodeEditorService);
23
20
  const widget = widgetService.lastFocusedWidget;
24
21
  if (!widget) {
25
22
  return;
26
23
  }
27
- const chatInputFocused = this._initialRender && !!codeEditorService.getFocusedCodeEditor() || false;
28
- if (this._initialRender && chatInputFocused) {
24
+ const chatInputFocused = widget.hasInputFocus();
25
+ if (chatInputFocused) {
29
26
  widget.focusLastMessage();
30
- this._initialRender = false;
31
- }
32
- if (!widget) {
33
- return;
34
27
  }
35
28
  const verifiedWidget = widget;
36
29
  const focusedItem = verifiedWidget.getFocus();
@@ -9,14 +9,17 @@ import { showChatView } from 'vscode/vscode/vs/workbench/contrib/chat/browser/ch
9
9
  import { IChatWidgetService } from 'vscode/vscode/vs/workbench/contrib/chat/browser/chat.service';
10
10
  import { ChatDynamicVariableModel } from 'vscode/vscode/vs/workbench/contrib/chat/browser/contrib/chatDynamicVariables';
11
11
  import { ChatAgentLocation } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatAgents';
12
- import { ChatRequestVariablePart, ChatRequestDynamicVariablePart } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
12
+ import { ChatRequestVariablePart, ChatRequestDynamicVariablePart, ChatRequestToolPart } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
13
13
  import { ChatContextAttachments } from './contrib/chatContextAttachments.js';
14
14
  import { IViewsService } from 'vscode/vscode/vs/workbench/services/views/common/viewsService.service';
15
+ import { ILanguageModelToolsService } from 'vscode/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
16
+ import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
15
17
 
16
18
  let ChatVariablesService = class ChatVariablesService {
17
- constructor(chatWidgetService, viewsService) {
19
+ constructor(chatWidgetService, viewsService, toolsService) {
18
20
  this.chatWidgetService = chatWidgetService;
19
21
  this.viewsService = viewsService;
22
+ this.toolsService = toolsService;
20
23
  this._resolver = ( new Map());
21
24
  }
22
25
  async resolveVariables(prompt, attachedContextVariables, model, progress, token) {
@@ -43,7 +46,13 @@ let ChatVariablesService = class ChatVariablesService {
43
46
  }
44
47
  }
45
48
  else if (part instanceof ChatRequestDynamicVariablePart) {
46
- resolvedVariables[i] = { id: part.id, name: part.referenceText, range: part.range, value: part.data };
49
+ resolvedVariables[i] = { id: part.id, name: part.referenceText, range: part.range, value: part.data, };
50
+ }
51
+ else if (part instanceof ChatRequestToolPart) {
52
+ const tool = this.toolsService.getTool(part.toolId);
53
+ if (tool) {
54
+ resolvedVariables[i] = { id: part.toolId, name: part.toolName, range: part.range, value: undefined, isTool: true, icon: ThemeIcon.isThemeIcon(tool.icon) ? tool.icon : undefined, fullName: tool.displayName };
55
+ }
47
56
  }
48
57
  });
49
58
  const resolvedAttachedContext = [];
@@ -141,7 +150,8 @@ let ChatVariablesService = class ChatVariablesService {
141
150
  };
142
151
  ChatVariablesService = ( __decorate([
143
152
  ( __param(0, IChatWidgetService)),
144
- ( __param(1, IViewsService))
153
+ ( __param(1, IViewsService)),
154
+ ( __param(2, ILanguageModelToolsService))
145
155
  ], ChatVariablesService));
146
156
 
147
157
  export { ChatVariablesService };
@@ -69,8 +69,8 @@ let ChatViewPane = class ChatViewPane extends ViewPane {
69
69
  }
70
70
  else if (this._widget?.viewModel?.initState === ChatModelInitState.Initialized) {
71
71
  this.didUnregisterProvider = true;
72
- this._onDidChangeViewWelcomeState.fire();
73
72
  }
73
+ this._onDidChangeViewWelcomeState.fire();
74
74
  }));
75
75
  }
76
76
  getActionsContext() {
@@ -78,7 +78,7 @@ let ChatViewPane = class ChatViewPane extends ViewPane {
78
78
  chatView: this
79
79
  };
80
80
  }
81
- updateModel(model, viewState) {
81
+ updateModel(model) {
82
82
  this.modelDisposables.clear();
83
83
  model = model ?? (this.chatService.transferredSessionData?.sessionId
84
84
  ? this.chatService.getOrRestoreSession(this.chatService.transferredSessionData.sessionId)
@@ -86,10 +86,13 @@ let ChatViewPane = class ChatViewPane extends ViewPane {
86
86
  if (!model) {
87
87
  throw ( new Error('Could not start chat session'));
88
88
  }
89
- this._widget.setModel(model, { ...(viewState ?? this.viewState) });
89
+ this._widget.setModel(model, { ...this.viewState });
90
90
  this.viewState.sessionId = model.sessionId;
91
91
  }
92
92
  shouldShowWelcome() {
93
+ if (!this.chatAgentService.getContributedDefaultAgent(ChatAgentLocation.Panel)) {
94
+ return true;
95
+ }
93
96
  const noPersistedSessions = !this.chatService.hasSessions();
94
97
  return this.didUnregisterProvider || !this._widget?.viewModel && (noPersistedSessions || this.didProviderRegistrationFail);
95
98
  }
@@ -143,7 +146,8 @@ let ChatViewPane = class ChatViewPane extends ViewPane {
143
146
  if (this.widget.viewModel) {
144
147
  this.chatService.clearSession(this.widget.viewModel.sessionId);
145
148
  }
146
- this.updateModel(undefined, { ...this.viewState, inputValue: undefined });
149
+ this.updateViewState();
150
+ this.updateModel(undefined);
147
151
  }
148
152
  loadSession(sessionId) {
149
153
  if (this.widget.viewModel) {
@@ -166,13 +170,16 @@ let ChatViewPane = class ChatViewPane extends ViewPane {
166
170
  saveState() {
167
171
  if (this._widget) {
168
172
  this._widget.saveState();
169
- const widgetViewState = this._widget.getViewState();
170
- this.viewState.inputValue = widgetViewState.inputValue;
171
- this.viewState.inputState = widgetViewState.inputState;
173
+ this.updateViewState();
172
174
  this.memento.saveMemento();
173
175
  }
174
176
  super.saveState();
175
177
  }
178
+ updateViewState() {
179
+ const widgetViewState = this._widget.getViewState();
180
+ this.viewState.inputValue = widgetViewState.inputValue;
181
+ this.viewState.inputState = widgetViewState.inputState;
182
+ }
176
183
  };
177
184
  ChatViewPane = ( __decorate([
178
185
  ( __param(1, IKeybindingService)),
@@ -1,4 +1,3 @@
1
- import { Emitter } from 'vscode/vscode/vs/base/common/event';
2
1
  import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
3
2
  import { ChatWidget } from 'vscode/vscode/vs/workbench/contrib/chat/browser/chatWidget';
4
3
 
@@ -11,8 +10,6 @@ class ChatContextAttachments extends Disposable {
11
10
  super();
12
11
  this.widget = widget;
13
12
  this._attachedContext = ( new Set());
14
- this._onDidChangeInputState = this._register(( new Emitter()));
15
- this.onDidChangeInputState = this._onDidChangeInputState.event;
16
13
  this._register(this.widget.onDidChangeContext((e) => {
17
14
  if (e.removed) {
18
15
  this._removeContext(e.removed);
@@ -46,12 +43,10 @@ class ChatContextAttachments extends Disposable {
46
43
  this._attachedContext.add(attachment);
47
44
  }
48
45
  this.widget.setContext(overwrite, ...attachments);
49
- this._onDidChangeInputState.fire();
50
46
  }
51
47
  _removeContext(attachments) {
52
48
  if (attachments.length) {
53
49
  attachments.forEach(this._attachedContext.delete, this._attachedContext);
54
- this._onDidChangeInputState.fire();
55
50
  }
56
51
  }
57
52
  _clearAttachedContext() {
@@ -15,9 +15,10 @@ import { ChatInputPart } from 'vscode/vscode/vs/workbench/contrib/chat/browser/c
15
15
  import { SelectAndInsertFileAction } from 'vscode/vscode/vs/workbench/contrib/chat/browser/contrib/chatDynamicVariables';
16
16
  import { getFullyQualifiedId, ChatAgentLocation } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatAgents';
17
17
  import { IChatAgentService, IChatAgentNameService } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
18
- import { ChatRequestAgentPart, ChatRequestAgentSubcommandPart, ChatRequestTextPart, chatSubcommandLeader, chatAgentLeader, chatVariableLeader, ChatRequestVariablePart } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
18
+ import { ChatRequestAgentPart, ChatRequestAgentSubcommandPart, ChatRequestTextPart, chatSubcommandLeader, chatAgentLeader, chatVariableLeader, ChatRequestVariablePart, ChatRequestToolPart } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
19
19
  import { IChatSlashCommandService } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatSlashCommands.service';
20
20
  import { IChatVariablesService } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatVariables.service';
21
+ import { ILanguageModelToolsService } from 'vscode/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
21
22
  import { LifecyclePhase } from 'vscode/vscode/vs/workbench/services/lifecycle/common/lifecycle';
22
23
 
23
24
  var BuiltinDynamicCompletions_1, VariableCompletions_1;
@@ -266,7 +267,7 @@ let BuiltinDynamicCompletions = class BuiltinDynamicCompletions extends Disposab
266
267
  if (!widget || !widget.supportsFileReferences) {
267
268
  return null;
268
269
  }
269
- const range = computeCompletionRanges(model, position, BuiltinDynamicCompletions_1.VariableNameDef);
270
+ const range = computeCompletionRanges(model, position, BuiltinDynamicCompletions_1.VariableNameDef, true);
270
271
  if (!range) {
271
272
  return null;
272
273
  }
@@ -281,7 +282,7 @@ let BuiltinDynamicCompletions = class BuiltinDynamicCompletions extends Disposab
281
282
  {
282
283
  label: `${chatVariableLeader}file`,
283
284
  insertText: `${chatVariableLeader}file:`,
284
- detail: ( localize(7153, "Pick a file")),
285
+ detail: ( localize(7125, "Pick a file")),
285
286
  range,
286
287
  kind: CompletionItemKind.Text,
287
288
  command: { id: SelectAndInsertFileAction.ID, title: SelectAndInsertFileAction.ID, arguments: [{ widget, range: afterRange }] },
@@ -298,11 +299,17 @@ BuiltinDynamicCompletions = BuiltinDynamicCompletions_1 = ( (__decorate([
298
299
  ( (__param(1, IChatWidgetService)))
299
300
  ], BuiltinDynamicCompletions)));
300
301
  ( (Registry.as(Extensions.Workbench))).registerWorkbenchContribution(BuiltinDynamicCompletions, LifecyclePhase.Eventually);
301
- function computeCompletionRanges(model, position, reg) {
302
+ function computeCompletionRanges(model, position, reg, onlyOnWordStart = false) {
302
303
  const varWord = getWordAtText(position.column, reg, model.getLineContent(position.lineNumber), 0);
303
304
  if (!varWord && model.getWordUntilPosition(position).word) {
304
305
  return;
305
306
  }
307
+ if (varWord && onlyOnWordStart) {
308
+ const wordBefore = model.getWordUntilPosition({ lineNumber: position.lineNumber, column: varWord.startColumn });
309
+ if (wordBefore.word) {
310
+ return;
311
+ }
312
+ }
306
313
  let insert;
307
314
  let replace;
308
315
  if (!varWord) {
@@ -327,7 +334,7 @@ function computeCompletionRanges(model, position, reg) {
327
334
  let VariableCompletions = class VariableCompletions extends Disposable {
328
335
  static { VariableCompletions_1 = this; }
329
336
  static { this.VariableNameDef = ( (new RegExp(`${chatVariableLeader}\\w*`, 'g'))); }
330
- constructor(languageFeaturesService, chatWidgetService, chatVariablesService, configService) {
337
+ constructor(languageFeaturesService, chatWidgetService, chatVariablesService, configService, toolsService) {
331
338
  super();
332
339
  this.languageFeaturesService = languageFeaturesService;
333
340
  this.chatWidgetService = chatWidgetService;
@@ -347,15 +354,16 @@ let VariableCompletions = class VariableCompletions extends Disposable {
347
354
  if (!widget || !( (locations.has(widget.location)))) {
348
355
  return null;
349
356
  }
350
- const range = computeCompletionRanges(model, position, VariableCompletions_1.VariableNameDef);
357
+ const range = computeCompletionRanges(model, position, VariableCompletions_1.VariableNameDef, true);
351
358
  if (!range) {
352
359
  return null;
353
360
  }
354
361
  const usedAgent = widget.parsedInput.parts.find(p => p instanceof ChatRequestAgentPart);
355
362
  const slowSupported = usedAgent ? usedAgent.agent.metadata.supportsSlowVariables : true;
356
363
  const usedVariables = widget.parsedInput.parts.filter((p) => p instanceof ChatRequestVariablePart);
364
+ const usedVariableNames = ( (new Set( (usedVariables.map(v => v.variableName)))));
357
365
  const variableItems = ( (Array.from(this.chatVariablesService.getVariables(widget.location))
358
- .filter(v => !( (usedVariables.some(usedVar => usedVar.variableName === v.name))))
366
+ .filter(v => !( (usedVariableNames.has(v.name))))
359
367
  .filter(v => !v.isSlow || slowSupported)
360
368
  .map((v) => {
361
369
  const withLeader = `${chatVariableLeader}${v.name}`;
@@ -368,8 +376,27 @@ let VariableCompletions = class VariableCompletions extends Disposable {
368
376
  sortText: 'z'
369
377
  };
370
378
  })));
379
+ const usedTools = widget.parsedInput.parts.filter((p) => p instanceof ChatRequestToolPart);
380
+ const usedToolNames = ( (new Set( (usedTools.map(v => v.toolName)))));
381
+ const toolItems = [];
382
+ if (!usedAgent || usedAgent.agent.supportsToolReferences) {
383
+ toolItems.push(...( (Array.from(toolsService.getTools())
384
+ .filter(t => t.canBeInvokedManually)
385
+ .filter(t => !( (usedToolNames.has(t.name ?? ''))))
386
+ .map((t) => {
387
+ const withLeader = `${chatVariableLeader}${t.name}`;
388
+ return {
389
+ label: withLeader,
390
+ range,
391
+ insertText: withLeader + ' ',
392
+ detail: t.userDescription,
393
+ kind: CompletionItemKind.Text,
394
+ sortText: 'z'
395
+ };
396
+ }))));
397
+ }
371
398
  return {
372
- suggestions: variableItems
399
+ suggestions: [...variableItems, ...toolItems]
373
400
  };
374
401
  }
375
402
  }));
@@ -379,6 +406,7 @@ VariableCompletions = VariableCompletions_1 = ( (__decorate([
379
406
  ( (__param(0, ILanguageFeaturesService))),
380
407
  ( (__param(1, IChatWidgetService))),
381
408
  ( (__param(2, IChatVariablesService))),
382
- ( (__param(3, IConfigurationService)))
409
+ ( (__param(3, IConfigurationService))),
410
+ ( (__param(4, ILanguageModelToolsService)))
383
411
  ], VariableCompletions)));
384
412
  ( (Registry.as(Extensions.Workbench))).registerWorkbenchContribution(VariableCompletions, LifecyclePhase.Eventually);
@@ -20,7 +20,7 @@ import { ChatWidget } from 'vscode/vscode/vs/workbench/contrib/chat/browser/chat
20
20
  import { dynamicVariableDecorationType } from 'vscode/vscode/vs/workbench/contrib/chat/browser/contrib/chatDynamicVariables';
21
21
  import { IChatAgentService } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
22
22
  import { chatSlashCommandForeground, chatSlashCommandBackground } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatColors';
23
- import { ChatRequestAgentPart, ChatRequestAgentSubcommandPart, ChatRequestSlashCommandPart, ChatRequestTextPart, ChatRequestVariablePart, chatAgentLeader, chatSubcommandLeader } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
23
+ import { ChatRequestAgentPart, ChatRequestAgentSubcommandPart, ChatRequestSlashCommandPart, ChatRequestTextPart, ChatRequestVariablePart, ChatRequestToolPart, chatAgentLeader, chatSubcommandLeader } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
24
24
  import { ChatRequestParser } from 'vscode/vscode/vs/workbench/contrib/chat/common/chatRequestParser';
25
25
 
26
26
  const decorationDescription = 'chat';
@@ -200,6 +200,10 @@ let InputEditorDecorations = class InputEditorDecorations extends Disposable {
200
200
  for (const variable of variableParts) {
201
201
  varDecorations.push({ range: variable.editorRange });
202
202
  }
203
+ const toolParts = parsedRequest.filter((p) => p instanceof ChatRequestToolPart);
204
+ for (const tool of toolParts) {
205
+ varDecorations.push({ range: tool.editorRange });
206
+ }
203
207
  this.widget.inputEditor.setDecorationsByType(decorationDescription, variableTextDecorationType, varDecorations);
204
208
  }
205
209
  };
@@ -258,7 +262,7 @@ let ChatTokenDeleter = class ChatTokenDeleter extends Disposable {
258
262
  const change = e.changes[0];
259
263
  if (!change.text && this.widget.viewModel) {
260
264
  const previousParsedValue = parser.parseChatRequest(this.widget.viewModel.sessionId, previousInputValue, widget.location, { selectedAgent: previousSelectedAgent });
261
- const deletableTokens = previousParsedValue.parts.filter(p => p instanceof ChatRequestAgentPart || p instanceof ChatRequestAgentSubcommandPart || p instanceof ChatRequestSlashCommandPart || p instanceof ChatRequestVariablePart);
265
+ const deletableTokens = previousParsedValue.parts.filter(p => p instanceof ChatRequestAgentPart || p instanceof ChatRequestAgentSubcommandPart || p instanceof ChatRequestSlashCommandPart || p instanceof ChatRequestVariablePart || p instanceof ChatRequestToolPart);
262
266
  deletableTokens.forEach(token => {
263
267
  const deletedRangeOfToken = Range.intersectRanges(token.editorRange, change.range);
264
268
  if (deletedRangeOfToken && Range.compareRangesUsingStarts(token.editorRange, change.range) < 0) {
@@ -61,7 +61,7 @@ let ChatAgentHoverParticipant = class ChatAgentHoverParticipant {
61
61
  );
62
62
  }
63
63
  getAccessibleContent(hoverPart) {
64
- return ( localize(7154, 'There is a chat agent hover part here.'));
64
+ return ( localize(7126, 'There is a chat agent hover part here.'));
65
65
  }
66
66
  };
67
67
  ChatAgentHoverParticipant = ( (__decorate([