@openclaw/codex 2026.9.6 → 2026.9.8
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-Eem_WGqY.mjs → account-usage-runtime-G348lY1q.mjs} +5 -5
- package/dist/.setup/{apply-DDOi8uNx.mjs → apply-Cqb-YoCS.mjs} +22 -36
- package/dist/.setup/{attempt-client-cleanup-CEv1cKwF.mjs → attempt-client-cleanup-B-S7ngS_.mjs} +128 -37
- package/dist/.setup/attempt-workspace-context-BJ5Z_olH.mjs +164 -0
- package/dist/.setup/{auth-binding-DhLWa_7K.mjs → auth-binding-BLWz7stm.mjs} +14 -1
- package/dist/.setup/{auth-cache-key-B2mpaI9D.mjs → auth-cache-key-Dnps4W4_.mjs} +36 -34
- package/dist/.setup/{auth-profile-WqZtZfXN.mjs → auth-profile-B0okYl2D.mjs} +1 -2
- package/dist/.setup/auth-start-options-BPIPeEX8.mjs +44 -0
- package/dist/.setup/{binding-connection-ThoatDcb.mjs → binding-connection-DTtN1KrX.mjs} +2 -2
- package/dist/.setup/{binding-connection.runtime-yoHrABt-.mjs → binding-connection.runtime-6TpgD1M6.mjs} +4 -4
- package/dist/.setup/{bounded-turn-B2HScEgT.mjs → bounded-turn-BNunZPtz.mjs} +15 -18
- package/dist/.setup/bounded-turn-isolation-B8K_ylqk.mjs +14 -0
- package/dist/.setup/{build-state-C7EnDVgr.mjs → build-state-DIQ5O_-S.mjs} +1 -1
- package/dist/.setup/{capabilities-CDXOOFdZ.mjs → capabilities-B3WEZl4e.mjs} +2 -10
- package/dist/.setup/{client-catalog-response-BMgt_4q4.mjs → client-catalog-response-DRvx_wCC.mjs} +1 -1
- package/dist/.setup/{client-Cs08OXVQ.mjs → client-qyUBJlGZ.mjs} +138 -399
- package/dist/.setup/{command-dispatch-B4JuOsOk.mjs → command-dispatch-Btrs1D6f.mjs} +5 -8
- package/dist/.setup/{command-formatters-Bmqvr9tO.mjs → command-formatters-R3ckE3Co.mjs} +29 -61
- package/dist/.setup/{command-handlers-DW7Lx9oH.mjs → command-handlers-DvlCHJch.mjs} +222 -343
- package/dist/.setup/{command-rpc-DixIj3HW.mjs → command-rpc-skzRq4wD.mjs} +15 -18
- package/dist/.setup/compact-8ttks5U5.mjs +776 -0
- package/dist/.setup/{config-BoTP_mrL.mjs → config-DKhXquav.mjs} +26 -28
- package/dist/.setup/{config-options-BvaRs51b.mjs → config-options-CzyWLTJt.mjs} +24 -37
- package/dist/.setup/{config-parsing-CcB9iPoq.mjs → config-parsing-b088LyhT.mjs} +57 -60
- package/dist/.setup/{config-runtime-C8Rw1m1m.mjs → config-runtime-C0NbLms1.mjs} +2 -2
- package/dist/.setup/{config-security-BEReZ6go.mjs → config-security-CE-FcGw9.mjs} +32 -111
- 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-DP-gMrBP.mjs → conversation-binding-74LaGGH-.mjs} +67 -90
- package/dist/.setup/{conversation-binding-data-CrcyZk6O.mjs → conversation-binding-data-C746z5Pn.mjs} +8 -12
- package/dist/.setup/{conversation-control-uK9Jomlc.mjs → conversation-control-OrN6zuaY.mjs} +8 -8
- 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-BDXl-8Cw.mjs → dynamic-tools-Db2sY5cZ.mjs} +2305 -2606
- package/dist/.setup/{effective-mcp-catalog-CvnvnGIe.mjs → effective-mcp-catalog-Bi6-SQ7i.mjs} +8 -17
- package/dist/.setup/{ephemeral-turn-poidXgek.mjs → ephemeral-turn-DiCS1ijR.mjs} +3 -3
- package/dist/.setup/event-projector-assistant-message-MV_1dj-3.mjs +69 -0
- package/dist/.setup/{event-projector-usage-CnBS8Wa3.mjs → event-projector-usage-03R0I2dM.mjs} +3 -25
- package/dist/.setup/event-projector-values-DJSz8BTk.mjs +106 -0
- package/dist/.setup/incognito-session-DWYapfwf.mjs +2 -0
- package/dist/.setup/{inference-context-D96l9-ew.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-b-aJMSxm.mjs → inference-proxy-DhcXOgUE.mjs} +174 -214
- package/dist/.setup/{isolated-completion-BIZFhTNG.mjs → isolated-completion-D80IXfQF.mjs} +9 -12
- package/dist/.setup/{managed-binary-BnshlFag.mjs → managed-binary-kiWRhNRE.mjs} +8 -12
- package/dist/.setup/{model-catalog-CfXJf9Ay.mjs → model-catalog-DiC0Tkha.mjs} +11 -10
- package/dist/.setup/model-runtime-BdqzOMkU.mjs +11 -0
- package/dist/.setup/{models-KnqBv0hE.mjs → models-DfLmPV0k.mjs} +9 -18
- package/dist/.setup/{native-auth-rWbGbMn3.mjs → native-auth-CuG53tu4.mjs} +4 -4
- package/dist/.setup/{native-execution-policy-umd0tgh4.mjs → native-execution-policy-BxZJy5mP.mjs} +5 -30
- package/dist/.setup/{native-subagent-monitor-D3filLY2.mjs → native-subagent-monitor-BwkQXf9e.mjs} +4395 -3609
- 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-r3avj02l.mjs → node-cli-sessions-HC4W6FLI.mjs} +19 -49
- package/dist/.setup/{node-exec-server.runtime-BDwWXVpK.mjs → node-exec-server.runtime-BgBfWQqo.mjs} +3 -6
- package/dist/.setup/{plan-CN3VwfNU.mjs → plan-DPdMk1Oy.mjs} +49 -92
- package/dist/.setup/{plugin-activation-DT3MNtqj.mjs → plugin-activation-cNHRfaxU.mjs} +8 -36
- package/dist/.setup/{plugin-app-cache-key-B2CsSdnV.mjs → plugin-app-cache-key-BL9B5H0L.mjs} +6 -23
- package/dist/.setup/{plugin-inventory-BoRei8Z4.mjs → plugin-inventory-Cky2XJUw.mjs} +21 -21
- package/dist/.setup/{plugin-marketplace-discovery-CDOi8IFs.mjs → plugin-marketplace-discovery-D_dV9FXa.mjs} +18 -24
- package/dist/.setup/{plugin-metadata-cache-Ctmo83k_.mjs → plugin-metadata-cache-BRwtRct9.mjs} +116 -176
- package/dist/.setup/{provider-BOsxQHOM.mjs → provider-D6F_7p1I.mjs} +11 -14
- package/dist/.setup/{provider-capabilities-BfE88FZ5.mjs → provider-capabilities-DG5qbsUZ.mjs} +13 -18
- package/dist/.setup/{rate-limits-CMU3DUD0.mjs → rate-limits-B7-X2TgG.mjs} +9 -31
- package/dist/.setup/{request-D2L0zMrq.mjs → request-BZOfsSXW.mjs} +7 -6
- package/dist/.setup/responses-oauth-twnuTaAa.mjs +93 -0
- package/dist/.setup/rpc-error-BlD2vuzn.mjs +31 -0
- package/dist/.setup/{run-attempt-BHu11r7h.mjs → run-attempt-dYJhjZrp.mjs} +1035 -1023
- package/dist/.setup/{run-attempt-lifecycle-B7JbY4-F.mjs → run-attempt-lifecycle-C-6O3Exn.mjs} +10 -24
- package/dist/.setup/{runtime-artifact-CLZ8udh-.mjs → runtime-artifact-DDQ-HGXf.mjs} +16 -4
- 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-BGoz8wOK.mjs → session-binding-record-Oe9L-CNY.mjs} +52 -130
- package/dist/.setup/{session-binding-sidecars-BlB5EvIS.mjs → session-binding-sidecars-jo6H8dFr.mjs} +196 -17
- package/dist/.setup/{session-catalog-Pno1xGcl.mjs → session-catalog-BFafIiF6.mjs} +185 -350
- package/dist/.setup/{session-catalog-adoption-BI6UTDZT.mjs → session-catalog-adoption-BU_pHWG7.mjs} +7 -6
- package/dist/.setup/{session-catalog-archive-lHBqzhaO.mjs → session-catalog-archive-spHfihri.mjs} +6 -6
- package/dist/.setup/session-catalog-events-BMCFMZw-.mjs +139 -0
- package/dist/.setup/session-catalog-home-id-vlih0B_g.mjs +22 -0
- package/dist/.setup/{session-catalog-index-B9_VQIUz.mjs → session-catalog-index-DwJjnF5k.mjs} +126 -122
- package/dist/.setup/{session-catalog-index-order-hcdz07yN.mjs → session-catalog-index-order-BcQpHks3.mjs} +1 -1
- package/dist/.setup/{session-catalog-index-state-Dgh8ORJm.mjs → session-catalog-index-state-TeO7EyO-.mjs} +3 -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-CuaFZuQE.mjs +178 -0
- package/dist/.setup/{session-catalog-node-adoption-ITddWx_X.mjs → session-catalog-node-adoption-DgXvSGu0.mjs} +10 -27
- package/dist/.setup/{session-catalog-node-continue-6g6qi4A9.mjs → session-catalog-node-continue-DjKXHBbi.mjs} +8 -10
- package/dist/.setup/session-catalog-node-lookup-CtAXI5W5.mjs +56 -0
- package/dist/.setup/{session-catalog-native-projection-DowriLid.mjs → session-catalog-parsing-CPGaPYr-.mjs} +11 -194
- package/dist/.setup/{session-catalog-projection-zK_PUsiE.mjs → session-catalog-projection-CGfzfP93.mjs} +6 -4
- package/dist/.setup/session-catalog-provenance-DoAvktcj.mjs +95 -0
- package/dist/.setup/{session-cli-irrD-uo7.mjs → session-cli-DlmBHYIe.mjs} +9 -22
- package/dist/.setup/{session-history-BrqhSCf9.mjs → session-history-D83lJWHG.mjs} +4 -6
- package/dist/.setup/{session-history-import-D-3wAgOP.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-CaCh0xF_.mjs → session-history.worker-MnPKncqP.mjs} +9 -5
- package/dist/.setup/session-initialization-6aveB9qb.mjs +22 -0
- package/dist/.setup/{session-permission-policy-BI1QK_98.mjs → session-permission-policy-Ci_fVX6y.mjs} +4 -8
- package/dist/.setup/{session-retirement-BH-S6qkJ.mjs → session-retirement-LlYWBKTJ.mjs} +17 -17
- package/dist/.setup/{settled-turn-context-fmwouT5I.mjs → settled-turn-context-D4yj4rxf.mjs} +1 -1
- package/dist/.setup/{settled-turn-finalizer-DiAi6Kx6.mjs → settled-turn-finalizer-DW9W3gza.mjs} +14 -10
- package/dist/.setup/{shared-client-DA4VR4Eb.mjs → shared-client-CJCTeFpQ.mjs} +783 -412
- package/dist/.setup/shared-client-lifecycle-7xgtlo15.mjs +153 -0
- package/dist/.setup/{side-question-BJ1wSDcB.mjs → side-question-BLeGj7TQ.mjs} +79 -143
- package/dist/.setup/{source-CUzJq5WN.mjs → source-CJis_1EF.mjs} +80 -137
- package/dist/.setup/{thread-lifecycle-B3mfz1TG.mjs → thread-lifecycle-_bAbjedG.mjs} +294 -737
- package/dist/.setup/{thread-ownership-DcTtAcXj.mjs → thread-ownership-B6pPt21M.mjs} +45 -10
- package/dist/.setup/{incognito-session-uhrBF6wJ.mjs → thread-ownership-queue-Dp24d7-F.mjs} +1 -2
- package/dist/.setup/{thread-policy-DGuQsuFC.mjs → thread-policy-gNPzzpVp.mjs} +46 -7
- package/dist/.setup/{thread-requests-BLvGkP2R.mjs → thread-requests-OWGOiDaV.mjs} +199 -302
- package/dist/.setup/{thread-resume-DIBXwOpE.mjs → thread-resume-GOry0AYh.mjs} +6 -6
- package/dist/.setup/{timeout-C910MdAB.mjs → timeout-CXOfNoaX.mjs} +1 -35
- package/dist/.setup/{transcript-history-projection-ZZpkFkJ_.mjs → transcript-history-projection-DRSifI-1.mjs} +17 -89
- package/dist/.setup/{transcript-mirror-attestation-CzM-94NC.mjs → transcript-mirror-attestation-YSegaktH.mjs} +3 -4
- package/dist/.setup/{transcript-mirror-BtHDBp1G.mjs → transcript-mirror-kxmCYsuF.mjs} +7 -9
- package/dist/.setup/{transport-stdio-h2VHOskC.mjs → transport-stdio-Bdegpn2V.mjs} +5 -22
- 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-BUr4OUbC.mjs → upstream-session-fork-gkdRj2yH.mjs} +23 -23
- package/dist/.setup/{usage-BML0r-ua.mjs → usage-CApUvLOV.mjs} +4 -4
- package/dist/.setup/{usage-limit-error-DUMbefVY.mjs → usage-limit-error-wSMQkbpV.mjs} +4 -19
- package/dist/.setup/{web-search-provider.runtime-CDKlN-Rv.mjs → web-search-provider.runtime-UKgeiBUG.mjs} +8 -19
- package/dist/api.js +9 -11
- package/dist/catalog-page.worker.js +1 -1
- 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 +193 -245
- 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 +3 -3
- package/dist/session-history.worker.js +1 -1
- package/openclaw.plugin.json +14 -2
- package/package.json +7 -6
- package/dist/.setup/attempt-workspace-context-DUVEn_CS.mjs +0 -331
- package/dist/.setup/compact-Du5UvtxA.mjs +0 -680
- package/dist/.setup/event-projector-assistant-message-BsruvNrH.mjs +0 -103
- package/dist/.setup/event-projector-items-C6L_5ZiT.mjs +0 -234
- package/dist/.setup/harness-a_MsE4-_.mjs +0 -355
- package/dist/.setup/history-rejection-B4nOXNXF.mjs +0 -13
- package/dist/.setup/image-payload-sanitizer-tupAr-2o.mjs +0 -79
- package/dist/.setup/local-runtime-attribution-B_2mnqhb.mjs +0 -19
- package/dist/.setup/native-subagent-history-0nYYgo0k.mjs +0 -148
- package/dist/.setup/native-subagent-task-ids-wb8CKZGN.mjs +0 -441
- package/dist/.setup/plugin-approval-roundtrip-C0MZzCuP.mjs +0 -122
- package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
- package/dist/.setup/sandbox-guard-C2sRMOEY.mjs +0 -166
- package/dist/.setup/session-binding-Cm0apEbd.mjs +0 -692
- package/dist/.setup/session-catalog-events-Bj6j94E_.mjs +0 -347
- package/dist/.setup/session-history-read-B3ZfSUbF.mjs +0 -50
- package/dist/.setup/session-initialization-rcgbZiid.mjs +0 -75
- package/dist/.setup/thread-history-page-DoVpnHim.mjs +0 -83
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./config-security-
|
|
3
|
-
import "./config-parsing-
|
|
4
|
-
import
|
|
5
|
-
import "./config-
|
|
1
|
+
import { a as readExecAsk, l as readRecord, o as readExecSecurity } from "./config-utils-D0CXecki.mjs";
|
|
2
|
+
import "./config-security-CE-FcGw9.mjs";
|
|
3
|
+
import "./config-parsing-b088LyhT.mjs";
|
|
4
|
+
import "./auth-start-options-BPIPeEX8.mjs";
|
|
5
|
+
import { c as canUseCodexModelBackedApprovalsReviewerForModel$1 } from "./config-options-CzyWLTJt.mjs";
|
|
6
|
+
import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-C0NbLms1.mjs";
|
|
7
|
+
import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
|
|
6
8
|
import { resolveAgentConfig } from "openclaw/plugin-sdk/agent-scope-runtime";
|
|
7
9
|
import { execPolicy } from "openclaw/plugin-sdk/agent-harness-runtime";
|
|
8
10
|
import { resolveExecApprovalsFromFile } from "openclaw/plugin-sdk/exec-approvals-runtime";
|
|
@@ -10,7 +12,10 @@ import { resolveProviderIdForAuth } from "openclaw/plugin-sdk/provider-auth-alia
|
|
|
10
12
|
//#region extensions/codex/src/app-server/config-exec-approvals.ts
|
|
11
13
|
function resolveOpenClawExecPolicyFromConfig(params) {
|
|
12
14
|
const globalExec = readRecord(params.config?.tools?.exec);
|
|
13
|
-
const globalPolicy = applyOpenClawExecPolicyLayer(
|
|
15
|
+
const globalPolicy = applyOpenClawExecPolicyLayer({
|
|
16
|
+
...resolveOpenClawExecPolicyForMode("full"),
|
|
17
|
+
touched: false
|
|
18
|
+
}, globalExec);
|
|
14
19
|
const agentId = params.agentId?.trim();
|
|
15
20
|
return applyOpenClawExecPolicyLayer(globalPolicy, agentId ? readRecord(resolveAgentConfig(params.config ?? {}, agentId)?.tools?.exec) : void 0);
|
|
16
21
|
}
|
|
@@ -23,17 +28,14 @@ function resolveOpenClawExecPolicyForCodexAppServer(params) {
|
|
|
23
28
|
config: params.config,
|
|
24
29
|
agentId: params.agentId
|
|
25
30
|
}), params.execOverrides);
|
|
26
|
-
return applyOpenClawExecApprovalFloors(overridePolicy,
|
|
27
|
-
|
|
31
|
+
return applyOpenClawExecApprovalFloors(overridePolicy, params.approvals ? resolveExecApprovalsFromFile({
|
|
32
|
+
file: params.approvals,
|
|
28
33
|
agentId: params.agentId,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
...resolveOpenClawExecPolicyForMode("full"),
|
|
35
|
-
touched: false
|
|
36
|
-
};
|
|
34
|
+
overrides: {
|
|
35
|
+
security: overridePolicy.security,
|
|
36
|
+
ask: overridePolicy.ask
|
|
37
|
+
}
|
|
38
|
+
}).agent : void 0);
|
|
37
39
|
}
|
|
38
40
|
function applyOpenClawExecPolicyLayer(base, exec) {
|
|
39
41
|
if (!exec) return base;
|
|
@@ -57,17 +59,6 @@ function applyOpenClawExecPolicyLayer(base, exec) {
|
|
|
57
59
|
touched: true
|
|
58
60
|
};
|
|
59
61
|
}
|
|
60
|
-
function resolveOpenClawExecApprovalFloorsForCodexAppServer(params) {
|
|
61
|
-
if (!params.approvals) return;
|
|
62
|
-
return resolveExecApprovalsFromFile({
|
|
63
|
-
file: params.approvals,
|
|
64
|
-
agentId: params.agentId,
|
|
65
|
-
overrides: {
|
|
66
|
-
security: params.policy.security,
|
|
67
|
-
ask: params.policy.ask
|
|
68
|
-
}
|
|
69
|
-
}).agent;
|
|
70
|
-
}
|
|
71
62
|
function applyOpenClawExecApprovalFloors(base, approvalFloors) {
|
|
72
63
|
if (!approvalFloors) return base;
|
|
73
64
|
const nextSecurity = approvalFloors.security ? execPolicy.minSecurity(base.security, approvalFloors.security) : base.security;
|
|
@@ -104,4 +95,11 @@ function canUseCodexModelBackedApprovalsReviewerForModel(params) {
|
|
|
104
95
|
return canUseCodexModelBackedApprovalsReviewerForModel$1(params, resolveProviderIdForAuth);
|
|
105
96
|
}
|
|
106
97
|
//#endregion
|
|
107
|
-
|
|
98
|
+
//#region extensions/codex/src/app-server/config.ts
|
|
99
|
+
var config_exports = /* @__PURE__ */ __exportAll({
|
|
100
|
+
CODEX_PLUGINS_MARKETPLACE_NAME: () => CODEX_PLUGINS_MARKETPLACE_NAME,
|
|
101
|
+
CODEX_PLUGINS_WORKSPACE_MARKETPLACE_NAME: () => CODEX_PLUGINS_WORKSPACE_MARKETPLACE_NAME,
|
|
102
|
+
resolveCodexAppServerRuntimeOptions: () => resolveCodexAppServerRuntimeOptions
|
|
103
|
+
});
|
|
104
|
+
//#endregion
|
|
105
|
+
export { canUseCodexModelBackedApprovalsReviewerForModel as n, resolveOpenClawExecPolicyForCodexAppServer as r, config_exports as t };
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { A as selectForcedPromptingSandbox, C as assertCodexAppServerAllowedForOpenClawExecMode, D as resolveEffectiveOpenClawExecModeForCodexAppServer, E as resolveCodexPolicyModeForOpenClawExecMode, O as resolveSandbox, T as resolveApprovalsReviewer, a as resolveCodexAppServerNetworkProxy, c as resolveTransport, d as resolveCodexAppServerHomeDir, g as parseAllowedApprovalPoliciesFromCodexRequirements, i as normalizeRemoteWorkspaceRoot, k as selectForcedDangerFullAccessSandbox, o as resolveDefaultCodexAppServerPolicy, p as resolveCodexAppServerUserHomeDir, r as inferCodexAppServerConnectionClass, s as resolvePolicyMode, t as assertCodexAppServerConnectionSecurity, w as resolveApprovalPolicy, y as readCodexRequirementsToml } from "./config-security-BEReZ6go.mjs";
|
|
3
|
-
import { a as DEFAULT_CODEX_COMPUTER_USE_PLUGIN_NAME, d as readCodexPluginConfig, n as DEFAULT_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS, o as DEFAULT_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS, r as DEFAULT_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS, s as assertCodexAppServerCommandHasNoInlineArgs } from "./config-parsing-CcB9iPoq.mjs";
|
|
4
|
-
import { i as readCodexAppServerConfigOptions } from "./launch-args-DbFCehO7.mjs";
|
|
1
|
+
import { c as readNumberEnv, i as normalizeHeaders, l as readRecord, r as normalizeCodexServiceTier, s as readNonEmptyString, t as hashSecretForKey, u as resolveArgs } from "./config-utils-D0CXecki.mjs";
|
|
5
2
|
import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
|
|
6
|
-
import {
|
|
3
|
+
import { C as resolveSandbox, S as resolveEffectiveOpenClawExecModeForCodexAppServer, T as selectForcedPromptingSandbox, a as resolveDefaultCodexAppServerPolicy, b as resolveApprovalsReviewer, d as parseAllowedApprovalPoliciesFromCodexRequirements, i as resolveCodexAppServerNetworkProxy, m as readCodexRequirementsToml, o as resolvePolicyMode, r as inferCodexAppServerConnectionClass, s as resolveTransport, t as assertCodexAppServerConnectionSecurity, v as assertCodexAppServerAllowedForOpenClawExecMode, w as selectForcedDangerFullAccessSandbox, x as resolveCodexPolicyModeForOpenClawExecMode, y as resolveApprovalPolicy } from "./config-security-CE-FcGw9.mjs";
|
|
4
|
+
import { a as DEFAULT_CODEX_COMPUTER_USE_PLUGIN_NAME, d as readCodexPluginConfig, n as DEFAULT_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS, o as DEFAULT_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS, r as DEFAULT_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS, s as assertCodexAppServerCommandHasNoInlineArgs } from "./config-parsing-b088LyhT.mjs";
|
|
5
|
+
import { i as readCodexAppServerConfigOptions } from "./launch-args-DbFCehO7.mjs";
|
|
6
|
+
import { r as resolveCodexAppServerUserHomeDir, t as resolveCodexAppServerHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
|
|
7
|
+
import { normalizeTrimmedStringList, parseBooleanValue } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
|
+
import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
9
|
+
import { resolvePositiveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
|
|
7
10
|
import { parse } from "smol-toml";
|
|
8
11
|
import { readFileSync } from "node:fs";
|
|
9
12
|
import path from "node:path";
|
|
@@ -55,11 +58,9 @@ function canUseCodexModelBackedApprovalsReviewerForModel(params, resolveAuthProv
|
|
|
55
58
|
return (inferredProvider ?? explicitProvider) === "openai" && isTrustedCodexModelBackedOpenAIProvider(params, resolveAuthProviderId);
|
|
56
59
|
}
|
|
57
60
|
function isTrustedCodexModelBackedOpenAIProvider(params, resolveAuthProviderId) {
|
|
58
|
-
if (!
|
|
61
|
+
if (![params.env?.OPENAI_BASE_URL, params.env?.OPENAI_API_BASE].every(isNativeOpenAIBaseUrl)) return false;
|
|
59
62
|
if (!nativeCodexConfigIsTrustedForModelBackedReview(params)) return false;
|
|
60
|
-
|
|
61
|
-
if (openAIProviders.length === 0) return true;
|
|
62
|
-
return openAIProviders.every((openAIProvider) => configuredOpenAIProviderIsTrustedForModelBackedReview(openAIProvider, params.model));
|
|
63
|
+
return readConfiguredOpenAIProvidersForModelBackedReview(params.config, resolveAuthProviderId).every((openAIProvider) => configuredOpenAIProviderIsTrustedForModelBackedReview(openAIProvider, params.model));
|
|
63
64
|
}
|
|
64
65
|
function resolveCodexModelBackedReviewerPolicyContext(params) {
|
|
65
66
|
const provider = params.provider?.trim();
|
|
@@ -70,21 +71,9 @@ function resolveCodexModelBackedReviewerPolicyContext(params) {
|
|
|
70
71
|
const bindingModelProvider = params.bindingModelProvider?.trim();
|
|
71
72
|
const currentModel = params.model?.trim();
|
|
72
73
|
const bindingModel = params.bindingModel?.trim();
|
|
73
|
-
|
|
74
|
-
modelProvider: normalizeCodexModelBackedReviewerPolicyProvider(bindingModelProvider),
|
|
75
|
-
model: params.model ?? params.bindingModel
|
|
76
|
-
};
|
|
77
|
-
const currentModelProvider = inferProviderFromModelRef(params.model);
|
|
78
|
-
if (currentModelProvider) return {
|
|
79
|
-
modelProvider: normalizeCodexModelBackedReviewerPolicyProvider(currentModelProvider),
|
|
80
|
-
model: params.model
|
|
81
|
-
};
|
|
82
|
-
if (bindingModelProvider) return {
|
|
83
|
-
modelProvider: normalizeCodexModelBackedReviewerPolicyProvider(bindingModelProvider),
|
|
84
|
-
model: params.model ?? params.bindingModel
|
|
85
|
-
};
|
|
74
|
+
const modelProvider = bindingModelProvider && currentModel && bindingModel && currentModel === bindingModel ? bindingModelProvider : (inferProviderFromModelRef(params.model) ?? bindingModelProvider) || (params.nativeAuthProfile === true ? "openai" : void 0);
|
|
86
75
|
return {
|
|
87
|
-
modelProvider:
|
|
76
|
+
modelProvider: modelProvider ? normalizeCodexModelBackedReviewerPolicyProvider(modelProvider) : void 0,
|
|
88
77
|
model: params.model ?? params.bindingModel
|
|
89
78
|
};
|
|
90
79
|
}
|
|
@@ -230,9 +219,6 @@ function isNativeOpenAIBaseUrl(value) {
|
|
|
230
219
|
return false;
|
|
231
220
|
}
|
|
232
221
|
}
|
|
233
|
-
function openAIBaseUrlEnvOverridesAreTrustedForModelBackedReview(env) {
|
|
234
|
-
return [env?.OPENAI_BASE_URL, env?.OPENAI_API_BASE].every(isNativeOpenAIBaseUrl);
|
|
235
|
-
}
|
|
236
222
|
function isNativeChatGPTBaseUrl(value) {
|
|
237
223
|
if (typeof value !== "string" || !value.trim()) return true;
|
|
238
224
|
try {
|
|
@@ -283,7 +269,7 @@ function createCodexAppServerConfig({ resolveProviderIdForAuth }) {
|
|
|
283
269
|
const args = resolveArgs(config.args, env.OPENCLAW_CODEX_APP_SERVER_ARGS);
|
|
284
270
|
const headers = normalizeHeaders(config.headers);
|
|
285
271
|
const clearEnv = normalizeTrimmedStringList(config.clearEnv);
|
|
286
|
-
const authToken =
|
|
272
|
+
const authToken = normalizeResolvedSecretInputString({
|
|
287
273
|
value: config.authToken,
|
|
288
274
|
path: "plugins.entries.codex.config.appServer.authToken"
|
|
289
275
|
});
|
|
@@ -293,7 +279,7 @@ function createCodexAppServerConfig({ resolveProviderIdForAuth }) {
|
|
|
293
279
|
url
|
|
294
280
|
});
|
|
295
281
|
const remoteAppsSubstrate = "preconfigured";
|
|
296
|
-
const remoteWorkspaceRoot =
|
|
282
|
+
const remoteWorkspaceRoot = readNonEmptyString(config.remoteWorkspaceRoot);
|
|
297
283
|
const execMode = resolveEffectiveOpenClawExecModeForCodexAppServer({
|
|
298
284
|
execMode: params.execMode,
|
|
299
285
|
execPolicy: params.execPolicy
|
|
@@ -400,12 +386,13 @@ function createCodexAppServerConfig({ resolveProviderIdForAuth }) {
|
|
|
400
386
|
...remoteWorkspaceRoot ? { remoteWorkspaceRoot } : {},
|
|
401
387
|
codeModeOnly: config.codeModeOnly === true,
|
|
402
388
|
loopDetectionPreToolUseRelay: config.loopDetectionPreToolUseRelay !== false,
|
|
403
|
-
requestTimeoutMs:
|
|
389
|
+
requestTimeoutMs: resolvePositiveTimerTimeoutMs(config.requestTimeoutMs, 6e4),
|
|
404
390
|
approvalPolicy: forcedPolicy?.approvalPolicy ?? approvalPolicy,
|
|
405
391
|
approvalPolicySource,
|
|
406
392
|
sandbox: resolvedSandbox,
|
|
407
393
|
approvalsReviewer: forcedPolicy?.approvalsReviewer ?? explicitApprovalsReviewer ?? defaultPolicy?.approvalsReviewer ?? (policyMode === "guardian" ? "auto_review" : "user"),
|
|
408
394
|
...serviceTier ? { serviceTier } : {},
|
|
395
|
+
enableUltrafast: config.enableUltrafast === true,
|
|
409
396
|
...resolveCodexAppServerNetworkProxy(config.networkProxy, resolvedSandbox)
|
|
410
397
|
};
|
|
411
398
|
}
|
|
@@ -465,17 +452,17 @@ function resolveCodexComputerUseConfig(params = {}) {
|
|
|
465
452
|
const marketplaceName = readNonEmptyString(params.overrides?.marketplaceName) ?? readNonEmptyString(config.marketplaceName) ?? readNonEmptyString(env.OPENCLAW_CODEX_COMPUTER_USE_MARKETPLACE_NAME);
|
|
466
453
|
const configuredPluginName = readNonEmptyString(params.overrides?.pluginName) ?? readNonEmptyString(config.pluginName) ?? readNonEmptyString(env.OPENCLAW_CODEX_COMPUTER_USE_PLUGIN_NAME);
|
|
467
454
|
const configuredMcpServerName = readNonEmptyString(params.overrides?.mcpServerName) ?? readNonEmptyString(config.mcpServerName) ?? readNonEmptyString(env.OPENCLAW_CODEX_COMPUTER_USE_MCP_SERVER_NAME);
|
|
468
|
-
const autoInstall = params.overrides?.autoInstall ?? config.autoInstall ??
|
|
469
|
-
const marketplaceDiscoveryTimeoutMs =
|
|
470
|
-
const liveTestTimeoutMs =
|
|
471
|
-
const toolCallTimeoutMs =
|
|
455
|
+
const autoInstall = params.overrides?.autoInstall ?? config.autoInstall ?? parseBooleanValue(env.OPENCLAW_CODEX_COMPUTER_USE_AUTO_INSTALL) ?? false;
|
|
456
|
+
const marketplaceDiscoveryTimeoutMs = resolvePositiveTimerTimeoutMs(params.overrides?.marketplaceDiscoveryTimeoutMs ?? config.marketplaceDiscoveryTimeoutMs ?? readNumberEnv(env.OPENCLAW_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS), DEFAULT_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS);
|
|
457
|
+
const liveTestTimeoutMs = resolvePositiveTimerTimeoutMs(params.overrides?.liveTestTimeoutMs ?? config.liveTestTimeoutMs ?? readNumberEnv(env.OPENCLAW_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS), DEFAULT_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS);
|
|
458
|
+
const toolCallTimeoutMs = resolvePositiveTimerTimeoutMs(params.overrides?.toolCallTimeoutMs ?? config.toolCallTimeoutMs ?? readNumberEnv(env.OPENCLAW_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS), DEFAULT_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS);
|
|
472
459
|
const healthCheckIntervalMinutes = normalizeComputerUseHealthCheckIntervalMinutes(params.overrides?.healthCheckIntervalMinutes ?? config.healthCheckIntervalMinutes ?? readNumberEnv(env.OPENCLAW_CODEX_COMPUTER_USE_HEALTH_CHECK_INTERVAL_MINUTES));
|
|
473
|
-
const healthCheckEnabled = params.overrides?.healthCheckEnabled ?? config.healthCheckEnabled ??
|
|
460
|
+
const healthCheckEnabled = params.overrides?.healthCheckEnabled ?? config.healthCheckEnabled ?? parseBooleanValue(env.OPENCLAW_CODEX_COMPUTER_USE_HEALTH_CHECK_ENABLED) ?? false;
|
|
474
461
|
const pluginCacheMode = normalizeComputerUsePluginCacheMode(params.overrides?.pluginCacheMode) ?? normalizeComputerUsePluginCacheMode(config.pluginCacheMode) ?? normalizeComputerUsePluginCacheMode(env.OPENCLAW_CODEX_COMPUTER_USE_PLUGIN_CACHE_MODE) ?? "independent";
|
|
475
|
-
const strictReadiness = params.overrides?.strictReadiness ?? config.strictReadiness ??
|
|
476
|
-
const autoRepair = params.overrides?.autoRepair ?? config.autoRepair ??
|
|
462
|
+
const strictReadiness = params.overrides?.strictReadiness ?? config.strictReadiness ?? parseBooleanValue(env.OPENCLAW_CODEX_COMPUTER_USE_STRICT_READINESS) ?? false;
|
|
463
|
+
const autoRepair = params.overrides?.autoRepair ?? config.autoRepair ?? parseBooleanValue(env.OPENCLAW_CODEX_COMPUTER_USE_AUTO_REPAIR) ?? false;
|
|
477
464
|
return {
|
|
478
|
-
enabled: params.overrides?.enabled ?? config.enabled ??
|
|
465
|
+
enabled: params.overrides?.enabled ?? config.enabled ?? parseBooleanValue(env.OPENCLAW_CODEX_COMPUTER_USE) ?? Boolean(autoInstall || marketplaceSource || marketplacePath || marketplaceName || configuredPluginName || configuredMcpServerName),
|
|
479
466
|
autoInstall,
|
|
480
467
|
marketplaceDiscoveryTimeoutMs,
|
|
481
468
|
liveTestTimeoutMs,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN, r as normalizeCodexServiceTier } from "./config-utils-D0CXecki.mjs";
|
|
2
2
|
import { asNullableRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { buildSecretInputSchema } from "openclaw/plugin-sdk/secret-input";
|
|
@@ -24,55 +24,33 @@ const DEFAULT_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS = 6e4;
|
|
|
24
24
|
const DEFAULT_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS = 6e4;
|
|
25
25
|
const DEFAULT_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS = 6e4;
|
|
26
26
|
const DEFAULT_CODEX_APP_SERVER_NETWORK_PROXY_PROFILE_PREFIX = "openclaw-network";
|
|
27
|
-
const codexAppServerTransportSchema = z.enum([
|
|
28
|
-
"stdio",
|
|
29
|
-
"websocket",
|
|
30
|
-
"unix"
|
|
31
|
-
]);
|
|
32
|
-
const codexAppServerHomeScopeSchema = z.enum(["agent", "user"]);
|
|
33
27
|
const SecretInputSchema = buildSecretInputSchema();
|
|
34
|
-
const codexAppServerPolicyModeSchema = z.enum(["yolo", "guardian"]);
|
|
35
28
|
const codexAppServerApprovalPolicySchema = z.preprocess((value) => value === "on-failure" ? "on-request" : value, z.enum(["never", "on-request"]));
|
|
36
|
-
const codexAppServerSandboxSchema = z.enum([
|
|
37
|
-
"read-only",
|
|
38
|
-
"workspace-write",
|
|
39
|
-
"danger-full-access"
|
|
40
|
-
]);
|
|
41
|
-
const codexAppServerApprovalsReviewerSchema = z.enum([
|
|
42
|
-
"user",
|
|
43
|
-
"auto_review",
|
|
44
|
-
"guardian_subagent"
|
|
45
|
-
]);
|
|
46
|
-
const codexDynamicToolsLoadingSchema = z.enum(["searchable", "direct"]);
|
|
47
29
|
const codexComputerUseHealthIntervalSchema = z.union([
|
|
48
30
|
z.literal(30),
|
|
49
31
|
z.literal(60),
|
|
50
32
|
z.literal(120),
|
|
51
33
|
z.literal(240)
|
|
52
34
|
]);
|
|
53
|
-
const codexComputerUsePluginCacheModeSchema = z.enum(["shared", "independent"]);
|
|
54
35
|
const codexPluginDestructivePolicySchema = z.union([
|
|
55
36
|
z.boolean(),
|
|
56
37
|
z.literal("auto"),
|
|
57
38
|
z.literal("ask")
|
|
58
39
|
]);
|
|
59
40
|
const codexAppServerServiceTierSchema = z.preprocess((value) => value === null ? null : normalizeCodexServiceTier(value), z.string().trim().min(1).nullable().optional()).optional();
|
|
60
|
-
const codexAppServerCyberFailoverSchema = z.
|
|
41
|
+
const codexAppServerCyberFailoverSchema = z.strictObject({
|
|
61
42
|
mode: z.enum(["auto", "off"]).optional(),
|
|
62
43
|
model: z.string().trim().min(1).optional(),
|
|
63
44
|
cooloffMs: z.number().positive().optional()
|
|
64
|
-
})
|
|
65
|
-
const codexAppServerExperimentalSchema = z.
|
|
66
|
-
const
|
|
67
|
-
const codexAppServerNetworkProxyDomainPermissionSchema = z.enum(["allow", "deny"]);
|
|
68
|
-
const codexAppServerNetworkProxyUnixSocketPermissionSchema = z.enum(["allow", "none"]);
|
|
69
|
-
const codexAppServerNetworkProxySchema = z.object({
|
|
45
|
+
});
|
|
46
|
+
const codexAppServerExperimentalSchema = z.strictObject({ sandboxExecServer: z.boolean().optional() });
|
|
47
|
+
const codexAppServerNetworkProxySchema = z.strictObject({
|
|
70
48
|
enabled: z.boolean().optional(),
|
|
71
49
|
profileName: z.string().trim().min(1).optional(),
|
|
72
50
|
baseProfile: z.enum(["read-only", "workspace"]).optional(),
|
|
73
51
|
mode: z.enum(["limited", "full"]).optional(),
|
|
74
|
-
domains: z.record(z.string(),
|
|
75
|
-
unixSockets: z.record(z.string(),
|
|
52
|
+
domains: z.record(z.string(), z.enum(["allow", "deny"])).optional(),
|
|
53
|
+
unixSockets: z.record(z.string(), z.enum(["allow", "none"])).optional(),
|
|
76
54
|
proxyUrl: z.string().trim().min(1).optional(),
|
|
77
55
|
socksUrl: z.string().trim().min(1).optional(),
|
|
78
56
|
enableSocks5: z.boolean().optional(),
|
|
@@ -81,45 +59,45 @@ const codexAppServerNetworkProxySchema = z.object({
|
|
|
81
59
|
allowLocalBinding: z.boolean().optional(),
|
|
82
60
|
dangerouslyAllowNonLoopbackProxy: z.boolean().optional(),
|
|
83
61
|
dangerouslyAllowAllUnixSockets: z.boolean().optional()
|
|
84
|
-
})
|
|
85
|
-
const codexPluginEntryConfigSchema = z.
|
|
62
|
+
});
|
|
63
|
+
const codexPluginEntryConfigSchema = z.strictObject({
|
|
86
64
|
enabled: z.boolean().optional(),
|
|
87
65
|
marketplaceName: z.string().regex(CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN).optional(),
|
|
88
66
|
pluginName: z.string().trim().min(1).optional(),
|
|
89
67
|
allow_destructive_actions: codexPluginDestructivePolicySchema.optional()
|
|
90
|
-
})
|
|
91
|
-
const codexPluginsConfigSchema = z.
|
|
68
|
+
});
|
|
69
|
+
const codexPluginsConfigSchema = z.strictObject({
|
|
92
70
|
enabled: z.boolean().optional(),
|
|
93
71
|
allow_all_plugins: z.boolean().optional(),
|
|
94
72
|
allow_destructive_actions: codexPluginDestructivePolicySchema.optional(),
|
|
95
73
|
plugins: z.record(z.string(), codexPluginEntryConfigSchema).optional()
|
|
96
|
-
})
|
|
97
|
-
const codexSupervisionEndpointSchema = z.union([z.
|
|
74
|
+
});
|
|
75
|
+
const codexSupervisionEndpointSchema = z.union([z.strictObject({
|
|
98
76
|
id: z.string().optional(),
|
|
99
77
|
label: z.string().optional(),
|
|
100
78
|
transport: z.literal("stdio-proxy").optional(),
|
|
101
79
|
command: z.string().optional(),
|
|
102
80
|
args: z.array(z.string()).optional(),
|
|
103
81
|
cwd: z.string().optional()
|
|
104
|
-
})
|
|
82
|
+
}), z.strictObject({
|
|
105
83
|
id: z.string().optional(),
|
|
106
84
|
label: z.string().optional(),
|
|
107
85
|
transport: z.literal("websocket"),
|
|
108
86
|
url: z.string(),
|
|
109
87
|
authTokenEnv: z.string().optional()
|
|
110
|
-
})
|
|
111
|
-
const codexSupervisionConfigSchema = z.
|
|
88
|
+
})]);
|
|
89
|
+
const codexSupervisionConfigSchema = z.strictObject({
|
|
112
90
|
enabled: z.boolean().optional(),
|
|
113
91
|
endpoints: z.array(codexSupervisionEndpointSchema).optional(),
|
|
114
92
|
allowRawTranscripts: z.boolean().optional(),
|
|
115
93
|
allowWriteControls: z.boolean().optional()
|
|
116
|
-
})
|
|
117
|
-
const codexPluginConfigSchema = z.
|
|
118
|
-
codexDynamicToolsLoading:
|
|
94
|
+
});
|
|
95
|
+
const codexPluginConfigSchema = z.strictObject({
|
|
96
|
+
codexDynamicToolsLoading: z.enum(["searchable", "direct"]).optional(),
|
|
119
97
|
codexDynamicToolsExclude: z.array(z.string()).optional(),
|
|
120
98
|
sessionCatalog: codexSessionCatalogConfigSchema.optional(),
|
|
121
99
|
discovery: codexDiscoveryConfigSchema.optional(),
|
|
122
|
-
computerUse: z.
|
|
100
|
+
computerUse: z.strictObject({
|
|
123
101
|
enabled: z.boolean().optional(),
|
|
124
102
|
autoInstall: z.boolean().optional(),
|
|
125
103
|
marketplaceDiscoveryTimeoutMs: z.number().positive().optional(),
|
|
@@ -127,7 +105,7 @@ const codexPluginConfigSchema = z.object({
|
|
|
127
105
|
toolCallTimeoutMs: z.number().positive().optional(),
|
|
128
106
|
healthCheckEnabled: z.boolean().optional(),
|
|
129
107
|
healthCheckIntervalMinutes: codexComputerUseHealthIntervalSchema.optional(),
|
|
130
|
-
pluginCacheMode:
|
|
108
|
+
pluginCacheMode: z.enum(["shared", "independent"]).optional(),
|
|
131
109
|
strictReadiness: z.boolean().optional(),
|
|
132
110
|
autoRepair: z.boolean().optional(),
|
|
133
111
|
marketplaceSource: z.string().optional(),
|
|
@@ -135,43 +113,65 @@ const codexPluginConfigSchema = z.object({
|
|
|
135
113
|
marketplaceName: z.string().optional(),
|
|
136
114
|
pluginName: z.string().optional(),
|
|
137
115
|
mcpServerName: z.string().optional()
|
|
138
|
-
}).
|
|
116
|
+
}).optional(),
|
|
139
117
|
codexPlugins: z.unknown().optional(),
|
|
140
118
|
supervision: codexSupervisionConfigSchema.optional(),
|
|
141
|
-
appServer: z.
|
|
142
|
-
mode:
|
|
143
|
-
transport:
|
|
144
|
-
|
|
119
|
+
appServer: z.strictObject({
|
|
120
|
+
mode: z.enum(["yolo", "guardian"]).optional(),
|
|
121
|
+
transport: z.enum([
|
|
122
|
+
"stdio",
|
|
123
|
+
"websocket",
|
|
124
|
+
"unix"
|
|
125
|
+
]).optional(),
|
|
126
|
+
homeScope: z.enum(["agent", "user"]).optional(),
|
|
145
127
|
command: z.string().optional(),
|
|
146
128
|
args: z.union([z.array(z.string()), z.string()]).optional(),
|
|
147
129
|
url: z.string().optional(),
|
|
148
130
|
authToken: SecretInputSchema.optional(),
|
|
149
131
|
headers: z.record(z.string(), SecretInputSchema).optional(),
|
|
150
132
|
clearEnv: z.array(z.string()).optional(),
|
|
151
|
-
remoteWorkspaceRoot:
|
|
133
|
+
remoteWorkspaceRoot: z.string().trim().min(1).optional(),
|
|
152
134
|
codeModeOnly: z.boolean().optional(),
|
|
153
135
|
loopDetectionPreToolUseRelay: z.boolean().optional(),
|
|
154
136
|
requestTimeoutMs: z.number().positive().optional(),
|
|
155
137
|
approvalPolicy: codexAppServerApprovalPolicySchema.optional(),
|
|
156
|
-
sandbox:
|
|
157
|
-
|
|
138
|
+
sandbox: z.enum([
|
|
139
|
+
"read-only",
|
|
140
|
+
"workspace-write",
|
|
141
|
+
"danger-full-access"
|
|
142
|
+
]).optional(),
|
|
143
|
+
approvalsReviewer: z.enum([
|
|
144
|
+
"user",
|
|
145
|
+
"auto_review",
|
|
146
|
+
"guardian_subagent"
|
|
147
|
+
]).optional(),
|
|
158
148
|
serviceTier: codexAppServerServiceTierSchema,
|
|
149
|
+
enableUltrafast: z.boolean().optional(),
|
|
159
150
|
cyberFailover: codexAppServerCyberFailoverSchema.optional(),
|
|
160
151
|
networkProxy: codexAppServerNetworkProxySchema.optional(),
|
|
161
152
|
defaultWorkspaceDir: z.string().optional(),
|
|
162
153
|
experimental: codexAppServerExperimentalSchema.optional()
|
|
163
|
-
}).
|
|
164
|
-
})
|
|
154
|
+
}).optional()
|
|
155
|
+
});
|
|
165
156
|
function readCodexPluginConfig(value) {
|
|
166
|
-
|
|
157
|
+
const appServer = asNullableRecord(asNullableRecord(value)?.appServer);
|
|
158
|
+
if (appServer?.approvalPolicy === "untrusted") throw new Error("plugins.entries.codex.config.appServer.approvalPolicy=\"untrusted\" is retired; run \"openclaw doctor --fix\" to migrate it to \"on-request\".");
|
|
167
159
|
const parsed = codexPluginConfigSchema.safeParse(value);
|
|
168
|
-
if (!parsed.success)
|
|
160
|
+
if (!parsed.success) {
|
|
161
|
+
if (asNullableRecord(appServer?.networkProxy)?.enabled === true) {
|
|
162
|
+
const issuePath = parsed.error.issues[0]?.path ?? [];
|
|
163
|
+
const fieldDepth = issuePath[0] === "appServer" && issuePath[1] === "networkProxy" ? 3 : 2;
|
|
164
|
+
const fieldPath = ["plugins.entries.codex.config", ...issuePath.slice(0, fieldDepth)].join(".");
|
|
165
|
+
throw new Error(`Invalid ${fieldPath}; fix this field before starting Codex with network restrictions. Run "openclaw doctor --fix" for supported repairs.`);
|
|
166
|
+
}
|
|
167
|
+
return {};
|
|
168
|
+
}
|
|
169
169
|
const { codexPlugins: rawCodexPlugins, ...config } = parsed.data;
|
|
170
170
|
const plugins = codexPluginsConfigSchema.safeParse(rawCodexPlugins);
|
|
171
171
|
if (!plugins.success) return config;
|
|
172
172
|
return {
|
|
173
173
|
...config,
|
|
174
|
-
|
|
174
|
+
codexPlugins: plugins.data
|
|
175
175
|
};
|
|
176
176
|
}
|
|
177
177
|
function isCodexSandboxExecServerEnabled(pluginConfig, sandbox) {
|
|
@@ -196,7 +196,7 @@ function resolveCodexPluginsPolicy(pluginConfig) {
|
|
|
196
196
|
const enabled = config?.enabled === true;
|
|
197
197
|
const destructivePolicy = resolveCodexPluginDestructivePolicy(config?.allow_destructive_actions ?? true);
|
|
198
198
|
const pluginPolicies = Object.entries(config?.plugins ?? {}).flatMap(([configKey, entry]) => {
|
|
199
|
-
if (!
|
|
199
|
+
if (!entry.marketplaceName || !entry.pluginName) return [];
|
|
200
200
|
const entryDestructivePolicy = resolveCodexPluginDestructivePolicy(entry.allow_destructive_actions ?? config?.allow_destructive_actions ?? true);
|
|
201
201
|
return [{
|
|
202
202
|
configKey,
|
|
@@ -216,9 +216,6 @@ function resolveCodexPluginsPolicy(pluginConfig) {
|
|
|
216
216
|
pluginPolicies
|
|
217
217
|
};
|
|
218
218
|
}
|
|
219
|
-
function isCodexPluginMarketplaceName(value) {
|
|
220
|
-
return typeof value === "string" && CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN.test(value);
|
|
221
|
-
}
|
|
222
219
|
function resolveCodexPluginDestructivePolicy(policy) {
|
|
223
220
|
if (policy === "auto" || policy === "ask") return {
|
|
224
221
|
allowDestructiveActions: true,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { r as createCodexAppServerConfig } from "./config-options-CzyWLTJt.mjs";
|
|
2
|
+
import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
|
|
3
3
|
import { resolveProviderIdForAuth } from "openclaw/plugin-sdk/provider-auth-aliases";
|
|
4
4
|
//#region extensions/codex/src/app-server/config-runtime.ts
|
|
5
5
|
var config_runtime_exports = /* @__PURE__ */ __exportAll({
|