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.
@@ -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;
@@ -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 child = spawn(invocation.command, invocation.args, {
62
+ const spawnOptions = buildCodexAppServerSpawnOptions({
62
63
  cwd: this.options.cwd ?? process.cwd(),
63
- env: buildCodexAppServerEnv(this.options.codexHome, this.options.env ?? process.env),
64
- stdio: ["pipe", "pipe", "pipe"]
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
- this.emit("exit", code, signal);
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) && !child.killed) {
232
- child.kill(signal);
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":"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"}
1
+ {"version":3,"file":"appserver.js","sourceRoot":"","sources":["../../src/codex/appserver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAGN,MAAM,oBAAoB,CAAC;AAC5B,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;AA2EnB,MAAM,OAAO,cAAe,SAAQ,YAAY;IAQjB;IAPrB,KAAK,CAA6C;IAClD,WAAW,CAA8C;IACzD,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,YAAY,GAAG,+BAA+B,CAAC;YACnD,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;SACrF,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,WAAW,GAAG,qCAAqC,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QAEnH,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,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACxD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC;YAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACpF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,KAAK,OAAO,CAAC;gBACb,OAAO;YACT,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAChC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACpC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;oBACrC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC/B,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEjB,IAAI,CAAC;YACH,IAAI,CAAC,kBAAkB,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACjC,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YACnF,MAAM,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YACnF,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACzB,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC/B,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,MAAM,KAAK,CAAC;QACd,CAAC;IACH,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,EACrC,WAA4C;QAE5C,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,KAAK,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAC9E,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,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,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,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,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,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,YAAY,CAAC;QACnB,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,oBAAoB,CAC1B,MAAuC,EACvC,MAAsB;QAEtB,OAAO,kCAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACjG,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC1C,MAAuC,EACvC,MAAsB,EACtB,MAAc;QAEd,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,2DAA2D,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnH,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,MAAM,UAAU,+BAA+B,CAC7C,OAAsD,EACtD,WAA4B,OAAO,CAAC,QAAQ;IAE5C,OAAO;QACL,GAAG,OAAO;QACV,QAAQ,EAAE,QAAQ,KAAK,OAAO;QAC9B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,KAA2D,EAC3D,WAA4B,OAAO,CAAC,QAAQ,EAC5C,oBAAoB,GAAG,QAAQ,KAAK,OAAO;IAE3C,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;QACnB,QAAQ;QACR,oBAAoB;QACpB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,oBAAoB,EAAE,KAAK;QAC3B,cAAc,EAAE,IAAI,GAAG,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,MAAuC,EACvC,MAAsB,EACtB,eAAsD,EAAE;IAExD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,sCAAsC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACnG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,sCAAsC,CACnD,MAAuC,EACvC,MAAsB,EACtB,YAAmD;IAEnD,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC;IAC3C,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,CAAC,YAAY,CAAC,eAAe,IAAI,sBAAsB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACnF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;oBACtC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,CAAC,YAAY,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,sEAAsE;QACtE,4EAA4E;QAC5E,IACE,MAAM,CAAC,QAAQ,KAAK,QAAQ;YAC5B,MAAM,KAAK,SAAS;YACpB,MAAM,CAAC,oBAAoB;YAC3B,iBAAiB,CAAC,KAAK,CAAC,EACxB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,GAAW,EAAE,MAAsB;IACvE,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;QAC3C,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,6BAA6B,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AAClG,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AAClG,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,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,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
  }
@@ -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":"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"}
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
- return (await this.recoverSuspendedActiveTurnForCodexAppServerExit(state, active)) ? 1 : 0;
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)) {