twinny 0.0.0-dev.260723123229 → 0.0.0-dev.260804181735
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codex/appserver.d.ts +20 -0
- package/dist/codex/appserver.js +177 -20
- package/dist/codex/appserver.js.map +1 -1
- package/dist/codex/protocol.d.ts +4 -0
- package/dist/codex/protocol.js +23 -1
- package/dist/codex/protocol.js.map +1 -1
- package/dist/conversation/manager.d.ts +2 -0
- package/dist/conversation/manager.js +51 -1
- package/dist/conversation/manager.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.json +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ChildProcessWithoutNullStreams, type SpawnOptionsWithoutStdio } from "node:child_process";
|
|
1
2
|
import { EventEmitter } from "node:events";
|
|
2
3
|
import { type CodexThreadNameUpdate, type ProfileName } from "../types.js";
|
|
3
4
|
import { CodexProtocolClient, type CodexNotificationMessage, type InitializeResponse } from "./protocol.js";
|
|
@@ -15,6 +16,19 @@ export interface CodexAppServerOptions {
|
|
|
15
16
|
masqueradeAsCodexCli?: boolean;
|
|
16
17
|
stopTimeoutMs?: number;
|
|
17
18
|
}
|
|
19
|
+
export interface CodexAppServerProcessTreeTarget {
|
|
20
|
+
pid: number;
|
|
21
|
+
platform: NodeJS.Platform;
|
|
22
|
+
isolatedProcessGroup: boolean;
|
|
23
|
+
killChild(signal: NodeJS.Signals): boolean;
|
|
24
|
+
groupSignalDelivered: boolean;
|
|
25
|
+
signalAttempts: Map<NodeJS.Signals, Promise<boolean>>;
|
|
26
|
+
}
|
|
27
|
+
export interface CodexAppServerProcessTreeDependencies {
|
|
28
|
+
killProcess?: typeof process.kill;
|
|
29
|
+
killWindowsTree?: (pid: number, signal: NodeJS.Signals) => Promise<void>;
|
|
30
|
+
currentTarget?: CodexAppServerProcessTreeTarget;
|
|
31
|
+
}
|
|
18
32
|
export interface ProfileCodexAppServerConfig {
|
|
19
33
|
profile: ProfileName;
|
|
20
34
|
codexHome: string;
|
|
@@ -52,6 +66,7 @@ export declare interface CodexAppServer {
|
|
|
52
66
|
export declare class CodexAppServer extends EventEmitter {
|
|
53
67
|
private readonly options;
|
|
54
68
|
private child;
|
|
69
|
+
private processTree;
|
|
55
70
|
private protocolClient;
|
|
56
71
|
private initializeResponse;
|
|
57
72
|
private startPromise;
|
|
@@ -111,6 +126,8 @@ export declare class CodexAppServer extends EventEmitter {
|
|
|
111
126
|
runGoal(options: GoalRunOptions): Promise<import("../types.js").CodexTurnResult>;
|
|
112
127
|
resumeGoal(options: GoalResumeOptions): Promise<import("../types.js").CodexTurnResult>;
|
|
113
128
|
stop(signal?: NodeJS.Signals): Promise<void>;
|
|
129
|
+
private terminateProcessTree;
|
|
130
|
+
private terminateProcessTreeBestEffort;
|
|
114
131
|
private prepareThreadWorkspace;
|
|
115
132
|
private buildTurnStartOptions;
|
|
116
133
|
private profileName;
|
|
@@ -134,4 +151,7 @@ export declare class ProfileCodexAppServerPool {
|
|
|
134
151
|
}
|
|
135
152
|
export declare function parseCodexCliVersionOutput(output: string): string | undefined;
|
|
136
153
|
export declare function resolveCodexTuiClientInfoVersion(codexVersionOutput: string): string;
|
|
154
|
+
export declare function buildCodexAppServerSpawnOptions(options: Pick<SpawnOptionsWithoutStdio, "cwd" | "env">, platform?: NodeJS.Platform): SpawnOptionsWithoutStdio;
|
|
155
|
+
export declare function createCodexAppServerProcessTreeTarget(child: Pick<ChildProcessWithoutNullStreams, "pid" | "kill">, platform?: NodeJS.Platform, isolatedProcessGroup?: boolean): CodexAppServerProcessTreeTarget;
|
|
156
|
+
export declare function terminateCodexAppServerProcessTree(target: CodexAppServerProcessTreeTarget, signal: NodeJS.Signals, dependencies?: CodexAppServerProcessTreeDependencies): Promise<boolean>;
|
|
137
157
|
export declare function buildCodexAppServerEnv(codexHome: string, source?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
package/dist/codex/appserver.js
CHANGED
|
@@ -15,6 +15,7 @@ import { compactCodexThread, DANGER_FULL_ACCESS_SANDBOX_POLICY, interruptCodexTu
|
|
|
15
15
|
export class CodexAppServer extends EventEmitter {
|
|
16
16
|
options;
|
|
17
17
|
child;
|
|
18
|
+
processTree;
|
|
18
19
|
protocolClient;
|
|
19
20
|
initializeResponse;
|
|
20
21
|
startPromise;
|
|
@@ -58,11 +59,12 @@ export class CodexAppServer extends EventEmitter {
|
|
|
58
59
|
return this.initializeResponse;
|
|
59
60
|
}
|
|
60
61
|
const invocation = commandForPlatform(this.options.binary, ["app-server", "--listen", "stdio://"]);
|
|
61
|
-
const
|
|
62
|
+
const spawnOptions = buildCodexAppServerSpawnOptions({
|
|
62
63
|
cwd: this.options.cwd ?? process.cwd(),
|
|
63
|
-
env: buildCodexAppServerEnv(this.options.codexHome, this.options.env ?? process.env)
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
env: buildCodexAppServerEnv(this.options.codexHome, this.options.env ?? process.env)
|
|
65
|
+
}, process.platform);
|
|
66
|
+
const child = spawn(invocation.command, invocation.args, spawnOptions);
|
|
67
|
+
const processTree = createCodexAppServerProcessTreeTarget(child, process.platform, spawnOptions.detached === true);
|
|
66
68
|
child.stderr.setEncoding("utf8");
|
|
67
69
|
child.stderr.on("data", (chunk) => this.emit("stderr", chunk));
|
|
68
70
|
const protocol = new CodexProtocolClient(child.stdout, child.stdin, {
|
|
@@ -71,23 +73,49 @@ export class CodexAppServer extends EventEmitter {
|
|
|
71
73
|
});
|
|
72
74
|
this.attachProtocolNotifications(protocol);
|
|
73
75
|
this.child = child;
|
|
76
|
+
this.processTree = processTree;
|
|
74
77
|
this.protocolClient = protocol;
|
|
75
78
|
this.initializeResponse = undefined;
|
|
76
|
-
this.attachProtocolHealth(protocol, child);
|
|
79
|
+
this.attachProtocolHealth(protocol, child, processTree);
|
|
77
80
|
child.on("exit", (code, signal) => {
|
|
81
|
+
const isCurrent = this.child === child && this.processTree === processTree;
|
|
82
|
+
const cleanup = this.terminateProcessTreeBestEffort(processTree, "SIGKILL", "exit");
|
|
83
|
+
if (!isCurrent) {
|
|
84
|
+
void cleanup;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
this.child = undefined;
|
|
88
|
+
this.protocolClient = undefined;
|
|
89
|
+
this.initializeResponse = undefined;
|
|
90
|
+
void cleanup.then(() => {
|
|
91
|
+
if (this.processTree === processTree) {
|
|
92
|
+
this.processTree = undefined;
|
|
93
|
+
}
|
|
94
|
+
this.emit("exit", code, signal);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
protocol.start();
|
|
98
|
+
try {
|
|
99
|
+
this.initializeResponse = await protocol.initialize(this.createInitializeParams(codexVersion));
|
|
100
|
+
this.codexVersion = codexVersion;
|
|
101
|
+
return this.initializeResponse;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
protocol.close();
|
|
105
|
+
await this.terminateProcessTreeBestEffort(processTree, "SIGTERM", "start failure");
|
|
106
|
+
await this.terminateProcessTreeBestEffort(processTree, "SIGKILL", "start failure");
|
|
78
107
|
if (this.child === child) {
|
|
79
108
|
this.child = undefined;
|
|
80
109
|
}
|
|
110
|
+
if (this.processTree === processTree) {
|
|
111
|
+
this.processTree = undefined;
|
|
112
|
+
}
|
|
81
113
|
if (this.protocolClient === protocol) {
|
|
82
114
|
this.protocolClient = undefined;
|
|
83
115
|
this.initializeResponse = undefined;
|
|
84
116
|
}
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
protocol.start();
|
|
88
|
-
this.initializeResponse = await protocol.initialize(this.createInitializeParams(codexVersion));
|
|
89
|
-
this.codexVersion = codexVersion;
|
|
90
|
-
return this.initializeResponse;
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
91
119
|
}
|
|
92
120
|
createInitializeParams(codexVersionOutput) {
|
|
93
121
|
if (!this.options.masqueradeAsCodexCli) {
|
|
@@ -108,7 +136,7 @@ export class CodexAppServer extends EventEmitter {
|
|
|
108
136
|
}
|
|
109
137
|
});
|
|
110
138
|
}
|
|
111
|
-
attachProtocolHealth(protocol, child) {
|
|
139
|
+
attachProtocolHealth(protocol, child, processTree) {
|
|
112
140
|
let unhealthy = false;
|
|
113
141
|
const markUnhealthy = (error) => {
|
|
114
142
|
if (unhealthy ||
|
|
@@ -120,6 +148,7 @@ export class CodexAppServer extends EventEmitter {
|
|
|
120
148
|
unhealthy = true;
|
|
121
149
|
this.initializeResponse = undefined;
|
|
122
150
|
protocol.close();
|
|
151
|
+
void this.terminateProcessTreeBestEffort(processTree, "SIGKILL", "unhealthy");
|
|
123
152
|
this.emit("unhealthy", error);
|
|
124
153
|
};
|
|
125
154
|
const closedError = (stream) => new TwinnyError(`Codex app-server ${stream} stream closed unexpectedly`, "CODEX_APP_SERVER_UNHEALTHY");
|
|
@@ -221,24 +250,37 @@ export class CodexAppServer extends EventEmitter {
|
|
|
221
250
|
}
|
|
222
251
|
async stop(signal = "SIGTERM") {
|
|
223
252
|
const child = this.child;
|
|
253
|
+
const processTree = this.processTree;
|
|
224
254
|
this.protocolClient?.close();
|
|
225
255
|
this.protocolClient = undefined;
|
|
226
256
|
this.initializeResponse = undefined;
|
|
227
|
-
if (!child) {
|
|
257
|
+
if (!child || !processTree) {
|
|
228
258
|
return;
|
|
229
259
|
}
|
|
230
260
|
const gracefulExit = waitForChildExit(child, this.options.stopTimeoutMs ?? 3_000);
|
|
231
|
-
if (!hasExited(child) && !
|
|
232
|
-
|
|
233
|
-
}
|
|
234
|
-
const stopped = await gracefulExit;
|
|
235
|
-
if (!stopped && !hasExited(child)) {
|
|
236
|
-
child.kill("SIGKILL");
|
|
237
|
-
await waitForChildExit(child, 2_000);
|
|
261
|
+
if (!hasExited(child) && !processTree.signalAttempts.has("SIGKILL")) {
|
|
262
|
+
await this.terminateProcessTree(processTree, signal);
|
|
238
263
|
}
|
|
264
|
+
await gracefulExit;
|
|
265
|
+
await this.terminateProcessTree(processTree, "SIGKILL");
|
|
266
|
+
await waitForChildExit(child, 2_000);
|
|
239
267
|
if (this.child === child) {
|
|
240
268
|
this.child = undefined;
|
|
241
269
|
}
|
|
270
|
+
if (this.processTree === processTree) {
|
|
271
|
+
this.processTree = undefined;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
terminateProcessTree(target, signal) {
|
|
275
|
+
return terminateCodexAppServerProcessTree(target, signal, { currentTarget: this.processTree });
|
|
276
|
+
}
|
|
277
|
+
async terminateProcessTreeBestEffort(target, signal, reason) {
|
|
278
|
+
try {
|
|
279
|
+
await this.terminateProcessTree(target, signal);
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
this.emit("stderr", `failed to terminate Codex app-server process tree after ${reason}: ${errorMessage(error)}`);
|
|
283
|
+
}
|
|
242
284
|
}
|
|
243
285
|
async prepareThreadWorkspace(cwd) {
|
|
244
286
|
if (this.options.profile === GUEST_PROFILE_NAME) {
|
|
@@ -378,6 +420,121 @@ function sanitizeUserAgentVersionToken(value) {
|
|
|
378
420
|
}
|
|
379
421
|
return /^[A-Za-z0-9][A-Za-z0-9._+~-]*$/.test(trimmed) ? trimmed : undefined;
|
|
380
422
|
}
|
|
423
|
+
export function buildCodexAppServerSpawnOptions(options, platform = process.platform) {
|
|
424
|
+
return {
|
|
425
|
+
...options,
|
|
426
|
+
detached: platform !== "win32",
|
|
427
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
export function createCodexAppServerProcessTreeTarget(child, platform = process.platform, isolatedProcessGroup = platform !== "win32") {
|
|
431
|
+
return {
|
|
432
|
+
pid: child.pid ?? 0,
|
|
433
|
+
platform,
|
|
434
|
+
isolatedProcessGroup,
|
|
435
|
+
killChild: (signal) => child.kill(signal),
|
|
436
|
+
groupSignalDelivered: false,
|
|
437
|
+
signalAttempts: new Map()
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
export function terminateCodexAppServerProcessTree(target, signal, dependencies = {}) {
|
|
441
|
+
const existing = target.signalAttempts.get(signal);
|
|
442
|
+
if (existing) {
|
|
443
|
+
return existing;
|
|
444
|
+
}
|
|
445
|
+
const attempt = terminateCodexAppServerProcessTreeOnce(target, signal, dependencies).catch((error) => {
|
|
446
|
+
target.signalAttempts.delete(signal);
|
|
447
|
+
throw error;
|
|
448
|
+
});
|
|
449
|
+
target.signalAttempts.set(signal, attempt);
|
|
450
|
+
return attempt;
|
|
451
|
+
}
|
|
452
|
+
async function terminateCodexAppServerProcessTreeOnce(target, signal, dependencies) {
|
|
453
|
+
const current = dependencies.currentTarget;
|
|
454
|
+
if (current && current !== target && current.pid === target.pid) {
|
|
455
|
+
return false;
|
|
456
|
+
}
|
|
457
|
+
if (!Number.isSafeInteger(target.pid) || target.pid <= 1 || target.pid === process.pid) {
|
|
458
|
+
return false;
|
|
459
|
+
}
|
|
460
|
+
if (target.platform === "win32") {
|
|
461
|
+
try {
|
|
462
|
+
await (dependencies.killWindowsTree ?? killWindowsProcessTree)(target.pid, signal);
|
|
463
|
+
return true;
|
|
464
|
+
}
|
|
465
|
+
catch (error) {
|
|
466
|
+
if (isMissingProcessError(error)) {
|
|
467
|
+
return true;
|
|
468
|
+
}
|
|
469
|
+
try {
|
|
470
|
+
return target.killChild(signal);
|
|
471
|
+
}
|
|
472
|
+
catch (childError) {
|
|
473
|
+
if (isMissingProcessError(childError)) {
|
|
474
|
+
return true;
|
|
475
|
+
}
|
|
476
|
+
throw error;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
if (!target.isolatedProcessGroup) {
|
|
481
|
+
try {
|
|
482
|
+
return target.killChild(signal);
|
|
483
|
+
}
|
|
484
|
+
catch (error) {
|
|
485
|
+
if (isMissingProcessError(error)) {
|
|
486
|
+
return true;
|
|
487
|
+
}
|
|
488
|
+
throw error;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
try {
|
|
492
|
+
(dependencies.killProcess ?? process.kill)(-target.pid, signal);
|
|
493
|
+
target.groupSignalDelivered = true;
|
|
494
|
+
return true;
|
|
495
|
+
}
|
|
496
|
+
catch (error) {
|
|
497
|
+
if (isMissingProcessError(error)) {
|
|
498
|
+
return true;
|
|
499
|
+
}
|
|
500
|
+
// Darwin returns EPERM for a process-group kill when any group member is
|
|
501
|
+
// unsignalable, even though signalable members still receive the signal.
|
|
502
|
+
// Only accept that partial-success result for a SIGKILL escalation after
|
|
503
|
+
// this isolated group was previously reached successfully. An initial
|
|
504
|
+
// EPERM remains an error so an unrelated or polluted PGID is never trusted.
|
|
505
|
+
if (target.platform === "darwin" &&
|
|
506
|
+
signal === "SIGKILL" &&
|
|
507
|
+
target.groupSignalDelivered &&
|
|
508
|
+
isPermissionError(error)) {
|
|
509
|
+
return true;
|
|
510
|
+
}
|
|
511
|
+
throw error;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
async function killWindowsProcessTree(pid, signal) {
|
|
515
|
+
const args = ["/PID", String(pid), "/T"];
|
|
516
|
+
if (signal === "SIGKILL") {
|
|
517
|
+
args.push("/F");
|
|
518
|
+
}
|
|
519
|
+
const result = await execa("taskkill", args, {
|
|
520
|
+
reject: false,
|
|
521
|
+
timeout: 5_000,
|
|
522
|
+
windowsHide: true
|
|
523
|
+
});
|
|
524
|
+
if (result.exitCode === 0 || result.exitCode === 128) {
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
throw new Error(result.stderr.trim() || `taskkill exited with code ${result.exitCode ?? "unknown"}`);
|
|
528
|
+
}
|
|
529
|
+
function isMissingProcessError(error) {
|
|
530
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "ESRCH";
|
|
531
|
+
}
|
|
532
|
+
function isPermissionError(error) {
|
|
533
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "EPERM";
|
|
534
|
+
}
|
|
535
|
+
function errorMessage(error) {
|
|
536
|
+
return error instanceof Error ? error.message : String(error);
|
|
537
|
+
}
|
|
381
538
|
function hasExited(child) {
|
|
382
539
|
return child.exitCode !== null || child.signalCode !== null;
|
|
383
540
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appserver.js","sourceRoot":"","sources":["../../src/codex/appserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAgD,MAAM,aAAa,CAAC;AAClH,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EAIvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uCAAuC,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAInB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EAUvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,kBAAkB,EAClB,iCAAiC,EACjC,kBAAkB,EAClB,cAAc,EACd,cAAc,EAIf,MAAM,WAAW,CAAC;AA4DnB,MAAM,OAAO,cAAe,SAAQ,YAAY;IAOjB;IANrB,KAAK,CAA6C;IAClD,cAAc,CAAkC;IAChD,kBAAkB,CAAiC;IACnD,YAAY,CAA0C;IACtD,YAAY,CAAqB;IAEzC,YAA6B,OAA8B;QACzD,KAAK,EAAE,CAAC;QADmB,YAAO,GAAP,OAAO,CAAuB;IAE3D,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAEnE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1G,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACjC,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;QAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QACnG,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;YACvD,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YACtC,GAAG,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YACpF,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAEvE,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE;YAClE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC/C,eAAe,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;SAChD,CAAC,CAAC;QACH,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3C,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACzB,CAAC;YACD,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;gBAChC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEjB,IAAI,CAAC,kBAAkB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAEO,sBAAsB,CAAC,kBAA0B;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACvC,OAAO,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,sBAAsB,CAAC;YAC5B,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,gCAAgC,CAAC,kBAAkB,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAEO,2BAA2B,CAAC,QAA6B;QAC/D,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,uCAAuC,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAC1B,QAA6B,EAC7B,KAAqC;QAErC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,aAAa,GAAG,CAAC,KAAY,EAAQ,EAAE;YAC3C,IACE,SAAS;gBACT,IAAI,CAAC,KAAK,KAAK,KAAK;gBACpB,IAAI,CAAC,cAAc,KAAK,QAAQ;gBAChC,SAAS,CAAC,KAAK,CAAC,EAChB,CAAC;gBACD,OAAO;YACT,CAAC;YACD,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,MAA4B,EAAe,EAAE,CAChE,IAAI,WAAW,CAAC,oBAAoB,MAAM,6BAA6B,EAAE,4BAA4B,CAAC,CAAC;QAEzG,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACnC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACzC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,WAAW,CACf,GAAW,EACX,UAA+E,EAAE;QAEjF,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrC,GAAG;YACH,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,GAAW;QAC9C,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,UAAU,CACd,QAAgB,EAChB,GAAW,EACX,UAAoG,EAAE;QAEtG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,KAAgB;QACxD,MAAM,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,MAAM,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,IAAY;QAChD,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QACvC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,OAAO,EAAE,IAAI,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,UAAsC,EAAE;QACzE,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAA2B,EAAE;QAC7C,OAAO,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA0B;QAC5C,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,QAAgB;QACrD,OAAO,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE;YACxE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;SAChD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAqD;QACvE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzG,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAkG;QAChH,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA6C;QAC/D,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,SAAiB;QACrD,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzG,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA0B;QACzC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAyB,SAAS;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;QAClF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,GAAW;QAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;YAChD,MAAM,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAEO,qBAAqB,CAAC,OAAyB;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO;YACL,GAAG,OAAO;YACV,aAAa,EAAE,iCAAiC;SACjD,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,gCAAgC;QAC5C,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE;gBAC9D,GAAG,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;gBACpF,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC7D,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjE,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,MAAM,EAAE,UAAU,CAAC,OAAO;gBAC1B,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc;gBACvD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;gBACtC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS;aAC1C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,MAAM,EAAE,UAAU,CAAC,OAAO;gBAC1B,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B;aACjF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,wCAAwC,EAAE,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,wCAAwC;QACpD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,wFAAwF;QAC1F,CAAC;QACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IAGP;IAFZ,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IAElE,YAA6B,OAAyC;QAAzC,YAAO,GAAP,OAAO,CAAkC;QACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,EACP,IAAI,cAAc,CAAC;gBACjB,OAAO;gBACP,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS;gBACtC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;aACnD,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAU,CAAC,CAC1G,CAAC;QACF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,OAAoB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,OAAoB,EAAE,MAA8C;QAC1E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;YAChC,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YAC5C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACrB,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC/C,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAoB,EAAE,SAAyB,SAAS;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoB;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAyB,SAAS;QAC9C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,OAAO,yCAAyC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,kBAA0B;IACzE,OAAO,6BAA6B,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7F,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAyB;IAC9D,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,KAAqC;IACtD,OAAO,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAqC,EAAE,SAAiB;IAChF,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAElB,MAAM,MAAM,GAAG,GAAS,EAAE;YACxB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,SAA4B,OAAO,CAAC,GAAG;IAC/F,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,cAAc,CAAC,UAA8B;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"appserver.js","sourceRoot":"","sources":["../../src/codex/appserver.ts"],"names":[],"mappings":"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"}
|
package/dist/codex/protocol.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
2
|
import type { Readable, Writable } from "node:stream";
|
|
3
|
+
import type { Logger } from "pino";
|
|
3
4
|
export type CodexRequestId = string | number;
|
|
4
5
|
export interface CodexRequestMessage<TParams = unknown> {
|
|
5
6
|
id: CodexRequestId;
|
|
@@ -47,6 +48,7 @@ export interface PendingRequest {
|
|
|
47
48
|
export interface CodexProtocolClientOptions {
|
|
48
49
|
requestTimeoutMs?: number;
|
|
49
50
|
requestIdPrefix?: string;
|
|
51
|
+
logger?: Pick<Logger, "warn">;
|
|
50
52
|
}
|
|
51
53
|
export interface CodexProtocolClientEvents {
|
|
52
54
|
notification: [message: CodexNotificationMessage];
|
|
@@ -68,6 +70,7 @@ export declare class CodexProtocolClient extends EventEmitter {
|
|
|
68
70
|
private readonly pending;
|
|
69
71
|
private readonly requestTimeoutMs;
|
|
70
72
|
private readonly requestIdPrefix;
|
|
73
|
+
private readonly log;
|
|
71
74
|
private nextRequestId;
|
|
72
75
|
private readLoopDone;
|
|
73
76
|
private closed;
|
|
@@ -86,6 +89,7 @@ export declare class CodexProtocolClient extends EventEmitter {
|
|
|
86
89
|
private readLoop;
|
|
87
90
|
private handleLine;
|
|
88
91
|
private handleResponse;
|
|
92
|
+
private wasIssuedRequestId;
|
|
89
93
|
private writeJson;
|
|
90
94
|
private failAllPending;
|
|
91
95
|
}
|
package/dist/codex/protocol.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
2
|
import { TwinnyError, toErrorMessage } from "../errors.js";
|
|
3
|
+
import { logger as defaultLogger } from "../observability/logs.js";
|
|
3
4
|
import { TWINNY_VERSION } from "../version.js";
|
|
4
5
|
export class CodexProtocolClient extends EventEmitter {
|
|
5
6
|
readable;
|
|
@@ -7,6 +8,7 @@ export class CodexProtocolClient extends EventEmitter {
|
|
|
7
8
|
pending = new Map();
|
|
8
9
|
requestTimeoutMs;
|
|
9
10
|
requestIdPrefix;
|
|
11
|
+
log;
|
|
10
12
|
nextRequestId = 1;
|
|
11
13
|
readLoopDone;
|
|
12
14
|
closed = false;
|
|
@@ -16,6 +18,7 @@ export class CodexProtocolClient extends EventEmitter {
|
|
|
16
18
|
this.writable = writable;
|
|
17
19
|
this.requestTimeoutMs = options.requestTimeoutMs ?? 120_000;
|
|
18
20
|
this.requestIdPrefix = options.requestIdPrefix ?? "twinny";
|
|
21
|
+
this.log = options.logger ?? defaultLogger;
|
|
19
22
|
}
|
|
20
23
|
start() {
|
|
21
24
|
if (this.readLoopDone) {
|
|
@@ -142,12 +145,16 @@ export class CodexProtocolClient extends EventEmitter {
|
|
|
142
145
|
this.emit("error", new TwinnyError("Unknown Codex protocol message shape", "CODEX_PROTOCOL_PARSE_ERROR"));
|
|
143
146
|
}
|
|
144
147
|
handleResponse(message) {
|
|
145
|
-
this.emit("response", message);
|
|
146
148
|
const pending = this.pending.get(message.id);
|
|
147
149
|
if (!pending) {
|
|
150
|
+
if (this.wasIssuedRequestId(message.id)) {
|
|
151
|
+
this.log.warn({ requestId: message.id, responseHasError: message.error !== undefined }, "discarded late Codex response for a request that is no longer pending");
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
148
154
|
this.emit("error", new TwinnyError(`Received response for unknown Codex request id ${String(message.id)}`, "CODEX_UNKNOWN_RESPONSE"));
|
|
149
155
|
return;
|
|
150
156
|
}
|
|
157
|
+
this.emit("response", message);
|
|
151
158
|
if (pending.timeout) {
|
|
152
159
|
clearTimeout(pending.timeout);
|
|
153
160
|
}
|
|
@@ -158,6 +165,21 @@ export class CodexProtocolClient extends EventEmitter {
|
|
|
158
165
|
}
|
|
159
166
|
pending.resolve(message.result);
|
|
160
167
|
}
|
|
168
|
+
wasIssuedRequestId(id) {
|
|
169
|
+
if (typeof id !== "string") {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
const prefix = `${this.requestIdPrefix}-`;
|
|
173
|
+
if (!id.startsWith(prefix)) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
const ordinalText = id.slice(prefix.length);
|
|
177
|
+
if (!/^[1-9]\d*$/.test(ordinalText)) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
const ordinal = Number(ordinalText);
|
|
181
|
+
return Number.isSafeInteger(ordinal) && ordinal < this.nextRequestId;
|
|
182
|
+
}
|
|
161
183
|
writeJson(message) {
|
|
162
184
|
if (this.closed) {
|
|
163
185
|
throw new TwinnyError("Codex protocol connection is closed", "CODEX_PROTOCOL_CLOSED");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/codex/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/codex/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -805,6 +805,7 @@ export declare class ConversationManager {
|
|
|
805
805
|
private handleNewCommand;
|
|
806
806
|
private openNewThreadForMessage;
|
|
807
807
|
private steerOrDefer;
|
|
808
|
+
private recoverStaleActiveAfterNoActiveSteer;
|
|
808
809
|
private startPendingBatch;
|
|
809
810
|
private schedulePendingMessage;
|
|
810
811
|
private deliverPendingMessageWithMode;
|
|
@@ -904,6 +905,7 @@ export declare class ConversationManager {
|
|
|
904
905
|
private failSideTurnsForProfile;
|
|
905
906
|
private suspendActiveTurnForCodexAppServerExit;
|
|
906
907
|
private recoverSuspendedActiveTurnForCodexAppServerExit;
|
|
908
|
+
private resumeSuspendedActiveThread;
|
|
907
909
|
private suspendActiveTurnForShutdown;
|
|
908
910
|
private interruptActiveTurnBestEffort;
|
|
909
911
|
private clearActiveGoalBestEffort;
|
|
@@ -658,7 +658,15 @@ export class ConversationManager {
|
|
|
658
658
|
if (!active) {
|
|
659
659
|
return 0;
|
|
660
660
|
}
|
|
661
|
-
|
|
661
|
+
try {
|
|
662
|
+
return (await this.recoverSuspendedActiveTurnForCodexAppServerExit(state, active)) ? 1 : 0;
|
|
663
|
+
}
|
|
664
|
+
catch (error) {
|
|
665
|
+
if (!state.active && !state.suspendedActiveTurns.includes(active)) {
|
|
666
|
+
state.suspendedActiveTurns.unshift(active);
|
|
667
|
+
}
|
|
668
|
+
throw error;
|
|
669
|
+
}
|
|
662
670
|
};
|
|
663
671
|
recoverPromises.push(this.runStateControlTask(stateKey, state, options, recover));
|
|
664
672
|
}
|
|
@@ -4958,6 +4966,7 @@ export class ConversationManager {
|
|
|
4958
4966
|
this.notifyThreadSteerWatchers(active.threadId);
|
|
4959
4967
|
return;
|
|
4960
4968
|
}
|
|
4969
|
+
const steerRunId = active.runId;
|
|
4961
4970
|
try {
|
|
4962
4971
|
await this.options.codex.steerTurn({
|
|
4963
4972
|
profile: active.profile,
|
|
@@ -4991,9 +5000,24 @@ export class ConversationManager {
|
|
|
4991
5000
|
await this.addQueuedReactionBestEffort(message);
|
|
4992
5001
|
state.pendingBatch.push(message);
|
|
4993
5002
|
await this.markPendingMessagesQueuedBestEffort([message]);
|
|
5003
|
+
if (isNoActiveTurnToSteerError(error)) {
|
|
5004
|
+
await this.recoverStaleActiveAfterNoActiveSteer(state, active, steerRunId);
|
|
5005
|
+
}
|
|
4994
5006
|
await this.replyControlBestEffort(message.messageId, "当前任务已不可打断注入,已加入下一轮队列。");
|
|
4995
5007
|
}
|
|
4996
5008
|
}
|
|
5009
|
+
async recoverStaleActiveAfterNoActiveSteer(state, active, steerRunId) {
|
|
5010
|
+
if (state.active !== active || active.runId !== steerRunId) {
|
|
5011
|
+
return;
|
|
5012
|
+
}
|
|
5013
|
+
state.active = undefined;
|
|
5014
|
+
this.stopAgentCardTimer(active);
|
|
5015
|
+
await this.clearReactionBestEffort(active);
|
|
5016
|
+
await this.startWaitingInterruptBatch(state);
|
|
5017
|
+
if (!state.active) {
|
|
5018
|
+
await this.startPendingBatch(state, active.context);
|
|
5019
|
+
}
|
|
5020
|
+
}
|
|
4997
5021
|
async startPendingBatch(state, context) {
|
|
4998
5022
|
while (!state.active && state.suspendedActiveTurns.length === 0 && state.pendingBatch.length > 0) {
|
|
4999
5023
|
const first = state.pendingBatch[0];
|
|
@@ -7771,6 +7795,9 @@ export class ConversationManager {
|
|
|
7771
7795
|
await this.setThreadStatusBestEffort(active.conversationKey, active.threadId, "idle");
|
|
7772
7796
|
return false;
|
|
7773
7797
|
}
|
|
7798
|
+
if (active.kind === "normal" || active.kind === "compact") {
|
|
7799
|
+
await this.resumeSuspendedActiveThread(active);
|
|
7800
|
+
}
|
|
7774
7801
|
if (active.kind === "compact") {
|
|
7775
7802
|
await this.beginCompactTurn(state, active.context, {
|
|
7776
7803
|
message: recoveredMessages.messages[recoveredMessages.messages.length - 1],
|
|
@@ -7810,6 +7837,26 @@ export class ConversationManager {
|
|
|
7810
7837
|
});
|
|
7811
7838
|
return true;
|
|
7812
7839
|
}
|
|
7840
|
+
async resumeSuspendedActiveThread(active) {
|
|
7841
|
+
try {
|
|
7842
|
+
const resumed = await this.options.codex.resumeThread({
|
|
7843
|
+
profile: active.profile,
|
|
7844
|
+
threadId: active.threadId,
|
|
7845
|
+
cwd: active.workspace,
|
|
7846
|
+
approvalPolicy: "never"
|
|
7847
|
+
});
|
|
7848
|
+
if (resumed.threadId !== active.threadId) {
|
|
7849
|
+
throw new Error(`Codex resumed unexpected thread ${resumed.threadId} instead of ${active.threadId}`);
|
|
7850
|
+
}
|
|
7851
|
+
}
|
|
7852
|
+
catch (error) {
|
|
7853
|
+
if (isMissingRolloutError(error)) {
|
|
7854
|
+
this.log.warn({ error, conversationKey: active.conversationKey, codexThreadId: active.threadId }, "suspended codex thread rollout missing; preserving existing recovery fallback");
|
|
7855
|
+
return;
|
|
7856
|
+
}
|
|
7857
|
+
throw error;
|
|
7858
|
+
}
|
|
7859
|
+
}
|
|
7813
7860
|
async suspendActiveTurnForShutdown(state) {
|
|
7814
7861
|
const active = state.active;
|
|
7815
7862
|
if (!active) {
|
|
@@ -14223,6 +14270,9 @@ function isMissingThreadError(error) {
|
|
|
14223
14270
|
function isNoActiveTurnToInterruptError(error) {
|
|
14224
14271
|
return errorMessageIncludes(error, "no active turn to interrupt");
|
|
14225
14272
|
}
|
|
14273
|
+
function isNoActiveTurnToSteerError(error) {
|
|
14274
|
+
return errorMessageIncludes(error, "no active turn to steer");
|
|
14275
|
+
}
|
|
14226
14276
|
function errorMessageIncludes(error, fragment) {
|
|
14227
14277
|
const normalizedFragment = fragment.toLowerCase();
|
|
14228
14278
|
if (error instanceof Error && error.message.toLowerCase().includes(normalizedFragment)) {
|