openai-ws-opencode 0.1.7 → 0.1.9

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.
Files changed (48) hide show
  1. package/README.md +3 -3
  2. package/SECURITY.md +1 -1
  3. package/bin/setup.js +17 -43
  4. package/dist/constants.d.ts +13 -1
  5. package/dist/constants.d.ts.map +1 -1
  6. package/dist/constants.js +13 -1
  7. package/dist/constants.js.map +1 -1
  8. package/dist/models/catalog.d.ts +41 -0
  9. package/dist/models/catalog.d.ts.map +1 -0
  10. package/dist/models/catalog.js +115 -0
  11. package/dist/models/catalog.js.map +1 -0
  12. package/dist/models/defaults.d.ts.map +1 -1
  13. package/dist/models/defaults.js +15 -43
  14. package/dist/models/defaults.js.map +1 -1
  15. package/dist/models/resolve.d.ts +3 -26
  16. package/dist/models/resolve.d.ts.map +1 -1
  17. package/dist/models/resolve.js +61 -44
  18. package/dist/models/resolve.js.map +1 -1
  19. package/dist/plugin.d.ts.map +1 -1
  20. package/dist/plugin.js +11 -6
  21. package/dist/plugin.js.map +1 -1
  22. package/dist/testing.d.ts +2 -1
  23. package/dist/testing.d.ts.map +1 -1
  24. package/dist/testing.js +2 -1
  25. package/dist/testing.js.map +1 -1
  26. package/dist/transport/body.d.ts +3 -2
  27. package/dist/transport/body.d.ts.map +1 -1
  28. package/dist/transport/body.js +28 -15
  29. package/dist/transport/body.js.map +1 -1
  30. package/dist/transport/bridge.d.ts.map +1 -1
  31. package/dist/transport/bridge.js +42 -15
  32. package/dist/transport/bridge.js.map +1 -1
  33. package/dist/transport/bun-websocket.d.ts +21 -0
  34. package/dist/transport/bun-websocket.d.ts.map +1 -0
  35. package/dist/transport/bun-websocket.js +281 -0
  36. package/dist/transport/bun-websocket.js.map +1 -0
  37. package/dist/transport/config.d.ts +1 -0
  38. package/dist/transport/config.d.ts.map +1 -1
  39. package/dist/transport/config.js +1 -0
  40. package/dist/transport/config.js.map +1 -1
  41. package/dist/transport/headers.d.ts.map +1 -1
  42. package/dist/transport/headers.js +23 -6
  43. package/dist/transport/headers.js.map +1 -1
  44. package/dist/transport/pool.d.ts +9 -23
  45. package/dist/transport/pool.d.ts.map +1 -1
  46. package/dist/transport/pool.js +194 -121
  47. package/dist/transport/pool.js.map +1 -1
  48. package/package.json +1 -1
@@ -30,51 +30,56 @@ function variantsForModel(id, model) {
30
30
  return {};
31
31
  if (id.endsWith("-pro") || model.family === "gpt-pro")
32
32
  return makeVariants(["high"], false);
33
- if (id.includes("codex-spark"))
34
- return makeVariants(["low", "medium", "high"], false);
35
33
  if (id.includes("codex"))
36
- return makeVariants(["low", "medium", "high"]);
37
- return makeVariants(["none", "minimal", "low", "medium", "high"]);
34
+ return makeVariants(["low", "medium", "high", "xhigh"], false);
35
+ return makeVariants(["none", "low", "medium", "high", "xhigh"], false);
38
36
  }
39
37
  function isOpenAIWSCandidate(id) {
40
38
  return /^gpt-5(?:\.\d+)?(?:-(?:codex(?:-spark)?|pro|mini|nano|chat-latest))?$/.test(id);
41
39
  }
42
- function modelFromCatalog(id, model) {
43
- if (!isOpenAIWSCandidate(id))
40
+ function fallbackModelFor(id) {
41
+ const result = {
42
+ name: `${id} (WebSocket)`,
43
+ reasoning: true,
44
+ temperature: false,
45
+ limit: { context: 272000, output: 128000 },
46
+ variants: {},
47
+ ...(id.includes("codex") ? { family: "gpt-codex" } : id.endsWith("-pro") ? { family: "gpt-pro" } : {}),
48
+ };
49
+ result.variants = variantsForModel(id, result);
50
+ return result;
51
+ }
52
+ function modelFromCodexCatalog(model) {
53
+ const id = model.slug;
54
+ if (!id)
55
+ return undefined;
56
+ if (model.prefer_websockets !== true && !isOpenAIWSCandidate(id))
44
57
  return undefined;
45
- const context = model.limit?.context;
46
- const output = model.limit?.output;
47
- if (!context || !output)
58
+ const context = model.context_window;
59
+ if (!context)
48
60
  return undefined;
61
+ const efforts = (model.supported_reasoning_levels ?? [])
62
+ .map((level) => level.effort)
63
+ .filter((effort) => Boolean(effort));
64
+ const reasoning = efforts.length > 0;
49
65
  const result = {
50
- name: `${model.name ?? id} (WebSocket)`,
51
- reasoning: model.reasoning ?? true,
52
- temperature: model.temperature ?? false,
66
+ name: `${model.display_name ?? id} (WebSocket)`,
67
+ reasoning,
68
+ temperature: false,
53
69
  limit: {
54
70
  context,
55
- ...(model.limit?.input ? { input: model.limit.input } : {}),
56
- output,
71
+ output: model.auto_compact_token_limit ?? Math.min(context, 128000),
57
72
  },
58
- variants: {},
59
- ...(model.family ? { family: model.family } : {}),
60
- ...(model.release_date ? { release_date: model.release_date } : {}),
73
+ variants: reasoning ? makeVariants(efforts, Boolean(model.supports_reasoning_summaries)) : {},
74
+ ...(id.includes("codex") ? { family: "gpt-codex" } : id.endsWith("-pro") ? { family: "gpt-pro" } : {}),
61
75
  };
62
- result.variants = variantsForModel(id, result);
63
- return result;
76
+ return [id, result];
64
77
  }
65
- export function resolveModelsFromCatalog(catalog, overrides = {}) {
66
- const models = { ...OPENAI_WS_MODELS };
67
- for (const [id, model] of Object.entries(catalog?.openai?.models ?? {})) {
68
- const resolved = modelFromCatalog(id, model);
69
- if (resolved)
70
- models[id] = resolved;
71
- }
78
+ function toProviderModels(models, overrides = {}, options = {}) {
72
79
  const providerModels = {};
73
80
  for (const [id, model] of Object.entries(models)) {
74
- providerModels[id] = {
75
- ...modelToProviderConfig(id, model),
76
- ...(overrides[id] ?? {}),
77
- };
81
+ const resolved = modelToProviderConfig(id, model);
82
+ providerModels[id] = options.authoritativeModels ? { ...(overrides[id] ?? {}), ...resolved } : { ...resolved, ...(overrides[id] ?? {}) };
78
83
  }
79
84
  for (const [id, override] of Object.entries(overrides)) {
80
85
  if (providerModels[id])
@@ -93,25 +98,37 @@ export function resolveModelsFromCatalog(catalog, overrides = {}) {
93
98
  return providerModels;
94
99
  }
95
100
  export function resolveModels(overrides = {}) {
96
- return resolveModelsFromCatalog(undefined, overrides);
101
+ return toProviderModels({ ...OPENAI_WS_MODELS }, overrides);
97
102
  }
98
- export async function resolveModelsBestEffort(overrides = {}, options = {}) {
99
- if (process.env.OPENAI_WS_OPENCODE_SKIP_CATALOG === "1")
103
+ export function resolveModelsForOAuth(catalog, overrides = {}) {
104
+ if (!catalog?.length)
100
105
  return resolveModels(overrides);
101
- const fetchImpl = options.fetchImpl ?? globalThis.fetch;
102
- const timeoutMs = options.timeoutMs ?? 800;
103
- try {
104
- const response = await fetchImpl("https://models.dev/api.json", {
105
- signal: AbortSignal.timeout(timeoutMs),
106
- headers: { "User-Agent": "openai-ws-opencode/0.1.4" },
107
- });
108
- if (!response.ok)
109
- return resolveModels(overrides);
110
- return resolveModelsFromCatalog((await response.json()), overrides);
106
+ const models = {};
107
+ for (const model of catalog) {
108
+ const resolved = modelFromCodexCatalog(model);
109
+ if (resolved)
110
+ models[resolved[0]] = resolved[1];
111
+ }
112
+ if (Object.keys(models).length === 0)
113
+ return resolveModels(overrides);
114
+ return toProviderModels(models, overrides, { authoritativeModels: true });
115
+ }
116
+ export function resolveModelsForApiKey(allowedIds, overrides = {}) {
117
+ if (!allowedIds)
118
+ return resolveModels(overrides);
119
+ const models = {};
120
+ for (const [id, model] of Object.entries(OPENAI_WS_MODELS)) {
121
+ if (allowedIds.has(id))
122
+ models[id] = model;
123
+ }
124
+ for (const id of allowedIds) {
125
+ if (!models[id] && isOpenAIWSCandidate(id))
126
+ models[id] = fallbackModelFor(id);
111
127
  }
112
- catch {
128
+ if (Object.keys(models).length === 0) {
113
129
  return resolveModels(overrides);
114
130
  }
131
+ return toProviderModels(models, overrides);
115
132
  }
116
133
  export function modelToOpenCodeConfig(model) {
117
134
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/models/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/models/resolve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAyDxD,QAAA,MAAM,qBAAqB,EAAE,MA6G5B,CAAA;AAED,eAAe,qBAAqB,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,MAAM,EAAE,MAAM,qBAAqB,CAAA;AA0DxD,QAAA,MAAM,qBAAqB,EAAE,MAiH5B,CAAA;AAED,eAAe,qBAAqB,CAAA"}
package/dist/plugin.js CHANGED
@@ -2,7 +2,8 @@ import crypto from "node:crypto";
2
2
  import { CODEX_API_BASE, CODEX_API_ENDPOINT, INTERNAL_AGENT_HEADER, INTERNAL_MODEL_HEADER, INTERNAL_PREFIX_HASH_HEADER, INTERNAL_SESSION_HEADER, OPENAI_API_BASE, PROVIDER_ID, } from "./constants.js";
3
3
  import { oauthMethods } from "./auth/oauth.js";
4
4
  import { extractAccountId, refreshAccessToken, tokenExpiry } from "./auth/tokens.js";
5
- import { resolveModelsBestEffort } from "./models/resolve.js";
5
+ import { fetchCodexCatalog, fetchOpenAIModelIds } from "./models/catalog.js";
6
+ import { resolveModelsForApiKey, resolveModelsForOAuth } from "./models/resolve.js";
6
7
  import { prepareHttpFallbackBody } from "./transport/body.js";
7
8
  import { bridgeWebSocket } from "./transport/bridge.js";
8
9
  import { closeConnections, ensureWarmConnection } from "./transport/pool.js";
@@ -60,10 +61,12 @@ const OpenAIWebSocketPlugin = async ({ client }) => {
60
61
  provider: PROVIDER_ID,
61
62
  async loader(getAuth, provider) {
62
63
  const auth = (await getAuth());
63
- if (provider)
64
- provider.models = (await resolveModelsBestEffort(provider.models));
65
64
  if (auth?.type === "api" && auth.key) {
66
65
  const apiKey = auth.key;
66
+ if (provider) {
67
+ const allowedIds = await fetchOpenAIModelIds({ apiKey });
68
+ provider.models = resolveModelsForApiKey(allowedIds, provider.models);
69
+ }
67
70
  const identity = transportIdentity({ type: "api", apiKey });
68
71
  ensureWarmConnection(identity.wsUrl, identity.wsHeaders);
69
72
  return {
@@ -96,6 +99,10 @@ const OpenAIWebSocketPlugin = async ({ client }) => {
96
99
  }
97
100
  if (auth?.type === "oauth") {
98
101
  const initialAuth = await resolveOAuthAuth(auth, client);
102
+ if (provider) {
103
+ const catalog = await fetchCodexCatalog({ accessToken: initialAuth.accessToken, accountId: initialAuth.accountId });
104
+ provider.models = resolveModelsForOAuth(catalog, provider.models);
105
+ }
99
106
  const initialIdentity = transportIdentity({ type: "oauth", accessToken: initialAuth.accessToken, accountId: initialAuth.accountId });
100
107
  ensureWarmConnection(initialIdentity.wsUrl, initialIdentity.wsHeaders);
101
108
  return {
@@ -124,9 +131,7 @@ const OpenAIWebSocketPlugin = async ({ client }) => {
124
131
  }
125
132
  catch { }
126
133
  }
127
- const rewrittenUrl = url.pathname.includes("/v1/responses") || url.pathname.includes("/chat/completions")
128
- ? new URL(CODEX_API_ENDPOINT)
129
- : url;
134
+ const rewrittenUrl = url.pathname.includes("/v1/responses") ? new URL(CODEX_API_ENDPOINT) : url;
130
135
  return globalThis.fetch(rewrittenUrl, {
131
136
  ...init,
132
137
  headers: httpAuthHeaders(context.forwardHeaders, { type: "oauth", accessToken, accountId }),
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/dist/testing.d.ts CHANGED
@@ -3,6 +3,7 @@ export { prepareBody, prepareHttpFallbackBody } from "./transport/body.js";
3
3
  export { apiKeyWebSocketHeaders, oauthWebSocketHeaders, extractTransportContext, transportIdentity } from "./transport/headers.js";
4
4
  export { connectionPool, readyState, ensureWarmConnection, resetPoolForTesting, resetWebSocketConstructorForTesting, setWebSocketConstructorForTesting, } from "./transport/pool.js";
5
5
  export { bridgeWebSocket } from "./transport/bridge.js";
6
- export { resolveModels, resolveModelsBestEffort, resolveModelsFromCatalog, providerConfig } from "./models/resolve.js";
6
+ export { fallbackCodexClientVersion, fetchCodexCatalog, fetchOpenAIModelIds, resetCatalogCacheForTesting, resolveCodexClientVersion } from "./models/catalog.js";
7
+ export { resolveModels, resolveModelsForApiKey, resolveModelsForOAuth, providerConfig } from "./models/resolve.js";
7
8
  export { transportConfig } from "./transport/config.js";
8
9
  //# sourceMappingURL=testing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAClI,OAAO,EACL,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mCAAmC,EACnC,iCAAiC,GAClC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACtH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAClI,OAAO,EACL,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mCAAmC,EACnC,iCAAiC,GAClC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAChK,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
package/dist/testing.js CHANGED
@@ -3,6 +3,7 @@ export { prepareBody, prepareHttpFallbackBody } from "./transport/body.js";
3
3
  export { apiKeyWebSocketHeaders, oauthWebSocketHeaders, extractTransportContext, transportIdentity } from "./transport/headers.js";
4
4
  export { connectionPool, readyState, ensureWarmConnection, resetPoolForTesting, resetWebSocketConstructorForTesting, setWebSocketConstructorForTesting, } from "./transport/pool.js";
5
5
  export { bridgeWebSocket } from "./transport/bridge.js";
6
- export { resolveModels, resolveModelsBestEffort, resolveModelsFromCatalog, providerConfig } from "./models/resolve.js";
6
+ export { fallbackCodexClientVersion, fetchCodexCatalog, fetchOpenAIModelIds, resetCatalogCacheForTesting, resolveCodexClientVersion } from "./models/catalog.js";
7
+ export { resolveModels, resolveModelsForApiKey, resolveModelsForOAuth, providerConfig } from "./models/resolve.js";
7
8
  export { transportConfig } from "./transport/config.js";
8
9
  //# sourceMappingURL=testing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAClI,OAAO,EACL,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mCAAmC,EACnC,iCAAiC,GAClC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACtH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAClI,OAAO,EACL,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mCAAmC,EACnC,iCAAiC,GAClC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAChK,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
@@ -1,3 +1,4 @@
1
- export declare function prepareBody(requestBody: Record<string, unknown>, isOAuth: boolean): Record<string, unknown>;
2
- export declare function prepareHttpFallbackBody(requestBody: Record<string, unknown>, isOAuth: boolean): Record<string, unknown>;
1
+ import type { TransportContext } from "./headers.js";
2
+ export declare function prepareBody(requestBody: Record<string, unknown>, _isOAuth: boolean, context?: TransportContext): Record<string, unknown>;
3
+ export declare function prepareHttpFallbackBody(requestBody: Record<string, unknown>, _isOAuth: boolean): Record<string, unknown>;
3
4
  //# sourceMappingURL=body.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../src/transport/body.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY3G;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKvH"}
1
+ {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../src/transport/body.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAiBpD,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIxH"}
@@ -1,21 +1,34 @@
1
- import { DEFAULT_INSTRUCTIONS } from "../constants.js";
2
- export function prepareBody(requestBody, isOAuth) {
3
- const { stream: _stream, stream_options: _streamOptions, ...wsBody } = requestBody;
4
- if (!wsBody.instructions)
5
- wsBody.instructions = DEFAULT_INSTRUCTIONS;
6
- if (isOAuth) {
7
- if (wsBody.store === undefined)
8
- wsBody.store = false;
9
- delete wsBody.max_output_tokens;
10
- delete wsBody.max_tokens;
11
- }
1
+ import { OPENAI_WS_INSTALLATION_ID_ENV, X_CODEX_INSTALLATION_ID_HEADER, X_CODEX_WINDOW_ID_HEADER, X_OPENAI_SUBAGENT_HEADER, } from "../constants.js";
2
+ function mergeClientMetadata(requestBody, context) {
3
+ const existing = requestBody.client_metadata;
4
+ const metadata = existing && typeof existing === "object" && !Array.isArray(existing)
5
+ ? Object.fromEntries(Object.entries(existing).filter((entry) => typeof entry[1] === "string"))
6
+ : {};
7
+ const installationID = process.env[OPENAI_WS_INSTALLATION_ID_ENV];
8
+ if (installationID)
9
+ metadata[X_CODEX_INSTALLATION_ID_HEADER] = installationID;
10
+ if (context.sessionID)
11
+ metadata[X_CODEX_WINDOW_ID_HEADER] = context.sessionID;
12
+ if (context.agent && context.agent !== "primary")
13
+ metadata[X_OPENAI_SUBAGENT_HEADER] = context.agent;
14
+ return Object.keys(metadata).length ? metadata : undefined;
15
+ }
16
+ export function prepareBody(requestBody, _isOAuth, context = {}) {
17
+ const { stream_options: _streamOptions, ...wsBody } = requestBody;
18
+ if (wsBody.store === undefined)
19
+ wsBody.store = false;
20
+ if (wsBody.stream === undefined)
21
+ wsBody.stream = true;
22
+ if (wsBody.prompt_cache_key === undefined && context.stablePrefixHash)
23
+ wsBody.prompt_cache_key = context.stablePrefixHash;
24
+ const clientMetadata = mergeClientMetadata(wsBody, context);
25
+ if (clientMetadata)
26
+ wsBody.client_metadata = clientMetadata;
12
27
  return wsBody;
13
28
  }
14
- export function prepareHttpFallbackBody(requestBody, isOAuth) {
29
+ export function prepareHttpFallbackBody(requestBody, _isOAuth) {
15
30
  const next = { ...requestBody };
16
- if (!next.instructions)
17
- next.instructions = DEFAULT_INSTRUCTIONS;
18
- if (isOAuth && next.store === undefined)
31
+ if (next.store === undefined)
19
32
  next.store = false;
20
33
  return next;
21
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"body.js","sourceRoot":"","sources":["../../src/transport/body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,UAAU,WAAW,CAAC,WAAoC,EAAE,OAAgB;IAChF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,CAAA;IAElF,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,MAAM,CAAC,YAAY,GAAG,oBAAoB,CAAA;IAEpE,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;QACpD,OAAO,MAAM,CAAC,iBAAiB,CAAA;QAC/B,OAAO,MAAM,CAAC,UAAU,CAAA;IAC1B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAoC,EAAE,OAAgB;IAC5F,MAAM,IAAI,GAAG,EAAE,GAAG,WAAW,EAAE,CAAA;IAC/B,IAAI,CAAC,IAAI,CAAC,YAAY;QAAE,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAA;IAChE,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAC3D,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"body.js","sourceRoot":"","sources":["../../src/transport/body.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,iBAAiB,CAAA;AAGxB,SAAS,mBAAmB,CAAC,WAAoC,EAAE,OAAyB;IAC1F,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAA;IAC5C,MAAM,QAAQ,GACZ,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAClE,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,QAAmC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAC/H;QACH,CAAC,CAAC,EAAE,CAAA;IACR,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;IACjE,IAAI,cAAc;QAAE,QAAQ,CAAC,8BAA8B,CAAC,GAAG,cAAc,CAAA;IAC7E,IAAI,OAAO,CAAC,SAAS;QAAE,QAAQ,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,SAAS,CAAA;IAC7E,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,QAAQ,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,KAAK,CAAA;IACpG,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,WAAoC,EACpC,QAAiB,EACjB,UAA4B,EAAE;IAE9B,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,CAAA;IAEjE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACpD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAA;IACrD,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB;QAAE,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;IACzH,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3D,IAAI,cAAc;QAAE,MAAM,CAAC,eAAe,GAAG,cAAc,CAAA;IAE3D,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAoC,EAAE,QAAiB;IAC7F,MAAM,IAAI,GAAG,EAAE,GAAG,WAAW,EAAE,CAAA;IAC/B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAChD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -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;AAmBpD,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,CA0EV"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAwBpD,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,CAgGV"}
@@ -2,43 +2,63 @@ import { prepareBody } from "./body.js";
2
2
  import { acquireConnection, closeConnections, sendPending } from "./pool.js";
3
3
  function abortPending(conn, error) {
4
4
  const pending = conn.pending;
5
- if (!pending || pending.done)
6
- return;
7
- pending.done = true;
8
- if (conn.ws?.readyState === 1) {
5
+ if (pending && !pending.done && conn.ws?.readyState === 1) {
9
6
  try {
10
7
  conn.ws.send(JSON.stringify({ type: "response.cancel" }));
11
8
  }
12
9
  catch { }
13
10
  }
14
- try {
15
- pending.controller.error(error);
11
+ if (pending && !pending.done) {
12
+ pending.done = true;
13
+ try {
14
+ pending.controller.error(error);
15
+ }
16
+ catch { }
16
17
  }
17
- catch { }
18
18
  conn.pending = null;
19
19
  conn.busy = false;
20
20
  closeConnections((candidate) => candidate === conn, "Client aborted");
21
21
  }
22
+ function abortError(signal) {
23
+ return signal?.reason instanceof Error ? signal.reason : new DOMException("Aborted", "AbortError");
24
+ }
22
25
  export function bridgeWebSocket(wsUrl, headers, requestBody, isOAuth, context = {}, signal) {
23
- const wsBody = prepareBody(requestBody, isOAuth);
26
+ const wsBody = prepareBody(requestBody, isOAuth, context);
27
+ const acquisitionController = new AbortController();
24
28
  let conn;
25
29
  let finalized = false;
30
+ let streamController;
26
31
  const cleanupAbort = () => {
27
32
  if (signal)
28
33
  signal.removeEventListener("abort", onAbort);
29
34
  };
35
+ const finalize = () => {
36
+ finalized = true;
37
+ cleanupAbort();
38
+ acquisitionController.abort(new DOMException("Stream finalized", "AbortError"));
39
+ };
40
+ const settleQueued = (error) => {
41
+ try {
42
+ streamController?.error(error);
43
+ }
44
+ catch { }
45
+ };
30
46
  const onAbort = () => {
31
47
  if (finalized)
32
48
  return;
33
49
  finalized = true;
34
50
  cleanupAbort();
51
+ const error = abortError(signal);
52
+ acquisitionController.abort(error);
35
53
  if (conn)
36
- abortPending(conn, signal?.reason instanceof Error ? signal.reason : new DOMException("Aborted", "AbortError"));
54
+ abortPending(conn, error);
55
+ else
56
+ settleQueued(error);
37
57
  };
38
58
  const startStream = (controller, acquired) => {
39
59
  conn = acquired;
40
60
  if (finalized || signal?.aborted) {
41
- abortPending(conn, signal?.reason instanceof Error ? signal.reason : new DOMException("Aborted", "AbortError"));
61
+ abortPending(conn, abortError(signal));
42
62
  return;
43
63
  }
44
64
  conn.activeSessionID = context.sessionID;
@@ -48,26 +68,30 @@ export function bridgeWebSocket(wsUrl, headers, requestBody, isOAuth, context =
48
68
  conn.pending = {
49
69
  body: wsBody,
50
70
  controller,
71
+ onFinalize: finalize,
51
72
  done: false,
52
73
  sent: false,
53
- forwarded: false,
54
- replayUnsafeForwarded: false,
55
- frameCount: 0,
74
+ processedAckSent: false,
75
+ idleTimer: null,
56
76
  metadata: {},
57
77
  };
58
78
  sendPending(conn);
59
79
  };
60
80
  const readable = new ReadableStream({
61
81
  start(controller) {
82
+ streamController = controller;
62
83
  if (signal?.aborted) {
63
- controller.error(signal.reason instanceof Error ? signal.reason : new DOMException("Aborted", "AbortError"));
84
+ finalized = true;
85
+ controller.error(abortError(signal));
64
86
  return;
65
87
  }
66
88
  if (signal)
67
89
  signal.addEventListener("abort", onAbort, { once: true });
68
- const acquired = acquireConnection(wsUrl, headers, context, signal);
90
+ const acquired = acquireConnection(wsUrl, headers, context, acquisitionController.signal);
69
91
  if (acquired instanceof Promise) {
70
92
  acquired.then((next) => startStream(controller, next)).catch((error) => {
93
+ if (finalized)
94
+ return;
71
95
  finalized = true;
72
96
  cleanupAbort();
73
97
  controller.error(error instanceof Error ? error : new Error(String(error)));
@@ -81,8 +105,11 @@ export function bridgeWebSocket(wsUrl, headers, requestBody, isOAuth, context =
81
105
  return;
82
106
  finalized = true;
83
107
  cleanupAbort();
108
+ acquisitionController.abort(new DOMException("Aborted", "AbortError"));
84
109
  if (conn)
85
110
  abortPending(conn, new DOMException("Aborted", "AbortError"));
111
+ else
112
+ settleQueued(new DOMException("Aborted", "AbortError"));
86
113
  },
87
114
  });
88
115
  return new Response(readable, {
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export type WebSocketLike = {
2
+ readyState: number;
3
+ send(data: string): void;
4
+ close(code?: number, reason?: string): void;
5
+ terminate?: () => void;
6
+ ping?: () => void;
7
+ on?(event: string, listener: (...args: any[]) => void): unknown;
8
+ off?(event: string, listener: (...args: any[]) => void): unknown;
9
+ addEventListener?(event: string, listener: (...args: any[]) => void): unknown;
10
+ removeEventListener?(event: string, listener: (...args: any[]) => void): unknown;
11
+ };
12
+ export type WebSocketConstructor = new (url: string, options: {
13
+ headers: Record<string, string>;
14
+ perMessageDeflate?: boolean;
15
+ finishRequest?: (request: {
16
+ on?: (event: string, listener: (...args: unknown[]) => void) => unknown;
17
+ end?: () => void;
18
+ }) => void;
19
+ }) => WebSocketLike;
20
+ export declare function loadDefaultWebSocketConstructor(): WebSocketConstructor;
21
+ //# sourceMappingURL=bun-websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun-websocket.d.ts","sourceRoot":"","sources":["../../src/transport/bun-websocket.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG;IAC1B,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,MAAM,MAAM,oBAAoB,GAAG,KACjC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;CACjI,KACE,aAAa,CAAA;AAkClB,wBAAgB,+BAA+B,IAAI,oBAAoB,CAGtE"}