@openclaw/codex 2026.10.5-beta.4 → 2026.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/.setup/{account-usage-runtime-CoVpNIlD.mjs → account-usage-runtime-E3SrjJVn.mjs} +3 -3
  2. package/dist/.setup/{app-server-policy-D_zv8J7V.mjs → app-server-policy-V8zuN8q_.mjs} +1 -1
  3. package/dist/.setup/{apply-BXDMd05l.mjs → apply-C3s-1Zxe.mjs} +14 -14
  4. package/dist/.setup/{attempt-client-cleanup-zNuNTKVr.mjs → attempt-client-cleanup-BVww-ct8.mjs} +5 -5
  5. package/dist/.setup/attempt-terminal-sZutF0WY.mjs +1 -0
  6. package/dist/.setup/{attempt-workspace-context-CcwP3DA3.mjs → attempt-workspace-context-BkA0W8Jy.mjs} +1 -1
  7. package/dist/.setup/{auth-binding-BaxlhaNx.mjs → auth-binding-BFTkrP_b.mjs} +1 -1
  8. package/dist/.setup/{auth-cache-key-f8ODJ_OX.mjs → auth-cache-key-CXK7tmkb.mjs} +6 -5
  9. package/dist/.setup/{auth-profile-health-oHizqgye.mjs → auth-profile-health-B05o5BAm.mjs} +12 -5
  10. package/dist/.setup/{binding-connection-B7HAAZSI.mjs → binding-connection-C0t9TBX_.mjs} +2 -2
  11. package/dist/.setup/{binding-connection.runtime-DAXn7iFl.mjs → binding-connection.runtime-Wdm5G_bw.mjs} +2 -2
  12. package/dist/.setup/{bounded-turn-isolation-BfDAo-qZ.mjs → bounded-turn-isolation-CIQJykuM.mjs} +4 -4
  13. package/dist/.setup/{bounded-turn-DfIJtRlv.mjs → bounded-turn-vdpL2efh.mjs} +13 -12
  14. package/dist/.setup/{build-state-Ds14X10-.mjs → build-state-DPMC9C_U.mjs} +1 -1
  15. package/dist/.setup/{client-D93nbdB8.mjs → client-Div-zqnz.mjs} +22 -18
  16. package/dist/.setup/{client-catalog-response-CuVLp4I0.mjs → client-catalog-response-Dtob_lVt.mjs} +1 -1
  17. package/dist/.setup/{command-dispatch-DxdH5a9-.mjs → command-dispatch-ByO36LmS.mjs} +1 -1
  18. package/dist/.setup/{command-handlers-fiYvYYq0.mjs → command-handlers-CJqo6LZS.mjs} +24 -24
  19. package/dist/.setup/{command-rpc-HIvsy3wS.mjs → command-rpc-Co0UzT-T.mjs} +11 -11
  20. package/dist/.setup/{compact-ClZ7Ar7L.mjs → compact-CzNBg4cQ.mjs} +13 -13
  21. package/dist/.setup/{computer-use-DL2v3Kxq.mjs → computer-use-BcDrQlxi.mjs} +8 -8
  22. package/dist/.setup/{config-C1YVVLEA.mjs → config-LQemoqTL.mjs} +5 -6
  23. package/dist/.setup/{config-options-DDzeNQ8m.mjs → config-options-CZmH25Xq.mjs} +2 -3
  24. package/dist/.setup/{config-parsing-DsWSCPHO.mjs → config-parsing-CVK2Q463.mjs} +44 -6
  25. package/dist/.setup/{config-runtime-DWzK-k0n.mjs → config-runtime-DGB1-VbB.mjs} +2 -2
  26. package/dist/.setup/{config-security-clxAZYWX.mjs → config-security-DpkGNy5T.mjs} +2 -3
  27. package/dist/.setup/{conversation-binding-BieJZRRV.mjs → conversation-binding-Dcv7_rs-.mjs} +42 -33
  28. package/dist/.setup/{conversation-binding-data-UgLuTSQT.mjs → conversation-binding-data-GRGSgAro.mjs} +1 -1
  29. package/dist/.setup/{conversation-control-GXM3unE4.mjs → conversation-control-BtPxevoK.mjs} +4 -4
  30. package/dist/.setup/{cyber-failover-D4dgNfFf.mjs → cyber-failover-B-q6oT01.mjs} +2 -2
  31. package/dist/.setup/{cyber-failover-notice-ljgGGL0s.mjs → cyber-failover-notice-poL3Advd.mjs} +1 -1
  32. package/dist/.setup/{doctor-start-options-JjTAl-q_.mjs → doctor-start-options-C28ek2hD.mjs} +5 -5
  33. package/dist/.setup/{dynamic-tool-build-DcaPmBlE.mjs → dynamic-tool-build-DjbDZzOJ.mjs} +5 -5
  34. package/dist/.setup/{dynamic-tools-CnQFnNKH.mjs → dynamic-tools-75qoSOch.mjs} +10 -10
  35. package/dist/.setup/{effective-mcp-catalog-B5HKFZNK.mjs → effective-mcp-catalog-Dz0J8iAj.mjs} +7 -7
  36. package/dist/.setup/{ephemeral-turn-De3qb8EQ.mjs → ephemeral-turn-K_d99r9P.mjs} +2 -2
  37. package/dist/.setup/{inference-proxy-BDWV0djM.mjs → inference-proxy-DSnaS-uS.mjs} +5 -4
  38. package/dist/.setup/{isolated-completion-BPJdvk5F.mjs → isolated-completion-dNt4kRLw.mjs} +7 -7
  39. package/dist/.setup/{managed-binary-BtIjV7yN.mjs → managed-binary-DwC9wxch.mjs} +1 -1
  40. package/dist/.setup/{mcp-app-session-preparation-Dz2GOwyE.mjs → mcp-app-session-preparation-C7LyxbAm.mjs} +12 -17
  41. package/dist/.setup/{mcp-tool-metadata-DW41snf3.mjs → mcp-tool-metadata-_sawBkIh.mjs} +1 -1
  42. package/dist/.setup/{model-catalog-ZNwltCKl.mjs → model-catalog-BRJ7RMXY.mjs} +8 -8
  43. package/dist/.setup/{models-BHpbAuz8.mjs → models-CusrgpiY.mjs} +3 -3
  44. package/dist/.setup/{native-auth-esN5MdIv.mjs → native-auth-CveRfTpz.mjs} +4 -4
  45. package/dist/.setup/{native-hook-relay-wq7jrNLk.mjs → native-hook-relay-BvwSj5bt.mjs} +5 -5
  46. package/dist/.setup/{native-mcp-app-DX3nyTtc.mjs → native-mcp-app-DDEtVQED.mjs} +6 -6
  47. package/dist/.setup/{native-skill-isolation-DSBeF-Yy.mjs → native-skill-isolation-Cx2AkUco.mjs} +3 -3
  48. package/dist/.setup/{native-subagent-monitor-DOLEIf9r.mjs → native-subagent-monitor-CBYFkNsB.mjs} +67 -20
  49. package/dist/.setup/{native-task-assignments-DimsQ9Qa.mjs → native-task-assignments-DYL9uxNe.mjs} +3 -3
  50. package/dist/.setup/{node-cli-sessions-CzKg2nGq.mjs → node-cli-sessions-BxVYZNuY.mjs} +2 -2
  51. package/dist/.setup/{node-exec-server.runtime-BWkULhBM.mjs → node-exec-server.runtime-8RehgPdQ.mjs} +2 -2
  52. package/dist/.setup/{plan-41-YOBMq.mjs → plan-BKFbfVsV.mjs} +5 -5
  53. package/dist/.setup/{plugin-activation-D7WkJMvU.mjs → plugin-activation-BgfNFH2L.mjs} +2 -2
  54. package/dist/.setup/{plugin-approval-roundtrip-CD88q3yx.mjs → plugin-approval-roundtrip-CXXXhuKi.mjs} +1 -1
  55. package/dist/.setup/{plugin-inventory-CYgdo14P.mjs → plugin-inventory-OhiCoyPH.mjs} +1 -1
  56. package/dist/.setup/{plugin-marketplace-discovery-BblHM3DU.mjs → plugin-marketplace-discovery-BNyI1zd_.mjs} +1 -1
  57. package/dist/.setup/{project-doc-thread-config-BVcvnps8.mjs → project-doc-thread-config-D_sWbxFR.mjs} +6 -6
  58. package/dist/.setup/{provider-LWKll6dV.mjs → provider-BVV8SWlx.mjs} +4 -4
  59. package/dist/.setup/{provider-capabilities-Dn2WwH4P.mjs → provider-capabilities-B-pTlDsf.mjs} +1 -1
  60. package/dist/.setup/{request-Bo0kKABI.mjs → request-m-H-7FMu.mjs} +6 -6
  61. package/dist/.setup/{run-attempt-ClU8MxhZ.mjs → run-attempt-Ch1emiZE.mjs} +113 -74
  62. package/dist/.setup/{run-attempt-lifecycle-KN4oh-7O.mjs → run-attempt-lifecycle-DN-ATDp9.mjs} +1 -1
  63. package/dist/.setup/{runtime-artifact-C13pR7tD.mjs → runtime-artifact-CCPLKFGR.mjs} +3 -3
  64. package/dist/.setup/{runtime-artifact-connection-jS5DeCok.mjs → runtime-artifact-connection-dFoSOKy7.mjs} +3 -3
  65. package/dist/.setup/{sandbox-guard-DIImwCy1.mjs → sandbox-guard-Cf9XMRrg.mjs} +2 -2
  66. package/dist/.setup/{service-tier-normalization-BPgw2Wdt.mjs → service-tier-normalization-C2OVdF6E.mjs} +4 -1
  67. package/dist/.setup/{session-binding-JEHNMPsr.mjs → session-binding-BDnNz-Co.mjs} +3 -3
  68. package/dist/.setup/{session-binding-record-DU_0biMD.mjs → session-binding-record-C2kDBZhx.mjs} +2 -2
  69. package/dist/.setup/{session-binding-record-codec-BpH8u_G9.mjs → session-binding-record-codec-CWQXr9os.mjs} +1 -2
  70. package/dist/.setup/{session-binding-sidecars-DD-enC8w.mjs → session-binding-sidecars-DijNZb31.mjs} +1 -1
  71. package/dist/.setup/{session-catalog-adoption-Ca3OYGYM.mjs → session-catalog-adoption-Cl6fHxS5.mjs} +5 -5
  72. package/dist/.setup/{session-catalog-archive-Bv6gV7x9.mjs → session-catalog-archive-CUU7jEkO.mjs} +5 -5
  73. package/dist/.setup/{session-catalog-events-kR2Ot6nX.mjs → session-catalog-events-BBV3DMG7.mjs} +5 -5
  74. package/dist/.setup/{session-catalog-index-CrnfVEnT.mjs → session-catalog-index-B00GIRi3.mjs} +8 -8
  75. package/dist/.setup/{session-catalog-index-order-CTfoefow.mjs → session-catalog-index-order-B30rjUEJ.mjs} +1 -1
  76. package/dist/.setup/{session-catalog-limits-BynIoOYm.mjs → session-catalog-limits-Daqt3JLk.mjs} +1 -1
  77. package/dist/.setup/{session-catalog-list-request-D4MYNgDB.mjs → session-catalog-list-request-SJyGz02j.mjs} +3 -3
  78. package/dist/.setup/{session-catalog-native-projection-CWqCU1I_.mjs → session-catalog-native-projection-BJupfCyt.mjs} +4 -4
  79. package/dist/.setup/{session-catalog-node-adoption-BdP9Zjqo.mjs → session-catalog-node-adoption-D11N0CMr.mjs} +2 -2
  80. package/dist/.setup/{session-catalog-node-continue-CNJibO4_.mjs → session-catalog-node-continue-Ct62GeL1.mjs} +5 -5
  81. package/dist/.setup/{session-catalog-node-lookup-BH_DBGa9.mjs → session-catalog-node-lookup-DQVe6vhs.mjs} +2 -2
  82. package/dist/.setup/{session-catalog-parsing-DkeoVn60.mjs → session-catalog-parsing-B4OyhylL.mjs} +1 -1
  83. package/dist/.setup/{session-catalog-projection-BzHiV818.mjs → session-catalog-projection-CYgFTaYm.mjs} +4 -4
  84. package/dist/.setup/{session-catalog-source-DGuRdGvM.mjs → session-catalog-source-Xt6-hNns.mjs} +1 -1
  85. package/dist/.setup/{session-cli-GwU0izn-.mjs → session-cli-BoJSZfGd.mjs} +1 -1
  86. package/dist/.setup/{session-history-import-CaO8s6ta.mjs → session-history-import-DgwRu2eD.mjs} +4 -4
  87. package/dist/.setup/{session-initialization-Bi_2DKhc.mjs → session-initialization-BjVtsTzi.mjs} +2 -2
  88. package/dist/.setup/{session-permission-policy-CD2MAWU8.mjs → session-permission-policy-C7kYxPGd.mjs} +1 -1
  89. package/dist/.setup/{session-retirement-B3U5hpGJ.mjs → session-retirement-DIqF1vQ4.mjs} +6 -6
  90. package/dist/.setup/{settled-turn-finalizer-CYCVpTv2.mjs → settled-turn-finalizer-dVv34G_E.mjs} +5 -5
  91. package/dist/.setup/{shared-client-BCx1wbyA.mjs → shared-client-CNGDTv68.mjs} +32 -20
  92. package/dist/.setup/{side-question-Bz2UQW0l.mjs → side-question-D1Wa21s9.mjs} +22 -22
  93. package/dist/.setup/{source-DipMO9hL.mjs → source-DyVuYlTN.mjs} +4 -4
  94. package/dist/.setup/{thread-lifecycle-run-C_aYiYqk.mjs → thread-lifecycle-run-DjSfTw6v.mjs} +66 -42
  95. package/dist/.setup/{thread-ownership-BoUd0i6L.mjs → thread-ownership-BBsOFzCM.mjs} +4 -4
  96. package/dist/.setup/{thread-policy-B3wBRNph.mjs → thread-policy-BEiS7ITh.mjs} +3 -3
  97. package/dist/.setup/{thread-requests-BgzJwJtS.mjs → thread-requests-DjyDmCo4.mjs} +11 -32
  98. package/dist/.setup/{thread-resume-D-3bsr1j.mjs → thread-resume-BqOca2Iy.mjs} +4 -4
  99. package/dist/.setup/{transcript-mirror-Bee2o6jj.mjs → transcript-mirror-DVEzdOs0.mjs} +1 -1
  100. package/dist/.setup/{transport-stdio-CRWTkKOn.mjs → transport-stdio-lgeKKHyw.mjs} +2 -17
  101. package/dist/.setup/{transport-websocket-DIyPfkHo.mjs → transport-websocket-CEBjEtFP.mjs} +1 -1
  102. package/dist/.setup/{turn-router-DBVMToGo.mjs → turn-router-DM0fRrYI.mjs} +1 -1
  103. package/dist/.setup/{upstream-session-fork-p5fwKi7w.mjs → upstream-session-fork-CxgShpwe.mjs} +19 -19
  104. package/dist/.setup/{usage-C2Kq7oej.mjs → usage-DV8T9Yau.mjs} +3 -3
  105. package/dist/.setup/{usage-limit-error-BQX8RHAd.mjs → usage-limit-error-ryR1PGou.mjs} +1 -1
  106. package/dist/.setup/{web-search-provider.runtime-D89djc7e.mjs → web-search-provider.runtime-DkciK2gS.mjs} +2 -2
  107. package/dist/.setup/{workspace-write-sandbox-probe-BDWO2Qkh.mjs → workspace-write-sandbox-probe-DvfWTvuR.mjs} +2 -2
  108. package/dist/api.js +4 -4
  109. package/dist/catalog-page.worker.js +1 -1
  110. package/dist/cli-metadata.js +1 -1
  111. package/dist/doctor-contract-api.js +5 -5
  112. package/dist/harness.js +22 -22
  113. package/dist/index.js +56 -56
  114. package/dist/media-understanding-provider.js +2 -2
  115. package/dist/migration-provider-api.js +1 -2
  116. package/dist/native-session-binding-api.js +1 -2
  117. package/dist/provider-discovery.js +1 -1
  118. package/dist/session-history.worker.js +1 -2
  119. package/package.json +4 -4
  120. package/dist/.setup/attempt-terminal-jO5IMj9K.mjs +0 -2
  121. package/dist/.setup/config-contracts.shared-D85SGEuq.mjs +0 -4
  122. package/dist/.setup/config-utils-DN_YT7dE.mjs +0 -47
@@ -1,4 +1,4 @@
1
- import { t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-BynIoOYm.mjs";
1
+ import { t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-Daqt3JLk.mjs";
2
2
  //#region extensions/codex/src/session-catalog-index-order.ts
3
3
  function codexCatalogRowRecency(row) {
4
4
  return row.recencyAt ?? row.updatedAt ?? 0;
@@ -1,4 +1,4 @@
1
- import { t as __exportAll } from "./session-binding-sidecars-DD-enC8w.mjs";
1
+ import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
2
2
  //#region extensions/codex/src/session-catalog-limits.ts
3
3
  var session_catalog_limits_exports = /* @__PURE__ */ __exportAll({
4
4
  CODEX_CATALOG_MAX_ROWS: () => CODEX_CATALOG_MAX_ROWS,
@@ -1,6 +1,6 @@
1
- import { o as CatalogParamsError, v as parseCatalogPage } from "./session-catalog-parsing-DkeoVn60.mjs";
2
- import { n as detachCodexCatalogString } from "./session-catalog-limits-BynIoOYm.mjs";
3
- import { i as retainCodexCatalogRow, r as compareCodexCatalogRows } from "./session-catalog-index-order-CTfoefow.mjs";
1
+ import { o as CatalogParamsError, v as parseCatalogPage } from "./session-catalog-parsing-B4OyhylL.mjs";
2
+ import { n as detachCodexCatalogString } from "./session-catalog-limits-Daqt3JLk.mjs";
3
+ import { i as retainCodexCatalogRow, r as compareCodexCatalogRows } from "./session-catalog-index-order-B30rjUEJ.mjs";
4
4
  import { i as withTimeout } from "./timeout-D0mEWSGG.mjs";
5
5
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { createHash } from "node:crypto";
@@ -1,8 +1,8 @@
1
- import { D as selectCodexCatalogPreviewInput, c as MAX_CWD_LENGTH, d as boundedCatalogString, k as truncateCodexCatalogPreview } from "./session-catalog-parsing-DkeoVn60.mjs";
1
+ import { D as selectCodexCatalogPreviewInput, c as MAX_CWD_LENGTH, d as boundedCatalogString, k as truncateCodexCatalogPreview } from "./session-catalog-parsing-B4OyhylL.mjs";
2
2
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
3
- import { n as detachCodexCatalogString } from "./session-catalog-limits-BynIoOYm.mjs";
4
- import { r as copyCodexCatalogSource } from "./session-catalog-source-DGuRdGvM.mjs";
5
- import { t as __exportAll } from "./session-binding-sidecars-DD-enC8w.mjs";
3
+ import { n as detachCodexCatalogString } from "./session-catalog-limits-Daqt3JLk.mjs";
4
+ import { r as copyCodexCatalogSource } from "./session-catalog-source-Xt6-hNns.mjs";
5
+ import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
6
6
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
7
7
  //#region extensions/codex/src/session-catalog-native-projection.ts
8
8
  var session_catalog_native_projection_exports = /* @__PURE__ */ __exportAll({
@@ -1,4 +1,4 @@
1
- import { o as CatalogParamsError } from "./session-catalog-parsing-DkeoVn60.mjs";
1
+ import { o as CatalogParamsError } from "./session-catalog-parsing-B4OyhylL.mjs";
2
2
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
4
4
  import { parseAgentSessionKey } from "openclaw/plugin-sdk/routing";
@@ -156,7 +156,7 @@ async function createOrReuseNodeAdoptedSession(params) {
156
156
  },
157
157
  afterCreate: async (entry) => {
158
158
  const storePath = resolveStorePath(params.config.session?.store, { agentId: entry.agentId });
159
- const { importCodexThreadHistoryToTranscript } = await import("./transcript-mirror-Bee2o6jj.mjs").then((n) => n.a);
159
+ const { importCodexThreadHistoryToTranscript } = await import("./transcript-mirror-DVEzdOs0.mjs").then((n) => n.a);
160
160
  await importCodexThreadHistoryToTranscript({
161
161
  thread: params.history.thread,
162
162
  throughTurnId: params.history.throughTurnId,
@@ -1,10 +1,10 @@
1
- import { A as unwrapNodeInvokePayload, b as parseTranscriptPage, d as boundedCatalogString, f as catalogError, g as isInteractiveThreadSource, h as filterCatalogPageByTitle, n as CODEX_APP_SERVER_THREADS_LIST_COMMAND, o as CatalogParamsError, r as CODEX_APP_SERVER_THREAD_TURNS_LIST_COMMAND, u as NODE_INVOKE_TIMEOUT_MS, v as parseCatalogPage } from "./session-catalog-parsing-DkeoVn60.mjs";
2
- import { n as createCodexCliNodeConversationBindingData } from "./conversation-binding-data-UgLuTSQT.mjs";
3
- import { r as CODEX_CLI_SESSION_SOURCE_UPGRADE_MESSAGE, t as CODEX_CLI_SESSION_RESUME_COMMAND } from "./node-cli-sessions-CzKg2nGq.mjs";
1
+ import { A as unwrapNodeInvokePayload, b as parseTranscriptPage, d as boundedCatalogString, f as catalogError, g as isInteractiveThreadSource, h as filterCatalogPageByTitle, n as CODEX_APP_SERVER_THREADS_LIST_COMMAND, o as CatalogParamsError, r as CODEX_APP_SERVER_THREAD_TURNS_LIST_COMMAND, u as NODE_INVOKE_TIMEOUT_MS, v as parseCatalogPage } from "./session-catalog-parsing-B4OyhylL.mjs";
2
+ import { n as createCodexCliNodeConversationBindingData } from "./conversation-binding-data-GRGSgAro.mjs";
3
+ import { r as CODEX_CLI_SESSION_SOURCE_UPGRADE_MESSAGE, t as CODEX_CLI_SESSION_RESUME_COMMAND } from "./node-cli-sessions-BxVYZNuY.mjs";
4
4
  import { i as withTimeout } from "./timeout-D0mEWSGG.mjs";
5
- import { t as lookupNodeCodexCatalogRecord } from "./session-catalog-node-lookup-BH_DBGa9.mjs";
5
+ import { t as lookupNodeCodexCatalogRecord } from "./session-catalog-node-lookup-DQVe6vhs.mjs";
6
6
  import { t as codexLastTerminalTurnId } from "./session-upstream-marker-D15C9NHp.mjs";
7
- import { catalogSessionActions, createOrReuseNodeAdoptedSession, finalizeNodeAdoptedSession, findNodeAdoptedSessionEntry, nodeAdoptedSourceKey, nodeSessionMarker } from "./session-catalog-node-adoption-BdP9Zjqo.mjs";
7
+ import { catalogSessionActions, createOrReuseNodeAdoptedSession, finalizeNodeAdoptedSession, findNodeAdoptedSessionEntry, nodeAdoptedSourceKey, nodeSessionMarker } from "./session-catalog-node-adoption-D11N0CMr.mjs";
8
8
  import { resolveSessionAgentIdsStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
9
9
  import { createSessionCatalogAdoptionCoordinator, publishSessionCatalogHost, sessionCatalogAdoptedSourceKey } from "openclaw/plugin-sdk/session-catalog";
10
10
  //#region extensions/codex/src/session-catalog-node-continue.ts
@@ -1,5 +1,5 @@
1
- import { A as unwrapNodeInvokePayload, n as CODEX_APP_SERVER_THREADS_LIST_COMMAND, o as CatalogParamsError, u as NODE_INVOKE_TIMEOUT_MS, v as parseCatalogPage } from "./session-catalog-parsing-DkeoVn60.mjs";
2
- import "./session-catalog-limits-BynIoOYm.mjs";
1
+ import { A as unwrapNodeInvokePayload, n as CODEX_APP_SERVER_THREADS_LIST_COMMAND, o as CatalogParamsError, u as NODE_INVOKE_TIMEOUT_MS, v as parseCatalogPage } from "./session-catalog-parsing-B4OyhylL.mjs";
2
+ import "./session-catalog-limits-Daqt3JLk.mjs";
3
3
  import { i as withTimeout } from "./timeout-D0mEWSGG.mjs";
4
4
  //#region extensions/codex/src/session-catalog-node-lookup.ts
5
5
  async function lookupNodeCodexCatalogRecord(params) {
@@ -1,5 +1,5 @@
1
1
  import "./protocol-CANUwXJ3.mjs";
2
- import { n as detachCodexCatalogString } from "./session-catalog-limits-BynIoOYm.mjs";
2
+ import { n as detachCodexCatalogString } from "./session-catalog-limits-Daqt3JLk.mjs";
3
3
  import { asFiniteNumber, isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
5
5
  //#region extensions/codex/src/app-server/protocol-session-source.ts
@@ -1,8 +1,8 @@
1
- import { D as selectCodexCatalogPreviewInput, O as toCatalogSession, S as readControlCursor, d as boundedCatalogString, k as truncateCodexCatalogPreview } from "./session-catalog-parsing-DkeoVn60.mjs";
2
- import { n as detachCodexCatalogString } from "./session-catalog-limits-BynIoOYm.mjs";
3
- import { n as codexCatalogRowRecency } from "./session-catalog-index-order-CTfoefow.mjs";
1
+ import { D as selectCodexCatalogPreviewInput, O as toCatalogSession, S as readControlCursor, d as boundedCatalogString, k as truncateCodexCatalogPreview } from "./session-catalog-parsing-B4OyhylL.mjs";
2
+ import { n as detachCodexCatalogString } from "./session-catalog-limits-Daqt3JLk.mjs";
3
+ import { n as codexCatalogRowRecency } from "./session-catalog-index-order-B30rjUEJ.mjs";
4
4
  import { t as isOpenClawManagedCodexThread } from "./session-catalog-provenance-CmsOE5mh.mjs";
5
- import { c as setCodexCatalogSource, i as getCodexCatalogSource, r as copyCodexCatalogSource } from "./session-catalog-source-DGuRdGvM.mjs";
5
+ import { c as setCodexCatalogSource, i as getCodexCatalogSource, r as copyCodexCatalogSource } from "./session-catalog-source-Xt6-hNns.mjs";
6
6
  import { asFiniteNumber, isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs/promises";
@@ -1,4 +1,4 @@
1
- import { n as defineCodexBuildState } from "./build-state-Ds14X10-.mjs";
1
+ import { n as defineCodexBuildState } from "./build-state-DPMC9C_U.mjs";
2
2
  //#region extensions/codex/src/session-catalog-source.ts
3
3
  function hasLiveCodexCatalogSource(sources) {
4
4
  for (const source of sources) if (!source.closed) return true;
@@ -1,4 +1,4 @@
1
- import "./session-catalog-parsing-DkeoVn60.mjs";
1
+ import "./session-catalog-parsing-B4OyhylL.mjs";
2
2
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
4
4
  import { normalizeAgentId } from "openclaw/plugin-sdk/routing";
@@ -1,7 +1,7 @@
1
- import { m as sessionBindingIdentity } from "./session-binding-record-DU_0biMD.mjs";
2
- import "./session-binding-JEHNMPsr.mjs";
3
- import { r as importCodexThreadHistoryToTranscript } from "./transcript-mirror-Bee2o6jj.mjs";
4
- import { n as prepareCodexSessionInitialization } from "./session-initialization-Bi_2DKhc.mjs";
1
+ import { m as sessionBindingIdentity } from "./session-binding-record-C2kDBZhx.mjs";
2
+ import "./session-binding-BDnNz-Co.mjs";
3
+ import { r as importCodexThreadHistoryToTranscript } from "./transcript-mirror-DVEzdOs0.mjs";
4
+ import { n as prepareCodexSessionInitialization } from "./session-initialization-BjVtsTzi.mjs";
5
5
  import { resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
6
6
  //#region extensions/codex/src/app-server/session-history-import.ts
7
7
  /** Creates a session whose transcript is derived from one verified Codex thread snapshot. */
@@ -1,5 +1,5 @@
1
- import { s as validateBindingForWrite } from "./session-binding-record-codec-BpH8u_G9.mjs";
2
- import "./session-binding-JEHNMPsr.mjs";
1
+ import { s as validateBindingForWrite } from "./session-binding-record-codec-CWQXr9os.mjs";
2
+ import "./session-binding-BDnNz-Co.mjs";
3
3
  import { createNativeSessionInitializationOwner } from "openclaw/plugin-sdk/agent-harness-session-runtime";
4
4
  //#region extensions/codex/src/app-server/session-initialization.ts
5
5
  const { prepare: prepareCodexSessionInitialization, getRollback: getCodexSessionInitializationRollback } = createNativeSessionInitializationOwner({
@@ -1,4 +1,4 @@
1
- import { S as selectGuardianSandbox, f as selectGuardianApprovalPolicy, i as resolveCodexAppServerNetworkProxy, m as selectUserApprovalsReviewer, p as selectGuardianApprovalsReviewer, u as parseCodexRequirementsPolicy } from "./config-security-clxAZYWX.mjs";
1
+ import { S as selectGuardianSandbox, f as selectGuardianApprovalPolicy, i as resolveCodexAppServerNetworkProxy, m as selectUserApprovalsReviewer, p as selectGuardianApprovalsReviewer, u as parseCodexRequirementsPolicy } from "./config-security-DpkGNy5T.mjs";
2
2
  import { hostname } from "node:os";
3
3
  import { isPathInside } from "openclaw/plugin-sdk/file-access-runtime";
4
4
  //#region extensions/codex/src/app-server/session-permission-policy.ts
@@ -1,10 +1,10 @@
1
- import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-f8ODJ_OX.mjs";
1
+ import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-CXK7tmkb.mjs";
2
2
  import { t as withCodexAppServerThreadMutation } from "./thread-ownership-queue-CeyYScUC.mjs";
3
- import { K as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed } from "./shared-client-BCx1wbyA.mjs";
4
- import { f as unsubscribeCodexThreadBestEffort, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-zNuNTKVr.mjs";
5
- import { t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BoUd0i6L.mjs";
6
- import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-DOLEIf9r.mjs";
7
- import { t as getCodexSessionInitializationRollback } from "./session-initialization-Bi_2DKhc.mjs";
3
+ import { H as isCodexAppServerLiveThreadClaimed, R as hasCodexAppServerLiveThread, q as releaseCodexAppServerLiveThread } from "./shared-client-CNGDTv68.mjs";
4
+ import { f as unsubscribeCodexThreadBestEffort, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-BVww-ct8.mjs";
5
+ import { t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BBsOFzCM.mjs";
6
+ import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-CBYFkNsB.mjs";
7
+ import { t as getCodexSessionInitializationRollback } from "./session-initialization-BjVtsTzi.mjs";
8
8
  import { isIncognitoSessionKey } from "openclaw/plugin-sdk/session-key-runtime";
9
9
  import { isNativeSessionDeletionUnresolved, wrapNativeSessionDeletionMutation } from "openclaw/plugin-sdk/agent-harness-session-runtime";
10
10
  //#region extensions/codex/src/app-server/session-retirement.ts
@@ -1,12 +1,12 @@
1
1
  import { i as readMirrorIdentity, n as attachCodexMirrorIdentity } from "./upstream-prompt-provenance-Ccd9MFRJ.mjs";
2
2
  import { l as readCodexMirrorSourceFingerprint, o as fingerprintCodexMirrorSourceMessage } from "./transcript-mirror-attestation-BzUXnrvv.mjs";
3
- import { nt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-BCx1wbyA.mjs";
4
- import { f as assertCodexPassiveTurnItems } from "./client-D93nbdB8.mjs";
5
- import { runBoundedCodexAppServerTurn } from "./bounded-turn-DfIJtRlv.mjs";
3
+ import { rt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-CNGDTv68.mjs";
4
+ import { f as assertCodexPassiveTurnItems } from "./client-Div-zqnz.mjs";
5
+ import { runBoundedCodexAppServerTurn } from "./bounded-turn-vdpL2efh.mjs";
6
6
  import { t as resolveCodexLocalRuntimeAttribution } from "./local-runtime-attribution-CZz2DJ4q.mjs";
7
- import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-BfDAo-qZ.mjs";
7
+ import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-CIQJykuM.mjs";
8
8
  import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-CLMKN4x-.mjs";
9
- import { t as codexTranscriptMirrorRuntime } from "./transcript-mirror-Bee2o6jj.mjs";
9
+ import { t as codexTranscriptMirrorRuntime } from "./transcript-mirror-DVEzdOs0.mjs";
10
10
  import { t as CodexSettledTurnContext } from "./settled-turn-context-BPL6D3RO.mjs";
11
11
  import { createNativeSessionBindingAuthority } from "openclaw/plugin-sdk/agent-harness-session-runtime";
12
12
  import { isSilentReplyText } from "openclaw/plugin-sdk/reply-runtime";
@@ -1,23 +1,23 @@
1
1
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
- import { n as defineCodexBuildState, t as codexBuildSymbol } from "./build-state-Ds14X10-.mjs";
2
+ import { n as defineCodexBuildState, t as codexBuildSymbol } from "./build-state-DPMC9C_U.mjs";
3
3
  import { t as CODEX_APP_SERVER_AUTH_PROVIDER } from "./auth-profile-selection-hr8ocLtz.mjs";
4
4
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
5
5
  import { a as withEphemeralCodexAuthStore, i as withClearedEnvironmentVariables, n as resolveCodexAppServerLocalHomeDir, r as resolveCodexAppServerUserHomeDir, t as resolveCodexAppServerHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
6
- import { a as resolveCodexAppServerStartOptionsForAgent, d as readCodexEffectiveConfig, o as resolveCodexComputerUseConfig, t as codexAppServerStartOptionsKey, u as CODEX_SESSION_OVERRIDABLE_LAYER_TYPES } from "./config-options-DDzeNQ8m.mjs";
7
- import { d as resolveMacOSDesktopCodexBundledMarketplaceCandidates, f as resolveMacOSDesktopCodexComputerUseServiceAppCandidates, i as resolveManagedCodexNativeCommand, l as resolveFirstExistingMacOSDesktopCodexBundledMarketplacePath, r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand, u as resolveMacOSDesktopCodexAppPathCandidates } from "./managed-binary-BtIjV7yN.mjs";
8
- import { A as waitForCodexDesktopGeneration, C as retirePendingSharedClientEntryIfUnclaimed, D as waitForUnclaimedSharedClientStartup, _ as observeSharedClientAcquire, a as readCodexCliAuthFileApiKey, b as releaseSharedClientEntry, c as resolveCodexAppServerPreparedApiKeyCacheKey, d as getCurrentSharedClientEntry, f as getOrCreateSharedClientEntry, g as observeAcquire, h as notifyDesktopGenerationDrainChecks, i as fingerprintTokenAuthProfileCacheKey, j as readCodexDesktopArtifactTreeFingerprint, k as isCodexDesktopGenerationCurrent, l as closeSharedClientEntryIfUnclaimed, n as CODEX_AUTH_JSON_FILENAME, o as readFirstNonEmptyEnv, p as getSharedCodexAppServerClientState, r as fingerprintApiKeyAuthProfileCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey, t as CODEX_APP_SERVER_API_KEY_ENV_VARS, u as createCodexAppServerStartupLifetime, v as ownCodexStartup, w as retireSharedCodexAppServerClientIfCurrent, x as retainSharedClientEntry, y as recordSharedClientAcquireBoundary } from "./auth-cache-key-f8ODJ_OX.mjs";
9
- import { n as resolveCodexAppServerSpawnEnv } from "./transport-stdio-CRWTkKOn.mjs";
6
+ import { a as resolveCodexAppServerStartOptionsForAgent, d as readCodexEffectiveConfig, o as resolveCodexComputerUseConfig, t as codexAppServerStartOptionsKey, u as CODEX_SESSION_OVERRIDABLE_LAYER_TYPES } from "./config-options-CZmH25Xq.mjs";
7
+ import { d as resolveMacOSDesktopCodexBundledMarketplaceCandidates, f as resolveMacOSDesktopCodexComputerUseServiceAppCandidates, i as resolveManagedCodexNativeCommand, l as resolveFirstExistingMacOSDesktopCodexBundledMarketplacePath, r as resolveManagedCodexAppServerStartOptions, t as isManagedCodexDesktopCommand, u as resolveMacOSDesktopCodexAppPathCandidates } from "./managed-binary-DwC9wxch.mjs";
8
+ import { A as waitForCodexDesktopGeneration, C as retirePendingSharedClientEntryIfUnclaimed, D as waitForUnclaimedSharedClientStartup, _ as observeSharedClientAcquire, a as readCodexCliAuthFileApiKey, b as releaseSharedClientEntry, c as resolveCodexAppServerPreparedApiKeyCacheKey, d as getCurrentSharedClientEntry, f as getOrCreateSharedClientEntry, g as observeAcquire, h as notifyDesktopGenerationDrainChecks, i as fingerprintTokenAuthProfileCacheKey, j as readCodexDesktopArtifactTreeFingerprint, k as isCodexDesktopGenerationCurrent, l as closeSharedClientEntryIfUnclaimed, n as CODEX_AUTH_JSON_FILENAME, o as readFirstNonEmptyEnv, p as getSharedCodexAppServerClientState, r as fingerprintApiKeyAuthProfileCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey, t as CODEX_APP_SERVER_API_KEY_ENV_VARS, u as createCodexAppServerStartupLifetime, v as ownCodexStartup, w as retireSharedCodexAppServerClientIfCurrent, x as retainSharedClientEntry, y as recordSharedClientAcquireBoundary } from "./auth-cache-key-CXK7tmkb.mjs";
9
+ import { n as resolveCodexAppServerSpawnEnv } from "./transport-stdio-lgeKKHyw.mjs";
10
10
  import { n as CodexAppServerAuthProfileUnavailableError, r as formatCodexAuthProfileUnavailableMessage } from "./auth-profile-recovery-BREezV0L.mjs";
11
11
  import { a as codexPrewriteRejectionCause } from "./rpc-error-C98SHchT.mjs";
12
12
  import { i as withTimeout } from "./timeout-D0mEWSGG.mjs";
13
13
  import { n as readCodexSessionMeta } from "./session-catalog-provenance-CmsOE5mh.mjs";
14
- import { n as observeCodexCatalogClient } from "./session-catalog-events-kR2Ot6nX.mjs";
15
- import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DWzK-k0n.mjs";
14
+ import { n as observeCodexCatalogClient } from "./session-catalog-events-BBV3DMG7.mjs";
15
+ import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DGB1-VbB.mjs";
16
16
  import { a as resolveCodexAppServerAuthProfileStore, i as resolveCodexAppServerAuthProfileIdForAgent, r as resolveCodexAppServerAuthProfileId, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-CgHQ8Vot.mjs";
17
17
  import { i as isCodexResponsesOAuthCredential, n as createCodexResponsesOAuth, o as resolveCodexResponsesOAuthProfileFingerprint, r as isCodexResponsesOAuth, t as CODEX_RESPONSES_OAUTH_PROVIDER } from "./responses-oauth-twnuTaAa.mjs";
18
- import { N as isUnsupportedCodexAppServerVersionError, t as CodexAppServerClient } from "./client-D93nbdB8.mjs";
19
- import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-DIyPfkHo.mjs";
20
- import { t as __exportAll } from "./session-binding-sidecars-DD-enC8w.mjs";
18
+ import { N as isUnsupportedCodexAppServerVersionError, t as CodexAppServerClient } from "./client-Div-zqnz.mjs";
19
+ import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-CEBjEtFP.mjs";
20
+ import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
21
21
  import { asOptionalRecord, isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
22
22
  import { createHash, randomUUID } from "node:crypto";
23
23
  import { isDeepStrictEqual } from "node:util";
@@ -1561,6 +1561,13 @@ function resolveExplicitChatgptAccountId(credential) {
1561
1561
  }
1562
1562
  //#endregion
1563
1563
  //#region extensions/codex/src/app-server/client-thread-owner.ts
1564
+ /** Background custody can survive projection replacement only under its creation policy. */
1565
+ function isThreadBackgroundOnly(runtime, threadId, configFingerprint) {
1566
+ if (!runtime || runtime.closed || !runtime.protectedThreads.has(threadId)) return false;
1567
+ const claim = runtime.claimedThreads.get(threadId);
1568
+ const policy = claim?.configFingerprint ?? runtime.retainedThreads.get(threadId)?.configFingerprint;
1569
+ return (!claim || claim.releaseAfterProtection !== void 0) && (configFingerprint === void 0 || policy === configFingerprint);
1570
+ }
1564
1571
  function createThreadOwnerToken(threadId, onInvalidated) {
1565
1572
  const owner = {
1566
1573
  invalidated: false,
@@ -1928,7 +1935,7 @@ function scheduleRetainedThreadEviction(client, runtime) {
1928
1935
  evictExpiredRetainedThreads(client, runtime).catch((error) => {
1929
1936
  embeddedAgentLog$1.warn("codex retained thread expiry failed", { reason: formatErrorMessage$1(error) });
1930
1937
  });
1931
- }, Math.max(0, expiresAt - Date.now()));
1938
+ }, Math.max(0, Math.floor(expiresAt - performance.now())));
1932
1939
  runtime.evictionTimer.unref?.();
1933
1940
  }
1934
1941
  async function releaseRetainedThread(client, runtime, threadId, assertCurrent, withCurrent) {
@@ -1962,7 +1969,7 @@ async function releaseRetainedThread(client, runtime, threadId, assertCurrent, w
1962
1969
  return true;
1963
1970
  } catch (error) {
1964
1971
  if (!runtime.closed && !transition.invalidated && runtime.releasingThreads.get(threadId) === transition && !runtime.retainedThreads.has(threadId) && !runtime.claimedThreads.has(threadId)) {
1965
- if (retained.ephemeralPolicy === void 0) retained.expiresAt = Date.now() + CODEX_APP_SERVER_LIVE_THREAD_IDLE_TIMEOUT_MS;
1972
+ if (retained.ephemeralPolicy === void 0) retained.expiresAt = performance.now() + CODEX_APP_SERVER_LIVE_THREAD_IDLE_TIMEOUT_MS;
1966
1973
  const newerThreads = [...runtime.retainedThreads.entries()].filter(([candidateThreadId]) => !olderThreadIds.has(candidateThreadId));
1967
1974
  for (const [candidateThreadId] of newerThreads) runtime.retainedThreads.delete(candidateThreadId);
1968
1975
  runtime.retainedThreads.set(threadId, retained);
@@ -1975,7 +1982,7 @@ async function releaseRetainedThread(client, runtime, threadId, assertCurrent, w
1975
1982
  }
1976
1983
  }
1977
1984
  async function evictExpiredRetainedThreads(client, runtime) {
1978
- const now = Date.now();
1985
+ const now = performance.now();
1979
1986
  for (const [threadId, thread] of runtime.retainedThreads) if (thread.expiresAt <= now && !runtime.protectedThreads.has(threadId)) await releaseRetainedThread(client, runtime, threadId);
1980
1987
  scheduleRetainedThreadEviction(client, runtime);
1981
1988
  }
@@ -2006,7 +2013,7 @@ async function retainCodexAppServerLiveThread(client, threadId, releaseThread, c
2006
2013
  configFingerprint,
2007
2014
  ephemeralPolicy,
2008
2015
  serviceTier,
2009
- expiresAt: ephemeralPolicy === void 0 ? Date.now() + CODEX_APP_SERVER_LIVE_THREAD_IDLE_TIMEOUT_MS : Number.POSITIVE_INFINITY,
2016
+ expiresAt: ephemeralPolicy === void 0 ? performance.now() + CODEX_APP_SERVER_LIVE_THREAD_IDLE_TIMEOUT_MS : Number.POSITIVE_INFINITY,
2010
2017
  release: (releaseThread ? physicalThreadReleases.get(releaseThread) ?? releaseThread : void 0) ?? defaultThreadRelease(client)
2011
2018
  };
2012
2019
  runtime.retainedThreads.set(threadId, retained);
@@ -2050,7 +2057,7 @@ async function claimCodexAppServerLiveThread(client, threadId, onInvalidated) {
2050
2057
  return;
2051
2058
  }
2052
2059
  return claimCodexAppServerThreadOwnership(client, runtime, threadId, runtime.retainedThreads.get(threadId) ?? {
2053
- expiresAt: Date.now() + CODEX_APP_SERVER_LIVE_THREAD_IDLE_TIMEOUT_MS,
2060
+ expiresAt: performance.now() + CODEX_APP_SERVER_LIVE_THREAD_IDLE_TIMEOUT_MS,
2054
2061
  release: defaultThreadRelease(client)
2055
2062
  }, onInvalidated);
2056
2063
  }
@@ -2058,6 +2065,7 @@ function claimCodexAppServerThreadOwnership(client, runtime, threadId, retained,
2058
2065
  const previousClaim = runtime.claimedThreads.get(threadId);
2059
2066
  runtime.retainedThreads.delete(threadId);
2060
2067
  const claimed = createThreadOwnerToken(threadId, onInvalidated);
2068
+ claimed.configFingerprint = retained.configFingerprint;
2061
2069
  runtime.claimedThreads.set(threadId, claimed);
2062
2070
  previousClaim?.invalidate();
2063
2071
  retained.ownerToken?.invalidate();
@@ -2137,6 +2145,10 @@ function isCodexAppServerLiveThreadClaimed(client, threadId) {
2137
2145
  const runtime = configuredClients.get(client);
2138
2146
  return runtime !== void 0 && !runtime.closed && runtime.claimedThreads.has(threadId);
2139
2147
  }
2148
+ /** Completed foreground work may leave cleanup custody with native background work. */
2149
+ function isCodexAppServerLiveThreadBackgroundOnly(client, threadId, configFingerprint) {
2150
+ return isThreadBackgroundOnly(configuredClients.get(client), threadId, configFingerprint);
2151
+ }
2140
2152
  /** Native commands and children can still need an otherwise-idle subscription. */
2141
2153
  function isCodexAppServerLiveThreadProtected(client, threadId) {
2142
2154
  const runtime = configuredClients.get(client);
@@ -2213,7 +2225,7 @@ function protectCodexAppServerLiveThread(client, threadId) {
2213
2225
  if (releaseThreadProtection(runtime, threadId)) {
2214
2226
  const retained = runtime.retainedThreads.get(threadId);
2215
2227
  if (retained) {
2216
- if (retained.ephemeralPolicy === void 0) retained.expiresAt = Date.now() + CODEX_APP_SERVER_LIVE_THREAD_IDLE_TIMEOUT_MS;
2228
+ if (retained.ephemeralPolicy === void 0) retained.expiresAt = performance.now() + CODEX_APP_SERVER_LIVE_THREAD_IDLE_TIMEOUT_MS;
2217
2229
  runtime.retainedThreads.delete(threadId);
2218
2230
  runtime.retainedThreads.set(threadId, retained);
2219
2231
  }
@@ -2485,8 +2497,8 @@ async function prepareCodexInferenceRoute(params) {
2485
2497
  throw new Error("Codex inference route limit reached; start a fresh managed native connection before retrying.");
2486
2498
  }
2487
2499
  pending = Promise.all([
2488
- import("./inference-proxy-BDWV0djM.mjs"),
2489
- import("./native-subagent-monitor-DOLEIf9r.mjs").then((n) => n.n),
2500
+ import("./inference-proxy-DSnaS-uS.mjs"),
2501
+ import("./native-subagent-monitor-CBYFkNsB.mjs").then((n) => n.n),
2490
2502
  import("./inference-dispatch-CO6tTs4q.mjs")
2491
2503
  ]).then(([{ createCodexInferenceProxy }, native, { createCodexInferenceModelBinding }]) => {
2492
2504
  assertClient();
@@ -3301,7 +3313,7 @@ async function startInitializedCodexAppServerClientOnce(params) {
3301
3313
  } finally {
3302
3314
  artifactDrain?.cancel();
3303
3315
  }
3304
- const runtimeArtifactModule = params.runtimeArtifactMode ? await import("./runtime-artifact-C13pR7tD.mjs") : void 0;
3316
+ const runtimeArtifactModule = params.runtimeArtifactMode ? await import("./runtime-artifact-CCPLKFGR.mjs") : void 0;
3305
3317
  const runtimeArtifactBeforeStart = runtimeArtifactModule ? await runtimeArtifactModule.captureCodexAppServerRuntimeArtifactBeforeStart({
3306
3318
  startOptions,
3307
3319
  spawnIdentity: resolveCodexAppServerSpawnIdentity(startOptions),
@@ -3555,4 +3567,4 @@ function clearSharedCodexAppServerClientIfCurrentAndUnclaimed(client) {
3555
3567
  };
3556
3568
  }
3557
3569
  //#endregion
3558
- export { createCodexEphemeralThreadPolicy as $, bindCodexInferenceThread as A, isCodexAppServerClientRuntimeLive as B, CodexThreadBindingConflictError as C, nativeHookRelayUnregisterQueue as D, isCodexContextRestartSelectionChangedError as E, consumeCodexAppServerLiveThread as F, readCodexClientSessionMeta as G, isCodexAppServerLiveThreadProtected as H, ensureCodexAppServerClientRuntime as I, revertCodexAppServerLiveThreadInstructions as J, releaseCodexAppServerLiveThread as K, forgetCodexWorkspaceReferences as L, getCodexInferenceThreadQualification as M, prepareCodexInferenceThreadConfig as N, acquireCodexNativeConfigFence as O, claimCodexAppServerLiveThread as P, rememberCodexRateLimitsRead as Q, hasCodexAppServerLiveThread as R, CodexAdoptedThreadActiveError as S, CodexThreadStartRequestError as T, prepareCodexWorkspaceReferences as U, isCodexAppServerLiveThreadClaimed as V, protectCodexAppServerLiveThread as W, readCodexRateLimitsRevision as X, unsubscribeCodexAppServerLiveThread as Y, readRecentCodexRateLimits as Z, retainSharedCodexAppServerClientIfCurrent as _, clearSharedCodexAppServerClientIfCurrentAndUnclaimed as a, hasLegacyCodexComputerUseMcpPolicy as at, withLeasedCodexAppServerClientStartSelectionRetry as b, getLeasedSharedCodexAppServerClient as c, ensureCodexComputerUseSharedPluginCache as ct, readCodexAppServerClientDesktopGeneration as d, TURN_FINALIZE_DRAIN_ABORT_GRACE_MS as dt, reconcileCodexComputerUseStartArtifacts as et, readCodexAppServerClientDesktopGenerationFingerprint as f, TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS as ft, resolveCodexNativeConfigFenceKey as g, withCodexStartupTimeout as gt, releaseLeasedSharedCodexAppServerClient as h, resolveCodexStartupTimeoutMs as ht, clearSharedCodexAppServerClientIfCurrent as i, resolveClientManagedBundledMarketplacePath as it, getCodexInferenceThread as j, assertCodexInferenceRouteConfig as k, getSharedCodexAppServerClient as l, assertNotSymlink as lt, releaseCodexAppServerClientLease as m, resolveCodexGatewayTimeoutWithGraceMs as mt, captureCodexAppServerClientLifetime as n, resolveCodexAppServerPreparedAuthHandoff as nt, clearSharedCodexAppServerClientIfCurrentAndWait as o, isLegacyCodexComputerUsePluginDisabled as ot, readCodexAppServerClientProcessIdentity as p, isCodexAppServerStartupError as pt, retainCodexAppServerLiveThread as q, captureSharedCodexAppServerCatalogLifetime as r, resolveBundledComputerUseMarketplacePath as rt, createIsolatedCodexAppServerClient as s, resolveManagedCodexComputerUseConfig as st, assertCodexAppServerClientStartSelectionCurrent as t, resolveCodexAppServerAuthAccountCacheKey as tt, isCodexAppServerStartSelectionChangedError as u, CodexAppServerStartupError as ut, shared_client_exports as v, CodexThreadClientReplacementError as w, CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED as x, waitForCodexAppServerClientDesktopGenerationDrain as y, hasCodexAppServerSiblingThreadWork as z };
3570
+ export { rememberCodexRateLimitsRead as $, bindCodexInferenceThread as A, isCodexAppServerClientRuntimeLive as B, CodexThreadBindingConflictError as C, nativeHookRelayUnregisterQueue as D, isCodexContextRestartSelectionChangedError as E, consumeCodexAppServerLiveThread as F, protectCodexAppServerLiveThread as G, isCodexAppServerLiveThreadClaimed as H, ensureCodexAppServerClientRuntime as I, retainCodexAppServerLiveThread as J, readCodexClientSessionMeta as K, forgetCodexWorkspaceReferences as L, getCodexInferenceThreadQualification as M, prepareCodexInferenceThreadConfig as N, acquireCodexNativeConfigFence as O, claimCodexAppServerLiveThread as P, readRecentCodexRateLimits as Q, hasCodexAppServerLiveThread as R, CodexAdoptedThreadActiveError as S, CodexThreadStartRequestError as T, isCodexAppServerLiveThreadProtected as U, isCodexAppServerLiveThreadBackgroundOnly as V, prepareCodexWorkspaceReferences as W, unsubscribeCodexAppServerLiveThread as X, revertCodexAppServerLiveThreadInstructions as Y, readCodexRateLimitsRevision as Z, retainSharedCodexAppServerClientIfCurrent as _, withCodexStartupTimeout as _t, clearSharedCodexAppServerClientIfCurrentAndUnclaimed as a, resolveClientManagedBundledMarketplacePath as at, withLeasedCodexAppServerClientStartSelectionRetry as b, getLeasedSharedCodexAppServerClient as c, resolveManagedCodexComputerUseConfig as ct, readCodexAppServerClientDesktopGeneration as d, CodexAppServerStartupError as dt, createCodexEphemeralThreadPolicy as et, readCodexAppServerClientDesktopGenerationFingerprint as f, TURN_FINALIZE_DRAIN_ABORT_GRACE_MS as ft, resolveCodexNativeConfigFenceKey as g, resolveCodexStartupTimeoutMs as gt, releaseLeasedSharedCodexAppServerClient as h, resolveCodexGatewayTimeoutWithGraceMs as ht, clearSharedCodexAppServerClientIfCurrent as i, resolveBundledComputerUseMarketplacePath as it, getCodexInferenceThread as j, assertCodexInferenceRouteConfig as k, getSharedCodexAppServerClient as l, ensureCodexComputerUseSharedPluginCache as lt, releaseCodexAppServerClientLease as m, isCodexAppServerStartupError as mt, captureCodexAppServerClientLifetime as n, resolveCodexAppServerAuthAccountCacheKey as nt, clearSharedCodexAppServerClientIfCurrentAndWait as o, hasLegacyCodexComputerUseMcpPolicy as ot, readCodexAppServerClientProcessIdentity as p, TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS as pt, releaseCodexAppServerLiveThread as q, captureSharedCodexAppServerCatalogLifetime as r, resolveCodexAppServerPreparedAuthHandoff as rt, createIsolatedCodexAppServerClient as s, isLegacyCodexComputerUsePluginDisabled as st, assertCodexAppServerClientStartSelectionCurrent as t, reconcileCodexComputerUseStartArtifacts as tt, isCodexAppServerStartSelectionChangedError as u, assertNotSymlink as ut, shared_client_exports as v, CodexThreadClientReplacementError as w, CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED as x, waitForCodexAppServerClientDesktopGenerationDrain as y, hasCodexAppServerSiblingThreadWork as z };
@@ -1,29 +1,29 @@
1
1
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
- import { m as sessionBindingIdentity } from "./session-binding-record-DU_0biMD.mjs";
3
- import { c as withMcpElicitationsApprovalPolicy, d as readCodexRequirementsToml, n as hasCodexMcpToolApprovalOverrides, s as shouldAutoApproveCodexAppServerApprovals } from "./config-security-clxAZYWX.mjs";
4
- import { c as isCodexPairedNodeRemoteExecPlacementSandbox, d as readCodexPluginConfig, l as isCodexRemoteExecPlacementSandbox, u as isCodexSandboxExecServerEnabled } from "./config-parsing-DsWSCPHO.mjs";
5
- import { i as resolveCodexAppServerHomeScope, l as resolveCodexModelBackedReviewerPolicyContext } from "./config-options-DDzeNQ8m.mjs";
2
+ import { m as sessionBindingIdentity } from "./session-binding-record-C2kDBZhx.mjs";
3
+ import { c as withMcpElicitationsApprovalPolicy, d as readCodexRequirementsToml, n as hasCodexMcpToolApprovalOverrides, s as shouldAutoApproveCodexAppServerApprovals } from "./config-security-DpkGNy5T.mjs";
4
+ import { c as isCodexPairedNodeRemoteExecPlacementSandbox, d as readCodexPluginConfig, l as isCodexRemoteExecPlacementSandbox, u as isCodexSandboxExecServerEnabled } from "./config-parsing-CVK2Q463.mjs";
5
+ import { i as resolveCodexAppServerHomeScope, l as resolveCodexModelBackedReviewerPolicyContext } from "./config-options-CZmH25Xq.mjs";
6
6
  import { n as formatCodexUsageLimitErrorMessage } from "./rate-limits-CI8pTPqL.mjs";
7
- import { i as resolveCodexBindingAppServerConnection, r as requireCodexSupervisionModelSelection } from "./binding-connection-B7HAAZSI.mjs";
8
- import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-C1YVVLEA.mjs";
9
- import { Z as readRecentCodexRateLimits, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease, nt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-BCx1wbyA.mjs";
10
- import { E as resolveDynamicToolCallTimeoutMs, O as toCodexDynamicToolProtocolResponse, T as handleDynamicToolCallWithTimeout, _ as assertCodexTurnStartResponse, a as isCodexAppServerIndeterminateRequestCancellationError, k as resolveCodexToolAbortTerminalReason, m as assertCodexThreadForkResponse, r as isCodexAppServerApprovalRequest, w as createCodexElicitationResponse, y as readCodexDynamicToolCallParams } from "./client-D93nbdB8.mjs";
11
- import { d as terminateCodexBackgroundTerminals, f as unsubscribeCodexThreadBestEffort, l as retireUnsafeCodexTurnClientBestEffort, s as interruptCodexTurnAndWaitBestEffort } from "./attempt-client-cleanup-zNuNTKVr.mjs";
12
- import { t as CodexEphemeralTurn } from "./ephemeral-turn-De3qb8EQ.mjs";
13
- import { d as mergeCodexThreadConfigs, f as refreshCodexPluginAppApprovalPolicy } from "./project-doc-thread-config-BVcvnps8.mjs";
7
+ import { i as resolveCodexBindingAppServerConnection, r as requireCodexSupervisionModelSelection } from "./binding-connection-C0t9TBX_.mjs";
8
+ import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-LQemoqTL.mjs";
9
+ import { Q as readRecentCodexRateLimits, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease, rt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-CNGDTv68.mjs";
10
+ import { E as resolveDynamicToolCallTimeoutMs, O as toCodexDynamicToolProtocolResponse, T as handleDynamicToolCallWithTimeout, _ as assertCodexTurnStartResponse, a as isCodexAppServerIndeterminateRequestCancellationError, k as resolveCodexToolAbortTerminalReason, m as assertCodexThreadForkResponse, r as isCodexAppServerApprovalRequest, w as createCodexElicitationResponse, y as readCodexDynamicToolCallParams } from "./client-Div-zqnz.mjs";
11
+ import { d as terminateCodexBackgroundTerminals, f as unsubscribeCodexThreadBestEffort, l as retireUnsafeCodexTurnClientBestEffort, s as interruptCodexTurnAndWaitBestEffort } from "./attempt-client-cleanup-BVww-ct8.mjs";
12
+ import { t as CodexEphemeralTurn } from "./ephemeral-turn-K_d99r9P.mjs";
13
+ import { d as mergeCodexThreadConfigs, f as refreshCodexPluginAppApprovalPolicy } from "./project-doc-thread-config-D_sWbxFR.mjs";
14
14
  import { n as resolveCodexAppServerReasoningEffort, t as readCodexSupportedReasoningEfforts } from "./reasoning-effort-CS9kKWB9.mjs";
15
- import { h as resolveCodexWebSearchPlan, r as buildCodexRuntimeThreadConfig, z as resolveCodexDynamicToolsLoading } from "./thread-requests-BgzJwJtS.mjs";
16
- import { i as resolveCodexSessionBinding } from "./session-binding-JEHNMPsr.mjs";
15
+ import { h as resolveCodexWebSearchPlan, r as buildCodexRuntimeThreadConfig, z as resolveCodexDynamicToolsLoading } from "./thread-requests-DjyDmCo4.mjs";
16
+ import { i as resolveCodexSessionBinding } from "./session-binding-BDnNz-Co.mjs";
17
17
  import { i as resolveCodexAppServerThreadModelSelection, t as CODEX_NATIVE_PERSONALITY_NONE } from "./thread-model-selection-DcVebr8N.mjs";
18
- import { t as resolveCodexNativeExecutionBlock } from "./sandbox-guard-DIImwCy1.mjs";
19
- import { i as assertCodexSupervisionThreadLineage, n as CodexThreadPolicyHandoffError, o as refreshCodexThreadPolicy } from "./thread-policy-B3wBRNph.mjs";
20
- import { o as runCodexCleanupStep } from "./run-attempt-lifecycle-KN4oh-7O.mjs";
21
- import { a as resolveCodexExternalSandboxPolicyForOpenClawSandbox, c as shouldEnableCodexAppServerNativeToolSurface, l as shouldRequireCodexSandboxExecServerEnvironment, o as resolveCodexMessageToolProvider, s as resolveCodexSandboxEnvironmentSelection, t as buildDynamicTools } from "./dynamic-tool-build-DcaPmBlE.mjs";
22
- import { a as buildCodexNativeHookRelayDisabledConfig, i as buildCodexNativeHookRelayConfig, l as resolveCodexNativeHookRelayEvents, u as resolveCodexNativeHookRelayTtlMs } from "./native-hook-relay-wq7jrNLk.mjs";
23
- import { i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, r as resolveCodexEffectiveSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-CD2MAWU8.mjs";
24
- import { a as handleCodexAppServerApprovalRequest, c as createCodexNativePreToolUseFailureBuffer, d as buildCodexTemporalAdditionalContext, g as buildCodexUserInput, i as createCodexDynamicToolDiagnostics, o as ensureCodexSandboxExecServerEnvironment, r as routeCodexAppServerElicitationRequest, s as releaseCodexSandboxExecServerEnvironment, t as createCodexDynamicToolBridge, y as CodexNativeToolLifecycleProjector } from "./dynamic-tools-CnQFnNKH.mjs";
25
- import { t as resolveCodexAppServerForModelProvider } from "./app-server-policy-D_zv8J7V.mjs";
26
- import { n as resolveCodexProviderWebSearchSupportForClient } from "./provider-capabilities-Dn2WwH4P.mjs";
18
+ import { t as resolveCodexNativeExecutionBlock } from "./sandbox-guard-Cf9XMRrg.mjs";
19
+ import { i as assertCodexSupervisionThreadLineage, n as CodexThreadPolicyHandoffError, o as refreshCodexThreadPolicy } from "./thread-policy-BEiS7ITh.mjs";
20
+ import { o as runCodexCleanupStep } from "./run-attempt-lifecycle-DN-ATDp9.mjs";
21
+ import { a as resolveCodexExternalSandboxPolicyForOpenClawSandbox, c as shouldEnableCodexAppServerNativeToolSurface, l as shouldRequireCodexSandboxExecServerEnvironment, o as resolveCodexMessageToolProvider, s as resolveCodexSandboxEnvironmentSelection, t as buildDynamicTools } from "./dynamic-tool-build-DjbDZzOJ.mjs";
22
+ import { a as buildCodexNativeHookRelayDisabledConfig, i as buildCodexNativeHookRelayConfig, l as resolveCodexNativeHookRelayEvents, u as resolveCodexNativeHookRelayTtlMs } from "./native-hook-relay-BvwSj5bt.mjs";
23
+ import { i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, r as resolveCodexEffectiveSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-C7kYxPGd.mjs";
24
+ import { a as handleCodexAppServerApprovalRequest, c as createCodexNativePreToolUseFailureBuffer, d as buildCodexTemporalAdditionalContext, g as buildCodexUserInput, i as createCodexDynamicToolDiagnostics, o as ensureCodexSandboxExecServerEnvironment, r as routeCodexAppServerElicitationRequest, s as releaseCodexSandboxExecServerEnvironment, t as createCodexDynamicToolBridge, y as CodexNativeToolLifecycleProjector } from "./dynamic-tools-75qoSOch.mjs";
25
+ import { t as resolveCodexAppServerForModelProvider } from "./app-server-policy-V8zuN8q_.mjs";
26
+ import { n as resolveCodexProviderWebSearchSupportForClient } from "./provider-capabilities-B-pTlDsf.mjs";
27
27
  import { readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
28
28
  import { randomUUID } from "node:crypto";
29
29
  import { isDeepStrictEqual } from "node:util";
@@ -1,8 +1,8 @@
1
1
  import { a as defaultCodexAppInventoryCache, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-Bg9DbDI6.mjs";
2
- import { a as withCodexAppServerJsonClient } from "./request-Bo0kKABI.mjs";
3
- import { a as marketplaceRef, o as pluginReadParams, r as isOpenAiCuratedMarketplaceName, u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./plugin-inventory-CYgdo14P.mjs";
4
- import "./config-C1YVVLEA.mjs";
5
- import { t as __exportAll } from "./session-binding-sidecars-DD-enC8w.mjs";
2
+ import { a as withCodexAppServerJsonClient } from "./request-m-H-7FMu.mjs";
3
+ import { a as marketplaceRef, o as pluginReadParams, r as isOpenAiCuratedMarketplaceName, u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./plugin-inventory-OhiCoyPH.mjs";
4
+ import "./config-LQemoqTL.mjs";
5
+ import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
6
6
  import { asNonArrayRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import path from "node:path";
8
8
  import os from "node:os";