@openclaw/codex 2026.9.8 → 2026.9.33

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 (64) hide show
  1. package/dist/.setup/{account-usage-runtime-G348lY1q.mjs → account-usage-runtime-dYM1lh1V.mjs} +1 -1
  2. package/dist/.setup/{apply-Cqb-YoCS.mjs → apply-C82xe8Bk.mjs} +4 -4
  3. package/dist/.setup/{attempt-client-cleanup-B-S7ngS_.mjs → attempt-client-cleanup-D1aznv7C.mjs} +3 -3
  4. package/dist/.setup/{attempt-workspace-context-BJ5Z_olH.mjs → attempt-workspace-context-DKAbD-vI.mjs} +1 -1
  5. package/dist/.setup/{auth-cache-key-Dnps4W4_.mjs → auth-cache-key-CWpIEtTm.mjs} +3 -3
  6. package/dist/.setup/{bounded-turn-BNunZPtz.mjs → bounded-turn-Ca4urQ25.mjs} +9 -9
  7. package/dist/.setup/{build-state-DIQ5O_-S.mjs → build-state-E-CRUdgh.mjs} +1 -1
  8. package/dist/.setup/{client-qyUBJlGZ.mjs → client-6GbdZFc0.mjs} +172 -14
  9. package/dist/.setup/{client-catalog-response-DRvx_wCC.mjs → client-catalog-response-HvvnCxvX.mjs} +1 -1
  10. package/dist/.setup/{command-dispatch-Btrs1D6f.mjs → command-dispatch-_PPJobF7.mjs} +1 -1
  11. package/dist/.setup/{command-handlers-DvlCHJch.mjs → command-handlers-Do_MOc5V.mjs} +11 -11
  12. package/dist/.setup/{command-rpc-skzRq4wD.mjs → command-rpc-Bc_OIgK0.mjs} +6 -6
  13. package/dist/.setup/{compact-8ttks5U5.mjs → compact-BVSQoyh-.mjs} +8 -8
  14. package/dist/.setup/{conversation-binding-74LaGGH-.mjs → conversation-binding-CvjxRWI-.mjs} +9 -9
  15. package/dist/.setup/{conversation-control-OrN6zuaY.mjs → conversation-control-DoxkQ9nq.mjs} +2 -2
  16. package/dist/.setup/{dynamic-tools-Db2sY5cZ.mjs → dynamic-tools-CGMXNyuw.mjs} +6 -6
  17. package/dist/.setup/{effective-mcp-catalog-Bi6-SQ7i.mjs → effective-mcp-catalog-C1zwj-bq.mjs} +2 -2
  18. package/dist/.setup/{ephemeral-turn-DiCS1ijR.mjs → ephemeral-turn-Cyu_xJDs.mjs} +2 -2
  19. package/dist/.setup/{event-projector-assistant-message-MV_1dj-3.mjs → event-projector-assistant-message-CAI4foF8.mjs} +1 -1
  20. package/dist/.setup/{isolated-completion-D80IXfQF.mjs → isolated-completion-DPr7Nsl7.mjs} +4 -4
  21. package/dist/.setup/{managed-binary-kiWRhNRE.mjs → managed-binary-B6hQ1UKR.mjs} +1 -1
  22. package/dist/.setup/{model-catalog-DiC0Tkha.mjs → model-catalog-gcv3irT9.mjs} +27 -20
  23. package/dist/.setup/{models-DfLmPV0k.mjs → models-Bs4aEhpG.mjs} +3 -3
  24. package/dist/.setup/{native-auth-CuG53tu4.mjs → native-auth-BN-BD2AV.mjs} +2 -2
  25. package/dist/.setup/{native-subagent-monitor-BwkQXf9e.mjs → native-subagent-monitor-DbNIloTJ.mjs} +2 -2
  26. package/dist/.setup/{node-exec-server.runtime-BgBfWQqo.mjs → node-exec-server.runtime-BS7jsvK-.mjs} +2 -2
  27. package/dist/.setup/{plan-DPdMk1Oy.mjs → plan-NTSBQtKx.mjs} +3 -3
  28. package/dist/.setup/{plugin-metadata-cache-BRwtRct9.mjs → plugin-metadata-cache-Z06WuND0.mjs} +5 -5
  29. package/dist/.setup/{provider-D6F_7p1I.mjs → provider-BnX84knz.mjs} +4 -4
  30. package/dist/.setup/{provider-capabilities-DG5qbsUZ.mjs → provider-capabilities-CYK-rMwC.mjs} +2 -2
  31. package/dist/.setup/{request-BZOfsSXW.mjs → request-DQh7X3fU.mjs} +1 -1
  32. package/dist/.setup/{run-attempt-dYJhjZrp.mjs → run-attempt-Bp6qFrIQ.mjs} +35 -20
  33. package/dist/.setup/{runtime-artifact-DDQ-HGXf.mjs → runtime-artifact-D7lCXdhV.mjs} +2 -2
  34. package/dist/.setup/{session-catalog-BFafIiF6.mjs → session-catalog-DFZmNlhW.mjs} +9 -9
  35. package/dist/.setup/{session-catalog-events-BMCFMZw-.mjs → session-catalog-events-DVLgp99B.mjs} +2 -2
  36. package/dist/.setup/{session-catalog-index-DwJjnF5k.mjs → session-catalog-index-v3Yjgaih.mjs} +3 -3
  37. package/dist/.setup/{session-catalog-native-projection-CuaFZuQE.mjs → session-catalog-native-projection-LshItrMe.mjs} +1 -1
  38. package/dist/.setup/{session-catalog-projection-CGfzfP93.mjs → session-catalog-projection-CCBFozaQ.mjs} +1 -1
  39. package/dist/.setup/{session-cli-DlmBHYIe.mjs → session-cli-KhdG-_Aj.mjs} +1 -1
  40. package/dist/.setup/{session-retirement-LlYWBKTJ.mjs → session-retirement-ERjp2r4a.mjs} +5 -5
  41. package/dist/.setup/{settled-turn-finalizer-DW9W3gza.mjs → settled-turn-finalizer-DbS1Mwoq.mjs} +5 -5
  42. package/dist/.setup/{shared-client-lifecycle-7xgtlo15.mjs → shared-client-lifecycle-4LdC3gM4.mjs} +1 -1
  43. package/dist/.setup/{shared-client-CJCTeFpQ.mjs → shared-client-zsK3DTPh.mjs} +14 -14
  44. package/dist/.setup/{side-question-BLeGj7TQ.mjs → side-question-DW4W4HY7.mjs} +9 -9
  45. package/dist/.setup/{source-CJis_1EF.mjs → source-DzsIjGO7.mjs} +1 -1
  46. package/dist/.setup/{thread-lifecycle-_bAbjedG.mjs → thread-lifecycle-D03WesNn.mjs} +60 -38
  47. package/dist/.setup/{thread-ownership-B6pPt21M.mjs → thread-ownership-B0xUCXOU.mjs} +3 -3
  48. package/dist/.setup/{thread-policy-gNPzzpVp.mjs → thread-policy-g1TKKqWj.mjs} +3 -3
  49. package/dist/.setup/{thread-requests-OWGOiDaV.mjs → thread-requests-15uBuGjw.mjs} +4 -4
  50. package/dist/.setup/{thread-resume-GOry0AYh.mjs → thread-resume-BZfwM8Jh.mjs} +5 -5
  51. package/dist/.setup/{transport-stdio-Bdegpn2V.mjs → transport-stdio-CbutOIEh.mjs} +1 -1
  52. package/dist/.setup/{upstream-session-fork-gkdRj2yH.mjs → upstream-session-fork--vHya1T-.mjs} +8 -8
  53. package/dist/.setup/{usage-CApUvLOV.mjs → usage-CdWiiqqY.mjs} +1 -1
  54. package/dist/.setup/{usage-limit-error-wSMQkbpV.mjs → usage-limit-error-BEyQJjD_.mjs} +1 -1
  55. package/dist/.setup/{web-search-provider.runtime-UKgeiBUG.mjs → web-search-provider.runtime--55TuUQG.mjs} +2 -2
  56. package/dist/api.js +2 -2
  57. package/dist/catalog-page.worker.js +1 -1
  58. package/dist/cli-metadata.js +1 -1
  59. package/dist/harness.js +15 -15
  60. package/dist/index.js +21 -21
  61. package/dist/media-understanding-provider.js +2 -2
  62. package/dist/migration-provider-api.js +1 -1
  63. package/dist/provider-discovery.js +1 -1
  64. package/package.json +5 -5
@@ -3,22 +3,22 @@ import { n as assertCodexBindingMayBeReplaced, v as sessionBindingIdentity } fro
3
3
  import { m as readCodexRequirementsToml } from "./config-security-CE-FcGw9.mjs";
4
4
  import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
5
5
  import { d as readCodexEffectiveConfig, n as codexSandboxPolicyForTurn } from "./config-options-CzyWLTJt.mjs";
6
- import { l as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-7xgtlo15.mjs";
6
+ import { l as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-4LdC3gM4.mjs";
7
7
  import { o as resolveCodexDefaultWorkspaceDir } from "./conversation-binding-data-C746z5Pn.mjs";
8
8
  import { n as projectBoundedCodexVisibleSessionHistory } from "./transcript-history-projection-DRSifI-1.mjs";
9
9
  import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-DKhXquav.mjs";
10
10
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-C0NbLms1.mjs";
11
11
  import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-B0okYl2D.mjs";
12
- import { B as isCodexAppServerClientRuntimeLive, F as consumeCodexAppServerLiveThread, G as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease } from "./shared-client-CJCTeFpQ.mjs";
13
- import { h as CodexThreadDirectInputError, l as isCodexAppServerOverloadError, s as isCodexAppServerIndeterminateRequestCancellationError, v as assertCodexThreadAcceptsDirectInput, x as assertCodexThreadStartResponse } from "./client-qyUBJlGZ.mjs";
14
- import { c as isCodexAppServerUnsafeSubscriptionError, h as getCodexAppServerTurnRouter, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort, v as isCodexNotificationForTurn } from "./attempt-client-cleanup-B-S7ngS_.mjs";
15
- import { S as buildCodexProjectDocThreadConfig, St as mergeCodexThreadConfigs, g as CODEX_NATIVE_PERSONALITY_NONE, v as resolveCodexAppServerRequestModelSelection, vt as buildDisabledAppsConfigPatch } from "./thread-requests-OWGOiDaV.mjs";
16
- import "./thread-lifecycle-_bAbjedG.mjs";
12
+ import { B as isCodexAppServerClientRuntimeLive, F as consumeCodexAppServerLiveThread, K as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease } from "./shared-client-zsK3DTPh.mjs";
13
+ import { h as CodexThreadDirectInputError, l as isCodexAppServerOverloadError, s as isCodexAppServerIndeterminateRequestCancellationError, v as assertCodexThreadAcceptsDirectInput, x as assertCodexThreadStartResponse } from "./client-6GbdZFc0.mjs";
14
+ import { c as isCodexAppServerUnsafeSubscriptionError, h as getCodexAppServerTurnRouter, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort, v as isCodexNotificationForTurn } from "./attempt-client-cleanup-D1aznv7C.mjs";
15
+ import { S as buildCodexProjectDocThreadConfig, St as mergeCodexThreadConfigs, g as CODEX_NATIVE_PERSONALITY_NONE, v as resolveCodexAppServerRequestModelSelection, vt as buildDisabledAppsConfigPatch } from "./thread-requests-15uBuGjw.mjs";
16
+ import "./thread-lifecycle-D03WesNn.mjs";
17
17
  import "./session-binding-DGCYAfvD.mjs";
18
- import { t as resumeCodexAppServerThread } from "./thread-resume-GOry0AYh.mjs";
19
- import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-B6pPt21M.mjs";
18
+ import { t as resumeCodexAppServerThread } from "./thread-resume-BZfwM8Jh.mjs";
19
+ import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-B0xUCXOU.mjs";
20
20
  import { a as resolveCodexAppServerForModelProvider, i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-Ci_fVX6y.mjs";
21
- import { u as trackCodexConversationActiveTurn } from "./conversation-control-OrN6zuaY.mjs";
21
+ import { u as trackCodexConversationActiveTurn } from "./conversation-control-DoxkQ9nq.mjs";
22
22
  import { asOptionalRecord, normalizeOptionalString, readNonEmptyStringPreservingWhitespace } from "openclaw/plugin-sdk/string-coerce-runtime";
23
23
  import { resolveSessionAgentIdsStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
24
24
  import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
@@ -3,8 +3,8 @@ import { r as bindingStoreKey } from "./session-binding-record-Oe9L-CNY.mjs";
3
3
  import { o as formatCodexDisplayText } from "./command-formatters-R3ckE3Co.mjs";
4
4
  import "./config-DKhXquav.mjs";
5
5
  import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-B0okYl2D.mjs";
6
- import { b as resolveCodexBindingModelProviderFallback, v as resolveCodexAppServerRequestModelSelection } from "./thread-requests-OWGOiDaV.mjs";
7
- import "./thread-lifecycle-_bAbjedG.mjs";
6
+ import { b as resolveCodexBindingModelProviderFallback, v as resolveCodexAppServerRequestModelSelection } from "./thread-requests-15uBuGjw.mjs";
7
+ import "./thread-lifecycle-D03WesNn.mjs";
8
8
  import "./session-binding-DGCYAfvD.mjs";
9
9
  import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
10
10
  import { getSessionEntry, patchSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
@@ -6,14 +6,14 @@ import { s as readItem } from "./event-projector-values-DJSz8BTk.mjs";
6
6
  import { s as codexAppIdentityKey } from "./plugin-app-cache-key-BL9B5H0L.mjs";
7
7
  import "./config-DKhXquav.mjs";
8
8
  import { i as sanitizeInlineImageDataUrl, r as invalidInlineImageText } from "./session-history-read-Ov3StuL4.mjs";
9
- import { U as protectCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientIfCurrent } from "./shared-client-CJCTeFpQ.mjs";
9
+ import { W as protectCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientIfCurrent } from "./shared-client-zsK3DTPh.mjs";
10
10
  import { a as isCodexResponsesOAuthRun } from "./responses-oauth-twnuTaAa.mjs";
11
- import { B as resolveCodexToolAbortTerminalReason, E as readCodexTurnCompletedNotification, H as failedToolResult, V as createFailedDynamicToolResponse, k as createCodexElicitationResponse, m as CodexServerRequestResolvedError } from "./client-qyUBJlGZ.mjs";
12
- import { A as itemStatus, C as auditNativeToolUnfinishedStatus, N as shouldClearTerminalPresentationForNativeItem, S as auditNativeToolTerminalStatus, b as readCodexNotificationTurnId, k as itemName, v as isCodexNotificationForTurn, x as auditNativeToolName, y as readCodexNotificationThreadId } from "./attempt-client-cleanup-B-S7ngS_.mjs";
13
- import { ct as isForcedPrivateQaCodexRuntime, dt as normalizeCodexDynamicToolName, j as emitCodexNativePreToolUseFailureDiagnostic, ot as filterCodexDynamicTools, p as resolveCodexWebSearchPlan, st as filterCodexDynamicToolsForDisabledNativeSurface, ut as isSystemAgentOnlyCodexDynamicToolAllowlist } from "./thread-requests-OWGOiDaV.mjs";
14
- import { _ as waitForPluginApprovalDecision, d as mapExecDecisionToOutcome, f as requestPluginApproval, g as truncateCodexApprovalDisplayText, h as stripDanglingCodexApprovalTerminalSequence, l as approvalRequestExplicitlyUnavailable, m as sanitizeCodexApprovalVisibleText, p as requestPluginApprovalOutcome, u as codexApprovalTimeoutText } from "./native-subagent-monitor-BwkQXf9e.mjs";
11
+ import { B as resolveCodexToolAbortTerminalReason, E as readCodexTurnCompletedNotification, H as failedToolResult, V as createFailedDynamicToolResponse, k as createCodexElicitationResponse, m as CodexServerRequestResolvedError } from "./client-6GbdZFc0.mjs";
12
+ import { A as itemStatus, C as auditNativeToolUnfinishedStatus, N as shouldClearTerminalPresentationForNativeItem, S as auditNativeToolTerminalStatus, b as readCodexNotificationTurnId, k as itemName, v as isCodexNotificationForTurn, x as auditNativeToolName, y as readCodexNotificationThreadId } from "./attempt-client-cleanup-D1aznv7C.mjs";
13
+ import { ct as isForcedPrivateQaCodexRuntime, dt as normalizeCodexDynamicToolName, j as emitCodexNativePreToolUseFailureDiagnostic, ot as filterCodexDynamicTools, p as resolveCodexWebSearchPlan, st as filterCodexDynamicToolsForDisabledNativeSurface, ut as isSystemAgentOnlyCodexDynamicToolAllowlist } from "./thread-requests-15uBuGjw.mjs";
14
+ import { _ as waitForPluginApprovalDecision, d as mapExecDecisionToOutcome, f as requestPluginApproval, g as truncateCodexApprovalDisplayText, h as stripDanglingCodexApprovalTerminalSequence, l as approvalRequestExplicitlyUnavailable, m as sanitizeCodexApprovalVisibleText, p as requestPluginApprovalOutcome, u as codexApprovalTimeoutText } from "./native-subagent-monitor-DbNIloTJ.mjs";
15
15
  import { n as resolveCodexNativeExecutionPolicy, r as resolveCodexNodeExecToolOverrides } from "./native-execution-policy-BxZJy5mP.mjs";
16
- import { a as CODEX_NODE_EXEC_DYNAMIC_TOOL_NAME, c as createNodeExecAliasDynamicTool, d as isCodexDynamicToolExcluded, i as CODEX_GATEWAY_PROCESS_DYNAMIC_TOOL_NAME, l as createSandboxExecProjection, o as createGatewayExecProjection, r as CODEX_GATEWAY_EXEC_DYNAMIC_TOOL_NAME, s as createGatewayProcessProjection, u as createSandboxProcessProjection } from "./provider-capabilities-DG5qbsUZ.mjs";
16
+ import { a as CODEX_NODE_EXEC_DYNAMIC_TOOL_NAME, c as createNodeExecAliasDynamicTool, d as isCodexDynamicToolExcluded, i as CODEX_GATEWAY_PROCESS_DYNAMIC_TOOL_NAME, l as createSandboxExecProjection, o as createGatewayExecProjection, r as CODEX_GATEWAY_EXEC_DYNAMIC_TOOL_NAME, s as createGatewayProcessProjection, u as createSandboxProcessProjection } from "./provider-capabilities-CYK-rMwC.mjs";
17
17
  import { createRequire } from "node:module";
18
18
  import { asNonArrayRecord, asOptionalRecord, isRecord, normalizeTrimmedStringList, readNonBlankString, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
19
19
  import { createHash, randomUUID } from "node:crypto";
@@ -1,6 +1,6 @@
1
1
  import { v as sessionBindingIdentity } from "./session-binding-record-Oe9L-CNY.mjs";
2
- import { l as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-7xgtlo15.mjs";
3
- import "./shared-client-CJCTeFpQ.mjs";
2
+ import { l as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-4LdC3gM4.mjs";
3
+ import "./shared-client-zsK3DTPh.mjs";
4
4
  import "./session-binding-DGCYAfvD.mjs";
5
5
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { assignMcpCatalogSafeServerNames } from "openclaw/plugin-sdk/agent-harness-runtime";
@@ -1,6 +1,6 @@
1
1
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
- import { E as readCodexTurnCompletedNotification } from "./client-qyUBJlGZ.mjs";
3
- import { h as getCodexAppServerTurnRouter } from "./attempt-client-cleanup-B-S7ngS_.mjs";
2
+ import { E as readCodexTurnCompletedNotification } from "./client-6GbdZFc0.mjs";
3
+ import { h as getCodexAppServerTurnRouter } from "./attempt-client-cleanup-D1aznv7C.mjs";
4
4
  import { o as isTerminalTurnStatus, s as readCodexNotificationItem, t as CodexUsageProjection } from "./event-projector-usage-03R0I2dM.mjs";
5
5
  import { readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { toStringifiedError } from "openclaw/plugin-sdk/error-runtime";
@@ -1,5 +1,5 @@
1
1
  import { t as codexProviderRefusalDiagnostics } from "./event-projector-values-DJSz8BTk.mjs";
2
- import { o as resolveCodexLocalRuntimeAttribution } from "./native-subagent-monitor-BwkQXf9e.mjs";
2
+ import { o as resolveCodexLocalRuntimeAttribution } from "./native-subagent-monitor-DbNIloTJ.mjs";
3
3
  import { createAgentHarnessAssistantMessage } from "openclaw/plugin-sdk/agent-harness-attempt-runtime";
4
4
  //#region extensions/codex/src/app-server/event-projector-assistant-message.ts
5
5
  function createAssistantMessage(params, text, options) {
@@ -1,11 +1,11 @@
1
1
  import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
2
2
  import { i as resolveCodexAppServerHomeScope } from "./config-options-CzyWLTJt.mjs";
3
3
  import "./config-DKhXquav.mjs";
4
- import { tt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-CJCTeFpQ.mjs";
5
- import { _ as assertCodexPassiveTurnItems } from "./client-qyUBJlGZ.mjs";
6
- import { runBoundedCodexAppServerTurn } from "./bounded-turn-BNunZPtz.mjs";
4
+ import { nt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-zsK3DTPh.mjs";
5
+ import { _ as assertCodexPassiveTurnItems } from "./client-6GbdZFc0.mjs";
6
+ import { runBoundedCodexAppServerTurn } from "./bounded-turn-Ca4urQ25.mjs";
7
7
  import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-B8K_ylqk.mjs";
8
- import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-MV_1dj-3.mjs";
8
+ import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-CAI4foF8.mjs";
9
9
  //#region extensions/codex/src/app-server/isolated-completion.ts
10
10
  /** Runs prompt-only Codex inference on an ephemeral, ring-zero native thread. */
11
11
  async function runCodexIsolatedCompletion(params, options) {
@@ -47,7 +47,7 @@ function resolveFirstExistingMacOSDesktopCodexBundledMarketplacePath(params = {}
47
47
  //#endregion
48
48
  //#region extensions/codex/src/app-server/version.ts
49
49
  /** Exact Codex app-server version shipped by the OpenClaw Codex bridge. */
50
- const CODEX_APP_SERVER_VERSION = "0.158.0";
50
+ const CODEX_APP_SERVER_VERSION = "0.160.0";
51
51
  /** Inclusive runtime compatibility floor for external app-server binaries. */
52
52
  const MIN_SUPPORTED_CODEX_APP_SERVER_VERSION = "0.149.0";
53
53
  const MANAGED_CODEX_APP_SERVER_PACKAGE = "@openai/codex";
@@ -1,13 +1,15 @@
1
1
  import { t as buildCodexRuntimeModelParams } from "./model-runtime-BdqzOMkU.mjs";
2
2
  import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
3
3
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
4
- import { o as withCodexAppServerJsonClient } from "./request-BZOfsSXW.mjs";
4
+ import { d as retireSharedCodexAppServerClientIfCurrent } from "./shared-client-lifecycle-4LdC3gM4.mjs";
5
+ import { o as withCodexAppServerJsonClient } from "./request-DQh7X3fU.mjs";
5
6
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-C0NbLms1.mjs";
6
7
  import { a as resolveCodexAppServerAuthProfileStore, r as resolveCodexAppServerAuthProfileId } from "./auth-profile-B0okYl2D.mjs";
7
- import { r as captureSharedCodexAppServerCatalogLifetime } from "./shared-client-CJCTeFpQ.mjs";
8
+ import { r as captureSharedCodexAppServerCatalogLifetime } from "./shared-client-zsK3DTPh.mjs";
8
9
  import { i as isCodexResponsesOAuthCredential } from "./responses-oauth-twnuTaAa.mjs";
9
- import { n as listAllCodexAppServerModels } from "./models-DfLmPV0k.mjs";
10
- import { probeCodexNativeAuth } from "./native-auth-CuG53tu4.mjs";
10
+ import { s as isCodexAppServerIndeterminateRequestCancellationError } from "./client-6GbdZFc0.mjs";
11
+ import { n as listAllCodexAppServerModels } from "./models-Bs4aEhpG.mjs";
12
+ import { probeCodexNativeAuth } from "./native-auth-BN-BD2AV.mjs";
11
13
  //#region extensions/codex/src/app-server/model-catalog.ts
12
14
  const INPUT_TYPES = /* @__PURE__ */ new Set([
13
15
  "text",
@@ -97,22 +99,27 @@ function createCodexAppServerModelCatalog(runtime) {
97
99
  authProfileId
98
100
  } : {}
99
101
  }, async (request, client) => {
100
- const isCurrent = captureSharedCodexAppServerCatalogLifetime(client);
101
- const models = (await listAllCodexAppServerModels({
102
- request,
103
- limit: 100,
104
- includeHidden: true
105
- })).models.filter((model) => !model.hidden || params.configuredModelRefs?.some((ref) => ref.provider === "openai" && ref.model === model.id));
106
- const account = await request({
107
- method: "account/read",
108
- requestParams: { refreshToken: false }
109
- });
110
- const observedType = account.account?.type;
111
- return {
112
- models,
113
- isCurrent,
114
- accountType: account.requiresOpenaiAuth ? observedType === "apiKey" || observedType === "chatgpt" ? observedType : void 0 : void 0
115
- };
102
+ try {
103
+ const isCurrent = captureSharedCodexAppServerCatalogLifetime(client);
104
+ const models = (await listAllCodexAppServerModels({
105
+ request,
106
+ limit: 100,
107
+ includeHidden: true
108
+ })).models.filter((model) => !model.hidden || params.configuredModelRefs?.some((ref) => ref.provider === "openai" && ref.model === model.id));
109
+ const account = await request({
110
+ method: "account/read",
111
+ requestParams: { refreshToken: false }
112
+ });
113
+ const observedType = account.account?.type;
114
+ return {
115
+ models,
116
+ isCurrent,
117
+ accountType: account.requiresOpenaiAuth ? observedType === "apiKey" || observedType === "chatgpt" ? observedType : void 0 : void 0
118
+ };
119
+ } catch (error) {
120
+ if (isCodexAppServerIndeterminateRequestCancellationError(error)) retireSharedCodexAppServerClientIfCurrent(client);
121
+ throw error;
122
+ }
116
123
  });
117
124
  if (disposed || observations.get(key) !== observation || !result.isCurrent()) return [];
118
125
  observation.models = new Set(result.models.map((model) => model.id));
@@ -1,4 +1,4 @@
1
- import { g as assertCodexModelListResponse } from "./client-qyUBJlGZ.mjs";
1
+ import { g as assertCodexModelListResponse } from "./client-6GbdZFc0.mjs";
2
2
  import { normalizeOptionalString, normalizeUniqueTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/codex/src/app-server/models.ts
4
4
  const DEFAULT_MODEL_DISCOVERY_TIMEOUT_MS = 1e4;
@@ -32,8 +32,8 @@ async function withCodexAppServerModelRequest(options, run) {
32
32
  if (options.request) return await run(options.request);
33
33
  const timeoutMs = options.timeoutMs ?? 1e4;
34
34
  const useSharedClient = options.sharedClient !== false;
35
- const { createIsolatedCodexAppServerClient, getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient } = await import("./shared-client-CJCTeFpQ.mjs").then((n) => n.v);
36
- const { requestCodexAppServerClientJson } = await import("./request-BZOfsSXW.mjs").then((n) => n.a);
35
+ const { createIsolatedCodexAppServerClient, getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient } = await import("./shared-client-zsK3DTPh.mjs").then((n) => n.v);
36
+ const { requestCodexAppServerClientJson } = await import("./request-DQh7X3fU.mjs").then((n) => n.a);
37
37
  const client = await (useSharedClient ? getLeasedSharedCodexAppServerClient : createIsolatedCodexAppServerClient)({
38
38
  startOptions: options.startOptions,
39
39
  timeoutMs,
@@ -1,7 +1,7 @@
1
1
  import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
2
2
  import { n as isCodexAppServerProxyLaunch, t as buildCodexLoginStatusArgs } from "./launch-args-DbFCehO7.mjs";
3
- import { r as resolveManagedCodexAppServerStartOptions } from "./managed-binary-kiWRhNRE.mjs";
4
- import { n as resolveCodexAppServerSpawnEnv } from "./transport-stdio-Bdegpn2V.mjs";
3
+ import { r as resolveManagedCodexAppServerStartOptions } from "./managed-binary-B6hQ1UKR.mjs";
4
+ import { n as resolveCodexAppServerSpawnEnv } from "./transport-stdio-CbutOIEh.mjs";
5
5
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-C0NbLms1.mjs";
6
6
  import { runUtf8CommandWithTimeout } from "openclaw/plugin-sdk/process-runtime";
7
7
  import { materializeWindowsSpawnProgram, resolveWindowsSpawnProgram } from "openclaw/plugin-sdk/windows-spawn";
@@ -3,8 +3,8 @@ import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
3
3
  import { c as readNonEmptyString, o as readHookOutputEntries, r as normalizeOptionalString$1, s as readItem, u as readNullableString } from "./event-projector-values-DJSz8BTk.mjs";
4
4
  import { t as attachCodexMirrorIdentity } from "./upstream-prompt-provenance-fXkKbPVC.mjs";
5
5
  import { t as readCodexMirroredSessionHistoryMessages } from "./session-history-D83lJWHG.mjs";
6
- import { K as retainCodexAppServerLiveThread, P as claimCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, pt as resolveCodexGatewayTimeoutWithGraceMs } from "./shared-client-CJCTeFpQ.mjs";
7
- import { A as itemStatus, D as isSideEffectingNativeToolItem, E as isProjectedNativeToolItem, M as matchesCodexSnapshotTurn, O as itemKind, P as unknownItemStatus, S as auditNativeToolTerminalStatus, T as isNonSuccessItemStatus, j as itemTitle, k as itemName, s as interruptCodexTurnAndWaitBestEffort, w as isMutatingNativeToolItem, x as auditNativeToolName } from "./attempt-client-cleanup-B-S7ngS_.mjs";
6
+ import { P as claimCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, mt as resolveCodexGatewayTimeoutWithGraceMs, q as retainCodexAppServerLiveThread } from "./shared-client-zsK3DTPh.mjs";
7
+ import { A as itemStatus, D as isSideEffectingNativeToolItem, E as isProjectedNativeToolItem, M as matchesCodexSnapshotTurn, O as itemKind, P as unknownItemStatus, S as auditNativeToolTerminalStatus, T as isNonSuccessItemStatus, j as itemTitle, k as itemName, s as interruptCodexTurnAndWaitBestEffort, w as isMutatingNativeToolItem, x as auditNativeToolName } from "./attempt-client-cleanup-D1aznv7C.mjs";
8
8
  import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
9
9
  import { asFiniteNumber, asNonArrayRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeTrimmedStringList, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
10
10
  import { randomUUID } from "node:crypto";
@@ -1,5 +1,5 @@
1
- import { i as resolveManagedCodexNativeCommand, r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand } from "./managed-binary-kiWRhNRE.mjs";
2
- import { a as closeCodexAppServerTransportAndWait, t as createStdioTransport } from "./transport-stdio-Bdegpn2V.mjs";
1
+ import { i as resolveManagedCodexNativeCommand, r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand } from "./managed-binary-B6hQ1UKR.mjs";
2
+ import { a as closeCodexAppServerTransportAndWait, t as createStdioTransport } from "./transport-stdio-CbutOIEh.mjs";
3
3
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { stripVTControlCharacters } from "node:util";
5
5
  import { killProcessTree } from "openclaw/plugin-sdk/process-runtime";
@@ -1,7 +1,7 @@
1
1
  import { u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./plugin-inventory-Cky2XJUw.mjs";
2
2
  import { t as isOnlyMigrationKind } from "./scope-DOC1Xjc8.mjs";
3
3
  import "./config-DKhXquav.mjs";
4
- import { i as hasCodexSource, n as defaultCodexHome, o as readJsonObject, r as discoverCodexSource, s as sanitizeName, t as codexPluginMigrationSubscriptionWarning } from "./source-CJis_1EF.mjs";
4
+ import { i as hasCodexSource, n as defaultCodexHome, o as readJsonObject, r as discoverCodexSource, s as sanitizeName, t as codexPluginMigrationSubscriptionWarning } from "./source-DzsIjGO7.mjs";
5
5
  import { asBoolean, asOptionalRecord, isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { createHash } from "node:crypto";
7
7
  import { runCommandBuffered } from "openclaw/plugin-sdk/process-runtime";
@@ -97,8 +97,8 @@ async function readCodexCliCredentialsAsync(options) {
97
97
  options.signal?.throwIfAborted();
98
98
  if (!options.allowKeychainPrompt) return;
99
99
  const home = await fs.realpath(options.codexHome).catch(() => path.resolve(options.codexHome));
100
- const { CodexAppServerClient } = await import("./client-qyUBJlGZ.mjs").then((n) => n.n);
101
- const { resolveManagedCodexPackageEntrypoint, resolveManagedCodexNativeCommand } = await import("./managed-binary-kiWRhNRE.mjs").then((n) => n.n);
100
+ const { CodexAppServerClient } = await import("./client-6GbdZFc0.mjs").then((n) => n.n);
101
+ const { resolveManagedCodexPackageEntrypoint, resolveManagedCodexNativeCommand } = await import("./managed-binary-B6hQ1UKR.mjs").then((n) => n.n);
102
102
  const launcher = resolveManagedCodexPackageEntrypoint(path.dirname(fileURLToPath(import.meta.url)));
103
103
  const command = launcher ? resolveManagedCodexNativeCommand(launcher) : void 0;
104
104
  if (!command) return;
@@ -1,13 +1,13 @@
1
1
  import { t as resolveCodexAppServerHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
2
2
  import { o as resolveCodexComputerUseConfig } from "./config-options-CzyWLTJt.mjs";
3
- import { d as resolveMacOSDesktopCodexBundledMarketplaceCandidates, t as isManagedCodexDesktopCommand } from "./managed-binary-kiWRhNRE.mjs";
3
+ import { d as resolveMacOSDesktopCodexBundledMarketplaceCandidates, t as isManagedCodexDesktopCommand } from "./managed-binary-B6hQ1UKR.mjs";
4
4
  import { n as describeControlFailure } from "./capabilities-B3WEZl4e.mjs";
5
- import { r as requestCodexAppServerClientJson } from "./request-BZOfsSXW.mjs";
5
+ import { r as requestCodexAppServerClientJson } from "./request-DQh7X3fU.mjs";
6
6
  import "./config-DKhXquav.mjs";
7
7
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-C0NbLms1.mjs";
8
- import { $ as reconcileCodexComputerUseStartArtifacts, O as acquireCodexNativeConfigFence, at as isLegacyCodexComputerUsePluginDisabled, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, ct as assertNotSymlink, d as readCodexAppServerClientDesktopGeneration, g as resolveCodexNativeConfigFenceKey, h as releaseLeasedSharedCodexAppServerClient, it as hasLegacyCodexComputerUseMcpPolicy, nt as resolveBundledComputerUseMarketplacePath, ot as resolveManagedCodexComputerUseConfig, p as readCodexAppServerClientProcessIdentity, rt as resolveClientManagedBundledMarketplacePath, st as ensureCodexComputerUseSharedPluginCache, t as assertCodexAppServerClientStartSelectionCurrent, u as isCodexAppServerStartSelectionChangedError, y as waitForCodexAppServerClientDesktopGenerationDrain } from "./shared-client-CJCTeFpQ.mjs";
9
- import { c as isCodexAppServerIndeterminateTransportError, o as isCodexAppServerConnectionClosedError, s as isCodexAppServerIndeterminateRequestCancellationError } from "./client-qyUBJlGZ.mjs";
10
- import { r as CodexAppServerUnsafeSubscriptionError, u as retireUnsafeCodexTurnClientBestEffort } from "./attempt-client-cleanup-B-S7ngS_.mjs";
8
+ import { O as acquireCodexNativeConfigFence, at as hasLegacyCodexComputerUseMcpPolicy, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, ct as ensureCodexComputerUseSharedPluginCache, d as readCodexAppServerClientDesktopGeneration, et as reconcileCodexComputerUseStartArtifacts, g as resolveCodexNativeConfigFenceKey, h as releaseLeasedSharedCodexAppServerClient, it as resolveClientManagedBundledMarketplacePath, lt as assertNotSymlink, ot as isLegacyCodexComputerUsePluginDisabled, p as readCodexAppServerClientProcessIdentity, rt as resolveBundledComputerUseMarketplacePath, st as resolveManagedCodexComputerUseConfig, t as assertCodexAppServerClientStartSelectionCurrent, u as isCodexAppServerStartSelectionChangedError, y as waitForCodexAppServerClientDesktopGenerationDrain } from "./shared-client-zsK3DTPh.mjs";
9
+ import { c as isCodexAppServerIndeterminateTransportError, o as isCodexAppServerConnectionClosedError, s as isCodexAppServerIndeterminateRequestCancellationError } from "./client-6GbdZFc0.mjs";
10
+ import { r as CodexAppServerUnsafeSubscriptionError, u as retireUnsafeCodexTurnClientBestEffort } from "./attempt-client-cleanup-D1aznv7C.mjs";
11
11
  import path from "node:path";
12
12
  import fs from "node:fs/promises";
13
13
  import { toErrorObject } from "openclaw/plugin-sdk/error-runtime";
@@ -11,7 +11,7 @@ function buildCodexMigrationProvider(params = {}) {
11
11
  ].join(" "),
12
12
  supportedItemKinds: ["memory", "auth"],
13
13
  async detect(ctx) {
14
- const { discoverCodexSource, hasCodexSource } = await import("./source-CJis_1EF.mjs").then((n) => n.a);
14
+ const { discoverCodexSource, hasCodexSource } = await import("./source-DzsIjGO7.mjs").then((n) => n.a);
15
15
  const memoryOnly = isOnlyMigrationKind(ctx, "memory");
16
16
  const authOnly = isOnlyMigrationKind(ctx, "auth");
17
17
  const source = await discoverCodexSource({
@@ -29,16 +29,16 @@ function buildCodexMigrationProvider(params = {}) {
29
29
  };
30
30
  },
31
31
  async plan(ctx) {
32
- const { buildCodexMigrationPlan } = await import("./plan-DPdMk1Oy.mjs");
32
+ const { buildCodexMigrationPlan } = await import("./plan-NTSBQtKx.mjs");
33
33
  return buildCodexMigrationPlan(ctx);
34
34
  },
35
35
  deferredApply: { retrySafe: true },
36
36
  prepareApply(ctx) {
37
37
  if (isOnlyMigrationKind(ctx, "memory") || isOnlyMigrationKind(ctx, "auth")) return;
38
- return import("./apply-Cqb-YoCS.mjs").then(({ prepareTargetCodexAppServer }) => prepareTargetCodexAppServer(ctx));
38
+ return import("./apply-C82xe8Bk.mjs").then(({ prepareTargetCodexAppServer }) => prepareTargetCodexAppServer(ctx));
39
39
  },
40
40
  async apply(ctx, plan) {
41
- const { applyCodexMigrationPlan } = await import("./apply-Cqb-YoCS.mjs");
41
+ const { applyCodexMigrationPlan } = await import("./apply-C82xe8Bk.mjs");
42
42
  return await applyCodexMigrationPlan({
43
43
  ctx,
44
44
  plan,
@@ -1,5 +1,5 @@
1
- import { h as releaseLeasedSharedCodexAppServerClient } from "./shared-client-CJCTeFpQ.mjs";
2
- import { dt as normalizeCodexDynamicToolName } from "./thread-requests-OWGOiDaV.mjs";
1
+ import { h as releaseLeasedSharedCodexAppServerClient } from "./shared-client-zsK3DTPh.mjs";
2
+ import { dt as normalizeCodexDynamicToolName } from "./thread-requests-15uBuGjw.mjs";
3
3
  import { pinExecToolTarget } from "openclaw/plugin-sdk/codex-mcp-projection";
4
4
  import { loadNodeExecAvailability } from "openclaw/plugin-sdk/node-selection-runtime";
5
5
  //#region extensions/codex/src/app-server/shell-dynamic-tools.ts
@@ -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-CJCTeFpQ.mjs").then((n) => n.v);
183
+ const { createIsolatedCodexAppServerClient, getLeasedSharedCodexAppServerClient, isCodexAppServerStartSelectionChangedError, releaseLeasedSharedCodexAppServerClient, retireSharedCodexAppServerClientIfCurrent } = await import("./shared-client-zsK3DTPh.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,14 +3,14 @@ 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-DIQ5O_-S.mjs";
6
+ import { n as defineCodexBuildState } from "./build-state-E-CRUdgh.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-Dnps4W4_.mjs";
13
- import { d as retireSharedCodexAppServerClientIfCurrent } from "./shared-client-lifecycle-7xgtlo15.mjs";
12
+ import { c as resolveCodexAppServerPreparedApiKeyCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-CWpIEtTm.mjs";
13
+ import { d as retireSharedCodexAppServerClientIfCurrent } from "./shared-client-lifecycle-4LdC3gM4.mjs";
14
14
  import { o as formatCodexDisplayText } from "./command-formatters-R3ckE3Co.mjs";
15
15
  import { t as isIncognitoSessionKey } from "./incognito-session-DWYapfwf.mjs";
16
16
  import { n as CodexAppServerRpcError } from "./rpc-error-BlD2vuzn.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-BZOfsSXW.mjs";
23
+ import { r as requestCodexAppServerClientJson, t as CodexAppServerScopedRequestRejectedError } from "./request-DQh7X3fU.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-CJCTeFpQ.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, 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-zsK3DTPh.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-qyUBJlGZ.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-6GbdZFc0.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-B-S7ngS_.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-D1aznv7C.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-DfLmPV0k.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-OWGOiDaV.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-_bAbjedG.mjs";
36
+ import { n as listAllCodexAppServerModels } from "./models-Bs4aEhpG.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-15uBuGjw.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-D03WesNn.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-BwkQXf9e.mjs";
41
- import { n as CodexThreadPolicyHandoffError, s as restoreCodexThreadSkillsCatalogAfterCompaction } from "./thread-policy-gNPzzpVp.mjs";
42
- import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-B6pPt21M.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-DbNIloTJ.mjs";
41
+ import { n as CodexThreadPolicyHandoffError, s as restoreCodexThreadSkillsCatalogAfterCompaction } from "./thread-policy-g1TKKqWj.mjs";
42
+ import { c as withExclusiveCodexAppServerThread, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-B0xUCXOU.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-wSMQkbpV.mjs";
44
+ import { a as resolveCodexPromptError, i as refreshCodexUsageLimitPromptError, n as formatCodexTurnStartUsageLimitError, r as markCodexAuthProfileBlockedFromRateLimits, t as CodexUsageLimitPromptError } from "./usage-limit-error-BEyQJjD_.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-MV_1dj-3.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-Db2sY5cZ.mjs";
50
+ import { i as createAssistantReasoningMessage, n as createAssistantCommentaryMessage, r as createAssistantMessage, t as createAssistantAsyncMessage } from "./event-projector-assistant-message-CAI4foF8.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-CGMXNyuw.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-BJ5Z_olH.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-DKAbD-vI.mjs";
54
54
  import { n as captureCodexSettledTurnFinalizationContext } from "./settled-turn-context-D4yj4rxf.mjs";
55
- import { t as resolveCodexProviderWebSearchSupport } from "./provider-capabilities-DG5qbsUZ.mjs";
56
- import { a as createComputerUseRequest, n as ensureCodexComputerUse, o as runCodexComputerUseLiveTest, t as defaultCodexPluginMetadataCache } from "./plugin-metadata-cache-BRwtRct9.mjs";
55
+ import { t as resolveCodexProviderWebSearchSupport } from "./provider-capabilities-CYK-rMwC.mjs";
56
+ import { a as createComputerUseRequest, n as ensureCodexComputerUse, o as runCodexComputerUseLiveTest, t as defaultCodexPluginMetadataCache } from "./plugin-metadata-cache-Z06WuND0.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;
@@ -6622,7 +6637,7 @@ function createCodexAttemptServerRequestController(resources, turnRuntime, lifec
6622
6637
  //#region extensions/codex/src/app-server/attempt-runtime-artifact.ts
6623
6638
  async function verifyStartupArtifact(params) {
6624
6639
  if (!params.request) return;
6625
- const { readCodexAppServerClientRuntimeArtifact, validateCodexAppServerRuntimeArtifact } = await import("./runtime-artifact-DDQ-HGXf.mjs");
6640
+ const { readCodexAppServerClientRuntimeArtifact, validateCodexAppServerRuntimeArtifact } = await import("./runtime-artifact-D7lCXdhV.mjs");
6626
6641
  const runtimeArtifact = readCodexAppServerClientRuntimeArtifact(params.client);
6627
6642
  const expected = params.request.expected;
6628
6643
  const matchesExpected = !expected || runtimeArtifact?.id === expected.id && runtimeArtifact.fingerprint === expected.fingerprint;
@@ -1,6 +1,6 @@
1
1
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
2
- import { a as resolvePackagedCodexNativeCommand } from "./managed-binary-kiWRhNRE.mjs";
3
- import { n as resolveCodexAppServerSpawnEnv, r as resolveCodexAppServerSpawnInvocation } from "./transport-stdio-Bdegpn2V.mjs";
2
+ import { a as resolvePackagedCodexNativeCommand } from "./managed-binary-B6hQ1UKR.mjs";
3
+ import { n as resolveCodexAppServerSpawnEnv, r as resolveCodexAppServerSpawnInvocation } from "./transport-stdio-CbutOIEh.mjs";
4
4
  import { captureCodexConfiguredConnection, finalizeCodexConfiguredConnection, isCodexConfiguredConnectionArtifact, validateCodexConfiguredConnectionCapture } from "./runtime-artifact-connection-D68qQn1m.mjs";
5
5
  import { createHash } from "node:crypto";
6
6
  import { resolveWindowsExecutablePath } from "openclaw/plugin-sdk/windows-spawn";
@@ -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-7xgtlo15.mjs";
6
+ import { i as hasActiveSharedCodexAppServerWork, r as getSharedCodexAppServerClientState } from "./shared-client-lifecycle-4LdC3gM4.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-BMCFMZw-.mjs";
17
+ import { t as codexCatalogResidentHomeKey } from "./session-catalog-events-DVLgp99B.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-CuaFZuQE.mjs").then((n) => n.a);
1564
+ const { CODEX_CATALOG_NATIVE_PAGE_LIMIT } = await import("./session-catalog-native-projection-LshItrMe.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-DwJjnF5k.mjs"), import("./session-catalog-projection-CGfzfP93.mjs")]);
2017
+ const [{ CodexCatalogIndex }, { canReuseCodexCatalogPreview, projectCodexCatalogDeltaPage, projectCodexCatalogPage }] = await Promise.all([import("./session-catalog-index-v3Yjgaih.mjs"), import("./session-catalog-projection-CCBFozaQ.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-skzRq4wD.mjs").then((n) => n.n);
2145
+ const { codexControlRequest } = await import("./command-rpc-Bc_OIgK0.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-CJCTeFpQ.mjs").then((n) => n.v);
2168
- const { resolveCodexAppServerClientInstanceId } = await import("./client-qyUBJlGZ.mjs").then((n) => n.n);
2169
- const { requestCodexAppServerClientJson } = await import("./request-BZOfsSXW.mjs").then((n) => n.a);
2167
+ const { getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient, retireSharedCodexAppServerClientIfCurrent } = await import("./shared-client-zsK3DTPh.mjs").then((n) => n.v);
2168
+ const { resolveCodexAppServerClientInstanceId } = await import("./client-6GbdZFc0.mjs").then((n) => n.n);
2169
+ const { requestCodexAppServerClientJson } = await import("./request-DQh7X3fU.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-CJCTeFpQ.mjs").then((n) => n.v);
2238
+ const { clearSharedCodexAppServerClientAndWait } = await import("./shared-client-zsK3DTPh.mjs").then((n) => n.v);
2239
2239
  await clearSharedCodexAppServerClientAndWait();
2240
2240
  }
2241
2241
  },