@openclaw/codex 2026.10.6 → 2026.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.md +2 -0
  2. package/dist/.setup/{account-usage-runtime-E3SrjJVn.mjs → account-usage-runtime-lUj2JqSj.mjs} +3 -3
  3. package/dist/.setup/{app-server-policy-V8zuN8q_.mjs → app-server-policy-CF-JwGUD.mjs} +1 -1
  4. package/dist/.setup/{apply-C3s-1Zxe.mjs → apply-DjTVE_db.mjs} +8 -8
  5. package/dist/.setup/{attempt-client-cleanup-BVww-ct8.mjs → attempt-client-cleanup-BmPBqnW3.mjs} +5 -5
  6. package/dist/.setup/{attempt-workspace-context-BkA0W8Jy.mjs → attempt-workspace-context-EAeScFrg.mjs} +1 -1
  7. package/dist/.setup/{auth-binding-BFTkrP_b.mjs → auth-binding-D1TJwzWf.mjs} +1 -1
  8. package/dist/.setup/{auth-cache-key-CXK7tmkb.mjs → auth-cache-key-8VTsPn2f.mjs} +3 -3
  9. package/dist/.setup/{binding-connection-C0t9TBX_.mjs → binding-connection-BIo1-hoT.mjs} +2 -2
  10. package/dist/.setup/{binding-connection.runtime-Wdm5G_bw.mjs → binding-connection.runtime-C5yDsKBQ.mjs} +1 -1
  11. package/dist/.setup/{bounded-turn-vdpL2efh.mjs → bounded-turn-DByEneJg.mjs} +11 -11
  12. package/dist/.setup/{bounded-turn-isolation-CIQJykuM.mjs → bounded-turn-isolation-BRNgfoRl.mjs} +2 -2
  13. package/dist/.setup/{build-state-DPMC9C_U.mjs → build-state-vxQdf_74.mjs} +1 -1
  14. package/dist/.setup/{client-Div-zqnz.mjs → client-BTWv2cJe.mjs} +8 -8
  15. package/dist/.setup/{client-catalog-response-Dtob_lVt.mjs → client-catalog-response-CEZTmNz3.mjs} +1 -1
  16. package/dist/.setup/{command-dispatch-ByO36LmS.mjs → command-dispatch-rxpyy4f6.mjs} +1 -1
  17. package/dist/.setup/{command-handlers-CJqo6LZS.mjs → command-handlers-D6utyBA8.mjs} +22 -22
  18. package/dist/.setup/{command-rpc-Co0UzT-T.mjs → command-rpc-CloxIlVK.mjs} +11 -11
  19. package/dist/.setup/{compact-CzNBg4cQ.mjs → compact-CIJFn4Bi.mjs} +13 -13
  20. package/dist/.setup/{computer-use-BcDrQlxi.mjs → computer-use-vLGHqSOu.mjs} +7 -7
  21. package/dist/.setup/{config-LQemoqTL.mjs → config-d0gOFYEk.mjs} +2 -2
  22. package/dist/.setup/{config-runtime-DGB1-VbB.mjs → config-runtime-BUH-IDVE.mjs} +1 -1
  23. package/dist/.setup/{conversation-binding-Dcv7_rs-.mjs → conversation-binding-BUw0IM5Z.mjs} +15 -15
  24. package/dist/.setup/{conversation-binding-data-GRGSgAro.mjs → conversation-binding-data-BqzGWkPW.mjs} +1 -1
  25. package/dist/.setup/{conversation-control-BtPxevoK.mjs → conversation-control-D5qVEey9.mjs} +3 -3
  26. package/dist/.setup/{doctor-start-options-C28ek2hD.mjs → doctor-start-options-DyLrwtq-.mjs} +3 -3
  27. package/dist/.setup/{dynamic-tool-build-DjbDZzOJ.mjs → dynamic-tool-build-OWTT0wP-.mjs} +3 -3
  28. package/dist/.setup/{dynamic-tools-75qoSOch.mjs → dynamic-tools-CygReZGj.mjs} +8 -8
  29. package/dist/.setup/{effective-mcp-catalog-Dz0J8iAj.mjs → effective-mcp-catalog-B_4Dtkdg.mjs} +6 -6
  30. package/dist/.setup/{ephemeral-turn-K_d99r9P.mjs → ephemeral-turn-B1Na_xCj.mjs} +2 -2
  31. package/dist/.setup/{inference-proxy-DSnaS-uS.mjs → inference-proxy-BZgN5W8m.mjs} +3 -3
  32. package/dist/.setup/{isolated-completion-dNt4kRLw.mjs → isolated-completion-DGCmR0Q8.mjs} +5 -5
  33. package/dist/.setup/{managed-binary-DwC9wxch.mjs → managed-binary-Boj8_lWV.mjs} +1 -1
  34. package/dist/.setup/{mcp-app-session-preparation-C7LyxbAm.mjs → mcp-app-session-preparation-DFvoViz9.mjs} +8 -8
  35. package/dist/.setup/{model-catalog-BRJ7RMXY.mjs → model-catalog-CCr0L7T4.mjs} +7 -7
  36. package/dist/.setup/{models-CusrgpiY.mjs → models-CPdqFOZS.mjs} +3 -3
  37. package/dist/.setup/native-assignment-repair-BjS4uyQr.mjs +162 -0
  38. package/dist/.setup/{native-auth-CveRfTpz.mjs → native-auth-TAGxZP-r.mjs} +3 -3
  39. package/dist/.setup/{native-hook-relay-BvwSj5bt.mjs → native-hook-relay-VHeLdZXU.mjs} +4 -4
  40. package/dist/.setup/{native-mcp-app-DDEtVQED.mjs → native-mcp-app-ly1JuStw.mjs} +5 -5
  41. package/dist/.setup/{native-skill-isolation-Cx2AkUco.mjs → native-skill-isolation--6M-3BWV.mjs} +3 -3
  42. package/dist/.setup/{native-subagent-monitor-CBYFkNsB.mjs → native-subagent-monitor-CuNglHrq.mjs} +161 -53
  43. package/dist/.setup/{native-subagent-pending-assignments-DmVhedNs.mjs → native-subagent-pending-assignments-BAOzwy85.mjs} +49 -11
  44. package/dist/.setup/{native-task-assignments-DYL9uxNe.mjs → native-task-assignments-Dap5NqiR.mjs} +4 -4
  45. package/dist/.setup/{node-cli-sessions-BxVYZNuY.mjs → node-cli-sessions-BQNAFnCa.mjs} +2 -2
  46. package/dist/.setup/{node-exec-server.runtime-8RehgPdQ.mjs → node-exec-server.runtime-B-4ogz9C.mjs} +2 -2
  47. package/dist/.setup/{plan-BKFbfVsV.mjs → plan-CqI4m0CC.mjs} +5 -5
  48. package/dist/.setup/{plugin-activation-BgfNFH2L.mjs → plugin-activation-Dbq2m2gh.mjs} +2 -2
  49. package/dist/.setup/{plugin-approval-roundtrip-CXXXhuKi.mjs → plugin-approval-roundtrip-DIE4DZ9S.mjs} +1 -1
  50. package/dist/.setup/{plugin-inventory-OhiCoyPH.mjs → plugin-inventory-CZLnMaxf.mjs} +1 -1
  51. package/dist/.setup/{project-doc-thread-config-D_sWbxFR.mjs → project-doc-thread-config-BYFXSVGk.mjs} +3 -3
  52. package/dist/.setup/{provider-BVV8SWlx.mjs → provider-CBlKf65x.mjs} +4 -4
  53. package/dist/.setup/{provider-capabilities-B-pTlDsf.mjs → provider-capabilities-BIyUe_cz.mjs} +10 -3
  54. package/dist/.setup/{request-m-H-7FMu.mjs → request-6bus8ebp.mjs} +5 -5
  55. package/dist/.setup/{run-attempt-Ch1emiZE.mjs → run-attempt-BcePYT3A.mjs} +168 -86
  56. package/dist/.setup/{runtime-artifact-CCPLKFGR.mjs → runtime-artifact-Ch7fCcgJ.mjs} +3 -3
  57. package/dist/.setup/{runtime-artifact-connection-dFoSOKy7.mjs → runtime-artifact-connection-C3ootnwd.mjs} +2 -2
  58. package/dist/.setup/{sandbox-guard-Cf9XMRrg.mjs → sandbox-guard-CwOc36_1.mjs} +1 -1
  59. package/dist/.setup/{session-binding-BDnNz-Co.mjs → session-binding-_RE7vtVN.mjs} +38 -12
  60. package/dist/.setup/{session-binding-record-C2kDBZhx.mjs → session-binding-record-O62ZRFhy.mjs} +2 -2
  61. package/dist/.setup/{session-binding-sidecars-DijNZb31.mjs → session-binding-sidecars-CAHe3enw.mjs} +1 -1
  62. package/dist/.setup/{session-catalog-adoption-Cl6fHxS5.mjs → session-catalog-adoption-DuChFASf.mjs} +5 -5
  63. package/dist/.setup/{session-catalog-archive-CUU7jEkO.mjs → session-catalog-archive-Bs5cP3zm.mjs} +5 -5
  64. package/dist/.setup/{session-catalog-events-BBV3DMG7.mjs → session-catalog-events-C8i0HBz5.mjs} +4 -4
  65. package/dist/.setup/{session-catalog-index-order-B30rjUEJ.mjs → session-catalog-index-order-CTSrDiE1.mjs} +1 -1
  66. package/dist/.setup/{session-catalog-index-B00GIRi3.mjs → session-catalog-index-zqaZhwr2.mjs} +8 -8
  67. package/dist/.setup/{session-catalog-limits-Daqt3JLk.mjs → session-catalog-limits-9Ay62KQ0.mjs} +1 -1
  68. package/dist/.setup/{session-catalog-list-request-SJyGz02j.mjs → session-catalog-list-request-uKKvUIoN.mjs} +3 -3
  69. package/dist/.setup/{session-catalog-native-projection-BJupfCyt.mjs → session-catalog-native-projection-C6KOqnIb.mjs} +4 -4
  70. package/dist/.setup/{session-catalog-node-adoption-D11N0CMr.mjs → session-catalog-node-adoption-BjYvYtAd.mjs} +2 -2
  71. package/dist/.setup/{session-catalog-node-continue-Ct62GeL1.mjs → session-catalog-node-continue-BEI9D3ev.mjs} +5 -5
  72. package/dist/.setup/{session-catalog-node-lookup-DQVe6vhs.mjs → session-catalog-node-lookup-CBomNvUN.mjs} +2 -2
  73. package/dist/.setup/{session-catalog-parsing-B4OyhylL.mjs → session-catalog-parsing-DmZmgRou.mjs} +1 -1
  74. package/dist/.setup/{session-catalog-projection-CYgFTaYm.mjs → session-catalog-projection-DD5m0grG.mjs} +4 -4
  75. package/dist/.setup/{session-catalog-source-Xt6-hNns.mjs → session-catalog-source-0x1LVwV-.mjs} +1 -1
  76. package/dist/.setup/{session-cli-BoJSZfGd.mjs → session-cli-B1f7NqXo.mjs} +1 -1
  77. package/dist/.setup/{session-history-import-DgwRu2eD.mjs → session-history-import-BhOzqhyI.mjs} +4 -4
  78. package/dist/.setup/{session-history.worker-DJQfek5p.mjs → session-history.worker-D2v5yRcB.mjs} +5 -3
  79. package/dist/.setup/{session-initialization-BjVtsTzi.mjs → session-initialization-Bwe0Bikj.mjs} +1 -1
  80. package/dist/.setup/{session-retirement-DIqF1vQ4.mjs → session-retirement-BIFmgIgn.mjs} +6 -6
  81. package/dist/.setup/{settled-turn-finalizer-dVv34G_E.mjs → settled-turn-finalizer-9WZ-Hnwo.mjs} +5 -5
  82. package/dist/.setup/{shared-client-CNGDTv68.mjs → shared-client-Bo9MCCKj.mjs} +59 -14
  83. package/dist/.setup/{side-question-D1Wa21s9.mjs → side-question-GmfBHNHK.mjs} +17 -17
  84. package/dist/.setup/{source-DyVuYlTN.mjs → source-C4Al9cJx.mjs} +4 -4
  85. package/dist/.setup/{thread-lifecycle-run-DjSfTw6v.mjs → thread-lifecycle-run-avZbRAjm.mjs} +56 -20
  86. package/dist/.setup/{thread-ownership-BBsOFzCM.mjs → thread-ownership-C5Hpc-Q1.mjs} +4 -4
  87. package/dist/.setup/{thread-policy-BEiS7ITh.mjs → thread-policy-BFLbIpIt.mjs} +3 -3
  88. package/dist/.setup/{thread-requests-DjyDmCo4.mjs → thread-requests-pX9_RXpU.mjs} +2 -2
  89. package/dist/.setup/{thread-resume-BqOca2Iy.mjs → thread-resume-LBLXiIEh.mjs} +4 -4
  90. package/dist/.setup/{transcript-mirror-DVEzdOs0.mjs → transcript-mirror-CPdcVWTn.mjs} +1 -1
  91. package/dist/.setup/{transport-stdio-lgeKKHyw.mjs → transport-stdio-BsXQmXll.mjs} +1 -1
  92. package/dist/.setup/{transport-websocket-CEBjEtFP.mjs → transport-websocket-B5mq2Iq2.mjs} +1 -1
  93. package/dist/.setup/{turn-router-DM0fRrYI.mjs → turn-router-Ba0-h2NE.mjs} +1 -1
  94. package/dist/.setup/{upstream-session-fork-CxgShpwe.mjs → upstream-session-fork-C34T_h_K.mjs} +17 -17
  95. package/dist/.setup/{usage-DV8T9Yau.mjs → usage-BHTnwsjV.mjs} +3 -3
  96. package/dist/.setup/{usage-limit-error-ryR1PGou.mjs → usage-limit-error-YNy7uINJ.mjs} +1 -1
  97. package/dist/.setup/{web-search-provider.runtime-DkciK2gS.mjs → web-search-provider.runtime-BOqY-zot.mjs} +2 -2
  98. package/dist/.setup/{workspace-write-sandbox-probe-DvfWTvuR.mjs → workspace-write-sandbox-probe-DB6Y3XLX.mjs} +2 -2
  99. package/dist/.source-module-urls/a8ffe2b9525179f031f130700992add0f356b5fe3e562c8e70b2801696da5134.json +1 -0
  100. package/dist/api.js +3 -3
  101. package/dist/catalog-page.worker.js +1 -1
  102. package/dist/cli-metadata.js +1 -1
  103. package/dist/doctor-contract-api.js +14 -5
  104. package/dist/harness.js +20 -20
  105. package/dist/index.js +68 -58
  106. package/dist/media-understanding-provider.js +2 -2
  107. package/dist/migration-provider-api.js +1 -1
  108. package/dist/provider-discovery.js +1 -1
  109. package/dist/session-history-worker-runtime.js +4 -2
  110. package/dist/session-history.worker.js +1 -1
  111. package/openclaw.plugin.json +5 -0
  112. package/package.json +5 -5
@@ -1,14 +1,14 @@
1
1
  import { n as readCodexRuntimeModelId } from "./model-runtime-BdqzOMkU.mjs";
2
- import { g as createCodexNativeSubagentHistoryOwner } from "./native-subagent-pending-assignments-DmVhedNs.mjs";
2
+ import { _ as createCodexNativeSubagentHistoryOwner } from "./native-subagent-pending-assignments-BAOzwy85.mjs";
3
3
  import { i as isJsonObject, r as flattenCodexDynamicToolFunctions } from "./protocol-CANUwXJ3.mjs";
4
- import { i as matchesCodexNativeSubagentSubmissionBinding, m as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced } from "./session-binding-record-C2kDBZhx.mjs";
5
- import { n as defineCodexBuildState } from "./build-state-DPMC9C_U.mjs";
4
+ import { i as matchesCodexNativeSubagentSubmissionBinding, m as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced } from "./session-binding-record-O62ZRFhy.mjs";
5
+ import { n as defineCodexBuildState } from "./build-state-vxQdf_74.mjs";
6
6
  import { c as withMcpElicitationsApprovalPolicy, d as readCodexRequirementsToml, n as hasCodexMcpToolApprovalOverrides, s as shouldAutoApproveCodexAppServerApprovals } from "./config-security-DpkGNy5T.mjs";
7
7
  import { c as isCodexPairedNodeRemoteExecPlacementSandbox, d as readCodexPluginConfig, f as resolveCodexPluginsPolicy, l as isCodexRemoteExecPlacementSandbox, u as isCodexSandboxExecServerEnabled } from "./config-parsing-CVK2Q463.mjs";
8
8
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
9
9
  import { t as resolveCodexAppServerHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
10
10
  import { i as resolveCodexAppServerHomeScope, l as resolveCodexModelBackedReviewerPolicyContext, o as resolveCodexComputerUseConfig } from "./config-options-CZmH25Xq.mjs";
11
- import { c as resolveCodexAppServerPreparedApiKeyCacheKey, g as observeAcquire, s as resolveCodexAppServerFallbackApiKeyCacheKey, w as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-CXK7tmkb.mjs";
11
+ import { c as resolveCodexAppServerPreparedApiKeyCacheKey, g as observeAcquire, s as resolveCodexAppServerFallbackApiKeyCacheKey, w as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-8VTsPn2f.mjs";
12
12
  import { o as formatCodexDisplayText } from "./command-formatters-xW9KpoSZ.mjs";
13
13
  import { a as codexPrewriteRejectionCause, i as CodexAppServerScopedRequestRejectedError, r as CodexAppServerRpcError } from "./rpc-error-C98SHchT.mjs";
14
14
  import { n as waitForPromiseOrAbort } from "./timeout-D0mEWSGG.mjs";
@@ -16,50 +16,50 @@ import { t as readCodexAsyncQuestions } from "./async-questions-DdhOCwGi.mjs";
16
16
  import { i as readCodexProviderRefusal, n as extractRawResponseItemText, o as readItem, r as readCodexErrorNotificationMessage, s as readNullableString } from "./event-projector-values-CLvG1Hil.mjs";
17
17
  import { i as readMirrorIdentity, n as attachCodexMirrorIdentity, t as attachCodexAssistantItemIds } from "./upstream-prompt-provenance-Ccd9MFRJ.mjs";
18
18
  import { n as buildCodexAppServerRuntimeFingerprint, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-Bg9DbDI6.mjs";
19
- import { i as resolveCodexBindingAppServerConnection, r as requireCodexSupervisionModelSelection, t as assertCodexSessionRuntimeOwnership } from "./binding-connection-C0t9TBX_.mjs";
20
- import { n as requestCodexAppServerClientJson } from "./request-m-H-7FMu.mjs";
21
- import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-LQemoqTL.mjs";
19
+ import { i as resolveCodexBindingAppServerConnection, r as requireCodexSupervisionModelSelection, t as assertCodexSessionRuntimeOwnership } from "./binding-connection-BIo1-hoT.mjs";
20
+ import { n as requestCodexAppServerClientJson } from "./request-6bus8ebp.mjs";
21
+ import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-d0gOFYEk.mjs";
22
22
  import { a as isCodexDurableCustomMessage, c as resolveCodexContextEngineProjectionMaxChars, i as fitCodexProjectedContextForTurnStart, l as resolveCodexContinuityProjectionMaxChars, n as CodexContextAttachmentError, o as neutralizeCodexExplicitMentionSigils, r as buildCodexContinuityCalibration, s as projectContextEngineAssemblyForCodex, t as CODEX_TURN_START_TEXT_INPUT_MAX_CHARS, u as resolveProjectionPromptBudgetTokens } from "./context-engine-projection-ps-yn_ci.mjs";
23
23
  import { a as buildCodexMirrorIdempotencyKey, i as buildCodexMirrorDedupeIdentity, s as hasCodexMirrorOrigin, t as applyCodexTranscriptTaint } from "./transcript-mirror-attestation-BzUXnrvv.mjs";
24
24
  import { t as readCodexMirroredSessionHistoryMessages } from "./session-history-BO6i_pfk.mjs";
25
25
  import { i as resolveCodexAppServerAuthProfileIdForAgent, r as resolveCodexAppServerAuthProfileId } from "./auth-profile-CgHQ8Vot.mjs";
26
- import { E as isCodexContextRestartSelectionChangedError, G as protectCodexAppServerLiveThread, I as ensureCodexAppServerClientRuntime, M as getCodexInferenceThreadQualification, Q as readRecentCodexRateLimits, W as prepareCodexWorkspaceReferences, Z as readCodexRateLimitsRevision, _ as retainSharedCodexAppServerClientIfCurrent, _t as withCodexStartupTimeout, a as clearSharedCodexAppServerClientIfCurrentAndUnclaimed, c as getLeasedSharedCodexAppServerClient, dt as CodexAppServerStartupError, f as readCodexAppServerClientDesktopGenerationFingerprint, ft as TURN_FINALIZE_DRAIN_ABORT_GRACE_MS, gt as resolveCodexStartupTimeoutMs, h as releaseLeasedSharedCodexAppServerClient, i as clearSharedCodexAppServerClientIfCurrent, j as getCodexInferenceThread, l as getSharedCodexAppServerClient, nt as resolveCodexAppServerAuthAccountCacheKey, pt as TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS, rt as resolveCodexAppServerPreparedAuthHandoff, s as createIsolatedCodexAppServerClient, u as isCodexAppServerStartSelectionChangedError, w as CodexThreadClientReplacementError, x as CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED } from "./shared-client-CNGDTv68.mjs";
26
+ import { E as isCodexContextRestartSelectionChangedError, G as protectCodexAppServerLiveThread, I as ensureCodexAppServerClientRuntime, M as getCodexInferenceThreadQualification, Q as readRecentCodexRateLimits, W as prepareCodexWorkspaceReferences, Z as readCodexRateLimitsRevision, _ as retainSharedCodexAppServerClientIfCurrent, a as clearSharedCodexAppServerClientIfCurrentAndUnclaimed, at as resolveCodexAppServerPreparedAuthHandoff, c as getLeasedSharedCodexAppServerClient, f as readCodexAppServerClientDesktopGenerationFingerprint, h as releaseLeasedSharedCodexAppServerClient, ht as TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS, i as clearSharedCodexAppServerClientIfCurrent, it as resolveCodexAppServerAuthAccountCacheKey, j as getCodexInferenceThread, l as getSharedCodexAppServerClient, mt as TURN_FINALIZE_DRAIN_ABORT_GRACE_MS, pt as CodexAppServerStartupError, s as createIsolatedCodexAppServerClient, u as isCodexAppServerStartSelectionChangedError, vt as resolveCodexStartupTimeoutMs, w as CodexThreadClientReplacementError, x as CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED, yt as withCodexStartupTimeout } from "./shared-client-Bo9MCCKj.mjs";
27
27
  import { a as isCodexResponsesOAuthRun, r as isCodexResponsesOAuth } from "./responses-oauth-twnuTaAa.mjs";
28
- import { D as toCodexDynamicToolProgressResponse, E as resolveDynamicToolCallTimeoutMs, L as resolveCodexAppServerClientInstanceId, M as readCodexAppServerWarningMessage, O as toCodexDynamicToolProtocolResponse, P as CODEX_APP_SERVER_OPT_OUT_NOTIFICATION_METHODS, T as handleDynamicToolCallWithTimeout, _ as assertCodexTurnStartResponse, a as isCodexAppServerIndeterminateRequestCancellationError, i as isCodexAppServerConnectionClosedError, l as CodexServerRequestResolvedError, o as isCodexAppServerIndeterminateTransportError, r as isCodexAppServerApprovalRequest, w as createCodexElicitationResponse, x as readCodexTurnCompletedNotification, y as readCodexDynamicToolCallParams } from "./client-Div-zqnz.mjs";
29
- import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-CEBjEtFP.mjs";
30
- import { S as shouldClearTerminalPresentationForNativeItem, _ as itemName, a as isCodexNotificationForTurn, b as matchesCodexSnapshotTurn, i as CodexProjectionDiagnostics, n as getCodexAppServerTurnRouter, o as readCodexNotificationScope, s as readCodexNotificationThreadId, t as CODEX_APP_SERVER_NATIVE_TURN_WAIT_TIMEOUT_MS, x as shouldAdvancePersistableAssistantBarrier } from "./turn-router-DM0fRrYI.mjs";
31
- import { d as terminateCodexBackgroundTerminals, f as unsubscribeCodexThreadBestEffort, l as retireUnsafeCodexTurnClientBestEffort, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError, s as interruptCodexTurnAndWaitBestEffort, u as shouldRetireCodexStartupClient } from "./attempt-client-cleanup-BVww-ct8.mjs";
32
- import { r as prepareCodexAppServerAuthBinding } from "./auth-binding-BFTkrP_b.mjs";
28
+ import { D as toCodexDynamicToolProgressResponse, E as resolveDynamicToolCallTimeoutMs, L as resolveCodexAppServerClientInstanceId, M as readCodexAppServerWarningMessage, O as toCodexDynamicToolProtocolResponse, P as CODEX_APP_SERVER_OPT_OUT_NOTIFICATION_METHODS, T as handleDynamicToolCallWithTimeout, _ as assertCodexTurnStartResponse, a as isCodexAppServerIndeterminateRequestCancellationError, i as isCodexAppServerConnectionClosedError, l as CodexServerRequestResolvedError, o as isCodexAppServerIndeterminateTransportError, r as isCodexAppServerApprovalRequest, w as createCodexElicitationResponse, x as readCodexTurnCompletedNotification, y as readCodexDynamicToolCallParams } from "./client-BTWv2cJe.mjs";
29
+ import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-B5mq2Iq2.mjs";
30
+ import { S as shouldClearTerminalPresentationForNativeItem, _ as itemName, a as isCodexNotificationForTurn, b as matchesCodexSnapshotTurn, i as CodexProjectionDiagnostics, n as getCodexAppServerTurnRouter, o as readCodexNotificationScope, s as readCodexNotificationThreadId, t as CODEX_APP_SERVER_NATIVE_TURN_WAIT_TIMEOUT_MS, x as shouldAdvancePersistableAssistantBarrier } from "./turn-router-Ba0-h2NE.mjs";
31
+ import { d as terminateCodexBackgroundTerminals, f as unsubscribeCodexThreadBestEffort, l as retireUnsafeCodexTurnClientBestEffort, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError, s as interruptCodexTurnAndWaitBestEffort, u as shouldRetireCodexStartupClient } from "./attempt-client-cleanup-BmPBqnW3.mjs";
32
+ import { r as prepareCodexAppServerAuthBinding } from "./auth-binding-D1TJwzWf.mjs";
33
33
  import { a as isRawFunctionToolOutputCompletionNotification, c as readRawResponseToolCallId, i as isCodexTurnAbortMarkerNotification, l as updateActiveTurnItemIds, o as isTerminalTurnStatus, r as completePendingOpenClawDynamicToolNotification, s as readCodexNotificationItem, t as CodexUsageProjection } from "./event-projector-usage-BpKfdoTm.mjs";
34
- import { n as listAllCodexAppServerModels } from "./models-CusrgpiY.mjs";
35
- import { d as mergeCodexThreadConfigs } from "./project-doc-thread-config-D_sWbxFR.mjs";
36
- import { B as resolveCodexDynamicToolsLoadingForRuntime, L as isSystemAgentOnlyCodexDynamicToolAllowlist, P as filterCodexDynamicTools, V as joinPresentSections, _ as buildDeveloperInstructions, b as codexDynamicToolsFingerprint, h as resolveCodexWebSearchPlan, k as stabilizeJsonValue, l as isCodexNativeDelegationDisabledForRun, v as areCodexDynamicToolFingerprintsCompatible, w as fingerprintJsonObject, x as codexLegacyDynamicToolsFingerprint } from "./thread-requests-DjyDmCo4.mjs";
37
- import { i as resolveCodexSessionBinding, n as createCodexSessionGenerationSupersededError, t as clearCodexBindingForClient } from "./session-binding-BDnNz-Co.mjs";
34
+ import { n as listAllCodexAppServerModels } from "./models-CPdqFOZS.mjs";
35
+ import { d as mergeCodexThreadConfigs } from "./project-doc-thread-config-BYFXSVGk.mjs";
36
+ import { B as resolveCodexDynamicToolsLoadingForRuntime, L as isSystemAgentOnlyCodexDynamicToolAllowlist, P as filterCodexDynamicTools, V as joinPresentSections, _ as buildDeveloperInstructions, b as codexDynamicToolsFingerprint, h as resolveCodexWebSearchPlan, k as stabilizeJsonValue, l as isCodexNativeDelegationDisabledForRun, v as areCodexDynamicToolFingerprintsCompatible, w as fingerprintJsonObject, x as codexLegacyDynamicToolsFingerprint } from "./thread-requests-pX9_RXpU.mjs";
37
+ import { i as resolveCodexSessionBinding, n as createCodexSessionGenerationSupersededError, t as clearCodexBindingForClient } from "./session-binding-_RE7vtVN.mjs";
38
38
  import { i as resolveCodexAppServerThreadModelSelection } from "./thread-model-selection-DcVebr8N.mjs";
39
- import { a as resolveCodexPromptError, i as refreshCodexUsageLimitPromptError, n as formatCodexTurnStartUsageLimitError, r as markCodexAuthProfileBlockedFromRateLimits, t as CodexUsageLimitPromptError } from "./usage-limit-error-ryR1PGou.mjs";
40
- import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BBsOFzCM.mjs";
39
+ import { a as resolveCodexPromptError, i as refreshCodexUsageLimitPromptError, n as formatCodexTurnStartUsageLimitError, r as markCodexAuthProfileBlockedFromRateLimits, t as CodexUsageLimitPromptError } from "./usage-limit-error-YNy7uINJ.mjs";
40
+ import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-C5Hpc-Q1.mjs";
41
41
  import { t as persistCodexContextCompactionActivity } from "./context-compaction-activity-CMla5FPJ.mjs";
42
- import { a as CodexToolTranscriptProjection, c as isCodexCommandBearingToolCall, d as sanitizeCodexToolArguments, i as emitCodexAgentEvent, l as resolveCodexToolProgressDetailMode, o as CodexToolProgressProjection, r as CodexEventProjection, s as shouldEmitTranscriptToolProgress, t as codexNativeSubagentMonitorRuntime, u as sanitizeCodexAgentEventRecord } from "./native-subagent-monitor-CBYFkNsB.mjs";
43
- import { a as requestPluginApprovalOutcome } from "./plugin-approval-roundtrip-CXXXhuKi.mjs";
44
- import { n as CodexThreadPolicyHandoffError, s as restoreCodexThreadInstructionsAfterCompaction } from "./thread-policy-BEiS7ITh.mjs";
42
+ import { a as CodexToolTranscriptProjection, c as isCodexCommandBearingToolCall, d as sanitizeCodexToolArguments, i as emitCodexAgentEvent, l as resolveCodexToolProgressDetailMode, o as CodexToolProgressProjection, r as CodexEventProjection, s as shouldEmitTranscriptToolProgress, t as codexNativeSubagentMonitorRuntime, u as sanitizeCodexAgentEventRecord } from "./native-subagent-monitor-CuNglHrq.mjs";
43
+ import { a as requestPluginApprovalOutcome } from "./plugin-approval-roundtrip-DIE4DZ9S.mjs";
44
+ import { n as CodexThreadPolicyHandoffError, s as restoreCodexThreadInstructionsAfterCompaction } from "./thread-policy-BFLbIpIt.mjs";
45
45
  import { t as attemptTerminal } from "./attempt-terminal-sZutF0WY.mjs";
46
46
  import { a as runCodexAgentEndHook, c as withCodexAppServerFastModeServiceTier, i as reportCodexBackgroundCleanupFailure, n as ensureCodexWorkspaceDirOnce, o as runCodexCleanupStep, r as estimateCodexAppServerProjectedTurnTokens, s as shouldKeepCodexSharedAbortOpen, t as emitCodexAppServerEvent } from "./run-attempt-lifecycle-DN-ATDp9.mjs";
47
47
  import { t as CODEX_INFERENCE_GENERATION_KEY } from "./inference-metadata-DCvcG_N_.mjs";
48
48
  import "./inference-context-DNlGwzwy.mjs";
49
49
  import { i as createAssistantReasoningMessage, n as createAssistantCommentaryMessage, r as createAssistantMessage, t as createAssistantAsyncMessage } from "./event-projector-assistant-message-CLMKN4x-.mjs";
50
- import { a as resolveCodexExternalSandboxPolicyForOpenClawSandbox, c as shouldEnableCodexAppServerNativeToolSurface, i as resolveCodexAppServerHookChannelId, l as shouldRequireCodexSandboxExecServerEnvironment, o as resolveCodexMessageToolProvider, p as mapCodexAppServerRemoteWorkspacePath, r as resolveCodexAppServerExecutionCwd, s as resolveCodexSandboxEnvironmentSelection, t as buildDynamicTools, u as shouldWarnCodexDynamicToolBuildStageSummary } from "./dynamic-tool-build-DjbDZzOJ.mjs";
51
- import { a as buildCodexNativeHookRelayDisabledConfig, d as scheduleCodexNativeHookRelayUnregister, i as buildCodexNativeHookRelayConfig, l as resolveCodexNativeHookRelayEvents, n as CodexManagedHooksOnlyError, r as assertCodexNativeHookRelayAllowed, s as createCodexNativeHookRelay, t as CODEX_NATIVE_HOOK_RELAY_TTL_GRACE_MS, u as resolveCodexNativeHookRelayTtlMs } from "./native-hook-relay-BvwSj5bt.mjs";
52
- import { a as prepareCodexPluginThreadConfigStartupProvider, c as buildLegacyScheduledCodexAppRecoveryPrompt, d as resolveScheduledCodexAppCreatorCaptureDecision, i as isContextEngineBindingCompatible, l as buildScheduledCodexAppServerConnectionIdentity, n as isCodexAppServerProfilerEnabled, o as resolveCodexPluginThreadConfigStartupPolicy, r as buildContextEngineBinding, s as assertScheduledCodexAppAuthorityRuntime, t as startOrResumeThread, u as captureScheduledCodexAppAuthority } from "./thread-lifecycle-run-DjSfTw6v.mjs";
50
+ import { a as resolveCodexExternalSandboxPolicyForOpenClawSandbox, c as shouldEnableCodexAppServerNativeToolSurface, i as resolveCodexAppServerHookChannelId, l as shouldRequireCodexSandboxExecServerEnvironment, o as resolveCodexMessageToolProvider, p as mapCodexAppServerRemoteWorkspacePath, r as resolveCodexAppServerExecutionCwd, s as resolveCodexSandboxEnvironmentSelection, t as buildDynamicTools, u as shouldWarnCodexDynamicToolBuildStageSummary } from "./dynamic-tool-build-OWTT0wP-.mjs";
51
+ import { a as buildCodexNativeHookRelayDisabledConfig, d as scheduleCodexNativeHookRelayUnregister, i as buildCodexNativeHookRelayConfig, l as resolveCodexNativeHookRelayEvents, n as CodexManagedHooksOnlyError, r as assertCodexNativeHookRelayAllowed, s as createCodexNativeHookRelay, t as CODEX_NATIVE_HOOK_RELAY_TTL_GRACE_MS, u as resolveCodexNativeHookRelayTtlMs } from "./native-hook-relay-VHeLdZXU.mjs";
52
+ import { a as prepareCodexPluginThreadConfigStartupProvider, c as buildLegacyScheduledCodexAppRecoveryPrompt, d as resolveScheduledCodexAppCreatorCaptureDecision, i as isContextEngineBindingCompatible, l as buildScheduledCodexAppServerConnectionIdentity, n as isCodexAppServerProfilerEnabled, o as resolveCodexPluginThreadConfigStartupPolicy, r as buildContextEngineBinding, s as assertScheduledCodexAppAuthorityRuntime, t as startOrResumeThread, u as captureScheduledCodexAppAuthority } from "./thread-lifecycle-run-avZbRAjm.mjs";
53
53
  import { i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, r as resolveCodexEffectiveSessionPermissionPolicy } from "./session-permission-policy-C7kYxPGd.mjs";
54
- import { o as hasCodexNativeToolCatalog, s as loadCodexNativeToolCatalog } from "./native-skill-isolation-Cx2AkUco.mjs";
55
- import { r as prepareCodexNativeMcpFormResourceContext, t as createCodexNativeMcpAppResultDetailsPreparer } from "./native-mcp-app-DDEtVQED.mjs";
56
- import { _ as invalidateCodexComputerFrame, a as handleCodexAppServerApprovalRequest, c as createCodexNativePreToolUseFailureBuffer, f as buildTurnCollaborationMode, g as buildCodexUserInput, h as readCodexRetainedBackgroundCommands, i as createCodexDynamicToolDiagnostics, l as buildCodexHistoryProvenancePrefix, m as CodexNativeProcessAuthority, n as projectCodexExecutableDynamicTools, o as ensureCodexSandboxExecServerEnvironment, p as buildTurnStartParams, r as routeCodexAppServerElicitationRequest, s as releaseCodexSandboxExecServerEnvironment, t as createCodexDynamicToolBridge, u as buildCodexParentLocalInstructions, v as createCodexRemoteWorkspaceFileReader, y as CodexNativeToolLifecycleProjector } from "./dynamic-tools-75qoSOch.mjs";
57
- import { c as promptSnapshot, i as mirrorPromptAtTurnStartBestEffort, n as createCodexAppServerUserMessagePersistenceNotifier, o as buildCodexUserPromptMessage, s as buildResolvedCodexUserPromptMessage, t as codexTranscriptMirrorRuntime } from "./transcript-mirror-DVEzdOs0.mjs";
58
- import { t as resolveCodexAppServerForModelProvider } from "./app-server-policy-V8zuN8q_.mjs";
59
- import { a as getCodexContextFileDisplayBasename, i as getCodexContextFileBasename, n as CODEX_NATIVE_PROJECT_DOC_BASENAMES, o as isNonEmptyString, r as buildCodexWorkspaceBootstrapContext, s as normalizeCodexContextFilePath } from "./attempt-workspace-context-BkA0W8Jy.mjs";
54
+ import { o as hasCodexNativeToolCatalog, s as loadCodexNativeToolCatalog } from "./native-skill-isolation--6M-3BWV.mjs";
55
+ import { r as prepareCodexNativeMcpFormResourceContext, t as createCodexNativeMcpAppResultDetailsPreparer } from "./native-mcp-app-ly1JuStw.mjs";
56
+ import { _ as invalidateCodexComputerFrame, a as handleCodexAppServerApprovalRequest, c as createCodexNativePreToolUseFailureBuffer, f as buildTurnCollaborationMode, g as buildCodexUserInput, h as readCodexRetainedBackgroundCommands, i as createCodexDynamicToolDiagnostics, l as buildCodexHistoryProvenancePrefix, m as CodexNativeProcessAuthority, n as projectCodexExecutableDynamicTools, o as ensureCodexSandboxExecServerEnvironment, p as buildTurnStartParams, r as routeCodexAppServerElicitationRequest, s as releaseCodexSandboxExecServerEnvironment, t as createCodexDynamicToolBridge, u as buildCodexParentLocalInstructions, v as createCodexRemoteWorkspaceFileReader, y as CodexNativeToolLifecycleProjector } from "./dynamic-tools-CygReZGj.mjs";
57
+ import { c as promptSnapshot, i as mirrorPromptAtTurnStartBestEffort, n as createCodexAppServerUserMessagePersistenceNotifier, o as buildCodexUserPromptMessage, s as buildResolvedCodexUserPromptMessage, t as codexTranscriptMirrorRuntime } from "./transcript-mirror-CPdcVWTn.mjs";
58
+ import { t as resolveCodexAppServerForModelProvider } from "./app-server-policy-CF-JwGUD.mjs";
59
+ import { a as getCodexContextFileDisplayBasename, i as getCodexContextFileBasename, n as CODEX_NATIVE_PROJECT_DOC_BASENAMES, o as isNonEmptyString, r as buildCodexWorkspaceBootstrapContext, s as normalizeCodexContextFilePath } from "./attempt-workspace-context-EAeScFrg.mjs";
60
60
  import { n as captureCodexSettledTurnFinalizationContext } from "./settled-turn-context-BPL6D3RO.mjs";
61
- import { t as resolveCodexProviderWebSearchSupport } from "./provider-capabilities-B-pTlDsf.mjs";
62
- import { a as runCodexComputerUseLiveTest, i as createComputerUseRequest, t as ensureCodexComputerUse } from "./computer-use-BcDrQlxi.mjs";
61
+ import { r as releaseCodexProbeClient, t as resolveCodexProviderWebSearchSupport } from "./provider-capabilities-BIyUe_cz.mjs";
62
+ import { a as runCodexComputerUseLiveTest, i as createComputerUseRequest, t as ensureCodexComputerUse } from "./computer-use-vLGHqSOu.mjs";
63
63
  import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString, readNonBlankString, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
64
64
  import { createHash, randomUUID } from "node:crypto";
65
65
  import { isDeepStrictEqual } from "node:util";
@@ -69,7 +69,7 @@ import { truncateUtf16Safe, truncateUtf8Prefix } from "openclaw/plugin-sdk/text-
69
69
  import path from "node:path";
70
70
  import fs from "node:fs/promises";
71
71
  import { isPathStrictlyInside, readFileWindowFully, root } from "openclaw/plugin-sdk/file-access-runtime";
72
- import { createStageTimingTracker, formatStageTimings } from "openclaw/plugin-sdk/time-runtime";
72
+ import { createStageTimingTracker, formatStageTimings, raceWithTimeout } from "openclaw/plugin-sdk/time-runtime";
73
73
  import { addAbortListener } from "node:events";
74
74
  import { isIncognitoSessionKey } from "openclaw/plugin-sdk/session-key-runtime";
75
75
  import { Type } from "typebox";
@@ -85,7 +85,7 @@ import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
85
85
  import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
86
86
  import { acknowledgeInternalToolResult, createAgentHarnessToolExecutionRegistry } from "openclaw/plugin-sdk/agent-harness-tool-runtime";
87
87
  import { createNativeSessionBindingAuthority, prepareNativeSessionGenerationAuthority } from "openclaw/plugin-sdk/agent-harness-session-runtime";
88
- import { appendSessionYieldContext, composeSessionTranscriptWriteAssertion, hasPromptImageInput } from "openclaw/plugin-sdk/session-transcript-runtime";
88
+ import { appendSessionTranscriptMessageByIdentityStrict, appendSessionYieldContext, composeSessionTranscriptWriteAssertion, hasPromptImageInput } from "openclaw/plugin-sdk/session-transcript-runtime";
89
89
  import { captureFinalCodexCronCreatorToolAllowlist, formatMcpCodexApprovalRemedy, materializeStaticMcpToolsForHarnessRun, resolveCodexMcpToolOverridesForAgent, resolveCodexTtsProvenanceTransfer } from "openclaw/plugin-sdk/codex-mcp-projection";
90
90
  import { getAgentScopedMediaLocalRoots } from "openclaw/plugin-sdk/media-local-roots";
91
91
  import { isSilentReplyPayloadText } from "openclaw/plugin-sdk/reply-chunking";
@@ -139,6 +139,7 @@ function createCodexAttemptPreparationTiming(params) {
139
139
  //#endregion
140
140
  //#region extensions/codex/src/app-server/attempt-steering.ts
141
141
  const CODEX_STEER_ALL_DEBOUNCE_MS = 500;
142
+ const CODEX_STEER_TERMINAL_DRAIN_MS = 1e3;
142
143
  function createCodexQuestionInputHandlers(sessionKey, assertActive) {
143
144
  const questionAuthority = (kind, assertSource, toolAuthorityPreparation) => ({
144
145
  kind,
@@ -191,6 +192,11 @@ function createCodexSteeringQueue(params) {
191
192
  let sendChain = Promise.resolve();
192
193
  let sealedError;
193
194
  let closedError;
195
+ let terminalDrain;
196
+ const removeDispatchedBatch = (id) => {
197
+ dispatchedBatches.delete(id);
198
+ if (dispatchedBatches.size === 0) terminalDrain?.resolve();
199
+ };
194
200
  const assertActive = () => {
195
201
  const unavailableError = closedError ?? sealedError;
196
202
  if (unavailableError) throw unavailableError;
@@ -235,6 +241,7 @@ function createCodexSteeringQueue(params) {
235
241
  for (const batch of dispatchedBatches.values()) for (const item of batch) acceptItem(item);
236
242
  dispatchedBatches.clear();
237
243
  for (const item of pendingMessages) rejectItem(item, error);
244
+ terminalDrain?.resolve();
238
245
  };
239
246
  const sealQueueAdmission = () => {
240
247
  if (sealedError || closedError) return;
@@ -309,7 +316,7 @@ function createCodexSteeringQueue(params) {
309
316
  timeoutMs: params.requestTimeoutMs,
310
317
  signal: params.signal,
311
318
  ...withCurrent ? { withCurrent } : {},
312
- onIngressRejected: () => dispatchedBatches.delete(request.clientUserMessageId),
319
+ onIngressRejected: () => removeDispatchedBatch(request.clientUserMessageId),
313
320
  assertCurrent: () => {
314
321
  assertActive();
315
322
  liveItems = liveItems.filter(isCurrent);
@@ -323,7 +330,7 @@ function createCodexSteeringQueue(params) {
323
330
  });
324
331
  for (const item of liveItems) acceptItem(item);
325
332
  } catch (error) {
326
- if (clientUserMessageId) dispatchedBatches.delete(clientUserMessageId);
333
+ if (clientUserMessageId) removeDispatchedBatch(clientUserMessageId);
327
334
  if (skippedRevokedBatch) return;
328
335
  if (clientUserMessageId !== void 0 && (isCodexAppServerIndeterminateRequestCancellationError(error) || isCodexAppServerIndeterminateTransportError(error))) for (const item of liveItems) acceptItem(item);
329
336
  for (const item of items) rejectItem(item, error);
@@ -379,12 +386,21 @@ function createCodexSteeringQueue(params) {
379
386
  confirmConsumed(clientUserMessageId) {
380
387
  const batch = dispatchedBatches.get(clientUserMessageId);
381
388
  if (!batch) return false;
382
- dispatchedBatches.delete(clientUserMessageId);
389
+ removeDispatchedBatch(clientUserMessageId);
383
390
  for (const item of batch) resolveItem(item);
384
391
  return true;
385
392
  },
386
393
  getAcceptedMessages: () => acceptedMessages.slice(),
387
394
  sealAdmission: sealQueueAdmission,
395
+ drainBeforeCancel() {
396
+ sealQueueAdmission();
397
+ if (closedError || dispatchedBatches.size === 0) {
398
+ cancelQueue();
399
+ return;
400
+ }
401
+ terminalDrain ??= createDeferred();
402
+ return raceWithTimeout(terminalDrain.promise, CODEX_STEER_TERMINAL_DRAIN_MS, () => {}, { ref: false }).then(cancelQueue);
403
+ },
388
404
  cancel: cancelQueue
389
405
  };
390
406
  }
@@ -1558,6 +1574,26 @@ var CodexProjectionSettlement = class extends AgentHarnessProjectionSettlement {
1558
1574
  };
1559
1575
  /** Owns per-turn projection state and builds results from the same state. */
1560
1576
  var CodexTurnProjection = class {
1577
+ /** Materialize terminal native-tool gaps while the durable checkpoint is still open. */
1578
+ prepareTerminalToolResultCheckpoint(toolTelemetry, options) {
1579
+ const retainedCommands = /* @__PURE__ */ new Map();
1580
+ if (!this.aborted && !this.options.runAbortSignal?.aborted && this.completedTurn?.status === "completed" && !this.promptError) {
1581
+ const pending = this.nativeToolLifecycleProjector.pendingCommands();
1582
+ for (const [id, processId] of options?.readRetainedNativeCommands?.() ?? []) if (pending.has(id) && (pending.get(id) === null || pending.get(id) === processId)) retainedCommands.set(id, processId);
1583
+ }
1584
+ this.nativeToolLifecycleProjector.finalizeActive(void 0, retainedCommands);
1585
+ const rawAssistantTexts = toolTelemetry.sourceReplyDelivered ? [] : this.assistantProjection.collectAssistantTexts();
1586
+ const hasDeliverableAssistantOnCompletedTurn = this.completedTurn?.status === "completed" && rawAssistantTexts.some((text) => text.trim().length > 0);
1587
+ const synthesized = this.toolTranscriptProjection.synthesizeMissingToolResults({
1588
+ synthesize: !this.completedTurn || this.completedTurn.status !== "completed" || this.assistantProjection.hasAssistantItemTextForSynthesis(),
1589
+ retainedCommands,
1590
+ terminalDisposition: this.aborted ? "tool_error" : hasDeliverableAssistantOnCompletedTurn ? "diagnostic_only" : "prompt_error"
1591
+ });
1592
+ if (synthesized) {
1593
+ this.synthesizedMissingToolResultError = synthesized;
1594
+ this.promptErrorSource ??= "prompt";
1595
+ }
1596
+ }
1561
1597
  constructor(params, threadId, turnId, options = {}) {
1562
1598
  this.params = params;
1563
1599
  this.threadId = threadId;
@@ -1604,7 +1640,8 @@ var CodexTurnProjection = class {
1604
1640
  }
1605
1641
  buildResult(toolTelemetry, options) {
1606
1642
  this.eventProjection.flushPendingGuardianWarning();
1607
- const { params: runParams, turnId, completedTurn, aborted, contextTokens, contextTokensSource, completedCompactionCount, synthesizedMissingToolResultError: previousMissingToolResultError, promptError: initialPromptError, promptErrorSource: initialPromptErrorSource, providerRefusal } = this;
1643
+ this.prepareTerminalToolResultCheckpoint(toolTelemetry, options);
1644
+ const { params: runParams, turnId, completedTurn, aborted, contextTokens, contextTokensSource, completedCompactionCount, synthesizedMissingToolResultError, promptError: initialPromptError, promptErrorSource: initialPromptErrorSource, providerRefusal } = this;
1608
1645
  const upstreamUserText = this.options.upstreamUserText;
1609
1646
  const turnTainted = this.settlement.turnTainted;
1610
1647
  const observedItemCount = (/* @__PURE__ */ new Set([...this.observedItemIds, ...this.completedItemIds])).size;
@@ -1612,12 +1649,6 @@ var CodexTurnProjection = class {
1612
1649
  const completedItemCount = this.completedItemIds.size;
1613
1650
  const guardianReviewCount = this.eventProjection.guardianReviewCount;
1614
1651
  const yieldDetected = options?.yieldDetected;
1615
- const retainedCommands = /* @__PURE__ */ new Map();
1616
- if (!aborted && !this.options.runAbortSignal?.aborted && completedTurn?.status === "completed" && !initialPromptError) {
1617
- const pending = this.nativeToolLifecycleProjector.pendingCommands();
1618
- for (const [id, processId] of options?.readRetainedNativeCommands?.() ?? []) if (pending.has(id) && (pending.get(id) === null || pending.get(id) === processId)) retainedCommands.set(id, processId);
1619
- }
1620
- this.nativeToolLifecycleProjector.finalizeActive(void 0, retainedCommands);
1621
1652
  const assistantTexts = this.assistantProjection.collectAssistantTexts();
1622
1653
  const asyncMessages = this.assistantProjection.collectAsyncMessages();
1623
1654
  const commentaryMessages = this.assistantProjection.collectCommentaryMessages();
@@ -1628,20 +1659,8 @@ var CodexTurnProjection = class {
1628
1659
  ...usage,
1629
1660
  contextUsage: { state: "unavailable" }
1630
1661
  } : usage;
1631
- const hasAssistantItemText = this.assistantProjection.hasAssistantItemTextForSynthesis();
1632
- const legacyFailClosed = !completedTurn || completedTurn.status !== "completed" || hasAssistantItemText;
1633
- const hasDeliverableAssistantOnCompletedTurn = completedTurn?.status === "completed" && assistantTexts.some((text) => text.trim().length > 0);
1634
- const synthesizedMissingToolResultError = this.toolTranscriptProjection.synthesizeMissingToolResults({
1635
- synthesize: legacyFailClosed,
1636
- retainedCommands,
1637
- terminalDisposition: aborted ? "tool_error" : hasDeliverableAssistantOnCompletedTurn ? "diagnostic_only" : "prompt_error"
1638
- });
1639
- const storedMissingToolResultError = synthesizedMissingToolResultError ?? previousMissingToolResultError;
1640
- let promptErrorSource = initialPromptErrorSource;
1641
- if (synthesizedMissingToolResultError) {
1642
- this.synthesizedMissingToolResultError = synthesizedMissingToolResultError;
1643
- promptErrorSource = promptErrorSource ?? "prompt";
1644
- }
1662
+ const storedMissingToolResultError = synthesizedMissingToolResultError;
1663
+ const promptErrorSource = initialPromptErrorSource;
1645
1664
  const assistantMessageOptions = {
1646
1665
  tokenUsage: projectedUsage,
1647
1666
  aborted,
@@ -1755,15 +1774,16 @@ var CodexAppServerEventProjector = class extends CodexTurnProjection {
1755
1774
  return !this.projectionClosed && !this.aborted && !this.options.runAbortSignal?.aborted && this.completedTurn?.status === "completed" && !this.promptError ? this.nativeToolLifecycleProjector.pendingCommands() : /* @__PURE__ */ new Map();
1756
1775
  }
1757
1776
  /** Native completion owns the answer independently of unfinished host projection. */
1758
- recoverCompletedAnswer() {
1777
+ recoverCompletedAnswer(toolTelemetry, options) {
1759
1778
  const completed = this.settlement.completedAnswer;
1760
1779
  if (!completed || this.aborted || this.promptError) return false;
1761
- this.closeCompactionProgress();
1762
- this.projectionController.abort();
1763
- this.transcriptCheckpoint.abandon();
1764
1780
  this.completedTurn = completed.turn;
1765
1781
  this.assistantProjection.recordItemCompleted(completed.answer);
1766
1782
  this.assistantProjection.finalizeAnswerCandidate(completed.turn);
1783
+ this.prepareTerminalToolResultCheckpoint(toolTelemetry, options);
1784
+ this.closeCompactionProgress();
1785
+ this.projectionController.abort();
1786
+ this.transcriptCheckpoint.abandon();
1767
1787
  return true;
1768
1788
  }
1769
1789
  getActiveMcpToolCall(serverName) {
@@ -2889,7 +2909,7 @@ function activateCodexAttemptTurn(resources, turnRuntime, lifecycle, notificatio
2889
2909
  isStreaming: () => !state.completed && !runAbortController.signal.aborted,
2890
2910
  isAborted: () => runAbortController.signal.aborted,
2891
2911
  isStopped: () => state.completed || runAbortController.signal.aborted,
2892
- ownsLiveness: () => deadlines.ownsExecutionWait() && resourceState.turnRoute?.signal.aborted === false && !state.completed && !state.terminalTurnNotificationQueued && state.activeAppServerTurnRequests === 0 && state.activeLocalProjections === 0,
2912
+ ownsLiveness: () => deadlines.ownsExecutionWait() && resourceState.turnRoute?.signal.aborted === false && !state.completed && !state.terminalTurnNotificationQueued,
2893
2913
  isAbortable: () => !terminalState.terminalOutcomeFrozen || terminalState.sharedAbortAllowedAfterTerminalOutcome,
2894
2914
  isCompacting: () => projectorRef.current?.isCompacting() ?? false,
2895
2915
  supportsTranscriptCommitWait: true,
@@ -2989,6 +3009,7 @@ async function cleanupCodexAttempt(resources, turnRuntime, lifecycle, requestRun
2989
3009
  resourceState.releaseInferenceContext = void 0;
2990
3010
  prompt.context.attemptTools.scheduledAppAuthoritySourceRef.current = void 0;
2991
3011
  freezeRunTerminalOutcome();
3012
+ if (!state.projectionClosed) activeTurn.activeProjector.prepareTerminalToolResultCheckpoint(prompt.context.attemptTools.toolBridge.telemetry);
2992
3013
  const projectionClose = state.projectionClosed ? void 0 : activeTurn.activeProjector.closeProjection();
2993
3014
  state.projectionClosed = true;
2994
3015
  const checkpointCleanup = projectionClose ? runCleanupStep("codex-transcript-checkpoint", () => projectionClose) : void 0;
@@ -4351,6 +4372,7 @@ async function beginCodexAttemptSettlement(resources, turnRuntime, notifications
4351
4372
  const { state: resourceState } = resources;
4352
4373
  const { connection } = resources.prompt.context.runtime;
4353
4374
  const { params, runAbortController, appServer } = connection;
4375
+ const { toolBridge } = resources.prompt.context.attemptTools;
4354
4376
  const { state, deadlines, settlementExpired } = turnRuntime;
4355
4377
  const { drainNotificationQueue } = notifications;
4356
4378
  const { activeProjector, activeTurnId } = activeTurn;
@@ -4404,6 +4426,7 @@ async function beginCodexAttemptSettlement(resources, turnRuntime, notifications
4404
4426
  return /* @__PURE__ */ new Map();
4405
4427
  }
4406
4428
  };
4429
+ state.readRetainedNativeCommands = readRetainedNativeCommands;
4407
4430
  } catch (error) {
4408
4431
  embeddedAgentLog.debug("could not confirm retained native commands", {
4409
4432
  threadId: resourceState.thread.threadId,
@@ -4412,6 +4435,7 @@ async function beginCodexAttemptSettlement(resources, turnRuntime, notifications
4412
4435
  }
4413
4436
  await drainNotificationQueue();
4414
4437
  }
4438
+ activeProjector.prepareTerminalToolResultCheckpoint(toolBridge.telemetry, { readRetainedNativeCommands: () => readRetainedNativeCommands?.() ?? /* @__PURE__ */ new Map() });
4415
4439
  await closeProjection();
4416
4440
  await activeProjector.settlement.drain();
4417
4441
  }),
@@ -4549,7 +4573,10 @@ async function finalizeCodexAttempt(resources, turnRuntime, lifecycle, notificat
4549
4573
  ]);
4550
4574
  if (runAbortController.signal.aborted) await state.abortCleanup;
4551
4575
  } finally {
4552
- if (!state.projectionClosed) await resources.runCleanupStep("codex-transcript-checkpoint", closeProjection);
4576
+ if (!state.projectionClosed) {
4577
+ activeProjector.prepareTerminalToolResultCheckpoint(toolBridge.telemetry, { readRetainedNativeCommands });
4578
+ await resources.runCleanupStep("codex-transcript-checkpoint", closeProjection);
4579
+ }
4553
4580
  }
4554
4581
  const result = activeProjector.buildResult(toolBridge.telemetry, {
4555
4582
  yieldDetected: toolState.yieldDetected,
@@ -4738,14 +4765,20 @@ async function finalizeCodexAttempt(resources, turnRuntime, lifecycle, notificat
4738
4765
  else if (finalPromptError) codexModelCallDiagnostics.emitError(finalPromptError);
4739
4766
  else codexModelCallDiagnostics.emitCompleted(result);
4740
4767
  const { assistantTranscriptOwned, assistantTranscriptIdempotencyKey, terminalAnchor } = mirrorOutcome;
4741
- const settledTurnFinalizationContext = result.assistantTexts.every((text) => !text.trim()) && result.messagesSnapshot.some((message) => message.role === "toolResult") && (!finalPromptError || activeProjector.settledTurnFailureFinalizationAllowed) ? (!usesSupervisionConnection && !resourceState.nativeSettlementExpired ? await captureCodexSettledTurnFinalizationContext({
4768
+ const shouldCaptureSettledTurnFinalizationContext = result.assistantTexts.every((text) => !text.trim()) && result.messagesSnapshot.some((message) => message.role === "toolResult") && (!finalPromptError || activeProjector.settledTurnFailureFinalizationAllowed);
4769
+ const continuedPrompt = params.suppressNextUserMessagePersistence ? params.userTurnTranscriptRecorder?.getPersistedMessage?.() : void 0;
4770
+ const continuedPromptIdentity = continuedPrompt && readMirrorIdentity(continuedPrompt);
4771
+ const evidencePrefix = continuedPrompt && continuedPromptIdentity ? [continuedPrompt] : [];
4772
+ const settledTurnFinalizationContext = shouldCaptureSettledTurnFinalizationContext ? (!usesSupervisionConnection && !resourceState.nativeSettlementExpired ? await captureCodexSettledTurnFinalizationContext({
4742
4773
  ...activeTranscriptTarget,
4743
4774
  model: resourceState.thread.model,
4744
4775
  modelProvider: resourceState.thread.modelProvider,
4745
4776
  authProfileId: startupAuthProfileId,
4746
- mirroredMessages: mirrorOutcome.mirroredMessages,
4747
- settledMessages: result.messagesSnapshot,
4777
+ mirroredMessages: [...evidencePrefix, ...mirrorOutcome.mirroredMessages],
4778
+ settledMessages: [...evidencePrefix, ...result.messagesSnapshot],
4779
+ ...continuedPromptIdentity ? { promptIdentity: continuedPromptIdentity } : {},
4748
4780
  turnId: activeTurnId,
4781
+ promptSuppressed: params.suppressNextUserMessagePersistence === true && !params.userTurnTranscriptRecorder,
4749
4782
  signal: params.abortSignal,
4750
4783
  assertActive: connection.assertCurrent,
4751
4784
  withCurrent: connection.withCurrent
@@ -4906,12 +4939,13 @@ function createCodexAttemptLifecycleController(resources, turnRuntime) {
4906
4939
  const { params, attemptStartedAt, runAbortController, fastModeAutoStartedAtMs, fastModeAutoProgressState } = connection;
4907
4940
  const { state, activeTurnItemIds, pendingOpenClawDynamicToolCompletionIds } = turnRuntime;
4908
4941
  const batchHadNonTerminalResult = () => state.currentTurnHadNonTerminalDynamicToolResult && !state.currentTurnHadToolAuthoredFinalReply;
4942
+ let terminalSteeringDrainPending = false;
4909
4943
  const scheduleTerminalDynamicToolReleaseCheck = () => {
4910
- if (state.terminalDynamicToolReleaseCheckScheduled || !state.pendingTerminalDynamicToolRelease && !state.currentTurnHadNonTerminalDynamicToolResult) return;
4944
+ if (state.terminalDynamicToolReleaseCheckScheduled || terminalSteeringDrainPending || !state.pendingTerminalDynamicToolRelease && !state.currentTurnHadNonTerminalDynamicToolResult) return;
4911
4945
  state.terminalDynamicToolReleaseCheckScheduled = true;
4912
4946
  setImmediate(() => {
4913
4947
  state.terminalDynamicToolReleaseCheckScheduled = false;
4914
- if (state.pendingTerminalDynamicToolRelease?.response.success === true && !batchHadNonTerminalResult() && state.activeAppServerTurnRequests === 0 && pendingOpenClawDynamicToolCompletionIds.size === 0) turnRuntime.steeringQueueRef.current?.cancel();
4948
+ if (state.pendingTerminalDynamicToolRelease?.response.success === true && !batchHadNonTerminalResult() && state.activeAppServerTurnRequests === 0 && pendingOpenClawDynamicToolCompletionIds.size === 0) turnRuntime.steeringQueueRef.current?.sealAdmission();
4915
4949
  if (state.activeAppServerTurnRequests > 0 || activeTurnItemIds.size > 0 || pendingOpenClawDynamicToolCompletionIds.size > 0) return;
4916
4950
  if (batchHadNonTerminalResult()) {
4917
4951
  state.pendingTerminalDynamicToolRelease = void 0;
@@ -4921,6 +4955,15 @@ function createCodexAttemptLifecycleController(resources, turnRuntime) {
4921
4955
  }
4922
4956
  const value = state.pendingTerminalDynamicToolRelease;
4923
4957
  if (!value || state.completed || runAbortController.signal.aborted || !value.response.success || state.activeAppServerTurnRequests !== 0 || activeTurnItemIds.size !== 0 || pendingOpenClawDynamicToolCompletionIds.size !== 0) return;
4958
+ const steeringDrain = turnRuntime.steeringQueueRef.current?.drainBeforeCancel();
4959
+ if (steeringDrain) {
4960
+ terminalSteeringDrainPending = true;
4961
+ steeringDrain.then(() => {
4962
+ terminalSteeringDrainPending = false;
4963
+ scheduleTerminalDynamicToolReleaseCheck();
4964
+ });
4965
+ return;
4966
+ }
4924
4967
  state.pendingTerminalDynamicToolRelease = void 0;
4925
4968
  state.currentTurnHadToolAuthoredFinalReply = false;
4926
4969
  trajectoryRecorder?.recordEvent("turn.dynamic_tool_terminal_release", {
@@ -4937,7 +4980,6 @@ function createCodexAttemptLifecycleController(resources, turnRuntime) {
4937
4980
  tool: value.call.tool,
4938
4981
  durationMs: value.durationMs
4939
4982
  });
4940
- turnRuntime.steeringQueueRef.current?.cancel();
4941
4983
  turnRuntime.interruptTurn(value.call.turnId, { locallyCompleted: true });
4942
4984
  turnRuntime.completeTurn();
4943
4985
  }).unref?.();
@@ -5639,22 +5681,63 @@ function createNativeSubagentAssignmentStore(params) {
5639
5681
  const binding = bindingStore.read(identity);
5640
5682
  if (!binding || !matchesCodexNativeSubagentSubmissionBinding(binding, owner)) throw new Error("Native assignment binding is no longer current.");
5641
5683
  };
5642
- const mutate = (kind) => (assignment, assertSourceCurrent) => bindingStore.mutate(identity, {
5643
- kind,
5644
- owner,
5645
- assignment
5646
- }, () => {
5647
- assertCurrent();
5648
- assertSourceCurrent();
5649
- });
5650
5684
  return {
5651
5685
  assertCurrent,
5652
5686
  read: () => {
5653
5687
  assertCurrent();
5654
5688
  return bindingStore.readNativeSubagentAssignments?.(identity, owner) ?? [];
5655
5689
  },
5656
- record: mutate("record-native-subagent-assignment"),
5657
- consume: mutate("consume-native-subagent-assignment")
5690
+ record: (assignment, assertSourceCurrent) => bindingStore.mutate(identity, {
5691
+ kind: "record-native-subagent-assignment",
5692
+ owner,
5693
+ assignment
5694
+ }, () => {
5695
+ assertCurrent();
5696
+ assertSourceCurrent();
5697
+ }),
5698
+ consume: async (assignment, assertSourceCurrent, undelivered) => {
5699
+ const applied = await bindingStore.mutate(identity, {
5700
+ kind: "consume-native-subagent-assignment",
5701
+ owner,
5702
+ assignment,
5703
+ ...undelivered ? { undelivered: true } : {}
5704
+ }, () => {
5705
+ assertCurrent();
5706
+ assertSourceCurrent();
5707
+ });
5708
+ if (applied && undelivered) {
5709
+ embeddedAgentLog.warn("Native subagent completion retired without delivery", {
5710
+ childThreadId: assignment.childThreadId,
5711
+ nativeTurnId: assignment.nativeTurnId,
5712
+ status: undelivered.status,
5713
+ childSessionKey: assignment.runId
5714
+ });
5715
+ try {
5716
+ if (identity.kind !== "session" || !identity.sessionKey) throw new Error("Native completion has no parent transcript identity.");
5717
+ const note = await appendSessionTranscriptMessageByIdentityStrict({
5718
+ agentId: identity.agentId,
5719
+ sessionId: owner.sessionId,
5720
+ sessionKey: identity.sessionKey,
5721
+ updateMode: "inline",
5722
+ message: {
5723
+ role: "custom",
5724
+ customType: "openclaw.system-note",
5725
+ display: true,
5726
+ content: `Native subagent ${assignment.childThreadId} finished with status ${undelivered.status}, but its completion could not be delivered. Automatic delivery has stopped. Inspect its native Codex thread history${assignment.nativeTurnId ? ` at turn ${assignment.nativeTurnId}` : ""}; child session key: ${assignment.runId}.`.slice(0, 2048),
5727
+ timestamp: Date.now(),
5728
+ idempotencyKey: `codex-undelivered:${owner.lifecycleRevision ?? owner.sessionId}:${assignment.childThreadId}:${assignment.nativeTurnId ?? "initial"}`
5729
+ }
5730
+ });
5731
+ if (note.kind !== "result") throw new Error(`Native completion note was ${note.kind}.`);
5732
+ } catch (error) {
5733
+ embeddedAgentLog.warn("Could not persist native completion retirement note", {
5734
+ childSessionKey: assignment.runId,
5735
+ error: formatErrorMessage(error)
5736
+ });
5737
+ }
5738
+ }
5739
+ return applied;
5740
+ }
5658
5741
  };
5659
5742
  }
5660
5743
  //#endregion
@@ -6305,8 +6388,7 @@ async function prepareCodexAttemptRuntime(connection) {
6305
6388
  nativeToolSurfaceEnabled = false;
6306
6389
  embeddedAgentLog.info("Codex managed-only hooks require sandbox-backed OpenClaw tools");
6307
6390
  } finally {
6308
- if (attemptClientFactory === createIsolatedCodexAppServerClient) await client.closeAndWait();
6309
- else releaseLeasedSharedCodexAppServerClient(client);
6391
+ await releaseCodexProbeClient(client, attemptClientFactory);
6310
6392
  }
6311
6393
  }
6312
6394
  const configuredMcpSurface = params.requireWorkspaceOnly === true ? void 0 : scheduledConfiguredMcpSurface ? "scheduled" : !nativeToolSurfaceEnabled && bundleMcpThreadConfig.staticServerNames.length > 0 ? "transient" : void 0;
@@ -6703,7 +6785,7 @@ function createCodexAttemptServerRequestController(resources, turnRuntime, lifec
6703
6785
  //#region extensions/codex/src/app-server/attempt-runtime-artifact.ts
6704
6786
  async function verifyStartupArtifact(params) {
6705
6787
  if (!params.request) return;
6706
- const { readCodexAppServerClientRuntimeArtifact, validateCodexAppServerRuntimeArtifact } = await import("./runtime-artifact-CCPLKFGR.mjs");
6788
+ const { readCodexAppServerClientRuntimeArtifact, validateCodexAppServerRuntimeArtifact } = await import("./runtime-artifact-Ch7fCcgJ.mjs");
6707
6789
  const runtimeArtifact = readCodexAppServerClientRuntimeArtifact(params.client);
6708
6790
  const expected = params.request.expected;
6709
6791
  const matchesExpected = !expected || runtimeArtifact?.id === expected.id && runtimeArtifact.fingerprint === expected.fingerprint;
@@ -7532,7 +7614,7 @@ async function prepareCodexAttemptTools(runtime) {
7532
7614
  }
7533
7615
  });
7534
7616
  } finally {
7535
- releaseLeasedSharedCodexAppServerClient(client);
7617
+ await releaseCodexProbeClient(client, connection.attemptClientFactory);
7536
7618
  }
7537
7619
  }
7538
7620
  let requireExplicitMessageTarget;
@@ -8477,7 +8559,7 @@ function createCodexAttemptTurnState(resources) {
8477
8559
  onDeadlineChanged: params.onAttemptDeadlineChanged,
8478
8560
  onTimeout: (timeout) => {
8479
8561
  const pendingStage = state.pendingSettlementStage ?? projectorRef.current?.settlement.pendingStage ?? "notification_queue";
8480
- if (timeout.kind === "settlement" && projectorRef.current?.recoverCompletedAnswer()) {
8562
+ if (timeout.kind === "settlement" && projectorRef.current?.recoverCompletedAnswer(prompt.context.attemptTools.toolBridge.telemetry, { readRetainedNativeCommands: state.readRetainedNativeCommands })) {
8481
8563
  state.settlementWarning = {
8482
8564
  pendingStage,
8483
8565
  elapsedMs: timeout.elapsedMs,
@@ -1,7 +1,7 @@
1
1
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
2
- import { a as resolvePackagedCodexNativeCommand } from "./managed-binary-DwC9wxch.mjs";
3
- import { n as resolveCodexAppServerSpawnEnv, r as resolveCodexAppServerSpawnInvocation } from "./transport-stdio-lgeKKHyw.mjs";
4
- import { captureCodexConfiguredConnection, finalizeCodexConfiguredConnection, isCodexConfiguredConnectionArtifact, validateCodexConfiguredConnectionCapture } from "./runtime-artifact-connection-dFoSOKy7.mjs";
2
+ import { a as resolvePackagedCodexNativeCommand } from "./managed-binary-Boj8_lWV.mjs";
3
+ import { n as resolveCodexAppServerSpawnEnv, r as resolveCodexAppServerSpawnInvocation } from "./transport-stdio-BsXQmXll.mjs";
4
+ import { captureCodexConfiguredConnection, finalizeCodexConfiguredConnection, isCodexConfiguredConnectionArtifact, validateCodexConfiguredConnectionCapture } from "./runtime-artifact-connection-C3ootnwd.mjs";
5
5
  import { createHash } from "node:crypto";
6
6
  import { resolveWindowsExecutablePath } from "openclaw/plugin-sdk/windows-spawn";
7
7
  import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
@@ -1,6 +1,6 @@
1
1
  import { t as codexAppServerStartOptionsKey } from "./config-options-CZmH25Xq.mjs";
2
- import "./config-runtime-DGB1-VbB.mjs";
3
- import { r as resolveCodexAppServerUnixSocketPath } from "./transport-websocket-CEBjEtFP.mjs";
2
+ import "./config-runtime-BUH-IDVE.mjs";
3
+ import { r as resolveCodexAppServerUnixSocketPath } from "./transport-websocket-B5mq2Iq2.mjs";
4
4
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { createHash } from "node:crypto";
6
6
  import path from "node:path";
@@ -1,6 +1,6 @@
1
1
  import { l as isCodexRemoteExecPlacementSandbox } from "./config-parsing-CVK2Q463.mjs";
2
2
  import { n as resolveCodexNativeExecutionPolicy, t as formatCodexNativeNodeExecBlock } from "./native-execution-policy-MXEe7PB3.mjs";
3
- import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
3
+ import { t as __exportAll } from "./session-binding-sidecars-CAHe3enw.mjs";
4
4
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { tryResolveDefaultAgentId } from "openclaw/plugin-sdk/agent-scope-runtime";
6
6
  import { parseAgentSessionKey } from "openclaw/plugin-sdk/routing";