@theia/ai-chat-ui 1.59.0-next.72 → 1.60.0-next.43

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 (28) hide show
  1. package/lib/browser/ai-chat-ui-contribution.d.ts +0 -1
  2. package/lib/browser/ai-chat-ui-contribution.d.ts.map +1 -1
  3. package/lib/browser/ai-chat-ui-contribution.js +20 -5
  4. package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
  5. package/lib/browser/chat-input-widget.d.ts.map +1 -1
  6. package/lib/browser/chat-input-widget.js +3 -1
  7. package/lib/browser/chat-input-widget.js.map +1 -1
  8. package/lib/browser/chat-response-renderer/code-part-renderer.d.ts.map +1 -1
  9. package/lib/browser/chat-response-renderer/code-part-renderer.js +3 -2
  10. package/lib/browser/chat-response-renderer/code-part-renderer.js.map +1 -1
  11. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
  12. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +2 -1
  13. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
  14. package/lib/browser/chat-view-contribution.d.ts.map +1 -1
  15. package/lib/browser/chat-view-contribution.js +17 -2
  16. package/lib/browser/chat-view-contribution.js.map +1 -1
  17. package/lib/browser/chat-view-language-contribution.d.ts +14 -4
  18. package/lib/browser/chat-view-language-contribution.d.ts.map +1 -1
  19. package/lib/browser/chat-view-language-contribution.js +96 -38
  20. package/lib/browser/chat-view-language-contribution.js.map +1 -1
  21. package/package.json +12 -11
  22. package/src/browser/ai-chat-ui-contribution.ts +20 -6
  23. package/src/browser/chat-input-widget.tsx +3 -1
  24. package/src/browser/chat-response-renderer/code-part-renderer.tsx +3 -2
  25. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +2 -1
  26. package/src/browser/chat-view-contribution.ts +18 -2
  27. package/src/browser/chat-view-language-contribution.ts +134 -77
  28. package/src/browser/style/index.css +11 -3
@@ -34,72 +34,120 @@ const VARIABLE_ADD_CONTEXT_COMMAND = 'add-context-variable';
34
34
  let ChatViewLanguageContribution = class ChatViewLanguageContribution {
35
35
  onStart(_app) {
36
36
  monaco.languages.register({ id: exports.CHAT_VIEW_LANGUAGE_ID, extensions: [exports.CHAT_VIEW_LANGUAGE_EXTENSION] });
37
- monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
38
- triggerCharacters: [prompt_text_1.PromptText.AGENT_CHAR],
39
- provideCompletionItems: (model, position, _context, _token) => this.provideAgentCompletions(model, position),
37
+ this.registerCompletionProviders();
38
+ monaco.editor.registerCommand(VARIABLE_ARGUMENT_PICKER_COMMAND, this.triggerVariableArgumentPicker.bind(this));
39
+ monaco.editor.registerCommand(VARIABLE_ADD_CONTEXT_COMMAND, (_, ...args) => args.length > 1 ? this.addContextVariable(args[0], args[1]) : undefined);
40
+ }
41
+ registerCompletionProviders() {
42
+ this.registerStandardCompletionProvider({
43
+ triggerCharacter: prompt_text_1.PromptText.AGENT_CHAR,
44
+ getItems: () => this.agentService.getAgents(),
45
+ kind: monaco.languages.CompletionItemKind.Value,
46
+ getId: agent => `${agent.id} `,
47
+ getName: agent => agent.name,
48
+ getDescription: agent => agent.description
40
49
  });
41
- monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
42
- triggerCharacters: [prompt_text_1.PromptText.VARIABLE_CHAR],
43
- provideCompletionItems: (model, position, _context, _token) => this.provideVariableCompletions(model, position),
50
+ this.registerStandardCompletionProvider({
51
+ triggerCharacter: prompt_text_1.PromptText.VARIABLE_CHAR,
52
+ getItems: () => this.variableService.getVariables(),
53
+ kind: monaco.languages.CompletionItemKind.Variable,
54
+ getId: variable => { var _a; return ((_a = variable.args) === null || _a === void 0 ? void 0 : _a.some(arg => !arg.isOptional)) ? variable.name + prompt_text_1.PromptText.VARIABLE_SEPARATOR_CHAR : `${variable.name} `; },
55
+ getName: variable => variable.name,
56
+ getDescription: variable => variable.description,
57
+ command: {
58
+ title: core_1.nls.localize('theia/ai/chat-ui/selectVariableArguments', 'Select variable arguments'),
59
+ id: VARIABLE_ARGUMENT_PICKER_COMMAND,
60
+ }
61
+ });
62
+ this.registerStandardCompletionProvider({
63
+ triggerCharacter: prompt_text_1.PromptText.FUNCTION_CHAR,
64
+ getItems: () => this.toolInvocationRegistry.getAllFunctions(),
65
+ kind: monaco.languages.CompletionItemKind.Function,
66
+ getId: tool => `${tool.id} `,
67
+ getName: tool => tool.name,
68
+ getDescription: tool => { var _a; return (_a = tool.description) !== null && _a !== void 0 ? _a : ''; }
44
69
  });
70
+ // Register the variable argument completion provider (special case)
45
71
  monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
46
72
  triggerCharacters: [prompt_text_1.PromptText.VARIABLE_CHAR, prompt_text_1.PromptText.VARIABLE_SEPARATOR_CHAR],
47
73
  provideCompletionItems: (model, position, _context, _token) => this.provideVariableWithArgCompletions(model, position),
48
74
  });
75
+ }
76
+ registerStandardCompletionProvider(source) {
49
77
  monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
50
- triggerCharacters: [prompt_text_1.PromptText.FUNCTION_CHAR],
51
- provideCompletionItems: (model, position, _context, _token) => this.provideToolCompletions(model, position),
78
+ triggerCharacters: [source.triggerCharacter],
79
+ provideCompletionItems: (model, position, _context, _token) => this.provideCompletions(model, position, source),
52
80
  });
53
- monaco.editor.registerCommand(VARIABLE_ARGUMENT_PICKER_COMMAND, this.triggerVariableArgumentPicker.bind(this));
54
- monaco.editor.registerCommand(VARIABLE_ADD_CONTEXT_COMMAND, (_, ...args) => args.length > 1 ? this.addContextVariable(args[0], args[1]) : undefined);
55
81
  }
56
82
  getCompletionRange(model, position, triggerCharacter) {
57
- // Check if the character before the current position is the trigger character
83
+ const wordInfo = model.getWordUntilPosition(position);
58
84
  const lineContent = model.getLineContent(position.lineNumber);
59
- const characterBefore = lineContent[position.column - 2]; // Get the character before the current position
60
- if (characterBefore !== triggerCharacter) {
61
- // Do not return agent suggestions if the user didn't just type the trigger character
85
+ // one to the left, and -1 for 0-based index
86
+ const characterBeforeCurrentWord = lineContent[wordInfo.startColumn - 1 - 1];
87
+ if (characterBeforeCurrentWord !== triggerCharacter) {
62
88
  return undefined;
63
89
  }
64
- // Calculate the range from the position of the trigger character
65
- const wordInfo = model.getWordUntilPosition(position);
90
+ // we are not at the beginning of the line
91
+ if (wordInfo.startColumn > 2) {
92
+ const charBeforeTrigger = model.getValueInRange({
93
+ startLineNumber: position.lineNumber,
94
+ startColumn: wordInfo.startColumn - 2,
95
+ endLineNumber: position.lineNumber,
96
+ endColumn: wordInfo.startColumn - 1
97
+ });
98
+ // If the character before the trigger is not whitespace, don't provide completions
99
+ if (!/\s/.test(charBeforeTrigger)) {
100
+ return undefined;
101
+ }
102
+ }
66
103
  return new monaco.Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, position.column);
67
104
  }
68
- getSuggestions(model, position, triggerChar, items, kind, getId, getName, getDescription, command) {
69
- const completionRange = this.getCompletionRange(model, position, triggerChar);
105
+ provideCompletions(model, position, source) {
106
+ const completionRange = this.getCompletionRange(model, position, source.triggerCharacter);
70
107
  if (completionRange === undefined) {
71
108
  return { suggestions: [] };
72
109
  }
110
+ const items = source.getItems();
73
111
  const suggestions = items.map(item => ({
74
- insertText: getId(item),
75
- kind: kind,
76
- label: getName(item),
112
+ insertText: source.getId(item),
113
+ kind: source.kind,
114
+ label: source.getName(item),
77
115
  range: completionRange,
78
- detail: getDescription(item),
79
- command
116
+ detail: source.getDescription(item),
117
+ command: source.command
80
118
  }));
81
119
  return { suggestions };
82
120
  }
83
- provideAgentCompletions(model, position) {
84
- return this.getSuggestions(model, position, prompt_text_1.PromptText.AGENT_CHAR, this.agentService.getAgents(), monaco.languages.CompletionItemKind.Value, agent => agent.id, agent => agent.name, agent => agent.description);
85
- }
86
- provideVariableCompletions(model, position) {
87
- return this.getSuggestions(model, position, prompt_text_1.PromptText.VARIABLE_CHAR, this.variableService.getVariables(), monaco.languages.CompletionItemKind.Variable, variable => variable.name, variable => variable.name, variable => variable.description, {
88
- title: core_1.nls.localize('theia/ai/chat-ui/selectVariableArguments', 'Select variable arguments'),
89
- id: VARIABLE_ARGUMENT_PICKER_COMMAND,
90
- });
91
- }
92
121
  async provideVariableWithArgCompletions(model, position) {
122
+ // Get the text of the current line up to the cursor position
123
+ const textUntilPosition = model.getValueInRange({
124
+ startLineNumber: position.lineNumber,
125
+ startColumn: 1,
126
+ endLineNumber: position.lineNumber,
127
+ endColumn: position.column,
128
+ });
129
+ // Regex that captures the variable name in contexts like "#varname" or "#var-name:args"
130
+ // Matches only when # is at the beginning of the string or after whitespace
131
+ const variableRegex = /(?:^|\s)#([\w-]*)/;
132
+ const match = textUntilPosition.match(variableRegex);
133
+ if (!match) {
134
+ return { suggestions: [] };
135
+ }
136
+ const currentVariableName = match[1];
137
+ const hasColonSeparator = textUntilPosition.includes(`${currentVariableName}:`);
93
138
  const variables = this.variableService.getVariables();
94
139
  const suggestions = [];
95
140
  for (const variable of variables) {
141
+ // If we have a variable:arg pattern, only process the matching variable
142
+ if (hasColonSeparator && variable.name !== currentVariableName) {
143
+ continue;
144
+ }
96
145
  const provider = await this.variableService.getArgumentCompletionProvider(variable.name);
97
146
  if (provider) {
98
147
  const items = await provider(model, position);
99
148
  if (items) {
100
149
  suggestions.push(...items.map(item => ({
101
150
  ...item,
102
- // trigger command to check if we should add a context variable
103
151
  command: {
104
152
  title: core_1.nls.localize('theia/ai/chat-ui/addContextVariable', 'Add context variable'),
105
153
  id: VARIABLE_ADD_CONTEXT_COMMAND,
@@ -111,9 +159,6 @@ let ChatViewLanguageContribution = class ChatViewLanguageContribution {
111
159
  }
112
160
  return { suggestions };
113
161
  }
114
- provideToolCompletions(model, position) {
115
- return this.getSuggestions(model, position, prompt_text_1.PromptText.FUNCTION_CHAR, this.toolInvocationRegistry.getAllFunctions(), monaco.languages.CompletionItemKind.Function, tool => tool.id, tool => tool.name, tool => { var _a; return (_a = tool.description) !== null && _a !== void 0 ? _a : ''; });
116
- }
117
162
  async triggerVariableArgumentPicker() {
118
163
  var _a;
119
164
  const inputEditor = monaco.editor.getEditors().find(editor => editor.hasTextFocus());
@@ -125,7 +170,17 @@ let ChatViewLanguageContribution = class ChatViewLanguageContribution {
125
170
  if (!model || !position) {
126
171
  return;
127
172
  }
128
- const variableName = (_a = model.getWordAtPosition(position)) === null || _a === void 0 ? void 0 : _a.word;
173
+ // // Get the word at cursor
174
+ const wordInfo = model.getWordUntilPosition(position);
175
+ // account for the variable separator character if present
176
+ let endOfWordPosition = position.column;
177
+ if (wordInfo.word === '' && this.getCharacterBeforePosition(model, position) === prompt_text_1.PromptText.VARIABLE_SEPARATOR_CHAR) {
178
+ endOfWordPosition = position.column - 1;
179
+ }
180
+ else {
181
+ return;
182
+ }
183
+ const variableName = (_a = model.getWordAtPosition({ ...position, column: endOfWordPosition })) === null || _a === void 0 ? void 0 : _a.word;
129
184
  if (!variableName) {
130
185
  return;
131
186
  }
@@ -139,10 +194,13 @@ let ChatViewLanguageContribution = class ChatViewLanguageContribution {
139
194
  }
140
195
  inputEditor.executeEdits('variable-argument-picker', [{
141
196
  range: new monaco.Range(position.lineNumber, position.column, position.lineNumber, position.column),
142
- text: prompt_text_1.PromptText.VARIABLE_SEPARATOR_CHAR + arg
197
+ text: arg
143
198
  }]);
144
199
  await this.addContextVariable(variableName, arg);
145
200
  }
201
+ getCharacterBeforePosition(model, position) {
202
+ return model.getLineContent(position.lineNumber)[position.column - 1 - 1];
203
+ }
146
204
  async addContextVariable(variableName, arg) {
147
205
  const variable = this.variableService.getVariable(variableName);
148
206
  if (!variable || !common_1.AIContextVariable.is(variable)) {
@@ -1 +1 @@
1
- {"version":3,"file":"chat-view-language-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-view-language-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-view-language-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-view-language-contribution.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "@theia/ai-chat-ui",
3
- "version": "1.59.0-next.72+f41d8efcd",
3
+ "version": "1.60.0-next.43+2a13720d2",
4
4
  "description": "Theia - AI Chat UI Extension",
5
5
  "dependencies": {
6
- "@theia/ai-chat": "1.59.0-next.72+f41d8efcd",
7
- "@theia/ai-core": "1.59.0-next.72+f41d8efcd",
8
- "@theia/core": "1.59.0-next.72+f41d8efcd",
9
- "@theia/editor": "1.59.0-next.72+f41d8efcd",
10
- "@theia/editor-preview": "1.59.0-next.72+f41d8efcd",
11
- "@theia/filesystem": "1.59.0-next.72+f41d8efcd",
12
- "@theia/monaco": "1.59.0-next.72+f41d8efcd",
6
+ "@theia/ai-chat": "1.60.0-next.43+2a13720d2",
7
+ "@theia/ai-core": "1.60.0-next.43+2a13720d2",
8
+ "@theia/ai-history": "1.60.0-next.43+2a13720d2",
9
+ "@theia/core": "1.60.0-next.43+2a13720d2",
10
+ "@theia/editor": "1.60.0-next.43+2a13720d2",
11
+ "@theia/editor-preview": "1.60.0-next.43+2a13720d2",
12
+ "@theia/filesystem": "1.60.0-next.43+2a13720d2",
13
+ "@theia/monaco": "1.60.0-next.43+2a13720d2",
13
14
  "@theia/monaco-editor-core": "1.96.302",
14
- "@theia/workspace": "1.59.0-next.72+f41d8efcd",
15
+ "@theia/workspace": "1.60.0-next.43+2a13720d2",
15
16
  "minimatch": "^5.1.0",
16
17
  "tslib": "^2.6.2",
17
18
  "uuid": "^9.0.1"
@@ -50,10 +51,10 @@
50
51
  "watch": "theiaext watch"
51
52
  },
52
53
  "devDependencies": {
53
- "@theia/ext-scripts": "1.58.0"
54
+ "@theia/ext-scripts": "1.59.0"
54
55
  },
55
56
  "nyc": {
56
57
  "extends": "../../configs/nyc.json"
57
58
  },
58
- "gitHead": "f41d8efcd4abb79167b74bf476eafc7857e97306"
59
+ "gitHead": "2a13720d2d41d8ae6ee4e34cd2dee1c656a18018"
59
60
  }
@@ -24,6 +24,8 @@ import { TabBarToolbarContribution, TabBarToolbarRegistry } from '@theia/core/li
24
24
  import { ChatViewWidget } from './chat-view-widget';
25
25
  import { Deferred } from '@theia/core/lib/common/promise-util';
26
26
  import { SecondaryWindowHandler } from '@theia/core/lib/browser/secondary-window-handler';
27
+ import { AI_SHOW_SETTINGS_COMMAND } from '@theia/ai-core/lib/browser';
28
+ import { OPEN_AI_HISTORY_VIEW } from '@theia/ai-history/lib/browser/ai-history-contribution';
27
29
 
28
30
  export const AI_CHAT_TOGGLE_COMMAND_ID = 'aiChat:toggle';
29
31
 
@@ -91,18 +93,30 @@ export class AIChatContribution extends AbstractViewContribution<ChatViewWidget>
91
93
  id: AI_CHAT_NEW_CHAT_WINDOW_COMMAND.id,
92
94
  command: AI_CHAT_NEW_CHAT_WINDOW_COMMAND.id,
93
95
  tooltip: nls.localizeByDefault('New Chat'),
94
- isVisible: widget => this.isChatViewWidget(widget)
96
+ isVisible: widget => this.withWidget(widget)
95
97
  });
96
98
  registry.registerItem({
97
99
  id: AI_CHAT_SHOW_CHATS_COMMAND.id,
98
100
  command: AI_CHAT_SHOW_CHATS_COMMAND.id,
99
101
  tooltip: nls.localizeByDefault('Show Chats...'),
100
- isVisible: widget => this.isChatViewWidget(widget),
102
+ isVisible: widget => this.withWidget(widget),
103
+ });
104
+ registry.registerItem({
105
+ id: 'chat-view.' + AI_SHOW_SETTINGS_COMMAND.id,
106
+ command: AI_SHOW_SETTINGS_COMMAND.id,
107
+ group: 'ai-settings',
108
+ priority: 3,
109
+ tooltip: nls.localize('theia/ai-chat-ui/open-settings-tooltip', 'Open AI settings...'),
110
+ isVisible: widget => this.withWidget(widget),
111
+ });
112
+ registry.registerItem({
113
+ id: 'chat-view.' + OPEN_AI_HISTORY_VIEW.id,
114
+ command: OPEN_AI_HISTORY_VIEW.id,
115
+ tooltip: nls.localize('theia/ai-chat-ui/open-history-tooltip', 'Open AI history...'),
116
+ group: 'ai-settings',
117
+ priority: 1,
118
+ isVisible: widget => this.withWidget(widget),
101
119
  });
102
- }
103
-
104
- protected isChatViewWidget(widget?: Widget): boolean {
105
- return !!widget && ChatViewWidget.ID === widget.id;
106
120
  }
107
121
 
108
122
  protected async selectChat(sessionId?: string): Promise<void> {
@@ -216,6 +216,8 @@ export class AIChatInputWidget extends ReactWidget {
216
216
  this.contextMenuRenderer.render({
217
217
  menuPath: AIChatInputWidget.CONTEXT_MENU,
218
218
  anchor: { x: event.posx, y: event.posy },
219
+ context: event.target,
220
+ args: [this.editorRef]
219
221
  });
220
222
  event.preventDefault();
221
223
  }
@@ -462,7 +464,7 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
462
464
  endLineNumber: 1,
463
465
  endColumn: 1
464
466
  },
465
- text: '@ ',
467
+ text: '@',
466
468
  }]);
467
469
  editorRef.current.getControl().setPosition({ lineNumber: 1, column: 2 });
468
470
  editorRef.current.getControl().getAction('editor.action.triggerSuggest')?.run();
@@ -137,7 +137,8 @@ export class CodePartRenderer
137
137
  this.contextMenuRenderer.render({
138
138
  menuPath: ChatViewTreeWidget.CONTEXT_MENU,
139
139
  anchor: { x: event.posx, y: event.posy },
140
- args: [node, { code }]
140
+ args: [node, { code }],
141
+ context: event.target
141
142
  });
142
143
  event.preventDefault();
143
144
  }
@@ -190,7 +191,7 @@ const InsertCodeAtCursorButton = (props: { code: string, editorManager: EditorMa
190
191
  }]);
191
192
  }
192
193
  }, [code, editorManager]);
193
- return <div className='button codicon codicon-insert' title={nls.localizeByDefault('Insert at Cursor')} role='button' onClick={insertCode}></div>;
194
+ return <div className='button codicon codicon-insert' title={nls.localizeByDefault('Insert At Cursor')} role='button' onClick={insertCode}></div>;
194
195
  };
195
196
 
196
197
  /**
@@ -439,7 +439,8 @@ export class ChatViewTreeWidget extends TreeWidget {
439
439
  this.contextMenuRenderer.render({
440
440
  menuPath: ChatViewTreeWidget.CONTEXT_MENU,
441
441
  anchor: { x: event.clientX, y: event.clientY },
442
- args: [node]
442
+ args: [node],
443
+ context: event.currentTarget
443
444
  });
444
445
  event.preventDefault();
445
446
  }
@@ -19,6 +19,7 @@ import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
19
19
  import { inject, injectable } from '@theia/core/shared/inversify';
20
20
  import { ChatViewTreeWidget, isRequestNode, isResponseNode, RequestNode, ResponseNode } from './chat-tree-view/chat-view-tree-widget';
21
21
  import { AIChatInputWidget } from './chat-input-widget';
22
+ import { MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor';
22
23
 
23
24
  export namespace ChatViewCommands {
24
25
  export const COPY_MESSAGE = Command.toDefaultLocalizedCommand({
@@ -29,10 +30,10 @@ export namespace ChatViewCommands {
29
30
  id: 'chat.copy.all',
30
31
  label: 'Copy All'
31
32
  });
32
- export const COPY_CODE = Command.toDefaultLocalizedCommand({
33
+ export const COPY_CODE = Command.toLocalizedCommand({
33
34
  id: 'chat.copy.code',
34
35
  label: 'Copy Code Block'
35
- });
36
+ }, 'theia/ai/chat-ui/copyCodeBlock');
36
37
  }
37
38
 
38
39
  @injectable()
@@ -55,6 +56,17 @@ export class ChatViewMenuContribution implements MenuContribution, CommandContri
55
56
  },
56
57
  isEnabled: (...args: unknown[]) => containsRequestOrResponseNode(args)
57
58
  });
59
+ commands.registerHandler(CommonCommands.PASTE.id, {
60
+ execute: async (...args) => {
61
+ if (hasEditorAsFirstArg(args)) {
62
+ const editor = args[0];
63
+ const range = editor.selection;
64
+ const newText = await this.clipboardService.readText();
65
+ editor.executeEdits([{ range, newText }]);
66
+ }
67
+ },
68
+ isEnabled: (...args) => hasEditorAsFirstArg(args)
69
+ });
58
70
  commands.registerCommand(ChatViewCommands.COPY_MESSAGE, {
59
71
  execute: (...args: unknown[]) => {
60
72
  if (containsRequestOrResponseNode(args)) {
@@ -133,6 +145,10 @@ export class ChatViewMenuContribution implements MenuContribution, CommandContri
133
145
 
134
146
  }
135
147
 
148
+ function hasEditorAsFirstArg(args: unknown[]): args is [MonacoEditor, ...unknown[]] {
149
+ return args.length > 0 && args[0] instanceof MonacoEditor;
150
+ }
151
+
136
152
  function extractRequestOrResponseNodes(args: unknown[]): (RequestNode | ResponseNode)[] {
137
153
  return args.filter(arg => isRequestOrResponseNode(arg)) as (RequestNode | ResponseNode)[];
138
154
  }