@scotthuang/agent-knock-knock 0.11.6 → 0.11.7

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.
@@ -2,6 +2,41 @@ import { randomUUID } from "node:crypto";
2
2
  import { spawnSync } from "node:child_process";
3
3
  import fs from "node:fs";
4
4
  import path from "node:path";
5
+ import { createTerminalEndpointRef, sameTerminalEndpointIdentity, terminalControlWithCapabilities, terminalEndpointFromControlRef, tmuxTerminalRouteKey } from "./terminal-control-ref.js";
6
+ export class TerminalControlProviderRegistry {
7
+ providers = new Map();
8
+ constructor(providers = []) {
9
+ for (const provider of providers) {
10
+ this.register(provider);
11
+ }
12
+ }
13
+ register(provider) {
14
+ if (!provider.kind.trim()) {
15
+ throw new Error("terminal control provider kind is required");
16
+ }
17
+ if (this.providers.has(provider.kind)) {
18
+ throw new Error(`terminal control provider is already registered for ${provider.kind}`);
19
+ }
20
+ this.providers.set(provider.kind, provider);
21
+ return this;
22
+ }
23
+ get(kind) {
24
+ return this.providers.get(kind);
25
+ }
26
+ require(kind) {
27
+ const provider = this.get(kind);
28
+ if (!provider) {
29
+ throw new Error(`terminal control provider is not registered for ${kind || "<empty>"}`);
30
+ }
31
+ return provider;
32
+ }
33
+ list() {
34
+ return [...this.providers.values()];
35
+ }
36
+ }
37
+ export function createTerminalControlProviderRegistry(providers = []) {
38
+ return new TerminalControlProviderRegistry(providers);
39
+ }
5
40
  /**
6
41
  * A provider-level failure proving that no terminal input operation succeeded.
7
42
  * Unknown/time-out outcomes must use an ordinary Error instead.
@@ -14,6 +49,23 @@ export class TerminalControlInputNotSentError extends Error {
14
49
  }
15
50
  }
16
51
  export class TmuxTerminalControlProvider {
52
+ kind = "tmux";
53
+ supportedCapabilities = [
54
+ "screen_status",
55
+ "send_keys",
56
+ "terminal_approval",
57
+ "screen_completion",
58
+ "durable_completion",
59
+ "terminal_cancel"
60
+ ];
61
+ providerCapabilities = [
62
+ "screen_capture",
63
+ "ansi_capture",
64
+ "text_delivery",
65
+ "key_delivery",
66
+ "process_inspection",
67
+ "stable_resource_resolution"
68
+ ];
17
69
  runCommand;
18
70
  socketPaths;
19
71
  commands;
@@ -25,6 +77,35 @@ export class TmuxTerminalControlProvider {
25
77
  async listPanes() {
26
78
  return (await this.diagnose()).panes;
27
79
  }
80
+ async listTerminals() {
81
+ return (await this.listPanes()).map((pane) => tmuxEndpointFromPane(pane, this.supportedCapabilities));
82
+ }
83
+ endpoint(terminalControl) {
84
+ if (terminalControl.kind !== this.kind) {
85
+ throw new Error(`terminal control provider ${this.kind} cannot resolve ${terminalControl.kind}`);
86
+ }
87
+ return terminalEndpointFromControlRef(terminalControl);
88
+ }
89
+ toControlRef(terminal, capabilities = terminal.capabilities) {
90
+ const control = tmuxControlFromEndpoint(terminal);
91
+ return terminalControlWithCapabilities(control, intersectCapabilities(capabilities, this.supportedCapabilities));
92
+ }
93
+ async resolve(terminal) {
94
+ assertProviderCapability(this.kind, this.providerCapabilities, "stable_resource_resolution");
95
+ assertEndpointKind(terminal, this.kind);
96
+ const matches = (await this.listTerminals()).filter((candidate) => sameTerminalEndpointIdentity(candidate, terminal) ||
97
+ legacyTmuxEndpointMatches(candidate, terminal));
98
+ if (matches.length !== 1) {
99
+ throw new Error(matches.length === 0
100
+ ? `terminal resource ${terminal.route.label} is no longer available`
101
+ : `terminal resource ${terminal.route.label} is ambiguous`);
102
+ }
103
+ return endpointWithCapabilities(matches[0], intersectCapabilities(terminal.capabilities, this.supportedCapabilities));
104
+ }
105
+ containsProcess(terminal, process, processes) {
106
+ assertProviderCapability(this.kind, this.providerCapabilities, "process_inspection");
107
+ return terminalPaneContainsProcess(process, tmuxPaneFromEndpoint(terminal), processes);
108
+ }
28
109
  async diagnose() {
29
110
  const panes = [];
30
111
  const diagnosticAttempts = [];
@@ -36,7 +117,7 @@ export class TmuxTerminalControlProvider {
36
117
  "list-panes",
37
118
  "-a",
38
119
  "-F",
39
- "#{session_name}\t#{window_index}\t#{pane_index}\t#{pane_pid}\t#{pane_current_command}\t#{pane_current_path}"
120
+ "#{session_name}\t#{window_index}\t#{pane_index}\t#{pane_pid}\t#{pane_current_command}\t#{pane_current_path}\t#{socket_path}\t#{pane_id}"
40
121
  ]));
41
122
  const parsedPanes = result.status === 0 ? parseTmuxListPanes(result.stdout, socketPath) : [];
42
123
  diagnosticAttempts.push({
@@ -53,9 +134,12 @@ export class TmuxTerminalControlProvider {
53
134
  continue;
54
135
  }
55
136
  for (const pane of parsedPanes) {
56
- // A default-server query and its discovered socket path can describe the
57
- // same pane. The pane PID is system-unique, so keep only the first route.
58
- const key = `${pane.target}\t${pane.panePid}`;
137
+ // A default-server query and its discovered socket path can describe
138
+ // the same pane. Prefer tmux's server-scoped stable pane identity; the
139
+ // complete legacy route+PID tuple is the safe fallback for old tmux.
140
+ const key = pane.serverSocketPath && pane.paneId
141
+ ? `${pane.serverSocketPath}\t${pane.paneId}`
142
+ : `${pane.target}\t${pane.panePid}`;
59
143
  if (seenTargets.has(key)) {
60
144
  continue;
61
145
  }
@@ -72,11 +156,17 @@ export class TmuxTerminalControlProvider {
72
156
  panes
73
157
  };
74
158
  }
75
- async capture(target, options = {}) {
159
+ async diagnostics() {
160
+ return this.diagnose();
161
+ }
162
+ async capture(terminal, options = {}) {
163
+ assertTerminalCapability(terminal, "screen_status", this.supportedCapabilities);
164
+ assertProviderCapability(this.kind, this.providerCapabilities, options.preserveEscapes ? "ansi_capture" : "screen_capture");
165
+ const { target, socketPath } = tmuxIoRoute(terminal);
76
166
  const scrollbackLines = Math.max(0, Math.floor(options.scrollbackLines ?? 200));
77
167
  let lastResult;
78
168
  for (const command of this.commands) {
79
- const result = this.runCommand(command, tmuxArgs(options.socketPath, [
169
+ const result = this.runCommand(command, tmuxArgs(socketPath, [
80
170
  "capture-pane",
81
171
  ...(options.preserveEscapes ? ["-e"] : []),
82
172
  "-t",
@@ -92,10 +182,13 @@ export class TmuxTerminalControlProvider {
92
182
  }
93
183
  throw new Error(lastResult?.stderr || lastResult?.error?.message || `tmux capture-pane failed for ${target}`);
94
184
  }
95
- async sendKeys(target, keys, options = {}) {
185
+ async sendKeys(terminal, keys) {
186
+ assertTerminalCapability(terminal, "send_keys", this.supportedCapabilities);
187
+ assertInputProviderCapability(this.kind, this.providerCapabilities, "key_delivery");
188
+ const { target, socketPath } = tmuxIoRoute(terminal);
96
189
  let lastResult;
97
190
  for (const command of this.commands) {
98
- const result = this.runCommand(command, tmuxArgs(options.socketPath, ["send-keys", "-t", target, ...keys]));
191
+ const result = this.runCommand(command, tmuxArgs(socketPath, ["send-keys", "-t", target, ...keys]));
99
192
  if (result.status === 0) {
100
193
  return;
101
194
  }
@@ -116,12 +209,15 @@ export class TmuxTerminalControlProvider {
116
209
  throw new TerminalControlInputNotSentError(lastResult?.stderr || lastResult?.error?.message ||
117
210
  `tmux send-keys failed for ${target}`);
118
211
  }
119
- async sendText(target, text, options = {}) {
212
+ async sendText(terminal, text) {
213
+ assertTerminalCapability(terminal, "send_keys", this.supportedCapabilities);
214
+ assertInputProviderCapability(this.kind, this.providerCapabilities, "text_delivery");
215
+ const { target, socketPath } = tmuxIoRoute(terminal);
120
216
  let lastResult;
121
217
  for (const command of this.commands) {
122
218
  if (/[\r\n]/u.test(text)) {
123
219
  const bufferName = `akk-${process.pid}-${randomUUID()}`;
124
- const setBuffer = this.runCommand(command, tmuxArgs(options.socketPath, [
220
+ const setBuffer = this.runCommand(command, tmuxArgs(socketPath, [
125
221
  "set-buffer",
126
222
  "-b",
127
223
  bufferName,
@@ -132,7 +228,7 @@ export class TmuxTerminalControlProvider {
132
228
  lastResult = setBuffer;
133
229
  continue;
134
230
  }
135
- const pasteBuffer = this.runCommand(command, tmuxArgs(options.socketPath, [
231
+ const pasteBuffer = this.runCommand(command, tmuxArgs(socketPath, [
136
232
  "paste-buffer",
137
233
  "-p",
138
234
  "-d",
@@ -144,12 +240,12 @@ export class TmuxTerminalControlProvider {
144
240
  if (pasteBuffer.status === 0) {
145
241
  return;
146
242
  }
147
- this.runCommand(command, tmuxArgs(options.socketPath, [
243
+ this.runCommand(command, tmuxArgs(socketPath, [
148
244
  "delete-buffer",
149
245
  "-b",
150
246
  bufferName
151
247
  ]));
152
- if (pasteBuffer.status === null &&
248
+ if (pasteBuffer.status !== null ||
153
249
  !commandDefinitelyDidNotStart(pasteBuffer.error)) {
154
250
  throw new Error(pasteBuffer.stderr || pasteBuffer.error?.message ||
155
251
  `tmux terminal paste outcome is uncertain for ${target}`);
@@ -157,7 +253,7 @@ export class TmuxTerminalControlProvider {
157
253
  lastResult = pasteBuffer;
158
254
  continue;
159
255
  }
160
- const result = this.runCommand(command, tmuxArgs(options.socketPath, ["send-keys", "-t", target, "-l", text]));
256
+ const result = this.runCommand(command, tmuxArgs(socketPath, ["send-keys", "-t", target, "-l", text]));
161
257
  if (result.status === 0) {
162
258
  return;
163
259
  }
@@ -180,6 +276,23 @@ function commandDefinitelyDidNotStart(error) {
180
276
  return code === "ENOENT" || code === "EACCES" || code === "ENOTDIR";
181
277
  }
182
278
  export class StaticTerminalControlProvider {
279
+ kind = "tmux";
280
+ supportedCapabilities = [
281
+ "screen_status",
282
+ "send_keys",
283
+ "terminal_approval",
284
+ "screen_completion",
285
+ "durable_completion",
286
+ "terminal_cancel"
287
+ ];
288
+ providerCapabilities = [
289
+ "screen_capture",
290
+ "ansi_capture",
291
+ "text_delivery",
292
+ "key_delivery",
293
+ "process_inspection",
294
+ "stable_resource_resolution"
295
+ ];
183
296
  panes;
184
297
  screens;
185
298
  sentKeys = [];
@@ -190,13 +303,56 @@ export class StaticTerminalControlProvider {
190
303
  async listPanes() {
191
304
  return this.panes;
192
305
  }
193
- async capture(target) {
306
+ async diagnostics() {
307
+ return {
308
+ provider: "static",
309
+ paneCount: (await this.listTerminals()).length
310
+ };
311
+ }
312
+ async listTerminals() {
313
+ return this.panes.map((pane) => tmuxEndpointFromPane(pane, this.supportedCapabilities));
314
+ }
315
+ endpoint(terminalControl) {
316
+ if (terminalControl.kind !== this.kind) {
317
+ throw new Error(`terminal control provider ${this.kind} cannot resolve ${terminalControl.kind}`);
318
+ }
319
+ return terminalEndpointFromControlRef(terminalControl);
320
+ }
321
+ toControlRef(terminal, capabilities = terminal.capabilities) {
322
+ return terminalControlWithCapabilities(tmuxControlFromEndpoint(terminal), intersectCapabilities(capabilities, this.supportedCapabilities));
323
+ }
324
+ async resolve(terminal) {
325
+ assertProviderCapability(this.kind, this.providerCapabilities, "stable_resource_resolution");
326
+ assertEndpointKind(terminal, this.kind);
327
+ const matches = (await this.listTerminals()).filter((candidate) => sameTerminalEndpointIdentity(candidate, terminal) ||
328
+ legacyTmuxEndpointMatches(candidate, terminal));
329
+ if (matches.length !== 1) {
330
+ throw new Error(matches.length === 0
331
+ ? `terminal resource ${terminal.route.label} is no longer available`
332
+ : `terminal resource ${terminal.route.label} is ambiguous`);
333
+ }
334
+ return endpointWithCapabilities(matches[0], intersectCapabilities(terminal.capabilities, this.supportedCapabilities));
335
+ }
336
+ containsProcess(terminal, process, processes) {
337
+ assertProviderCapability(this.kind, this.providerCapabilities, "process_inspection");
338
+ return terminalPaneContainsProcess(process, tmuxPaneFromEndpoint(terminal), processes);
339
+ }
340
+ async capture(terminal) {
341
+ assertTerminalCapability(terminal, "screen_status", this.supportedCapabilities);
342
+ assertProviderCapability(this.kind, this.providerCapabilities, "screen_capture");
343
+ const { target } = tmuxControlFromEndpoint(terminal);
194
344
  return this.screens.get(target) ?? "";
195
345
  }
196
- async sendText(target, text) {
346
+ async sendText(terminal, text) {
347
+ assertTerminalCapability(terminal, "send_keys", this.supportedCapabilities);
348
+ assertInputProviderCapability(this.kind, this.providerCapabilities, "text_delivery");
349
+ const { target } = tmuxControlFromEndpoint(terminal);
197
350
  this.sentKeys.push({ target, keys: ["-l", text] });
198
351
  }
199
- async sendKeys(target, keys) {
352
+ async sendKeys(terminal, keys) {
353
+ assertTerminalCapability(terminal, "send_keys", this.supportedCapabilities);
354
+ assertInputProviderCapability(this.kind, this.providerCapabilities, "key_delivery");
355
+ const { target } = tmuxControlFromEndpoint(terminal);
200
356
  this.sentKeys.push({ target, keys: [...keys] });
201
357
  }
202
358
  }
@@ -221,20 +377,31 @@ export function parseTmuxListPanes(output, socketPath) {
221
377
  }
222
378
  function parseTmuxPaneLine(line) {
223
379
  const tabFields = line.split("\t");
224
- const fields = tabFields.length >= 6
380
+ const fields = tabFields.length >= 8
225
381
  ? [
226
382
  tabFields[0],
227
383
  tabFields[1],
228
384
  tabFields[2],
229
385
  tabFields[3],
230
386
  tabFields[4],
231
- tabFields.slice(5).join("\t")
387
+ tabFields.slice(5, -2).join("\t"),
388
+ tabFields.at(-2) ?? "",
389
+ tabFields.at(-1) ?? ""
232
390
  ]
233
- : parseWhitespaceTmuxPaneLine(line) ?? parseUnderscoreTmuxPaneLine(line);
391
+ : tabFields.length >= 6
392
+ ? [
393
+ tabFields[0],
394
+ tabFields[1],
395
+ tabFields[2],
396
+ tabFields[3],
397
+ tabFields[4],
398
+ tabFields.slice(5).join("\t")
399
+ ]
400
+ : parseWhitespaceTmuxPaneLine(line) ?? parseUnderscoreTmuxPaneLine(line);
234
401
  if (!fields) {
235
402
  return undefined;
236
403
  }
237
- const [session, windowIndex, paneIndex, panePid, currentCommand, currentPath] = fields;
404
+ const [session, windowIndex, paneIndex, panePid, currentCommand, currentPath, serverSocketPath, paneId] = fields;
238
405
  const window = Number(windowIndex);
239
406
  const pane = Number(paneIndex);
240
407
  const parsedPanePid = Number(panePid);
@@ -247,7 +414,9 @@ function parseTmuxPaneLine(line) {
247
414
  pane,
248
415
  panePid: parsedPanePid,
249
416
  currentCommand: currentCommand || undefined,
250
- currentPath: currentPath || undefined
417
+ currentPath: currentPath || undefined,
418
+ serverSocketPath: serverSocketPath || undefined,
419
+ paneId: paneId || undefined
251
420
  };
252
421
  }
253
422
  function parseWhitespaceTmuxPaneLine(line) {
@@ -259,30 +428,159 @@ function parseUnderscoreTmuxPaneLine(line) {
259
428
  return match ? match.slice(1) : undefined;
260
429
  }
261
430
  export async function enrichActiveProcessesWithTerminalControl(processes, provider, options = {}) {
262
- const panes = await provider.listPanes();
263
- if (panes.length === 0) {
431
+ const terminals = await provider.listTerminals();
432
+ if (terminals.length === 0) {
264
433
  return processes;
265
434
  }
266
435
  const matches = new Map();
267
436
  const processTree = options.processTree ?? processes;
268
437
  for (const process of processes) {
269
- const pane = panes.find((candidate) => terminalPaneContainsProcess(process, candidate, processTree));
270
- if (!pane) {
438
+ const terminal = terminals.find((candidate) => provider.containsProcess(candidate, process, processTree));
439
+ if (!terminal) {
271
440
  continue;
272
441
  }
273
- matches.set(process.pid, pane);
442
+ matches.set(process.pid, terminal);
274
443
  }
275
444
  return processes.map((process) => {
276
- const pane = matches.get(process.pid);
277
- if (!pane) {
445
+ const terminal = matches.get(process.pid);
446
+ if (!terminal) {
278
447
  return process;
279
448
  }
280
449
  return {
281
450
  ...process,
282
- terminalControl: terminalRefFromPane(pane, options.capabilities)
451
+ terminalControl: provider.toControlRef(terminal, options.capabilities ?? ["screen_status", "send_keys"])
283
452
  };
284
453
  });
285
454
  }
455
+ function assertEndpointKind(terminal, kind) {
456
+ if (terminal.identity.providerKind !== kind) {
457
+ throw new Error(`terminal control provider ${kind} cannot resolve ` +
458
+ `${terminal.identity.providerKind}`);
459
+ }
460
+ }
461
+ function assertTerminalCapability(terminal, capability, supportedCapabilities) {
462
+ if (!supportedCapabilities.includes(capability) ||
463
+ !terminal.capabilities.includes(capability)) {
464
+ throw new Error(`terminal control capability ${capability} is not available for ` +
465
+ `${terminal.identity.providerKind}:${terminal.route.label}`);
466
+ }
467
+ }
468
+ function assertProviderCapability(kind, supported, capability) {
469
+ if (!supported.includes(capability)) {
470
+ throw new Error(`terminal control provider ${kind} does not support ${capability}`);
471
+ }
472
+ }
473
+ function assertInputProviderCapability(kind, supported, capability) {
474
+ if (!supported.includes(capability)) {
475
+ throw new TerminalControlInputNotSentError(`terminal control provider ${kind} does not support ${capability}`);
476
+ }
477
+ }
478
+ function intersectCapabilities(requested, supported) {
479
+ const supportedSet = new Set(supported);
480
+ return [...new Set(requested)].filter((capability) => supportedSet.has(capability));
481
+ }
482
+ function endpointWithCapabilities(terminal, capabilities) {
483
+ const providerRef = terminalControlWithCapabilities(tmuxControlFromEndpoint(terminal), capabilities);
484
+ return createTerminalEndpointRef({
485
+ identity: terminal.identity,
486
+ route: terminal.route,
487
+ processAnchorPid: terminal.processAnchorPid,
488
+ capabilities,
489
+ providerRef
490
+ });
491
+ }
492
+ function tmuxEndpointFromPane(pane, capabilities) {
493
+ const providerRef = terminalRefFromPane(pane, capabilities);
494
+ const legacy = terminalEndpointFromControlRef(providerRef);
495
+ const endpointKey = pane.serverSocketPath
496
+ ? `socket:${pane.serverSocketPath}`
497
+ : legacy.identity.endpointKey;
498
+ const resourceKey = pane.paneId
499
+ ? `pane-id:${pane.paneId}`
500
+ : legacy.identity.resourceKey;
501
+ return createTerminalEndpointRef({
502
+ identity: {
503
+ providerKind: "tmux",
504
+ endpointKey,
505
+ resourceKey
506
+ },
507
+ route: {
508
+ routeKey: tmuxTerminalRouteKey(endpointKey, pane.target, pane.socketPath),
509
+ label: pane.target,
510
+ currentCommand: pane.currentCommand,
511
+ currentPath: pane.currentPath
512
+ },
513
+ processAnchorPid: pane.panePid,
514
+ capabilities,
515
+ providerRef
516
+ });
517
+ }
518
+ function legacyTmuxEndpointMatches(candidate, requested) {
519
+ if (!requested.identity.resourceKey.startsWith("legacy:")) {
520
+ return false;
521
+ }
522
+ const candidateControl = tmuxControlFromEndpoint(candidate);
523
+ const requestedControl = tmuxControlFromEndpoint(requested);
524
+ if (candidateControl.target !== requestedControl.target ||
525
+ candidateControl.panePid !== requestedControl.panePid) {
526
+ return false;
527
+ }
528
+ if (!requestedControl.socketPath) {
529
+ return true;
530
+ }
531
+ return candidateControl.socketPath === requestedControl.socketPath ||
532
+ candidate.identity.endpointKey === `socket:${requestedControl.socketPath}`;
533
+ }
534
+ function tmuxControlFromEndpoint(terminal) {
535
+ assertEndpointKind(terminal, "tmux");
536
+ const control = terminal.providerRef;
537
+ if (!isTmuxTerminalControlRef(control)) {
538
+ throw new Error("tmux terminal endpoint has an invalid provider reference");
539
+ }
540
+ return control;
541
+ }
542
+ function tmuxIoRoute(terminal) {
543
+ const control = tmuxControlFromEndpoint(terminal);
544
+ const stablePaneId = terminal.identity.resourceKey.startsWith("pane-id:")
545
+ ? terminal.identity.resourceKey.slice("pane-id:".length)
546
+ : undefined;
547
+ const stableSocketPath = terminal.identity.endpointKey.startsWith("socket:")
548
+ ? terminal.identity.endpointKey.slice("socket:".length)
549
+ : undefined;
550
+ return {
551
+ // tmux's `%pane_id` remains valid across session/window/pane renames and
552
+ // cannot be confused with a newly reused human selector.
553
+ target: stablePaneId || control.target,
554
+ socketPath: stableSocketPath || control.socketPath
555
+ };
556
+ }
557
+ function isTmuxTerminalControlRef(value) {
558
+ if (typeof value !== "object" || value === null) {
559
+ return false;
560
+ }
561
+ const control = value;
562
+ return control.kind === "tmux" &&
563
+ typeof control.target === "string" &&
564
+ typeof control.session === "string" &&
565
+ Number.isInteger(control.window) &&
566
+ Number.isInteger(control.pane) &&
567
+ Number.isInteger(control.panePid) &&
568
+ Array.isArray(control.capabilities);
569
+ }
570
+ function tmuxPaneFromEndpoint(terminal) {
571
+ const control = tmuxControlFromEndpoint(terminal);
572
+ return {
573
+ kind: "tmux",
574
+ target: control.target,
575
+ socketPath: control.socketPath,
576
+ session: control.session,
577
+ window: control.window,
578
+ pane: control.pane,
579
+ panePid: control.panePid,
580
+ currentCommand: control.currentCommand,
581
+ currentPath: control.currentPath
582
+ };
583
+ }
286
584
  export function terminalRefFromPane(pane, capabilities = ["screen_status", "send_keys"]) {
287
585
  return {
288
586
  kind: "tmux",
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-control-provider.js","sourceRoot":"","sources":["../../src/terminal-control-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-control-provider.js","sourceRoot":"","sources":["../../src/terminal-control-provider.ts"],"names":[],"mappings":"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"}