@scotthuang/agent-knock-knock 0.12.12 → 0.12.13

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 (76) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +39 -26
  3. package/dist/src/approval-policy.d.ts +11 -2
  4. package/dist/src/approval-policy.js +33 -7
  5. package/dist/src/approval-policy.js.map +1 -1
  6. package/dist/src/claude-local-transcript-provider.d.ts +81 -0
  7. package/dist/src/claude-local-transcript-provider.js +854 -18
  8. package/dist/src/claude-local-transcript-provider.js.map +1 -1
  9. package/dist/src/cli-core.js +85 -0
  10. package/dist/src/cli-core.js.map +1 -1
  11. package/dist/src/deferred-foreground-authority-cli-adapter.js +90 -19
  12. package/dist/src/deferred-foreground-authority-cli-adapter.js.map +1 -1
  13. package/dist/src/deferred-foreground-transfer.js +3 -4
  14. package/dist/src/deferred-foreground-transfer.js.map +1 -1
  15. package/dist/src/openclaw-callback-transport.d.ts +5 -0
  16. package/dist/src/openclaw-callback-transport.js +1 -1
  17. package/dist/src/openclaw-callback-transport.js.map +1 -1
  18. package/dist/src/openclaw-plugin-callback-adapter.js +96 -14
  19. package/dist/src/openclaw-plugin-callback-adapter.js.map +1 -1
  20. package/dist/src/openclaw-plugin-command-adapter.js +548 -107
  21. package/dist/src/openclaw-plugin-command-adapter.js.map +1 -1
  22. package/dist/src/openclaw-plugin-helpers.d.ts +27 -4
  23. package/dist/src/openclaw-plugin-helpers.js +309 -44
  24. package/dist/src/openclaw-plugin-helpers.js.map +1 -1
  25. package/dist/src/openclaw-plugin-schemas.d.ts +44 -68
  26. package/dist/src/openclaw-plugin-schemas.js +63 -91
  27. package/dist/src/openclaw-plugin-schemas.js.map +1 -1
  28. package/dist/src/openclaw-plugin-supervisor.js +48 -10
  29. package/dist/src/openclaw-plugin-supervisor.js.map +1 -1
  30. package/dist/src/openclaw-private-authority-offers.d.ts +22 -0
  31. package/dist/src/openclaw-private-authority-offers.js +177 -0
  32. package/dist/src/openclaw-private-authority-offers.js.map +1 -0
  33. package/dist/src/store.d.ts +1 -0
  34. package/dist/src/store.js +3 -1
  35. package/dist/src/store.js.map +1 -1
  36. package/dist/src/terminal-action-projection.d.ts +19 -1
  37. package/dist/src/terminal-action-projection.js +23 -0
  38. package/dist/src/terminal-action-projection.js.map +1 -1
  39. package/dist/src/terminal-command-cli-adapter.d.ts +5 -0
  40. package/dist/src/terminal-command-cli-adapter.js +249 -89
  41. package/dist/src/terminal-command-cli-adapter.js.map +1 -1
  42. package/dist/src/terminal-dispatch-repository-cli-adapter.js +305 -79
  43. package/dist/src/terminal-dispatch-repository-cli-adapter.js.map +1 -1
  44. package/dist/src/terminal-list-cli-adapter.d.ts +31 -7
  45. package/dist/src/terminal-list-cli-adapter.js +285 -67
  46. package/dist/src/terminal-list-cli-adapter.js.map +1 -1
  47. package/dist/src/terminal-list-renderer.d.ts +2 -0
  48. package/dist/src/terminal-list-renderer.js +116 -41
  49. package/dist/src/terminal-list-renderer.js.map +1 -1
  50. package/dist/src/terminal-monitor-cli-adapter.js +1 -1
  51. package/dist/src/terminal-monitor-cli-adapter.js.map +1 -1
  52. package/dist/src/terminal-monitor-state-cli-adapter.js +6 -15
  53. package/dist/src/terminal-monitor-state-cli-adapter.js.map +1 -1
  54. package/dist/src/terminal-status-cli-adapter.d.ts +10 -0
  55. package/dist/src/terminal-status-cli-adapter.js +89 -7
  56. package/dist/src/terminal-status-cli-adapter.js.map +1 -1
  57. package/dist/src/terminal-submission-acceptance.d.ts +60 -1
  58. package/dist/src/terminal-submission-acceptance.js +560 -0
  59. package/dist/src/terminal-submission-acceptance.js.map +1 -1
  60. package/dist/src/terminal-watch-callback-cli-adapter.d.ts +20 -0
  61. package/dist/src/terminal-watch-callback-cli-adapter.js +55 -0
  62. package/dist/src/terminal-watch-callback-cli-adapter.js.map +1 -0
  63. package/dist/src/terminal-watch-cli-adapter.d.ts +64 -0
  64. package/dist/src/terminal-watch-cli-adapter.js +508 -0
  65. package/dist/src/terminal-watch-cli-adapter.js.map +1 -0
  66. package/dist/src/terminal-watch-service.d.ts +97 -0
  67. package/dist/src/terminal-watch-service.js +714 -0
  68. package/dist/src/terminal-watch-service.js.map +1 -0
  69. package/dist/src/terminal-watch-store.d.ts +149 -0
  70. package/dist/src/terminal-watch-store.js +861 -0
  71. package/dist/src/terminal-watch-store.js.map +1 -0
  72. package/docs/quickstart-herdr.md +8 -0
  73. package/docs/quickstart-tmux.md +33 -6
  74. package/openclaw.plugin.json +11 -3
  75. package/package.json +1 -1
  76. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +57 -39
@@ -6,9 +6,149 @@ import { cliEnv, cliNow, cliNowMs, cliPid, cliSleepSync } from "./cli-runtime-co
6
6
  import { atomicReplacePrivateJsonFile, fsyncDirectory } from "./durable-json-file.js";
7
7
  import { createFileLockCliAdapter } from "./file-lock-cli-adapter.js";
8
8
  import { defaultStoreDir, ensureDir } from "./store.js";
9
- import { hasCanonicalTerminalEndpoint, terminalControlEvidence, terminalControlEvidenceMatches, terminalEndpointFromControlRef, terminalRuntimeResourceKey } from "./terminal-control-ref.js";
9
+ import { hasCanonicalTerminalEndpoint, terminalControlEvidence, terminalControlEvidenceMatches, terminalEndpointFromControlRef, terminalRuntimeResourceKey, tmuxTerminalRouteKey } from "./terminal-control-ref.js";
10
10
  import { constructTerminalDispatchLedgerDocument, decodeTerminalDispatchLedgerDocument, terminalDispatchLedgerLooksLifecycle } from "./terminal-dispatch-ledger-codec.js";
11
11
  import { isRecord, nonBlankString } from "./value-guards.js";
12
+ function terminalDispatchLedgerMatchesControl(ledger, terminalControl, options = {}) {
13
+ if (!ledger)
14
+ return false;
15
+ const evidence = ledger.terminal_endpoint !== undefined
16
+ ? ledger.terminal_endpoint
17
+ : ledger.terminal_control;
18
+ return terminalControlEvidenceMatches(evidence, terminalControl, options);
19
+ }
20
+ function terminalDispatchLedgerProcessAnchor(ledger) {
21
+ const evidence = isRecord(ledger.terminal_endpoint)
22
+ ? ledger.terminal_endpoint
23
+ : isRecord(ledger.terminal_control)
24
+ ? ledger.terminal_control
25
+ : undefined;
26
+ const panePid = Number(evidence?.process_anchor_pid ?? evidence?.pane_pid ?? evidence?.panePid);
27
+ return Number.isSafeInteger(panePid) && panePid > 0 ? panePid : undefined;
28
+ }
29
+ function serializedTerminalControl(terminalControl) {
30
+ return {
31
+ kind: terminalControl.kind,
32
+ target: terminalControl.target,
33
+ socket_path: terminalControl.socketPath ?? null,
34
+ pane_pid: terminalControl.panePid ?? null,
35
+ current_path: terminalControl.currentPath ?? null,
36
+ ...(terminalControl.kind === "herdr"
37
+ ? {
38
+ session: terminalControl.session,
39
+ session_dir: terminalControl.sessionDir ?? null,
40
+ workspace_id: terminalControl.workspaceId,
41
+ tab_id: terminalControl.tabId,
42
+ pane_id: terminalControl.paneId,
43
+ terminal_id: terminalControl.terminalId
44
+ }
45
+ : {})
46
+ };
47
+ }
48
+ /**
49
+ * Recover the only v1 document that can legitimately exist at a canonical
50
+ * path: the durable image left after the legacy-path rename and before its v2
51
+ * rewrite. The canonical filename supplies stable resource identity, while
52
+ * the self-key, provider endpoint, and exact process anchor prove that the v1
53
+ * bytes still own the current tmux incarnation. No legacy-path document is
54
+ * eligible for this route-insensitive recovery.
55
+ */
56
+ function normalizeInterruptedCanonicalV1(ledger, terminalControl) {
57
+ if (ledger.version !== 1 ||
58
+ terminalControl.kind !== "tmux" ||
59
+ !hasCanonicalTerminalEndpoint(terminalControl)) {
60
+ return undefined;
61
+ }
62
+ const storedControl = isRecord(ledger.terminal_control)
63
+ ? ledger.terminal_control
64
+ : undefined;
65
+ const storedTarget = nonBlankString(storedControl?.target);
66
+ const storedSocketValue = storedControl?.socket_path;
67
+ const storedSocket = storedSocketValue === null
68
+ ? undefined
69
+ : nonBlankString(storedSocketValue);
70
+ const storedAnchor = storedControl?.pane_pid;
71
+ const currentEndpoint = terminalEndpointFromControlRef(terminalControl);
72
+ const currentAnchor = currentEndpoint.processAnchorPid;
73
+ if (storedControl?.kind !== "tmux" ||
74
+ !storedTarget ||
75
+ !(storedSocketValue === null || storedSocket !== undefined) ||
76
+ storedSocket !== terminalControl.socketPath ||
77
+ typeof storedAnchor !== "number" ||
78
+ !Number.isSafeInteger(storedAnchor) ||
79
+ storedAnchor <= 0 ||
80
+ !Number.isSafeInteger(currentAnchor) ||
81
+ currentAnchor === undefined ||
82
+ currentAnchor <= 0 ||
83
+ storedAnchor !== currentAnchor) {
84
+ return undefined;
85
+ }
86
+ const storedRouteControl = {
87
+ kind: "tmux",
88
+ target: storedTarget,
89
+ socketPath: storedSocket,
90
+ session: storedTarget.split(":", 1)[0] ?? storedTarget,
91
+ window: 0,
92
+ pane: 0,
93
+ panePid: storedAnchor,
94
+ capabilities: []
95
+ };
96
+ if (nonBlankString(ledger.terminal_key) !==
97
+ terminalRuntimeResourceKey(storedRouteControl, { legacy: true })) {
98
+ return undefined;
99
+ }
100
+ const historicalEndpoint = {
101
+ ...terminalControlEvidence(terminalControl),
102
+ route_key: tmuxTerminalRouteKey(currentEndpoint.identity.endpointKey, storedTarget, storedSocket),
103
+ target: storedTarget,
104
+ socket_path: storedSocket ?? null,
105
+ pane_pid: storedAnchor,
106
+ current_path: storedControl.current_path ?? null
107
+ };
108
+ return constructTerminalDispatchLedgerDocument({
109
+ previousLedger: ledger,
110
+ incomingLedger: ledger,
111
+ version: 2,
112
+ terminalKey: terminalRuntimeResourceKey(terminalControl),
113
+ // Keep the route that actually accepted the input for one read-only
114
+ // recovery projection. The next save advances only the top-level owner to
115
+ // the current route while its historical receipt remains attributable to
116
+ // this exact old route.
117
+ terminalControl: { ...storedControl },
118
+ terminalEndpoint: historicalEndpoint
119
+ });
120
+ }
121
+ function decodeLocatedTerminalDispatchLedger(source, options) {
122
+ let ledger;
123
+ try {
124
+ ledger = decodeTerminalDispatchLedgerDocument(source, {
125
+ ledgerPath: options.filePath,
126
+ terminalControl: options.terminalControl,
127
+ legacyTerminalKey: options.legacyTerminalKey,
128
+ canonicalTerminalKey: options.canonicalTerminalKey
129
+ });
130
+ }
131
+ catch (error) {
132
+ if (!options.allowInterruptedCanonicalV1)
133
+ throw error;
134
+ const parsed = JSON.parse(source);
135
+ if (!isRecord(parsed))
136
+ throw error;
137
+ const normalized = normalizeInterruptedCanonicalV1(parsed, options.terminalControl);
138
+ if (!normalized)
139
+ throw error;
140
+ return normalized;
141
+ }
142
+ if (ledger.version !== 1 ||
143
+ !options.allowInterruptedCanonicalV1) {
144
+ return ledger;
145
+ }
146
+ const normalized = normalizeInterruptedCanonicalV1(ledger, options.terminalControl);
147
+ if (!normalized) {
148
+ throw new Error(`terminal dispatch ledger is invalid: ${options.filePath}`);
149
+ }
150
+ return normalized;
151
+ }
12
152
  /**
13
153
  * Own the raw filesystem, lock-path, and byte-level persistence boundary for
14
154
  * ordinary terminal dispatch ledgers. Product recovery policy stays outside
@@ -80,12 +220,6 @@ export function createTerminalDispatchRepositoryCliAdapter() {
80
220
  : runtimeKey(terminalControl);
81
221
  return path.join(ledgerDir, `terminal-dispatch-${key}.json`);
82
222
  }
83
- function ledgerPaths(terminalControl) {
84
- return [...new Set([
85
- ledgerPath(terminalControl),
86
- ledgerPath(terminalControl, { legacy: true })
87
- ])];
88
- }
89
223
  function pathExistsNoFollow(candidate) {
90
224
  try {
91
225
  fs.lstatSync(candidate);
@@ -97,45 +231,183 @@ export function createTerminalDispatchRepositoryCliAdapter() {
97
231
  throw error;
98
232
  }
99
233
  }
100
- function load(terminalControl) {
101
- const existingPaths = ledgerPaths(terminalControl).filter(pathExistsNoFollow);
102
- if (existingPaths.length === 0)
103
- return undefined;
104
- if (existingPaths.length > 1) {
105
- throw new Error("terminal dispatch ledger has conflicting canonical and legacy owners: " +
106
- existingPaths.join(", "));
107
- }
108
- const filePath = existingPaths[0];
234
+ function readLedger(terminalControl, filePath, location) {
109
235
  const stat = fs.lstatSync(filePath);
110
236
  if (stat.isSymbolicLink() || !stat.isFile()) {
111
237
  throw new Error(`terminal dispatch ledger is not a regular file: ${filePath}`);
112
238
  }
113
- return decodeTerminalDispatchLedgerDocument(fs.readFileSync(filePath, "utf8"), {
114
- ledgerPath: filePath,
115
- terminalControl,
116
- legacyTerminalKey: legacyRuntimeKey(terminalControl),
117
- canonicalTerminalKey: runtimeKey(terminalControl)
118
- });
239
+ const source = fs.readFileSync(filePath, "utf8");
240
+ return {
241
+ filePath,
242
+ location,
243
+ ledger: decodeLocatedTerminalDispatchLedger(source, {
244
+ filePath,
245
+ terminalControl,
246
+ legacyTerminalKey: legacyRuntimeKey(terminalControl),
247
+ canonicalTerminalKey: runtimeKey(terminalControl),
248
+ allowInterruptedCanonicalV1: location === "canonical" &&
249
+ filePath === ledgerPath(terminalControl) &&
250
+ hasCanonicalTerminalEndpoint(terminalControl)
251
+ }),
252
+ source
253
+ };
254
+ }
255
+ function anchorRelation(ledger, terminalControl) {
256
+ const ledgerAnchor = terminalDispatchLedgerProcessAnchor(ledger);
257
+ const currentAnchor = terminalEndpointFromControlRef(terminalControl).processAnchorPid;
258
+ if (ledgerAnchor === undefined || currentAnchor === undefined) {
259
+ return "unknown";
260
+ }
261
+ return ledgerAnchor === currentAnchor ? "same" : "different";
262
+ }
263
+ function canonicalLedgerMatchesCurrentIncarnation(ledger, terminalControl) {
264
+ return ledger.version === 2 &&
265
+ anchorRelation(ledger, terminalControl) === "same" &&
266
+ terminalControlEvidenceMatches(ledger.terminal_endpoint, terminalControl, { requireProcessAnchor: true });
267
+ }
268
+ function classifyOwner(located, terminalControl) {
269
+ if ((located.location === "canonical" && located.ledger.version !== 2) ||
270
+ (located.location === "legacy" && located.ledger.version !== 1)) {
271
+ return "ambiguous_conflict";
272
+ }
273
+ const relation = anchorRelation(located.ledger, terminalControl);
274
+ if (relation === "different")
275
+ return "stale_history";
276
+ if (relation === "unknown")
277
+ return "ambiguous_conflict";
278
+ if (located.location === "canonical" &&
279
+ !canonicalLedgerMatchesCurrentIncarnation(located.ledger, terminalControl)) {
280
+ return "ambiguous_conflict";
281
+ }
282
+ return "current_owner";
283
+ }
284
+ function classifyDualLedgers(canonical, legacy, terminalControl) {
285
+ const canonicalAnchor = terminalDispatchLedgerProcessAnchor(canonical.ledger);
286
+ const legacyAnchor = terminalDispatchLedgerProcessAnchor(legacy.ledger);
287
+ if (canonicalAnchor === undefined ||
288
+ legacyAnchor === undefined ||
289
+ canonicalAnchor === legacyAnchor) {
290
+ return { classification: "ambiguous_conflict" };
291
+ }
292
+ const canonicalClassification = classifyOwner(canonical, terminalControl);
293
+ const legacyClassification = classifyOwner(legacy, terminalControl);
294
+ if (canonicalClassification === "current_owner" &&
295
+ legacyClassification === "stale_history") {
296
+ return { classification: "current_owner", owner: canonical };
297
+ }
298
+ if (canonicalClassification === "stale_history" &&
299
+ legacyClassification === "current_owner") {
300
+ return {
301
+ classification: "current_owner",
302
+ owner: legacy,
303
+ staleCanonical: canonical
304
+ };
305
+ }
306
+ if (canonicalClassification === "stale_history" &&
307
+ legacyClassification === "stale_history") {
308
+ return { classification: "stale_history" };
309
+ }
310
+ return { classification: "ambiguous_conflict" };
311
+ }
312
+ function conflictingOwnersError(paths) {
313
+ return new Error("terminal dispatch ledger has conflicting canonical and legacy owners: " +
314
+ paths.join(", "));
315
+ }
316
+ function selectLedger(terminalControl) {
317
+ const canonicalPath = ledgerPath(terminalControl);
318
+ const legacyPath = ledgerPath(terminalControl, { legacy: true });
319
+ if (canonicalPath === legacyPath) {
320
+ return {
321
+ selected: pathExistsNoFollow(canonicalPath)
322
+ ? readLedger(terminalControl, canonicalPath, "canonical")
323
+ : undefined
324
+ };
325
+ }
326
+ const canonicalExists = pathExistsNoFollow(canonicalPath);
327
+ const legacyExists = pathExistsNoFollow(legacyPath);
328
+ if (!canonicalExists && !legacyExists)
329
+ return {};
330
+ const canonical = canonicalExists
331
+ ? readLedger(terminalControl, canonicalPath, "canonical")
332
+ : undefined;
333
+ const legacy = legacyExists
334
+ ? readLedger(terminalControl, legacyPath, "legacy")
335
+ : undefined;
336
+ if (canonical && legacy) {
337
+ const classification = classifyDualLedgers(canonical, legacy, terminalControl);
338
+ if (classification.classification === "current_owner") {
339
+ return {
340
+ selected: classification.owner,
341
+ staleCanonical: classification.staleCanonical
342
+ };
343
+ }
344
+ if (classification.classification === "stale_history")
345
+ return {};
346
+ throw conflictingOwnersError([canonicalPath, legacyPath]);
347
+ }
348
+ if (canonical)
349
+ return { selected: canonical };
350
+ if (legacy &&
351
+ hasCanonicalTerminalEndpoint(terminalControl)) {
352
+ const relation = anchorRelation(legacy.ledger, terminalControl);
353
+ if (relation === "different") {
354
+ // The selector has been reused by a different terminal process. Keep
355
+ // the old artifact as history, but it is not an owner of the current
356
+ // stable endpoint and must never be promoted into its canonical path.
357
+ return {};
358
+ }
359
+ if (relation === "unknown") {
360
+ throw new Error("terminal dispatch legacy owner has no exact process anchor: " +
361
+ legacyPath);
362
+ }
363
+ }
364
+ return { selected: legacy };
365
+ }
366
+ function load(terminalControl) {
367
+ return selectLedger(terminalControl).selected?.ledger;
119
368
  }
120
369
  function save(terminalControl, ledger) {
121
- const previousLedger = load(terminalControl);
122
- const existingPaths = ledgerPaths(terminalControl).filter(pathExistsNoFollow);
123
- let filePath = existingPaths[0] ?? ledgerPath(terminalControl);
370
+ const selection = selectLedger(terminalControl);
371
+ const selected = selection.selected;
372
+ const previousLedger = selected?.ledger;
373
+ let filePath = selected?.filePath ?? ledgerPath(terminalControl);
124
374
  const canonicalPath = ledgerPath(terminalControl);
125
375
  const legacyPath = ledgerPath(terminalControl, { legacy: true });
376
+ const preserveLegacyFormat = !hasCanonicalTerminalEndpoint(terminalControl);
377
+ const useCanonicalFormat = hasCanonicalTerminalEndpoint(terminalControl) && !preserveLegacyFormat;
378
+ const nextLedger = constructTerminalDispatchLedgerDocument({
379
+ previousLedger,
380
+ incomingLedger: ledger,
381
+ version: useCanonicalFormat ? 2 : 1,
382
+ terminalKey: preserveLegacyFormat
383
+ ? legacyRuntimeKey(terminalControl)
384
+ : runtimeKey(terminalControl),
385
+ terminalControl: serializedTerminalControl(terminalControl),
386
+ ...(useCanonicalFormat
387
+ ? { terminalEndpoint: terminalControlEvidence(terminalControl) }
388
+ : {})
389
+ });
126
390
  ensureDir(path.dirname(canonicalPath));
127
391
  if (hasCanonicalTerminalEndpoint(terminalControl) &&
392
+ selected?.location === "legacy" &&
128
393
  filePath === legacyPath &&
129
394
  legacyPath !== canonicalPath) {
130
395
  if (pathExistsNoFollow(canonicalPath)) {
131
- throw new Error("terminal dispatch ledger has conflicting canonical and legacy owners: " +
132
- `${canonicalPath}, ${legacyPath}`);
396
+ const staleCanonical = selection.staleCanonical;
397
+ const currentCanonical = readLedger(terminalControl, canonicalPath, "canonical");
398
+ if (!staleCanonical ||
399
+ currentCanonical.source !== staleCanonical.source) {
400
+ throw conflictingOwnersError([canonicalPath, legacyPath]);
401
+ }
402
+ }
403
+ const currentLegacy = readLedger(terminalControl, legacyPath, "legacy");
404
+ if (currentLegacy.source !== selected.source) {
405
+ throw conflictingOwnersError([canonicalPath, legacyPath]);
133
406
  }
134
407
  fs.renameSync(legacyPath, canonicalPath);
135
408
  fsyncDirectory(path.dirname(canonicalPath));
136
409
  filePath = canonicalPath;
137
410
  }
138
- const preserveLegacyFormat = !hasCanonicalTerminalEndpoint(terminalControl);
139
411
  ensureDir(path.dirname(filePath));
140
412
  if (pathExistsNoFollow(filePath)) {
141
413
  const stat = fs.lstatSync(filePath);
@@ -143,35 +415,6 @@ export function createTerminalDispatchRepositoryCliAdapter() {
143
415
  throw new Error(`terminal dispatch ledger is not a regular file: ${filePath}`);
144
416
  }
145
417
  }
146
- const useCanonicalFormat = hasCanonicalTerminalEndpoint(terminalControl) && !preserveLegacyFormat;
147
- const nextLedger = constructTerminalDispatchLedgerDocument({
148
- previousLedger,
149
- incomingLedger: ledger,
150
- version: useCanonicalFormat ? 2 : 1,
151
- terminalKey: preserveLegacyFormat
152
- ? legacyRuntimeKey(terminalControl)
153
- : runtimeKey(terminalControl),
154
- terminalControl: {
155
- kind: terminalControl.kind,
156
- target: terminalControl.target,
157
- socket_path: terminalControl.socketPath ?? null,
158
- pane_pid: terminalControl.panePid ?? null,
159
- current_path: terminalControl.currentPath ?? null,
160
- ...(terminalControl.kind === "herdr"
161
- ? {
162
- session: terminalControl.session,
163
- session_dir: terminalControl.sessionDir ?? null,
164
- workspace_id: terminalControl.workspaceId,
165
- tab_id: terminalControl.tabId,
166
- pane_id: terminalControl.paneId,
167
- terminal_id: terminalControl.terminalId
168
- }
169
- : {})
170
- },
171
- ...(useCanonicalFormat
172
- ? { terminalEndpoint: terminalControlEvidence(terminalControl) }
173
- : {})
174
- });
175
418
  const temporaryPath = `${filePath}.${cliPid()}.${randomUUID()}.tmp`;
176
419
  atomicReplacePrivateJsonFile(filePath, nextLedger, {
177
420
  temporaryPath,
@@ -202,35 +445,18 @@ export function createTerminalDispatchRepositoryCliAdapter() {
202
445
  });
203
446
  return true;
204
447
  }
205
- function matchesControl(ledger, terminalControl, options = {}) {
206
- if (!ledger)
207
- return false;
208
- const evidence = ledger.terminal_endpoint !== undefined
209
- ? ledger.terminal_endpoint
210
- : ledger.terminal_control;
211
- return terminalControlEvidenceMatches(evidence, terminalControl, options);
212
- }
213
- function processAnchor(ledger) {
214
- const evidence = isRecord(ledger.terminal_endpoint)
215
- ? ledger.terminal_endpoint
216
- : isRecord(ledger.terminal_control)
217
- ? ledger.terminal_control
218
- : undefined;
219
- const panePid = Number(evidence?.process_anchor_pid ?? evidence?.pane_pid ?? evidence?.panePid);
220
- return Number.isSafeInteger(panePid) && panePid > 0 ? panePid : undefined;
221
- }
222
448
  function reconcileIncarnation(terminalControl, ledger) {
223
449
  if (!ledger || ledger.status === "resolved")
224
450
  return ledger;
225
451
  if (terminalDispatchLedgerLooksLifecycle(ledger))
226
452
  return ledger;
227
- if (!matchesControl(ledger, terminalControl, {
453
+ if (!terminalDispatchLedgerMatchesControl(ledger, terminalControl, {
228
454
  requireProcessAnchor: false
229
455
  }) ||
230
- matchesControl(ledger, terminalControl)) {
456
+ terminalDispatchLedgerMatchesControl(ledger, terminalControl)) {
231
457
  return ledger;
232
458
  }
233
- const previousAnchor = processAnchor(ledger);
459
+ const previousAnchor = terminalDispatchLedgerProcessAnchor(ledger);
234
460
  const currentAnchor = terminalEndpointFromControlRef(terminalControl).processAnchorPid;
235
461
  save(terminalControl, {
236
462
  ...ledger,
@@ -250,8 +476,8 @@ export function createTerminalDispatchRepositoryCliAdapter() {
250
476
  restore,
251
477
  resolve,
252
478
  reconcileIncarnation,
253
- matchesControl,
254
- processAnchor
479
+ matchesControl: terminalDispatchLedgerMatchesControl,
480
+ processAnchor: terminalDispatchLedgerProcessAnchor
255
481
  });
256
482
  }
257
483
  //# sourceMappingURL=terminal-dispatch-repository-cli-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-dispatch-repository-cli-adapter.js","sourceRoot":"","sources":["../../src/terminal-dispatch-repository-cli-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uCAAuC,EACvC,oCAAoC,EACpC,oCAAoC,EAErC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAiD7D;;;;GAIG;AACH,MAAM,UAAU,0CAA0C;IAExD,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,MAAM;QACX,SAAS,EAAE,YAAY;KACxB,CAAC,CAAC;IAEH,SAAS,UAAU;QACjB,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;QAC5D,OAAO,UAAU;YACf,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,UAAU,CAAC,eAAmC;QACrD,OAAO,0BAA0B,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,gBAAgB,CAAC,eAAmC;QAC3D,OAAO,0BAA0B,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,SAAS,cAAc;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAED,SAAS,YAAY,CAAC,eAAmC;QACvD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,EACP,wBAAwB,UAAU,CAAC,eAAe,CAAC,OAAO,CAC3D,CAAC;IACJ,CAAC;IAED,SAAS,kBAAkB,CAAC,eAAmC;QAC7D,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,EACP,wBAAwB,gBAAgB,CAAC,eAAe,CAAC,OAAO,CACjE,CAAC;IACJ,CAAC;IAED,SAAS,OAAO,CACd,SAAiB,EACjB,eAAmC,EACnC,OAAO,GAA+B,EAAE;QAExC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;gBAC5B,YAAY,CAAC,eAAe,CAAC;gBAC7B,kBAAkB,CAAC,eAAe,CAAC;aACpC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzC,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9C,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,UAAU,CACjB,eAAmC,EACnC,OAAO,GAAyB,EAAE;QAElC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM;YACxB,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC;YACnC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,WAAW,CAAC,eAAmC;QACtD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;gBACjB,UAAU,CAAC,eAAe,CAAC;gBAC3B,UAAU,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;aAC9C,CAAC,CAAC,CAAC;IACN,CAAC;IAED,SAAS,kBAAkB,CAAC,SAAiB;QAC3C,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC7D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,SAAS,IAAI,CACX,eAAmC;QAEnC,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CACvD,kBAAkB,CACnB,CAAC;QACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACjD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,wEAAwE;gBACtE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,mDAAmD,QAAQ,EAAE,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO,oCAAoC,CACzC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EACjC;YACE,UAAU,EAAE,QAAQ;YACpB,eAAe;YACf,iBAAiB,EAAE,gBAAgB,CAAC,eAAe,CAAC;YACpD,oBAAoB,EAAE,UAAU,CAAC,eAAe,CAAC;SAClD,CACF,CAAC;IACJ,CAAC;IAED,SAAS,IAAI,CACX,eAAmC,EACnC,MAAsC;QAEtC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,CACvD,kBAAkB,CACnB,CAAC;QACF,IAAI,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,IACE,4BAA4B,CAAC,eAAe,CAAC;YAC7C,QAAQ,KAAK,UAAU;YACvB,UAAU,KAAK,aAAa,EAC5B,CAAC;YACD,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CACb,wEAAwE;oBACtE,GAAG,aAAa,KAAK,UAAU,EAAE,CACpC,CAAC;YACJ,CAAC;YACD,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5C,QAAQ,GAAG,aAAa,CAAC;QAC3B,CAAC;QACD,MAAM,oBAAoB,GAAG,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;QAC5E,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CACb,mDAAmD,QAAQ,EAAE,CAC9D,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,kBAAkB,GACtB,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACzE,MAAM,UAAU,GAAG,uCAAuC,CAAC;YACzD,cAAc;YACd,cAAc,EAAE,MAAM;YACtB,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,WAAW,EAAE,oBAAoB;gBAC/B,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC;gBACnC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;YAC/B,eAAe,EAAE;gBACf,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;gBAC/C,QAAQ,EAAE,eAAe,CAAC,OAAO,IAAI,IAAI;gBACzC,YAAY,EAAE,eAAe,CAAC,WAAW,IAAI,IAAI;gBACjD,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,OAAO;oBAClC,CAAC,CAAC;wBACE,OAAO,EAAE,eAAe,CAAC,OAAO;wBAChC,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;wBAC/C,YAAY,EAAE,eAAe,CAAC,WAAW;wBACzC,MAAM,EAAE,eAAe,CAAC,KAAK;wBAC7B,OAAO,EAAE,eAAe,CAAC,MAAM;wBAC/B,WAAW,EAAE,eAAe,CAAC,UAAU;qBACxC;oBACH,CAAC,CAAC,EAAE,CAAC;aACR;YACD,GAAG,CAAC,kBAAkB;gBACpB,CAAC,CAAC,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,eAAe,CAAC,EAAE;gBAChE,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC;QACpE,4BAA4B,CAAC,QAAQ,EAAE,UAAU,EAAE;YACjD,aAAa;YACb,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CAAC,EACf,eAAe,EACf,cAAc,EACd,MAAM,EAKP;QACC,IAAI,CAAC,eAAe,EAAE,cAAc,IAAI;YACtC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CACd,eAAmC,EACnC,OAAuC;QAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACrC,IACE,CAAC,MAAM;YACP,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC;gBACpC,OAAO,CAAC,YAAY,CAAC,eAAe;YACtC,CACE,OAAO,CAAC,iBAAiB,KAAK,SAAS;gBACvC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,iBAAiB,CAChE,EACD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,eAAe,EAAE;YACpB,GAAG,MAAM;YACT,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,cAAc,CACrB,MAAkD,EAClD,eAAmC,EACnC,OAAO,GAGH,EAAE;QAEN,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,KAAK,SAAS;YACrD,CAAC,CAAC,MAAM,CAAC,iBAAiB;YAC1B,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC5B,OAAO,8BAA8B,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,SAAS,aAAa,CACpB,MAAsC;QAEtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACjD,CAAC,CAAC,MAAM,CAAC,iBAAiB;YAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBACjC,CAAC,CAAC,MAAM,CAAC,gBAAgB;gBACzB,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,OAAO,GAAG,MAAM,CACpB,QAAQ,EAAE,kBAAkB,IAAI,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,OAAO,CACxE,CAAC;QACF,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IAED,SAAS,oBAAoB,CAC3B,eAAmC,EACnC,MAAuC;QAEvC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC;QAC3D,IAAI,oCAAoC,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAChE,IACE,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE;YACvC,oBAAoB,EAAE,KAAK;SAC5B,CAAC;YACF,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,EACvC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,8BAA8B,CAClD,eAAe,CAChB,CAAC,gBAAgB,CAAC;QACnB,IAAI,CAAC,eAAe,EAAE;YACpB,GAAG,MAAM;YACT,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EACJ,mDAAmD;gBACnD,GAAG,cAAc,OAAO,aAAa,IAAI,SAAS,EAAE;SACvD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO;QACP,UAAU;QACV,UAAU;QACV,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,OAAO;QACP,oBAAoB;QACpB,cAAc;QACd,aAAa;KACd,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"terminal-dispatch-repository-cli-adapter.js","sourceRoot":"","sources":["../../src/terminal-dispatch-repository-cli-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,EAC9B,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uCAAuC,EACvC,oCAAoC,EACpC,oCAAoC,EAErC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAiD7D,SAAS,oCAAoC,CAC3C,MAAkD,EAClD,eAAmC,EACnC,OAAO,GAGH,EAAE;IAEN,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,KAAK,SAAS;QACrD,CAAC,CAAC,MAAM,CAAC,iBAAiB;QAC1B,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC5B,OAAO,8BAA8B,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,mCAAmC,CAC1C,MAAsC;IAEtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,iBAAiB;QAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACjC,CAAC,CAAC,MAAM,CAAC,gBAAgB;YACzB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,OAAO,GAAG,MAAM,CACpB,QAAQ,EAAE,kBAAkB,IAAI,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,OAAO,CACxE,CAAC;IACF,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED,SAAS,yBAAyB,CAChC,eAAmC;IAEnC,OAAO;QACL,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;QAC/C,QAAQ,EAAE,eAAe,CAAC,OAAO,IAAI,IAAI;QACzC,YAAY,EAAE,eAAe,CAAC,WAAW,IAAI,IAAI;QACjD,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,OAAO;YAClC,CAAC,CAAC;gBACE,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;gBAC/C,YAAY,EAAE,eAAe,CAAC,WAAW;gBACzC,MAAM,EAAE,eAAe,CAAC,KAAK;gBAC7B,OAAO,EAAE,eAAe,CAAC,MAAM;gBAC/B,WAAW,EAAE,eAAe,CAAC,UAAU;aACxC;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,+BAA+B,CACtC,MAAsC,EACtC,eAAmC;IAEnC,IACE,MAAM,CAAC,OAAO,KAAK,CAAC;QACpB,eAAe,CAAC,IAAI,KAAK,MAAM;QAC/B,CAAC,4BAA4B,CAAC,eAAe,CAAC,EAC9C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACrD,CAAC,CAAC,MAAM,CAAC,gBAAgB;QACzB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,aAAa,EAAE,WAAW,CAAC;IACrD,MAAM,YAAY,GAAG,iBAAiB,KAAK,IAAI;QAC7C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,aAAa,EAAE,QAAQ,CAAC;IAC7C,MAAM,eAAe,GAAG,8BAA8B,CAAC,eAAe,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC;IACvD,IACE,aAAa,EAAE,IAAI,KAAK,MAAM;QAC9B,CAAC,YAAY;QACb,CAAC,CAAC,iBAAiB,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,CAAC;QAC3D,YAAY,KAAK,eAAe,CAAC,UAAU;QAC3C,OAAO,YAAY,KAAK,QAAQ;QAChC,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;QACnC,YAAY,IAAI,CAAC;QACjB,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC;QACpC,aAAa,KAAK,SAAS;QAC3B,aAAa,IAAI,CAAC;QAClB,YAAY,KAAK,aAAa,EAC9B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,kBAAkB,GAAuB;QAC7C,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,YAAY;QACxB,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY;QACtD,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,YAAY;QACrB,YAAY,EAAE,EAAE;KACjB,CAAC;IACF,IACE,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC;QACjC,0BAA0B,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,kBAAkB,GAAG;QACzB,GAAG,uBAAuB,CAAC,eAAe,CAAC;QAC3C,SAAS,EAAE,oBAAoB,CAC7B,eAAe,CAAC,QAAQ,CAAC,WAAW,EACpC,YAAY,EACZ,YAAY,CACb;QACD,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,YAAY,IAAI,IAAI;QACjC,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa,CAAC,YAAY,IAAI,IAAI;KACjD,CAAC;IACF,OAAO,uCAAuC,CAAC;QAC7C,cAAc,EAAE,MAAM;QACtB,cAAc,EAAE,MAAM;QACtB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,0BAA0B,CAAC,eAAe,CAAC;QACxD,oEAAoE;QACpE,0EAA0E;QAC1E,yEAAyE;QACzE,wBAAwB;QACxB,eAAe,EAAE,EAAE,GAAG,aAAa,EAAE;QACrC,gBAAgB,EAAE,kBAAkB;KACrC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mCAAmC,CAC1C,MAAc,EACd,OAMC;IAED,IAAI,MAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,oCAAoC,CAAC,MAAM,EAAE;YACpD,UAAU,EAAE,OAAO,CAAC,QAAQ;YAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACnD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,2BAA2B;YAAE,MAAM,KAAK,CAAC;QACtD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,KAAK,CAAC;QACnC,MAAM,UAAU,GAAG,+BAA+B,CAChD,MAAM,EACN,OAAO,CAAC,eAAe,CACxB,CAAC;QACF,IAAI,CAAC,UAAU;YAAE,MAAM,KAAK,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IACE,MAAM,CAAC,OAAO,KAAK,CAAC;QACpB,CAAC,OAAO,CAAC,2BAA2B,EACpC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,+BAA+B,CAChD,MAAM,EACN,OAAO,CAAC,eAAe,CACxB,CAAC;IACF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,CAAC,QAAQ,EAAE,CAC3D,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0CAA0C;IAExD,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,MAAM;QACX,SAAS,EAAE,YAAY;KACxB,CAAC,CAAC;IAEH,SAAS,UAAU;QACjB,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;QAC5D,OAAO,UAAU;YACf,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,UAAU,CAAC,eAAmC;QACrD,OAAO,0BAA0B,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,SAAS,gBAAgB,CAAC,eAAmC;QAC3D,OAAO,0BAA0B,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,SAAS,cAAc;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAED,SAAS,YAAY,CAAC,eAAmC;QACvD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,EACP,wBAAwB,UAAU,CAAC,eAAe,CAAC,OAAO,CAC3D,CAAC;IACJ,CAAC;IAED,SAAS,kBAAkB,CAAC,eAAmC;QAC7D,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,EACP,wBAAwB,gBAAgB,CAAC,eAAe,CAAC,OAAO,CACjE,CAAC;IACJ,CAAC;IAED,SAAS,OAAO,CACd,SAAiB,EACjB,eAAmC,EACnC,OAAO,GAA+B,EAAE;QAExC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;gBAC5B,YAAY,CAAC,eAAe,CAAC;gBAC7B,kBAAkB,CAAC,eAAe,CAAC;aACpC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzC,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9C,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,UAAU,CACjB,eAAmC,EACnC,OAAO,GAAyB,EAAE;QAElC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM;YACxB,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC;YACnC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,kBAAkB,CAAC,SAAiB;QAC3C,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC7D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IA4BD,SAAS,UAAU,CACjB,eAAmC,EACnC,QAAgB,EAChB,QAAmC;QAEnC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,mDAAmD,QAAQ,EAAE,CAC9D,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,MAAM,EAAE,mCAAmC,CAAC,MAAM,EAAE;gBAClD,QAAQ;gBACR,eAAe;gBACf,iBAAiB,EAAE,gBAAgB,CAAC,eAAe,CAAC;gBACpD,oBAAoB,EAAE,UAAU,CAAC,eAAe,CAAC;gBACjD,2BAA2B,EACzB,QAAQ,KAAK,WAAW;oBACxB,QAAQ,KAAK,UAAU,CAAC,eAAe,CAAC;oBACxC,4BAA4B,CAAC,eAAe,CAAC;aAChD,CAAC;YACF,MAAM;SACP,CAAC;IACJ,CAAC;IAED,SAAS,cAAc,CACrB,MAAsC,EACtC,eAAmC;QAEnC,MAAM,YAAY,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,8BAA8B,CAClD,eAAe,CAChB,CAAC,gBAAgB,CAAC;QACnB,IAAI,YAAY,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/D,CAAC;IAED,SAAS,wCAAwC,CAC/C,MAAsC,EACtC,eAAmC;QAEnC,OAAO,MAAM,CAAC,OAAO,KAAK,CAAC;YACzB,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,MAAM;YAClD,8BAA8B,CAC5B,MAAM,CAAC,iBAAiB,EACxB,eAAe,EACf,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B,CAAC;IACN,CAAC;IAED,SAAS,aAAa,CACpB,OAAsB,EACtB,eAAmC;QAEnC,IACE,CAAC,OAAO,CAAC,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;YAClE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,EAC/D,CAAC;YACD,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACjE,IAAI,QAAQ,KAAK,WAAW;YAAE,OAAO,eAAe,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,oBAAoB,CAAC;QACxD,IACE,OAAO,CAAC,QAAQ,KAAK,WAAW;YAChC,CAAC,wCAAwC,CACvC,OAAO,CAAC,MAAM,EACd,eAAe,CAChB,EACD,CAAC;YACD,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,SAAS,mBAAmB,CAC1B,SAAwB,EACxB,MAAqB,EACrB,eAAmC;QAEnC,MAAM,eAAe,GAAG,mCAAmC,CACzD,SAAS,CAAC,MAAM,CACjB,CAAC;QACF,MAAM,YAAY,GAAG,mCAAmC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxE,IACE,eAAe,KAAK,SAAS;YAC7B,YAAY,KAAK,SAAS;YAC1B,eAAe,KAAK,YAAY,EAChC,CAAC;YACD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;QAClD,CAAC;QACD,MAAM,uBAAuB,GAAG,aAAa,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC1E,MAAM,oBAAoB,GAAG,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpE,IACE,uBAAuB,KAAK,eAAe;YAC3C,oBAAoB,KAAK,eAAe,EACxC,CAAC;YACD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC/D,CAAC;QACD,IACE,uBAAuB,KAAK,eAAe;YAC3C,oBAAoB,KAAK,eAAe,EACxC,CAAC;YACD,OAAO;gBACL,cAAc,EAAE,eAAe;gBAC/B,KAAK,EAAE,MAAM;gBACb,cAAc,EAAE,SAAS;aAC1B,CAAC;QACJ,CAAC;QACD,IACE,uBAAuB,KAAK,eAAe;YAC3C,oBAAoB,KAAK,eAAe,EACxC,CAAC;YACD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;IAClD,CAAC;IAED,SAAS,sBAAsB,CAAC,KAAwB;QACtD,OAAO,IAAI,KAAK,CACd,wEAAwE;YACtE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACnB,CAAC;IACJ,CAAC;IAED,SAAS,YAAY,CACnB,eAAmC;QAEnC,MAAM,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO;gBACL,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC;oBACzC,CAAC,CAAC,UAAU,CAAC,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC;oBACzD,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;QACD,MAAM,eAAe,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QAEjD,MAAM,SAAS,GAAG,eAAe;YAC/B,CAAC,CAAC,UAAU,CAAC,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC;YACzD,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,MAAM,GAAG,YAAY;YACzB,CAAC,CAAC,UAAU,CAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC;YACnD,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,MAAM,cAAc,GAAG,mBAAmB,CACxC,SAAS,EACT,MAAM,EACN,eAAe,CAChB,CAAC;YACF,IAAI,cAAc,CAAC,cAAc,KAAK,eAAe,EAAE,CAAC;gBACtD,OAAO;oBACL,QAAQ,EAAE,cAAc,CAAC,KAAK;oBAC9B,cAAc,EAAE,cAAc,CAAC,cAAc;iBAC9C,CAAC;YACJ,CAAC;YACD,IAAI,cAAc,CAAC,cAAc,KAAK,eAAe;gBAAE,OAAO,EAAE,CAAC;YACjE,MAAM,sBAAsB,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,SAAS;YAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAC9C,IACE,MAAM;YACN,4BAA4B,CAAC,eAAe,CAAC,EAC7C,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YAChE,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC7B,qEAAqE;gBACrE,qEAAqE;gBACrE,sEAAsE;gBACtE,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,8DAA8D;oBAC5D,UAAU,CACb,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,SAAS,IAAI,CACX,eAAmC;QAEnC,OAAO,YAAY,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;IACxD,CAAC;IAED,SAAS,IAAI,CACX,eAAmC,EACnC,MAAsC;QAEtC,MAAM,SAAS,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,MAAM,cAAc,GAAG,QAAQ,EAAE,MAAM,CAAC;QACxC,IAAI,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;QACjE,MAAM,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,oBAAoB,GAAG,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;QAC5E,MAAM,kBAAkB,GACtB,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACzE,MAAM,UAAU,GAAG,uCAAuC,CAAC;YACzD,cAAc;YACd,cAAc,EAAE,MAAM;YACtB,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,WAAW,EAAE,oBAAoB;gBAC/B,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC;gBACnC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC;YAC/B,eAAe,EAAE,yBAAyB,CAAC,eAAe,CAAC;YAC3D,GAAG,CAAC,kBAAkB;gBACpB,CAAC,CAAC,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,eAAe,CAAC,EAAE;gBAChE,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,IACE,4BAA4B,CAAC,eAAe,CAAC;YAC7C,QAAQ,EAAE,QAAQ,KAAK,QAAQ;YAC/B,QAAQ,KAAK,UAAU;YACvB,UAAU,KAAK,aAAa,EAC5B,CAAC;YACD,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;gBAChD,MAAM,gBAAgB,GAAG,UAAU,CACjC,eAAe,EACf,aAAa,EACb,WAAW,CACZ,CAAC;gBACF,IACE,CAAC,cAAc;oBACf,gBAAgB,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EACjD,CAAC;oBACD,MAAM,sBAAsB,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YACD,MAAM,aAAa,GAAG,UAAU,CAC9B,eAAe,EACf,UAAU,EACV,QAAQ,CACT,CAAC;YACF,IAAI,aAAa,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC7C,MAAM,sBAAsB,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5C,QAAQ,GAAG,aAAa,CAAC;QAC3B,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CACb,mDAAmD,QAAQ,EAAE,CAC9D,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC;QACpE,4BAA4B,CAAC,QAAQ,EAAE,UAAU,EAAE;YACjD,aAAa;YACb,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CAAC,EACf,eAAe,EACf,cAAc,EACd,MAAM,EAKP;QACC,IAAI,CAAC,eAAe,EAAE,cAAc,IAAI;YACtC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO,CACd,eAAmC,EACnC,OAAuC;QAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACrC,IACE,CAAC,MAAM;YACP,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC;gBACpC,OAAO,CAAC,YAAY,CAAC,eAAe;YACtC,CACE,OAAO,CAAC,iBAAiB,KAAK,SAAS;gBACvC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,iBAAiB,CAChE,EACD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,eAAe,EAAE;YACpB,GAAG,MAAM;YACT,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,oBAAoB,CAC3B,eAAmC,EACnC,MAAuC;QAEvC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC;QAC3D,IAAI,oCAAoC,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAChE,IACE,CAAC,oCAAoC,CAAC,MAAM,EAAE,eAAe,EAAE;YAC7D,oBAAoB,EAAE,KAAK;SAC5B,CAAC;YACF,oCAAoC,CAAC,MAAM,EAAE,eAAe,CAAC,EAC7D,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,cAAc,GAAG,mCAAmC,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,8BAA8B,CAClD,eAAe,CAChB,CAAC,gBAAgB,CAAC;QACnB,IAAI,CAAC,eAAe,EAAE;YACpB,GAAG,MAAM;YACT,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EACJ,mDAAmD;gBACnD,GAAG,cAAc,OAAO,aAAa,IAAI,SAAS,EAAE;SACvD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO;QACP,UAAU;QACV,UAAU;QACV,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,OAAO;QACP,oBAAoB;QACpB,cAAc,EAAE,oCAAoC;QACpD,aAAa,EAAE,mCAAmC;KACnD,CAAC,CAAC;AACL,CAAC"}
@@ -5,6 +5,7 @@ import { type HumanObservedHandoffTargetSnapshot, type ManagedSessionState } fro
5
5
  import { type Conversation } from "./protocol.js";
6
6
  import { type TerminalAgentAdapterRegistry, type TerminalControlRef, type TerminalRuntimeIdentity } from "./terminal-agent-adapter.js";
7
7
  import { TerminalAgentBridge, type ResolvedTerminalConversation } from "./terminal-agent-bridge.js";
8
+ import { type TerminalDispatchOwnership } from "./terminal-action-projection.js";
8
9
  import { type CodexAllowedCompanionSet, type CodexSendAuthorityContext, type DeferredCodexForegroundDispatchSnapshot } from "./terminal-authority-policy.js";
9
10
  import { type TerminalNativeIdentity, type TerminalNativeIdentityObservation } from "./terminal-binding-authority.js";
10
11
  import { type TerminalScopedCodexApprovalBoundary, type TerminalScopedCodexApprovalPromptSnapshot } from "./terminal-scoped-approval-authority.js";
@@ -70,7 +71,7 @@ interface DeferredCodexAuthorityObservation {
70
71
  sourceAbandonmentFingerprint?: string;
71
72
  exactSource: boolean;
72
73
  }
73
- interface TerminalListScanEntry {
74
+ export interface TerminalListScanEntry {
74
75
  agent?: string;
75
76
  activity_state?: string;
76
77
  cwd?: string;
@@ -83,18 +84,27 @@ interface TerminalListScanEntry {
83
84
  workspace?: string;
84
85
  [field: string]: unknown;
85
86
  }
86
- interface TerminalListScan {
87
+ export interface TerminalListScan {
87
88
  terminalControlled: TerminalListScanEntry[];
88
89
  summary: {
89
90
  error?: string;
90
91
  [field: string]: unknown;
91
92
  };
92
93
  }
93
- interface TerminalDispatchOwnershipResult {
94
- state: "none" | "current" | "conflict";
95
- conversation?: Conversation;
96
- conflict?: JsonObject;
97
- }
94
+ export type ExactTerminalListObservation = {
95
+ state: "available";
96
+ rawTerminal: TerminalListScanEntry;
97
+ terminal: TerminalListScanEntry;
98
+ summary: TerminalListScan["summary"];
99
+ } | {
100
+ state: "absent";
101
+ summary: TerminalListScan["summary"];
102
+ } | {
103
+ state: "unavailable";
104
+ reason?: string;
105
+ summary: TerminalListScan["summary"];
106
+ };
107
+ type TerminalDispatchOwnershipResult = TerminalDispatchOwnership<Conversation, JsonObject>;
98
108
  type TerminalScopedCodexApprovalResolution = {
99
109
  state: "unmanaged";
100
110
  } | {
@@ -160,6 +170,15 @@ export interface TerminalListStoreObservationPorts {
160
170
  isVerifiedDeadTerminalAgentProcess(conversation: Conversation | JsonObject): boolean;
161
171
  loadTerminalBridgeDispatchLedger(terminalControl: TerminalControlRef): TerminalDispatchLedgerDocument | undefined;
162
172
  loadTerminalDispatchLedgerOwner(ledger: TerminalDispatchLedgerDocument): Conversation | undefined;
173
+ listTerminalWatches?(storeDir: string, options?: {
174
+ includeAll?: boolean;
175
+ }): JsonObject[];
176
+ scanTerminalWatchesForExactObservation?(storeDir: string, options?: {
177
+ includeAll?: boolean;
178
+ }): {
179
+ watches: JsonObject[];
180
+ activeOverlayTrusted: boolean;
181
+ };
163
182
  managedSessionStoreDirForConversation(conversation: Conversation): string | undefined;
164
183
  managedTurnsForSession(storeDir: string, sessionId: string): Conversation[];
165
184
  matchesConfiguredWorkspace(configured: unknown, observed: unknown): boolean;
@@ -230,7 +249,12 @@ export interface TerminalListCliFacade {
230
249
  options: TerminalListCliOptions;
231
250
  agentFilter?: ExecutorKind;
232
251
  statusFilter?: string;
252
+ terminalId?: string;
233
253
  }): Promise<TerminalListScan>;
254
+ observeExactTerminal(request: {
255
+ options: TerminalListCliOptions;
256
+ terminalId: string;
257
+ }): Promise<ExactTerminalListObservation>;
234
258
  provisionalManagedBindingTurnCount(storeDir: string, session: ManagedSessionState): number | undefined;
235
259
  managedSessionHasUnresolvedNativeTransition(storeDir: string, session: ManagedSessionState): boolean;
236
260
  managedSessionHasAnyNativeTransition(storeDir: string, session: ManagedSessionState): boolean;