@openclaw/codex 2026.10.1-beta.2 → 2026.10.5-beta.1
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/dist/.setup/{account-usage-runtime-DGqFpAud.mjs → account-usage-runtime-QBZsvZS8.mjs} +8 -7
- package/dist/.setup/{app-server-policy-Bg4FZw1f.mjs → app-server-policy-D_zv8J7V.mjs} +3 -4
- package/dist/.setup/{apply-CXTudl9p.mjs → apply-CBMV8LN0.mjs} +40 -51
- package/dist/.setup/{attempt-client-cleanup-BH0hW2xU.mjs → attempt-client-cleanup-t-kd_1ys.mjs} +6 -6
- package/dist/.setup/attempt-terminal-jO5IMj9K.mjs +2 -0
- package/dist/.setup/{attempt-workspace-context-BY0jprWJ.mjs → attempt-workspace-context-CcwP3DA3.mjs} +21 -18
- package/dist/.setup/{auth-binding-BoMwpuPN.mjs → auth-binding-BaxlhaNx.mjs} +2 -2
- package/dist/.setup/{auth-cache-key-CGm0UJOr.mjs → auth-cache-key-DyfUvsSa.mjs} +30 -41
- package/dist/.setup/{binding-connection-C-08ez1w.mjs → binding-connection-B7HAAZSI.mjs} +2 -2
- package/dist/.setup/{binding-connection.runtime-Dn2p-fdy.mjs → binding-connection.runtime-DAXn7iFl.mjs} +6 -5
- package/dist/.setup/{bounded-turn-pGsfXcmH.mjs → bounded-turn-CyQVQwGe.mjs} +21 -17
- package/dist/.setup/{bounded-turn-isolation-DklXNk3k.mjs → bounded-turn-isolation-BfDAo-qZ.mjs} +4 -4
- package/dist/.setup/{build-state-CqQnsg7T.mjs → build-state-CzLMy1S9.mjs} +1 -1
- package/dist/.setup/{capabilities-kQntafj_.mjs → capabilities-DbOzOglY.mjs} +1 -1
- package/dist/.setup/{client-catalog-response-Bqp7WG51.mjs → client-catalog-response-DsbEAtpd.mjs} +25 -32
- package/dist/.setup/{client-C8lgBOoO.mjs → client-y7nO6X9c.mjs} +198 -247
- package/dist/.setup/{command-dispatch-DhBbFIQ5.mjs → command-dispatch-uA9lz2Kf.mjs} +3 -4
- package/dist/.setup/{command-formatters-DV3DHhdr.mjs → command-formatters-xW9KpoSZ.mjs} +16 -26
- package/dist/.setup/{command-handlers-ztOOzm6O.mjs → command-handlers-VBaJnpZo.mjs} +270 -360
- package/dist/.setup/{command-rpc-CuC5fPom.mjs → command-rpc-C9VxOLuG.mjs} +19 -18
- package/dist/.setup/{compact-tUb9AYfH.mjs → compact-CD8xJxXS.mjs} +41 -61
- package/dist/.setup/{computer-use-BBN9y326.mjs → computer-use-CiToXF5C.mjs} +109 -147
- package/dist/.setup/{config-0Gxk3_eq.mjs → config-C1YVVLEA.mjs} +32 -59
- package/dist/.setup/config-contracts.shared-D85SGEuq.mjs +4 -0
- package/dist/.setup/{config-options-HG_Rr3W_.mjs → config-options-DDzeNQ8m.mjs} +52 -90
- package/dist/.setup/{config-parsing-BQq-CHTF.mjs → config-parsing-DsWSCPHO.mjs} +19 -55
- package/dist/.setup/{config-runtime-cUYrqu_a.mjs → config-runtime-DWzK-k0n.mjs} +2 -2
- package/dist/.setup/{config-security-KAPScztc.mjs → config-security-clxAZYWX.mjs} +35 -39
- package/dist/.setup/config-utils-DN_YT7dE.mjs +47 -0
- package/dist/.setup/{context-engine-projection-CsgYSQhW.mjs → context-engine-projection-ps-yn_ci.mjs} +10 -22
- package/dist/.setup/{conversation-binding-B3MNMVzb.mjs → conversation-binding-CTSLDM9S.mjs} +85 -119
- package/dist/.setup/{conversation-binding-data-DJ4ix-W5.mjs → conversation-binding-data-UgLuTSQT.mjs} +9 -8
- package/dist/.setup/{conversation-control-CYsMlCuE.mjs → conversation-control-GXM3unE4.mjs} +7 -10
- package/dist/.setup/{cyber-failover-Bb1J6hS1.mjs → cyber-failover-D4dgNfFf.mjs} +2 -5
- package/dist/.setup/{cyber-failover-notice-XR03ef31.mjs → cyber-failover-notice-ljgGGL0s.mjs} +1 -1
- package/dist/.setup/{doctor-start-options-DPW9JxIE.mjs → doctor-start-options-JjTAl-q_.mjs} +5 -5
- package/dist/.setup/{dynamic-tool-build-C8xGEXmR.mjs → dynamic-tool-build-D731PCdv.mjs} +57 -69
- package/dist/.setup/{dynamic-tools-DyERJnR6.mjs → dynamic-tools-D0pYbxHH.mjs} +689 -710
- package/dist/.setup/{effective-mcp-catalog-C26Mio5l.mjs → effective-mcp-catalog-1hWFKghy.mjs} +11 -20
- package/dist/.setup/{elicitation-input-r9axtppm.mjs → elicitation-input-DXG_qaXr.mjs} +14 -20
- package/dist/.setup/{ephemeral-turn-D8VcDTNo.mjs → ephemeral-turn-Cphy5Qr_.mjs} +3 -3
- package/dist/.setup/{event-projector-assistant-message-BN7CNUB5.mjs → event-projector-assistant-message-CLMKN4x-.mjs} +2 -2
- package/dist/.setup/{event-projector-usage-03R0I2dM.mjs → event-projector-usage-BpKfdoTm.mjs} +20 -33
- package/dist/.setup/{event-projector-values-DTqZHizf.mjs → event-projector-values-CLvG1Hil.mjs} +4 -5
- package/dist/.setup/history-rejection-B4nOXNXF.mjs +13 -0
- package/dist/.setup/{inference-context-D-9gWlTR.mjs → inference-context-DNlGwzwy.mjs} +10 -11
- package/dist/.setup/{inference-dispatch-B5UKEUyC.mjs → inference-dispatch-CO6tTs4q.mjs} +5 -4
- package/dist/.setup/{inference-metadata-CgIf7sOx.mjs → inference-metadata-DCvcG_N_.mjs} +36 -41
- package/dist/.setup/{inference-proxy-DUO5E2QQ.mjs → inference-proxy-BDWV0djM.mjs} +10 -14
- package/dist/.setup/{isolated-completion-C0jrcplS.mjs → isolated-completion-Bhqd2yBq.mjs} +8 -8
- package/dist/.setup/local-runtime-attribution-CZz2DJ4q.mjs +15 -0
- package/dist/.setup/{managed-binary-C1VFoVPf.mjs → managed-binary-BtIjV7yN.mjs} +16 -36
- package/dist/.setup/{mcp-app-session-preparation-BxN0_CYe.mjs → mcp-app-session-preparation-DqSvxFqc.mjs} +24 -25
- package/dist/.setup/{mcp-tool-metadata-j10HhfTC.mjs → mcp-tool-metadata-DW41snf3.mjs} +1 -1
- package/dist/.setup/{model-catalog-DZyNeDKG.mjs → model-catalog-B227ST3D.mjs} +6 -6
- package/dist/.setup/{models-DSseKSMg.mjs → models-DdRyi93L.mjs} +6 -10
- package/dist/.setup/{native-auth-Cjb9y7IZ.mjs → native-auth-esN5MdIv.mjs} +5 -5
- package/dist/.setup/{native-execution-policy-ClzpdG3D.mjs → native-execution-policy-MXEe7PB3.mjs} +11 -28
- package/dist/.setup/native-hook-relay-BUWIOrSr.mjs +561 -0
- package/dist/.setup/{native-mcp-app-CqcPVmhH.mjs → native-mcp-app-CjxJQ4F7.mjs} +6 -6
- package/dist/.setup/native-skill-isolation-UMVoNjZz.mjs +391 -0
- package/dist/.setup/{native-subagent-monitor-BUYOUp9X.mjs → native-subagent-monitor-iHc8oLg5.mjs} +505 -639
- package/dist/.setup/{native-subagent-pending-assignments-BDqhOdJp.mjs → native-subagent-pending-assignments-DmVhedNs.mjs} +11 -23
- package/dist/.setup/{native-task-assignments-C6KVqiN1.mjs → native-task-assignments-DimsQ9Qa.mjs} +73 -27
- package/dist/.setup/{node-cli-sessions-B5oNDkUS.mjs → node-cli-sessions-CzKg2nGq.mjs} +18 -26
- package/dist/.setup/{node-exec-server.runtime-0xSEjKYt.mjs → node-exec-server.runtime-BWkULhBM.mjs} +5 -8
- package/dist/.setup/{plan-BJ37d2Og.mjs → plan-C_F3aio0.mjs} +40 -50
- package/dist/.setup/{plugin-activation-BcyBv8PG.mjs → plugin-activation-D7WkJMvU.mjs} +4 -5
- package/dist/.setup/{plugin-app-cache-key-BW8rd98k.mjs → plugin-app-cache-key-Bg9DbDI6.mjs} +18 -23
- package/dist/.setup/{plugin-approval-roundtrip-CuahdPLC.mjs → plugin-approval-roundtrip-BSV-51ig.mjs} +4 -6
- package/dist/.setup/{plugin-inventory-Bf0_piTw.mjs → plugin-inventory-CYgdo14P.mjs} +28 -43
- package/dist/.setup/{plugin-marketplace-discovery-SQPhSuic.mjs → plugin-marketplace-discovery-BblHM3DU.mjs} +7 -10
- package/dist/.setup/{plugin-metadata-cache-DWnB7VMj.mjs → plugin-metadata-cache-Bi8TAPwX.mjs} +5 -10
- package/dist/.setup/project-doc-thread-config-BVcvnps8.mjs +490 -0
- package/dist/.setup/{provider-BnwHVD_z.mjs → provider-BJ4xhaGX.mjs} +4 -4
- package/dist/.setup/{provider-capabilities-D68Whix6.mjs → provider-capabilities-CjRaV3bx.mjs} +1 -1
- package/dist/.setup/{rate-limits-CMPy24F5.mjs → rate-limits-CI8pTPqL.mjs} +15 -32
- package/dist/.setup/reasoning-effort-CS9kKWB9.mjs +37 -0
- package/dist/.setup/{request-jSbhc1sg.mjs → request-Y8dmbqZ3.mjs} +28 -48
- package/dist/.setup/{rpc-error-hmWM21RB.mjs → rpc-error-C98SHchT.mjs} +3 -6
- package/dist/.setup/{run-attempt-BLDZeYLD.mjs → run-attempt-Dx7a4Mfm.mjs} +927 -849
- package/dist/.setup/{run-attempt-lifecycle-BuZgVbDA.mjs → run-attempt-lifecycle-KN4oh-7O.mjs} +13 -4
- package/dist/.setup/{runtime-artifact-CUTOOnKw.mjs → runtime-artifact-C13pR7tD.mjs} +18 -22
- package/dist/.setup/{runtime-artifact-connection-CADz3_BY.mjs → runtime-artifact-connection-jS5DeCok.mjs} +3 -3
- package/dist/.setup/{sandbox-guard-WqE8yPge.mjs → sandbox-guard-DIImwCy1.mjs} +4 -6
- package/dist/.setup/service-tier-normalization-BPgw2Wdt.mjs +9 -0
- package/dist/.setup/{session-binding-Ce7BqiPN.mjs → session-binding-JEHNMPsr.mjs} +13 -40
- package/dist/.setup/{session-binding-record-BZB8RgcF.mjs → session-binding-record-DU_0biMD.mjs} +4 -4
- package/dist/.setup/{session-binding-record-codec-z4ZpDn6E.mjs → session-binding-record-codec-BpH8u_G9.mjs} +16 -39
- package/dist/.setup/{session-binding-sidecars-BrdV95Fg.mjs → session-binding-sidecars-DD-enC8w.mjs} +49 -54
- package/dist/.setup/{session-catalog-adoption-CPIP4S_y.mjs → session-catalog-adoption-Ca3OYGYM.mjs} +23 -27
- package/dist/.setup/{session-catalog-archive-DcgwvSbF.mjs → session-catalog-archive-Bv6gV7x9.mjs} +6 -6
- package/dist/.setup/{session-catalog-events-Bdjw9HEn.mjs → session-catalog-events-DzFlXNUe.mjs} +6 -5
- package/dist/.setup/{session-catalog-index-DufISKJ6.mjs → session-catalog-index-DozvkUPd.mjs} +111 -105
- package/dist/.setup/{session-catalog-index-order-nhyO0wdW.mjs → session-catalog-index-order-CTfoefow.mjs} +28 -5
- package/dist/.setup/{session-catalog-limits-DEU36Qlo.mjs → session-catalog-limits-BynIoOYm.mjs} +1 -1
- package/dist/.setup/{session-catalog-list-request-tXephOB4.mjs → session-catalog-list-request-D4MYNgDB.mjs} +11 -8
- package/dist/.setup/{session-catalog-native-projection-D6IiLtMb.mjs → session-catalog-native-projection-rCKnZud1.mjs} +5 -61
- package/dist/.setup/{session-catalog-node-adoption-7-WEQTB1.mjs → session-catalog-node-adoption-BdP9Zjqo.mjs} +2 -2
- package/dist/.setup/{session-catalog-node-continue-DLWBwAAO.mjs → session-catalog-node-continue-CNJibO4_.mjs} +27 -49
- package/dist/.setup/{session-catalog-node-lookup-Uufckwcm.mjs → session-catalog-node-lookup-BH_DBGa9.mjs} +3 -3
- package/dist/.setup/{session-catalog-parsing-B-qWJh2x.mjs → session-catalog-parsing-DkeoVn60.mjs} +9 -19
- package/dist/.setup/{session-catalog-projection-8aHNwzWD.mjs → session-catalog-projection-DDVmALHj.mjs} +8 -22
- package/dist/.setup/session-catalog-source-CygTGmrb.mjs +58 -0
- package/dist/.setup/{session-cli-kH4vuGod.mjs → session-cli-GwU0izn-.mjs} +20 -41
- package/dist/.setup/{session-history-BogBHKLk.mjs → session-history-BO6i_pfk.mjs} +1 -1
- package/dist/.setup/{session-history-import-NWKPa4ZO.mjs → session-history-import-CaO8s6ta.mjs} +4 -4
- package/dist/.setup/{session-history-read-CNN8zwbD.mjs → session-history-read-BI_2jRED.mjs} +4 -15
- package/dist/.setup/{session-history.worker-Cq_4DYgN.mjs → session-history.worker-DJQfek5p.mjs} +147 -159
- package/dist/.setup/{session-initialization-D6dtFQkE.mjs → session-initialization-Bi_2DKhc.mjs} +3 -5
- package/dist/.setup/{session-permission-policy-BxIUJ0Zd.mjs → session-permission-policy-CD2MAWU8.mjs} +12 -20
- package/dist/.setup/{session-retirement-Czbchv_O.mjs → session-retirement-IoS3zr17.mjs} +7 -7
- package/dist/.setup/{settled-turn-context-BZsMjkIO.mjs → settled-turn-context-BPL6D3RO.mjs} +1 -1
- package/dist/.setup/{settled-turn-finalizer-DjZsIwbZ.mjs → settled-turn-finalizer-X-Fylp-u.mjs} +12 -11
- package/dist/.setup/{shared-client-qhyYWbew.mjs → shared-client-ByIwuAC-.mjs} +172 -229
- package/dist/.setup/{side-question-D3NJlgbl.mjs → side-question-BDUdozFy.mjs} +116 -137
- package/dist/.setup/{source-BYu0T780.mjs → source-Bxbqf3S1.mjs} +37 -56
- package/dist/.setup/thread-archive-guard-LKdwQKyr.mjs +56 -0
- package/dist/.setup/{thread-lifecycle-Cbz_7ySv.mjs → thread-lifecycle-run-CfP4PnEf.mjs} +348 -484
- package/dist/.setup/thread-model-selection-DcVebr8N.mjs +61 -0
- package/dist/.setup/{thread-ownership-DwuSrt3s.mjs → thread-ownership-Be53aiaG.mjs} +5 -5
- package/dist/.setup/{thread-ownership-queue-Dp24d7-F.mjs → thread-ownership-queue-CeyYScUC.mjs} +5 -6
- package/dist/.setup/{thread-policy-DoNxbhqt.mjs → thread-policy-CHgY-KNl.mjs} +4 -4
- package/dist/.setup/thread-requests-BgzJwJtS.mjs +745 -0
- package/dist/.setup/{thread-resume-BT6NHMkM.mjs → thread-resume-B2EmMcgE.mjs} +5 -5
- package/dist/.setup/{timeout-CXOfNoaX.mjs → timeout-D0mEWSGG.mjs} +6 -12
- package/dist/.setup/{transcript-history-projection-B9a7HwUV.mjs → transcript-history-projection-DfKcoZCB.mjs} +3 -4
- package/dist/.setup/{transcript-mirror-BfLRARNL.mjs → transcript-mirror-Bee2o6jj.mjs} +68 -68
- package/dist/.setup/{transcript-mirror-attestation-YSegaktH.mjs → transcript-mirror-attestation-BzUXnrvv.mjs} +5 -2
- package/dist/.setup/{transport-stdio-a0HDa2Mj.mjs → transport-stdio-CRWTkKOn.mjs} +67 -77
- package/dist/.setup/{transport-websocket-zqJ0Cmtn.mjs → transport-websocket-DIyPfkHo.mjs} +8 -16
- package/dist/.setup/{turn-router-sS69wYnI.mjs → turn-router-DKDAziUW.mjs} +30 -31
- package/dist/.setup/upstream-prompt-provenance-Ccd9MFRJ.mjs +44 -0
- package/dist/.setup/{upstream-session-fork-ChSld66u.mjs → upstream-session-fork-Djp_yssT.mjs} +50 -43
- package/dist/.setup/{usage-D8e8Xiqf.mjs → usage-DQA-peQC.mjs} +4 -4
- package/dist/.setup/{usage-limit-error-GbT-5NcW.mjs → usage-limit-error-2t3KBqiX.mjs} +12 -21
- package/dist/.setup/web-search-item-CvokaZOo.mjs +20 -0
- package/dist/.setup/{web-search-provider.runtime-dL2GD1Kl.mjs → web-search-provider.runtime-BsuCMNix.mjs} +3 -3
- package/dist/.setup/{workspace-write-sandbox-probe-DmUHLrrl.mjs → workspace-write-sandbox-probe-BDWO2Qkh.mjs} +4 -4
- package/dist/api.js +15 -15
- package/dist/catalog-page.worker.js +1 -1
- package/dist/cli-metadata.js +1 -1
- package/dist/doctor-contract-api.js +5 -6
- package/dist/harness.js +32 -61
- package/dist/index.js +302 -416
- package/dist/media-understanding-provider.js +32 -43
- package/dist/migration-provider-api.js +1 -1
- package/dist/native-session-binding-api.js +1 -1
- package/dist/native-tool-policy.js +23 -1
- package/dist/provider-discovery.js +1 -1
- package/dist/session-history-worker-runtime.js +52 -31
- package/dist/session-history.worker.js +1 -1
- package/openclaw.plugin.json +20 -3
- package/package.json +7 -7
- package/dist/.setup/attempt-terminal-gZrxQ35N.mjs +0 -5
- package/dist/.setup/plugin-thread-config-deadline-B8LGaZNW.mjs +0 -124
- package/dist/.setup/service-tier-normalization-Cei89SW6.mjs +0 -15
- package/dist/.setup/shell-dynamic-tools-D3Brj3g9.mjs +0 -85
- package/dist/.setup/thread-archive-guard-C9frICzX.mjs +0 -60
- package/dist/.setup/thread-requests-CL1e8Wmx.mjs +0 -2111
- package/dist/.setup/upstream-prompt-provenance-fXkKbPVC.mjs +0 -37
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { r as bindingStoreKey } from "./session-binding-record-
|
|
2
|
-
import {
|
|
3
|
-
import { o as formatCodexDisplayText } from "./command-formatters-
|
|
4
|
-
import "./config-
|
|
1
|
+
import { r as bindingStoreKey } from "./session-binding-record-DU_0biMD.mjs";
|
|
2
|
+
import { r as isCodexFastServiceTier } from "./config-utils-DN_YT7dE.mjs";
|
|
3
|
+
import { o as formatCodexDisplayText } from "./command-formatters-xW9KpoSZ.mjs";
|
|
4
|
+
import "./config-C1YVVLEA.mjs";
|
|
5
5
|
import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-CgHQ8Vot.mjs";
|
|
6
|
-
import
|
|
7
|
-
import "./thread-
|
|
8
|
-
import "./session-binding-Ce7BqiPN.mjs";
|
|
6
|
+
import "./session-binding-JEHNMPsr.mjs";
|
|
7
|
+
import { a as resolveCodexBindingModelProviderFallback, r as resolveCodexAppServerRequestModelSelection } from "./thread-model-selection-DcVebr8N.mjs";
|
|
9
8
|
import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
|
|
10
9
|
import { getSessionEntry, patchSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
|
|
11
10
|
import { ModelSelectionLockedError, applyModelOverrideWithAuthProfileCompatibility } from "openclaw/plugin-sdk/model-session-runtime";
|
|
@@ -189,13 +188,11 @@ async function setCodexConversationPermissions(params) {
|
|
|
189
188
|
}
|
|
190
189
|
function parseCodexFastModeArg(arg) {
|
|
191
190
|
const normalized = arg?.trim().toLowerCase();
|
|
192
|
-
if (!normalized || normalized === "status") return;
|
|
193
191
|
if (normalized === "on" || normalized === "true" || normalized === "fast") return true;
|
|
194
192
|
if (normalized === "off" || normalized === "false" || normalized === "flex") return false;
|
|
195
193
|
}
|
|
196
194
|
function parseCodexPermissionsModeArg(arg) {
|
|
197
|
-
const normalized = arg?.trim().toLowerCase();
|
|
198
|
-
if (!normalized || normalized === "status") return;
|
|
195
|
+
const normalized = arg?.trim().toLowerCase() ?? "";
|
|
199
196
|
if (normalized === "yolo" || normalized === "full" || normalized === "full-access") return "yolo";
|
|
200
197
|
if ([
|
|
201
198
|
"default",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as readCodexPluginConfig } from "./config-parsing-
|
|
2
|
-
import { t as attemptTerminal } from "./attempt-terminal-
|
|
1
|
+
import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
|
|
2
|
+
import { t as attemptTerminal } from "./attempt-terminal-jO5IMj9K.mjs";
|
|
3
3
|
//#region extensions/codex/src/app-server/cyber-failover.ts
|
|
4
4
|
/**
|
|
5
5
|
* Automatic Daybreak escalation for OpenAI cyber-policy refusals.
|
|
@@ -50,7 +50,6 @@ function reserveCodexCyberProbe(params) {
|
|
|
50
50
|
inFlightProbes.delete(key);
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
-
/** Remembers that this workspace cannot use the target for `cooloffMs`. */
|
|
54
53
|
function recordCodexCyberTargetUnavailable(params) {
|
|
55
54
|
if (params.cooloffMs <= 0) return;
|
|
56
55
|
const now = params.now ?? Date.now();
|
|
@@ -62,7 +61,6 @@ function recordCodexCyberTargetUnavailable(params) {
|
|
|
62
61
|
}
|
|
63
62
|
unavailableTargets.set(targetKey(params.model, params.workspace), now + params.cooloffMs);
|
|
64
63
|
}
|
|
65
|
-
/** Decides whether a refused turn may be retried on Daybreak. */
|
|
66
64
|
function planCodexCyberEscalation(params) {
|
|
67
65
|
const { config } = params;
|
|
68
66
|
if (config.mode !== "auto") return {
|
|
@@ -99,7 +97,6 @@ function planCodexCyberEscalation(params) {
|
|
|
99
97
|
};
|
|
100
98
|
}
|
|
101
99
|
const AUTHORIZATION_FAILURE_RE = /\b(401|403)\b|unauthorized|not authorized|forbidden/i;
|
|
102
|
-
/** Everything the escalation decision needs from one attempt outcome. */
|
|
103
100
|
function readCodexCyberAttemptVerdict(result) {
|
|
104
101
|
const message = result?.currentAttemptAssistant;
|
|
105
102
|
const refusals = message?.role === "assistant" ? message.diagnostics ?? [] : [];
|
package/dist/.setup/{cyber-failover-notice-XR03ef31.mjs → cyber-failover-notice-ljgGGL0s.mjs}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as emitCodexAppServerEvent } from "./run-attempt-lifecycle-
|
|
1
|
+
import { t as emitCodexAppServerEvent } from "./run-attempt-lifecycle-KN4oh-7O.mjs";
|
|
2
2
|
//#region extensions/codex/src/app-server/cyber-failover-notice.ts
|
|
3
3
|
async function emitCodexCyberNotice(params, notice) {
|
|
4
4
|
await emitCodexAppServerEvent(params, {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { d as readCodexPluginConfig } from "./config-parsing-
|
|
2
|
-
import { a as resolveCodexAppServerStartOptionsForAgent } from "./config-options-
|
|
3
|
-
import { r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand } from "./managed-binary-
|
|
4
|
-
import "./config-
|
|
5
|
-
import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-
|
|
1
|
+
import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
|
|
2
|
+
import { a as resolveCodexAppServerStartOptionsForAgent } from "./config-options-DDzeNQ8m.mjs";
|
|
3
|
+
import { r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand } from "./managed-binary-BtIjV7yN.mjs";
|
|
4
|
+
import "./config-C1YVVLEA.mjs";
|
|
5
|
+
import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DWzK-k0n.mjs";
|
|
6
6
|
import { listAgentIds, resolveAgentDir } from "openclaw/plugin-sdk/agent-scope-runtime";
|
|
7
7
|
import { resolveDefaultModelForAgent } from "openclaw/plugin-sdk/agent-runtime";
|
|
8
8
|
import { resolveEffectiveAgentRuntime } from "openclaw/plugin-sdk/command-auth-native";
|
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
import { CODEX_NATIVE_TOOL_REQUIREMENTS } from "../native-tool-policy.js";
|
|
2
|
-
import { c as isCodexPairedNodeRemoteExecPlacementSandbox, d as readCodexPluginConfig, l as isCodexRemoteExecPlacementSandbox } from "./config-parsing-
|
|
3
|
-
import "./config-
|
|
2
|
+
import { c as isCodexPairedNodeRemoteExecPlacementSandbox, d as readCodexPluginConfig, l as isCodexRemoteExecPlacementSandbox } from "./config-parsing-DsWSCPHO.mjs";
|
|
3
|
+
import "./config-C1YVVLEA.mjs";
|
|
4
4
|
import { a as isCodexResponsesOAuthRun } from "./responses-oauth-twnuTaAa.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import { n as resolveCodexNativeExecutionPolicy, r as resolveCodexNodeExecToolOverrides } from "./native-execution-policy-
|
|
7
|
-
import {
|
|
5
|
+
import { F as isForcedPrivateQaCodexRuntime, L as isSystemAgentOnlyCodexDynamicToolAllowlist, P as filterCodexDynamicTools, R as normalizeCodexDynamicToolName, h as resolveCodexWebSearchPlan } from "./thread-requests-BgzJwJtS.mjs";
|
|
6
|
+
import { n as resolveCodexNativeExecutionPolicy, r as resolveCodexNodeExecToolOverrides } from "./native-execution-policy-MXEe7PB3.mjs";
|
|
7
|
+
import { _ as createGatewayProcessProjection, b as isCodexDynamicToolExcluded, g as createGatewayExecProjection, v as createNodeExecAliasDynamicTool, x as placeDisabledNativeShellToolsInDirectNamespace, y as createSandboxShellProjection } from "./native-hook-relay-BUWIOrSr.mjs";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import { createStageTimingTracker, formatStageTimings } from "openclaw/plugin-sdk/time-runtime";
|
|
10
|
+
import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
|
|
10
11
|
import { applyEmbeddedAttemptToolsAllow, buildAgentHookContextChannelFields, buildEmbeddedAttemptToolRunContext, embeddedAgentLog, filterProviderNormalizableTools, getPluginToolMeta, isHostScopedAgentToolActive, isSubagentSessionKey, normalizeAgentRuntimeTools, resolveAttemptSpawnWorkspaceDir, resolveModelAuthMode, supportsModelTools } from "openclaw/plugin-sdk/agent-harness-runtime";
|
|
11
|
-
import { resolveAgentDir as resolveAgentDir$1 } from "openclaw/plugin-sdk/agent-runtime";
|
|
12
|
-
import { resolveCodexScheduledToolProjectionFactory, runWithCronCreatorAuthorityCapabilityResolver } from "openclaw/plugin-sdk/codex-mcp-projection";
|
|
13
12
|
import { isToolAllowed } from "openclaw/plugin-sdk/sandbox";
|
|
13
|
+
import { resolveCodexScheduledToolProjectionFactory, runWithCronCreatorAuthorityCapabilityResolver } from "openclaw/plugin-sdk/codex-mcp-projection";
|
|
14
14
|
//#region extensions/codex/src/app-server/dynamic-tool-construction-plan.ts
|
|
15
|
+
/** Constructs through the live host while preserving the originating cron authority scope. */
|
|
16
|
+
function createCodexHostToolSurface(params, options, bindingOptions, resolveCronCreatorToolAuthority) {
|
|
17
|
+
const construct = () => {
|
|
18
|
+
const createToolSurfaceAsync = params.hostCapabilities.createToolSurfaceAsync;
|
|
19
|
+
if (!createToolSurfaceAsync) throw new Error("Codex tool construction requires a current host capability");
|
|
20
|
+
return createToolSurfaceAsync(options, bindingOptions);
|
|
21
|
+
};
|
|
22
|
+
return resolveCronCreatorToolAuthority ? runWithCronCreatorAuthorityCapabilityResolver({
|
|
23
|
+
capability: params.cronCreatorAuthorityCapability,
|
|
24
|
+
runId: params.runId,
|
|
25
|
+
resolve: resolveCronCreatorToolAuthority,
|
|
26
|
+
run: construct
|
|
27
|
+
}) : construct();
|
|
28
|
+
}
|
|
15
29
|
/** Keeps node filesystem and process ownership on its native exec-server. */
|
|
16
30
|
function resolveCodexToolConstructionPlan(sandbox, nativeToolSurfaceEnabled, requireWorkspaceOnly) {
|
|
17
31
|
const nodeExecution = isCodexPairedNodeRemoteExecPlacementSandbox(sandbox) && sandbox?.backendId === "node";
|
|
@@ -37,7 +51,8 @@ function mapCodexAppServerRemoteWorkspacePath(params) {
|
|
|
37
51
|
if (normalizedValue === localRoot) return remoteRoot;
|
|
38
52
|
const prefix = localRoot.endsWith("/") ? localRoot : `${localRoot}/`;
|
|
39
53
|
if (!normalizedValue.startsWith(prefix)) throw new Error(`Codex remoteWorkspaceRoot is configured but cwd ${params.value} is outside OpenClaw workspace root ${params.localWorkspaceRoot}; refusing to send a gateway-local cwd to the remote Codex app-server.`);
|
|
40
|
-
|
|
54
|
+
const suffix = normalizedValue.slice(prefix.length);
|
|
55
|
+
return `${remoteRoot}${remoteRoot.endsWith("/") ? "" : "/"}${suffix}`;
|
|
41
56
|
}
|
|
42
57
|
/** Maps a remote workspace artifact back into the corresponding gateway workspace. */
|
|
43
58
|
function mapCodexAppServerLocalWorkspacePath(params) {
|
|
@@ -55,7 +70,7 @@ function mapCodexAppServerLocalWorkspacePath(params) {
|
|
|
55
70
|
const isRemoteWorkspacePath = matchValue.startsWith(prefix);
|
|
56
71
|
if (!isRemoteWorkspacePath && isAbsoluteWorkspacePath(normalizedValue)) throw new Error(`Codex remote workspace artifact ${params.value} is outside ${params.remoteWorkspaceRoot}.`);
|
|
57
72
|
const suffixSegments = (isRemoteWorkspacePath ? normalizedValue.slice(prefix.length) : normalizedValue).split("/");
|
|
58
|
-
if (suffixSegments.
|
|
73
|
+
if (suffixSegments.includes("..")) throw new Error(`Codex remote workspace artifact ${params.value} must stay inside ${params.remoteWorkspaceRoot}.`);
|
|
59
74
|
return path.join(params.localWorkspaceRoot, ...suffixSegments.filter((segment) => segment !== "."));
|
|
60
75
|
}
|
|
61
76
|
function normalizeWorkspaceMatchPath(value) {
|
|
@@ -68,10 +83,7 @@ function isCodexPassThroughMediaSource(value) {
|
|
|
68
83
|
return /^(?:https?|mxc|buffer|media):\/\//iu.test(value) || /^data:/iu.test(value);
|
|
69
84
|
}
|
|
70
85
|
function isAbsoluteWorkspacePath(value) {
|
|
71
|
-
return value.startsWith("/") || /^[a-z]
|
|
72
|
-
}
|
|
73
|
-
function joinRemoteWorkspacePath(remoteRoot, suffix) {
|
|
74
|
-
return remoteRoot.endsWith("/") ? `${remoteRoot}${suffix}` : `${remoteRoot}/${suffix}`;
|
|
86
|
+
return value.startsWith("/") || /^[a-z][a-z0-9+.-]*:/iu.test(value);
|
|
75
87
|
}
|
|
76
88
|
//#endregion
|
|
77
89
|
//#region extensions/codex/src/app-server/vision-tools.ts
|
|
@@ -80,17 +92,11 @@ function joinRemoteWorkspacePath(remoteRoot, suffix) {
|
|
|
80
92
|
* OpenClaw's view_image tool only when that surface or model vision is unavailable.
|
|
81
93
|
*/
|
|
82
94
|
function filterCodexVisionTools(tools, params) {
|
|
83
|
-
|
|
84
|
-
return tools.filter((tool) => tool.name !== "view_image");
|
|
95
|
+
return !params.modelHasVision || !params.nativeImageInspectionEnabled ? tools : tools.filter((tool) => tool.name !== "view_image");
|
|
85
96
|
}
|
|
86
97
|
//#endregion
|
|
87
98
|
//#region extensions/codex/src/app-server/dynamic-tool-build.ts
|
|
88
99
|
const CODEX_MEMORY_FLUSH_DYNAMIC_TOOL_ALLOW = /* @__PURE__ */ new Set(["read", "write"]);
|
|
89
|
-
function preserveRingZeroSystemAgentTool(allTools, filteredTools) {
|
|
90
|
-
const openclaw = allTools.find((tool) => tool.name === "openclaw" && tool.catalogMode === "direct-only");
|
|
91
|
-
if (!openclaw) return filteredTools;
|
|
92
|
-
return [openclaw, ...filteredTools.filter((tool) => tool.name !== "openclaw")];
|
|
93
|
-
}
|
|
94
100
|
function resolveCodexMessageToolProvider(params) {
|
|
95
101
|
return params.messageChannel ?? params.messageProvider;
|
|
96
102
|
}
|
|
@@ -131,7 +137,7 @@ async function buildDynamicTools(input) {
|
|
|
131
137
|
}
|
|
132
138
|
const toolBuildStages = createStageTimingTracker();
|
|
133
139
|
const modelHasVision = params.model.input?.includes("image") ?? false;
|
|
134
|
-
const agentDir = params.agentDir ?? resolveAgentDir
|
|
140
|
+
const agentDir = params.agentDir ?? resolveAgentDir(params.config ?? {}, input.sessionAgentId);
|
|
135
141
|
const nativeExecutionPolicy = resolveCodexNativeExecutionPolicyForRun(params, {
|
|
136
142
|
agentId: input.policyAgentId,
|
|
137
143
|
runtimeSessionKey: input.sandboxSessionKey,
|
|
@@ -233,26 +239,16 @@ async function buildDynamicTools(input) {
|
|
|
233
239
|
cronCreatorAuthorityUnavailableReason: input.cronCreatorAuthorityUnavailableReason
|
|
234
240
|
};
|
|
235
241
|
input.onMessageToolTargetResolved?.(options.requireExplicitMessageTarget === true);
|
|
236
|
-
const
|
|
237
|
-
const bindingOptions = { cwd: input.effectiveCwd ?? input.effectiveWorkspace };
|
|
238
|
-
const createToolSurface = params.hostCapabilities.createToolSurface;
|
|
239
|
-
if (!createToolSurface) throw new Error("Codex tool construction requires a current host capability");
|
|
240
|
-
return createToolSurface(options, bindingOptions);
|
|
241
|
-
};
|
|
242
|
-
const allTools = input.resolveCronCreatorToolAuthority ? runWithCronCreatorAuthorityCapabilityResolver({
|
|
243
|
-
capability: params.cronCreatorAuthorityCapability,
|
|
244
|
-
runId: params.runId,
|
|
245
|
-
resolve: input.resolveCronCreatorToolAuthority,
|
|
246
|
-
run: buildOpenClawCodingTools
|
|
247
|
-
}) : buildOpenClawCodingTools();
|
|
242
|
+
const allTools = await createCodexHostToolSurface(params, options, { cwd: input.effectiveCwd ?? input.effectiveWorkspace }, input.resolveCronCreatorToolAuthority);
|
|
248
243
|
toolBuildStages.mark("create-openclaw-coding-tools");
|
|
249
244
|
const preNormalizationDiagnostics = [];
|
|
250
245
|
const readableAllToolProjection = filterProviderNormalizableTools(allTools);
|
|
251
246
|
preNormalizationDiagnostics.push(...readableAllToolProjection.diagnostics);
|
|
252
247
|
const readableAllTools = [...readableAllToolProjection.tools];
|
|
253
|
-
const normallyProfiledTools = input.nativeToolSurfaceEnabled === false ?
|
|
254
|
-
const
|
|
255
|
-
const
|
|
248
|
+
const normallyProfiledTools = filterCodexDynamicTools(readableAllTools, input.pluginConfig, { disabledNativeSurface: input.nativeToolSurfaceEnabled === false ? { preserveShell: !isCodexMemoryFlushRun(params) && input.sandbox?.enabled !== true && nativeExecutionPolicy.effectiveExecHost !== "node" } : void 0 });
|
|
249
|
+
const systemAgentTool = (input.isHostScopedToolActive?.("openclaw") ?? isHostScopedAgentToolActive("openclaw")) && isSystemAgentOnlyCodexDynamicToolAllowlist(params.toolsAllow) && readableAllTools.find((tool) => tool.name === "openclaw" && tool.catalogMode === "direct-only");
|
|
250
|
+
const profileFilteredTools = systemAgentTool ? [systemAgentTool, ...normallyProfiledTools.filter((tool) => tool.name !== "openclaw")] : normallyProfiledTools;
|
|
251
|
+
const codexFilteredTools = await addShellDynamicTools(isCodexMemoryFlushRun(params) ? readableAllTools.filter((tool) => CODEX_MEMORY_FLUSH_DYNAMIC_TOOL_ALLOW.has(normalizeCodexDynamicToolName(tool.name))) : profileFilteredTools, readableAllTools, input, nativeExecutionPolicy);
|
|
256
252
|
toolBuildStages.mark("codex-filtering");
|
|
257
253
|
const visionFilteredTools = filterCodexVisionTools(codexFilteredTools, {
|
|
258
254
|
modelHasVision,
|
|
@@ -260,15 +256,22 @@ async function buildDynamicTools(input) {
|
|
|
260
256
|
});
|
|
261
257
|
toolBuildStages.mark("vision-filtering");
|
|
262
258
|
const webSearchPresent = visionFilteredTools.some((tool) => tool.name === "web_search");
|
|
263
|
-
const persistentCodexWebSearchSurface = params.config?.tools?.web?.search?.enabled !== false && !(input.pluginConfig
|
|
259
|
+
const persistentCodexWebSearchSurface = params.config?.tools?.web?.search?.enabled !== false && !isCodexDynamicToolExcluded(input.pluginConfig, ["web_search"]);
|
|
260
|
+
const persistentHostedWebSearchEligible = resolveCodexWebSearchPlan({
|
|
261
|
+
config: params.config,
|
|
262
|
+
nativeProviderWebSearchSupport: input.nativeProviderWebSearchSupport
|
|
263
|
+
}).kind === "native-hosted";
|
|
264
|
+
let nativeWebSearchAllowed = false;
|
|
264
265
|
let persistentWebSearchAllowed = webSearchPresent;
|
|
265
|
-
if (input.onPersistentWebSearchPolicyResolved && !webSearchPresent && persistentCodexWebSearchSurface) {
|
|
266
|
+
if ((input.onPersistentWebSearchPolicyResolved || webSearchPlan.kind === "native-hosted" && (input.onWebSearchPolicyResolved || webSearchPlan.webFetchHostnameAllowlist)) && !webSearchPresent && persistentCodexWebSearchSurface) {
|
|
266
267
|
const webSearchPolicy = (await import("openclaw/plugin-sdk/agent-harness")).resolveWebSearchToolPolicy({
|
|
267
268
|
config: params.config,
|
|
268
269
|
modelProvider: params.model.provider,
|
|
269
270
|
modelId: params.modelId,
|
|
270
271
|
agentId: input.policyAgentId,
|
|
271
272
|
sessionKey: input.sandboxSessionKey,
|
|
273
|
+
sessionId: params.sessionId,
|
|
274
|
+
...persistentHostedWebSearchEligible ? { runtimeToolAllowlist: toolRunContext.runtimeToolAllowlist } : {},
|
|
272
275
|
sandboxToolPolicy: input.sandbox?.tools,
|
|
273
276
|
messageProvider: messageToolProvider,
|
|
274
277
|
agentAccountId: params.agentAccountId,
|
|
@@ -284,10 +287,17 @@ async function buildDynamicTools(input) {
|
|
|
284
287
|
trustedInternalHandoff: params.trustedInternalHandoff,
|
|
285
288
|
scheduledToolPolicy: params.scheduledToolPolicy
|
|
286
289
|
});
|
|
287
|
-
persistentWebSearchAllowed = webSearchPolicy.persistentAllowed && (!webSearchPolicy.allowed || isCodexMemoryFlushRun(params));
|
|
290
|
+
persistentWebSearchAllowed = webSearchPolicy.persistentAllowed && (persistentHostedWebSearchEligible || !webSearchPolicy.allowed || isCodexMemoryFlushRun(params));
|
|
291
|
+
nativeWebSearchAllowed = webSearchPlan.kind === "native-hosted" && webSearchPolicy.allowed && !isCodexMemoryFlushRun(params);
|
|
288
292
|
}
|
|
289
293
|
input.onPersistentWebSearchPolicyResolved?.(persistentWebSearchAllowed);
|
|
290
|
-
const filteredTools =
|
|
294
|
+
const filteredTools = applyEmbeddedAttemptToolsAllow(visionFilteredTools, toolRunContext.runtimeToolAllowlist, {
|
|
295
|
+
toolMeta: getPluginToolMeta,
|
|
296
|
+
toolAliases: (tool) => {
|
|
297
|
+
const normalized = normalizeCodexDynamicToolName(tool.name);
|
|
298
|
+
return normalized === "sandbox_exec" || normalized === "gateway_exec" || normalized === "node_exec" ? ["exec"] : normalized === "sandbox_process" || normalized === "gateway_process" ? ["exec", "process"] : [];
|
|
299
|
+
}
|
|
300
|
+
});
|
|
291
301
|
toolBuildStages.mark("allowlist-filter");
|
|
292
302
|
const normalizedTools = normalizeAgentRuntimeTools({
|
|
293
303
|
runtimePlan: input.ignoreRuntimePlan ? void 0 : params.runtimePlan,
|
|
@@ -303,7 +313,7 @@ async function buildDynamicTools(input) {
|
|
|
303
313
|
onPreNormalizationSchemaDiagnostics: (diagnostics) => preNormalizationDiagnostics.push(...diagnostics)
|
|
304
314
|
});
|
|
305
315
|
toolBuildStages.mark("runtime-normalization");
|
|
306
|
-
const webSearchAllowed = normalizedTools.some((tool) => tool.name === "web_search");
|
|
316
|
+
const webSearchAllowed = nativeWebSearchAllowed || normalizedTools.some((tool) => tool.name === "web_search");
|
|
307
317
|
webFetchHostnameAllowlistRef.value = webSearchAllowed ? webSearchPlan.webFetchHostnameAllowlist : void 0;
|
|
308
318
|
input.onWebSearchPolicyResolved?.(webSearchAllowed);
|
|
309
319
|
const webSearchFilteredTools = webSearchPlan.suppressManagedWebSearch ? normalizedTools.filter((tool) => tool.name !== "web_search") : normalizedTools;
|
|
@@ -367,9 +377,6 @@ function canCodexAppServerNativeToolSurfaceHonorSandbox(sandbox, options = {}) {
|
|
|
367
377
|
function isCodexMemoryFlushRun(params) {
|
|
368
378
|
return params?.trigger === "memory" && Boolean(params.memoryFlushWritePath?.trim());
|
|
369
379
|
}
|
|
370
|
-
function filterCodexMemoryFlushDynamicTools(tools) {
|
|
371
|
-
return tools.filter((tool) => CODEX_MEMORY_FLUSH_DYNAMIC_TOOL_ALLOW.has(normalizeCodexDynamicToolName(tool.name)));
|
|
372
|
-
}
|
|
373
380
|
/** Requires a Codex sandbox environment only when native tools must run inside OpenClaw sandboxing. */
|
|
374
381
|
function shouldRequireCodexSandboxExecServerEnvironment(params) {
|
|
375
382
|
return Boolean(isCodexRemoteExecPlacementSandbox(params.sandbox) || params.sandbox?.enabled && params.nativeToolSurfaceEnabled && params.sandboxExecServerEnabled);
|
|
@@ -385,20 +392,14 @@ function resolveCodexAppServerExecutionCwd(params) {
|
|
|
385
392
|
});
|
|
386
393
|
}
|
|
387
394
|
function resolveCodexExternalSandboxPolicyForOpenClawSandbox(sandbox) {
|
|
395
|
+
const backendId = sandbox?.backendId.trim().toLowerCase();
|
|
396
|
+
const dockerNetwork = backendId === "docker" || backendId === "podman";
|
|
397
|
+
const network = dockerNetwork ? sandbox?.docker?.network?.trim().toLowerCase() : void 0;
|
|
388
398
|
return {
|
|
389
399
|
type: "externalSandbox",
|
|
390
|
-
networkAccess:
|
|
400
|
+
networkAccess: !dockerNetwork || network && network !== "none" ? "enabled" : "restricted"
|
|
391
401
|
};
|
|
392
402
|
}
|
|
393
|
-
function usesDockerNetworkConfig(sandbox) {
|
|
394
|
-
const backendId = sandbox?.backendId.trim().toLowerCase();
|
|
395
|
-
return backendId === "docker" || backendId === "podman";
|
|
396
|
-
}
|
|
397
|
-
function codexNetworkAccessForOpenClawSandbox(sandbox) {
|
|
398
|
-
if (!usesDockerNetworkConfig(sandbox)) return true;
|
|
399
|
-
const network = sandbox?.docker?.network?.trim().toLowerCase();
|
|
400
|
-
return Boolean(network && network !== "none");
|
|
401
|
-
}
|
|
402
403
|
function disableCodexPluginThreadConfig(pluginConfig) {
|
|
403
404
|
const config = readCodexPluginConfig(pluginConfig);
|
|
404
405
|
return {
|
|
@@ -423,8 +424,8 @@ async function addShellDynamicTools(filteredTools, allTools, input, executionPol
|
|
|
423
424
|
"process",
|
|
424
425
|
"sandbox_process"
|
|
425
426
|
])) {
|
|
426
|
-
additions.push(
|
|
427
|
-
if (processTool) additions.push(
|
|
427
|
+
additions.push(createSandboxShellProjection(execTool, "exec"));
|
|
428
|
+
if (processTool) additions.push(createSandboxShellProjection(processTool, "process"));
|
|
428
429
|
}
|
|
429
430
|
if (input.nativeToolSurfaceEnabled === true && input.sandbox?.enabled !== true && executionPolicy.nativeToolSurfaceAllowed && executionPolicy.effectiveExecHost === "gateway" && !isCodexDynamicToolExcluded(input.pluginConfig, ["exec", "gateway_exec"]) && !existingNames.has("gateway_exec")) {
|
|
430
431
|
const processAliasAvailable = Boolean(processTool && !isCodexDynamicToolExcluded(input.pluginConfig, ["process", "gateway_process"]) && !existingNames.has("gateway_process"));
|
|
@@ -443,19 +444,6 @@ async function addShellDynamicTools(filteredTools, allTools, input, executionPol
|
|
|
443
444
|
}
|
|
444
445
|
return additions.length ? [...filteredTools, ...additions] : filteredTools;
|
|
445
446
|
}
|
|
446
|
-
function shouldKeepOpenClawShellDynamicTools(input, nodePolicy) {
|
|
447
|
-
return !isCodexMemoryFlushRun(input.params) && input.nativeToolSurfaceEnabled === false && input.sandbox?.enabled !== true && nodePolicy.effectiveExecHost !== "node";
|
|
448
|
-
}
|
|
449
|
-
/** Applies a normalized tool allowlist while preserving shell aliases for exec/process. */
|
|
450
|
-
function filterCodexDynamicToolsForAllowlist(tools, toolsAllow) {
|
|
451
|
-
return applyEmbeddedAttemptToolsAllow(tools, toolsAllow, {
|
|
452
|
-
toolMeta: getPluginToolMeta,
|
|
453
|
-
toolAliases: (tool) => {
|
|
454
|
-
const normalized = normalizeCodexDynamicToolName(tool.name);
|
|
455
|
-
return normalized === "sandbox_exec" || normalized === "gateway_exec" || normalized === "node_exec" ? ["exec"] : normalized === "sandbox_process" || normalized === "gateway_process" ? ["exec", "process"] : [];
|
|
456
|
-
}
|
|
457
|
-
});
|
|
458
|
-
}
|
|
459
447
|
function shouldForceMessageTool(params) {
|
|
460
448
|
return params.disableMessageTool !== true && params.sourceReplyDeliveryMode === "message_tool_only";
|
|
461
449
|
}
|