openai-ws-opencode 0.1.25 → 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.
Files changed (43) hide show
  1. package/README.md +6 -1
  2. package/bin/setup.js +82 -30
  3. package/dist/constants.d.ts +1 -1
  4. package/dist/constants.js +1 -1
  5. package/dist/models/catalog.d.ts +2 -0
  6. package/dist/models/catalog.d.ts.map +1 -1
  7. package/dist/models/catalog.js +6 -2
  8. package/dist/models/catalog.js.map +1 -1
  9. package/dist/models/resolve.d.ts.map +1 -1
  10. package/dist/models/resolve.js +64 -40
  11. package/dist/models/resolve.js.map +1 -1
  12. package/dist/plugin.d.ts.map +1 -1
  13. package/dist/plugin.js +22 -12
  14. package/dist/plugin.js.map +1 -1
  15. package/dist/testing.d.ts +96 -2
  16. package/dist/testing.d.ts.map +1 -1
  17. package/dist/testing.js +18 -2
  18. package/dist/testing.js.map +1 -1
  19. package/dist/transport/breaker.d.ts +41 -0
  20. package/dist/transport/breaker.d.ts.map +1 -0
  21. package/dist/transport/breaker.js +207 -0
  22. package/dist/transport/breaker.js.map +1 -0
  23. package/dist/transport/bridge.d.ts +6 -1
  24. package/dist/transport/bridge.d.ts.map +1 -1
  25. package/dist/transport/bridge.js +274 -72
  26. package/dist/transport/bridge.js.map +1 -1
  27. package/dist/transport/config.d.ts +37 -1
  28. package/dist/transport/config.d.ts.map +1 -1
  29. package/dist/transport/config.js +318 -6
  30. package/dist/transport/config.js.map +1 -1
  31. package/dist/transport/coordinator.d.ts +223 -0
  32. package/dist/transport/coordinator.d.ts.map +1 -0
  33. package/dist/transport/coordinator.js +506 -0
  34. package/dist/transport/coordinator.js.map +1 -0
  35. package/dist/transport/errors.d.ts +24 -0
  36. package/dist/transport/errors.d.ts.map +1 -0
  37. package/dist/transport/errors.js +49 -0
  38. package/dist/transport/errors.js.map +1 -0
  39. package/dist/transport/pool.d.ts +114 -7
  40. package/dist/transport/pool.d.ts.map +1 -1
  41. package/dist/transport/pool.js +473 -188
  42. package/dist/transport/pool.js.map +1 -1
  43. package/package.json +2 -2
@@ -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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"}