@codingame/monaco-vscode-xterm-addons-common 24.1.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 (26) hide show
  1. package/empty.js +1 -0
  2. package/package.json +51 -0
  3. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.d.ts +25 -0
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +315 -0
  5. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.d.ts +49 -0
  6. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +379 -0
  7. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.d.ts +17 -0
  8. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +101 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.d.ts +4 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +201 -0
  11. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.d.ts +7 -0
  12. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +79 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.d.ts +8 -0
  14. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +145 -0
  15. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.d.ts +73 -0
  16. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +468 -0
  17. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalUri.d.ts +18 -0
  18. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalUri.js +48 -0
  19. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.d.ts +80 -0
  20. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.js +583 -0
  21. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/markNavigationAddon.d.ts +64 -0
  22. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/markNavigationAddon.js +582 -0
  23. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/xtermAddonImporter.d.ts +25 -0
  24. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/xtermAddonImporter.js +43 -0
  25. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.d.ts +187 -0
  26. package/vscode/src/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.js +867 -0
@@ -0,0 +1,468 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
5
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
6
+ import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
7
+ import { PromptsStorage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService';
8
+ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
9
+ import { extUri, dirname, joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
10
+ import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
11
+ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
12
+ import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
13
+ import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
14
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
15
+ import { getCleanPromptName } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
16
+ import { PromptsType, AGENT_DOCUMENTATION_URL, INSTRUCTIONS_DOCUMENTATION_URL, PROMPT_DOCUMENTATION_URL } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
17
+ import { NEW_PROMPT_COMMAND_ID, NEW_INSTRUCTIONS_COMMAND_ID, NEW_AGENT_COMMAND_ID } from '../newPromptFileActions.js';
18
+ import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
19
+ import { askForPromptFileName } from './askForPromptName.js';
20
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
21
+ import { CancellationTokenSource, CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
22
+ import { askForPromptSourceFolder } from './askForPromptSourceFolder.js';
23
+ import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
24
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
25
+ import { PromptsConfig } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/config';
26
+ import { PromptFileRewriter } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/promptSyntax/promptFileRewriter';
27
+
28
+ function newHelpButton(type) {
29
+ const iconClass = ThemeIcon.asClassName(Codicon.question);
30
+ switch (type) {
31
+ case PromptsType.prompt:
32
+ return {
33
+ tooltip: ( localize(5794, "Show help on prompt files")),
34
+ helpURI: ( URI.parse(PROMPT_DOCUMENTATION_URL)),
35
+ iconClass
36
+ };
37
+ case PromptsType.instructions:
38
+ return {
39
+ tooltip: ( localize(5795, "Show help on instruction files")),
40
+ helpURI: ( URI.parse(INSTRUCTIONS_DOCUMENTATION_URL)),
41
+ iconClass
42
+ };
43
+ case PromptsType.agent:
44
+ return {
45
+ tooltip: ( localize(5796, "Show help on custom agent files")),
46
+ helpURI: ( URI.parse(AGENT_DOCUMENTATION_URL)),
47
+ iconClass
48
+ };
49
+ }
50
+ }
51
+ function isHelpButton(button) {
52
+ return button.helpURI !== undefined;
53
+ }
54
+ function isPromptFileItem(item) {
55
+ return item.type === 'item' && !!item.promptFileUri;
56
+ }
57
+ const NEW_PROMPT_FILE_OPTION = {
58
+ type: 'item',
59
+ label: `$(plus) ${( localize(5797, 'New prompt file...'))}`,
60
+ pickable: false,
61
+ alwaysShow: true,
62
+ buttons: [newHelpButton(PromptsType.prompt)],
63
+ commandId: NEW_PROMPT_COMMAND_ID,
64
+ };
65
+ const NEW_INSTRUCTIONS_FILE_OPTION = {
66
+ type: 'item',
67
+ label: `$(plus) ${( localize(5798, 'New instruction file...'))}`,
68
+ pickable: false,
69
+ alwaysShow: true,
70
+ buttons: [newHelpButton(PromptsType.instructions)],
71
+ commandId: NEW_INSTRUCTIONS_COMMAND_ID,
72
+ };
73
+ const UPDATE_INSTRUCTIONS_OPTION = {
74
+ type: 'item',
75
+ label: `$(refresh) ${( localize(5799, 'Generate agent instructions...'))}`,
76
+ pickable: false,
77
+ alwaysShow: true,
78
+ buttons: [newHelpButton(PromptsType.instructions)],
79
+ commandId: 'workbench.action.chat.generateInstructions',
80
+ };
81
+ const NEW_AGENT_FILE_OPTION = {
82
+ type: 'item',
83
+ label: `$(plus) ${( localize(5800, 'Create new custom agent...'))}`,
84
+ pickable: false,
85
+ alwaysShow: true,
86
+ buttons: [newHelpButton(PromptsType.agent)],
87
+ commandId: NEW_AGENT_COMMAND_ID,
88
+ };
89
+ const EDIT_BUTTON = {
90
+ tooltip: ( localize(5801, "Open in Editor")),
91
+ iconClass: ThemeIcon.asClassName(Codicon.fileCode),
92
+ };
93
+ const DELETE_BUTTON = {
94
+ tooltip: ( localize(5802, "Delete")),
95
+ iconClass: ThemeIcon.asClassName(Codicon.trash),
96
+ };
97
+ const RENAME_BUTTON = {
98
+ tooltip: ( localize(5803, "Move and/or Rename")),
99
+ iconClass: ThemeIcon.asClassName(Codicon.replace),
100
+ };
101
+ const COPY_BUTTON = {
102
+ tooltip: ( localize(5804, "Copy")),
103
+ iconClass: ThemeIcon.asClassName(Codicon.copy),
104
+ };
105
+ const MAKE_VISIBLE_BUTTON = {
106
+ tooltip: ( localize(5805, "Hidden from chat view agent picker. Click to show.")),
107
+ iconClass: ThemeIcon.asClassName(Codicon.eyeClosed),
108
+ alwaysVisible: true,
109
+ };
110
+ const MAKE_INVISIBLE_BUTTON = {
111
+ tooltip: ( localize(5806, "Hide from agent picker")),
112
+ iconClass: ThemeIcon.asClassName(Codicon.eyeClosed),
113
+ };
114
+ let PromptFilePickers = class PromptFilePickers {
115
+ constructor(_quickInputService, _openerService, _fileService, _dialogService, _commandService, _instaService, _promptsService, _labelService, _configurationService) {
116
+ this._quickInputService = _quickInputService;
117
+ this._openerService = _openerService;
118
+ this._fileService = _fileService;
119
+ this._dialogService = _dialogService;
120
+ this._commandService = _commandService;
121
+ this._instaService = _instaService;
122
+ this._promptsService = _promptsService;
123
+ this._labelService = _labelService;
124
+ this._configurationService = _configurationService;
125
+ }
126
+ async selectPromptFile(options) {
127
+ const cts = ( new CancellationTokenSource());
128
+ const quickPick = this._quickInputService.createQuickPick({ useSeparators: true });
129
+ quickPick.busy = true;
130
+ quickPick.placeholder = ( localize(5807, 'Searching file system...'));
131
+ try {
132
+ const fileOptions = await this._createPromptPickItems(options, cts.token);
133
+ const activeItem = options.resource && fileOptions.find(f => f.type === 'item' && extUri.isEqual(f.promptFileUri, options.resource));
134
+ if (activeItem) {
135
+ quickPick.activeItems = [activeItem];
136
+ }
137
+ quickPick.placeholder = options.placeholder;
138
+ quickPick.matchOnDescription = true;
139
+ quickPick.items = fileOptions;
140
+ }
141
+ finally {
142
+ quickPick.busy = false;
143
+ }
144
+ return ( new Promise(resolve => {
145
+ const disposables = ( new DisposableStore());
146
+ let isResolved = false;
147
+ let isClosed = false;
148
+ disposables.add(quickPick);
149
+ disposables.add(cts);
150
+ const refreshItems = async () => {
151
+ const active = quickPick.activeItems;
152
+ const newItems = await this._createPromptPickItems(options, CancellationToken.None);
153
+ quickPick.items = newItems;
154
+ quickPick.activeItems = active;
155
+ };
156
+ disposables.add(quickPick.onDidAccept(async () => {
157
+ const { selectedItems } = quickPick;
158
+ const { keyMods } = quickPick;
159
+ const selectedItem = selectedItems[0];
160
+ if (isPromptFileItem(selectedItem)) {
161
+ resolve({ promptFile: selectedItem.promptFileUri, keyMods: { ...keyMods } });
162
+ isResolved = true;
163
+ }
164
+ else {
165
+ if (selectedItem.commandId) {
166
+ await this._commandService.executeCommand(selectedItem.commandId);
167
+ return;
168
+ }
169
+ }
170
+ quickPick.hide();
171
+ }));
172
+ disposables.add(quickPick.onDidTriggerItemButton(async (e) => {
173
+ const shouldRefresh = await this._handleButtonClick(quickPick, e, options);
174
+ if (!isClosed && shouldRefresh) {
175
+ await refreshItems();
176
+ }
177
+ }));
178
+ disposables.add(quickPick.onDidHide(() => {
179
+ if (!quickPick.ignoreFocusOut) {
180
+ disposables.dispose();
181
+ isClosed = true;
182
+ if (!isResolved) {
183
+ resolve(undefined);
184
+ isResolved = true;
185
+ }
186
+ }
187
+ }));
188
+ quickPick.show();
189
+ }));
190
+ }
191
+ async _createPromptPickItems(options, token) {
192
+ const buttons = [];
193
+ if (options.optionEdit !== false) {
194
+ buttons.push(EDIT_BUTTON);
195
+ }
196
+ if (options.optionCopy !== false) {
197
+ buttons.push(COPY_BUTTON);
198
+ }
199
+ if (options.optionRename !== false) {
200
+ buttons.push(RENAME_BUTTON);
201
+ }
202
+ if (options.optionDelete !== false) {
203
+ buttons.push(DELETE_BUTTON);
204
+ }
205
+ const result = [];
206
+ if (options.optionNew !== false) {
207
+ result.push(...this._getNewItems(options.type));
208
+ }
209
+ let getVisibility = () => undefined;
210
+ if (options.optionVisibility) {
211
+ const disabled = this._promptsService.getDisabledPromptFiles(options.type);
212
+ getVisibility = p => !( disabled.has(p.uri));
213
+ }
214
+ const locals = await this._promptsService.listPromptFilesForStorage(options.type, PromptsStorage.local, token);
215
+ if (locals.length) {
216
+ result.push({ type: 'separator', label: ( localize(5808, "Workspace")) });
217
+ result.push(...(await Promise.all(( locals.map(l => this._createPromptPickItem(l, buttons, getVisibility(l), token))))));
218
+ }
219
+ let agentInstructionFiles = [];
220
+ if (options.type === PromptsType.instructions) {
221
+ const useNestedAgentMD = this._configurationService.getValue(PromptsConfig.USE_NESTED_AGENT_MD);
222
+ const agentInstructionUris = [
223
+ ...(await this._promptsService.listCopilotInstructionsMDs(token)),
224
+ ...(await this._promptsService.listAgentMDs(token, !!useNestedAgentMD))
225
+ ];
226
+ agentInstructionFiles = ( agentInstructionUris.map(uri => {
227
+ const folderName = this._labelService.getUriLabel(dirname(uri), { relative: true });
228
+ const shouldShowFolderPath = folderName?.toLowerCase() !== '.github';
229
+ return {
230
+ uri,
231
+ description: shouldShowFolderPath ? folderName : undefined,
232
+ storage: PromptsStorage.local,
233
+ type: options.type
234
+ };
235
+ }));
236
+ }
237
+ if (agentInstructionFiles.length) {
238
+ const agentButtons = buttons.filter(b => b !== RENAME_BUTTON);
239
+ result.push({ type: 'separator', label: ( localize(5809, "Agent Instructions")) });
240
+ result.push(...(await Promise.all(( agentInstructionFiles.map(l => this._createPromptPickItem(l, agentButtons, getVisibility(l), token))))));
241
+ }
242
+ const exts = await this._promptsService.listPromptFilesForStorage(options.type, PromptsStorage.extension, token);
243
+ if (exts.length) {
244
+ result.push({ type: 'separator', label: ( localize(5810, "Extensions")) });
245
+ const extButtons = [];
246
+ if (options.optionEdit !== false) {
247
+ extButtons.push(EDIT_BUTTON);
248
+ }
249
+ if (options.optionCopy !== false) {
250
+ extButtons.push(COPY_BUTTON);
251
+ }
252
+ result.push(...(await Promise.all(( exts.map(e => this._createPromptPickItem(e, extButtons, getVisibility(e), token))))));
253
+ }
254
+ const users = await this._promptsService.listPromptFilesForStorage(options.type, PromptsStorage.user, token);
255
+ if (users.length) {
256
+ result.push({ type: 'separator', label: ( localize(5811, "User Data")) });
257
+ result.push(...(await Promise.all(( users.map(u => this._createPromptPickItem(u, buttons, getVisibility(u), token))))));
258
+ }
259
+ return result;
260
+ }
261
+ _getNewItems(type) {
262
+ switch (type) {
263
+ case PromptsType.prompt:
264
+ return [NEW_PROMPT_FILE_OPTION];
265
+ case PromptsType.instructions:
266
+ return [NEW_INSTRUCTIONS_FILE_OPTION, UPDATE_INSTRUCTIONS_OPTION];
267
+ case PromptsType.agent:
268
+ return [NEW_AGENT_FILE_OPTION];
269
+ default:
270
+ throw ( new Error(`Unknown prompt type '${type}'.`));
271
+ }
272
+ }
273
+ async _createPromptPickItem(promptFile, buttons, visibility, token) {
274
+ const parsedPromptFile = await this._promptsService.parseNew(promptFile.uri, token).catch(() => undefined);
275
+ let promptName = parsedPromptFile?.header?.name ?? promptFile.name ?? getCleanPromptName(promptFile.uri);
276
+ const promptDescription = parsedPromptFile?.header?.description ?? promptFile.description;
277
+ let tooltip;
278
+ switch (promptFile.storage) {
279
+ case PromptsStorage.extension:
280
+ tooltip = promptFile.extension.displayName ?? promptFile.extension.id;
281
+ break;
282
+ case PromptsStorage.local:
283
+ tooltip = this._labelService.getUriLabel(dirname(promptFile.uri), { relative: true });
284
+ break;
285
+ case PromptsStorage.user:
286
+ tooltip = undefined;
287
+ break;
288
+ }
289
+ let iconClass;
290
+ if (visibility === false) {
291
+ buttons = (buttons ?? []).concat(MAKE_VISIBLE_BUTTON);
292
+ promptName = ( localize(5812, "{0} (hidden)", promptName));
293
+ tooltip = ( localize(5813, "Hidden from chat view agent picker"));
294
+ }
295
+ else if (visibility === true) {
296
+ buttons = (buttons ?? []).concat(MAKE_INVISIBLE_BUTTON);
297
+ }
298
+ return {
299
+ id: ( promptFile.uri.toString()),
300
+ type: 'item',
301
+ label: promptName,
302
+ description: promptDescription,
303
+ iconClass,
304
+ tooltip,
305
+ promptFileUri: promptFile.uri,
306
+ buttons,
307
+ };
308
+ }
309
+ async keepQuickPickOpen(quickPick, work) {
310
+ const previousIgnoreFocusOut = quickPick.ignoreFocusOut;
311
+ quickPick.ignoreFocusOut = true;
312
+ try {
313
+ return await work();
314
+ }
315
+ finally {
316
+ quickPick.ignoreFocusOut = previousIgnoreFocusOut;
317
+ quickPick.show();
318
+ }
319
+ }
320
+ async _handleButtonClick(quickPick, context, options) {
321
+ const { item, button } = context;
322
+ if (!isPromptFileItem(item)) {
323
+ if (isHelpButton(button)) {
324
+ await this._openerService.open(button.helpURI);
325
+ return false;
326
+ }
327
+ throw ( new Error(`Unknown button '${JSON.stringify(button)}'.`));
328
+ }
329
+ const value = item.promptFileUri;
330
+ if (button === EDIT_BUTTON) {
331
+ await this._openerService.open(value);
332
+ return false;
333
+ }
334
+ if (button === RENAME_BUTTON || button === COPY_BUTTON) {
335
+ return await this.keepQuickPickOpen(quickPick, async () => {
336
+ const currentFolder = dirname(value);
337
+ const isMove = button === RENAME_BUTTON && quickPick.keyMods.ctrlCmd;
338
+ const newFolder = await this._instaService.invokeFunction(askForPromptSourceFolder, options.type, currentFolder, isMove);
339
+ if (!newFolder) {
340
+ return false;
341
+ }
342
+ const newName = await this._instaService.invokeFunction(askForPromptFileName, options.type, newFolder.uri, item.label);
343
+ if (!newName) {
344
+ return false;
345
+ }
346
+ const newFile = joinPath(newFolder.uri, newName);
347
+ if (isMove) {
348
+ await this._fileService.move(value, newFile);
349
+ }
350
+ else {
351
+ await this._fileService.copy(value, newFile);
352
+ }
353
+ await this._openerService.open(newFile);
354
+ await this._instaService.createInstance(PromptFileRewriter).openAndRewriteName(newFile, getCleanPromptName(newFile), CancellationToken.None);
355
+ return true;
356
+ });
357
+ }
358
+ if (button === DELETE_BUTTON) {
359
+ return await this.keepQuickPickOpen(quickPick, async () => {
360
+ const filename = getCleanPromptName(value);
361
+ const message = ( localize(5814, "Are you sure you want to delete '{0}'?", filename));
362
+ const { confirmed } = await this._dialogService.confirm({ message });
363
+ if (!confirmed) {
364
+ return false;
365
+ }
366
+ await this._fileService.del(value);
367
+ return true;
368
+ });
369
+ }
370
+ if (button === MAKE_VISIBLE_BUTTON || button === MAKE_INVISIBLE_BUTTON) {
371
+ const disabled = this._promptsService.getDisabledPromptFiles(options.type);
372
+ if (button === MAKE_VISIBLE_BUTTON) {
373
+ disabled.delete(value);
374
+ }
375
+ else {
376
+ disabled.add(value);
377
+ }
378
+ this._promptsService.setDisabledPromptFiles(options.type, disabled);
379
+ return true;
380
+ }
381
+ throw ( new Error(`Unknown button '${JSON.stringify(button)}'.`));
382
+ }
383
+ async managePromptFiles(type, placeholder) {
384
+ const cts = ( new CancellationTokenSource());
385
+ const quickPick = this._quickInputService.createQuickPick({ useSeparators: true });
386
+ quickPick.placeholder = placeholder;
387
+ quickPick.canSelectMany = true;
388
+ quickPick.matchOnDescription = true;
389
+ quickPick.sortByLabel = false;
390
+ quickPick.busy = true;
391
+ const options = {
392
+ placeholder: '',
393
+ type,
394
+ optionNew: true,
395
+ optionEdit: true,
396
+ optionDelete: true,
397
+ optionRename: true,
398
+ optionCopy: true,
399
+ optionVisibility: false
400
+ };
401
+ try {
402
+ const items = await this._createPromptPickItems(options, cts.token);
403
+ quickPick.items = items;
404
+ }
405
+ finally {
406
+ quickPick.busy = false;
407
+ }
408
+ return ( new Promise(resolve => {
409
+ const disposables = ( new DisposableStore());
410
+ disposables.add(quickPick);
411
+ disposables.add(cts);
412
+ let isClosed = false;
413
+ let isResolved = false;
414
+ const refreshItems = async () => {
415
+ const active = quickPick.activeItems;
416
+ const newItems = await this._createPromptPickItems(options, CancellationToken.None);
417
+ quickPick.items = newItems;
418
+ quickPick.activeItems = active;
419
+ };
420
+ disposables.add(quickPick.onDidAccept(async () => {
421
+ const clickedItem = quickPick.activeItems;
422
+ if (clickedItem.length === 1 && clickedItem[0].commandId) {
423
+ const commandId = clickedItem[0].commandId;
424
+ await this.keepQuickPickOpen(quickPick, async () => {
425
+ await this._commandService.executeCommand(commandId);
426
+ });
427
+ if (!isClosed) {
428
+ await refreshItems();
429
+ }
430
+ return;
431
+ }
432
+ isResolved = true;
433
+ resolve(true);
434
+ quickPick.hide();
435
+ }));
436
+ disposables.add(quickPick.onDidTriggerItemButton(async (e) => {
437
+ const shouldRefresh = await this._handleButtonClick(quickPick, e, options);
438
+ if (!isClosed && shouldRefresh) {
439
+ await refreshItems();
440
+ }
441
+ }));
442
+ disposables.add(quickPick.onDidHide(() => {
443
+ if (!quickPick.ignoreFocusOut) {
444
+ disposables.dispose();
445
+ isClosed = true;
446
+ if (!isResolved) {
447
+ resolve(false);
448
+ isResolved = true;
449
+ }
450
+ }
451
+ }));
452
+ quickPick.show();
453
+ }));
454
+ }
455
+ };
456
+ PromptFilePickers = ( __decorate([
457
+ ( __param(0, IQuickInputService)),
458
+ ( __param(1, IOpenerService)),
459
+ ( __param(2, IFileService)),
460
+ ( __param(3, IDialogService)),
461
+ ( __param(4, ICommandService)),
462
+ ( __param(5, IInstantiationService)),
463
+ ( __param(6, IPromptsService)),
464
+ ( __param(7, ILabelService)),
465
+ ( __param(8, IConfigurationService))
466
+ ], PromptFilePickers));
467
+
468
+ export { PromptFilePickers };
@@ -0,0 +1,18 @@
1
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
+ import { ITerminalInstance } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal";
3
+ export interface ITerminalUriMetadata {
4
+ title?: string;
5
+ commandId?: string;
6
+ commandLine?: string;
7
+ }
8
+ export declare function parseTerminalUri(resource: URI): ITerminalIdentifier;
9
+ export declare function getTerminalUri(workspaceId: string, instanceId: number, title?: string, commandId?: string): URI;
10
+ export interface ITerminalIdentifier {
11
+ workspaceId: string;
12
+ instanceId: number | undefined;
13
+ }
14
+ export interface IPartialDragEvent {
15
+ dataTransfer: Pick<DataTransfer, "getData"> | null;
16
+ }
17
+ export declare function getTerminalResourcesFromDragEvent(event: IPartialDragEvent): URI[] | undefined;
18
+ export declare function getInstanceFromResource<T extends Pick<ITerminalInstance, "resource">>(instances: T[], resource: URI | undefined): T | undefined;
@@ -0,0 +1,48 @@
1
+
2
+ import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
3
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
4
+ import { TerminalDataTransfers } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/terminal/browser/terminal';
5
+
6
+ function parseTerminalUri(resource) {
7
+ const [, workspaceId, instanceId] = resource.path.split('/');
8
+ if (!workspaceId || !Number.parseInt(instanceId)) {
9
+ throw ( new Error(`Could not parse terminal uri for resource ${resource}`));
10
+ }
11
+ return { workspaceId, instanceId: Number.parseInt(instanceId) };
12
+ }
13
+ function getTerminalUri(workspaceId, instanceId, title, commandId) {
14
+ const params = ( new URLSearchParams());
15
+ if (commandId) {
16
+ params.set('command', commandId);
17
+ }
18
+ return ( URI.from({
19
+ scheme: Schemas.vscodeTerminal,
20
+ path: `/${workspaceId}/${instanceId}`,
21
+ fragment: title || undefined,
22
+ query: commandId ? ( params.toString()) : undefined
23
+ }));
24
+ }
25
+ function getTerminalResourcesFromDragEvent(event) {
26
+ const resources = event.dataTransfer?.getData(TerminalDataTransfers.Terminals);
27
+ if (resources) {
28
+ const json = JSON.parse(resources);
29
+ const result = [];
30
+ for (const entry of json) {
31
+ result.push(( URI.parse(entry)));
32
+ }
33
+ return result.length === 0 ? undefined : result;
34
+ }
35
+ return undefined;
36
+ }
37
+ function getInstanceFromResource(instances, resource) {
38
+ if (resource) {
39
+ for (const instance of instances) {
40
+ if (instance.resource.path === resource.path) {
41
+ return instance;
42
+ }
43
+ }
44
+ }
45
+ return undefined;
46
+ }
47
+
48
+ export { getInstanceFromResource, getTerminalResourcesFromDragEvent, getTerminalUri, parseTerminalUri };
@@ -0,0 +1,80 @@
1
+ import type { IDecoration, ITerminalAddon, Terminal } from "@xterm/xterm";
2
+ import { IAction } from "@codingame/monaco-vscode-api/vscode/vs/base/common/actions";
3
+ import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
4
+ import { IAccessibilitySignalService } from "@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service";
5
+ import { IClipboardService } from "@codingame/monaco-vscode-api/vscode/vs/platform/clipboard/common/clipboardService.service";
6
+ import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
7
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
8
+ import { IContextMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service";
9
+ import { INotificationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service";
10
+ import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
11
+ import { IQuickInputService } from "@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service";
12
+ import { IMarkProperties, ITerminalCapabilityStore, ITerminalCommand } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/capabilities/capabilities";
13
+ import { type IDecorationAddon } from "@codingame/monaco-vscode-api/vscode/vs/platform/terminal/common/terminal";
14
+ import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
15
+ import { ILifecycleService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service";
16
+ import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
17
+ import { IChatContextPickService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatContextPickService.service";
18
+ import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
19
+ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
20
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
21
+ export declare class DecorationAddon extends Disposable implements ITerminalAddon, IDecorationAddon {
22
+ private readonly _resource;
23
+ private readonly _capabilities;
24
+ private readonly _clipboardService;
25
+ private readonly _contextMenuService;
26
+ private readonly _configurationService;
27
+ private readonly _themeService;
28
+ private readonly _openerService;
29
+ private readonly _quickInputService;
30
+ private readonly _commandService;
31
+ private readonly _accessibilitySignalService;
32
+ private readonly _notificationService;
33
+ private readonly _hoverService;
34
+ private readonly _contextPickService;
35
+ private readonly _chatWidgetService;
36
+ private readonly _instantiationService;
37
+ protected _terminal: Terminal | undefined;
38
+ private _capabilityDisposables;
39
+ private _decorations;
40
+ private _placeholderDecoration;
41
+ private _showGutterDecorations?;
42
+ private _showOverviewRulerDecorations?;
43
+ private readonly _registeredMenuItems;
44
+ private readonly _onDidRequestRunCommand;
45
+ readonly onDidRequestRunCommand: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<{
46
+ command: ITerminalCommand;
47
+ noNewLine?: boolean;
48
+ }>;
49
+ private readonly _onDidRequestCopyAsHtml;
50
+ readonly onDidRequestCopyAsHtml: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<{
51
+ command: ITerminalCommand;
52
+ }>;
53
+ constructor(_resource: URI | undefined, _capabilities: ITerminalCapabilityStore, _clipboardService: IClipboardService, _contextMenuService: IContextMenuService, _configurationService: IConfigurationService, _themeService: IThemeService, _openerService: IOpenerService, _quickInputService: IQuickInputService, lifecycleService: ILifecycleService, _commandService: ICommandService, _accessibilitySignalService: IAccessibilitySignalService, _notificationService: INotificationService, _hoverService: IHoverService, _contextPickService: IChatContextPickService, _chatWidgetService: IChatWidgetService, _instantiationService: IInstantiationService);
54
+ private _createCapabilityDisposables;
55
+ private _removeCapabilityDisposables;
56
+ registerMarkDecoration(mark: IMarkProperties): IDecoration | undefined;
57
+ private _updateDecorationVisibility;
58
+ private _disposeAllDecorations;
59
+ private _updateGutterDecorationVisibility;
60
+ private _updateCommandDecorationVisibility;
61
+ refreshLayouts(): void;
62
+ private _refreshStyles;
63
+ private _dispose;
64
+ private _clearPlaceholder;
65
+ clearDecorations(): void;
66
+ private _attachToCommandCapability;
67
+ private _getCommandDetectionListeners;
68
+ activate(terminal: Terminal): void;
69
+ registerCommandDecoration(command?: ITerminalCommand, beforeCommandExecution?: boolean, markProperties?: IMarkProperties): IDecoration | undefined;
70
+ registerMenuItems(command: ITerminalCommand, items: IAction[]): IDisposable;
71
+ private _createDisposables;
72
+ private _createHover;
73
+ private _updateClasses;
74
+ private _createContextMenu;
75
+ private _getContextMenuActions;
76
+ private _getCommandActions;
77
+ private _createAttachToChatAction;
78
+ private _showToggleVisibilityQuickPick;
79
+ private _getDecorationCssColor;
80
+ }