@openclaw/codex 2026.10.5-beta.4 → 2026.10.6

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 (122) hide show
  1. package/dist/.setup/{account-usage-runtime-CoVpNIlD.mjs → account-usage-runtime-E3SrjJVn.mjs} +3 -3
  2. package/dist/.setup/{app-server-policy-D_zv8J7V.mjs → app-server-policy-V8zuN8q_.mjs} +1 -1
  3. package/dist/.setup/{apply-BXDMd05l.mjs → apply-C3s-1Zxe.mjs} +14 -14
  4. package/dist/.setup/{attempt-client-cleanup-zNuNTKVr.mjs → attempt-client-cleanup-BVww-ct8.mjs} +5 -5
  5. package/dist/.setup/attempt-terminal-sZutF0WY.mjs +1 -0
  6. package/dist/.setup/{attempt-workspace-context-CcwP3DA3.mjs → attempt-workspace-context-BkA0W8Jy.mjs} +1 -1
  7. package/dist/.setup/{auth-binding-BaxlhaNx.mjs → auth-binding-BFTkrP_b.mjs} +1 -1
  8. package/dist/.setup/{auth-cache-key-f8ODJ_OX.mjs → auth-cache-key-CXK7tmkb.mjs} +6 -5
  9. package/dist/.setup/{auth-profile-health-oHizqgye.mjs → auth-profile-health-B05o5BAm.mjs} +12 -5
  10. package/dist/.setup/{binding-connection-B7HAAZSI.mjs → binding-connection-C0t9TBX_.mjs} +2 -2
  11. package/dist/.setup/{binding-connection.runtime-DAXn7iFl.mjs → binding-connection.runtime-Wdm5G_bw.mjs} +2 -2
  12. package/dist/.setup/{bounded-turn-isolation-BfDAo-qZ.mjs → bounded-turn-isolation-CIQJykuM.mjs} +4 -4
  13. package/dist/.setup/{bounded-turn-DfIJtRlv.mjs → bounded-turn-vdpL2efh.mjs} +13 -12
  14. package/dist/.setup/{build-state-Ds14X10-.mjs → build-state-DPMC9C_U.mjs} +1 -1
  15. package/dist/.setup/{client-D93nbdB8.mjs → client-Div-zqnz.mjs} +22 -18
  16. package/dist/.setup/{client-catalog-response-CuVLp4I0.mjs → client-catalog-response-Dtob_lVt.mjs} +1 -1
  17. package/dist/.setup/{command-dispatch-DxdH5a9-.mjs → command-dispatch-ByO36LmS.mjs} +1 -1
  18. package/dist/.setup/{command-handlers-fiYvYYq0.mjs → command-handlers-CJqo6LZS.mjs} +24 -24
  19. package/dist/.setup/{command-rpc-HIvsy3wS.mjs → command-rpc-Co0UzT-T.mjs} +11 -11
  20. package/dist/.setup/{compact-ClZ7Ar7L.mjs → compact-CzNBg4cQ.mjs} +13 -13
  21. package/dist/.setup/{computer-use-DL2v3Kxq.mjs → computer-use-BcDrQlxi.mjs} +8 -8
  22. package/dist/.setup/{config-C1YVVLEA.mjs → config-LQemoqTL.mjs} +5 -6
  23. package/dist/.setup/{config-options-DDzeNQ8m.mjs → config-options-CZmH25Xq.mjs} +2 -3
  24. package/dist/.setup/{config-parsing-DsWSCPHO.mjs → config-parsing-CVK2Q463.mjs} +44 -6
  25. package/dist/.setup/{config-runtime-DWzK-k0n.mjs → config-runtime-DGB1-VbB.mjs} +2 -2
  26. package/dist/.setup/{config-security-clxAZYWX.mjs → config-security-DpkGNy5T.mjs} +2 -3
  27. package/dist/.setup/{conversation-binding-BieJZRRV.mjs → conversation-binding-Dcv7_rs-.mjs} +42 -33
  28. package/dist/.setup/{conversation-binding-data-UgLuTSQT.mjs → conversation-binding-data-GRGSgAro.mjs} +1 -1
  29. package/dist/.setup/{conversation-control-GXM3unE4.mjs → conversation-control-BtPxevoK.mjs} +4 -4
  30. package/dist/.setup/{cyber-failover-D4dgNfFf.mjs → cyber-failover-B-q6oT01.mjs} +2 -2
  31. package/dist/.setup/{cyber-failover-notice-ljgGGL0s.mjs → cyber-failover-notice-poL3Advd.mjs} +1 -1
  32. package/dist/.setup/{doctor-start-options-JjTAl-q_.mjs → doctor-start-options-C28ek2hD.mjs} +5 -5
  33. package/dist/.setup/{dynamic-tool-build-DcaPmBlE.mjs → dynamic-tool-build-DjbDZzOJ.mjs} +5 -5
  34. package/dist/.setup/{dynamic-tools-CnQFnNKH.mjs → dynamic-tools-75qoSOch.mjs} +10 -10
  35. package/dist/.setup/{effective-mcp-catalog-B5HKFZNK.mjs → effective-mcp-catalog-Dz0J8iAj.mjs} +7 -7
  36. package/dist/.setup/{ephemeral-turn-De3qb8EQ.mjs → ephemeral-turn-K_d99r9P.mjs} +2 -2
  37. package/dist/.setup/{inference-proxy-BDWV0djM.mjs → inference-proxy-DSnaS-uS.mjs} +5 -4
  38. package/dist/.setup/{isolated-completion-BPJdvk5F.mjs → isolated-completion-dNt4kRLw.mjs} +7 -7
  39. package/dist/.setup/{managed-binary-BtIjV7yN.mjs → managed-binary-DwC9wxch.mjs} +1 -1
  40. package/dist/.setup/{mcp-app-session-preparation-Dz2GOwyE.mjs → mcp-app-session-preparation-C7LyxbAm.mjs} +12 -17
  41. package/dist/.setup/{mcp-tool-metadata-DW41snf3.mjs → mcp-tool-metadata-_sawBkIh.mjs} +1 -1
  42. package/dist/.setup/{model-catalog-ZNwltCKl.mjs → model-catalog-BRJ7RMXY.mjs} +8 -8
  43. package/dist/.setup/{models-BHpbAuz8.mjs → models-CusrgpiY.mjs} +3 -3
  44. package/dist/.setup/{native-auth-esN5MdIv.mjs → native-auth-CveRfTpz.mjs} +4 -4
  45. package/dist/.setup/{native-hook-relay-wq7jrNLk.mjs → native-hook-relay-BvwSj5bt.mjs} +5 -5
  46. package/dist/.setup/{native-mcp-app-DX3nyTtc.mjs → native-mcp-app-DDEtVQED.mjs} +6 -6
  47. package/dist/.setup/{native-skill-isolation-DSBeF-Yy.mjs → native-skill-isolation-Cx2AkUco.mjs} +3 -3
  48. package/dist/.setup/{native-subagent-monitor-DOLEIf9r.mjs → native-subagent-monitor-CBYFkNsB.mjs} +67 -20
  49. package/dist/.setup/{native-task-assignments-DimsQ9Qa.mjs → native-task-assignments-DYL9uxNe.mjs} +3 -3
  50. package/dist/.setup/{node-cli-sessions-CzKg2nGq.mjs → node-cli-sessions-BxVYZNuY.mjs} +2 -2
  51. package/dist/.setup/{node-exec-server.runtime-BWkULhBM.mjs → node-exec-server.runtime-8RehgPdQ.mjs} +2 -2
  52. package/dist/.setup/{plan-41-YOBMq.mjs → plan-BKFbfVsV.mjs} +5 -5
  53. package/dist/.setup/{plugin-activation-D7WkJMvU.mjs → plugin-activation-BgfNFH2L.mjs} +2 -2
  54. package/dist/.setup/{plugin-approval-roundtrip-CD88q3yx.mjs → plugin-approval-roundtrip-CXXXhuKi.mjs} +1 -1
  55. package/dist/.setup/{plugin-inventory-CYgdo14P.mjs → plugin-inventory-OhiCoyPH.mjs} +1 -1
  56. package/dist/.setup/{plugin-marketplace-discovery-BblHM3DU.mjs → plugin-marketplace-discovery-BNyI1zd_.mjs} +1 -1
  57. package/dist/.setup/{project-doc-thread-config-BVcvnps8.mjs → project-doc-thread-config-D_sWbxFR.mjs} +6 -6
  58. package/dist/.setup/{provider-LWKll6dV.mjs → provider-BVV8SWlx.mjs} +4 -4
  59. package/dist/.setup/{provider-capabilities-Dn2WwH4P.mjs → provider-capabilities-B-pTlDsf.mjs} +1 -1
  60. package/dist/.setup/{request-Bo0kKABI.mjs → request-m-H-7FMu.mjs} +6 -6
  61. package/dist/.setup/{run-attempt-ClU8MxhZ.mjs → run-attempt-Ch1emiZE.mjs} +113 -74
  62. package/dist/.setup/{run-attempt-lifecycle-KN4oh-7O.mjs → run-attempt-lifecycle-DN-ATDp9.mjs} +1 -1
  63. package/dist/.setup/{runtime-artifact-C13pR7tD.mjs → runtime-artifact-CCPLKFGR.mjs} +3 -3
  64. package/dist/.setup/{runtime-artifact-connection-jS5DeCok.mjs → runtime-artifact-connection-dFoSOKy7.mjs} +3 -3
  65. package/dist/.setup/{sandbox-guard-DIImwCy1.mjs → sandbox-guard-Cf9XMRrg.mjs} +2 -2
  66. package/dist/.setup/{service-tier-normalization-BPgw2Wdt.mjs → service-tier-normalization-C2OVdF6E.mjs} +4 -1
  67. package/dist/.setup/{session-binding-JEHNMPsr.mjs → session-binding-BDnNz-Co.mjs} +3 -3
  68. package/dist/.setup/{session-binding-record-DU_0biMD.mjs → session-binding-record-C2kDBZhx.mjs} +2 -2
  69. package/dist/.setup/{session-binding-record-codec-BpH8u_G9.mjs → session-binding-record-codec-CWQXr9os.mjs} +1 -2
  70. package/dist/.setup/{session-binding-sidecars-DD-enC8w.mjs → session-binding-sidecars-DijNZb31.mjs} +1 -1
  71. package/dist/.setup/{session-catalog-adoption-Ca3OYGYM.mjs → session-catalog-adoption-Cl6fHxS5.mjs} +5 -5
  72. package/dist/.setup/{session-catalog-archive-Bv6gV7x9.mjs → session-catalog-archive-CUU7jEkO.mjs} +5 -5
  73. package/dist/.setup/{session-catalog-events-kR2Ot6nX.mjs → session-catalog-events-BBV3DMG7.mjs} +5 -5
  74. package/dist/.setup/{session-catalog-index-CrnfVEnT.mjs → session-catalog-index-B00GIRi3.mjs} +8 -8
  75. package/dist/.setup/{session-catalog-index-order-CTfoefow.mjs → session-catalog-index-order-B30rjUEJ.mjs} +1 -1
  76. package/dist/.setup/{session-catalog-limits-BynIoOYm.mjs → session-catalog-limits-Daqt3JLk.mjs} +1 -1
  77. package/dist/.setup/{session-catalog-list-request-D4MYNgDB.mjs → session-catalog-list-request-SJyGz02j.mjs} +3 -3
  78. package/dist/.setup/{session-catalog-native-projection-CWqCU1I_.mjs → session-catalog-native-projection-BJupfCyt.mjs} +4 -4
  79. package/dist/.setup/{session-catalog-node-adoption-BdP9Zjqo.mjs → session-catalog-node-adoption-D11N0CMr.mjs} +2 -2
  80. package/dist/.setup/{session-catalog-node-continue-CNJibO4_.mjs → session-catalog-node-continue-Ct62GeL1.mjs} +5 -5
  81. package/dist/.setup/{session-catalog-node-lookup-BH_DBGa9.mjs → session-catalog-node-lookup-DQVe6vhs.mjs} +2 -2
  82. package/dist/.setup/{session-catalog-parsing-DkeoVn60.mjs → session-catalog-parsing-B4OyhylL.mjs} +1 -1
  83. package/dist/.setup/{session-catalog-projection-BzHiV818.mjs → session-catalog-projection-CYgFTaYm.mjs} +4 -4
  84. package/dist/.setup/{session-catalog-source-DGuRdGvM.mjs → session-catalog-source-Xt6-hNns.mjs} +1 -1
  85. package/dist/.setup/{session-cli-GwU0izn-.mjs → session-cli-BoJSZfGd.mjs} +1 -1
  86. package/dist/.setup/{session-history-import-CaO8s6ta.mjs → session-history-import-DgwRu2eD.mjs} +4 -4
  87. package/dist/.setup/{session-initialization-Bi_2DKhc.mjs → session-initialization-BjVtsTzi.mjs} +2 -2
  88. package/dist/.setup/{session-permission-policy-CD2MAWU8.mjs → session-permission-policy-C7kYxPGd.mjs} +1 -1
  89. package/dist/.setup/{session-retirement-B3U5hpGJ.mjs → session-retirement-DIqF1vQ4.mjs} +6 -6
  90. package/dist/.setup/{settled-turn-finalizer-CYCVpTv2.mjs → settled-turn-finalizer-dVv34G_E.mjs} +5 -5
  91. package/dist/.setup/{shared-client-BCx1wbyA.mjs → shared-client-CNGDTv68.mjs} +32 -20
  92. package/dist/.setup/{side-question-Bz2UQW0l.mjs → side-question-D1Wa21s9.mjs} +22 -22
  93. package/dist/.setup/{source-DipMO9hL.mjs → source-DyVuYlTN.mjs} +4 -4
  94. package/dist/.setup/{thread-lifecycle-run-C_aYiYqk.mjs → thread-lifecycle-run-DjSfTw6v.mjs} +66 -42
  95. package/dist/.setup/{thread-ownership-BoUd0i6L.mjs → thread-ownership-BBsOFzCM.mjs} +4 -4
  96. package/dist/.setup/{thread-policy-B3wBRNph.mjs → thread-policy-BEiS7ITh.mjs} +3 -3
  97. package/dist/.setup/{thread-requests-BgzJwJtS.mjs → thread-requests-DjyDmCo4.mjs} +11 -32
  98. package/dist/.setup/{thread-resume-D-3bsr1j.mjs → thread-resume-BqOca2Iy.mjs} +4 -4
  99. package/dist/.setup/{transcript-mirror-Bee2o6jj.mjs → transcript-mirror-DVEzdOs0.mjs} +1 -1
  100. package/dist/.setup/{transport-stdio-CRWTkKOn.mjs → transport-stdio-lgeKKHyw.mjs} +2 -17
  101. package/dist/.setup/{transport-websocket-DIyPfkHo.mjs → transport-websocket-CEBjEtFP.mjs} +1 -1
  102. package/dist/.setup/{turn-router-DBVMToGo.mjs → turn-router-DM0fRrYI.mjs} +1 -1
  103. package/dist/.setup/{upstream-session-fork-p5fwKi7w.mjs → upstream-session-fork-CxgShpwe.mjs} +19 -19
  104. package/dist/.setup/{usage-C2Kq7oej.mjs → usage-DV8T9Yau.mjs} +3 -3
  105. package/dist/.setup/{usage-limit-error-BQX8RHAd.mjs → usage-limit-error-ryR1PGou.mjs} +1 -1
  106. package/dist/.setup/{web-search-provider.runtime-D89djc7e.mjs → web-search-provider.runtime-DkciK2gS.mjs} +2 -2
  107. package/dist/.setup/{workspace-write-sandbox-probe-BDWO2Qkh.mjs → workspace-write-sandbox-probe-DvfWTvuR.mjs} +2 -2
  108. package/dist/api.js +4 -4
  109. package/dist/catalog-page.worker.js +1 -1
  110. package/dist/cli-metadata.js +1 -1
  111. package/dist/doctor-contract-api.js +5 -5
  112. package/dist/harness.js +22 -22
  113. package/dist/index.js +56 -56
  114. package/dist/media-understanding-provider.js +2 -2
  115. package/dist/migration-provider-api.js +1 -2
  116. package/dist/native-session-binding-api.js +1 -2
  117. package/dist/provider-discovery.js +1 -1
  118. package/dist/session-history.worker.js +1 -2
  119. package/package.json +4 -4
  120. package/dist/.setup/attempt-terminal-jO5IMj9K.mjs +0 -2
  121. package/dist/.setup/config-contracts.shared-D85SGEuq.mjs +0 -4
  122. package/dist/.setup/config-utils-DN_YT7dE.mjs +0 -47
@@ -1,10 +1,48 @@
1
- import { t as CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN } from "./config-contracts.shared-D85SGEuq.mjs";
2
- import { t as normalizeCodexServiceTier } from "./service-tier-normalization-BPgw2Wdt.mjs";
3
- import "./config-utils-DN_YT7dE.mjs";
4
- import { asNullableRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
1
+ import { n as CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN, t as normalizeCodexServiceTier } from "./service-tier-normalization-C2OVdF6E.mjs";
2
+ import { asNullableRecord, asOptionalRecord as readRecord, normalizeOptionalString as readNonEmptyString, normalizeTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
3
+ import { createHmac, randomBytes } from "node:crypto";
5
4
  import { z } from "zod";
6
- import { buildSecretInputSchema } from "openclaw/plugin-sdk/secret-input";
5
+ import { buildSecretInputSchema, normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
7
6
  import { detectWindowsSpawnCommandInlineArgs } from "openclaw/plugin-sdk/windows-spawn";
7
+ import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
8
+ import { splitCommandArgs } from "openclaw/plugin-sdk/process-runtime";
9
+ //#region extensions/codex/src/app-server/config-utils.ts
10
+ const START_OPTIONS_KEY_SECRET = resolveGlobalSingleton(Symbol.for("openclaw.codexAppServerStartOptionsKeySecret"), () => randomBytes(32));
11
+ const PLAIN_DECIMAL_NUMBER_RE = /^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))$/;
12
+ function isCodexFastServiceTier(value) {
13
+ return normalizeCodexServiceTier(value) === "priority";
14
+ }
15
+ function normalizeHeaders(value) {
16
+ return Object.fromEntries(Object.entries(value ?? {}).flatMap(([key, child]) => {
17
+ const name = key.trim();
18
+ const header = normalizeResolvedSecretInputString({
19
+ value: child,
20
+ path: `plugins.entries.codex.config.appServer.headers.${key}`
21
+ });
22
+ return name && header ? [[name, header]] : [];
23
+ }));
24
+ }
25
+ function readExecSecurity(value) {
26
+ return value === "deny" || value === "allowlist" || value === "full" ? value : void 0;
27
+ }
28
+ function readExecAsk(value) {
29
+ return value === "off" || value === "on-miss" || value === "always" ? value : void 0;
30
+ }
31
+ function readNumberEnv(value) {
32
+ const trimmed = value?.trim();
33
+ if (!trimmed || !PLAIN_DECIMAL_NUMBER_RE.test(trimmed)) return;
34
+ const parsed = Number(trimmed);
35
+ return Number.isFinite(parsed) ? parsed : void 0;
36
+ }
37
+ function resolveArgs(configArgs, envArgs) {
38
+ if (Array.isArray(configArgs)) return normalizeTrimmedStringList(configArgs);
39
+ return splitCommandArgs(configArgs ?? envArgs ?? "", { allowUnclosedQuotes: true });
40
+ }
41
+ function hashSecretForKey(value, label) {
42
+ if (!value) return null;
43
+ return createHmac("sha256", START_OPTIONS_KEY_SECRET).update(label).update("\0").update(value).digest("hex");
44
+ }
45
+ //#endregion
8
46
  //#region extensions/codex/src/app-server/session-discovery-config.ts
9
47
  const codexSessionCatalogHomeSchema = z.union([z.string().trim().min(1), z.object({
10
48
  path: z.string().trim().min(1),
@@ -228,4 +266,4 @@ function resolveCodexPluginDestructivePolicy(policy) {
228
266
  };
229
267
  }
230
268
  //#endregion
231
- export { DEFAULT_CODEX_COMPUTER_USE_PLUGIN_NAME as a, isCodexPairedNodeRemoteExecPlacementSandbox as c, readCodexPluginConfig as d, resolveCodexPluginsPolicy as f, DEFAULT_CODEX_COMPUTER_USE_MCP_SERVER_NAME as i, isCodexRemoteExecPlacementSandbox as l, DEFAULT_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS as n, DEFAULT_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS as o, DEFAULT_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS as r, assertCodexAppServerCommandHasNoInlineArgs as s, DEFAULT_CODEX_APP_SERVER_NETWORK_PROXY_PROFILE_PREFIX as t, isCodexSandboxExecServerEnabled as u };
269
+ export { readExecSecurity as _, DEFAULT_CODEX_COMPUTER_USE_PLUGIN_NAME as a, readRecord as b, isCodexPairedNodeRemoteExecPlacementSandbox as c, readCodexPluginConfig as d, resolveCodexPluginsPolicy as f, readExecAsk as g, normalizeHeaders as h, DEFAULT_CODEX_COMPUTER_USE_MCP_SERVER_NAME as i, isCodexRemoteExecPlacementSandbox as l, isCodexFastServiceTier as m, DEFAULT_CODEX_COMPUTER_USE_LIVE_TEST_TIMEOUT_MS as n, DEFAULT_CODEX_COMPUTER_USE_TOOL_CALL_TIMEOUT_MS as o, hashSecretForKey as p, DEFAULT_CODEX_COMPUTER_USE_MARKETPLACE_DISCOVERY_TIMEOUT_MS as r, assertCodexAppServerCommandHasNoInlineArgs as s, DEFAULT_CODEX_APP_SERVER_NETWORK_PROXY_PROFILE_PREFIX as t, isCodexSandboxExecServerEnabled as u, readNonEmptyString as v, resolveArgs as x, readNumberEnv as y };
@@ -1,5 +1,5 @@
1
- import { r as createCodexAppServerConfig } from "./config-options-DDzeNQ8m.mjs";
2
- import { t as __exportAll } from "./session-binding-sidecars-DD-enC8w.mjs";
1
+ import { r as createCodexAppServerConfig } from "./config-options-CZmH25Xq.mjs";
2
+ import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.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({
@@ -1,5 +1,4 @@
1
- import { l as readRecord, s as readNonEmptyString } from "./config-utils-DN_YT7dE.mjs";
2
- import "./config-parsing-DsWSCPHO.mjs";
1
+ import { b as readRecord, v as readNonEmptyString } from "./config-parsing-CVK2Q463.mjs";
3
2
  import { createHash } from "node:crypto";
4
3
  import { AgentHarnessPreflightError } from "openclaw/plugin-sdk/agent-harness-registration";
5
4
  import { parse } from "smol-toml";
@@ -225,7 +224,7 @@ function hasCodexMcpToolApprovalOverrides(servers, serverNames, projectedMcpServ
225
224
  return [...modes.values()].some((mode) => mode === "auto" || mode === "prompt");
226
225
  }
227
226
  function withMcpElicitationsApprovalPolicy(policy) {
228
- if (policy === "untrusted") return policy;
227
+ if (policy === "untrusted" || policy === "on-request") return policy;
229
228
  if (typeof policy !== "string") return { granular: {
230
229
  ...policy.granular,
231
230
  mcp_elicitations: true
@@ -1,27 +1,27 @@
1
1
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
- import { m as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced } from "./session-binding-record-DU_0biMD.mjs";
3
- import { d as readCodexRequirementsToml } from "./config-security-clxAZYWX.mjs";
4
- import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
5
- import { d as readCodexEffectiveConfig, n as codexSandboxPolicyForTurn } from "./config-options-DDzeNQ8m.mjs";
6
- import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-f8ODJ_OX.mjs";
7
- import { o as resolveCodexDefaultWorkspaceDir } from "./conversation-binding-data-UgLuTSQT.mjs";
8
- import { o as isCodexAppServerOverloadError } from "./rpc-error-C98SHchT.mjs";
2
+ import { m as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced } from "./session-binding-record-C2kDBZhx.mjs";
3
+ import { d as readCodexRequirementsToml } from "./config-security-DpkGNy5T.mjs";
4
+ import { d as readCodexPluginConfig } from "./config-parsing-CVK2Q463.mjs";
5
+ import { d as readCodexEffectiveConfig, n as codexSandboxPolicyForTurn } from "./config-options-CZmH25Xq.mjs";
6
+ import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-CXK7tmkb.mjs";
7
+ import { o as resolveCodexDefaultWorkspaceDir } from "./conversation-binding-data-GRGSgAro.mjs";
8
+ import { o as isCodexAppServerOverloadError, r as CodexAppServerRpcError, s as isCodexThreadReadMissingError } from "./rpc-error-C98SHchT.mjs";
9
9
  import { n as projectBoundedCodexVisibleSessionHistory } from "./transcript-history-projection-DfKcoZCB.mjs";
10
- import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-C1YVVLEA.mjs";
11
- import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DWzK-k0n.mjs";
10
+ import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-LQemoqTL.mjs";
11
+ import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DGB1-VbB.mjs";
12
12
  import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-CgHQ8Vot.mjs";
13
- import { B as isCodexAppServerClientRuntimeLive, F as consumeCodexAppServerLiveThread, K as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease } from "./shared-client-BCx1wbyA.mjs";
14
- import { a as isCodexAppServerIndeterminateRequestCancellationError, g as assertCodexThreadStartResponse, p as assertCodexThreadAcceptsDirectInput, u as CodexThreadDirectInputError } from "./client-D93nbdB8.mjs";
15
- import { a as isCodexNotificationForTurn, n as getCodexAppServerTurnRouter } from "./turn-router-DBVMToGo.mjs";
16
- import { f as unsubscribeCodexThreadBestEffort, l as retireUnsafeCodexTurnClientBestEffort, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError, s as interruptCodexTurnAndWaitBestEffort } from "./attempt-client-cleanup-zNuNTKVr.mjs";
17
- import { d as mergeCodexThreadConfigs, s as buildDisabledAppsConfigPatch, t as buildCodexProjectDocThreadConfig } from "./project-doc-thread-config-BVcvnps8.mjs";
18
- import "./session-binding-JEHNMPsr.mjs";
13
+ import { B as isCodexAppServerClientRuntimeLive, F as consumeCodexAppServerLiveThread, H as isCodexAppServerLiveThreadClaimed, R as hasCodexAppServerLiveThread, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease, q as releaseCodexAppServerLiveThread } from "./shared-client-CNGDTv68.mjs";
14
+ import { a as isCodexAppServerIndeterminateRequestCancellationError, g as assertCodexThreadStartResponse, p as assertCodexThreadAcceptsDirectInput, u as CodexThreadDirectInputError } from "./client-Div-zqnz.mjs";
15
+ import { a as isCodexNotificationForTurn, n as getCodexAppServerTurnRouter } from "./turn-router-DM0fRrYI.mjs";
16
+ import { f as unsubscribeCodexThreadBestEffort, l as retireUnsafeCodexTurnClientBestEffort, o as closeCodexStartupClientBestEffort, s as interruptCodexTurnAndWaitBestEffort } from "./attempt-client-cleanup-BVww-ct8.mjs";
17
+ import { d as mergeCodexThreadConfigs, s as buildDisabledAppsConfigPatch, t as buildCodexProjectDocThreadConfig } from "./project-doc-thread-config-D_sWbxFR.mjs";
18
+ import "./session-binding-BDnNz-Co.mjs";
19
19
  import { r as resolveCodexAppServerRequestModelSelection, t as CODEX_NATIVE_PERSONALITY_NONE } from "./thread-model-selection-DcVebr8N.mjs";
20
- import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BoUd0i6L.mjs";
21
- import { t as resumeCodexAppServerThread } from "./thread-resume-D-3bsr1j.mjs";
22
- import { i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-CD2MAWU8.mjs";
23
- import { t as resolveCodexAppServerForModelProvider } from "./app-server-policy-D_zv8J7V.mjs";
24
- import { f as trackCodexConversationActiveTurn, o as resolveThreadRequestModelProvider, t as buildCodexConversationAgentLookup } from "./conversation-control-GXM3unE4.mjs";
20
+ import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BBsOFzCM.mjs";
21
+ import { t as resumeCodexAppServerThread } from "./thread-resume-BqOca2Iy.mjs";
22
+ import { i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-C7kYxPGd.mjs";
23
+ import { t as resolveCodexAppServerForModelProvider } from "./app-server-policy-V8zuN8q_.mjs";
24
+ import { f as trackCodexConversationActiveTurn, o as resolveThreadRequestModelProvider, t as buildCodexConversationAgentLookup } from "./conversation-control-BtPxevoK.mjs";
25
25
  import { asOptionalRecord, normalizeOptionalString, readNonEmptyStringPreservingWhitespace } from "openclaw/plugin-sdk/string-coerce-runtime";
26
26
  import { resolveSessionAgentIdsStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
27
27
  import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
@@ -268,7 +268,7 @@ async function bindThread(params, threadId) {
268
268
  function assertNativeConversationApprovalPolicySupported(runtime) {
269
269
  if (runtime.approvalPolicy !== "never" && runtime.approvalsReviewer === "user") throw new Error(NATIVE_CONVERSATION_INTERACTIVE_APPROVALS_UNAVAILABLE);
270
270
  }
271
- async function prepareCodexConversationBinding(params, options = {}) {
271
+ async function prepareCodexConversationBinding(params) {
272
272
  const identity = {
273
273
  kind: "conversation",
274
274
  bindingId: params.data.bindingId
@@ -278,7 +278,7 @@ async function prepareCodexConversationBinding(params, options = {}) {
278
278
  const current = params.bindingStore.read(identity);
279
279
  if (current?.threadId !== snapshot?.threadId || current?.clientId !== snapshot?.clientId) throw new Error("Codex conversation binding changed before preparation.");
280
280
  const requested = params.data.start && current?.conversationStartId !== params.data.start.id ? params.data.start : void 0;
281
- if (current && !requested && !options.forceNew) return;
281
+ if (current && !requested) return;
282
282
  const sourceIdentity = params.data.source ? sessionBindingIdentity({
283
283
  agentId: params.data.source.agentId,
284
284
  sessionId: params.data.source.sessionId,
@@ -310,7 +310,7 @@ async function prepareCodexConversationBinding(params, options = {}) {
310
310
  agentId: params.data.source?.agentId ?? params.data.agentId
311
311
  };
312
312
  const threadId = requested?.threadId;
313
- await bindThread(bindingParams, options.forceNew ? void 0 : threadId);
313
+ await bindThread(bindingParams, threadId);
314
314
  const stored = params.bindingStore.read(identity);
315
315
  if (!stored) throw new Error("Codex conversation binding disappeared while initializing its thread.");
316
316
  if (sourceIdentity && params.data.source && !current?.conversationSourceTransferComplete) await params.bindingStore.withLease(sourceIdentity, async () => {
@@ -535,6 +535,12 @@ function readLocalMediaPath(value) {
535
535
  //#endregion
536
536
  //#region extensions/codex/src/conversation-binding.ts
537
537
  const DEFAULT_BOUND_TURN_TIMEOUT_MS = 12e5;
538
+ var CodexConversationUnloadedThreadError = class extends Error {
539
+ constructor(threadId, cause) {
540
+ super(cause.message, { cause });
541
+ this.threadId = threadId;
542
+ }
543
+ };
538
544
  async function runBoundTurn(params) {
539
545
  const agentLookup = buildCodexConversationAgentLookup({
540
546
  agentDir: params.data.agentDir,
@@ -546,6 +552,7 @@ async function runBoundTurn(params) {
546
552
  };
547
553
  const binding = params.bindingStore.read(identity);
548
554
  if (!binding?.threadId) throw new Error("bound Codex conversation has no thread binding");
555
+ if (params.resumeThreadId && binding.threadId !== params.resumeThreadId) throw new Error("Codex conversation binding changed before recovery; review it before resending.");
549
556
  return await withExclusiveCodexAppServerThread({
550
557
  bindingStore: params.bindingStore,
551
558
  identity,
@@ -576,6 +583,7 @@ async function runBoundTurn(params) {
576
583
  const permissionProfile = runtime.networkProxy?.profileName;
577
584
  const networkProxyConfigFingerprint = runtime.networkProxy?.configFingerprint;
578
585
  const networkProxyBindingChanged = binding.networkProxyProfileName !== permissionProfile || binding.networkProxyConfigFingerprint !== networkProxyConfigFingerprint;
586
+ if (params.resumeThreadId && networkProxyBindingChanged) throw new Error("Codex conversation policy changed before recovery; rebind the conversation and resend your message.");
579
587
  const serviceTier = binding.serviceTier ?? runtime.serviceTier;
580
588
  let useStickyNetworkProfile = permissionProfile !== void 0 && !networkProxyBindingChanged;
581
589
  assertNativeConversationApprovalPolicySupported(runtime);
@@ -625,7 +633,7 @@ async function runBoundTurn(params) {
625
633
  ownsNativeSubscription = true;
626
634
  }
627
635
  }
628
- if (networkProxyBindingChanged || binding.clientId !== client.getInstanceId() || isCodexAppServerClientRuntimeLive(client) && !params.incognito && !liveThreadOwnership) {
636
+ if (params.resumeThreadId || networkProxyBindingChanged || binding.clientId !== client.getInstanceId() || isCodexAppServerClientRuntimeLive(client) && !params.incognito && !liveThreadOwnership) {
629
637
  if (!networkProxyBindingChanged && binding.clientId === client.getInstanceId()) await assertResumeInputAllowed();
630
638
  const result = await withLeasedCodexAppServerClientStartSelectionRetry({
631
639
  lease: clientLease,
@@ -726,7 +734,10 @@ async function runBoundTurn(params) {
726
734
  ...modelSelection?.model ? { model: modelSelection.model } : {},
727
735
  personality: CODEX_NATIVE_PERSONALITY_NONE,
728
736
  ...serviceTier ? { serviceTier } : {}
729
- }, { timeoutMs: runtime.requestTimeoutMs })).turn.id;
737
+ }, { timeoutMs: runtime.requestTimeoutMs }).catch((error) => {
738
+ if (!params.incognito && error instanceof CodexAppServerRpcError && error.method === "turn/start" && error.code === -32600 && error.message === `thread not found: ${threadId}`) throw new CodexConversationUnloadedThreadError(threadId, error);
739
+ throw error;
740
+ })).turn.id;
730
741
  activeTurnCleanup = trackCodexConversationActiveTurn({
731
742
  identity,
732
743
  client,
@@ -740,6 +751,7 @@ async function runBoundTurn(params) {
740
751
  turnSucceeded = true;
741
752
  return { text: replyText || "Codex completed without a text reply." };
742
753
  } catch (error) {
754
+ if (params.resumeThreadId && isCodexThreadReadMissingError(error, threadId)) throw new Error("The bound Codex thread is unavailable. Your message was not submitted; rebind the conversation and resend it.", { cause: error });
743
755
  if (isCodexAppServerOverloadError(error) && error.method === "thread/resume") throw error;
744
756
  if (error instanceof CodexThreadDirectInputError) {
745
757
  if (params.incognito && ownsNativeSubscription) {
@@ -808,15 +820,12 @@ async function runBoundTurnWithMissingThreadRecovery(params) {
808
820
  try {
809
821
  return await runBoundTurn(params);
810
822
  } catch (error) {
811
- if (!isCodexThreadNotFoundError(error)) throw error;
812
- await prepareCodexConversationBinding(params, { forceNew: true });
813
- return await runBoundTurn(params);
823
+ if (!(error instanceof CodexConversationUnloadedThreadError)) throw error;
824
+ return await runBoundTurn({
825
+ ...params,
826
+ resumeThreadId: error.threadId
827
+ });
814
828
  }
815
829
  }
816
- function isCodexThreadNotFoundError(error) {
817
- if (isCodexAppServerOverloadError(error) || error instanceof CodexAppServerUnsafeSubscriptionError) return false;
818
- const message = formatErrorMessage(error);
819
- return /\bthread not found:/iu.test(message) || /\bbound Codex conversation has no thread binding\b/u.test(message);
820
- }
821
830
  //#endregion
822
831
  export { runBoundTurnWithMissingThreadRecovery };
@@ -1,4 +1,4 @@
1
- import { t as __exportAll } from "./session-binding-sidecars-DD-enC8w.mjs";
1
+ import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
2
2
  import { asOptionalRecord, normalizeOptionalString, readNonBlankString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import process from "node:process";
@@ -1,9 +1,9 @@
1
- import { r as bindingStoreKey } from "./session-binding-record-DU_0biMD.mjs";
2
- import { r as isCodexFastServiceTier } from "./config-utils-DN_YT7dE.mjs";
1
+ import { r as bindingStoreKey } from "./session-binding-record-C2kDBZhx.mjs";
2
+ import { m as isCodexFastServiceTier } from "./config-parsing-CVK2Q463.mjs";
3
3
  import { o as formatCodexDisplayText } from "./command-formatters-xW9KpoSZ.mjs";
4
- import "./config-C1YVVLEA.mjs";
4
+ import "./config-LQemoqTL.mjs";
5
5
  import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-CgHQ8Vot.mjs";
6
- import "./session-binding-JEHNMPsr.mjs";
6
+ import "./session-binding-BDnNz-Co.mjs";
7
7
  import { a as resolveCodexBindingModelProviderFallback, r as resolveCodexAppServerRequestModelSelection } from "./thread-model-selection-DcVebr8N.mjs";
8
8
  import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
9
9
  import { getSessionEntry, patchSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
@@ -1,5 +1,5 @@
1
- import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
2
- import { t as attemptTerminal } from "./attempt-terminal-jO5IMj9K.mjs";
1
+ import { d as readCodexPluginConfig } from "./config-parsing-CVK2Q463.mjs";
2
+ import { t as attemptTerminal } from "./attempt-terminal-sZutF0WY.mjs";
3
3
  //#region extensions/codex/src/app-server/cyber-failover.ts
4
4
  /**
5
5
  * Automatic Daybreak escalation for OpenAI cyber-policy refusals.
@@ -1,4 +1,4 @@
1
- import { t as emitCodexAppServerEvent } from "./run-attempt-lifecycle-KN4oh-7O.mjs";
1
+ import { t as emitCodexAppServerEvent } from "./run-attempt-lifecycle-DN-ATDp9.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-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";
1
+ import { d as readCodexPluginConfig } from "./config-parsing-CVK2Q463.mjs";
2
+ import { a as resolveCodexAppServerStartOptionsForAgent } from "./config-options-CZmH25Xq.mjs";
3
+ import { r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand } from "./managed-binary-DwC9wxch.mjs";
4
+ import "./config-LQemoqTL.mjs";
5
+ import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DGB1-VbB.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,10 +1,10 @@
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-DsWSCPHO.mjs";
3
- import "./config-C1YVVLEA.mjs";
2
+ import { c as isCodexPairedNodeRemoteExecPlacementSandbox, d as readCodexPluginConfig, l as isCodexRemoteExecPlacementSandbox } from "./config-parsing-CVK2Q463.mjs";
3
+ import "./config-LQemoqTL.mjs";
4
4
  import { a as isCodexResponsesOAuthRun } from "./responses-oauth-twnuTaAa.mjs";
5
- import { F as isForcedPrivateQaCodexRuntime, L as isSystemAgentOnlyCodexDynamicToolAllowlist, P as filterCodexDynamicTools, R as normalizeCodexDynamicToolName, h as resolveCodexWebSearchPlan } from "./thread-requests-BgzJwJtS.mjs";
5
+ import { F as isForcedPrivateQaCodexRuntime, L as isSystemAgentOnlyCodexDynamicToolAllowlist, P as filterCodexDynamicTools, R as normalizeCodexDynamicToolName, h as resolveCodexWebSearchPlan } from "./thread-requests-DjyDmCo4.mjs";
6
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-wq7jrNLk.mjs";
7
+ import { _ as createGatewayProcessProjection, b as isCodexDynamicToolExcluded, g as createGatewayExecProjection, v as createNodeExecAliasDynamicTool, x as placeDisabledNativeShellToolsInDirectNamespace, y as createSandboxShellProjection } from "./native-hook-relay-BvwSj5bt.mjs";
8
8
  import path from "node:path";
9
9
  import { createStageTimingTracker, formatStageTimings } from "openclaw/plugin-sdk/time-runtime";
10
10
  import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
@@ -350,7 +350,7 @@ async function buildDynamicTools(input) {
350
350
  return exposedTools;
351
351
  }
352
352
  function shouldEnableCodexAppServerNativeToolSurface(params, sandbox, options = {}) {
353
- if (isCodexResponsesOAuthRun(params) || params.requireWorkspaceOnly === true || params.pluginHarnessToolPolicyRestricted === true || isCodexMemoryFlushRun(params) || params.disableTools) return false;
353
+ if (isCodexResponsesOAuthRun(params) || params.requireWorkspaceOnly === true || params.pluginHarnessToolPolicyRestricted === true || isCodexMemoryFlushRun(params) || params.disableTools || params.oneShotCliRun === true) return false;
354
354
  if (!resolveCodexNativeExecutionPolicyForRun(params, {
355
355
  agentId: options.agentId,
356
356
  runtimeSessionKey: options.runtimeSessionKey,
@@ -1,21 +1,21 @@
1
1
  import { i as isJsonObject, r as flattenCodexDynamicToolFunctions, t as CODEX_OPENCLAW_DIRECT_DYNAMIC_TOOL_NAMESPACE } from "./protocol-CANUwXJ3.mjs";
2
- import { n as codexSandboxPolicyForTurn } from "./config-options-DDzeNQ8m.mjs";
2
+ import { n as codexSandboxPolicyForTurn } from "./config-options-CZmH25Xq.mjs";
3
3
  import { o as formatCodexDisplayText } from "./command-formatters-xW9KpoSZ.mjs";
4
4
  import { o as readItem } from "./event-projector-values-CLvG1Hil.mjs";
5
5
  import { s as codexAppIdentityKey } from "./plugin-app-cache-key-Bg9DbDI6.mjs";
6
- import "./config-C1YVVLEA.mjs";
6
+ import "./config-LQemoqTL.mjs";
7
7
  import { r as invalidInlineImageText } from "./session-history-read-BI_2jRED.mjs";
8
8
  import { o as neutralizeCodexExplicitMentionSigils } from "./context-engine-projection-ps-yn_ci.mjs";
9
- import { W as protectCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientIfCurrent } from "./shared-client-BCx1wbyA.mjs";
10
- import { A as createFailedDynamicToolResponse, j as failedToolResult, k as resolveCodexToolAbortTerminalReason, l as CodexServerRequestResolvedError, w as createCodexElicitationResponse, x as readCodexTurnCompletedNotification } from "./client-D93nbdB8.mjs";
9
+ import { G as protectCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientIfCurrent } from "./shared-client-CNGDTv68.mjs";
10
+ import { A as createFailedDynamicToolResponse, j as failedToolResult, k as resolveCodexToolAbortTerminalReason, l as CodexServerRequestResolvedError, w as createCodexElicitationResponse, x as readCodexTurnCompletedNotification } from "./client-Div-zqnz.mjs";
11
11
  import { t as codexWebSocketDataToBuffer } from "./websocket-data-XlRvt8Ys.mjs";
12
- import { S as shouldClearTerminalPresentationForNativeItem, _ as itemName, a as isCodexNotificationForTurn, c as readCodexNotificationTurnId, d as auditNativeToolUnfinishedStatus, l as auditNativeToolName, s as readCodexNotificationThreadId, u as auditNativeToolTerminalStatus, v as itemStatus } from "./turn-router-DBVMToGo.mjs";
12
+ import { S as shouldClearTerminalPresentationForNativeItem, _ as itemName, a as isCodexNotificationForTurn, c as readCodexNotificationTurnId, d as auditNativeToolUnfinishedStatus, l as auditNativeToolName, s as readCodexNotificationThreadId, u as auditNativeToolTerminalStatus, v as itemStatus } from "./turn-router-DM0fRrYI.mjs";
13
13
  import { n as resolveCodexAppServerReasoningEffort, t as readCodexSupportedReasoningEfforts } from "./reasoning-effort-CS9kKWB9.mjs";
14
- import { V as joinPresentSections } from "./thread-requests-BgzJwJtS.mjs";
14
+ import { V as joinPresentSections } from "./thread-requests-DjyDmCo4.mjs";
15
15
  import { r as resolveCodexAppServerRequestModelSelection, t as CODEX_NATIVE_PERSONALITY_NONE } from "./thread-model-selection-DcVebr8N.mjs";
16
- import { a as requestPluginApprovalOutcome, c as truncateCodexApprovalDisplayText, i as requestPluginApproval, l as waitForPluginApprovalDecision, n as codexApprovalTimeoutText, o as sanitizeCodexApprovalVisibleText, r as mapExecDecisionToOutcome, s as stripDanglingCodexApprovalTerminalSequence, t as approvalRequestExplicitlyUnavailable } from "./plugin-approval-roundtrip-CD88q3yx.mjs";
17
- import { d as isCodexPassThroughMediaSource, f as mapCodexAppServerLocalWorkspacePath, p as mapCodexAppServerRemoteWorkspacePath } from "./dynamic-tool-build-DcaPmBlE.mjs";
18
- import { c as emitCodexNativePreToolUseFailureDiagnostic } from "./native-hook-relay-wq7jrNLk.mjs";
16
+ import { a as requestPluginApprovalOutcome, c as truncateCodexApprovalDisplayText, i as requestPluginApproval, l as waitForPluginApprovalDecision, n as codexApprovalTimeoutText, o as sanitizeCodexApprovalVisibleText, r as mapExecDecisionToOutcome, s as stripDanglingCodexApprovalTerminalSequence, t as approvalRequestExplicitlyUnavailable } from "./plugin-approval-roundtrip-CXXXhuKi.mjs";
17
+ import { d as isCodexPassThroughMediaSource, f as mapCodexAppServerLocalWorkspacePath, p as mapCodexAppServerRemoteWorkspacePath } from "./dynamic-tool-build-DjbDZzOJ.mjs";
18
+ import { c as emitCodexNativePreToolUseFailureDiagnostic } from "./native-hook-relay-BvwSj5bt.mjs";
19
19
  import { createRequire } from "node:module";
20
20
  import { asNonArrayRecord, asOptionalRecord, filterStringEntries, isRecord, normalizeOptionalString, normalizeTrimmedStringList, readNonBlankString, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
21
21
  import { createHash, randomUUID } from "node:crypto";
@@ -26,12 +26,12 @@ import { DEFAULT_MAX_LIVE_TOOL_RESULT_CHARS, estimateToolResultTextChars, resolv
26
26
  import path, { posix } from "node:path";
27
27
  import { coerceErrorMessage } from "openclaw/plugin-sdk/error-runtime";
28
28
  import { createBoundedRemoteFileReader, isPathStrictlyInside, root } from "openclaw/plugin-sdk/file-access-runtime";
29
+ import { raceWithTimeout } from "openclaw/plugin-sdk/time-runtime";
29
30
  import { once } from "node:events";
30
31
  import { spawn } from "node:child_process";
31
32
  import { expectDefined } from "openclaw/plugin-sdk/expect-runtime";
32
33
  import { emitTrustedDiagnosticEvent, hasPendingInternalDiagnosticEvent } from "openclaw/plugin-sdk/diagnostic-runtime";
33
34
  import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
34
- import { raceWithTimeout } from "openclaw/plugin-sdk/time-runtime";
35
35
  import { fileURLToPath, pathToFileURL } from "node:url";
36
36
  import { buildHarnessVisibleReplyGuidance, buildTemporalContextText, captureToolAuthoredSourceReply, createAgentToolResultMiddlewareRunner, createCodexAppServerToolResultExtensionRunner, embeddedAgentLog, extractMessagingToolSend, extractMessagingToolSendResult, finalizeAgentToolAvailability, finalizeToolTerminalPresentation, formatApprovalDisplayPath, formatToolExecutionErrorMessage, getBeforeToolCallFailureDisposition, getChannelAgentToolMeta, getPluginToolMeta, getPluginToolSideEffectOwnerKey, hasNativeHookRelayInvocation, invokeNativeHookRelay, isDeliveredMessageToolOnlySourceReplyResult, isDeliveredMessagingToolResult, isDeliveredMessagingToolSendToCurrentSource, isMessagingTool, isReplaySafeToolCall, isToolResultError, isToolWrappedWithBeforeToolCallHook, projectPluginMessageDeliveryFact, projectRuntimeToolInputSchema, readEmbeddedMessageDeliveryFact, readToolOperatorHint, resolveNativeHookRelayDeferredToolApproval, resolveToolExecutionErrorKind, runAgentHarnessAfterToolCallHook, sanitizeToolResult, setBeforeToolCallDiagnosticsEnabled, wrapToolWithBeforeToolCallHook } from "openclaw/plugin-sdk/agent-harness-runtime";
37
37
  import { sanitizeInlineImageDataUrl } from "openclaw/plugin-sdk/inline-image-data-url-runtime";
@@ -1,8 +1,8 @@
1
- import { m as sessionBindingIdentity } from "./session-binding-record-DU_0biMD.mjs";
2
- import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-f8ODJ_OX.mjs";
3
- import { W as protectCodexAppServerLiveThread } from "./shared-client-BCx1wbyA.mjs";
4
- import "./session-binding-JEHNMPsr.mjs";
5
- import { n as projectCodexMcpToolMetadata, t as projectCodexMcpServerMetadata } from "./mcp-tool-metadata-DW41snf3.mjs";
1
+ import { m as sessionBindingIdentity } from "./session-binding-record-C2kDBZhx.mjs";
2
+ import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-CXK7tmkb.mjs";
3
+ import { G as protectCodexAppServerLiveThread } from "./shared-client-CNGDTv68.mjs";
4
+ import "./session-binding-BDnNz-Co.mjs";
5
+ import { n as projectCodexMcpToolMetadata, t as projectCodexMcpServerMetadata } from "./mcp-tool-metadata-_sawBkIh.mjs";
6
6
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { assignMcpCatalogSafeServerNames } from "openclaw/plugin-sdk/agent-harness-runtime";
8
8
  //#region extensions/codex/src/app-server/effective-mcp-catalog.ts
@@ -107,7 +107,7 @@ async function acquireCodexMcpAppRuntime(params, options) {
107
107
  if (!retained && params.prepareSession) {
108
108
  const preparation = await params.prepareSession();
109
109
  params.assertCurrent();
110
- const { prepareCodexMcpAppSession } = await import("./mcp-app-session-preparation-Dz2GOwyE.mjs");
110
+ const { prepareCodexMcpAppSession } = await import("./mcp-app-session-preparation-C7LyxbAm.mjs");
111
111
  await prepareCodexMcpAppSession({
112
112
  preparation,
113
113
  bindingStore: options.bindingStore,
@@ -128,7 +128,7 @@ async function acquireCodexMcpAppRuntime(params, options) {
128
128
  };
129
129
  params.assertCurrent();
130
130
  assertBinding();
131
- const { createNativeMcpRuntime } = await import("./native-mcp-app-DX3nyTtc.mjs").then((n) => n.n);
131
+ const { createNativeMcpRuntime } = await import("./native-mcp-app-DDEtVQED.mjs").then((n) => n.n);
132
132
  params.assertCurrent();
133
133
  const runtime = createNativeMcpRuntime({
134
134
  client: retained.client,
@@ -1,6 +1,6 @@
1
1
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
- import { x as readCodexTurnCompletedNotification } from "./client-D93nbdB8.mjs";
3
- import { n as getCodexAppServerTurnRouter } from "./turn-router-DBVMToGo.mjs";
2
+ import { x as readCodexTurnCompletedNotification } from "./client-Div-zqnz.mjs";
3
+ import { n as getCodexAppServerTurnRouter } from "./turn-router-DM0fRrYI.mjs";
4
4
  import { o as isTerminalTurnStatus, s as readCodexNotificationItem, t as CodexUsageProjection } from "./event-projector-usage-BpKfdoTm.mjs";
5
5
  import { readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { toStringifiedError } from "openclaw/plugin-sdk/error-runtime";
@@ -289,6 +289,7 @@ async function createCodexInferenceProxy(params) {
289
289
  let resident = null;
290
290
  const controller = new AbortController();
291
291
  const deadlineAtMs = Date.now() + HANDSHAKE_TIMEOUT_MS;
292
+ const deadlineAtMonotonicMs = performance.now() + HANDSHAKE_TIMEOUT_MS;
292
293
  let releasePermit = null;
293
294
  let framePending = false;
294
295
  let idleTimer;
@@ -322,7 +323,7 @@ async function createCodexInferenceProxy(params) {
322
323
  });
323
324
  };
324
325
  const close = () => finish();
325
- const failHandshake = () => finish(Date.now() >= deadlineAtMs ? 504 : 502);
326
+ const failHandshake = () => finish(performance.now() >= deadlineAtMonotonicMs ? 504 : 502);
326
327
  try {
327
328
  const { target, path } = resolveTarget(req);
328
329
  if (params.oauth) throw new Error(CODEX_INFERENCE_TRANSPORT_FAILURE);
@@ -352,12 +353,12 @@ async function createCodexInferenceProxy(params) {
352
353
  rejectBusyUpgrade(socket);
353
354
  return;
354
355
  }
355
- handshakeTimer = setTimeout(() => finish(504), Math.max(1, deadlineAtMs - Date.now()));
356
+ handshakeTimer = setTimeout(() => finish(504), Math.max(1, deadlineAtMonotonicMs - performance.now()));
356
357
  handshakeTimer.unref();
357
358
  const assertHandshakeCurrent = () => {
358
359
  assertCurrent();
359
360
  signal.throwIfAborted();
360
- if (Date.now() >= deadlineAtMs) throw new Error(CODEX_INFERENCE_TRANSPORT_FAILURE);
361
+ if (performance.now() >= deadlineAtMonotonicMs) throw new Error(CODEX_INFERENCE_TRANSPORT_FAILURE);
361
362
  };
362
363
  proxyAgent = createNodeProxyAgent({
363
364
  mode: "env",
@@ -374,7 +375,7 @@ async function createCodexInferenceProxy(params) {
374
375
  followRedirects: false,
375
376
  perMessageDeflate: false,
376
377
  maxPayload: MAX_BODY_BYTES,
377
- handshakeTimeout: Math.max(1, deadlineAtMs - Date.now()),
378
+ handshakeTimeout: Math.max(1, deadlineAtMonotonicMs - performance.now()),
378
379
  finishRequest(request) {
379
380
  let socketClosed = Promise.resolve();
380
381
  request.once("socket", (upstreamSocket) => {
@@ -1,10 +1,10 @@
1
- import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
2
- import { i as resolveCodexAppServerHomeScope } from "./config-options-DDzeNQ8m.mjs";
3
- import "./config-C1YVVLEA.mjs";
4
- import { nt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-BCx1wbyA.mjs";
5
- import { f as assertCodexPassiveTurnItems } from "./client-D93nbdB8.mjs";
6
- import { runBoundedCodexAppServerTurn } from "./bounded-turn-DfIJtRlv.mjs";
7
- import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-BfDAo-qZ.mjs";
1
+ import { d as readCodexPluginConfig } from "./config-parsing-CVK2Q463.mjs";
2
+ import { i as resolveCodexAppServerHomeScope } from "./config-options-CZmH25Xq.mjs";
3
+ import "./config-LQemoqTL.mjs";
4
+ import { rt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-CNGDTv68.mjs";
5
+ import { f as assertCodexPassiveTurnItems } from "./client-Div-zqnz.mjs";
6
+ import { runBoundedCodexAppServerTurn } from "./bounded-turn-vdpL2efh.mjs";
7
+ import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-CIQJykuM.mjs";
8
8
  import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-CLMKN4x-.mjs";
9
9
  //#region extensions/codex/src/app-server/isolated-completion.ts
10
10
  /** Runs prompt-only Codex inference on an ephemeral, ring-zero native thread. */
@@ -1,4 +1,4 @@
1
- import { t as __exportAll } from "./session-binding-sidecars-DD-enC8w.mjs";
1
+ import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
4
4
  import { constants, existsSync, realpathSync } from "node:fs";
@@ -1,18 +1,17 @@
1
- import { m as sessionBindingIdentity } from "./session-binding-record-DU_0biMD.mjs";
2
- import { d as readCodexRequirementsToml } from "./config-security-clxAZYWX.mjs";
3
- import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
1
+ import { m as sessionBindingIdentity } from "./session-binding-record-C2kDBZhx.mjs";
2
+ import { d as readCodexRequirementsToml } from "./config-security-DpkGNy5T.mjs";
3
+ import { d as readCodexPluginConfig } from "./config-parsing-CVK2Q463.mjs";
4
4
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
5
- import { i as withCodexAppServerGitConfig } from "./transport-stdio-CRWTkKOn.mjs";
6
5
  import { n as buildCodexAppServerRuntimeFingerprint, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-Bg9DbDI6.mjs";
7
- import { i as resolveCodexBindingAppServerConnection } from "./binding-connection-B7HAAZSI.mjs";
8
- import { r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-C1YVVLEA.mjs";
6
+ import { i as resolveCodexBindingAppServerConnection } from "./binding-connection-C0t9TBX_.mjs";
7
+ import { r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-LQemoqTL.mjs";
9
8
  import { r as resolveCodexAppServerAuthProfileId } from "./auth-profile-CgHQ8Vot.mjs";
10
- import { I as ensureCodexAppServerClientRuntime, c as getLeasedSharedCodexAppServerClient, h as releaseLeasedSharedCodexAppServerClient } from "./shared-client-BCx1wbyA.mjs";
11
- import { d as mergeCodexThreadConfigs } from "./project-doc-thread-config-BVcvnps8.mjs";
12
- import { i as resolveCodexSessionBinding } from "./session-binding-JEHNMPsr.mjs";
13
- import { a as rollbackCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BoUd0i6L.mjs";
14
- import { a as prepareCodexPluginThreadConfigStartupProvider, o as resolveCodexPluginThreadConfigStartupPolicy, t as startOrResumeThread } from "./thread-lifecycle-run-C_aYiYqk.mjs";
15
- import { n as applyCodexSessionPermissionPolicy } from "./session-permission-policy-CD2MAWU8.mjs";
9
+ import { I as ensureCodexAppServerClientRuntime, c as getLeasedSharedCodexAppServerClient, h as releaseLeasedSharedCodexAppServerClient } from "./shared-client-CNGDTv68.mjs";
10
+ import { d as mergeCodexThreadConfigs } from "./project-doc-thread-config-D_sWbxFR.mjs";
11
+ import { i as resolveCodexSessionBinding } from "./session-binding-BDnNz-Co.mjs";
12
+ import { a as rollbackCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BBsOFzCM.mjs";
13
+ import { a as prepareCodexPluginThreadConfigStartupProvider, o as resolveCodexPluginThreadConfigStartupPolicy, t as startOrResumeThread } from "./thread-lifecycle-run-DjSfTw6v.mjs";
14
+ import { n as applyCodexSessionPermissionPolicy } from "./session-permission-policy-C7kYxPGd.mjs";
16
15
  import { z } from "zod";
17
16
  import { loadCodexBundleMcpThreadConfig } from "openclaw/plugin-sdk/agent-harness-runtime";
18
17
  import { loadExecApprovals } from "openclaw/plugin-sdk/exec-approvals-runtime";
@@ -76,8 +75,7 @@ async function prepareCodexMcpAppSession(params) {
76
75
  canUseAutoReview: false
77
76
  });
78
77
  const environment = input.hostCapabilities.preparedEnvironment?.();
79
- const ownedLocalProcess = appServer.start.transport === "stdio" && !isCodexAppServerProxyLaunch(appServer.start.args) && !appServer.remoteWorkspaceRoot;
80
- const baseStartOptions = appServer.start.transport === "stdio" && !isCodexAppServerProxyLaunch(appServer.start.args) ? {
78
+ const startOptions = appServer.start.transport === "stdio" && !isCodexAppServerProxyLaunch(appServer.start.args) ? {
81
79
  ...appServer.start,
82
80
  env: {
83
81
  ...appServer.start.env,
@@ -86,8 +84,6 @@ async function prepareCodexMcpAppSession(params) {
86
84
  ...environment?.localProcessEnv
87
85
  }
88
86
  } : appServer.start;
89
- const shellGitConfigParameters = ownedLocalProcess ? environment?.localGitConfigParameters : void 0;
90
- const startOptions = shellGitConfigParameters ? withCodexAppServerGitConfig(baseStartOptions, shellGitConfigParameters) : baseStartOptions;
91
87
  const authProfileId = resolveCodexAppServerAuthProfileId({
92
88
  authProfileId: input.authProfileId ?? admitted.binding?.authProfileId,
93
89
  store: input.authProfileStore,
@@ -168,7 +164,6 @@ async function prepareCodexMcpAppSession(params) {
168
164
  agentDir: input.agentDir,
169
165
  cwd: input.workspaceDir,
170
166
  appServer,
171
- shellGitConfigParameters,
172
167
  dynamicTools: [],
173
168
  nativeCodeModeEnabled: false,
174
169
  webSearchAllowed: false,
@@ -1,4 +1,4 @@
1
- import { r as parseCodexPluginMarketplaceId } from "./plugin-marketplace-discovery-BblHM3DU.mjs";
1
+ import { r as parseCodexPluginMarketplaceId } from "./plugin-marketplace-discovery-BNyI1zd_.mjs";
2
2
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { normalizeMcpCodexToolAnnotations, readMcpAppIcons, readMcpAppSettingsCapability, readMcpAppToolExtensions } from "openclaw/plugin-sdk/codex-mcp-projection";
4
4
  //#region extensions/codex/src/app-server/mcp-tool-metadata.ts
@@ -1,15 +1,15 @@
1
1
  import { t as buildCodexRuntimeModelParams } from "./model-runtime-BdqzOMkU.mjs";
2
- import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
2
+ import { d as readCodexPluginConfig } from "./config-parsing-CVK2Q463.mjs";
3
3
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
4
- import { w as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-f8ODJ_OX.mjs";
5
- import { a as withCodexAppServerJsonClient } from "./request-Bo0kKABI.mjs";
6
- import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DWzK-k0n.mjs";
4
+ import { w as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-CXK7tmkb.mjs";
5
+ import { a as withCodexAppServerJsonClient } from "./request-m-H-7FMu.mjs";
6
+ import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DGB1-VbB.mjs";
7
7
  import { a as resolveCodexAppServerAuthProfileStore, r as resolveCodexAppServerAuthProfileId } from "./auth-profile-CgHQ8Vot.mjs";
8
- import { r as captureSharedCodexAppServerCatalogLifetime } from "./shared-client-BCx1wbyA.mjs";
8
+ import { r as captureSharedCodexAppServerCatalogLifetime } from "./shared-client-CNGDTv68.mjs";
9
9
  import { i as isCodexResponsesOAuthCredential } from "./responses-oauth-twnuTaAa.mjs";
10
- import { a as isCodexAppServerIndeterminateRequestCancellationError } from "./client-D93nbdB8.mjs";
11
- import { n as listAllCodexAppServerModels } from "./models-BHpbAuz8.mjs";
12
- import { probeCodexNativeAuth } from "./native-auth-esN5MdIv.mjs";
10
+ import { a as isCodexAppServerIndeterminateRequestCancellationError } from "./client-Div-zqnz.mjs";
11
+ import { n as listAllCodexAppServerModels } from "./models-CusrgpiY.mjs";
12
+ import { probeCodexNativeAuth } from "./native-auth-CveRfTpz.mjs";
13
13
  //#region extensions/codex/src/app-server/model-catalog.ts
14
14
  const INPUT_TYPES = /* @__PURE__ */ new Set([
15
15
  "text",
@@ -1,4 +1,4 @@
1
- import { d as assertCodexModelListResponse } from "./client-D93nbdB8.mjs";
1
+ import { d as assertCodexModelListResponse } from "./client-Div-zqnz.mjs";
2
2
  import { normalizeOptionalString, normalizeUniqueTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/codex/src/app-server/models.ts
4
4
  const DEFAULT_MODEL_DISCOVERY_TIMEOUT_MS = 1e4;
@@ -29,8 +29,8 @@ async function listAllCodexAppServerModels(options = {}) {
29
29
  async function withCodexAppServerModelRequest(options, run) {
30
30
  if (options.request) return await run(options.request);
31
31
  const timeoutMs = options.timeoutMs ?? 1e4;
32
- const { getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient } = await import("./shared-client-BCx1wbyA.mjs").then((n) => n.v);
33
- const { requestCodexAppServerClientJson } = await import("./request-Bo0kKABI.mjs").then((n) => n.i);
32
+ const { getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient } = await import("./shared-client-CNGDTv68.mjs").then((n) => n.v);
33
+ const { requestCodexAppServerClientJson } = await import("./request-m-H-7FMu.mjs").then((n) => n.i);
34
34
  const client = await getLeasedSharedCodexAppServerClient({
35
35
  startOptions: options.startOptions,
36
36
  timeoutMs,