@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,532 @@
1
+ import { createHash } from "node:crypto";
2
+ import fs from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import lockfile from "proper-lockfile";
6
+ import { resolveCustomPersonalityDescription } from "./personalities";
7
+ const CODEX_MODELS_ENDPOINT = "https://chatgpt.com/backend-api/codex/models";
8
+ const DEFAULT_CACHE_DIR = path.join(os.homedir(), ".config", "opencode", "cache");
9
+ const CACHE_TTL_MS = 15 * 60 * 1000;
10
+ const FETCH_TIMEOUT_MS = 5000;
11
+ const EFFORT_SUFFIX_REGEX = /-(none|minimal|low|medium|high|xhigh)$/i;
12
+ const UNRESOLVED_TEMPLATE_MARKER_REGEX = /\{\{\s*[^}]+\s*\}\}/;
13
+ const STALE_BRIDGE_MARKERS = [
14
+ /multi_tool_use\.parallel/i,
15
+ /assistant\s+to=multi_tool_use\.parallel/i,
16
+ /functions\.(read|exec_command|write_stdin|apply_patch|edit|grep|glob|list)\b/i,
17
+ /recipient_name\s*[:=]/i
18
+ ];
19
+ const LOCK_OPTIONS = {
20
+ stale: 10_000,
21
+ retries: {
22
+ retries: 20,
23
+ minTimeout: 10,
24
+ maxTimeout: 100
25
+ },
26
+ realpath: false
27
+ };
28
+ const REASONING_EFFORTS = new Set(["none", "minimal", "low", "medium", "high", "xhigh"]);
29
+ const TEXT_VERBOSITY = new Set(["low", "medium", "high"]);
30
+ const inMemoryCatalog = new Map();
31
+ function normalizeAccountId(accountId) {
32
+ const next = accountId?.trim();
33
+ return next ? next : undefined;
34
+ }
35
+ function hashAccountId(accountId) {
36
+ return createHash("sha256").update(accountId).digest("hex").slice(0, 16);
37
+ }
38
+ function cacheKey(cacheDir, accountId) {
39
+ return `${cacheDir}::${normalizeAccountId(accountId) ?? "shared"}`;
40
+ }
41
+ function cachePath(cacheDir, accountId) {
42
+ const normalized = normalizeAccountId(accountId);
43
+ if (!normalized) {
44
+ return path.join(cacheDir, "codex-auth-models-shared.json");
45
+ }
46
+ return path.join(cacheDir, `codex-auth-models-${hashAccountId(normalized)}.json`);
47
+ }
48
+ function isRecord(value) {
49
+ return typeof value === "object" && value !== null && !Array.isArray(value);
50
+ }
51
+ function normalizeModelSlug(value) {
52
+ if (typeof value !== "string")
53
+ return undefined;
54
+ const normalized = value.trim().toLowerCase();
55
+ return normalized ? normalized : undefined;
56
+ }
57
+ function compareModelSlugs(a, b) {
58
+ return a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" });
59
+ }
60
+ function normalizeReasoningEffort(value) {
61
+ if (typeof value !== "string")
62
+ return undefined;
63
+ const normalized = value.trim().toLowerCase();
64
+ if (REASONING_EFFORTS.has(normalized)) {
65
+ return normalized;
66
+ }
67
+ return undefined;
68
+ }
69
+ function normalizeVerbosity(value) {
70
+ if (typeof value !== "string")
71
+ return undefined;
72
+ const normalized = value.trim().toLowerCase();
73
+ if (TEXT_VERBOSITY.has(normalized)) {
74
+ return normalized;
75
+ }
76
+ return undefined;
77
+ }
78
+ function parseReasoningLevels(value) {
79
+ if (!Array.isArray(value))
80
+ return null;
81
+ const out = [];
82
+ for (const item of value) {
83
+ if (!isRecord(item))
84
+ continue;
85
+ const effort = normalizeReasoningEffort(item.effort);
86
+ if (!effort)
87
+ continue;
88
+ out.push({ effort });
89
+ }
90
+ return out.length > 0 ? out : null;
91
+ }
92
+ function parseCatalogResponse(payload) {
93
+ if (!isRecord(payload))
94
+ return [];
95
+ const root = payload;
96
+ if (!Array.isArray(root.models))
97
+ return [];
98
+ const deduped = new Map();
99
+ for (const item of root.models) {
100
+ if (!isRecord(item))
101
+ continue;
102
+ const slug = normalizeModelSlug(item.slug);
103
+ if (!slug)
104
+ continue;
105
+ deduped.set(slug, {
106
+ slug,
107
+ model_messages: isRecord(item.model_messages)
108
+ ? {
109
+ instructions_template: typeof item.model_messages.instructions_template === "string"
110
+ ? item.model_messages.instructions_template
111
+ : null,
112
+ instructions_variables: isRecord(item.model_messages.instructions_variables)
113
+ ? {
114
+ personality: typeof item.model_messages.instructions_variables.personality === "string"
115
+ ? item.model_messages.instructions_variables.personality
116
+ : null,
117
+ personality_default: typeof item.model_messages.instructions_variables.personality_default === "string"
118
+ ? item.model_messages.instructions_variables.personality_default
119
+ : null,
120
+ personality_friendly: typeof item.model_messages.instructions_variables.personality_friendly === "string"
121
+ ? item.model_messages.instructions_variables.personality_friendly
122
+ : null,
123
+ personality_pragmatic: typeof item.model_messages.instructions_variables.personality_pragmatic === "string"
124
+ ? item.model_messages.instructions_variables.personality_pragmatic
125
+ : null,
126
+ personalities: isRecord(item.model_messages.instructions_variables.personalities)
127
+ ? item.model_messages.instructions_variables.personalities
128
+ : null
129
+ }
130
+ : null
131
+ }
132
+ : null,
133
+ base_instructions: typeof item.base_instructions === "string" ? item.base_instructions : null,
134
+ apply_patch_tool_type: typeof item.apply_patch_tool_type === "string" ? item.apply_patch_tool_type : null,
135
+ supported_reasoning_levels: parseReasoningLevels(item.supported_reasoning_levels),
136
+ default_reasoning_level: typeof item.default_reasoning_level === "string" ? item.default_reasoning_level : null,
137
+ supports_reasoning_summaries: typeof item.supports_reasoning_summaries === "boolean"
138
+ ? item.supports_reasoning_summaries
139
+ : null,
140
+ reasoning_summary_format: typeof item.reasoning_summary_format === "string" ? item.reasoning_summary_format : null,
141
+ support_verbosity: typeof item.support_verbosity === "boolean" ? item.support_verbosity : null,
142
+ default_verbosity: typeof item.default_verbosity === "string" ? item.default_verbosity : null
143
+ });
144
+ }
145
+ return Array.from(deduped.values()).sort((a, b) => compareModelSlugs(a.slug, b.slug));
146
+ }
147
+ function isFresh(cache, now) {
148
+ return now - cache.fetchedAt < CACHE_TTL_MS;
149
+ }
150
+ async function withCacheLock(cacheDir, fn) {
151
+ await fs.mkdir(cacheDir, { recursive: true });
152
+ const release = await lockfile.lock(cacheDir, LOCK_OPTIONS);
153
+ try {
154
+ return await fn();
155
+ }
156
+ finally {
157
+ await release();
158
+ }
159
+ }
160
+ async function readCatalogFromDisk(cacheDir, accountId) {
161
+ return withCacheLock(cacheDir, async () => {
162
+ try {
163
+ const file = cachePath(cacheDir, accountId);
164
+ const raw = await fs.readFile(file, "utf8");
165
+ const parsed = JSON.parse(raw);
166
+ if (!isRecord(parsed))
167
+ return undefined;
168
+ if (typeof parsed.fetchedAt !== "number")
169
+ return undefined;
170
+ const models = parseCatalogResponse({ models: parsed.models });
171
+ return {
172
+ fetchedAt: parsed.fetchedAt,
173
+ models
174
+ };
175
+ }
176
+ catch {
177
+ return undefined;
178
+ }
179
+ });
180
+ }
181
+ async function writeCatalogToDisk(cacheDir, accountId, cache) {
182
+ await withCacheLock(cacheDir, async () => {
183
+ const file = cachePath(cacheDir, accountId);
184
+ await fs.mkdir(path.dirname(file), { recursive: true });
185
+ await fs.writeFile(file, `${JSON.stringify(cache, null, 2)}\n`, { mode: 0o600 });
186
+ await fs.chmod(file, 0o600).catch(() => { });
187
+ }).catch(() => {
188
+ // Best effort cache persistence.
189
+ });
190
+ }
191
+ function emitEvent(input, event) {
192
+ try {
193
+ input.onEvent?.({
194
+ ...event,
195
+ scope: normalizeAccountId(input.accountId) ? "account" : "shared"
196
+ });
197
+ }
198
+ catch {
199
+ // Keep catalog path side-effect free.
200
+ }
201
+ }
202
+ function deriveReason(value) {
203
+ if (value instanceof Error) {
204
+ return value.name || "error";
205
+ }
206
+ return "error";
207
+ }
208
+ export async function getCodexModelCatalog(input) {
209
+ const now = (input.now ?? Date.now)();
210
+ const cacheDir = input.cacheDir ?? DEFAULT_CACHE_DIR;
211
+ const key = cacheKey(cacheDir, input.accountId);
212
+ const memory = inMemoryCatalog.get(key);
213
+ if (memory && !input.forceRefresh && isFresh(memory, now)) {
214
+ emitEvent(input, { type: "memory_cache_hit" });
215
+ return memory.models;
216
+ }
217
+ const disk = await readCatalogFromDisk(cacheDir, input.accountId);
218
+ const hasFreshDisk = !!disk && isFresh(disk, now);
219
+ if (hasFreshDisk && !input.forceRefresh) {
220
+ inMemoryCatalog.set(key, disk);
221
+ emitEvent(input, { type: "disk_cache_hit" });
222
+ return disk.models;
223
+ }
224
+ if (!input.accessToken) {
225
+ if (disk) {
226
+ emitEvent(input, { type: "stale_cache_used", reason: "missing_access_token" });
227
+ inMemoryCatalog.set(key, disk);
228
+ return disk.models;
229
+ }
230
+ emitEvent(input, { type: "catalog_unavailable", reason: "missing_access_token" });
231
+ return undefined;
232
+ }
233
+ const headers = {
234
+ authorization: `Bearer ${input.accessToken}`,
235
+ originator: input.originator?.trim() || "opencode"
236
+ };
237
+ const userAgent = input.userAgent?.trim();
238
+ if (userAgent)
239
+ headers["user-agent"] = userAgent;
240
+ const betaValue = input.openaiBeta?.trim();
241
+ if (betaValue)
242
+ headers["openai-beta"] = betaValue;
243
+ const accountId = normalizeAccountId(input.accountId);
244
+ if (accountId) {
245
+ headers["chatgpt-account-id"] = accountId;
246
+ }
247
+ const fetchImpl = input.fetchImpl ?? fetch;
248
+ try {
249
+ const controller = new AbortController();
250
+ const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
251
+ let response;
252
+ try {
253
+ response = await fetchImpl(CODEX_MODELS_ENDPOINT, {
254
+ method: "GET",
255
+ headers,
256
+ signal: controller.signal
257
+ });
258
+ }
259
+ finally {
260
+ clearTimeout(timeout);
261
+ }
262
+ if (!response.ok) {
263
+ throw new Error(`codex models request failed with status ${response.status}`);
264
+ }
265
+ const payload = (await response.json());
266
+ const models = parseCatalogResponse(payload);
267
+ if (models.length === 0) {
268
+ throw new Error("codex models response did not contain usable models");
269
+ }
270
+ const nextCache = {
271
+ fetchedAt: now,
272
+ models
273
+ };
274
+ inMemoryCatalog.set(key, nextCache);
275
+ await writeCatalogToDisk(cacheDir, accountId, nextCache);
276
+ emitEvent(input, { type: "network_fetch_success" });
277
+ return nextCache.models;
278
+ }
279
+ catch (error) {
280
+ emitEvent(input, { type: "network_fetch_failed", reason: deriveReason(error) });
281
+ if (disk) {
282
+ inMemoryCatalog.set(key, disk);
283
+ emitEvent(input, { type: "stale_cache_used", reason: "network_fetch_failed" });
284
+ return disk.models;
285
+ }
286
+ emitEvent(input, { type: "catalog_unavailable", reason: "network_fetch_failed" });
287
+ return undefined;
288
+ }
289
+ }
290
+ function cloneModelTemplate(template, slug) {
291
+ const cloned = { ...template };
292
+ setModelIdentityFields(cloned, slug);
293
+ return cloned;
294
+ }
295
+ function formatModelDisplayNameFromSlug(slug) {
296
+ const tokens = slug
297
+ .trim()
298
+ .split("-")
299
+ .map((part) => part.trim())
300
+ .filter((part) => part.length > 0);
301
+ if (tokens.length === 0)
302
+ return slug;
303
+ const words = tokens.map((token) => {
304
+ if (token.toLowerCase() === "gpt")
305
+ return "GPT";
306
+ if (token.length === 1)
307
+ return token.toUpperCase();
308
+ return `${token.charAt(0).toUpperCase()}${token.slice(1).toLowerCase()}`;
309
+ });
310
+ if (words[0] === "GPT" && words.length > 1) {
311
+ return [`${words[0]}-${words[1]}`, ...words.slice(2)].join(" ");
312
+ }
313
+ return words.join(" ");
314
+ }
315
+ function setModelIdentityFields(model, slug) {
316
+ const display = formatModelDisplayNameFromSlug(slug);
317
+ for (const key of ["id", "slug", "model"]) {
318
+ model[key] = slug;
319
+ }
320
+ for (const key of ["name", "displayName", "display_name"]) {
321
+ model[key] = display;
322
+ }
323
+ }
324
+ function resolvePersonalityText(model, personality) {
325
+ const vars = model.model_messages?.instructions_variables;
326
+ const normalized = (personality ?? "none").trim().toLowerCase();
327
+ if (!normalized)
328
+ return undefined;
329
+ if (normalized !== "none") {
330
+ const fromFile = resolveCustomPersonalityDescription(normalized);
331
+ if (typeof fromFile === "string" && fromFile.trim()) {
332
+ return fromFile;
333
+ }
334
+ }
335
+ if (!vars)
336
+ return undefined;
337
+ if (vars.personalities && typeof vars.personalities === "object") {
338
+ const fromMap = vars.personalities[normalized] ?? vars.personalities.default;
339
+ if (typeof fromMap === "string" && fromMap.trim()) {
340
+ return fromMap;
341
+ }
342
+ }
343
+ if (normalized === "friendly" && typeof vars.personality_friendly === "string" && vars.personality_friendly.trim()) {
344
+ return vars.personality_friendly;
345
+ }
346
+ if (normalized === "pragmatic" && typeof vars.personality_pragmatic === "string" && vars.personality_pragmatic.trim()) {
347
+ return vars.personality_pragmatic;
348
+ }
349
+ if (typeof vars.personality_default === "string" && vars.personality_default.trim()) {
350
+ return vars.personality_default;
351
+ }
352
+ if (typeof vars.personality === "string" && vars.personality.trim()) {
353
+ return vars.personality;
354
+ }
355
+ return undefined;
356
+ }
357
+ function isCompatibleInstructionsText(value) {
358
+ if (UNRESOLVED_TEMPLATE_MARKER_REGEX.test(value))
359
+ return false;
360
+ return !STALE_BRIDGE_MARKERS.some((pattern) => pattern.test(value));
361
+ }
362
+ function normalizeSafeInstructions(value) {
363
+ if (!value)
364
+ return undefined;
365
+ const trimmed = value.trim();
366
+ if (!trimmed)
367
+ return undefined;
368
+ return isCompatibleInstructionsText(trimmed) ? trimmed : undefined;
369
+ }
370
+ export function resolveInstructionsForModel(model, personality) {
371
+ const template = model.model_messages?.instructions_template?.trim();
372
+ const base = model.base_instructions?.trim();
373
+ const safeBase = normalizeSafeInstructions(base);
374
+ if (!template) {
375
+ return safeBase;
376
+ }
377
+ const personalityText = resolvePersonalityText(model, personality) ?? "";
378
+ if (!template.includes("{{") && !template.includes("}}")) {
379
+ return normalizeSafeInstructions(template) ?? safeBase;
380
+ }
381
+ const rendered = template
382
+ .replace(/\{\{\s*personality\s*\}\}/gi, personalityText)
383
+ .replace(/\n{3,}/g, "\n\n")
384
+ .trim();
385
+ return normalizeSafeInstructions(rendered) ?? safeBase;
386
+ }
387
+ function resolveAllowedSlugs(catalogModels, fallback) {
388
+ const preferred = (catalogModels ?? []).map((model) => model.slug).filter((slug) => slug.length > 0);
389
+ if (preferred.length > 0) {
390
+ return Array.from(new Set(preferred)).sort(compareModelSlugs);
391
+ }
392
+ return Array.from(new Set(fallback.map((slug) => slug.trim().toLowerCase()).filter(Boolean))).sort(compareModelSlugs);
393
+ }
394
+ function resolveTemplateSource(providerModels) {
395
+ for (const candidate of ["gpt-5.3-codex", "gpt-5.2-codex", "gpt-5.1-codex", "gpt-5.2"]) {
396
+ const found = providerModels[candidate];
397
+ if (found)
398
+ return found;
399
+ }
400
+ const first = Object.values(providerModels)[0];
401
+ return first;
402
+ }
403
+ function stripEffortSuffix(slug) {
404
+ return slug.replace(EFFORT_SUFFIX_REGEX, "");
405
+ }
406
+ function ensureModelOptions(model) {
407
+ const existing = model.options;
408
+ if (isRecord(existing))
409
+ return existing;
410
+ const options = {};
411
+ model.options = options;
412
+ return options;
413
+ }
414
+ function findModelBySlug(catalogModels, slug) {
415
+ if (!catalogModels || catalogModels.length === 0)
416
+ return undefined;
417
+ const normalized = slug.trim().toLowerCase();
418
+ const exact = catalogModels.find((item) => item.slug === normalized);
419
+ if (exact)
420
+ return exact;
421
+ const base = stripEffortSuffix(normalized);
422
+ return catalogModels.find((item) => item.slug === base);
423
+ }
424
+ export function getRuntimeDefaultsForModel(model) {
425
+ if (!model)
426
+ return undefined;
427
+ const out = {};
428
+ if (typeof model.apply_patch_tool_type === "string") {
429
+ const next = model.apply_patch_tool_type.trim();
430
+ if (next)
431
+ out.applyPatchToolType = next;
432
+ }
433
+ const defaultReasoningEffort = normalizeReasoningEffort(model.default_reasoning_level);
434
+ if (defaultReasoningEffort) {
435
+ out.defaultReasoningEffort = defaultReasoningEffort;
436
+ }
437
+ const supportedReasoningEfforts = Array.from(new Set((model.supported_reasoning_levels ?? [])
438
+ .map((level) => normalizeReasoningEffort(level.effort))
439
+ .filter((value) => value !== undefined)));
440
+ if (supportedReasoningEfforts.length > 0) {
441
+ out.supportedReasoningEfforts = supportedReasoningEfforts;
442
+ }
443
+ if (typeof model.supports_reasoning_summaries === "boolean") {
444
+ out.supportsReasoningSummaries = model.supports_reasoning_summaries;
445
+ }
446
+ if (typeof model.reasoning_summary_format === "string") {
447
+ const next = model.reasoning_summary_format.trim();
448
+ if (next)
449
+ out.reasoningSummaryFormat = next;
450
+ }
451
+ if (typeof model.support_verbosity === "boolean") {
452
+ out.supportsVerbosity = model.support_verbosity;
453
+ }
454
+ const defaultVerbosity = normalizeVerbosity(model.default_verbosity);
455
+ if (defaultVerbosity) {
456
+ out.defaultVerbosity = defaultVerbosity;
457
+ }
458
+ return Object.keys(out).length > 0 ? out : undefined;
459
+ }
460
+ export function getRuntimeDefaultsForSlug(slug, catalogModels) {
461
+ const model = findModelBySlug(catalogModels, slug);
462
+ return getRuntimeDefaultsForModel(model);
463
+ }
464
+ export function applyCodexCatalogToProviderModels(input) {
465
+ const allowedSlugs = resolveAllowedSlugs(input.catalogModels, input.fallbackModels);
466
+ const allowed = new Set(allowedSlugs);
467
+ const bySlug = new Map((input.catalogModels ?? []).map((model) => [model.slug, model]));
468
+ const templateSource = resolveTemplateSource(input.providerModels);
469
+ for (const slug of allowedSlugs) {
470
+ if (!input.providerModels[slug]) {
471
+ if (templateSource) {
472
+ input.providerModels[slug] = cloneModelTemplate(templateSource, slug);
473
+ }
474
+ else {
475
+ input.providerModels[slug] = { id: slug, model: slug };
476
+ }
477
+ }
478
+ else {
479
+ setModelIdentityFields(input.providerModels[slug], slug);
480
+ }
481
+ const catalogModel = bySlug.get(slug);
482
+ const options = ensureModelOptions(input.providerModels[slug]);
483
+ if (catalogModel) {
484
+ const instructions = resolveInstructionsForModel(catalogModel, input.personality);
485
+ options.codexCatalogModel = catalogModel;
486
+ if (instructions) {
487
+ input.providerModels[slug].instructions = instructions;
488
+ options.codexInstructions = instructions;
489
+ }
490
+ else {
491
+ delete options.codexInstructions;
492
+ }
493
+ }
494
+ else {
495
+ delete options.codexCatalogModel;
496
+ }
497
+ const runtimeDefaults = getRuntimeDefaultsForSlug(slug, input.catalogModels);
498
+ if (runtimeDefaults) {
499
+ input.providerModels[slug].codexRuntimeDefaults = runtimeDefaults;
500
+ options.codexRuntimeDefaults = runtimeDefaults;
501
+ }
502
+ else {
503
+ delete input.providerModels[slug].codexRuntimeDefaults;
504
+ delete options.codexRuntimeDefaults;
505
+ }
506
+ }
507
+ for (const modelId of Object.keys(input.providerModels)) {
508
+ if (!allowed.has(modelId)) {
509
+ delete input.providerModels[modelId];
510
+ }
511
+ }
512
+ const orderedModelIds = Object.keys(input.providerModels).sort((a, b) => b.localeCompare(a));
513
+ if (orderedModelIds.length > 1) {
514
+ const orderedEntries = orderedModelIds.map((modelId) => [modelId, input.providerModels[modelId]]);
515
+ for (const modelId of Object.keys(input.providerModels)) {
516
+ delete input.providerModels[modelId];
517
+ }
518
+ for (const [modelId, model] of orderedEntries) {
519
+ if (model) {
520
+ input.providerModels[modelId] = model;
521
+ }
522
+ }
523
+ }
524
+ for (const model of Object.values(input.providerModels)) {
525
+ model.cost = {
526
+ input: 0,
527
+ output: 0,
528
+ cache: { read: 0, write: 0 }
529
+ };
530
+ }
531
+ }
532
+ //# sourceMappingURL=model-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../lib/model-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const CODEX_OAUTH_SUCCESS_HTML = "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>Sign into Codex</title>\n <link rel=\"icon\" href='data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"none\" viewBox=\"0 0 32 32\"%3E%3Cpath stroke=\"%23000\" stroke-linecap=\"round\" stroke-width=\"2.484\" d=\"M22.356 19.797H17.17M9.662 12.29l1.979 3.576a.511.511 0 0 1-.005.504l-1.974 3.409M30.758 16c0 8.15-6.607 14.758-14.758 14.758-8.15 0-14.758-6.607-14.758-14.758C1.242 7.85 7.85 1.242 16 1.242c8.15 0 14.758 6.608 14.758 14.758Z\"/%3E%3C/svg%3E' type=\"image/svg+xml\">\n <style>\n .container {\n margin: auto;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background: white;\n\n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n }\n .inner-container {\n width: 400px;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n gap: 20px;\n display: inline-flex;\n }\n .content {\n align-self: stretch;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n gap: 20px;\n display: flex;\n margin-top: 15vh;\n }\n .svg-wrapper {\n position: relative;\n }\n .title {\n text-align: center;\n color: var(--text-primary, #0D0D0D);\n font-size: 32px;\n font-weight: 400;\n line-height: 40px;\n word-wrap: break-word;\n }\n .setup-box {\n width: 600px;\n padding: 16px 20px;\n background: var(--bg-primary, white);\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.05);\n border-radius: 16px;\n outline: 1px var(--border-default, rgba(13, 13, 13, 0.10)) solid;\n outline-offset: -1px;\n justify-content: flex-start;\n align-items: center;\n gap: 16px;\n display: inline-flex;\n }\n .setup-content {\n flex: 1 1 0;\n justify-content: flex-start;\n align-items: center;\n gap: 24px;\n display: flex;\n }\n .setup-text {\n flex: 1 1 0;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n gap: 4px;\n display: inline-flex;\n }\n .setup-title {\n align-self: stretch;\n color: var(--text-primary, #0D0D0D);\n font-size: 14px;\n font-weight: 510;\n line-height: 20px;\n word-wrap: break-word;\n }\n .setup-description {\n align-self: stretch;\n color: var(--text-secondary, #5D5D5D);\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n word-wrap: break-word;\n }\n .redirect-box {\n justify-content: flex-start;\n align-items: center;\n gap: 8px;\n display: flex;\n }\n .close-button,\n .redirect-button {\n height: 28px;\n padding: 8px 16px;\n background: var(--interactive-bg-primary-default, #0D0D0D);\n border-radius: 999px;\n justify-content: center;\n align-items: center;\n gap: 4px;\n display: flex;\n }\n .close-button,\n .redirect-text {\n color: var(--interactive-label-primary-default, white);\n font-size: 14px;\n font-weight: 510;\n line-height: 20px;\n word-wrap: break-word;\n text-decoration: none;\n }\n .logo {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 4rem;\n height: 4rem;\n border-radius: 16px;\n border: .5px solid rgba(0, 0, 0, 0.1);\n box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 16px 0px;\n box-sizing: border-box;\n background-color: rgb(255, 255, 255);\n }\n </style>\n </head>\n <body>\n <div class=\"container\">\n <div class=\"inner-container\">\n <div class=\"content\">\n <div class=\"logo\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"none\" viewBox=\"0 0 32 32\"><path stroke=\"#000\" stroke-linecap=\"round\" stroke-width=\"2.484\" d=\"M22.356 19.797H17.17M9.662 12.29l1.979 3.576a.511.511 0 0 1-.005.504l-1.974 3.409M30.758 16c0 8.15-6.607 14.758-14.758 14.758-8.15 0-14.758-6.607-14.758-14.758C1.242 7.85 7.85 1.242 16 1.242c8.15 0 14.758 6.608 14.758 14.758Z\"></path></svg>\n </div>\n <div class=\"title\">Signed in to Codex</div>\n </div>\n <div class=\"close-box\" style=\"display: none;\">\n <div class=\"setup-description\">You may now close this page</div>\n </div>\n <div class=\"setup-box\" style=\"display: none;\">\n <div class=\"setup-content\">\n <div class=\"setup-text\">\n <div class=\"setup-title\">Finish setting up your API organization</div>\n <div class=\"setup-description\">Add a payment method to use your organization.</div>\n </div>\n <div class=\"redirect-box\">\n <div data-hasendicon=\"false\" data-hasstarticon=\"false\" data-ishovered=\"false\" data-isinactive=\"false\" data-ispressed=\"false\" data-size=\"large\" data-type=\"primary\" class=\"redirect-button\">\n <div class=\"redirect-text\">Redirecting in 3s...</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <script>\n (function () {\n const params = new URLSearchParams(window.location.search);\n const needsSetup = params.get('needs_setup') === 'true';\n const platformUrl = params.get('platform_url') || 'https://platform.openai.com';\n const orgId = params.get('org_id');\n const projectId = params.get('project_id');\n const planType = params.get('plan_type');\n const idToken = params.get('id_token');\n // Show different message and optional redirect when setup is required\n if (needsSetup) {\n const setupBox = document.querySelector('.setup-box');\n setupBox.style.display = 'flex';\n const redirectUrlObj = new URL('/org-setup', platformUrl);\n redirectUrlObj.searchParams.set('p', planType);\n redirectUrlObj.searchParams.set('t', idToken);\n redirectUrlObj.searchParams.set('with_org', orgId);\n redirectUrlObj.searchParams.set('project_id', projectId);\n const redirectUrl = redirectUrlObj.toString();\n const message = document.querySelector('.redirect-text');\n let countdown = 3;\n function tick() {\n message.textContent =\n 'Redirecting in ' + countdown + 's\u2026';\n if (countdown === 0) {\n window.location.replace(redirectUrl);\n } else {\n countdown -= 1;\n setTimeout(tick, 1000);\n }\n }\n tick();\n } else {\n const closeBox = document.querySelector('.close-box');\n closeBox.style.display = 'flex';\n }\n })();\n </script>\n </body>\n </html>\n";
2
+ //# sourceMappingURL=oauth-pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-pages.d.ts","sourceRoot":"","sources":["../../lib/oauth-pages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,kvOAqMpC,CAAA"}