codex-multi-auth 2.1.13-beta.1 → 2.2.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.
- package/LICENSE +21 -21
- package/README.md +415 -415
- package/assets/codex-multi-auth-icon.svg +39 -39
- package/assets/readme-hero.svg +31 -31
- package/config/README.md +29 -29
- package/config/codex-legacy.json +571 -571
- package/config/codex-modern.json +258 -258
- package/config/minimal-codex.json +15 -15
- package/config/schema/config.schema.json +20 -20
- package/dist/lib/accounts.d.ts.map +1 -1
- package/dist/lib/accounts.js +30 -1
- package/dist/lib/accounts.js.map +1 -1
- package/dist/lib/auth/org-override.d.ts +19 -0
- package/dist/lib/auth/org-override.d.ts.map +1 -0
- package/dist/lib/auth/org-override.js +23 -0
- package/dist/lib/auth/org-override.js.map +1 -0
- package/dist/lib/circuit-breaker.d.ts +6 -0
- package/dist/lib/circuit-breaker.d.ts.map +1 -1
- package/dist/lib/circuit-breaker.js +8 -0
- package/dist/lib/circuit-breaker.js.map +1 -1
- package/dist/lib/codex-manager/account-manager-commands.d.ts +14 -0
- package/dist/lib/codex-manager/account-manager-commands.d.ts.map +1 -0
- package/dist/lib/codex-manager/account-manager-commands.js +43 -0
- package/dist/lib/codex-manager/account-manager-commands.js.map +1 -0
- package/dist/lib/codex-manager/commands/best.d.ts +1 -1
- package/dist/lib/codex-manager/commands/best.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/best.js +2 -1
- package/dist/lib/codex-manager/commands/best.js.map +1 -1
- package/dist/lib/codex-manager/commands/debug-bundle.d.ts +16 -0
- package/dist/lib/codex-manager/commands/debug-bundle.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/debug-bundle.js +80 -5
- package/dist/lib/codex-manager/commands/debug-bundle.js.map +1 -1
- package/dist/lib/codex-manager/commands/forecast.d.ts +1 -1
- package/dist/lib/codex-manager/commands/forecast.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/forecast.js +2 -1
- package/dist/lib/codex-manager/commands/forecast.js.map +1 -1
- package/dist/lib/codex-manager/commands/report.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/report.js +2 -2
- package/dist/lib/codex-manager/commands/report.js.map +1 -1
- package/dist/lib/codex-manager/commands/status.d.ts +2 -0
- package/dist/lib/codex-manager/commands/status.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/status.js +84 -25
- package/dist/lib/codex-manager/commands/status.js.map +1 -1
- package/dist/lib/codex-manager/commands/switch.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/switch.js +7 -0
- package/dist/lib/codex-manager/commands/switch.js.map +1 -1
- package/dist/lib/codex-manager/experimental-settings-prompt.d.ts.map +1 -1
- package/dist/lib/codex-manager/experimental-settings-prompt.js +13 -3
- package/dist/lib/codex-manager/experimental-settings-prompt.js.map +1 -1
- package/dist/lib/codex-manager/forecast-report-commands.d.ts.map +1 -1
- package/dist/lib/codex-manager/forecast-report-commands.js +3 -3
- package/dist/lib/codex-manager/forecast-report-commands.js.map +1 -1
- package/dist/lib/codex-manager/repair-commands.d.ts.map +1 -1
- package/dist/lib/codex-manager/repair-commands.js +11 -1
- package/dist/lib/codex-manager/repair-commands.js.map +1 -1
- package/dist/lib/codex-manager/settings-hub/experimental.d.ts.map +1 -1
- package/dist/lib/codex-manager/settings-hub/experimental.js +8 -0
- package/dist/lib/codex-manager/settings-hub/experimental.js.map +1 -1
- package/dist/lib/codex-manager.d.ts +3 -0
- package/dist/lib/codex-manager.d.ts.map +1 -1
- package/dist/lib/codex-manager.js +53 -65
- package/dist/lib/codex-manager.js.map +1 -1
- package/dist/lib/config.d.ts +26 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +152 -5
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/context-overflow.d.ts +7 -2
- package/dist/lib/context-overflow.d.ts.map +1 -1
- package/dist/lib/context-overflow.js +65 -47
- package/dist/lib/context-overflow.js.map +1 -1
- package/dist/lib/errors.d.ts +16 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +23 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/local-bridge.d.ts +8 -0
- package/dist/lib/local-bridge.d.ts.map +1 -1
- package/dist/lib/local-bridge.js +81 -7
- package/dist/lib/local-bridge.js.map +1 -1
- package/dist/lib/logger.d.ts +9 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +104 -19
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/oauth-success.html +125 -125
- package/dist/lib/oc-chatgpt-orchestrator.d.ts +7 -1
- package/dist/lib/oc-chatgpt-orchestrator.d.ts.map +1 -1
- package/dist/lib/oc-chatgpt-orchestrator.js +68 -9
- package/dist/lib/oc-chatgpt-orchestrator.js.map +1 -1
- package/dist/lib/policy/runtime-policy.d.ts.map +1 -1
- package/dist/lib/policy/runtime-policy.js +15 -1
- package/dist/lib/policy/runtime-policy.js.map +1 -1
- package/dist/lib/prompts/codex-host-bridge.js +138 -138
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +203 -108
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/prompts/fetch-utils.d.ts +72 -0
- package/dist/lib/prompts/fetch-utils.d.ts.map +1 -0
- package/dist/lib/prompts/fetch-utils.js +165 -0
- package/dist/lib/prompts/fetch-utils.js.map +1 -0
- package/dist/lib/prompts/host-codex-prompt.d.ts.map +1 -1
- package/dist/lib/prompts/host-codex-prompt.js +24 -10
- package/dist/lib/prompts/host-codex-prompt.js.map +1 -1
- package/dist/lib/quota-cache.d.ts.map +1 -1
- package/dist/lib/quota-cache.js +10 -1
- package/dist/lib/quota-cache.js.map +1 -1
- package/dist/lib/quota-probe.d.ts +21 -0
- package/dist/lib/quota-probe.d.ts.map +1 -1
- package/dist/lib/quota-probe.js +39 -0
- package/dist/lib/quota-probe.js.map +1 -1
- package/dist/lib/quota-readiness.d.ts +3 -1
- package/dist/lib/quota-readiness.d.ts.map +1 -1
- package/dist/lib/quota-readiness.js +16 -3
- package/dist/lib/quota-readiness.js.map +1 -1
- package/dist/lib/recovery/storage.d.ts +7 -0
- package/dist/lib/recovery/storage.d.ts.map +1 -1
- package/dist/lib/recovery/storage.js +178 -10
- package/dist/lib/recovery/storage.js.map +1 -1
- package/dist/lib/refresh-lease.d.ts +1 -1
- package/dist/lib/refresh-lease.d.ts.map +1 -1
- package/dist/lib/refresh-lease.js +25 -3
- package/dist/lib/refresh-lease.js.map +1 -1
- package/dist/lib/refresh-queue.d.ts.map +1 -1
- package/dist/lib/refresh-queue.js +31 -17
- package/dist/lib/refresh-queue.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts +0 -5
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +36 -7
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/rotation.d.ts +12 -0
- package/dist/lib/rotation.d.ts.map +1 -1
- package/dist/lib/rotation.js +36 -0
- package/dist/lib/rotation.js.map +1 -1
- package/dist/lib/runtime/account-check-types.d.ts +1 -0
- package/dist/lib/runtime/account-check-types.d.ts.map +1 -1
- package/dist/lib/runtime/account-check-types.js +1 -0
- package/dist/lib/runtime/account-check-types.js.map +1 -1
- package/dist/lib/runtime/account-check.d.ts.map +1 -1
- package/dist/lib/runtime/account-check.js +15 -4
- package/dist/lib/runtime/account-check.js.map +1 -1
- package/dist/lib/runtime/runtime-observability.d.ts.map +1 -1
- package/dist/lib/runtime/runtime-observability.js +24 -2
- package/dist/lib/runtime/runtime-observability.js.map +1 -1
- package/dist/lib/runtime-rotation-proxy.d.ts +3 -0
- package/dist/lib/runtime-rotation-proxy.d.ts.map +1 -1
- package/dist/lib/runtime-rotation-proxy.js +296 -21
- package/dist/lib/runtime-rotation-proxy.js.map +1 -1
- package/dist/lib/schemas.d.ts +2 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +2 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/account-clear.d.ts.map +1 -1
- package/dist/lib/storage/account-clear.js +4 -2
- package/dist/lib/storage/account-clear.js.map +1 -1
- package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
- package/dist/lib/storage/flagged-storage-io.js +4 -1
- package/dist/lib/storage/flagged-storage-io.js.map +1 -1
- package/dist/lib/storage/import-export.d.ts.map +1 -1
- package/dist/lib/storage/import-export.js +29 -9
- package/dist/lib/storage/import-export.js.map +1 -1
- package/dist/lib/storage/paths.d.ts.map +1 -1
- package/dist/lib/storage/paths.js +93 -0
- package/dist/lib/storage/paths.js.map +1 -1
- package/dist/lib/storage/storage-parser.d.ts.map +1 -1
- package/dist/lib/storage/storage-parser.js +7 -1
- package/dist/lib/storage/storage-parser.js.map +1 -1
- package/dist/lib/storage.d.ts.map +1 -1
- package/dist/lib/storage.js +13 -9
- package/dist/lib/storage.js.map +1 -1
- package/dist/lib/table-formatter.d.ts.map +1 -1
- package/dist/lib/table-formatter.js +20 -2
- package/dist/lib/table-formatter.js.map +1 -1
- package/dist/lib/types.d.ts +7 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/ui/auth-menu.d.ts.map +1 -1
- package/dist/lib/ui/auth-menu.js +8 -2
- package/dist/lib/ui/auth-menu.js.map +1 -1
- package/dist/lib/ui/display-width.d.ts +27 -0
- package/dist/lib/ui/display-width.d.ts.map +1 -0
- package/dist/lib/ui/display-width.js +194 -0
- package/dist/lib/ui/display-width.js.map +1 -0
- package/dist/lib/ui/select.d.ts +23 -0
- package/dist/lib/ui/select.d.ts.map +1 -1
- package/dist/lib/ui/select.js +64 -16
- package/dist/lib/ui/select.js.map +1 -1
- package/dist/lib/ui/theme.d.ts +13 -0
- package/dist/lib/ui/theme.d.ts.map +1 -1
- package/dist/lib/ui/theme.js +34 -1
- package/dist/lib/ui/theme.js.map +1 -1
- package/node_modules/@codex-ai/plugin/dist/index.d.ts +2 -2
- package/node_modules/@codex-ai/plugin/dist/index.js +2 -2
- package/node_modules/@codex-ai/plugin/dist/tool.d.ts +42 -42
- package/node_modules/@codex-ai/plugin/dist/tool.js +29 -29
- package/node_modules/@codex-ai/plugin/package.json +9 -9
- package/node_modules/@codex-ai/sdk/dist/index.d.ts +4 -0
- package/node_modules/@codex-ai/sdk/dist/index.js +2 -0
- package/node_modules/@codex-ai/sdk/package.json +8 -0
- package/package.json +196 -193
- package/scripts/codex-app-launcher.js +653 -653
- package/scripts/codex-app-router.js +322 -322
- package/scripts/codex-bin-resolver.js +254 -254
- package/scripts/codex-multi-auth.js +59 -59
- package/scripts/codex-routing.js +59 -56
- package/scripts/codex.js +4782 -4275
- package/scripts/install-codex-auth-utils.js +206 -206
- package/scripts/mcodex +117 -0
- package/scripts/postinstall.js +343 -343
- package/scripts/preuninstall.js +254 -254
- package/vendor/codex-ai-plugin/dist/index.d.ts +2 -2
- package/vendor/codex-ai-plugin/dist/index.js +2 -2
- package/vendor/codex-ai-plugin/dist/tool.d.ts +42 -42
- package/vendor/codex-ai-plugin/dist/tool.js +29 -29
- package/vendor/codex-ai-plugin/package.json +9 -9
- package/vendor/codex-ai-sdk/dist/index.d.ts +4 -4
- package/vendor/codex-ai-sdk/dist/index.js +2 -2
- package/vendor/codex-ai-sdk/package.json +8 -8
|
@@ -1,9 +1,53 @@
|
|
|
1
1
|
import { promises as fs } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
4
5
|
import { logWarn, logError, logDebug } from "../logger.js";
|
|
5
6
|
import { getCodexCacheDir } from "../runtime-paths.js";
|
|
6
7
|
import { getModelProfile } from "../request/helpers/model-map.js";
|
|
8
|
+
import { fetchWithTimeout, readBodyTextGuarded, withBodyTimeout } from "./fetch-utils.js";
|
|
9
|
+
import { withFileOperationRetry } from "../fs-retry.js";
|
|
10
|
+
/** SHA-256 of cache content for integrity verification (prompts-03). */
|
|
11
|
+
function sha256(content) {
|
|
12
|
+
return createHash("sha256").update(content, "utf8").digest("hex");
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Atomically write content + meta (prompts-06).
|
|
16
|
+
*
|
|
17
|
+
* The previous parallel writeFile of cacheFile and cacheMetaFile could tear:
|
|
18
|
+
* a crash between them left content and meta (etag/sha) out of sync. Write each
|
|
19
|
+
* to a temp sibling then rename, and write the content before the meta so the
|
|
20
|
+
* meta's sha always describes a content file already on disk.
|
|
21
|
+
*
|
|
22
|
+
* Note on atomicity: this is a *two-rename* operation (content, then meta), not
|
|
23
|
+
* a single atomic commit. If the second rename fails permanently the disk holds
|
|
24
|
+
* new content with stale meta — which the next read self-heals via the sha256
|
|
25
|
+
* integrity check (mismatch ⇒ discard + refetch). Each fs step is wrapped in
|
|
26
|
+
* withFileOperationRetry so a transient Windows EBUSY/EPERM/ENOTEMPTY/EACCES
|
|
27
|
+
* from antivirus, the file indexer, or a concurrent reader is retried with
|
|
28
|
+
* backoff instead of turning a successful fetch into a cache-write failure.
|
|
29
|
+
*/
|
|
30
|
+
async function writeCacheAtomically(cacheFile, cacheMetaFile, content, meta) {
|
|
31
|
+
await withFileOperationRetry(() => fs.mkdir(CACHE_DIR, { recursive: true }));
|
|
32
|
+
const nonce = `${Date.now()}-${process.pid}-${Math.random().toString(36).slice(2, 8)}`;
|
|
33
|
+
const contentTmp = `${cacheFile}.${nonce}.tmp`;
|
|
34
|
+
const metaTmp = `${cacheMetaFile}.${nonce}.tmp`;
|
|
35
|
+
try {
|
|
36
|
+
await withFileOperationRetry(() => fs.writeFile(contentTmp, content, { encoding: "utf8" }));
|
|
37
|
+
await withFileOperationRetry(() => fs.writeFile(metaTmp, JSON.stringify(meta), { encoding: "utf8" }));
|
|
38
|
+
await withFileOperationRetry(() => fs.rename(contentTmp, cacheFile));
|
|
39
|
+
await withFileOperationRetry(() => fs.rename(metaTmp, cacheMetaFile));
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
// Route cleanup through withFileOperationRetry too: a transient Windows
|
|
43
|
+
// EBUSY/EPERM/ENOTEMPTY/EACCES from antivirus/the indexer/a concurrent
|
|
44
|
+
// reader on the temp sibling would otherwise leak a *.tmp file. force:true
|
|
45
|
+
// keeps ENOENT (already-renamed) a no-op; the catch swallows a persistent
|
|
46
|
+
// failure so cleanup never masks a successful write.
|
|
47
|
+
await withFileOperationRetry(() => fs.rm(contentTmp, { force: true })).catch(() => undefined);
|
|
48
|
+
await withFileOperationRetry(() => fs.rm(metaTmp, { force: true })).catch(() => undefined);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
7
51
|
const GITHUB_API_RELEASES = "https://api.github.com/repos/openai/codex/releases/latest";
|
|
8
52
|
const GITHUB_HTML_RELEASES = "https://github.com/openai/codex/releases/latest";
|
|
9
53
|
const CACHE_DIR = getCodexCacheDir();
|
|
@@ -95,9 +139,12 @@ async function getLatestReleaseTag() {
|
|
|
95
139
|
return latestReleaseTagCache.tag;
|
|
96
140
|
}
|
|
97
141
|
try {
|
|
98
|
-
const response = await
|
|
142
|
+
const response = await fetchWithTimeout(GITHUB_API_RELEASES, { json: true });
|
|
99
143
|
if (response.ok) {
|
|
100
|
-
|
|
144
|
+
// Guard the body read: the fetch AbortSignal only covers connect+headers
|
|
145
|
+
// (see fetch-utils), so a release API response that stalls mid-body would
|
|
146
|
+
// otherwise hang getLatestReleaseTag() indefinitely on this blocking path.
|
|
147
|
+
const data = (await withBodyTimeout(response, response.json()));
|
|
101
148
|
if (data.tag_name) {
|
|
102
149
|
latestReleaseTagCache = {
|
|
103
150
|
tag: data.tag_name,
|
|
@@ -110,7 +157,7 @@ async function getLatestReleaseTag() {
|
|
|
110
157
|
catch {
|
|
111
158
|
// Fall through to HTML fallback
|
|
112
159
|
}
|
|
113
|
-
const htmlResponse = await
|
|
160
|
+
const htmlResponse = await fetchWithTimeout(GITHUB_HTML_RELEASES);
|
|
114
161
|
if (!htmlResponse.ok) {
|
|
115
162
|
throw new Error(`Failed to fetch latest release: ${htmlResponse.status}`);
|
|
116
163
|
}
|
|
@@ -126,7 +173,8 @@ async function getLatestReleaseTag() {
|
|
|
126
173
|
return last;
|
|
127
174
|
}
|
|
128
175
|
}
|
|
129
|
-
|
|
176
|
+
// Same mid-body-stall guard as the JSON path above for the HTML fallback.
|
|
177
|
+
const html = await withBodyTimeout(htmlResponse, htmlResponse.text());
|
|
130
178
|
const match = html.match(/\/openai\/codex\/releases\/tag\/([^"]+)/);
|
|
131
179
|
if (match && match[1]) {
|
|
132
180
|
const tag = match[1];
|
|
@@ -171,15 +219,44 @@ export async function getCodexInstructions(normalizedModel = "gpt-5.3-codex") {
|
|
|
171
219
|
cachedMetadata = null;
|
|
172
220
|
}
|
|
173
221
|
}
|
|
222
|
+
// prompts-03: once we know the disk content fails its sha256, it must not be
|
|
223
|
+
// trusted anywhere downstream — not served, not used as the 304 revalidation
|
|
224
|
+
// body, and not used as the offline fallback in the catch below. Track a
|
|
225
|
+
// "usable" view of the disk content separate from the raw read.
|
|
226
|
+
let usableDiskContent = diskContent;
|
|
174
227
|
if (diskContent && cachedMetadata?.lastChecked) {
|
|
175
|
-
|
|
228
|
+
// prompts-03: a sha256 mismatch means a corrupted/tampered cache — discard it
|
|
229
|
+
// everywhere (not served, not the 304 body, not the offline fallback). A
|
|
230
|
+
// MISSING sha (pre-upgrade legacy cache) is merely *unverified*: it must not
|
|
231
|
+
// be fast-path served and must not drive conditional revalidation (a 304
|
|
232
|
+
// would mint a fresh digest over un-vetted bytes), so we force one full 200
|
|
233
|
+
// fetch to establish trust — but we keep the old bytes as an offline fallback
|
|
234
|
+
// in case that fetch fails.
|
|
235
|
+
const priorSha = cachedMetadata.sha256;
|
|
236
|
+
if (!priorSha) {
|
|
237
|
+
// Unverified legacy entry: clear meta so no If-None-Match is sent and the
|
|
238
|
+
// cache isn't served as-is; retain usableDiskContent for offline fallback.
|
|
239
|
+
cachedMetadata = null;
|
|
240
|
+
}
|
|
241
|
+
else if (priorSha !== sha256(diskContent)) {
|
|
242
|
+
logWarn(`Discarding corrupt prompt cache for ${modelFamily} (sha256 mismatch)`);
|
|
243
|
+
// Force a full refetch: drop the corrupt body so it cannot be served or
|
|
244
|
+
// used as the catch fallback, and clear the cached metadata so no
|
|
245
|
+
// If-None-Match is sent (a 304 would otherwise re-serve and re-bless the
|
|
246
|
+
// exact corrupt content this check is meant to reject).
|
|
247
|
+
usableDiskContent = null;
|
|
248
|
+
cachedMetadata = null;
|
|
249
|
+
}
|
|
250
|
+
else if (now - cachedMetadata.lastChecked < CACHE_TTL_MS) {
|
|
176
251
|
setCacheEntry(modelFamily, { content: diskContent, timestamp: now });
|
|
177
252
|
return diskContent;
|
|
178
253
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
254
|
+
else {
|
|
255
|
+
// Stale-while-revalidate: return stale cache immediately and refresh in background.
|
|
256
|
+
setCacheEntry(modelFamily, { content: diskContent, timestamp: now });
|
|
257
|
+
void refreshInstructionsInBackground(modelFamily, promptFile, cacheFile, cacheMetaFile, cachedMetadata);
|
|
258
|
+
return diskContent;
|
|
259
|
+
}
|
|
183
260
|
}
|
|
184
261
|
if (cached && now - cached.timestamp >= CACHE_TTL_MS) {
|
|
185
262
|
// Keep session latency stable by serving stale memory cache while refreshing.
|
|
@@ -193,10 +270,10 @@ export async function getCodexInstructions(normalizedModel = "gpt-5.3-codex") {
|
|
|
193
270
|
catch (error) {
|
|
194
271
|
const err = error;
|
|
195
272
|
logError(`Failed to fetch ${modelFamily} instructions from GitHub: ${err.message}`);
|
|
196
|
-
if (
|
|
273
|
+
if (usableDiskContent) {
|
|
197
274
|
logWarn(`Using cached ${modelFamily} instructions`);
|
|
198
|
-
setCacheEntry(modelFamily, { content:
|
|
199
|
-
return
|
|
275
|
+
setCacheEntry(modelFamily, { content: usableDiskContent, timestamp: now });
|
|
276
|
+
return usableDiskContent;
|
|
200
277
|
}
|
|
201
278
|
logWarn(`Falling back to bundled instructions for ${modelFamily}`);
|
|
202
279
|
const bundled = await fs.readFile(join(__dirname, "codex-instructions.md"), "utf8");
|
|
@@ -216,36 +293,54 @@ async function fetchAndPersistInstructions(modelFamily, promptFile, cacheFile, c
|
|
|
216
293
|
if (cachedETag) {
|
|
217
294
|
headers["If-None-Match"] = cachedETag;
|
|
218
295
|
}
|
|
219
|
-
const response = await
|
|
220
|
-
if
|
|
296
|
+
const response = await fetchWithTimeout(instructionsUrl, { headers });
|
|
297
|
+
// A 304 is only meaningful if we actually sent a conditional request. When the
|
|
298
|
+
// caller cleared the metadata (e.g. an sha256 mismatch forced a full refetch),
|
|
299
|
+
// cachedETag is null and no If-None-Match was sent, so a 304 here cannot be
|
|
300
|
+
// trusted to describe our disk content — fall through to the error path rather
|
|
301
|
+
// than re-serving (and re-blessing) whatever is on disk.
|
|
302
|
+
if (response.status === 304 && cachedETag) {
|
|
221
303
|
const diskContent = await readFileOrNull(cacheFile);
|
|
222
|
-
if
|
|
304
|
+
// Only re-serve the disk content if it still matches the integrity hash we
|
|
305
|
+
// had on record. Recomputing and trusting the hash unconditionally would
|
|
306
|
+
// launder tampered bytes; verifying against the prior sha closes that.
|
|
307
|
+
const priorSha = cachedMetadata?.sha256;
|
|
308
|
+
// Require a prior sha to trust a 304: without one the on-disk bytes are
|
|
309
|
+
// unverified, so re-serving them and minting a fresh digest would launder
|
|
310
|
+
// un-vetted content. A missing sha forces the full-fetch path below.
|
|
311
|
+
const diskIntegrityOk = diskContent !== null && !!priorSha && priorSha === sha256(diskContent);
|
|
312
|
+
if (diskContent && diskIntegrityOk) {
|
|
223
313
|
setCacheEntry(modelFamily, { content: diskContent, timestamp: Date.now() });
|
|
224
|
-
|
|
225
|
-
|
|
314
|
+
// Refresh the meta (lastChecked) atomically and re-affirm the content sha
|
|
315
|
+
// so a 304 keeps the integrity record in sync with the on-disk content.
|
|
316
|
+
await writeCacheAtomically(cacheFile, cacheMetaFile, diskContent, {
|
|
226
317
|
etag: cachedETag,
|
|
227
318
|
tag: latestTag,
|
|
228
319
|
lastChecked: Date.now(),
|
|
229
320
|
url: instructionsUrl,
|
|
230
|
-
|
|
321
|
+
sha256: sha256(diskContent),
|
|
322
|
+
});
|
|
231
323
|
return diskContent;
|
|
232
324
|
}
|
|
325
|
+
// 304 but the disk content is missing or fails its integrity check: treat as
|
|
326
|
+
// a fetch failure so the caller falls back to bundled instructions.
|
|
327
|
+
throw new Error("304 revalidation failed integrity check");
|
|
233
328
|
}
|
|
234
329
|
if (!response.ok) {
|
|
235
330
|
throw new Error(`HTTP ${response.status}`);
|
|
236
331
|
}
|
|
237
|
-
|
|
332
|
+
// Size-cap + reject empty bodies (prompts-04/05) before caching/serving.
|
|
333
|
+
const instructions = await readBodyTextGuarded(response);
|
|
238
334
|
const newETag = response.headers.get("etag");
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
]);
|
|
335
|
+
// prompts-03/06: write content + meta atomically with a content sha256 so the
|
|
336
|
+
// cache cannot tear and can be integrity-checked on the next read.
|
|
337
|
+
await writeCacheAtomically(cacheFile, cacheMetaFile, instructions, {
|
|
338
|
+
etag: newETag,
|
|
339
|
+
tag: latestTag,
|
|
340
|
+
lastChecked: Date.now(),
|
|
341
|
+
url: instructionsUrl,
|
|
342
|
+
sha256: sha256(instructions),
|
|
343
|
+
});
|
|
249
344
|
setCacheEntry(modelFamily, { content: instructions, timestamp: Date.now() });
|
|
250
345
|
return instructions;
|
|
251
346
|
}
|
|
@@ -290,84 +385,84 @@ export function prewarmCodexInstructions(models = []) {
|
|
|
290
385
|
/**
|
|
291
386
|
* Tool remapping instructions for host runtime tools
|
|
292
387
|
*/
|
|
293
|
-
export const TOOL_REMAP_MESSAGE = `<user_instructions priority="0">
|
|
294
|
-
<environment_override priority="0">
|
|
295
|
-
YOU ARE IN A DIFFERENT ENVIRONMENT. These instructions override ALL previous tool references.
|
|
296
|
-
</environment_override>
|
|
297
|
-
|
|
298
|
-
<tool_replacements priority="0">
|
|
299
|
-
<critical_rule priority="0">
|
|
300
|
-
apply_patch/applyPatch are Codex names, but host tool names vary by version.
|
|
301
|
-
- Inspect the actual tool list before editing.
|
|
302
|
-
- If edit exists: use edit for precise in-place string replacements and hashline edits.
|
|
303
|
-
- If edit is absent and apply_patch exists: use apply_patch for those precise/hashline edits in this plugin.
|
|
304
|
-
- For diff-style or multi-line structural edits: use patch if available, otherwise use apply_patch.
|
|
305
|
-
- In this plugin, edit/apply_patch support hashline refs (lineRef, endLineRef, operation, content)
|
|
306
|
-
</critical_rule>
|
|
307
|
-
|
|
308
|
-
<critical_rule priority="0">
|
|
309
|
-
UPDATE_PLAN DOES NOT EXIST -> USE "todowrite" INSTEAD
|
|
310
|
-
- NEVER use: update_plan, updatePlan
|
|
311
|
-
- ALWAYS use: todowrite for ALL task/plan operations
|
|
312
|
-
- Use todoread to read current plan
|
|
313
|
-
- Before plan operations: Verify you're using "todowrite", NOT "update_plan"
|
|
314
|
-
</critical_rule>
|
|
315
|
-
</tool_replacements>
|
|
316
|
-
|
|
317
|
-
<available_tools priority="0">
|
|
318
|
-
File Operations:
|
|
319
|
-
- write - Create new files (if available)
|
|
320
|
-
- edit - Modify existing files with string replacement (version-dependent)
|
|
321
|
-
- oldString must be literal text from the current file; never pass unresolved placeholders like \${TARGET_SNIPPET}
|
|
322
|
-
- apply_patch - May be the edit/patch tool name in newer host builds (version-dependent)
|
|
323
|
-
- hashline_read - Read lines with hashline refs (L<line>#<hash>) for deterministic edits
|
|
324
|
-
- patch - Apply diff patches (version-dependent)
|
|
325
|
-
- read - Read file contents
|
|
326
|
-
|
|
327
|
-
Search/Discovery:
|
|
328
|
-
- grep - Search file contents
|
|
329
|
-
- glob - Find files by pattern
|
|
330
|
-
- list - List directories (if available)
|
|
331
|
-
|
|
332
|
-
Execution:
|
|
333
|
-
- bash - Run shell commands
|
|
334
|
-
|
|
335
|
-
Network:
|
|
336
|
-
- webfetch - Fetch web content
|
|
337
|
-
|
|
338
|
-
Task Management:
|
|
339
|
-
- todowrite - Manage tasks/plans (REPLACES update_plan)
|
|
340
|
-
- todoread - Read current plan
|
|
341
|
-
</available_tools>
|
|
342
|
-
|
|
343
|
-
<substitution_rules priority="0">
|
|
344
|
-
Base instruction says: You MUST use instead:
|
|
345
|
-
apply_patch -> patch (preferred if available), otherwise edit/apply_patch based on actual tool list
|
|
346
|
-
update_plan -> todowrite
|
|
347
|
-
read_plan -> todoread
|
|
348
|
-
absolute paths -> relative paths
|
|
349
|
-
</substitution_rules>
|
|
350
|
-
|
|
351
|
-
<verification_checklist priority="0">
|
|
352
|
-
Before file/plan modifications:
|
|
353
|
-
1. Am I using the actual available edit tool name (edit, patch, or apply_patch)?
|
|
354
|
-
2. Am I using "todowrite" NOT "update_plan"?
|
|
355
|
-
3. Is this tool in the approved list above?
|
|
356
|
-
4. Am I using relative paths?
|
|
357
|
-
|
|
358
|
-
If ANY answer is NO -> STOP and correct before proceeding.
|
|
359
|
-
</verification_checklist>
|
|
360
|
-
|
|
361
|
-
<hashline_workflow priority="0">
|
|
362
|
-
When hashline_read is available:
|
|
363
|
-
1. call hashline_read on the file
|
|
364
|
-
2. edit/apply_patch using lineRef/endLineRef + operation + content
|
|
365
|
-
3. use oldString/newString only as fallback, and only with literal file text (no template placeholders)
|
|
366
|
-
</hashline_workflow>
|
|
367
|
-
|
|
368
|
-
<safety_rules priority="0">
|
|
369
|
-
- Never run destructive git commands (\`git reset --hard\`, \`git checkout --\`) unless explicitly requested by the user.
|
|
370
|
-
- Never call \`request_user_input\` unless collaboration mode is explicitly Plan mode.
|
|
371
|
-
</safety_rules>
|
|
388
|
+
export const TOOL_REMAP_MESSAGE = `<user_instructions priority="0">
|
|
389
|
+
<environment_override priority="0">
|
|
390
|
+
YOU ARE IN A DIFFERENT ENVIRONMENT. These instructions override ALL previous tool references.
|
|
391
|
+
</environment_override>
|
|
392
|
+
|
|
393
|
+
<tool_replacements priority="0">
|
|
394
|
+
<critical_rule priority="0">
|
|
395
|
+
apply_patch/applyPatch are Codex names, but host tool names vary by version.
|
|
396
|
+
- Inspect the actual tool list before editing.
|
|
397
|
+
- If edit exists: use edit for precise in-place string replacements and hashline edits.
|
|
398
|
+
- If edit is absent and apply_patch exists: use apply_patch for those precise/hashline edits in this plugin.
|
|
399
|
+
- For diff-style or multi-line structural edits: use patch if available, otherwise use apply_patch.
|
|
400
|
+
- In this plugin, edit/apply_patch support hashline refs (lineRef, endLineRef, operation, content)
|
|
401
|
+
</critical_rule>
|
|
402
|
+
|
|
403
|
+
<critical_rule priority="0">
|
|
404
|
+
UPDATE_PLAN DOES NOT EXIST -> USE "todowrite" INSTEAD
|
|
405
|
+
- NEVER use: update_plan, updatePlan
|
|
406
|
+
- ALWAYS use: todowrite for ALL task/plan operations
|
|
407
|
+
- Use todoread to read current plan
|
|
408
|
+
- Before plan operations: Verify you're using "todowrite", NOT "update_plan"
|
|
409
|
+
</critical_rule>
|
|
410
|
+
</tool_replacements>
|
|
411
|
+
|
|
412
|
+
<available_tools priority="0">
|
|
413
|
+
File Operations:
|
|
414
|
+
- write - Create new files (if available)
|
|
415
|
+
- edit - Modify existing files with string replacement (version-dependent)
|
|
416
|
+
- oldString must be literal text from the current file; never pass unresolved placeholders like \${TARGET_SNIPPET}
|
|
417
|
+
- apply_patch - May be the edit/patch tool name in newer host builds (version-dependent)
|
|
418
|
+
- hashline_read - Read lines with hashline refs (L<line>#<hash>) for deterministic edits
|
|
419
|
+
- patch - Apply diff patches (version-dependent)
|
|
420
|
+
- read - Read file contents
|
|
421
|
+
|
|
422
|
+
Search/Discovery:
|
|
423
|
+
- grep - Search file contents
|
|
424
|
+
- glob - Find files by pattern
|
|
425
|
+
- list - List directories (if available)
|
|
426
|
+
|
|
427
|
+
Execution:
|
|
428
|
+
- bash - Run shell commands
|
|
429
|
+
|
|
430
|
+
Network:
|
|
431
|
+
- webfetch - Fetch web content
|
|
432
|
+
|
|
433
|
+
Task Management:
|
|
434
|
+
- todowrite - Manage tasks/plans (REPLACES update_plan)
|
|
435
|
+
- todoread - Read current plan
|
|
436
|
+
</available_tools>
|
|
437
|
+
|
|
438
|
+
<substitution_rules priority="0">
|
|
439
|
+
Base instruction says: You MUST use instead:
|
|
440
|
+
apply_patch -> patch (preferred if available), otherwise edit/apply_patch based on actual tool list
|
|
441
|
+
update_plan -> todowrite
|
|
442
|
+
read_plan -> todoread
|
|
443
|
+
absolute paths -> relative paths
|
|
444
|
+
</substitution_rules>
|
|
445
|
+
|
|
446
|
+
<verification_checklist priority="0">
|
|
447
|
+
Before file/plan modifications:
|
|
448
|
+
1. Am I using the actual available edit tool name (edit, patch, or apply_patch)?
|
|
449
|
+
2. Am I using "todowrite" NOT "update_plan"?
|
|
450
|
+
3. Is this tool in the approved list above?
|
|
451
|
+
4. Am I using relative paths?
|
|
452
|
+
|
|
453
|
+
If ANY answer is NO -> STOP and correct before proceeding.
|
|
454
|
+
</verification_checklist>
|
|
455
|
+
|
|
456
|
+
<hashline_workflow priority="0">
|
|
457
|
+
When hashline_read is available:
|
|
458
|
+
1. call hashline_read on the file
|
|
459
|
+
2. edit/apply_patch using lineRef/endLineRef + operation + content
|
|
460
|
+
3. use oldString/newString only as fallback, and only with literal file text (no template placeholders)
|
|
461
|
+
</hashline_workflow>
|
|
462
|
+
|
|
463
|
+
<safety_rules priority="0">
|
|
464
|
+
- Never run destructive git commands (\`git reset --hard\`, \`git checkout --\`) unless explicitly requested by the user.
|
|
465
|
+
- Never call \`request_user_input\` unless collaboration mode is explicitly Plan mode.
|
|
466
|
+
</safety_rules>
|
|
372
467
|
</user_instructions>`;
|
|
373
468
|
//# sourceMappingURL=codex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared, hardened fetch helpers for the GitHub-backed prompt fetchers.
|
|
3
|
+
*
|
|
4
|
+
* Both prompt sources (lib/prompts/codex.ts and lib/prompts/host-codex-prompt.ts)
|
|
5
|
+
* pull text over the network on a request-blocking path. These helpers add the
|
|
6
|
+
* guards that were missing (prompts-02/04/05/08):
|
|
7
|
+
* - a bounded fetch timeout via AbortSignal so a hung GitHub connection cannot
|
|
8
|
+
* stall the request pipeline indefinitely (prompts-02)
|
|
9
|
+
* - a maximum response size, checked against Content-Length and enforced while
|
|
10
|
+
* reading, so a pathological body cannot exhaust memory (prompts-04)
|
|
11
|
+
* - rejection of empty / whitespace-only 200 bodies so a bad response is not
|
|
12
|
+
* cached and served as "instructions" (prompts-05)
|
|
13
|
+
* - a User-Agent (api.github.com rejects requests without one) plus a sensible
|
|
14
|
+
* Accept, applied to every request (prompts-08)
|
|
15
|
+
*/
|
|
16
|
+
export declare const PROMPT_FETCH_TIMEOUT_MS = 10000;
|
|
17
|
+
export declare const PROMPT_FETCH_MAX_BYTES = 1000000;
|
|
18
|
+
export declare const PROMPT_FETCH_USER_AGENT = "codex-multi-auth";
|
|
19
|
+
export interface PromptFetchOptions {
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
timeoutMs?: number;
|
|
22
|
+
maxBytes?: number;
|
|
23
|
+
/** When true, also request GitHub's JSON API content type. */
|
|
24
|
+
json?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Merge caller headers with the mandatory User-Agent / Accept defaults.
|
|
28
|
+
*
|
|
29
|
+
* The mandatory headers are applied AFTER the caller's so they always win: a
|
|
30
|
+
* caller must not be able to blank or replace `User-Agent` / `Accept` and
|
|
31
|
+
* bypass the hardening this helper guarantees on every prompt fetch (api.github
|
|
32
|
+
* .com rejects requests without a User-Agent). Caller headers are still honored
|
|
33
|
+
* for everything else (e.g. `If-None-Match`).
|
|
34
|
+
*/
|
|
35
|
+
export declare function withPromptFetchHeaders(headers?: Record<string, string>, json?: boolean): Record<string, string>;
|
|
36
|
+
/**
|
|
37
|
+
* fetch() with a bounded timeout. Returns the Response (caller inspects status).
|
|
38
|
+
* Throws on timeout/network error, matching native fetch rejection semantics.
|
|
39
|
+
*/
|
|
40
|
+
export declare function fetchWithTimeout(url: string, options?: PromptFetchOptions, fetchImpl?: typeof fetch): Promise<Response>;
|
|
41
|
+
/**
|
|
42
|
+
* Race a response-body read against a bounded timeout, cancelling the underlying
|
|
43
|
+
* stream on timeout (prompts-02).
|
|
44
|
+
*
|
|
45
|
+
* `fetchWithTimeout`'s AbortSignal only covers connect+headers and is cleared
|
|
46
|
+
* once the Response arrives, so a server that sends headers then stalls mid-body
|
|
47
|
+
* makes `response.json()` / `response.text()` hang forever on a request-blocking
|
|
48
|
+
* path. This races the read against a timeout AND, on timeout, calls
|
|
49
|
+
* `response.body.cancel()` so the stalled body stops consuming the connection
|
|
50
|
+
* instead of leaking until GC/socket close. Unlike `readBodyTextGuarded` it adds
|
|
51
|
+
* no size/Content-Length/empty checks, so it is safe for the small
|
|
52
|
+
* release-metadata reads that just need the hang guard. For fetch impls / mocks
|
|
53
|
+
* without a streamable `body`, the cancel is a no-op and the timeout still
|
|
54
|
+
* rejects.
|
|
55
|
+
*/
|
|
56
|
+
export declare function withBodyTimeout<T>(response: Pick<Response, "body">, read: Promise<T>, timeoutMs?: number): Promise<T>;
|
|
57
|
+
/**
|
|
58
|
+
* Read a response body as text with a size ceiling, rejecting empty bodies.
|
|
59
|
+
*
|
|
60
|
+
* Checks Content-Length first (fast reject), then enforces the cap while
|
|
61
|
+
* streaming so a server that omits/understates the header still cannot exceed
|
|
62
|
+
* the limit. Throws on oversize or empty/whitespace-only content so the caller
|
|
63
|
+
* treats it as a fetch failure and falls back to disk/bundled content.
|
|
64
|
+
*
|
|
65
|
+
* prompts-02: the streaming read also enforces a per-chunk idle timeout. The
|
|
66
|
+
* fetch-level AbortSignal in `fetchWithTimeout` only covers connect+headers and
|
|
67
|
+
* is cleared once the Response arrives, so without this a server that sends
|
|
68
|
+
* headers then stalls mid-body would hang this request-blocking path forever.
|
|
69
|
+
* If no chunk arrives within `timeoutMs`, the read is aborted and rejected.
|
|
70
|
+
*/
|
|
71
|
+
export declare function readBodyTextGuarded(response: Response, maxBytes?: number, timeoutMs?: number): Promise<string>;
|
|
72
|
+
//# sourceMappingURL=fetch-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-utils.d.ts","sourceRoot":"","sources":["../../../lib/prompts/fetch-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,sBAAsB,UAAY,CAAC;AAChD,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,IAAI,UAAQ,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,kBAAuB,EAChC,SAAS,GAAE,OAAO,KAAa,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAYnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAChC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,SAAS,GAAE,MAAgC,GACzC,OAAO,CAAC,CAAC,CAAC,CAqBZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACxC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,GAAE,MAA+B,EACzC,SAAS,GAAE,MAAgC,GACzC,OAAO,CAAC,MAAM,CAAC,CA2DjB"}
|