codex-worker 0.1.13 → 0.1.14
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/package.json
CHANGED
|
@@ -4,9 +4,43 @@ import net from 'node:net';
|
|
|
4
4
|
import { spawn } from 'node:child_process';
|
|
5
5
|
import { buildDaemonToken, ensureStateRoot } from '../core/paths.js';
|
|
6
6
|
import { selfRespawnSpec } from '../core/runtime-env.js';
|
|
7
|
+
const DEFAULT_DAEMON_RESPONSE_TIMEOUT_MS = 30_000;
|
|
8
|
+
const DEFAULT_TURN_TIMEOUT_MS = 30 * 60_000;
|
|
7
9
|
function delay(ms) {
|
|
8
10
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
9
11
|
}
|
|
12
|
+
function resolveRequestedTimeoutMs(args) {
|
|
13
|
+
const value = args?.timeoutMs;
|
|
14
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
return Math.trunc(value);
|
|
18
|
+
}
|
|
19
|
+
function resolveTurnTimeoutMsFromEnv() {
|
|
20
|
+
const raw = process.env.CODEX_WORKER_TURN_TIMEOUT_MS;
|
|
21
|
+
if (raw === undefined) {
|
|
22
|
+
return DEFAULT_TURN_TIMEOUT_MS;
|
|
23
|
+
}
|
|
24
|
+
const value = Number(raw);
|
|
25
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
26
|
+
return DEFAULT_TURN_TIMEOUT_MS;
|
|
27
|
+
}
|
|
28
|
+
return Math.trunc(value);
|
|
29
|
+
}
|
|
30
|
+
function resolveDaemonResponseTimeoutMs(command, args) {
|
|
31
|
+
const requestedTimeoutMs = resolveRequestedTimeoutMs(args);
|
|
32
|
+
if (requestedTimeoutMs !== undefined) {
|
|
33
|
+
return Math.max(DEFAULT_DAEMON_RESPONSE_TIMEOUT_MS, requestedTimeoutMs + 10_000);
|
|
34
|
+
}
|
|
35
|
+
if (command === 'run'
|
|
36
|
+
|| command === 'send'
|
|
37
|
+
|| command === 'turn.start'
|
|
38
|
+
|| command === 'turn.steer'
|
|
39
|
+
|| command === 'wait') {
|
|
40
|
+
return Math.max(DEFAULT_DAEMON_RESPONSE_TIMEOUT_MS, resolveTurnTimeoutMsFromEnv() + 10_000);
|
|
41
|
+
}
|
|
42
|
+
return DEFAULT_DAEMON_RESPONSE_TIMEOUT_MS;
|
|
43
|
+
}
|
|
10
44
|
async function readDaemonMeta() {
|
|
11
45
|
const { daemonMetaPath } = ensureStateRoot();
|
|
12
46
|
if (!existsSync(daemonMetaPath)) {
|
|
@@ -58,6 +92,7 @@ export async function ensureDaemonMeta() {
|
|
|
58
92
|
}
|
|
59
93
|
export async function sendDaemonRequest(command, args, options) {
|
|
60
94
|
const meta = await ensureDaemonMeta();
|
|
95
|
+
const responseTimeoutMs = resolveDaemonResponseTimeoutMs(command, args);
|
|
61
96
|
const request = {
|
|
62
97
|
id: `${Date.now()}`,
|
|
63
98
|
token: meta.token,
|
|
@@ -68,6 +103,9 @@ export async function sendDaemonRequest(command, args, options) {
|
|
|
68
103
|
let settled = false;
|
|
69
104
|
let buffer = '';
|
|
70
105
|
const socket = net.createConnection(meta.socketPath);
|
|
106
|
+
const armTimeout = () => {
|
|
107
|
+
socket.setTimeout(responseTimeoutMs);
|
|
108
|
+
};
|
|
71
109
|
const settle = (error, data) => {
|
|
72
110
|
if (settled) {
|
|
73
111
|
return;
|
|
@@ -84,9 +122,11 @@ export async function sendDaemonRequest(command, args, options) {
|
|
|
84
122
|
resolve(data ?? {});
|
|
85
123
|
};
|
|
86
124
|
socket.on('connect', () => {
|
|
125
|
+
armTimeout();
|
|
87
126
|
socket.write(`${JSON.stringify(request)}\n`);
|
|
88
127
|
});
|
|
89
128
|
socket.on('data', (chunk) => {
|
|
129
|
+
armTimeout();
|
|
90
130
|
buffer += chunk.toString('utf8');
|
|
91
131
|
let newlineIndex = buffer.indexOf('\n');
|
|
92
132
|
while (newlineIndex >= 0) {
|
|
@@ -116,6 +156,9 @@ export async function sendDaemonRequest(command, args, options) {
|
|
|
116
156
|
newlineIndex = buffer.indexOf('\n');
|
|
117
157
|
}
|
|
118
158
|
});
|
|
159
|
+
socket.on('timeout', () => {
|
|
160
|
+
settle(new Error('Timed out waiting for daemon response envelope'));
|
|
161
|
+
});
|
|
119
162
|
socket.on('error', (error) => {
|
|
120
163
|
settle(error);
|
|
121
164
|
});
|
|
@@ -132,9 +175,6 @@ export async function sendDaemonRequest(command, args, options) {
|
|
|
132
175
|
settle(new Error(message));
|
|
133
176
|
}
|
|
134
177
|
});
|
|
135
|
-
socket.setTimeout(30_000, () => {
|
|
136
|
-
settle(new Error('Timed out waiting for daemon response envelope'));
|
|
137
|
-
});
|
|
138
178
|
});
|
|
139
179
|
}
|
|
140
180
|
export async function daemonIsRunning() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/daemon/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/daemon/client.ts"],"names":[],"mappings":"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"}
|