@bitkyc08/opencodex 2.7.42 → 2.7.43

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 (143) hide show
  1. package/README.md +8 -1
  2. package/bin/ocx.mjs +13 -14
  3. package/gui/dist/assets/index-Czw-jpTU.css +1 -0
  4. package/gui/dist/assets/index-cmds12BG.js +67 -0
  5. package/gui/dist/index.html +2 -2
  6. package/package.json +1 -1
  7. package/src/AGENTS.md +28 -0
  8. package/src/adapters/anthropic.ts +15 -6
  9. package/src/adapters/cursor/native-exec-shell.ts +18 -6
  10. package/src/adapters/cursor/protobuf-events.ts +24 -2
  11. package/src/adapters/cursor/protobuf-request.ts +1 -2
  12. package/src/adapters/cursor/tool-definitions.ts +68 -29
  13. package/src/adapters/google-wire-compiler.ts +4 -0
  14. package/src/adapters/google.ts +128 -2
  15. package/src/adapters/identity.ts +12 -2
  16. package/src/adapters/kiro.ts +49 -6
  17. package/src/adapters/mimo-free.ts +2 -0
  18. package/src/adapters/openai-responses.ts +246 -59
  19. package/src/claude/agents-inject.ts +5 -0
  20. package/src/claude/inbound.ts +26 -9
  21. package/src/cli/account-auth.ts +1 -1
  22. package/src/cli/agent-driven.ts +37 -0
  23. package/src/cli/claude.ts +3 -3
  24. package/src/cli/doctor.ts +23 -18
  25. package/src/cli/help.ts +42 -6
  26. package/src/cli/index.ts +88 -19
  27. package/src/cli/interactive-confirm.ts +129 -0
  28. package/src/cli/opencode.ts +701 -0
  29. package/src/cli/provider-runtime.ts +3 -0
  30. package/src/cli/provider.ts +31 -10
  31. package/src/cli/star-prompt.ts +55 -16
  32. package/src/cli/status.ts +47 -13
  33. package/src/codex/account-id.ts +34 -0
  34. package/src/codex/account-lifecycle.ts +4 -1
  35. package/src/codex/account-namespace-match.ts +63 -0
  36. package/src/codex/account-namespaces.ts +149 -0
  37. package/src/codex/account-pause.ts +20 -0
  38. package/src/codex/account-usability.ts +6 -1
  39. package/src/codex/app-server-processes.ts +511 -0
  40. package/src/codex/auth-api.ts +293 -34
  41. package/src/codex/auth-collision.ts +2 -1
  42. package/src/codex/auth-context.ts +60 -17
  43. package/src/codex/catalog/parsing.ts +16 -1
  44. package/src/codex/catalog/provider-fetch.ts +48 -12
  45. package/src/codex/catalog/sync.ts +18 -3
  46. package/src/codex/catalog.ts +1 -1
  47. package/src/codex/history-provider.ts +145 -1
  48. package/src/codex/inject.ts +114 -14
  49. package/src/codex/main-account.ts +2 -8
  50. package/src/codex/pool-rotation.ts +186 -0
  51. package/src/codex/quota.ts +15 -0
  52. package/src/codex/routing.ts +695 -106
  53. package/src/codex/shim.ts +4 -1
  54. package/src/codex/subagent-defaults.ts +550 -0
  55. package/src/codex/subagent-model-fallback.ts +2 -0
  56. package/src/codex/sync.ts +3 -0
  57. package/src/config.ts +566 -25
  58. package/src/images/artifacts.ts +516 -0
  59. package/src/images/fulfill-video.ts +163 -0
  60. package/src/images/fulfill.ts +111 -0
  61. package/src/images/index.ts +4 -0
  62. package/src/images/loop.ts +789 -0
  63. package/src/images/plan.ts +133 -0
  64. package/src/images/synthetic-tool.ts +133 -0
  65. package/src/images/types.ts +41 -0
  66. package/src/images/xai-client.ts +141 -0
  67. package/src/images/xai-video-client.ts +163 -0
  68. package/src/lib/admin-secrets.ts +25 -0
  69. package/src/lib/config-ownership.ts +327 -0
  70. package/src/lib/crash-guard.ts +2 -0
  71. package/src/lib/destination-policy.ts +122 -4
  72. package/src/lib/pinned-http.ts +151 -0
  73. package/src/lib/process-control.ts +2 -2
  74. package/src/lib/provider-outbound.ts +164 -0
  75. package/src/lib/provider-url.ts +14 -0
  76. package/src/lib/proxy-env.ts +18 -0
  77. package/src/lib/windows-elevation.ts +81 -3
  78. package/src/lib/windows-secret-acl.ts +189 -12
  79. package/src/lib/winsw.ts +2 -0
  80. package/src/oauth/anthropic-routing.ts +570 -0
  81. package/src/oauth/health.ts +6 -0
  82. package/src/oauth/index.ts +283 -72
  83. package/src/oauth/key-providers.ts +17 -6
  84. package/src/oauth/kimi.ts +2 -0
  85. package/src/oauth/kiro-credentials.ts +322 -10
  86. package/src/oauth/kiro.ts +423 -43
  87. package/src/oauth/login-cli.ts +32 -5
  88. package/src/oauth/store.ts +54 -4
  89. package/src/oauth/types.ts +11 -0
  90. package/src/providers/alibaba-region-migration.ts +16 -3
  91. package/src/providers/antigravity-models.ts +3 -0
  92. package/src/providers/api-keys.ts +13 -6
  93. package/src/providers/derive.ts +6 -0
  94. package/src/providers/key-failover.ts +24 -4
  95. package/src/providers/quota.ts +233 -29
  96. package/src/providers/registry.ts +11 -3
  97. package/src/responses/parser.ts +11 -0
  98. package/src/responses/state.ts +22 -8
  99. package/src/responses/tool-groups.ts +19 -0
  100. package/src/router.ts +14 -4
  101. package/src/server/auth-cors.ts +110 -22
  102. package/src/server/claude-messages.ts +8 -1
  103. package/src/server/gui-static.ts +30 -6
  104. package/src/server/images.ts +303 -9
  105. package/src/server/index.ts +77 -9
  106. package/src/server/lifecycle.ts +25 -1
  107. package/src/server/management/agent-settings-routes.ts +28 -4
  108. package/src/server/management/combo-routes.ts +7 -0
  109. package/src/server/management/config-routes.ts +5 -2
  110. package/src/server/management/logs-usage-routes.ts +167 -3
  111. package/src/server/management/oauth-account-routes.ts +163 -17
  112. package/src/server/management/provider-routes.ts +35 -7
  113. package/src/server/management/system-restart.ts +172 -0
  114. package/src/server/management/system-routes.ts +33 -10
  115. package/src/server/management-api.ts +2 -2
  116. package/src/server/management-auth.ts +216 -0
  117. package/src/server/proxy-liveness.ts +14 -3
  118. package/src/server/responses/compact.ts +21 -13
  119. package/src/server/responses/core.ts +583 -152
  120. package/src/server/responses-image-gen-repair.ts +118 -0
  121. package/src/server/responses-item-id-repair.ts +10 -85
  122. package/src/server/sse-payload-rewrite.ts +116 -0
  123. package/src/server/system-env.ts +28 -10
  124. package/src/service.ts +49 -2
  125. package/src/storage/cleanup-job.ts +57 -0
  126. package/src/storage/cleanup.ts +1504 -28
  127. package/src/storage/policy-job.ts +366 -0
  128. package/src/storage/policy-scheduler.ts +40 -0
  129. package/src/storage/policy-worker.ts +53 -0
  130. package/src/storage/policy.ts +522 -0
  131. package/src/storage/restore-job.ts +242 -0
  132. package/src/storage/restore-worker.ts +52 -0
  133. package/src/storage/storage-mutation-coordinator.ts +109 -0
  134. package/src/tray/windows.ts +2 -0
  135. package/src/types.ts +96 -1
  136. package/src/update/index.ts +36 -18
  137. package/src/update/job.ts +103 -12
  138. package/src/update/npm-invocation.d.mts +23 -0
  139. package/src/update/npm-invocation.mjs +94 -0
  140. package/src/usage/debug.ts +2 -0
  141. package/src/usage/log.ts +4 -0
  142. package/gui/dist/assets/index-Bl_VBGoI.js +0 -65
  143. package/gui/dist/assets/index-DfVGuN88.css +0 -1
@@ -51,6 +51,7 @@ import {
51
51
  isCodexAuthContextUsable,
52
52
  resolveCodexAuthContext,
53
53
  codexProbeLeaseId,
54
+ codexProbeQuotaScope,
54
55
  type CodexAuthContext,
55
56
  } from "../../codex/auth-context";
56
57
  import {
@@ -217,7 +218,7 @@ export async function handleResponsesCompact(
217
218
  const headers = new Headers({ "content-type": "application/json" });
218
219
  try {
219
220
  if (route.codexAccountMode) {
220
- authCtx = await resolveCodexAuthContext(req.headers, config, route.codexAccountMode);
221
+ authCtx = await resolveCodexAuthContext(req.headers, config, route.codexAccountMode, { modelId: selectedModelId });
221
222
  const selected = headersForCodexAuthContext(req.headers, authCtx);
222
223
  compactProvider = applyCodexAuthContextToProvider(route.provider, authCtx, route.codexAccountMode);
223
224
  for (const name of FORWARD_HEADERS) {
@@ -255,12 +256,17 @@ export async function handleResponsesCompact(
255
256
  const compactUrl = `${base}/responses/compact`;
256
257
  const compactThreadId = req.headers.get("x-codex-parent-thread-id");
257
258
  const connectMs = config.connectTimeoutMs ?? 200_000;
258
- const recordCompactPoolOutcome = (outcome: CodexUpstreamOutcome, meta: { retryAfter?: string | null } = {}) => {
259
+ const recordCompactPoolOutcome = (
260
+ outcome: CodexUpstreamOutcome,
261
+ meta: { retryAfter?: string | null; resetAt?: unknown | unknown[] } = {},
262
+ ) => {
259
263
  if (!usesCodexForwardPoolAuth(authCtx, route.provider)) return;
260
264
  recordCodexUpstreamOutcome(config, authCtx.accountId, outcome, {
261
265
  ...meta,
262
266
  threadId: compactThreadId,
267
+ modelId: selectedModelId,
263
268
  probeLeaseId: codexProbeLeaseId(authCtx),
269
+ probeQuotaScope: codexProbeQuotaScope(authCtx),
264
270
  });
265
271
  };
266
272
  let upstream: Response;
@@ -283,28 +289,30 @@ export async function handleResponsesCompact(
283
289
  { abortSignal: req.signal, label: safeHostLabel(compactUrl) },
284
290
  );
285
291
  } catch (err) {
286
- if (req.signal.aborted) return formatErrorResponse(499, "client_cancelled", "Client cancelled compact request");
292
+ if (req.signal.aborted) {
293
+ recordCompactPoolOutcome(499);
294
+ return formatErrorResponse(499, "client_cancelled", "Client cancelled compact request");
295
+ }
287
296
  const outcome = err instanceof Error && err.name === "TimeoutError" ? "timeout" : "connect_error";
288
297
  recordCompactPoolOutcome(outcome);
289
298
  return formatErrorResponse(502, "upstream_error", "Failed to connect to compact upstream");
290
299
  }
291
300
  const retryAfter = upstream.headers.get("retry-after");
301
+ const resetAt = [
302
+ upstream.headers.get("x-codex-primary-reset-at"),
303
+ upstream.headers.get("x-codex-secondary-reset-at"),
304
+ upstream.headers.get("x-codex-tertiary-reset-at"),
305
+ ].filter(Boolean);
292
306
  const buffered = await bufferCompactResponse(upstream, req.signal);
293
307
  // Record pool health only after the body is fully delivered (or definitively failed).
294
308
  // A premature 200 would clear soft-avoid while the client still sees a buffer 502.
295
309
  if (buffered.status === 499) {
310
+ recordCompactPoolOutcome(499);
296
311
  return buffered;
297
312
  }
298
- if (upstream.ok && buffered.status >= 500) {
299
- // The upstream account returned 200 it is healthy. The buffering failure
300
- // (oversized body exceeding COMPACT_RESPONSE_MAX_BYTES, or a rare mid-read
301
- // reset on a small JSON payload) is a local proxy issue, not account flakiness.
302
- // Record the upstream status so a deterministic payload-size limit does not
303
- // soft-avoid a healthy account and rotate a thread for 30s.
304
- recordCompactPoolOutcome(upstream.status, { retryAfter });
305
- } else {
306
- recordCompactPoolOutcome(upstream.status, { retryAfter });
307
- }
313
+ // Always record the real upstream status: a local buffering failure after a
314
+ // 200 upstream response must not soft-avoid a healthy account or rotate a thread.
315
+ recordCompactPoolOutcome(upstream.status, { retryAfter, resetAt });
308
316
  return buffered;
309
317
  }
310
318