@openclaw/codex 2026.9.3 → 2026.9.5
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/assets/activity.svg +30 -0
- package/assets/icon.png +0 -0
- package/dist/.setup/account-usage-runtime-C2MOIvfq.mjs +75 -0
- package/dist/{apply-B6el6hdO.js → .setup/apply-CJ0ZfmBG.mjs} +12 -13
- package/dist/.setup/async-questions-DdhOCwGi.mjs +27 -0
- package/dist/{attempt-client-cleanup-D6cR54TV.js → .setup/attempt-client-cleanup-BpYKdTA0.mjs} +30 -211
- package/dist/{attempt-context-AO4DSjE0.js → .setup/attempt-context-VXVwTCfS.mjs} +6 -6
- package/dist/.setup/attempt-terminal-gZrxQ35N.mjs +5 -0
- package/dist/{auth-binding-Co2Vfcf_.js → .setup/auth-binding-DhLWa_7K.mjs} +2 -2
- package/dist/{auth-cache-key-Kq6oerr6.js → .setup/auth-cache-key-QirmgiCo.mjs} +3 -3
- package/dist/{auth-profile-CwzO4_RG.js → .setup/auth-profile-WqZtZfXN.mjs} +1 -1
- package/dist/.setup/binding-connection-Bm38niE8.mjs +50 -0
- package/dist/.setup/binding-connection.runtime-CnRMC0ta.mjs +48 -0
- package/dist/{bounded-turn-lRpmZHFv.js → .setup/bounded-turn-BtlZcivC.mjs} +19 -14
- package/dist/{build-state-6RL6qohz.js → .setup/build-state-Xx9ybZqa.mjs} +1 -1
- package/dist/{capabilities-BeqLPbtM.js → .setup/capabilities-_vXcZGSx.mjs} +1 -1
- package/dist/{client-BEKu4yDx.js → .setup/client-vXs2929Q.mjs} +355 -164
- package/dist/{command-dispatch-CisT9Jqq.js → .setup/command-dispatch-naHIZwwF.mjs} +3 -3
- package/dist/{command-formatters-DeTfrapr.js → .setup/command-formatters-CGEkdawF.mjs} +4 -3
- package/dist/{command-handlers-BfIsJEuA.js → .setup/command-handlers-BtAJEW1X.mjs} +812 -152
- package/dist/{command-rpc-BMqRQOFX.js → .setup/command-rpc-DHFpn4le.mjs} +37 -21
- package/dist/{compact-CGJZ2rlb.js → .setup/compact-C3i3qlzj.mjs} +28 -43
- package/dist/{config-JDfTI4VI.js → .setup/config-CedDWjM-.mjs} +5 -4
- package/dist/{config-options-jnIFvwxD.js → .setup/config-options-BsanJ8QG.mjs} +9 -421
- package/dist/{protocol-CAAcVIKF.js → .setup/config-parsing-CcB9iPoq.mjs} +9 -51
- package/dist/{config-runtime-BWf6JLWG.js → .setup/config-runtime-CeAhl_h4.mjs} +2 -2
- package/dist/.setup/config-security-BRQ2mgW9.mjs +465 -0
- package/dist/{config-utils-C57JiJrU.js → .setup/config-utils-DujwEnhg.mjs} +2 -4
- package/dist/{conversation-binding-CxOlHiix.js → .setup/conversation-binding-DhzrpTM6.mjs} +60 -47
- package/dist/{conversation-binding-data-BiodpIzq.js → .setup/conversation-binding-data-CrcyZk6O.mjs} +1 -1
- package/dist/{conversation-control-CUCrSIQI.js → .setup/conversation-control-DN53ns41.mjs} +17 -13
- package/dist/.setup/cyber-failover-DYwbmf1o.mjs +123 -0
- package/dist/.setup/cyber-failover-notice-e9G3J9-e.mjs +17 -0
- package/dist/{dynamic-tools-D-JBoaLt.js → .setup/dynamic-tools-D16lOp67.mjs} +168 -61
- package/dist/{effective-mcp-catalog-J_5Ep5Um.js → .setup/effective-mcp-catalog-K6kLCN8X.mjs} +3 -3
- package/dist/{ephemeral-turn-DSwzP8YY.js → .setup/ephemeral-turn-R1gA8Sn6.mjs} +4 -5
- package/dist/{event-projector-assistant-message-BmBM4qBV.js → .setup/event-projector-assistant-message-DNUR1s0A.mjs} +6 -3
- package/dist/.setup/event-projector-items-DyTQ_XqL.mjs +200 -0
- package/dist/{attempt-notifications--H8zXR5-.js → .setup/event-projector-usage-C7Ntzs-f.mjs} +102 -9
- package/dist/{harness-FR6eQgyO.js → .setup/harness-rxaaoN-o.mjs} +90 -19
- package/dist/.setup/inference-context-fulhZuz8.mjs +94 -0
- package/dist/.setup/inference-proxy-CC15HuSi.mjs +311 -0
- package/dist/{isolated-completion-DHBefrzg.js → .setup/isolated-completion-B6srt48J.mjs} +7 -7
- package/dist/{launch-args-RXQwn8zV.js → .setup/launch-args-DnMak49W.mjs} +22 -1
- package/dist/{managed-binary-DrjjRRUD.js → .setup/managed-binary-DP6Rib3P.mjs} +11 -2
- package/dist/{managed-thread-store-D1t5jh3G.js → .setup/managed-thread-store-BMqgThVL.mjs} +48 -14
- package/dist/{model-catalog-B_6M04Wo.js → .setup/model-catalog-DkvUuBey.mjs} +35 -10
- package/dist/{models-P9k2qAof.js → .setup/models-BDFgm_G-.mjs} +3 -3
- package/dist/.setup/native-auth-BLZGqFjw.mjs +57 -0
- package/dist/.setup/native-subagent-history-YXaL6dMd.mjs +135 -0
- package/dist/.setup/native-subagent-monitor-B1hxzIOy.mjs +5031 -0
- package/dist/.setup/native-subagent-task-ids-DsuOonKv.mjs +411 -0
- package/dist/{node-cli-sessions-rj0ysJwM.js → .setup/node-cli-sessions-Cl8b2ZF3.mjs} +1 -1
- package/dist/{node-exec-server.runtime-BY_ctYnT.js → .setup/node-exec-server.runtime-BaViBKNz.mjs} +5 -5
- package/dist/{plan-BMJdMOEF.js → .setup/plan-xD7WKYTM.mjs} +331 -79
- package/dist/{plugin-activation-BQK-f5sV.js → .setup/plugin-activation-r8nq5Jzp.mjs} +24 -19
- package/dist/{plugin-app-cache-key-CdSQzWyX.js → .setup/plugin-app-cache-key-BOxKP7db.mjs} +29 -25
- package/dist/{plugin-approval-roundtrip-DeW95wB5.js → .setup/plugin-approval-roundtrip-CjfzafAZ.mjs} +1 -1
- package/dist/{plugin-inventory-CoRCzWW4.js → .setup/plugin-inventory-DUle8DLz.mjs} +12 -8
- package/dist/{plugin-marketplace-discovery-3akBizzF.js → .setup/plugin-marketplace-discovery-P-Vndfqq.mjs} +18 -15
- package/dist/{plugin-metadata-cache-DgNfRAGA.js → .setup/plugin-metadata-cache-DsS5buNa.mjs} +33 -14
- package/dist/{provider-capabilities-W4tfK5Y5.js → .setup/provider-capabilities-B8J4Dy-O.mjs} +2 -2
- package/dist/.setup/provider-fFh_-VR3.mjs +50 -0
- package/dist/{rate-limits-Bqnx1N4z.js → .setup/rate-limits-DOEGYRNs.mjs} +90 -46
- package/dist/.setup/request-BioXJLYa.mjs +292 -0
- package/dist/.setup/run-attempt-lifecycle-B7JbY4-F.mjs +71 -0
- package/dist/{run-attempt-DwKds3DN.js → .setup/run-attempt-rlA07pUv.mjs} +644 -491
- package/dist/{runtime-artifact-T-NwqeSH.js → .setup/runtime-artifact-Dy38Z5iU.mjs} +2 -2
- package/dist/{sandbox-guard-BcT66fWy.js → .setup/sandbox-guard-BBP-RbTf.mjs} +4 -3
- package/dist/{session-binding-CKSepwIC.js → .setup/session-binding-_0W_fHRr.mjs} +45 -63
- package/dist/{session-binding-record-CaZjYwNS.js → .setup/session-binding-record-TH3xA0zj.mjs} +181 -3
- package/dist/.setup/session-binding-sidecars-CKYEcfNn.mjs +543 -0
- package/dist/{session-catalog-adoption-BKLtSrwi.js → .setup/session-catalog-adoption-CR_whkEW.mjs} +6 -6
- package/dist/{session-catalog-archive-D0i2pGj2.js → .setup/session-catalog-archive-CwZaPacf.mjs} +6 -6
- package/dist/.setup/session-catalog-events-jMcYfQyd.mjs +250 -0
- package/dist/.setup/session-catalog-fUdWDx-U.mjs +2464 -0
- package/dist/.setup/session-catalog-index-B141u15s.mjs +1070 -0
- package/dist/.setup/session-catalog-index-order-Cc5BzlQr.mjs +48 -0
- package/dist/.setup/session-catalog-index-state-BAuDztHN.mjs +180 -0
- package/dist/{session-catalog-parsing-CdD3JhdM.js → .setup/session-catalog-native-projection-ChV3cCtm.mjs} +213 -21
- package/dist/{session-catalog-node-adoption-BUuDYY8R.js → .setup/session-catalog-node-adoption-BVRsYOSh.mjs} +3 -3
- package/dist/{session-catalog-node-continue-CBtc4wkI.js → .setup/session-catalog-node-continue-Dowv8osw.mjs} +7 -7
- package/dist/.setup/session-catalog-projection-C1Bj9Jl-.mjs +414 -0
- package/dist/{session-cli-CbgaHh0f.js → .setup/session-cli-DIj-IE-E.mjs} +4 -4
- package/dist/{session-history-Cz-tOOYj.js → .setup/session-history-C--SrLI8.mjs} +10 -5
- package/dist/{session-history-import-DFN7sWRU.js → .setup/session-history-import-JHXT5Xfi.mjs} +4 -4
- package/dist/{session-history-read-cxPUxyVV.js → .setup/session-history-read-B3ZfSUbF.mjs} +2 -2
- package/dist/{session-history.worker-CNEvGaU5.js → .setup/session-history.worker-CpNj7H_P.mjs} +192 -89
- package/dist/{session-initialization-Jo86C60I.js → .setup/session-initialization-DH1z6fXn.mjs} +2 -2
- package/dist/{session-permission-policy-B22InTp_.js → .setup/session-permission-policy-DhurXY0l.mjs} +2 -2
- package/dist/{session-retirement-BSNG_mhf.js → .setup/session-retirement-CU87AOg9.mjs} +6 -6
- package/dist/{settled-turn-context-Du6gdUDd.js → .setup/settled-turn-context-fmwouT5I.mjs} +2 -2
- package/dist/{settled-turn-finalizer-BuLUrZl2.js → .setup/settled-turn-finalizer-CiY2bLFK.mjs} +10 -10
- package/dist/{shared-client-CVhez2Uo.js → .setup/shared-client-BpTtuLQ5.mjs} +495 -156
- package/dist/{side-question-DLbr2vUU.js → .setup/side-question-DSCZyoBD.mjs} +64 -47
- package/dist/{source-Da-h6f7e.js → .setup/source-Bjp4UQij.mjs} +15 -14
- package/dist/{thread-archive-guard-D1bP04Tf.js → .setup/thread-archive-guard-jmecf6OJ.mjs} +1 -1
- package/dist/.setup/thread-history-page-BTx-4xsg.mjs +83 -0
- package/dist/{thread-lifecycle-D1pzRwHB.js → .setup/thread-lifecycle-Cik28qWn.mjs} +330 -150
- package/dist/{thread-ownership-D6oASVRu.js → .setup/thread-ownership-skomxnIt.mjs} +4 -4
- package/dist/{thread-policy-D8kI7yAO.js → .setup/thread-policy-Cjs4B8xf.mjs} +3 -3
- package/dist/{thread-resume-T5cveyxA.js → .setup/thread-resume-BkNpj9Pz.mjs} +8 -5
- package/dist/.setup/timeout-DZF05XrR.mjs +63 -0
- package/dist/{session-catalog-home-id-D7-aLiNt.js → .setup/transcript-history-projection-DHNBDhCU.mjs} +73 -20
- package/dist/{transcript-mirror-t5TOccct.js → .setup/transcript-mirror-D4qp_leP.mjs} +15 -6
- package/dist/{transcript-mirror-attestation-DibE0krH.js → .setup/transcript-mirror-attestation-CzM-94NC.mjs} +4 -1
- package/dist/{transport-stdio-BGjHoYLr.js → .setup/transport-stdio-Cmx94Oiy.mjs} +149 -44
- package/dist/{upstream-session-fork-De-sLJ2r.js → .setup/upstream-session-fork-D3UKxgVD.mjs} +27 -26
- package/dist/{usage-CPPTmBvZ.js → .setup/usage-BOgBEKso.mjs} +4 -4
- package/dist/.setup/usage-limit-error-C0ow7DOc.mjs +166 -0
- package/dist/{version-omm6IPI3.js → .setup/version-CoqzXPgK.mjs} +1 -1
- package/dist/{web-search-provider.runtime-CSVgQL0w.js → .setup/web-search-provider.runtime-CTGuJt6i.mjs} +3 -3
- package/dist/api.js +28 -20
- package/dist/cli-metadata.js +1 -1
- package/dist/doctor-contract-api.js +8 -528
- package/dist/harness.js +1 -1
- package/dist/index.js +130 -135
- package/dist/media-understanding-provider.js +3 -3
- package/dist/migration-provider-api.js +2 -0
- package/dist/native-tool-policy.js +12 -0
- package/dist/provider-discovery.js +18 -0
- package/dist/session-history-worker-runtime.js +23 -5
- package/dist/session-history.worker.js +2 -2
- package/dist/web-search-contract-api.js +1 -1
- package/openclaw.plugin.json +354 -68
- package/package.json +11 -8
- package/dist/binding-connection-QqgcPCgk.js +0 -60
- package/dist/event-projector-usage-CIyrYYid.js +0 -102
- package/dist/native-subagent-monitor-BbCUKRwC.js +0 -3350
- package/dist/request-CGvGOpeR.js +0 -198
- package/dist/session-catalog-HaDcp7Sv.js +0 -1533
- package/dist/session-catalog-provenance-DkJHo735.js +0 -124
- package/dist/timeout-BVw8aaM1.js +0 -33
- package/dist/{auth-profile-selection-DFu9e167.js → .setup/auth-profile-selection-DFu9e167.mjs} +0 -0
- package/dist/{context-compaction-activity-CMla5FPJ.js → .setup/context-compaction-activity-CMla5FPJ.mjs} +0 -0
- package/dist/{elicitation-input-DPoK8F7w.js → .setup/elicitation-input-DPoK8F7w.mjs} +0 -0
- package/dist/{history-rejection-B4nOXNXF.js → .setup/history-rejection-B4nOXNXF.mjs} +0 -0
- package/dist/{image-payload-sanitizer-tupAr-2o.js → .setup/image-payload-sanitizer-tupAr-2o.mjs} +0 -0
- package/dist/{incognito-session-uhrBF6wJ.js → .setup/incognito-session-uhrBF6wJ.mjs} +0 -0
- package/dist/{local-runtime-attribution-B_2mnqhb.js → .setup/local-runtime-attribution-B_2mnqhb.mjs} +0 -0
- package/dist/{native-execution-policy-umd0tgh4.js → .setup/native-execution-policy-YBMHSzC4.mjs} +1 -1
- /package/dist/{rolldown-runtime-8H4AJuhK.js → .setup/rolldown-runtime-8H4AJuhK.mjs} +0 -0
- /package/dist/{session-binding-meta-B7aEMU7g.js → .setup/session-binding-meta-B7aEMU7g.mjs} +0 -0
- /package/dist/{session-upstream-marker-D15C9NHp.js → .setup/session-upstream-marker-D15C9NHp.mjs} +0 -0
- /package/dist/{upstream-prompt-provenance-LphB8slG.js → .setup/upstream-prompt-provenance-LphB8slG.mjs} +0 -0
- /package/dist/{web-search-provider.shared-BrZmlqyR.js → .setup/web-search-provider.shared-BrZmlqyR.mjs} +0 -0
package/dist/{upstream-session-fork-De-sLJ2r.js → .setup/upstream-session-fork-D3UKxgVD.mjs}
RENAMED
|
@@ -1,34 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { _ as assertCodexThreadAcceptsDirectInput, v as assertCodexThreadForkResponse } from "./client-
|
|
5
|
-
import {
|
|
6
|
-
import { n as
|
|
7
|
-
import { i as readUpstreamUserText, r as readMirrorIdentity } from "./upstream-prompt-provenance-LphB8slG.
|
|
8
|
-
import {
|
|
9
|
-
import { n as codexUpstreamBaseline, t as codexLastTerminalTurnId } from "./session-upstream-marker-D15C9NHp.
|
|
10
|
-
import { r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import "./
|
|
18
|
-
import
|
|
19
|
-
import "./thread-
|
|
20
|
-
import
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
1
|
+
import { p as sessionBindingIdentity } from "./session-binding-record-TH3xA0zj.mjs";
|
|
2
|
+
import { m as isJsonObject, p as flattenCodexDynamicToolFunctions } from "./config-security-BRQ2mgW9.mjs";
|
|
3
|
+
import { d as readCodexPluginConfig } from "./config-parsing-CcB9iPoq.mjs";
|
|
4
|
+
import { _ as assertCodexThreadAcceptsDirectInput, v as assertCodexThreadForkResponse } from "./client-vXs2929Q.mjs";
|
|
5
|
+
import { s as assertCodexModelBackedReviewerEffectiveConfig } from "./config-options-BsanJ8QG.mjs";
|
|
6
|
+
import { n as withCodexAppServerThreadMutation } from "./incognito-session-uhrBF6wJ.mjs";
|
|
7
|
+
import { i as readUpstreamUserText, r as readMirrorIdentity } from "./upstream-prompt-provenance-LphB8slG.mjs";
|
|
8
|
+
import { i as projectCodexUserItemText } from "./transcript-history-projection-DHNBDhCU.mjs";
|
|
9
|
+
import { n as codexUpstreamBaseline, t as codexLastTerminalTurnId } from "./session-upstream-marker-D15C9NHp.mjs";
|
|
10
|
+
import { r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-BOxKP7db.mjs";
|
|
11
|
+
import { c as readCodexSessionMeta } from "./session-catalog-events-jMcYfQyd.mjs";
|
|
12
|
+
import { t as CodexAppServerScopedRequestRejectedError } from "./request-BioXJLYa.mjs";
|
|
13
|
+
import { n as resolveOpenClawExecPolicyForCodexAppServer } from "./config-CedDWjM-.mjs";
|
|
14
|
+
import { r as resolveCodexSupervisionAppServerRuntimeOptions } from "./config-runtime-CeAhl_h4.mjs";
|
|
15
|
+
import { a as fingerprintCodexMirrorSourceMessage, c as readCodexMirrorSourceFingerprint } from "./transcript-mirror-attestation-CzM-94NC.mjs";
|
|
16
|
+
import { I as hasCodexAppServerLiveThread, M as claimCodexAppServerLiveThread, f as readCodexAppServerClientDesktopGenerationFingerprint } from "./shared-client-BpTtuLQ5.mjs";
|
|
17
|
+
import { At as shouldBuildCodexPluginThreadConfig, B as buildCodexNativeHookRelayId, K as checkCodexThreadAppAvailability, L as assertCodexNativeHookRelayAllowed, Ot as mergeCodexThreadConfigs, Q as resolveCodexNativeSkillIsolation, R as buildCodexNativeHookRelayConfig, T as buildDeveloperInstructions, U as resolveCodexNativeHookRelayEvents, X as parseCodexNativeToolCatalog, Z as applyCodexNativeSkillIsolation, et as codexDynamicToolsFingerprint, nt as fingerprintJsonObject, rt as fingerprintUserMcpServersConfigPatch, w as resolveCodexWebSearchPlan, wt as buildCodexPluginThreadConfig, x as buildCodexThreadConfiguration } from "./thread-lifecycle-Cik28qWn.mjs";
|
|
18
|
+
import "./session-binding-_0W_fHRr.mjs";
|
|
19
|
+
import { i as refreshCodexThreadPolicy, n as CodexThreadPolicyHandoffError } from "./thread-policy-Cjs4B8xf.mjs";
|
|
20
|
+
import "./thread-ownership-skomxnIt.mjs";
|
|
21
|
+
import { n as resolveCodexNativeExecutionPolicy } from "./native-execution-policy-YBMHSzC4.mjs";
|
|
22
|
+
import { l as isCodexDynamicToolExcluded, n as resolveCodexProviderWebSearchSupportForClient } from "./provider-capabilities-B8J4Dy-O.mjs";
|
|
23
|
+
import { o as prepareCodexWorkspaceDeveloperInstructions } from "./attempt-context-VXVwTCfS.mjs";
|
|
24
|
+
import { n as prepareCodexSessionInitialization } from "./session-initialization-DH1z6fXn.mjs";
|
|
25
|
+
import { createImportedCodexSession } from "./session-history-import-JHXT5Xfi.mjs";
|
|
25
26
|
import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
26
27
|
import { randomUUID } from "node:crypto";
|
|
28
|
+
import { isDeepStrictEqual } from "node:util";
|
|
27
29
|
import path from "node:path";
|
|
28
30
|
import { lstat } from "node:fs/promises";
|
|
29
31
|
import { constants, createZstdDecompress } from "node:zlib";
|
|
30
32
|
import { root } from "openclaw/plugin-sdk/file-access-runtime";
|
|
31
|
-
import { isDeepStrictEqual } from "node:util";
|
|
32
33
|
import { resolveAgentWorkspaceDir } from "openclaw/plugin-sdk/agent-runtime";
|
|
33
34
|
import { loadCodexBundleMcpThreadConfig } from "openclaw/plugin-sdk/agent-harness-runtime";
|
|
34
35
|
import { loadExecApprovals } from "openclaw/plugin-sdk/exec-approvals-runtime";
|
|
@@ -731,7 +732,7 @@ function readConnectionFingerprint(ref) {
|
|
|
731
732
|
async function forkCodexUpstreamSession(params, options) {
|
|
732
733
|
try {
|
|
733
734
|
const sourceFingerprint = params.upstream.kind === "codex-app-server" ? readConnectionFingerprint(params.upstream.ref) : void 0;
|
|
734
|
-
const requestControl = sourceFingerprint ? options.controlFactory.forUpstream(params.source.agentId, sourceFingerprint) : void 0;
|
|
735
|
+
const requestControl = sourceFingerprint ? await options.controlFactory.forUpstream(params.source.agentId, sourceFingerprint) : void 0;
|
|
735
736
|
if (!sourceFingerprint || !requestControl) return {
|
|
736
737
|
status: "failed",
|
|
737
738
|
code: "upstream-unavailable",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as buildCodexAppServerUsageSnapshot } from "./rate-limits-
|
|
2
|
-
import { n as readCodexAppServerUsage } from "./request-
|
|
3
|
-
import "./config-
|
|
4
|
-
import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-
|
|
1
|
+
import { t as buildCodexAppServerUsageSnapshot } from "./rate-limits-DOEGYRNs.mjs";
|
|
2
|
+
import { n as readCodexAppServerUsage } from "./request-BioXJLYa.mjs";
|
|
3
|
+
import "./config-CedDWjM-.mjs";
|
|
4
|
+
import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-CeAhl_h4.mjs";
|
|
5
5
|
import { CODEX_APP_SERVER_AUTH_MARKER } from "openclaw/plugin-sdk/agent-runtime";
|
|
6
6
|
//#region extensions/codex/src/app-server/usage.ts
|
|
7
7
|
/** Handles the synthetic usage credential for a Codex-backed OpenAI route. */
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { m as isJsonObject } from "./config-security-BRQ2mgW9.mjs";
|
|
2
|
+
import { a as shouldRefreshCodexRateLimitsForUsageLimitMessage, i as resolveCodexUsageLimitResetAtMs, n as formatCodexUsageLimitErrorMessage } from "./rate-limits-DOEGYRNs.mjs";
|
|
3
|
+
import { t as CODEX_CONTROL_METHODS } from "./capabilities-_vXcZGSx.mjs";
|
|
4
|
+
import { J as rememberCodexRateLimitsRead, K as readCodexRateLimitsRevision, q as readRecentCodexRateLimits } from "./shared-client-BpTtuLQ5.mjs";
|
|
5
|
+
import { readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
|
+
import { markAuthProfileBlockedUntil } from "openclaw/plugin-sdk/agent-runtime";
|
|
7
|
+
import { embeddedAgentLog, formatErrorMessage } from "openclaw/plugin-sdk/agent-harness-runtime";
|
|
8
|
+
//#region extensions/codex/src/app-server/usage-limit-error.ts
|
|
9
|
+
/**
|
|
10
|
+
* Enriches Codex usage-limit failures with current rate-limit information and
|
|
11
|
+
* marks blocked auth profiles when Codex exposes a reset time.
|
|
12
|
+
*/
|
|
13
|
+
const CODEX_USAGE_LIMIT_RATE_LIMIT_REFRESH_TIMEOUT_MS = 5e3;
|
|
14
|
+
var CodexUsageLimitPromptError = class extends Error {
|
|
15
|
+
constructor(..._args) {
|
|
16
|
+
super(..._args);
|
|
17
|
+
this.status = 429;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
function resolveCodexPromptError(source) {
|
|
21
|
+
const usageLimitMessage = formatCodexUsageLimitErrorMessage(source);
|
|
22
|
+
if (usageLimitMessage) return new CodexUsageLimitPromptError(usageLimitMessage);
|
|
23
|
+
const info = source.codexErrorInfo;
|
|
24
|
+
let status = info === "rateLimitExceeded" ? 429 : info === "serverOverloaded" ? 503 : info === "internalServerError" ? 500 : void 0;
|
|
25
|
+
if (isJsonObject(info)) for (const variant of [
|
|
26
|
+
"httpConnectionFailed",
|
|
27
|
+
"responseStreamConnectionFailed",
|
|
28
|
+
"responseStreamDisconnected",
|
|
29
|
+
"responseTooManyFailedAttempts"
|
|
30
|
+
]) {
|
|
31
|
+
const detail = info[variant];
|
|
32
|
+
if (isJsonObject(detail) && typeof detail.httpStatusCode === "number") {
|
|
33
|
+
status = detail.httpStatusCode;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return status === void 0 ? source.message ?? void 0 : Object.assign(new Error(source.message ?? "codex app-server error"), {
|
|
38
|
+
status,
|
|
39
|
+
...info === "serverOverloaded" ? { code: "OVERLOADED" } : {}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/** Marks a Codex auth profile blocked until the reset time advertised by rate limits. */
|
|
43
|
+
async function markCodexAuthProfileBlockedFromRateLimits(params) {
|
|
44
|
+
const authProfileId = params.authProfileId?.trim();
|
|
45
|
+
if (!authProfileId || !params.params.authProfileStore) return;
|
|
46
|
+
const blockedUntil = resolveCodexUsageLimitResetAtMs(params.rateLimits);
|
|
47
|
+
if (!blockedUntil) return;
|
|
48
|
+
try {
|
|
49
|
+
await markAuthProfileBlockedUntil({
|
|
50
|
+
store: params.params.authProfileStore,
|
|
51
|
+
profileId: authProfileId,
|
|
52
|
+
blockedUntil,
|
|
53
|
+
source: "codex_rate_limits",
|
|
54
|
+
agentDir: params.params.agentDir,
|
|
55
|
+
runId: params.params.runId,
|
|
56
|
+
modelId: params.params.modelId
|
|
57
|
+
});
|
|
58
|
+
} catch (error) {
|
|
59
|
+
embeddedAgentLog.debug("failed to mark Codex auth profile blocked from app-server limits", {
|
|
60
|
+
authProfileId,
|
|
61
|
+
error: formatErrorMessage(error)
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Formats a turn-start usage-limit error, refreshing rate limits when needed. */
|
|
66
|
+
async function formatCodexTurnStartUsageLimitError(params) {
|
|
67
|
+
return refreshCodexUsageLimitError({
|
|
68
|
+
client: params.client,
|
|
69
|
+
source: readCodexTurnStartUsageLimitErrorSource(params.client, params.error, params.errorNotification, params.rateLimitsRevisionBeforeTurnStart),
|
|
70
|
+
timeoutMs: params.timeoutMs,
|
|
71
|
+
signal: params.signal
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/** Refreshes a generic prompt usage-limit message into a reset-aware message. */
|
|
75
|
+
async function refreshCodexUsageLimitPromptError(params) {
|
|
76
|
+
if (!shouldRefreshCodexRateLimitsForUsageLimitMessage(params.message)) return;
|
|
77
|
+
return refreshCodexUsageLimitError({
|
|
78
|
+
client: params.client,
|
|
79
|
+
source: {
|
|
80
|
+
message: params.message,
|
|
81
|
+
codexErrorInfo: "usageLimitExceeded",
|
|
82
|
+
rateLimits: readRecentCodexRateLimits(params.client)
|
|
83
|
+
},
|
|
84
|
+
timeoutMs: params.timeoutMs,
|
|
85
|
+
signal: params.signal
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async function refreshCodexUsageLimitError(params) {
|
|
89
|
+
const initialMessage = formatCodexUsageLimitErrorMessage(params.source);
|
|
90
|
+
if (!shouldRefreshCodexRateLimitsForUsageLimitMessage(initialMessage)) return initialMessage ? {
|
|
91
|
+
message: initialMessage,
|
|
92
|
+
...params.source.rateLimitsTrustedForProfile ? { rateLimitsForProfile: params.source.rateLimits } : {}
|
|
93
|
+
} : void 0;
|
|
94
|
+
const rateLimits = await readCodexRateLimitsFromAppServerForUsageLimitError({
|
|
95
|
+
client: params.client,
|
|
96
|
+
timeoutMs: params.timeoutMs,
|
|
97
|
+
signal: params.signal
|
|
98
|
+
});
|
|
99
|
+
if (!rateLimits) return initialMessage ? {
|
|
100
|
+
message: initialMessage,
|
|
101
|
+
...params.source.rateLimitsTrustedForProfile ? { rateLimitsForProfile: params.source.rateLimits } : {}
|
|
102
|
+
} : void 0;
|
|
103
|
+
const message = formatCodexUsageLimitErrorMessage({
|
|
104
|
+
message: params.source.message,
|
|
105
|
+
codexErrorInfo: params.source.codexErrorInfo,
|
|
106
|
+
rateLimits,
|
|
107
|
+
rateLimitsAuthoritative: true
|
|
108
|
+
}) ?? initialMessage;
|
|
109
|
+
return message ? {
|
|
110
|
+
message,
|
|
111
|
+
rateLimitsForProfile: rateLimits
|
|
112
|
+
} : void 0;
|
|
113
|
+
}
|
|
114
|
+
async function readCodexRateLimitsFromAppServerForUsageLimitError(params) {
|
|
115
|
+
if (params.signal?.aborted) return;
|
|
116
|
+
try {
|
|
117
|
+
const rateLimits = await params.client.request(CODEX_CONTROL_METHODS.rateLimits, void 0, {
|
|
118
|
+
timeoutMs: resolveCodexUsageLimitRateLimitRefreshTimeoutMs(params.timeoutMs),
|
|
119
|
+
signal: params.signal
|
|
120
|
+
});
|
|
121
|
+
rememberCodexRateLimitsRead(params.client, rateLimits);
|
|
122
|
+
return rateLimits;
|
|
123
|
+
} catch (error) {
|
|
124
|
+
embeddedAgentLog.debug("codex app-server rate-limit refresh failed after usage-limit error", { error: formatErrorMessage(error) });
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function resolveCodexUsageLimitRateLimitRefreshTimeoutMs(timeoutMs) {
|
|
129
|
+
if (timeoutMs === void 0 || !Number.isFinite(timeoutMs) || timeoutMs <= 0) return CODEX_USAGE_LIMIT_RATE_LIMIT_REFRESH_TIMEOUT_MS;
|
|
130
|
+
return Math.max(100, Math.min(timeoutMs, CODEX_USAGE_LIMIT_RATE_LIMIT_REFRESH_TIMEOUT_MS));
|
|
131
|
+
}
|
|
132
|
+
function readCodexTurnStartUsageLimitErrorSource(client, error, errorNotification, rateLimitsRevisionBeforeTurnStart) {
|
|
133
|
+
const notificationError = readCodexErrorNotification(errorNotification);
|
|
134
|
+
const errorPayload = readCodexErrorPayload(error);
|
|
135
|
+
const rateLimits = errorPayload.rateLimits ?? readRecentCodexRateLimits(client);
|
|
136
|
+
const cacheUpdatedDuringTurnStart = rateLimitsRevisionBeforeTurnStart !== void 0 && readCodexRateLimitsRevision(client) > rateLimitsRevisionBeforeTurnStart;
|
|
137
|
+
return {
|
|
138
|
+
message: notificationError?.message ?? errorPayload.message ?? formatErrorMessage(error),
|
|
139
|
+
codexErrorInfo: notificationError?.codexErrorInfo ?? errorPayload.codexErrorInfo,
|
|
140
|
+
rateLimits,
|
|
141
|
+
rateLimitsTrustedForProfile: errorPayload.rateLimits !== void 0 || cacheUpdatedDuringTurnStart
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function readCodexErrorNotification(notification) {
|
|
145
|
+
if (notification?.method !== "error" || !isJsonObject(notification.params)) return;
|
|
146
|
+
const error = notification.params.error;
|
|
147
|
+
return isJsonObject(error) ? {
|
|
148
|
+
message: readStringField(error, "message"),
|
|
149
|
+
codexErrorInfo: error.codexErrorInfo
|
|
150
|
+
} : void 0;
|
|
151
|
+
}
|
|
152
|
+
function readCodexErrorPayload(error) {
|
|
153
|
+
const message = error instanceof Error ? error.message : void 0;
|
|
154
|
+
if (!error || typeof error !== "object" || !("data" in error)) return { message };
|
|
155
|
+
const data = error.data;
|
|
156
|
+
if (!isJsonObject(data)) return { message };
|
|
157
|
+
const nestedError = isJsonObject(data.error) ? data.error : data;
|
|
158
|
+
const rateLimits = nestedError.rateLimits ?? data.rateLimits;
|
|
159
|
+
return {
|
|
160
|
+
message: readStringField(nestedError, "message") ?? message,
|
|
161
|
+
codexErrorInfo: nestedError.codexErrorInfo,
|
|
162
|
+
rateLimits
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//#endregion
|
|
166
|
+
export { resolveCodexPromptError as a, refreshCodexUsageLimitPromptError as i, formatCodexTurnStartUsageLimitError as n, markCodexAuthProfileBlockedFromRateLimits as r, CodexUsageLimitPromptError as t };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Version and package pins for the managed Codex app-server runtime.
|
|
4
4
|
*/
|
|
5
5
|
/** Exact Codex app-server version shipped by the OpenClaw Codex bridge. */
|
|
6
|
-
const CODEX_APP_SERVER_VERSION = "0.
|
|
6
|
+
const CODEX_APP_SERVER_VERSION = "0.154.0";
|
|
7
7
|
/** Inclusive runtime compatibility floor for external app-server binaries. */
|
|
8
8
|
const MIN_SUPPORTED_CODEX_APP_SERVER_VERSION = "0.149.0";
|
|
9
9
|
/** npm package name for the managed Codex app-server binary. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { runBoundedCodexAppServerTurn } from "./bounded-turn-
|
|
1
|
+
import { m as isJsonObject } from "./config-security-BRQ2mgW9.mjs";
|
|
2
|
+
import { C as buildCodexNativeWebSearchThreadConfig } from "./thread-lifecycle-Cik28qWn.mjs";
|
|
3
|
+
import { runBoundedCodexAppServerTurn } from "./bounded-turn-BtlZcivC.mjs";
|
|
4
4
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { readStringParam, resolveSearchTimeoutSeconds, wrapWebContent } from "openclaw/plugin-sdk/provider-web-search";
|
|
6
6
|
//#region extensions/codex/src/web-search-provider.runtime.ts
|
package/dist/api.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
import { a as resolveCodexAppServerStartOptionsForAgent } from "
|
|
2
|
-
import {
|
|
3
|
-
import { t as CODEX_APP_SERVER_VERSION } from "
|
|
4
|
-
import "
|
|
5
|
-
import { n as resolveCodexAppServerRuntimeOptions } from "
|
|
1
|
+
import { a as resolveCodexAppServerStartOptionsForAgent } from "./.setup/config-options-BsanJ8QG.mjs";
|
|
2
|
+
import { i as resolveManagedCodexNativeCommand, r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand } from "./.setup/managed-binary-DP6Rib3P.mjs";
|
|
3
|
+
import { t as CODEX_APP_SERVER_VERSION } from "./.setup/version-CoqzXPgK.mjs";
|
|
4
|
+
import "./.setup/config-CedDWjM-.mjs";
|
|
5
|
+
import { n as resolveCodexAppServerRuntimeOptions } from "./.setup/config-runtime-CeAhl_h4.mjs";
|
|
6
6
|
import { listAgentIds, resolveAgentDir } from "openclaw/plugin-sdk/agent-scope-runtime";
|
|
7
|
+
import { runUtf8CommandWithTimeout } from "openclaw/plugin-sdk/process-runtime";
|
|
7
8
|
import path from "node:path";
|
|
8
|
-
import { execFile } from "node:child_process";
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
|
-
import { promisify } from "node:util";
|
|
11
10
|
import { resolveDefaultModelForAgent } from "openclaw/plugin-sdk/agent-runtime";
|
|
12
11
|
import { resolveEffectiveAgentRuntime } from "openclaw/plugin-sdk/command-auth-native";
|
|
13
12
|
//#region extensions/codex/src/doctor.ts
|
|
14
13
|
const CODEX_MANAGED_APP_SERVER_CHECK_ID = "codex/managed-app-server";
|
|
15
14
|
const CODEX_VERSION_TIMEOUT_MS = 5e3;
|
|
16
15
|
const CODEX_VERSION_MAX_BUFFER_BYTES = 65536;
|
|
17
|
-
const execFileAsync = promisify(execFile);
|
|
18
16
|
function managedCodexFinding(params) {
|
|
19
17
|
return {
|
|
20
18
|
checkId: CODEX_MANAGED_APP_SERVER_CHECK_ID,
|
|
21
|
-
severity: "error",
|
|
19
|
+
severity: params.severity ?? "error",
|
|
22
20
|
source: "codex",
|
|
23
21
|
message: params.message,
|
|
24
22
|
...params.path ? { path: params.path } : {},
|
|
@@ -32,21 +30,26 @@ function readErrorMessage(error) {
|
|
|
32
30
|
function parseCodexVersion(output) {
|
|
33
31
|
return /(?:^|\s)(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)(?:\s|$)/u.exec(output)?.[1];
|
|
34
32
|
}
|
|
35
|
-
function runVersionCommand(command) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
async function runVersionCommand(command, env) {
|
|
34
|
+
const result = await runUtf8CommandWithTimeout([command, "--version"], {
|
|
35
|
+
baseEnv: env,
|
|
36
|
+
input: "",
|
|
37
|
+
timeoutMs: CODEX_VERSION_TIMEOUT_MS,
|
|
38
|
+
maxOutputBytes: CODEX_VERSION_MAX_BUFFER_BYTES,
|
|
39
|
+
outputCapture: "head",
|
|
40
|
+
terminateOnOutputLimit: true,
|
|
41
|
+
killProcessTree: true,
|
|
40
42
|
killSignal: "SIGKILL",
|
|
41
|
-
|
|
43
|
+
killGraceMs: 0
|
|
42
44
|
});
|
|
45
|
+
if (result.termination !== "exit" || result.code !== 0 || result.outputLimitExceeded) throw new Error(result.outputLimitExceeded ? "Version output exceeded its capture limit" : result.termination === "timeout" ? `Version probe timed out after ${CODEX_VERSION_TIMEOUT_MS} ms` : `Version probe failed (${result.signal ?? result.code ?? result.termination})`);
|
|
46
|
+
return result;
|
|
43
47
|
}
|
|
44
48
|
function createCodexManagedAppServerHealthCheck(params) {
|
|
45
49
|
const resolveStartOptions = params.deps?.resolveStartOptions ?? resolveManagedCodexAppServerStartOptions;
|
|
46
50
|
const resolveAgentStartOptions = params.deps?.resolveAgentStartOptions ?? resolveCodexAppServerStartOptionsForAgent;
|
|
47
51
|
const isDesktopCommand = params.deps?.isDesktopCommand ?? isManagedCodexDesktopCommand;
|
|
48
52
|
const resolveNativeCommand = params.deps?.resolveNativeCommand ?? resolveManagedCodexNativeCommand;
|
|
49
|
-
const executeVersion = params.deps?.runVersionCommand ?? runVersionCommand;
|
|
50
53
|
return {
|
|
51
54
|
id: CODEX_MANAGED_APP_SERVER_CHECK_ID,
|
|
52
55
|
kind: "plugin",
|
|
@@ -61,6 +64,9 @@ function createCodexManagedAppServerHealthCheck(params) {
|
|
|
61
64
|
}).start;
|
|
62
65
|
if (start.transport !== "stdio" || start.commandSource !== "managed") return [];
|
|
63
66
|
const env = ctx.env ?? process.env;
|
|
67
|
+
const isFinalization = ctx.mode === "fix" && env.OPENCLAW_UPDATE_POST_CORE === "1";
|
|
68
|
+
const versionFailureSeverity = isFinalization ? "warning" : "error";
|
|
69
|
+
const versionFailureHint = isFinalization ? "Codex readiness will be rechecked by its plugin after restart; inspect the Codex plugin if the warning persists." : void 0;
|
|
64
70
|
let resolved;
|
|
65
71
|
for (const agentId of listAgentIds(ctx.cfg)) {
|
|
66
72
|
const model = resolveDefaultModelForAgent({
|
|
@@ -101,21 +107,23 @@ function createCodexManagedAppServerHealthCheck(params) {
|
|
|
101
107
|
})];
|
|
102
108
|
let output;
|
|
103
109
|
try {
|
|
104
|
-
output = await
|
|
110
|
+
output = await (params.deps?.runVersionCommand ? params.deps.runVersionCommand(nativeCommand) : runVersionCommand(nativeCommand, env));
|
|
105
111
|
} catch (error) {
|
|
106
112
|
return [managedCodexFinding({
|
|
107
113
|
message: `Managed Codex app-server version check failed: ${readErrorMessage(error)}`,
|
|
114
|
+
severity: versionFailureSeverity,
|
|
108
115
|
path: nativeCommand,
|
|
109
116
|
requirement: `Codex ${CODEX_APP_SERVER_VERSION} must report its version within ${CODEX_VERSION_TIMEOUT_MS} ms`,
|
|
110
|
-
fixHint: "Repair or reinstall the staged OpenClaw package, then rerun the candidate check before cutover."
|
|
117
|
+
fixHint: versionFailureHint ?? "Repair or reinstall the staged OpenClaw package, then rerun the candidate check before cutover."
|
|
111
118
|
})];
|
|
112
119
|
}
|
|
113
120
|
const detectedVersion = parseCodexVersion(`${output.stdout}\n${output.stderr}`);
|
|
114
|
-
if (detectedVersion !== "0.
|
|
121
|
+
if (detectedVersion !== "0.154.0") return [managedCodexFinding({
|
|
122
|
+
severity: versionFailureSeverity,
|
|
115
123
|
message: detectedVersion ? `Managed Codex app-server version mismatch: expected ${CODEX_APP_SERVER_VERSION}, detected ${detectedVersion}.` : `Managed Codex app-server did not report a parseable version; expected ${CODEX_APP_SERVER_VERSION}.`,
|
|
116
124
|
path: nativeCommand,
|
|
117
125
|
requirement: `the exact OpenClaw-pinned Codex version ${CODEX_APP_SERVER_VERSION}`,
|
|
118
|
-
fixHint: "Reinstall the staged OpenClaw package so its managed @openai/codex dependency matches the pinned version, then rerun the candidate check."
|
|
126
|
+
fixHint: versionFailureHint ?? "Reinstall the staged OpenClaw package so its managed @openai/codex dependency matches the pinned version, then rerun the candidate check."
|
|
119
127
|
})];
|
|
120
128
|
return [];
|
|
121
129
|
}
|
package/dist/cli-metadata.js
CHANGED
|
@@ -2,7 +2,7 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
|
|
|
2
2
|
//#region extensions/codex/cli-metadata.ts
|
|
3
3
|
function registerCodexCliMetadata(api) {
|
|
4
4
|
api.registerCli(async ({ program }) => {
|
|
5
|
-
const { registerCodexSessionCli } = await import("
|
|
5
|
+
const { registerCodexSessionCli } = await import("./.setup/session-cli-DIj-IE-E.mjs");
|
|
6
6
|
registerCodexSessionCli(program);
|
|
7
7
|
}, { descriptors: [{
|
|
8
8
|
name: "codex",
|