erosolar-cli 1.7.194 → 1.7.196
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/agent.d.ts +6 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +10 -1
- package/dist/core/agent.js.map +1 -1
- package/dist/core/errors/errorUtils.d.ts +87 -0
- package/dist/core/errors/errorUtils.d.ts.map +1 -0
- package/dist/core/errors/errorUtils.js +158 -0
- package/dist/core/errors/errorUtils.js.map +1 -0
- package/dist/core/resultVerification.js.map +1 -1
- package/dist/core/toolValidation.d.ts +117 -0
- package/dist/core/toolValidation.d.ts.map +1 -0
- package/dist/core/toolValidation.js +282 -0
- package/dist/core/toolValidation.js.map +1 -0
- package/dist/core/types/utilityTypes.d.ts +192 -0
- package/dist/core/types/utilityTypes.d.ts.map +1 -0
- package/dist/core/types/utilityTypes.js +272 -0
- package/dist/core/types/utilityTypes.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +9 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +69 -1
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +5 -0
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +1 -0
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +9 -2
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/terminalInputAdapter.d.ts +4 -0
- package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
- package/dist/shell/terminalInputAdapter.js +6 -0
- package/dist/shell/terminalInputAdapter.js.map +1 -1
- package/dist/tools/planningTools.d.ts +1 -0
- package/dist/tools/planningTools.d.ts.map +1 -1
- package/dist/tools/planningTools.js +48 -0
- package/dist/tools/planningTools.js.map +1 -1
- package/dist/ui/display.d.ts +5 -49
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +36 -335
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +17 -0
- package/dist/ui/toolDisplay.js.map +1 -1
- package/dist/utils/planFormatter.d.ts +34 -0
- package/dist/utils/planFormatter.d.ts.map +1 -0
- package/dist/utils/planFormatter.js +140 -0
- package/dist/utils/planFormatter.js.map +1 -0
- package/package.json +2 -2
- package/dist/shell/bracketedPasteManager.d.ts +0 -128
- package/dist/shell/bracketedPasteManager.d.ts.map +0 -1
- package/dist/shell/bracketedPasteManager.enhanced.d.ts +0 -2
- package/dist/shell/bracketedPasteManager.enhanced.d.ts.map +0 -1
- package/dist/shell/bracketedPasteManager.enhanced.js +0 -4
- package/dist/shell/bracketedPasteManager.enhanced.js.map +0 -1
- package/dist/shell/bracketedPasteManager.js +0 -372
- package/dist/shell/bracketedPasteManager.js.map +0 -1
- package/dist/shell/chatBox.d.ts +0 -228
- package/dist/shell/chatBox.d.ts.map +0 -1
- package/dist/shell/chatBox.js +0 -811
- package/dist/shell/chatBox.js.map +0 -1
- package/dist/shell/unifiedChatBox.d.ts +0 -194
- package/dist/shell/unifiedChatBox.d.ts.map +0 -1
- package/dist/shell/unifiedChatBox.js +0 -585
- package/dist/shell/unifiedChatBox.js.map +0 -1
- package/dist/ui/persistentPrompt.d.ts +0 -545
- package/dist/ui/persistentPrompt.d.ts.map +0 -1
- package/dist/ui/persistentPrompt.js +0 -1529
- package/dist/ui/persistentPrompt.js.map +0 -1
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
const ANSI_REGEX = /\u001B\[[0-9;]*m/g;
|
|
2
|
+
const DEFAULT_WIDTH = 78;
|
|
3
|
+
const MIN_WIDTH = 42;
|
|
4
|
+
const MAX_WIDTH = 100;
|
|
5
|
+
export function formatPlan(plan, options = {}) {
|
|
6
|
+
const width = clampWidth(options.width);
|
|
7
|
+
const heading = (options.heading ?? 'Updated Plan').trim() || 'Updated Plan';
|
|
8
|
+
const bullet = (options.bullet ?? '•').trim() || '•';
|
|
9
|
+
const items = normalizePlanItems(plan);
|
|
10
|
+
const lines = [`${bullet} ${heading}`];
|
|
11
|
+
if (!items.length) {
|
|
12
|
+
lines.push(' (no steps provided)');
|
|
13
|
+
return lines.join('\n');
|
|
14
|
+
}
|
|
15
|
+
const statusSymbols = buildStatusSymbols(options.statusSymbols);
|
|
16
|
+
items.forEach((item, index) => {
|
|
17
|
+
const prefix = `${index === 0 ? ' └ ' : ' '}${statusSymbols[item.status]} `;
|
|
18
|
+
lines.push(...wrapPlanText(item.step, prefix, width));
|
|
19
|
+
});
|
|
20
|
+
return lines.join('\n');
|
|
21
|
+
}
|
|
22
|
+
export function normalizePlanItems(plan) {
|
|
23
|
+
if (!Array.isArray(plan)) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
const items = [];
|
|
27
|
+
for (const entry of plan) {
|
|
28
|
+
if (entry === null || entry === undefined) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (typeof entry === 'string' || typeof entry === 'number' || typeof entry === 'boolean') {
|
|
32
|
+
const step = String(entry).trim();
|
|
33
|
+
if (!step) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
items.push({ step, status: 'pending' });
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (typeof entry === 'object') {
|
|
40
|
+
const rawStep = entry.step;
|
|
41
|
+
const step = typeof rawStep === 'string'
|
|
42
|
+
? rawStep.trim()
|
|
43
|
+
: typeof rawStep === 'number' || typeof rawStep === 'boolean'
|
|
44
|
+
? String(rawStep).trim()
|
|
45
|
+
: '';
|
|
46
|
+
if (!step) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const status = normalizeStatus(entry.status);
|
|
50
|
+
items.push({ step, status });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return items;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Wrap plan text with a prefix, preserving indentation for continuations.
|
|
57
|
+
*/
|
|
58
|
+
export function wrapPlanText(text, prefix, width) {
|
|
59
|
+
const normalizedWidth = clampWidth(width);
|
|
60
|
+
const cleanPrefix = prefix ?? '';
|
|
61
|
+
const prefixLength = visibleLength(cleanPrefix);
|
|
62
|
+
const available = Math.max(12, normalizedWidth - prefixLength);
|
|
63
|
+
const wrapped = wrapText(text, available);
|
|
64
|
+
if (!wrapped.length) {
|
|
65
|
+
return [cleanPrefix.trimEnd()];
|
|
66
|
+
}
|
|
67
|
+
const indent = ' '.repeat(prefixLength);
|
|
68
|
+
return wrapped.map((line, index) => (index === 0 ? `${cleanPrefix}${line}` : `${indent}${line}`));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Determine the available plan width using the terminal size if available.
|
|
72
|
+
*/
|
|
73
|
+
export function resolvePlanWidth(padding = 4) {
|
|
74
|
+
if (typeof process !== 'undefined' &&
|
|
75
|
+
typeof process.stdout?.columns === 'number' &&
|
|
76
|
+
Number.isFinite(process.stdout.columns)) {
|
|
77
|
+
return Math.max(0, process.stdout.columns - padding);
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
function buildStatusSymbols(overrides) {
|
|
82
|
+
return {
|
|
83
|
+
pending: overrides?.pending?.trim() || '□',
|
|
84
|
+
in_progress: overrides?.in_progress?.trim() || '◐',
|
|
85
|
+
completed: overrides?.completed?.trim() || '✔',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function normalizeStatus(status) {
|
|
89
|
+
if (typeof status !== 'string') {
|
|
90
|
+
return 'pending';
|
|
91
|
+
}
|
|
92
|
+
const normalized = status.trim().toLowerCase().replace(/[\s-]+/g, '_');
|
|
93
|
+
if (normalized === 'completed' || normalized === 'complete' || normalized === 'done') {
|
|
94
|
+
return 'completed';
|
|
95
|
+
}
|
|
96
|
+
if (normalized === 'in_progress' || normalized === 'inprogress') {
|
|
97
|
+
return 'in_progress';
|
|
98
|
+
}
|
|
99
|
+
return 'pending';
|
|
100
|
+
}
|
|
101
|
+
function wrapText(text, width) {
|
|
102
|
+
const normalized = (text || '').trim();
|
|
103
|
+
if (!normalized) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
const words = normalized.split(/\s+/);
|
|
107
|
+
const lines = [];
|
|
108
|
+
let current = words.shift() ?? '';
|
|
109
|
+
for (const word of words) {
|
|
110
|
+
const candidate = `${current} ${word}`;
|
|
111
|
+
if (visibleLength(candidate) > width && current) {
|
|
112
|
+
lines.push(current);
|
|
113
|
+
current = word;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
current = candidate;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (current) {
|
|
120
|
+
lines.push(current);
|
|
121
|
+
}
|
|
122
|
+
return lines;
|
|
123
|
+
}
|
|
124
|
+
function clampWidth(width) {
|
|
125
|
+
if (typeof width !== 'number' || !Number.isFinite(width)) {
|
|
126
|
+
return DEFAULT_WIDTH;
|
|
127
|
+
}
|
|
128
|
+
const normalized = Math.floor(width);
|
|
129
|
+
if (normalized < MIN_WIDTH) {
|
|
130
|
+
return MIN_WIDTH;
|
|
131
|
+
}
|
|
132
|
+
if (normalized > MAX_WIDTH) {
|
|
133
|
+
return MAX_WIDTH;
|
|
134
|
+
}
|
|
135
|
+
return normalized;
|
|
136
|
+
}
|
|
137
|
+
function visibleLength(value) {
|
|
138
|
+
return value.replace(ANSI_REGEX, '').length;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=planFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planFormatter.js","sourceRoot":"","sources":["../../src/utils/planFormatter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "erosolar-cli",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.196",
|
|
4
4
|
"description": "Unified AI agent framework for the command line - Multi-provider support with schema-driven tools, code intelligence, and transparent reasoning",
|
|
5
5
|
"main": "dist/bin/erosolar.js",
|
|
6
6
|
"type": "module",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"clean": "node -e \"const { rmSync } = require('fs'); try { rmSync('dist', { recursive: true, force: true, maxRetries: 5 }); } catch (error) { if (error && error.code !== 'ENOENT') throw error; }\"",
|
|
35
35
|
"build": "tsc",
|
|
36
36
|
"build:watch": "tsc --watch",
|
|
37
|
-
"
|
|
37
|
+
"prepublishOnly": "npm run build",
|
|
38
38
|
"postbuild": "node scripts/postbuild.mjs",
|
|
39
39
|
"dev": "node --loader ts-node/esm src/bin/erosolar.ts",
|
|
40
40
|
"dev:watch": "node --watch --loader ts-node/esm src/bin/erosolar.ts",
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bracketed paste manager for handling terminal paste operations.
|
|
3
|
-
*
|
|
4
|
-
* This class handles the bracketed paste mode in terminals, which allows
|
|
5
|
-
* pasted text to be distinguished from typed input. This is particularly
|
|
6
|
-
* useful for handling multi-line pastes and preventing unwanted execution
|
|
7
|
-
* of commands during paste operations.
|
|
8
|
-
*/
|
|
9
|
-
export interface BracketedPasteResult {
|
|
10
|
-
handled: boolean;
|
|
11
|
-
result?: string;
|
|
12
|
-
/** True if we're still accumulating paste content */
|
|
13
|
-
isPending?: boolean;
|
|
14
|
-
/** Number of lines accumulated so far (for display) */
|
|
15
|
-
lineCount?: number;
|
|
16
|
-
/** Preview of the content (first line truncated) */
|
|
17
|
-
preview?: string;
|
|
18
|
-
}
|
|
19
|
-
export interface MultiLinePasteState {
|
|
20
|
-
/** Full content accumulated from multi-line paste */
|
|
21
|
-
content: string;
|
|
22
|
-
/** Number of lines in the paste */
|
|
23
|
-
lineCount: number;
|
|
24
|
-
/** First line preview (truncated for display) */
|
|
25
|
-
firstLinePreview: string;
|
|
26
|
-
/** Last line preview (truncated for display) */
|
|
27
|
-
lastLinePreview: string;
|
|
28
|
-
}
|
|
29
|
-
export declare class BracketedPasteManager {
|
|
30
|
-
private enabled;
|
|
31
|
-
private inPaste;
|
|
32
|
-
private pasteBuffer;
|
|
33
|
-
/** Tracks accumulated multi-line input even without bracketed paste support */
|
|
34
|
-
private multiLineBuffer;
|
|
35
|
-
private multiLineMode;
|
|
36
|
-
/** Raw data buffer for capturing complete bracketed paste content */
|
|
37
|
-
private rawPasteBuffer;
|
|
38
|
-
/** Callback for when raw paste is complete */
|
|
39
|
-
private onRawPasteComplete;
|
|
40
|
-
/** Whether we're currently capturing raw data */
|
|
41
|
-
private capturingRaw;
|
|
42
|
-
/** Flag set when paste was just captured - used to ignore readline line events */
|
|
43
|
-
private pasteJustCaptured;
|
|
44
|
-
/** Number of lines in the paste that was just captured */
|
|
45
|
-
private pasteJustCapturedLineCount;
|
|
46
|
-
private static readonly START_MARKER;
|
|
47
|
-
private static readonly END_MARKER;
|
|
48
|
-
constructor(enabled: boolean);
|
|
49
|
-
/**
|
|
50
|
-
* Process raw data from stdin before readline handles it.
|
|
51
|
-
* This intercepts bracketed paste content and captures it in full.
|
|
52
|
-
* Returns true if the data was consumed (should not be passed to readline).
|
|
53
|
-
*/
|
|
54
|
-
processRawData(data: string): {
|
|
55
|
-
consumed: boolean;
|
|
56
|
-
passThrough?: string;
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Set callback for when a complete paste is captured via raw data processing
|
|
60
|
-
*/
|
|
61
|
-
setRawPasteCallback(callback: (content: string) => void): void;
|
|
62
|
-
/**
|
|
63
|
-
* Check if currently capturing raw paste data
|
|
64
|
-
*/
|
|
65
|
-
isCapturingRaw(): boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Check if paste was just captured and needs to ignore readline line events.
|
|
68
|
-
* This returns true if paste was captured, and decrements the line counter.
|
|
69
|
-
* When counter reaches 0, future calls return false.
|
|
70
|
-
*/
|
|
71
|
-
shouldIgnoreLineEvent(): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* Clear the paste-just-captured flag (call when user explicitly submits)
|
|
74
|
-
*/
|
|
75
|
-
clearPasteJustCaptured(): void;
|
|
76
|
-
/**
|
|
77
|
-
* Get current raw buffer size (for display)
|
|
78
|
-
*/
|
|
79
|
-
getRawBufferLineCount(): number;
|
|
80
|
-
/**
|
|
81
|
-
* Get preview of raw buffer content
|
|
82
|
-
*/
|
|
83
|
-
getRawBufferPreview(): string;
|
|
84
|
-
/**
|
|
85
|
-
* Process input text, handling bracketed paste sequences
|
|
86
|
-
*/
|
|
87
|
-
process(input: string): BracketedPasteResult;
|
|
88
|
-
/**
|
|
89
|
-
* Process input when bracketed paste is not enabled.
|
|
90
|
-
*
|
|
91
|
-
* IMPORTANT: We no longer use timing heuristics for paste detection.
|
|
92
|
-
* The timing-based approach caused issues where fast typing was incorrectly
|
|
93
|
-
* detected as paste, causing follow-up prompts to be held indefinitely.
|
|
94
|
-
*
|
|
95
|
-
* Instead, we only detect pastes that contain embedded newlines (which
|
|
96
|
-
* is how terminal emulators typically deliver pasted multi-line content).
|
|
97
|
-
*/
|
|
98
|
-
private processWithoutBracketed;
|
|
99
|
-
/**
|
|
100
|
-
* Generate a preview string for multi-line content
|
|
101
|
-
*/
|
|
102
|
-
private getPreview;
|
|
103
|
-
/**
|
|
104
|
-
* Get current multi-line state for display purposes
|
|
105
|
-
*/
|
|
106
|
-
getMultiLineState(): MultiLinePasteState | null;
|
|
107
|
-
/**
|
|
108
|
-
* Format a multi-line paste as a collapsed block for display
|
|
109
|
-
*/
|
|
110
|
-
static formatCollapsedBlock(content: string, maxPreviewLength?: number): string;
|
|
111
|
-
/**
|
|
112
|
-
* Check if currently processing a paste
|
|
113
|
-
*/
|
|
114
|
-
isInPaste(): boolean;
|
|
115
|
-
/**
|
|
116
|
-
* Get the current paste buffer
|
|
117
|
-
*/
|
|
118
|
-
getPasteBuffer(): string[];
|
|
119
|
-
/**
|
|
120
|
-
* Finalize any pending multi-line input
|
|
121
|
-
*/
|
|
122
|
-
finalize(): string | null;
|
|
123
|
-
/**
|
|
124
|
-
* Reset the paste state
|
|
125
|
-
*/
|
|
126
|
-
reset(): void;
|
|
127
|
-
}
|
|
128
|
-
//# sourceMappingURL=bracketedPasteManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bracketedPasteManager.d.ts","sourceRoot":"","sources":["../../src/shell/bracketedPasteManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAgB;IAEnC,+EAA+E;IAC/E,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAS;IAE9B,qEAAqE;IACrE,OAAO,CAAC,cAAc,CAAM;IAC5B,8CAA8C;IAC9C,OAAO,CAAC,kBAAkB,CAA4C;IACtE,iDAAiD;IACjD,OAAO,CAAC,YAAY,CAAS;IAC7B,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAAS;IAClC,0DAA0D;IAC1D,OAAO,CAAC,0BAA0B,CAAK;IAEvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAiB;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiB;gBAEvC,OAAO,EAAE,OAAO;IAI5B;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAiFzE;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;;;OAIG;IACH,qBAAqB,IAAI,OAAO;IAWhC;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAK9B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAK/B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAM7B;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB;IAyH5C;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB;;OAEG;IACH,iBAAiB,IAAI,mBAAmB,GAAG,IAAI;IAmB/C;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAE,MAAW,GAAG,MAAM;IAcnF;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,IAAI;IAUzB;;OAEG;IACH,KAAK,IAAI,IAAI;CAUd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bracketedPasteManager.enhanced.d.ts","sourceRoot":"","sources":["../../src/shell/bracketedPasteManager.enhanced.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bracketedPasteManager.enhanced.js","sourceRoot":"","sources":["../../src/shell/bracketedPasteManager.enhanced.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,mFAAmF;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|