openai-ws-opencode 0.1.26 → 0.1.27

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.
@@ -1,15 +1,327 @@
1
- export const transportConfig = {
2
- connectTimeoutMs: 15_000,
3
- maxReconnectAttempts: 5,
1
+ const DEFAULTS = {
2
+ connectTimeoutMs: 5_000,
3
+ maxReconnectAttempts: 2,
4
4
  reconnectBaseDelayMs: 100,
5
5
  reconnectMaxDelayMs: 2_000,
6
6
  reconnectJitterRatio: 0.5,
7
7
  retryAfterMaxDelayMs: 10_000,
8
- idleEvictMs: 120_000,
8
+ idleEvictMs: 90_000,
9
9
  staleReuseMs: 60_000,
10
10
  streamIdleTimeoutMs: 600_000,
11
11
  preFirstBytePing: ":\n\n",
12
- maxConnectionsPerScope: 4,
13
- connectionMaxAgeMs: 55 * 60 * 1000,
12
+ maxConnectionsPerScope: 1,
13
+ connectionMaxAgeMs: 3_000_000,
14
+ connectionMaxAgeJitterMs: 300_000,
15
+ sessionCooldownMs: 30_000,
16
+ maxSocketsPerProvider: 32,
17
+ processMaxSockets: 64,
18
+ maxSocketsPerAccount: 0,
19
+ maxConnecting: 8,
20
+ prewarmMaxConnecting: 2,
21
+ prewarmDemandReserve: 1,
22
+ connectRateProcessPerMin: 240,
23
+ connectRateProviderPerMin: 120,
24
+ connectRateOriginPerMin: 120,
25
+ connectRateAccountPerMin: 60,
26
+ maxAccountingEntries: 4096,
27
+ queueMaxMessagesPerStream: 1024,
28
+ queueMaxBytesPerStream: 16 * 1024 * 1024,
29
+ queueMaxBytesTotal: 256 * 1024 * 1024,
30
+ shedMaxSessions: 0,
31
+ shedLagMs: 0,
32
+ shedRssMb: 0,
33
+ breakerEnabled: true,
34
+ breakerWindowMs: 30_000,
35
+ breakerMinSamples: 10,
36
+ breakerFailureRatio: 0.5,
37
+ breakerOpenMs: 30_000,
38
+ breakerJitterMs: 5_000,
39
+ breakerHalfOpenSuccesses: 2,
40
+ breakerMaxEntries: 4096,
41
+ authGenerationMaxBindings: 256,
14
42
  };
43
+ const INT_KEYS = [
44
+ "connectTimeoutMs",
45
+ "maxReconnectAttempts",
46
+ "reconnectBaseDelayMs",
47
+ "reconnectMaxDelayMs",
48
+ "retryAfterMaxDelayMs",
49
+ "idleEvictMs",
50
+ "staleReuseMs",
51
+ "streamIdleTimeoutMs",
52
+ "maxConnectionsPerScope",
53
+ "connectionMaxAgeMs",
54
+ "connectionMaxAgeJitterMs",
55
+ "sessionCooldownMs",
56
+ "maxSocketsPerProvider",
57
+ "processMaxSockets",
58
+ "maxSocketsPerAccount",
59
+ "maxConnecting",
60
+ "prewarmMaxConnecting",
61
+ "prewarmDemandReserve",
62
+ "connectRateProcessPerMin",
63
+ "connectRateProviderPerMin",
64
+ "connectRateOriginPerMin",
65
+ "connectRateAccountPerMin",
66
+ "maxAccountingEntries",
67
+ "queueMaxMessagesPerStream",
68
+ "queueMaxBytesPerStream",
69
+ "queueMaxBytesTotal",
70
+ "shedMaxSessions",
71
+ "shedLagMs",
72
+ "shedRssMb",
73
+ "breakerWindowMs",
74
+ "breakerMinSamples",
75
+ "breakerOpenMs",
76
+ "breakerJitterMs",
77
+ "breakerHalfOpenSuccesses",
78
+ "breakerMaxEntries",
79
+ "authGenerationMaxBindings",
80
+ ];
81
+ const FLOAT_KEYS = ["reconnectJitterRatio", "breakerFailureRatio"];
82
+ const BOOL_KEYS = ["breakerEnabled"];
83
+ const STRING_KEYS = ["preFirstBytePing"];
84
+ const ENV_ALIASES = {
85
+ connectTimeoutMs: "OPENAI_WS_CONNECT_TIMEOUT_MS",
86
+ maxReconnectAttempts: "OPENAI_WS_MAX_RECONNECT_ATTEMPTS",
87
+ reconnectBaseDelayMs: "OPENAI_WS_RECONNECT_BASE_DELAY_MS",
88
+ reconnectMaxDelayMs: "OPENAI_WS_RECONNECT_MAX_DELAY_MS",
89
+ reconnectJitterRatio: "OPENAI_WS_RECONNECT_JITTER_RATIO",
90
+ retryAfterMaxDelayMs: "OPENAI_WS_RETRY_AFTER_MAX_DELAY_MS",
91
+ idleEvictMs: "OPENAI_WS_IDLE_EVICT_MS",
92
+ staleReuseMs: "OPENAI_WS_STALE_REUSE_MS",
93
+ streamIdleTimeoutMs: "OPENAI_WS_STREAM_IDLE_TIMEOUT_MS",
94
+ preFirstBytePing: "OPENAI_WS_PRE_FIRST_BYTE_PING",
95
+ maxConnectionsPerScope: "OPENAI_WS_MAX_CONNECTIONS_PER_SCOPE",
96
+ connectionMaxAgeMs: "OPENAI_WS_CONNECTION_MAX_AGE_MS",
97
+ connectionMaxAgeJitterMs: "OPENAI_WS_CONNECTION_MAX_AGE_JITTER_MS",
98
+ sessionCooldownMs: "OPENAI_WS_SESSION_COOLDOWN_MS",
99
+ maxSocketsPerProvider: "OPENAI_WS_MAX_SOCKETS_PER_PROVIDER",
100
+ processMaxSockets: "OPENAI_WS_PROCESS_MAX_SOCKETS",
101
+ maxSocketsPerAccount: "OPENAI_WS_MAX_SOCKETS_PER_ACCOUNT",
102
+ maxConnecting: "OPENAI_WS_MAX_CONNECTING",
103
+ prewarmMaxConnecting: "OPENAI_WS_PREWARM_MAX_CONNECTING",
104
+ prewarmDemandReserve: "OPENAI_WS_PREWARM_DEMAND_RESERVE",
105
+ connectRateProcessPerMin: "OPENAI_WS_CONNECT_RATE_PROCESS_PER_MIN",
106
+ connectRateProviderPerMin: "OPENAI_WS_CONNECT_RATE_PROVIDER_PER_MIN",
107
+ connectRateOriginPerMin: "OPENAI_WS_CONNECT_RATE_ORIGIN_PER_MIN",
108
+ connectRateAccountPerMin: "OPENAI_WS_CONNECT_RATE_ACCOUNT_PER_MIN",
109
+ maxAccountingEntries: "OPENAI_WS_MAX_ACCOUNTING_ENTRIES",
110
+ queueMaxMessagesPerStream: "OPENAI_WS_QUEUE_MAX_MESSAGES_PER_STREAM",
111
+ queueMaxBytesPerStream: "OPENAI_WS_QUEUE_MAX_BYTES_PER_STREAM",
112
+ queueMaxBytesTotal: "OPENAI_WS_QUEUE_MAX_BYTES_TOTAL",
113
+ shedMaxSessions: "OPENAI_WS_SHED_MAX_SESSIONS",
114
+ shedLagMs: "OPENAI_WS_SHED_LAG_MS",
115
+ shedRssMb: "OPENAI_WS_SHED_RSS_MB",
116
+ breakerEnabled: "OPENAI_WS_BREAKER_ENABLED",
117
+ breakerWindowMs: "OPENAI_WS_BREAKER_WINDOW_MS",
118
+ breakerMinSamples: "OPENAI_WS_BREAKER_MIN_SAMPLES",
119
+ breakerFailureRatio: "OPENAI_WS_BREAKER_FAILURE_RATIO",
120
+ breakerOpenMs: "OPENAI_WS_BREAKER_OPEN_MS",
121
+ breakerJitterMs: "OPENAI_WS_BREAKER_JITTER_MS",
122
+ breakerHalfOpenSuccesses: "OPENAI_WS_BREAKER_HALF_OPEN_SUCCESSES",
123
+ breakerMaxEntries: "OPENAI_WS_BREAKER_MAX_ENTRIES",
124
+ authGenerationMaxBindings: "OPENAI_WS_AUTH_GENERATION_MAX_BINDINGS",
125
+ };
126
+ function parseStrictInt(raw, envName) {
127
+ if (!/^-?\d+$/.test(raw.trim())) {
128
+ throw new Error(`${envName} must be an integer`);
129
+ }
130
+ const value = Number(raw);
131
+ if (!Number.isSafeInteger(value)) {
132
+ throw new Error(`${envName} must be a safe integer`);
133
+ }
134
+ return value;
135
+ }
136
+ function parseStrictFloat(raw, envName) {
137
+ if (!/^-?(?:\d+\.?\d*|\.\d+)$/.test(raw.trim())) {
138
+ throw new Error(`${envName} must be a number`);
139
+ }
140
+ const value = Number(raw);
141
+ if (!Number.isFinite(value)) {
142
+ throw new Error(`${envName} must be a finite number`);
143
+ }
144
+ return value;
145
+ }
146
+ function parseStrictBool(raw, envName) {
147
+ const normalized = raw.trim().toLowerCase();
148
+ if (normalized === "1" || normalized === "true")
149
+ return true;
150
+ if (normalized === "0" || normalized === "false")
151
+ return false;
152
+ throw new Error(`${envName} must be a boolean (true/false/1/0)`);
153
+ }
154
+ function readEnv(env) {
155
+ const out = {};
156
+ for (const key of INT_KEYS) {
157
+ const envName = ENV_ALIASES[key];
158
+ const raw = env[envName];
159
+ if (raw === undefined || raw === "")
160
+ continue;
161
+ out[key] = parseStrictInt(raw, envName);
162
+ }
163
+ for (const key of FLOAT_KEYS) {
164
+ const envName = ENV_ALIASES[key];
165
+ const raw = env[envName];
166
+ if (raw === undefined || raw === "")
167
+ continue;
168
+ out[key] = parseStrictFloat(raw, envName);
169
+ }
170
+ for (const key of BOOL_KEYS) {
171
+ const envName = ENV_ALIASES[key];
172
+ const raw = env[envName];
173
+ if (raw === undefined || raw === "")
174
+ continue;
175
+ out[key] = parseStrictBool(raw, envName);
176
+ }
177
+ for (const key of STRING_KEYS) {
178
+ const envName = ENV_ALIASES[key];
179
+ const raw = env[envName];
180
+ if (raw === undefined)
181
+ continue;
182
+ out[key] = raw;
183
+ }
184
+ return out;
185
+ }
186
+ function validate(config) {
187
+ const positive = [
188
+ "connectTimeoutMs",
189
+ "reconnectBaseDelayMs",
190
+ "reconnectMaxDelayMs",
191
+ "retryAfterMaxDelayMs",
192
+ "idleEvictMs",
193
+ "staleReuseMs",
194
+ "streamIdleTimeoutMs",
195
+ "maxConnectionsPerScope",
196
+ "connectionMaxAgeMs",
197
+ "sessionCooldownMs",
198
+ "maxSocketsPerProvider",
199
+ "processMaxSockets",
200
+ "maxConnecting",
201
+ "maxAccountingEntries",
202
+ "queueMaxMessagesPerStream",
203
+ "queueMaxBytesPerStream",
204
+ "queueMaxBytesTotal",
205
+ "breakerWindowMs",
206
+ "breakerMinSamples",
207
+ "breakerOpenMs",
208
+ "breakerHalfOpenSuccesses",
209
+ "breakerMaxEntries",
210
+ "authGenerationMaxBindings",
211
+ ];
212
+ for (const key of positive) {
213
+ if (config[key] <= 0)
214
+ throw new Error(`${ENV_ALIASES[key]} must be > 0`);
215
+ }
216
+ if (config.maxReconnectAttempts < 0)
217
+ throw new Error(`${ENV_ALIASES.maxReconnectAttempts} must be >= 0`);
218
+ if (config.connectionMaxAgeJitterMs < 0)
219
+ throw new Error(`${ENV_ALIASES.connectionMaxAgeJitterMs} must be >= 0`);
220
+ if (config.connectionMaxAgeJitterMs > config.connectionMaxAgeMs) {
221
+ throw new Error(`${ENV_ALIASES.connectionMaxAgeJitterMs} must be <= ${ENV_ALIASES.connectionMaxAgeMs}`);
222
+ }
223
+ if (config.connectionMaxAgeMs - config.connectionMaxAgeJitterMs < 60_000) {
224
+ throw new Error(`${ENV_ALIASES.connectionMaxAgeMs} minus ${ENV_ALIASES.connectionMaxAgeJitterMs} must be >= 60000`);
225
+ }
226
+ if (config.maxSocketsPerAccount < 0)
227
+ throw new Error(`${ENV_ALIASES.maxSocketsPerAccount} must be >= 0`);
228
+ if (config.maxSocketsPerProvider > config.processMaxSockets) {
229
+ throw new Error(`${ENV_ALIASES.maxSocketsPerProvider} must be <= ${ENV_ALIASES.processMaxSockets}`);
230
+ }
231
+ if (config.maxConnecting > config.processMaxSockets) {
232
+ throw new Error(`${ENV_ALIASES.maxConnecting} must be <= ${ENV_ALIASES.processMaxSockets}`);
233
+ }
234
+ if (config.maxSocketsPerAccount > config.processMaxSockets) {
235
+ throw new Error(`${ENV_ALIASES.maxSocketsPerAccount} must be <= ${ENV_ALIASES.processMaxSockets}`);
236
+ }
237
+ if (config.prewarmMaxConnecting < 0)
238
+ throw new Error(`${ENV_ALIASES.prewarmMaxConnecting} must be >= 0`);
239
+ if (config.prewarmDemandReserve < 0)
240
+ throw new Error(`${ENV_ALIASES.prewarmDemandReserve} must be >= 0`);
241
+ if (config.prewarmDemandReserve > config.maxConnecting) {
242
+ throw new Error(`${ENV_ALIASES.prewarmDemandReserve} must be <= ${ENV_ALIASES.maxConnecting}`);
243
+ }
244
+ if (config.prewarmMaxConnecting > config.maxConnecting) {
245
+ throw new Error(`${ENV_ALIASES.prewarmMaxConnecting} must be <= ${ENV_ALIASES.maxConnecting}`);
246
+ }
247
+ if (config.prewarmMaxConnecting + config.prewarmDemandReserve > config.maxConnecting) {
248
+ throw new Error(`${ENV_ALIASES.prewarmMaxConnecting} plus ${ENV_ALIASES.prewarmDemandReserve} must be <= ${ENV_ALIASES.maxConnecting}`);
249
+ }
250
+ if (config.maxAccountingEntries < config.processMaxSockets) {
251
+ throw new Error(`${ENV_ALIASES.maxAccountingEntries} must be >= ${ENV_ALIASES.processMaxSockets}`);
252
+ }
253
+ if (config.reconnectBaseDelayMs > config.reconnectMaxDelayMs) {
254
+ throw new Error(`${ENV_ALIASES.reconnectBaseDelayMs} must be <= ${ENV_ALIASES.reconnectMaxDelayMs}`);
255
+ }
256
+ if (config.reconnectJitterRatio < 0 || config.reconnectJitterRatio > 1) {
257
+ throw new Error(`${ENV_ALIASES.reconnectJitterRatio} must be between 0 and 1`);
258
+ }
259
+ if (!(config.breakerFailureRatio > 0 && config.breakerFailureRatio <= 1)) {
260
+ throw new Error(`${ENV_ALIASES.breakerFailureRatio} must be > 0 and <= 1`);
261
+ }
262
+ if (config.breakerJitterMs < 0)
263
+ throw new Error(`${ENV_ALIASES.breakerJitterMs} must be >= 0`);
264
+ if (config.breakerJitterMs > config.breakerOpenMs) {
265
+ throw new Error(`${ENV_ALIASES.breakerJitterMs} must be <= ${ENV_ALIASES.breakerOpenMs}`);
266
+ }
267
+ if (config.queueMaxBytesPerStream > config.queueMaxBytesTotal) {
268
+ throw new Error(`${ENV_ALIASES.queueMaxBytesPerStream} must be <= ${ENV_ALIASES.queueMaxBytesTotal}`);
269
+ }
270
+ if (config.maxConnectionsPerScope !== 1) {
271
+ throw new Error(`${ENV_ALIASES.maxConnectionsPerScope} must be 1`);
272
+ }
273
+ for (const key of [
274
+ "connectRateProcessPerMin",
275
+ "connectRateProviderPerMin",
276
+ "connectRateOriginPerMin",
277
+ "connectRateAccountPerMin",
278
+ "shedMaxSessions",
279
+ "shedLagMs",
280
+ "shedRssMb",
281
+ ]) {
282
+ if (config[key] < 0)
283
+ throw new Error(`${ENV_ALIASES[key]} must be >= 0`);
284
+ }
285
+ if (config.processMaxSockets > 64) {
286
+ if (config.shedMaxSessions <= 0) {
287
+ throw new Error(`${ENV_ALIASES.shedMaxSessions} must be > 0 when process max sockets > 64`);
288
+ }
289
+ if (config.shedLagMs <= 0) {
290
+ throw new Error(`${ENV_ALIASES.shedLagMs} must be > 0 when process max sockets > 64`);
291
+ }
292
+ if (config.shedRssMb <= 0) {
293
+ throw new Error(`${ENV_ALIASES.shedRssMb} must be > 0 when process max sockets > 64`);
294
+ }
295
+ const maxAggregate = Math.floor(config.shedRssMb * 1024 * 1024 * 0.25);
296
+ if (config.queueMaxBytesTotal > maxAggregate) {
297
+ throw new Error(`${ENV_ALIASES.queueMaxBytesTotal} must be <= 25% of ${ENV_ALIASES.shedRssMb} (${maxAggregate} bytes)`);
298
+ }
299
+ }
300
+ }
301
+ export function resolveTransportConfig(env = process.env) {
302
+ const config = { ...DEFAULTS, ...readEnv(env) };
303
+ validate(config);
304
+ return Object.freeze({ ...config });
305
+ }
306
+ const originalBootLatched = resolveTransportConfig();
307
+ let override = null;
308
+ export let transportConfig = originalBootLatched;
309
+ function applyActive() {
310
+ transportConfig = override ?? originalBootLatched;
311
+ }
312
+ /** Restore the original process boot-latched config. Does not re-read process.env. */
313
+ export function resetTransportConfigForTesting() {
314
+ override = null;
315
+ applyActive();
316
+ }
317
+ export function setTransportConfigForTesting(partial) {
318
+ const next = { ...(override ?? originalBootLatched), ...partial };
319
+ validate(next);
320
+ override = Object.freeze({ ...next });
321
+ applyActive();
322
+ }
323
+ export function clearTransportConfigOverrideForTesting() {
324
+ override = null;
325
+ applyActive();
326
+ }
15
327
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/transport/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,gBAAgB,EAAE,MAAM;IACxB,oBAAoB,EAAE,CAAC;IACvB,oBAAoB,EAAE,GAAG;IACzB,mBAAmB,EAAE,KAAK;IAC1B,oBAAoB,EAAE,GAAG;IACzB,oBAAoB,EAAE,MAAM;IAC5B,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,MAAM;IACpB,mBAAmB,EAAE,OAAO;IAC5B,gBAAgB,EAAE,OAAO;IACzB,sBAAsB,EAAE,CAAC;IACzB,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;CACnC,CAAA"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/transport/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import { type TransportBreaker } from "./breaker.js";
2
+ import type { TransportErrorCode } from "./errors.js";
3
+ export type TransportProvider = "codex" | "openai";
4
+ export type ConnectIntent = "demand" | "prewarm";
5
+ export type ConnectPermit = {
6
+ scopeKey: string;
7
+ probeToken?: number;
8
+ intent: ConnectIntent;
9
+ startedAt: number;
10
+ };
11
+ export type AdmissionResult = {
12
+ ok: true;
13
+ reason?: string;
14
+ permit?: ConnectPermit;
15
+ } | {
16
+ ok: false;
17
+ reason: TransportErrorCode;
18
+ };
19
+ export type TransportCoordinatorOptions = {
20
+ processMaxSockets?: number;
21
+ maxSocketsPerProvider?: number;
22
+ maxSocketsPerAccount?: number;
23
+ maxConnecting?: number;
24
+ prewarmMaxConnecting?: number;
25
+ prewarmDemandReserve?: number;
26
+ connectRateProcessPerMin?: number;
27
+ connectRateProviderPerMin?: number;
28
+ connectRateOriginPerMin?: number;
29
+ connectRateAccountPerMin?: number;
30
+ maxAccountingEntries?: number;
31
+ queueMaxBytesPerStream?: number;
32
+ queueMaxBytesTotal?: number;
33
+ maxSessions?: number;
34
+ eventLoopLagMs?: number;
35
+ rssMb?: number;
36
+ breaker?: TransportBreaker;
37
+ now?: () => number;
38
+ getRssMb?: () => number;
39
+ getEventLoopLagMs?: () => number;
40
+ };
41
+ type Histogram = {
42
+ bounds: number[];
43
+ counts: number[];
44
+ };
45
+ export declare function canonicalWebSocketOrigin(raw: string): string;
46
+ export declare class TransportCoordinator {
47
+ readonly processMaxSockets: number;
48
+ readonly maxSocketsPerProvider: number;
49
+ readonly maxSocketsPerAccount: number;
50
+ readonly maxConnecting: number;
51
+ readonly prewarmMaxConnecting: number;
52
+ readonly prewarmDemandReserve: number;
53
+ readonly maxAccountingEntries: number;
54
+ readonly queueMaxBytesPerStream: number;
55
+ readonly queueMaxBytesTotal: number;
56
+ readonly maxSessions: number;
57
+ readonly eventLoopLagMs: number;
58
+ readonly rssMb: number;
59
+ readonly breaker: TransportBreaker;
60
+ readonly now: () => number;
61
+ readonly getRssMb: () => number;
62
+ readonly getEventLoopLagMs: () => number;
63
+ private readonly rateLimits;
64
+ private physicalSockets;
65
+ private connecting;
66
+ private prewarming;
67
+ private sessions;
68
+ private queuedInboundBytes;
69
+ private queuedInboundMessages;
70
+ private queueOverflows;
71
+ private readonly providerQueues;
72
+ private readonly providerSockets;
73
+ private readonly accountSockets;
74
+ private readonly rateWindows;
75
+ private readonly streamQueues;
76
+ private readonly finishedPermits;
77
+ private lagMonitor;
78
+ private lagTimer;
79
+ private lastLagMs;
80
+ private disposed;
81
+ private readonly counters;
82
+ private readonly histograms;
83
+ constructor(opts?: TransportCoordinatorOptions);
84
+ dispose(): void;
85
+ private memoryBlocked;
86
+ private boundMap;
87
+ reserveSocket(input: {
88
+ accountFp: string;
89
+ provider: TransportProvider;
90
+ intent: ConnectIntent;
91
+ }): {
92
+ ok: true;
93
+ reason: "admitted";
94
+ } | {
95
+ ok: false;
96
+ reason: TransportErrorCode;
97
+ };
98
+ releaseSocket(input: {
99
+ accountFp: string;
100
+ provider: TransportProvider;
101
+ }): void;
102
+ private pruneWindow;
103
+ private rateBlock;
104
+ private recordRates;
105
+ private boundRateWindows;
106
+ startConnect(input: {
107
+ intent: ConnectIntent;
108
+ provider: TransportProvider;
109
+ origin: string;
110
+ accountFp: string;
111
+ scopeKey: string;
112
+ }): {
113
+ ok: true;
114
+ permit: ConnectPermit;
115
+ } | {
116
+ ok: false;
117
+ reason: TransportErrorCode;
118
+ };
119
+ finishConnect(permit: ConnectPermit, result: {
120
+ success: boolean;
121
+ breakerEligible?: boolean;
122
+ timeout?: boolean;
123
+ }): void;
124
+ adjustQueue(input: {
125
+ provider: TransportProvider;
126
+ streamKey: string;
127
+ bytes: number;
128
+ messages: number;
129
+ }): boolean;
130
+ releaseAccounting(streamKey: string): void;
131
+ resetAccounting(): void;
132
+ adjustSessions(delta: number): void;
133
+ noteLeaseAttempt(): void;
134
+ noteLeaseAdmission(): void;
135
+ noteAdmissionMiss(reason: string): void;
136
+ noteFallback(reason: string): void;
137
+ noteAuthStale(): void;
138
+ noteCooldown(): void;
139
+ notePrewarmAttempt(): void;
140
+ notePrewarmDeferred(): void;
141
+ noteMaxAgeRetire(): void;
142
+ noteSocketClosed(lifetimeMs: number, turns: number): void;
143
+ sweep(): void;
144
+ snapshot(): {
145
+ physicalSockets: number;
146
+ connecting: number;
147
+ prewarming: number;
148
+ sessions: number;
149
+ accountEntries: number;
150
+ rateEntries: number;
151
+ queuedInboundBytes: number;
152
+ queuedInboundMessages: number;
153
+ queueOverflows: number;
154
+ providerQueues: {
155
+ codex: {
156
+ bytes: number;
157
+ messages: number;
158
+ };
159
+ openai: {
160
+ bytes: number;
161
+ messages: number;
162
+ };
163
+ };
164
+ counters: {
165
+ admissionMissesByReason: {
166
+ provider_breaker: number;
167
+ session_busy: number;
168
+ session_cooldown: number;
169
+ provider_cap: number;
170
+ process_cap: number;
171
+ account_cap: number;
172
+ connect_cap: number;
173
+ handshake_rate: number;
174
+ memory_guard: number;
175
+ connect_failure: number;
176
+ handshake_timeout: number;
177
+ stale_auth: number;
178
+ };
179
+ httpByReason: {
180
+ provider_breaker: number;
181
+ session_busy: number;
182
+ session_cooldown: number;
183
+ provider_cap: number;
184
+ process_cap: number;
185
+ account_cap: number;
186
+ connect_cap: number;
187
+ handshake_rate: number;
188
+ memory_guard: number;
189
+ connect_failure: number;
190
+ handshake_timeout: number;
191
+ provider_connection_limit: number;
192
+ previous_response_not_found: number;
193
+ };
194
+ leaseAttempts: number;
195
+ leaseAdmissions: number;
196
+ connectAttempts: number;
197
+ connectSuccesses: number;
198
+ connectFailures: number;
199
+ connectTimeouts: number;
200
+ prewarmAttempts: number;
201
+ prewarmDeferred: number;
202
+ prewarmFailures: number;
203
+ authStaleRejects: number;
204
+ sessionCooldowns: number;
205
+ fallbacks: number;
206
+ maxAgeRetires: number;
207
+ };
208
+ distributions: {
209
+ handshakeLatencyMs: Histogram;
210
+ socketLifetimeMs: Histogram;
211
+ turnsPerConnection: Histogram;
212
+ inboundQueueHighWaterBytes: Histogram;
213
+ inboundQueueHighWaterMessages: Histogram;
214
+ };
215
+ breaker: import("./breaker.js").TransportBreakerSnapshot;
216
+ };
217
+ }
218
+ export declare function defaultTransportCoordinatorOptions(): TransportCoordinatorOptions;
219
+ export declare function getTransportCoordinator(): TransportCoordinator;
220
+ export declare function configureTransportCoordinator(options: TransportCoordinatorOptions): TransportCoordinator;
221
+ export declare function resetTransportCoordinatorForTesting(): void;
222
+ export {};
223
+ //# sourceMappingURL=coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/transport/coordinator.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,CAAA;AAClD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEhD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,GACrD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAA;AAE7C,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAA;CACjC,CAAA;AAED,KAAK,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AA8EvD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;IACvC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAA;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,CAAA;IAExC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAK1B;IAED,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,kBAAkB,CAAI;IAC9B,OAAO,CAAC,qBAAqB,CAAI;IACjC,OAAO,CAAC,cAAc,CAAI;IAE1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6D;IAC7F,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IAExD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAgBxB;IAED,OAAO,CAAC,QAAQ,CAAC,UAAU,CAM1B;gBAEW,IAAI,GAAE,2BAAgC;IA2ClD,OAAO,IAAI,IAAI;IAiBf,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,QAAQ;IAQhB,aAAa,CAAC,KAAK,EAAE;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,iBAAiB,CAAA;QAC3B,MAAM,EAAE,aAAa,CAAA;KACtB,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE;IA0BhF,aAAa,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;IAQ9E,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,gBAAgB;IASxB,YAAY,CAAC,KAAK,EAAE;QAClB,MAAM,EAAE,aAAa,CAAA;QACrB,QAAQ,EAAE,iBAAiB,CAAA;QAC3B,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE;IAiCnF,aAAa,CACX,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GACzE,IAAI;IAuBP,WAAW,CAAC,KAAK,EAAE;QACjB,QAAQ,EAAE,iBAAiB,CAAA;QAC3B,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG,OAAO;IA0CX,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAW1C,eAAe,IAAI,IAAI;IASvB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,gBAAgB,IAAI,IAAI;IAIxB,kBAAkB,IAAI,IAAI;IAI1B,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMvC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOlC,aAAa,IAAI,IAAI;IAKrB,YAAY,IAAI,IAAI;IAIpB,kBAAkB,IAAI,IAAI;IAI1B,mBAAmB,IAAI,IAAI;IAI3B,gBAAgB,IAAI,IAAI;IAIxB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzD,KAAK,IAAI,IAAI;IAMb,QAAQ;;;;;;;;;;;;uBA1X4D,MAAM;0BAAY,MAAM;;;uBAAxB,MAAM;0BAAY,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwZ7F;AAED,wBAAgB,kCAAkC,IAAI,2BAA2B,CAehF;AAID,wBAAgB,uBAAuB,IAAI,oBAAoB,CAG9D;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,2BAA2B,GAAG,oBAAoB,CAIxG;AAED,wBAAgB,mCAAmC,IAAI,IAAI,CAG1D"}