@iam-brain/opencode-codex-auth 1.2.5 → 1.4.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 (172) hide show
  1. package/README.md +42 -98
  2. package/dist/lib/accounts-tools.d.ts.map +1 -1
  3. package/dist/lib/accounts-tools.js +1 -3
  4. package/dist/lib/accounts-tools.js.map +1 -1
  5. package/dist/lib/codex-native/acquire-auth.d.ts.map +1 -1
  6. package/dist/lib/codex-native/acquire-auth.js +2 -1
  7. package/dist/lib/codex-native/acquire-auth.js.map +1 -1
  8. package/dist/lib/codex-native/catalog-sync.d.ts +1 -1
  9. package/dist/lib/codex-native/catalog-sync.d.ts.map +1 -1
  10. package/dist/lib/codex-native/chat-hooks.d.ts.map +1 -1
  11. package/dist/lib/codex-native/chat-hooks.js.map +1 -1
  12. package/dist/lib/codex-native/client-identity.js +1 -1
  13. package/dist/lib/codex-native/client-identity.js.map +1 -1
  14. package/dist/lib/codex-native/oauth-auth-methods.d.ts.map +1 -1
  15. package/dist/lib/codex-native/oauth-auth-methods.js +5 -2
  16. package/dist/lib/codex-native/oauth-auth-methods.js.map +1 -1
  17. package/dist/lib/codex-native/oauth-server-debug.d.ts +10 -0
  18. package/dist/lib/codex-native/oauth-server-debug.d.ts.map +1 -0
  19. package/dist/lib/codex-native/oauth-server-debug.js +92 -0
  20. package/dist/lib/codex-native/oauth-server-debug.js.map +1 -0
  21. package/dist/lib/codex-native/oauth-server-network.d.ts +5 -0
  22. package/dist/lib/codex-native/oauth-server-network.d.ts.map +1 -0
  23. package/dist/lib/codex-native/oauth-server-network.js +39 -0
  24. package/dist/lib/codex-native/oauth-server-network.js.map +1 -0
  25. package/dist/lib/codex-native/oauth-server-types.d.ts +24 -0
  26. package/dist/lib/codex-native/oauth-server-types.d.ts.map +1 -0
  27. package/dist/lib/codex-native/oauth-server-types.js +2 -0
  28. package/dist/lib/codex-native/oauth-server-types.js.map +1 -0
  29. package/dist/lib/codex-native/oauth-server.d.ts +2 -17
  30. package/dist/lib/codex-native/oauth-server.d.ts.map +1 -1
  31. package/dist/lib/codex-native/oauth-server.js +11 -130
  32. package/dist/lib/codex-native/oauth-server.js.map +1 -1
  33. package/dist/lib/codex-native/openai-loader-fetch-quota.d.ts +18 -0
  34. package/dist/lib/codex-native/openai-loader-fetch-quota.d.ts.map +1 -0
  35. package/dist/lib/codex-native/openai-loader-fetch-quota.js +71 -0
  36. package/dist/lib/codex-native/openai-loader-fetch-quota.js.map +1 -0
  37. package/dist/lib/codex-native/openai-loader-fetch-state.d.ts +27 -0
  38. package/dist/lib/codex-native/openai-loader-fetch-state.d.ts.map +1 -0
  39. package/dist/lib/codex-native/openai-loader-fetch-state.js +91 -0
  40. package/dist/lib/codex-native/openai-loader-fetch-state.js.map +1 -0
  41. package/dist/lib/codex-native/openai-loader-fetch.d.ts.map +1 -1
  42. package/dist/lib/codex-native/openai-loader-fetch.js +28 -163
  43. package/dist/lib/codex-native/openai-loader-fetch.js.map +1 -1
  44. package/dist/lib/codex-native/request-transform-instructions.d.ts +16 -0
  45. package/dist/lib/codex-native/request-transform-instructions.d.ts.map +1 -0
  46. package/dist/lib/codex-native/request-transform-instructions.js +96 -0
  47. package/dist/lib/codex-native/request-transform-instructions.js.map +1 -0
  48. package/dist/lib/codex-native/request-transform-model-service-tier.d.ts +12 -0
  49. package/dist/lib/codex-native/request-transform-model-service-tier.d.ts.map +1 -0
  50. package/dist/lib/codex-native/request-transform-model-service-tier.js +88 -0
  51. package/dist/lib/codex-native/request-transform-model-service-tier.js.map +1 -0
  52. package/dist/lib/codex-native/request-transform-model.d.ts +39 -0
  53. package/dist/lib/codex-native/request-transform-model.d.ts.map +1 -0
  54. package/dist/lib/codex-native/request-transform-model.js +276 -0
  55. package/dist/lib/codex-native/request-transform-model.js.map +1 -0
  56. package/dist/lib/codex-native/request-transform-payload-helpers.d.ts +26 -0
  57. package/dist/lib/codex-native/request-transform-payload-helpers.d.ts.map +1 -0
  58. package/dist/lib/codex-native/request-transform-payload-helpers.js +232 -0
  59. package/dist/lib/codex-native/request-transform-payload-helpers.js.map +1 -0
  60. package/dist/lib/codex-native/request-transform-payload.d.ts +66 -0
  61. package/dist/lib/codex-native/request-transform-payload.d.ts.map +1 -0
  62. package/dist/lib/codex-native/request-transform-payload.js +296 -0
  63. package/dist/lib/codex-native/request-transform-payload.js.map +1 -0
  64. package/dist/lib/codex-native/request-transform-pipeline.d.ts +2 -1
  65. package/dist/lib/codex-native/request-transform-pipeline.d.ts.map +1 -1
  66. package/dist/lib/codex-native/request-transform-pipeline.js +6 -0
  67. package/dist/lib/codex-native/request-transform-pipeline.js.map +1 -1
  68. package/dist/lib/codex-native/request-transform-shared.d.ts +8 -0
  69. package/dist/lib/codex-native/request-transform-shared.d.ts.map +1 -0
  70. package/dist/lib/codex-native/request-transform-shared.js +49 -0
  71. package/dist/lib/codex-native/request-transform-shared.js.map +1 -0
  72. package/dist/lib/codex-native/request-transform.d.ts +4 -122
  73. package/dist/lib/codex-native/request-transform.d.ts.map +1 -1
  74. package/dist/lib/codex-native/request-transform.js +4 -862
  75. package/dist/lib/codex-native/request-transform.js.map +1 -1
  76. package/dist/lib/codex-native/session-affinity-state.d.ts +13 -0
  77. package/dist/lib/codex-native/session-affinity-state.d.ts.map +1 -1
  78. package/dist/lib/codex-native/session-affinity-state.js +20 -8
  79. package/dist/lib/codex-native/session-affinity-state.js.map +1 -1
  80. package/dist/lib/codex-native/static-fallback-models.d.ts +2 -0
  81. package/dist/lib/codex-native/static-fallback-models.d.ts.map +1 -0
  82. package/dist/lib/codex-native/static-fallback-models.js +15 -0
  83. package/dist/lib/codex-native/static-fallback-models.js.map +1 -0
  84. package/dist/lib/codex-native.d.ts.map +1 -1
  85. package/dist/lib/codex-native.js +1 -8
  86. package/dist/lib/codex-native.js.map +1 -1
  87. package/dist/lib/codex-prompts-cache.d.ts.map +1 -1
  88. package/dist/lib/codex-prompts-cache.js.map +1 -1
  89. package/dist/lib/codex-quota-fetch.js +1 -1
  90. package/dist/lib/codex-quota-fetch.js.map +1 -1
  91. package/dist/lib/config/behavior-settings.d.ts +3 -0
  92. package/dist/lib/config/behavior-settings.d.ts.map +1 -0
  93. package/dist/lib/config/behavior-settings.js +33 -0
  94. package/dist/lib/config/behavior-settings.js.map +1 -0
  95. package/dist/lib/config/io.d.ts +16 -0
  96. package/dist/lib/config/io.d.ts.map +1 -0
  97. package/dist/lib/config/io.js +64 -0
  98. package/dist/lib/config/io.js.map +1 -0
  99. package/dist/lib/config/parse.d.ts +22 -0
  100. package/dist/lib/config/parse.d.ts.map +1 -0
  101. package/dist/lib/config/parse.js +327 -0
  102. package/dist/lib/config/parse.js.map +1 -0
  103. package/dist/lib/config/resolve.d.ts +27 -0
  104. package/dist/lib/config/resolve.d.ts.map +1 -0
  105. package/dist/lib/config/resolve.js +154 -0
  106. package/dist/lib/config/resolve.js.map +1 -0
  107. package/dist/lib/config/types.d.ts +74 -0
  108. package/dist/lib/config/types.d.ts.map +1 -0
  109. package/dist/lib/config/types.js +160 -0
  110. package/dist/lib/config/types.js.map +1 -0
  111. package/dist/lib/config/validation.d.ts +6 -0
  112. package/dist/lib/config/validation.d.ts.map +1 -0
  113. package/dist/lib/config/validation.js +171 -0
  114. package/dist/lib/config/validation.js.map +1 -0
  115. package/dist/lib/config.d.ts +6 -114
  116. package/dist/lib/config.d.ts.map +1 -1
  117. package/dist/lib/config.js +6 -855
  118. package/dist/lib/config.js.map +1 -1
  119. package/dist/lib/fetch-orchestrator-helpers.d.ts +13 -0
  120. package/dist/lib/fetch-orchestrator-helpers.d.ts.map +1 -0
  121. package/dist/lib/fetch-orchestrator-helpers.js +63 -0
  122. package/dist/lib/fetch-orchestrator-helpers.js.map +1 -0
  123. package/dist/lib/fetch-orchestrator-types.d.ts +71 -0
  124. package/dist/lib/fetch-orchestrator-types.d.ts.map +1 -0
  125. package/dist/lib/fetch-orchestrator-types.js +11 -0
  126. package/dist/lib/fetch-orchestrator-types.js.map +1 -0
  127. package/dist/lib/fetch-orchestrator.d.ts +2 -69
  128. package/dist/lib/fetch-orchestrator.d.ts.map +1 -1
  129. package/dist/lib/fetch-orchestrator.js +30 -79
  130. package/dist/lib/fetch-orchestrator.js.map +1 -1
  131. package/dist/lib/model-catalog/cache-helpers.d.ts +23 -0
  132. package/dist/lib/model-catalog/cache-helpers.d.ts.map +1 -0
  133. package/dist/lib/model-catalog/cache-helpers.js +210 -0
  134. package/dist/lib/model-catalog/cache-helpers.js.map +1 -0
  135. package/dist/lib/model-catalog/catalog-fetch.d.ts +3 -0
  136. package/dist/lib/model-catalog/catalog-fetch.d.ts.map +1 -0
  137. package/dist/lib/model-catalog/catalog-fetch.js +159 -0
  138. package/dist/lib/model-catalog/catalog-fetch.js.map +1 -0
  139. package/dist/lib/model-catalog/provider.d.ts +6 -0
  140. package/dist/lib/model-catalog/provider.d.ts.map +1 -0
  141. package/dist/lib/model-catalog/provider.js +280 -0
  142. package/dist/lib/model-catalog/provider.js.map +1 -0
  143. package/dist/lib/model-catalog/shared.d.ts +99 -0
  144. package/dist/lib/model-catalog/shared.d.ts.map +1 -0
  145. package/dist/lib/model-catalog/shared.js +157 -0
  146. package/dist/lib/model-catalog/shared.js.map +1 -0
  147. package/dist/lib/model-catalog.d.ts +3 -68
  148. package/dist/lib/model-catalog.d.ts.map +1 -1
  149. package/dist/lib/model-catalog.js +3 -767
  150. package/dist/lib/model-catalog.js.map +1 -1
  151. package/dist/lib/proactive-refresh.d.ts.map +1 -1
  152. package/dist/lib/proactive-refresh.js +2 -4
  153. package/dist/lib/proactive-refresh.js.map +1 -1
  154. package/dist/lib/quarantine.js.map +1 -1
  155. package/dist/lib/quota-threshold-alerts.d.ts.map +1 -1
  156. package/dist/lib/quota-threshold-alerts.js +3 -1
  157. package/dist/lib/quota-threshold-alerts.js.map +1 -1
  158. package/dist/lib/rotation.js.map +1 -1
  159. package/dist/lib/storage/domain-state.d.ts +23 -0
  160. package/dist/lib/storage/domain-state.d.ts.map +1 -0
  161. package/dist/lib/storage/domain-state.js +275 -0
  162. package/dist/lib/storage/domain-state.js.map +1 -0
  163. package/dist/lib/storage/migration.d.ts +13 -0
  164. package/dist/lib/storage/migration.d.ts.map +1 -0
  165. package/dist/lib/storage/migration.js +225 -0
  166. package/dist/lib/storage/migration.js.map +1 -0
  167. package/dist/lib/storage.d.ts +2 -9
  168. package/dist/lib/storage.d.ts.map +1 -1
  169. package/dist/lib/storage.js +12 -503
  170. package/dist/lib/storage.js.map +1 -1
  171. package/package.json +14 -13
  172. package/schemas/codex-config.schema.json +8 -0
@@ -0,0 +1,210 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { fetchRemoteText } from "../remote-cache-fetch.js";
5
+ import { isFsErrorCode, readJsonFileBestEffort, writeJsonFileBestEffort } from "../cache-io.js";
6
+ import { withLockedDirectory } from "../cache-lock.js";
7
+ import { buildCodexModelsMemoryCacheKey, codexAuthModelsCachePath, codexModelsCompatShardPath, codexModelsMetaPath, codexModelsSharedCachePath, isCodexModelsCacheFileName } from "../codex-cache-layout.js";
8
+ import { CACHE_TTL_MS, compareSemver, FETCH_TIMEOUT_MS, githubModelsTag, githubModelsUrl, isRecord, normalizeSemver, parseCatalogResponse, parseSemver, parseFetchedAtFromUnknown, semverFromTag } from "./shared.js";
9
+ export function cacheKey(cacheDir, accountId) {
10
+ return buildCodexModelsMemoryCacheKey(cacheDir, accountId);
11
+ }
12
+ export function cachePath(cacheDir, accountId) {
13
+ return codexAuthModelsCachePath(cacheDir, accountId);
14
+ }
15
+ export function opencodeShardCachePath(cacheDir, accountId) {
16
+ return codexModelsCompatShardPath(cacheDir, accountId);
17
+ }
18
+ function opencodeSharedCachePath(cacheDir) {
19
+ return codexModelsSharedCachePath(cacheDir);
20
+ }
21
+ async function readGitHubModelsCacheMeta(cacheDir) {
22
+ const file = codexModelsMetaPath(cacheDir);
23
+ const parsed = await readJsonFileBestEffort(file);
24
+ if (!isRecord(parsed))
25
+ return undefined;
26
+ const parsedVersion = normalizeSemver(typeof parsed.version === "string" ? parsed.version : undefined);
27
+ const parsedTag = typeof parsed.tag === "string" ? parsed.tag.trim() : "";
28
+ const tag = parsedTag || (parsedVersion ? githubModelsTag(parsedVersion) : "");
29
+ const url = typeof parsed.url === "string" ? parsed.url.trim() : "";
30
+ const lastChecked = typeof parsed.lastChecked === "number" && Number.isFinite(parsed.lastChecked) ? parsed.lastChecked : 0;
31
+ const etag = typeof parsed.etag === "string" ? parsed.etag.trim() : undefined;
32
+ if (!tag || !url)
33
+ return undefined;
34
+ return { etag, tag, url, lastChecked };
35
+ }
36
+ async function writeGitHubModelsCacheMeta(cacheDir, meta) {
37
+ const file = codexModelsMetaPath(cacheDir);
38
+ await writeJsonFileBestEffort(file, meta);
39
+ }
40
+ export async function refreshSharedGitHubModelsCache(input) {
41
+ const targetVersion = normalizeSemver(input.targetClientVersion);
42
+ if (!targetVersion)
43
+ return;
44
+ const existingMeta = await readGitHubModelsCacheMeta(input.cacheDir);
45
+ const existingVersion = parseSemver(semverFromTag(existingMeta?.tag));
46
+ const target = parseSemver(targetVersion);
47
+ if (!target)
48
+ return;
49
+ if (existingVersion && compareSemver(existingVersion, target) >= 0)
50
+ return;
51
+ const tag = githubModelsTag(targetVersion);
52
+ const url = githubModelsUrl(targetVersion);
53
+ const result = await fetchRemoteText({
54
+ key: "models",
55
+ url,
56
+ etag: existingMeta?.url === url ? existingMeta.etag : undefined
57
+ }, {
58
+ fetchImpl: input.fetchImpl,
59
+ timeoutMs: FETCH_TIMEOUT_MS,
60
+ allowedHosts: ["raw.githubusercontent.com"]
61
+ });
62
+ if (result.status === "not_modified" && existingMeta) {
63
+ await writeGitHubModelsCacheMeta(input.cacheDir, {
64
+ etag: existingMeta.etag,
65
+ tag,
66
+ lastChecked: input.now,
67
+ url
68
+ });
69
+ return;
70
+ }
71
+ if (result.status !== "ok") {
72
+ return;
73
+ }
74
+ try {
75
+ const payload = JSON.parse(result.text);
76
+ const models = parseCatalogResponse(payload);
77
+ if (models.length === 0)
78
+ return;
79
+ const etag = result.etag || (existingMeta?.url === url ? existingMeta.etag : undefined);
80
+ const file = opencodeSharedCachePath(input.cacheDir);
81
+ await writeJsonFileBestEffort(file, { fetchedAt: input.now, source: "github", models });
82
+ await writeGitHubModelsCacheMeta(input.cacheDir, {
83
+ etag,
84
+ tag,
85
+ lastChecked: input.now,
86
+ url
87
+ });
88
+ }
89
+ catch (_error) {
90
+ // Best effort refresh; continue without blocking catalog load.
91
+ }
92
+ }
93
+ export function isFresh(cache, now) {
94
+ return now - cache.fetchedAt < CACHE_TTL_MS;
95
+ }
96
+ async function withCacheLock(cacheDir, fn) {
97
+ return withLockedDirectory(cacheDir, fn, { staleMs: 10_000 });
98
+ }
99
+ export async function readCatalogFromDisk(cacheDir, accountId) {
100
+ return withCacheLock(cacheDir, async () => {
101
+ const file = cachePath(cacheDir, accountId);
102
+ const parsed = await readJsonFileBestEffort(file);
103
+ if (!isRecord(parsed))
104
+ return undefined;
105
+ if (typeof parsed.fetchedAt !== "number")
106
+ return undefined;
107
+ const models = parseCatalogResponse({ models: parsed.models });
108
+ return {
109
+ fetchedAt: parsed.fetchedAt,
110
+ models
111
+ };
112
+ });
113
+ }
114
+ export async function readCatalogFromOpencodeCache(cacheDir) {
115
+ try {
116
+ const entries = await fs.readdir(cacheDir);
117
+ const candidates = entries.filter((name) => {
118
+ return isCodexModelsCacheFileName(name);
119
+ });
120
+ if (candidates.length === 0)
121
+ return undefined;
122
+ let best;
123
+ for (const fileName of candidates) {
124
+ const parsed = await readJsonFileBestEffort(path.join(cacheDir, fileName));
125
+ if (!isRecord(parsed))
126
+ continue;
127
+ const models = parseCatalogResponse({ models: parsed.models });
128
+ if (models.length === 0)
129
+ continue;
130
+ const fetchedAt = typeof parsed.fetchedAt === "number" ? parsed.fetchedAt : 0;
131
+ if (!best || fetchedAt > best.fetchedAt) {
132
+ best = {
133
+ fetchedAt,
134
+ models
135
+ };
136
+ }
137
+ }
138
+ return best;
139
+ }
140
+ catch (error) {
141
+ if (!isFsErrorCode(error, "ENOENT")) {
142
+ // Best effort fallback discovery.
143
+ }
144
+ return undefined;
145
+ }
146
+ }
147
+ export async function readCatalogFromCodexCliCache() {
148
+ const file = path.join(os.homedir(), ".codex", "models_cache.json");
149
+ const parsed = await readJsonFileBestEffort(file);
150
+ if (!isRecord(parsed))
151
+ return undefined;
152
+ const models = parseCatalogResponse({ models: parsed.models });
153
+ if (models.length === 0)
154
+ return undefined;
155
+ return {
156
+ fetchedAt: parseFetchedAtFromUnknown(parsed.fetched_at ?? parsed.fetchedAt),
157
+ models
158
+ };
159
+ }
160
+ export async function writeCatalogToDisk(cacheDir, accountId, cache) {
161
+ await withCacheLock(cacheDir, async () => {
162
+ const primaryFile = cachePath(cacheDir, accountId);
163
+ const compatFile = opencodeShardCachePath(cacheDir, accountId);
164
+ const files = compatFile ? [primaryFile, compatFile] : [primaryFile];
165
+ for (const file of files) {
166
+ await writeJsonFileBestEffort(file, cache);
167
+ }
168
+ }).catch((error) => {
169
+ if (error instanceof Error) {
170
+ // Best effort cache persistence.
171
+ }
172
+ // Best effort cache persistence.
173
+ });
174
+ }
175
+ export function emitEvent(input, event) {
176
+ try {
177
+ input.onEvent?.({
178
+ ...event,
179
+ scope: input.accountId?.trim() ? "account" : "shared"
180
+ });
181
+ }
182
+ catch (error) {
183
+ if (error instanceof Error) {
184
+ // Keep catalog path side-effect free even if observer callback throws.
185
+ }
186
+ // Keep catalog path side-effect free.
187
+ }
188
+ }
189
+ export function deriveReason(value) {
190
+ if (value instanceof Error) {
191
+ return value.name || "error";
192
+ }
193
+ return "error";
194
+ }
195
+ export function emitStaleCacheFallback(input, fallback) {
196
+ if (fallback.disk) {
197
+ emitEvent(input, { type: "stale_cache_used", reason: "network_fetch_failed" });
198
+ return fallback.disk.models;
199
+ }
200
+ if (fallback.opencode) {
201
+ emitEvent(input, { type: "stale_cache_used", reason: "opencode_cache_fallback" });
202
+ return fallback.opencode.models;
203
+ }
204
+ if (fallback.codexCli) {
205
+ emitEvent(input, { type: "stale_cache_used", reason: "codex_cli_cache_fallback" });
206
+ return fallback.codexCli.models;
207
+ }
208
+ return undefined;
209
+ }
210
+ //# sourceMappingURL=cache-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-helpers.js","sourceRoot":"","sources":["../../../lib/model-catalog/cache-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type CodexModelInfo, type GetCodexModelCatalogInput } from "./shared.js";
2
+ export declare function getCodexModelCatalog(input: GetCodexModelCatalogInput): Promise<CodexModelInfo[] | undefined>;
3
+ //# sourceMappingURL=catalog-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-fetch.d.ts","sourceRoot":"","sources":["../../../lib/model-catalog/catalog-fetch.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,cAAc,EAInB,KAAK,yBAAyB,EAG/B,MAAM,aAAa,CAAA;AAkBpB,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,CAqJlH"}
@@ -0,0 +1,159 @@
1
+ import { cacheKey, deriveReason, emitEvent, emitStaleCacheFallback, isFresh, readCatalogFromCodexCliCache, readCatalogFromDisk, readCatalogFromOpencodeCache, refreshSharedGitHubModelsCache, writeCatalogToDisk } from "./cache-helpers.js";
2
+ import { CODEX_MODELS_ENDPOINT, DEFAULT_CLIENT_VERSION, FETCH_TIMEOUT_MS, parseCatalogResponse, normalizeSemver } from "./shared.js";
3
+ import { resolveCodexCacheDir } from "../codex-cache-layout.js";
4
+ const inMemoryCatalog = new Map();
5
+ const inFlightCatalogFetches = new Map();
6
+ function normalizeClientVersion(value, fallback) {
7
+ const trimmed = value?.trim();
8
+ if (trimmed)
9
+ return trimmed;
10
+ const fallbackTrimmed = fallback?.trim();
11
+ return fallbackTrimmed || DEFAULT_CLIENT_VERSION;
12
+ }
13
+ function buildModelsEndpoint(clientVersion) {
14
+ const separator = CODEX_MODELS_ENDPOINT.includes("?") ? "&" : "?";
15
+ return `${CODEX_MODELS_ENDPOINT}${separator}client_version=${encodeURIComponent(clientVersion)}`;
16
+ }
17
+ export async function getCodexModelCatalog(input) {
18
+ const now = (input.now ?? Date.now)();
19
+ const cacheDir = resolveCodexCacheDir(input.cacheDir);
20
+ const key = cacheKey(cacheDir, input.accountId);
21
+ const fetchImpl = input.fetchImpl ?? fetch;
22
+ const accessToken = input.accessToken?.trim();
23
+ const targetClientVersion = normalizeSemver(input.clientVersion) ?? normalizeSemver(input.versionHeader);
24
+ const defaultGithubModelsRefresh = Boolean(accessToken) && input.fetchImpl === undefined && targetClientVersion !== undefined;
25
+ const shouldRefreshGithubModelsCache = input.refreshGithubModelsCache ?? defaultGithubModelsRefresh;
26
+ if (shouldRefreshGithubModelsCache) {
27
+ await refreshSharedGitHubModelsCache({
28
+ cacheDir,
29
+ targetClientVersion,
30
+ now,
31
+ fetchImpl
32
+ });
33
+ }
34
+ const memory = inMemoryCatalog.get(key);
35
+ const allowMemoryHit = !memory?.staleFallback || !accessToken;
36
+ if (memory && !input.forceRefresh && isFresh(memory, now) && allowMemoryHit) {
37
+ emitEvent(input, { type: "memory_cache_hit" });
38
+ return memory.models;
39
+ }
40
+ const disk = await readCatalogFromDisk(cacheDir, input.accountId);
41
+ const hasFreshDisk = !!disk && isFresh(disk, now);
42
+ if (hasFreshDisk && !input.forceRefresh) {
43
+ inMemoryCatalog.set(key, disk);
44
+ emitEvent(input, { type: "disk_cache_hit" });
45
+ return disk.models;
46
+ }
47
+ let opencodeCacheFallback;
48
+ let codexCliCacheFallback;
49
+ const ensureFallbackCaches = async () => {
50
+ if (opencodeCacheFallback !== undefined || codexCliCacheFallback !== undefined)
51
+ return;
52
+ opencodeCacheFallback = await readCatalogFromOpencodeCache(cacheDir);
53
+ codexCliCacheFallback = await readCatalogFromCodexCliCache();
54
+ };
55
+ if (!accessToken) {
56
+ await ensureFallbackCaches();
57
+ if (disk) {
58
+ emitEvent(input, { type: "stale_cache_used", reason: "missing_access_token" });
59
+ inMemoryCatalog.set(key, disk);
60
+ return disk.models;
61
+ }
62
+ const stale = emitStaleCacheFallback(input, {
63
+ opencode: opencodeCacheFallback,
64
+ codexCli: codexCliCacheFallback
65
+ });
66
+ if (stale) {
67
+ inMemoryCatalog.set(key, {
68
+ fetchedAt: now,
69
+ models: stale,
70
+ staleFallback: true
71
+ });
72
+ return stale;
73
+ }
74
+ emitEvent(input, { type: "catalog_unavailable", reason: "missing_access_token" });
75
+ return undefined;
76
+ }
77
+ const headers = {
78
+ authorization: `Bearer ${accessToken}`,
79
+ originator: input.originator?.trim() || "opencode"
80
+ };
81
+ const clientVersion = normalizeClientVersion(input.clientVersion, input.versionHeader);
82
+ const versionHeader = normalizeClientVersion(input.versionHeader, input.clientVersion);
83
+ if (versionHeader)
84
+ headers.version = versionHeader;
85
+ const userAgent = input.userAgent?.trim();
86
+ if (userAgent)
87
+ headers["user-agent"] = userAgent;
88
+ const betaValue = input.openaiBeta?.trim();
89
+ if (betaValue)
90
+ headers["openai-beta"] = betaValue;
91
+ const accountId = input.accountId?.trim() || undefined;
92
+ if (accountId) {
93
+ headers["chatgpt-account-id"] = accountId;
94
+ }
95
+ const existingInFlight = inFlightCatalogFetches.get(key);
96
+ if (existingInFlight) {
97
+ return existingInFlight;
98
+ }
99
+ const inFlight = (async () => {
100
+ try {
101
+ const controller = new AbortController();
102
+ const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
103
+ let response;
104
+ try {
105
+ const endpoint = buildModelsEndpoint(clientVersion);
106
+ response = await fetchImpl(endpoint, {
107
+ method: "GET",
108
+ headers,
109
+ signal: controller.signal
110
+ });
111
+ }
112
+ finally {
113
+ clearTimeout(timeout);
114
+ }
115
+ if (!response.ok) {
116
+ throw new Error(`codex models request failed with status ${response.status}`);
117
+ }
118
+ const payload = await response.json();
119
+ const models = parseCatalogResponse(payload);
120
+ if (models.length === 0) {
121
+ throw new Error("codex models response did not contain usable models");
122
+ }
123
+ const nextCache = {
124
+ fetchedAt: now,
125
+ models
126
+ };
127
+ inMemoryCatalog.set(key, nextCache);
128
+ await writeCatalogToDisk(cacheDir, accountId, nextCache);
129
+ emitEvent(input, { type: "network_fetch_success" });
130
+ return nextCache.models;
131
+ }
132
+ catch (error) {
133
+ emitEvent(input, { type: "network_fetch_failed", reason: deriveReason(error) });
134
+ await ensureFallbackCaches();
135
+ const stale = emitStaleCacheFallback(input, {
136
+ disk,
137
+ opencode: opencodeCacheFallback,
138
+ codexCli: codexCliCacheFallback
139
+ });
140
+ if (stale) {
141
+ inMemoryCatalog.set(key, {
142
+ fetchedAt: now,
143
+ models: stale,
144
+ staleFallback: true
145
+ });
146
+ return stale;
147
+ }
148
+ emitEvent(input, { type: "catalog_unavailable", reason: "network_fetch_failed" });
149
+ return undefined;
150
+ }
151
+ })();
152
+ inFlightCatalogFetches.set(key, inFlight);
153
+ return inFlight.finally(() => {
154
+ if (inFlightCatalogFetches.get(key) === inFlight) {
155
+ inFlightCatalogFetches.delete(key);
156
+ }
157
+ });
158
+ }
159
+ //# sourceMappingURL=catalog-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-fetch.js","sourceRoot":"","sources":["../../../lib/model-catalog/catalog-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type ApplyCodexCatalogInput, type CodexModelInfo, type CodexModelRuntimeDefaults, type PersonalityOption } from "./shared.js";
2
+ export declare function resolveInstructionsForModel(model: CodexModelInfo, personality?: PersonalityOption): string | undefined;
3
+ export declare function getRuntimeDefaultsForModel(model: CodexModelInfo | undefined): CodexModelRuntimeDefaults | undefined;
4
+ export declare function getRuntimeDefaultsForSlug(slug: string, catalogModels: CodexModelInfo[] | undefined): CodexModelRuntimeDefaults | undefined;
5
+ export declare function applyCodexCatalogToProviderModels(input: ApplyCodexCatalogInput): void;
6
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../lib/model-catalog/provider.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAK9B,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAA;AA+GpB,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,cAAc,EACrB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,MAAM,GAAG,SAAS,CAiBpB;AAwDD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,yBAAyB,GAAG,SAAS,CAiDnH;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,cAAc,EAAE,GAAG,SAAS,GAC1C,yBAAyB,GAAG,SAAS,CAGvC;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAqFrF"}