@parall/codex-agent 1.26.2 → 1.26.3
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/dispatch.d.ts.map +1 -1
- package/dist/dispatch.js +11 -0
- package/dist/jsonrpc-client.d.ts +2 -0
- package/dist/jsonrpc-client.d.ts.map +1 -1
- package/dist/jsonrpc-client.js +17 -1
- package/package.json +4 -4
- package/src/dispatch.ts +11 -0
- package/src/jsonrpc-client.ts +18 -1
package/dist/dispatch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,KAAK,4BAA4B,GAAG,IAAI,CACtC,gBAAgB,EACd,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,OAAO,GACP,iBAAiB,GACjB,SAAS,GACT,cAAc,CACjB,GAAG;IACF,cAAc,EAAE,mBAAmB,CAAC;IACpC,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAOF;;;;;;;;;;;;;GAaG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IA6B/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IA5BjC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,IAAI,CAA+C;IAC3D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;gBAYQ,IAAI,EAAE,4BAA4B;IAE/D,YAAY,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAK/E,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAgLxG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjD,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAuBhG,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe;IAIrC,OAAO,CAAC,cAAc;IAKhB,IAAI;YAaI,aAAa;
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,KAAK,4BAA4B,GAAG,IAAI,CACtC,gBAAgB,EACd,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,OAAO,GACP,iBAAiB,GACjB,SAAS,GACT,cAAc,CACjB,GAAG;IACF,cAAc,EAAE,mBAAmB,CAAC;IACpC,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAOF;;;;;;;;;;;;;GAaG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IA6B/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IA5BjC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,IAAI,CAA+C;IAC3D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;gBAYQ,IAAI,EAAE,4BAA4B;IAE/D,YAAY,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAK/E,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAgLxG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjD,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAuBhG,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe;IAIrC,OAAO,CAAC,cAAc;IAKhB,IAAI;YAaI,aAAa;YAyBb,OAAO;IA8DrB,OAAO,CAAC,qBAAqB;YAiCf,UAAU;IAwCxB,OAAO,CAAC,iBAAiB;CA2B1B"}
|
package/dist/dispatch.js
CHANGED
|
@@ -283,6 +283,17 @@ export class CodexAppServerAdapter {
|
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
285
|
async ensureStarted(log) {
|
|
286
|
+
if (this.client?.isDisposed()) {
|
|
287
|
+
for (const activeSink of this.activeTurns.values()) {
|
|
288
|
+
activeSink.push({ kind: "error", message: "Codex app-server disposed; resetting adapter" });
|
|
289
|
+
activeSink.close();
|
|
290
|
+
}
|
|
291
|
+
this.activeTurns.clear();
|
|
292
|
+
this.client = null;
|
|
293
|
+
this.proc = null;
|
|
294
|
+
this.initialized = false;
|
|
295
|
+
this.resumedThreadIds.clear();
|
|
296
|
+
}
|
|
286
297
|
if (this.initialized && this.client)
|
|
287
298
|
return;
|
|
288
299
|
if (this.startPromise)
|
package/dist/jsonrpc-client.d.ts
CHANGED
|
@@ -42,8 +42,10 @@ export declare class JsonRpcStdioClient {
|
|
|
42
42
|
setNotificationHandler(handler: NotificationHandler): void;
|
|
43
43
|
sendRequest(method: string, params?: unknown): Promise<unknown>;
|
|
44
44
|
sendNotification(method: string, params?: unknown): void;
|
|
45
|
+
isDisposed(): boolean;
|
|
45
46
|
dispose(err: Error): void;
|
|
46
47
|
private writeFrame;
|
|
48
|
+
private killUnhealthy;
|
|
47
49
|
private ingest;
|
|
48
50
|
private handleLine;
|
|
49
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonrpc-client.d.ts","sourceRoot":"","sources":["../src/jsonrpc-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEzE,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAW5E;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IARnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAS;gBAGN,IAAI,EAAE,8BAA8B,EACpC,gBAAgB,GAAE,MAAmC;
|
|
1
|
+
{"version":3,"file":"jsonrpc-client.d.ts","sourceRoot":"","sources":["../src/jsonrpc-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAEzE,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAW5E;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IARnC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAS;gBAGN,IAAI,EAAE,8BAA8B,EACpC,gBAAgB,GAAE,MAAmC;IASxE,sBAAsB,CAAC,OAAO,EAAE,mBAAmB;IAInD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB/D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAMjD,UAAU,IAAI,OAAO;IAIrB,OAAO,CAAC,GAAG,EAAE,KAAK;IAUlB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,UAAU;CAyBnB"}
|
package/dist/jsonrpc-client.js
CHANGED
|
@@ -23,6 +23,7 @@ export class JsonRpcStdioClient {
|
|
|
23
23
|
proc.stdout.on("data", (chunk) => this.ingest(chunk));
|
|
24
24
|
proc.once("close", () => this.dispose(new Error("app-server subprocess closed")));
|
|
25
25
|
proc.once("error", (err) => this.dispose(err));
|
|
26
|
+
proc.stdin.on("error", (err) => this.killUnhealthy(err));
|
|
26
27
|
}
|
|
27
28
|
setNotificationHandler(handler) {
|
|
28
29
|
this.onNotification = handler;
|
|
@@ -40,6 +41,7 @@ export class JsonRpcStdioClient {
|
|
|
40
41
|
return;
|
|
41
42
|
this.pending.delete(id);
|
|
42
43
|
reject(new Error(`JSON-RPC request "${method}" timed out after ${this.requestTimeoutMs}ms`));
|
|
44
|
+
this.killUnhealthy(new Error(`request "${method}" timed out; subprocess assumed hung`));
|
|
43
45
|
}, this.requestTimeoutMs);
|
|
44
46
|
this.pending.set(id, { resolve, reject, timer });
|
|
45
47
|
});
|
|
@@ -52,6 +54,9 @@ export class JsonRpcStdioClient {
|
|
|
52
54
|
const notification = { jsonrpc: "2.0", method, params };
|
|
53
55
|
this.writeFrame(notification);
|
|
54
56
|
}
|
|
57
|
+
isDisposed() {
|
|
58
|
+
return this.disposed;
|
|
59
|
+
}
|
|
55
60
|
dispose(err) {
|
|
56
61
|
if (this.disposed)
|
|
57
62
|
return;
|
|
@@ -63,7 +68,18 @@ export class JsonRpcStdioClient {
|
|
|
63
68
|
this.pending.clear();
|
|
64
69
|
}
|
|
65
70
|
writeFrame(message) {
|
|
66
|
-
|
|
71
|
+
try {
|
|
72
|
+
this.proc.stdin.write(`${JSON.stringify(message)}\n`);
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
this.killUnhealthy(err instanceof Error ? err : new Error(String(err)));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
killUnhealthy(err) {
|
|
79
|
+
this.dispose(err);
|
|
80
|
+
if (this.proc.exitCode === null && this.proc.signalCode === null) {
|
|
81
|
+
this.proc.kill("SIGTERM");
|
|
82
|
+
}
|
|
67
83
|
}
|
|
68
84
|
ingest(chunk) {
|
|
69
85
|
this.buffer += chunk;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parall/codex-agent",
|
|
3
|
-
"version": "1.26.
|
|
3
|
+
"version": "1.26.3",
|
|
4
4
|
"description": "Codex CLI bridge runtime for self-hosted Parall agents",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"smol-toml": "^1.6.1",
|
|
29
|
-
"@parall/
|
|
30
|
-
"@parall/
|
|
31
|
-
"@parall/
|
|
29
|
+
"@parall/agent-core": "1.26.3",
|
|
30
|
+
"@parall/cli": "1.26.3",
|
|
31
|
+
"@parall/sdk": "1.26.3"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^22.0.0",
|
package/src/dispatch.ts
CHANGED
|
@@ -321,6 +321,17 @@ export class CodexAppServerAdapter implements DispatchAdapter {
|
|
|
321
321
|
}
|
|
322
322
|
|
|
323
323
|
private async ensureStarted(log?: GatewayLogger): Promise<void> {
|
|
324
|
+
if (this.client?.isDisposed()) {
|
|
325
|
+
for (const activeSink of this.activeTurns.values()) {
|
|
326
|
+
activeSink.push({ kind: "error", message: "Codex app-server disposed; resetting adapter" });
|
|
327
|
+
activeSink.close();
|
|
328
|
+
}
|
|
329
|
+
this.activeTurns.clear();
|
|
330
|
+
this.client = null;
|
|
331
|
+
this.proc = null;
|
|
332
|
+
this.initialized = false;
|
|
333
|
+
this.resumedThreadIds.clear();
|
|
334
|
+
}
|
|
324
335
|
if (this.initialized && this.client) return;
|
|
325
336
|
if (this.startPromise) return this.startPromise;
|
|
326
337
|
this.startPromise = this.doStart(log);
|
package/src/jsonrpc-client.ts
CHANGED
|
@@ -56,6 +56,7 @@ export class JsonRpcStdioClient {
|
|
|
56
56
|
proc.stdout.on("data", (chunk: string) => this.ingest(chunk));
|
|
57
57
|
proc.once("close", () => this.dispose(new Error("app-server subprocess closed")));
|
|
58
58
|
proc.once("error", (err) => this.dispose(err));
|
|
59
|
+
proc.stdin.on("error", (err) => this.killUnhealthy(err));
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
setNotificationHandler(handler: NotificationHandler) {
|
|
@@ -74,6 +75,7 @@ export class JsonRpcStdioClient {
|
|
|
74
75
|
if (!pending) return;
|
|
75
76
|
this.pending.delete(id);
|
|
76
77
|
reject(new Error(`JSON-RPC request "${method}" timed out after ${this.requestTimeoutMs}ms`));
|
|
78
|
+
this.killUnhealthy(new Error(`request "${method}" timed out; subprocess assumed hung`));
|
|
77
79
|
}, this.requestTimeoutMs);
|
|
78
80
|
this.pending.set(id, { resolve, reject, timer });
|
|
79
81
|
});
|
|
@@ -87,6 +89,10 @@ export class JsonRpcStdioClient {
|
|
|
87
89
|
this.writeFrame(notification);
|
|
88
90
|
}
|
|
89
91
|
|
|
92
|
+
isDisposed(): boolean {
|
|
93
|
+
return this.disposed;
|
|
94
|
+
}
|
|
95
|
+
|
|
90
96
|
dispose(err: Error) {
|
|
91
97
|
if (this.disposed) return;
|
|
92
98
|
this.disposed = true;
|
|
@@ -98,7 +104,18 @@ export class JsonRpcStdioClient {
|
|
|
98
104
|
}
|
|
99
105
|
|
|
100
106
|
private writeFrame(message: object) {
|
|
101
|
-
|
|
107
|
+
try {
|
|
108
|
+
this.proc.stdin.write(`${JSON.stringify(message)}\n`);
|
|
109
|
+
} catch (err) {
|
|
110
|
+
this.killUnhealthy(err instanceof Error ? err : new Error(String(err)));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private killUnhealthy(err: Error) {
|
|
115
|
+
this.dispose(err);
|
|
116
|
+
if (this.proc.exitCode === null && this.proc.signalCode === null) {
|
|
117
|
+
this.proc.kill("SIGTERM");
|
|
118
|
+
}
|
|
102
119
|
}
|
|
103
120
|
|
|
104
121
|
private ingest(chunk: string) {
|