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
@@ -0,0 +1,207 @@
1
+ const DEFAULT_WINDOW_MS = 30_000;
2
+ const DEFAULT_MIN_SAMPLES = 10;
3
+ const DEFAULT_FAILURE_PERCENT = 50;
4
+ const DEFAULT_OPEN_MS = 30_000;
5
+ const DEFAULT_JITTER_MS = 5_000;
6
+ const DEFAULT_MAX_ENTRIES = 4096;
7
+ const DEFAULT_HALF_OPEN_SUCCESSES = 2;
8
+ export function createTransportBreaker(opts = {}) {
9
+ const windowMs = opts.windowMs ?? DEFAULT_WINDOW_MS;
10
+ const minSamples = opts.minSamples ?? DEFAULT_MIN_SAMPLES;
11
+ const failurePercent = opts.failurePercent ?? DEFAULT_FAILURE_PERCENT;
12
+ const openMs = opts.openMs ?? DEFAULT_OPEN_MS;
13
+ const jitterMs = opts.jitterMs ?? DEFAULT_JITTER_MS;
14
+ const maxEntries = opts.maxEntries ?? DEFAULT_MAX_ENTRIES;
15
+ const ttlMs = opts.ttlMs ?? windowMs;
16
+ const halfOpenSuccesses = Math.max(1, opts.halfOpenSuccesses ?? DEFAULT_HALF_OPEN_SUCCESSES);
17
+ const enabled = opts.enabled !== false;
18
+ const nowFn = opts.now ?? Date.now;
19
+ const randomFn = opts.random ?? Math.random;
20
+ const domains = new Map();
21
+ let nextProbeToken = 1;
22
+ let trips = 0;
23
+ let halfOpenProbes = 0;
24
+ let closes = 0;
25
+ function freshEntry() {
26
+ return {
27
+ state: "closed",
28
+ outcomes: [],
29
+ openUntil: 0,
30
+ probeToken: null,
31
+ consecutiveProbeSuccesses: 0,
32
+ lastActivityAt: nowFn(),
33
+ };
34
+ }
35
+ function openDurationMs() {
36
+ const span = Math.max(0, jitterMs);
37
+ return openMs + Math.floor(randomFn() * (span + 1));
38
+ }
39
+ function pruneOutcomes(entry, now) {
40
+ const cut = now - windowMs;
41
+ while (entry.outcomes.length > 0 && entry.outcomes[0].at < cut)
42
+ entry.outcomes.shift();
43
+ }
44
+ function tripOpen(entry, now) {
45
+ entry.state = "open";
46
+ entry.openUntil = now + openDurationMs();
47
+ entry.probeToken = null;
48
+ entry.consecutiveProbeSuccesses = 0;
49
+ trips++;
50
+ }
51
+ function maybeTripFromWindow(entry, now) {
52
+ pruneOutcomes(entry, now);
53
+ const samples = entry.outcomes.length;
54
+ if (samples < minSamples)
55
+ return;
56
+ let failures = 0;
57
+ for (const outcome of entry.outcomes)
58
+ if (outcome.failed)
59
+ failures++;
60
+ if (failures * 100 >= failurePercent * samples)
61
+ tripOpen(entry, now);
62
+ }
63
+ function pushOutcome(entry, now, failed) {
64
+ entry.outcomes.push({ at: now, failed });
65
+ entry.lastActivityAt = now;
66
+ if (entry.state === "closed")
67
+ maybeTripFromWindow(entry, now);
68
+ }
69
+ function sweepAt(now) {
70
+ for (const [key, entry] of domains) {
71
+ if (entry.state !== "closed")
72
+ continue;
73
+ pruneOutcomes(entry, now);
74
+ if (now - entry.lastActivityAt >= ttlMs)
75
+ domains.delete(key);
76
+ }
77
+ }
78
+ function evictOldest(predicate) {
79
+ let victim = null;
80
+ let oldest = Infinity;
81
+ for (const [key, entry] of domains) {
82
+ if (predicate && !predicate(entry))
83
+ continue;
84
+ if (entry.lastActivityAt < oldest) {
85
+ oldest = entry.lastActivityAt;
86
+ victim = key;
87
+ }
88
+ }
89
+ if (!victim)
90
+ return false;
91
+ domains.delete(victim);
92
+ return true;
93
+ }
94
+ function ensureCapacity(now) {
95
+ if (domains.size < maxEntries)
96
+ return;
97
+ sweepAt(now);
98
+ if (domains.size < maxEntries)
99
+ return;
100
+ if (evictOldest((entry) => entry.state === "closed"))
101
+ return;
102
+ evictOldest();
103
+ }
104
+ function entryFor(key, now) {
105
+ let entry = domains.get(key);
106
+ if (entry) {
107
+ entry.lastActivityAt = now;
108
+ return entry;
109
+ }
110
+ ensureCapacity(now);
111
+ entry = freshEntry();
112
+ entry.lastActivityAt = now;
113
+ domains.set(key, entry);
114
+ return entry;
115
+ }
116
+ function decide(allowed, reason, state) {
117
+ return { allowed, reason, state };
118
+ }
119
+ function grantProbe(entry) {
120
+ if (entry.probeToken != null)
121
+ return decide(false, "provider_breaker", "half-open");
122
+ const token = nextProbeToken++;
123
+ entry.probeToken = token;
124
+ halfOpenProbes++;
125
+ return { allowed: true, reason: "probe", state: "half-open", probeToken: token };
126
+ }
127
+ function allowClosedOrOpen(entry, now) {
128
+ if (entry.state === "closed")
129
+ return decide(true, "ok", entry.state);
130
+ if (now < entry.openUntil)
131
+ return decide(false, "provider_breaker", "open");
132
+ entry.state = "half-open";
133
+ entry.probeToken = null;
134
+ entry.consecutiveProbeSuccesses = 0;
135
+ return grantProbe(entry);
136
+ }
137
+ function matchesProbe(entry, token) {
138
+ return entry.state === "half-open" && token != null && entry.probeToken === token;
139
+ }
140
+ function allow(key) {
141
+ const now = nowFn();
142
+ const entry = entryFor(key, now);
143
+ const result = entry.state === "half-open" ? grantProbe(entry) : allowClosedOrOpen(entry, now);
144
+ if (!enabled) {
145
+ return {
146
+ allowed: true,
147
+ reason: "breaker_off",
148
+ state: result.state,
149
+ probeToken: result.probeToken,
150
+ };
151
+ }
152
+ return result;
153
+ }
154
+ function recordSuccess(key, token) {
155
+ const now = nowFn();
156
+ const entry = entryFor(key, now);
157
+ if (matchesProbe(entry, token)) {
158
+ entry.probeToken = null;
159
+ entry.consecutiveProbeSuccesses++;
160
+ entry.lastActivityAt = now;
161
+ if (entry.consecutiveProbeSuccesses >= halfOpenSuccesses) {
162
+ entry.state = "closed";
163
+ entry.outcomes = [];
164
+ entry.consecutiveProbeSuccesses = 0;
165
+ closes++;
166
+ }
167
+ return;
168
+ }
169
+ if (entry.state === "closed")
170
+ pushOutcome(entry, now, false);
171
+ }
172
+ function recordFailure(key, detail) {
173
+ const now = nowFn();
174
+ const entry = entryFor(key, now);
175
+ const { eligible, token } = detail;
176
+ if (matchesProbe(entry, token)) {
177
+ entry.probeToken = null;
178
+ entry.lastActivityAt = now;
179
+ if (eligible)
180
+ tripOpen(entry, now);
181
+ return;
182
+ }
183
+ if (!eligible)
184
+ return;
185
+ if (entry.state === "closed")
186
+ pushOutcome(entry, now, true);
187
+ }
188
+ function snapshot() {
189
+ let closed = 0;
190
+ let open = 0;
191
+ let halfOpen = 0;
192
+ for (const entry of domains.values()) {
193
+ if (entry.state === "open")
194
+ open++;
195
+ else if (entry.state === "half-open")
196
+ halfOpen++;
197
+ else
198
+ closed++;
199
+ }
200
+ return { entries: domains.size, closed, open, halfOpen, trips, halfOpenProbes, closes };
201
+ }
202
+ function sweep() {
203
+ sweepAt(nowFn());
204
+ }
205
+ return { allow, recordSuccess, recordFailure, snapshot, sweep };
206
+ }
207
+ //# sourceMappingURL=breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breaker.js","sourceRoot":"","sources":["../../src/transport/breaker.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,10 @@
1
1
  import type { TransportContext } from "./headers.js";
2
- type FallbackFetch = (signal: AbortSignal) => Promise<Response>;
2
+ /** Hint passed to the owner-supplied HTTP fallback callback. */
3
+ export type FallbackFetchContext = {
4
+ /** Set only for typed replay-safe `previous_response_not_found` owner fallback. */
5
+ clearPreviousResponseId?: boolean;
6
+ };
7
+ type FallbackFetch = (signal: AbortSignal, context?: FallbackFetchContext) => Promise<Response>;
3
8
  export declare function bridgeWebSocket(wsUrl: string, headers: Record<string, string>, requestBody: Record<string, unknown>, isOAuth: boolean, context?: TransportContext, signal?: AbortSignal, fallbackFetch?: FallbackFetch): Response;
4
9
  export {};
5
10
  //# sourceMappingURL=bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAwC/D,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,EACpB,aAAa,CAAC,EAAE,aAAa,GAC5B,QAAQ,CA6KV"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/transport/bridge.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEpD,gEAAgE;AAChE,MAAM,MAAM,oBAAoB,GAAG;IACjC,mFAAmF;IACnF,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AA2L/F,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,EACpB,aAAa,CAAC,EAAE,aAAa,GAC5B,QAAQ,CAkOV"}