openai-ws-opencode 0.1.26 → 0.1.28

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 (45) hide show
  1. package/README.md +11 -4
  2. package/bin/setup.js +3 -3
  3. package/dist/constants.d.ts +4 -2
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +4 -2
  6. package/dist/constants.js.map +1 -1
  7. package/dist/models/catalog.d.ts.map +1 -1
  8. package/dist/models/catalog.js +11 -1
  9. package/dist/models/catalog.js.map +1 -1
  10. package/dist/plugin.d.ts.map +1 -1
  11. package/dist/plugin.js +28 -16
  12. package/dist/plugin.js.map +1 -1
  13. package/dist/testing.d.ts +96 -2
  14. package/dist/testing.d.ts.map +1 -1
  15. package/dist/testing.js +18 -2
  16. package/dist/testing.js.map +1 -1
  17. package/dist/transport/breaker.d.ts +41 -0
  18. package/dist/transport/breaker.d.ts.map +1 -0
  19. package/dist/transport/breaker.js +207 -0
  20. package/dist/transport/breaker.js.map +1 -0
  21. package/dist/transport/bridge.d.ts +6 -1
  22. package/dist/transport/bridge.d.ts.map +1 -1
  23. package/dist/transport/bridge.js +274 -72
  24. package/dist/transport/bridge.js.map +1 -1
  25. package/dist/transport/config.d.ts +37 -1
  26. package/dist/transport/config.d.ts.map +1 -1
  27. package/dist/transport/config.js +318 -6
  28. package/dist/transport/config.js.map +1 -1
  29. package/dist/transport/coordinator.d.ts +223 -0
  30. package/dist/transport/coordinator.d.ts.map +1 -0
  31. package/dist/transport/coordinator.js +506 -0
  32. package/dist/transport/coordinator.js.map +1 -0
  33. package/dist/transport/errors.d.ts +24 -0
  34. package/dist/transport/errors.d.ts.map +1 -0
  35. package/dist/transport/errors.js +49 -0
  36. package/dist/transport/errors.js.map +1 -0
  37. package/dist/transport/headers.d.ts +3 -3
  38. package/dist/transport/headers.d.ts.map +1 -1
  39. package/dist/transport/headers.js +32 -10
  40. package/dist/transport/headers.js.map +1 -1
  41. package/dist/transport/pool.d.ts +114 -7
  42. package/dist/transport/pool.d.ts.map +1 -1
  43. package/dist/transport/pool.js +473 -188
  44. package/dist/transport/pool.js.map +1 -1
  45. package/package.json +2 -2
@@ -1,4 +1,5 @@
1
- import { CODEX_ORIGINATOR, CODEX_WS_URL, INTERNAL_AGENT_HEADER, INTERNAL_MODEL_HEADER, INTERNAL_PREFIX_HASH_HEADER, INTERNAL_SESSION_HEADER, OPENAI_WS_BETA, OPENAI_WS_URL, USER_AGENT, } from "../constants.js";
1
+ import { CODEX_ORIGINATOR, CODEX_RESPONSES_BETA_FEATURES, CODEX_RESPONSES_ORIGINATOR, CODEX_WS_URL, INTERNAL_AGENT_HEADER, INTERNAL_MODEL_HEADER, INTERNAL_PREFIX_HASH_HEADER, INTERNAL_SESSION_HEADER, OPENAI_WS_BETA, OPENAI_WS_URL, USER_AGENT, } from "../constants.js";
2
+ import os from "node:os";
2
3
  function defaultHeaders() {
3
4
  return {
4
5
  originator: CODEX_ORIGINATOR,
@@ -6,6 +7,24 @@ function defaultHeaders() {
6
7
  "User-Agent": USER_AGENT,
7
8
  };
8
9
  }
10
+ function codexClientVersion(value) {
11
+ return value || USER_AGENT.split("/").at(-1) || USER_AGENT;
12
+ }
13
+ function codexUserAgent(version) {
14
+ const platform = os.platform() === "darwin" ? "Mac OS" : os.platform();
15
+ const arch = os.arch() === "x64" ? "x86_64" : os.arch();
16
+ const terminal = process.env.TERM_PROGRAM || process.env.TERM || "unknown";
17
+ return `${CODEX_RESPONSES_ORIGINATOR}/${version} (${platform} ${os.release()}; ${arch}) ${terminal} (${CODEX_RESPONSES_ORIGINATOR}; ${version})`;
18
+ }
19
+ function codexResponseHeaders(versionValue) {
20
+ const version = codexClientVersion(versionValue);
21
+ return {
22
+ originator: CODEX_RESPONSES_ORIGINATOR,
23
+ version,
24
+ "x-codex-beta-features": CODEX_RESPONSES_BETA_FEATURES,
25
+ "User-Agent": codexUserAgent(version),
26
+ };
27
+ }
9
28
  function organizationProjectHeaders() {
10
29
  return {
11
30
  ...(process.env.OPENAI_ORGANIZATION ? { "OpenAI-Organization": process.env.OPENAI_ORGANIZATION } : {}),
@@ -19,36 +38,39 @@ export function apiKeyWebSocketHeaders(apiKey) {
19
38
  Authorization: `Bearer ${apiKey}`,
20
39
  };
21
40
  }
22
- export function oauthWebSocketHeaders(accessToken, accountId) {
41
+ export function oauthWebSocketHeaders(accessToken, accountId, clientVersion) {
23
42
  return {
24
- ...defaultHeaders(),
43
+ ...codexResponseHeaders(clientVersion),
25
44
  Authorization: `Bearer ${accessToken}`,
26
- ...(accountId ? { "ChatGPT-Account-Id": accountId } : {}),
45
+ ...(accountId ? { "ChatGPT-Account-ID": accountId } : {}),
27
46
  };
28
47
  }
29
- export function httpAuthHeaders(baseHeaders, auth) {
48
+ export function httpAuthHeaders(baseHeaders, auth, codexVersion) {
30
49
  const headers = new Headers(baseHeaders);
31
50
  headers.delete("authorization");
32
51
  headers.delete("Authorization");
33
52
  headers.set("Authorization", `Bearer ${auth.type === "api" ? auth.apiKey : auth.accessToken}`);
34
- for (const [key, value] of Object.entries(defaultHeaders()))
35
- headers.set(key, value);
36
53
  if (auth.type === "api") {
54
+ for (const [key, value] of Object.entries(defaultHeaders()))
55
+ headers.set(key, value);
37
56
  for (const [key, value] of Object.entries(organizationProjectHeaders()))
38
57
  headers.set(key, value);
39
58
  }
40
59
  if (auth.type === "oauth") {
60
+ headers.delete("OpenAI-Beta");
61
+ for (const [key, value] of Object.entries(codexResponseHeaders(codexVersion)))
62
+ headers.set(key, value);
41
63
  if (auth.accountId)
42
- headers.set("ChatGPT-Account-Id", auth.accountId);
64
+ headers.set("ChatGPT-Account-ID", auth.accountId);
43
65
  }
44
66
  return headers;
45
67
  }
46
- export function transportIdentity(auth) {
68
+ export function transportIdentity(auth, codexVersion) {
47
69
  if (auth.type === "oauth") {
48
70
  return {
49
71
  isOAuth: true,
50
72
  wsUrl: CODEX_WS_URL,
51
- wsHeaders: oauthWebSocketHeaders(auth.accessToken, auth.accountId),
73
+ wsHeaders: oauthWebSocketHeaders(auth.accessToken, auth.accountId, codexVersion),
52
74
  };
53
75
  }
54
76
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/transport/headers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/transport/headers.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
1
  import { type WebSocketConstructor, type WebSocketLike } from "./bun-websocket.js";
2
+ import { type ConnectPermit, type TransportProvider } from "./coordinator.js";
2
3
  import type { TransportContext } from "./headers.js";
3
4
  type PendingMetadata = {
4
5
  responseId?: string;
5
6
  activeResponseId?: string;
6
7
  };
8
+ export interface StreamSink {
9
+ enqueue(chunk: Uint8Array): void;
10
+ close(): void;
11
+ error(error: Error): void;
12
+ }
7
13
  export interface PendingRequest {
8
14
  body: Record<string, unknown>;
9
- controller: ReadableStreamDefaultController<Uint8Array>;
15
+ sink: StreamSink;
10
16
  onFinalize?: () => void;
11
17
  onError?: (error: Error, pending: PendingRequest) => boolean;
12
18
  done: boolean;
@@ -15,14 +21,10 @@ export interface PendingRequest {
15
21
  framesReceived: boolean;
16
22
  finalMessageOutputReceived: boolean;
17
23
  processedAckSent: boolean;
18
- previousResponseNotFoundRetried: boolean;
19
24
  idleTimer: ReturnType<typeof setTimeout> | null;
20
25
  metadata: PendingMetadata;
26
+ streamKey: string;
21
27
  }
22
- export declare class WebSocketPreStreamTransportError extends Error {
23
- constructor(message: string);
24
- }
25
- export declare function isWebSocketPreStreamTransportError(error: unknown): error is WebSocketPreStreamTransportError;
26
28
  export interface PooledConnection {
27
29
  id: string;
28
30
  ws: WebSocketLike | null;
@@ -31,6 +33,11 @@ export interface PooledConnection {
31
33
  scopeKey: string;
32
34
  scopeHash: string;
33
35
  contextKey: string;
36
+ endpointKey: string;
37
+ accountFp: string;
38
+ provider: TransportProvider;
39
+ origin: string;
40
+ authGeneration: number;
34
41
  busy: boolean;
35
42
  warm: boolean;
36
43
  staleAuth: boolean;
@@ -49,6 +56,7 @@ export interface PooledConnection {
49
56
  generation: number;
50
57
  reconnectAttempts: number;
51
58
  createdAt: number;
59
+ expiresAt: number;
52
60
  lastActivityAt: number;
53
61
  lastCloseCode?: number;
54
62
  lastCloseReason?: string;
@@ -59,6 +67,14 @@ export interface PooledConnection {
59
67
  connectTimer: ReturnType<typeof setTimeout> | null;
60
68
  retryTimer: ReturnType<typeof setTimeout> | null;
61
69
  detach: (() => void) | null;
70
+ socketReserved: boolean;
71
+ socketReleased: boolean;
72
+ sessionCounted: boolean;
73
+ connectPermit: ConnectPermit | null;
74
+ connectFinished: boolean;
75
+ turnCount: number;
76
+ intent: "demand" | "prewarm";
77
+ breakerDomain: string;
62
78
  }
63
79
  export declare const connectionPool: PooledConnection[];
64
80
  export declare const readyState: {
@@ -70,9 +86,100 @@ export declare const readyState: {
70
86
  export declare function closeConnection(conn: PooledConnection, reason?: string, graceful?: boolean): void;
71
87
  export declare function sendPending(conn: PooledConnection): boolean;
72
88
  export declare function invalidateStaleAuthConnections(wsUrl: string, headers: Record<string, string>): void;
73
- export declare function acquireConnection(wsUrl: string, headers: Record<string, string>, context: TransportContext, signal?: AbortSignal): PooledConnection | Promise<PooledConnection>;
89
+ export declare function acquireConnection(wsUrl: string, headers: Record<string, string>, context: TransportContext, _signal?: AbortSignal): PooledConnection;
74
90
  export declare function ensureWarmConnection(wsUrl: string, headers: Record<string, string>): PooledConnection | undefined;
75
91
  export declare function closeConnections(predicate?: (conn: PooledConnection) => boolean, message?: string): void;
92
+ export declare function nextStreamKeyForTesting(): string;
93
+ export declare function allocateStreamKey(): string;
94
+ export declare function syncCoordinatorFromTransportConfig(): void;
95
+ export declare function getTransportSnapshotForTesting(): {
96
+ physicalSockets: number;
97
+ connecting: number;
98
+ prewarming: number;
99
+ sessions: number;
100
+ accountEntries: number;
101
+ rateEntries: number;
102
+ queuedInboundBytes: number;
103
+ queuedInboundMessages: number;
104
+ queueOverflows: number;
105
+ providerQueues: {
106
+ codex: {
107
+ bytes: number;
108
+ messages: number;
109
+ };
110
+ openai: {
111
+ bytes: number;
112
+ messages: number;
113
+ };
114
+ };
115
+ counters: {
116
+ admissionMissesByReason: {
117
+ provider_breaker: number;
118
+ session_busy: number;
119
+ session_cooldown: number;
120
+ provider_cap: number;
121
+ process_cap: number;
122
+ account_cap: number;
123
+ connect_cap: number;
124
+ handshake_rate: number;
125
+ memory_guard: number;
126
+ connect_failure: number;
127
+ handshake_timeout: number;
128
+ stale_auth: number;
129
+ };
130
+ httpByReason: {
131
+ provider_breaker: number;
132
+ session_busy: number;
133
+ session_cooldown: number;
134
+ provider_cap: number;
135
+ process_cap: number;
136
+ account_cap: number;
137
+ connect_cap: number;
138
+ handshake_rate: number;
139
+ memory_guard: number;
140
+ connect_failure: number;
141
+ handshake_timeout: number;
142
+ provider_connection_limit: number;
143
+ previous_response_not_found: number;
144
+ };
145
+ leaseAttempts: number;
146
+ leaseAdmissions: number;
147
+ connectAttempts: number;
148
+ connectSuccesses: number;
149
+ connectFailures: number;
150
+ connectTimeouts: number;
151
+ prewarmAttempts: number;
152
+ prewarmDeferred: number;
153
+ prewarmFailures: number;
154
+ authStaleRejects: number;
155
+ sessionCooldowns: number;
156
+ fallbacks: number;
157
+ maxAgeRetires: number;
158
+ };
159
+ distributions: {
160
+ handshakeLatencyMs: {
161
+ bounds: number[];
162
+ counts: number[];
163
+ };
164
+ socketLifetimeMs: {
165
+ bounds: number[];
166
+ counts: number[];
167
+ };
168
+ turnsPerConnection: {
169
+ bounds: number[];
170
+ counts: number[];
171
+ };
172
+ inboundQueueHighWaterBytes: {
173
+ bounds: number[];
174
+ counts: number[];
175
+ };
176
+ inboundQueueHighWaterMessages: {
177
+ bounds: number[];
178
+ counts: number[];
179
+ };
180
+ };
181
+ breaker: import("./breaker.js").TransportBreakerSnapshot;
182
+ };
76
183
  export declare function resetPoolForTesting(): void;
77
184
  export declare function setWebSocketConstructorForTesting(ctor: WebSocketConstructor): void;
78
185
  export declare function resetWebSocketConstructorForTesting(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/transport/pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/transport/pool.ts"],"names":[],"mappings":"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"}