
























@@ -16,7 +16,11 @@ import {
1616} from "./protocol.js";
1717import { createStdioTransport } from "./transport-stdio.js";
1818import { createWebSocketTransport } from "./transport-websocket.js";
19-import { closeCodexAppServerTransport, type CodexAppServerTransport } from "./transport.js";
19+import {
20+closeCodexAppServerTransport,
21+closeCodexAppServerTransportAndWait,
22+type CodexAppServerTransport,
23+} from "./transport.js";
20242125export const MIN_CODEX_APP_SERVER_VERSION = "0.125.0";
2226const CODEX_APP_SERVER_PARSE_LOG_MAX = 500;
@@ -225,15 +229,20 @@ export class CodexAppServerClient {
225229}
226230227231close(): void {
228-if (this.closed) {
232+if (!this.markClosed(new Error("codex app-server client is closed"))) {
229233return;
230234}
231-this.closed = true;
232-this.lines.close();
233-this.rejectPendingRequests(new Error("codex app-server client is closed"));
234235closeCodexAppServerTransport(this.child);
235236}
236237238+async closeAndWait(options?: {
239+exitTimeoutMs?: number;
240+forceKillDelayMs?: number;
241+}): Promise<void> {
242+this.markClosed(new Error("codex app-server client is closed"));
243+await closeCodexAppServerTransportAndWait(this.child, options);
244+}
245+237246private writeMessage(message: RpcRequest | RpcResponse): void {
238247if (this.closed) {
239248return;
@@ -325,13 +334,19 @@ export class CodexAppServerClient {
325334}
326335327336private closeWithError(error: Error): void {
337+if (this.markClosed(error)) {
338+closeCodexAppServerTransport(this.child);
339+}
340+}
341+342+private markClosed(error: Error): boolean {
328343if (this.closed) {
329-return;
344+return false;
330345}
331346this.closed = true;
332347this.lines.close();
333348this.rejectPendingRequests(error);
334-closeCodexAppServerTransport(this.child);
349+return true;
335350}
336351337352private rejectPendingRequests(error: Error): void {
@@ -485,5 +500,6 @@ function formatExitValue(value: unknown): string {
485500486501export const __testing = {
487502 closeCodexAppServerTransport,
503+ closeCodexAppServerTransportAndWait,
488504 redactCodexAppServerLinePreview,
489505} as const;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。