@openclaw/codex 2026.10.5 → 2026.10.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 (82) hide show
  1. package/dist/.setup/{account-usage-runtime-Dqpnnkst.mjs → account-usage-runtime-gzHf_Qtb.mjs} +3 -3
  2. package/dist/.setup/{app-server-policy-XTIa6h5k.mjs → app-server-policy-V8zuN8q_.mjs} +1 -1
  3. package/dist/.setup/{apply-QyZT5-na.mjs → apply-BaBl0hiG.mjs} +14 -14
  4. package/dist/.setup/{attempt-client-cleanup-TScCVTsk.mjs → attempt-client-cleanup-jWVRH043.mjs} +4 -4
  5. package/dist/.setup/{attempt-workspace-context-Cr3mI4vp.mjs → attempt-workspace-context-BkA0W8Jy.mjs} +1 -1
  6. package/dist/.setup/{auth-cache-key-DvDLHVJe.mjs → auth-cache-key-DrieYJUQ.mjs} +4 -3
  7. package/dist/.setup/{auth-profile-health-oHizqgye.mjs → auth-profile-health-B05o5BAm.mjs} +12 -5
  8. package/dist/.setup/{binding-connection-X1ZeEDz8.mjs → binding-connection-C0t9TBX_.mjs} +1 -1
  9. package/dist/.setup/{binding-connection.runtime-CZSz0g4u.mjs → binding-connection.runtime-Wdm5G_bw.mjs} +1 -1
  10. package/dist/.setup/{bounded-turn-isolation-Brj5qzz6.mjs → bounded-turn-isolation-CIQJykuM.mjs} +3 -3
  11. package/dist/.setup/{bounded-turn-BpjZixcd.mjs → bounded-turn-s9yVsxaM.mjs} +13 -12
  12. package/dist/.setup/{build-state-DfrctLQv.mjs → build-state-B5mKL-in.mjs} +1 -1
  13. package/dist/.setup/{client-BpSxNz4F.mjs → client-BM97zH3z.mjs} +19 -15
  14. package/dist/.setup/{client-catalog-response-DloWE31e.mjs → client-catalog-response-DhB266B_.mjs} +1 -1
  15. package/dist/.setup/{command-dispatch-CIdf7ZvD.mjs → command-dispatch-DsaWfzET.mjs} +1 -1
  16. package/dist/.setup/{command-handlers-C2XNDeHL.mjs → command-handlers-zgDE_J40.mjs} +16 -16
  17. package/dist/.setup/{command-rpc-DpmvEmhc.mjs → command-rpc-CAG1xrqm.mjs} +8 -8
  18. package/dist/.setup/{compact-DpCHUqU5.mjs → compact-BZK-e5zD.mjs} +10 -10
  19. package/dist/.setup/{computer-use-BgGC32hr.mjs → computer-use-CZhx4nNO.mjs} +7 -7
  20. package/dist/.setup/{config-G4IGX6bK.mjs → config-LQemoqTL.mjs} +3 -3
  21. package/dist/.setup/{config-options-nvYwVDyy.mjs → config-options-CZmH25Xq.mjs} +1 -1
  22. package/dist/.setup/{config-runtime-B8agjie6.mjs → config-runtime-DGB1-VbB.mjs} +1 -1
  23. package/dist/.setup/{config-security-D0hAOQRI.mjs → config-security-DpkGNy5T.mjs} +1 -1
  24. package/dist/.setup/{conversation-binding-BCoWi2Kn.mjs → conversation-binding-qGuQR4jw.mjs} +38 -29
  25. package/dist/.setup/{conversation-control--OHH2dHA.mjs → conversation-control-BtPxevoK.mjs} +1 -1
  26. package/dist/.setup/{doctor-start-options-DedLaoqI.mjs → doctor-start-options-C28ek2hD.mjs} +3 -3
  27. package/dist/.setup/{dynamic-tool-build-CoMf7IKx.mjs → dynamic-tool-build-Dp4v52Kl.mjs} +3 -3
  28. package/dist/.setup/{dynamic-tools-CKynHtxM.mjs → dynamic-tools-C1Egdhrx.mjs} +10 -10
  29. package/dist/.setup/{effective-mcp-catalog-DXGsGC1j.mjs → effective-mcp-catalog-BNwgItdW.mjs} +4 -4
  30. package/dist/.setup/{ephemeral-turn-C6aFeGFS.mjs → ephemeral-turn-DeppK8zz.mjs} +2 -2
  31. package/dist/.setup/{inference-proxy-BDWV0djM.mjs → inference-proxy-DSnaS-uS.mjs} +5 -4
  32. package/dist/.setup/{isolated-completion-DVDn5GU5.mjs → isolated-completion-BUS9Mqfm.mjs} +6 -6
  33. package/dist/.setup/{mcp-app-session-preparation-Cnmuh9RT.mjs → mcp-app-session-preparation-D9F1O5si.mjs} +8 -8
  34. package/dist/.setup/{model-catalog-DRbHoUhG.mjs → model-catalog-BBg4thof.mjs} +7 -7
  35. package/dist/.setup/{models-GBLXb27n.mjs → models-B65GHU4g.mjs} +3 -3
  36. package/dist/.setup/{native-auth-DWrRSl4Z.mjs → native-auth-CveRfTpz.mjs} +1 -1
  37. package/dist/.setup/{native-hook-relay-BQ9UkpeG.mjs → native-hook-relay-Ctyky2Qt.mjs} +5 -5
  38. package/dist/.setup/{native-mcp-app-DIheNk35.mjs → native-mcp-app-DprMGBqj.mjs} +4 -4
  39. package/dist/.setup/{native-skill-isolation-CxZRtiWZ.mjs → native-skill-isolation-C4XYLm33.mjs} +3 -3
  40. package/dist/.setup/{native-subagent-monitor-gqu3TQOv.mjs → native-subagent-monitor-CJaIve3h.mjs} +66 -19
  41. package/dist/.setup/{plan-DZWYASAx.mjs → plan-GqWF4XGA.mjs} +4 -4
  42. package/dist/.setup/{plugin-activation-CsW09DWl.mjs → plugin-activation-BgfNFH2L.mjs} +2 -2
  43. package/dist/.setup/{plugin-approval-roundtrip-HbFUm9Pp.mjs → plugin-approval-roundtrip-x7UI_uqk.mjs} +1 -1
  44. package/dist/.setup/{plugin-inventory-kLR7G02h.mjs → plugin-inventory-OhiCoyPH.mjs} +1 -1
  45. package/dist/.setup/{project-doc-thread-config-B2ZD23A_.mjs → project-doc-thread-config-D_sWbxFR.mjs} +5 -5
  46. package/dist/.setup/{provider-BiUzaRth.mjs → provider-Bi9QCsg1.mjs} +4 -4
  47. package/dist/.setup/{provider-capabilities-DOBUBt86.mjs → provider-capabilities-BCZeV7xZ.mjs} +1 -1
  48. package/dist/.setup/{request-DhbisYCc.mjs → request-XC1RG34l.mjs} +2 -2
  49. package/dist/.setup/{run-attempt-WbitbMr6.mjs → run-attempt-8U2CrqjW.mjs} +142 -81
  50. package/dist/.setup/{runtime-artifact-nFHy1R0x.mjs → runtime-artifact-CCPLKFGR.mjs} +1 -1
  51. package/dist/.setup/{runtime-artifact-connection-XSifLLBH.mjs → runtime-artifact-connection-dFoSOKy7.mjs} +3 -3
  52. package/dist/.setup/{session-catalog-events-IoszcO7-.mjs → session-catalog-events-CpEyDv0D.mjs} +4 -4
  53. package/dist/.setup/{session-catalog-index-_4Z5quG3.mjs → session-catalog-index-DpYCf1-8.mjs} +4 -4
  54. package/dist/.setup/{session-catalog-native-projection-imNPfB3q.mjs → session-catalog-native-projection-BYV0ICja.mjs} +1 -1
  55. package/dist/.setup/{session-catalog-projection-BFp1d3bJ.mjs → session-catalog-projection-B0IyXrHt.mjs} +1 -1
  56. package/dist/.setup/{session-catalog-source-CgWkqG43.mjs → session-catalog-source-CfIBVrbT.mjs} +1 -1
  57. package/dist/.setup/{session-permission-policy-BYI6mp5u.mjs → session-permission-policy-C7kYxPGd.mjs} +1 -1
  58. package/dist/.setup/{session-retirement-AhaR7MAp.mjs → session-retirement-CKIS7jFv.mjs} +5 -5
  59. package/dist/.setup/{settled-turn-finalizer-Blsc4VLX.mjs → settled-turn-finalizer-CnIWbqN7.mjs} +4 -4
  60. package/dist/.setup/{shared-client-wb1JBldZ.mjs → shared-client-AdQX0Tdq.mjs} +72 -17
  61. package/dist/.setup/{side-question-DNEeROvz.mjs → side-question-ZVehuPZn.mjs} +17 -17
  62. package/dist/.setup/{source-BjBw-zoV.mjs → source-BszpKEvi.mjs} +3 -3
  63. package/dist/.setup/{thread-lifecycle-run-DdwKMIae.mjs → thread-lifecycle-run-DezS4UNT.mjs} +77 -38
  64. package/dist/.setup/{thread-ownership-CTUs8Eyu.mjs → thread-ownership-OXzPB_RV.mjs} +3 -3
  65. package/dist/.setup/{thread-policy-BMRvlOi-.mjs → thread-policy-Dp4CQjdL.mjs} +3 -3
  66. package/dist/.setup/{thread-requests-BqPhA4Gs.mjs → thread-requests-DjyDmCo4.mjs} +2 -2
  67. package/dist/.setup/{thread-resume-CD48Vab8.mjs → thread-resume-8YKfRoX6.mjs} +4 -4
  68. package/dist/.setup/{transport-websocket-DOY0dJXN.mjs → transport-websocket-CEBjEtFP.mjs} +1 -1
  69. package/dist/.setup/{turn-router-DdlzuFdm.mjs → turn-router-DnfbVPvu.mjs} +1 -1
  70. package/dist/.setup/{upstream-session-fork-BF0c69x6.mjs → upstream-session-fork-BhADVCrb.mjs} +14 -14
  71. package/dist/.setup/{usage-BsMyAOaB.mjs → usage-BoTUkAoJ.mjs} +3 -3
  72. package/dist/.setup/{usage-limit-error-hLIGKewV.mjs → usage-limit-error-EoQ7Vl2A.mjs} +1 -1
  73. package/dist/.setup/{web-search-provider.runtime-BJK0lNpc.mjs → web-search-provider.runtime-Cc6vN-2C.mjs} +2 -2
  74. package/dist/.setup/{workspace-write-sandbox-probe-Cyn6cBsp.mjs → workspace-write-sandbox-probe-DvfWTvuR.mjs} +1 -1
  75. package/dist/api.js +3 -3
  76. package/dist/catalog-page.worker.js +1 -1
  77. package/dist/harness.js +18 -18
  78. package/dist/index.js +33 -33
  79. package/dist/media-understanding-provider.js +2 -2
  80. package/dist/migration-provider-api.js +1 -1
  81. package/dist/provider-discovery.js +1 -1
  82. package/package.json +5 -5
@@ -2,13 +2,13 @@ import { n as readCodexRuntimeModelId } from "./model-runtime-BdqzOMkU.mjs";
2
2
  import { g as createCodexNativeSubagentHistoryOwner } from "./native-subagent-pending-assignments-DmVhedNs.mjs";
3
3
  import { i as isJsonObject, r as flattenCodexDynamicToolFunctions } from "./protocol-CANUwXJ3.mjs";
4
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-DfrctLQv.mjs";
6
- import { c as withMcpElicitationsApprovalPolicy, d as readCodexRequirementsToml, n as hasCodexMcpToolApprovalOverrides, s as shouldAutoApproveCodexAppServerApprovals } from "./config-security-D0hAOQRI.mjs";
5
+ import { n as defineCodexBuildState } from "./build-state-B5mKL-in.mjs";
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
- import { i as resolveCodexAppServerHomeScope, l as resolveCodexModelBackedReviewerPolicyContext, o as resolveCodexComputerUseConfig } from "./config-options-nvYwVDyy.mjs";
11
- import { c as resolveCodexAppServerPreparedApiKeyCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey, w as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-DvDLHVJe.mjs";
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-DrieYJUQ.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-X1ZeEDz8.mjs";
20
- import { n as requestCodexAppServerClientJson } from "./request-DhbisYCc.mjs";
21
- import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-G4IGX6bK.mjs";
19
+ import { i as resolveCodexBindingAppServerConnection, r as requireCodexSupervisionModelSelection, t as assertCodexSessionRuntimeOwnership } from "./binding-connection-C0t9TBX_.mjs";
20
+ import { n as requestCodexAppServerClientJson } from "./request-XC1RG34l.mjs";
21
+ import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-LQemoqTL.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, I as ensureCodexAppServerClientRuntime, M as getCodexInferenceThreadQualification, U as prepareCodexWorkspaceReferences, W as protectCodexAppServerLiveThread, X as readCodexRateLimitsRevision, Z as readRecentCodexRateLimits, _ as retainSharedCodexAppServerClientIfCurrent, a as clearSharedCodexAppServerClientIfCurrentAndUnclaimed, c as getLeasedSharedCodexAppServerClient, dt as TURN_FINALIZE_DRAIN_ABORT_GRACE_MS, f as readCodexAppServerClientDesktopGenerationFingerprint, ft as TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS, gt as withCodexStartupTimeout, h as releaseLeasedSharedCodexAppServerClient, ht as resolveCodexStartupTimeoutMs, i as clearSharedCodexAppServerClientIfCurrent, j as getCodexInferenceThread, l as getSharedCodexAppServerClient, nt as resolveCodexAppServerPreparedAuthHandoff, s as createIsolatedCodexAppServerClient, tt as resolveCodexAppServerAuthAccountCacheKey, u as isCodexAppServerStartSelectionChangedError, ut as CodexAppServerStartupError, w as CodexThreadClientReplacementError, x as CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED } from "./shared-client-wb1JBldZ.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-AdQX0Tdq.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-BpSxNz4F.mjs";
29
- import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-DOY0dJXN.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-DdlzuFdm.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-TScCVTsk.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-BM97zH3z.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-DnfbVPvu.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-jWVRH043.mjs";
32
32
  import { r as prepareCodexAppServerAuthBinding } from "./auth-binding-BFTkrP_b.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-GBLXb27n.mjs";
35
- import { d as mergeCodexThreadConfigs } from "./project-doc-thread-config-B2ZD23A_.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-BqPhA4Gs.mjs";
34
+ import { n as listAllCodexAppServerModels } from "./models-B65GHU4g.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
37
  import { i as resolveCodexSessionBinding, n as createCodexSessionGenerationSupersededError, t as clearCodexBindingForClient } from "./session-binding-BDnNz-Co.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-hLIGKewV.mjs";
40
- import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-CTUs8Eyu.mjs";
39
+ import { a as resolveCodexPromptError, i as refreshCodexUsageLimitPromptError, n as formatCodexTurnStartUsageLimitError, r as markCodexAuthProfileBlockedFromRateLimits, t as CodexUsageLimitPromptError } from "./usage-limit-error-EoQ7Vl2A.mjs";
40
+ import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-OXzPB_RV.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-gqu3TQOv.mjs";
43
- import { a as requestPluginApprovalOutcome } from "./plugin-approval-roundtrip-HbFUm9Pp.mjs";
44
- import { n as CodexThreadPolicyHandoffError, s as restoreCodexThreadInstructionsAfterCompaction } from "./thread-policy-BMRvlOi-.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-CJaIve3h.mjs";
43
+ import { a as requestPluginApprovalOutcome } from "./plugin-approval-roundtrip-x7UI_uqk.mjs";
44
+ import { n as CodexThreadPolicyHandoffError, s as restoreCodexThreadInstructionsAfterCompaction } from "./thread-policy-Dp4CQjdL.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-CoMf7IKx.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-BQ9UkpeG.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-DdwKMIae.mjs";
53
- import { i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, r as resolveCodexEffectiveSessionPermissionPolicy } from "./session-permission-policy-BYI6mp5u.mjs";
54
- import { o as hasCodexNativeToolCatalog, s as loadCodexNativeToolCatalog } from "./native-skill-isolation-CxZRtiWZ.mjs";
55
- import { r as prepareCodexNativeMcpFormResourceContext, t as createCodexNativeMcpAppResultDetailsPreparer } from "./native-mcp-app-DIheNk35.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-CKynHtxM.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-Dp4v52Kl.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-Ctyky2Qt.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-DezS4UNT.mjs";
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-C4XYLm33.mjs";
55
+ import { r as prepareCodexNativeMcpFormResourceContext, t as createCodexNativeMcpAppResultDetailsPreparer } from "./native-mcp-app-DprMGBqj.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-C1Egdhrx.mjs";
57
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-XTIa6h5k.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-Cr3mI4vp.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";
60
60
  import { n as captureCodexSettledTurnFinalizationContext } from "./settled-turn-context-BPL6D3RO.mjs";
61
- import { t as resolveCodexProviderWebSearchSupport } from "./provider-capabilities-DOBUBt86.mjs";
62
- import { a as runCodexComputerUseLiveTest, i as createComputerUseRequest, t as ensureCodexComputerUse } from "./computer-use-BgGC32hr.mjs";
61
+ import { t as resolveCodexProviderWebSearchSupport } from "./provider-capabilities-BCZeV7xZ.mjs";
62
+ import { a as runCodexComputerUseLiveTest, i as createComputerUseRequest, t as ensureCodexComputerUse } from "./computer-use-CZhx4nNO.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,12 +69,12 @@ 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
73
  import { addAbortListener } from "node:events";
73
74
  import { isIncognitoSessionKey } from "openclaw/plugin-sdk/session-key-runtime";
74
75
  import { Type } from "typebox";
75
76
  import { createDiagnosticTraceContextFromActiveScope, emitTrustedDiagnosticEvent, emitTrustedDiagnosticEventWithPrivateData, freezeDiagnosticTraceContext, onInternalDiagnosticEvent, resolveDiagnosticModelContentCapturePolicy } from "openclaw/plugin-sdk/diagnostic-runtime";
76
77
  import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
77
- import { createStageTimingTracker, formatStageTimings } from "openclaw/plugin-sdk/time-runtime";
78
78
  import { Buffer as Buffer$1 } from "node:buffer";
79
79
  import { resolveAgentDir as resolveAgentDir$1 } from "openclaw/plugin-sdk/agent-runtime";
80
80
  import { AgentHarnessPreflightError, CODEX_APP_SERVER_CONTEXT_ENGINE_HOST, FAST_MODE_AUTO_PROGRESS_KIND, HEARTBEAT_RESPONSE_TOOL_NAME, agentHarnessStructuredInput, applyEmbeddedAttemptToolsAllow, assembleHarnessContextEngine, assertContextEngineHostSupport, bootstrapHarnessContextEngine, buildAgentHookContextChannelFields, buildEmbeddedForegroundPromptContext, buildHarnessContextEngineRuntimeContext, cancelPendingAgentQuestionForSession, claimPendingAgentQuestionAnswer, classifyAgentHarnessTerminalOutcome, clearActiveEmbeddedRun, detectAndLoadAgentHarnessPromptImages, embeddedAgentLog, emptyAgentHarnessUserInputAnswers, formatErrorMessage, formatFastModeAutoProgressText, getAgentHarnessHookRunner, hasBeforeToolCallPolicy, inferToolMetaFromArgs, isActiveHarnessContextEngine, isHostScopedAgentToolActive, loadCodexBundleMcpThreadConfig, materializeRequesterScopedMcpToolsForHarnessRun, normalizeHeartbeatToolResponse, prepareWatchedSessionsHarnessContext, projectAgentHarnessTranscriptMessageForDisplay, projectAgentToolActivity, projectProgressCardChannelUpdate, resolveAgentDir as resolveAgentDir$2, resolveAgentHarnessBeforePromptBuildResult, resolveAgentRunAbortLifecycleFields, resolveAttemptFsWorkspaceOnly, resolveContextEngineOwnerPluginId, resolveFastModeForElapsed, resolveSandboxContext, resolveUserPath, runAgentHarnessAfterCompactionHook, runAgentHarnessBeforeCompactionHook, runAgentHarnessLlmInputHook, runAgentHarnessLlmOutputHook, runHarnessContextEngineMaintenance, setActiveEmbeddedRun, supportsModelTools } from "openclaw/plugin-sdk/agent-harness-runtime";
@@ -1558,6 +1558,26 @@ var CodexProjectionSettlement = class extends AgentHarnessProjectionSettlement {
1558
1558
  };
1559
1559
  /** Owns per-turn projection state and builds results from the same state. */
1560
1560
  var CodexTurnProjection = class {
1561
+ /** Materialize terminal native-tool gaps while the durable checkpoint is still open. */
1562
+ prepareTerminalToolResultCheckpoint(toolTelemetry, options) {
1563
+ const retainedCommands = /* @__PURE__ */ new Map();
1564
+ if (!this.aborted && !this.options.runAbortSignal?.aborted && this.completedTurn?.status === "completed" && !this.promptError) {
1565
+ const pending = this.nativeToolLifecycleProjector.pendingCommands();
1566
+ for (const [id, processId] of options?.readRetainedNativeCommands?.() ?? []) if (pending.has(id) && (pending.get(id) === null || pending.get(id) === processId)) retainedCommands.set(id, processId);
1567
+ }
1568
+ this.nativeToolLifecycleProjector.finalizeActive(void 0, retainedCommands);
1569
+ const rawAssistantTexts = toolTelemetry.sourceReplyDelivered ? [] : this.assistantProjection.collectAssistantTexts();
1570
+ const hasDeliverableAssistantOnCompletedTurn = this.completedTurn?.status === "completed" && rawAssistantTexts.some((text) => text.trim().length > 0);
1571
+ const synthesized = this.toolTranscriptProjection.synthesizeMissingToolResults({
1572
+ synthesize: !this.completedTurn || this.completedTurn.status !== "completed" || this.assistantProjection.hasAssistantItemTextForSynthesis(),
1573
+ retainedCommands,
1574
+ terminalDisposition: this.aborted ? "tool_error" : hasDeliverableAssistantOnCompletedTurn ? "diagnostic_only" : "prompt_error"
1575
+ });
1576
+ if (synthesized) {
1577
+ this.synthesizedMissingToolResultError = synthesized;
1578
+ this.promptErrorSource ??= "prompt";
1579
+ }
1580
+ }
1561
1581
  constructor(params, threadId, turnId, options = {}) {
1562
1582
  this.params = params;
1563
1583
  this.threadId = threadId;
@@ -1604,7 +1624,8 @@ var CodexTurnProjection = class {
1604
1624
  }
1605
1625
  buildResult(toolTelemetry, options) {
1606
1626
  this.eventProjection.flushPendingGuardianWarning();
1607
- const { params: runParams, turnId, completedTurn, aborted, contextTokens, contextTokensSource, completedCompactionCount, synthesizedMissingToolResultError: previousMissingToolResultError, promptError: initialPromptError, promptErrorSource: initialPromptErrorSource, providerRefusal } = this;
1627
+ this.prepareTerminalToolResultCheckpoint(toolTelemetry, options);
1628
+ const { params: runParams, turnId, completedTurn, aborted, contextTokens, contextTokensSource, completedCompactionCount, synthesizedMissingToolResultError, promptError: initialPromptError, promptErrorSource: initialPromptErrorSource, providerRefusal } = this;
1608
1629
  const upstreamUserText = this.options.upstreamUserText;
1609
1630
  const turnTainted = this.settlement.turnTainted;
1610
1631
  const observedItemCount = (/* @__PURE__ */ new Set([...this.observedItemIds, ...this.completedItemIds])).size;
@@ -1612,12 +1633,6 @@ var CodexTurnProjection = class {
1612
1633
  const completedItemCount = this.completedItemIds.size;
1613
1634
  const guardianReviewCount = this.eventProjection.guardianReviewCount;
1614
1635
  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
1636
  const assistantTexts = this.assistantProjection.collectAssistantTexts();
1622
1637
  const asyncMessages = this.assistantProjection.collectAsyncMessages();
1623
1638
  const commentaryMessages = this.assistantProjection.collectCommentaryMessages();
@@ -1628,20 +1643,8 @@ var CodexTurnProjection = class {
1628
1643
  ...usage,
1629
1644
  contextUsage: { state: "unavailable" }
1630
1645
  } : 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
- }
1646
+ const storedMissingToolResultError = synthesizedMissingToolResultError;
1647
+ const promptErrorSource = initialPromptErrorSource;
1645
1648
  const assistantMessageOptions = {
1646
1649
  tokenUsage: projectedUsage,
1647
1650
  aborted,
@@ -1755,15 +1758,16 @@ var CodexAppServerEventProjector = class extends CodexTurnProjection {
1755
1758
  return !this.projectionClosed && !this.aborted && !this.options.runAbortSignal?.aborted && this.completedTurn?.status === "completed" && !this.promptError ? this.nativeToolLifecycleProjector.pendingCommands() : /* @__PURE__ */ new Map();
1756
1759
  }
1757
1760
  /** Native completion owns the answer independently of unfinished host projection. */
1758
- recoverCompletedAnswer() {
1761
+ recoverCompletedAnswer(toolTelemetry, options) {
1759
1762
  const completed = this.settlement.completedAnswer;
1760
1763
  if (!completed || this.aborted || this.promptError) return false;
1761
- this.closeCompactionProgress();
1762
- this.projectionController.abort();
1763
- this.transcriptCheckpoint.abandon();
1764
1764
  this.completedTurn = completed.turn;
1765
1765
  this.assistantProjection.recordItemCompleted(completed.answer);
1766
1766
  this.assistantProjection.finalizeAnswerCandidate(completed.turn);
1767
+ this.prepareTerminalToolResultCheckpoint(toolTelemetry, options);
1768
+ this.closeCompactionProgress();
1769
+ this.projectionController.abort();
1770
+ this.transcriptCheckpoint.abandon();
1767
1771
  return true;
1768
1772
  }
1769
1773
  getActiveMcpToolCall(serverName) {
@@ -2989,6 +2993,7 @@ async function cleanupCodexAttempt(resources, turnRuntime, lifecycle, requestRun
2989
2993
  resourceState.releaseInferenceContext = void 0;
2990
2994
  prompt.context.attemptTools.scheduledAppAuthoritySourceRef.current = void 0;
2991
2995
  freezeRunTerminalOutcome();
2996
+ if (!state.projectionClosed) activeTurn.activeProjector.prepareTerminalToolResultCheckpoint(prompt.context.attemptTools.toolBridge.telemetry);
2992
2997
  const projectionClose = state.projectionClosed ? void 0 : activeTurn.activeProjector.closeProjection();
2993
2998
  state.projectionClosed = true;
2994
2999
  const checkpointCleanup = projectionClose ? runCleanupStep("codex-transcript-checkpoint", () => projectionClose) : void 0;
@@ -3338,6 +3343,7 @@ async function rotateOversizedCodexAppServerStartupBinding(params) {
3338
3343
  //#region extensions/codex/src/app-server/run-attempt-connection.ts
3339
3344
  async function prepareCodexAttemptConnection({ params, options }) {
3340
3345
  const attemptStartedAt = Date.now();
3346
+ const attemptStartedAtMonotonicMs = performance.now();
3341
3347
  const profilerEnabled = isCodexAppServerProfilerEnabled(params.config);
3342
3348
  const codexModelCallTrace = freezeDiagnosticTraceContext(createDiagnosticTraceContextFromActiveScope());
3343
3349
  const codexModelContentCapture = resolveDiagnosticModelContentCapturePolicy(params.config);
@@ -3700,6 +3706,7 @@ async function prepareCodexAttemptConnection({ params, options }) {
3700
3706
  releaseModelExecution,
3701
3707
  options,
3702
3708
  attemptStartedAt,
3709
+ attemptStartedAtMonotonicMs,
3703
3710
  profilerEnabled,
3704
3711
  codexModelCallTrace,
3705
3712
  codexModelContentCapture,
@@ -4349,6 +4356,7 @@ async function beginCodexAttemptSettlement(resources, turnRuntime, notifications
4349
4356
  const { state: resourceState } = resources;
4350
4357
  const { connection } = resources.prompt.context.runtime;
4351
4358
  const { params, runAbortController, appServer } = connection;
4359
+ const { toolBridge } = resources.prompt.context.attemptTools;
4352
4360
  const { state, deadlines, settlementExpired } = turnRuntime;
4353
4361
  const { drainNotificationQueue } = notifications;
4354
4362
  const { activeProjector, activeTurnId } = activeTurn;
@@ -4402,6 +4410,7 @@ async function beginCodexAttemptSettlement(resources, turnRuntime, notifications
4402
4410
  return /* @__PURE__ */ new Map();
4403
4411
  }
4404
4412
  };
4413
+ state.readRetainedNativeCommands = readRetainedNativeCommands;
4405
4414
  } catch (error) {
4406
4415
  embeddedAgentLog.debug("could not confirm retained native commands", {
4407
4416
  threadId: resourceState.thread.threadId,
@@ -4410,6 +4419,7 @@ async function beginCodexAttemptSettlement(resources, turnRuntime, notifications
4410
4419
  }
4411
4420
  await drainNotificationQueue();
4412
4421
  }
4422
+ activeProjector.prepareTerminalToolResultCheckpoint(toolBridge.telemetry, { readRetainedNativeCommands: () => readRetainedNativeCommands?.() ?? /* @__PURE__ */ new Map() });
4413
4423
  await closeProjection();
4414
4424
  await activeProjector.settlement.drain();
4415
4425
  }),
@@ -4547,7 +4557,10 @@ async function finalizeCodexAttempt(resources, turnRuntime, lifecycle, notificat
4547
4557
  ]);
4548
4558
  if (runAbortController.signal.aborted) await state.abortCleanup;
4549
4559
  } finally {
4550
- if (!state.projectionClosed) await resources.runCleanupStep("codex-transcript-checkpoint", closeProjection);
4560
+ if (!state.projectionClosed) {
4561
+ activeProjector.prepareTerminalToolResultCheckpoint(toolBridge.telemetry, { readRetainedNativeCommands });
4562
+ await resources.runCleanupStep("codex-transcript-checkpoint", closeProjection);
4563
+ }
4551
4564
  }
4552
4565
  const result = activeProjector.buildResult(toolBridge.telemetry, {
4553
4566
  yieldDetected: toolState.yieldDetected,
@@ -6701,7 +6714,7 @@ function createCodexAttemptServerRequestController(resources, turnRuntime, lifec
6701
6714
  //#region extensions/codex/src/app-server/attempt-runtime-artifact.ts
6702
6715
  async function verifyStartupArtifact(params) {
6703
6716
  if (!params.request) return;
6704
- const { readCodexAppServerClientRuntimeArtifact, validateCodexAppServerRuntimeArtifact } = await import("./runtime-artifact-nFHy1R0x.mjs");
6717
+ const { readCodexAppServerClientRuntimeArtifact, validateCodexAppServerRuntimeArtifact } = await import("./runtime-artifact-CCPLKFGR.mjs");
6705
6718
  const runtimeArtifact = readCodexAppServerClientRuntimeArtifact(params.client);
6706
6719
  const expected = params.request.expected;
6707
6720
  const matchesExpected = !expected || runtimeArtifact?.id === expected.id && runtimeArtifact.fingerprint === expected.fingerprint;
@@ -6810,6 +6823,17 @@ async function startCodexAttemptThread(params) {
6810
6823
  let releaseSharedClientLease;
6811
6824
  let startupClientForAbandonedRequestCleanup;
6812
6825
  let releaseStartupResourcesOnTimeout;
6826
+ const startupStartedAt = performance.now();
6827
+ let stage = "configuration";
6828
+ let stageStartedAt = startupStartedAt;
6829
+ let acquireBoundary;
6830
+ let startupIdentity;
6831
+ let startupAttemptNumber = 0;
6832
+ const enterStartupStage = (nextStage) => {
6833
+ stage = nextStage;
6834
+ stageStartedAt = performance.now();
6835
+ acquireBoundary = void 0;
6836
+ };
6813
6837
  const startupAbandonController = new AbortController();
6814
6838
  const abandonStartupAcquire = () => startupAbandonController.abort();
6815
6839
  params.signal.addEventListener("abort", abandonStartupAcquire, { once: true });
@@ -6818,6 +6842,21 @@ async function startCodexAttemptThread(params) {
6818
6842
  timeoutMs: params.startupTimeoutMs,
6819
6843
  signal: params.signal,
6820
6844
  onTimeout: async () => {
6845
+ try {
6846
+ const client = startupClientForAbandonedRequestCleanup;
6847
+ const now = performance.now();
6848
+ embeddedAgentLog.warn("codex app-server startup timed out", {
6849
+ ...startupIdentity,
6850
+ attempt: startupAttemptNumber,
6851
+ stage,
6852
+ stageElapsedMs: Math.max(0, Math.round(now - stageStartedAt)),
6853
+ elapsedMs: Math.max(0, Math.round(now - startupStartedAt)),
6854
+ timeoutMs: params.startupTimeoutMs,
6855
+ acquireBoundary,
6856
+ clientInstanceId: client?.getInstanceId(),
6857
+ clientPendingRequestMethods: client?.getPendingRequestMethods() ?? []
6858
+ });
6859
+ } catch {}
6821
6860
  startupAbandonController.abort();
6822
6861
  await params.onStartupTimeout();
6823
6862
  await releaseStartupResourcesOnTimeout?.();
@@ -6847,10 +6886,19 @@ async function startCodexAttemptThread(params) {
6847
6886
  let startupAttemptSucceeded = false;
6848
6887
  try {
6849
6888
  const attemptParams = params.buildAttemptParams();
6889
+ startupIdentity = {
6890
+ runId: attemptParams.runId,
6891
+ sessionId: attemptParams.sessionId
6892
+ };
6850
6893
  params.assertCurrent?.();
6851
6894
  if (startupAbandonController.signal.aborted) throw new CodexAppServerStartupError("aborted");
6895
+ enterStartupStage("client-acquire");
6852
6896
  startupClient = await params.attemptClientFactory({
6853
6897
  ...params.clientOptions,
6898
+ onAcquireObservation: (observation) => {
6899
+ if (stage === "client-acquire") acquireBoundary = observation.boundary;
6900
+ observeAcquire(params.clientOptions, observation);
6901
+ },
6854
6902
  assertCurrent: () => {
6855
6903
  params.assertCurrent?.();
6856
6904
  params.authority?.assertLegacyCurrent();
@@ -6880,6 +6928,7 @@ async function startCodexAttemptThread(params) {
6880
6928
  attemptedClient = activeStartupClient;
6881
6929
  startupClientForAbandonedRequestCleanup = activeStartupClient;
6882
6930
  if (startupAbandonController.signal.aborted) throw new CodexAppServerStartupError("aborted");
6931
+ enterStartupStage("runtime-artifact");
6883
6932
  const runtimeArtifact = await verifyStartupArtifact({
6884
6933
  client: activeStartupClient,
6885
6934
  startOptions: params.appServer.start,
@@ -6898,6 +6947,7 @@ async function startCodexAttemptThread(params) {
6898
6947
  let computerUseTools = [];
6899
6948
  let computerUseConfig = params.computerUseConfig;
6900
6949
  try {
6950
+ enterStartupStage("computer-use");
6901
6951
  const computerUseStatus = await ensureCodexComputerUse({
6902
6952
  client: activeStartupClient,
6903
6953
  pluginConfig: params.pluginConfig,
@@ -6966,6 +7016,7 @@ async function startCodexAttemptThread(params) {
6966
7016
  nativeToolSurfaceEnabled: params.nativeToolSurfaceEnabled,
6967
7017
  sandboxExecServerEnabled: params.sandboxExecServerEnabled
6968
7018
  });
7019
+ enterStartupStage("sandbox-environment");
6969
7020
  startupSandboxEnvironment = sandboxEnvironmentRequired ? await ensureCodexSandboxExecServerEnvironment({
6970
7021
  client: activeStartupClient,
6971
7022
  sandbox: params.sandbox ?? null,
@@ -7006,6 +7057,7 @@ async function startCodexAttemptThread(params) {
7006
7057
  return { release: releaseStartupReservation };
7007
7058
  };
7008
7059
  const releaseStartupResources = async () => {
7060
+ enterStartupStage("resource-cleanup");
7009
7061
  releaseStartupReservation();
7010
7062
  await releaseStartupSandboxEnvironment();
7011
7063
  };
@@ -7055,10 +7107,12 @@ async function startCodexAttemptThread(params) {
7055
7107
  })
7056
7108
  });
7057
7109
  try {
7110
+ enterStartupStage("thread-lifecycle");
7058
7111
  const startupThread = await startOrResumeThread(buildThreadLifecycleParams(startupAbandonController.signal, reserveStartupThread));
7059
7112
  try {
7060
7113
  reserveStartupThread(startupThread.threadId);
7061
7114
  } catch (error) {
7115
+ enterStartupStage("subscription-cleanup");
7062
7116
  if (!await unsubscribeCodexThreadBestEffort(activeStartupClient, {
7063
7117
  threadId: startupThread.threadId,
7064
7118
  timeoutMs: 5e3
@@ -7116,43 +7170,49 @@ async function startCodexAttemptThread(params) {
7116
7170
  startupClientLease?.();
7117
7171
  if (shouldRetireCodexStartupClient(startupAttemptError, params.spawnedBy, startupAbandonController.signal)) {
7118
7172
  if (startupClientForAbandonedRequestCleanup === startupClient) startupClientForAbandonedRequestCleanup = void 0;
7173
+ enterStartupStage("client-retirement");
7119
7174
  await closeCodexStartupClientBestEffort(startupClient);
7120
7175
  }
7121
7176
  }
7122
7177
  }
7123
7178
  if (startupAttemptError instanceof CodexThreadClientReplacementError && startupClient) {
7179
+ enterStartupStage("client-retirement");
7124
7180
  if (!(await startupClient.closeAndWait()).exited) throw new AgentHarnessPreflightError("The previous conversation process did not confirm shutdown; the conversation was preserved.");
7125
7181
  }
7126
7182
  throw startupAttemptError;
7127
7183
  };
7128
7184
  let replacedSettledFailureClient = false;
7129
- for (let attempt = 1; attempt <= CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS; attempt += 1) try {
7130
- return await startupAttempt();
7131
- } catch (error) {
7132
- const selectionChanged = isCodexAppServerStartSelectionChangedError(error);
7133
- const clientRetired = error instanceof CodexThreadClientReplacementError;
7134
- if (startupAbandonController.signal.aborted || isCodexWebSocketOpenFailure(error) || clientRetired && replacedSettledFailureClient || !clientRetired && !selectionChanged && !isCodexAppServerConnectionClosedError(error)) throw error;
7135
- replacedSettledFailureClient ||= clientRetired;
7136
- const refreshedSharedClient = clientRetired ? void 0 : selectionChanged ? retireSharedCodexAppServerClientIfCurrent(attemptedClient) : clearSharedCodexAppServerClientIfCurrent(attemptedClient);
7137
- if (startupClientForAbandonedRequestCleanup === attemptedClient) startupClientForAbandonedRequestCleanup = void 0;
7138
- if (attempt >= CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS) {
7139
- embeddedAgentLog.warn(selectionChanged ? "codex app-server executable selection kept changing during startup; retries exhausted" : "codex app-server connection closed during startup; retries exhausted", {
7185
+ for (let attempt = 1; attempt <= CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS; attempt += 1) {
7186
+ startupAttemptNumber = attempt;
7187
+ try {
7188
+ return await startupAttempt();
7189
+ } catch (error) {
7190
+ const selectionChanged = isCodexAppServerStartSelectionChangedError(error);
7191
+ const clientRetired = error instanceof CodexThreadClientReplacementError;
7192
+ if (startupAbandonController.signal.aborted || isCodexWebSocketOpenFailure(error) || clientRetired && replacedSettledFailureClient || !clientRetired && !selectionChanged && !isCodexAppServerConnectionClosedError(error)) throw error;
7193
+ replacedSettledFailureClient ||= clientRetired;
7194
+ const refreshedSharedClient = clientRetired ? void 0 : selectionChanged ? retireSharedCodexAppServerClientIfCurrent(attemptedClient) : clearSharedCodexAppServerClientIfCurrent(attemptedClient);
7195
+ if (startupClientForAbandonedRequestCleanup === attemptedClient) startupClientForAbandonedRequestCleanup = void 0;
7196
+ if (attempt >= CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS) {
7197
+ embeddedAgentLog.warn(selectionChanged ? "codex app-server executable selection kept changing during startup; retries exhausted" : "codex app-server connection closed during startup; retries exhausted", {
7198
+ attempt,
7199
+ maxAttempts: CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS,
7200
+ refreshedSharedClient,
7201
+ error: formatErrorMessage(error)
7202
+ });
7203
+ throw error;
7204
+ }
7205
+ const retryDelayMs = selectionChanged || clientRetired ? 0 : 1e3 * 2 ** (attempt - 1);
7206
+ embeddedAgentLog.warn(clientRetired ? "codex app-server retired a settled failed client; resuming on a fresh client" : selectionChanged ? "codex app-server executable selection changed during startup; restarting app-server and retrying" : "codex app-server connection closed during startup; restarting app-server and retrying", {
7140
7207
  attempt,
7208
+ nextAttempt: attempt + 1,
7141
7209
  maxAttempts: CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS,
7142
7210
  refreshedSharedClient,
7143
7211
  error: formatErrorMessage(error)
7144
7212
  });
7145
- throw error;
7213
+ enterStartupStage("retry-backoff");
7214
+ await sleepWithAbort(retryDelayMs, startupAbandonController.signal);
7146
7215
  }
7147
- const retryDelayMs = selectionChanged || clientRetired ? 0 : 1e3 * 2 ** (attempt - 1);
7148
- embeddedAgentLog.warn(clientRetired ? "codex app-server retired a settled failed client; resuming on a fresh client" : selectionChanged ? "codex app-server executable selection changed during startup; restarting app-server and retrying" : "codex app-server connection closed during startup; restarting app-server and retrying", {
7149
- attempt,
7150
- nextAttempt: attempt + 1,
7151
- maxAttempts: CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS,
7152
- refreshedSharedClient,
7153
- error: formatErrorMessage(error)
7154
- });
7155
- await sleepWithAbort(retryDelayMs, startupAbandonController.signal);
7156
7216
  }
7157
7217
  throw new Error("codex app-server startup retry loop exited unexpectedly");
7158
7218
  }
@@ -8421,13 +8481,14 @@ function createCodexAttemptTurnState(resources) {
8421
8481
  };
8422
8482
  const deadlines = createAgentHarnessAttemptDeadlineController({
8423
8483
  startedAtMs: connection.attemptStartedAt,
8484
+ startedAtMonotonicMs: connection.attemptStartedAtMonotonicMs,
8424
8485
  timeoutMs: params.timeoutMs,
8425
8486
  settlementTimeoutMs: TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS,
8426
8487
  signal: runAbortController.signal,
8427
8488
  onDeadlineChanged: params.onAttemptDeadlineChanged,
8428
8489
  onTimeout: (timeout) => {
8429
8490
  const pendingStage = state.pendingSettlementStage ?? projectorRef.current?.settlement.pendingStage ?? "notification_queue";
8430
- if (timeout.kind === "settlement" && projectorRef.current?.recoverCompletedAnswer()) {
8491
+ if (timeout.kind === "settlement" && projectorRef.current?.recoverCompletedAnswer(prompt.context.attemptTools.toolBridge.telemetry, { readRetainedNativeCommands: state.readRetainedNativeCommands })) {
8431
8492
  state.settlementWarning = {
8432
8493
  pendingStage,
8433
8494
  elapsedMs: timeout.elapsedMs,
@@ -1,7 +1,7 @@
1
1
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
2
2
  import { a as resolvePackagedCodexNativeCommand } from "./managed-binary-DwC9wxch.mjs";
3
3
  import { n as resolveCodexAppServerSpawnEnv, r as resolveCodexAppServerSpawnInvocation } from "./transport-stdio-lgeKKHyw.mjs";
4
- import { captureCodexConfiguredConnection, finalizeCodexConfiguredConnection, isCodexConfiguredConnectionArtifact, validateCodexConfiguredConnectionCapture } from "./runtime-artifact-connection-XSifLLBH.mjs";
4
+ import { captureCodexConfiguredConnection, finalizeCodexConfiguredConnection, isCodexConfiguredConnectionArtifact, validateCodexConfiguredConnectionCapture } from "./runtime-artifact-connection-dFoSOKy7.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
- import { t as codexAppServerStartOptionsKey } from "./config-options-nvYwVDyy.mjs";
2
- import "./config-runtime-B8agjie6.mjs";
3
- import { r as resolveCodexAppServerUnixSocketPath } from "./transport-websocket-DOY0dJXN.mjs";
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";
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,11 +1,11 @@
1
1
  import { c as MAX_CWD_LENGTH, d as boundedCatalogString } from "./session-catalog-parsing-B4OyhylL.mjs";
2
- import { n as defineCodexBuildState } from "./build-state-DfrctLQv.mjs";
3
- import { r as inferCodexAppServerConnectionClass } from "./config-security-D0hAOQRI.mjs";
2
+ import { n as defineCodexBuildState } from "./build-state-B5mKL-in.mjs";
3
+ import { r as inferCodexAppServerConnectionClass } from "./config-security-DpkGNy5T.mjs";
4
4
  import { n as resolveCodexAppServerLocalHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
5
5
  import { n as codexCatalogHomeIdFromCanonicalPath } from "./session-catalog-home-id-vlih0B_g.mjs";
6
6
  import { t as buildCodexAppServerConnectionFingerprint } from "./plugin-app-cache-key-Bg9DbDI6.mjs";
7
- import { n as codexCatalogSourceForClient, o as observeCodexCatalogEphemeralThreads } from "./session-catalog-source-CgWkqG43.mjs";
8
- import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-imNPfB3q.mjs";
7
+ import { n as codexCatalogSourceForClient, o as observeCodexCatalogEphemeralThreads } from "./session-catalog-source-CfIBVrbT.mjs";
8
+ import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-BYV0ICja.mjs";
9
9
  import { createHash } from "node:crypto";
10
10
  import { embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-registration";
11
11
  import path from "node:path";
@@ -2,11 +2,11 @@ import { S as readControlCursor, _ as normalizeLimit, c as MAX_CWD_LENGTH, d as
2
2
  import { n as detachCodexCatalogString, t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-Daqt3JLk.mjs";
3
3
  import { i as retainCodexCatalogRow, n as codexCatalogRowRecency, r as compareCodexCatalogRows, t as CodexCatalogOrdering } from "./session-catalog-index-order-B30rjUEJ.mjs";
4
4
  import { c as CodexCatalogPersistence, i as CodexCatalogAvailability, l as codexCatalogMetadataPage, r as withCodexCatalogListRequest } from "./session-catalog-list-request-SJyGz02j.mjs";
5
- import { a as hasLiveCodexCatalogSource, c as setCodexCatalogSource, i as getCodexCatalogSource } from "./session-catalog-source-CgWkqG43.mjs";
6
- import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-imNPfB3q.mjs";
7
- import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-IoszcO7-.mjs";
5
+ import { a as hasLiveCodexCatalogSource, c as setCodexCatalogSource, i as getCodexCatalogSource } from "./session-catalog-source-CfIBVrbT.mjs";
6
+ import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-BYV0ICja.mjs";
7
+ import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-CpEyDv0D.mjs";
8
8
  import { a as reportCodexCatalogSpawnFailure, n as findCodexAppServerSpawnError } from "./spawn-error-CL3n6MAa.mjs";
9
- import { CodexCatalogProjectionCapacityError, CodexCatalogProjections, mergeCodexCatalogRolloutRow, n as readCodexCatalogRollout, projectCodexCatalogPage, r as resolveCodexCatalogRolloutFingerprint, t as codexCatalogRolloutLogicalPath } from "./session-catalog-projection-BFp1d3bJ.mjs";
9
+ import { CodexCatalogProjectionCapacityError, CodexCatalogProjections, mergeCodexCatalogRolloutRow, n as readCodexCatalogRollout, projectCodexCatalogPage, r as resolveCodexCatalogRolloutFingerprint, t as codexCatalogRolloutLogicalPath } from "./session-catalog-projection-B0IyXrHt.mjs";
10
10
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
11
11
  import { createHash } from "node:crypto";
12
12
  import { isDeepStrictEqual } from "node:util";
@@ -1,7 +1,7 @@
1
1
  import { D as selectCodexCatalogPreviewInput, c as MAX_CWD_LENGTH, d as boundedCatalogString, k as truncateCodexCatalogPreview } from "./session-catalog-parsing-B4OyhylL.mjs";
2
2
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
3
3
  import { n as detachCodexCatalogString } from "./session-catalog-limits-Daqt3JLk.mjs";
4
- import { r as copyCodexCatalogSource } from "./session-catalog-source-CgWkqG43.mjs";
4
+ import { r as copyCodexCatalogSource } from "./session-catalog-source-CfIBVrbT.mjs";
5
5
  import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
6
6
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
7
7
  //#region extensions/codex/src/session-catalog-native-projection.ts
@@ -2,7 +2,7 @@ import { D as selectCodexCatalogPreviewInput, O as toCatalogSession, S as readCo
2
2
  import { n as detachCodexCatalogString } from "./session-catalog-limits-Daqt3JLk.mjs";
3
3
  import { n as codexCatalogRowRecency } from "./session-catalog-index-order-B30rjUEJ.mjs";
4
4
  import { t as isOpenClawManagedCodexThread } from "./session-catalog-provenance-CmsOE5mh.mjs";
5
- import { c as setCodexCatalogSource, i as getCodexCatalogSource, r as copyCodexCatalogSource } from "./session-catalog-source-CgWkqG43.mjs";
5
+ import { c as setCodexCatalogSource, i as getCodexCatalogSource, r as copyCodexCatalogSource } from "./session-catalog-source-CfIBVrbT.mjs";
6
6
  import { asFiniteNumber, isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs/promises";
@@ -1,4 +1,4 @@
1
- import { n as defineCodexBuildState } from "./build-state-DfrctLQv.mjs";
1
+ import { n as defineCodexBuildState } from "./build-state-B5mKL-in.mjs";
2
2
  //#region extensions/codex/src/session-catalog-source.ts
3
3
  function hasLiveCodexCatalogSource(sources) {
4
4
  for (const source of sources) if (!source.closed) return true;
@@ -1,4 +1,4 @@
1
- import { S as selectGuardianSandbox, f as selectGuardianApprovalPolicy, i as resolveCodexAppServerNetworkProxy, m as selectUserApprovalsReviewer, p as selectGuardianApprovalsReviewer, u as parseCodexRequirementsPolicy } from "./config-security-D0hAOQRI.mjs";
1
+ import { S as selectGuardianSandbox, f as selectGuardianApprovalPolicy, i as resolveCodexAppServerNetworkProxy, m as selectUserApprovalsReviewer, p as selectGuardianApprovalsReviewer, u as parseCodexRequirementsPolicy } from "./config-security-DpkGNy5T.mjs";
2
2
  import { hostname } from "node:os";
3
3
  import { isPathInside } from "openclaw/plugin-sdk/file-access-runtime";
4
4
  //#region extensions/codex/src/app-server/session-permission-policy.ts
@@ -1,9 +1,9 @@
1
- import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-DvDLHVJe.mjs";
1
+ import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-DrieYJUQ.mjs";
2
2
  import { t as withCodexAppServerThreadMutation } from "./thread-ownership-queue-CeyYScUC.mjs";
3
- import { K as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed } from "./shared-client-wb1JBldZ.mjs";
4
- import { f as unsubscribeCodexThreadBestEffort, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-TScCVTsk.mjs";
5
- import { t as isSameCodexAppServerThreadOwner } from "./thread-ownership-CTUs8Eyu.mjs";
6
- import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-gqu3TQOv.mjs";
3
+ import { H as isCodexAppServerLiveThreadClaimed, R as hasCodexAppServerLiveThread, q as releaseCodexAppServerLiveThread } from "./shared-client-AdQX0Tdq.mjs";
4
+ import { f as unsubscribeCodexThreadBestEffort, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-jWVRH043.mjs";
5
+ import { t as isSameCodexAppServerThreadOwner } from "./thread-ownership-OXzPB_RV.mjs";
6
+ import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-CJaIve3h.mjs";
7
7
  import { t as getCodexSessionInitializationRollback } from "./session-initialization-BjVtsTzi.mjs";
8
8
  import { isIncognitoSessionKey } from "openclaw/plugin-sdk/session-key-runtime";
9
9
  import { isNativeSessionDeletionUnresolved, wrapNativeSessionDeletionMutation } from "openclaw/plugin-sdk/agent-harness-session-runtime";