@openclaw/codex 2026.9.6 → 2026.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +2 -0
  2. package/assets/icon.png +0 -0
  3. package/dist/.setup/{account-usage-runtime-Eem_WGqY.mjs → account-usage-runtime-DFhbh1zz.mjs} +5 -5
  4. package/dist/.setup/{apply-DDOi8uNx.mjs → apply-D3GcSoSa.mjs} +22 -36
  5. package/dist/.setup/{attempt-client-cleanup-CEv1cKwF.mjs → attempt-client-cleanup-DOP-cW5j.mjs} +128 -37
  6. package/dist/.setup/attempt-workspace-context-C5HigshI.mjs +164 -0
  7. package/dist/.setup/{auth-binding-DhLWa_7K.mjs → auth-binding-BLWz7stm.mjs} +14 -1
  8. package/dist/.setup/{auth-cache-key-B2mpaI9D.mjs → auth-cache-key-Dbvq-QgB.mjs} +36 -34
  9. package/dist/.setup/{auth-profile-WqZtZfXN.mjs → auth-profile-B0okYl2D.mjs} +1 -2
  10. package/dist/.setup/auth-start-options-BPIPeEX8.mjs +44 -0
  11. package/dist/.setup/{binding-connection-ThoatDcb.mjs → binding-connection-DTtN1KrX.mjs} +2 -2
  12. package/dist/.setup/{binding-connection.runtime-yoHrABt-.mjs → binding-connection.runtime-6TpgD1M6.mjs} +4 -4
  13. package/dist/.setup/{bounded-turn-B2HScEgT.mjs → bounded-turn-CbjoN2OW.mjs} +15 -18
  14. package/dist/.setup/bounded-turn-isolation-B8K_ylqk.mjs +14 -0
  15. package/dist/.setup/{build-state-C7EnDVgr.mjs → build-state-Da1_z0kd.mjs} +1 -1
  16. package/dist/.setup/{capabilities-CDXOOFdZ.mjs → capabilities-B3WEZl4e.mjs} +2 -10
  17. package/dist/.setup/{client-Cs08OXVQ.mjs → client-N0JpgSzF.mjs} +138 -399
  18. package/dist/.setup/{client-catalog-response-BMgt_4q4.mjs → client-catalog-response-5HHLdcde.mjs} +1 -1
  19. package/dist/.setup/{command-dispatch-B4JuOsOk.mjs → command-dispatch-BeAoaovI.mjs} +5 -8
  20. package/dist/.setup/{command-formatters-Bmqvr9tO.mjs → command-formatters-R3ckE3Co.mjs} +29 -61
  21. package/dist/.setup/{command-handlers-DW7Lx9oH.mjs → command-handlers-ylTMS00z.mjs} +222 -343
  22. package/dist/.setup/{command-rpc-DixIj3HW.mjs → command-rpc-CGJGUQ6Y.mjs} +15 -18
  23. package/dist/.setup/compact-C2WamavS.mjs +776 -0
  24. package/dist/.setup/{config-BoTP_mrL.mjs → config-DKhXquav.mjs} +26 -28
  25. package/dist/.setup/{config-options-BvaRs51b.mjs → config-options-CzyWLTJt.mjs} +24 -37
  26. package/dist/.setup/{config-parsing-CcB9iPoq.mjs → config-parsing-b088LyhT.mjs} +57 -60
  27. package/dist/.setup/{config-runtime-C8Rw1m1m.mjs → config-runtime-C0NbLms1.mjs} +2 -2
  28. package/dist/.setup/{config-security-BEReZ6go.mjs → config-security-CE-FcGw9.mjs} +32 -111
  29. package/dist/.setup/{config-utils-DujwEnhg.mjs → config-utils-D0CXecki.mjs} +3 -13
  30. package/dist/.setup/context-engine-projection-PezSESth.mjs +387 -0
  31. package/dist/.setup/{conversation-binding-DP-gMrBP.mjs → conversation-binding-3Min8qvP.mjs} +67 -90
  32. package/dist/.setup/{conversation-binding-data-CrcyZk6O.mjs → conversation-binding-data-C746z5Pn.mjs} +8 -12
  33. package/dist/.setup/{conversation-control-uK9Jomlc.mjs → conversation-control-CEP8X5JC.mjs} +8 -8
  34. package/dist/.setup/{cyber-failover-DYwbmf1o.mjs → cyber-failover-XV0nNRZu.mjs} +1 -1
  35. package/dist/.setup/{cyber-failover-notice-e9G3J9-e.mjs → cyber-failover-notice-RNpGpTyP.mjs} +1 -1
  36. package/dist/.setup/{dynamic-tools-BDXl-8Cw.mjs → dynamic-tools-DzlsLUuS.mjs} +2305 -2606
  37. package/dist/.setup/{effective-mcp-catalog-CvnvnGIe.mjs → effective-mcp-catalog-CxUtC-xG.mjs} +8 -17
  38. package/dist/.setup/{ephemeral-turn-poidXgek.mjs → ephemeral-turn-CDsPJOa2.mjs} +3 -3
  39. package/dist/.setup/event-projector-assistant-message-CigreO4K.mjs +69 -0
  40. package/dist/.setup/{event-projector-usage-CnBS8Wa3.mjs → event-projector-usage-03R0I2dM.mjs} +3 -25
  41. package/dist/.setup/event-projector-values-DJSz8BTk.mjs +106 -0
  42. package/dist/.setup/incognito-session-DWYapfwf.mjs +2 -0
  43. package/dist/.setup/{inference-context-D96l9-ew.mjs → inference-context-D-9gWlTR.mjs} +16 -18
  44. package/dist/.setup/inference-dispatch-CMZtjQyz.mjs +359 -0
  45. package/dist/.setup/inference-metadata-CgIf7sOx.mjs +81 -0
  46. package/dist/.setup/{inference-proxy-b-aJMSxm.mjs → inference-proxy-DhcXOgUE.mjs} +174 -214
  47. package/dist/.setup/{isolated-completion-BIZFhTNG.mjs → isolated-completion-Dm3PzxJk.mjs} +9 -12
  48. package/dist/.setup/{managed-binary-BnshlFag.mjs → managed-binary-kiWRhNRE.mjs} +8 -12
  49. package/dist/.setup/{model-catalog-CfXJf9Ay.mjs → model-catalog-PAuZgJC6.mjs} +11 -10
  50. package/dist/.setup/model-runtime-BdqzOMkU.mjs +11 -0
  51. package/dist/.setup/{models-KnqBv0hE.mjs → models-DHXZtVVk.mjs} +9 -18
  52. package/dist/.setup/{native-auth-rWbGbMn3.mjs → native-auth-CuG53tu4.mjs} +4 -4
  53. package/dist/.setup/{native-execution-policy-umd0tgh4.mjs → native-execution-policy-BxZJy5mP.mjs} +5 -30
  54. package/dist/.setup/{native-subagent-monitor-D3filLY2.mjs → native-subagent-monitor-Dpsmf2wz.mjs} +4395 -3609
  55. package/dist/.setup/native-subagent-pending-assignments-DwkCzLvD.mjs +203 -0
  56. package/dist/.setup/native-task-assignments-DMQ0g3hu.mjs +194 -0
  57. package/dist/.setup/{node-cli-sessions-r3avj02l.mjs → node-cli-sessions-HC4W6FLI.mjs} +19 -49
  58. package/dist/.setup/{node-exec-server.runtime-BDwWXVpK.mjs → node-exec-server.runtime-BgBfWQqo.mjs} +3 -6
  59. package/dist/.setup/{plan-CN3VwfNU.mjs → plan-Y-QIvrKB.mjs} +49 -92
  60. package/dist/.setup/{plugin-activation-DT3MNtqj.mjs → plugin-activation-cNHRfaxU.mjs} +8 -36
  61. package/dist/.setup/{plugin-app-cache-key-B2CsSdnV.mjs → plugin-app-cache-key-BL9B5H0L.mjs} +6 -23
  62. package/dist/.setup/{plugin-inventory-BoRei8Z4.mjs → plugin-inventory-Cky2XJUw.mjs} +21 -21
  63. package/dist/.setup/{plugin-marketplace-discovery-CDOi8IFs.mjs → plugin-marketplace-discovery-D_dV9FXa.mjs} +18 -24
  64. package/dist/.setup/{plugin-metadata-cache-Ctmo83k_.mjs → plugin-metadata-cache-DsjsL1dr.mjs} +115 -175
  65. package/dist/.setup/{provider-BOsxQHOM.mjs → provider-DH8NSzGt.mjs} +11 -14
  66. package/dist/.setup/{provider-capabilities-BfE88FZ5.mjs → provider-capabilities-CAxoF-X1.mjs} +13 -18
  67. package/dist/.setup/{rate-limits-CMU3DUD0.mjs → rate-limits-B7-X2TgG.mjs} +9 -31
  68. package/dist/.setup/{request-D2L0zMrq.mjs → request-BHZ1nz8d.mjs} +7 -6
  69. package/dist/.setup/responses-oauth-twnuTaAa.mjs +93 -0
  70. package/dist/.setup/rpc-error-BlD2vuzn.mjs +31 -0
  71. package/dist/.setup/{run-attempt-BHu11r7h.mjs → run-attempt-D8RZUOzY.mjs} +1035 -1023
  72. package/dist/.setup/{run-attempt-lifecycle-B7JbY4-F.mjs → run-attempt-lifecycle-C-6O3Exn.mjs} +10 -24
  73. package/dist/.setup/{runtime-artifact-CLZ8udh-.mjs → runtime-artifact-DDQ-HGXf.mjs} +16 -4
  74. package/dist/.setup/runtime-artifact-connection-D68qQn1m.mjs +78 -0
  75. package/dist/.setup/sandbox-guard-DjCz2eOw.mjs +126 -0
  76. package/dist/.setup/scope-DOC1Xjc8.mjs +6 -0
  77. package/dist/.setup/session-binding-DGCYAfvD.mjs +443 -0
  78. package/dist/.setup/{session-binding-record-BGoz8wOK.mjs → session-binding-record-Oe9L-CNY.mjs} +52 -130
  79. package/dist/.setup/{session-binding-sidecars-BlB5EvIS.mjs → session-binding-sidecars-jo6H8dFr.mjs} +196 -17
  80. package/dist/.setup/{session-catalog-Pno1xGcl.mjs → session-catalog-4sCdv5qx.mjs} +170 -324
  81. package/dist/.setup/{session-catalog-adoption-BI6UTDZT.mjs → session-catalog-adoption-BU_pHWG7.mjs} +7 -6
  82. package/dist/.setup/{session-catalog-archive-lHBqzhaO.mjs → session-catalog-archive-spHfihri.mjs} +6 -6
  83. package/dist/.setup/session-catalog-events-DePDzzjc.mjs +139 -0
  84. package/dist/.setup/session-catalog-home-id-vlih0B_g.mjs +22 -0
  85. package/dist/.setup/{session-catalog-index-B9_VQIUz.mjs → session-catalog-index-CZvDzC6z.mjs} +126 -122
  86. package/dist/.setup/{session-catalog-index-order-hcdz07yN.mjs → session-catalog-index-order-BcQpHks3.mjs} +1 -1
  87. package/dist/.setup/{session-catalog-index-state-Dgh8ORJm.mjs → session-catalog-index-state-TeO7EyO-.mjs} +3 -2
  88. package/dist/.setup/session-catalog-limits-DDxOsQeC.mjs +14 -0
  89. package/dist/.setup/session-catalog-list-request-CvtxrYSe.mjs +170 -0
  90. package/dist/.setup/session-catalog-native-projection-DjhwGL6x.mjs +178 -0
  91. package/dist/.setup/{session-catalog-node-adoption-ITddWx_X.mjs → session-catalog-node-adoption-DgXvSGu0.mjs} +10 -27
  92. package/dist/.setup/{session-catalog-node-continue-6g6qi4A9.mjs → session-catalog-node-continue-DjKXHBbi.mjs} +8 -10
  93. package/dist/.setup/session-catalog-node-lookup-CtAXI5W5.mjs +56 -0
  94. package/dist/.setup/{session-catalog-native-projection-DowriLid.mjs → session-catalog-parsing-CPGaPYr-.mjs} +11 -194
  95. package/dist/.setup/{session-catalog-projection-zK_PUsiE.mjs → session-catalog-projection-Cr5qP5Dj.mjs} +6 -4
  96. package/dist/.setup/session-catalog-provenance-DoAvktcj.mjs +95 -0
  97. package/dist/.setup/{session-cli-irrD-uo7.mjs → session-cli-Cn_nCqfq.mjs} +9 -22
  98. package/dist/.setup/{session-history-BrqhSCf9.mjs → session-history-D83lJWHG.mjs} +4 -6
  99. package/dist/.setup/{session-history-import-D-3wAgOP.mjs → session-history-import-WhX-X33a.mjs} +7 -10
  100. package/dist/.setup/session-history-read-Ov3StuL4.mjs +133 -0
  101. package/dist/.setup/{session-history.worker-CaCh0xF_.mjs → session-history.worker-MnPKncqP.mjs} +9 -5
  102. package/dist/.setup/session-initialization-6aveB9qb.mjs +22 -0
  103. package/dist/.setup/{session-permission-policy-BI1QK_98.mjs → session-permission-policy-Ci_fVX6y.mjs} +4 -8
  104. package/dist/.setup/{session-retirement-BH-S6qkJ.mjs → session-retirement-qMTxkNx2.mjs} +17 -17
  105. package/dist/.setup/{settled-turn-context-fmwouT5I.mjs → settled-turn-context-D4yj4rxf.mjs} +1 -1
  106. package/dist/.setup/{settled-turn-finalizer-DiAi6Kx6.mjs → settled-turn-finalizer-BsvEabkw.mjs} +14 -10
  107. package/dist/.setup/{shared-client-DA4VR4Eb.mjs → shared-client-DqyTMYug.mjs} +783 -412
  108. package/dist/.setup/shared-client-lifecycle-DJIgqgMw.mjs +153 -0
  109. package/dist/.setup/{side-question-BJ1wSDcB.mjs → side-question-C4kCmQy1.mjs} +79 -143
  110. package/dist/.setup/{source-CUzJq5WN.mjs → source-CS_7GFJZ.mjs} +80 -137
  111. package/dist/.setup/{thread-lifecycle-B3mfz1TG.mjs → thread-lifecycle-DPflntEJ.mjs} +294 -737
  112. package/dist/.setup/{incognito-session-uhrBF6wJ.mjs → thread-ownership-queue-Dp24d7-F.mjs} +1 -2
  113. package/dist/.setup/{thread-ownership-DcTtAcXj.mjs → thread-ownership-roNP0l1c.mjs} +45 -10
  114. package/dist/.setup/{thread-policy-DGuQsuFC.mjs → thread-policy-DTd-DtkX.mjs} +46 -7
  115. package/dist/.setup/{thread-requests-BLvGkP2R.mjs → thread-requests-B_bRnMGN.mjs} +199 -302
  116. package/dist/.setup/{thread-resume-DIBXwOpE.mjs → thread-resume-CdDaoc7T.mjs} +6 -6
  117. package/dist/.setup/{timeout-C910MdAB.mjs → timeout-CXOfNoaX.mjs} +1 -35
  118. package/dist/.setup/{transcript-history-projection-ZZpkFkJ_.mjs → transcript-history-projection-DRSifI-1.mjs} +17 -89
  119. package/dist/.setup/{transcript-mirror-attestation-CzM-94NC.mjs → transcript-mirror-attestation-YSegaktH.mjs} +3 -4
  120. package/dist/.setup/{transcript-mirror-BtHDBp1G.mjs → transcript-mirror-kxmCYsuF.mjs} +7 -9
  121. package/dist/.setup/{transport-stdio-h2VHOskC.mjs → transport-stdio-Bdegpn2V.mjs} +5 -22
  122. package/dist/.setup/transport-websocket-BTBE-LD9.mjs +211 -0
  123. package/dist/.setup/{upstream-prompt-provenance-LphB8slG.mjs → upstream-prompt-provenance-fXkKbPVC.mjs} +3 -9
  124. package/dist/.setup/{upstream-session-fork-BUr4OUbC.mjs → upstream-session-fork-CBeVjBpT.mjs} +23 -23
  125. package/dist/.setup/{usage-BML0r-ua.mjs → usage-BMzNxeR_.mjs} +4 -4
  126. package/dist/.setup/{usage-limit-error-DUMbefVY.mjs → usage-limit-error-QXerDo3i.mjs} +4 -19
  127. package/dist/.setup/{web-search-provider.runtime-CDKlN-Rv.mjs → web-search-provider.runtime-P77OUeoo.mjs} +8 -19
  128. package/dist/api.js +9 -11
  129. package/dist/catalog-page.worker.js +1 -1
  130. package/dist/cli-metadata.js +1 -1
  131. package/dist/doctor-contract-api.js +50 -8
  132. package/dist/harness.js +344 -1
  133. package/dist/index.js +193 -245
  134. package/dist/media-understanding-provider.js +9 -22
  135. package/dist/migration-provider-api.js +1 -1
  136. package/dist/provider-discovery.js +1 -1
  137. package/dist/session-history-worker-runtime.js +3 -3
  138. package/dist/session-history.worker.js +1 -1
  139. package/openclaw.plugin.json +14 -2
  140. package/package.json +7 -6
  141. package/dist/.setup/attempt-workspace-context-DUVEn_CS.mjs +0 -331
  142. package/dist/.setup/compact-Du5UvtxA.mjs +0 -680
  143. package/dist/.setup/event-projector-assistant-message-BsruvNrH.mjs +0 -103
  144. package/dist/.setup/event-projector-items-C6L_5ZiT.mjs +0 -234
  145. package/dist/.setup/harness-a_MsE4-_.mjs +0 -355
  146. package/dist/.setup/history-rejection-B4nOXNXF.mjs +0 -13
  147. package/dist/.setup/image-payload-sanitizer-tupAr-2o.mjs +0 -79
  148. package/dist/.setup/local-runtime-attribution-B_2mnqhb.mjs +0 -19
  149. package/dist/.setup/native-subagent-history-0nYYgo0k.mjs +0 -148
  150. package/dist/.setup/native-subagent-task-ids-wb8CKZGN.mjs +0 -441
  151. package/dist/.setup/plugin-approval-roundtrip-C0MZzCuP.mjs +0 -122
  152. package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
  153. package/dist/.setup/sandbox-guard-C2sRMOEY.mjs +0 -166
  154. package/dist/.setup/session-binding-Cm0apEbd.mjs +0 -692
  155. package/dist/.setup/session-catalog-events-Bj6j94E_.mjs +0 -347
  156. package/dist/.setup/session-history-read-B3ZfSUbF.mjs +0 -50
  157. package/dist/.setup/session-initialization-rcgbZiid.mjs +0 -75
  158. package/dist/.setup/thread-history-page-DoVpnHim.mjs +0 -83
@@ -1,8 +1,10 @@
1
- import { c as readExecAsk, f as readRecord, l as readExecSecurity } from "./config-utils-DujwEnhg.mjs";
2
- import "./config-security-BEReZ6go.mjs";
3
- import "./config-parsing-CcB9iPoq.mjs";
4
- import { c as canUseCodexModelBackedApprovalsReviewerForModel$1 } from "./config-options-BvaRs51b.mjs";
5
- import "./config-runtime-C8Rw1m1m.mjs";
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(createDefaultOpenClawExecPolicy(), globalExec);
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, resolveOpenClawExecApprovalFloorsForCodexAppServer({
27
- approvals: params.approvals,
31
+ return applyOpenClawExecApprovalFloors(overridePolicy, params.approvals ? resolveExecApprovalsFromFile({
32
+ file: params.approvals,
28
33
  agentId: params.agentId,
29
- policy: overridePolicy
30
- }));
31
- }
32
- function createDefaultOpenClawExecPolicy() {
33
- return {
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
- export { resolveOpenClawExecPolicyForCodexAppServer as n, canUseCodexModelBackedApprovalsReviewerForModel as t };
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 { a as normalizeHeaders, d as readNumberEnv, f as readRecord, i as normalizeCodexServiceTier, o as normalizePositiveNumber, p as resolveArgs, r as normalizeCodexAppServerSecretInput, s as readBooleanEnv, t as hashSecretForKey, u as readNonEmptyString } from "./config-utils-DujwEnhg.mjs";
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 { normalizeTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
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 (!openAIBaseUrlEnvOverridesAreTrustedForModelBackedReview(params.env)) return false;
61
+ if (![params.env?.OPENAI_BASE_URL, params.env?.OPENAI_API_BASE].every(isNativeOpenAIBaseUrl)) return false;
59
62
  if (!nativeCodexConfigIsTrustedForModelBackedReview(params)) return false;
60
- const openAIProviders = readConfiguredOpenAIProvidersForModelBackedReview(params.config, resolveAuthProviderId);
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
- if (bindingModelProvider && currentModel && bindingModel && currentModel === bindingModel) return {
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: params.nativeAuthProfile === true ? "openai" : void 0,
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 = normalizeCodexAppServerSecretInput({
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 = normalizeRemoteWorkspaceRoot(config.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: normalizePositiveNumber(config.requestTimeoutMs, 6e4),
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 ?? readBooleanEnv(env.OPENCLAW_CODEX_COMPUTER_USE_AUTO_INSTALL) ?? false;
469
- const marketplaceDiscoveryTimeoutMs = normalizePositiveNumber(params.overrides?.marketplaceDiscoveryTimeoutMs ?? config.marketplaceDiscoveryTimeoutMs ?? readNumberEnv(env.OPENCLAW_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS), DEFAULT_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS);
470
- const liveTestTimeoutMs = normalizePositiveNumber(params.overrides?.liveTestTimeoutMs ?? config.liveTestTimeoutMs ?? readNumberEnv(env.OPENCLAW_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS), DEFAULT_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS);
471
- const toolCallTimeoutMs = normalizePositiveNumber(params.overrides?.toolCallTimeoutMs ?? config.toolCallTimeoutMs ?? readNumberEnv(env.OPENCLAW_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS), DEFAULT_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS);
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 ?? readBooleanEnv(env.OPENCLAW_CODEX_COMPUTER_USE_HEALTH_CHECK_ENABLED) ?? false;
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 ?? readBooleanEnv(env.OPENCLAW_CODEX_COMPUTER_USE_STRICT_READINESS) ?? false;
476
- const autoRepair = params.overrides?.autoRepair ?? config.autoRepair ?? readBooleanEnv(env.OPENCLAW_CODEX_COMPUTER_USE_AUTO_REPAIR) ?? false;
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 ?? readBooleanEnv(env.OPENCLAW_CODEX_COMPUTER_USE) ?? Boolean(autoInstall || marketplaceSource || marketplacePath || marketplaceName || configuredPluginName || configuredMcpServerName),
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 { i as normalizeCodexServiceTier, m as CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN } from "./config-utils-DujwEnhg.mjs";
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.object({
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
- }).strict();
65
- const codexAppServerExperimentalSchema = z.object({ sandboxExecServer: z.boolean().optional() }).strict();
66
- const codexAppServerRemoteWorkspaceRootSchema = z.string().trim().min(1);
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(), codexAppServerNetworkProxyDomainPermissionSchema).optional(),
75
- unixSockets: z.record(z.string(), codexAppServerNetworkProxyUnixSocketPermissionSchema).optional(),
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
- }).strict();
85
- const codexPluginEntryConfigSchema = z.object({
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
- }).strict();
91
- const codexPluginsConfigSchema = z.object({
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
- }).strict();
97
- const codexSupervisionEndpointSchema = z.union([z.object({
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
- }).strict(), z.object({
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
- }).strict()]);
111
- const codexSupervisionConfigSchema = z.object({
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
- }).strict();
117
- const codexPluginConfigSchema = z.object({
118
- codexDynamicToolsLoading: codexDynamicToolsLoadingSchema.optional(),
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.object({
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: codexComputerUsePluginCacheModeSchema.optional(),
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
- }).strict().optional(),
116
+ }).optional(),
139
117
  codexPlugins: z.unknown().optional(),
140
118
  supervision: codexSupervisionConfigSchema.optional(),
141
- appServer: z.object({
142
- mode: codexAppServerPolicyModeSchema.optional(),
143
- transport: codexAppServerTransportSchema.optional(),
144
- homeScope: codexAppServerHomeScopeSchema.optional(),
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: codexAppServerRemoteWorkspaceRootSchema.optional(),
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: codexAppServerSandboxSchema.optional(),
157
- approvalsReviewer: codexAppServerApprovalsReviewerSchema.optional(),
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
- }).strict().optional()
164
- }).strict();
154
+ }).optional()
155
+ });
165
156
  function readCodexPluginConfig(value) {
166
- if (asNullableRecord(asNullableRecord(value)?.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\".");
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) return {};
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
- ...plugins.data ? { codexPlugins: plugins.data } : {}
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 (!isCodexPluginMarketplaceName(entry.marketplaceName) || !entry.pluginName) return [];
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 { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
- import { r as createCodexAppServerConfig } from "./config-options-BvaRs51b.mjs";
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({