opencode-openai-multi-auth 5.0.0 → 5.0.2
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.
- package/README.md +153 -81
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +190 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts/manager.d.ts +18 -0
- package/dist/lib/accounts/manager.d.ts.map +1 -1
- package/dist/lib/accounts/manager.js +149 -16
- package/dist/lib/accounts/manager.js.map +1 -1
- package/dist/lib/accounts/types.d.ts +1 -0
- package/dist/lib/accounts/types.d.ts.map +1 -1
- package/dist/lib/accounts/types.js.map +1 -1
- package/dist/lib/auth/auth.d.ts.map +1 -1
- package/dist/lib/auth/auth.js +8 -0
- package/dist/lib/auth/auth.js.map +1 -1
- package/dist/lib/codex-status.d.ts +41 -0
- package/dist/lib/codex-status.d.ts.map +1 -0
- package/dist/lib/codex-status.js +349 -0
- package/dist/lib/codex-status.js.map +1 -0
- package/dist/lib/constants.d.ts +8 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +13 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/models.d.ts +42 -0
- package/dist/lib/models.d.ts.map +1 -0
- package/dist/lib/models.js +85 -0
- package/dist/lib/models.js.map +1 -0
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +10 -0
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts +2 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +32 -3
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -1
- package/dist/lib/request/helpers/model-map.js +43 -11
- package/dist/lib/request/helpers/model-map.js.map +1 -1
- package/dist/lib/request/request-transformer.d.ts.map +1 -1
- package/dist/lib/request/request-transformer.js +32 -7
- package/dist/lib/request/request-transformer.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { promises as fs, existsSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
5
|
+
const STALENESS_TTL_MS = 15 * 60 * 1000;
|
|
6
|
+
const SNAPSHOT_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;
|
|
7
|
+
const SNAPSHOTS_FILE = "codex-snapshots.json";
|
|
8
|
+
const WHAM_USAGE_URL = "https://chatgpt.com/backend-api/wham/usage";
|
|
9
|
+
const CODEX_USAGE_URL = "https://api.openai.com/api/codex/usage";
|
|
10
|
+
function getCacheDir() {
|
|
11
|
+
const override = process.env.OPENCODE_OPENAI_CACHE_DIR;
|
|
12
|
+
if (override)
|
|
13
|
+
return override;
|
|
14
|
+
return join(homedir(), ".config", "opencode", "cache");
|
|
15
|
+
}
|
|
16
|
+
function getCachePath(file) {
|
|
17
|
+
return join(getCacheDir(), file);
|
|
18
|
+
}
|
|
19
|
+
export class CodexStatusManager {
|
|
20
|
+
snapshots = new Map();
|
|
21
|
+
initPromise = null;
|
|
22
|
+
async ensureInitialized() {
|
|
23
|
+
if (this.initPromise)
|
|
24
|
+
return this.initPromise;
|
|
25
|
+
this.initPromise = this.loadFromDisk();
|
|
26
|
+
return this.initPromise;
|
|
27
|
+
}
|
|
28
|
+
getSnapshotKey(account) {
|
|
29
|
+
const plan = account.planType || account.plan || "";
|
|
30
|
+
if (account.accountId && account.email && plan) {
|
|
31
|
+
return `${account.accountId}|${account.email.toLowerCase()}|${plan}`;
|
|
32
|
+
}
|
|
33
|
+
if (account.parts?.refreshToken) {
|
|
34
|
+
return createHash("sha256")
|
|
35
|
+
.update(account.parts.refreshToken)
|
|
36
|
+
.digest("hex");
|
|
37
|
+
}
|
|
38
|
+
if (account.email) {
|
|
39
|
+
return `email:${account.email.toLowerCase()}`;
|
|
40
|
+
}
|
|
41
|
+
if (account.accountId) {
|
|
42
|
+
return `account:${account.accountId}`;
|
|
43
|
+
}
|
|
44
|
+
const index = account.index;
|
|
45
|
+
if (typeof index === "number") {
|
|
46
|
+
return `index:${index}`;
|
|
47
|
+
}
|
|
48
|
+
return "unknown";
|
|
49
|
+
}
|
|
50
|
+
async updateFromHeaders(account, headers) {
|
|
51
|
+
await this.ensureInitialized();
|
|
52
|
+
const getHeader = (name) => {
|
|
53
|
+
const val = headers[name] || headers[name.toLowerCase()];
|
|
54
|
+
return Array.isArray(val) ? val[0] : val;
|
|
55
|
+
};
|
|
56
|
+
const parseNum = (val) => {
|
|
57
|
+
if (val === undefined || val === "")
|
|
58
|
+
return null;
|
|
59
|
+
const n = Number(val);
|
|
60
|
+
return Number.isNaN(n) ? null : n;
|
|
61
|
+
};
|
|
62
|
+
const parseBool = (val) => {
|
|
63
|
+
if (val === undefined || val === "")
|
|
64
|
+
return null;
|
|
65
|
+
return val === "true" || val === "1";
|
|
66
|
+
};
|
|
67
|
+
const primaryUsed = parseNum(getHeader("x-codex-primary-used-percent"));
|
|
68
|
+
const primaryWindow = parseNum(getHeader("x-codex-primary-window-minutes"));
|
|
69
|
+
let primaryReset = parseNum(getHeader("x-codex-primary-reset-at"));
|
|
70
|
+
if (primaryReset !== null && primaryReset < 2000000000) {
|
|
71
|
+
primaryReset *= 1000;
|
|
72
|
+
}
|
|
73
|
+
const secondaryUsed = parseNum(getHeader("x-codex-secondary-used-percent"));
|
|
74
|
+
const secondaryWindow = parseNum(getHeader("x-codex-secondary-window-minutes"));
|
|
75
|
+
let secondaryReset = parseNum(getHeader("x-codex-secondary-reset-at"));
|
|
76
|
+
if (secondaryReset !== null && secondaryReset < 2000000000) {
|
|
77
|
+
secondaryReset *= 1000;
|
|
78
|
+
}
|
|
79
|
+
const hasCredits = parseBool(getHeader("x-codex-credits-has-credits"));
|
|
80
|
+
const unlimited = parseBool(getHeader("x-codex-credits-unlimited"));
|
|
81
|
+
const balance = getHeader("x-codex-credits-balance");
|
|
82
|
+
const key = this.getSnapshotKey(account);
|
|
83
|
+
const existing = this.snapshots.get(key);
|
|
84
|
+
const snapshot = {
|
|
85
|
+
accountId: account.accountId || "",
|
|
86
|
+
email: account.email || "",
|
|
87
|
+
plan: account.planType || "",
|
|
88
|
+
updatedAt: Date.now(),
|
|
89
|
+
primary: primaryUsed !== null || primaryWindow !== null || primaryReset !== null
|
|
90
|
+
? {
|
|
91
|
+
usedPercent: Math.max(0, Math.min(100, primaryUsed ?? (existing?.primary?.usedPercent || 0))),
|
|
92
|
+
windowMinutes: Math.max(0, primaryWindow ?? (existing?.primary?.windowMinutes || 0)),
|
|
93
|
+
resetAt: primaryReset ?? (existing?.primary?.resetAt || 0),
|
|
94
|
+
}
|
|
95
|
+
: existing?.primary || null,
|
|
96
|
+
secondary: secondaryUsed !== null || secondaryWindow !== null || secondaryReset !== null
|
|
97
|
+
? {
|
|
98
|
+
usedPercent: Math.max(0, Math.min(100, secondaryUsed ?? (existing?.secondary?.usedPercent || 0))),
|
|
99
|
+
windowMinutes: Math.max(0, secondaryWindow ?? (existing?.secondary?.windowMinutes || 0)),
|
|
100
|
+
resetAt: secondaryReset ?? (existing?.secondary?.resetAt || 0),
|
|
101
|
+
}
|
|
102
|
+
: existing?.secondary || null,
|
|
103
|
+
credits: hasCredits !== null || unlimited !== null || balance !== undefined
|
|
104
|
+
? {
|
|
105
|
+
hasCredits: hasCredits ?? (existing?.credits?.hasCredits || false),
|
|
106
|
+
unlimited: unlimited ?? (existing?.credits?.unlimited || false),
|
|
107
|
+
balance: balance ?? (existing?.credits?.balance || "0"),
|
|
108
|
+
}
|
|
109
|
+
: existing?.credits || null,
|
|
110
|
+
};
|
|
111
|
+
this.snapshots.set(key, snapshot);
|
|
112
|
+
await this.saveToDisk();
|
|
113
|
+
}
|
|
114
|
+
async getSnapshot(account) {
|
|
115
|
+
await this.ensureInitialized();
|
|
116
|
+
const key = this.getSnapshotKey(account);
|
|
117
|
+
const snapshot = this.snapshots.get(key);
|
|
118
|
+
if (!snapshot)
|
|
119
|
+
return null;
|
|
120
|
+
return {
|
|
121
|
+
...snapshot,
|
|
122
|
+
isStale: Date.now() - snapshot.updatedAt > STALENESS_TTL_MS,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
async getAllSnapshots() {
|
|
126
|
+
await this.ensureInitialized();
|
|
127
|
+
return Array.from(this.snapshots.entries()).map(([key, snapshot]) => ({
|
|
128
|
+
...snapshot,
|
|
129
|
+
key,
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
async renderStatus(account) {
|
|
133
|
+
const snapshot = await this.getSnapshot(account);
|
|
134
|
+
const lines = [];
|
|
135
|
+
const staleLabel = snapshot?.isStale ? " (stale)" : "";
|
|
136
|
+
const formatWindow = (mins) => {
|
|
137
|
+
if (mins <= 0)
|
|
138
|
+
return null;
|
|
139
|
+
if (mins % (24 * 60) === 0)
|
|
140
|
+
return `${mins / (24 * 60)}d`;
|
|
141
|
+
if (mins % 60 === 0)
|
|
142
|
+
return `${mins / 60}h`;
|
|
143
|
+
return `${mins}m`;
|
|
144
|
+
};
|
|
145
|
+
const renderBar = (label, data) => {
|
|
146
|
+
const width = 20;
|
|
147
|
+
const usedPercent = data?.usedPercent ?? 100;
|
|
148
|
+
const leftPercent = Math.max(0, 100 - usedPercent);
|
|
149
|
+
const filled = Math.round((leftPercent / 100) * width);
|
|
150
|
+
const bar = "#".repeat(filled) + "-".repeat(width - filled);
|
|
151
|
+
let resetStr = "";
|
|
152
|
+
if (data && data.resetAt > 0) {
|
|
153
|
+
const resetDate = new Date(data.resetAt);
|
|
154
|
+
const now = Date.now();
|
|
155
|
+
const isMoreThan24h = data.resetAt - now > 24 * 60 * 60 * 1000;
|
|
156
|
+
const timeStr = `${String(resetDate.getHours()).padStart(2, "0")}:${String(resetDate.getMinutes()).padStart(2, "0")}`;
|
|
157
|
+
if (isMoreThan24h) {
|
|
158
|
+
const monthNames = [
|
|
159
|
+
"Jan",
|
|
160
|
+
"Feb",
|
|
161
|
+
"Mar",
|
|
162
|
+
"Apr",
|
|
163
|
+
"May",
|
|
164
|
+
"Jun",
|
|
165
|
+
"Jul",
|
|
166
|
+
"Aug",
|
|
167
|
+
"Sep",
|
|
168
|
+
"Oct",
|
|
169
|
+
"Nov",
|
|
170
|
+
"Dec",
|
|
171
|
+
];
|
|
172
|
+
const dateStr = `${resetDate.getDate()} ${monthNames[resetDate.getMonth()]}`;
|
|
173
|
+
resetStr = ` (resets ${timeStr} on ${dateStr})`;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
resetStr = ` (resets ${timeStr})`;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else if (!data) {
|
|
180
|
+
return ` ${(label + ":").padEnd(16)} [${"-".repeat(width)}] unknown`;
|
|
181
|
+
}
|
|
182
|
+
const statusStr = `${leftPercent.toFixed(0)}% left`.padEnd(9);
|
|
183
|
+
return ` ${(label + ":").padEnd(16)} [${bar}] ${statusStr}${resetStr}${staleLabel}`;
|
|
184
|
+
};
|
|
185
|
+
if (!snapshot) {
|
|
186
|
+
lines.push(renderBar("5h limit", null));
|
|
187
|
+
lines.push(renderBar("Weekly limit", null));
|
|
188
|
+
return lines;
|
|
189
|
+
}
|
|
190
|
+
const primaryLabel = formatWindow(snapshot.primary?.windowMinutes || 0);
|
|
191
|
+
const primaryHeader = primaryLabel === "5h" ? "5h limit" : `${primaryLabel || "5h"} limit`;
|
|
192
|
+
lines.push(renderBar(primaryHeader, snapshot.primary));
|
|
193
|
+
const secondaryLabel = formatWindow(snapshot.secondary?.windowMinutes || 0);
|
|
194
|
+
const secondaryHeader = secondaryLabel === "7d" || secondaryLabel === "weekly"
|
|
195
|
+
? "Weekly limit"
|
|
196
|
+
: `${secondaryLabel || "Weekly"} limit`;
|
|
197
|
+
lines.push(renderBar(secondaryHeader, snapshot.secondary));
|
|
198
|
+
if (snapshot.credits) {
|
|
199
|
+
const { unlimited, balance } = snapshot.credits;
|
|
200
|
+
const creditStr = unlimited ? "unlimited" : `${balance} credits`;
|
|
201
|
+
lines.push(` Credits ${creditStr}${staleLabel}`);
|
|
202
|
+
}
|
|
203
|
+
return lines;
|
|
204
|
+
}
|
|
205
|
+
async updateFromSnapshot(account, snapshot) {
|
|
206
|
+
if (!snapshot)
|
|
207
|
+
return;
|
|
208
|
+
await this.ensureInitialized();
|
|
209
|
+
const key = this.getSnapshotKey(account);
|
|
210
|
+
const existing = this.snapshots.get(key);
|
|
211
|
+
const toMs = (s) => {
|
|
212
|
+
if (s === null || s === undefined)
|
|
213
|
+
return null;
|
|
214
|
+
return s < 2000000000 ? s * 1000 : s;
|
|
215
|
+
};
|
|
216
|
+
const updated = {
|
|
217
|
+
accountId: account.accountId || "",
|
|
218
|
+
email: account.email || "",
|
|
219
|
+
plan: account.planType || "",
|
|
220
|
+
updatedAt: Date.now(),
|
|
221
|
+
primary: snapshot.primary
|
|
222
|
+
? {
|
|
223
|
+
usedPercent: snapshot.primary.used_percent,
|
|
224
|
+
windowMinutes: snapshot.primary.window_minutes || (existing?.primary?.windowMinutes || 0),
|
|
225
|
+
resetAt: toMs(snapshot.primary.resets_at) || (existing?.primary?.resetAt || 0),
|
|
226
|
+
}
|
|
227
|
+
: existing?.primary || null,
|
|
228
|
+
secondary: snapshot.secondary
|
|
229
|
+
? {
|
|
230
|
+
usedPercent: snapshot.secondary.used_percent,
|
|
231
|
+
windowMinutes: snapshot.secondary.window_minutes || (existing?.secondary?.windowMinutes || 0),
|
|
232
|
+
resetAt: toMs(snapshot.secondary.resets_at) || (existing?.secondary?.resetAt || 0),
|
|
233
|
+
}
|
|
234
|
+
: existing?.secondary || null,
|
|
235
|
+
credits: snapshot.credits
|
|
236
|
+
? {
|
|
237
|
+
hasCredits: snapshot.credits.has_credits,
|
|
238
|
+
unlimited: snapshot.credits.unlimited,
|
|
239
|
+
balance: snapshot.credits.balance || (existing?.credits?.balance || "0"),
|
|
240
|
+
}
|
|
241
|
+
: existing?.credits || null,
|
|
242
|
+
};
|
|
243
|
+
this.snapshots.set(key, updated);
|
|
244
|
+
await this.saveToDisk();
|
|
245
|
+
}
|
|
246
|
+
async fetchFromBackend(account, accessToken) {
|
|
247
|
+
const isChatGPT = accessToken.split(".").length === 3;
|
|
248
|
+
const url = isChatGPT ? WHAM_USAGE_URL : CODEX_USAGE_URL;
|
|
249
|
+
try {
|
|
250
|
+
const res = await fetch(url, {
|
|
251
|
+
headers: {
|
|
252
|
+
Authorization: `Bearer ${accessToken}`,
|
|
253
|
+
"OpenAI-Account-Id": account.accountId || "",
|
|
254
|
+
Accept: "application/json",
|
|
255
|
+
"User-Agent": "codex_cli_rs",
|
|
256
|
+
Origin: "https://chatgpt.com",
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
if (res.ok) {
|
|
260
|
+
const json = (await res.json());
|
|
261
|
+
const data = {};
|
|
262
|
+
if (json.rate_limit) {
|
|
263
|
+
if (json.rate_limit.primary_window) {
|
|
264
|
+
data.primary = {
|
|
265
|
+
used_percent: json.rate_limit.primary_window.used_percent,
|
|
266
|
+
window_minutes: json.rate_limit.primary_window.limit_window_seconds / 60,
|
|
267
|
+
resets_at: json.rate_limit.primary_window.reset_at,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
if (json.rate_limit.secondary_window) {
|
|
271
|
+
data.secondary = {
|
|
272
|
+
used_percent: json.rate_limit.secondary_window.used_percent,
|
|
273
|
+
window_minutes: json.rate_limit.secondary_window.limit_window_seconds / 60,
|
|
274
|
+
resets_at: json.rate_limit.secondary_window.reset_at,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
if (json.credits) {
|
|
279
|
+
data.credits = {
|
|
280
|
+
has_credits: json.credits.has_credits,
|
|
281
|
+
unlimited: json.credits.unlimited,
|
|
282
|
+
balance: json.credits.balance,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
await this.updateFromSnapshot(account, data);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
// Best-effort only
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
async loadFromDisk() {
|
|
293
|
+
const path = getCachePath(SNAPSHOTS_FILE);
|
|
294
|
+
if (!existsSync(path))
|
|
295
|
+
return;
|
|
296
|
+
try {
|
|
297
|
+
const data = JSON.parse(await fs.readFile(path, "utf-8"));
|
|
298
|
+
if (Array.isArray(data)) {
|
|
299
|
+
this.snapshots = new Map(data);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
// ignore
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async saveToDisk() {
|
|
307
|
+
const path = getCachePath(SNAPSHOTS_FILE);
|
|
308
|
+
const dir = dirname(path);
|
|
309
|
+
try {
|
|
310
|
+
if (!existsSync(dir)) {
|
|
311
|
+
await fs.mkdir(dir, { recursive: true });
|
|
312
|
+
}
|
|
313
|
+
let diskData = null;
|
|
314
|
+
if (existsSync(path)) {
|
|
315
|
+
try {
|
|
316
|
+
diskData = JSON.parse(await fs.readFile(path, "utf-8"));
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
diskData = null;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (Array.isArray(diskData)) {
|
|
323
|
+
const diskMap = new Map(diskData);
|
|
324
|
+
const now = Date.now();
|
|
325
|
+
for (const [key, memoryValue] of this.snapshots) {
|
|
326
|
+
const diskValue = diskMap.get(key);
|
|
327
|
+
if (!diskValue || memoryValue.updatedAt > diskValue.updatedAt) {
|
|
328
|
+
diskMap.set(key, memoryValue);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
for (const [key, value] of diskMap) {
|
|
332
|
+
if (now - value.updatedAt > SNAPSHOT_RETENTION_MS) {
|
|
333
|
+
diskMap.delete(key);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
this.snapshots = diskMap;
|
|
337
|
+
}
|
|
338
|
+
const data = JSON.stringify(Array.from(this.snapshots.entries()), null, 2);
|
|
339
|
+
const tmpPath = `${path}.${randomBytes(6).toString("hex")}.tmp`;
|
|
340
|
+
await fs.writeFile(tmpPath, data, { encoding: "utf-8", mode: 0o600 });
|
|
341
|
+
await fs.rename(tmpPath, path);
|
|
342
|
+
}
|
|
343
|
+
catch {
|
|
344
|
+
// ignore
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
export const codexStatus = new CodexStatusManager();
|
|
349
|
+
//# sourceMappingURL=codex-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-status.js","sourceRoot":"","sources":["../../lib/codex-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA8CtD,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxC,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACtD,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAE9C,MAAM,cAAc,GAAG,4CAA4C,CAAC;AACpE,MAAM,eAAe,GAAG,wCAAwC,CAAC;AAEjE,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACvD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,OAAO,kBAAkB;IACrB,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;IACtD,WAAW,GAAyB,IAAI,CAAC;IAEzC,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,cAAc,CAAC,OAAoD;QACzE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC/C,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;YAChC,OAAO,UAAU,CAAC,QAAQ,CAAC;iBACxB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;iBAClC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,SAAS,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,WAAW,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,GAAI,OAA8B,CAAC,KAAK,CAAC;QACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,SAAS,KAAK,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,OAAuB,EACvB,OAAsD;QAEtD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,CAAC,IAAY,EAAsB,EAAE;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,CAAC,GAAuB,EAAiB,EAAE;YAC1D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;YACjD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,GAAuB,EAAkB,EAAE;YAC5D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;YACjD,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC;QACvC,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5E,IAAI,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACnE,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,GAAG,UAAU,EAAE,CAAC;YACvD,YAAY,IAAI,IAAI,CAAC;QACvB,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5E,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAChF,IAAI,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACvE,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,GAAG,UAAU,EAAE,CAAC;YAC3D,cAAc,IAAI,IAAI,CAAC;QACzB,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAErD,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzC,MAAM,QAAQ,GAA2B;YACvC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,EACL,WAAW,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI;gBACrE,CAAC,CAAC;oBACE,WAAW,EAAE,IAAI,CAAC,GAAG,CACnB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,CACpE;oBACD,aAAa,EAAE,IAAI,CAAC,GAAG,CACrB,CAAC,EACD,aAAa,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,IAAI,CAAC,CAAC,CACzD;oBACD,OAAO,EAAE,YAAY,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC;iBAC3D;gBACH,CAAC,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI;YAC/B,SAAS,EACP,aAAa,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI;gBAC3E,CAAC,CAAC;oBACE,WAAW,EAAE,IAAI,CAAC,GAAG,CACnB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,CACxE;oBACD,aAAa,EAAE,IAAI,CAAC,GAAG,CACrB,CAAC,EACD,eAAe,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,IAAI,CAAC,CAAC,CAC7D;oBACD,OAAO,EAAE,cAAc,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,IAAI,CAAC,CAAC;iBAC/D;gBACH,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI;YACjC,OAAO,EACL,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;gBAChE,CAAC,CAAC;oBACE,UAAU,EAAE,UAAU,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;oBAClE,SAAS,EAAE,SAAS,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;oBAC/D,OAAO,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC;iBACxD;gBACH,CAAC,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI;SAChC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAuB;QAEvB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,OAAO;YACL,GAAG,QAAQ;YACX,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,GAAG,gBAAgB;SAC5D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACpE,GAAG,QAAQ;YACX,GAAG;SACJ,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAuB;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvD,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;YACpC,IAAI,IAAI,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3B,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;gBAAE,OAAO,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;YAC1D,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC;gBAAE,OAAO,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC;YAC5C,OAAO,GAAG,IAAI,GAAG,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,CAChB,KAAa,EACb,IAAqD,EACrD,EAAE;YACF,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,GAAG,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;YAE5D,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC/D,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CACxE,SAAS,CAAC,UAAU,EAAE,CACvB,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBAErB,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,UAAU,GAAG;wBACjB,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;wBACL,KAAK;qBACN,CAAC;oBACF,MAAM,OAAO,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;oBAC7E,QAAQ,GAAG,YAAY,OAAO,OAAO,OAAO,GAAG,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,YAAY,OAAO,GAAG,CAAC;gBACpC,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;YACxE,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,OAAO,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,SAAS,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC;QACvF,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,IAAI,QAAQ,CAAC;QAC3F,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvD,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;QAC5E,MAAM,eAAe,GACnB,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,QAAQ;YACpD,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,GAAG,cAAc,IAAI,QAAQ,QAAQ,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3D,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;YAChD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,GAAG,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAuB,EAAE,QAAa;QAC7D,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,CAAC,CAA4B,EAAE,EAAE;YAC5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YAC/C,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,MAAM,OAAO,GAA2B;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACvB,CAAC,CAAC;oBACE,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY;oBAC1C,aAAa,EACX,QAAQ,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,IAAI,CAAC,CAAC;oBAC5E,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC;iBAC/E;gBACH,CAAC,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI;YAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC3B,CAAC,CAAC;oBACE,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,YAAY;oBAC5C,aAAa,EACX,QAAQ,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,IAAI,CAAC,CAAC;oBAChF,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,IAAI,CAAC,CAAC;iBACnF;gBACH,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACvB,CAAC,CAAC;oBACE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW;oBACxC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS;oBACrC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC;iBACzE;gBACH,CAAC,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI;SAC9B,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAuB,EAAE,WAAmB;QACjE,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,WAAW,EAAE;oBACtC,mBAAmB,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;oBAC5C,MAAM,EAAE,kBAAkB;oBAC1B,YAAY,EAAE,cAAc;oBAC5B,MAAM,EAAE,qBAAqB;iBAC9B;aACF,CAAC,CAAC;YAEH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;gBAE1D,MAAM,IAAI,GAAQ,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;wBACnC,IAAI,CAAC,OAAO,GAAG;4BACb,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY;4BACzD,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,GAAG,EAAE;4BACxE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ;yBACnD,CAAC;oBACJ,CAAC;oBACD,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;wBACrC,IAAI,CAAC,SAAS,GAAG;4BACf,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY;4BAC3D,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,oBAAoB,GAAG,EAAE;4BAC1E,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ;yBACrD,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,IAAI,CAAC,OAAO,GAAG;wBACb,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;wBACrC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;wBACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;qBAC9B,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,IAAI,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,IAAI,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;YAED,IAAI,QAAQ,GAAY,IAAI,CAAC;YAC7B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBAAC,MAAM,CAAC;oBACP,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAiC,QAAQ,CAAC,CAAC;gBAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACnC,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;wBAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;oBACnC,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,qBAAqB,EAAE,CAAC;wBAClD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YAC3B,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAChE,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC"}
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/** Plugin identifier for logging and error messages */
|
|
6
6
|
export declare const PLUGIN_NAME = "openai-codex-plugin";
|
|
7
|
+
/** Plugin version - used for client_version query parameter */
|
|
8
|
+
export declare const PLUGIN_VERSION = "0.98.0";
|
|
7
9
|
/** Base URL for ChatGPT backend API */
|
|
8
10
|
export declare const CODEX_BASE_URL = "https://chatgpt.com/backend-api";
|
|
9
11
|
/** Dummy API key used for OpenAI SDK (actual auth via OAuth) */
|
|
@@ -24,17 +26,23 @@ export declare const OPENAI_HEADERS: {
|
|
|
24
26
|
readonly ORIGINATOR: "originator";
|
|
25
27
|
readonly SESSION_ID: "session_id";
|
|
26
28
|
readonly CONVERSATION_ID: "conversation_id";
|
|
29
|
+
readonly VERSION: "version";
|
|
27
30
|
};
|
|
28
31
|
/** OpenAI-specific header values */
|
|
29
32
|
export declare const OPENAI_HEADER_VALUES: {
|
|
30
33
|
readonly BETA_RESPONSES: "responses=experimental";
|
|
31
34
|
readonly ORIGINATOR_CODEX: "codex_cli_rs";
|
|
32
35
|
};
|
|
36
|
+
/** Codex CLI originator value */
|
|
37
|
+
export declare const CODEX_ORIGINATOR = "codex_cli_rs";
|
|
33
38
|
/** URL path segments */
|
|
34
39
|
export declare const URL_PATHS: {
|
|
35
40
|
readonly RESPONSES: "/responses";
|
|
36
41
|
readonly CODEX_RESPONSES: "/codex/responses";
|
|
42
|
+
readonly CODEX_MODELS: "/codex/models";
|
|
37
43
|
};
|
|
44
|
+
/** Model fallback map - when a model isn't available, fall back to this */
|
|
45
|
+
export declare const MODEL_FALLBACKS: Record<string, string>;
|
|
38
46
|
/** JWT claim path for ChatGPT account ID */
|
|
39
47
|
export declare const JWT_CLAIM_PATH: "https://api.openai.com/auth";
|
|
40
48
|
/** Error messages */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uDAAuD;AACvD,eAAO,MAAM,WAAW,wBAAwB,CAAC;AAEjD,uCAAuC;AACvC,eAAO,MAAM,cAAc,oCAAoC,CAAC;AAEhE,gEAAgE;AAChE,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,6CAA6C;AAC7C,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC,wBAAwB;AACxB,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,8BAA8B;AAC9B,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uDAAuD;AACvD,eAAO,MAAM,WAAW,wBAAwB,CAAC;AAEjD,+DAA+D;AAC/D,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,uCAAuC;AACvC,eAAO,MAAM,cAAc,oCAAoC,CAAC;AAEhE,gEAAgE;AAChE,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,6CAA6C;AAC7C,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC,wBAAwB;AACxB,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,8BAA8B;AAC9B,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX,oCAAoC;AACpC,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC;AAEX,iCAAiC;AACjC,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,wBAAwB;AACxB,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKzC,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,cAAc,EAAG,6BAAsC,CAAC;AAErE,qBAAqB;AACrB,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX,qCAAqC;AACrC,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX,gDAAgD;AAChD,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,iCAAiC;AACjC,eAAO,MAAM,WAAW;;;;;;CAQd,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/** Plugin identifier for logging and error messages */
|
|
6
6
|
export const PLUGIN_NAME = "openai-codex-plugin";
|
|
7
|
+
/** Plugin version - used for client_version query parameter */
|
|
8
|
+
export const PLUGIN_VERSION = "0.98.0";
|
|
7
9
|
/** Base URL for ChatGPT backend API */
|
|
8
10
|
export const CODEX_BASE_URL = "https://chatgpt.com/backend-api";
|
|
9
11
|
/** Dummy API key used for OpenAI SDK (actual auth via OAuth) */
|
|
@@ -24,16 +26,27 @@ export const OPENAI_HEADERS = {
|
|
|
24
26
|
ORIGINATOR: "originator",
|
|
25
27
|
SESSION_ID: "session_id",
|
|
26
28
|
CONVERSATION_ID: "conversation_id",
|
|
29
|
+
VERSION: "version",
|
|
27
30
|
};
|
|
28
31
|
/** OpenAI-specific header values */
|
|
29
32
|
export const OPENAI_HEADER_VALUES = {
|
|
30
33
|
BETA_RESPONSES: "responses=experimental",
|
|
31
34
|
ORIGINATOR_CODEX: "codex_cli_rs",
|
|
32
35
|
};
|
|
36
|
+
/** Codex CLI originator value */
|
|
37
|
+
export const CODEX_ORIGINATOR = "codex_cli_rs";
|
|
33
38
|
/** URL path segments */
|
|
34
39
|
export const URL_PATHS = {
|
|
35
40
|
RESPONSES: "/responses",
|
|
36
41
|
CODEX_RESPONSES: "/codex/responses",
|
|
42
|
+
CODEX_MODELS: "/codex/models",
|
|
43
|
+
};
|
|
44
|
+
/** Model fallback map - when a model isn't available, fall back to this */
|
|
45
|
+
export const MODEL_FALLBACKS = {
|
|
46
|
+
"gpt-5.3-codex": "gpt-5.2-codex",
|
|
47
|
+
"gpt-5.3-codex-max": "gpt-5.1-codex-max",
|
|
48
|
+
"gpt-5.3-codex-mini": "gpt-5.1-codex-mini",
|
|
49
|
+
"gpt-5.3": "gpt-5.2",
|
|
37
50
|
};
|
|
38
51
|
/** JWT claim path for ChatGPT account ID */
|
|
39
52
|
export const JWT_CLAIM_PATH = "https://api.openai.com/auth";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uDAAuD;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAEjD,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAEhE,gEAAgE;AAChE,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC,wBAAwB;AACxB,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,EAAE,EAAE,GAAG;IACP,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,iBAAiB,EAAE,GAAG;CACb,CAAC;AAEX,8BAA8B;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE,oBAAoB;IAChC,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,uDAAuD;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAEjD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEvC,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAEhE,gEAAgE;AAChE,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC,wBAAwB;AACxB,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,EAAE,EAAE,GAAG;IACP,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,iBAAiB,EAAE,GAAG;CACb,CAAC;AAEX,8BAA8B;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE,oBAAoB;IAChC,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;IAClC,OAAO,EAAE,SAAS;CACT,CAAC;AAEX,oCAAoC;AACpC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,cAAc,EAAE,wBAAwB;IACxC,gBAAgB,EAAE,cAAc;CACvB,CAAC;AAEX,iCAAiC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE/C,wBAAwB;AACxB,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;CACpB,CAAC;AAEX,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAA2B;IACtD,eAAe,EAAE,eAAe;IAChC,mBAAmB,EAAE,mBAAmB;IACxC,oBAAoB,EAAE,oBAAoB;IAC1C,SAAS,EAAE,SAAS;CACX,CAAC;AAEX,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,6BAAsC,CAAC;AAErE,qBAAqB;AACrB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,aAAa,EAAE,wCAAwC;IACvD,oBAAoB,EAAE,kDAAkD;IACxE,mBAAmB,EAAE,uBAAuB;CACnC,CAAC;AAEX,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,gBAAgB;CACvB,CAAC;AAEX,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,UAAU;CACR,CAAC;AAEX,iCAAiC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,KAAK,EAAE,uCAAuC;IAC9C,YAAY,EAAE,qCAAqC;IACnD,OAAO,EAAE,wBAAwB;IACjC,YAAY,EACX,iFAAiF;IAClF,mBAAmB,EAClB,iEAAiE;CACzD,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Models API
|
|
3
|
+
* Fetches available models from the ChatGPT backend
|
|
4
|
+
* This call may be necessary to "unlock" access to certain models like gpt-5.3-codex
|
|
5
|
+
*/
|
|
6
|
+
/** Model info returned from the /models endpoint */
|
|
7
|
+
export interface ModelInfo {
|
|
8
|
+
slug: string;
|
|
9
|
+
display_name: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
default_reasoning_level?: string;
|
|
12
|
+
supported_reasoning_levels?: string[];
|
|
13
|
+
visibility?: string;
|
|
14
|
+
supported_in_api?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Fetch available models from the Codex backend
|
|
18
|
+
* This call may help "register" the client and enable access to newer models
|
|
19
|
+
*
|
|
20
|
+
* @param accessToken - OAuth access token
|
|
21
|
+
* @param accountId - ChatGPT account ID
|
|
22
|
+
* @returns List of available models
|
|
23
|
+
*/
|
|
24
|
+
export declare function fetchAvailableModels(accessToken: string, accountId: string): Promise<ModelInfo[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a specific model is available for an account
|
|
27
|
+
*
|
|
28
|
+
* @param modelSlug - Model slug to check (e.g., "gpt-5.3-codex")
|
|
29
|
+
* @param accessToken - OAuth access token
|
|
30
|
+
* @param accountId - ChatGPT account ID
|
|
31
|
+
* @returns True if model is available
|
|
32
|
+
*/
|
|
33
|
+
export declare function isModelAvailable(modelSlug: string, accessToken: string, accountId: string): Promise<boolean>;
|
|
34
|
+
/**
|
|
35
|
+
* Pre-fetch models to potentially "unlock" access to newer models
|
|
36
|
+
* Call this before making requests to ensure the backend knows about our client
|
|
37
|
+
*
|
|
38
|
+
* @param accessToken - OAuth access token
|
|
39
|
+
* @param accountId - ChatGPT account ID
|
|
40
|
+
*/
|
|
41
|
+
export declare function prefetchModels(accessToken: string, accountId: string): Promise<void>;
|
|
42
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../lib/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,oDAAoD;AACpD,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAsBD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACzC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,EAAE,CAAC,CAuCtB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Models API
|
|
3
|
+
* Fetches available models from the ChatGPT backend
|
|
4
|
+
* This call may be necessary to "unlock" access to certain models like gpt-5.3-codex
|
|
5
|
+
*/
|
|
6
|
+
import { CODEX_BASE_URL, URL_PATHS, PLUGIN_VERSION, CODEX_ORIGINATOR } from "./constants.js";
|
|
7
|
+
import { release as osRelease } from "node:os";
|
|
8
|
+
/** Cache for available models per account */
|
|
9
|
+
const modelsCache = new Map();
|
|
10
|
+
const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
11
|
+
/**
|
|
12
|
+
* Generates User-Agent for models requests
|
|
13
|
+
*/
|
|
14
|
+
function getCodexUserAgent() {
|
|
15
|
+
const platform = process.platform;
|
|
16
|
+
const arch = process.arch;
|
|
17
|
+
const osType = platform === "darwin" ? "Mac OS" : platform === "win32" ? "Windows" : "Linux";
|
|
18
|
+
const osVersion = osRelease();
|
|
19
|
+
return `${CODEX_ORIGINATOR}/${PLUGIN_VERSION} (${osType} ${osVersion}; ${arch}) opencode-plugin`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Fetch available models from the Codex backend
|
|
23
|
+
* This call may help "register" the client and enable access to newer models
|
|
24
|
+
*
|
|
25
|
+
* @param accessToken - OAuth access token
|
|
26
|
+
* @param accountId - ChatGPT account ID
|
|
27
|
+
* @returns List of available models
|
|
28
|
+
*/
|
|
29
|
+
export async function fetchAvailableModels(accessToken, accountId) {
|
|
30
|
+
const cacheKey = accountId;
|
|
31
|
+
const cached = modelsCache.get(cacheKey);
|
|
32
|
+
// Return cached if still valid
|
|
33
|
+
if (cached && Date.now() - cached.fetchedAt < CACHE_TTL_MS) {
|
|
34
|
+
return cached.models;
|
|
35
|
+
}
|
|
36
|
+
const url = `${CODEX_BASE_URL}${URL_PATHS.CODEX_MODELS}?client_version=${PLUGIN_VERSION}`;
|
|
37
|
+
try {
|
|
38
|
+
const response = await fetch(url, {
|
|
39
|
+
method: "GET",
|
|
40
|
+
headers: {
|
|
41
|
+
Authorization: `Bearer ${accessToken}`,
|
|
42
|
+
"chatgpt-account-id": accountId,
|
|
43
|
+
"User-Agent": getCodexUserAgent(),
|
|
44
|
+
originator: CODEX_ORIGINATOR,
|
|
45
|
+
Accept: "application/json",
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
console.error(`[openai-codex-plugin] Failed to fetch models: ${response.status}`);
|
|
50
|
+
return cached?.models || [];
|
|
51
|
+
}
|
|
52
|
+
const data = (await response.json());
|
|
53
|
+
const models = data.models || [];
|
|
54
|
+
// Cache the result
|
|
55
|
+
modelsCache.set(cacheKey, { models, fetchedAt: Date.now() });
|
|
56
|
+
return models;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error("[openai-codex-plugin] Error fetching models:", error);
|
|
60
|
+
return cached?.models || [];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if a specific model is available for an account
|
|
65
|
+
*
|
|
66
|
+
* @param modelSlug - Model slug to check (e.g., "gpt-5.3-codex")
|
|
67
|
+
* @param accessToken - OAuth access token
|
|
68
|
+
* @param accountId - ChatGPT account ID
|
|
69
|
+
* @returns True if model is available
|
|
70
|
+
*/
|
|
71
|
+
export async function isModelAvailable(modelSlug, accessToken, accountId) {
|
|
72
|
+
const models = await fetchAvailableModels(accessToken, accountId);
|
|
73
|
+
return models.some((m) => m.slug === modelSlug);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Pre-fetch models to potentially "unlock" access to newer models
|
|
77
|
+
* Call this before making requests to ensure the backend knows about our client
|
|
78
|
+
*
|
|
79
|
+
* @param accessToken - OAuth access token
|
|
80
|
+
* @param accountId - ChatGPT account ID
|
|
81
|
+
*/
|
|
82
|
+
export async function prefetchModels(accessToken, accountId) {
|
|
83
|
+
await fetchAvailableModels(accessToken, accountId);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../lib/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACpB,eAAe,GACf,WAAW,GACX,OAAO,GACP,SAAS,GACT,SAAS,CAAC;AAyBb;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACpB,eAAe,GACf,WAAW,GACX,OAAO,GACP,SAAS,GACT,SAAS,CAAC;AAyBb;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,CAgCnE;AA2CD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACzC,eAAe,SAAkB,GAC/B,OAAO,CAAC,MAAM,CAAC,CA2GjB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,+mEA8DV,CAAC"}
|
|
@@ -39,6 +39,16 @@ export function getModelFamily(normalizedModel) {
|
|
|
39
39
|
normalizedModel.includes("gpt 5.2 codex")) {
|
|
40
40
|
return "gpt-5.2-codex";
|
|
41
41
|
}
|
|
42
|
+
const gpt5MinorMatch = normalizedModel.match(/gpt[- ]5\.(\d+)/);
|
|
43
|
+
if (gpt5MinorMatch) {
|
|
44
|
+
const minorVersion = Number.parseInt(gpt5MinorMatch[1] || "0", 10);
|
|
45
|
+
if (!Number.isNaN(minorVersion) && minorVersion >= 3) {
|
|
46
|
+
if (normalizedModel.includes("codex")) {
|
|
47
|
+
return "gpt-5.2-codex";
|
|
48
|
+
}
|
|
49
|
+
return "gpt-5.2";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
42
52
|
if (normalizedModel.includes("codex-max")) {
|
|
43
53
|
return "codex-max";
|
|
44
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,mBAAmB,GACxB,2DAA2D,CAAC;AAC7D,MAAM,oBAAoB,GACzB,iDAAiD,CAAC;AACnD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAExD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAatC;;;GAGG;AACH,MAAM,YAAY,GAAgC;IACjD,eAAe,EAAE,yBAAyB;IAC1C,WAAW,EAAE,6BAA6B;IAC1C,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,mBAAmB;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAAgC;IAChD,eAAe,EAAE,+BAA+B;IAChD,WAAW,EAAE,2BAA2B;IACxC,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,yBAAyB;CACpC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,eAAuB;IACrD,qDAAqD;IACrD,IACC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC;QACzC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,EACxC,CAAC;QACF,OAAO,eAAe,CAAC;IACxB,CAAC;IACD,IAAI,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,IACC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,EACnC,CAAC;QACF,OAAO,OAAO,CAAC;IAChB,CAAC;IACD,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkB,CAAC;YACtD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACd,mCAAmC,YAAY,CAAC,MAAM,EAAE,CACxD,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACpE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,eAAe,GAAG,eAAe;IAEjC,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,IAAI,CACzB,SAAS,EACT,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAC1D,CAAC;IAEF,IAAI,CAAC;QACJ,uEAAuE;QACvE,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,eAAe,GAAkB,IAAI,CAAC;QAE1C,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAC1B,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAClB,CAAC;YACnB,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC;YACzB,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC;QACxC,CAAC;QAED,sEAAsE;QACtE,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;QAClD,IACC,eAAe;YACf,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,GAAG,YAAY;YAC3C,UAAU,CAAC,SAAS,CAAC,EACpB,CAAC;YACF,OAAO,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,iEAAiE;QACjE,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAC9C,MAAM,sBAAsB,GAAG,kDAAkD,SAAS,kBAAkB,UAAU,EAAE,CAAC;QAEzH,oDAAoD;QACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7B,UAAU,GAAG,IAAI,CAAC,CAAC,iBAAiB;QACrC,CAAC;QAED,qDAAqD;QACrD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAElE,yDAAyD;QACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,OAAO,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;YACD,6EAA6E;QAC9E,CAAC;QAED,sCAAsC;QACtC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE7C,6CAA6C;YAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;YAED,kEAAkE;YAClE,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAC/C,aAAa,CACZ,aAAa,EACb,IAAI,CAAC,SAAS,CAAC;gBACd,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,SAAS;gBACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,GAAG,EAAE,sBAAsB;aACH,CAAC,EAC1B,MAAM,CACN,CAAC;YAEF,OAAO,YAAY,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,OAAO,CAAC,KAAK,CACZ,yCAAyC,WAAW,4BAA4B,EAChF,GAAG,CAAC,OAAO,CACX,CAAC;QAEF,0CAA0C;QAC1C,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CACZ,sCAAsC,WAAW,eAAe,CAChE,CAAC;YACF,OAAO,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,sEAAsE;QACtE,OAAO,CAAC,KAAK,CACZ,kEAAkE,WAAW,EAAE,CAC/E,CAAC;QACF,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA8Db,CAAC"}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"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"}
|