@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,24 +1,25 @@
1
- import { m as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced } from "./session-binding-record-BGoz8wOK.mjs";
2
- import { y as readCodexRequirementsToml } from "./config-security-BEReZ6go.mjs";
3
- import { d as readCodexPluginConfig } from "./config-parsing-CcB9iPoq.mjs";
4
1
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
5
- import { d as readCodexEffectiveConfig, n as codexSandboxPolicyForTurn } from "./config-options-BvaRs51b.mjs";
6
- import { o as resolveCodexDefaultWorkspaceDir } from "./conversation-binding-data-CrcyZk6O.mjs";
7
- import { n as projectBoundedCodexVisibleSessionHistory } from "./transcript-history-projection-ZZpkFkJ_.mjs";
8
- import { n as resolveOpenClawExecPolicyForCodexAppServer, t as canUseCodexModelBackedApprovalsReviewerForModel } from "./config-BoTP_mrL.mjs";
9
- import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-C8Rw1m1m.mjs";
10
- import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-WqZtZfXN.mjs";
11
- import { I as hasCodexAppServerLiveThread, N as consumeCodexAppServerLiveThread, R as isCodexAppServerClientRuntimeLive, U as releaseCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientByInstanceId, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease, x as withLeasedCodexAppServerClientStartSelectionRetry, z as isCodexAppServerLiveThreadClaimed } from "./shared-client-DA4VR4Eb.mjs";
12
- import { h as CodexThreadDirectInputError, l as isCodexAppServerOverloadError, s as isCodexAppServerIndeterminateRequestCancellationError, v as assertCodexThreadAcceptsDirectInput, x as assertCodexThreadStartResponse } from "./client-Cs08OXVQ.mjs";
13
- import { c as isCodexAppServerUnsafeSubscriptionError, h as getCodexAppServerTurnRouter, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort, v as isCodexNotificationForTurn } from "./attempt-client-cleanup-CEv1cKwF.mjs";
14
- import { _ as resolveCodexAppServerRequestModelSelection, _t as buildDisabledAppsConfigPatch, b as buildCodexProjectDocThreadConfig, h as CODEX_NATIVE_PERSONALITY_NONE, xt as mergeCodexThreadConfigs } from "./thread-requests-BLvGkP2R.mjs";
15
- import "./thread-lifecycle-B3mfz1TG.mjs";
16
- import "./session-binding-Cm0apEbd.mjs";
17
- import { t as resumeCodexAppServerThread } from "./thread-resume-DIBXwOpE.mjs";
18
- import { a as rollbackCodexAppServerBindingSubscription, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, s as withExclusiveCodexAppServerThread, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-DcTtAcXj.mjs";
19
- import { a as resolveCodexAppServerForModelProvider, i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-BI1QK_98.mjs";
20
- import { u as trackCodexConversationActiveTurn } from "./conversation-control-uK9Jomlc.mjs";
21
- import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
2
+ import { n as assertCodexBindingMayBeReplaced, v as sessionBindingIdentity } from "./session-binding-record-Oe9L-CNY.mjs";
3
+ import { m as readCodexRequirementsToml } from "./config-security-CE-FcGw9.mjs";
4
+ import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
5
+ import { d as readCodexEffectiveConfig, n as codexSandboxPolicyForTurn } from "./config-options-CzyWLTJt.mjs";
6
+ import { l as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-DJIgqgMw.mjs";
7
+ import { o as resolveCodexDefaultWorkspaceDir } from "./conversation-binding-data-C746z5Pn.mjs";
8
+ import { n as projectBoundedCodexVisibleSessionHistory } from "./transcript-history-projection-DRSifI-1.mjs";
9
+ import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-DKhXquav.mjs";
10
+ import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-C0NbLms1.mjs";
11
+ import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-B0okYl2D.mjs";
12
+ import { B as isCodexAppServerClientRuntimeLive, F as consumeCodexAppServerLiveThread, G as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease } from "./shared-client-DqyTMYug.mjs";
13
+ import { h as CodexThreadDirectInputError, l as isCodexAppServerOverloadError, s as isCodexAppServerIndeterminateRequestCancellationError, v as assertCodexThreadAcceptsDirectInput, x as assertCodexThreadStartResponse } from "./client-N0JpgSzF.mjs";
14
+ import { c as isCodexAppServerUnsafeSubscriptionError, h as getCodexAppServerTurnRouter, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort, v as isCodexNotificationForTurn } from "./attempt-client-cleanup-DOP-cW5j.mjs";
15
+ import { S as buildCodexProjectDocThreadConfig, St as mergeCodexThreadConfigs, g as CODEX_NATIVE_PERSONALITY_NONE, v as resolveCodexAppServerRequestModelSelection, vt as buildDisabledAppsConfigPatch } from "./thread-requests-B_bRnMGN.mjs";
16
+ import "./thread-lifecycle-DPflntEJ.mjs";
17
+ import "./session-binding-DGCYAfvD.mjs";
18
+ import { t as resumeCodexAppServerThread } from "./thread-resume-CdDaoc7T.mjs";
19
+ import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-roNP0l1c.mjs";
20
+ import { a as resolveCodexAppServerForModelProvider, i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-Ci_fVX6y.mjs";
21
+ import { u as trackCodexConversationActiveTurn } from "./conversation-control-CEP8X5JC.mjs";
22
+ import { asOptionalRecord, normalizeOptionalString, readNonEmptyStringPreservingWhitespace } from "openclaw/plugin-sdk/string-coerce-runtime";
22
23
  import { resolveSessionAgentIdsStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
23
24
  import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
24
25
  import path from "node:path";
@@ -82,16 +83,24 @@ async function resolveConversationAppServerRuntime(params) {
82
83
  env: process.env,
83
84
  agentDir: params.agentDir
84
85
  });
86
+ const runtime = applyCodexSessionPermissionPolicy({
87
+ appServer: configuredRuntime,
88
+ permissionMode,
89
+ sessionRoot,
90
+ defaultRoot: agentWorkspaceDir,
91
+ pluginConfig: readCodexPluginConfig(params.pluginConfig),
92
+ canUseAutoReview,
93
+ requirementsToml: readCodexRequirementsToml({}),
94
+ execMode: execPolicy.mode
95
+ });
85
96
  return {
86
- runtime: applyCodexSessionPermissionPolicy({
87
- appServer: configuredRuntime,
88
- permissionMode,
89
- sessionRoot,
90
- defaultRoot: agentWorkspaceDir,
91
- pluginConfig: readCodexPluginConfig(params.pluginConfig),
92
- canUseAutoReview,
93
- requirementsToml: readCodexRequirementsToml({}),
94
- execMode: execPolicy.mode
97
+ runtime: resolveCodexAppServerForModelProvider({
98
+ appServer: runtime,
99
+ provider: params.modelProvider,
100
+ model: params.model,
101
+ config: params.config,
102
+ env: process.env,
103
+ agentDir: params.agentDir
95
104
  }),
96
105
  workspaceDir: resolveCodexSessionPermissionCwd({
97
106
  permissionMode,
@@ -113,12 +122,12 @@ async function resolveThreadBindingRuntime(params) {
113
122
  modelProvider: params.modelProvider,
114
123
  ...agentLookup
115
124
  });
116
- const modelSelection = resolveOptionalThreadRequestModelSelection({
125
+ const modelSelection = params.model?.trim() ? resolveCodexAppServerRequestModelSelection({
117
126
  model: params.model,
118
127
  modelProvider,
119
128
  authProfileId: params.authProfileId,
120
129
  ...agentLookup
121
- });
130
+ }) : void 0;
122
131
  const reviewerModelProvider = resolveModelBackedReviewerPolicyProvider({
123
132
  authProfileId: params.authProfileId,
124
133
  modelProvider: params.modelProvider,
@@ -135,15 +144,7 @@ async function resolveThreadBindingRuntime(params) {
135
144
  model: params.model,
136
145
  agentDir: params.agentDir
137
146
  });
138
- const modelScopedRuntime = resolveCodexAppServerForModelProvider({
139
- appServer: runtime,
140
- provider: reviewerModelProvider,
141
- model: params.model,
142
- config: params.config,
143
- env: process.env,
144
- agentDir: params.agentDir
145
- });
146
- assertNativeConversationApprovalPolicySupported(modelScopedRuntime);
147
+ assertNativeConversationApprovalPolicySupported(runtime);
147
148
  const clientOptions = {
148
149
  startOptions: runtime.start,
149
150
  timeoutMs: runtime.requestTimeoutMs,
@@ -151,7 +152,7 @@ async function resolveThreadBindingRuntime(params) {
151
152
  ...agentLookup
152
153
  };
153
154
  return {
154
- runtime: modelScopedRuntime,
155
+ runtime,
155
156
  workspaceDir,
156
157
  agentLookup,
157
158
  model: modelSelection?.model,
@@ -160,6 +161,8 @@ async function resolveThreadBindingRuntime(params) {
160
161
  };
161
162
  }
162
163
  function buildConversationThreadRequest(resolved, serviceTier, effectiveNativeConfig) {
164
+ const { runtime } = resolved;
165
+ const config = buildCodexProjectDocThreadConfig(mergeCodexThreadConfigs(runtime.networkProxy?.configPatch, buildDisabledAppsConfigPatch()), effectiveNativeConfig);
163
166
  return {
164
167
  cwd: resolved.workspaceDir,
165
168
  ...resolved.model ? { model: resolved.model } : {},
@@ -168,7 +171,10 @@ function buildConversationThreadRequest(resolved, serviceTier, effectiveNativeCo
168
171
  approvalPolicy: resolved.runtime.approvalPolicy,
169
172
  approvalsReviewer: resolved.runtime.approvalsReviewer,
170
173
  ...resolved.runtime.sessionRoot ? { runtimeWorkspaceRoots: [resolved.runtime.sessionRoot] } : {},
171
- ...codexConversationSandboxOrPermissions(resolved.runtime, resolved.runtime.sandbox, effectiveNativeConfig),
174
+ ...runtime.networkProxy ? { config } : {
175
+ sandbox: runtime.sandbox,
176
+ config
177
+ },
172
178
  ...serviceTier ? { serviceTier } : {}
173
179
  };
174
180
  }
@@ -177,14 +183,6 @@ async function buildConversationThreadRequestForClient(client, resolved, service
177
183
  requestOptions();
178
184
  return buildConversationThreadRequest(resolved, serviceTier, effectiveConfig);
179
185
  }
180
- function codexConversationSandboxOrPermissions(runtime, sandbox, effectiveNativeConfig) {
181
- const networkProxy = runtime.networkProxy;
182
- const config = buildCodexProjectDocThreadConfig(mergeCodexThreadConfigs(networkProxy?.configPatch, buildDisabledAppsConfigPatch()), effectiveNativeConfig);
183
- return networkProxy ? { config } : {
184
- sandbox,
185
- config
186
- };
187
- }
188
186
  async function writeThreadBindingFromResponse(params, resolved, client, response, requestOptions) {
189
187
  let retained = false;
190
188
  let sameOwner = false;
@@ -204,7 +202,10 @@ async function writeThreadBindingFromResponse(params, resolved, client, response
204
202
  }
205
203
  if (current && !sameOwner) {
206
204
  const { assertCurrent } = requestOptions();
207
- await releaseCodexAppServerBindingSubscription(current, { assertCurrent });
205
+ await releaseCodexAppServerBindingSubscription(current, {
206
+ assertCurrent,
207
+ retainedClientId: client.getInstanceId()
208
+ });
208
209
  }
209
210
  requestOptions();
210
211
  if (!await params.bindingStore.mutate(params.identity, {
@@ -375,7 +376,7 @@ async function projectConversationSourceHistory(source, target, config) {
375
376
  });
376
377
  const history = projectBoundedCodexVisibleSessionHistory(entries);
377
378
  if (history.length === 0) return;
378
- const clientLease = retainSharedCodexAppServerClientByInstanceId(target.clientId);
379
+ const clientLease = await retainSharedCodexAppServerClientByInstanceId(target.clientId);
379
380
  if (!clientLease) throw new Error("Codex conversation source history lost its bound client owner.");
380
381
  try {
381
382
  await clientLease.client.request("thread/inject_items", {
@@ -383,7 +384,7 @@ async function projectConversationSourceHistory(source, target, config) {
383
384
  items: history
384
385
  });
385
386
  } finally {
386
- clientLease.release();
387
+ await clientLease.release();
387
388
  }
388
389
  }
389
390
  function resolveThreadRequestModelProvider(params) {
@@ -392,16 +393,6 @@ function resolveThreadRequestModelProvider(params) {
392
393
  if (isCodexAppServerNativeAuthProfile(params) && modelProvider.toLowerCase() === "openai") return;
393
394
  return modelProvider.toLowerCase() === "openai" ? "openai" : modelProvider;
394
395
  }
395
- function resolveOptionalThreadRequestModelSelection(params) {
396
- if (!params.model?.trim()) return;
397
- return resolveCodexAppServerRequestModelSelection({
398
- model: params.model,
399
- modelProvider: params.modelProvider,
400
- authProfileId: params.authProfileId,
401
- agentDir: params.agentDir,
402
- config: params.config
403
- });
404
- }
405
396
  function resolveModelBackedReviewerPolicyProvider(params) {
406
397
  const modelProvider = params.modelProvider?.trim();
407
398
  if (modelProvider && modelProvider.toLowerCase() !== "codex") return modelProvider.toLowerCase() === "openai" ? "openai" : modelProvider;
@@ -454,7 +445,7 @@ function createCodexConversationTurnCollector(threadId) {
454
445
  if (!params || !turnId || !isCodexNotificationForTurn(params, threadId, turnId)) return;
455
446
  if (notification.method === "item/agentMessage/delta") {
456
447
  const itemId = normalizeOptionalString(params.itemId) ?? "assistant";
457
- const delta = readTextString(params, "delta");
448
+ const delta = readNonEmptyStringPreservingWhitespace(params.delta);
458
449
  if (!delta) return;
459
450
  assistantTextByItem.set(itemId, `${assistantTextByItem.get(itemId) ?? ""}${delta}`);
460
451
  return;
@@ -509,11 +500,7 @@ function createCodexConversationTurnCollector(threadId) {
509
500
  };
510
501
  }
511
502
  function readAssistantReplyText(item) {
512
- return item.phase === "commentary" || item.delivery === "async" ? void 0 : readTextString(item, "text");
513
- }
514
- function readTextString(record, key) {
515
- const value = record?.[key];
516
- return typeof value === "string" && value.length > 0 ? value : void 0;
503
+ return item.phase === "commentary" || item.delivery === "async" ? void 0 : readNonEmptyStringPreservingWhitespace(item.text);
517
504
  }
518
505
  //#endregion
519
506
  //#region extensions/codex/src/conversation-turn-input.ts
@@ -610,23 +597,13 @@ async function runBoundTurn(params) {
610
597
  model: binding.model,
611
598
  agentDir: params.data.agentDir
612
599
  });
613
- const modelScopedRuntime = resolveCodexAppServerForModelProvider({
614
- appServer: runtime,
615
- provider: reviewerModelProvider,
616
- model: binding.model,
617
- config: params.config,
618
- env: process.env,
619
- agentDir: params.data.agentDir
620
- });
621
- const sessionRoot = modelScopedRuntime.sessionRoot;
622
- const approvalPolicy = modelScopedRuntime.approvalPolicy;
623
- const sandbox = modelScopedRuntime.sandbox;
624
- const permissionProfile = modelScopedRuntime.networkProxy?.profileName;
625
- const networkProxyConfigFingerprint = modelScopedRuntime.networkProxy?.configFingerprint;
600
+ const { sessionRoot, approvalPolicy, sandbox } = runtime;
601
+ const permissionProfile = runtime.networkProxy?.profileName;
602
+ const networkProxyConfigFingerprint = runtime.networkProxy?.configFingerprint;
626
603
  const networkProxyBindingChanged = binding.networkProxyProfileName !== permissionProfile || binding.networkProxyConfigFingerprint !== networkProxyConfigFingerprint;
627
604
  const serviceTier = binding.serviceTier ?? runtime.serviceTier;
628
605
  let useStickyNetworkProfile = permissionProfile !== void 0 && binding.networkProxyProfileName === permissionProfile && binding.networkProxyConfigFingerprint === networkProxyConfigFingerprint;
629
- assertNativeConversationApprovalPolicySupported(modelScopedRuntime);
606
+ assertNativeConversationApprovalPolicySupported(runtime);
630
607
  const modelSelection = binding.model ? resolveCodexAppServerRequestModelSelection({
631
608
  model: binding.model,
632
609
  modelProvider: binding.modelProvider,
@@ -634,7 +611,7 @@ async function runBoundTurn(params) {
634
611
  ...agentLookup
635
612
  }) : void 0;
636
613
  const threadRequestRuntime = {
637
- runtime: modelScopedRuntime,
614
+ runtime,
638
615
  workspaceDir,
639
616
  ...modelSelection
640
617
  };
@@ -703,7 +680,7 @@ async function runBoundTurn(params) {
703
680
  throw error;
704
681
  }
705
682
  liveThreadOwnership = void 0;
706
- } else if (binding.threadId !== threadId) await releaseCodexAppServerBindingSubscription(binding);
683
+ } else if (binding.threadId !== threadId) await releaseCodexAppServerBindingSubscription(binding, { retainedClientId: client.getInstanceId() });
707
684
  if (!await params.bindingStore.mutate(identity, {
708
685
  kind: "set",
709
686
  binding: {
@@ -718,14 +695,14 @@ async function runBoundTurn(params) {
718
695
  ...agentLookup
719
696
  }),
720
697
  serviceTier: serviceTier ?? void 0,
721
- networkProxyProfileName: modelScopedRuntime.networkProxy?.profileName,
722
- networkProxyConfigFingerprint: modelScopedRuntime.networkProxy?.configFingerprint,
698
+ networkProxyProfileName: runtime.networkProxy?.profileName,
699
+ networkProxyConfigFingerprint: runtime.networkProxy?.configFingerprint,
723
700
  conversationStartId: binding.conversationStartId,
724
701
  conversationSourceTransferComplete: binding.conversationSourceTransferComplete,
725
702
  historyCoveredThrough: binding.historyCoveredThrough
726
703
  }
727
704
  })) throw new Error("Codex conversation binding changed while rotating its thread.");
728
- useStickyNetworkProfile = modelScopedRuntime.networkProxy !== void 0;
705
+ useStickyNetworkProfile = runtime.networkProxy !== void 0;
729
706
  } else if (binding.clientId !== client.getInstanceId() || isCodexAppServerClientRuntimeLive(client) && !params.incognito && !liveThreadOwnership) {
730
707
  if (binding.clientId === client.getInstanceId()) await assertResumeInputAllowed();
731
708
  const response = await withLeasedCodexAppServerClientStartSelectionRetry({
@@ -759,7 +736,7 @@ async function runBoundTurn(params) {
759
736
  if (!isSameCodexAppServerThreadOwner(binding, {
760
737
  threadId,
761
738
  clientId: client.getInstanceId()
762
- })) await releaseCodexAppServerBindingSubscription(binding);
739
+ })) await releaseCodexAppServerBindingSubscription(binding, { retainedClientId: client.getInstanceId() });
763
740
  if (!await params.bindingStore.mutate(identity, {
764
741
  kind: "patch",
765
742
  threadId: binding.threadId,
@@ -790,7 +767,7 @@ async function runBoundTurn(params) {
790
767
  cwd: workspaceDir,
791
768
  ...sessionRoot ? { runtimeWorkspaceRoots: [sessionRoot] } : {},
792
769
  approvalPolicy,
793
- approvalsReviewer: modelScopedRuntime.approvalsReviewer,
770
+ approvalsReviewer: runtime.approvalsReviewer,
794
771
  ...useStickyNetworkProfile ? {} : { sandboxPolicy: codexSandboxPolicyForTurn(sandbox, sessionRoot ?? workspaceDir) },
795
772
  ...modelSelection?.model ? { model: modelSelection.model } : {},
796
773
  personality: CODEX_NATIVE_PERSONALITY_NONE,
@@ -1,4 +1,4 @@
1
- import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
1
+ import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
2
2
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import process from "node:process";
@@ -42,9 +42,8 @@ function createCodexCliNodeConversationBindingData(params) {
42
42
  };
43
43
  }
44
44
  function readCodexConversationBindingData(binding) {
45
- const data = binding?.data;
46
- if (!data || typeof data !== "object" || Array.isArray(data)) return;
47
- return readCodexConversationBindingDataRecord(data);
45
+ const data = asOptionalRecord(binding?.data);
46
+ return data ? readCodexConversationBindingDataRecord(data) : void 0;
48
47
  }
49
48
  function readCodexConversationBindingDataRecord(data) {
50
49
  if (data.kind === "codex-cli-node-session") {
@@ -54,8 +53,8 @@ function readCodexConversationBindingDataRecord(data) {
54
53
  version: CLI_BINDING_DATA_VERSION,
55
54
  nodeId: data.nodeId.trim(),
56
55
  sessionId: data.sessionId.trim(),
57
- agentId: typeof data.agentId === "string" && data.agentId.trim() ? data.agentId.trim() : void 0,
58
- cwd: typeof data.cwd === "string" && data.cwd.trim() ? data.cwd.trim() : void 0
56
+ agentId: normalizeOptionalString(data.agentId),
57
+ cwd: normalizeOptionalString(data.cwd)
59
58
  };
60
59
  }
61
60
  if (data.kind !== "codex-app-server-session") return;
@@ -69,8 +68,8 @@ function readCodexConversationBindingDataRecord(data) {
69
68
  version: APP_SERVER_BINDING_DATA_VERSION,
70
69
  bindingId,
71
70
  workspaceDir: typeof data.workspaceDir === "string" && data.workspaceDir.trim() ? data.workspaceDir : process.cwd(),
72
- agentId: typeof data.agentId === "string" && data.agentId.trim() ? data.agentId.trim() : void 0,
73
- agentDir: typeof data.agentDir === "string" && data.agentDir.trim() ? data.agentDir.trim() : void 0,
71
+ agentId: normalizeOptionalString(data.agentId),
72
+ agentDir: normalizeOptionalString(data.agentDir),
74
73
  ...source ? { source } : {},
75
74
  ...start ? { start } : {},
76
75
  ...legacyBinding ? { legacyBinding: true } : {}
@@ -98,10 +97,7 @@ function resolveCodexDefaultWorkspaceDir(pluginConfig) {
98
97
  return normalizeOptionalString(appServer?.defaultWorkspaceDir) ?? process.cwd();
99
98
  }
100
99
  function readConversationStart(value) {
101
- const read = (key) => {
102
- const candidate = value?.[key];
103
- return typeof candidate === "string" && candidate.trim() ? candidate.trim() : void 0;
104
- };
100
+ const read = (key) => normalizeOptionalString(value?.[key]);
105
101
  const start = {
106
102
  id: read("id"),
107
103
  threadId: read("threadId"),
@@ -1,11 +1,11 @@
1
- import { n as isCodexFastServiceTier } from "./config-utils-DujwEnhg.mjs";
2
- import { r as bindingStoreKey } from "./session-binding-record-BGoz8wOK.mjs";
3
- import { o as formatCodexDisplayText } from "./command-formatters-Bmqvr9tO.mjs";
4
- import "./config-BoTP_mrL.mjs";
5
- import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-WqZtZfXN.mjs";
6
- import { _ as resolveCodexAppServerRequestModelSelection, y as resolveCodexBindingModelProviderFallback } from "./thread-requests-BLvGkP2R.mjs";
7
- import "./thread-lifecycle-B3mfz1TG.mjs";
8
- import "./session-binding-Cm0apEbd.mjs";
1
+ import { n as isCodexFastServiceTier } from "./config-utils-D0CXecki.mjs";
2
+ import { r as bindingStoreKey } from "./session-binding-record-Oe9L-CNY.mjs";
3
+ import { o as formatCodexDisplayText } from "./command-formatters-R3ckE3Co.mjs";
4
+ import "./config-DKhXquav.mjs";
5
+ import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-B0okYl2D.mjs";
6
+ import { b as resolveCodexBindingModelProviderFallback, v as resolveCodexAppServerRequestModelSelection } from "./thread-requests-B_bRnMGN.mjs";
7
+ import "./thread-lifecycle-DPflntEJ.mjs";
8
+ import "./session-binding-DGCYAfvD.mjs";
9
9
  import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
10
10
  import { getSessionEntry, patchSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
11
11
  import { ModelSelectionLockedError, applyModelOverrideWithAuthProfileCompatibility } from "openclaw/plugin-sdk/model-session-runtime";
@@ -1,4 +1,4 @@
1
- import { d as readCodexPluginConfig } from "./config-parsing-CcB9iPoq.mjs";
1
+ import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
2
2
  import { t as attemptTerminal } from "./attempt-terminal-gZrxQ35N.mjs";
3
3
  //#region extensions/codex/src/app-server/cyber-failover.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { t as emitCodexAppServerEvent } from "./run-attempt-lifecycle-B7JbY4-F.mjs";
1
+ import { t as emitCodexAppServerEvent } from "./run-attempt-lifecycle-C-6O3Exn.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, {