@openclaw/codex 2026.10.10-beta.1 → 2026.10.10-beta.3

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-DDCDkvtl.mjs → account-usage-runtime-BOspqhfQ.mjs} +1 -1
  2. package/dist/.setup/{apply-BVSXYkTV.mjs → apply-DVeFKzUL.mjs} +4 -4
  3. package/dist/.setup/{attempt-client-cleanup-6OcbMH46.mjs → attempt-client-cleanup-BLp6z_DD.mjs} +4 -4
  4. package/dist/.setup/{auth-cache-key-CVcYw8HD.mjs → auth-cache-key-aolg0chE.mjs} +1 -1
  5. package/dist/.setup/{bounded-turn-mN_ekXYW.mjs → bounded-turn-DJr0EXh7.mjs} +6 -6
  6. package/dist/.setup/{build-state-VcujMRqP.mjs → build-state-DswWyGqI.mjs} +1 -1
  7. package/dist/.setup/{client-BS8X7HmG.mjs → client-CPPD2q0Z.mjs} +3 -3
  8. package/dist/.setup/{client-catalog-response-jM38o5w1.mjs → client-catalog-response-FeIOBhaz.mjs} +1 -1
  9. package/dist/.setup/{command-dispatch-DzXbHqCn.mjs → command-dispatch-DlgDPLEv.mjs} +1 -1
  10. package/dist/.setup/{command-handlers-tfb5Uq-O.mjs → command-handlers-B7Kcgt8i.mjs} +10 -10
  11. package/dist/.setup/{command-rpc-SXqLQukR.mjs → command-rpc-DomZ6_l8.mjs} +6 -6
  12. package/dist/.setup/{compact-M-JxLcbZ.mjs → compact-H5H5Cvbw.mjs} +9 -9
  13. package/dist/.setup/{computer-use-FqQ-Flbl.mjs → computer-use-BFfXSTZw.mjs} +3 -3
  14. package/dist/.setup/{conversation-binding-C7MZy-Cx.mjs → conversation-binding-DyiBKCA4.mjs} +29 -20
  15. package/dist/.setup/{dynamic-tool-build-BjFAIG-f.mjs → dynamic-tool-build-DkJpWzXt.mjs} +1 -1
  16. package/dist/.setup/{dynamic-tools-XqWsVjcC.mjs → dynamic-tools-UL4DHNTh.mjs} +6 -6
  17. package/dist/.setup/{effective-mcp-catalog-C3ta5hHc.mjs → effective-mcp-catalog-CvJiu5dn.mjs} +4 -4
  18. package/dist/.setup/{ephemeral-turn-1ZF17fUR.mjs → ephemeral-turn-C9iVxYQi.mjs} +2 -2
  19. package/dist/.setup/{inference-context-mv_dBpAL.mjs → inference-context-BPwyk-Op.mjs} +1 -1
  20. package/dist/.setup/{inference-proxy-yd3hr2dr.mjs → inference-proxy-iJoMVyEy.mjs} +1 -1
  21. package/dist/.setup/{isolated-completion-P-r8NRE4.mjs → isolated-completion-Bv8qIPw_.mjs} +3 -3
  22. package/dist/.setup/{mcp-app-session-preparation-fnsnCovu.mjs → mcp-app-session-preparation-DtvMR_yX.mjs} +3 -3
  23. package/dist/.setup/{model-catalog-Y_esgRPY.mjs → model-catalog-EWVLBn3F.mjs} +5 -5
  24. package/dist/.setup/{models-BWLEUo2E.mjs → models-Bc4yyUrk.mjs} +3 -3
  25. package/dist/.setup/{native-hook-relay-C7aaLJaP.mjs → native-hook-relay-DbNYjwuC.mjs} +3 -3
  26. package/dist/.setup/{native-mcp-app-CsWj-v_x.mjs → native-mcp-app-gkEJsgj2.mjs} +4 -4
  27. package/dist/.setup/{native-skill-isolation-CMimsKYy.mjs → native-skill-isolation-Cja6Nv79.mjs} +2 -2
  28. package/dist/.setup/{native-subagent-monitor-CFE7b4oC.mjs → native-subagent-monitor-D1pYkirc.mjs} +9 -7
  29. package/dist/.setup/{plan-B4cHgqNv.mjs → plan-BUB3QGL7.mjs} +2 -2
  30. package/dist/.setup/{plugin-approval-roundtrip-DIZHLbAM.mjs → plugin-approval-roundtrip-BkiVPLuc.mjs} +1 -1
  31. package/dist/.setup/{provider-wj_LFJH3.mjs → provider-Rt7awchu.mjs} +4 -4
  32. package/dist/.setup/{provider-capabilities-DjcKunHS.mjs → provider-capabilities-C0laqfjE.mjs} +1 -1
  33. package/dist/.setup/{request-ePeNJrOd.mjs → request-DbU7VQMs.mjs} +1 -1
  34. package/dist/.setup/{run-attempt-BcWArowv.mjs → run-attempt-BFAgRiTd.mjs} +20 -20
  35. package/dist/.setup/{session-cancellation-DLBSJO5n.mjs → session-cancellation-9l8N4EUL.mjs} +4 -4
  36. package/dist/.setup/{session-catalog-events-DK0opVp3.mjs → session-catalog-events-CicBG92S.mjs} +3 -3
  37. package/dist/.setup/{session-catalog-index-BfzfdtH7.mjs → session-catalog-index-ft2e51lh.mjs} +4 -4
  38. package/dist/.setup/{session-catalog-native-projection-G3lSDYYG.mjs → session-catalog-native-projection-CwOyRRXK.mjs} +1 -1
  39. package/dist/.setup/{session-catalog-projection-BjWE414G.mjs → session-catalog-projection-By1iGA1y.mjs} +1 -1
  40. package/dist/.setup/{session-catalog-source-DqyuNxCe.mjs → session-catalog-source-DghHV4qB.mjs} +1 -1
  41. package/dist/.setup/{session-retirement-Ci_JvOfH.mjs → session-retirement-D9qTLXqz.mjs} +5 -5
  42. package/dist/.setup/{settled-turn-finalizer-D3-KXsbP.mjs → settled-turn-finalizer-Cn7yngMH.mjs} +3 -3
  43. package/dist/.setup/{shared-client-CE_uY0A1.mjs → shared-client-B8v6e5D0.mjs} +28 -13
  44. package/dist/.setup/{side-question-OM18H9WJ.mjs → side-question-DFFnd64D.mjs} +13 -13
  45. package/dist/.setup/{source-uGKgKWm8.mjs → source-DTo8pzXK.mjs} +1 -1
  46. package/dist/.setup/{thread-lifecycle-run-mLueY6pH.mjs → thread-lifecycle-run-DOC2IWpW.mjs} +56 -29
  47. package/dist/.setup/{thread-ownership-t6Y9fLQS.mjs → thread-ownership-DJ8PPxRc.mjs} +3 -3
  48. package/dist/.setup/{thread-policy-Cy301Or8.mjs → thread-policy-UldER50x.mjs} +3 -3
  49. package/dist/.setup/{thread-resume-BUbsUfgF.mjs → thread-resume-BZWI-rUL.mjs} +4 -4
  50. package/dist/.setup/{turn-router-Dbw17k3K.mjs → turn-router-CaEj5E0i.mjs} +1 -1
  51. package/dist/.setup/{upstream-session-fork-_LYkh0nZ.mjs → upstream-session-fork-Dqf5_VFU.mjs} +8 -8
  52. package/dist/.setup/{usage-w_93wnnR.mjs → usage-BfOJuCR7.mjs} +1 -1
  53. package/dist/.setup/{usage-limit-error-DcOSH3J4.mjs → usage-limit-error-B0x1eymI.mjs} +1 -1
  54. package/dist/.setup/{web-search-provider.runtime-DMHxve5v.mjs → web-search-provider.runtime-BwYKjmzK.mjs} +1 -1
  55. package/dist/catalog-page.worker.js +1 -1
  56. package/dist/harness.js +16 -16
  57. package/dist/index.js +24 -24
  58. package/dist/media-understanding-provider.js +2 -2
  59. package/dist/migration-provider-api.js +1 -1
  60. package/package.json +4 -4
@@ -1,6 +1,6 @@
1
1
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
2
2
  import { t as buildCodexAppServerUsageSnapshot } from "./rate-limits-BpfURnuy.mjs";
3
- import { t as readCodexAppServerUsage } from "./request-ePeNJrOd.mjs";
3
+ import { t as readCodexAppServerUsage } from "./request-DbU7VQMs.mjs";
4
4
  import "./config-BfrAlTMT.mjs";
5
5
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
6
6
  import { a as resolveCodexAppServerAuthProfileStore } from "./auth-profile-auwzSwwy.mjs";
@@ -1,13 +1,13 @@
1
- import { s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-CVcYw8HD.mjs";
1
+ import { s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-aolg0chE.mjs";
2
2
  import { a as defaultCodexAppInventoryCache, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-DRb-niJc.mjs";
3
- import { r as requestCodexAppServerJson } from "./request-ePeNJrOd.mjs";
3
+ import { r as requestCodexAppServerJson } from "./request-DbU7VQMs.mjs";
4
4
  import { r as isOpenAiCuratedMarketplaceName, u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./plugin-inventory-DE9wcaeH.mjs";
5
5
  import "./config-BfrAlTMT.mjs";
6
6
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
7
7
  import { i as resolveCodexAppServerAuthProfileIdForAgent } from "./auth-profile-auwzSwwy.mjs";
8
- import { Z as resolveCodexAppServerAuthAccountCacheKey, f as releaseLeasedSharedCodexAppServerClient, i as clearSharedCodexAppServerClientIfCurrentAndWait, o as getLeasedSharedCodexAppServerClient } from "./shared-client-CE_uY0A1.mjs";
8
+ import { $ as resolveCodexAppServerAuthAccountCacheKey, f as releaseLeasedSharedCodexAppServerClient, i as clearSharedCodexAppServerClientIfCurrentAndWait, o as getLeasedSharedCodexAppServerClient } from "./shared-client-B8v6e5D0.mjs";
9
9
  import { t as ensureCodexPluginActivation } from "./plugin-activation-CXPWe-hl.mjs";
10
- import { CODEX_PLUGIN_CONFIG_PATH, buildCodexMigrationPlan, buildCodexPluginsConfigValue, hasCodexPluginConfigConflict, n as resolveCodexConfigPatchMode, readCodexPluginMigrationConfigEntry, t as createCodexAuthItemApplier } from "./plan-B4cHgqNv.mjs";
10
+ import { CODEX_PLUGIN_CONFIG_PATH, buildCodexMigrationPlan, buildCodexPluginsConfigValue, hasCodexPluginConfigConflict, n as resolveCodexConfigPatchMode, readCodexPluginMigrationConfigEntry, t as createCodexAuthItemApplier } from "./plan-BUB3QGL7.mjs";
11
11
  import { uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
12
12
  import { parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
13
13
  import path from "node:path";
@@ -1,8 +1,8 @@
1
- import { D as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-CVcYw8HD.mjs";
1
+ import { D as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-aolg0chE.mjs";
2
2
  import { a as codexPrewriteRejectionCause, o as isCodexAppServerOverloadError, r as CodexAppServerRpcError } from "./rpc-error-DemqqaxE.mjs";
3
- import { H as unsubscribeCodexAppServerLiveThread, lt as isCodexAppServerStartupError } from "./shared-client-CE_uY0A1.mjs";
4
- import { N as isCodexAppServerBrokenPipeError, s as isCodexAppServerRequestTimeoutError } from "./client-BS8X7HmG.mjs";
5
- import { n as getCodexAppServerTurnRouter } from "./turn-router-Dbw17k3K.mjs";
3
+ import { U as unsubscribeCodexAppServerLiveThread, dt as isCodexAppServerStartupError } from "./shared-client-B8v6e5D0.mjs";
4
+ import { N as isCodexAppServerBrokenPipeError, s as isCodexAppServerRequestTimeoutError } from "./client-CPPD2q0Z.mjs";
5
+ import { n as getCodexAppServerTurnRouter } from "./turn-router-CaEj5E0i.mjs";
6
6
  import { t as __exportAll } from "./session-binding-sidecars-BNSS6WL4.mjs";
7
7
  import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
8
8
  import { AgentHarnessPreflightError, embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-runtime";
@@ -1,4 +1,4 @@
1
- import { n as defineCodexBuildState } from "./build-state-VcujMRqP.mjs";
1
+ import { n as defineCodexBuildState } from "./build-state-DswWyGqI.mjs";
2
2
  import { y as resolveMacOSDesktopCodexAppPathCandidates } from "./managed-binary-DbKvGXKl.mjs";
3
3
  import { n as resolveCodexAppServerSpawnEnv } from "./transport-stdio-Bq160Dhv.mjs";
4
4
  import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -4,14 +4,14 @@ import { d as readCodexEffectiveConfig } from "./config-options-DMFZkd3X.mjs";
4
4
  import { a as codexPrewriteRejectionCause } from "./rpc-error-DemqqaxE.mjs";
5
5
  import "./config-BfrAlTMT.mjs";
6
6
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
7
- import { C as createCodexElicitationResponse, g as assertCodexTurnStartResponse, h as assertCodexThreadStartResponse, y as readCodexErrorNotification } from "./client-BS8X7HmG.mjs";
8
- import { o as closeCodexStartupClientBestEffort, s as interruptCodexTurnAndWaitBestEffort, t as CODEX_APP_SERVER_INTERRUPT_TIMEOUT_MS } from "./attempt-client-cleanup-6OcbMH46.mjs";
9
- import { t as CodexEphemeralTurn } from "./ephemeral-turn-1ZF17fUR.mjs";
10
- import { i as readModelListResult } from "./models-BWLEUo2E.mjs";
7
+ import { C as createCodexElicitationResponse, g as assertCodexTurnStartResponse, h as assertCodexThreadStartResponse, y as readCodexErrorNotification } from "./client-CPPD2q0Z.mjs";
8
+ import { o as closeCodexStartupClientBestEffort, s as interruptCodexTurnAndWaitBestEffort, t as CODEX_APP_SERVER_INTERRUPT_TIMEOUT_MS } from "./attempt-client-cleanup-BLp6z_DD.mjs";
9
+ import { t as CodexEphemeralTurn } from "./ephemeral-turn-C9iVxYQi.mjs";
10
+ import { i as readModelListResult } from "./models-Bc4yyUrk.mjs";
11
11
  import { d as mergeCodexThreadConfigs } from "./project-doc-thread-config-B0UI3f1D.mjs";
12
12
  import { n as resolveCodexAppServerReasoningEffort } from "./reasoning-effort-CS9kKWB9.mjs";
13
13
  import { n as buildCodexRingZeroThreadConfigPatch, p as attestCodexRestrictedToolSurfaceMcpServersDisabled, r as buildCodexRuntimeThreadConfig, t as assertCodexManagedRequirementsDoNotOverrideToolPolicy, u as readCodexInheritedMcpServerNames } from "./thread-requests-BjawdIVV.mjs";
14
- import { a as resolveCodexPromptError } from "./usage-limit-error-DcOSH3J4.mjs";
14
+ import { a as resolveCodexPromptError } from "./usage-limit-error-B0x1eymI.mjs";
15
15
  import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
16
16
  import { parse } from "smol-toml";
17
17
  import path from "node:path";
@@ -146,7 +146,7 @@ async function runBoundedCodexAppServerTurnInWorkspace(params, appServer, worksp
146
146
  assertCurrent: params.assertCurrent,
147
147
  ...params.signal ? { abandonSignal: params.signal } : {}
148
148
  };
149
- const client = params.options.clientFactory ? await params.options.clientFactory(clientOptions) : await import("./shared-client-CE_uY0A1.mjs").then((n) => n.m).then(({ createIsolatedCodexAppServerClient }) => createIsolatedCodexAppServerClient({
149
+ const client = params.options.clientFactory ? await params.options.clientFactory(clientOptions) : await import("./shared-client-B8v6e5D0.mjs").then((n) => n.m).then(({ createIsolatedCodexAppServerClient }) => createIsolatedCodexAppServerClient({
150
150
  ...clientOptions,
151
151
  authProfileStore: params.authProfileStore
152
152
  }));
@@ -1,5 +1,5 @@
1
1
  //#region extensions/codex/package.json
2
- var version = "2026.10.10-beta.1";
2
+ var version = "2026.10.10-beta.3";
3
3
  //#endregion
4
4
  //#region extensions/codex/src/build-state.ts
5
5
  /**
@@ -1,9 +1,9 @@
1
- import { a as readCodexCatalogDecodeRoute, c as isRpcResponse, i as listenCodexAppServerLines, n as projectCodexCatalogMessage, o as CodexAppServerMessageDecoder, r as createCodexAppServerMessageWriter, s as redactCodexAppServerLinePreview } from "./client-catalog-response-jM38o5w1.mjs";
1
+ import { a as readCodexCatalogDecodeRoute, c as isRpcResponse, i as listenCodexAppServerLines, n as projectCodexCatalogMessage, o as CodexAppServerMessageDecoder, r as createCodexAppServerMessageWriter, s as redactCodexAppServerLinePreview } from "./client-catalog-response-FeIOBhaz.mjs";
2
2
  import { r as isJsonObject } from "./protocol-CaPAVwe9.mjs";
3
3
  import { a as closeCodexAppServerTransport, l as getCodexAppServerRegisteredTransportIdentity, o as closeCodexAppServerTransportAndWait, s as hasCodexAppServerNaturalExit, t as createStdioTransport } from "./transport-stdio-Bq160Dhv.mjs";
4
4
  import { i as CodexAppServerScopedRequestRejectedError, n as CodexAppServerLocalRequestCancellationError, o as isCodexAppServerOverloadError, r as CodexAppServerRpcError, t as CODEX_APP_SERVER_OVERLOADED_ERROR_CODE } from "./rpc-error-DemqqaxE.mjs";
5
- import { n as codexCatalogSourceForClient, o as recordCodexCatalogResponseSource, t as closeCodexCatalogClientSource } from "./session-catalog-source-DqyuNxCe.mjs";
6
- import { i as reuseCodexCatalogPreview } from "./session-catalog-native-projection-G3lSDYYG.mjs";
5
+ import { n as codexCatalogSourceForClient, o as recordCodexCatalogResponseSource, t as closeCodexCatalogClientSource } from "./session-catalog-source-DghHV4qB.mjs";
6
+ import { i as reuseCodexCatalogPreview } from "./session-catalog-native-projection-CwOyRRXK.mjs";
7
7
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
8
8
  import { codexCatalogPageWorkerEntrypoint } from "../catalog-page-worker-entrypoint.js";
9
9
  import { a as isUnsupportedCodexAppServerVersionError, i as createCodexInitializeDiagnostics, n as buildCodexAppServerInitializeParams, r as buildCodexAppServerRuntimeIdentity, t as assertSupportedCodexAppServerVersion } from "./client-initialize-CjgZcX61.mjs";
@@ -1,5 +1,5 @@
1
1
  import { r as isJsonObject } from "./protocol-CaPAVwe9.mjs";
2
- import { n as projectCodexCatalogNativeResponse, r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-G3lSDYYG.mjs";
2
+ import { n as projectCodexCatalogNativeResponse, r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-CwOyRRXK.mjs";
3
3
  import { embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-registration";
4
4
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
5
5
  import { sanitizeTerminalText } from "openclaw/plugin-sdk/text-chunking";
@@ -8,7 +8,7 @@ async function handleCodexCommand(ctx, options) {
8
8
  };
9
9
  const { resolvePluginConfig, ...subcommandOptions } = options;
10
10
  try {
11
- const { handleCodexSubcommand } = await import("./command-handlers-tfb5Uq-O.mjs");
11
+ const { handleCodexSubcommand } = await import("./command-handlers-B7Kcgt8i.mjs");
12
12
  return await handleCodexSubcommand(commandContext, {
13
13
  ...subcommandOptions,
14
14
  pluginConfig: resolvePluginConfig?.() ?? subcommandOptions.pluginConfig
@@ -1,7 +1,7 @@
1
1
  import { r as isJsonObject } from "./protocol-CaPAVwe9.mjs";
2
2
  import { g as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced, r as bindingStoreKey } from "./session-binding-record-C_THntMe.mjs";
3
3
  import { r as isCodexFastServiceTier } from "./config-utils-DN_YT7dE.mjs";
4
- import { c as resolveCodexAppServerPreparedApiKeyCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-CVcYw8HD.mjs";
4
+ import { c as resolveCodexAppServerPreparedApiKeyCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-aolg0chE.mjs";
5
5
  import { n as withCodexConversationThreadActivity } from "./thread-ownership-queue-CeyYScUC.mjs";
6
6
  import { a as canMutateCodexHost, i as assertCodexHostOwnerCurrent, n as CODEX_HOST_INSPECTION_AUTH_ERROR, o as hasCodexAdminScope, r as CODEX_NATIVE_EXECUTION_AUTH_ERROR, t as CODEX_FULL_PERMISSIONS_AUTH_ERROR } from "./command-authorization-AikPDtcc.mjs";
7
7
  import { l as formatRelativeDuration, s as summarizeCodexAccountUsage } from "./rate-limits-BpfURnuy.mjs";
@@ -13,25 +13,25 @@ import { n as filterCodexMarketplacePlugins, r as parseCodexPluginMarketplaceId,
13
13
  import { o as formatCodexCliSessions } from "./node-cli-sessions-BuJnBnEq.mjs";
14
14
  import { a as defaultCodexAppInventoryCache, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-DRb-niJc.mjs";
15
15
  import { i as resolveCodexBindingAppServerConnection } from "./binding-connection-GTgUj9pi.mjs";
16
- import { a as withCodexAppServerJsonClient } from "./request-ePeNJrOd.mjs";
16
+ import { a as withCodexAppServerJsonClient } from "./request-DbU7VQMs.mjs";
17
17
  import { n as findCodexMarketplacePluginSummary, o as pluginReadParams, r as isOpenAiCuratedMarketplaceName, u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./plugin-inventory-DE9wcaeH.mjs";
18
18
  import "./config-BfrAlTMT.mjs";
19
19
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
20
20
  import { a as resolveCodexAppServerAuthProfileStore, i as resolveCodexAppServerAuthProfileIdForAgent, n as normalizeCodexAppServerBindingModelProvider, r as resolveCodexAppServerAuthProfileId } from "./auth-profile-auwzSwwy.mjs";
21
- import { A as hasCodexAppServerLiveThread, D as consumeCodexAppServerLiveThread, Z as resolveCodexAppServerAuthAccountCacheKey, f as releaseLeasedSharedCodexAppServerClient, o as getLeasedSharedCodexAppServerClient } from "./shared-client-CE_uY0A1.mjs";
22
- import { f as assertCodexThreadAcceptsDirectInput, i as isCodexAppServerIndeterminateRequestCancellationError, m as assertCodexThreadResumeResponse, o as isCodexAppServerPrewriteRequestCancellationError } from "./client-BS8X7HmG.mjs";
23
- import { o as closeCodexStartupClientBestEffort } from "./attempt-client-cleanup-6OcbMH46.mjs";
21
+ import { $ as resolveCodexAppServerAuthAccountCacheKey, A as hasCodexAppServerLiveThread, D as consumeCodexAppServerLiveThread, f as releaseLeasedSharedCodexAppServerClient, o as getLeasedSharedCodexAppServerClient } from "./shared-client-B8v6e5D0.mjs";
22
+ import { f as assertCodexThreadAcceptsDirectInput, i as isCodexAppServerIndeterminateRequestCancellationError, m as assertCodexThreadResumeResponse, o as isCodexAppServerPrewriteRequestCancellationError } from "./client-CPPD2q0Z.mjs";
23
+ import { o as closeCodexStartupClientBestEffort } from "./attempt-client-cleanup-BLp6z_DD.mjs";
24
24
  import { n as fingerprintCodexAppServerAuthBinding } from "./auth-binding-830RLAJW.mjs";
25
- import { n as listAllCodexAppServerModels } from "./models-BWLEUo2E.mjs";
25
+ import { n as listAllCodexAppServerModels } from "./models-Bc4yyUrk.mjs";
26
26
  import { n as refreshCodexAppRuntimeState, r as refreshCodexPluginRuntimeState } from "./plugin-activation-CXPWe-hl.mjs";
27
27
  import { i as resolveCodexSessionBinding, n as createCodexSessionGenerationSupersededError } from "./session-binding-BgsWcbdY.mjs";
28
- import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, i as retireCodexConversationThreadBinding, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-t6Y9fLQS.mjs";
28
+ import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, i as retireCodexConversationThreadBinding, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-DJ8PPxRc.mjs";
29
29
  import { n as prepareCodexNativeExecutionBlock, r as prepareCodexNativeSandboxBlock } from "./sandbox-guard-DneAfNye.mjs";
30
- import { i as assertCodexSupervisionThreadLineage } from "./thread-policy-Cy301Or8.mjs";
30
+ import { i as assertCodexSupervisionThreadLineage } from "./thread-policy-UldER50x.mjs";
31
31
  import { t as defaultCodexPluginMetadataCache } from "./plugin-metadata-cache-BqC-a6Fb.mjs";
32
- import { n as installCodexComputerUse, r as readCodexComputerUseStatus } from "./computer-use-FqQ-Flbl.mjs";
32
+ import { n as installCodexComputerUse, r as readCodexComputerUseStatus } from "./computer-use-BFfXSTZw.mjs";
33
33
  import { t as readCodexExperimentalFeature } from "./experimental-features-uGnVDtp-.mjs";
34
- import { a as requestOptions, i as readCodexStatusProbes, o as safeCodexControlRequest, r as prepareCodexControlSessionAuth, t as codexControlRequest } from "./command-rpc-SXqLQukR.mjs";
34
+ import { a as requestOptions, i as readCodexStatusProbes, o as safeCodexControlRequest, r as prepareCodexControlSessionAuth, t as codexControlRequest } from "./command-rpc-DomZ6_l8.mjs";
35
35
  import { a as readCodexConversationActiveTurn, c as setCodexConversationModel, d as stopCodexConversationTurn, i as parseCodexPermissionsModeArg, l as setCodexConversationPermissions, n as formatPermissionsMode, r as parseCodexFastModeArg, s as setCodexConversationFastMode, u as steerCodexConversationTurn } from "./conversation-control-B2EpVZEb.mjs";
36
36
  import { normalizeOptionalString, normalizeUniqueStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
37
37
  import crypto from "node:crypto";
@@ -1,17 +1,17 @@
1
1
  import { r as isJsonObject } from "./protocol-CaPAVwe9.mjs";
2
2
  import { o as isCodexAppServerOverloadError, r as CodexAppServerRpcError } from "./rpc-error-DemqqaxE.mjs";
3
3
  import { n as describeControlFailure, t as CODEX_CONTROL_METHODS } from "./capabilities-DAS-JX1z.mjs";
4
- import { a as withCodexAppServerJsonClient, r as requestCodexAppServerJson } from "./request-ePeNJrOd.mjs";
4
+ import { a as withCodexAppServerJsonClient, r as requestCodexAppServerJson } from "./request-DbU7VQMs.mjs";
5
5
  import "./config-BfrAlTMT.mjs";
6
6
  import { n as resolveCodexAppServerRuntimeOptions, r as resolveCodexSupervisionAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
7
7
  import { a as resolveCodexAppServerAuthProfileStore, r as resolveCodexAppServerAuthProfileId } from "./auth-profile-auwzSwwy.mjs";
8
- import { Q as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-CE_uY0A1.mjs";
9
- import { a as isCodexAppServerIndeterminateTransportError, i as isCodexAppServerIndeterminateRequestCancellationError } from "./client-BS8X7HmG.mjs";
10
- import { o as closeCodexStartupClientBestEffort } from "./attempt-client-cleanup-6OcbMH46.mjs";
8
+ import { et as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-B8v6e5D0.mjs";
9
+ import { a as isCodexAppServerIndeterminateTransportError, i as isCodexAppServerIndeterminateRequestCancellationError } from "./client-CPPD2q0Z.mjs";
10
+ import { o as closeCodexStartupClientBestEffort } from "./attempt-client-cleanup-BLp6z_DD.mjs";
11
11
  import { r as prepareCodexAppServerAuthBinding } from "./auth-binding-830RLAJW.mjs";
12
- import { r as listCodexAppServerModels } from "./models-BWLEUo2E.mjs";
12
+ import { r as listCodexAppServerModels } from "./models-Bc4yyUrk.mjs";
13
13
  import { n as createCodexSessionGenerationSupersededError } from "./session-binding-BgsWcbdY.mjs";
14
- import { t as resumeCodexAppServerThread } from "./thread-resume-BUbsUfgF.mjs";
14
+ import { t as resumeCodexAppServerThread } from "./thread-resume-BZWI-rUL.mjs";
15
15
  import { t as __exportAll } from "./session-binding-sidecars-BNSS6WL4.mjs";
16
16
  import { resolveAgentDir, resolveSessionAgentIdsStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
17
17
  import { resolveAgentWorkspaceDir } from "openclaw/plugin-sdk/agent-runtime";
@@ -1,23 +1,23 @@
1
1
  import { n as readCodexRuntimeModelId } from "./model-runtime-BdqzOMkU.mjs";
2
2
  import { r as isJsonObject } from "./protocol-CaPAVwe9.mjs";
3
3
  import { g as sessionBindingIdentity } from "./session-binding-record-C_THntMe.mjs";
4
- import { T as retainSharedCodexAppServerClientByInstanceId, k as waitForCodexAppServerClientExit } from "./auth-cache-key-CVcYw8HD.mjs";
4
+ import { T as retainSharedCodexAppServerClientByInstanceId, k as waitForCodexAppServerClientExit } from "./auth-cache-key-aolg0chE.mjs";
5
5
  import { t as CODEX_APP_SERVER_BINDING_GUARDED_REQUEST_TIMEOUT_MS } from "./session-binding-meta-Lkm5Lpf4.mjs";
6
6
  import { i as CodexAppServerScopedRequestRejectedError, r as CodexAppServerRpcError } from "./rpc-error-DemqqaxE.mjs";
7
7
  import { i as resolveCodexBindingAppServerConnection } from "./binding-connection-GTgUj9pi.mjs";
8
- import { B as retainCodexAppServerLiveThread, D as consumeCodexAppServerLiveThread, I as protectCodexAppServerLiveThread, V as revertCodexAppServerLiveThreadInstructions, a as createIsolatedCodexAppServerClient, p as retainSharedCodexAppServerClientIfCurrent, w as getCodexInferenceThreadQualification } from "./shared-client-CE_uY0A1.mjs";
8
+ import { D as consumeCodexAppServerLiveThread, H as revertCodexAppServerLiveThreadInstructions, I as protectCodexAppServerLiveThread, V as retainCodexAppServerLiveThread, a as createIsolatedCodexAppServerClient, p as retainSharedCodexAppServerClientIfCurrent, w as getCodexInferenceThreadQualification } from "./shared-client-B8v6e5D0.mjs";
9
9
  import "./responses-oauth-CCV7aVYF.mjs";
10
- import { i as isCodexAppServerIndeterminateRequestCancellationError, o as isCodexAppServerPrewriteRequestCancellationError } from "./client-BS8X7HmG.mjs";
11
- import { c as readCodexNotificationTurnId, s as readCodexNotificationThreadId } from "./turn-router-Dbw17k3K.mjs";
12
- import { c as isCodexNoActiveTurnInterruptError, f as unsubscribeCodexThreadBestEffort, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-6OcbMH46.mjs";
10
+ import { i as isCodexAppServerIndeterminateRequestCancellationError, o as isCodexAppServerPrewriteRequestCancellationError } from "./client-CPPD2q0Z.mjs";
11
+ import { c as readCodexNotificationTurnId, s as readCodexNotificationThreadId } from "./turn-router-CaEj5E0i.mjs";
12
+ import { c as isCodexNoActiveTurnInterruptError, f as unsubscribeCodexThreadBestEffort, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-BLp6z_DD.mjs";
13
13
  import { n as readCodexThreadContextSnapshot, s as readCodexNotificationItem } from "./event-projector-usage-CBY0Hkga.mjs";
14
14
  import { i as resolveCodexSessionBinding } from "./session-binding-BgsWcbdY.mjs";
15
- import { s as withCodexAppServerThreadMutationHold, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-t6Y9fLQS.mjs";
15
+ import { s as withCodexAppServerThreadMutationHold, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-DJ8PPxRc.mjs";
16
16
  import { t as persistCodexContextCompactionActivity } from "./context-compaction-activity-CMla5FPJ.mjs";
17
- import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-CFE7b4oC.mjs";
17
+ import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-D1pYkirc.mjs";
18
18
  import { n as prepareCodexNativeExecutionBlock } from "./sandbox-guard-DneAfNye.mjs";
19
- import { i as assertCodexSupervisionThreadLineage } from "./thread-policy-Cy301Or8.mjs";
20
- import { t as resumeCodexAppServerThread } from "./thread-resume-BUbsUfgF.mjs";
19
+ import { i as assertCodexSupervisionThreadLineage } from "./thread-policy-UldER50x.mjs";
20
+ import { t as resumeCodexAppServerThread } from "./thread-resume-BZWI-rUL.mjs";
21
21
  import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
22
22
  import { coerceErrorMessage } from "openclaw/plugin-sdk/error-runtime";
23
23
  import { isIncognitoSessionKey } from "openclaw/plugin-sdk/session-key-runtime";
@@ -2,11 +2,11 @@ import { t as resolveCodexAppServerHomeDir } from "./auth-start-options-BPIPeEX8
2
2
  import { o as resolveCodexComputerUseConfig } from "./config-options-DMFZkd3X.mjs";
3
3
  import { a as isManagedCodexDesktopCommand, b as resolveMacOSDesktopCodexBundledMarketplaceCandidates } from "./managed-binary-DbKvGXKl.mjs";
4
4
  import { n as describeControlFailure } from "./capabilities-DAS-JX1z.mjs";
5
- import { n as requestCodexAppServerClientJson } from "./request-ePeNJrOd.mjs";
5
+ import { n as requestCodexAppServerClientJson } from "./request-DbU7VQMs.mjs";
6
6
  import "./config-BfrAlTMT.mjs";
7
7
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
8
- import { $ as resolveBundledComputerUseMarketplacePath, X as reconcileCodexComputerUseStartArtifacts, at as assertNotSymlink, c as readCodexAppServerClientDesktopGeneration, et as resolveClientManagedBundledMarketplacePath, f as releaseLeasedSharedCodexAppServerClient, h as withCodexAppServerClientRequestScope, it as ensureCodexComputerUseSharedPluginCache, nt as isLegacyCodexComputerUsePluginDisabled, o as getLeasedSharedCodexAppServerClient, rt as resolveManagedCodexComputerUseConfig, tt as hasLegacyCodexComputerUseMcpPolicy, u as readCodexAppServerClientProcessIdentity } from "./shared-client-CE_uY0A1.mjs";
9
- import { l as retireUnsafeCodexTurnClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-6OcbMH46.mjs";
8
+ import { Q as reconcileCodexComputerUseStartArtifacts, at as resolveManagedCodexComputerUseConfig, c as readCodexAppServerClientDesktopGeneration, f as releaseLeasedSharedCodexAppServerClient, h as withCodexAppServerClientRequestScope, it as isLegacyCodexComputerUsePluginDisabled, nt as resolveClientManagedBundledMarketplacePath, o as getLeasedSharedCodexAppServerClient, ot as ensureCodexComputerUseSharedPluginCache, rt as hasLegacyCodexComputerUseMcpPolicy, st as assertNotSymlink, tt as resolveBundledComputerUseMarketplacePath, u as readCodexAppServerClientProcessIdentity } from "./shared-client-B8v6e5D0.mjs";
9
+ import { l as retireUnsafeCodexTurnClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-BLp6z_DD.mjs";
10
10
  import path from "node:path";
11
11
  import fs from "node:fs/promises";
12
12
  import { toErrorObject } from "openclaw/plugin-sdk/error-runtime";
@@ -3,24 +3,24 @@ import { g as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced } fro
3
3
  import { d as readCodexRequirementsToml } from "./config-security-clxAZYWX.mjs";
4
4
  import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
5
5
  import { d as readCodexEffectiveConfig, n as codexSandboxPolicyForTurn } from "./config-options-DMFZkd3X.mjs";
6
- import { T as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-CVcYw8HD.mjs";
6
+ import { T as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-aolg0chE.mjs";
7
7
  import { o as resolveCodexDefaultWorkspaceDir } from "./conversation-binding-data-khgW0n-o.mjs";
8
- import { o as isCodexAppServerOverloadError } from "./rpc-error-DemqqaxE.mjs";
8
+ import { o as isCodexAppServerOverloadError, r as CodexAppServerRpcError, s as isCodexThreadReadMissingError } from "./rpc-error-DemqqaxE.mjs";
9
9
  import { n as projectBoundedCodexVisibleSessionHistory } from "./transcript-history-projection-i-FVpyha.mjs";
10
10
  import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-BfrAlTMT.mjs";
11
11
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
12
12
  import { n as normalizeCodexAppServerBindingModelProvider, o as resolveModelBackedReviewerPolicyProvider } from "./auth-profile-auwzSwwy.mjs";
13
- import { A as hasCodexAppServerLiveThread, D as consumeCodexAppServerLiveThread, M as isCodexAppServerClientRuntimeLive, N as isCodexAppServerLiveThreadClaimed, d as releaseCodexAppServerClientLease, h as withCodexAppServerClientRequestScope, o as getLeasedSharedCodexAppServerClient, z as releaseCodexAppServerLiveThread } from "./shared-client-CE_uY0A1.mjs";
14
- import { f as assertCodexThreadAcceptsDirectInput, h as assertCodexThreadStartResponse, i as isCodexAppServerIndeterminateRequestCancellationError, l as CodexThreadDirectInputError } from "./client-BS8X7HmG.mjs";
15
- import { a as isCodexNotificationForTurn, n as getCodexAppServerTurnRouter } from "./turn-router-Dbw17k3K.mjs";
16
- import { f as unsubscribeCodexThreadBestEffort, l as retireUnsafeCodexTurnClientBestEffort, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError, s as interruptCodexTurnAndWaitBestEffort } from "./attempt-client-cleanup-6OcbMH46.mjs";
13
+ import { A as hasCodexAppServerLiveThread, B as releaseCodexAppServerLiveThread, D as consumeCodexAppServerLiveThread, M as isCodexAppServerClientRuntimeLive, N as isCodexAppServerLiveThreadClaimed, d as releaseCodexAppServerClientLease, h as withCodexAppServerClientRequestScope, o as getLeasedSharedCodexAppServerClient } from "./shared-client-B8v6e5D0.mjs";
14
+ import { f as assertCodexThreadAcceptsDirectInput, h as assertCodexThreadStartResponse, i as isCodexAppServerIndeterminateRequestCancellationError, l as CodexThreadDirectInputError } from "./client-CPPD2q0Z.mjs";
15
+ import { a as isCodexNotificationForTurn, n as getCodexAppServerTurnRouter } from "./turn-router-CaEj5E0i.mjs";
16
+ import { f as unsubscribeCodexThreadBestEffort, l as retireUnsafeCodexTurnClientBestEffort, o as closeCodexStartupClientBestEffort, s as interruptCodexTurnAndWaitBestEffort } from "./attempt-client-cleanup-BLp6z_DD.mjs";
17
17
  import { d as mergeCodexThreadConfigs, s as buildDisabledAppsConfigPatch, t as buildCodexProjectDocThreadConfig } from "./project-doc-thread-config-B0UI3f1D.mjs";
18
18
  import "./session-binding-BgsWcbdY.mjs";
19
19
  import { r as resolveCodexAppServerRequestModelSelection, t as CODEX_NATIVE_PERSONALITY_NONE } from "./thread-model-selection-DxposL4X.mjs";
20
- import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-t6Y9fLQS.mjs";
20
+ import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-DJ8PPxRc.mjs";
21
21
  import { i as resolveCodexNativeExecutionPolicy } from "./native-execution-policy-D09tLP-u.mjs";
22
22
  import { i as resolveCodexNativeExecutionBlock, t as assertNativeConversationApprovalPolicySupported } from "./sandbox-guard-DneAfNye.mjs";
23
- import { t as resumeCodexAppServerThread } from "./thread-resume-BUbsUfgF.mjs";
23
+ import { t as resumeCodexAppServerThread } from "./thread-resume-BZWI-rUL.mjs";
24
24
  import { i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-CD2MAWU8.mjs";
25
25
  import { t as resolveCodexAppServerForModelProvider } from "./app-server-policy-Cog6mm2i.mjs";
26
26
  import { f as trackCodexConversationActiveTurn, o as resolveThreadRequestModelProvider, t as buildCodexConversationAgentLookup } from "./conversation-control-B2EpVZEb.mjs";
@@ -371,7 +371,7 @@ async function bindThread(params, threadId) {
371
371
  release: resolved.release
372
372
  };
373
373
  }
374
- async function prepareCodexConversationBinding(params, options = {}) {
374
+ async function prepareCodexConversationBinding(params) {
375
375
  const identity = {
376
376
  kind: "conversation",
377
377
  bindingId: params.data.bindingId
@@ -381,7 +381,7 @@ async function prepareCodexConversationBinding(params, options = {}) {
381
381
  const current = await params.bindingStore.readAsync(identity);
382
382
  if (current?.threadId !== snapshot?.threadId || current?.clientId !== snapshot?.clientId) throw new Error("Codex conversation binding changed before preparation.");
383
383
  const requested = params.data.start && current?.conversationStartId !== params.data.start.id ? params.data.start : void 0;
384
- if (current && !requested && !options.forceNew) return;
384
+ if (current && !requested) return;
385
385
  const sourceIdentity = params.data.source ? sessionBindingIdentity({
386
386
  agentId: params.data.source.agentId,
387
387
  sessionId: params.data.source.sessionId,
@@ -413,7 +413,7 @@ async function prepareCodexConversationBinding(params, options = {}) {
413
413
  agentId: params.data.source?.agentId ?? params.data.agentId
414
414
  };
415
415
  const threadId = requested?.threadId;
416
- const sourceAuthority = await bindThread(bindingParams, options.forceNew ? void 0 : threadId);
416
+ const sourceAuthority = await bindThread(bindingParams, threadId);
417
417
  using _ = { [Symbol.dispose]: sourceAuthority.release };
418
418
  await sourceAuthority.assertCurrent();
419
419
  const sourceGuard = sourceAuthority.source;
@@ -613,6 +613,12 @@ function readLocalMediaPath(value) {
613
613
  //#endregion
614
614
  //#region extensions/codex/src/conversation-binding.ts
615
615
  const DEFAULT_BOUND_TURN_TIMEOUT_MS = 12e5;
616
+ var CodexConversationUnloadedThreadError = class extends Error {
617
+ constructor(threadId, cause) {
618
+ super(cause.message, { cause });
619
+ this.threadId = threadId;
620
+ }
621
+ };
616
622
  async function runBoundTurn(params) {
617
623
  const agentLookup = buildCodexConversationAgentLookup({
618
624
  agentDir: params.data.agentDir,
@@ -624,6 +630,7 @@ async function runBoundTurn(params) {
624
630
  };
625
631
  const binding = await params.bindingStore.readAsync(identity);
626
632
  if (!binding?.threadId) throw new Error("bound Codex conversation has no thread binding");
633
+ if (params.resumeThreadId && binding.threadId !== params.resumeThreadId) throw new Error("Codex conversation binding changed before recovery; review it before resending.");
627
634
  return await withExclusiveCodexAppServerThread({
628
635
  bindingStore: params.bindingStore,
629
636
  identity,
@@ -656,6 +663,7 @@ async function runBoundTurn(params) {
656
663
  const permissionProfile = runtime.networkProxy?.profileName;
657
664
  const networkProxyConfigFingerprint = runtime.networkProxy?.configFingerprint;
658
665
  const networkProxyBindingChanged = binding.networkProxyProfileName !== permissionProfile || binding.networkProxyConfigFingerprint !== networkProxyConfigFingerprint;
666
+ if (params.resumeThreadId && networkProxyBindingChanged) throw new Error("Codex conversation policy changed before recovery; rebind the conversation and resend your message.");
659
667
  const serviceTier = binding.serviceTier ?? runtime.serviceTier;
660
668
  let useStickyNetworkProfile = permissionProfile !== void 0 && !networkProxyBindingChanged;
661
669
  assertNativeConversationApprovalPolicySupported(runtime);
@@ -716,7 +724,7 @@ async function runBoundTurn(params) {
716
724
  ownsNativeSubscription = true;
717
725
  }
718
726
  }
719
- if (networkProxyBindingChanged || binding.clientId !== client.getInstanceId() || isCodexAppServerClientRuntimeLive(client) && !incognito && !liveThreadOwnership) {
727
+ if (params.resumeThreadId || networkProxyBindingChanged || binding.clientId !== client.getInstanceId() || isCodexAppServerClientRuntimeLive(client) && !incognito && !liveThreadOwnership) {
720
728
  if (!networkProxyBindingChanged && binding.clientId === client.getInstanceId()) await assertResumeInputAllowed();
721
729
  const result = await withCodexAppServerClientRequestScope({
722
730
  lease: clientLease,
@@ -838,6 +846,9 @@ async function runBoundTurn(params) {
838
846
  }, {
839
847
  timeoutMs: runtime.requestTimeoutMs,
840
848
  withCurrent
849
+ }).catch((error) => {
850
+ if (!incognito && error instanceof CodexAppServerRpcError && error.method === "turn/start" && error.code === -32600 && error.message === `thread not found: ${threadId}`) throw new CodexConversationUnloadedThreadError(threadId, error);
851
+ throw error;
841
852
  })).turn.id;
842
853
  activeTurnCleanup = trackCodexConversationActiveTurn({
843
854
  identity,
@@ -852,6 +863,7 @@ async function runBoundTurn(params) {
852
863
  turnSucceeded = true;
853
864
  return { text: replyText || "Codex completed without a text reply." };
854
865
  } catch (error) {
866
+ if (params.resumeThreadId && isCodexThreadReadMissingError(error, threadId)) throw new Error("The bound Codex thread is unavailable. Your message was not submitted; rebind the conversation and resend it.", { cause: error });
855
867
  if (isCodexAppServerOverloadError(error) && error.method === "thread/resume") throw error;
856
868
  if (error instanceof CodexThreadDirectInputError) {
857
869
  if (incognito && ownsNativeSubscription) {
@@ -920,15 +932,12 @@ async function runBoundTurnWithMissingThreadRecovery(params) {
920
932
  try {
921
933
  return await runBoundTurn(params);
922
934
  } catch (error) {
923
- if (!isCodexThreadNotFoundError(error)) throw error;
924
- await prepareCodexConversationBinding(params, { forceNew: true });
925
- return await runBoundTurn(params);
935
+ if (!(error instanceof CodexConversationUnloadedThreadError)) throw error;
936
+ return await runBoundTurn({
937
+ ...params,
938
+ resumeThreadId: error.threadId
939
+ });
926
940
  }
927
941
  }
928
- function isCodexThreadNotFoundError(error) {
929
- if (isCodexAppServerOverloadError(error) || error instanceof CodexAppServerUnsafeSubscriptionError) return false;
930
- const message = formatErrorMessage(error);
931
- return /\bthread not found:/iu.test(message) || /\bbound Codex conversation has no thread binding\b/u.test(message);
932
- }
933
942
  //#endregion
934
943
  export { runBoundTurnWithMissingThreadRecovery };
@@ -4,7 +4,7 @@ import "./config-BfrAlTMT.mjs";
4
4
  import { a as isCodexResponsesOAuthRun } from "./responses-oauth-CCV7aVYF.mjs";
5
5
  import { F as isForcedPrivateQaCodexRuntime, L as isSystemAgentOnlyCodexDynamicToolAllowlist, P as filterCodexDynamicTools, R as normalizeCodexDynamicToolName, h as resolveCodexWebSearchPlan } from "./thread-requests-BjawdIVV.mjs";
6
6
  import { a as resolveCodexNodeExecToolOverrides, r as prepareCodexNativeExecutionPolicyForRun } from "./native-execution-policy-D09tLP-u.mjs";
7
- import { _ as createGatewayProcessProjection, b as isCodexDynamicToolExcluded, g as createGatewayExecProjection, v as createNodeExecAliasDynamicTool, x as placeDisabledNativeShellToolsInDirectNamespace, y as createSandboxShellProjection } from "./native-hook-relay-C7aaLJaP.mjs";
7
+ import { _ as createGatewayProcessProjection, b as isCodexDynamicToolExcluded, g as createGatewayExecProjection, v as createNodeExecAliasDynamicTool, x as placeDisabledNativeShellToolsInDirectNamespace, y as createSandboxShellProjection } from "./native-hook-relay-DbNYjwuC.mjs";
8
8
  import path from "node:path";
9
9
  import { createStageTimingTracker, formatStageTimings } from "openclaw/plugin-sdk/time-runtime";
10
10
  import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
@@ -6,16 +6,16 @@ import { s as codexAppIdentityKey } from "./plugin-app-cache-key-DRb-niJc.mjs";
6
6
  import "./config-BfrAlTMT.mjs";
7
7
  import { r as invalidInlineImageText } from "./session-history-read-BI_2jRED.mjs";
8
8
  import { o as neutralizeCodexExplicitMentionSigils } from "./context-engine-projection-PIeLSnR-.mjs";
9
- import { I as protectCodexAppServerLiveThread, p as retainSharedCodexAppServerClientIfCurrent } from "./shared-client-CE_uY0A1.mjs";
10
- import { A as failedToolResult, C as createCodexElicitationResponse, O as resolveCodexToolAbortTerminalReason, b as readCodexTurnCompletedNotification, c as CodexServerRequestResolvedError, k as createFailedDynamicToolResponse } from "./client-BS8X7HmG.mjs";
9
+ import { I as protectCodexAppServerLiveThread, p as retainSharedCodexAppServerClientIfCurrent } from "./shared-client-B8v6e5D0.mjs";
10
+ import { A as failedToolResult, C as createCodexElicitationResponse, O as resolveCodexToolAbortTerminalReason, b as readCodexTurnCompletedNotification, c as CodexServerRequestResolvedError, k as createFailedDynamicToolResponse } from "./client-CPPD2q0Z.mjs";
11
11
  import { t as codexWebSocketDataToBuffer } from "./websocket-data-XlRvt8Ys.mjs";
12
- import { S as shouldClearTerminalPresentationForNativeItem, _ as itemName, a as isCodexNotificationForTurn, c as readCodexNotificationTurnId, d as auditNativeToolUnfinishedStatus, l as auditNativeToolName, s as readCodexNotificationThreadId, u as auditNativeToolTerminalStatus, v as itemStatus } from "./turn-router-Dbw17k3K.mjs";
12
+ import { S as shouldClearTerminalPresentationForNativeItem, _ as itemName, a as isCodexNotificationForTurn, c as readCodexNotificationTurnId, d as auditNativeToolUnfinishedStatus, l as auditNativeToolName, s as readCodexNotificationThreadId, u as auditNativeToolTerminalStatus, v as itemStatus } from "./turn-router-CaEj5E0i.mjs";
13
13
  import { n as resolveCodexAppServerReasoningEffort, t as readCodexSupportedReasoningEfforts } from "./reasoning-effort-CS9kKWB9.mjs";
14
14
  import { V as joinPresentSections } from "./thread-requests-BjawdIVV.mjs";
15
15
  import { r as resolveCodexAppServerRequestModelSelection, t as CODEX_NATIVE_PERSONALITY_NONE } from "./thread-model-selection-DxposL4X.mjs";
16
- import { a as requestPluginApprovalOutcome, c as truncateCodexApprovalDisplayText, i as requestPluginApproval, l as waitForPluginApprovalDecision, n as codexApprovalTimeoutText, o as sanitizeCodexApprovalVisibleText, r as mapExecDecisionToOutcome, s as stripDanglingCodexApprovalTerminalSequence, t as approvalRequestExplicitlyUnavailable } from "./plugin-approval-roundtrip-DIZHLbAM.mjs";
17
- import { d as isCodexPassThroughMediaSource, f as mapCodexAppServerLocalWorkspacePath, p as mapCodexAppServerRemoteWorkspacePath } from "./dynamic-tool-build-BjFAIG-f.mjs";
18
- import { c as emitCodexNativePreToolUseFailureDiagnostic } from "./native-hook-relay-C7aaLJaP.mjs";
16
+ import { a as requestPluginApprovalOutcome, c as truncateCodexApprovalDisplayText, i as requestPluginApproval, l as waitForPluginApprovalDecision, n as codexApprovalTimeoutText, o as sanitizeCodexApprovalVisibleText, r as mapExecDecisionToOutcome, s as stripDanglingCodexApprovalTerminalSequence, t as approvalRequestExplicitlyUnavailable } from "./plugin-approval-roundtrip-BkiVPLuc.mjs";
17
+ import { d as isCodexPassThroughMediaSource, f as mapCodexAppServerLocalWorkspacePath, p as mapCodexAppServerRemoteWorkspacePath } from "./dynamic-tool-build-DkJpWzXt.mjs";
18
+ import { c as emitCodexNativePreToolUseFailureDiagnostic } from "./native-hook-relay-DbNYjwuC.mjs";
19
19
  import { createRequire } from "node:module";
20
20
  import { asNonArrayRecord, asOptionalRecord, filterStringEntries, isRecord, normalizeOptionalString, normalizeTrimmedStringList, readNonBlankString, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
21
21
  import { createHash, randomUUID } from "node:crypto";
@@ -1,6 +1,6 @@
1
1
  import { g as sessionBindingIdentity } from "./session-binding-record-C_THntMe.mjs";
2
- import { T as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-CVcYw8HD.mjs";
3
- import { I as protectCodexAppServerLiveThread } from "./shared-client-CE_uY0A1.mjs";
2
+ import { T as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-aolg0chE.mjs";
3
+ import { I as protectCodexAppServerLiveThread } from "./shared-client-B8v6e5D0.mjs";
4
4
  import "./session-binding-BgsWcbdY.mjs";
5
5
  import { n as projectCodexMcpToolMetadata, t as projectCodexMcpServerMetadata } from "./mcp-tool-metadata-DW41snf3.mjs";
6
6
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -108,7 +108,7 @@ async function acquireCodexMcpAppRuntime(params, options) {
108
108
  if (!retained && params.prepareSession) {
109
109
  const preparation = await params.prepareSession();
110
110
  params.assertCurrent();
111
- const { prepareCodexMcpAppSession } = await import("./mcp-app-session-preparation-fnsnCovu.mjs");
111
+ const { prepareCodexMcpAppSession } = await import("./mcp-app-session-preparation-DtvMR_yX.mjs");
112
112
  await prepareCodexMcpAppSession({
113
113
  preparation,
114
114
  bindingStore: options.bindingStore,
@@ -130,7 +130,7 @@ async function acquireCodexMcpAppRuntime(params, options) {
130
130
  };
131
131
  params.assertCurrent();
132
132
  assertBinding();
133
- const { createNativeMcpRuntime } = await import("./native-mcp-app-CsWj-v_x.mjs").then((n) => n.n);
133
+ const { createNativeMcpRuntime } = await import("./native-mcp-app-gkEJsgj2.mjs").then((n) => n.n);
134
134
  params.assertCurrent();
135
135
  const runtime = createNativeMcpRuntime({
136
136
  client: retained.client,
@@ -1,6 +1,6 @@
1
1
  import { r as isJsonObject } from "./protocol-CaPAVwe9.mjs";
2
- import { b as readCodexTurnCompletedNotification } from "./client-BS8X7HmG.mjs";
3
- import { n as getCodexAppServerTurnRouter } from "./turn-router-Dbw17k3K.mjs";
2
+ import { b as readCodexTurnCompletedNotification } from "./client-CPPD2q0Z.mjs";
3
+ import { n as getCodexAppServerTurnRouter } from "./turn-router-CaEj5E0i.mjs";
4
4
  import { o as isTerminalTurnStatus, s as readCodexNotificationItem, t as CodexUsageProjection } from "./event-projector-usage-CBY0Hkga.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 { r as isJsonObject } from "./protocol-CaPAVwe9.mjs";
2
- import { n as defineCodexBuildState } from "./build-state-VcujMRqP.mjs";
2
+ import { n as defineCodexBuildState } from "./build-state-DswWyGqI.mjs";
3
3
  import { n as readCodexInferenceMetadata } from "./inference-metadata-CYFWLHVk.mjs";
4
4
  import { randomUUID } from "node:crypto";
5
5
  //#region extensions/codex/src/app-server/inference-context.ts
@@ -1,6 +1,6 @@
1
1
  import { t as codexWebSocketDataToBuffer } from "./websocket-data-XlRvt8Ys.mjs";
2
2
  import { CODEX_INFERENCE_TRANSPORT_FAILURE, authorizationFailure, createCodexInferenceDispatch, isTerminalResponse, n as createUploadAdmission, readProxyBody, t as MAX_BODY_BYTES } from "./inference-dispatch-C2zVSnrr.mjs";
3
- import { t as createCodexInferenceContext } from "./inference-context-mv_dBpAL.mjs";
3
+ import { t as createCodexInferenceContext } from "./inference-context-BPwyk-Op.mjs";
4
4
  import { createDeferred, createPermitPool } from "openclaw/plugin-sdk/concurrency-runtime";
5
5
  import { Writable } from "node:stream";
6
6
  import { WebSocket, WebSocketServer, rejectWebSocketUpgrade } from "openclaw/plugin-sdk/websocket-runtime";
@@ -1,9 +1,9 @@
1
1
  import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
2
2
  import { i as resolveCodexAppServerHomeScope } from "./config-options-DMFZkd3X.mjs";
3
3
  import "./config-BfrAlTMT.mjs";
4
- import { Q as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-CE_uY0A1.mjs";
5
- import { d as assertCodexPassiveTurnItems } from "./client-BS8X7HmG.mjs";
6
- import { runBoundedCodexAppServerTurn } from "./bounded-turn-mN_ekXYW.mjs";
4
+ import { et as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-B8v6e5D0.mjs";
5
+ import { d as assertCodexPassiveTurnItems } from "./client-CPPD2q0Z.mjs";
6
+ import { runBoundedCodexAppServerTurn } from "./bounded-turn-DJr0EXh7.mjs";
7
7
  import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-D8CDrAVX.mjs";
8
8
  import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-ChOAY7rW.mjs";
9
9
  //#region extensions/codex/src/app-server/isolated-completion.ts
@@ -7,11 +7,11 @@ import { n as buildCodexAppServerRuntimeFingerprint, r as buildCodexPluginAppCac
7
7
  import { i as resolveCodexBindingAppServerConnection } from "./binding-connection-GTgUj9pi.mjs";
8
8
  import { r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-BfrAlTMT.mjs";
9
9
  import { r as resolveCodexAppServerAuthProfileId } from "./auth-profile-auwzSwwy.mjs";
10
- import { O as ensureCodexAppServerClientRuntime, f as releaseLeasedSharedCodexAppServerClient, o as getLeasedSharedCodexAppServerClient } from "./shared-client-CE_uY0A1.mjs";
10
+ import { O as ensureCodexAppServerClientRuntime, f as releaseLeasedSharedCodexAppServerClient, o as getLeasedSharedCodexAppServerClient } from "./shared-client-B8v6e5D0.mjs";
11
11
  import { d as mergeCodexThreadConfigs } from "./project-doc-thread-config-B0UI3f1D.mjs";
12
12
  import { i as resolveCodexSessionBinding } from "./session-binding-BgsWcbdY.mjs";
13
- import { a as rollbackCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-t6Y9fLQS.mjs";
14
- import { a as prepareCodexPluginThreadConfigStartupProvider, o as resolveCodexPluginThreadConfigStartupPolicy, t as startOrResumeThread } from "./thread-lifecycle-run-mLueY6pH.mjs";
13
+ import { a as rollbackCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-DJ8PPxRc.mjs";
14
+ import { a as prepareCodexPluginThreadConfigStartupProvider, o as resolveCodexPluginThreadConfigStartupPolicy, t as startOrResumeThread } from "./thread-lifecycle-run-DOC2IWpW.mjs";
15
15
  import { n as applyCodexSessionPermissionPolicy } from "./session-permission-policy-CD2MAWU8.mjs";
16
16
  import { z } from "zod";
17
17
  import { loadCodexBundleMcpThreadConfig } from "openclaw/plugin-sdk/agent-harness-runtime";
@@ -1,14 +1,14 @@
1
1
  import { t as buildCodexRuntimeModelParams } from "./model-runtime-BdqzOMkU.mjs";
2
2
  import { d as readCodexPluginConfig } from "./config-parsing-DsWSCPHO.mjs";
3
3
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
4
- import { D as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-CVcYw8HD.mjs";
5
- import { a as withCodexAppServerJsonClient } from "./request-ePeNJrOd.mjs";
4
+ import { D as retireSharedCodexAppServerClientIfCurrent } from "./auth-cache-key-aolg0chE.mjs";
5
+ import { a as withCodexAppServerJsonClient } from "./request-DbU7VQMs.mjs";
6
6
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BZRizyuG.mjs";
7
7
  import { a as resolveCodexAppServerAuthProfileStore, r as resolveCodexAppServerAuthProfileId } from "./auth-profile-auwzSwwy.mjs";
8
- import { n as captureSharedCodexAppServerCatalogLifetime } from "./shared-client-CE_uY0A1.mjs";
8
+ import { n as captureSharedCodexAppServerCatalogLifetime } from "./shared-client-B8v6e5D0.mjs";
9
9
  import { i as isCodexResponsesOAuthCredential } from "./responses-oauth-CCV7aVYF.mjs";
10
- import { i as isCodexAppServerIndeterminateRequestCancellationError } from "./client-BS8X7HmG.mjs";
11
- import { n as listAllCodexAppServerModels } from "./models-BWLEUo2E.mjs";
10
+ import { i as isCodexAppServerIndeterminateRequestCancellationError } from "./client-CPPD2q0Z.mjs";
11
+ import { n as listAllCodexAppServerModels } from "./models-Bc4yyUrk.mjs";
12
12
  import { probeCodexNativeAuth } from "./native-auth-DpZIaY8N.mjs";
13
13
  //#region extensions/codex/src/app-server/model-catalog.ts
14
14
  const INPUT_TYPES = /* @__PURE__ */ new Set([
@@ -1,4 +1,4 @@
1
- import { u as assertCodexModelListResponse } from "./client-BS8X7HmG.mjs";
1
+ import { u as assertCodexModelListResponse } from "./client-CPPD2q0Z.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;
@@ -29,8 +29,8 @@ async function listAllCodexAppServerModels(options = {}) {
29
29
  async function withCodexAppServerModelRequest(options, run) {
30
30
  if (options.request) return await run(options.request);
31
31
  const timeoutMs = options.timeoutMs ?? 1e4;
32
- const { getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient } = await import("./shared-client-CE_uY0A1.mjs").then((n) => n.m);
33
- const { requestCodexAppServerClientJson } = await import("./request-ePeNJrOd.mjs").then((n) => n.i);
32
+ const { getLeasedSharedCodexAppServerClient, releaseLeasedSharedCodexAppServerClient } = await import("./shared-client-B8v6e5D0.mjs").then((n) => n.m);
33
+ const { requestCodexAppServerClientJson } = await import("./request-DbU7VQMs.mjs").then((n) => n.i);
34
34
  const client = await getLeasedSharedCodexAppServerClient({
35
35
  startOptions: options.startOptions,
36
36
  timeoutMs,
@@ -1,9 +1,9 @@
1
1
  import { r as isJsonObject } from "./protocol-CaPAVwe9.mjs";
2
2
  import { l as fingerprintCodexPolicy } from "./config-security-clxAZYWX.mjs";
3
- import { b as nativeHookRelayUnregisterQueue } from "./shared-client-CE_uY0A1.mjs";
4
- import { O as resolveCodexToolAbortTerminalReason } from "./client-BS8X7HmG.mjs";
3
+ import { b as nativeHookRelayUnregisterQueue } from "./shared-client-B8v6e5D0.mjs";
4
+ import { O as resolveCodexToolAbortTerminalReason } from "./client-CPPD2q0Z.mjs";
5
5
  import { R as normalizeCodexDynamicToolName } from "./thread-requests-BjawdIVV.mjs";
6
- import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-CFE7b4oC.mjs";
6
+ import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-D1pYkirc.mjs";
7
7
  import { createHash } from "node:crypto";
8
8
  import { addTimerTimeoutGraceMs, finiteSecondsToTimerSafeMilliseconds } from "openclaw/plugin-sdk/number-runtime";
9
9
  import { escapeRegExp } from "openclaw/plugin-sdk/text-utility-runtime";