@scotthuang/agent-knock-knock 0.11.7 → 0.12.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/CHANGELOG.md +17 -0
- package/README.md +21 -15
- package/dist/src/cli-core.d.ts +48 -0
- package/dist/src/cli-core.js +20089 -0
- package/dist/src/cli-core.js.map +1 -0
- package/dist/src/cli.js +12 -19896
- package/dist/src/cli.js.map +1 -1
- package/dist/src/doctor-capabilities.d.ts +10 -2
- package/dist/src/doctor-capabilities.js +48 -7
- package/dist/src/doctor-capabilities.js.map +1 -1
- package/dist/src/herdr-terminal-control-provider.d.ts +115 -0
- package/dist/src/herdr-terminal-control-provider.js +961 -0
- package/dist/src/herdr-terminal-control-provider.js.map +1 -0
- package/dist/src/managed-session.js +37 -11
- package/dist/src/managed-session.js.map +1 -1
- package/dist/src/native-thread-resume-snapshot.d.ts +9 -2
- package/dist/src/native-thread-resume-snapshot.js +46 -7
- package/dist/src/native-thread-resume-snapshot.js.map +1 -1
- package/dist/src/openclaw-plugin-helpers.js +4 -4
- package/dist/src/openclaw-plugin-helpers.js.map +1 -1
- package/dist/src/openclaw-plugin.js +28 -26
- package/dist/src/openclaw-plugin.js.map +1 -1
- package/dist/src/terminal-agent-adapter.d.ts +3 -2
- package/dist/src/terminal-agent-adapter.js +10 -6
- package/dist/src/terminal-agent-adapter.js.map +1 -1
- package/dist/src/terminal-agent-bridge.d.ts +4 -0
- package/dist/src/terminal-agent-bridge.js +23 -15
- package/dist/src/terminal-agent-bridge.js.map +1 -1
- package/dist/src/terminal-control-provider.d.ts +11 -0
- package/dist/src/terminal-control-provider.js +127 -3
- package/dist/src/terminal-control-provider.js.map +1 -1
- package/dist/src/terminal-control-ref.d.ts +28 -6
- package/dist/src/terminal-control-ref.js +151 -4
- package/dist/src/terminal-control-ref.js.map +1 -1
- package/docs/quickstart-herdr.md +37 -0
- package/openclaw.plugin.json +2 -2
- package/package.json +4 -2
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +17 -17
|
@@ -9,24 +9,38 @@
|
|
|
9
9
|
export type TerminalControlCapability = "screen_status" | "send_keys" | "terminal_approval" | "screen_completion" | "durable_completion" | "terminal_cancel";
|
|
10
10
|
/** Transport capabilities owned by a terminal provider, not an agent TUI. */
|
|
11
11
|
export type TerminalProviderCapability = "screen_capture" | "ansi_capture" | "text_delivery" | "key_delivery" | "process_inspection" | "stable_resource_resolution";
|
|
12
|
-
|
|
13
|
-
kind: "tmux";
|
|
12
|
+
interface TerminalControlRefBase {
|
|
14
13
|
target: string;
|
|
15
14
|
socketPath?: string;
|
|
16
15
|
session: string;
|
|
17
|
-
window: number;
|
|
18
|
-
pane: number;
|
|
19
16
|
panePid: number;
|
|
20
17
|
currentCommand?: string;
|
|
21
18
|
currentPath?: string;
|
|
22
19
|
capabilities: TerminalControlCapability[];
|
|
23
20
|
}
|
|
21
|
+
export interface TmuxTerminalControlRef extends TerminalControlRefBase {
|
|
22
|
+
kind: "tmux";
|
|
23
|
+
window: number;
|
|
24
|
+
pane: number;
|
|
25
|
+
}
|
|
26
|
+
/** Persisted routing and identity owned by a Herdr server session. */
|
|
27
|
+
export interface HerdrTerminalControlRef extends TerminalControlRefBase {
|
|
28
|
+
kind: "herdr";
|
|
29
|
+
/** Canonical Herdr session directory, when reported by session discovery. */
|
|
30
|
+
sessionDir?: string;
|
|
31
|
+
workspaceId: string;
|
|
32
|
+
tabId: string;
|
|
33
|
+
/** Current public route. A cross-workspace move may replace this value. */
|
|
34
|
+
paneId: string;
|
|
35
|
+
/** Stable resource identity for the lifetime of the underlying PTY. */
|
|
36
|
+
terminalId: string;
|
|
37
|
+
}
|
|
24
38
|
/**
|
|
25
39
|
* Versioned union for provider-owned persisted/public control records.
|
|
26
40
|
* New providers add a member here; generic callers consume
|
|
27
41
|
* TerminalEndpointRef instead of narrowing this union themselves.
|
|
28
42
|
*/
|
|
29
|
-
export type TerminalControlRef = TmuxTerminalControlRef;
|
|
43
|
+
export type TerminalControlRef = TmuxTerminalControlRef | HerdrTerminalControlRef;
|
|
30
44
|
export interface TerminalEndpointIdentity {
|
|
31
45
|
providerKind: string;
|
|
32
46
|
endpointKey: string;
|
|
@@ -70,6 +84,11 @@ export interface TerminalControlEvidence {
|
|
|
70
84
|
pane_pid?: number | null;
|
|
71
85
|
server_socket_path?: string | null;
|
|
72
86
|
pane_id?: string | null;
|
|
87
|
+
session_name?: string | null;
|
|
88
|
+
session_dir?: string | null;
|
|
89
|
+
workspace_id?: string | null;
|
|
90
|
+
tab_id?: string | null;
|
|
91
|
+
terminal_id?: string | null;
|
|
73
92
|
current_path?: string | null;
|
|
74
93
|
}
|
|
75
94
|
export declare function createTerminalEndpointRef(value: {
|
|
@@ -105,7 +124,7 @@ export declare function sameTerminalControlEvidenceIncarnation(left: unknown, ri
|
|
|
105
124
|
export declare function associateTerminalEndpointEvidence(terminalControl: TerminalControlRef, evidence: unknown): TerminalControlRef;
|
|
106
125
|
/** Exact v0.11.x selector/incarnation tuple for compatibility artifacts. */
|
|
107
126
|
export declare function terminalLegacyControlEvidence(terminalControl: TerminalControlRef): {
|
|
108
|
-
kind: "
|
|
127
|
+
kind: TerminalControlRef["kind"];
|
|
109
128
|
target: string;
|
|
110
129
|
socket_path: string | null;
|
|
111
130
|
pane_pid: number;
|
|
@@ -114,6 +133,9 @@ export declare function terminalLegacyControlEvidence(terminalControl: TerminalC
|
|
|
114
133
|
export declare function terminalLegacyRuntimeRoute(terminalControl: TerminalControlRef): {
|
|
115
134
|
target: string;
|
|
116
135
|
socket_path: string | null;
|
|
136
|
+
kind?: "herdr";
|
|
117
137
|
};
|
|
118
138
|
export declare function terminalControlWithCapabilities(terminalControl: TerminalControlRef, capabilities: readonly TerminalControlCapability[]): TerminalControlRef;
|
|
119
139
|
export declare function tmuxTerminalRouteKey(endpointKey: string, target: string, socketPath?: string): string;
|
|
140
|
+
export declare function herdrTerminalRouteKey(endpointKey: string, session: string, paneId: string): string;
|
|
141
|
+
export {};
|
|
@@ -52,10 +52,42 @@ export function terminalEndpointFromControlRef(terminalControl) {
|
|
|
52
52
|
providerRef: terminalControl
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
+
case "herdr": {
|
|
56
|
+
assertHerdrControlIdentity(terminalControl);
|
|
57
|
+
const endpointKey = `socket:${terminalControl.socketPath}`;
|
|
58
|
+
return {
|
|
59
|
+
identity: {
|
|
60
|
+
providerKind: "herdr",
|
|
61
|
+
endpointKey,
|
|
62
|
+
resourceKey: `terminal-id:${terminalControl.terminalId}`
|
|
63
|
+
},
|
|
64
|
+
route: {
|
|
65
|
+
routeKey: herdrTerminalRouteKey(endpointKey, terminalControl.session, terminalControl.paneId),
|
|
66
|
+
label: terminalControl.target,
|
|
67
|
+
currentCommand: terminalControl.currentCommand,
|
|
68
|
+
currentPath: terminalControl.currentPath
|
|
69
|
+
},
|
|
70
|
+
processAnchorPid: terminalControl.panePid,
|
|
71
|
+
capabilities: [...terminalControl.capabilities],
|
|
72
|
+
providerRef: terminalControl
|
|
73
|
+
};
|
|
74
|
+
}
|
|
55
75
|
}
|
|
56
76
|
}
|
|
57
77
|
export function hasCanonicalTerminalEndpoint(terminalControl) {
|
|
58
|
-
|
|
78
|
+
if (associatedEndpoints.has(terminalControl)) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
if (terminalControl.kind !== "herdr") {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
terminalEndpointFromControlRef(terminalControl);
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
59
91
|
}
|
|
60
92
|
export function terminalEndpointIdentityKey(value) {
|
|
61
93
|
const identity = isTerminalEndpointRef(value)
|
|
@@ -128,6 +160,27 @@ export function terminalControlEvidence(terminalControl) {
|
|
|
128
160
|
: null,
|
|
129
161
|
current_path: terminalControl.currentPath ?? null
|
|
130
162
|
};
|
|
163
|
+
case "herdr":
|
|
164
|
+
return {
|
|
165
|
+
schema: "agent-knock-knock/terminal-endpoint",
|
|
166
|
+
version: 1,
|
|
167
|
+
kind: endpoint.identity.providerKind,
|
|
168
|
+
endpoint_key: endpoint.identity.endpointKey,
|
|
169
|
+
resource_key: endpoint.identity.resourceKey,
|
|
170
|
+
route_key: endpoint.route.routeKey,
|
|
171
|
+
process_anchor_pid: endpoint.processAnchorPid ?? null,
|
|
172
|
+
target: terminalControl.target,
|
|
173
|
+
socket_path: terminalControl.socketPath ?? null,
|
|
174
|
+
pane_pid: terminalControl.panePid,
|
|
175
|
+
server_socket_path: terminalControl.socketPath ?? null,
|
|
176
|
+
pane_id: terminalControl.paneId,
|
|
177
|
+
session_name: terminalControl.session,
|
|
178
|
+
session_dir: terminalControl.sessionDir ?? null,
|
|
179
|
+
workspace_id: terminalControl.workspaceId,
|
|
180
|
+
tab_id: terminalControl.tabId,
|
|
181
|
+
terminal_id: terminalControl.terminalId,
|
|
182
|
+
current_path: terminalControl.currentPath ?? null
|
|
183
|
+
};
|
|
131
184
|
}
|
|
132
185
|
}
|
|
133
186
|
/**
|
|
@@ -152,6 +205,19 @@ export function terminalEndpointIdentityFromEvidence(value) {
|
|
|
152
205
|
return undefined;
|
|
153
206
|
}
|
|
154
207
|
}
|
|
208
|
+
else if (providerKind === "herdr") {
|
|
209
|
+
const herdr = herdrIdentityFromEvidence(value);
|
|
210
|
+
if (!herdr ||
|
|
211
|
+
herdr.identity.endpointKey !== endpointKey ||
|
|
212
|
+
herdr.identity.resourceKey !== resourceKey ||
|
|
213
|
+
(nonEmptyString(value.route_key) !== undefined &&
|
|
214
|
+
nonEmptyString(value.route_key) !== herdr.routeKey)) {
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
155
221
|
return { providerKind, endpointKey, resourceKey };
|
|
156
222
|
}
|
|
157
223
|
const legacy = tmuxIdentityFromEvidence(value);
|
|
@@ -167,8 +233,10 @@ export function terminalRouteKeyFromEvidence(value) {
|
|
|
167
233
|
}
|
|
168
234
|
const canonical = nonEmptyString(value.route_key);
|
|
169
235
|
if (canonical) {
|
|
170
|
-
const
|
|
171
|
-
|
|
236
|
+
const derived = value.kind === "herdr"
|
|
237
|
+
? herdrIdentityFromEvidence(value)
|
|
238
|
+
: tmuxIdentityFromEvidence(value);
|
|
239
|
+
if (derived?.routeKey !== canonical) {
|
|
172
240
|
return undefined;
|
|
173
241
|
}
|
|
174
242
|
return canonical;
|
|
@@ -240,6 +308,31 @@ export function associateTerminalEndpointEvidence(terminalControl, evidence) {
|
|
|
240
308
|
}
|
|
241
309
|
const identity = terminalEndpointIdentityFromEvidence(evidence);
|
|
242
310
|
const routeKey = terminalRouteKeyFromEvidence(evidence);
|
|
311
|
+
if (terminalControl.kind === "herdr") {
|
|
312
|
+
const endpoint = terminalEndpointFromControlRef(terminalControl);
|
|
313
|
+
if (!identity ||
|
|
314
|
+
!routeKey ||
|
|
315
|
+
!sameTerminalEndpointIdentity(identity, endpoint) ||
|
|
316
|
+
routeKey !== endpoint.route.routeKey ||
|
|
317
|
+
positiveInteger(evidence.process_anchor_pid ?? evidence.pane_pid) !==
|
|
318
|
+
endpoint.processAnchorPid) {
|
|
319
|
+
throw new Error("terminal endpoint evidence conflicts with its Herdr control reference");
|
|
320
|
+
}
|
|
321
|
+
createTerminalEndpointRef({
|
|
322
|
+
identity,
|
|
323
|
+
route: {
|
|
324
|
+
routeKey,
|
|
325
|
+
label: terminalControl.target,
|
|
326
|
+
currentCommand: terminalControl.currentCommand,
|
|
327
|
+
currentPath: nonEmptyString(evidence.current_path) ??
|
|
328
|
+
terminalControl.currentPath
|
|
329
|
+
},
|
|
330
|
+
processAnchorPid: endpoint.processAnchorPid,
|
|
331
|
+
capabilities: terminalControl.capabilities,
|
|
332
|
+
providerRef: terminalControl
|
|
333
|
+
});
|
|
334
|
+
return terminalControl;
|
|
335
|
+
}
|
|
243
336
|
const legacy = legacyTerminalEvidence(evidence);
|
|
244
337
|
if (!identity ||
|
|
245
338
|
!routeKey ||
|
|
@@ -265,7 +358,7 @@ export function associateTerminalEndpointEvidence(terminalControl, evidence) {
|
|
|
265
358
|
/** Exact v0.11.x selector/incarnation tuple for compatibility artifacts. */
|
|
266
359
|
export function terminalLegacyControlEvidence(terminalControl) {
|
|
267
360
|
return {
|
|
268
|
-
kind:
|
|
361
|
+
kind: terminalControl.kind,
|
|
269
362
|
target: terminalControl.target,
|
|
270
363
|
socket_path: terminalControl.socketPath ?? null,
|
|
271
364
|
pane_pid: terminalControl.panePid
|
|
@@ -273,6 +366,13 @@ export function terminalLegacyControlEvidence(terminalControl) {
|
|
|
273
366
|
}
|
|
274
367
|
/** Exact legacy runtime route serialized by v0.11.x ledgers and locks. */
|
|
275
368
|
export function terminalLegacyRuntimeRoute(terminalControl) {
|
|
369
|
+
if (terminalControl.kind === "herdr") {
|
|
370
|
+
return {
|
|
371
|
+
kind: "herdr",
|
|
372
|
+
target: terminalControl.target,
|
|
373
|
+
socket_path: terminalControl.socketPath ?? null
|
|
374
|
+
};
|
|
375
|
+
}
|
|
276
376
|
return {
|
|
277
377
|
target: terminalControl.target,
|
|
278
378
|
socket_path: terminalControl.socketPath ?? null
|
|
@@ -301,6 +401,14 @@ export function tmuxTerminalRouteKey(endpointKey, target, socketPath) {
|
|
|
301
401
|
socket_path: socketPath ?? null
|
|
302
402
|
});
|
|
303
403
|
}
|
|
404
|
+
export function herdrTerminalRouteKey(endpointKey, session, paneId) {
|
|
405
|
+
return JSON.stringify({
|
|
406
|
+
provider_kind: "herdr",
|
|
407
|
+
endpoint_key: endpointKey,
|
|
408
|
+
session,
|
|
409
|
+
pane_id: paneId
|
|
410
|
+
});
|
|
411
|
+
}
|
|
304
412
|
function tmuxIdentityFromEvidence(value) {
|
|
305
413
|
const target = nonEmptyString(value.target);
|
|
306
414
|
const panePid = positiveInteger(value.pane_pid ?? value.panePid);
|
|
@@ -330,6 +438,31 @@ function tmuxIdentityFromEvidence(value) {
|
|
|
330
438
|
routeKey
|
|
331
439
|
};
|
|
332
440
|
}
|
|
441
|
+
function herdrIdentityFromEvidence(value) {
|
|
442
|
+
const socketPath = nonEmptyString(value.server_socket_path ?? value.socket_path ?? value.socketPath);
|
|
443
|
+
const session = nonEmptyString(value.session_name ?? value.session);
|
|
444
|
+
const paneId = nonEmptyString(value.pane_id ?? value.paneId);
|
|
445
|
+
const terminalId = nonEmptyString(value.terminal_id ?? value.terminalId);
|
|
446
|
+
const panePid = positiveInteger(value.pane_pid ?? value.panePid);
|
|
447
|
+
const processAnchorPid = positiveInteger(value.process_anchor_pid);
|
|
448
|
+
if (!socketPath ||
|
|
449
|
+
!session ||
|
|
450
|
+
!paneId ||
|
|
451
|
+
!terminalId ||
|
|
452
|
+
panePid === undefined ||
|
|
453
|
+
(processAnchorPid !== undefined && processAnchorPid !== panePid)) {
|
|
454
|
+
return undefined;
|
|
455
|
+
}
|
|
456
|
+
const endpointKey = `socket:${socketPath}`;
|
|
457
|
+
return {
|
|
458
|
+
identity: {
|
|
459
|
+
providerKind: "herdr",
|
|
460
|
+
endpointKey,
|
|
461
|
+
resourceKey: `terminal-id:${terminalId}`
|
|
462
|
+
},
|
|
463
|
+
routeKey: herdrTerminalRouteKey(endpointKey, session, paneId)
|
|
464
|
+
};
|
|
465
|
+
}
|
|
333
466
|
function hasCanonicalEvidence(value) {
|
|
334
467
|
return isRecord(value) &&
|
|
335
468
|
value.schema === "agent-knock-knock/terminal-endpoint" &&
|
|
@@ -380,6 +513,20 @@ function assertTmuxControlIdentity(value) {
|
|
|
380
513
|
throw new Error("tmux terminal control requires a target and positive pane PID");
|
|
381
514
|
}
|
|
382
515
|
}
|
|
516
|
+
function assertHerdrControlIdentity(value) {
|
|
517
|
+
if (!value.target ||
|
|
518
|
+
!value.socketPath ||
|
|
519
|
+
!value.session ||
|
|
520
|
+
!value.workspaceId ||
|
|
521
|
+
!value.tabId ||
|
|
522
|
+
!value.paneId ||
|
|
523
|
+
!value.terminalId ||
|
|
524
|
+
!Number.isSafeInteger(value.panePid) ||
|
|
525
|
+
value.panePid <= 0) {
|
|
526
|
+
throw new Error("Herdr terminal control requires a session socket, stable terminal ID, " +
|
|
527
|
+
"current pane route, and positive shell PID");
|
|
528
|
+
}
|
|
529
|
+
}
|
|
383
530
|
function isTerminalEndpointRef(value) {
|
|
384
531
|
return isRecord(value) &&
|
|
385
532
|
isTerminalEndpointIdentity(value.identity) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-control-ref.js","sourceRoot":"","sources":["../../src/terminal-control-ref.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terminal-control-ref.js","sourceRoot":"","sources":["../../src/terminal-control-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+GH,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAA+B,CAAC;AAEvE,MAAM,UAAU,yBAAyB,CAAC,KAMzC;IACC,MAAM,QAAQ,GAAwB;QACpC,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;QAC/B,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE;QACzB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;QACrC,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;IACF,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,eAAmC;IAEnC,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,QAAQ,eAAe,CAAC,IAAI,EAAE,CAAC;QAC7B,KAAK,MAAM,EAAE,CAAC;YACZ,yBAAyB,CAAC,eAAe,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU;gBAC5C,CAAC,CAAC,UAAU,eAAe,CAAC,UAAU,EAAE;gBACxC,CAAC,CAAC,sBAAsB,CAAC;YAC3B,MAAM,QAAQ,GAAG,oBAAoB,CACnC,WAAW,EACX,eAAe,CAAC,MAAM,EACtB,eAAe,CAAC,UAAU,CAC3B,CAAC;YACF,OAAO;gBACL,QAAQ,EAAE;oBACR,YAAY,EAAE,MAAM;oBACpB,WAAW;oBACX,mEAAmE;oBACnE,oEAAoE;oBACpE,sDAAsD;oBACtD,WAAW,EAAE,UAAU,QAAQ,aAAa,eAAe,CAAC,OAAO,EAAE;iBACtE;gBACD,KAAK,EAAE;oBACL,QAAQ;oBACR,KAAK,EAAE,eAAe,CAAC,MAAM;oBAC7B,cAAc,EAAE,eAAe,CAAC,cAAc;oBAC9C,WAAW,EAAE,eAAe,CAAC,WAAW;iBACzC;gBACD,gBAAgB,EAAE,eAAe,CAAC,OAAO;gBACzC,YAAY,EAAE,CAAC,GAAG,eAAe,CAAC,YAAY,CAAC;gBAC/C,WAAW,EAAE,eAAe;aAC7B,CAAC;QACJ,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,0BAA0B,CAAC,eAAe,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,UAAU,eAAe,CAAC,UAAU,EAAE,CAAC;YAC3D,OAAO;gBACL,QAAQ,EAAE;oBACR,YAAY,EAAE,OAAO;oBACrB,WAAW;oBACX,WAAW,EAAE,eAAe,eAAe,CAAC,UAAU,EAAE;iBACzD;gBACD,KAAK,EAAE;oBACL,QAAQ,EAAE,qBAAqB,CAC7B,WAAW,EACX,eAAe,CAAC,OAAO,EACvB,eAAe,CAAC,MAAM,CACvB;oBACD,KAAK,EAAE,eAAe,CAAC,MAAM;oBAC7B,cAAc,EAAE,eAAe,CAAC,cAAc;oBAC9C,WAAW,EAAE,eAAe,CAAC,WAAW;iBACzC;gBACD,gBAAgB,EAAE,eAAe,CAAC,OAAO;gBACzC,YAAY,EAAE,CAAC,GAAG,eAAe,CAAC,YAAY,CAAC;gBAC/C,WAAW,EAAE,eAAe;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,eAAmC;IAEnC,IAAI,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,8BAA8B,CAAC,eAAe,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAA0E;IAE1E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC3C,CAAC,CAAC,KAAK,CAAC,QAAQ;QAChB,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC;YACjC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,QAAQ,CAAC,YAAY;QACpC,YAAY,EAAE,QAAQ,CAAC,WAAW;QAClC,YAAY,EAAE,QAAQ,CAAC,WAAW;KACnC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAyE,EACzE,KAA0E;IAE1E,OAAO,2BAA2B,CAAC,IAAI,CAAC,KAAK,2BAA2B,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAA8C,EAC9C,KAA+C;IAE/C,IACE,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAC5B,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,EAC7E,CAAC;QACD,OAAO,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC;QAC3C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;QACrB,CAAC,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IACxD,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC7C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ;QACtB,CAAC,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IACzD,OAAO,SAAS,KAAK,UAAU,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,IAA8C,EAC9C,KAA+C;IAE/C,IACE,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAC5B,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,EAC7E,CAAC;QACD,OAAO,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAChD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,4BAA4B,CAAC,YAAY,EAAE,aAAa,CAAC;QAC9D,YAAY,CAAC,gBAAgB,KAAK,aAAa,CAAC,gBAAgB,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,eAAmC;IAEnC,MAAM,QAAQ,GAAG,8BAA8B,CAAC,eAAe,CAAC,CAAC;IACjE,QAAQ,eAAe,CAAC,IAAI,EAAE,CAAC;QAC7B,KAAK,MAAM;YACT,OAAO;gBACL,MAAM,EAAE,qCAAqC;gBAC7C,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY;gBACpC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW;gBAC3C,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW;gBAC3C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ;gBAClC,kBAAkB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,IAAI;gBACrD,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;gBAC/C,QAAQ,EAAE,eAAe,CAAC,OAAO,IAAI,IAAI;gBACzC,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;oBACrE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;oBACvD,CAAC,CAAC,IAAI;gBACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;oBAC3D,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;oBACxD,CAAC,CAAC,IAAI;gBACR,YAAY,EAAE,eAAe,CAAC,WAAW,IAAI,IAAI;aAClD,CAAC;QACJ,KAAK,OAAO;YACV,OAAO;gBACL,MAAM,EAAE,qCAAqC;gBAC7C,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY;gBACpC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW;gBAC3C,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW;gBAC3C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ;gBAClC,kBAAkB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,IAAI;gBACrD,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;gBAC/C,QAAQ,EAAE,eAAe,CAAC,OAAO;gBACjC,kBAAkB,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;gBACtD,OAAO,EAAE,eAAe,CAAC,MAAM;gBAC/B,YAAY,EAAE,eAAe,CAAC,OAAO;gBACrC,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;gBAC/C,YAAY,EAAE,eAAe,CAAC,WAAW;gBACzC,MAAM,EAAE,eAAe,CAAC,KAAK;gBAC7B,WAAW,EAAE,eAAe,CAAC,UAAU;gBACvC,YAAY,EAAE,eAAe,CAAC,WAAW,IAAI,IAAI;aAClD,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oCAAoC,CAClD,KAAc;IAEd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;QAC/C,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAC/C,IACE,CAAC,MAAM;gBACP,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW;gBAC3C,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW;gBAC3C,CACE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS;oBAC7C,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,QAAQ,CACpD,EACD,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAC/C,IACE,CAAC,KAAK;gBACN,KAAK,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW;gBAC1C,KAAK,CAAC,QAAQ,CAAC,WAAW,KAAK,WAAW;gBAC1C,CACE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS;oBAC7C,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,QAAQ,CACnD,EACD,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjE,IAAI,UAAU,KAAK,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO;YACpC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC;YAClC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,OAAO,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,wBAAwB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,QAAiB,EACjB,eAAmC,EACnC,OAAO,GAGH,EAAE;IAEN,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAChD,IACE,CAAC,MAAM;YACP,CACE,OAAO,CAAC,oBAAoB,KAAK,KAAK;gBACpC,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,eAAe,CAAC;gBACnD,CAAC,CAAC,CAAC,6BAA6B,CAAC,MAAM,EAAE,eAAe,CAAC,CAC5D,EACD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,OAAO,CAAC,mBAAmB,KAAK,IAAI;YACzC,uBAAuB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,gBAAgB,GAAG,oCAAoC,CAAC,QAAQ,CAAC,CAAC;IACxE,IACE,CAAC,gBAAgB;QACjB,CAAC,4BAA4B,CAAC,gBAAgB,EAAE,eAAe,CAAC,EAChE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,8BAA8B,CAAC,eAAe,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,CAAC,CAAC,eAAe,CACb,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CACrE;QACH,CAAC,CAAC,SAAS,CAAC;IACd,IACE,OAAO,CAAC,oBAAoB,KAAK,KAAK;QACtC,cAAc,KAAK,SAAS;QAC5B,QAAQ,CAAC,gBAAgB,KAAK,cAAc,EAC5C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;QACzC,OAAO,4BAA4B,CAAC,QAAQ,CAAC;YAC3C,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,IAAa,EACb,KAAc;IAEd,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,oCAAoC,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC,eAAe,CACb,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CACzD;YACH,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;YACjC,CAAC,CAAC,eAAe,CACb,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAC5D;YACH,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,OAAO,CACZ,YAAY;YACZ,aAAa;YACb,UAAU,KAAK,SAAS;YACxB,UAAU,KAAK,WAAW;YAC1B,4BAA4B,CAAC,YAAY,EAAE,aAAa,CAAC,CAC1D,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,OAAO,CACZ,UAAU;QACV,WAAW;QACX,6BAA6B,CAAC,UAAU,EAAE,WAAW,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAC/C,eAAmC,EACnC,QAAiB;IAEjB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,QAAQ,GAAG,oCAAoC,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,8BAA8B,CAAC,eAAe,CAAC,CAAC;QACjE,IACE,CAAC,QAAQ;YACT,CAAC,QAAQ;YACT,CAAC,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACjD,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,QAAQ;YACpC,eAAe,CAAC,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,QAAQ,CAAC;gBAC/D,QAAQ,CAAC,gBAAgB,EAC3B,CAAC;YACD,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,CAAC;QACD,yBAAyB,CAAC;YACxB,QAAQ;YACR,KAAK,EAAE;gBACL,QAAQ;gBACR,KAAK,EAAE,eAAe,CAAC,MAAM;gBAC7B,cAAc,EAAE,eAAe,CAAC,cAAc;gBAC9C,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAChD,eAAe,CAAC,WAAW;aAC9B;YACD,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;YAC3C,YAAY,EAAE,eAAe,CAAC,YAAY;YAC1C,WAAW,EAAE,eAAe;SAC7B,CAAC,CAAC;QACH,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAChD,IACE,CAAC,QAAQ;QACT,CAAC,QAAQ;QACT,CAAC,MAAM;QACP,CAAC,6BAA6B,CAAC,MAAM,EAAE,eAAe,CAAC,EACvD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,yBAAyB,CAAC;QACxB,QAAQ;QACR,KAAK,EAAE;YACL,QAAQ;YACR,KAAK,EAAE,eAAe,CAAC,MAAM;YAC7B,cAAc,EAAE,eAAe,CAAC,cAAc;YAC9C,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAChD,eAAe,CAAC,WAAW;SAC9B;QACD,gBAAgB,EAAE,eAAe,CAC/B,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,QAAQ,CACjD;QACD,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,WAAW,EAAE,eAAe;KAC7B,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,6BAA6B,CAC3C,eAAmC;IAOnC,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;KAClC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,0BAA0B,CACxC,eAAmC;IAEnC,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,eAAe,CAAC,MAAM;YAC9B,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;SAChD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,WAAW,EAAE,eAAe,CAAC,UAAU,IAAI,IAAI;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,eAAmC,EACnC,YAAkD;IAElD,MAAM,IAAI,GAAuB;QAC/B,GAAG,eAAe;QAClB,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;KAChC,CAAC;IACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACb,yBAAyB,CAAC;YACxB,GAAG,QAAQ;YACX,YAAY;YACZ,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,MAAc,EACd,UAAmB;IAEnB,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,WAAW;QACzB,MAAM;QACN,WAAW,EAAE,UAAU,IAAI,IAAI;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,OAAe,EACf,MAAc;IAEd,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,WAAW;QACzB,OAAO;QACP,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA0B;IAI1D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnE,IACE,CAAC,MAAM;QACP,OAAO,KAAK,SAAS;QACrB,CAAC,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,OAAO,CAAC,EAChE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,cAAc,CACrC,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,gBAAgB,CACnD,CAAC;IACF,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,gBAAgB;QAClC,CAAC,CAAC,UAAU,gBAAgB,EAAE;QAC9B,CAAC,CAAC,UAAU;YACV,CAAC,CAAC,UAAU,UAAU,EAAE;YACxB,CAAC,CAAC,sBAAsB,CAAC;IAC7B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACvE,OAAO;QACL,QAAQ,EAAE;YACR,YAAY,EAAE,MAAM;YACpB,WAAW;YACX,WAAW,EAAE,MAAM;gBACjB,CAAC,CAAC,WAAW,MAAM,EAAE;gBACrB,CAAC,CAAC,UAAU,QAAQ,aAAa,OAAO,EAAE;SAC7C;QACD,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA0B;IAI3D,MAAM,UAAU,GAAG,cAAc,CAC/B,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU,CAClE,CAAC;IACF,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnE,IACE,CAAC,UAAU;QACX,CAAC,OAAO;QACR,CAAC,MAAM;QACP,CAAC,UAAU;QACX,OAAO,KAAK,SAAS;QACrB,CAAC,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,OAAO,CAAC,EAChE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,UAAU,UAAU,EAAE,CAAC;IAC3C,OAAO;QACL,QAAQ,EAAE;YACR,YAAY,EAAE,OAAO;YACrB,WAAW;YACX,WAAW,EAAE,eAAe,UAAU,EAAE;SACzC;QACD,QAAQ,EAAE,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,MAAM,KAAK,qCAAqC;QACtD,KAAK,CAAC,OAAO,KAAK,CAAC;QACnB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACjE,CACE,KAAK,CAAC,kBAAkB,KAAK,IAAI;YACjC,eAAe,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,SAAS,CACxD,CAAC;AACN,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/D,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC;QACjE,OAAO;QACP,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC;QAC5C,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC;QACxC,OAAO;QACP,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAwB,EACxB,KAAyB;IAEzB,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAC7B,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAC5B,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC;AACzC,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAwB,EACxB,KAAyB;IAEzB,OAAO,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC;QACzC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;AACnC,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA6B;IAC9D,IACE,CAAC,KAAK,CAAC,MAAM;QACb,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QACpC,KAAK,CAAC,OAAO,IAAI,CAAC,EAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA8B;IAChE,IACE,CAAC,KAAK,CAAC,MAAM;QACb,CAAC,KAAK,CAAC,UAAU;QACjB,CAAC,KAAK,CAAC,OAAO;QACd,CAAC,KAAK,CAAC,WAAW;QAClB,CAAC,KAAK,CAAC,KAAK;QACZ,CAAC,KAAK,CAAC,MAAM;QACb,CAAC,KAAK,CAAC,UAAU;QACjB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QACpC,KAAK,CAAC,OAAO,IAAI,CAAC,EAClB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wEAAwE;YACxE,4CAA4C,CAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC;QACpB,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1C,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC7C,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,CAAC;QACpB,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACzD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Quick Start with Herdr
|
|
2
|
+
|
|
3
|
+
AKK supports local Herdr `0.8.0` (socket protocol 19) as a terminal provider alongside tmux. AKK does not start Herdr or a coding agent.
|
|
4
|
+
|
|
5
|
+
Install and open Herdr, then start Codex or Claude Code in a pane:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
brew install herdr
|
|
9
|
+
herdr
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Inside a Herdr pane, run one of:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
codex --yolo
|
|
16
|
+
# or
|
|
17
|
+
claude
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Wait for the empty idle composer. After the AKK OpenClaw plugin is installed and its Gateway restarted, use:
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
/akk list
|
|
24
|
+
/akk inspect this repository and summarize it
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
AKK enumerates every running local Herdr session, identifies a terminal by its session socket plus stable `terminal_id`, and treats the current `pane_id` only as a refreshable route. Moving a live pane does not silently rebind ownership. Every side effect revalidates the terminal resource, shell PID, agent PID, cwd, native-session evidence, and current composer first.
|
|
28
|
+
|
|
29
|
+
Herdr's raw `pane send-text` command is not used for task delivery. AKK uses the Unix-socket `pane.send_input` method so multiline text follows Herdr's bracketed-paste-aware path, persists the text-injected stage, resolves the stable terminal again, and then dispatches one separate Enter.
|
|
30
|
+
|
|
31
|
+
Current boundary:
|
|
32
|
+
|
|
33
|
+
- local Unix-domain sockets only;
|
|
34
|
+
- exact Herdr `0.8.0`, protocol 19;
|
|
35
|
+
- Codex and Claude Code versions listed in the main compatibility matrix;
|
|
36
|
+
- remote/SSH Herdr sessions and Windows named pipes are not yet supported;
|
|
37
|
+
- Herdr's agent status is diagnostic only—AKK's existing screen, transcript, rollout, and native identity fences remain authoritative.
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "agent-knock-knock",
|
|
3
3
|
"name": "Agent Knock Knock",
|
|
4
|
-
"description": "Control local Codex and Claude Code through shared tmux terminals, with exact-version native status inspection, native-thread lifecycle controls, live monitoring, approvals, and human takeover.",
|
|
4
|
+
"description": "Control local Codex and Claude Code through shared tmux or Herdr terminals, with exact-version native status inspection, native-thread lifecycle controls, live monitoring, approvals, and human takeover.",
|
|
5
5
|
"icon": "https://raw.githubusercontent.com/scotthuang/agent-knock-knock/main/docs/assets/agent-knock-knock-icon.png",
|
|
6
6
|
"activation": {
|
|
7
7
|
"onStartup": true,
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
},
|
|
93
93
|
"codexHome": {
|
|
94
94
|
"type": "string",
|
|
95
|
-
"description": "Optional CODEX_HOME path used to correlate Codex session metadata with eligible
|
|
95
|
+
"description": "Optional CODEX_HOME path used to correlate Codex session metadata with eligible terminal panes."
|
|
96
96
|
},
|
|
97
97
|
"idleTimeoutMinutes": {
|
|
98
98
|
"type": "number",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scotthuang/agent-knock-knock",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Control local Codex and Claude Code from OpenClaw through shared tmux terminals, with seamless human-agent handoff.",
|
|
3
|
+
"version": "0.12.0",
|
|
4
|
+
"description": "Control local Codex and Claude Code from OpenClaw through shared tmux or Herdr terminals, with seamless human-agent handoff.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"homepage": "https://github.com/scotthuang/agent-knock-knock#readme",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"templates",
|
|
59
59
|
"docs/assets/agent-knock-knock-cover.jpg",
|
|
60
60
|
"docs/assets/agent-knock-knock-icon.png",
|
|
61
|
+
"docs/quickstart-herdr.md",
|
|
61
62
|
"docs/quickstart-tmux.md",
|
|
62
63
|
"openclaw.plugin.json",
|
|
63
64
|
"README.md",
|
|
@@ -76,6 +77,7 @@
|
|
|
76
77
|
"test:fast": "npm run build && node scripts/run-test-tier.js fast",
|
|
77
78
|
"test:integration": "npm run build && node scripts/run-test-tier.js integration",
|
|
78
79
|
"test:full": "npm run build && node scripts/run-test-tier.js full",
|
|
80
|
+
"test:affected": "npm run build && node scripts/run-affected-tests.js",
|
|
79
81
|
"test:profile": "npm run build && node scripts/profile-test-tier.js",
|
|
80
82
|
"test:release": "node scripts/run-release-tests.js",
|
|
81
83
|
"test:release:live": "node scripts/run-release-tests.js --live",
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-knock-knock
|
|
3
|
-
description: Control local Codex and Claude Code through shared tmux terminals with Agent Knock Knock.
|
|
3
|
+
description: Control local Codex and Claude Code through shared tmux or Herdr terminals with Agent Knock Knock.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Agent Knock Knock
|
|
7
7
|
|
|
8
8
|
Use this skill when the user explicitly invokes `AKK`, `akk`, or `Agent Knock Knock`, or asks OpenClaw to inspect or control a coding-agent terminal listed by AKK.
|
|
9
9
|
|
|
10
|
-
AKK supports Codex and Claude Code that are already running inside tmux. It never launches a coding agent. OpenClaw,
|
|
10
|
+
AKK supports Codex and Claude Code that are already running inside tmux or local Herdr `0.8.0`. It never launches a coding agent. OpenClaw, the terminal host, AKK, and the coding agent must run as the same OS user.
|
|
11
11
|
|
|
12
12
|
Treat `AKK` and `akk` the same way.
|
|
13
13
|
|
|
14
14
|
## Role
|
|
15
15
|
|
|
16
|
-
OpenClaw interprets the user's request, sends the requested work into the selected shared terminal, handles actionable callbacks, and reports the outcome. The coding agent performs the engineering work in its existing tmux terminal.
|
|
16
|
+
OpenClaw interprets the user's request, sends the requested work into the selected shared terminal, handles actionable callbacks, and reports the outcome. The coding agent performs the engineering work in its existing tmux or Herdr terminal.
|
|
17
17
|
|
|
18
18
|
Keep the user's requested scope and approval boundaries. Do not expand a task, approve a permission, interrupt a process, or close a managed record unless the user request or an explicit trusted policy authorizes that action.
|
|
19
19
|
|
|
@@ -31,9 +31,9 @@ Core slash-command forms:
|
|
|
31
31
|
- `/akk resume-thread <exact-terminal-id> [uuid|previous|number|@short-id|snapshot-handle]`: list candidates when the selection is omitted, or resume one exact snapshot-bound choice without creating a Turn. `previous` also accepts the human phrase `刚才那个`.
|
|
32
32
|
- `/akk status [turn-selector]`: inspect one live terminal or exact managed Turn.
|
|
33
33
|
- `/akk respond <turn-selector>: <answer>`: answer a coding-agent question inside a `waiting_for_openclaw` Turn.
|
|
34
|
-
- `/akk cancel <turn-selector>`: interrupt the exact Turn without closing its
|
|
34
|
+
- `/akk cancel <turn-selector>`: interrupt the exact Turn without closing its terminal pane.
|
|
35
35
|
|
|
36
|
-
For human-facing ordinary-send slash forms, a selector may be `codex`, `claude`, `only`, `latest`, or an `@short-ref` returned by `AKK list`. These selectors are only a resolution layer and fail closed when the target is missing or ambiguous. A natural-language tool call may preserve a selector explicitly named by the user; otherwise use a list-prefilled selector or omit it and require a unique pane. Never pass a selector as `session_id` or `turn_id`. Native-thread slash commands are stricter: copy the full `terminal_id` returned by `/akk list`, not its `@short-ref`. The slash handler reads a fresh lifecycle snapshot and immediately supplies its compare-and-swap binding token internally; the human never copies that token. Once an AKK session exists, plugin actions prefill the authoritative full `session_id` for ordinary send or `turn_id` for respond and managed controls. The same raw terminal row may advertise status, approval, cancellation, or orphan-close with its own prefilled `conversation_id` compatibility selector. Use only the exact returned action; never infer, copy, or reuse compatibility selectors. For every send, AKK must revalidate the selected agent PID and
|
|
36
|
+
For human-facing ordinary-send slash forms, a selector may be `codex`, `claude`, `only`, `latest`, or an `@short-ref` returned by `AKK list`. These selectors are only a resolution layer and fail closed when the target is missing or ambiguous. A natural-language tool call may preserve a selector explicitly named by the user; otherwise use a list-prefilled selector or omit it and require a unique pane. Never pass a selector as `session_id` or `turn_id`. Native-thread slash commands are stricter: copy the full `terminal_id` returned by `/akk list`, not its `@short-ref`. The slash handler reads a fresh lifecycle snapshot and immediately supplies its compare-and-swap binding token internally; the human never copies that token. Once an AKK session exists, plugin actions prefill the authoritative full `session_id` for ordinary send or `turn_id` for respond and managed controls. The same raw terminal row may advertise status, approval, cancellation, or orphan-close with its own prefilled `conversation_id` compatibility selector. Use only the exact returned action; never infer, copy, or reuse compatibility selectors. For every send, AKK must revalidate the selected agent PID and provider-owned terminal identity, confirm that the process and pane working directories match, and verify the idle prompt.
|
|
37
37
|
|
|
38
38
|
AKK discovers eligible panes across workspaces. When more than one target matches, use a selector returned by `AKK list`; never guess based on a workspace name or path.
|
|
39
39
|
|
|
@@ -67,18 +67,18 @@ For ordinary send or an in-flight answer:
|
|
|
67
67
|
3. Treat `terminals[]` as the primary resource list. Its managed context exposes `session_id`; `managed.current_turn` is the only current AKK owner, while `managed.recent_turn` and `managed.history` are retained Turn history. Records in `unavailable_managed_turns[]` have no live pane in this snapshot.
|
|
68
68
|
4. Read the selected resource's `available_actions`. Use only an action present there, start with its prefilled authoritative arguments, supply every `missing_required` field, and consult the top-level v7 `action_contracts` for optional fields.
|
|
69
69
|
5. For an existing managed Session, use `send` with its prefilled `session_id`; it creates a new Turn. For first attach only, use a discovery selector explicitly named by the user or the selected unmanaged raw-terminal row's prefilled `selector`. Never infer or reuse a selector. Use `respond` with its prefilled `turn_id` only when that Turn is explicitly `waiting_for_openclaw`; the answer stays in the same Turn. Add the text as `request`. Do not add timeout fields for ordinary use; `timeoutSeconds` is unsupported.
|
|
70
|
-
6. If multiple terminals match, show their `short_ref`, agent, and
|
|
70
|
+
6. If multiple terminals match, show their `short_ref`, agent, provider, and terminal target, then ask the user to choose. Never guess or send to a pane that AKK has not verified as idle.
|
|
71
71
|
|
|
72
72
|
An idle pane is at a verified ready prompt, with no current work or unresolved permission request. A previously completed managed turn alone is not proof that the pane is still idle.
|
|
73
73
|
|
|
74
|
-
Do not treat ordinary send as native clear, new-session, fork, branch, side thread, status probe, or resume. Do not send `/clear`, `/new`, `/resume`, `/status`, Codex `/fork`, `/side`, `/btw`, Claude `/branch`, or any other first-line native slash command as ordinary task or answer text. Dedicated native lifecycle and inspection tools own their closed commands, capability checks, serialization, identity verification, and binding fences; express other requests in natural language or leave unsupported native commands to a human in
|
|
74
|
+
Do not treat ordinary send as native clear, new-session, fork, branch, side thread, status probe, or resume. Do not send `/clear`, `/new`, `/resume`, `/status`, Codex `/fork`, `/side`, `/btw`, Claude `/branch`, or any other first-line native slash command as ordinary task or answer text. Dedicated native lifecycle and inspection tools own their closed commands, capability checks, serialization, identity verification, and binding fences; express other requests in natural language or leave unsupported native commands to a human in the terminal UI. Each successful lifecycle transition creates no Turn, and native inspection creates no Session or Turn.
|
|
75
75
|
|
|
76
76
|
For native status inspection:
|
|
77
77
|
|
|
78
78
|
1. Use only a current `available_actions.native_inspect` entry. Its structured arguments are authoritative and complete; never construct or reuse them.
|
|
79
79
|
2. Supported exact profiles are Codex 0.146.0/0.146.1/0.147.0 and Claude Code 2.1.218/2.1.226 `inspection="status"`. Claude success includes parsing and safely dismissing the newly opened Status panel. The tool does not accept `/status` text or any arbitrary command string. `/usage`, `/cost`, `/stats`, `/usage-credits`, `/model`, `/compact`, and unsupported versions remain unavailable. Never automate bare Codex `/usage`: it opens an interactive menu whose later Enter can select an account-side usage-limit reset.
|
|
80
80
|
3. Treat this as terminal input even though the native command is read-only. AKK requires an idle empty composer, fresh binding token, exact PID/process/pane/cwd/version identity, and no conflicting Turn, transition, dispatch, approval, or owner.
|
|
81
|
-
4. The result is valid only when AKK proves one fresh bounded native status result and the pane returns to idle. On an uncertain or unproven submission, do not retry, send Enter, clear the composer, or
|
|
81
|
+
4. The result is valid only when AKK proves one fresh bounded native status result and the pane returns to idle. On an uncertain or unproven submission, do not retry, send Enter, clear the composer, or bypass AKK with raw terminal input.
|
|
82
82
|
5. Native inspection creates no AKK Session, Turn, receipt, monitor, callback, or response round.
|
|
83
83
|
|
|
84
84
|
For native-thread lifecycle discovery or mutation:
|
|
@@ -108,12 +108,12 @@ Useful examples:
|
|
|
108
108
|
|
|
109
109
|
## Terminal Communication Contract
|
|
110
110
|
|
|
111
|
-
All OpenClaw-to-agent task delivery must go through Agent Knock Knock plugin tools. Do not use OpenClaw internal session tools, raw
|
|
111
|
+
All OpenClaw-to-agent task delivery must go through Agent Knock Knock plugin tools. Do not use OpenClaw internal session tools, raw terminal-provider commands, shell commands, or another messaging path to bypass AKK's terminal checks.
|
|
112
112
|
|
|
113
113
|
AKK:
|
|
114
114
|
|
|
115
|
-
1. Resolves the authoritative AKK session to its selected Codex or Claude Code native session, process, and
|
|
116
|
-
2. Revalidates the expected agent PID and
|
|
115
|
+
1. Resolves the authoritative AKK session to its selected Codex or Claude Code native session, process, and terminal pane.
|
|
116
|
+
2. Revalidates the expected agent PID and provider-owned terminal identity, confirms that the process and pane working directories match, and verifies the idle prompt.
|
|
117
117
|
3. Types only the user-facing task into the shared terminal.
|
|
118
118
|
4. Creates a unique managed `turn_id` bound to the AKK `session_id`, terminal incarnation, and message.
|
|
119
119
|
5. Monitors reliable local evidence and sends callbacks to the originating OpenClaw session.
|
|
@@ -124,17 +124,17 @@ After an asynchronous send operation is accepted, end the OpenClaw turn. Wait fo
|
|
|
124
124
|
|
|
125
125
|
## Status
|
|
126
126
|
|
|
127
|
-
For managed terminal entries, `agent_knock_knock_status` captures AKK Turn state plus a bounded terminal screen and returns `terminal_screen`. It does not actively execute the coding agent's native `/status`. Use `agent_knock_knock_native_inspect` only for a terminal row's advertised, version-scoped native status action. Do not inspect the pane with raw
|
|
127
|
+
For managed terminal entries, `agent_knock_knock_status` captures AKK Turn state plus a bounded terminal screen and returns `terminal_screen`. It does not actively execute the coding agent's native `/status`. Use `agent_knock_knock_native_inspect` only for a terminal row's advertised, version-scoped native status action. Do not inspect the pane with raw provider or shell commands unless the relevant AKK inspection is unavailable or fails.
|
|
128
128
|
|
|
129
129
|
## Cancellation and Recovery
|
|
130
130
|
|
|
131
|
-
`agent_knock_knock_cancel` uses the adapter's interrupt action—Control-C for Codex or Escape for Claude Code—and leaves the
|
|
131
|
+
`agent_knock_knock_cancel` uses the adapter's interrupt action—Control-C for Codex or Escape for Claude Code—and leaves the terminal pane open.
|
|
132
132
|
|
|
133
133
|
Use `agent_knock_knock_renew` only when AKK marked the same live terminal Turn `stalled`, the process and Turn remain in the same pane, and the user wants monitoring to continue without terminal input. The contextual slash form is `/akk renew @a1b2c3d4 30`.
|
|
134
134
|
|
|
135
135
|
Use `agent_knock_knock_retry_callback` only for a `callback_failed` managed turn, for example `/akk retry-callback @a1b2c3d4`.
|
|
136
136
|
|
|
137
|
-
Use `agent_knock_knock_close` only when the user explicitly wants to close AKK's managed record. If `AKK list` reports an orphaned terminal dispatch or lifecycle transition, inspect the pane first and use the exact `/akk close <terminal-id> ...` recovery command it returns. That command contains exactly one fresh `--expected-message-id <id>` or `--expected-transition-id <id>` fence. Never invent, substitute, or reuse the fence. Closing a managed record does not close the coding agent or
|
|
137
|
+
Use `agent_knock_knock_close` only when the user explicitly wants to close AKK's managed record. If `AKK list` reports an orphaned terminal dispatch or lifecycle transition, inspect the pane first and use the exact `/akk close <terminal-id> ...` recovery command it returns. That command contains exactly one fresh `--expected-message-id <id>` or `--expected-transition-id <id>` fence. Never invent, substitute, or reuse the fence. Closing a managed record does not close the coding agent or terminal pane.
|
|
138
138
|
|
|
139
139
|
Use `/akk doctor` only for installation checks or troubleshooting.
|
|
140
140
|
|
|
@@ -153,19 +153,19 @@ The equivalent slash command must also include that fresh fingerprint:
|
|
|
153
153
|
/akk approve @a1b2c3d4 --expected-approval-fingerprint <fresh-fingerprint>
|
|
154
154
|
```
|
|
155
155
|
|
|
156
|
-
For hookless Claude Code, the callback intentionally omits the raw command. Require the user to inspect the named live
|
|
156
|
+
For hookless Claude Code, the callback intentionally omits the raw command. Require the user to inspect the named live terminal pane personally; never approve from a hash or summary alone. Claude manual approval accepts only the strictly recognized one-time **Yes** Bash dialog for the current managed turn. Codex approval also requires the current visible prompt.
|
|
157
157
|
|
|
158
158
|
Unknown, stale, expired, ambiguous, persistent-permission, replayed, or changed requests must not be approved. Deny or interrupt them with `agent_knock_knock_cancel`, or tell the user to resolve them directly in the terminal.
|
|
159
159
|
|
|
160
160
|
A trusted, default-disabled plugin `autoApprove` policy may independently approve only an exact configured agent, command vector, and canonical root listed in `autoApprove.rules[].workspaces`, backed by current terminal evidence. A rule may list multiple workspace roots. These entries are the only workspace boundary for automatic approval; they do not limit pane discovery or manual control. The model cannot create or modify that policy.
|
|
161
161
|
|
|
162
|
-
##
|
|
162
|
+
## Terminal Sessions
|
|
163
163
|
|
|
164
164
|
`agent_knock_knock_list` is terminal-first: every eligible already-running Codex or Claude Code pane appears once in `terminals[]`, even when retained managed Turns reference it. The resource chain is terminal → verified native session → managed AKK `session_id` → Turns. `process_state` reports process liveness and `activity_state` reports the parsed screen state. `managed.current_turn` is the authoritative active Turn for that terminal; otherwise `managed.recent_turn` shows the newest retained context. Request `all=true` only when older `managed.history` or retained unavailable history is needed. By default, `unavailable_managed_turns[]` contains attention-needed records whose terminal is unavailable.
|
|
165
165
|
|
|
166
166
|
The top-level v7 `action_contracts` summarizes each tool's managed target and its narrow compatibility inputs; `available_actions` is the authoritative current-action source after listing. An existing managed Session's ordinary `send` targets `session_id` and starts a new managed Turn. On first attach only, `selector` may preserve a discovery target explicitly named by the user or the exact selector prefilled by an unmanaged raw-terminal row; it must never be passed as `session_id`. `respond` and every managed control target `turn_id`; `respond` is offered only for a Turn waiting on OpenClaw. The read-only `list_resumable_threads` action is advertised on the terminal row, requires only its full `terminal_id`, and returns a fresh `expected_binding_token` plus candidate rows. The `new_thread` mutation is advertised on the terminal row and requires that terminal ID and token; each resumable candidate row advertises its own `resume_thread` mutation with the same snapshot token, its complete `native_thread_id`, and its opaque `candidate_token`. A conflict-only `reconcile_binding` action may be advertised for one exact, idle binding conflict; it preserves the listed Session revision, binding token, and terminal token, then CAS-detaches the old binding without adopting the live thread, sending terminal input, or creating a Turn. A top-level `previous` block, when present, is the only authority for a “previous/刚才那个” request. Number, short ID, and snapshot handle fields are human-facing navigation only; never pass them to the exact resume tool. Lifecycle discovery and mutations never create a Turn. A raw terminal may be controlled only through the exact action that its own row advertises; prefilled compatibility selectors, lifecycle IDs, and tokens must never be inferred, copied from another row, or reused from another snapshot. Start with the prefilled full argument, supply all `missing_required` fields, and use a returned `@short-ref` only for human-facing ordinary-send selection. Availability is a snapshot, so AKK revalidates it before side effects.
|
|
167
167
|
|
|
168
|
-
Before every terminal operation, AKK revalidates the expected agent PID and
|
|
168
|
+
Before every terminal operation, AKK revalidates the expected agent PID and provider-owned terminal identity, then confirms that the process and pane working directories match. Sending new work additionally requires a verified idle prompt. Humans can attach to the same tmux or Herdr session and continue directly at any time.
|
|
169
169
|
|
|
170
170
|
Claude Code completion depends on a strictly correlated local transcript turn and fails closed for unknown schemas, background work, or ambiguous identity. Never report completion merely because the pane looks idle.
|
|
171
171
|
|