openai-ws-opencode 0.1.4 → 0.1.6
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/README.md +1 -1
- package/bin/setup.js +143 -6
- package/dist/transport/bridge.d.ts.map +1 -1
- package/dist/transport/bridge.js +2 -5
- package/dist/transport/bridge.js.map +1 -1
- package/dist/transport/pool.d.ts +7 -0
- package/dist/transport/pool.d.ts.map +1 -1
- package/dist/transport/pool.js +200 -30
- package/dist/transport/pool.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -101,7 +101,7 @@ Then point OpenCode at the packed tarball through the plugin array:
|
|
|
101
101
|
|
|
102
102
|
```jsonc
|
|
103
103
|
{
|
|
104
|
-
"plugin": ["openai-ws-opencode@file:/absolute/path/openai-ws-opencode-0.1.
|
|
104
|
+
"plugin": ["openai-ws-opencode@file:/absolute/path/openai-ws-opencode-0.1.5.tgz"]
|
|
105
105
|
}
|
|
106
106
|
```
|
|
107
107
|
|
package/bin/setup.js
CHANGED
|
@@ -166,20 +166,28 @@ function applyJsonPatch(text, jsonPath, value) {
|
|
|
166
166
|
}));
|
|
167
167
|
}
|
|
168
168
|
function pluginPackageName(specifier) {
|
|
169
|
-
if (specifier.startsWith("file
|
|
170
|
-
|
|
169
|
+
if (specifier.startsWith("file:")) {
|
|
170
|
+
const filePath = specifier.startsWith("file://") ? new URL(specifier).pathname : specifier.slice("file:".length);
|
|
171
|
+
const base = path.basename(filePath);
|
|
172
|
+
if (base === PACKAGE_NAME || base.startsWith(`${PACKAGE_NAME}-`) || base.startsWith(`${PACKAGE_NAME}@`))
|
|
173
|
+
return PACKAGE_NAME;
|
|
174
|
+
return base.replace(/(?:\.tgz|\.[cm]?[jt]s)$/, "");
|
|
175
|
+
}
|
|
171
176
|
const lastAt = specifier.lastIndexOf("@");
|
|
172
177
|
return lastAt > 0 ? specifier.slice(0, lastAt) : specifier;
|
|
173
178
|
}
|
|
174
|
-
function patchConfigText(input, pluginSpec = DEFAULT_PLUGIN_SPEC) {
|
|
179
|
+
function patchConfigText(input, pluginSpec = DEFAULT_PLUGIN_SPEC, replacePluginSpec = false) {
|
|
175
180
|
let text = input.trim() ? input : "{}";
|
|
176
181
|
const config = parse(text) ?? {};
|
|
177
182
|
if (!config.$schema)
|
|
178
183
|
text = applyJsonPatch(text, ["$schema"], SCHEMA);
|
|
179
184
|
const current = (parse(text) ?? {}).plugin;
|
|
180
185
|
const plugins = Array.isArray(current) ? [...current] : [];
|
|
181
|
-
|
|
186
|
+
const existingPluginIndex = plugins.findIndex((plugin) => typeof plugin === "string" && pluginPackageName(plugin) === PACKAGE_NAME);
|
|
187
|
+
if (existingPluginIndex === -1) {
|
|
182
188
|
plugins.push(pluginSpec);
|
|
189
|
+
} else if (replacePluginSpec) {
|
|
190
|
+
plugins[existingPluginIndex] = pluginSpec;
|
|
183
191
|
}
|
|
184
192
|
text = applyJsonPatch(text, ["plugin"], plugins);
|
|
185
193
|
const next = parse(text) ?? {};
|
|
@@ -192,6 +200,123 @@ function patchConfigText(input, pluginSpec = DEFAULT_PLUGIN_SPEC) {
|
|
|
192
200
|
`
|
|
193
201
|
}));
|
|
194
202
|
}
|
|
203
|
+
function isNotFound(error) {
|
|
204
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
|
|
205
|
+
}
|
|
206
|
+
function cacheHomePath(cacheHome = process.env.XDG_CACHE_HOME ?? path.join(os.homedir(), ".cache")) {
|
|
207
|
+
return cacheHome;
|
|
208
|
+
}
|
|
209
|
+
function openCodeLatestCachePath(cacheHome) {
|
|
210
|
+
return path.join(cacheHomePath(cacheHome), "opencode", "packages", `${PACKAGE_NAME}@latest`);
|
|
211
|
+
}
|
|
212
|
+
async function pathExists(file) {
|
|
213
|
+
try {
|
|
214
|
+
await fs.access(file);
|
|
215
|
+
return true;
|
|
216
|
+
} catch (error) {
|
|
217
|
+
if (isNotFound(error))
|
|
218
|
+
return false;
|
|
219
|
+
throw error;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async function readPackageVersion(packageJsonPath) {
|
|
223
|
+
try {
|
|
224
|
+
const text = await fs.readFile(packageJsonPath, "utf8");
|
|
225
|
+
const parsed = JSON.parse(text);
|
|
226
|
+
return typeof parsed.version === "string" ? parsed.version : undefined;
|
|
227
|
+
} catch (error) {
|
|
228
|
+
if (isNotFound(error))
|
|
229
|
+
return;
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async function setupPackageVersion() {
|
|
234
|
+
const packageJsonPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "package.json");
|
|
235
|
+
const version = await readPackageVersion(packageJsonPath);
|
|
236
|
+
if (!version)
|
|
237
|
+
throw new Error(`Unable to read setup package version from ${packageJsonPath}`);
|
|
238
|
+
return version;
|
|
239
|
+
}
|
|
240
|
+
function semverParts(version) {
|
|
241
|
+
const match = /^(\d+)\.(\d+)\.(\d+)/.exec(version);
|
|
242
|
+
if (!match)
|
|
243
|
+
return;
|
|
244
|
+
return [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
245
|
+
}
|
|
246
|
+
function compareSemver(left, right) {
|
|
247
|
+
const leftParts = semverParts(left);
|
|
248
|
+
const rightParts = semverParts(right);
|
|
249
|
+
if (!leftParts || !rightParts)
|
|
250
|
+
return 0;
|
|
251
|
+
for (let index = 0;index < leftParts.length; index++) {
|
|
252
|
+
if (leftParts[index] !== rightParts[index])
|
|
253
|
+
return leftParts[index] < rightParts[index] ? -1 : 1;
|
|
254
|
+
}
|
|
255
|
+
return 0;
|
|
256
|
+
}
|
|
257
|
+
var SOURCE_EXTENSIONS = new Set([".cjs", ".js", ".mjs", ".ts"]);
|
|
258
|
+
var BAD_OAUTH_PORT = /\bOAUTH_PORT\b\s*[:=]\s*1456\b/;
|
|
259
|
+
var BAD_CODEX_ORIGINATOR = /\bCODEX_ORIGINATOR\b\s*[:=]\s*["']codex_cli_rs["']/;
|
|
260
|
+
async function hasKnownBadConstants(packageRoot) {
|
|
261
|
+
const directories = [packageRoot];
|
|
262
|
+
let checkedFiles = 0;
|
|
263
|
+
while (directories.length > 0 && checkedFiles < 500) {
|
|
264
|
+
const current = directories.pop();
|
|
265
|
+
let entries;
|
|
266
|
+
try {
|
|
267
|
+
entries = await fs.readdir(current, { withFileTypes: true });
|
|
268
|
+
} catch (error) {
|
|
269
|
+
if (isNotFound(error))
|
|
270
|
+
continue;
|
|
271
|
+
throw error;
|
|
272
|
+
}
|
|
273
|
+
for (const entry of entries) {
|
|
274
|
+
const entryPath = path.join(current, entry.name);
|
|
275
|
+
if (entry.isDirectory()) {
|
|
276
|
+
if (entry.name !== "node_modules" && entry.name !== ".git")
|
|
277
|
+
directories.push(entryPath);
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
if (!entry.isFile() || !SOURCE_EXTENSIONS.has(path.extname(entry.name)))
|
|
281
|
+
continue;
|
|
282
|
+
checkedFiles += 1;
|
|
283
|
+
const source = await fs.readFile(entryPath, "utf8");
|
|
284
|
+
if (BAD_OAUTH_PORT.test(source) || BAD_CODEX_ORIGINATOR.test(source))
|
|
285
|
+
return true;
|
|
286
|
+
if (checkedFiles >= 500)
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
function timestampForPath(date) {
|
|
293
|
+
return date.toISOString().replace(/[:.]/g, "-");
|
|
294
|
+
}
|
|
295
|
+
async function staleDestination(cachePath, now) {
|
|
296
|
+
const base = `${cachePath}.stale-${timestampForPath(now)}`;
|
|
297
|
+
let candidate = base;
|
|
298
|
+
let suffix = 1;
|
|
299
|
+
while (await pathExists(candidate)) {
|
|
300
|
+
candidate = `${base}-${suffix}`;
|
|
301
|
+
suffix += 1;
|
|
302
|
+
}
|
|
303
|
+
return candidate;
|
|
304
|
+
}
|
|
305
|
+
async function repairStaleOpenCodeLatestCache(options = {}) {
|
|
306
|
+
const cachePath = openCodeLatestCachePath(options.cacheHome);
|
|
307
|
+
if (!await pathExists(cachePath))
|
|
308
|
+
return { cachePath, repaired: false };
|
|
309
|
+
const packageRoot = path.join(cachePath, "node_modules", PACKAGE_NAME);
|
|
310
|
+
const cachedVersion = await readPackageVersion(path.join(packageRoot, "package.json"));
|
|
311
|
+
const currentVersion = options.packageVersion ?? await setupPackageVersion();
|
|
312
|
+
const staleVersion = cachedVersion ? compareSemver(cachedVersion, currentVersion) < 0 : false;
|
|
313
|
+
const staleConstants = await hasKnownBadConstants(packageRoot);
|
|
314
|
+
if (!staleVersion && !staleConstants)
|
|
315
|
+
return { cachePath, repaired: false };
|
|
316
|
+
const movedTo = await staleDestination(cachePath, options.now?.() ?? new Date);
|
|
317
|
+
await fs.rename(cachePath, movedTo);
|
|
318
|
+
return { cachePath, movedTo, repaired: true };
|
|
319
|
+
}
|
|
195
320
|
async function setupOpenCodeConfig(options = {}) {
|
|
196
321
|
const file = targetPath(options);
|
|
197
322
|
let existing = "";
|
|
@@ -201,11 +326,19 @@ async function setupOpenCodeConfig(options = {}) {
|
|
|
201
326
|
if (error?.code !== "ENOENT")
|
|
202
327
|
throw error;
|
|
203
328
|
}
|
|
204
|
-
const updated = patchConfigText(existing, options.pluginSpec ?? DEFAULT_PLUGIN_SPEC);
|
|
329
|
+
const updated = patchConfigText(existing, options.pluginSpec ?? DEFAULT_PLUGIN_SPEC, Boolean(options.pluginSpec));
|
|
205
330
|
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
206
331
|
await fs.writeFile(file, updated.endsWith(`
|
|
207
332
|
`) ? updated : `${updated}
|
|
208
333
|
`, "utf8");
|
|
334
|
+
if (options.cacheRepair !== false) {
|
|
335
|
+
try {
|
|
336
|
+
await repairStaleOpenCodeLatestCache();
|
|
337
|
+
} catch (error) {
|
|
338
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
339
|
+
console.warn(`Warning: could not repair OpenCode cache at ${openCodeLatestCachePath()}. Remove it manually if OpenCode keeps loading stale plugin code. ${message}`);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
209
342
|
return file;
|
|
210
343
|
}
|
|
211
344
|
function parseArgs(argv) {
|
|
@@ -220,8 +353,10 @@ function parseArgs(argv) {
|
|
|
220
353
|
options.configPath = argv[++index];
|
|
221
354
|
else if (arg === "--plugin")
|
|
222
355
|
options.pluginSpec = argv[++index];
|
|
356
|
+
else if (arg === "--no-cache-repair")
|
|
357
|
+
options.cacheRepair = false;
|
|
223
358
|
else if (arg === "--help" || arg === "-h") {
|
|
224
|
-
console.log("Usage: openai-ws-opencode setup [--global|--project] [--path <opencode.json>] [--plugin <specifier>]");
|
|
359
|
+
console.log("Usage: openai-ws-opencode setup [--global|--project] [--path <opencode.json>] [--plugin <specifier>] [--no-cache-repair]");
|
|
225
360
|
process.exit(0);
|
|
226
361
|
}
|
|
227
362
|
}
|
|
@@ -247,6 +382,8 @@ if (isDirectExecution()) {
|
|
|
247
382
|
}
|
|
248
383
|
export {
|
|
249
384
|
setupOpenCodeConfig,
|
|
385
|
+
repairStaleOpenCodeLatestCache,
|
|
250
386
|
patchConfigText,
|
|
387
|
+
parseArgs,
|
|
251
388
|
isDirectExecution
|
|
252
389
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAkBpD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,gBAAqB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,QAAQ,
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAkBpD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,gBAAqB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,QAAQ,CAsDV"}
|
package/dist/transport/bridge.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { prepareBody } from "./body.js";
|
|
2
|
-
import { acquireConnection, closeConnections } from "./pool.js";
|
|
2
|
+
import { acquireConnection, closeConnections, sendPending } from "./pool.js";
|
|
3
3
|
function abortPending(conn, error) {
|
|
4
4
|
const pending = conn.pending;
|
|
5
5
|
if (!pending || pending.done)
|
|
@@ -52,10 +52,7 @@ export function bridgeWebSocket(wsUrl, headers, requestBody, isOAuth, context =
|
|
|
52
52
|
}
|
|
53
53
|
if (signal)
|
|
54
54
|
signal.addEventListener("abort", onAbort, { once: true });
|
|
55
|
-
|
|
56
|
-
conn.ws.send(JSON.stringify({ type: "response.create", ...wsBody }));
|
|
57
|
-
conn.pending.sent = true;
|
|
58
|
-
}
|
|
55
|
+
sendPending(conn);
|
|
59
56
|
},
|
|
60
57
|
cancel() {
|
|
61
58
|
if (finalized)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAyB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/transport/pool.d.ts
CHANGED
|
@@ -35,9 +35,15 @@ export interface PooledConnection {
|
|
|
35
35
|
lastStablePrefixHash?: string;
|
|
36
36
|
generation: number;
|
|
37
37
|
reconnectAttempts: number;
|
|
38
|
+
lastActivityAt: number;
|
|
39
|
+
lastCloseCode?: number;
|
|
40
|
+
lastCloseReason?: string;
|
|
41
|
+
lastErrorMessage?: string;
|
|
38
42
|
idleTimer: ReturnType<typeof setTimeout> | null;
|
|
39
43
|
connectTimer: ReturnType<typeof setTimeout> | null;
|
|
40
44
|
retryTimer: ReturnType<typeof setTimeout> | null;
|
|
45
|
+
heartbeatTimer: ReturnType<typeof setTimeout> | null;
|
|
46
|
+
pongTimer: ReturnType<typeof setTimeout> | null;
|
|
41
47
|
detach: (() => void) | null;
|
|
42
48
|
}
|
|
43
49
|
export declare const connectionPool: PooledConnection[];
|
|
@@ -47,6 +53,7 @@ export declare const readyState: {
|
|
|
47
53
|
readonly CLOSING: 2;
|
|
48
54
|
readonly CLOSED: 3;
|
|
49
55
|
};
|
|
56
|
+
export declare function sendPending(conn: PooledConnection): boolean;
|
|
50
57
|
export declare function acquireConnection(wsUrl: string, headers: Record<string, string>, context: TransportContext): PooledConnection;
|
|
51
58
|
export declare function closeConnections(predicate?: (conn: PooledConnection) => boolean): void;
|
|
52
59
|
export declare function resetPoolForTesting(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/transport/pool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,OAAO,CAAA;IAC/D,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,OAAO,CAAA;IAChE,gBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,OAAO,CAAA;IAC7E,mBAAmB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,OAAO,CAAA;CACjF,CAAA;AAED,KAAK,oBAAoB,GAAG,KAAK,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KAAK,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/transport/pool.ts"],"names":[],"mappings":"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"}
|
package/dist/transport/pool.js
CHANGED
|
@@ -4,6 +4,9 @@ const DEFAULT_CONNECT_TIMEOUT_MS = 10_000;
|
|
|
4
4
|
const MAX_RECONNECT_ATTEMPTS = 3;
|
|
5
5
|
const RECONNECT_DELAY_MS = 100;
|
|
6
6
|
const IDLE_EVICT_MS = 120_000;
|
|
7
|
+
const STALE_REUSE_MS = 60_000;
|
|
8
|
+
const HEARTBEAT_INTERVAL_MS = 30_000;
|
|
9
|
+
const PONG_TIMEOUT_MS = 10_000;
|
|
7
10
|
let WebSocketImpl = WebSocket;
|
|
8
11
|
export const connectionPool = [];
|
|
9
12
|
export const readyState = {
|
|
@@ -36,6 +39,19 @@ function clearTimer(timer) {
|
|
|
36
39
|
if (timer)
|
|
37
40
|
clearTimeout(timer);
|
|
38
41
|
}
|
|
42
|
+
function unrefTimer(timer) {
|
|
43
|
+
if (typeof timer === "object" && timer !== null && "unref" in timer) {
|
|
44
|
+
;
|
|
45
|
+
timer.unref?.();
|
|
46
|
+
}
|
|
47
|
+
return timer;
|
|
48
|
+
}
|
|
49
|
+
function clearHeartbeat(conn) {
|
|
50
|
+
clearTimer(conn.heartbeatTimer);
|
|
51
|
+
clearTimer(conn.pongTimer);
|
|
52
|
+
conn.heartbeatTimer = null;
|
|
53
|
+
conn.pongTimer = null;
|
|
54
|
+
}
|
|
39
55
|
function detach(conn) {
|
|
40
56
|
if (conn.detach) {
|
|
41
57
|
conn.detach();
|
|
@@ -44,6 +60,7 @@ function detach(conn) {
|
|
|
44
60
|
clearTimer(conn.connectTimer);
|
|
45
61
|
clearTimer(conn.idleTimer);
|
|
46
62
|
clearTimer(conn.retryTimer);
|
|
63
|
+
clearHeartbeat(conn);
|
|
47
64
|
conn.connectTimer = null;
|
|
48
65
|
conn.idleTimer = null;
|
|
49
66
|
conn.retryTimer = null;
|
|
@@ -54,6 +71,49 @@ function remove(conn) {
|
|
|
54
71
|
connectionPool.splice(index, 1);
|
|
55
72
|
detach(conn);
|
|
56
73
|
}
|
|
74
|
+
function scheduleHeartbeat(conn) {
|
|
75
|
+
clearHeartbeat(conn);
|
|
76
|
+
if (conn.busy || conn.pending)
|
|
77
|
+
return;
|
|
78
|
+
const ws = conn.ws;
|
|
79
|
+
if (!ws || ws.readyState !== readyState.OPEN)
|
|
80
|
+
return;
|
|
81
|
+
if (typeof ws.ping !== "function")
|
|
82
|
+
return;
|
|
83
|
+
const generation = conn.generation;
|
|
84
|
+
conn.heartbeatTimer = unrefTimer(setTimeout(() => {
|
|
85
|
+
conn.heartbeatTimer = null;
|
|
86
|
+
if (generation !== conn.generation || conn.busy || !conn.ws)
|
|
87
|
+
return;
|
|
88
|
+
if (conn.ws.readyState !== readyState.OPEN)
|
|
89
|
+
return;
|
|
90
|
+
try {
|
|
91
|
+
conn.ws.ping?.();
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
remove(conn);
|
|
95
|
+
try {
|
|
96
|
+
conn.ws?.terminate?.();
|
|
97
|
+
}
|
|
98
|
+
catch { }
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
conn.pongTimer = unrefTimer(setTimeout(() => {
|
|
102
|
+
conn.pongTimer = null;
|
|
103
|
+
if (generation !== conn.generation || conn.busy)
|
|
104
|
+
return;
|
|
105
|
+
remove(conn);
|
|
106
|
+
try {
|
|
107
|
+
conn.ws?.terminate?.();
|
|
108
|
+
}
|
|
109
|
+
catch { }
|
|
110
|
+
try {
|
|
111
|
+
conn.ws?.close(1001, "pong timeout");
|
|
112
|
+
}
|
|
113
|
+
catch { }
|
|
114
|
+
}, PONG_TIMEOUT_MS));
|
|
115
|
+
}, HEARTBEAT_INTERVAL_MS));
|
|
116
|
+
}
|
|
57
117
|
function release(conn) {
|
|
58
118
|
conn.lastSessionID = conn.activeSessionID;
|
|
59
119
|
conn.lastAgent = conn.activeAgent;
|
|
@@ -62,15 +122,25 @@ function release(conn) {
|
|
|
62
122
|
conn.activeAgent = undefined;
|
|
63
123
|
conn.busy = false;
|
|
64
124
|
conn.reconnectAttempts = 0;
|
|
65
|
-
|
|
125
|
+
conn.idleTimer = unrefTimer(setTimeout(() => {
|
|
126
|
+
conn.idleTimer = null;
|
|
66
127
|
if (!conn.busy) {
|
|
67
128
|
remove(conn);
|
|
68
|
-
|
|
129
|
+
try {
|
|
130
|
+
conn.ws?.close(1000, "idle eviction");
|
|
131
|
+
}
|
|
132
|
+
catch { }
|
|
69
133
|
}
|
|
70
|
-
}, IDLE_EVICT_MS);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
134
|
+
}, IDLE_EVICT_MS));
|
|
135
|
+
scheduleHeartbeat(conn);
|
|
136
|
+
}
|
|
137
|
+
function formatFailureMessage(conn, reason) {
|
|
138
|
+
const code = conn.lastCloseCode !== undefined ? conn.lastCloseCode : "unknown";
|
|
139
|
+
const closeReason = JSON.stringify(conn.lastCloseReason ?? "");
|
|
140
|
+
const lastError = conn.lastErrorMessage ? JSON.stringify(conn.lastErrorMessage) : "none";
|
|
141
|
+
return (`WebSocket closed before response completed; cannot retry because ${reason}; ` +
|
|
142
|
+
`reconnectAttempts=${conn.reconnectAttempts}/${MAX_RECONNECT_ATTEMPTS}; ` +
|
|
143
|
+
`closeCode=${code}; closeReason=${closeReason}; lastError=${lastError}`);
|
|
74
144
|
}
|
|
75
145
|
function fail(conn, error, closeSocket) {
|
|
76
146
|
const pending = conn.pending;
|
|
@@ -89,6 +159,9 @@ function fail(conn, error, closeSocket) {
|
|
|
89
159
|
remove(conn);
|
|
90
160
|
try {
|
|
91
161
|
conn.ws?.terminate?.();
|
|
162
|
+
}
|
|
163
|
+
catch { }
|
|
164
|
+
try {
|
|
92
165
|
conn.ws?.close(1000, "aborted");
|
|
93
166
|
}
|
|
94
167
|
catch { }
|
|
@@ -118,15 +191,53 @@ function enqueueSSE(conn, frame) {
|
|
|
118
191
|
return;
|
|
119
192
|
const eventType = typeof frame.type === "string" ? frame.type : "message";
|
|
120
193
|
const encoded = new TextEncoder().encode(`event: ${eventType}\ndata: ${JSON.stringify(frame)}\n\n`);
|
|
194
|
+
try {
|
|
195
|
+
pending.controller.enqueue(encoded);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
121
200
|
pending.forwarded = true;
|
|
122
|
-
pending.controller.enqueue(encoded);
|
|
123
201
|
if (["response.completed", "response.failed", "response.incomplete", "error"].includes(eventType)) {
|
|
124
202
|
pending.done = true;
|
|
125
|
-
|
|
203
|
+
try {
|
|
204
|
+
pending.controller.close();
|
|
205
|
+
}
|
|
206
|
+
catch { }
|
|
126
207
|
release(conn);
|
|
127
208
|
}
|
|
128
209
|
}
|
|
210
|
+
export function sendPending(conn) {
|
|
211
|
+
const pending = conn.pending;
|
|
212
|
+
if (!pending || pending.done || pending.sent)
|
|
213
|
+
return false;
|
|
214
|
+
const ws = conn.ws;
|
|
215
|
+
if (!ws || ws.readyState !== readyState.OPEN)
|
|
216
|
+
return false;
|
|
217
|
+
try {
|
|
218
|
+
ws.send(JSON.stringify({ type: "response.create", ...pending.body }));
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
conn.lastErrorMessage = error instanceof Error ? error.message : String(error);
|
|
222
|
+
queueMicrotask(() => handleSocketLoss(conn));
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
pending.sent = true;
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
function normalizeCloseReason(reason) {
|
|
229
|
+
if (reason === undefined || reason === null)
|
|
230
|
+
return undefined;
|
|
231
|
+
if (typeof reason === "string")
|
|
232
|
+
return reason;
|
|
233
|
+
if (Buffer.isBuffer(reason))
|
|
234
|
+
return reason.toString("utf8");
|
|
235
|
+
if (reason instanceof Uint8Array)
|
|
236
|
+
return Buffer.from(reason).toString("utf8");
|
|
237
|
+
return String(reason);
|
|
238
|
+
}
|
|
129
239
|
function connect(conn) {
|
|
240
|
+
clearHeartbeat(conn);
|
|
130
241
|
const ws = new WebSocketImpl(conn.wsUrl, { headers: conn.headers });
|
|
131
242
|
const generation = ++conn.generation;
|
|
132
243
|
conn.ws = ws;
|
|
@@ -138,42 +249,57 @@ function connect(conn) {
|
|
|
138
249
|
return;
|
|
139
250
|
fail(conn, new Error("WebSocket connection timed out"), true);
|
|
140
251
|
}, DEFAULT_CONNECT_TIMEOUT_MS);
|
|
141
|
-
|
|
142
|
-
connectTimer.unref();
|
|
143
|
-
conn.connectTimer = connectTimer;
|
|
252
|
+
conn.connectTimer = unrefTimer(connectTimer);
|
|
144
253
|
const handleOpen = () => {
|
|
145
254
|
if (generation !== conn.generation)
|
|
146
255
|
return;
|
|
147
256
|
clearTimer(conn.connectTimer);
|
|
148
257
|
conn.connectTimer = null;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
conn.pending.sent = true;
|
|
152
|
-
}
|
|
258
|
+
conn.lastActivityAt = Date.now();
|
|
259
|
+
sendPending(conn);
|
|
153
260
|
};
|
|
154
261
|
const handleMessage = (data) => {
|
|
155
262
|
if (generation !== conn.generation)
|
|
156
263
|
return;
|
|
264
|
+
conn.lastActivityAt = Date.now();
|
|
157
265
|
for (const frame of parseFrames(data))
|
|
158
266
|
enqueueSSE(conn, frame);
|
|
159
267
|
};
|
|
160
|
-
const
|
|
268
|
+
const handlePong = () => {
|
|
269
|
+
if (generation !== conn.generation)
|
|
270
|
+
return;
|
|
271
|
+
conn.lastActivityAt = Date.now();
|
|
272
|
+
clearTimer(conn.pongTimer);
|
|
273
|
+
conn.pongTimer = null;
|
|
274
|
+
if (!conn.busy && !conn.pending)
|
|
275
|
+
scheduleHeartbeat(conn);
|
|
276
|
+
};
|
|
277
|
+
const handleError = (error) => {
|
|
161
278
|
if (generation !== conn.generation)
|
|
162
279
|
return;
|
|
280
|
+
conn.lastErrorMessage =
|
|
281
|
+
error instanceof Error ? error.message : error !== undefined && error !== null ? String(error) : undefined;
|
|
163
282
|
handleSocketLoss(conn);
|
|
164
283
|
};
|
|
165
|
-
const handleClose = () => {
|
|
284
|
+
const handleClose = (code, reason) => {
|
|
166
285
|
if (generation !== conn.generation)
|
|
167
286
|
return;
|
|
287
|
+
if (typeof code === "number")
|
|
288
|
+
conn.lastCloseCode = code;
|
|
289
|
+
const normalizedReason = normalizeCloseReason(reason);
|
|
290
|
+
if (normalizedReason !== undefined)
|
|
291
|
+
conn.lastCloseReason = normalizedReason;
|
|
168
292
|
handleSocketLoss(conn);
|
|
169
293
|
};
|
|
170
294
|
on(ws, "open", handleOpen);
|
|
171
295
|
on(ws, "message", handleMessage);
|
|
296
|
+
on(ws, "pong", handlePong);
|
|
172
297
|
on(ws, "error", handleError);
|
|
173
298
|
on(ws, "close", handleClose);
|
|
174
299
|
conn.detach = () => {
|
|
175
300
|
off(ws, "open", handleOpen);
|
|
176
301
|
off(ws, "message", handleMessage);
|
|
302
|
+
off(ws, "pong", handlePong);
|
|
177
303
|
off(ws, "error", handleError);
|
|
178
304
|
off(ws, "close", handleClose);
|
|
179
305
|
};
|
|
@@ -181,26 +307,43 @@ function connect(conn) {
|
|
|
181
307
|
function handleSocketLoss(conn) {
|
|
182
308
|
clearTimer(conn.connectTimer);
|
|
183
309
|
conn.connectTimer = null;
|
|
310
|
+
clearHeartbeat(conn);
|
|
184
311
|
const pending = conn.pending;
|
|
185
312
|
if (!pending || pending.done) {
|
|
186
313
|
remove(conn);
|
|
314
|
+
try {
|
|
315
|
+
conn.ws?.terminate?.();
|
|
316
|
+
}
|
|
317
|
+
catch { }
|
|
187
318
|
return;
|
|
188
319
|
}
|
|
189
|
-
|
|
320
|
+
const canRetry = !pending.forwarded && conn.reconnectAttempts < MAX_RECONNECT_ATTEMPTS;
|
|
321
|
+
if (canRetry) {
|
|
190
322
|
conn.reconnectAttempts++;
|
|
323
|
+
pending.sent = false;
|
|
324
|
+
const priorWs = conn.ws;
|
|
191
325
|
detach(conn);
|
|
192
|
-
|
|
326
|
+
try {
|
|
327
|
+
priorWs?.terminate?.();
|
|
328
|
+
}
|
|
329
|
+
catch { }
|
|
330
|
+
try {
|
|
331
|
+
priorWs?.close(1000, "retrying");
|
|
332
|
+
}
|
|
333
|
+
catch { }
|
|
334
|
+
conn.ws = null;
|
|
335
|
+
conn.retryTimer = unrefTimer(setTimeout(() => {
|
|
193
336
|
conn.retryTimer = null;
|
|
194
|
-
if (!connectionPool.includes(conn) || !conn.pending || conn.pending.done || conn.pending.
|
|
337
|
+
if (!connectionPool.includes(conn) || !conn.pending || conn.pending.done || conn.pending.forwarded)
|
|
195
338
|
return;
|
|
196
339
|
connect(conn);
|
|
197
|
-
}, RECONNECT_DELAY_MS);
|
|
198
|
-
if (typeof timer === "object" && "unref" in timer)
|
|
199
|
-
timer.unref();
|
|
200
|
-
conn.retryTimer = timer;
|
|
340
|
+
}, RECONNECT_DELAY_MS));
|
|
201
341
|
return;
|
|
202
342
|
}
|
|
203
|
-
|
|
343
|
+
const reason = pending.forwarded
|
|
344
|
+
? "stream already forwarded data"
|
|
345
|
+
: "retry limit reached before any frame was forwarded";
|
|
346
|
+
fail(conn, new Error(formatFailureMessage(conn, reason)), true);
|
|
204
347
|
}
|
|
205
348
|
function create(wsUrl, headers) {
|
|
206
349
|
const conn = {
|
|
@@ -212,25 +355,52 @@ function create(wsUrl, headers) {
|
|
|
212
355
|
pending: null,
|
|
213
356
|
generation: 0,
|
|
214
357
|
reconnectAttempts: 0,
|
|
358
|
+
lastActivityAt: Date.now(),
|
|
215
359
|
idleTimer: null,
|
|
216
360
|
connectTimer: null,
|
|
217
361
|
retryTimer: null,
|
|
362
|
+
heartbeatTimer: null,
|
|
363
|
+
pongTimer: null,
|
|
218
364
|
detach: null,
|
|
219
365
|
};
|
|
220
366
|
connectionPool.push(conn);
|
|
221
367
|
connect(conn);
|
|
222
368
|
return conn;
|
|
223
369
|
}
|
|
370
|
+
function isReusable(conn, key, context, now) {
|
|
371
|
+
if (conn.busy)
|
|
372
|
+
return false;
|
|
373
|
+
if (conn.scopeKey !== key)
|
|
374
|
+
return false;
|
|
375
|
+
if (conn.ws?.readyState !== readyState.OPEN)
|
|
376
|
+
return false;
|
|
377
|
+
if (now - conn.lastActivityAt > STALE_REUSE_MS)
|
|
378
|
+
return false;
|
|
379
|
+
if (context.sessionID && conn.lastSessionID && conn.lastSessionID !== context.sessionID)
|
|
380
|
+
return false;
|
|
381
|
+
if (context.agent && conn.lastAgent && conn.lastAgent !== context.agent)
|
|
382
|
+
return false;
|
|
383
|
+
return true;
|
|
384
|
+
}
|
|
224
385
|
export function acquireConnection(wsUrl, headers, context) {
|
|
225
386
|
const key = scopeKey(wsUrl, headers);
|
|
226
|
-
const
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
(
|
|
387
|
+
const now = Date.now();
|
|
388
|
+
for (const candidate of [...connectionPool]) {
|
|
389
|
+
if (candidate.busy || candidate.scopeKey !== key)
|
|
390
|
+
continue;
|
|
391
|
+
if (candidate.ws?.readyState === readyState.OPEN && now - candidate.lastActivityAt > STALE_REUSE_MS) {
|
|
392
|
+
remove(candidate);
|
|
393
|
+
try {
|
|
394
|
+
candidate.ws?.close(1000, "stale idle");
|
|
395
|
+
}
|
|
396
|
+
catch { }
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
const reusable = connectionPool.find((conn) => isReusable(conn, key, context, now));
|
|
231
400
|
const conn = reusable ?? create(wsUrl, headers);
|
|
232
401
|
clearTimer(conn.idleTimer);
|
|
233
402
|
conn.idleTimer = null;
|
|
403
|
+
clearHeartbeat(conn);
|
|
234
404
|
conn.busy = true;
|
|
235
405
|
return conn;
|
|
236
406
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/transport/pool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/transport/pool.ts"],"names":[],"mappings":"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"}
|