@openclaw/codex 2026.9.5 → 2026.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/assets/icon.png +0 -0
- package/dist/.setup/{account-usage-runtime-C2MOIvfq.mjs → account-usage-runtime-DFhbh1zz.mjs} +6 -6
- package/dist/.setup/{apply-CJ0ZfmBG.mjs → apply-D3GcSoSa.mjs} +35 -55
- package/dist/.setup/{attempt-client-cleanup-BpYKdTA0.mjs → attempt-client-cleanup-DOP-cW5j.mjs} +179 -73
- package/dist/.setup/attempt-workspace-context-C5HigshI.mjs +164 -0
- package/dist/.setup/{auth-binding-DhLWa_7K.mjs → auth-binding-BLWz7stm.mjs} +14 -1
- package/dist/.setup/{auth-cache-key-QirmgiCo.mjs → auth-cache-key-Dbvq-QgB.mjs} +41 -111
- package/dist/.setup/{auth-profile-WqZtZfXN.mjs → auth-profile-B0okYl2D.mjs} +1 -2
- package/dist/.setup/auth-profile-health-oHizqgye.mjs +53 -0
- package/dist/.setup/auth-profile-recovery-BREezV0L.mjs +14 -0
- package/dist/.setup/auth-start-options-BPIPeEX8.mjs +44 -0
- package/dist/.setup/{binding-connection-Bm38niE8.mjs → binding-connection-DTtN1KrX.mjs} +2 -2
- package/dist/.setup/{binding-connection.runtime-CnRMC0ta.mjs → binding-connection.runtime-6TpgD1M6.mjs} +5 -5
- package/dist/.setup/{bounded-turn-BtlZcivC.mjs → bounded-turn-CbjoN2OW.mjs} +140 -37
- package/dist/.setup/bounded-turn-isolation-B8K_ylqk.mjs +14 -0
- package/dist/.setup/{build-state-Xx9ybZqa.mjs → build-state-Da1_z0kd.mjs} +1 -1
- package/dist/.setup/{capabilities-_vXcZGSx.mjs → capabilities-B3WEZl4e.mjs} +2 -10
- package/dist/.setup/{client-vXs2929Q.mjs → client-N0JpgSzF.mjs} +635 -872
- package/dist/.setup/client-catalog-response-5HHLdcde.mjs +285 -0
- package/dist/.setup/{command-dispatch-naHIZwwF.mjs → command-dispatch-BeAoaovI.mjs} +9 -8
- package/dist/.setup/{command-formatters-CGEkdawF.mjs → command-formatters-R3ckE3Co.mjs} +36 -64
- package/dist/.setup/{command-handlers-BtAJEW1X.mjs → command-handlers-ylTMS00z.mjs} +301 -488
- package/dist/.setup/{command-rpc-DHFpn4le.mjs → command-rpc-CGJGUQ6Y.mjs} +40 -28
- package/dist/.setup/compact-C2WamavS.mjs +776 -0
- package/dist/.setup/{config-CedDWjM-.mjs → config-DKhXquav.mjs} +26 -28
- package/dist/.setup/{config-options-BsanJ8QG.mjs → config-options-CzyWLTJt.mjs} +68 -65
- package/dist/.setup/{config-parsing-CcB9iPoq.mjs → config-parsing-b088LyhT.mjs} +57 -60
- package/dist/.setup/{config-runtime-CeAhl_h4.mjs → config-runtime-C0NbLms1.mjs} +2 -2
- package/dist/.setup/{config-security-BRQ2mgW9.mjs → config-security-CE-FcGw9.mjs} +51 -215
- package/dist/.setup/{config-utils-DujwEnhg.mjs → config-utils-D0CXecki.mjs} +3 -13
- package/dist/.setup/context-engine-projection-PezSESth.mjs +387 -0
- package/dist/.setup/{conversation-binding-DhzrpTM6.mjs → conversation-binding-3Min8qvP.mjs} +71 -105
- package/dist/.setup/{conversation-binding-data-CrcyZk6O.mjs → conversation-binding-data-C746z5Pn.mjs} +8 -12
- package/dist/.setup/{conversation-control-DN53ns41.mjs → conversation-control-CEP8X5JC.mjs} +30 -69
- package/dist/.setup/{cyber-failover-DYwbmf1o.mjs → cyber-failover-XV0nNRZu.mjs} +1 -1
- package/dist/.setup/{cyber-failover-notice-e9G3J9-e.mjs → cyber-failover-notice-RNpGpTyP.mjs} +1 -1
- package/dist/.setup/{dynamic-tools-D16lOp67.mjs → dynamic-tools-DzlsLUuS.mjs} +3136 -3167
- package/dist/.setup/{effective-mcp-catalog-K6kLCN8X.mjs → effective-mcp-catalog-CxUtC-xG.mjs} +8 -17
- package/dist/.setup/{ephemeral-turn-R1gA8Sn6.mjs → ephemeral-turn-CDsPJOa2.mjs} +9 -6
- package/dist/.setup/event-projector-assistant-message-CigreO4K.mjs +69 -0
- package/dist/.setup/{event-projector-usage-C7Ntzs-f.mjs → event-projector-usage-03R0I2dM.mjs} +4 -26
- package/dist/.setup/event-projector-values-DJSz8BTk.mjs +106 -0
- package/dist/.setup/incognito-session-DWYapfwf.mjs +2 -0
- package/dist/.setup/{inference-context-fulhZuz8.mjs → inference-context-D-9gWlTR.mjs} +16 -18
- package/dist/.setup/inference-dispatch-CMZtjQyz.mjs +359 -0
- package/dist/.setup/inference-metadata-CgIf7sOx.mjs +81 -0
- package/dist/.setup/inference-proxy-DhcXOgUE.mjs +561 -0
- package/dist/.setup/{isolated-completion-B6srt48J.mjs → isolated-completion-Dm3PzxJk.mjs} +15 -11
- package/dist/.setup/launch-args-DbFCehO7.mjs +196 -0
- package/dist/.setup/{managed-binary-DP6Rib3P.mjs → managed-binary-kiWRhNRE.mjs} +16 -9
- package/dist/.setup/{model-catalog-DkvUuBey.mjs → model-catalog-PAuZgJC6.mjs} +14 -14
- package/dist/.setup/model-runtime-BdqzOMkU.mjs +11 -0
- package/dist/.setup/{models-BDFgm_G-.mjs → models-DHXZtVVk.mjs} +9 -18
- package/dist/.setup/{native-auth-BLZGqFjw.mjs → native-auth-CuG53tu4.mjs} +5 -5
- package/dist/.setup/{native-execution-policy-YBMHSzC4.mjs → native-execution-policy-BxZJy5mP.mjs} +6 -31
- package/dist/.setup/{native-subagent-monitor-B1hxzIOy.mjs → native-subagent-monitor-Dpsmf2wz.mjs} +4422 -3808
- package/dist/.setup/native-subagent-pending-assignments-DwkCzLvD.mjs +203 -0
- package/dist/.setup/native-task-assignments-DMQ0g3hu.mjs +194 -0
- package/dist/.setup/{node-cli-sessions-Cl8b2ZF3.mjs → node-cli-sessions-HC4W6FLI.mjs} +99 -111
- package/dist/.setup/node-exec-server.runtime-BgBfWQqo.mjs +244 -0
- package/dist/.setup/{plan-xD7WKYTM.mjs → plan-Y-QIvrKB.mjs} +118 -163
- package/dist/.setup/{plugin-activation-r8nq5Jzp.mjs → plugin-activation-cNHRfaxU.mjs} +10 -47
- package/dist/.setup/{plugin-app-cache-key-BOxKP7db.mjs → plugin-app-cache-key-BL9B5H0L.mjs} +9 -42
- package/dist/.setup/{plugin-inventory-DUle8DLz.mjs → plugin-inventory-Cky2XJUw.mjs} +32 -23
- package/dist/.setup/{plugin-marketplace-discovery-P-Vndfqq.mjs → plugin-marketplace-discovery-D_dV9FXa.mjs} +22 -25
- package/dist/.setup/{plugin-metadata-cache-DsS5buNa.mjs → plugin-metadata-cache-DsjsL1dr.mjs} +328 -318
- package/dist/.setup/protocol-CANUwXJ3.mjs +17 -0
- package/dist/.setup/provider-DH8NSzGt.mjs +51 -0
- package/dist/.setup/{provider-capabilities-B8J4Dy-O.mjs → provider-capabilities-CAxoF-X1.mjs} +35 -12
- package/dist/.setup/{rate-limits-DOEGYRNs.mjs → rate-limits-B7-X2TgG.mjs} +123 -166
- package/dist/.setup/{request-BioXJLYa.mjs → request-BHZ1nz8d.mjs} +25 -16
- package/dist/.setup/responses-oauth-twnuTaAa.mjs +93 -0
- package/dist/.setup/rpc-error-BlD2vuzn.mjs +31 -0
- package/dist/.setup/{run-attempt-rlA07pUv.mjs → run-attempt-D8RZUOzY.mjs} +2046 -1454
- package/dist/.setup/{run-attempt-lifecycle-B7JbY4-F.mjs → run-attempt-lifecycle-C-6O3Exn.mjs} +10 -24
- package/dist/.setup/{runtime-artifact-Dy38Z5iU.mjs → runtime-artifact-DDQ-HGXf.mjs} +43 -47
- package/dist/.setup/runtime-artifact-connection-D68qQn1m.mjs +78 -0
- package/dist/.setup/sandbox-guard-DjCz2eOw.mjs +126 -0
- package/dist/.setup/scope-DOC1Xjc8.mjs +6 -0
- package/dist/.setup/session-binding-DGCYAfvD.mjs +443 -0
- package/dist/.setup/{session-binding-record-TH3xA0zj.mjs → session-binding-record-Oe9L-CNY.mjs} +73 -132
- package/dist/.setup/{session-binding-sidecars-CKYEcfNn.mjs → session-binding-sidecars-jo6H8dFr.mjs} +242 -60
- package/dist/.setup/{session-catalog-fUdWDx-U.mjs → session-catalog-4sCdv5qx.mjs} +598 -452
- package/dist/.setup/{session-catalog-adoption-CR_whkEW.mjs → session-catalog-adoption-BU_pHWG7.mjs} +59 -26
- package/dist/.setup/{session-catalog-archive-CwZaPacf.mjs → session-catalog-archive-spHfihri.mjs} +7 -7
- package/dist/.setup/session-catalog-events-DePDzzjc.mjs +139 -0
- package/dist/.setup/session-catalog-home-id-vlih0B_g.mjs +22 -0
- package/dist/.setup/{session-catalog-index-B141u15s.mjs → session-catalog-index-CZvDzC6z.mjs} +286 -182
- package/dist/.setup/{session-catalog-index-order-Cc5BzlQr.mjs → session-catalog-index-order-BcQpHks3.mjs} +2 -2
- package/dist/.setup/{session-catalog-index-state-BAuDztHN.mjs → session-catalog-index-state-TeO7EyO-.mjs} +6 -2
- package/dist/.setup/session-catalog-limits-DDxOsQeC.mjs +14 -0
- package/dist/.setup/session-catalog-list-request-CvtxrYSe.mjs +170 -0
- package/dist/.setup/session-catalog-native-projection-DjhwGL6x.mjs +178 -0
- package/dist/.setup/{session-catalog-node-adoption-BVRsYOSh.mjs → session-catalog-node-adoption-DgXvSGu0.mjs} +30 -35
- package/dist/.setup/{session-catalog-node-continue-Dowv8osw.mjs → session-catalog-node-continue-DjKXHBbi.mjs} +25 -18
- package/dist/.setup/session-catalog-node-lookup-CtAXI5W5.mjs +56 -0
- package/dist/.setup/{session-catalog-native-projection-ChV3cCtm.mjs → session-catalog-parsing-CPGaPYr-.mjs} +14 -180
- package/dist/.setup/{session-catalog-projection-C1Bj9Jl-.mjs → session-catalog-projection-Cr5qP5Dj.mjs} +15 -5
- package/dist/.setup/session-catalog-provenance-DoAvktcj.mjs +95 -0
- package/dist/.setup/{session-cli-DIj-IE-E.mjs → session-cli-Cn_nCqfq.mjs} +11 -24
- package/dist/.setup/{session-history-C--SrLI8.mjs → session-history-D83lJWHG.mjs} +16 -23
- package/dist/.setup/{session-history-import-JHXT5Xfi.mjs → session-history-import-WhX-X33a.mjs} +7 -10
- package/dist/.setup/session-history-read-Ov3StuL4.mjs +133 -0
- package/dist/.setup/{session-history.worker-CpNj7H_P.mjs → session-history.worker-MnPKncqP.mjs} +14 -23
- package/dist/.setup/session-initialization-6aveB9qb.mjs +22 -0
- package/dist/.setup/{session-permission-policy-DhurXY0l.mjs → session-permission-policy-Ci_fVX6y.mjs} +4 -8
- package/dist/.setup/{session-retirement-CU87AOg9.mjs → session-retirement-qMTxkNx2.mjs} +31 -12
- package/dist/.setup/{settled-turn-context-fmwouT5I.mjs → settled-turn-context-D4yj4rxf.mjs} +1 -1
- package/dist/.setup/{settled-turn-finalizer-CiY2bLFK.mjs → settled-turn-finalizer-BsvEabkw.mjs} +17 -13
- package/dist/.setup/{shared-client-BpTtuLQ5.mjs → shared-client-DqyTMYug.mjs} +826 -485
- package/dist/.setup/shared-client-lifecycle-DJIgqgMw.mjs +153 -0
- package/dist/.setup/{side-question-DSCZyoBD.mjs → side-question-C4kCmQy1.mjs} +206 -334
- package/dist/.setup/{source-Bjp4UQij.mjs → source-CS_7GFJZ.mjs} +82 -139
- package/dist/.setup/spawn-error-CL3n6MAa.mjs +57 -0
- package/dist/.setup/{thread-archive-guard-jmecf6OJ.mjs → thread-archive-guard-C9frICzX.mjs} +10 -3
- package/dist/.setup/thread-lifecycle-DPflntEJ.mjs +2362 -0
- package/dist/.setup/{incognito-session-uhrBF6wJ.mjs → thread-ownership-queue-Dp24d7-F.mjs} +1 -2
- package/dist/.setup/{thread-ownership-skomxnIt.mjs → thread-ownership-roNP0l1c.mjs} +47 -10
- package/dist/.setup/thread-policy-DTd-DtkX.mjs +109 -0
- package/dist/.setup/thread-requests-B_bRnMGN.mjs +2102 -0
- package/dist/.setup/{thread-resume-BkNpj9Pz.mjs → thread-resume-CdDaoc7T.mjs} +6 -6
- package/dist/.setup/timeout-CXOfNoaX.mjs +46 -0
- package/dist/.setup/transcript-history-projection-DRSifI-1.mjs +201 -0
- package/dist/.setup/{transcript-mirror-attestation-CzM-94NC.mjs → transcript-mirror-attestation-YSegaktH.mjs} +3 -4
- package/dist/.setup/{transcript-mirror-D4qp_leP.mjs → transcript-mirror-kxmCYsuF.mjs} +224 -206
- package/dist/.setup/{transport-stdio-Cmx94Oiy.mjs → transport-stdio-Bdegpn2V.mjs} +138 -75
- package/dist/.setup/transport-websocket-BTBE-LD9.mjs +211 -0
- package/dist/.setup/{upstream-prompt-provenance-LphB8slG.mjs → upstream-prompt-provenance-fXkKbPVC.mjs} +3 -9
- package/dist/.setup/{upstream-session-fork-D3UKxgVD.mjs → upstream-session-fork-CBeVjBpT.mjs} +48 -40
- package/dist/.setup/{usage-BOgBEKso.mjs → usage-BMzNxeR_.mjs} +5 -4
- package/dist/.setup/{usage-limit-error-C0ow7DOc.mjs → usage-limit-error-QXerDo3i.mjs} +5 -20
- package/dist/.setup/{web-search-provider.runtime-CTGuJt6i.mjs → web-search-provider.runtime-P77OUeoo.mjs} +10 -20
- package/dist/api.js +25 -16
- package/dist/catalog-page-worker-entrypoint.js +12 -0
- package/dist/catalog-page.worker.js +9 -0
- package/dist/cli-metadata.js +1 -1
- package/dist/doctor-contract-api.js +50 -8
- package/dist/harness.js +344 -1
- package/dist/index.js +345 -346
- package/dist/media-understanding-provider.js +9 -22
- package/dist/migration-provider-api.js +1 -1
- package/dist/provider-discovery.js +1 -1
- package/dist/session-history-worker-runtime.js +16 -33
- package/dist/session-history.worker.js +1 -1
- package/openclaw.plugin.json +14 -2
- package/package.json +11 -7
- package/dist/.setup/attempt-context-VXVwTCfS.mjs +0 -636
- package/dist/.setup/compact-C3i3qlzj.mjs +0 -687
- package/dist/.setup/event-projector-assistant-message-DNUR1s0A.mjs +0 -105
- package/dist/.setup/event-projector-items-DyTQ_XqL.mjs +0 -200
- package/dist/.setup/harness-rxaaoN-o.mjs +0 -349
- package/dist/.setup/history-rejection-B4nOXNXF.mjs +0 -13
- package/dist/.setup/image-payload-sanitizer-tupAr-2o.mjs +0 -79
- package/dist/.setup/inference-proxy-CC15HuSi.mjs +0 -311
- package/dist/.setup/launch-args-DnMak49W.mjs +0 -111
- package/dist/.setup/local-runtime-attribution-B_2mnqhb.mjs +0 -19
- package/dist/.setup/native-subagent-history-YXaL6dMd.mjs +0 -135
- package/dist/.setup/native-subagent-task-ids-DsuOonKv.mjs +0 -411
- package/dist/.setup/node-exec-server.runtime-BaViBKNz.mjs +0 -226
- package/dist/.setup/plugin-approval-roundtrip-CjfzafAZ.mjs +0 -122
- package/dist/.setup/provider-fFh_-VR3.mjs +0 -50
- package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
- package/dist/.setup/sandbox-guard-BBP-RbTf.mjs +0 -166
- package/dist/.setup/session-binding-_0W_fHRr.mjs +0 -721
- package/dist/.setup/session-catalog-events-jMcYfQyd.mjs +0 -250
- package/dist/.setup/session-history-read-B3ZfSUbF.mjs +0 -50
- package/dist/.setup/session-initialization-DH1z6fXn.mjs +0 -75
- package/dist/.setup/thread-history-page-BTx-4xsg.mjs +0 -83
- package/dist/.setup/thread-lifecycle-Cik28qWn.mjs +0 -4904
- package/dist/.setup/thread-policy-Cjs4B8xf.mjs +0 -54
- package/dist/.setup/timeout-DZF05XrR.mjs +0 -63
- package/dist/.setup/transcript-history-projection-DHNBDhCU.mjs +0 -243
- package/dist/.setup/version-CoqzXPgK.mjs +0 -12
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as
|
|
1
|
+
import { n as CodexAppServerRpcError } from "./rpc-error-BlD2vuzn.mjs";
|
|
2
|
+
import { i as withTimeout, r as withAbortableTimeout } from "./timeout-CXOfNoaX.mjs";
|
|
3
|
+
import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
|
|
3
4
|
//#region extensions/codex/src/app-server/request.ts
|
|
4
5
|
var request_exports = /* @__PURE__ */ __exportAll({
|
|
5
6
|
CodexAppServerScopedRequestRejectedError: () => CodexAppServerScopedRequestRejectedError,
|
|
@@ -28,7 +29,7 @@ async function requestCodexAppServerClientJson(params) {
|
|
|
28
29
|
let phase = "prepare";
|
|
29
30
|
observeControlPhase(params.controlObservation, phase);
|
|
30
31
|
try {
|
|
31
|
-
const { resolveCodexAppServerDirectSandboxBypassBlock } = await import("./sandbox-guard-
|
|
32
|
+
const { resolveCodexAppServerDirectSandboxBypassBlock } = await import("./sandbox-guard-DjCz2eOw.mjs").then((n) => n.r);
|
|
32
33
|
const sandboxBlock = resolveCodexAppServerDirectSandboxBypassBlock({
|
|
33
34
|
method: params.method,
|
|
34
35
|
requestParams: params.requestParams,
|
|
@@ -57,7 +58,7 @@ async function requestCodexAppServerClientJson(params) {
|
|
|
57
58
|
}
|
|
58
59
|
async function requestCodexAppServerJson(params) {
|
|
59
60
|
observeControlPhase(params.controlObservation, "prepare");
|
|
60
|
-
const { resolveCodexAppServerDirectSandboxBypassBlock } = await import("./sandbox-guard-
|
|
61
|
+
const { resolveCodexAppServerDirectSandboxBypassBlock } = await import("./sandbox-guard-DjCz2eOw.mjs").then((n) => n.r);
|
|
61
62
|
const sandboxBlock = resolveCodexAppServerDirectSandboxBypassBlock({
|
|
62
63
|
method: params.method,
|
|
63
64
|
requestParams: params.requestParams,
|
|
@@ -81,6 +82,15 @@ var CodexAppServerScopedRequestRejectedError = class extends Error {
|
|
|
81
82
|
this.name = "CodexAppServerScopedRequestRejectedError";
|
|
82
83
|
}
|
|
83
84
|
};
|
|
85
|
+
function createScopeCleanupError(message) {
|
|
86
|
+
const stackTraceLimit = Error.stackTraceLimit;
|
|
87
|
+
try {
|
|
88
|
+
Error.stackTraceLimit = 0;
|
|
89
|
+
return new CodexAppServerScopedRequestRejectedError(message);
|
|
90
|
+
} finally {
|
|
91
|
+
Error.stackTraceLimit = stackTraceLimit;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
84
94
|
function assertRequestOwnerCurrent(assertCurrent) {
|
|
85
95
|
try {
|
|
86
96
|
assertCurrent?.();
|
|
@@ -99,6 +109,7 @@ async function readCodexAppServerUsage(options) {
|
|
|
99
109
|
const deadline = performance.now() + options.timeoutMs;
|
|
100
110
|
return await withCodexAppServerJsonClient({
|
|
101
111
|
timeoutMs: options.timeoutMs,
|
|
112
|
+
signal: options.signal,
|
|
102
113
|
timeoutMessage: "codex app-server usage read timed out",
|
|
103
114
|
agentDir: options.agentDir,
|
|
104
115
|
...options.authProfileId ? { authProfileId: options.authProfileId } : {},
|
|
@@ -118,20 +129,13 @@ async function readCodexAppServerUsage(options) {
|
|
|
118
129
|
};
|
|
119
130
|
});
|
|
120
131
|
}
|
|
121
|
-
function extractCodexAccountEmail(value) {
|
|
122
|
-
if (!value || typeof value !== "object") return;
|
|
123
|
-
const record = value;
|
|
124
|
-
const account = record.account && typeof record.account === "object" ? record.account : record;
|
|
125
|
-
const email = account.email ?? account.accountEmail;
|
|
126
|
-
return typeof email === "string" && email.trim() ? email.trim() : void 0;
|
|
127
|
-
}
|
|
128
132
|
async function readCodexAccountEmailBestEffort(request, deadline) {
|
|
129
133
|
const boundMs = Math.min(CODEX_ACCOUNT_READ_MAX_TIMEOUT_MS, deadline - performance.now() - CODEX_USAGE_DEADLINE_RESERVE_MS);
|
|
130
134
|
if (boundMs <= 0) return;
|
|
131
135
|
const read = request({
|
|
132
136
|
method: "account/read",
|
|
133
137
|
requestParams: {}
|
|
134
|
-
}).then((account) =>
|
|
138
|
+
}).then(({ account }) => account?.type === "chatgpt" ? account.email?.trim() || void 0 : void 0, () => void 0);
|
|
135
139
|
let timer;
|
|
136
140
|
const timeout = new Promise((resolve) => {
|
|
137
141
|
timer = setTimeout(() => resolve(void 0), boundMs);
|
|
@@ -155,6 +159,9 @@ async function withCodexAppServerJsonClient(params, run) {
|
|
|
155
159
|
let errorPhase;
|
|
156
160
|
observeControlPhase(params.controlObservation, activePhase);
|
|
157
161
|
const timeoutController = new AbortController();
|
|
162
|
+
const abort = () => timeoutController.abort(params.signal?.reason);
|
|
163
|
+
params.signal?.addEventListener("abort", abort, { once: true });
|
|
164
|
+
if (params.signal?.aborted) abort();
|
|
158
165
|
const deadline = Number.isFinite(timeoutMs) && timeoutMs > 0 ? performance.now() + timeoutMs : void 0;
|
|
159
166
|
const isPastDeadline = () => deadline !== void 0 && performance.now() >= deadline;
|
|
160
167
|
const throwIfAbandoned = () => {
|
|
@@ -166,13 +173,14 @@ async function withCodexAppServerJsonClient(params, run) {
|
|
|
166
173
|
return deadline === void 0 ? timeoutMs : Math.max(1, deadline - performance.now());
|
|
167
174
|
};
|
|
168
175
|
try {
|
|
176
|
+
throwIfAbandoned();
|
|
169
177
|
return await withAbortableTimeout({
|
|
170
178
|
signal: timeoutController.signal,
|
|
171
179
|
timeoutMs,
|
|
172
180
|
timeoutMessage,
|
|
173
181
|
promise: (async () => {
|
|
174
|
-
const { resolveCodexAppServerDirectSandboxBypassBlock } = await import("./sandbox-guard-
|
|
175
|
-
const { createIsolatedCodexAppServerClient, getLeasedSharedCodexAppServerClient, isCodexAppServerStartSelectionChangedError, releaseLeasedSharedCodexAppServerClient, retireSharedCodexAppServerClientIfCurrent } = await import("./shared-client-
|
|
182
|
+
const { resolveCodexAppServerDirectSandboxBypassBlock } = await import("./sandbox-guard-DjCz2eOw.mjs").then((n) => n.r);
|
|
183
|
+
const { createIsolatedCodexAppServerClient, getLeasedSharedCodexAppServerClient, isCodexAppServerStartSelectionChangedError, releaseLeasedSharedCodexAppServerClient, retireSharedCodexAppServerClientIfCurrent } = await import("./shared-client-DqyTMYug.mjs").then((n) => n.v);
|
|
176
184
|
for (let attempt = 0; attempt < 2; attempt += 1) {
|
|
177
185
|
errorPhase = void 0;
|
|
178
186
|
activePhase = "prepare";
|
|
@@ -225,7 +233,7 @@ async function withCodexAppServerJsonClient(params, run) {
|
|
|
225
233
|
timeoutMs: remainingTimeoutMs(),
|
|
226
234
|
signal: timeoutController.signal,
|
|
227
235
|
...attemptWaiterFinished ? { attemptWaiterFinished } : {},
|
|
228
|
-
...params.catalogPreview
|
|
236
|
+
...params.catalogPreview ? {
|
|
229
237
|
catalogPreview: true,
|
|
230
238
|
catalogPreviewCache: params.catalogPreviewCache,
|
|
231
239
|
catalogRows: params.catalogRows
|
|
@@ -285,7 +293,8 @@ async function withCodexAppServerJsonClient(params, run) {
|
|
|
285
293
|
if (deadlineObserved) throw new Error(timeoutMessage, { cause: error });
|
|
286
294
|
throw error;
|
|
287
295
|
} finally {
|
|
288
|
-
|
|
296
|
+
params.signal?.removeEventListener("abort", abort);
|
|
297
|
+
timeoutController.abort(createScopeCleanupError(timeoutMessage));
|
|
289
298
|
}
|
|
290
299
|
}
|
|
291
300
|
//#endregion
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { findPersistedAuthProfileCredential, isPendingOAuthRefreshFence, isSameOAuthRefreshGeneration, resolveApiKeyForProfile } from "openclaw/plugin-sdk/agent-runtime";
|
|
3
|
+
import { decodeOpenAICodexJwtPayload } from "openclaw/plugin-sdk/provider-auth";
|
|
4
|
+
//#region extensions/codex/src/app-server/responses-oauth.ts
|
|
5
|
+
const CODEX_RESPONSES_OAUTH_PROVIDER = "openclaw_token_sharing";
|
|
6
|
+
function isCodexResponsesOAuthRun(params) {
|
|
7
|
+
return params.runtimePlan?.auth.selectedAuthMode === "oauth" && params.runtimePlan.auth.selectedAuthFlow === "chatgpt-token-sharing";
|
|
8
|
+
}
|
|
9
|
+
function isCodexResponsesOAuthCredential(credential) {
|
|
10
|
+
return credential?.type === "oauth" && credential.provider === "openai" && credential.authFlow === "chatgpt-token-sharing";
|
|
11
|
+
}
|
|
12
|
+
function isCodexResponsesOAuth(prepared) {
|
|
13
|
+
return prepared?.kind === "profile" && prepared.snapshot?.inferenceAuth === "host-oauth";
|
|
14
|
+
}
|
|
15
|
+
/** The OAuth owner verified this ID token. Decoding here compares identity, never proves it. */
|
|
16
|
+
function fingerprintCodexResponsesOAuth(credential) {
|
|
17
|
+
if (!isCodexResponsesOAuthCredential(credential) || credential?.type !== "oauth") throw new Error("ChatGPT subscription sharing is unavailable; sign in with OpenClaw again.");
|
|
18
|
+
const subject = credential.idToken && decodeOpenAICodexJwtPayload(credential.idToken)?.sub;
|
|
19
|
+
if (!credential.issuer || !credential.clientId || typeof subject !== "string" || !subject) throw new Error("ChatGPT subscription sharing identity is missing; sign in again.");
|
|
20
|
+
return createHash("sha256").update(JSON.stringify([
|
|
21
|
+
credential.issuer,
|
|
22
|
+
credential.clientId,
|
|
23
|
+
subject,
|
|
24
|
+
credential.authFlow
|
|
25
|
+
])).digest("hex");
|
|
26
|
+
}
|
|
27
|
+
async function resolveCodexResponsesOAuthProfileFingerprint(params) {
|
|
28
|
+
const credential = params.store.profiles[params.profileId];
|
|
29
|
+
if (credential?.type === "oauth" && isPendingOAuthRefreshFence(credential)) {
|
|
30
|
+
const resolved = await resolveApiKeyForProfile({
|
|
31
|
+
cfg: params.config,
|
|
32
|
+
store: params.store,
|
|
33
|
+
profileId: params.profileId,
|
|
34
|
+
agentDir: params.agentDir,
|
|
35
|
+
allowProfileFallback: false
|
|
36
|
+
});
|
|
37
|
+
if (!resolved?.credential || resolved.profileId !== params.profileId) throw new Error("ChatGPT subscription sharing could not settle its refresh; sign in again.");
|
|
38
|
+
const fingerprint = fingerprintCodexResponsesOAuth(resolved.credential);
|
|
39
|
+
params.store.profiles[params.profileId] = resolved.credential;
|
|
40
|
+
return fingerprint;
|
|
41
|
+
}
|
|
42
|
+
if (!credential) throw new Error("ChatGPT subscription sharing profile is unavailable; sign in again.");
|
|
43
|
+
return fingerprintCodexResponsesOAuth(credential);
|
|
44
|
+
}
|
|
45
|
+
/** Keep OAuth refresh and persisted grant ownership in OpenClaw, outside native Codex auth. */
|
|
46
|
+
function createCodexResponsesOAuth(params) {
|
|
47
|
+
const persisted = Boolean(findPersistedAuthProfileCredential(params)) || params.store.runtimePersistedProfileIds?.includes(params.profileId) === true;
|
|
48
|
+
const readCredential = () => persisted ? findPersistedAuthProfileCredential(params) : params.store.profiles[params.profileId];
|
|
49
|
+
const validate = (credential) => {
|
|
50
|
+
if (fingerprintCodexResponsesOAuth(credential) !== params.fingerprint) throw new Error("ChatGPT subscription sharing identity changed; reconnect before retrying.");
|
|
51
|
+
};
|
|
52
|
+
let lastCredential = params.store.profiles[params.profileId];
|
|
53
|
+
validate(lastCredential);
|
|
54
|
+
const validateCurrent = (credential, reference) => {
|
|
55
|
+
if (credential?.type === "oauth" && reference?.type === "oauth" && isPendingOAuthRefreshFence(credential) && credential.authFlow === reference.authFlow && credential.issuer === reference.issuer && credential.clientId === reference.clientId && isSameOAuthRefreshGeneration({
|
|
56
|
+
profileId: params.profileId,
|
|
57
|
+
left: credential,
|
|
58
|
+
right: reference
|
|
59
|
+
})) return;
|
|
60
|
+
validate(credential);
|
|
61
|
+
};
|
|
62
|
+
return { async resolve(forceRefresh) {
|
|
63
|
+
const credential = readCredential();
|
|
64
|
+
validateCurrent(credential, lastCredential);
|
|
65
|
+
const resolved = await resolveApiKeyForProfile({
|
|
66
|
+
cfg: params.config,
|
|
67
|
+
agentDir: params.agentDir,
|
|
68
|
+
profileId: params.profileId,
|
|
69
|
+
store: persisted ? {
|
|
70
|
+
...params.store,
|
|
71
|
+
profiles: {
|
|
72
|
+
...params.store.profiles,
|
|
73
|
+
[params.profileId]: credential
|
|
74
|
+
}
|
|
75
|
+
} : params.store,
|
|
76
|
+
forceRefresh,
|
|
77
|
+
allowProfileFallback: false,
|
|
78
|
+
validateOAuthCredential: validate
|
|
79
|
+
});
|
|
80
|
+
if (!resolved?.apiKey || resolved.profileId !== params.profileId) throw new Error("ChatGPT subscription sharing could not refresh; sign in again.");
|
|
81
|
+
const resolvedCredential = resolved.credential;
|
|
82
|
+
validate(resolvedCredential);
|
|
83
|
+
lastCredential = resolvedCredential;
|
|
84
|
+
const assertCurrent = () => validateCurrent(readCredential(), resolvedCredential);
|
|
85
|
+
assertCurrent();
|
|
86
|
+
return {
|
|
87
|
+
token: resolved.apiKey,
|
|
88
|
+
assertCurrent
|
|
89
|
+
};
|
|
90
|
+
} };
|
|
91
|
+
}
|
|
92
|
+
//#endregion
|
|
93
|
+
export { isCodexResponsesOAuthRun as a, isCodexResponsesOAuthCredential as i, createCodexResponsesOAuth as n, resolveCodexResponsesOAuthProfileFingerprint as o, isCodexResponsesOAuth as r, CODEX_RESPONSES_OAUTH_PROVIDER as t };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
|
|
2
|
+
//#region extensions/codex/src/app-server/rpc-error.ts
|
|
3
|
+
const CODEX_APP_SERVER_OVERLOADED_ERROR_CODE = -32001;
|
|
4
|
+
/** RPC error wrapper that preserves app-server error code and data. */
|
|
5
|
+
var CodexAppServerRpcError = class extends Error {
|
|
6
|
+
constructor(error, method) {
|
|
7
|
+
super(formatCodexAppServerRpcErrorMessage(error, method));
|
|
8
|
+
this.name = "CodexAppServerRpcError";
|
|
9
|
+
this.code = error.code;
|
|
10
|
+
this.data = error.data;
|
|
11
|
+
this.method = method;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
function isCodexThreadReadMissingError(error, threadId) {
|
|
15
|
+
return error instanceof CodexAppServerRpcError && error.method === "thread/read" && error.code === -32600 && error.message === `thread not loaded: ${threadId}`;
|
|
16
|
+
}
|
|
17
|
+
function formatCodexAppServerRpcErrorMessage(error, method) {
|
|
18
|
+
const message = error.message || `${method} failed`;
|
|
19
|
+
const detail = readCodexAppServerRpcReloginDetail(error.data);
|
|
20
|
+
return detail && !message.includes(detail) ? `${message}: ${detail}` : message;
|
|
21
|
+
}
|
|
22
|
+
function readCodexAppServerRpcReloginDetail(data) {
|
|
23
|
+
const record = isJsonObject(data) ? data : void 0;
|
|
24
|
+
const nested = isJsonObject(record?.error) ? record.error : record;
|
|
25
|
+
if (!nested) return;
|
|
26
|
+
const isRelogin = nested.action === "relogin" || nested.reason === "cloudRequirements" && nested.errorCode === "Auth";
|
|
27
|
+
const detail = typeof nested.detail === "string" ? nested.detail.trim() : "";
|
|
28
|
+
return isRelogin && detail ? detail : void 0;
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { CodexAppServerRpcError as n, isCodexThreadReadMissingError as r, CODEX_APP_SERVER_OVERLOADED_ERROR_CODE as t };
|