agent-relay 10.1.0 → 10.2.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.
- package/dist/cli/lib/attach-drive.d.ts +72 -9
- package/dist/cli/lib/attach-drive.d.ts.map +1 -1
- package/dist/cli/lib/attach-drive.js +390 -94
- package/dist/cli/lib/attach-drive.js.map +1 -1
- package/dist/cli/lib/attach-passthrough.d.ts +22 -0
- package/dist/cli/lib/attach-passthrough.d.ts.map +1 -1
- package/dist/cli/lib/attach-passthrough.js +260 -58
- package/dist/cli/lib/attach-passthrough.js.map +1 -1
- package/dist/cli/lib/attach-view.d.ts +23 -4
- package/dist/cli/lib/attach-view.d.ts.map +1 -1
- package/dist/cli/lib/attach-view.js +77 -33
- package/dist/cli/lib/attach-view.js.map +1 -1
- package/dist/cli/lib/attach.d.ts +292 -10
- package/dist/cli/lib/attach.d.ts.map +1 -1
- package/dist/cli/lib/attach.js +496 -15
- package/dist/cli/lib/attach.js.map +1 -1
- package/package.json +7 -7
package/dist/cli/lib/attach.d.ts
CHANGED
|
@@ -37,26 +37,146 @@ export interface AttachSnapshotResult {
|
|
|
37
37
|
cols?: number;
|
|
38
38
|
/** Cursor position `[row, col]`, 1-indexed, if the call succeeded. */
|
|
39
39
|
cursor?: [number, number];
|
|
40
|
+
/**
|
|
41
|
+
* Cumulative per-worker byte offset the grid had consumed when the
|
|
42
|
+
* snapshot was captured. Used to reconcile the snapshot against buffered
|
|
43
|
+
* `worker_stream` chunks (drop `offset <= this`, apply the rest).
|
|
44
|
+
* `undefined` on brokers that predate stream-offset support.
|
|
45
|
+
*/
|
|
46
|
+
offset?: number;
|
|
40
47
|
/** Human-readable detail for error variants. */
|
|
41
48
|
message?: string;
|
|
42
49
|
}
|
|
43
50
|
/**
|
|
44
51
|
* Fetch a worker's current visible screen as ANSI reproduction bytes and
|
|
45
|
-
* write them to the caller's output.
|
|
46
|
-
* subscribing to the WebSocket event stream so the user sees the agent's
|
|
47
|
-
* current state before live deltas start arriving.
|
|
52
|
+
* write them to the caller's output.
|
|
48
53
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* and the
|
|
54
|
+
* The attach clients open and subscribe to the WebSocket event stream
|
|
55
|
+
* *first*, buffer incoming `worker_stream` chunks, then call this to paint
|
|
56
|
+
* the snapshot, and finally reconcile the buffer against the snapshot's
|
|
57
|
+
* `offset` (see {@link StreamSyncBuffer}). That ordering closes the gap
|
|
58
|
+
* between the snapshot and the live stream: no output emitted around attach
|
|
59
|
+
* time is lost, and the per-worker byte offset lets the client drop exactly
|
|
60
|
+
* the chunks the snapshot already reflects so nothing is double-applied.
|
|
61
|
+
*
|
|
62
|
+
* On brokers that don't report an `offset`, the clients fall back to
|
|
63
|
+
* snapshot-authoritative behaviour (paint the snapshot, discard chunks that
|
|
64
|
+
* arrived before it), which trades a tiny gap for no duplication — the same
|
|
65
|
+
* bias the pre-offset code had.
|
|
55
66
|
*
|
|
56
67
|
* @returns A status describing the outcome. `ok` means the screen was
|
|
57
|
-
* rendered; other variants carry a message the caller can surface.
|
|
68
|
+
* rendered; other variants carry a message the caller can surface. `offset`
|
|
69
|
+
* is populated on `ok` when the broker reports one.
|
|
58
70
|
*/
|
|
59
71
|
export declare function captureAndRenderSnapshot(connection: AttachSnapshotConnection, agentName: string, deps: AttachSnapshotDeps): Promise<AttachSnapshotResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Reconciles a visible-screen snapshot with the live `worker_stream` byte
|
|
74
|
+
* stream so an attaching client neither loses nor double-applies output
|
|
75
|
+
* around attach time.
|
|
76
|
+
*
|
|
77
|
+
* Usage (subscribe-first):
|
|
78
|
+
*
|
|
79
|
+
* 1. Open + subscribe the event WS. Feed every `worker_stream` chunk to
|
|
80
|
+
* {@link push} as it arrives, applying the chunk only when `push`
|
|
81
|
+
* returns `true`.
|
|
82
|
+
* 2. Fetch and paint the snapshot.
|
|
83
|
+
* 3. Call {@link reconcile} with the snapshot's `offset`. Apply the
|
|
84
|
+
* returned chunks in order. From then on, `push` returns `true` for
|
|
85
|
+
* every chunk (live pass-through).
|
|
86
|
+
*
|
|
87
|
+
* Correlation rule: the snapshot reflects every byte with offset `<=`
|
|
88
|
+
* `snapshotOffset`. A buffered chunk carries the cumulative byte offset at
|
|
89
|
+
* its *end*; if that end offset is `<=` the snapshot offset the chunk is
|
|
90
|
+
* already on screen and is dropped, otherwise it is applied.
|
|
91
|
+
*
|
|
92
|
+
* The snapshot offset is retained as a post-reconcile *watermark*: once
|
|
93
|
+
* buffering ends, {@link push} keeps suppressing any live frame whose end
|
|
94
|
+
* offset is `<=` the watermark. This closes a broker-side race — the PTY
|
|
95
|
+
* reader advances `consumed_offset` and the grid *before* the decoded chunk
|
|
96
|
+
* reaches the broadcast queue, so a chunk with `offset <= snapshotOffset`
|
|
97
|
+
* can still arrive *after* the client reconciles. Offsets are cumulative and
|
|
98
|
+
* monotonic, so the watermark drops exactly those already-painted stragglers
|
|
99
|
+
* without touching genuinely new output.
|
|
100
|
+
*/
|
|
101
|
+
export declare class StreamSyncBuffer {
|
|
102
|
+
private buffering;
|
|
103
|
+
private readonly buffered;
|
|
104
|
+
/**
|
|
105
|
+
* Post-reconcile suppression watermark: the snapshot offset the grid had
|
|
106
|
+
* already painted. `undefined` until {@link reconcile} runs with a defined
|
|
107
|
+
* offset (or forever, on brokers without offset support / after
|
|
108
|
+
* {@link flushAll}), in which case no post-reconcile suppression happens.
|
|
109
|
+
*/
|
|
110
|
+
private watermark;
|
|
111
|
+
/**
|
|
112
|
+
* Record a live `worker_stream` chunk. Returns `true` when the caller
|
|
113
|
+
* should apply the chunk immediately, `false` when the chunk must be held
|
|
114
|
+
* or dropped. While buffering, the chunk is retained for {@link reconcile}.
|
|
115
|
+
* After reconcile, a chunk whose end offset is `<=` the snapshot watermark
|
|
116
|
+
* is a late-arriving straggler the snapshot already painted and is
|
|
117
|
+
* suppressed (see the class docstring's race note); everything else passes
|
|
118
|
+
* through live.
|
|
119
|
+
*/
|
|
120
|
+
push(chunk: string, offset: number | undefined): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Reconcile the buffered chunks against the painted snapshot's offset and
|
|
123
|
+
* return the chunks to apply, in order. Switches to live pass-through and
|
|
124
|
+
* arms the post-reconcile watermark (see {@link push}).
|
|
125
|
+
*
|
|
126
|
+
* When `snapshotOffset` is `undefined` (broker without offset support) all
|
|
127
|
+
* buffered chunks are discarded: they arrived before the snapshot was
|
|
128
|
+
* painted, so dropping them matches the snapshot-authoritative fallback
|
|
129
|
+
* and avoids double-painting what the snapshot already shows. No watermark
|
|
130
|
+
* is armed in that case — there is no offset to compare live frames to.
|
|
131
|
+
*/
|
|
132
|
+
reconcile(snapshotOffset: number | undefined): string[];
|
|
133
|
+
/**
|
|
134
|
+
* Return every buffered chunk unchanged and switch to live pass-through.
|
|
135
|
+
* Used when no snapshot was painted (transient snapshot failure): there is
|
|
136
|
+
* nothing to reconcile against, so applying everything preserves output
|
|
137
|
+
* rather than dropping the buffered live stream.
|
|
138
|
+
*/
|
|
139
|
+
flushAll(): string[];
|
|
140
|
+
/** True while chunks are still being buffered (before reconcile). */
|
|
141
|
+
get isBuffering(): boolean;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Conservative terminal-reset control sequence emitted on detach (see #1247).
|
|
145
|
+
*
|
|
146
|
+
* A drive/view/passthrough session paints the agent's snapshot (which now
|
|
147
|
+
* re-emits terminal modes) and then relays the live stream, either of which can
|
|
148
|
+
* leave the *local* terminal in application-cursor-keys, mouse-reporting,
|
|
149
|
+
* bracketed-paste, or alt-screen mode. Without a reset on detach the user is
|
|
150
|
+
* dropped back to their shell with arrows emitting escape codes, mouse clicks
|
|
151
|
+
* spewing coordinates, or a blank alt screen.
|
|
152
|
+
*
|
|
153
|
+
* The sequence is intentionally direction-explicit and idempotent. Ordering is
|
|
154
|
+
* load-bearing (see #1251): a few of these controls move the cursor, and
|
|
155
|
+
* `\x1b[?1049l` (leave alt screen) *restores* the main-buffer cursor that was
|
|
156
|
+
* saved on alt-screen entry. Anything that homes the cursor must therefore run
|
|
157
|
+
* *before* the alt-screen leave, or it clobbers that restored position and the
|
|
158
|
+
* next shell prompt lands at top-left. Two controls home the cursor:
|
|
159
|
+
*
|
|
160
|
+
* - `\x1b[r` (DECSTBM scroll-region reset) homes the cursor on xterm/DEC-style
|
|
161
|
+
* terminals. The scroll-region margins are shared terminal state, so
|
|
162
|
+
* resetting them while still in the alt buffer heals a stale region and the
|
|
163
|
+
* homing is harmless (the pending `?1049l` restore supersedes it).
|
|
164
|
+
* - `\x1b[?6l` (DECOM origin-mode reset) also moves the cursor to home per the
|
|
165
|
+
* DEC spec, so it belongs in the same pre-leave group.
|
|
166
|
+
*
|
|
167
|
+
* Everything after the alt-screen leave is position-independent (mode flags
|
|
168
|
+
* that never move the cursor): show cursor, application cursor keys off,
|
|
169
|
+
* autowrap on, every mouse-reporting mode off, bracketed paste off, numeric
|
|
170
|
+
* keypad, and a final SGR reset. Only written when stdout is a TTY, consistent
|
|
171
|
+
* with how the sessions gate raw-mode restore and the status line.
|
|
172
|
+
*/
|
|
173
|
+
export declare const LOCAL_TERMINAL_RESET_SEQUENCE: string;
|
|
174
|
+
/**
|
|
175
|
+
* Emit {@link LOCAL_TERMINAL_RESET_SEQUENCE} to the local terminal on detach,
|
|
176
|
+
* but only when stdout is a TTY. A no-op for piped/redirected stdout so the
|
|
177
|
+
* reset never corrupts a captured log.
|
|
178
|
+
*/
|
|
179
|
+
export declare function resetLocalTerminalOnDetach(write: (chunk: string) => void, isTty: boolean): void;
|
|
60
180
|
/** ----- Interactive attach prep helpers ----- */
|
|
61
181
|
/** Validated attach target: trimmed agent name + resolved broker connection. */
|
|
62
182
|
export interface AttachTarget {
|
|
@@ -97,6 +217,8 @@ export declare function syncInitialPtySize(connection: BrokerConnection, name: s
|
|
|
97
217
|
} | null, verb: string, deps: {
|
|
98
218
|
fetch: typeof globalThis.fetch;
|
|
99
219
|
log: (...args: unknown[]) => void;
|
|
220
|
+
}, options?: {
|
|
221
|
+
sessionId?: string;
|
|
100
222
|
}): Promise<void>;
|
|
101
223
|
/**
|
|
102
224
|
* Read the worker's prior inbound delivery mode and flip it to
|
|
@@ -114,7 +236,167 @@ export declare function switchInboundDeliveryModeOrAbort(connection: BrokerConne
|
|
|
114
236
|
error: (...args: unknown[]) => void;
|
|
115
237
|
}): Promise<{
|
|
116
238
|
previousMode: InboundDeliveryMode | null;
|
|
239
|
+
sessionRevision: string | null;
|
|
117
240
|
} | null>;
|
|
241
|
+
/**
|
|
242
|
+
* Upper bound (ms) on the best-effort detach teardown — resize-ownership
|
|
243
|
+
* release and inbound-delivery-mode restore. Both are HTTP round-trips to the
|
|
244
|
+
* broker that can stall if the broker is down; the terminal must still exit
|
|
245
|
+
* promptly, so `finish()` resolves the exit code once these settle *or* this
|
|
246
|
+
* deadline elapses, whichever comes first. The broker's idle-takeover net
|
|
247
|
+
* still frees any ownership left behind.
|
|
248
|
+
*/
|
|
249
|
+
export declare const DETACH_CLEANUP_DEADLINE_MS = 2000;
|
|
250
|
+
/**
|
|
251
|
+
* Best-effort restore of a worker's inbound delivery mode on detach.
|
|
252
|
+
*
|
|
253
|
+
* Two hazards this guards against (see #1247):
|
|
254
|
+
*
|
|
255
|
+
* 1. Concurrent-change race — a second session attaching while this one is
|
|
256
|
+
* active would read *this* session's mode as the "previous" one, so blindly
|
|
257
|
+
* writing `previousMode` back on detach can clobber a change another
|
|
258
|
+
* session/CLI made in the meantime. We restore via the broker's atomic
|
|
259
|
+
* compare-and-set (`expectedMode: sessionMode`): the broker applies
|
|
260
|
+
* `previousMode` only if the worker's current mode still equals what *this*
|
|
261
|
+
* session set, and no-ops (`matched: false`) otherwise. This removes the
|
|
262
|
+
* read-then-set TOCTOU a client-side re-read still had (a change landing
|
|
263
|
+
* between the read and the restore PUT).
|
|
264
|
+
* 2. Failed initial read — when the pre-attach mode was never learned
|
|
265
|
+
* (`previousMode === null`), forcing a default (`auto_inject`) would
|
|
266
|
+
* silently cancel an explicit `agent message hold`. In that case we leave
|
|
267
|
+
* the mode untouched and warn.
|
|
268
|
+
*
|
|
269
|
+
* The broker's monotonic mode revision closes ABA races where another session
|
|
270
|
+
* changes the mode away and back to `sessionMode` before this restore.
|
|
271
|
+
*/
|
|
272
|
+
export declare function restoreInboundDeliveryModeOnDetach(connection: BrokerConnection, name: string, previousMode: InboundDeliveryMode | null, sessionMode: InboundDeliveryMode, sessionRevision: string | null, verb: string, deps: {
|
|
273
|
+
fetch: typeof globalThis.fetch;
|
|
274
|
+
log: (...args: unknown[]) => void;
|
|
275
|
+
}): Promise<void>;
|
|
276
|
+
/**
|
|
277
|
+
* Streaming scanner that tracks whether a byte stream currently *ends* inside
|
|
278
|
+
* an incomplete ANSI escape sequence (ESC, CSI, OSC, or DCS/SOS/PM/APC string).
|
|
279
|
+
*
|
|
280
|
+
* The attach status line wraps its repaint in cursor save/restore controls;
|
|
281
|
+
* splicing that in while the agent is mid-transmission of its own CSI sequence
|
|
282
|
+
* corrupts the agent's output. Feeding every server chunk through this scanner
|
|
283
|
+
* lets the status painter hold its repaint until the stream is back at a
|
|
284
|
+
* sequence boundary. State persists across chunks (a sequence may span several
|
|
285
|
+
* `worker_stream` frames).
|
|
286
|
+
*
|
|
287
|
+
* Only ASCII control bytes drive the state machine; multi-byte UTF-8 payload
|
|
288
|
+
* bytes are printable in the ground state and never appear inside a CSI/escape
|
|
289
|
+
* sequence, so scanning UTF-16 code units is safe here.
|
|
290
|
+
*/
|
|
291
|
+
export declare class AnsiBoundaryScanner {
|
|
292
|
+
private state;
|
|
293
|
+
push(chunk: string): void;
|
|
294
|
+
reset(): void;
|
|
295
|
+
/** True when the stream ends at a safe boundary (not mid-sequence). */
|
|
296
|
+
get atBoundary(): boolean;
|
|
297
|
+
private step;
|
|
298
|
+
}
|
|
299
|
+
/** Options for {@link StatusLineController}. Timers are injectable for tests. */
|
|
300
|
+
export interface StatusLineControllerOptions {
|
|
301
|
+
/** Produce the current status-line ANSI string. */
|
|
302
|
+
render: () => string;
|
|
303
|
+
/** Write to stdout. */
|
|
304
|
+
write: (chunk: string) => void;
|
|
305
|
+
/** When false (stdout is not a TTY) the status line is never painted. */
|
|
306
|
+
enabled: boolean;
|
|
307
|
+
/**
|
|
308
|
+
* Minimum ms between repaints. `0` paints on every request (no coalescing);
|
|
309
|
+
* a positive value coalesces bursts of per-chunk repaints into at most one
|
|
310
|
+
* paint per window, shrinking the splice/DECSC-clobber window.
|
|
311
|
+
*/
|
|
312
|
+
coalesceMs: number;
|
|
313
|
+
/**
|
|
314
|
+
* Max ms to hold a repaint while output keeps ending mid escape-sequence
|
|
315
|
+
* before painting anyway (bounded residual splice risk). Default 100.
|
|
316
|
+
*/
|
|
317
|
+
boundaryHoldMs?: number;
|
|
318
|
+
setTimer?: (fn: () => void, ms: number) => ReturnType<typeof setTimeout>;
|
|
319
|
+
clearTimer?: (t: ReturnType<typeof setTimeout>) => void;
|
|
320
|
+
now?: () => number;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Coordinates status-line repaints for the interactive attach clients.
|
|
324
|
+
*
|
|
325
|
+
* Correctness properties (see #1247):
|
|
326
|
+
* - **Non-TTY skip** — when `enabled` is false, nothing is ever written.
|
|
327
|
+
* - **Boundary-hold** — a repaint is deferred while the observed output ends
|
|
328
|
+
* mid ANSI escape sequence, so the status line never splices into a
|
|
329
|
+
* half-transmitted CSI. It paints as soon as the next chunk lands at a
|
|
330
|
+
* boundary (or after `boundaryHoldMs` as a bounded fallback).
|
|
331
|
+
* - **Coalescing** — repaints are rate-limited to at most one per
|
|
332
|
+
* `coalesceMs`, shrinking the window in which our save/restore-cursor wrap
|
|
333
|
+
* can clobber the agent's own pending DECSC.
|
|
334
|
+
* - **Teardown-safe** — after {@link dispose} no further writes happen.
|
|
335
|
+
*
|
|
336
|
+
* Residual risk (documented): ESC 7/ESC 8 (and CSI s/u) share a single
|
|
337
|
+
* saved-cursor slot on many terminals, so a repaint landing between the
|
|
338
|
+
* agent's DECSC and DECRC can still restore to the wrong spot. Boundary-hold +
|
|
339
|
+
* coalescing shrink but do not eliminate that window.
|
|
340
|
+
*/
|
|
341
|
+
export declare class StatusLineController {
|
|
342
|
+
private readonly opts;
|
|
343
|
+
private readonly scanner;
|
|
344
|
+
private timer;
|
|
345
|
+
private timerForce;
|
|
346
|
+
private wantPaint;
|
|
347
|
+
private lastPaintAt;
|
|
348
|
+
private disposed;
|
|
349
|
+
constructor(opts: StatusLineControllerOptions);
|
|
350
|
+
/** Record server output for boundary tracking; flush a held repaint if the
|
|
351
|
+
* stream is now back at a sequence boundary. */
|
|
352
|
+
observeOutput(chunk: string): void;
|
|
353
|
+
/** Request a repaint (coalesced + boundary-held). */
|
|
354
|
+
request(): void;
|
|
355
|
+
/** Stop all painting and cancel any pending timer. */
|
|
356
|
+
dispose(): void;
|
|
357
|
+
private now;
|
|
358
|
+
private flush;
|
|
359
|
+
private paintNow;
|
|
360
|
+
private arm;
|
|
361
|
+
private clearTimer;
|
|
362
|
+
}
|
|
363
|
+
/** Minimal writable surface {@link createBackpressureAwareWriter} needs. */
|
|
364
|
+
export interface BackpressureWritable {
|
|
365
|
+
write(chunk: string): boolean;
|
|
366
|
+
once(event: 'drain', listener: () => void): unknown;
|
|
367
|
+
off?(event: 'drain', listener: () => void): unknown;
|
|
368
|
+
removeListener?(event: 'drain', listener: () => void): unknown;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* A backpressure-aware writer plus a teardown hook. Call the writer with each
|
|
372
|
+
* chunk; call {@link BackpressureAwareWriter.dispose} on detach to drop any
|
|
373
|
+
* still-queued chunks and unhook the pending `'drain'` listener so nothing
|
|
374
|
+
* flushes to stdout after the session tears down.
|
|
375
|
+
*/
|
|
376
|
+
export interface BackpressureAwareWriter {
|
|
377
|
+
/** Write a chunk, respecting backpressure. No-op after {@link dispose}. */
|
|
378
|
+
write: (chunk: string) => void;
|
|
379
|
+
/** Drop the pending queue and unhook the `'drain'` listener. Idempotent. */
|
|
380
|
+
dispose: () => void;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Default stdout writer that respects backpressure (see #1247, item 7).
|
|
384
|
+
*
|
|
385
|
+
* When the underlying stream reports saturation (`write()` returns false) we
|
|
386
|
+
* hold subsequent chunks in a bounded in-memory queue and flush them on
|
|
387
|
+
* `'drain'`, rather than letting Node's stdout buffer grow without limit under
|
|
388
|
+
* a fast agent + slow terminal.
|
|
389
|
+
*
|
|
390
|
+
* FIFO is preserved even when our own queue reaches `maxQueuedBytes`: rather
|
|
391
|
+
* than writing the overflow chunk straight through (which would jump it ahead
|
|
392
|
+
* of older queued chunks and reorder/split the PTY byte stream), we first flush
|
|
393
|
+
* the entire local queue into stdout's internal buffer — `stdout.write` buffers
|
|
394
|
+
* internally when saturated, so ignoring its return value here is safe — then
|
|
395
|
+
* write the new chunk last. Bounded extra buffering, never dropped or reordered
|
|
396
|
+
* output. Documented residual risk: under sustained overload Node's internal
|
|
397
|
+
* stdout buffer can still grow.
|
|
398
|
+
*/
|
|
399
|
+
export declare function createBackpressureAwareWriter(stdout: BackpressureWritable, maxQueuedBytes?: number): BackpressureAwareWriter;
|
|
118
400
|
/** Dependencies for `captureInitialSnapshot`. `captureAndRenderSnapshot`
|
|
119
401
|
* is injectable so tests can substitute a stub. */
|
|
120
402
|
export interface CaptureInitialSnapshotDeps extends AttachSnapshotDeps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/attach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAGhC,uEAAuE;AACvE,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;mBACmB;AACnB,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,0EAA0E;IAC1E,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;sDAEsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,iBAAiB,CAAC;IAC1E,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/attach.ts"],"names":[],"mappings":"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"}
|