oc-codex-multi-auth 6.0.0

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 (248) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -0
  3. package/assets/opencode-logo-ornate-dark.svg +18 -0
  4. package/assets/readme-hero.svg +31 -0
  5. package/config/README.md +96 -0
  6. package/config/minimal-opencode.json +13 -0
  7. package/config/opencode-legacy.json +871 -0
  8. package/config/opencode-modern.json +358 -0
  9. package/dist/index.d.ts +45 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +5008 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/lib/accounts/rate-limits.d.ts +22 -0
  14. package/dist/lib/accounts/rate-limits.d.ts.map +1 -0
  15. package/dist/lib/accounts/rate-limits.js +63 -0
  16. package/dist/lib/accounts/rate-limits.js.map +1 -0
  17. package/dist/lib/accounts.d.ts +134 -0
  18. package/dist/lib/accounts.d.ts.map +1 -0
  19. package/dist/lib/accounts.js +795 -0
  20. package/dist/lib/accounts.js.map +1 -0
  21. package/dist/lib/audit.d.ts +45 -0
  22. package/dist/lib/audit.d.ts.map +1 -0
  23. package/dist/lib/audit.js +154 -0
  24. package/dist/lib/audit.js.map +1 -0
  25. package/dist/lib/auth/auth.d.ts +51 -0
  26. package/dist/lib/auth/auth.d.ts.map +1 -0
  27. package/dist/lib/auth/auth.js +191 -0
  28. package/dist/lib/auth/auth.js.map +1 -0
  29. package/dist/lib/auth/browser.d.ts +17 -0
  30. package/dist/lib/auth/browser.d.ts.map +1 -0
  31. package/dist/lib/auth/browser.js +90 -0
  32. package/dist/lib/auth/browser.js.map +1 -0
  33. package/dist/lib/auth/device-code.d.ts +28 -0
  34. package/dist/lib/auth/device-code.d.ts.map +1 -0
  35. package/dist/lib/auth/device-code.js +215 -0
  36. package/dist/lib/auth/device-code.js.map +1 -0
  37. package/dist/lib/auth/login-runner.d.ts +55 -0
  38. package/dist/lib/auth/login-runner.d.ts.map +1 -0
  39. package/dist/lib/auth/login-runner.js +631 -0
  40. package/dist/lib/auth/login-runner.js.map +1 -0
  41. package/dist/lib/auth/server.d.ts +10 -0
  42. package/dist/lib/auth/server.d.ts.map +1 -0
  43. package/dist/lib/auth/server.js +98 -0
  44. package/dist/lib/auth/server.js.map +1 -0
  45. package/dist/lib/auth/token-utils.d.ts +60 -0
  46. package/dist/lib/auth/token-utils.d.ts.map +1 -0
  47. package/dist/lib/auth/token-utils.js +416 -0
  48. package/dist/lib/auth/token-utils.js.map +1 -0
  49. package/dist/lib/auth-rate-limit.d.ts +20 -0
  50. package/dist/lib/auth-rate-limit.d.ts.map +1 -0
  51. package/dist/lib/auth-rate-limit.js +91 -0
  52. package/dist/lib/auth-rate-limit.js.map +1 -0
  53. package/dist/lib/auto-update-checker.d.ts +10 -0
  54. package/dist/lib/auto-update-checker.d.ts.map +1 -0
  55. package/dist/lib/auto-update-checker.js +129 -0
  56. package/dist/lib/auto-update-checker.js.map +1 -0
  57. package/dist/lib/circuit-breaker.d.ts +34 -0
  58. package/dist/lib/circuit-breaker.d.ts.map +1 -0
  59. package/dist/lib/circuit-breaker.js +124 -0
  60. package/dist/lib/circuit-breaker.js.map +1 -0
  61. package/dist/lib/cli.d.ts +46 -0
  62. package/dist/lib/cli.d.ts.map +1 -0
  63. package/dist/lib/cli.js +192 -0
  64. package/dist/lib/cli.js.map +1 -0
  65. package/dist/lib/config.d.ts +42 -0
  66. package/dist/lib/config.d.ts.map +1 -0
  67. package/dist/lib/config.js +314 -0
  68. package/dist/lib/config.js.map +1 -0
  69. package/dist/lib/constants.d.ts +90 -0
  70. package/dist/lib/constants.d.ts.map +1 -0
  71. package/dist/lib/constants.js +90 -0
  72. package/dist/lib/constants.js.map +1 -0
  73. package/dist/lib/context-overflow.d.ts +27 -0
  74. package/dist/lib/context-overflow.d.ts.map +1 -0
  75. package/dist/lib/context-overflow.js +124 -0
  76. package/dist/lib/context-overflow.js.map +1 -0
  77. package/dist/lib/errors.d.ts +113 -0
  78. package/dist/lib/errors.d.ts.map +1 -0
  79. package/dist/lib/errors.js +103 -0
  80. package/dist/lib/errors.js.map +1 -0
  81. package/dist/lib/health.d.ts +33 -0
  82. package/dist/lib/health.d.ts.map +1 -0
  83. package/dist/lib/health.js +70 -0
  84. package/dist/lib/health.js.map +1 -0
  85. package/dist/lib/index.d.ts +20 -0
  86. package/dist/lib/index.d.ts.map +1 -0
  87. package/dist/lib/index.js +20 -0
  88. package/dist/lib/index.js.map +1 -0
  89. package/dist/lib/logger.d.ts +40 -0
  90. package/dist/lib/logger.d.ts.map +1 -0
  91. package/dist/lib/logger.js +337 -0
  92. package/dist/lib/logger.js.map +1 -0
  93. package/dist/lib/oauth-success.html +712 -0
  94. package/dist/lib/parallel-probe.d.ts +28 -0
  95. package/dist/lib/parallel-probe.d.ts.map +1 -0
  96. package/dist/lib/parallel-probe.js +97 -0
  97. package/dist/lib/parallel-probe.js.map +1 -0
  98. package/dist/lib/proactive-refresh.d.ts +67 -0
  99. package/dist/lib/proactive-refresh.d.ts.map +1 -0
  100. package/dist/lib/proactive-refresh.js +161 -0
  101. package/dist/lib/proactive-refresh.js.map +1 -0
  102. package/dist/lib/prompts/codex-opencode-bridge.d.ts +20 -0
  103. package/dist/lib/prompts/codex-opencode-bridge.d.ts.map +1 -0
  104. package/dist/lib/prompts/codex-opencode-bridge.js +126 -0
  105. package/dist/lib/prompts/codex-opencode-bridge.js.map +1 -0
  106. package/dist/lib/prompts/codex.d.ts +41 -0
  107. package/dist/lib/prompts/codex.d.ts.map +1 -0
  108. package/dist/lib/prompts/codex.js +400 -0
  109. package/dist/lib/prompts/codex.js.map +1 -0
  110. package/dist/lib/prompts/opencode-codex.d.ts +25 -0
  111. package/dist/lib/prompts/opencode-codex.d.ts.map +1 -0
  112. package/dist/lib/prompts/opencode-codex.js +223 -0
  113. package/dist/lib/prompts/opencode-codex.js.map +1 -0
  114. package/dist/lib/recovery/constants.d.ts +12 -0
  115. package/dist/lib/recovery/constants.d.ts.map +1 -0
  116. package/dist/lib/recovery/constants.js +25 -0
  117. package/dist/lib/recovery/constants.js.map +1 -0
  118. package/dist/lib/recovery/index.d.ts +12 -0
  119. package/dist/lib/recovery/index.d.ts.map +1 -0
  120. package/dist/lib/recovery/index.js +12 -0
  121. package/dist/lib/recovery/index.js.map +1 -0
  122. package/dist/lib/recovery/storage.d.ts +24 -0
  123. package/dist/lib/recovery/storage.d.ts.map +1 -0
  124. package/dist/lib/recovery/storage.js +362 -0
  125. package/dist/lib/recovery/storage.js.map +1 -0
  126. package/dist/lib/recovery/types.d.ts +116 -0
  127. package/dist/lib/recovery/types.d.ts.map +1 -0
  128. package/dist/lib/recovery/types.js +7 -0
  129. package/dist/lib/recovery/types.js.map +1 -0
  130. package/dist/lib/recovery.d.ts +31 -0
  131. package/dist/lib/recovery.d.ts.map +1 -0
  132. package/dist/lib/recovery.js +313 -0
  133. package/dist/lib/recovery.js.map +1 -0
  134. package/dist/lib/refresh-queue.d.ts +131 -0
  135. package/dist/lib/refresh-queue.d.ts.map +1 -0
  136. package/dist/lib/refresh-queue.js +297 -0
  137. package/dist/lib/refresh-queue.js.map +1 -0
  138. package/dist/lib/request/fetch-helpers.d.ts +142 -0
  139. package/dist/lib/request/fetch-helpers.d.ts.map +1 -0
  140. package/dist/lib/request/fetch-helpers.js +749 -0
  141. package/dist/lib/request/fetch-helpers.js.map +1 -0
  142. package/dist/lib/request/helpers/input-utils.d.ts +7 -0
  143. package/dist/lib/request/helpers/input-utils.d.ts.map +1 -0
  144. package/dist/lib/request/helpers/input-utils.js +214 -0
  145. package/dist/lib/request/helpers/input-utils.js.map +1 -0
  146. package/dist/lib/request/helpers/model-map.d.ts +22 -0
  147. package/dist/lib/request/helpers/model-map.d.ts.map +1 -0
  148. package/dist/lib/request/helpers/model-map.js +183 -0
  149. package/dist/lib/request/helpers/model-map.js.map +1 -0
  150. package/dist/lib/request/helpers/tool-utils.d.ts +29 -0
  151. package/dist/lib/request/helpers/tool-utils.d.ts.map +1 -0
  152. package/dist/lib/request/helpers/tool-utils.js +117 -0
  153. package/dist/lib/request/helpers/tool-utils.js.map +1 -0
  154. package/dist/lib/request/rate-limit-backoff.d.ts +17 -0
  155. package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -0
  156. package/dist/lib/request/rate-limit-backoff.js +83 -0
  157. package/dist/lib/request/rate-limit-backoff.js.map +1 -0
  158. package/dist/lib/request/request-transformer.d.ts +107 -0
  159. package/dist/lib/request/request-transformer.d.ts.map +1 -0
  160. package/dist/lib/request/request-transformer.js +930 -0
  161. package/dist/lib/request/request-transformer.js.map +1 -0
  162. package/dist/lib/request/response-handler.d.ts +23 -0
  163. package/dist/lib/request/response-handler.d.ts.map +1 -0
  164. package/dist/lib/request/response-handler.js +245 -0
  165. package/dist/lib/request/response-handler.js.map +1 -0
  166. package/dist/lib/request/retry-budget.d.ts +19 -0
  167. package/dist/lib/request/retry-budget.d.ts.map +1 -0
  168. package/dist/lib/request/retry-budget.js +99 -0
  169. package/dist/lib/request/retry-budget.js.map +1 -0
  170. package/dist/lib/rotation.d.ts +130 -0
  171. package/dist/lib/rotation.d.ts.map +1 -0
  172. package/dist/lib/rotation.js +301 -0
  173. package/dist/lib/rotation.js.map +1 -0
  174. package/dist/lib/runtime-contracts.d.ts +16 -0
  175. package/dist/lib/runtime-contracts.d.ts.map +1 -0
  176. package/dist/lib/runtime-contracts.js +24 -0
  177. package/dist/lib/runtime-contracts.js.map +1 -0
  178. package/dist/lib/schemas.d.ts +457 -0
  179. package/dist/lib/schemas.d.ts.map +1 -0
  180. package/dist/lib/schemas.js +283 -0
  181. package/dist/lib/schemas.js.map +1 -0
  182. package/dist/lib/shutdown.d.ts +7 -0
  183. package/dist/lib/shutdown.d.ts.map +1 -0
  184. package/dist/lib/shutdown.js +43 -0
  185. package/dist/lib/shutdown.js.map +1 -0
  186. package/dist/lib/storage/migrations.d.ts +65 -0
  187. package/dist/lib/storage/migrations.d.ts.map +1 -0
  188. package/dist/lib/storage/migrations.js +44 -0
  189. package/dist/lib/storage/migrations.js.map +1 -0
  190. package/dist/lib/storage/paths.d.ts +16 -0
  191. package/dist/lib/storage/paths.d.ts.map +1 -0
  192. package/dist/lib/storage/paths.js +92 -0
  193. package/dist/lib/storage/paths.js.map +1 -0
  194. package/dist/lib/storage.d.ts +157 -0
  195. package/dist/lib/storage.d.ts.map +1 -0
  196. package/dist/lib/storage.js +1169 -0
  197. package/dist/lib/storage.js.map +1 -0
  198. package/dist/lib/table-formatter.d.ts +32 -0
  199. package/dist/lib/table-formatter.d.ts.map +1 -0
  200. package/dist/lib/table-formatter.js +44 -0
  201. package/dist/lib/table-formatter.js.map +1 -0
  202. package/dist/lib/types.d.ts +131 -0
  203. package/dist/lib/types.d.ts.map +1 -0
  204. package/dist/lib/types.js +2 -0
  205. package/dist/lib/types.js.map +1 -0
  206. package/dist/lib/ui/ansi.d.ts +22 -0
  207. package/dist/lib/ui/ansi.d.ts.map +1 -0
  208. package/dist/lib/ui/ansi.js +38 -0
  209. package/dist/lib/ui/ansi.js.map +1 -0
  210. package/dist/lib/ui/auth-menu.d.ts +39 -0
  211. package/dist/lib/ui/auth-menu.d.ts.map +1 -0
  212. package/dist/lib/ui/auth-menu.js +186 -0
  213. package/dist/lib/ui/auth-menu.js.map +1 -0
  214. package/dist/lib/ui/beginner.d.ts +62 -0
  215. package/dist/lib/ui/beginner.d.ts.map +1 -0
  216. package/dist/lib/ui/beginner.js +259 -0
  217. package/dist/lib/ui/beginner.js.map +1 -0
  218. package/dist/lib/ui/confirm.d.ts +2 -0
  219. package/dist/lib/ui/confirm.d.ts.map +1 -0
  220. package/dist/lib/ui/confirm.js +21 -0
  221. package/dist/lib/ui/confirm.js.map +1 -0
  222. package/dist/lib/ui/format.d.ts +9 -0
  223. package/dist/lib/ui/format.d.ts.map +1 -0
  224. package/dist/lib/ui/format.js +49 -0
  225. package/dist/lib/ui/format.js.map +1 -0
  226. package/dist/lib/ui/runtime.d.ts +11 -0
  227. package/dist/lib/ui/runtime.d.ts.map +1 -0
  228. package/dist/lib/ui/runtime.js +31 -0
  229. package/dist/lib/ui/runtime.js.map +1 -0
  230. package/dist/lib/ui/select.d.ts +20 -0
  231. package/dist/lib/ui/select.d.ts.map +1 -0
  232. package/dist/lib/ui/select.js +343 -0
  233. package/dist/lib/ui/select.js.map +1 -0
  234. package/dist/lib/ui/theme.d.ts +34 -0
  235. package/dist/lib/ui/theme.d.ts.map +1 -0
  236. package/dist/lib/ui/theme.js +84 -0
  237. package/dist/lib/ui/theme.js.map +1 -0
  238. package/dist/lib/utils.d.ts +29 -0
  239. package/dist/lib/utils.d.ts.map +1 -0
  240. package/dist/lib/utils.js +54 -0
  241. package/dist/lib/utils.js.map +1 -0
  242. package/package.json +113 -0
  243. package/scripts/audit-dev-allowlist.js +114 -0
  244. package/scripts/copy-oauth-success.js +37 -0
  245. package/scripts/install-oc-codex-multi-auth-core.js +381 -0
  246. package/scripts/install-oc-codex-multi-auth.js +15 -0
  247. package/scripts/test-all-models.sh +260 -0
  248. package/scripts/validate-model-map.sh +97 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-transformer.js","sourceRoot":"","sources":["../../../lib/request/request-transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Convert SSE stream response to JSON for generateText()
3
+ * @param response - Fetch response with SSE stream
4
+ * @param headers - Response headers
5
+ * @returns Response with JSON body
6
+ */
7
+ export declare function convertSseToJson(response: Response, headers: Headers, options?: {
8
+ streamStallTimeoutMs?: number;
9
+ }): Promise<Response>;
10
+ /**
11
+ * Ensure response has content-type header
12
+ * @param headers - Response headers
13
+ * @returns Headers with content-type set
14
+ */
15
+ export declare function ensureContentType(headers: Headers): Headers;
16
+ /**
17
+ * Check if a non-streaming response is empty or malformed.
18
+ * Returns true if the response body is empty, null, or lacks meaningful content.
19
+ * @param body - Parsed JSON body from the response
20
+ * @returns True if response should be considered empty/malformed
21
+ */
22
+ export declare function isEmptyResponse(body: unknown): boolean;
23
+ //# sourceMappingURL=response-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-handler.d.ts","sourceRoot":"","sources":["../../../lib/request/response-handler.ts"],"names":[],"mappings":"AAiJA;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;IAAE,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,QAAQ,CAAC,CA8FnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAQ3D;AA2BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAoBtD"}
@@ -0,0 +1,245 @@
1
+ import { createLogger, logRequest, LOGGING_ENABLED } from "../logger.js";
2
+ const log = createLogger("response-handler");
3
+ const MAX_SSE_SIZE = 10 * 1024 * 1024; // 10MB limit to prevent memory exhaustion
4
+ const DEFAULT_STREAM_STALL_TIMEOUT_MS = 45_000;
5
+ const STREAM_ERROR_CODE = "stream_error";
6
+ function toRecord(value) {
7
+ if (value && typeof value === "object") {
8
+ return value;
9
+ }
10
+ return null;
11
+ }
12
+ function extractErrorFromRecord(errorRecord) {
13
+ if (!errorRecord)
14
+ return null;
15
+ const message = typeof errorRecord.message === "string" ? errorRecord.message.trim() : "";
16
+ if (!message)
17
+ return null;
18
+ const type = typeof errorRecord.type === "string" ? errorRecord.type : undefined;
19
+ const rawCode = errorRecord.code;
20
+ const code = typeof rawCode === "string" || typeof rawCode === "number"
21
+ ? rawCode
22
+ : undefined;
23
+ return { message, type, code };
24
+ }
25
+ function extractStreamError(event) {
26
+ const errorRecord = toRecord(event.error);
27
+ const eventMessage = event.message;
28
+ const parsedError = extractErrorFromRecord(errorRecord);
29
+ if (parsedError)
30
+ return parsedError;
31
+ const message = (typeof eventMessage === "string" ? eventMessage.trim() : "") ||
32
+ "Codex stream emitted an error event";
33
+ return { message };
34
+ }
35
+ function extractResponseError(responseRecord) {
36
+ const status = typeof responseRecord.status === "string" ? responseRecord.status : "";
37
+ const parsedError = extractErrorFromRecord(toRecord(responseRecord.error));
38
+ if (parsedError)
39
+ return parsedError;
40
+ if (status === "failed" || status === "incomplete") {
41
+ return { message: `Codex stream ended with status: ${status}` };
42
+ }
43
+ return null;
44
+ }
45
+ function parseDataPayload(line) {
46
+ if (!line.startsWith("data:"))
47
+ return null;
48
+ const payload = line.slice(5).trimStart();
49
+ if (!payload || payload === "[DONE]")
50
+ return null;
51
+ return payload;
52
+ }
53
+ /**
54
+
55
+ * Parse SSE stream to extract final response
56
+ * @param sseText - Complete SSE stream text
57
+ * @returns Final response object or null if not found
58
+ */
59
+ function parseSseStream(sseText) {
60
+ const lines = sseText.split(/\r?\n/);
61
+ for (const line of lines) {
62
+ const trimmedLine = line.trim();
63
+ const payload = parseDataPayload(trimmedLine);
64
+ if (payload) {
65
+ try {
66
+ const data = JSON.parse(payload);
67
+ const responseRecord = toRecord(data.response);
68
+ if (data.type === "error" || data.type === "response.error") {
69
+ const parsedError = extractStreamError(data);
70
+ log.error("SSE error event received", { error: parsedError });
71
+ return { kind: "error", error: parsedError };
72
+ }
73
+ if (data.type === "response.failed" || data.type === "response.incomplete") {
74
+ const parsedError = (responseRecord && extractResponseError(responseRecord)) ??
75
+ extractStreamError(data);
76
+ log.error("SSE response terminal error event received", {
77
+ type: data.type,
78
+ error: parsedError,
79
+ });
80
+ return { kind: "error", error: parsedError };
81
+ }
82
+ if (data.type === "response.done" || data.type === "response.completed") {
83
+ if (responseRecord) {
84
+ const parsedError = extractResponseError(responseRecord);
85
+ if (parsedError) {
86
+ log.error("SSE response completed with terminal error", {
87
+ error: parsedError,
88
+ status: responseRecord.status,
89
+ });
90
+ return { kind: "error", error: parsedError };
91
+ }
92
+ }
93
+ return { kind: "response", response: data.response };
94
+ }
95
+ }
96
+ catch {
97
+ // Skip malformed JSON
98
+ }
99
+ }
100
+ }
101
+ return null;
102
+ }
103
+ /**
104
+ * Convert SSE stream response to JSON for generateText()
105
+ * @param response - Fetch response with SSE stream
106
+ * @param headers - Response headers
107
+ * @returns Response with JSON body
108
+ */
109
+ export async function convertSseToJson(response, headers, options) {
110
+ if (!response.body) {
111
+ throw new Error('[openai-codex-plugin] Response has no body');
112
+ }
113
+ const reader = response.body.getReader();
114
+ const decoder = new TextDecoder();
115
+ let fullText = '';
116
+ const streamStallTimeoutMs = Math.max(1_000, Math.floor(options?.streamStallTimeoutMs ?? DEFAULT_STREAM_STALL_TIMEOUT_MS));
117
+ try {
118
+ // Consume the entire stream
119
+ while (true) {
120
+ const { done, value } = await readWithTimeout(reader, streamStallTimeoutMs);
121
+ if (done)
122
+ break;
123
+ fullText += decoder.decode(value, { stream: true });
124
+ if (fullText.length > MAX_SSE_SIZE) {
125
+ throw new Error(`SSE response exceeds ${MAX_SSE_SIZE} bytes limit`);
126
+ }
127
+ }
128
+ if (LOGGING_ENABLED) {
129
+ logRequest("stream-full", { fullContent: fullText });
130
+ }
131
+ // Parse SSE events to extract the final response
132
+ const parsedResult = parseSseStream(fullText);
133
+ if (parsedResult?.kind === "error") {
134
+ log.warn("SSE stream returned an error event", parsedResult.error);
135
+ logRequest("stream-error", {
136
+ error: parsedResult.error.message,
137
+ type: parsedResult.error.type,
138
+ code: parsedResult.error.code,
139
+ });
140
+ const jsonHeaders = new Headers(headers);
141
+ jsonHeaders.set("content-type", "application/json; charset=utf-8");
142
+ const status = response.status >= 400 ? response.status : 502;
143
+ const payload = {
144
+ error: {
145
+ message: parsedResult.error.message,
146
+ type: parsedResult.error.type ?? STREAM_ERROR_CODE,
147
+ code: parsedResult.error.code ?? STREAM_ERROR_CODE,
148
+ },
149
+ };
150
+ return new Response(JSON.stringify(payload), {
151
+ status,
152
+ statusText: status === 502 ? "Bad Gateway" : response.statusText,
153
+ headers: jsonHeaders,
154
+ });
155
+ }
156
+ const finalResponse = parsedResult?.kind === "response" ? parsedResult.response : null;
157
+ if (!finalResponse) {
158
+ log.warn("Could not find final response in SSE stream");
159
+ logRequest("stream-error", { error: "No response.done event found" });
160
+ // Return original stream if we can't parse
161
+ return new Response(fullText, {
162
+ status: response.status,
163
+ statusText: response.statusText,
164
+ headers: headers,
165
+ });
166
+ }
167
+ // Return as plain JSON (not SSE)
168
+ const jsonHeaders = new Headers(headers);
169
+ jsonHeaders.set('content-type', 'application/json; charset=utf-8');
170
+ return new Response(JSON.stringify(finalResponse), {
171
+ status: response.status,
172
+ statusText: response.statusText,
173
+ headers: jsonHeaders,
174
+ });
175
+ }
176
+ catch (error) {
177
+ log.error("Error converting stream", { error: String(error) });
178
+ logRequest("stream-error", { error: String(error) });
179
+ if (typeof reader.cancel === "function") {
180
+ await reader.cancel(String(error)).catch(() => { });
181
+ }
182
+ throw error;
183
+ }
184
+ finally {
185
+ // Release the reader lock to prevent resource leaks
186
+ reader.releaseLock();
187
+ }
188
+ }
189
+ /**
190
+ * Ensure response has content-type header
191
+ * @param headers - Response headers
192
+ * @returns Headers with content-type set
193
+ */
194
+ export function ensureContentType(headers) {
195
+ const responseHeaders = new Headers(headers);
196
+ if (!responseHeaders.has('content-type')) {
197
+ responseHeaders.set('content-type', 'text/event-stream; charset=utf-8');
198
+ }
199
+ return responseHeaders;
200
+ }
201
+ async function readWithTimeout(reader, timeoutMs) {
202
+ let timeoutId;
203
+ try {
204
+ return await Promise.race([
205
+ reader.read(),
206
+ new Promise((_, reject) => {
207
+ timeoutId = setTimeout(() => {
208
+ reject(new Error(`SSE stream stalled for ${timeoutMs}ms while waiting for response.done`));
209
+ }, timeoutMs);
210
+ }),
211
+ ]);
212
+ }
213
+ finally {
214
+ if (timeoutId !== undefined) {
215
+ clearTimeout(timeoutId);
216
+ }
217
+ }
218
+ }
219
+ /**
220
+ * Check if a non-streaming response is empty or malformed.
221
+ * Returns true if the response body is empty, null, or lacks meaningful content.
222
+ * @param body - Parsed JSON body from the response
223
+ * @returns True if response should be considered empty/malformed
224
+ */
225
+ export function isEmptyResponse(body) {
226
+ if (body === null || body === undefined)
227
+ return true;
228
+ if (typeof body === 'string' && body.trim() === '')
229
+ return true;
230
+ if (typeof body !== 'object')
231
+ return false;
232
+ const obj = body;
233
+ if (Object.keys(obj).length === 0)
234
+ return true;
235
+ const hasOutput = 'output' in obj && obj.output !== null && obj.output !== undefined;
236
+ const hasChoices = 'choices' in obj && Array.isArray(obj.choices) &&
237
+ obj.choices.some(c => c !== null && c !== undefined && typeof c === 'object' && Object.keys(c).length > 0);
238
+ const hasContent = 'content' in obj && obj.content !== null && obj.content !== undefined &&
239
+ (typeof obj.content !== 'string' || obj.content.trim() !== '');
240
+ if ('id' in obj || 'object' in obj || 'model' in obj) {
241
+ return !hasOutput && !hasChoices && !hasContent;
242
+ }
243
+ return false;
244
+ }
245
+ //# sourceMappingURL=response-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-handler.js","sourceRoot":"","sources":["../../../lib/request/response-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Retry budget utilities for per-error-class retry controls.
3
+ */
4
+ export type RetryProfile = "conservative" | "balanced" | "aggressive";
5
+ export type RetryBudgetClass = "authRefresh" | "network" | "server" | "rateLimitShort" | "rateLimitGlobal" | "emptyResponse";
6
+ export type RetryBudgetLimits = Record<RetryBudgetClass, number>;
7
+ export type RetryBudgetOverrides = Partial<RetryBudgetLimits>;
8
+ export declare function normalizeRetryBudgetValue(value: unknown): number | undefined;
9
+ export declare function resolveRetryBudgetLimits(profile: RetryProfile, overrides?: RetryBudgetOverrides): RetryBudgetLimits;
10
+ export declare class RetryBudgetTracker {
11
+ private readonly used;
12
+ private readonly limits;
13
+ constructor(limits: RetryBudgetLimits);
14
+ consume(bucket: RetryBudgetClass): boolean;
15
+ getLimits(): RetryBudgetLimits;
16
+ getUsage(): RetryBudgetLimits;
17
+ getRemaining(bucket: RetryBudgetClass): number;
18
+ }
19
+ //# sourceMappingURL=retry-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-budget.d.ts","sourceRoot":"","sources":["../../../lib/request/retry-budget.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GACzB,aAAa,GACb,SAAS,GACT,QAAQ,GACR,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAEjE,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAsC9D,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI5E;AAED,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,oBAAoB,GAC9B,iBAAiB,CAWnB;AAaD,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2C;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,MAAM,EAAE,iBAAiB;IAIrC,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAe1C,SAAS,IAAI,iBAAiB;IAI9B,QAAQ,IAAI,iBAAiB;IAI7B,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAK9C"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Retry budget utilities for per-error-class retry controls.
3
+ */
4
+ const PROFILE_LIMITS = {
5
+ conservative: {
6
+ authRefresh: 2,
7
+ network: 2,
8
+ server: 2,
9
+ rateLimitShort: 2,
10
+ rateLimitGlobal: 1,
11
+ emptyResponse: 1,
12
+ },
13
+ balanced: {
14
+ authRefresh: 4,
15
+ network: 4,
16
+ server: 4,
17
+ rateLimitShort: 4,
18
+ rateLimitGlobal: 3,
19
+ emptyResponse: 2,
20
+ },
21
+ aggressive: {
22
+ authRefresh: 8,
23
+ network: 8,
24
+ server: 8,
25
+ rateLimitShort: 8,
26
+ rateLimitGlobal: 10,
27
+ emptyResponse: 4,
28
+ },
29
+ };
30
+ const RETRY_BUDGET_CLASSES = [
31
+ "authRefresh",
32
+ "network",
33
+ "server",
34
+ "rateLimitShort",
35
+ "rateLimitGlobal",
36
+ "emptyResponse",
37
+ ];
38
+ export function normalizeRetryBudgetValue(value) {
39
+ if (typeof value !== "number" || !Number.isFinite(value))
40
+ return undefined;
41
+ if (value < 0)
42
+ return undefined;
43
+ return Math.floor(value);
44
+ }
45
+ export function resolveRetryBudgetLimits(profile, overrides) {
46
+ const base = PROFILE_LIMITS[profile] ?? PROFILE_LIMITS.balanced;
47
+ const merged = { ...base };
48
+ if (!overrides)
49
+ return merged;
50
+ for (const bucket of RETRY_BUDGET_CLASSES) {
51
+ const normalized = normalizeRetryBudgetValue(overrides[bucket]);
52
+ if (normalized === undefined)
53
+ continue;
54
+ merged[bucket] = normalized;
55
+ }
56
+ return merged;
57
+ }
58
+ function createUsedCounters() {
59
+ return {
60
+ authRefresh: 0,
61
+ network: 0,
62
+ server: 0,
63
+ rateLimitShort: 0,
64
+ rateLimitGlobal: 0,
65
+ emptyResponse: 0,
66
+ };
67
+ }
68
+ export class RetryBudgetTracker {
69
+ used = createUsedCounters();
70
+ limits;
71
+ constructor(limits) {
72
+ this.limits = { ...limits };
73
+ }
74
+ consume(bucket) {
75
+ const limit = this.limits[bucket];
76
+ if (!Number.isFinite(limit)) {
77
+ this.used[bucket] += 1;
78
+ return true;
79
+ }
80
+ if (this.used[bucket] >= limit) {
81
+ return false;
82
+ }
83
+ this.used[bucket] += 1;
84
+ return true;
85
+ }
86
+ getLimits() {
87
+ return { ...this.limits };
88
+ }
89
+ getUsage() {
90
+ return { ...this.used };
91
+ }
92
+ getRemaining(bucket) {
93
+ const limit = this.limits[bucket];
94
+ if (!Number.isFinite(limit))
95
+ return Number.POSITIVE_INFINITY;
96
+ return Math.max(0, limit - this.used[bucket]);
97
+ }
98
+ }
99
+ //# sourceMappingURL=retry-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-budget.js","sourceRoot":"","sources":["../../../lib/request/retry-budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Rotation Strategy Module
3
+ *
4
+ * Implements health-based account selection with token bucket rate limiting.
5
+ * Ported from antigravity-auth rotation logic for optimal account rotation
6
+ * when rate limits are encountered.
7
+ */
8
+ export interface HealthScoreConfig {
9
+ /** Points added on successful request */
10
+ successDelta: number;
11
+ /** Points deducted on rate limit (negative) */
12
+ rateLimitDelta: number;
13
+ /** Points deducted on other failures (negative) */
14
+ failureDelta: number;
15
+ /** Maximum health score */
16
+ maxScore: number;
17
+ /** Minimum health score */
18
+ minScore: number;
19
+ /** Points recovered per hour of inactivity */
20
+ passiveRecoveryPerHour: number;
21
+ }
22
+ export declare const DEFAULT_HEALTH_SCORE_CONFIG: HealthScoreConfig;
23
+ /**
24
+ * Tracks health scores for accounts to prioritize healthy accounts.
25
+ * Accounts with higher health scores are preferred for selection.
26
+ */
27
+ export declare class HealthScoreTracker {
28
+ private entries;
29
+ private config;
30
+ constructor(config?: Partial<HealthScoreConfig>);
31
+ private getKey;
32
+ private applyPassiveRecovery;
33
+ getScore(accountIndex: number, quotaKey?: string): number;
34
+ getConsecutiveFailures(accountIndex: number, quotaKey?: string): number;
35
+ recordSuccess(accountIndex: number, quotaKey?: string): void;
36
+ recordRateLimit(accountIndex: number, quotaKey?: string): void;
37
+ recordFailure(accountIndex: number, quotaKey?: string): void;
38
+ reset(accountIndex: number, quotaKey?: string): void;
39
+ clear(): void;
40
+ }
41
+ export interface TokenBucketConfig {
42
+ /** Maximum tokens in bucket */
43
+ maxTokens: number;
44
+ /** Tokens regenerated per minute */
45
+ tokensPerMinute: number;
46
+ }
47
+ export declare const DEFAULT_TOKEN_BUCKET_CONFIG: TokenBucketConfig;
48
+ /**
49
+ * Client-side token bucket for rate limiting requests per account.
50
+ * Prevents sending requests to accounts that are likely to be rate-limited.
51
+ */
52
+ export declare class TokenBucketTracker {
53
+ private buckets;
54
+ private config;
55
+ constructor(config?: Partial<TokenBucketConfig>);
56
+ private getKey;
57
+ private refillTokens;
58
+ getTokens(accountIndex: number, quotaKey?: string): number;
59
+ /**
60
+ * Attempt to consume a token. Returns true if successful, false if bucket is empty.
61
+ */
62
+ tryConsume(accountIndex: number, quotaKey?: string): boolean;
63
+ /**
64
+ * Attempt to refund a token consumed within the refund window.
65
+ * Use this when a request fails due to network errors (not rate limits).
66
+ * @returns true if refund was successful, false if no valid consumption found
67
+ */
68
+ refundToken(accountIndex: number, quotaKey?: string): boolean;
69
+ /**
70
+ * Drain tokens on rate limit to prevent immediate retries.
71
+ */
72
+ drain(accountIndex: number, quotaKey?: string, drainAmount?: number): void;
73
+ reset(accountIndex: number, quotaKey?: string): void;
74
+ clear(): void;
75
+ }
76
+ export interface AccountWithMetrics {
77
+ index: number;
78
+ isAvailable: boolean;
79
+ lastUsed: number;
80
+ }
81
+ export interface HybridSelectionConfig {
82
+ /** Weight for health score (default: 2) */
83
+ healthWeight: number;
84
+ /** Weight for token count (default: 5) */
85
+ tokenWeight: number;
86
+ /** Weight for freshness/last used (default: 0.1) */
87
+ freshnessWeight: number;
88
+ }
89
+ export declare const DEFAULT_HYBRID_SELECTION_CONFIG: HybridSelectionConfig;
90
+ /**
91
+ * Selects the best account using a hybrid scoring strategy.
92
+ *
93
+ * Score = (health * healthWeight) + (tokens * tokenWeight) + (freshness * freshnessWeight)
94
+ *
95
+ * Where:
96
+ * - health: Account health score (0-100)
97
+ * - tokens: Available tokens in bucket (0-maxTokens)
98
+ * - freshness: Hours since last used (higher = more fresh for rotation)
99
+ */
100
+ export interface HybridSelectionOptions {
101
+ pidOffsetEnabled?: boolean;
102
+ }
103
+ export declare function selectHybridAccount(accounts: AccountWithMetrics[], healthTracker: HealthScoreTracker, tokenTracker: TokenBucketTracker, quotaKey?: string, config?: Partial<HybridSelectionConfig>, options?: HybridSelectionOptions): AccountWithMetrics | null;
104
+ /**
105
+ * Adds random jitter to a delay value.
106
+ * @param baseMs - Base delay in milliseconds
107
+ * @param jitterFactor - Jitter factor (0-1), default 0.1 (10%)
108
+ * @returns Delay with jitter applied
109
+ */
110
+ export declare function addJitter(baseMs: number, jitterFactor?: number): number;
111
+ /**
112
+ * Returns a random delay within a range.
113
+ * @param minMs - Minimum delay in milliseconds
114
+ * @param maxMs - Maximum delay in milliseconds
115
+ * @returns Random delay within range
116
+ */
117
+ export declare function randomDelay(minMs: number, maxMs: number): number;
118
+ /**
119
+ * Calculates exponential backoff with jitter.
120
+ * @param attempt - Attempt number (1-based)
121
+ * @param baseMs - Base delay in milliseconds
122
+ * @param maxMs - Maximum delay in milliseconds
123
+ * @param jitterFactor - Jitter factor (0-1)
124
+ * @returns Backoff delay with jitter
125
+ */
126
+ export declare function exponentialBackoff(attempt: number, baseMs?: number, maxMs?: number, jitterFactor?: number): number;
127
+ export declare function getHealthTracker(config?: Partial<HealthScoreConfig>): HealthScoreTracker;
128
+ export declare function getTokenTracker(config?: Partial<TokenBucketConfig>): TokenBucketTracker;
129
+ export declare function resetTrackers(): void;
130
+ //# sourceMappingURL=rotation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../lib/rotation.ts"],"names":[],"mappings":"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"}