@openclaw/codex 2026.9.9 → 2026.9.34

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 (60) hide show
  1. package/dist/.setup/{account-usage-runtime-9B-ABnCR.mjs → account-usage-runtime-CD8HYWaz.mjs} +1 -1
  2. package/dist/.setup/{apply-CBcTS6Se.mjs → apply-DN-qPbcH.mjs} +4 -4
  3. package/dist/.setup/{attempt-client-cleanup-_RUXhE5e.mjs → attempt-client-cleanup-93r-CLTi.mjs} +3 -3
  4. package/dist/.setup/{attempt-workspace-context-CSD2rKPq.mjs → attempt-workspace-context-ejEuxrY1.mjs} +1 -1
  5. package/dist/.setup/{auth-cache-key-gOhcdE_N.mjs → auth-cache-key-Bs_3kRJD.mjs} +1 -1
  6. package/dist/.setup/{bounded-turn-BKSjzckA.mjs → bounded-turn-I8Vb-qq3.mjs} +9 -9
  7. package/dist/.setup/{build-state-CDQUVDAI.mjs → build-state--SrHyc6r.mjs} +1 -1
  8. package/dist/.setup/{client-B4EOuI-w.mjs → client-CyquSiJ2.mjs} +2 -2
  9. package/dist/.setup/{client-catalog-response-CsnppTTd.mjs → client-catalog-response-B9pLl58Y.mjs} +1 -1
  10. package/dist/.setup/{command-dispatch-DHjWG2Ll.mjs → command-dispatch-BPLz7tlx.mjs} +1 -1
  11. package/dist/.setup/{command-handlers-DSRIPTiA.mjs → command-handlers-95-WVrcl.mjs} +12 -12
  12. package/dist/.setup/{command-rpc-CKsxWgF6.mjs → command-rpc-BDfCWgc_.mjs} +6 -6
  13. package/dist/.setup/{compact-CXguvBLF.mjs → compact-5zzFlH-W.mjs} +9 -9
  14. package/dist/.setup/{conversation-binding-BDlmcqm3.mjs → conversation-binding-C-0jWdSo.mjs} +9 -9
  15. package/dist/.setup/{conversation-control-CzxjbHH4.mjs → conversation-control-BEotI-gH.mjs} +2 -2
  16. package/dist/.setup/{dynamic-tools-86M3tRl4.mjs → dynamic-tools-D3NAwGw3.mjs} +6 -6
  17. package/dist/.setup/{effective-mcp-catalog-DMrerMF4.mjs → effective-mcp-catalog-C0DfQNYU.mjs} +2 -2
  18. package/dist/.setup/{ephemeral-turn-C-vPku4K.mjs → ephemeral-turn-ksZ9NfsS.mjs} +2 -2
  19. package/dist/.setup/{event-projector-assistant-message-Bhu17sxy.mjs → event-projector-assistant-message-BmWQXFLV.mjs} +1 -1
  20. package/dist/.setup/incognito-session-C5ve_-63.mjs +1 -0
  21. package/dist/.setup/{isolated-completion-D68PsLcF.mjs → isolated-completion-Ci27cKqA.mjs} +4 -4
  22. package/dist/.setup/{model-catalog-BeTX0Aeo.mjs → model-catalog-qzAfnHzR.mjs} +26 -19
  23. package/dist/.setup/{models-32Lqf2JB.mjs → models-BbEE4EWS.mjs} +3 -3
  24. package/dist/.setup/{native-subagent-monitor-BRr7YExU.mjs → native-subagent-monitor-B9aAqfnU.mjs} +5 -3
  25. package/dist/.setup/{plan-CMXvb-Wm.mjs → plan-DTyFfTkk.mjs} +2 -2
  26. package/dist/.setup/{plugin-metadata-cache-DiVUT-uC.mjs → plugin-metadata-cache-Q4ZFn6UH.mjs} +4 -4
  27. package/dist/.setup/{provider-D0GD39BJ.mjs → provider-Cnr_icbk.mjs} +4 -4
  28. package/dist/.setup/{provider-capabilities-CIWN6WAi.mjs → provider-capabilities-ByhBukaD.mjs} +2 -2
  29. package/dist/.setup/{request-D-Vhprx3.mjs → request-DxKAfWyy.mjs} +1 -1
  30. package/dist/.setup/{run-attempt-CKZd8eYZ.mjs → run-attempt-BZKhzSrb.mjs} +36 -21
  31. package/dist/.setup/{session-catalog-C7GPE6q8.mjs → session-catalog-BaVqm4-Q.mjs} +9 -9
  32. package/dist/.setup/{session-catalog-events-BNKvbFTA.mjs → session-catalog-events-D9zC7gRb.mjs} +2 -2
  33. package/dist/.setup/{session-catalog-index-BY4p8Fcc.mjs → session-catalog-index-CNKpHanP.mjs} +3 -3
  34. package/dist/.setup/{session-catalog-native-projection-DZyauw3D.mjs → session-catalog-native-projection-DhId_sl8.mjs} +1 -1
  35. package/dist/.setup/{session-catalog-projection-D5zfSje1.mjs → session-catalog-projection-DcqN7DuI.mjs} +1 -1
  36. package/dist/.setup/{session-cli-DjWr7ujR.mjs → session-cli-TEVHpWaE.mjs} +1 -1
  37. package/dist/.setup/{session-retirement-CPUSNh9U.mjs → session-retirement-CW0ciVbW.mjs} +6 -6
  38. package/dist/.setup/{settled-turn-finalizer-DVOvJUSw.mjs → settled-turn-finalizer-DlPT87wW.mjs} +5 -5
  39. package/dist/.setup/{shared-client-lifecycle-BXJRGNcp.mjs → shared-client-lifecycle-CJ0lYVCW.mjs} +1 -1
  40. package/dist/.setup/{shared-client-D6n5dvpA.mjs → shared-client-tOOyadmg.mjs} +62 -25
  41. package/dist/.setup/{side-question-BQTOqCgV.mjs → side-question-BbnuMFTT.mjs} +9 -9
  42. package/dist/.setup/{source-pT6uUrZg.mjs → source-Cr8STZpF.mjs} +1 -1
  43. package/dist/.setup/{thread-lifecycle-BPIjjjRJ.mjs → thread-lifecycle-DcNw9n7E.mjs} +77 -39
  44. package/dist/.setup/{thread-ownership-vY9gRYkw.mjs → thread-ownership-DDban_4i.mjs} +3 -3
  45. package/dist/.setup/{thread-policy-Bf769xTq.mjs → thread-policy-TTAb-1yF.mjs} +3 -3
  46. package/dist/.setup/{thread-requests-CIyAcDJ3.mjs → thread-requests-DmkmrGIt.mjs} +5 -5
  47. package/dist/.setup/{thread-resume-DZbRTxqM.mjs → thread-resume-eo3IhOhh.mjs} +5 -5
  48. package/dist/.setup/{upstream-session-fork-Ci2-RvEy.mjs → upstream-session-fork-BbUNlJPZ.mjs} +8 -8
  49. package/dist/.setup/{usage-BP3aZPPp.mjs → usage-CDiI_zkr.mjs} +1 -1
  50. package/dist/.setup/{usage-limit-error-CwGm2hnj.mjs → usage-limit-error-BLnJh1mB.mjs} +1 -1
  51. package/dist/.setup/{web-search-provider.runtime-mvv6G9ul.mjs → web-search-provider.runtime-B_E2kpZN.mjs} +2 -2
  52. package/dist/catalog-page.worker.js +1 -1
  53. package/dist/cli-metadata.js +1 -1
  54. package/dist/harness.js +14 -14
  55. package/dist/index.js +19 -19
  56. package/dist/media-understanding-provider.js +2 -2
  57. package/dist/migration-provider-api.js +1 -2
  58. package/dist/session-history.worker.js +1 -2
  59. package/package.json +5 -5
  60. package/dist/.setup/incognito-session-DWYapfwf.mjs +0 -2
@@ -180,7 +180,7 @@ async function withCodexAppServerJsonClient(params, run) {
180
180
  timeoutMessage,
181
181
  promise: (async () => {
182
182
  const { resolveCodexAppServerDirectSandboxBypassBlock } = await import("./sandbox-guard-DjCz2eOw.mjs").then((n) => n.r);
183
- const { createIsolatedCodexAppServerClient, getLeasedSharedCodexAppServerClient, isCodexAppServerStartSelectionChangedError, releaseLeasedSharedCodexAppServerClient, retireSharedCodexAppServerClientIfCurrent } = await import("./shared-client-D6n5dvpA.mjs").then((n) => n.v);
183
+ const { createIsolatedCodexAppServerClient, getLeasedSharedCodexAppServerClient, isCodexAppServerStartSelectionChangedError, releaseLeasedSharedCodexAppServerClient, retireSharedCodexAppServerClientIfCurrent } = await import("./shared-client-tOOyadmg.mjs").then((n) => n.v);
184
184
  for (let attempt = 0; attempt < 2; attempt += 1) {
185
185
  errorPhase = void 0;
186
186
  activePhase = "prepare";
@@ -3,16 +3,16 @@ import { c as resolveRecoverableCodexPluginConfigKeys } from "./plugin-inventory
3
3
  import { g as createCodexNativeSubagentHistoryOwner } from "./native-subagent-pending-assignments-DwkCzLvD.mjs";
4
4
  import { i as isJsonObject, r as flattenCodexDynamicToolFunctions } from "./protocol-CANUwXJ3.mjs";
5
5
  import { i as matchesCodexNativeSubagentSubmissionBinding, n as assertCodexBindingMayBeReplaced, v as sessionBindingIdentity } from "./session-binding-record-Oe9L-CNY.mjs";
6
- import { n as defineCodexBuildState } from "./build-state-CDQUVDAI.mjs";
6
+ import { n as defineCodexBuildState } from "./build-state--SrHyc6r.mjs";
7
7
  import { c as shouldAutoApproveCodexAppServerApprovals, l as withMcpElicitationsApprovalPolicy, m as readCodexRequirementsToml, n as hasCodexMcpToolApprovalOverrides } from "./config-security-CE-FcGw9.mjs";
8
8
  import { c as isCodexPairedNodeRemoteExecPlacementSandbox, d as readCodexPluginConfig, f as resolveCodexPluginsPolicy, l as isCodexRemoteExecPlacementSandbox, u as isCodexSandboxExecServerEnabled } from "./config-parsing-b088LyhT.mjs";
9
9
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
10
10
  import { t as resolveCodexAppServerHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
11
11
  import { i as resolveCodexAppServerHomeScope, l as resolveCodexModelBackedReviewerPolicyContext, o as resolveCodexComputerUseConfig } from "./config-options-CzyWLTJt.mjs";
12
- import { c as resolveCodexAppServerPreparedApiKeyCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-gOhcdE_N.mjs";
13
- import { d as retireSharedCodexAppServerClientIfCurrent } from "./shared-client-lifecycle-BXJRGNcp.mjs";
12
+ import { c as resolveCodexAppServerPreparedApiKeyCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-Bs_3kRJD.mjs";
13
+ import { d as retireSharedCodexAppServerClientIfCurrent } from "./shared-client-lifecycle-CJ0lYVCW.mjs";
14
14
  import { o as formatCodexDisplayText } from "./command-formatters-R3ckE3Co.mjs";
15
- import { t as isIncognitoSessionKey } from "./incognito-session-DWYapfwf.mjs";
15
+ import { t as isIncognitoSessionKey } from "./incognito-session-C5ve_-63.mjs";
16
16
  import { n as CodexAppServerRpcError } from "./rpc-error-BlD2vuzn.mjs";
17
17
  import { n as waitForPromiseOrAbort, r as withAbortableTimeout } from "./timeout-CXOfNoaX.mjs";
18
18
  import { t as readCodexAsyncQuestions } from "./async-questions-DdhOCwGi.mjs";
@@ -20,40 +20,40 @@ import { a as readCodexProviderRefusal, d as splitPlanText, i as readCodexErrorN
20
20
  import { r as readMirrorIdentity, t as attachCodexMirrorIdentity } from "./upstream-prompt-provenance-fXkKbPVC.mjs";
21
21
  import { a as defaultCodexAppInventoryCache, n as buildCodexAppServerRuntimeFingerprint, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-BL9B5H0L.mjs";
22
22
  import { i as resolveCodexBindingAppServerConnection, r as requireCodexSupervisionModelSelection, t as assertCodexSessionRuntimeOwnership } from "./binding-connection-DTtN1KrX.mjs";
23
- import { r as requestCodexAppServerClientJson, t as CodexAppServerScopedRequestRejectedError } from "./request-D-Vhprx3.mjs";
23
+ import { r as requestCodexAppServerClientJson, t as CodexAppServerScopedRequestRejectedError } from "./request-DxKAfWyy.mjs";
24
24
  import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-DKhXquav.mjs";
25
25
  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 } from "./context-engine-projection-PezSESth.mjs";
26
26
  import { o as hasCodexMirrorOrigin, t as applyCodexTranscriptTaint } from "./transcript-mirror-attestation-YSegaktH.mjs";
27
27
  import { t as readCodexMirroredSessionHistoryMessages } from "./session-history-D83lJWHG.mjs";
28
28
  import { i as resolveCodexAppServerAuthProfileIdForAgent, r as resolveCodexAppServerAuthProfileId } from "./auth-profile-B0okYl2D.mjs";
29
- import { E as isCodexContextRestartSelectionChangedError, H as prepareCodexWorkspaceReferences, I as ensureCodexAppServerClientRuntime, M as getCodexInferenceThreadQualification, U as protectCodexAppServerLiveThread, X as readRecentCodexRateLimits, Y as readCodexRateLimitsRevision, _ as retainSharedCodexAppServerClientIfCurrent, a as clearSharedCodexAppServerClientIfCurrentAndUnclaimed, c as getLeasedSharedCodexAppServerClient, dt as TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS, et as resolveCodexAppServerAuthAccountCacheKey, f as readCodexAppServerClientDesktopGenerationFingerprint, h as releaseLeasedSharedCodexAppServerClient, ht as withCodexStartupTimeout, i as clearSharedCodexAppServerClientIfCurrent, j as getCodexInferenceThread, l as getSharedCodexAppServerClient, lt as CodexAppServerStartupError, mt as resolveCodexStartupTimeoutMs, s as createIsolatedCodexAppServerClient, tt as resolveCodexAppServerPreparedAuthHandoff, u as isCodexAppServerStartSelectionChangedError, ut as TURN_FINALIZE_DRAIN_ABORT_GRACE_MS, w as CodexThreadClientReplacementError, x as CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED } from "./shared-client-D6n5dvpA.mjs";
29
+ import { E as isCodexContextRestartSelectionChangedError, I as ensureCodexAppServerClientRuntime, M as getCodexInferenceThreadQualification, U as prepareCodexWorkspaceReferences, W as protectCodexAppServerLiveThread, X as readCodexRateLimitsRevision, Z as readRecentCodexRateLimits, _ 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-tOOyadmg.mjs";
30
30
  import { a as isCodexResponsesOAuthRun, r as isCodexResponsesOAuth } from "./responses-oauth-twnuTaAa.mjs";
31
- import { A as handleDynamicToolCallWithTimeout, E as readCodexTurnCompletedNotification, F as resolveTerminalDynamicToolBatchAction, I as shouldBlockTerminalReleaseForNonTerminalDynamicToolResult, L as shouldReleaseTurnAfterTerminalDynamicTool, M as isDynamicToolTerminalDiagnosticEvent, N as isMatchingDynamicToolTerminalDiagnostic, P as resolveDynamicToolCallTimeoutMs, R as toCodexDynamicToolProgressResponse, S as assertCodexTurnStartResponse, U as CODEX_APP_SERVER_OPT_OUT_NOTIFICATION_METHODS, c as isCodexAppServerIndeterminateTransportError, i as isCodexAppServerApprovalRequest, j as hasPendingDynamicToolTerminalDiagnostic, k as createCodexElicitationResponse, m as CodexServerRequestResolvedError, o as isCodexAppServerConnectionClosedError, p as resolveCodexAppServerClientInstanceId, r as getCodexAppServerClientInstanceId, s as isCodexAppServerIndeterminateRequestCancellationError, w as readCodexDynamicToolCallParams, z as toCodexDynamicToolProtocolResponse } from "./client-B4EOuI-w.mjs";
31
+ import { A as handleDynamicToolCallWithTimeout, E as readCodexTurnCompletedNotification, F as resolveTerminalDynamicToolBatchAction, I as shouldBlockTerminalReleaseForNonTerminalDynamicToolResult, L as shouldReleaseTurnAfterTerminalDynamicTool, M as isDynamicToolTerminalDiagnosticEvent, N as isMatchingDynamicToolTerminalDiagnostic, P as resolveDynamicToolCallTimeoutMs, R as toCodexDynamicToolProgressResponse, S as assertCodexTurnStartResponse, U as CODEX_APP_SERVER_OPT_OUT_NOTIFICATION_METHODS, c as isCodexAppServerIndeterminateTransportError, i as isCodexAppServerApprovalRequest, j as hasPendingDynamicToolTerminalDiagnostic, k as createCodexElicitationResponse, m as CodexServerRequestResolvedError, o as isCodexAppServerConnectionClosedError, p as resolveCodexAppServerClientInstanceId, r as getCodexAppServerClientInstanceId, s as isCodexAppServerIndeterminateRequestCancellationError, w as readCodexDynamicToolCallParams, z as toCodexDynamicToolProtocolResponse } from "./client-CyquSiJ2.mjs";
32
32
  import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-BTBE-LD9.mjs";
33
- import { M as matchesCodexSnapshotTurn, N as shouldClearTerminalPresentationForNativeItem, _ as CodexProjectionDiagnostics, d as shouldRetireCodexStartupClient, f as terminateCodexBackgroundTerminals, h as getCodexAppServerTurnRouter, k as itemName, m as CODEX_APP_SERVER_NATIVE_TURN_WAIT_TIMEOUT_MS, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort, v as isCodexNotificationForTurn, y as readCodexNotificationThreadId } from "./attempt-client-cleanup-_RUXhE5e.mjs";
33
+ import { M as matchesCodexSnapshotTurn, N as shouldClearTerminalPresentationForNativeItem, _ as CodexProjectionDiagnostics, d as shouldRetireCodexStartupClient, f as terminateCodexBackgroundTerminals, h as getCodexAppServerTurnRouter, k as itemName, m as CODEX_APP_SERVER_NATIVE_TURN_WAIT_TIMEOUT_MS, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort, v as isCodexNotificationForTurn, y as readCodexNotificationThreadId } from "./attempt-client-cleanup-93r-CLTi.mjs";
34
34
  import { r as prepareCodexAppServerAuthBinding } from "./auth-binding-BLWz7stm.mjs";
35
35
  import { a as isRawFunctionToolOutputCompletionNotification, c as readNotificationItemId, i as isPendingOpenClawDynamicToolCompletionNotification, l as readRawResponseToolCallId, o as isTerminalTurnStatus, r as isCodexTurnAbortMarkerNotification, s as readCodexNotificationItem, t as CodexUsageProjection, u as updateActiveTurnItemIds } from "./event-projector-usage-03R0I2dM.mjs";
36
- import { n as listAllCodexAppServerModels } from "./models-32Lqf2JB.mjs";
37
- import { A as createCodexNativeHookRelay, B as loadCodexNativeToolCatalog, D as buildCodexNativeHookRelayConfig, E as assertCodexNativeHookRelayAllowed, K as codexDynamicToolsFingerprint, M as resolveCodexNativeHookRelayEvents, N as resolveCodexNativeHookRelayTtlMs, O as buildCodexNativeHookRelayDisabledConfig, P as scheduleCodexNativeHookRelayUnregister, St as mergeCodexThreadConfigs, T as CodexManagedHooksOnlyError, W as areCodexDynamicToolFingerprintsCompatible, X as fingerprintJsonObject, _t as buildCodexPluginThreadConfigTimeoutFallback, gt as buildCodexPluginThreadConfigInputFingerprint, h as buildDeveloperInstructions, ht as buildCodexPluginThreadConfig, ot as filterCodexDynamicTools, p as resolveCodexWebSearchPlan, pt as resolveCodexDynamicToolsLoadingForRuntime, q as codexLegacyDynamicToolsFingerprint, tt as stabilizeJsonValue, ut as isSystemAgentOnlyCodexDynamicToolAllowlist, w as CODEX_NATIVE_HOOK_RELAY_TTL_GRACE_MS, wt as shouldBuildCodexPluginThreadConfig, x as joinPresentSections, y as resolveCodexAppServerThreadModelSelection, z as hasCodexNativeToolCatalog } from "./thread-requests-CIyAcDJ3.mjs";
38
- import { _ as readCodexMcpToolUiVisibility, a as buildTurnStartParams, b as isContextEngineBindingCompatible, c as assertScheduledCodexAppAuthorityRuntime, d as buildScheduledCodexAppServerConnectionIdentity, f as captureScheduledCodexAppAuthority, g as readCodexMcpToolConnectorId, h as resolveScheduledCodexAppCreatorCaptureDecision, i as buildTurnCollaborationMode, l as buildLegacyScheduledCodexAppRecoveryPrompt, m as readCurrentCodexScheduledAppPolicy, n as buildCodexParentLocalInstructions, o as buildCodexUserInput, p as intersectCodexPluginThreadConfigWithScheduledAuthority, s as startOrResumeThread, t as buildCodexHistoryProvenancePrefix, u as buildScheduledCodexAppAuthorityInputFingerprint, v as isCodexAppServerProfilerEnabled, y as buildContextEngineBinding } from "./thread-lifecycle-BPIjjjRJ.mjs";
36
+ import { n as listAllCodexAppServerModels } from "./models-BbEE4EWS.mjs";
37
+ import { A as createCodexNativeHookRelay, B as loadCodexNativeToolCatalog, D as buildCodexNativeHookRelayConfig, E as assertCodexNativeHookRelayAllowed, K as codexDynamicToolsFingerprint, M as resolveCodexNativeHookRelayEvents, N as resolveCodexNativeHookRelayTtlMs, O as buildCodexNativeHookRelayDisabledConfig, P as scheduleCodexNativeHookRelayUnregister, St as mergeCodexThreadConfigs, T as CodexManagedHooksOnlyError, W as areCodexDynamicToolFingerprintsCompatible, X as fingerprintJsonObject, _t as buildCodexPluginThreadConfigTimeoutFallback, gt as buildCodexPluginThreadConfigInputFingerprint, h as buildDeveloperInstructions, ht as buildCodexPluginThreadConfig, ot as filterCodexDynamicTools, p as resolveCodexWebSearchPlan, pt as resolveCodexDynamicToolsLoadingForRuntime, q as codexLegacyDynamicToolsFingerprint, tt as stabilizeJsonValue, ut as isSystemAgentOnlyCodexDynamicToolAllowlist, w as CODEX_NATIVE_HOOK_RELAY_TTL_GRACE_MS, wt as shouldBuildCodexPluginThreadConfig, x as joinPresentSections, y as resolveCodexAppServerThreadModelSelection, z as hasCodexNativeToolCatalog } from "./thread-requests-DmkmrGIt.mjs";
38
+ import { _ as readCodexMcpToolUiVisibility, a as buildTurnStartParams, b as isContextEngineBindingCompatible, c as assertScheduledCodexAppAuthorityRuntime, d as buildScheduledCodexAppServerConnectionIdentity, f as captureScheduledCodexAppAuthority, g as readCodexMcpToolConnectorId, h as resolveScheduledCodexAppCreatorCaptureDecision, i as buildTurnCollaborationMode, l as buildLegacyScheduledCodexAppRecoveryPrompt, m as readCurrentCodexScheduledAppPolicy, n as buildCodexParentLocalInstructions, o as buildCodexUserInput, p as intersectCodexPluginThreadConfigWithScheduledAuthority, s as startOrResumeThread, t as buildCodexHistoryProvenancePrefix, u as buildScheduledCodexAppAuthorityInputFingerprint, v as isCodexAppServerProfilerEnabled, y as buildContextEngineBinding } from "./thread-lifecycle-DcNw9n7E.mjs";
39
39
  import { a as resolveCodexRunSessionBindingAuthority, n as createCodexSessionGenerationSupersededError, o as resolveCodexSessionBinding } from "./session-binding-DGCYAfvD.mjs";
40
- import { a as CodexToolTranscriptProjection, b as sanitizeCodexAgentEventRecord, c as shouldEmitTranscriptToolProgress, i as emitCodexAgentEvent, p as requestPluginApprovalOutcome, r as CodexEventProjection, s as CodexToolProgressProjection, t as codexNativeSubagentMonitorRuntime, v as isCodexCommandBearingToolCall, x as sanitizeCodexToolArguments, y as resolveCodexToolProgressDetailMode } from "./native-subagent-monitor-BRr7YExU.mjs";
41
- import { n as CodexThreadPolicyHandoffError, s as restoreCodexThreadSkillsCatalogAfterCompaction } from "./thread-policy-Bf769xTq.mjs";
42
- import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-vY9gRYkw.mjs";
40
+ import { a as CodexToolTranscriptProjection, b as sanitizeCodexAgentEventRecord, c as shouldEmitTranscriptToolProgress, i as emitCodexAgentEvent, p as requestPluginApprovalOutcome, r as CodexEventProjection, s as CodexToolProgressProjection, t as codexNativeSubagentMonitorRuntime, v as isCodexCommandBearingToolCall, x as sanitizeCodexToolArguments, y as resolveCodexToolProgressDetailMode } from "./native-subagent-monitor-B9aAqfnU.mjs";
41
+ import { n as CodexThreadPolicyHandoffError, s as restoreCodexThreadSkillsCatalogAfterCompaction } from "./thread-policy-TTAb-1yF.mjs";
42
+ import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-DDban_4i.mjs";
43
43
  import { c as promptSnapshot, i as mirrorPromptAtTurnStartBestEffort, n as createCodexAppServerUserMessagePersistenceNotifier, o as buildCodexUserPromptMessage, s as buildResolvedCodexUserPromptMessage, t as codexTranscriptMirrorRuntime } from "./transcript-mirror-kxmCYsuF.mjs";
44
- import { a as resolveCodexPromptError, i as refreshCodexUsageLimitPromptError, n as formatCodexTurnStartUsageLimitError, r as markCodexAuthProfileBlockedFromRateLimits, t as CodexUsageLimitPromptError } from "./usage-limit-error-CwGm2hnj.mjs";
44
+ import { a as resolveCodexPromptError, i as refreshCodexUsageLimitPromptError, n as formatCodexTurnStartUsageLimitError, r as markCodexAuthProfileBlockedFromRateLimits, t as CodexUsageLimitPromptError } from "./usage-limit-error-BLnJh1mB.mjs";
45
45
  import { t as persistCodexContextCompactionActivity } from "./context-compaction-activity-CMla5FPJ.mjs";
46
46
  import { t as attemptTerminal } from "./attempt-terminal-gZrxQ35N.mjs";
47
47
  import { a as shouldKeepCodexSharedAbortOpen, i as runCodexAgentEndHook, n as ensureCodexWorkspaceDirOnce, o as withCodexAppServerFastModeServiceTier, r as estimateCodexAppServerProjectedTurnTokens, t as emitCodexAppServerEvent } from "./run-attempt-lifecycle-C-6O3Exn.mjs";
48
48
  import { t as CODEX_INFERENCE_GENERATION_KEY } from "./inference-metadata-CgIf7sOx.mjs";
49
49
  import "./inference-context-D-9gWlTR.mjs";
50
- import { i as createAssistantReasoningMessage, n as createAssistantCommentaryMessage, r as createAssistantMessage, t as createAssistantAsyncMessage } from "./event-projector-assistant-message-Bhu17sxy.mjs";
51
- import { C as readCodexRetainedBackgroundCommands, E as CodexNativeToolLifecycleProjector, S as hasCodexNativeBackgroundProcesses, T as mapCodexAppServerRemoteWorkspacePath, _ as shouldWarnCodexDynamicToolBuildStageSummary, a as emitDynamicToolStartedDiagnostic, b as createCodexNativePreToolUseFailureBuffer, c as buildDynamicTools, d as resolveCodexAppServerHookChannelId, f as resolveCodexExternalSandboxPolicyForOpenClawSandbox, g as shouldRequireCodexSandboxExecServerEnvironment, h as shouldEnableCodexAppServerNativeToolSurface, i as emitDynamicToolErrorDiagnostic, l as disableCodexPluginThreadConfig, m as resolveCodexSandboxEnvironmentSelection, n as projectCodexExecutableDynamicTools, o as emitDynamicToolTerminalDiagnostic, p as resolveCodexMessageToolProvider, r as routeCodexAppServerElicitationRequest, s as handleCodexAppServerApprovalRequest, t as createCodexDynamicToolBridge, u as resolveCodexAppServerExecutionCwd, v as ensureCodexSandboxExecServerEnvironment, w as readBoundedCodexRemoteWorkspaceFile, x as CodexNativeProcessAuthority, y as releaseCodexSandboxExecServerEnvironment } from "./dynamic-tools-86M3tRl4.mjs";
50
+ import { i as createAssistantReasoningMessage, n as createAssistantCommentaryMessage, r as createAssistantMessage, t as createAssistantAsyncMessage } from "./event-projector-assistant-message-BmWQXFLV.mjs";
51
+ import { C as readCodexRetainedBackgroundCommands, E as CodexNativeToolLifecycleProjector, S as hasCodexNativeBackgroundProcesses, T as mapCodexAppServerRemoteWorkspacePath, _ as shouldWarnCodexDynamicToolBuildStageSummary, a as emitDynamicToolStartedDiagnostic, b as createCodexNativePreToolUseFailureBuffer, c as buildDynamicTools, d as resolveCodexAppServerHookChannelId, f as resolveCodexExternalSandboxPolicyForOpenClawSandbox, g as shouldRequireCodexSandboxExecServerEnvironment, h as shouldEnableCodexAppServerNativeToolSurface, i as emitDynamicToolErrorDiagnostic, l as disableCodexPluginThreadConfig, m as resolveCodexSandboxEnvironmentSelection, n as projectCodexExecutableDynamicTools, o as emitDynamicToolTerminalDiagnostic, p as resolveCodexMessageToolProvider, r as routeCodexAppServerElicitationRequest, s as handleCodexAppServerApprovalRequest, t as createCodexDynamicToolBridge, u as resolveCodexAppServerExecutionCwd, v as ensureCodexSandboxExecServerEnvironment, w as readBoundedCodexRemoteWorkspaceFile, x as CodexNativeProcessAuthority, y as releaseCodexSandboxExecServerEnvironment } from "./dynamic-tools-D3NAwGw3.mjs";
52
52
  import { a as resolveCodexAppServerForModelProvider, i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, r as resolveCodexEffectiveSessionPermissionPolicy } from "./session-permission-policy-Ci_fVX6y.mjs";
53
- import { a as getCodexContextFileDisplayBasename, c as normalizeCodexDynamicToolName, i as getCodexContextFileBasename, n as CODEX_NATIVE_PROJECT_DOC_BASENAMES, o as isNonEmptyString, r as buildCodexWorkspaceBootstrapContext, s as normalizeCodexContextFilePath } from "./attempt-workspace-context-CSD2rKPq.mjs";
53
+ import { a as getCodexContextFileDisplayBasename, c as normalizeCodexDynamicToolName, i as getCodexContextFileBasename, n as CODEX_NATIVE_PROJECT_DOC_BASENAMES, o as isNonEmptyString, r as buildCodexWorkspaceBootstrapContext, s as normalizeCodexContextFilePath } from "./attempt-workspace-context-ejEuxrY1.mjs";
54
54
  import { n as captureCodexSettledTurnFinalizationContext } from "./settled-turn-context-D4yj4rxf.mjs";
55
- import { t as resolveCodexProviderWebSearchSupport } from "./provider-capabilities-CIWN6WAi.mjs";
56
- import { a as createComputerUseRequest, n as ensureCodexComputerUse, o as runCodexComputerUseLiveTest, t as defaultCodexPluginMetadataCache } from "./plugin-metadata-cache-DiVUT-uC.mjs";
55
+ import { t as resolveCodexProviderWebSearchSupport } from "./provider-capabilities-ByhBukaD.mjs";
56
+ import { a as createComputerUseRequest, n as ensureCodexComputerUse, o as runCodexComputerUseLiveTest, t as defaultCodexPluginMetadataCache } from "./plugin-metadata-cache-Q4ZFn6UH.mjs";
57
57
  import { asOptionalRecord, normalizeOptionalString, readNonBlankString, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
58
58
  import { createHash } from "node:crypto";
59
59
  import { isDeepStrictEqual } from "node:util";
@@ -444,6 +444,19 @@ var CodexAssistantProjection = class {
444
444
  delta: item.text
445
445
  });
446
446
  }
447
+ /**
448
+ * Codex deltas are best-effort and completed item text is authoritative (the
449
+ * codex-rs TUI consolidates from it); stream any tail a dropped final delta
450
+ * left out so live and terminal chat text end on the completed text.
451
+ */
452
+ async streamCompletedTextTail(item) {
453
+ if (item?.type !== "agentMessage" || typeof item.text !== "string") return;
454
+ const streamed = this.assistantTextByItem.get(item.id);
455
+ if (streamed && item.text.startsWith(streamed)) await this.handleAssistantDelta({
456
+ itemId: item.id,
457
+ delta: item.text.slice(streamed.length)
458
+ });
459
+ }
447
460
  recordItemCompleted(item, itemId, activeItemIds) {
448
461
  if (itemId && item?.type === "agentMessage") this.completedAssistantItemIds.add(itemId);
449
462
  this.noteNativeWorkBarrier(item);
@@ -1817,6 +1830,7 @@ var CodexAppServerEventProjector = class extends CodexTurnProjection {
1817
1830
  this.completedCompactionCount += 1;
1818
1831
  }
1819
1832
  if (!this.asyncDeliveryProjection.allows(item, true)) return;
1833
+ await this.assistantProjection.streamCompletedTextTail(item);
1820
1834
  const asyncMessage = this.assistantProjection.recordItemCompleted(item, itemId, this.activeItemIds);
1821
1835
  if (asyncMessage) await this.asyncDeliveryProjection.deliver(asyncMessage);
1822
1836
  if (this.projectionClosed) return;
@@ -1905,6 +1919,7 @@ var CodexAppServerEventProjector = class extends CodexTurnProjection {
1905
1919
  for (const item of turnItems) {
1906
1920
  if (!this.asyncDeliveryProjection.allows(item)) continue;
1907
1921
  this.diagnostics.warnUnknownItemStatus(item);
1922
+ await this.assistantProjection.streamCompletedTextTail(item);
1908
1923
  const asyncMessage = this.assistantProjection.recordSnapshotItem(item);
1909
1924
  if (asyncMessage) await this.asyncDeliveryProjection.deliver(asyncMessage);
1910
1925
  if (this.projectionClosed) return;
@@ -8078,7 +8093,7 @@ async function prepareCodexAttemptTurnRequest(resources, turnRuntime, ensureCurr
8078
8093
  enabled: turnAppServer.enableUltrafast === true && fastMode !== false,
8079
8094
  serviceTier: turnStartParams.serviceTier,
8080
8095
  model: turnStartParams.model ?? model,
8081
- modelProvider,
8096
+ modelProvider: modelProvider ?? effectiveRuntimeProviderId,
8082
8097
  client: turnClient,
8083
8098
  timeoutMs: Math.min(params.timeoutMs, 2500),
8084
8099
  signal: runAbortController.signal,
@@ -3,7 +3,7 @@ import { n as assertCodexThreadForkParams } from "./protocol-CANUwXJ3.mjs";
3
3
  import { v as sessionBindingIdentity } from "./session-binding-record-Oe9L-CNY.mjs";
4
4
  import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
5
5
  import { n as resolveCodexAppServerLocalHomeDir, r as resolveCodexAppServerUserHomeDir, t as resolveCodexAppServerHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
6
- import { i as hasActiveSharedCodexAppServerWork, r as getSharedCodexAppServerClientState } from "./shared-client-lifecycle-BXJRGNcp.mjs";
6
+ import { i as hasActiveSharedCodexAppServerWork, r as getSharedCodexAppServerClientState } from "./shared-client-lifecycle-CJ0lYVCW.mjs";
7
7
  import { n as CodexAppServerRpcError, r as isCodexThreadReadMissingError } from "./rpc-error-BlD2vuzn.mjs";
8
8
  import { t as CODEX_CONTROL_METHODS } from "./capabilities-B3WEZl4e.mjs";
9
9
  import { n as codexCatalogHomeIdFromCanonicalPath } from "./session-catalog-home-id-vlih0B_g.mjs";
@@ -14,7 +14,7 @@ import { r as projectCodexUserItemText } from "./transcript-history-projection-D
14
14
  import { r as codexUpstreamContinueResult } from "./session-upstream-marker-D15C9NHp.mjs";
15
15
  import { t as buildCodexAppServerConnectionFingerprint } from "./plugin-app-cache-key-BL9B5H0L.mjs";
16
16
  import { n as readCodexSessionMeta } from "./session-catalog-provenance-DoAvktcj.mjs";
17
- import { t as codexCatalogResidentHomeKey } from "./session-catalog-events-BNKvbFTA.mjs";
17
+ import { t as codexCatalogResidentHomeKey } from "./session-catalog-events-D9zC7gRb.mjs";
18
18
  import { a as setCodexCatalogConnectionHomeResolver } from "./binding-connection-DTtN1KrX.mjs";
19
19
  import { n as findCodexAppServerSpawnError } from "./spawn-error-CL3n6MAa.mjs";
20
20
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1561,7 +1561,7 @@ async function requireEligibleCodexThread(params) {
1561
1561
  remaining();
1562
1562
  if (thread.id !== threadId || thread.ephemeral === true || !isInteractiveThreadSource(thread.source)) throw unverified();
1563
1563
  if (!root) {
1564
- const { CODEX_CATALOG_NATIVE_PAGE_LIMIT } = await import("./session-catalog-native-projection-DZyauw3D.mjs").then((n) => n.a);
1564
+ const { CODEX_CATALOG_NATIVE_PAGE_LIMIT } = await import("./session-catalog-native-projection-DhId_sl8.mjs").then((n) => n.a);
1565
1565
  const { CODEX_CATALOG_MAX_ROWS } = await import("./session-catalog-limits-DDxOsQeC.mjs").then((n) => n.r);
1566
1566
  let cursor;
1567
1567
  const seenCursors = /* @__PURE__ */ new Set();
@@ -2014,7 +2014,7 @@ function createCodexSessionCatalogControl(params) {
2014
2014
  if (closed || generation !== config || residentEpoch !== epoch) throw new Error("Codex catalog configuration changed");
2015
2015
  let index = indexes.get(homeId);
2016
2016
  if (!index) {
2017
- const [{ CodexCatalogIndex }, { canReuseCodexCatalogPreview, projectCodexCatalogDeltaPage, projectCodexCatalogPage }] = await Promise.all([import("./session-catalog-index-BY4p8Fcc.mjs"), import("./session-catalog-projection-D5zfSje1.mjs")]);
2017
+ const [{ CodexCatalogIndex }, { canReuseCodexCatalogPreview, projectCodexCatalogDeltaPage, projectCodexCatalogPage }] = await Promise.all([import("./session-catalog-index-CNKpHanP.mjs"), import("./session-catalog-projection-DcqN7DuI.mjs")]);
2018
2018
  source?.assertCurrent();
2019
2019
  if (closed || generation !== config || residentEpoch !== epoch) throw new Error("Codex catalog configuration changed");
2020
2020
  index = indexes.get(homeId);
@@ -2142,7 +2142,7 @@ function createCodexSessionCatalogControl(params) {
2142
2142
  const runtime = source?.appServer ?? resolveRuntimeOptions({ pluginConfig });
2143
2143
  const requestOptions = resolveRequestOptions(runtime.start, agentId, source);
2144
2144
  return createCodexCatalogRequestSnapshot(runtime.requestTimeoutMs, async (method, requestParams, timeoutMs, assertCurrent, observation) => {
2145
- const { codexControlRequest } = await import("./command-rpc-CKsxWgF6.mjs").then((n) => n.n);
2145
+ const { codexControlRequest } = await import("./command-rpc-BDfCWgc_.mjs").then((n) => n.n);
2146
2146
  return await codexControlRequest(pluginConfig, method, requestParams, {
2147
2147
  ...requestOptions,
2148
2148
  authProfileId: null,
@@ -2164,9 +2164,9 @@ function createCodexSessionCatalogControl(params) {
2164
2164
  const runtime = source?.appServer ?? resolveRuntimeOptions({ pluginConfig });
2165
2165
  const { agentDir, config: runtimeConfig, startOptions } = resolveRequestOptions(runtime.start, agentId, source);
2166
2166
  let catalogIndex;
2167
- const { getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient, retireSharedCodexAppServerClientIfCurrent } = await import("./shared-client-D6n5dvpA.mjs").then((n) => n.v);
2168
- const { resolveCodexAppServerClientInstanceId } = await import("./client-B4EOuI-w.mjs").then((n) => n.n);
2169
- const { requestCodexAppServerClientJson } = await import("./request-D-Vhprx3.mjs").then((n) => n.a);
2167
+ const { getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient, retireSharedCodexAppServerClientIfCurrent } = await import("./shared-client-tOOyadmg.mjs").then((n) => n.v);
2168
+ const { resolveCodexAppServerClientInstanceId } = await import("./client-CyquSiJ2.mjs").then((n) => n.n);
2169
+ const { requestCodexAppServerClientJson } = await import("./request-DxKAfWyy.mjs").then((n) => n.a);
2170
2170
  const client = await getLeasedSharedCodexAppServerClient({
2171
2171
  agentDir,
2172
2172
  config: runtimeConfig,
@@ -2235,7 +2235,7 @@ function createCodexSessionCatalogControl(params) {
2235
2235
  await Promise.allSettled(residentRequests);
2236
2236
  const clients = getSharedCodexAppServerClientState();
2237
2237
  if (clients.liveClients.size > 0 || clients.startup.pending.size > 0) {
2238
- const { clearSharedCodexAppServerClientAndWait } = await import("./shared-client-D6n5dvpA.mjs").then((n) => n.v);
2238
+ const { clearSharedCodexAppServerClientAndWait } = await import("./shared-client-tOOyadmg.mjs").then((n) => n.v);
2239
2239
  await clearSharedCodexAppServerClientAndWait();
2240
2240
  }
2241
2241
  },
@@ -1,10 +1,10 @@
1
1
  import { c as MAX_CWD_LENGTH, d as boundedCatalogString } from "./session-catalog-parsing-CPGaPYr-.mjs";
2
- import { n as defineCodexBuildState } from "./build-state-CDQUVDAI.mjs";
2
+ import { n as defineCodexBuildState } from "./build-state--SrHyc6r.mjs";
3
3
  import { r as inferCodexAppServerConnectionClass } from "./config-security-CE-FcGw9.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-BL9B5H0L.mjs";
7
- import { d as observeCodexCatalogEphemeralThreads, r as projectCodexCatalogNativeThread, s as codexCatalogSourceForClient } from "./session-catalog-native-projection-DZyauw3D.mjs";
7
+ import { d as observeCodexCatalogEphemeralThreads, r as projectCodexCatalogNativeThread, s as codexCatalogSourceForClient } from "./session-catalog-native-projection-DhId_sl8.mjs";
8
8
  import { createHash } from "node:crypto";
9
9
  import { embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-registration";
10
10
  import path from "node:path";
@@ -3,10 +3,10 @@ import { t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-DDxOsQeC.m
3
3
  import { i as retainCodexCatalogRow, n as codexCatalogRowRecency, r as compareCodexCatalogRows, t as CodexCatalogOrdering } from "./session-catalog-index-order-BcQpHks3.mjs";
4
4
  import { n as CodexCatalogPersistence, r as codexCatalogMetadataPage } from "./session-catalog-index-state-TeO7EyO-.mjs";
5
5
  import { i as CodexCatalogAvailability, r as withCodexCatalogListRequest } from "./session-catalog-list-request-CvtxrYSe.mjs";
6
- import { l as getCodexCatalogSource, p as setCodexCatalogSource, r as projectCodexCatalogNativeThread, u as hasLiveCodexCatalogSource } from "./session-catalog-native-projection-DZyauw3D.mjs";
7
- import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-BNKvbFTA.mjs";
6
+ import { l as getCodexCatalogSource, p as setCodexCatalogSource, r as projectCodexCatalogNativeThread, u as hasLiveCodexCatalogSource } from "./session-catalog-native-projection-DhId_sl8.mjs";
7
+ import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-D9zC7gRb.mjs";
8
8
  import { a as reportCodexCatalogSpawnFailure, n as findCodexAppServerSpawnError } from "./spawn-error-CL3n6MAa.mjs";
9
- import { CodexCatalogProjectionCapacityError, CodexCatalogProjections, a as resolveCodexCatalogRolloutFingerprint, i as readCodexCatalogRollout, mergeCodexCatalogRolloutRow, n as indexCodexCatalogRowsByRollout, o as scanCodexCatalogRollouts, projectCodexCatalogThread, r as isCodexCatalogRolloutPathCovered, t as codexCatalogRolloutLogicalPath } from "./session-catalog-projection-D5zfSje1.mjs";
9
+ import { CodexCatalogProjectionCapacityError, CodexCatalogProjections, a as resolveCodexCatalogRolloutFingerprint, i as readCodexCatalogRollout, mergeCodexCatalogRolloutRow, n as indexCodexCatalogRowsByRollout, o as scanCodexCatalogRollouts, projectCodexCatalogThread, r as isCodexCatalogRolloutPathCovered, t as codexCatalogRolloutLogicalPath } from "./session-catalog-projection-DcqN7DuI.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,6 +1,6 @@
1
1
  import { D as selectCodexCatalogPreviewInput, c as MAX_CWD_LENGTH, d as boundedCatalogString, k as truncateCodexCatalogPreview } from "./session-catalog-parsing-CPGaPYr-.mjs";
2
2
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
3
- import { n as defineCodexBuildState } from "./build-state-CDQUVDAI.mjs";
3
+ import { n as defineCodexBuildState } from "./build-state--SrHyc6r.mjs";
4
4
  import { n as detachCodexCatalogString } from "./session-catalog-limits-DDxOsQeC.mjs";
5
5
  import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
6
6
  //#region extensions/codex/src/session-catalog-source.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-DDxOsQeC.mjs";
3
3
  import { n as codexCatalogRowRecency } from "./session-catalog-index-order-BcQpHks3.mjs";
4
4
  import { t as isOpenClawManagedCodexThread } from "./session-catalog-provenance-DoAvktcj.mjs";
5
- import { c as copyCodexCatalogSource, l as getCodexCatalogSource, p as setCodexCatalogSource, r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-DZyauw3D.mjs";
5
+ import { c as copyCodexCatalogSource, l as getCodexCatalogSource, p as setCodexCatalogSource, r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-DhId_sl8.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,5 +1,5 @@
1
1
  import "./session-catalog-parsing-CPGaPYr-.mjs";
2
- import "./session-catalog-C7GPE6q8.mjs";
2
+ import "./session-catalog-BaVqm4-Q.mjs";
3
3
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { normalizeAgentId } from "openclaw/plugin-sdk/routing";
5
5
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
@@ -1,10 +1,10 @@
1
- import { l as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-BXJRGNcp.mjs";
1
+ import { l as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-CJ0lYVCW.mjs";
2
2
  import { t as withCodexAppServerThreadMutation } from "./thread-ownership-queue-Dp24d7-F.mjs";
3
- import { t as isIncognitoSessionKey } from "./incognito-session-DWYapfwf.mjs";
4
- import { G as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed } from "./shared-client-D6n5dvpA.mjs";
5
- import { n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-_RUXhE5e.mjs";
6
- import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-BRr7YExU.mjs";
7
- import { t as isSameCodexAppServerThreadOwner } from "./thread-ownership-vY9gRYkw.mjs";
3
+ import { t as isIncognitoSessionKey } from "./incognito-session-C5ve_-63.mjs";
4
+ import { K as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed } from "./shared-client-tOOyadmg.mjs";
5
+ import { n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-93r-CLTi.mjs";
6
+ import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-B9aAqfnU.mjs";
7
+ import { t as isSameCodexAppServerThreadOwner } from "./thread-ownership-DDban_4i.mjs";
8
8
  import { t as getCodexSessionInitializationRollback } from "./session-initialization-6aveB9qb.mjs";
9
9
  //#region extensions/codex/src/app-server/session-retirement.ts
10
10
  async function releaseSessionSubscription(client, binding, sessionKey, assertCurrent) {
@@ -1,12 +1,12 @@
1
1
  import { r as readMirrorIdentity, t as attachCodexMirrorIdentity } from "./upstream-prompt-provenance-fXkKbPVC.mjs";
2
2
  import { a as fingerprintCodexMirrorSourceMessage, c as readCodexMirrorSourceFingerprint } from "./transcript-mirror-attestation-YSegaktH.mjs";
3
- import { tt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-D6n5dvpA.mjs";
4
- import { _ as assertCodexPassiveTurnItems } from "./client-B4EOuI-w.mjs";
5
- import { o as resolveCodexLocalRuntimeAttribution } from "./native-subagent-monitor-BRr7YExU.mjs";
3
+ import { rt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-tOOyadmg.mjs";
4
+ import { _ as assertCodexPassiveTurnItems } from "./client-CyquSiJ2.mjs";
5
+ import { o as resolveCodexLocalRuntimeAttribution } from "./native-subagent-monitor-B9aAqfnU.mjs";
6
6
  import { t as codexTranscriptMirrorRuntime } from "./transcript-mirror-kxmCYsuF.mjs";
7
- import { runBoundedCodexAppServerTurn } from "./bounded-turn-BKSjzckA.mjs";
7
+ import { runBoundedCodexAppServerTurn } from "./bounded-turn-I8Vb-qq3.mjs";
8
8
  import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-B8K_ylqk.mjs";
9
- import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-Bhu17sxy.mjs";
9
+ import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-BmWQXFLV.mjs";
10
10
  import { t as CodexSettledTurnContext } from "./settled-turn-context-D4yj4rxf.mjs";
11
11
  import { isSilentReplyText } from "openclaw/plugin-sdk/reply-runtime";
12
12
  //#region extensions/codex/src/app-server/settled-turn-finalizer.ts
@@ -1,4 +1,4 @@
1
- import { n as defineCodexBuildState } from "./build-state-CDQUVDAI.mjs";
1
+ import { n as defineCodexBuildState } from "./build-state--SrHyc6r.mjs";
2
2
  //#region extensions/codex/src/app-server/shared-client-lifecycle.ts
3
3
  /** Client ownership and synchronous retirement, independent of startup/auth execution. */
4
4
  const createCodexAppServerStartupLifetime = () => ({
@@ -1,21 +1,21 @@
1
1
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
- import { n as defineCodexBuildState, t as codexBuildSymbol } from "./build-state-CDQUVDAI.mjs";
2
+ import { n as defineCodexBuildState, t as codexBuildSymbol } from "./build-state--SrHyc6r.mjs";
3
3
  import { t as CODEX_APP_SERVER_AUTH_PROVIDER } from "./auth-profile-selection-DFu9e167.mjs";
4
4
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
5
5
  import { a as withEphemeralCodexAuthStore, i as withClearedEnvironmentVariables, n as resolveCodexAppServerLocalHomeDir, r as resolveCodexAppServerUserHomeDir, t as resolveCodexAppServerHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
6
6
  import { a as resolveCodexAppServerStartOptionsForAgent, d as readCodexEffectiveConfig, o as resolveCodexComputerUseConfig, t as codexAppServerStartOptionsKey, u as CODEX_SESSION_OVERRIDABLE_LAYER_TYPES } from "./config-options-CzyWLTJt.mjs";
7
7
  import { d as resolveMacOSDesktopCodexBundledMarketplaceCandidates, f as resolveMacOSDesktopCodexComputerUseServiceAppCandidates, i as resolveManagedCodexNativeCommand, l as resolveFirstExistingMacOSDesktopCodexBundledMarketplacePath, r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand, u as resolveMacOSDesktopCodexAppPathCandidates } from "./managed-binary-B6hQ1UKR.mjs";
8
- import { a as readCodexCliAuthFileApiKey, c as resolveCodexAppServerPreparedApiKeyCacheKey, d as waitForCodexDesktopGeneration, f as readCodexDesktopArtifactTreeFingerprint, i as fingerprintTokenAuthProfileCacheKey, n as CODEX_AUTH_JSON_FILENAME, o as readFirstNonEmptyEnv, r as fingerprintApiKeyAuthProfileCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey, t as CODEX_APP_SERVER_API_KEY_ENV_VARS, u as isCodexDesktopGenerationCurrent } from "./auth-cache-key-gOhcdE_N.mjs";
9
- import { a as notifyDesktopGenerationDrainChecks, c as retainSharedClientEntry, d as retireSharedCodexAppServerClientIfCurrent, m as waitForUnclaimedSharedClientStartup, n as getCurrentSharedClientEntry, o as ownCodexStartup, r as getSharedCodexAppServerClientState, s as releaseSharedClientEntry, t as createCodexAppServerStartupLifetime, u as retirePendingSharedClientEntryIfUnclaimed } from "./shared-client-lifecycle-BXJRGNcp.mjs";
8
+ import { a as readCodexCliAuthFileApiKey, c as resolveCodexAppServerPreparedApiKeyCacheKey, d as waitForCodexDesktopGeneration, f as readCodexDesktopArtifactTreeFingerprint, i as fingerprintTokenAuthProfileCacheKey, n as CODEX_AUTH_JSON_FILENAME, o as readFirstNonEmptyEnv, r as fingerprintApiKeyAuthProfileCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey, t as CODEX_APP_SERVER_API_KEY_ENV_VARS, u as isCodexDesktopGenerationCurrent } from "./auth-cache-key-Bs_3kRJD.mjs";
9
+ import { a as notifyDesktopGenerationDrainChecks, c as retainSharedClientEntry, d as retireSharedCodexAppServerClientIfCurrent, m as waitForUnclaimedSharedClientStartup, n as getCurrentSharedClientEntry, o as ownCodexStartup, r as getSharedCodexAppServerClientState, s as releaseSharedClientEntry, t as createCodexAppServerStartupLifetime, u as retirePendingSharedClientEntryIfUnclaimed } from "./shared-client-lifecycle-CJ0lYVCW.mjs";
10
10
  import { n as resolveCodexAppServerSpawnEnv } from "./transport-stdio-CbutOIEh.mjs";
11
11
  import { n as CodexAppServerAuthProfileUnavailableError, r as formatCodexAuthProfileUnavailableMessage } from "./auth-profile-recovery-BREezV0L.mjs";
12
12
  import { i as withTimeout } from "./timeout-CXOfNoaX.mjs";
13
13
  import { n as readCodexSessionMeta } from "./session-catalog-provenance-DoAvktcj.mjs";
14
- import { n as observeCodexCatalogClient } from "./session-catalog-events-BNKvbFTA.mjs";
14
+ import { n as observeCodexCatalogClient } from "./session-catalog-events-D9zC7gRb.mjs";
15
15
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-C0NbLms1.mjs";
16
16
  import { a as resolveCodexAppServerAuthProfileStore, i as resolveCodexAppServerAuthProfileIdForAgent, r as resolveCodexAppServerAuthProfileId, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-B0okYl2D.mjs";
17
17
  import { i as isCodexResponsesOAuthCredential, n as createCodexResponsesOAuth, o as resolveCodexResponsesOAuthProfileFingerprint, r as isCodexResponsesOAuth, t as CODEX_RESPONSES_OAUTH_PROVIDER } from "./responses-oauth-twnuTaAa.mjs";
18
- import { f as isUnsupportedCodexAppServerVersionError, t as CodexAppServerClient } from "./client-B4EOuI-w.mjs";
18
+ import { f as isUnsupportedCodexAppServerVersionError, t as CodexAppServerClient } from "./client-CyquSiJ2.mjs";
19
19
  import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-BTBE-LD9.mjs";
20
20
  import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
21
21
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1631,6 +1631,36 @@ function resolveExplicitChatgptAccountId(credential) {
1631
1631
  }
1632
1632
  }
1633
1633
  //#endregion
1634
+ //#region extensions/codex/src/app-server/client-thread-closure.ts
1635
+ const MAX_CLOSED_THREAD_RECEIPTS = 256;
1636
+ const closureState = defineCodexBuildState("openclaw.codexAppServerClosedThreads", () => ({
1637
+ closedThreadsByClient: /* @__PURE__ */ new WeakMap(),
1638
+ observedClients: /* @__PURE__ */ new WeakSet()
1639
+ }))();
1640
+ function recordCodexAppServerThreadClosed(client, threadId) {
1641
+ const receipts = closureState.closedThreadsByClient.get(client) ?? /* @__PURE__ */ new Set();
1642
+ receipts.delete(threadId);
1643
+ receipts.add(threadId);
1644
+ while (receipts.size > MAX_CLOSED_THREAD_RECEIPTS) receipts.delete(receipts.values().next().value);
1645
+ closureState.closedThreadsByClient.set(client, receipts);
1646
+ }
1647
+ function ensureCodexAppServerThreadClosureTracking(client) {
1648
+ if (closureState.observedClients.has(client)) return;
1649
+ closureState.observedClients.add(client);
1650
+ client.addNotificationHandler((notification) => {
1651
+ const params = notification.params;
1652
+ const threadId = typeof params === "object" && params !== null && "threadId" in params ? params.threadId : void 0;
1653
+ if (notification.method === "thread/closed" && typeof threadId === "string") recordCodexAppServerThreadClosed(client, threadId);
1654
+ });
1655
+ client.addCloseHandler(() => closureState.closedThreadsByClient.delete(client));
1656
+ }
1657
+ function clearCodexAppServerThreadClosed(client, threadId) {
1658
+ closureState.closedThreadsByClient.get(client)?.delete(threadId);
1659
+ }
1660
+ function wasCodexAppServerThreadClosed(client, threadId) {
1661
+ return closureState.closedThreadsByClient.get(client)?.has(threadId) === true;
1662
+ }
1663
+ //#endregion
1634
1664
  //#region extensions/codex/src/app-server/client-thread-owner.ts
1635
1665
  function createThreadOwnerToken(threadId, onInvalidated) {
1636
1666
  const owner = {
@@ -1705,6 +1735,24 @@ function createCodexEphemeralThreadPolicy({ developerInstructions, skillsInstruc
1705
1735
  };
1706
1736
  }
1707
1737
  //#endregion
1738
+ //#region extensions/codex/src/app-server/client-workspace-references.ts
1739
+ /** Record accepted input without clearing a compaction observed during turn/start. */
1740
+ function prepareCodexWorkspaceReference(runtime, threadId, reference) {
1741
+ const digest = createHash("sha256").update(reference ?? "").digest("hex");
1742
+ const previous = runtime?.workspaceReferences.get(threadId) ?? { needsReintroduction: true };
1743
+ if (runtime && !runtime.closed) runtime.workspaceReferences.set(threadId, previous);
1744
+ return {
1745
+ include: previous.needsReintroduction || previous.digest !== digest,
1746
+ accepted: () => {
1747
+ if (!runtime || runtime.closed || runtime.workspaceReferences.get(threadId) !== previous) return;
1748
+ runtime.workspaceReferences.set(threadId, {
1749
+ digest,
1750
+ needsReintroduction: false
1751
+ });
1752
+ }
1753
+ };
1754
+ }
1755
+ //#endregion
1708
1756
  //#region extensions/codex/src/app-server/rate-limit-cache.ts
1709
1757
  const DEFAULT_CODEX_RATE_LIMIT_CACHE_MAX_AGE_MS = 6e5;
1710
1758
  const SPARSE_ACCOUNT_METADATA_KEYS = [
@@ -1829,20 +1877,7 @@ function forgetCodexWorkspaceReferences(client, threadId) {
1829
1877
  }
1830
1878
  /** Record accepted input without clearing a compaction observed during turn/start. */
1831
1879
  function prepareCodexWorkspaceReferences(client, threadId, reference) {
1832
- const runtime = configuredClients.get(client);
1833
- const digest = createHash("sha256").update(reference ?? "").digest("hex");
1834
- const previous = runtime?.workspaceReferences.get(threadId) ?? { needsReintroduction: true };
1835
- if (runtime && !runtime.closed) runtime.workspaceReferences.set(threadId, previous);
1836
- return {
1837
- include: previous.needsReintroduction || previous.digest !== digest,
1838
- accepted: () => {
1839
- if (!runtime || runtime.closed || runtime.workspaceReferences.get(threadId) !== previous) return;
1840
- runtime.workspaceReferences.set(threadId, {
1841
- digest,
1842
- needsReintroduction: false
1843
- });
1844
- }
1845
- };
1880
+ return prepareCodexWorkspaceReference(configuredClients.get(client), threadId, reference);
1846
1881
  }
1847
1882
  /** Immutable declarations are data owned by this physical client, never retained executors. */
1848
1883
  async function readCodexClientSessionMeta(client, sessionsRoot, boundRolloutPath, threadId) {
@@ -1892,6 +1927,7 @@ function ensureCodexAppServerClientRuntime(client, context) {
1892
1927
  workspaceReferences: /* @__PURE__ */ new Map()
1893
1928
  };
1894
1929
  configuredClients.set(client, runtime);
1930
+ ensureCodexAppServerThreadClosureTracking(client);
1895
1931
  client.addCloseHandler(() => {
1896
1932
  runtime.closed = true;
1897
1933
  if (runtime.evictionTimer) {
@@ -2044,6 +2080,7 @@ async function retainCodexAppServerLiveThread(client, threadId, releaseThread, c
2044
2080
  return false;
2045
2081
  }
2046
2082
  const previousOwner = runtime.retainedThreads.get(threadId)?.ownerToken;
2083
+ clearCodexAppServerThreadClosed(client, threadId);
2047
2084
  runtime.retainedThreads.delete(threadId);
2048
2085
  const retained = {
2049
2086
  ownerToken,
@@ -2177,10 +2214,10 @@ function revertCodexAppServerLiveThreadSkillsCatalog(client, threadId) {
2177
2214
  function hasCodexAppServerLiveThread(client, threadId) {
2178
2215
  return hasThreadOwnership(configuredClients.get(client), threadId);
2179
2216
  }
2180
- function isCodexAppServerLiveThreadClaimed(client, threadId) {
2181
- const runtime = configuredClients.get(client);
2182
- return runtime !== void 0 && !runtime.closed && runtime.claimedThreads.has(threadId);
2183
- }
2217
+ const hasLiveThreadMark = (mark) => (client, threadId) => isCodexAppServerClientRuntimeLive(client) && configuredClients.get(client)?.[mark].has(threadId) === true;
2218
+ const isCodexAppServerLiveThreadClaimed = hasLiveThreadMark("claimedThreads");
2219
+ /** Native commands and children can still need an otherwise-idle subscription. */
2220
+ const isCodexAppServerLiveThreadProtected = hasLiveThreadMark("protectedThreads");
2184
2221
  function hasCodexAppServerSiblingThreadWork(client, threadId) {
2185
2222
  return hasSiblingThreadWork(configuredClients.get(client), threadId);
2186
2223
  }
@@ -2521,7 +2558,7 @@ async function prepareCodexInferenceRoute(params) {
2521
2558
  }
2522
2559
  pending = Promise.all([
2523
2560
  import("./inference-proxy-DhcXOgUE.mjs"),
2524
- import("./native-subagent-monitor-BRr7YExU.mjs").then((n) => n.n),
2561
+ import("./native-subagent-monitor-B9aAqfnU.mjs").then((n) => n.n),
2525
2562
  import("./inference-dispatch-CMZtjQyz.mjs")
2526
2563
  ]).then(([{ createCodexInferenceProxy }, native, { createCodexInferenceModelBinding }]) => {
2527
2564
  assertClient();
@@ -3588,4 +3625,4 @@ function closeSharedClientEntryIfUnclaimed(entry) {
3588
3625
  return Boolean(entry.client);
3589
3626
  }
3590
3627
  //#endregion
3591
- export { reconcileCodexComputerUseStartArtifacts as $, bindCodexInferenceThread as A, isCodexAppServerClientRuntimeLive as B, CodexThreadBindingConflictError as C, nativeHookRelayUnregisterQueue as D, isCodexContextRestartSelectionChangedError as E, consumeCodexAppServerLiveThread as F, releaseCodexAppServerLiveThread as G, prepareCodexWorkspaceReferences as H, ensureCodexAppServerClientRuntime as I, unsubscribeCodexAppServerLiveThread as J, retainCodexAppServerLiveThread as K, forgetCodexWorkspaceReferences as L, getCodexInferenceThreadQualification as M, prepareCodexInferenceThreadConfig as N, acquireCodexNativeConfigFence as O, claimCodexAppServerLiveThread as P, createCodexEphemeralThreadPolicy as Q, hasCodexAppServerLiveThread as R, CodexAdoptedThreadActiveError as S, CodexThreadStartRequestError as T, protectCodexAppServerLiveThread as U, isCodexAppServerLiveThreadClaimed as V, readCodexClientSessionMeta as W, readRecentCodexRateLimits as X, readCodexRateLimitsRevision as Y, rememberCodexRateLimitsRead as Z, retainSharedCodexAppServerClientIfCurrent as _, clearSharedCodexAppServerClientIfCurrentAndUnclaimed as a, isLegacyCodexComputerUsePluginDisabled as at, withLeasedCodexAppServerClientStartSelectionRetry as b, getLeasedSharedCodexAppServerClient as c, assertNotSymlink as ct, readCodexAppServerClientDesktopGeneration as d, TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS as dt, resolveCodexAppServerAuthAccountCacheKey as et, readCodexAppServerClientDesktopGenerationFingerprint as f, isCodexAppServerStartupError as ft, resolveCodexNativeConfigFenceKey as g, releaseLeasedSharedCodexAppServerClient as h, withCodexStartupTimeout as ht, clearSharedCodexAppServerClientIfCurrent as i, hasLegacyCodexComputerUseMcpPolicy as it, getCodexInferenceThread as j, assertCodexInferenceRouteConfig as k, getSharedCodexAppServerClient as l, CodexAppServerStartupError as lt, releaseCodexAppServerClientLease as m, resolveCodexStartupTimeoutMs as mt, captureCodexAppServerClientLifetime as n, resolveBundledComputerUseMarketplacePath as nt, clearSharedCodexAppServerClientIfCurrentAndWait as o, resolveManagedCodexComputerUseConfig as ot, readCodexAppServerClientProcessIdentity as p, resolveCodexGatewayTimeoutWithGraceMs as pt, revertCodexAppServerLiveThreadSkillsCatalog as q, captureSharedCodexAppServerCatalogLifetime as r, resolveClientManagedBundledMarketplacePath as rt, createIsolatedCodexAppServerClient as s, ensureCodexComputerUseSharedPluginCache as st, assertCodexAppServerClientStartSelectionCurrent as t, resolveCodexAppServerPreparedAuthHandoff as tt, isCodexAppServerStartSelectionChangedError as u, TURN_FINALIZE_DRAIN_ABORT_GRACE_MS as ut, shared_client_exports as v, CodexThreadClientReplacementError as w, CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED as x, waitForCodexAppServerClientDesktopGenerationDrain as y, hasCodexAppServerSiblingThreadWork as z };
3628
+ export { createCodexEphemeralThreadPolicy as $, bindCodexInferenceThread as A, isCodexAppServerClientRuntimeLive as B, CodexThreadBindingConflictError as C, nativeHookRelayUnregisterQueue as D, isCodexContextRestartSelectionChangedError as E, consumeCodexAppServerLiveThread as F, readCodexClientSessionMeta as G, isCodexAppServerLiveThreadProtected as H, ensureCodexAppServerClientRuntime as I, revertCodexAppServerLiveThreadSkillsCatalog as J, releaseCodexAppServerLiveThread as K, forgetCodexWorkspaceReferences as L, getCodexInferenceThreadQualification as M, prepareCodexInferenceThreadConfig as N, acquireCodexNativeConfigFence as O, claimCodexAppServerLiveThread as P, rememberCodexRateLimitsRead as Q, hasCodexAppServerLiveThread as R, CodexAdoptedThreadActiveError as S, CodexThreadStartRequestError as T, prepareCodexWorkspaceReferences as U, isCodexAppServerLiveThreadClaimed as V, protectCodexAppServerLiveThread as W, readCodexRateLimitsRevision as X, unsubscribeCodexAppServerLiveThread as Y, readRecentCodexRateLimits as Z, retainSharedCodexAppServerClientIfCurrent as _, withCodexStartupTimeout as _t, clearSharedCodexAppServerClientIfCurrentAndUnclaimed as a, resolveClientManagedBundledMarketplacePath as at, withLeasedCodexAppServerClientStartSelectionRetry as b, getLeasedSharedCodexAppServerClient as c, resolveManagedCodexComputerUseConfig as ct, readCodexAppServerClientDesktopGeneration as d, CodexAppServerStartupError as dt, wasCodexAppServerThreadClosed as et, readCodexAppServerClientDesktopGenerationFingerprint as f, TURN_FINALIZE_DRAIN_ABORT_GRACE_MS as ft, resolveCodexNativeConfigFenceKey as g, resolveCodexStartupTimeoutMs as gt, releaseLeasedSharedCodexAppServerClient as h, resolveCodexGatewayTimeoutWithGraceMs as ht, clearSharedCodexAppServerClientIfCurrent as i, resolveBundledComputerUseMarketplacePath as it, getCodexInferenceThread as j, assertCodexInferenceRouteConfig as k, getSharedCodexAppServerClient as l, ensureCodexComputerUseSharedPluginCache as lt, releaseCodexAppServerClientLease as m, isCodexAppServerStartupError as mt, captureCodexAppServerClientLifetime as n, resolveCodexAppServerAuthAccountCacheKey as nt, clearSharedCodexAppServerClientIfCurrentAndWait as o, hasLegacyCodexComputerUseMcpPolicy as ot, readCodexAppServerClientProcessIdentity as p, TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS as pt, retainCodexAppServerLiveThread as q, captureSharedCodexAppServerCatalogLifetime as r, resolveCodexAppServerPreparedAuthHandoff as rt, createIsolatedCodexAppServerClient as s, isLegacyCodexComputerUsePluginDisabled as st, assertCodexAppServerClientStartSelectionCurrent as t, reconcileCodexComputerUseStartArtifacts as tt, isCodexAppServerStartSelectionChangedError as u, assertNotSymlink as ut, shared_client_exports as v, CodexThreadClientReplacementError as w, CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED as x, waitForCodexAppServerClientDesktopGenerationDrain as y, hasCodexAppServerSiblingThreadWork as z };
@@ -6,18 +6,18 @@ import { i as resolveCodexAppServerHomeScope, l as resolveCodexModelBackedReview
6
6
  import { n as formatCodexUsageLimitErrorMessage } from "./rate-limits-B7-X2TgG.mjs";
7
7
  import { i as resolveCodexBindingAppServerConnection, r as requireCodexSupervisionModelSelection } from "./binding-connection-DTtN1KrX.mjs";
8
8
  import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-DKhXquav.mjs";
9
- import { X as readRecentCodexRateLimits, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease, tt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-D6n5dvpA.mjs";
10
- import { A as handleDynamicToolCallWithTimeout, B as resolveCodexToolAbortTerminalReason, P as resolveDynamicToolCallTimeoutMs, S as assertCodexTurnStartResponse, i as isCodexAppServerApprovalRequest, k as createCodexElicitationResponse, s as isCodexAppServerIndeterminateRequestCancellationError, w as readCodexDynamicToolCallParams, y as assertCodexThreadForkResponse, z as toCodexDynamicToolProtocolResponse } from "./client-B4EOuI-w.mjs";
11
- import { f as terminateCodexBackgroundTerminals, p as unsubscribeCodexThreadBestEffort, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort } from "./attempt-client-cleanup-_RUXhE5e.mjs";
12
- import { t as CodexEphemeralTurn } from "./ephemeral-turn-C-vPku4K.mjs";
13
- import { Ct as refreshCodexPluginAppApprovalPolicy, D as buildCodexNativeHookRelayConfig, M as resolveCodexNativeHookRelayEvents, N as resolveCodexNativeHookRelayTtlMs, O as buildCodexNativeHookRelayDisabledConfig, St as mergeCodexThreadConfigs, ft as resolveCodexDynamicToolsLoading, g as CODEX_NATIVE_PERSONALITY_NONE, p as resolveCodexWebSearchPlan, r as buildCodexRuntimeThreadConfig, y as resolveCodexAppServerThreadModelSelection } from "./thread-requests-CIyAcDJ3.mjs";
14
- import { S as resolveCodexAppServerReasoningEffort, o as buildCodexUserInput, r as buildCodexTemporalAdditionalContext, x as readCodexSupportedReasoningEfforts } from "./thread-lifecycle-BPIjjjRJ.mjs";
9
+ import { Z as readRecentCodexRateLimits, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease, rt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-tOOyadmg.mjs";
10
+ import { A as handleDynamicToolCallWithTimeout, B as resolveCodexToolAbortTerminalReason, P as resolveDynamicToolCallTimeoutMs, S as assertCodexTurnStartResponse, i as isCodexAppServerApprovalRequest, k as createCodexElicitationResponse, s as isCodexAppServerIndeterminateRequestCancellationError, w as readCodexDynamicToolCallParams, y as assertCodexThreadForkResponse, z as toCodexDynamicToolProtocolResponse } from "./client-CyquSiJ2.mjs";
11
+ import { f as terminateCodexBackgroundTerminals, p as unsubscribeCodexThreadBestEffort, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort } from "./attempt-client-cleanup-93r-CLTi.mjs";
12
+ import { t as CodexEphemeralTurn } from "./ephemeral-turn-ksZ9NfsS.mjs";
13
+ import { Ct as refreshCodexPluginAppApprovalPolicy, D as buildCodexNativeHookRelayConfig, M as resolveCodexNativeHookRelayEvents, N as resolveCodexNativeHookRelayTtlMs, O as buildCodexNativeHookRelayDisabledConfig, St as mergeCodexThreadConfigs, ft as resolveCodexDynamicToolsLoading, g as CODEX_NATIVE_PERSONALITY_NONE, p as resolveCodexWebSearchPlan, r as buildCodexRuntimeThreadConfig, y as resolveCodexAppServerThreadModelSelection } from "./thread-requests-DmkmrGIt.mjs";
14
+ import { S as resolveCodexAppServerReasoningEffort, o as buildCodexUserInput, r as buildCodexTemporalAdditionalContext, x as readCodexSupportedReasoningEfforts } from "./thread-lifecycle-DcNw9n7E.mjs";
15
15
  import { o as resolveCodexSessionBinding } from "./session-binding-DGCYAfvD.mjs";
16
- import { a as refreshCodexThreadPolicy, i as assertCodexSupervisionThreadLineage, n as CodexThreadPolicyHandoffError } from "./thread-policy-Bf769xTq.mjs";
16
+ import { a as refreshCodexThreadPolicy, i as assertCodexSupervisionThreadLineage, n as CodexThreadPolicyHandoffError } from "./thread-policy-TTAb-1yF.mjs";
17
17
  import { t as resolveCodexNativeExecutionBlock } from "./sandbox-guard-DjCz2eOw.mjs";
18
- import { E as CodexNativeToolLifecycleProjector, a as emitDynamicToolStartedDiagnostic, b as createCodexNativePreToolUseFailureBuffer, c as buildDynamicTools, f as resolveCodexExternalSandboxPolicyForOpenClawSandbox, g as shouldRequireCodexSandboxExecServerEnvironment, h as shouldEnableCodexAppServerNativeToolSurface, i as emitDynamicToolErrorDiagnostic, m as resolveCodexSandboxEnvironmentSelection, o as emitDynamicToolTerminalDiagnostic, p as resolveCodexMessageToolProvider, r as routeCodexAppServerElicitationRequest, s as handleCodexAppServerApprovalRequest, t as createCodexDynamicToolBridge, v as ensureCodexSandboxExecServerEnvironment, y as releaseCodexSandboxExecServerEnvironment } from "./dynamic-tools-86M3tRl4.mjs";
18
+ import { E as CodexNativeToolLifecycleProjector, a as emitDynamicToolStartedDiagnostic, b as createCodexNativePreToolUseFailureBuffer, c as buildDynamicTools, f as resolveCodexExternalSandboxPolicyForOpenClawSandbox, g as shouldRequireCodexSandboxExecServerEnvironment, h as shouldEnableCodexAppServerNativeToolSurface, i as emitDynamicToolErrorDiagnostic, m as resolveCodexSandboxEnvironmentSelection, o as emitDynamicToolTerminalDiagnostic, p as resolveCodexMessageToolProvider, r as routeCodexAppServerElicitationRequest, s as handleCodexAppServerApprovalRequest, t as createCodexDynamicToolBridge, v as ensureCodexSandboxExecServerEnvironment, y as releaseCodexSandboxExecServerEnvironment } from "./dynamic-tools-D3NAwGw3.mjs";
19
19
  import { a as resolveCodexAppServerForModelProvider, i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, r as resolveCodexEffectiveSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-Ci_fVX6y.mjs";
20
- import { n as resolveCodexProviderWebSearchSupportForClient } from "./provider-capabilities-CIWN6WAi.mjs";
20
+ import { n as resolveCodexProviderWebSearchSupportForClient } from "./provider-capabilities-ByhBukaD.mjs";
21
21
  import { readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
22
22
  import { randomUUID } from "node:crypto";
23
23
  import { isDeepStrictEqual } from "node:util";
@@ -1,6 +1,6 @@
1
1
  import { a as marketplaceRef, n as isOpenAiCuratedMarketplace, o as pluginReadParams, u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./plugin-inventory-Cky2XJUw.mjs";
2
2
  import { a as defaultCodexAppInventoryCache, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-BL9B5H0L.mjs";
3
- import { o as withCodexAppServerJsonClient } from "./request-D-Vhprx3.mjs";
3
+ import { o as withCodexAppServerJsonClient } from "./request-DxKAfWyy.mjs";
4
4
  import "./config-DKhXquav.mjs";
5
5
  import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
6
6
  import { asNonArrayRecord } from "openclaw/plugin-sdk/string-coerce-runtime";