codex-multi-auth 2.1.13-beta.2 → 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.
Files changed (179) hide show
  1. package/README.md +3 -3
  2. package/dist/lib/accounts.d.ts.map +1 -1
  3. package/dist/lib/accounts.js +30 -1
  4. package/dist/lib/accounts.js.map +1 -1
  5. package/dist/lib/auth/org-override.d.ts +19 -0
  6. package/dist/lib/auth/org-override.d.ts.map +1 -0
  7. package/dist/lib/auth/org-override.js +23 -0
  8. package/dist/lib/auth/org-override.js.map +1 -0
  9. package/dist/lib/circuit-breaker.d.ts +6 -0
  10. package/dist/lib/circuit-breaker.d.ts.map +1 -1
  11. package/dist/lib/circuit-breaker.js +8 -0
  12. package/dist/lib/circuit-breaker.js.map +1 -1
  13. package/dist/lib/codex-manager/account-manager-commands.d.ts +14 -0
  14. package/dist/lib/codex-manager/account-manager-commands.d.ts.map +1 -0
  15. package/dist/lib/codex-manager/account-manager-commands.js +43 -0
  16. package/dist/lib/codex-manager/account-manager-commands.js.map +1 -0
  17. package/dist/lib/codex-manager/commands/best.d.ts +1 -1
  18. package/dist/lib/codex-manager/commands/best.d.ts.map +1 -1
  19. package/dist/lib/codex-manager/commands/best.js +2 -1
  20. package/dist/lib/codex-manager/commands/best.js.map +1 -1
  21. package/dist/lib/codex-manager/commands/debug-bundle.d.ts +16 -0
  22. package/dist/lib/codex-manager/commands/debug-bundle.d.ts.map +1 -1
  23. package/dist/lib/codex-manager/commands/debug-bundle.js +80 -5
  24. package/dist/lib/codex-manager/commands/debug-bundle.js.map +1 -1
  25. package/dist/lib/codex-manager/commands/forecast.d.ts +1 -1
  26. package/dist/lib/codex-manager/commands/forecast.d.ts.map +1 -1
  27. package/dist/lib/codex-manager/commands/forecast.js +2 -1
  28. package/dist/lib/codex-manager/commands/forecast.js.map +1 -1
  29. package/dist/lib/codex-manager/commands/report.d.ts.map +1 -1
  30. package/dist/lib/codex-manager/commands/report.js +2 -2
  31. package/dist/lib/codex-manager/commands/report.js.map +1 -1
  32. package/dist/lib/codex-manager/commands/status.d.ts +2 -0
  33. package/dist/lib/codex-manager/commands/status.d.ts.map +1 -1
  34. package/dist/lib/codex-manager/commands/status.js +84 -25
  35. package/dist/lib/codex-manager/commands/status.js.map +1 -1
  36. package/dist/lib/codex-manager/commands/switch.d.ts.map +1 -1
  37. package/dist/lib/codex-manager/commands/switch.js +7 -0
  38. package/dist/lib/codex-manager/commands/switch.js.map +1 -1
  39. package/dist/lib/codex-manager/experimental-settings-prompt.d.ts.map +1 -1
  40. package/dist/lib/codex-manager/experimental-settings-prompt.js +13 -3
  41. package/dist/lib/codex-manager/experimental-settings-prompt.js.map +1 -1
  42. package/dist/lib/codex-manager/forecast-report-commands.d.ts.map +1 -1
  43. package/dist/lib/codex-manager/forecast-report-commands.js +3 -3
  44. package/dist/lib/codex-manager/forecast-report-commands.js.map +1 -1
  45. package/dist/lib/codex-manager/repair-commands.d.ts.map +1 -1
  46. package/dist/lib/codex-manager/repair-commands.js +11 -1
  47. package/dist/lib/codex-manager/repair-commands.js.map +1 -1
  48. package/dist/lib/codex-manager/settings-hub/experimental.d.ts.map +1 -1
  49. package/dist/lib/codex-manager/settings-hub/experimental.js +8 -0
  50. package/dist/lib/codex-manager/settings-hub/experimental.js.map +1 -1
  51. package/dist/lib/codex-manager.d.ts +3 -0
  52. package/dist/lib/codex-manager.d.ts.map +1 -1
  53. package/dist/lib/codex-manager.js +53 -65
  54. package/dist/lib/codex-manager.js.map +1 -1
  55. package/dist/lib/config.d.ts.map +1 -1
  56. package/dist/lib/config.js +110 -5
  57. package/dist/lib/config.js.map +1 -1
  58. package/dist/lib/context-overflow.d.ts +7 -2
  59. package/dist/lib/context-overflow.d.ts.map +1 -1
  60. package/dist/lib/context-overflow.js +55 -37
  61. package/dist/lib/context-overflow.js.map +1 -1
  62. package/dist/lib/errors.d.ts +16 -0
  63. package/dist/lib/errors.d.ts.map +1 -1
  64. package/dist/lib/errors.js +23 -0
  65. package/dist/lib/errors.js.map +1 -1
  66. package/dist/lib/local-bridge.d.ts +8 -0
  67. package/dist/lib/local-bridge.d.ts.map +1 -1
  68. package/dist/lib/local-bridge.js +81 -7
  69. package/dist/lib/local-bridge.js.map +1 -1
  70. package/dist/lib/logger.d.ts +9 -1
  71. package/dist/lib/logger.d.ts.map +1 -1
  72. package/dist/lib/logger.js +104 -19
  73. package/dist/lib/logger.js.map +1 -1
  74. package/dist/lib/oc-chatgpt-orchestrator.d.ts +7 -1
  75. package/dist/lib/oc-chatgpt-orchestrator.d.ts.map +1 -1
  76. package/dist/lib/oc-chatgpt-orchestrator.js +68 -9
  77. package/dist/lib/oc-chatgpt-orchestrator.js.map +1 -1
  78. package/dist/lib/policy/runtime-policy.d.ts.map +1 -1
  79. package/dist/lib/policy/runtime-policy.js +15 -1
  80. package/dist/lib/policy/runtime-policy.js.map +1 -1
  81. package/dist/lib/prompts/codex.d.ts.map +1 -1
  82. package/dist/lib/prompts/codex.js +124 -29
  83. package/dist/lib/prompts/codex.js.map +1 -1
  84. package/dist/lib/prompts/fetch-utils.d.ts +72 -0
  85. package/dist/lib/prompts/fetch-utils.d.ts.map +1 -0
  86. package/dist/lib/prompts/fetch-utils.js +165 -0
  87. package/dist/lib/prompts/fetch-utils.js.map +1 -0
  88. package/dist/lib/prompts/host-codex-prompt.d.ts.map +1 -1
  89. package/dist/lib/prompts/host-codex-prompt.js +24 -10
  90. package/dist/lib/prompts/host-codex-prompt.js.map +1 -1
  91. package/dist/lib/quota-cache.d.ts.map +1 -1
  92. package/dist/lib/quota-cache.js +10 -1
  93. package/dist/lib/quota-cache.js.map +1 -1
  94. package/dist/lib/quota-probe.d.ts +21 -0
  95. package/dist/lib/quota-probe.d.ts.map +1 -1
  96. package/dist/lib/quota-probe.js +39 -0
  97. package/dist/lib/quota-probe.js.map +1 -1
  98. package/dist/lib/quota-readiness.d.ts +3 -1
  99. package/dist/lib/quota-readiness.d.ts.map +1 -1
  100. package/dist/lib/quota-readiness.js +16 -3
  101. package/dist/lib/quota-readiness.js.map +1 -1
  102. package/dist/lib/recovery/storage.d.ts +7 -0
  103. package/dist/lib/recovery/storage.d.ts.map +1 -1
  104. package/dist/lib/recovery/storage.js +178 -10
  105. package/dist/lib/recovery/storage.js.map +1 -1
  106. package/dist/lib/refresh-lease.d.ts +1 -1
  107. package/dist/lib/refresh-lease.d.ts.map +1 -1
  108. package/dist/lib/refresh-lease.js +25 -3
  109. package/dist/lib/refresh-lease.js.map +1 -1
  110. package/dist/lib/refresh-queue.d.ts.map +1 -1
  111. package/dist/lib/refresh-queue.js +31 -17
  112. package/dist/lib/refresh-queue.js.map +1 -1
  113. package/dist/lib/request/fetch-helpers.d.ts +0 -5
  114. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  115. package/dist/lib/request/fetch-helpers.js +36 -7
  116. package/dist/lib/request/fetch-helpers.js.map +1 -1
  117. package/dist/lib/rotation.d.ts +12 -0
  118. package/dist/lib/rotation.d.ts.map +1 -1
  119. package/dist/lib/rotation.js +36 -0
  120. package/dist/lib/rotation.js.map +1 -1
  121. package/dist/lib/runtime/account-check-types.d.ts +1 -0
  122. package/dist/lib/runtime/account-check-types.d.ts.map +1 -1
  123. package/dist/lib/runtime/account-check-types.js +1 -0
  124. package/dist/lib/runtime/account-check-types.js.map +1 -1
  125. package/dist/lib/runtime/account-check.d.ts.map +1 -1
  126. package/dist/lib/runtime/account-check.js +15 -4
  127. package/dist/lib/runtime/account-check.js.map +1 -1
  128. package/dist/lib/runtime/runtime-observability.d.ts.map +1 -1
  129. package/dist/lib/runtime/runtime-observability.js +24 -2
  130. package/dist/lib/runtime/runtime-observability.js.map +1 -1
  131. package/dist/lib/runtime-rotation-proxy.d.ts +1 -0
  132. package/dist/lib/runtime-rotation-proxy.d.ts.map +1 -1
  133. package/dist/lib/runtime-rotation-proxy.js +163 -16
  134. package/dist/lib/runtime-rotation-proxy.js.map +1 -1
  135. package/dist/lib/storage/account-clear.d.ts.map +1 -1
  136. package/dist/lib/storage/account-clear.js +4 -2
  137. package/dist/lib/storage/account-clear.js.map +1 -1
  138. package/dist/lib/storage/flagged-storage-io.d.ts.map +1 -1
  139. package/dist/lib/storage/flagged-storage-io.js +4 -1
  140. package/dist/lib/storage/flagged-storage-io.js.map +1 -1
  141. package/dist/lib/storage/import-export.d.ts.map +1 -1
  142. package/dist/lib/storage/import-export.js +29 -9
  143. package/dist/lib/storage/import-export.js.map +1 -1
  144. package/dist/lib/storage/paths.d.ts.map +1 -1
  145. package/dist/lib/storage/paths.js +93 -0
  146. package/dist/lib/storage/paths.js.map +1 -1
  147. package/dist/lib/storage/storage-parser.d.ts.map +1 -1
  148. package/dist/lib/storage/storage-parser.js +7 -1
  149. package/dist/lib/storage/storage-parser.js.map +1 -1
  150. package/dist/lib/storage.d.ts.map +1 -1
  151. package/dist/lib/storage.js +13 -9
  152. package/dist/lib/storage.js.map +1 -1
  153. package/dist/lib/table-formatter.d.ts.map +1 -1
  154. package/dist/lib/table-formatter.js +20 -2
  155. package/dist/lib/table-formatter.js.map +1 -1
  156. package/dist/lib/types.d.ts +7 -0
  157. package/dist/lib/types.d.ts.map +1 -1
  158. package/dist/lib/ui/auth-menu.d.ts.map +1 -1
  159. package/dist/lib/ui/auth-menu.js +8 -2
  160. package/dist/lib/ui/auth-menu.js.map +1 -1
  161. package/dist/lib/ui/display-width.d.ts +27 -0
  162. package/dist/lib/ui/display-width.d.ts.map +1 -0
  163. package/dist/lib/ui/display-width.js +194 -0
  164. package/dist/lib/ui/display-width.js.map +1 -0
  165. package/dist/lib/ui/select.d.ts +23 -0
  166. package/dist/lib/ui/select.d.ts.map +1 -1
  167. package/dist/lib/ui/select.js +64 -16
  168. package/dist/lib/ui/select.js.map +1 -1
  169. package/dist/lib/ui/theme.d.ts +13 -0
  170. package/dist/lib/ui/theme.d.ts.map +1 -1
  171. package/dist/lib/ui/theme.js +34 -1
  172. package/dist/lib/ui/theme.js.map +1 -1
  173. package/node_modules/@codex-ai/sdk/dist/index.d.ts +4 -0
  174. package/node_modules/@codex-ai/sdk/dist/index.js +2 -0
  175. package/node_modules/@codex-ai/sdk/package.json +8 -0
  176. package/package.json +9 -6
  177. package/scripts/codex-routing.js +3 -0
  178. package/scripts/codex.js +508 -1
  179. package/scripts/mcodex +117 -0
@@ -1 +1 @@
1
- {"version":3,"file":"oc-chatgpt-orchestrator.js","sourceRoot":"","sources":["../../lib/oc-chatgpt-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oc-chatgpt-orchestrator.js","sourceRoot":"","sources":["../../lib/oc-chatgpt-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-policy.d.ts","sourceRoot":"","sources":["../../../lib/policy/runtime-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-policy.d.ts","sourceRoot":"","sources":["../../../lib/policy/runtime-policy.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { resolveEntitlementAccountKey } from "../entitlement-cache.js";
1
2
  import { getAccountPolicyKey, loadAccountPolicyStore, } from "../account-policy.js";
2
3
  import { evaluateBudgetGuard, getBudgetWindowStart, loadBudgetGuardStore, } from "../budget-guard.js";
3
4
  import { resolveProjectRoutingProfile, } from "../routing-profiles.js";
@@ -47,6 +48,10 @@ async function evaluateBudgets(input) {
47
48
  const summary = await summarizeUsageLedger({
48
49
  since: getBudgetWindowStart(limit.window, input.now),
49
50
  until: input.now,
51
+ // Budget windows (e.g. monthly) can span a ledger rotation. Without archives,
52
+ // rotated-out rows are dropped from the sum, under-counting spend and letting
53
+ // usage exceed the limit within the active window (quota-forecast-03).
54
+ includeArchives: true,
50
55
  });
51
56
  evaluations.push(evaluateBudgetGuard(limit, summary));
52
57
  }
@@ -100,7 +105,16 @@ export async function evaluateRuntimePolicy(input) {
100
105
  if (profile?.accountWeightByKey[accountKey] !== undefined) {
101
106
  boost += (profile.accountWeightByKey[accountKey] ?? 0) * 2;
102
107
  }
103
- const capabilitySnapshot = input.capabilityPolicy?.getSnapshot(accountKey, input.model ?? "unknown");
108
+ // quota-forecast-01: the capability store is WRITTEN under the entitlement
109
+ // key (resolveEntitlementAccountKey) at the recordUnsupported sites, so the
110
+ // read must use the same key. Previously this used getAccountPolicyKey, a
111
+ // different format, so getSnapshot never matched and suppression was dead.
112
+ const capabilityKey = resolveEntitlementAccountKey({
113
+ accountId: account.accountId ?? undefined,
114
+ email: account.email ?? undefined,
115
+ index: account.index,
116
+ });
117
+ const capabilitySnapshot = input.capabilityPolicy?.getSnapshot(capabilityKey, input.model ?? "unknown");
104
118
  if (capabilitySnapshot && capabilitySnapshot.unsupported > 0) {
105
119
  blockedAccountIndexes.add(account.index);
106
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-policy.js","sourceRoot":"","sources":["../../../lib/policy/runtime-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-policy.js","sourceRoot":"","sources":["../../../lib/policy/runtime-policy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAkB1F;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C;AAWD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAMvC,CAAC;AAyBX;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,CAEnE;AAwED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACzC,eAAe,SAAkB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAuFjB;AAsGD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,IAAI,CAiBpE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,ozGA+EV,CAAC"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../lib/prompts/codex.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AA2E1F;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C;AAWD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAMvC,CAAC;AAyBX;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,CAEnE;AA4ED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACzC,eAAe,SAAkB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAkHjB;AA6GD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,IAAI,CAiBpE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,ozGA+EV,CAAC"}
@@ -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 fetch(GITHUB_API_RELEASES);
142
+ const response = await fetchWithTimeout(GITHUB_API_RELEASES, { json: true });
99
143
  if (response.ok) {
100
- const data = (await response.json());
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 fetch(GITHUB_HTML_RELEASES);
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
- const html = await htmlResponse.text();
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
- if (now - cachedMetadata.lastChecked < CACHE_TTL_MS) {
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
- // Stale-while-revalidate: return stale cache immediately and refresh in background.
180
- setCacheEntry(modelFamily, { content: diskContent, timestamp: now });
181
- void refreshInstructionsInBackground(modelFamily, promptFile, cacheFile, cacheMetaFile, cachedMetadata);
182
- return diskContent;
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 (diskContent) {
273
+ if (usableDiskContent) {
197
274
  logWarn(`Using cached ${modelFamily} instructions`);
198
- setCacheEntry(modelFamily, { content: diskContent, timestamp: now });
199
- return diskContent;
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 fetch(instructionsUrl, { headers });
220
- if (response.status === 304) {
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 (diskContent) {
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
- await fs.mkdir(CACHE_DIR, { recursive: true });
225
- await fs.writeFile(cacheMetaFile, JSON.stringify({
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
- }), "utf8");
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
- const instructions = await response.text();
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
- await fs.mkdir(CACHE_DIR, { recursive: true });
240
- await Promise.all([
241
- fs.writeFile(cacheFile, instructions, "utf8"),
242
- fs.writeFile(cacheMetaFile, JSON.stringify({
243
- etag: newETag,
244
- tag: latestTag,
245
- lastChecked: Date.now(),
246
- url: instructionsUrl,
247
- }), "utf8"),
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
  }
@@ -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":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAA0B,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,wEAAwE;AACxE,SAAS,MAAM,CAAC,OAAe;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,oBAAoB,CAClC,SAAiB,EACjB,aAAqB,EACrB,OAAe,EACf,IAAmB;IAEnB,MAAM,sBAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACvF,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,KAAK,MAAM,CAAC;IAC/C,MAAM,OAAO,GAAG,GAAG,aAAa,IAAI,KAAK,MAAM,CAAC;IAChD,IAAI,CAAC;QACJ,MAAM,sBAAsB,CAAC,GAAG,EAAE,CACjC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CACvD,CAAC;QACF,MAAM,sBAAsB,CAAC,GAAG,EAAE,CACjC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CACjE,CAAC;QACF,MAAM,sBAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QACrE,MAAM,sBAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACvE,CAAC;YAAS,CAAC;QACV,wEAAwE;QACxE,uEAAuE;QACvE,2EAA2E;QAC3E,0EAA0E;QAC1E,qDAAqD;QACrD,MAAM,sBAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAC3E,GAAG,EAAE,CAAC,SAAS,CACf,CAAC;QACF,MAAM,sBAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CACxE,GAAG,EAAE,CAAC,SAAS,CACf,CAAC;IACH,CAAC;AACF,CAAC;AAED,MAAM,mBAAmB,GACxB,2DAA2D,CAAC;AAC7D,MAAM,oBAAoB,GACzB,iDAAiD,CAAC;AACnD,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;AACrC,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkD,CAAC;AAC9E,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8B,CAAC;AAC9D,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,IAAI,qBAAqB,GAA8C,IAAI,CAAC;AAE5E;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACrC,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,qBAAqB,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,KAA6C;IAChF,IAAI,WAAW,CAAC,IAAI,IAAI,cAAc,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACjD,wFAAwF;QACxF,IAAI,QAAQ;YAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAQD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAA2B;IACrD,aAAa;IACb,WAAW;IACX,OAAO;IACP,SAAS;IACT,SAAS;CACA,CAAC;AAEX;;;GAGG;AACH,MAAM,YAAY,GAAgC;IACjD,aAAa,EAAE,uBAAuB;IACtC,WAAW,EAAE,6BAA6B;IAC1C,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,mBAAmB;IAC9B,SAAS,EAAE,mBAAmB;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAAgC;IAChD,aAAa,EAAE,6BAA6B;IAC5C,WAAW,EAAE,2BAA2B;IACxC,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,yBAAyB;IACpC,SAAS,EAAE,yBAAyB;CACpC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,eAAuB;IACrD,OAAO,eAAe,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC;QACJ,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB;IACjC,IACC,qBAAqB;QACrB,IAAI,CAAC,GAAG,EAAE,GAAG,qBAAqB,CAAC,SAAS,GAAG,kBAAkB,EAChE,CAAC;QACF,OAAO,qBAAqB,CAAC,GAAG,CAAC;IAClC,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,yEAAyE;YACzE,0EAA0E;YAC1E,2EAA2E;YAC3E,MAAM,IAAI,GAAG,CAAC,MAAM,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAkB,CAAC;YACjF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,qBAAqB,GAAG;oBACvB,GAAG,EAAE,IAAI,CAAC,QAAQ;oBAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACrB,CAAC;gBACF,OAAO,IAAI,CAAC,QAAQ,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,gCAAgC;IACjC,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;IAClE,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,qBAAqB,GAAG;gBACvB,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED,0EAA0E;IAC1E,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACpE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,qBAAqB,GAAG;YACvB,GAAG;YACH,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,OAAO,GAAG,CAAC;IACZ,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,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,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,GAAyB,IAAI,CAAC;IAChD,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,cAAc,CAAC,aAAa,CAAC;QAC7B,cAAc,CAAC,SAAS,CAAC;KACzB,CAAC,CAAC;IAEH,IAAI,WAAW,EAAE,CAAC;QACjB,IAAI,CAAC;YACJ,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAkB,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACR,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;IACF,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,yEAAyE;IACzE,gEAAgE;IAChE,IAAI,iBAAiB,GAAG,WAAW,CAAC;IAEpC,IAAI,WAAW,IAAI,cAAc,EAAE,WAAW,EAAE,CAAC;QAChD,8EAA8E;QAC9E,yEAAyE;QACzE,6EAA6E;QAC7E,yEAAyE;QACzE,4EAA4E;QAC5E,8EAA8E;QAC9E,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,0EAA0E;YAC1E,2EAA2E;YAC3E,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,QAAQ,KAAK,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,uCAAuC,WAAW,oBAAoB,CAAC,CAAC;YAChF,wEAAwE;YACxE,kEAAkE;YAClE,yEAAyE;YACzE,wDAAwD;YACxD,iBAAiB,GAAG,IAAI,CAAC;YACzB,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,GAAG,cAAc,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC;YAC5D,aAAa,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACrE,OAAO,WAAW,CAAC;QACpB,CAAC;aAAM,CAAC;YACP,oFAAoF;YACpF,aAAa,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACrE,KAAK,+BAA+B,CACnC,WAAW,EACX,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,CACd,CAAC;YACF,OAAO,WAAW,CAAC;QACpB,CAAC;IACF,CAAC;IAED,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC;QACtD,8EAA8E;QAC9E,aAAa,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACxE,KAAK,+BAA+B,CACnC,WAAW,EACX,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,CACd,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACJ,OAAO,MAAM,2BAA2B,CACvC,WAAW,EACX,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,CACd,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,QAAQ,CACP,mBAAmB,WAAW,8BAA8B,GAAG,CAAC,OAAO,EAAE,CACzE,CAAC;QAEF,IAAI,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,gBAAgB,WAAW,eAAe,CAAC,CAAC;YACpD,aAAa,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3E,OAAO,iBAAiB,CAAC;QAC1B,CAAC;QAED,OAAO,CAAC,4CAA4C,WAAW,EAAE,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAChC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,EACxC,MAAM,CACN,CAAC;QACF,aAAa,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC;IAChB,CAAC;AACF,CAAC;AAED,KAAK,UAAU,2BAA2B,CACzC,WAAwB,EACxB,UAAkB,EAClB,SAAiB,EACjB,aAAqB,EACrB,cAAoC;IAEpC,IAAI,UAAU,GAAG,cAAc,EAAE,IAAI,IAAI,IAAI,CAAC;IAC9C,MAAM,SAAS,GAAG,cAAc,EAAE,GAAG,IAAI,IAAI,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,MAAM,eAAe,GAAG,kDAAkD,SAAS,kBAAkB,UAAU,EAAE,CAAC;IAElH,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC;IACvC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,+EAA+E;IAC/E,+EAA+E;IAC/E,4EAA4E;IAC5E,+EAA+E;IAC/E,yDAAyD;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QACpD,2EAA2E;QAC3E,yEAAyE;QACzE,uEAAuE;QACvE,MAAM,QAAQ,GAAG,cAAc,EAAE,MAAM,CAAC;QACxC,wEAAwE;QACxE,0EAA0E;QAC1E,qEAAqE;QACrE,MAAM,eAAe,GACpB,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;YACpC,aAAa,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5E,0EAA0E;YAC1E,wEAAwE;YACxE,MAAM,oBAAoB,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE;gBACjE,IAAI,EAAE,UAAU;gBAChB,GAAG,EAAE,SAAS;gBACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,GAAG,EAAE,eAAe;gBACpB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;aAC3B,CAAC,CAAC;YACH,OAAO,WAAW,CAAC;QACpB,CAAC;QACD,6EAA6E;QAC7E,oEAAoE;QACpE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,yEAAyE;IACzE,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,8EAA8E;IAC9E,mEAAmE;IACnE,MAAM,oBAAoB,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE;QAClE,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,SAAS;QACd,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;QACvB,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;KAC5B,CAAC,CAAC;IACH,aAAa,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,YAAY,CAAC;AACrB,CAAC;AAED,SAAS,+BAA+B,CACvC,WAAwB,EACxB,UAAkB,EAClB,SAAiB,EACjB,aAAqB,EACrB,cAAoC;IAEpC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAClD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,cAAc,GAAG,2BAA2B,CACjD,WAAW,EACX,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,CACd;SACC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;SACrB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,QAAQ,CAAC,wCAAwC,WAAW,EAAE,EAAE;YAC/D,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACpB,CAAC,CAAC;IACJ,CAAC,CAAC;SACD,OAAO,CAAC,GAAG,EAAE;QACb,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEJ,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACjD,OAAO,cAAc,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAAmB,EAAE;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACxF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,KAAK,oBAAoB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,QAAQ,CAAC,kCAAkC,EAAE;gBAC5C,KAAK;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACpB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA+Eb,CAAC"}
@@ -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"}
@@ -0,0 +1,165 @@
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 const PROMPT_FETCH_TIMEOUT_MS = 10_000;
17
+ export const PROMPT_FETCH_MAX_BYTES = 1_000_000; // 1 MB ceiling for a prompt body
18
+ export const PROMPT_FETCH_USER_AGENT = "codex-multi-auth";
19
+ /**
20
+ * Merge caller headers with the mandatory User-Agent / Accept defaults.
21
+ *
22
+ * The mandatory headers are applied AFTER the caller's so they always win: a
23
+ * caller must not be able to blank or replace `User-Agent` / `Accept` and
24
+ * bypass the hardening this helper guarantees on every prompt fetch (api.github
25
+ * .com rejects requests without a User-Agent). Caller headers are still honored
26
+ * for everything else (e.g. `If-None-Match`).
27
+ */
28
+ export function withPromptFetchHeaders(headers = {}, json = false) {
29
+ return {
30
+ ...headers,
31
+ "User-Agent": PROMPT_FETCH_USER_AGENT,
32
+ Accept: json ? "application/vnd.github+json" : "text/plain, */*",
33
+ };
34
+ }
35
+ /**
36
+ * fetch() with a bounded timeout. Returns the Response (caller inspects status).
37
+ * Throws on timeout/network error, matching native fetch rejection semantics.
38
+ */
39
+ export async function fetchWithTimeout(url, options = {}, fetchImpl = fetch) {
40
+ const timeoutMs = options.timeoutMs ?? PROMPT_FETCH_TIMEOUT_MS;
41
+ const controller = new AbortController();
42
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
43
+ try {
44
+ return await fetchImpl(url, {
45
+ headers: withPromptFetchHeaders(options.headers, options.json === true),
46
+ signal: controller.signal,
47
+ });
48
+ }
49
+ finally {
50
+ clearTimeout(timer);
51
+ }
52
+ }
53
+ /**
54
+ * Race a response-body read against a bounded timeout, cancelling the underlying
55
+ * stream on timeout (prompts-02).
56
+ *
57
+ * `fetchWithTimeout`'s AbortSignal only covers connect+headers and is cleared
58
+ * once the Response arrives, so a server that sends headers then stalls mid-body
59
+ * makes `response.json()` / `response.text()` hang forever on a request-blocking
60
+ * path. This races the read against a timeout AND, on timeout, calls
61
+ * `response.body.cancel()` so the stalled body stops consuming the connection
62
+ * instead of leaking until GC/socket close. Unlike `readBodyTextGuarded` it adds
63
+ * no size/Content-Length/empty checks, so it is safe for the small
64
+ * release-metadata reads that just need the hang guard. For fetch impls / mocks
65
+ * without a streamable `body`, the cancel is a no-op and the timeout still
66
+ * rejects.
67
+ */
68
+ export async function withBodyTimeout(response, read, timeoutMs = PROMPT_FETCH_TIMEOUT_MS) {
69
+ let timer;
70
+ const timeout = new Promise((_resolve, reject) => {
71
+ timer = setTimeout(() => {
72
+ // Release the underlying stream so a stalled body is torn down rather
73
+ // than left consuming the connection. body may be null (already read or
74
+ // a mock without a stream); cancel may reject — swallow either.
75
+ try {
76
+ const body = response.body;
77
+ void body?.cancel?.().catch(() => undefined);
78
+ }
79
+ catch {
80
+ // best-effort cancel
81
+ }
82
+ reject(new Error(`response body read timed out after ${timeoutMs}ms`));
83
+ }, timeoutMs);
84
+ });
85
+ try {
86
+ return await Promise.race([read, timeout]);
87
+ }
88
+ finally {
89
+ if (timer)
90
+ clearTimeout(timer);
91
+ }
92
+ }
93
+ /**
94
+ * Read a response body as text with a size ceiling, rejecting empty bodies.
95
+ *
96
+ * Checks Content-Length first (fast reject), then enforces the cap while
97
+ * streaming so a server that omits/understates the header still cannot exceed
98
+ * the limit. Throws on oversize or empty/whitespace-only content so the caller
99
+ * treats it as a fetch failure and falls back to disk/bundled content.
100
+ *
101
+ * prompts-02: the streaming read also enforces a per-chunk idle timeout. The
102
+ * fetch-level AbortSignal in `fetchWithTimeout` only covers connect+headers and
103
+ * is cleared once the Response arrives, so without this a server that sends
104
+ * headers then stalls mid-body would hang this request-blocking path forever.
105
+ * If no chunk arrives within `timeoutMs`, the read is aborted and rejected.
106
+ */
107
+ export async function readBodyTextGuarded(response, maxBytes = PROMPT_FETCH_MAX_BYTES, timeoutMs = PROMPT_FETCH_TIMEOUT_MS) {
108
+ const declared = Number(response.headers.get("content-length") ?? "");
109
+ if (Number.isFinite(declared) && declared > maxBytes) {
110
+ throw new Error(`prompt body too large: Content-Length ${declared} exceeds ${maxBytes}`);
111
+ }
112
+ let text;
113
+ const body = response.body;
114
+ if (body && typeof body.getReader === "function") {
115
+ const reader = body.getReader();
116
+ const chunks = [];
117
+ let total = 0;
118
+ try {
119
+ for (;;) {
120
+ // Race each read against an idle-timeout so a mid-body stall cannot
121
+ // hang the request pipeline. A chunk resets the budget (the timer is
122
+ // per-read); a quiet gap longer than timeoutMs aborts.
123
+ let idleTimer;
124
+ const idle = new Promise((_resolve, reject) => {
125
+ idleTimer = setTimeout(() => reject(new Error(`prompt body read timed out after ${timeoutMs}ms`)), timeoutMs);
126
+ });
127
+ let result;
128
+ try {
129
+ result = await Promise.race([reader.read(), idle]);
130
+ }
131
+ finally {
132
+ if (idleTimer)
133
+ clearTimeout(idleTimer);
134
+ }
135
+ const { done, value } = result;
136
+ if (done)
137
+ break;
138
+ if (value) {
139
+ total += value.byteLength;
140
+ if (total > maxBytes) {
141
+ throw new Error(`prompt body too large: exceeded ${maxBytes} bytes`);
142
+ }
143
+ chunks.push(value);
144
+ }
145
+ }
146
+ }
147
+ catch (error) {
148
+ await reader.cancel().catch(() => undefined);
149
+ throw error;
150
+ }
151
+ text = Buffer.concat(chunks).toString("utf8");
152
+ }
153
+ else {
154
+ // Fallback for fetch impls without a streamable body (e.g. some mocks).
155
+ text = await response.text();
156
+ if (Buffer.byteLength(text, "utf8") > maxBytes) {
157
+ throw new Error(`prompt body too large: exceeded ${maxBytes} bytes`);
158
+ }
159
+ }
160
+ if (text.trim().length === 0) {
161
+ throw new Error("prompt body was empty");
162
+ }
163
+ return text;
164
+ }
165
+ //# sourceMappingURL=fetch-utils.js.map