@openclaw/codex 2026.10.5 → 2026.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/.setup/{account-usage-runtime-Dqpnnkst.mjs → account-usage-runtime-E3SrjJVn.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-C3s-1Zxe.mjs} +14 -14
  4. package/dist/.setup/{attempt-client-cleanup-TScCVTsk.mjs → attempt-client-cleanup-BVww-ct8.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-CXK7tmkb.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-vdpL2efh.mjs} +13 -12
  12. package/dist/.setup/{build-state-DfrctLQv.mjs → build-state-DPMC9C_U.mjs} +1 -1
  13. package/dist/.setup/{client-BpSxNz4F.mjs → client-Div-zqnz.mjs} +19 -15
  14. package/dist/.setup/{client-catalog-response-DloWE31e.mjs → client-catalog-response-Dtob_lVt.mjs} +1 -1
  15. package/dist/.setup/{command-dispatch-CIdf7ZvD.mjs → command-dispatch-ByO36LmS.mjs} +1 -1
  16. package/dist/.setup/{command-handlers-C2XNDeHL.mjs → command-handlers-CJqo6LZS.mjs} +16 -16
  17. package/dist/.setup/{command-rpc-DpmvEmhc.mjs → command-rpc-Co0UzT-T.mjs} +8 -8
  18. package/dist/.setup/{compact-DpCHUqU5.mjs → compact-CzNBg4cQ.mjs} +10 -10
  19. package/dist/.setup/{computer-use-BgGC32hr.mjs → computer-use-BcDrQlxi.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-Dcv7_rs-.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-DjbDZzOJ.mjs} +3 -3
  28. package/dist/.setup/{dynamic-tools-CKynHtxM.mjs → dynamic-tools-75qoSOch.mjs} +10 -10
  29. package/dist/.setup/{effective-mcp-catalog-DXGsGC1j.mjs → effective-mcp-catalog-Dz0J8iAj.mjs} +4 -4
  30. package/dist/.setup/{ephemeral-turn-C6aFeGFS.mjs → ephemeral-turn-K_d99r9P.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-dNt4kRLw.mjs} +6 -6
  33. package/dist/.setup/{mcp-app-session-preparation-Cnmuh9RT.mjs → mcp-app-session-preparation-C7LyxbAm.mjs} +8 -8
  34. package/dist/.setup/{model-catalog-DRbHoUhG.mjs → model-catalog-BRJ7RMXY.mjs} +7 -7
  35. package/dist/.setup/{models-GBLXb27n.mjs → models-CusrgpiY.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-BvwSj5bt.mjs} +5 -5
  38. package/dist/.setup/{native-mcp-app-DIheNk35.mjs → native-mcp-app-DDEtVQED.mjs} +4 -4
  39. package/dist/.setup/{native-skill-isolation-CxZRtiWZ.mjs → native-skill-isolation-Cx2AkUco.mjs} +3 -3
  40. package/dist/.setup/{native-subagent-monitor-gqu3TQOv.mjs → native-subagent-monitor-CBYFkNsB.mjs} +66 -19
  41. package/dist/.setup/{plan-DZWYASAx.mjs → plan-BKFbfVsV.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-CXXXhuKi.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-BVV8SWlx.mjs} +4 -4
  47. package/dist/.setup/{provider-capabilities-DOBUBt86.mjs → provider-capabilities-B-pTlDsf.mjs} +1 -1
  48. package/dist/.setup/{request-DhbisYCc.mjs → request-m-H-7FMu.mjs} +2 -2
  49. package/dist/.setup/{run-attempt-WbitbMr6.mjs → run-attempt-Ch1emiZE.mjs} +104 -54
  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-BBV3DMG7.mjs} +4 -4
  53. package/dist/.setup/{session-catalog-index-_4Z5quG3.mjs → session-catalog-index-B00GIRi3.mjs} +4 -4
  54. package/dist/.setup/{session-catalog-native-projection-imNPfB3q.mjs → session-catalog-native-projection-BJupfCyt.mjs} +1 -1
  55. package/dist/.setup/{session-catalog-projection-BFp1d3bJ.mjs → session-catalog-projection-CYgFTaYm.mjs} +1 -1
  56. package/dist/.setup/{session-catalog-source-CgWkqG43.mjs → session-catalog-source-Xt6-hNns.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-DIqF1vQ4.mjs} +5 -5
  59. package/dist/.setup/{settled-turn-finalizer-Blsc4VLX.mjs → settled-turn-finalizer-dVv34G_E.mjs} +4 -4
  60. package/dist/.setup/{shared-client-wb1JBldZ.mjs → shared-client-CNGDTv68.mjs} +29 -17
  61. package/dist/.setup/{side-question-DNEeROvz.mjs → side-question-D1Wa21s9.mjs} +17 -17
  62. package/dist/.setup/{source-BjBw-zoV.mjs → source-DyVuYlTN.mjs} +3 -3
  63. package/dist/.setup/{thread-lifecycle-run-DdwKMIae.mjs → thread-lifecycle-run-DjSfTw6v.mjs} +60 -36
  64. package/dist/.setup/{thread-ownership-CTUs8Eyu.mjs → thread-ownership-BBsOFzCM.mjs} +3 -3
  65. package/dist/.setup/{thread-policy-BMRvlOi-.mjs → thread-policy-BEiS7ITh.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-BqOca2Iy.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-DM0fRrYI.mjs} +1 -1
  70. package/dist/.setup/{upstream-session-fork-BF0c69x6.mjs → upstream-session-fork-CxgShpwe.mjs} +14 -14
  71. package/dist/.setup/{usage-BsMyAOaB.mjs → usage-DV8T9Yau.mjs} +3 -3
  72. package/dist/.setup/{usage-limit-error-hLIGKewV.mjs → usage-limit-error-ryR1PGou.mjs} +1 -1
  73. package/dist/.setup/{web-search-provider.runtime-BJK0lNpc.mjs → web-search-provider.runtime-DkciK2gS.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 +4 -4
@@ -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-DPMC9C_U.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-CXK7tmkb.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-m-H-7FMu.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, _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";
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-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
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-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
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-ryR1PGou.mjs";
40
+ import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BBsOFzCM.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-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";
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-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";
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
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-B-pTlDsf.mjs";
62
+ import { a as runCodexComputerUseLiveTest, i as createComputerUseRequest, t as ensureCodexComputerUse } from "./computer-use-BcDrQlxi.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";
@@ -3338,6 +3338,7 @@ async function rotateOversizedCodexAppServerStartupBinding(params) {
3338
3338
  //#region extensions/codex/src/app-server/run-attempt-connection.ts
3339
3339
  async function prepareCodexAttemptConnection({ params, options }) {
3340
3340
  const attemptStartedAt = Date.now();
3341
+ const attemptStartedAtMonotonicMs = performance.now();
3341
3342
  const profilerEnabled = isCodexAppServerProfilerEnabled(params.config);
3342
3343
  const codexModelCallTrace = freezeDiagnosticTraceContext(createDiagnosticTraceContextFromActiveScope());
3343
3344
  const codexModelContentCapture = resolveDiagnosticModelContentCapturePolicy(params.config);
@@ -3700,6 +3701,7 @@ async function prepareCodexAttemptConnection({ params, options }) {
3700
3701
  releaseModelExecution,
3701
3702
  options,
3702
3703
  attemptStartedAt,
3704
+ attemptStartedAtMonotonicMs,
3703
3705
  profilerEnabled,
3704
3706
  codexModelCallTrace,
3705
3707
  codexModelContentCapture,
@@ -6701,7 +6703,7 @@ function createCodexAttemptServerRequestController(resources, turnRuntime, lifec
6701
6703
  //#region extensions/codex/src/app-server/attempt-runtime-artifact.ts
6702
6704
  async function verifyStartupArtifact(params) {
6703
6705
  if (!params.request) return;
6704
- const { readCodexAppServerClientRuntimeArtifact, validateCodexAppServerRuntimeArtifact } = await import("./runtime-artifact-nFHy1R0x.mjs");
6706
+ const { readCodexAppServerClientRuntimeArtifact, validateCodexAppServerRuntimeArtifact } = await import("./runtime-artifact-CCPLKFGR.mjs");
6705
6707
  const runtimeArtifact = readCodexAppServerClientRuntimeArtifact(params.client);
6706
6708
  const expected = params.request.expected;
6707
6709
  const matchesExpected = !expected || runtimeArtifact?.id === expected.id && runtimeArtifact.fingerprint === expected.fingerprint;
@@ -6810,6 +6812,17 @@ async function startCodexAttemptThread(params) {
6810
6812
  let releaseSharedClientLease;
6811
6813
  let startupClientForAbandonedRequestCleanup;
6812
6814
  let releaseStartupResourcesOnTimeout;
6815
+ const startupStartedAt = performance.now();
6816
+ let stage = "configuration";
6817
+ let stageStartedAt = startupStartedAt;
6818
+ let acquireBoundary;
6819
+ let startupIdentity;
6820
+ let startupAttemptNumber = 0;
6821
+ const enterStartupStage = (nextStage) => {
6822
+ stage = nextStage;
6823
+ stageStartedAt = performance.now();
6824
+ acquireBoundary = void 0;
6825
+ };
6813
6826
  const startupAbandonController = new AbortController();
6814
6827
  const abandonStartupAcquire = () => startupAbandonController.abort();
6815
6828
  params.signal.addEventListener("abort", abandonStartupAcquire, { once: true });
@@ -6818,6 +6831,21 @@ async function startCodexAttemptThread(params) {
6818
6831
  timeoutMs: params.startupTimeoutMs,
6819
6832
  signal: params.signal,
6820
6833
  onTimeout: async () => {
6834
+ try {
6835
+ const client = startupClientForAbandonedRequestCleanup;
6836
+ const now = performance.now();
6837
+ embeddedAgentLog.warn("codex app-server startup timed out", {
6838
+ ...startupIdentity,
6839
+ attempt: startupAttemptNumber,
6840
+ stage,
6841
+ stageElapsedMs: Math.max(0, Math.round(now - stageStartedAt)),
6842
+ elapsedMs: Math.max(0, Math.round(now - startupStartedAt)),
6843
+ timeoutMs: params.startupTimeoutMs,
6844
+ acquireBoundary,
6845
+ clientInstanceId: client?.getInstanceId(),
6846
+ clientPendingRequestMethods: client?.getPendingRequestMethods() ?? []
6847
+ });
6848
+ } catch {}
6821
6849
  startupAbandonController.abort();
6822
6850
  await params.onStartupTimeout();
6823
6851
  await releaseStartupResourcesOnTimeout?.();
@@ -6847,10 +6875,19 @@ async function startCodexAttemptThread(params) {
6847
6875
  let startupAttemptSucceeded = false;
6848
6876
  try {
6849
6877
  const attemptParams = params.buildAttemptParams();
6878
+ startupIdentity = {
6879
+ runId: attemptParams.runId,
6880
+ sessionId: attemptParams.sessionId
6881
+ };
6850
6882
  params.assertCurrent?.();
6851
6883
  if (startupAbandonController.signal.aborted) throw new CodexAppServerStartupError("aborted");
6884
+ enterStartupStage("client-acquire");
6852
6885
  startupClient = await params.attemptClientFactory({
6853
6886
  ...params.clientOptions,
6887
+ onAcquireObservation: (observation) => {
6888
+ if (stage === "client-acquire") acquireBoundary = observation.boundary;
6889
+ observeAcquire(params.clientOptions, observation);
6890
+ },
6854
6891
  assertCurrent: () => {
6855
6892
  params.assertCurrent?.();
6856
6893
  params.authority?.assertLegacyCurrent();
@@ -6880,6 +6917,7 @@ async function startCodexAttemptThread(params) {
6880
6917
  attemptedClient = activeStartupClient;
6881
6918
  startupClientForAbandonedRequestCleanup = activeStartupClient;
6882
6919
  if (startupAbandonController.signal.aborted) throw new CodexAppServerStartupError("aborted");
6920
+ enterStartupStage("runtime-artifact");
6883
6921
  const runtimeArtifact = await verifyStartupArtifact({
6884
6922
  client: activeStartupClient,
6885
6923
  startOptions: params.appServer.start,
@@ -6898,6 +6936,7 @@ async function startCodexAttemptThread(params) {
6898
6936
  let computerUseTools = [];
6899
6937
  let computerUseConfig = params.computerUseConfig;
6900
6938
  try {
6939
+ enterStartupStage("computer-use");
6901
6940
  const computerUseStatus = await ensureCodexComputerUse({
6902
6941
  client: activeStartupClient,
6903
6942
  pluginConfig: params.pluginConfig,
@@ -6966,6 +7005,7 @@ async function startCodexAttemptThread(params) {
6966
7005
  nativeToolSurfaceEnabled: params.nativeToolSurfaceEnabled,
6967
7006
  sandboxExecServerEnabled: params.sandboxExecServerEnabled
6968
7007
  });
7008
+ enterStartupStage("sandbox-environment");
6969
7009
  startupSandboxEnvironment = sandboxEnvironmentRequired ? await ensureCodexSandboxExecServerEnvironment({
6970
7010
  client: activeStartupClient,
6971
7011
  sandbox: params.sandbox ?? null,
@@ -7006,6 +7046,7 @@ async function startCodexAttemptThread(params) {
7006
7046
  return { release: releaseStartupReservation };
7007
7047
  };
7008
7048
  const releaseStartupResources = async () => {
7049
+ enterStartupStage("resource-cleanup");
7009
7050
  releaseStartupReservation();
7010
7051
  await releaseStartupSandboxEnvironment();
7011
7052
  };
@@ -7055,10 +7096,12 @@ async function startCodexAttemptThread(params) {
7055
7096
  })
7056
7097
  });
7057
7098
  try {
7099
+ enterStartupStage("thread-lifecycle");
7058
7100
  const startupThread = await startOrResumeThread(buildThreadLifecycleParams(startupAbandonController.signal, reserveStartupThread));
7059
7101
  try {
7060
7102
  reserveStartupThread(startupThread.threadId);
7061
7103
  } catch (error) {
7104
+ enterStartupStage("subscription-cleanup");
7062
7105
  if (!await unsubscribeCodexThreadBestEffort(activeStartupClient, {
7063
7106
  threadId: startupThread.threadId,
7064
7107
  timeoutMs: 5e3
@@ -7116,43 +7159,49 @@ async function startCodexAttemptThread(params) {
7116
7159
  startupClientLease?.();
7117
7160
  if (shouldRetireCodexStartupClient(startupAttemptError, params.spawnedBy, startupAbandonController.signal)) {
7118
7161
  if (startupClientForAbandonedRequestCleanup === startupClient) startupClientForAbandonedRequestCleanup = void 0;
7162
+ enterStartupStage("client-retirement");
7119
7163
  await closeCodexStartupClientBestEffort(startupClient);
7120
7164
  }
7121
7165
  }
7122
7166
  }
7123
7167
  if (startupAttemptError instanceof CodexThreadClientReplacementError && startupClient) {
7168
+ enterStartupStage("client-retirement");
7124
7169
  if (!(await startupClient.closeAndWait()).exited) throw new AgentHarnessPreflightError("The previous conversation process did not confirm shutdown; the conversation was preserved.");
7125
7170
  }
7126
7171
  throw startupAttemptError;
7127
7172
  };
7128
7173
  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", {
7174
+ for (let attempt = 1; attempt <= CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS; attempt += 1) {
7175
+ startupAttemptNumber = attempt;
7176
+ try {
7177
+ return await startupAttempt();
7178
+ } catch (error) {
7179
+ const selectionChanged = isCodexAppServerStartSelectionChangedError(error);
7180
+ const clientRetired = error instanceof CodexThreadClientReplacementError;
7181
+ if (startupAbandonController.signal.aborted || isCodexWebSocketOpenFailure(error) || clientRetired && replacedSettledFailureClient || !clientRetired && !selectionChanged && !isCodexAppServerConnectionClosedError(error)) throw error;
7182
+ replacedSettledFailureClient ||= clientRetired;
7183
+ const refreshedSharedClient = clientRetired ? void 0 : selectionChanged ? retireSharedCodexAppServerClientIfCurrent(attemptedClient) : clearSharedCodexAppServerClientIfCurrent(attemptedClient);
7184
+ if (startupClientForAbandonedRequestCleanup === attemptedClient) startupClientForAbandonedRequestCleanup = void 0;
7185
+ if (attempt >= CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS) {
7186
+ embeddedAgentLog.warn(selectionChanged ? "codex app-server executable selection kept changing during startup; retries exhausted" : "codex app-server connection closed during startup; retries exhausted", {
7187
+ attempt,
7188
+ maxAttempts: CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS,
7189
+ refreshedSharedClient,
7190
+ error: formatErrorMessage(error)
7191
+ });
7192
+ throw error;
7193
+ }
7194
+ const retryDelayMs = selectionChanged || clientRetired ? 0 : 1e3 * 2 ** (attempt - 1);
7195
+ 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
7196
  attempt,
7197
+ nextAttempt: attempt + 1,
7141
7198
  maxAttempts: CODEX_APP_SERVER_STARTUP_MAX_ATTEMPTS,
7142
7199
  refreshedSharedClient,
7143
7200
  error: formatErrorMessage(error)
7144
7201
  });
7145
- throw error;
7202
+ enterStartupStage("retry-backoff");
7203
+ await sleepWithAbort(retryDelayMs, startupAbandonController.signal);
7146
7204
  }
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
7205
  }
7157
7206
  throw new Error("codex app-server startup retry loop exited unexpectedly");
7158
7207
  }
@@ -8421,6 +8470,7 @@ function createCodexAttemptTurnState(resources) {
8421
8470
  };
8422
8471
  const deadlines = createAgentHarnessAttemptDeadlineController({
8423
8472
  startedAtMs: connection.attemptStartedAt,
8473
+ startedAtMonotonicMs: connection.attemptStartedAtMonotonicMs,
8424
8474
  timeoutMs: params.timeoutMs,
8425
8475
  settlementTimeoutMs: TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS,
8426
8476
  signal: runAbortController.signal,
@@ -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-DPMC9C_U.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-Xt6-hNns.mjs";
8
+ import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-BJupfCyt.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-Xt6-hNns.mjs";
6
+ import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-BJupfCyt.mjs";
7
+ import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-BBV3DMG7.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-CYgFTaYm.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-Xt6-hNns.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-Xt6-hNns.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-DPMC9C_U.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-CXK7tmkb.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-CNGDTv68.mjs";
4
+ import { f as unsubscribeCodexThreadBestEffort, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-BVww-ct8.mjs";
5
+ import { t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BBsOFzCM.mjs";
6
+ import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-CBYFkNsB.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";
@@ -1,10 +1,10 @@
1
1
  import { i as readMirrorIdentity, n as attachCodexMirrorIdentity } from "./upstream-prompt-provenance-Ccd9MFRJ.mjs";
2
2
  import { l as readCodexMirrorSourceFingerprint, o as fingerprintCodexMirrorSourceMessage } from "./transcript-mirror-attestation-BzUXnrvv.mjs";
3
- import { nt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-wb1JBldZ.mjs";
4
- import { f as assertCodexPassiveTurnItems } from "./client-BpSxNz4F.mjs";
5
- import { runBoundedCodexAppServerTurn } from "./bounded-turn-BpjZixcd.mjs";
3
+ import { rt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-CNGDTv68.mjs";
4
+ import { f as assertCodexPassiveTurnItems } from "./client-Div-zqnz.mjs";
5
+ import { runBoundedCodexAppServerTurn } from "./bounded-turn-vdpL2efh.mjs";
6
6
  import { t as resolveCodexLocalRuntimeAttribution } from "./local-runtime-attribution-CZz2DJ4q.mjs";
7
- import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-Brj5qzz6.mjs";
7
+ import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-CIQJykuM.mjs";
8
8
  import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-CLMKN4x-.mjs";
9
9
  import { t as codexTranscriptMirrorRuntime } from "./transcript-mirror-DVEzdOs0.mjs";
10
10
  import { t as CodexSettledTurnContext } from "./settled-turn-context-BPL6D3RO.mjs";