@openclaw/codex 2026.10.5-beta.4 → 2026.10.10-beta.2

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 (156) hide show
  1. package/README.md +10 -3
  2. package/dist/.setup/{account-usage-runtime-CoVpNIlD.mjs → account-usage-runtime-BVO-lpvn.mjs} +15 -9
  3. package/dist/.setup/{app-server-policy-D_zv8J7V.mjs → app-server-policy-Cog6mm2i.mjs} +1 -1
  4. package/dist/.setup/{apply-BXDMd05l.mjs → apply-tJl5mopa.mjs} +11 -11
  5. package/dist/.setup/{attempt-client-cleanup-zNuNTKVr.mjs → attempt-client-cleanup-DMJWXGxM.mjs} +14 -8
  6. package/dist/.setup/attempt-terminal-sZutF0WY.mjs +1 -0
  7. package/dist/.setup/{attempt-workspace-context-CcwP3DA3.mjs → attempt-workspace-context-GYPLawX6.mjs} +2 -2
  8. package/dist/.setup/{auth-binding-BaxlhaNx.mjs → auth-binding-830RLAJW.mjs} +2 -2
  9. package/dist/.setup/{auth-cache-key-f8ODJ_OX.mjs → auth-cache-key-BW1YeaIk.mjs} +92 -80
  10. package/dist/.setup/{auth-profile-CgHQ8Vot.mjs → auth-profile-auwzSwwy.mjs} +14 -8
  11. package/dist/.setup/{auth-profile-health-oHizqgye.mjs → auth-profile-health-BVPZU9I8.mjs} +15 -8
  12. package/dist/.setup/{auth-profile-selection-hr8ocLtz.mjs → auth-profile-selection-Bp5PDk3W.mjs} +24 -7
  13. package/dist/.setup/{binding-connection-B7HAAZSI.mjs → binding-connection-GTgUj9pi.mjs} +2 -2
  14. package/dist/.setup/{binding-connection.runtime-DAXn7iFl.mjs → binding-connection.runtime-RcWR3vQu.mjs} +4 -3
  15. package/dist/.setup/{bounded-turn-DfIJtRlv.mjs → bounded-turn-BQkmyyjB.mjs} +18 -22
  16. package/dist/.setup/{bounded-turn-isolation-BfDAo-qZ.mjs → bounded-turn-isolation-D8CDrAVX.mjs} +3 -3
  17. package/dist/.setup/{build-state-Ds14X10-.mjs → build-state-CjLCC0wm.mjs} +1 -1
  18. package/dist/.setup/{capabilities-DbOzOglY.mjs → capabilities-DAS-JX1z.mjs} +1 -1
  19. package/dist/.setup/{client-D93nbdB8.mjs → client--P8jwXvA.mjs} +47 -317
  20. package/dist/.setup/{client-catalog-response-CuVLp4I0.mjs → client-catalog-response-CsDxVVOZ.mjs} +2 -2
  21. package/dist/.setup/client-initialize-CjgZcX61.mjs +165 -0
  22. package/dist/.setup/{command-dispatch-DxdH5a9-.mjs → command-dispatch-DqaVBeR3.mjs} +3 -3
  23. package/dist/.setup/{command-formatters-xW9KpoSZ.mjs → command-formatters-B_7-QZ1c.mjs} +2 -2
  24. package/dist/.setup/{command-handlers-fiYvYYq0.mjs → command-handlers-i6mEjvfo.mjs} +539 -406
  25. package/dist/.setup/command-rpc-B65jEc0r.mjs +296 -0
  26. package/dist/.setup/compact-AO2H4RJe.mjs +823 -0
  27. package/dist/.setup/{computer-use-DL2v3Kxq.mjs → computer-use-YUnu0JVx.mjs} +21 -68
  28. package/dist/.setup/{config-C1YVVLEA.mjs → config-BfrAlTMT.mjs} +3 -3
  29. package/dist/.setup/{config-options-DDzeNQ8m.mjs → config-options-DMFZkd3X.mjs} +1 -1
  30. package/dist/.setup/{config-runtime-DWzK-k0n.mjs → config-runtime-BZRizyuG.mjs} +2 -2
  31. package/dist/.setup/{context-engine-projection-ps-yn_ci.mjs → context-engine-projection-PIeLSnR-.mjs} +16 -30
  32. package/dist/.setup/{conversation-binding-BieJZRRV.mjs → conversation-binding-CfnUR-IM.mjs} +228 -116
  33. package/dist/.setup/{conversation-binding-data-UgLuTSQT.mjs → conversation-binding-data-khgW0n-o.mjs} +4 -2
  34. package/dist/.setup/{conversation-control-GXM3unE4.mjs → conversation-control-B2EpVZEb.mjs} +53 -23
  35. package/dist/.setup/{cyber-failover-D4dgNfFf.mjs → cyber-failover-CqEZoQsj.mjs} +1 -1
  36. package/dist/.setup/{cyber-failover-notice-ljgGGL0s.mjs → cyber-failover-notice-poL3Advd.mjs} +1 -1
  37. package/dist/.setup/{doctor-start-options-JjTAl-q_.mjs → doctor-start-options-8uIBXIzR.mjs} +8 -5
  38. package/dist/.setup/{dynamic-tool-build-DcaPmBlE.mjs → dynamic-tool-build-DOub3CB5.mjs} +208 -218
  39. package/dist/.setup/{dynamic-tools-CnQFnNKH.mjs → dynamic-tools-Us5mvq_N.mjs} +344 -118
  40. package/dist/.setup/{effective-mcp-catalog-B5HKFZNK.mjs → effective-mcp-catalog-DfUUoeeM.mjs} +11 -9
  41. package/dist/.setup/{ephemeral-turn-De3qb8EQ.mjs → ephemeral-turn-B2z0RIeF.mjs} +5 -4
  42. package/dist/.setup/{event-projector-assistant-message-CLMKN4x-.mjs → event-projector-assistant-message-ChOAY7rW.mjs} +16 -11
  43. package/dist/.setup/{event-projector-usage-BpKfdoTm.mjs → event-projector-usage-CBY0Hkga.mjs} +2 -2
  44. package/dist/.setup/{event-projector-values-CLvG1Hil.mjs → event-projector-values-yf4us9Pf.mjs} +1 -1
  45. package/dist/.setup/experimental-features-uGnVDtp-.mjs +19 -0
  46. package/dist/.setup/inference-context-HRw3PDwn.mjs +209 -0
  47. package/dist/.setup/{inference-dispatch-CO6tTs4q.mjs → inference-dispatch-C2zVSnrr.mjs} +2 -2
  48. package/dist/.setup/{inference-metadata-DCvcG_N_.mjs → inference-metadata-CYFWLHVk.mjs} +3 -1
  49. package/dist/.setup/{inference-proxy-BDWV0djM.mjs → inference-proxy-CiLbHMLf.mjs} +8 -8
  50. package/dist/.setup/installed-probe-lVC1X5ve.mjs +185 -0
  51. package/dist/.setup/{isolated-completion-BPJdvk5F.mjs → isolated-completion-CybgD6uU.mjs} +7 -7
  52. package/dist/.setup/managed-binary-DbKvGXKl.mjs +395 -0
  53. package/dist/.setup/{mcp-app-session-preparation-Dz2GOwyE.mjs → mcp-app-session-preparation-zUgpDLWR.mjs} +18 -14
  54. package/dist/.setup/{model-catalog-ZNwltCKl.mjs → model-catalog-CWY3wo0B.mjs} +28 -17
  55. package/dist/.setup/{models-BHpbAuz8.mjs → models-CmOBxsKF.mjs} +3 -3
  56. package/dist/.setup/{native-auth-esN5MdIv.mjs → native-auth-DpZIaY8N.mjs} +7 -4
  57. package/dist/.setup/native-execution-policy-D09tLP-u.mjs +152 -0
  58. package/dist/.setup/{native-hook-relay-wq7jrNLk.mjs → native-hook-relay-CocOW9YS.mjs} +45 -10
  59. package/dist/.setup/{native-mcp-app-DX3nyTtc.mjs → native-mcp-app-DrQeLxXj.mjs} +5 -5
  60. package/dist/.setup/{native-skill-isolation-DSBeF-Yy.mjs → native-skill-isolation-DL4-PQa4.mjs} +7 -7
  61. package/dist/.setup/{native-subagent-monitor-DOLEIf9r.mjs → native-subagent-monitor-C3CIIaZG.mjs} +485 -239
  62. package/dist/.setup/{native-subagent-pending-assignments-DmVhedNs.mjs → native-subagent-pending-assignments-CTinVtjo.mjs} +1 -1
  63. package/dist/.setup/{native-task-assignments-DimsQ9Qa.mjs → native-task-assignments-YJopbaVO.mjs} +9 -5
  64. package/dist/.setup/{node-cli-sessions-CzKg2nGq.mjs → node-cli-sessions-BuJnBnEq.mjs} +7 -4
  65. package/dist/.setup/{node-exec-server.runtime-BWkULhBM.mjs → node-exec-server.runtime-CP7RC1Nd.mjs} +3 -3
  66. package/dist/.setup/{plan-41-YOBMq.mjs → plan-Bqj6VQvQ.mjs} +7 -20
  67. package/dist/.setup/{plugin-activation-D7WkJMvU.mjs → plugin-activation-CXPWe-hl.mjs} +4 -4
  68. package/dist/.setup/{plugin-app-cache-key-Bg9DbDI6.mjs → plugin-app-cache-key-DRb-niJc.mjs} +17 -55
  69. package/dist/.setup/{plugin-approval-roundtrip-CD88q3yx.mjs → plugin-approval-roundtrip-CGEiG7hG.mjs} +1 -1
  70. package/dist/.setup/{plugin-inventory-CYgdo14P.mjs → plugin-inventory-DE9wcaeH.mjs} +2 -2
  71. package/dist/.setup/{plugin-metadata-cache-Bi8TAPwX.mjs → plugin-metadata-cache-BqC-a6Fb.mjs} +2 -15
  72. package/dist/.setup/{project-doc-thread-config-BVcvnps8.mjs → project-doc-thread-config-B0UI3f1D.mjs} +6 -6
  73. package/dist/.setup/protocol-CaPAVwe9.mjs +12 -0
  74. package/dist/.setup/{provider-LWKll6dV.mjs → provider-C_1fMsyD.mjs} +4 -4
  75. package/dist/.setup/{provider-capabilities-Dn2WwH4P.mjs → provider-capabilities-C7pYYpvh.mjs} +1 -1
  76. package/dist/.setup/{rate-limits-CI8pTPqL.mjs → rate-limits-BpfURnuy.mjs} +1 -1
  77. package/dist/.setup/{request-Bo0kKABI.mjs → request-C6U8q2uz.mjs} +132 -136
  78. package/dist/.setup/{responses-oauth-twnuTaAa.mjs → responses-oauth-CCV7aVYF.mjs} +6 -6
  79. package/dist/.setup/{rpc-error-C98SHchT.mjs → rpc-error-DemqqaxE.mjs} +7 -3
  80. package/dist/.setup/{run-attempt-ClU8MxhZ.mjs → run-attempt-BhuXanLv.mjs} +595 -426
  81. package/dist/.setup/{run-attempt-lifecycle-KN4oh-7O.mjs → run-attempt-lifecycle-DN-ATDp9.mjs} +1 -1
  82. package/dist/.setup/{runtime-artifact-C13pR7tD.mjs → runtime-artifact-CmLWeyJB.mjs} +3 -3
  83. package/dist/.setup/{runtime-artifact-connection-jS5DeCok.mjs → runtime-artifact-connection-DpWlZ02e.mjs} +3 -3
  84. package/dist/.setup/{sandbox-guard-DIImwCy1.mjs → sandbox-guard-DneAfNye.mjs} +70 -30
  85. package/dist/.setup/{session-binding-JEHNMPsr.mjs → session-binding-BgsWcbdY.mjs} +25 -23
  86. package/dist/.setup/{session-binding-record-DU_0biMD.mjs → session-binding-record-C_THntMe.mjs} +27 -12
  87. package/dist/.setup/{session-binding-record-codec-BpH8u_G9.mjs → session-binding-record-codec-DvmOI7g_.mjs} +1 -0
  88. package/dist/.setup/{session-binding-sidecars-DD-enC8w.mjs → session-binding-sidecars-BNSS6WL4.mjs} +55 -63
  89. package/dist/.setup/session-cancellation-DCN1FcBZ.mjs +43 -0
  90. package/dist/.setup/{session-catalog-adoption-Ca3OYGYM.mjs → session-catalog-adoption-ppsLlVLB.mjs} +24 -38
  91. package/dist/.setup/{session-catalog-archive-Bv6gV7x9.mjs → session-catalog-archive-CqLRHJ6z.mjs} +11 -13
  92. package/dist/.setup/{session-catalog-events-kR2Ot6nX.mjs → session-catalog-events-CEi6SuLQ.mjs} +5 -5
  93. package/dist/.setup/{session-catalog-index-order-CTfoefow.mjs → session-catalog-index-order-0Zqng2u8.mjs} +1 -1
  94. package/dist/.setup/{session-catalog-index-CrnfVEnT.mjs → session-catalog-index-qt4UWBua.mjs} +96 -271
  95. package/dist/.setup/{session-catalog-limits-BynIoOYm.mjs → session-catalog-limits-Dc6E0BZz.mjs} +1 -1
  96. package/dist/.setup/{session-catalog-list-request-D4MYNgDB.mjs → session-catalog-list-request-CAjoWjaH.mjs} +3 -4
  97. package/dist/.setup/{session-catalog-native-projection-CWqCU1I_.mjs → session-catalog-native-projection-BqBYi6kV.mjs} +5 -5
  98. package/dist/.setup/{session-catalog-node-adoption-BdP9Zjqo.mjs → session-catalog-node-adoption-e9v8mGgx.mjs} +5 -5
  99. package/dist/.setup/{session-catalog-node-continue-CNJibO4_.mjs → session-catalog-node-continue-H7nrzcUD.mjs} +5 -5
  100. package/dist/.setup/{session-catalog-node-lookup-BH_DBGa9.mjs → session-catalog-node-lookup-BrZfDkA8.mjs} +2 -2
  101. package/dist/.setup/{session-catalog-parsing-DkeoVn60.mjs → session-catalog-parsing-V6jyFg9g.mjs} +2 -2
  102. package/dist/.setup/{session-catalog-projection-BzHiV818.mjs → session-catalog-projection-CNyhjZze.mjs} +8 -7
  103. package/dist/.setup/{session-catalog-provenance-CmsOE5mh.mjs → session-catalog-provenance-Dg9s12z-.mjs} +50 -30
  104. package/dist/.setup/{session-catalog-source-DGuRdGvM.mjs → session-catalog-source-z_mNyQdX.mjs} +2 -6
  105. package/dist/.setup/{session-cli-GwU0izn-.mjs → session-cli-CBGKiqdv.mjs} +1 -1
  106. package/dist/.setup/{session-history-BO6i_pfk.mjs → session-history-7W0cgTXF.mjs} +11 -9
  107. package/dist/.setup/{session-history-import-CaO8s6ta.mjs → session-history-import-BwPKwcNi.mjs} +4 -4
  108. package/dist/.setup/{session-initialization-Bi_2DKhc.mjs → session-initialization-Dn3vveGv.mjs} +2 -2
  109. package/dist/.setup/{session-retirement-B3U5hpGJ.mjs → session-retirement-RZStisKb.mjs} +8 -8
  110. package/dist/.setup/{session-history.worker-DJQfek5p.mjs → settled-turn-evidence--tRW6fSm.mjs} +2 -18
  111. package/dist/.setup/{settled-turn-finalizer-CYCVpTv2.mjs → settled-turn-finalizer-gioXygEX.mjs} +8 -8
  112. package/dist/.setup/{shared-client-BCx1wbyA.mjs → shared-client-CkyTrNB8.mjs} +380 -557
  113. package/dist/.setup/side-question-DHPWKgO3.mjs +998 -0
  114. package/dist/.setup/{source-DipMO9hL.mjs → source-63MLSmLJ.mjs} +5 -5
  115. package/dist/.setup/{thread-archive-guard-LKdwQKyr.mjs → thread-archive-guard-BWjSsA92.mjs} +1 -1
  116. package/dist/.setup/{thread-lifecycle-run-C_aYiYqk.mjs → thread-lifecycle-run-zCXYFW8W.mjs} +172 -75
  117. package/dist/.setup/{thread-model-selection-DcVebr8N.mjs → thread-model-selection-DxposL4X.mjs} +9 -9
  118. package/dist/.setup/{thread-ownership-BoUd0i6L.mjs → thread-ownership-Bmk5a2Gu.mjs} +7 -7
  119. package/dist/.setup/{thread-policy-B3wBRNph.mjs → thread-policy-DYtvZ5Ay.mjs} +6 -6
  120. package/dist/.setup/{thread-requests-BgzJwJtS.mjs → thread-requests-BjawdIVV.mjs} +14 -14
  121. package/dist/.setup/{thread-resume-D-3bsr1j.mjs → thread-resume-vBShG3-o.mjs} +6 -6
  122. package/dist/.setup/{transcript-history-projection-DfKcoZCB.mjs → transcript-history-projection-i-FVpyha.mjs} +1 -1
  123. package/dist/.setup/{transcript-mirror-Bee2o6jj.mjs → transcript-mirror-CEQJZlF3.mjs} +6 -9
  124. package/dist/.setup/{transport-stdio-CRWTkKOn.mjs → transport-stdio-Bq160Dhv.mjs} +63 -64
  125. package/dist/.setup/{transport-websocket-DIyPfkHo.mjs → transport-websocket-0YqiI_MH.mjs} +1 -1
  126. package/dist/.setup/{turn-router-DBVMToGo.mjs → turn-router-BGj67FMK.mjs} +2 -2
  127. package/dist/.setup/{upstream-session-fork-p5fwKi7w.mjs → upstream-session-fork-CWKjpdtW.mjs} +46 -219
  128. package/dist/.setup/{usage-C2Kq7oej.mjs → usage-AhrLFxZP.mjs} +4 -4
  129. package/dist/.setup/{usage-limit-error-BQX8RHAd.mjs → usage-limit-error-BdNbGJC3.mjs} +4 -4
  130. package/dist/.setup/{web-search-item-CvokaZOo.mjs → web-search-item-DHVuNSqk.mjs} +1 -1
  131. package/dist/.setup/{web-search-provider.runtime-D89djc7e.mjs → web-search-provider.runtime-Yk6lnJBG.mjs} +3 -3
  132. package/dist/.setup/{workspace-write-sandbox-probe-BDWO2Qkh.mjs → workspace-write-sandbox-probe-DJxOXcF3.mjs} +2 -2
  133. package/dist/api.js +7 -28
  134. package/dist/catalog-page.worker.js +1 -1
  135. package/dist/cli-metadata.js +1 -1
  136. package/dist/client-version-api.js +25 -0
  137. package/dist/doctor-contract-api.js +5 -5
  138. package/dist/harness.js +59 -36
  139. package/dist/index.js +259 -295
  140. package/dist/media-understanding-provider.js +2 -2
  141. package/dist/migration-provider-api.js +1 -2
  142. package/dist/native-session-binding-api.js +1 -2
  143. package/dist/provider-discovery.js +1 -1
  144. package/dist/session-history-worker-entrypoint.js +12 -0
  145. package/dist/session-history-worker-runtime.js +7 -18
  146. package/dist/session-history.worker.js +18 -2
  147. package/openclaw.plugin.json +1 -1
  148. package/package.json +6 -6
  149. package/dist/.setup/attempt-terminal-jO5IMj9K.mjs +0 -2
  150. package/dist/.setup/command-rpc-HIvsy3wS.mjs +0 -247
  151. package/dist/.setup/compact-ClZ7Ar7L.mjs +0 -808
  152. package/dist/.setup/inference-context-DNlGwzwy.mjs +0 -91
  153. package/dist/.setup/managed-binary-BtIjV7yN.mjs +0 -175
  154. package/dist/.setup/native-execution-policy-MXEe7PB3.mjs +0 -75
  155. package/dist/.setup/protocol-CANUwXJ3.mjs +0 -17
  156. package/dist/.setup/side-question-Bz2UQW0l.mjs +0 -826
@@ -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-BNSS6WL4.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";
@@ -81,12 +81,14 @@ function readConversationSource(value) {
81
81
  const sessionId = normalizeOptionalString(value?.sessionId);
82
82
  const threadId = normalizeOptionalString(value?.threadId);
83
83
  const sessionKey = normalizeOptionalString(value?.sessionKey);
84
+ const storePath = normalizeOptionalString(value?.storePath);
84
85
  if (!agentId || !sessionId || !threadId) return;
85
86
  return {
86
87
  agentId,
87
88
  sessionId,
88
89
  threadId,
89
- ...sessionKey ? { sessionKey } : {}
90
+ ...sessionKey ? { sessionKey } : {},
91
+ ...storePath ? { storePath } : {}
90
92
  };
91
93
  }
92
94
  /** Doctor/runtime v1 decoder key for shipped conversation bindings that stored a file locator. */
@@ -1,13 +1,13 @@
1
- import { r as bindingStoreKey } from "./session-binding-record-DU_0biMD.mjs";
1
+ import { r as bindingStoreKey } from "./session-binding-record-C_THntMe.mjs";
2
2
  import { r as isCodexFastServiceTier } from "./config-utils-DN_YT7dE.mjs";
3
- import { o as formatCodexDisplayText } from "./command-formatters-xW9KpoSZ.mjs";
4
- import "./config-C1YVVLEA.mjs";
5
- import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-CgHQ8Vot.mjs";
6
- import "./session-binding-JEHNMPsr.mjs";
7
- import { a as resolveCodexBindingModelProviderFallback, r as resolveCodexAppServerRequestModelSelection } from "./thread-model-selection-DcVebr8N.mjs";
3
+ import { o as formatCodexDisplayText } from "./command-formatters-B_7-QZ1c.mjs";
4
+ import "./config-BfrAlTMT.mjs";
5
+ import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-auwzSwwy.mjs";
6
+ import "./session-binding-BgsWcbdY.mjs";
7
+ import { a as resolveCodexBindingModelProviderFallback, r as resolveCodexAppServerRequestModelSelection } from "./thread-model-selection-DxposL4X.mjs";
8
8
  import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
9
- import { getSessionEntry, patchSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
10
- import { ModelSelectionLockedError, applyModelOverrideWithAuthProfileCompatibility } from "openclaw/plugin-sdk/model-session-runtime";
9
+ import { getSessionEntryAsync, prepareSessionEntryPatch, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
10
+ import { ModelSelectionLockedError, applyModelOverrideWithAuthProfileCompatibility, prepareAuthProfileProvider } from "openclaw/plugin-sdk/model-session-runtime";
11
11
  //#region extensions/codex/src/conversation-control.ts
12
12
  const CODEX_CONVERSATION_CONTROL_STATE = Symbol.for("openclaw.codex.conversationControl");
13
13
  function getActiveTurns() {
@@ -41,7 +41,12 @@ async function stopCodexConversationTurn(params) {
41
41
  turnId: active.turnId
42
42
  }, {
43
43
  timeoutMs: active.requestTimeoutMs,
44
- assertCurrent: params.assertCurrent
44
+ assertCurrent: params.assertCurrent,
45
+ withCurrent: async (write) => {
46
+ await params.assertCurrentAsync?.();
47
+ params.assertCurrent();
48
+ write();
49
+ }
45
50
  });
46
51
  return {
47
52
  stopped: true,
@@ -73,7 +78,12 @@ async function steerCodexConversationTurn(params) {
73
78
  }]
74
79
  }, {
75
80
  timeoutMs: active.requestTimeoutMs,
76
- assertCurrent: params.assertCurrent
81
+ assertCurrent: params.assertCurrent,
82
+ withCurrent: async (write) => {
83
+ await params.assertCurrentAsync?.();
84
+ params.assertCurrent();
85
+ write();
86
+ }
77
87
  });
78
88
  return {
79
89
  steered: true,
@@ -82,6 +92,7 @@ async function steerCodexConversationTurn(params) {
82
92
  }
83
93
  async function setCodexConversationModel(input) {
84
94
  const params = { ...input };
95
+ await params.assertCurrentAsync?.();
85
96
  const model = params.model.trim();
86
97
  if (!model) return "Usage: /codex model <model>";
87
98
  const lookup = buildCodexConversationAgentLookup(params);
@@ -89,7 +100,7 @@ async function setCodexConversationModel(input) {
89
100
  const assertCommitAllowed = params.assertCommitAllowed ?? params.assertCurrent;
90
101
  const binding = requirePreparedThreadBinding(params.binding);
91
102
  if (binding.connectionScope === "supervision") throw new ModelSelectionLockedError();
92
- const modelProvider = resolveThreadRequestModelProvider({
103
+ const modelProvider = await resolveThreadRequestModelProvider({
93
104
  authProfileId: binding.authProfileId,
94
105
  modelProvider: resolveCodexBindingModelProviderFallback({
95
106
  bindingModel: binding.model,
@@ -98,13 +109,13 @@ async function setCodexConversationModel(input) {
98
109
  }),
99
110
  ...lookup
100
111
  });
101
- const modelSelection = resolveCodexAppServerRequestModelSelection({
112
+ const modelSelection = await resolveCodexAppServerRequestModelSelection({
102
113
  model,
103
114
  modelProvider,
104
115
  authProfileId: binding.authProfileId,
105
116
  ...lookup
106
117
  });
107
- const nextModelProvider = normalizeCodexAppServerBindingModelProvider({
118
+ const nextModelProvider = await normalizeCodexAppServerBindingModelProvider({
108
119
  authProfileId: binding.authProfileId,
109
120
  modelProvider: modelSelection.modelProvider,
110
121
  ...lookup
@@ -117,19 +128,32 @@ async function setCodexConversationModel(input) {
117
128
  } } : {};
118
129
  const identity = params.identity;
119
130
  if (identity.kind === "session" && identity.sessionKey) {
120
- if (!await patchSessionEntry({
131
+ if (!await prepareSessionEntryPatch({
121
132
  agentId: identity.agentId,
122
133
  storePath: params.storePath ?? resolveStorePath(params.config?.session?.store, { agentId: identity.agentId }),
123
134
  sessionKey: identity.sessionKey,
124
135
  requireWriteSuccess: true,
125
136
  replaceEntry: true,
126
- assertCommitAllowed,
127
- update: (entry) => {
137
+ authority: params.assertCommitAllowed ? {
138
+ kind: "source",
139
+ source: params.assertCommitAllowed
140
+ } : {
141
+ kind: "host",
142
+ assertCurrent: params.assertCurrent
143
+ },
144
+ prepare: async (entry) => {
128
145
  if (entry.sessionId !== identity.sessionId) throw new Error("Codex session changed while applying the model selection.");
146
+ const agentDir = params.agentDir ?? resolveAgentDir(params.config ?? {}, identity.agentId);
147
+ const profileId = entry.authProfileOverride?.trim();
148
+ const recordedProvider = profileId ? await prepareAuthProfileProvider({
149
+ agentDir,
150
+ profileId
151
+ }) : void 0;
129
152
  applyModelOverrideWithAuthProfileCompatibility({
130
153
  cfg: params.config ?? {},
131
- agentDir: params.agentDir ?? resolveAgentDir(params.config ?? {}, identity.agentId),
154
+ agentDir,
132
155
  entry,
156
+ recordedProvider,
133
157
  currentProvider: binding.modelProvider ?? "openai",
134
158
  selection: {
135
159
  provider: nextModelProvider ?? "openai",
@@ -160,7 +184,7 @@ async function setCodexConversationPermissions(params) {
160
184
  params.assertCurrent();
161
185
  const storePath = params.storePath ?? resolveStorePath(params.config?.session?.store, { agentId: params.session.agentId });
162
186
  if (!params.mode) {
163
- const entry = getSessionEntry({
187
+ const entry = await getSessionEntryAsync({
164
188
  agentId: params.session.agentId,
165
189
  hydrateSkillPromptRefs: false,
166
190
  readConsistency: "latest",
@@ -171,14 +195,20 @@ async function setCodexConversationPermissions(params) {
171
195
  if (entry?.sessionId !== params.session.sessionId) throw new Error("Codex session changed while reading the permission mode.");
172
196
  return `Codex permissions: ${formatPermissionsMode(entry.permissionMode)}.`;
173
197
  }
174
- if (!await patchSessionEntry({
198
+ if (!await prepareSessionEntryPatch({
175
199
  agentId: params.session.agentId,
176
200
  storePath,
177
201
  sessionKey: params.session.sessionKey,
178
202
  requireWriteSuccess: true,
179
203
  replaceEntry: true,
180
- assertCommitAllowed: params.assertCurrent,
181
- update: (entry) => {
204
+ authority: params.sourceAuthority ? {
205
+ kind: "source",
206
+ source: params.sourceAuthority
207
+ } : {
208
+ kind: "host",
209
+ assertCurrent: params.assertCurrent
210
+ },
211
+ prepare: (entry) => {
182
212
  if (entry.sessionId !== params.session.sessionId) throw new Error("Codex session changed while applying the permission mode.");
183
213
  entry.permissionMode = params.mode === "yolo" ? "full" : "guarded";
184
214
  return entry;
@@ -222,10 +252,10 @@ function buildCodexConversationAgentLookup(params) {
222
252
  ...params.config ? { config: params.config } : {}
223
253
  };
224
254
  }
225
- function resolveThreadRequestModelProvider(params) {
255
+ async function resolveThreadRequestModelProvider(params) {
226
256
  const modelProvider = params.modelProvider?.trim();
227
257
  if (!modelProvider || modelProvider.toLowerCase() === "codex") return;
228
- if (isCodexAppServerNativeAuthProfile(params) && modelProvider.toLowerCase() === "openai") return;
258
+ if (modelProvider.toLowerCase() === "openai" && await isCodexAppServerNativeAuthProfile(params)) return;
229
259
  return modelProvider.toLowerCase() === "openai" ? "openai" : modelProvider;
230
260
  }
231
261
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
2
- import { t as attemptTerminal } from "./attempt-terminal-jO5IMj9K.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
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";
2
+ import { a as resolveCodexAppServerStartOptionsForAgent } from "./config-options-DMFZkd3X.mjs";
3
+ import { a as isManagedCodexDesktopCommand, u as resolveManagedCodexAppServerStartOptions } from "./managed-binary-DbKvGXKl.mjs";
4
+ import "./config-BfrAlTMT.mjs";
5
+ import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.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";
@@ -48,7 +48,10 @@ async function resolveCodexDoctorStartOptions(params) {
48
48
  managedCommandOrder: "package-only"
49
49
  });
50
50
  for (const candidate of candidates) {
51
- const resolved = await resolveStartOptions(candidate, { pluginRoot: params.pluginRoot });
51
+ const resolved = await resolveStartOptions(candidate, {
52
+ pluginRoot: params.pluginRoot,
53
+ preferInstalled: false
54
+ });
52
55
  if (!isDesktopCommand(resolved.command)) return {
53
56
  status: "selected",
54
57
  start: resolved