@iam-brain/opencode-codex-auth 0.1.3

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 (165) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/bin/opencode-codex-auth.d.ts +3 -0
  4. package/dist/bin/opencode-codex-auth.d.ts.map +1 -0
  5. package/dist/bin/opencode-codex-auth.js +13 -0
  6. package/dist/bin/opencode-codex-auth.js.map +1 -0
  7. package/dist/bin/opencode-openai-multi.d.ts +3 -0
  8. package/dist/bin/opencode-openai-multi.d.ts.map +1 -0
  9. package/dist/bin/opencode-openai-multi.js +13 -0
  10. package/dist/bin/opencode-openai-multi.js.map +1 -0
  11. package/dist/index.d.ts +4 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +137 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/lib/accounts-tools.d.ts +14 -0
  16. package/dist/lib/accounts-tools.d.ts.map +1 -0
  17. package/dist/lib/accounts-tools.js +100 -0
  18. package/dist/lib/accounts-tools.js.map +1 -0
  19. package/dist/lib/claims.d.ts +20 -0
  20. package/dist/lib/claims.d.ts.map +1 -0
  21. package/dist/lib/claims.js +37 -0
  22. package/dist/lib/claims.js.map +1 -0
  23. package/dist/lib/codex-native.d.ts +74 -0
  24. package/dist/lib/codex-native.d.ts.map +1 -0
  25. package/dist/lib/codex-native.js +2404 -0
  26. package/dist/lib/codex-native.js.map +1 -0
  27. package/dist/lib/codex-quota-fetch.d.ts +11 -0
  28. package/dist/lib/codex-quota-fetch.d.ts.map +1 -0
  29. package/dist/lib/codex-quota-fetch.js +149 -0
  30. package/dist/lib/codex-quota-fetch.js.map +1 -0
  31. package/dist/lib/codex-status-storage.d.ts +5 -0
  32. package/dist/lib/codex-status-storage.d.ts.map +1 -0
  33. package/dist/lib/codex-status-storage.js +58 -0
  34. package/dist/lib/codex-status-storage.js.map +1 -0
  35. package/dist/lib/codex-status-tool.d.ts +6 -0
  36. package/dist/lib/codex-status-tool.d.ts.map +1 -0
  37. package/dist/lib/codex-status-tool.js +37 -0
  38. package/dist/lib/codex-status-tool.js.map +1 -0
  39. package/dist/lib/codex-status-ui.d.ts +7 -0
  40. package/dist/lib/codex-status-ui.d.ts.map +1 -0
  41. package/dist/lib/codex-status-ui.js +109 -0
  42. package/dist/lib/codex-status-ui.js.map +1 -0
  43. package/dist/lib/codex-status.d.ts +14 -0
  44. package/dist/lib/codex-status.d.ts.map +1 -0
  45. package/dist/lib/codex-status.js +31 -0
  46. package/dist/lib/codex-status.js.map +1 -0
  47. package/dist/lib/compat-sanitizer.d.ts +7 -0
  48. package/dist/lib/compat-sanitizer.d.ts.map +1 -0
  49. package/dist/lib/compat-sanitizer.js +101 -0
  50. package/dist/lib/compat-sanitizer.js.map +1 -0
  51. package/dist/lib/config.d.ts +94 -0
  52. package/dist/lib/config.d.ts.map +1 -0
  53. package/dist/lib/config.js +495 -0
  54. package/dist/lib/config.js.map +1 -0
  55. package/dist/lib/constants.d.ts +2 -0
  56. package/dist/lib/constants.d.ts.map +1 -0
  57. package/dist/lib/constants.js +2 -0
  58. package/dist/lib/constants.js.map +1 -0
  59. package/dist/lib/fatal-errors.d.ts +17 -0
  60. package/dist/lib/fatal-errors.d.ts.map +1 -0
  61. package/dist/lib/fatal-errors.js +42 -0
  62. package/dist/lib/fatal-errors.js.map +1 -0
  63. package/dist/lib/fetch-orchestrator.d.ts +56 -0
  64. package/dist/lib/fetch-orchestrator.d.ts.map +1 -0
  65. package/dist/lib/fetch-orchestrator.js +240 -0
  66. package/dist/lib/fetch-orchestrator.js.map +1 -0
  67. package/dist/lib/identity.d.ts +10 -0
  68. package/dist/lib/identity.d.ts.map +1 -0
  69. package/dist/lib/identity.js +31 -0
  70. package/dist/lib/identity.js.map +1 -0
  71. package/dist/lib/installer-cli.d.ts +7 -0
  72. package/dist/lib/installer-cli.d.ts.map +1 -0
  73. package/dist/lib/installer-cli.js +115 -0
  74. package/dist/lib/installer-cli.js.map +1 -0
  75. package/dist/lib/logger.d.ts +11 -0
  76. package/dist/lib/logger.d.ts.map +1 -0
  77. package/dist/lib/logger.js +25 -0
  78. package/dist/lib/logger.js.map +1 -0
  79. package/dist/lib/model-catalog.d.ts +66 -0
  80. package/dist/lib/model-catalog.d.ts.map +1 -0
  81. package/dist/lib/model-catalog.js +532 -0
  82. package/dist/lib/model-catalog.js.map +1 -0
  83. package/dist/lib/oauth-pages.d.ts +2 -0
  84. package/dist/lib/oauth-pages.d.ts.map +1 -0
  85. package/dist/lib/oauth-pages.js +199 -0
  86. package/dist/lib/oauth-pages.js.map +1 -0
  87. package/dist/lib/opencode-install.d.ts +15 -0
  88. package/dist/lib/opencode-install.d.ts.map +1 -0
  89. package/dist/lib/opencode-install.js +53 -0
  90. package/dist/lib/opencode-install.js.map +1 -0
  91. package/dist/lib/orchestrator-agents.d.ts +29 -0
  92. package/dist/lib/orchestrator-agents.d.ts.map +1 -0
  93. package/dist/lib/orchestrator-agents.js +212 -0
  94. package/dist/lib/orchestrator-agents.js.map +1 -0
  95. package/dist/lib/paths.d.ts +7 -0
  96. package/dist/lib/paths.d.ts.map +1 -0
  97. package/dist/lib/paths.js +18 -0
  98. package/dist/lib/paths.js.map +1 -0
  99. package/dist/lib/personalities.d.ts +5 -0
  100. package/dist/lib/personalities.d.ts.map +1 -0
  101. package/dist/lib/personalities.js +69 -0
  102. package/dist/lib/personalities.js.map +1 -0
  103. package/dist/lib/proactive-refresh.d.ts +11 -0
  104. package/dist/lib/proactive-refresh.d.ts.map +1 -0
  105. package/dist/lib/proactive-refresh.js +110 -0
  106. package/dist/lib/proactive-refresh.js.map +1 -0
  107. package/dist/lib/quarantine.d.ts +9 -0
  108. package/dist/lib/quarantine.d.ts.map +1 -0
  109. package/dist/lib/quarantine.js +39 -0
  110. package/dist/lib/quarantine.js.map +1 -0
  111. package/dist/lib/rate-limit.d.ts +9 -0
  112. package/dist/lib/rate-limit.d.ts.map +1 -0
  113. package/dist/lib/rate-limit.js +32 -0
  114. package/dist/lib/rate-limit.js.map +1 -0
  115. package/dist/lib/refresh-queue.d.ts +30 -0
  116. package/dist/lib/refresh-queue.d.ts.map +1 -0
  117. package/dist/lib/refresh-queue.js +67 -0
  118. package/dist/lib/refresh-queue.js.map +1 -0
  119. package/dist/lib/request-snapshots.d.ts +14 -0
  120. package/dist/lib/request-snapshots.d.ts.map +1 -0
  121. package/dist/lib/request-snapshots.js +148 -0
  122. package/dist/lib/request-snapshots.js.map +1 -0
  123. package/dist/lib/rotation.d.ts +29 -0
  124. package/dist/lib/rotation.d.ts.map +1 -0
  125. package/dist/lib/rotation.js +252 -0
  126. package/dist/lib/rotation.js.map +1 -0
  127. package/dist/lib/storage.d.ts +27 -0
  128. package/dist/lib/storage.d.ts.map +1 -0
  129. package/dist/lib/storage.js +610 -0
  130. package/dist/lib/storage.js.map +1 -0
  131. package/dist/lib/toast.d.ts +2 -0
  132. package/dist/lib/toast.d.ts.map +1 -0
  133. package/dist/lib/toast.js +47 -0
  134. package/dist/lib/toast.js.map +1 -0
  135. package/dist/lib/tools-output.d.ts +6 -0
  136. package/dist/lib/tools-output.d.ts.map +1 -0
  137. package/dist/lib/tools-output.js +6 -0
  138. package/dist/lib/tools-output.js.map +1 -0
  139. package/dist/lib/types.d.ts +62 -0
  140. package/dist/lib/types.d.ts.map +1 -0
  141. package/dist/lib/types.js +2 -0
  142. package/dist/lib/types.js.map +1 -0
  143. package/dist/lib/ui/auth-menu-runner.d.ts +19 -0
  144. package/dist/lib/ui/auth-menu-runner.d.ts.map +1 -0
  145. package/dist/lib/ui/auth-menu-runner.js +79 -0
  146. package/dist/lib/ui/auth-menu-runner.js.map +1 -0
  147. package/dist/lib/ui/auth-menu.d.ts +80 -0
  148. package/dist/lib/ui/auth-menu.d.ts.map +1 -0
  149. package/dist/lib/ui/auth-menu.js +321 -0
  150. package/dist/lib/ui/auth-menu.js.map +1 -0
  151. package/dist/lib/ui/tty/ansi.d.ts +18 -0
  152. package/dist/lib/ui/tty/ansi.d.ts.map +1 -0
  153. package/dist/lib/ui/tty/ansi.js +37 -0
  154. package/dist/lib/ui/tty/ansi.js.map +1 -0
  155. package/dist/lib/ui/tty/confirm.d.ts +7 -0
  156. package/dist/lib/ui/tty/confirm.d.ts.map +1 -0
  157. package/dist/lib/ui/tty/confirm.js +20 -0
  158. package/dist/lib/ui/tty/confirm.js.map +1 -0
  159. package/dist/lib/ui/tty/select.d.ts +17 -0
  160. package/dist/lib/ui/tty/select.d.ts.map +1 -0
  161. package/dist/lib/ui/tty/select.js +223 -0
  162. package/dist/lib/ui/tty/select.js.map +1 -0
  163. package/package.json +68 -0
  164. package/schemas/codex-config.schema.json +146 -0
  165. package/schemas/opencode.schema.json +23 -0
@@ -0,0 +1,495 @@
1
+ import fs from "node:fs";
2
+ import fsPromises from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ const CONFIG_FILE = "codex-config.json";
6
+ export const DEFAULT_CODEX_CONFIG = {
7
+ debug: false,
8
+ quiet: false,
9
+ refreshAhead: {
10
+ enabled: true,
11
+ bufferMs: 60_000
12
+ },
13
+ runtime: {
14
+ mode: "native",
15
+ sanitizeInputs: false,
16
+ headerSnapshots: false,
17
+ pidOffset: false
18
+ },
19
+ global: {
20
+ personality: "friendly",
21
+ thinkingSummaries: true
22
+ },
23
+ perModel: {
24
+ "gpt-5.3-codex": {
25
+ personality: "pragmatic",
26
+ thinkingSummaries: false,
27
+ variants: {
28
+ high: {
29
+ personality: "focused",
30
+ thinkingSummaries: true
31
+ }
32
+ }
33
+ }
34
+ }
35
+ };
36
+ function isRecord(value) {
37
+ return typeof value === "object" && value !== null && !Array.isArray(value);
38
+ }
39
+ function parseEnvBoolean(value) {
40
+ if (value === undefined)
41
+ return undefined;
42
+ if (value === "1" || value === "true")
43
+ return true;
44
+ if (value === "0" || value === "false")
45
+ return false;
46
+ return undefined;
47
+ }
48
+ function parseEnvNumber(value) {
49
+ if (value === undefined)
50
+ return undefined;
51
+ const n = Number(value);
52
+ return Number.isFinite(n) ? n : undefined;
53
+ }
54
+ export function normalizePersonalityOption(value) {
55
+ if (typeof value !== "string")
56
+ return undefined;
57
+ const normalized = value.trim().toLowerCase();
58
+ if (!normalized)
59
+ return undefined;
60
+ if (normalized.includes("/") || normalized.includes("\\") || normalized.includes("..")) {
61
+ return undefined;
62
+ }
63
+ return normalized;
64
+ }
65
+ function parseSpoofMode(value) {
66
+ if (typeof value !== "string")
67
+ return undefined;
68
+ const normalized = value.trim().toLowerCase();
69
+ if (normalized === "native")
70
+ return "native";
71
+ if (normalized === "codex")
72
+ return "codex";
73
+ return undefined;
74
+ }
75
+ function parseRuntimeMode(value) {
76
+ if (typeof value !== "string")
77
+ return undefined;
78
+ const normalized = value.trim().toLowerCase();
79
+ if (normalized === "native")
80
+ return "native";
81
+ if (normalized === "codex")
82
+ return "codex";
83
+ if (normalized === "collab")
84
+ return "collab";
85
+ return undefined;
86
+ }
87
+ function normalizeCustomSettings(raw) {
88
+ if (!isRecord(raw))
89
+ return undefined;
90
+ const out = {};
91
+ if (typeof raw.thinkingSummaries === "boolean") {
92
+ out.thinkingSummaries = raw.thinkingSummaries;
93
+ }
94
+ const rawOptions = isRecord(raw.options) ? raw.options : undefined;
95
+ const globalPersonality = normalizePersonalityOption(rawOptions?.personality);
96
+ if (globalPersonality) {
97
+ out.options = { personality: globalPersonality };
98
+ }
99
+ const rawModels = isRecord(raw.models) ? raw.models : undefined;
100
+ if (rawModels) {
101
+ const models = {};
102
+ for (const [modelName, value] of Object.entries(rawModels)) {
103
+ const normalized = normalizeModelConfigOverride(value);
104
+ if (!normalized)
105
+ continue;
106
+ models[modelName] = normalized;
107
+ }
108
+ if (Object.keys(models).length > 0) {
109
+ out.models = models;
110
+ }
111
+ }
112
+ if (out.thinkingSummaries === undefined && !out.options && !out.models) {
113
+ return undefined;
114
+ }
115
+ return out;
116
+ }
117
+ function normalizeModelBehaviorSettings(raw) {
118
+ if (!isRecord(raw))
119
+ return undefined;
120
+ const out = {};
121
+ const options = isRecord(raw.options) ? raw.options : undefined;
122
+ const personality = normalizePersonalityOption(raw.personality) ?? normalizePersonalityOption(options?.personality);
123
+ if (personality)
124
+ out.personality = personality;
125
+ if (typeof raw.thinkingSummaries === "boolean") {
126
+ out.thinkingSummaries = raw.thinkingSummaries;
127
+ }
128
+ if (!out.personality && out.thinkingSummaries === undefined) {
129
+ return undefined;
130
+ }
131
+ return out;
132
+ }
133
+ function normalizeModelConfigOverride(raw) {
134
+ if (!isRecord(raw))
135
+ return undefined;
136
+ const modelBehavior = normalizeModelBehaviorSettings(raw);
137
+ const rawVariants = isRecord(raw.variants) ? raw.variants : undefined;
138
+ let variants;
139
+ if (rawVariants) {
140
+ const variantMap = {};
141
+ for (const [variantName, value] of Object.entries(rawVariants)) {
142
+ const normalized = normalizeModelBehaviorSettings(value);
143
+ if (!normalized)
144
+ continue;
145
+ variantMap[variantName] = {
146
+ ...(normalized.personality ? { options: { personality: normalized.personality } } : {}),
147
+ ...(normalized.thinkingSummaries !== undefined
148
+ ? { thinkingSummaries: normalized.thinkingSummaries }
149
+ : {})
150
+ };
151
+ }
152
+ if (Object.keys(variantMap).length > 0) {
153
+ variants = variantMap;
154
+ }
155
+ }
156
+ if (!modelBehavior && !variants) {
157
+ return undefined;
158
+ }
159
+ return {
160
+ ...(modelBehavior?.personality ? { options: { personality: modelBehavior.personality } } : {}),
161
+ ...(modelBehavior?.thinkingSummaries !== undefined
162
+ ? { thinkingSummaries: modelBehavior.thinkingSummaries }
163
+ : {}),
164
+ ...(variants ? { variants } : {})
165
+ };
166
+ }
167
+ function normalizeNewBehaviorSections(raw) {
168
+ const global = normalizeModelBehaviorSettings(raw.global);
169
+ const perModelRaw = isRecord(raw.perModel) ? raw.perModel : undefined;
170
+ let models;
171
+ if (perModelRaw) {
172
+ const modelMap = {};
173
+ for (const [modelName, value] of Object.entries(perModelRaw)) {
174
+ const normalized = normalizeModelConfigOverride(value);
175
+ if (!normalized)
176
+ continue;
177
+ modelMap[modelName] = normalized;
178
+ }
179
+ if (Object.keys(modelMap).length > 0) {
180
+ models = modelMap;
181
+ }
182
+ }
183
+ if (!global && !models) {
184
+ return undefined;
185
+ }
186
+ return {
187
+ ...(global?.personality ? { options: { personality: global.personality } } : {}),
188
+ ...(global?.thinkingSummaries !== undefined
189
+ ? { thinkingSummaries: global.thinkingSummaries }
190
+ : {}),
191
+ ...(models ? { models } : {})
192
+ };
193
+ }
194
+ function mergeCustomSettings(primary, secondary) {
195
+ if (!primary && !secondary)
196
+ return undefined;
197
+ if (!primary)
198
+ return secondary;
199
+ if (!secondary)
200
+ return primary;
201
+ const modelKeys = new Set([
202
+ ...Object.keys(primary.models ?? {}),
203
+ ...Object.keys(secondary.models ?? {})
204
+ ]);
205
+ let models;
206
+ if (modelKeys.size > 0) {
207
+ const merged = {};
208
+ for (const key of modelKeys) {
209
+ const a = primary.models?.[key];
210
+ const b = secondary.models?.[key];
211
+ const personality = b?.options?.personality !== undefined
212
+ ? b.options.personality
213
+ : a?.options?.personality;
214
+ const thinkingSummaries = b?.thinkingSummaries !== undefined ? b.thinkingSummaries : a?.thinkingSummaries;
215
+ const variantKeys = new Set([
216
+ ...Object.keys(a?.variants ?? {}),
217
+ ...Object.keys(b?.variants ?? {})
218
+ ]);
219
+ let variants;
220
+ if (variantKeys.size > 0) {
221
+ const variantMap = {};
222
+ for (const variantKey of variantKeys) {
223
+ const base = a?.variants?.[variantKey];
224
+ const override = b?.variants?.[variantKey];
225
+ const variantPersonality = override?.options?.personality !== undefined
226
+ ? override.options.personality
227
+ : base?.options?.personality;
228
+ const variantThinkingSummaries = override?.thinkingSummaries !== undefined
229
+ ? override.thinkingSummaries
230
+ : base?.thinkingSummaries;
231
+ if (variantPersonality === undefined && variantThinkingSummaries === undefined)
232
+ continue;
233
+ variantMap[variantKey] = {
234
+ ...(variantPersonality ? { options: { personality: variantPersonality } } : {}),
235
+ ...(variantThinkingSummaries !== undefined
236
+ ? { thinkingSummaries: variantThinkingSummaries }
237
+ : {})
238
+ };
239
+ }
240
+ if (Object.keys(variantMap).length > 0) {
241
+ variants = variantMap;
242
+ }
243
+ }
244
+ if (personality === undefined && thinkingSummaries === undefined && !variants)
245
+ continue;
246
+ merged[key] = {
247
+ ...(personality ? { options: { personality } } : {}),
248
+ ...(thinkingSummaries !== undefined ? { thinkingSummaries } : {}),
249
+ ...(variants ? { variants } : {})
250
+ };
251
+ }
252
+ if (Object.keys(merged).length > 0) {
253
+ models = merged;
254
+ }
255
+ }
256
+ const mergedPersonality = secondary.options?.personality !== undefined
257
+ ? secondary.options.personality
258
+ : primary.options?.personality;
259
+ return {
260
+ thinkingSummaries: secondary.thinkingSummaries !== undefined
261
+ ? secondary.thinkingSummaries
262
+ : primary.thinkingSummaries,
263
+ ...(mergedPersonality ? { options: { personality: mergedPersonality } } : {}),
264
+ ...(models ? { models } : {})
265
+ };
266
+ }
267
+ function cloneCustomSettings(input) {
268
+ if (!input)
269
+ return undefined;
270
+ return {
271
+ thinkingSummaries: input.thinkingSummaries,
272
+ options: input.options ? { ...input.options } : undefined,
273
+ models: input.models
274
+ ? Object.fromEntries(Object.entries(input.models).map(([key, value]) => [
275
+ key,
276
+ {
277
+ ...(value.options ? { options: { ...value.options } } : {}),
278
+ ...(value.thinkingSummaries !== undefined
279
+ ? { thinkingSummaries: value.thinkingSummaries }
280
+ : {}),
281
+ ...(value.variants
282
+ ? {
283
+ variants: Object.fromEntries(Object.entries(value.variants).map(([variantKey, variantValue]) => [
284
+ variantKey,
285
+ {
286
+ ...(variantValue.options ? { options: { ...variantValue.options } } : {}),
287
+ ...(variantValue.thinkingSummaries !== undefined
288
+ ? { thinkingSummaries: variantValue.thinkingSummaries }
289
+ : {})
290
+ }
291
+ ]))
292
+ }
293
+ : {})
294
+ }
295
+ ]))
296
+ : undefined
297
+ };
298
+ }
299
+ function parseConfigFileObject(raw) {
300
+ if (!isRecord(raw))
301
+ return {};
302
+ const explicitCustomSettings = normalizeCustomSettings(raw.customSettings);
303
+ const newCustomSettings = normalizeNewBehaviorSections(raw);
304
+ const customSettings = mergeCustomSettings(explicitCustomSettings, newCustomSettings);
305
+ const personalityFromTopLevel = normalizePersonalityOption(raw.personality);
306
+ const personalityFromCustom = customSettings?.options?.personality;
307
+ const debug = typeof raw.debug === "boolean" ? raw.debug : undefined;
308
+ const proactiveRefresh = isRecord(raw.refreshAhead) && typeof raw.refreshAhead.enabled === "boolean"
309
+ ? raw.refreshAhead.enabled
310
+ : undefined;
311
+ const proactiveRefreshBufferMs = isRecord(raw.refreshAhead) && typeof raw.refreshAhead.bufferMs === "number"
312
+ ? raw.refreshAhead.bufferMs
313
+ : undefined;
314
+ const quietMode = typeof raw.quiet === "boolean" ? raw.quiet : undefined;
315
+ const mode = parseRuntimeMode(isRecord(raw.runtime) ? raw.runtime.mode : undefined);
316
+ const spoofMode = mode === "native" ? "native" : mode === "codex" || mode === "collab" ? "codex" : undefined;
317
+ const compatInputSanitizer = isRecord(raw.runtime) && typeof raw.runtime.sanitizeInputs === "boolean"
318
+ ? raw.runtime.sanitizeInputs
319
+ : undefined;
320
+ const headerSnapshots = isRecord(raw.runtime) && typeof raw.runtime.headerSnapshots === "boolean"
321
+ ? raw.runtime.headerSnapshots
322
+ : undefined;
323
+ const pidOffsetEnabled = isRecord(raw.runtime) && typeof raw.runtime.pidOffset === "boolean"
324
+ ? raw.runtime.pidOffset
325
+ : undefined;
326
+ return {
327
+ debug,
328
+ proactiveRefresh,
329
+ proactiveRefreshBufferMs,
330
+ quietMode,
331
+ pidOffsetEnabled,
332
+ personality: personalityFromTopLevel ?? personalityFromCustom,
333
+ mode,
334
+ spoofMode,
335
+ compatInputSanitizer,
336
+ headerSnapshots,
337
+ customSettings
338
+ };
339
+ }
340
+ export function resolveDefaultConfigPath(env) {
341
+ const xdgRoot = env.XDG_CONFIG_HOME?.trim();
342
+ if (xdgRoot) {
343
+ return path.join(xdgRoot, "opencode", CONFIG_FILE);
344
+ }
345
+ return path.join(os.homedir(), ".config", "opencode", CONFIG_FILE);
346
+ }
347
+ export async function ensureDefaultConfigFile(input = {}) {
348
+ const env = input.env ?? process.env;
349
+ const filePath = input.filePath ?? resolveDefaultConfigPath(env);
350
+ const overwrite = input.overwrite === true;
351
+ if (!overwrite && fs.existsSync(filePath)) {
352
+ return { filePath, created: false };
353
+ }
354
+ await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
355
+ const content = `${JSON.stringify(DEFAULT_CODEX_CONFIG, null, 2)}\n`;
356
+ await fsPromises.writeFile(filePath, content, { encoding: "utf8", mode: 0o600 });
357
+ return { filePath, created: true };
358
+ }
359
+ export function loadConfigFile(input = {}) {
360
+ const env = input.env ?? process.env;
361
+ const explicitPath = input.filePath ?? env.OPENCODE_OPENAI_MULTI_CONFIG_PATH?.trim();
362
+ const candidates = explicitPath ? [explicitPath] : [resolveDefaultConfigPath(env)];
363
+ for (const filePath of candidates) {
364
+ if (!filePath)
365
+ continue;
366
+ if (!fs.existsSync(filePath))
367
+ continue;
368
+ try {
369
+ const raw = fs.readFileSync(filePath, "utf8");
370
+ const parsed = JSON.parse(raw);
371
+ return parseConfigFileObject(parsed);
372
+ }
373
+ catch {
374
+ return {};
375
+ }
376
+ }
377
+ return {};
378
+ }
379
+ export function resolveConfig(input) {
380
+ const env = input.env;
381
+ const file = input.file ?? {};
382
+ const fileCustom = normalizeCustomSettings(file.customSettings);
383
+ const envDebug = env.OPENCODE_OPENAI_MULTI_DEBUG === "1" ||
384
+ env.DEBUG_CODEX_PLUGIN === "1";
385
+ const proactiveRefresh = parseEnvBoolean(env.OPENCODE_OPENAI_MULTI_PROACTIVE_REFRESH) ?? file.proactiveRefresh;
386
+ const proactiveRefreshBufferMs = parseEnvNumber(env.OPENCODE_OPENAI_MULTI_PROACTIVE_REFRESH_BUFFER_MS) ??
387
+ file.proactiveRefreshBufferMs;
388
+ const quietMode = parseEnvBoolean(env.OPENCODE_OPENAI_MULTI_QUIET) ?? file.quietMode;
389
+ const pidOffsetEnabled = parseEnvBoolean(env.OPENCODE_OPENAI_MULTI_PID_OFFSET) ?? file.pidOffsetEnabled;
390
+ const envPersonality = normalizePersonalityOption(env.OPENCODE_OPENAI_MULTI_PERSONALITY);
391
+ const envThinkingSummaries = parseEnvBoolean(env.OPENCODE_OPENAI_MULTI_THINKING_SUMMARIES);
392
+ const spoofModeFromEnv = parseSpoofMode(env.OPENCODE_OPENAI_MULTI_SPOOF_MODE);
393
+ const modeFromEnv = parseRuntimeMode(env.OPENCODE_OPENAI_MULTI_MODE);
394
+ const modeFromSpoofEnv = modeFromEnv === undefined && spoofModeFromEnv !== undefined
395
+ ? spoofModeFromEnv === "codex"
396
+ ? "codex"
397
+ : "native"
398
+ : undefined;
399
+ const mode = modeFromEnv ??
400
+ modeFromSpoofEnv ??
401
+ file.mode ??
402
+ (spoofModeFromEnv === "codex" || file.spoofMode === "codex" ? "codex" : "native");
403
+ const customSettings = cloneCustomSettings(fileCustom);
404
+ if (envPersonality) {
405
+ if (!customSettings) {
406
+ // Keep behavior deterministic by ensuring one source of truth for runtime resolution.
407
+ input.file = { ...file, customSettings: { options: { personality: envPersonality } } };
408
+ }
409
+ else {
410
+ customSettings.options = { ...(customSettings.options ?? {}), personality: envPersonality };
411
+ }
412
+ }
413
+ if (envThinkingSummaries !== undefined) {
414
+ if (!customSettings) {
415
+ input.file = {
416
+ ...file,
417
+ customSettings: { ...(input.file?.customSettings ?? {}), thinkingSummaries: envThinkingSummaries }
418
+ };
419
+ }
420
+ else {
421
+ customSettings.thinkingSummaries = envThinkingSummaries;
422
+ }
423
+ }
424
+ const resolvedCustomSettings = customSettings ??
425
+ cloneCustomSettings(normalizeCustomSettings(input.file?.customSettings)) ??
426
+ (envPersonality || envThinkingSummaries !== undefined
427
+ ? {
428
+ ...(envPersonality ? { options: { personality: envPersonality } } : {}),
429
+ ...(envThinkingSummaries !== undefined ? { thinkingSummaries: envThinkingSummaries } : {})
430
+ }
431
+ : undefined);
432
+ const personality = envPersonality ??
433
+ file.personality ??
434
+ resolvedCustomSettings?.options?.personality;
435
+ const spoofMode = spoofModeFromEnv ??
436
+ file.spoofMode ??
437
+ (mode === "native" ? "native" : "codex");
438
+ const compatInputSanitizer = parseEnvBoolean(env.OPENCODE_OPENAI_MULTI_COMPAT_INPUT_SANITIZER) ?? file.compatInputSanitizer;
439
+ const headerSnapshots = parseEnvBoolean(env.OPENCODE_OPENAI_MULTI_HEADER_SNAPSHOTS) ?? file.headerSnapshots;
440
+ return {
441
+ ...file,
442
+ debug: envDebug || file.debug === true,
443
+ proactiveRefresh,
444
+ proactiveRefreshBufferMs,
445
+ quietMode,
446
+ pidOffsetEnabled,
447
+ personality,
448
+ mode,
449
+ spoofMode,
450
+ compatInputSanitizer,
451
+ headerSnapshots,
452
+ customSettings: resolvedCustomSettings
453
+ };
454
+ }
455
+ export function getDebugEnabled(cfg) {
456
+ return cfg.debug === true;
457
+ }
458
+ export function getQuietMode(cfg) {
459
+ return cfg.quietMode === true;
460
+ }
461
+ export function getPidOffsetEnabled(cfg) {
462
+ return cfg.pidOffsetEnabled === true;
463
+ }
464
+ export function getProactiveRefreshEnabled(cfg) {
465
+ return cfg.proactiveRefresh === true;
466
+ }
467
+ export function getProactiveRefreshBufferMs(cfg) {
468
+ return typeof cfg.proactiveRefreshBufferMs === "number" && Number.isFinite(cfg.proactiveRefreshBufferMs)
469
+ ? Math.max(0, Math.floor(cfg.proactiveRefreshBufferMs))
470
+ : 60_000;
471
+ }
472
+ export function getPersonality(cfg) {
473
+ return cfg.personality;
474
+ }
475
+ export function getSpoofMode(cfg) {
476
+ return cfg.spoofMode === "codex" ? "codex" : "native";
477
+ }
478
+ export function getMode(cfg) {
479
+ if (cfg.mode === "native" || cfg.mode === "codex" || cfg.mode === "collab")
480
+ return cfg.mode;
481
+ return getSpoofMode(cfg) === "codex" ? "codex" : "native";
482
+ }
483
+ export function getCompatInputSanitizerEnabled(cfg) {
484
+ return cfg.compatInputSanitizer === true;
485
+ }
486
+ export function getHeaderSnapshotsEnabled(cfg) {
487
+ return cfg.headerSnapshots === true;
488
+ }
489
+ export function getCustomSettings(cfg) {
490
+ return cfg.customSettings;
491
+ }
492
+ export function getThinkingSummariesOverride(cfg) {
493
+ return cfg.customSettings?.thinkingSummaries;
494
+ }
495
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const PROVIDER_ID = "openai";
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,WAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export const PROVIDER_ID = "openai";
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAA"}
@@ -0,0 +1,17 @@
1
+ export type PluginFatalErrorInput = {
2
+ message: string;
3
+ status?: number;
4
+ type?: string;
5
+ param?: string;
6
+ };
7
+ export declare class PluginFatalError extends Error {
8
+ readonly status: number;
9
+ readonly type: string;
10
+ readonly param?: string;
11
+ constructor(input: PluginFatalErrorInput);
12
+ }
13
+ export declare function isPluginFatalError(value: unknown): value is PluginFatalError;
14
+ export declare function createSyntheticErrorResponse(message: string, status?: number, type?: string, param?: string): Response;
15
+ export declare function toSyntheticErrorResponse(error: PluginFatalError): Response;
16
+ export declare function formatWaitTime(ms: number): string;
17
+ //# sourceMappingURL=fatal-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fatal-errors.d.ts","sourceRoot":"","sources":["../../lib/fatal-errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;gBAEX,KAAK,EAAE,qBAAqB;CAOzC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,MAAM,SAAM,EACZ,IAAI,SAAc,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,QAAQ,CAgBV;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,QAAQ,CAE1E;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD"}
@@ -0,0 +1,42 @@
1
+ export class PluginFatalError extends Error {
2
+ status;
3
+ type;
4
+ param;
5
+ constructor(input) {
6
+ super(input.message);
7
+ this.name = "PluginFatalError";
8
+ this.status = input.status ?? 400;
9
+ this.type = input.type ?? "hard_stop";
10
+ this.param = input.param;
11
+ }
12
+ }
13
+ export function isPluginFatalError(value) {
14
+ return value instanceof PluginFatalError;
15
+ }
16
+ export function createSyntheticErrorResponse(message, status = 400, type = "hard_stop", param) {
17
+ const errorPayload = {
18
+ error: {
19
+ message,
20
+ type
21
+ }
22
+ };
23
+ if (param) {
24
+ errorPayload.error.param = param;
25
+ }
26
+ return new Response(JSON.stringify(errorPayload), {
27
+ status,
28
+ headers: { "content-type": "application/json; charset=utf-8" }
29
+ });
30
+ }
31
+ export function toSyntheticErrorResponse(error) {
32
+ return createSyntheticErrorResponse(error.message, error.status, error.type, error.param);
33
+ }
34
+ export function formatWaitTime(ms) {
35
+ const totalSeconds = Math.max(0, Math.floor(ms / 1000));
36
+ const minutes = Math.floor(totalSeconds / 60);
37
+ const seconds = totalSeconds % 60;
38
+ if (minutes > 0)
39
+ return `${minutes}m ${seconds}s`;
40
+ return `${seconds}s`;
41
+ }
42
+ //# sourceMappingURL=fatal-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fatal-errors.js","sourceRoot":"","sources":["../../lib/fatal-errors.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,MAAM,CAAQ;IACd,IAAI,CAAQ;IACZ,KAAK,CAAS;IAEvB,YAAY,KAA4B;QACtC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,WAAW,CAAA;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IAC1B,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,KAAK,YAAY,gBAAgB,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAe,EACf,MAAM,GAAG,GAAG,EACZ,IAAI,GAAG,WAAW,EAClB,KAAc;IAEd,MAAM,YAAY,GAAiE;QACjF,KAAK,EAAE;YACL,OAAO;YACP,IAAI;SACL;KACF,CAAA;IAED,IAAI,KAAK,EAAE,CAAC;QACV,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;IAClC,CAAC;IAED,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;QAChD,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE;KAC/D,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,OAAO,4BAA4B,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;AAC3F,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAA;IACjC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAA;IACjD,OAAO,GAAG,OAAO,GAAG,CAAA;AACtB,CAAC"}
@@ -0,0 +1,56 @@
1
+ export type AuthData = {
2
+ access: string;
3
+ accountId?: string;
4
+ identityKey?: string;
5
+ email?: string;
6
+ plan?: string;
7
+ accountLabel?: string;
8
+ };
9
+ export type FetchOrchestratorAuthContext = {
10
+ sessionKey: string | null;
11
+ };
12
+ export type FetchOrchestratorState = {
13
+ lastSessionKey: string | null;
14
+ seenSessionKeys: Map<string, number>;
15
+ lastAccountKey: string | null;
16
+ rateLimitToastShownAt: Map<string, number>;
17
+ toastShownAt: Map<string, number>;
18
+ };
19
+ export declare function createFetchOrchestratorState(): FetchOrchestratorState;
20
+ export type FetchOrchestratorDeps = {
21
+ acquireAuth: (context?: FetchOrchestratorAuthContext) => Promise<AuthData>;
22
+ setCooldown: (identityKey: string, cooldownUntil: number) => Promise<void>;
23
+ now?: () => number;
24
+ maxAttempts?: number;
25
+ quietMode?: boolean;
26
+ rateLimitToastDebounceMs?: number;
27
+ state?: FetchOrchestratorState;
28
+ showToast?: (message: string, variant: "info" | "success" | "warning" | "error", quietMode: boolean) => Promise<void>;
29
+ onAttemptRequest?: (input: {
30
+ attempt: number;
31
+ maxAttempts: number;
32
+ request: Request;
33
+ auth: AuthData;
34
+ sessionKey: string | null;
35
+ }) => Promise<void> | void;
36
+ onAttemptResponse?: (input: {
37
+ attempt: number;
38
+ maxAttempts: number;
39
+ response: Response;
40
+ auth: AuthData;
41
+ sessionKey: string | null;
42
+ }) => Promise<void> | void;
43
+ };
44
+ export declare class FetchOrchestrator {
45
+ private deps;
46
+ private readonly state;
47
+ constructor(deps: FetchOrchestratorDeps);
48
+ private touchSessionKey;
49
+ private pruneSessionKeys;
50
+ private enforceSessionKeyLimit;
51
+ private shouldShowRateLimitToast;
52
+ private shouldShowToastByKey;
53
+ private maybeShowToast;
54
+ execute(input: string | URL | Request, init?: RequestInit): Promise<Response>;
55
+ }
56
+ //# sourceMappingURL=fetch-orchestrator.d.ts.map