@openclaw/codex 2026.10.6 → 2026.10.8

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 (112) hide show
  1. package/README.md +2 -0
  2. package/dist/.setup/{account-usage-runtime-E3SrjJVn.mjs → account-usage-runtime-lUj2JqSj.mjs} +3 -3
  3. package/dist/.setup/{app-server-policy-V8zuN8q_.mjs → app-server-policy-CF-JwGUD.mjs} +1 -1
  4. package/dist/.setup/{apply-C3s-1Zxe.mjs → apply-DjTVE_db.mjs} +8 -8
  5. package/dist/.setup/{attempt-client-cleanup-BVww-ct8.mjs → attempt-client-cleanup-BmPBqnW3.mjs} +5 -5
  6. package/dist/.setup/{attempt-workspace-context-BkA0W8Jy.mjs → attempt-workspace-context-EAeScFrg.mjs} +1 -1
  7. package/dist/.setup/{auth-binding-BFTkrP_b.mjs → auth-binding-D1TJwzWf.mjs} +1 -1
  8. package/dist/.setup/{auth-cache-key-CXK7tmkb.mjs → auth-cache-key-8VTsPn2f.mjs} +3 -3
  9. package/dist/.setup/{binding-connection-C0t9TBX_.mjs → binding-connection-BIo1-hoT.mjs} +2 -2
  10. package/dist/.setup/{binding-connection.runtime-Wdm5G_bw.mjs → binding-connection.runtime-C5yDsKBQ.mjs} +1 -1
  11. package/dist/.setup/{bounded-turn-vdpL2efh.mjs → bounded-turn-DByEneJg.mjs} +11 -11
  12. package/dist/.setup/{bounded-turn-isolation-CIQJykuM.mjs → bounded-turn-isolation-BRNgfoRl.mjs} +2 -2
  13. package/dist/.setup/{build-state-DPMC9C_U.mjs → build-state-vxQdf_74.mjs} +1 -1
  14. package/dist/.setup/{client-Div-zqnz.mjs → client-BTWv2cJe.mjs} +8 -8
  15. package/dist/.setup/{client-catalog-response-Dtob_lVt.mjs → client-catalog-response-CEZTmNz3.mjs} +1 -1
  16. package/dist/.setup/{command-dispatch-ByO36LmS.mjs → command-dispatch-rxpyy4f6.mjs} +1 -1
  17. package/dist/.setup/{command-handlers-CJqo6LZS.mjs → command-handlers-D6utyBA8.mjs} +22 -22
  18. package/dist/.setup/{command-rpc-Co0UzT-T.mjs → command-rpc-CloxIlVK.mjs} +11 -11
  19. package/dist/.setup/{compact-CzNBg4cQ.mjs → compact-CIJFn4Bi.mjs} +13 -13
  20. package/dist/.setup/{computer-use-BcDrQlxi.mjs → computer-use-vLGHqSOu.mjs} +7 -7
  21. package/dist/.setup/{config-LQemoqTL.mjs → config-d0gOFYEk.mjs} +2 -2
  22. package/dist/.setup/{config-runtime-DGB1-VbB.mjs → config-runtime-BUH-IDVE.mjs} +1 -1
  23. package/dist/.setup/{conversation-binding-Dcv7_rs-.mjs → conversation-binding-BUw0IM5Z.mjs} +15 -15
  24. package/dist/.setup/{conversation-binding-data-GRGSgAro.mjs → conversation-binding-data-BqzGWkPW.mjs} +1 -1
  25. package/dist/.setup/{conversation-control-BtPxevoK.mjs → conversation-control-D5qVEey9.mjs} +3 -3
  26. package/dist/.setup/{doctor-start-options-C28ek2hD.mjs → doctor-start-options-DyLrwtq-.mjs} +3 -3
  27. package/dist/.setup/{dynamic-tool-build-DjbDZzOJ.mjs → dynamic-tool-build-OWTT0wP-.mjs} +3 -3
  28. package/dist/.setup/{dynamic-tools-75qoSOch.mjs → dynamic-tools-CygReZGj.mjs} +8 -8
  29. package/dist/.setup/{effective-mcp-catalog-Dz0J8iAj.mjs → effective-mcp-catalog-B_4Dtkdg.mjs} +6 -6
  30. package/dist/.setup/{ephemeral-turn-K_d99r9P.mjs → ephemeral-turn-B1Na_xCj.mjs} +2 -2
  31. package/dist/.setup/{inference-proxy-DSnaS-uS.mjs → inference-proxy-BZgN5W8m.mjs} +3 -3
  32. package/dist/.setup/{isolated-completion-dNt4kRLw.mjs → isolated-completion-DGCmR0Q8.mjs} +5 -5
  33. package/dist/.setup/{managed-binary-DwC9wxch.mjs → managed-binary-Boj8_lWV.mjs} +1 -1
  34. package/dist/.setup/{mcp-app-session-preparation-C7LyxbAm.mjs → mcp-app-session-preparation-DFvoViz9.mjs} +8 -8
  35. package/dist/.setup/{model-catalog-BRJ7RMXY.mjs → model-catalog-CCr0L7T4.mjs} +7 -7
  36. package/dist/.setup/{models-CusrgpiY.mjs → models-CPdqFOZS.mjs} +3 -3
  37. package/dist/.setup/native-assignment-repair-BjS4uyQr.mjs +162 -0
  38. package/dist/.setup/{native-auth-CveRfTpz.mjs → native-auth-TAGxZP-r.mjs} +3 -3
  39. package/dist/.setup/{native-hook-relay-BvwSj5bt.mjs → native-hook-relay-VHeLdZXU.mjs} +4 -4
  40. package/dist/.setup/{native-mcp-app-DDEtVQED.mjs → native-mcp-app-ly1JuStw.mjs} +5 -5
  41. package/dist/.setup/{native-skill-isolation-Cx2AkUco.mjs → native-skill-isolation--6M-3BWV.mjs} +3 -3
  42. package/dist/.setup/{native-subagent-monitor-CBYFkNsB.mjs → native-subagent-monitor-CuNglHrq.mjs} +161 -53
  43. package/dist/.setup/{native-subagent-pending-assignments-DmVhedNs.mjs → native-subagent-pending-assignments-BAOzwy85.mjs} +49 -11
  44. package/dist/.setup/{native-task-assignments-DYL9uxNe.mjs → native-task-assignments-Dap5NqiR.mjs} +4 -4
  45. package/dist/.setup/{node-cli-sessions-BxVYZNuY.mjs → node-cli-sessions-BQNAFnCa.mjs} +2 -2
  46. package/dist/.setup/{node-exec-server.runtime-8RehgPdQ.mjs → node-exec-server.runtime-B-4ogz9C.mjs} +2 -2
  47. package/dist/.setup/{plan-BKFbfVsV.mjs → plan-CqI4m0CC.mjs} +5 -5
  48. package/dist/.setup/{plugin-activation-BgfNFH2L.mjs → plugin-activation-Dbq2m2gh.mjs} +2 -2
  49. package/dist/.setup/{plugin-approval-roundtrip-CXXXhuKi.mjs → plugin-approval-roundtrip-DIE4DZ9S.mjs} +1 -1
  50. package/dist/.setup/{plugin-inventory-OhiCoyPH.mjs → plugin-inventory-CZLnMaxf.mjs} +1 -1
  51. package/dist/.setup/{project-doc-thread-config-D_sWbxFR.mjs → project-doc-thread-config-BYFXSVGk.mjs} +3 -3
  52. package/dist/.setup/{provider-BVV8SWlx.mjs → provider-CBlKf65x.mjs} +4 -4
  53. package/dist/.setup/{provider-capabilities-B-pTlDsf.mjs → provider-capabilities-BIyUe_cz.mjs} +10 -3
  54. package/dist/.setup/{request-m-H-7FMu.mjs → request-6bus8ebp.mjs} +5 -5
  55. package/dist/.setup/{run-attempt-Ch1emiZE.mjs → run-attempt-BcePYT3A.mjs} +168 -86
  56. package/dist/.setup/{runtime-artifact-CCPLKFGR.mjs → runtime-artifact-Ch7fCcgJ.mjs} +3 -3
  57. package/dist/.setup/{runtime-artifact-connection-dFoSOKy7.mjs → runtime-artifact-connection-C3ootnwd.mjs} +2 -2
  58. package/dist/.setup/{sandbox-guard-Cf9XMRrg.mjs → sandbox-guard-CwOc36_1.mjs} +1 -1
  59. package/dist/.setup/{session-binding-BDnNz-Co.mjs → session-binding-_RE7vtVN.mjs} +38 -12
  60. package/dist/.setup/{session-binding-record-C2kDBZhx.mjs → session-binding-record-O62ZRFhy.mjs} +2 -2
  61. package/dist/.setup/{session-binding-sidecars-DijNZb31.mjs → session-binding-sidecars-CAHe3enw.mjs} +1 -1
  62. package/dist/.setup/{session-catalog-adoption-Cl6fHxS5.mjs → session-catalog-adoption-DuChFASf.mjs} +5 -5
  63. package/dist/.setup/{session-catalog-archive-CUU7jEkO.mjs → session-catalog-archive-Bs5cP3zm.mjs} +5 -5
  64. package/dist/.setup/{session-catalog-events-BBV3DMG7.mjs → session-catalog-events-C8i0HBz5.mjs} +4 -4
  65. package/dist/.setup/{session-catalog-index-order-B30rjUEJ.mjs → session-catalog-index-order-CTSrDiE1.mjs} +1 -1
  66. package/dist/.setup/{session-catalog-index-B00GIRi3.mjs → session-catalog-index-zqaZhwr2.mjs} +8 -8
  67. package/dist/.setup/{session-catalog-limits-Daqt3JLk.mjs → session-catalog-limits-9Ay62KQ0.mjs} +1 -1
  68. package/dist/.setup/{session-catalog-list-request-SJyGz02j.mjs → session-catalog-list-request-uKKvUIoN.mjs} +3 -3
  69. package/dist/.setup/{session-catalog-native-projection-BJupfCyt.mjs → session-catalog-native-projection-C6KOqnIb.mjs} +4 -4
  70. package/dist/.setup/{session-catalog-node-adoption-D11N0CMr.mjs → session-catalog-node-adoption-BjYvYtAd.mjs} +2 -2
  71. package/dist/.setup/{session-catalog-node-continue-Ct62GeL1.mjs → session-catalog-node-continue-BEI9D3ev.mjs} +5 -5
  72. package/dist/.setup/{session-catalog-node-lookup-DQVe6vhs.mjs → session-catalog-node-lookup-CBomNvUN.mjs} +2 -2
  73. package/dist/.setup/{session-catalog-parsing-B4OyhylL.mjs → session-catalog-parsing-DmZmgRou.mjs} +1 -1
  74. package/dist/.setup/{session-catalog-projection-CYgFTaYm.mjs → session-catalog-projection-DD5m0grG.mjs} +4 -4
  75. package/dist/.setup/{session-catalog-source-Xt6-hNns.mjs → session-catalog-source-0x1LVwV-.mjs} +1 -1
  76. package/dist/.setup/{session-cli-BoJSZfGd.mjs → session-cli-B1f7NqXo.mjs} +1 -1
  77. package/dist/.setup/{session-history-import-DgwRu2eD.mjs → session-history-import-BhOzqhyI.mjs} +4 -4
  78. package/dist/.setup/{session-history.worker-DJQfek5p.mjs → session-history.worker-D2v5yRcB.mjs} +5 -3
  79. package/dist/.setup/{session-initialization-BjVtsTzi.mjs → session-initialization-Bwe0Bikj.mjs} +1 -1
  80. package/dist/.setup/{session-retirement-DIqF1vQ4.mjs → session-retirement-BIFmgIgn.mjs} +6 -6
  81. package/dist/.setup/{settled-turn-finalizer-dVv34G_E.mjs → settled-turn-finalizer-9WZ-Hnwo.mjs} +5 -5
  82. package/dist/.setup/{shared-client-CNGDTv68.mjs → shared-client-Bo9MCCKj.mjs} +59 -14
  83. package/dist/.setup/{side-question-D1Wa21s9.mjs → side-question-GmfBHNHK.mjs} +17 -17
  84. package/dist/.setup/{source-DyVuYlTN.mjs → source-C4Al9cJx.mjs} +4 -4
  85. package/dist/.setup/{thread-lifecycle-run-DjSfTw6v.mjs → thread-lifecycle-run-avZbRAjm.mjs} +56 -20
  86. package/dist/.setup/{thread-ownership-BBsOFzCM.mjs → thread-ownership-C5Hpc-Q1.mjs} +4 -4
  87. package/dist/.setup/{thread-policy-BEiS7ITh.mjs → thread-policy-BFLbIpIt.mjs} +3 -3
  88. package/dist/.setup/{thread-requests-DjyDmCo4.mjs → thread-requests-pX9_RXpU.mjs} +2 -2
  89. package/dist/.setup/{thread-resume-BqOca2Iy.mjs → thread-resume-LBLXiIEh.mjs} +4 -4
  90. package/dist/.setup/{transcript-mirror-DVEzdOs0.mjs → transcript-mirror-CPdcVWTn.mjs} +1 -1
  91. package/dist/.setup/{transport-stdio-lgeKKHyw.mjs → transport-stdio-BsXQmXll.mjs} +1 -1
  92. package/dist/.setup/{transport-websocket-CEBjEtFP.mjs → transport-websocket-B5mq2Iq2.mjs} +1 -1
  93. package/dist/.setup/{turn-router-DM0fRrYI.mjs → turn-router-Ba0-h2NE.mjs} +1 -1
  94. package/dist/.setup/{upstream-session-fork-CxgShpwe.mjs → upstream-session-fork-C34T_h_K.mjs} +17 -17
  95. package/dist/.setup/{usage-DV8T9Yau.mjs → usage-BHTnwsjV.mjs} +3 -3
  96. package/dist/.setup/{usage-limit-error-ryR1PGou.mjs → usage-limit-error-YNy7uINJ.mjs} +1 -1
  97. package/dist/.setup/{web-search-provider.runtime-DkciK2gS.mjs → web-search-provider.runtime-BOqY-zot.mjs} +2 -2
  98. package/dist/.setup/{workspace-write-sandbox-probe-DvfWTvuR.mjs → workspace-write-sandbox-probe-DB6Y3XLX.mjs} +2 -2
  99. package/dist/.source-module-urls/a8ffe2b9525179f031f130700992add0f356b5fe3e562c8e70b2801696da5134.json +1 -0
  100. package/dist/api.js +3 -3
  101. package/dist/catalog-page.worker.js +1 -1
  102. package/dist/cli-metadata.js +1 -1
  103. package/dist/doctor-contract-api.js +14 -5
  104. package/dist/harness.js +20 -20
  105. package/dist/index.js +68 -58
  106. package/dist/media-understanding-provider.js +2 -2
  107. package/dist/migration-provider-api.js +1 -1
  108. package/dist/provider-discovery.js +1 -1
  109. package/dist/session-history-worker-runtime.js +4 -2
  110. package/dist/session-history.worker.js +1 -1
  111. package/openclaw.plugin.json +5 -0
  112. package/package.json +5 -5
@@ -1,9 +1,9 @@
1
- import { i as adoptCodexNativeSubagentSubmissions, n as mutateNativePendingAssignments, o as mutateCodexNativeSubagentSubmissions } from "./native-subagent-pending-assignments-DmVhedNs.mjs";
1
+ import { a as adoptCodexNativeSubagentSubmissions, c as readCodexNativeSubagentSubmissions, l as codexNativeSubagentRunId, n as mutateNativePendingAssignments, o as matchesCodexNativeSubagentSubmissionOwner, s as mutateCodexNativeSubagentSubmissions } from "./native-subagent-pending-assignments-BAOzwy85.mjs";
2
2
  import { a as readStoredCodexAppServerBinding, i as readCodexBindingTimestamp, n as matchesPendingSupervisionBranch, o as stripUndefinedBinding, r as readCodexAppServerThreadBinding, s as validateBindingForWrite } from "./session-binding-record-codec-CWQXr9os.mjs";
3
- import { a as ownsStoredSessionGeneration, c as preserveNativeTaskImport, d as readCurrentCodexNativeSubagentSubmissions, f as readCurrentNativePendingAssignments, i as matchesCodexNativeSubagentSubmissionBinding, l as readCurrentCodexAppServerBinding, m as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced, o as preserveCodexNativeSubagentSubmissions, p as readPluginAppPolicyContext, r as bindingStoreKey, s as preserveNativePendingAssignments, t as CodexSupervisionBindingReplacementError, u as readCurrentCodexAppServerBindings } from "./session-binding-record-C2kDBZhx.mjs";
3
+ import { a as ownsStoredSessionGeneration, c as preserveNativeTaskImport, d as readCurrentCodexNativeSubagentSubmissions, f as readCurrentNativePendingAssignments, i as matchesCodexNativeSubagentSubmissionBinding, l as readCurrentCodexAppServerBinding, m as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced, o as preserveCodexNativeSubagentSubmissions, p as readPluginAppPolicyContext, r as bindingStoreKey, s as preserveNativePendingAssignments, t as CodexSupervisionBindingReplacementError, u as readCurrentCodexAppServerBindings } from "./session-binding-record-O62ZRFhy.mjs";
4
4
  import { a as PHYSICAL_SESSION_RETIRE_TTL_MS, i as CODEX_APP_SERVER_BINDING_NAMESPACE, n as CODEX_APP_SERVER_BINDING_LEASE, r as CODEX_APP_SERVER_BINDING_MAX_ENTRIES, t as CODEX_APP_SERVER_BINDING_GUARDED_REQUEST_TIMEOUT_MS } from "./session-binding-meta-Lkm5Lpf4.mjs";
5
5
  import { n as normalizeCodexAppServerBindingModelProvider } from "./auth-profile-CgHQ8Vot.mjs";
6
- import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
6
+ import { t as __exportAll } from "./session-binding-sidecars-CAHe3enw.mjs";
7
7
  import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { createHash } from "node:crypto";
9
9
  import { AgentHarnessSessionSupersededError, embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-runtime";
@@ -15,25 +15,51 @@ function mutateNativeSubagentBinding({ identity, current, mutation, assertCurren
15
15
  if (!assertCurrent) throw new Error(`Codex native ${isAssignment ? "assignment" : "subagent submission"} mutation requires current authority.`);
16
16
  assertCurrent();
17
17
  if (current?.state !== "active" || !ownsStoredSessionGeneration(identity, current) || identity.kind === "session" && mutation.owner.sessionId !== identity.sessionId || !matchesCodexNativeSubagentSubmissionBinding(current.binding, mutation.owner)) return { result: false };
18
- const field = isAssignment ? "nativeSubagentAssignments" : "nativeSubagentSubmissions";
19
- const changed = isAssignment ? mutateNativePendingAssignments({
20
- current: current.nativeSubagentAssignments,
21
- owner: mutation.owner,
22
- assignment: mutation.assignment,
23
- consume: mutation.kind === "consume-native-subagent-assignment"
24
- }) : mutateCodexNativeSubagentSubmissions({
18
+ if (isAssignment) {
19
+ const changed = mutateNativePendingAssignments({
20
+ current: current.nativeSubagentAssignments,
21
+ owner: mutation.owner,
22
+ assignment: mutation.assignment,
23
+ consume: mutation.kind === "consume-native-subagent-assignment"
24
+ });
25
+ if (!changed.applied) return { result: mutation.kind === "consume-native-subagent-assignment" && mutation.undelivered === true && changed.absent === true };
26
+ const { nativeSubagentAssignments: _previous, ...bindingOwner } = current;
27
+ const retired = changed.consumed;
28
+ if (retired && mutation.kind === "consume-native-subagent-assignment" && mutation.undelivered) {
29
+ let submissions;
30
+ try {
31
+ submissions = readCodexNativeSubagentSubmissions(bindingOwner.nativeSubagentSubmissions);
32
+ } catch {}
33
+ if (submissions && matchesCodexNativeSubagentSubmissionOwner(submissions.owner, mutation.owner)) {
34
+ const receipts = submissions.receipts.filter((receipt) => receipt.childThreadId !== retired.childThreadId || receipt.submissionId !== retired.nativeTurnId && codexNativeSubagentRunId(receipt.childThreadId, receipt.submissionId) !== retired.runId);
35
+ delete bindingOwner.nativeSubagentSubmissions;
36
+ if (receipts.length) bindingOwner.nativeSubagentSubmissions = {
37
+ ...submissions,
38
+ receipts
39
+ };
40
+ }
41
+ }
42
+ return {
43
+ result: true,
44
+ next: {
45
+ ...bindingOwner,
46
+ ...changed.next ? { nativeSubagentAssignments: changed.next } : {}
47
+ }
48
+ };
49
+ }
50
+ const changed = mutateCodexNativeSubagentSubmissions({
25
51
  current: current.nativeSubagentSubmissions,
26
52
  owner: mutation.owner,
27
53
  receipt: mutation.receipt,
28
54
  consume: mutation.kind === "consume-native-subagent-submission"
29
55
  });
30
56
  if (!changed.applied) return { result: false };
31
- const { [field]: _previous, ...bindingOwner } = current;
57
+ const { nativeSubagentSubmissions: _previous, ...bindingOwner } = current;
32
58
  return {
33
59
  result: true,
34
60
  next: {
35
61
  ...bindingOwner,
36
- ...changed.next ? { [field]: changed.next } : {}
62
+ ...changed.next ? { nativeSubagentSubmissions: changed.next } : {}
37
63
  }
38
64
  };
39
65
  }
@@ -1,6 +1,6 @@
1
- import { a as matchesCodexNativeSubagentSubmissionOwner, h as codexNativeSubagentHistoryConnectionFingerprint, r as readNativePendingAssignments, s as readCodexNativeSubagentSubmissions, t as matchesNativeAssignmentLifecycle } from "./native-subagent-pending-assignments-DmVhedNs.mjs";
1
+ import { c as readCodexNativeSubagentSubmissions, g as codexNativeSubagentHistoryConnectionFingerprint, i as readNativePendingAssignments, o as matchesCodexNativeSubagentSubmissionOwner, t as matchesNativeAssignmentLifecycle } from "./native-subagent-pending-assignments-BAOzwy85.mjs";
2
2
  import { a as readStoredCodexAppServerBinding, t as legacyAppPolicyEntrySchema } from "./session-binding-record-codec-CWQXr9os.mjs";
3
- import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
3
+ import { t as __exportAll } from "./session-binding-sidecars-CAHe3enw.mjs";
4
4
  import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { createHash } from "node:crypto";
6
6
  import { isDeepStrictEqual } from "node:util";
@@ -482,7 +482,7 @@ async function migrateSource(source, candidates, params, store) {
482
482
  return await withFileLock(source.sidecarPath, LEGACY_BINDING_LOCK_OPTIONS, async () => {
483
483
  const [contents, stat] = await Promise.all([fs.readFile(source.sidecarPath, "utf8"), fs.stat(source.sidecarPath)]);
484
484
  const raw = JSON.parse(contents);
485
- const [{ bindingStoreKey, createStoredCodexAppServerBinding, normalizeStoredCodexAppServerBindingFingerprints, readStoredCodexAppServerBinding }, { legacyCodexConversationBindingId }] = await Promise.all([import("./session-binding-BDnNz-Co.mjs").then((n) => n.a), import("./conversation-binding-data-GRGSgAro.mjs").then((n) => n.t)]);
485
+ const [{ bindingStoreKey, createStoredCodexAppServerBinding, normalizeStoredCodexAppServerBindingFingerprints, readStoredCodexAppServerBinding }, { legacyCodexConversationBindingId }] = await Promise.all([import("./session-binding-_RE7vtVN.mjs").then((n) => n.a), import("./conversation-binding-data-BqzGWkPW.mjs").then((n) => n.t)]);
486
486
  const agentId = owner?.agentId ?? (source.agentIds.size === 1 ? [...source.agentIds][0] : void 0);
487
487
  const baseStored = createStoredCodexAppServerBinding(raw, {
488
488
  now: stat.mtime.toISOString(),
@@ -1,8 +1,8 @@
1
- import { T as requireBoundThread, d as boundedCatalogString, o as CatalogParamsError } from "./session-catalog-parsing-B4OyhylL.mjs";
2
- import { m as sessionBindingIdentity } from "./session-binding-record-C2kDBZhx.mjs";
1
+ import { T as requireBoundThread, d as boundedCatalogString, o as CatalogParamsError } from "./session-catalog-parsing-DmZmgRou.mjs";
2
+ import { m as sessionBindingIdentity } from "./session-binding-record-O62ZRFhy.mjs";
3
3
  import { n as codexUpstreamBaseline, t as codexLastTerminalTurnId } from "./session-upstream-marker-D15C9NHp.mjs";
4
- import { r as reclaimCurrentCodexSessionGeneration } from "./session-binding-BDnNz-Co.mjs";
5
- import { adoptionSessionKeyRest, catalogSessionActions } from "./session-catalog-node-adoption-D11N0CMr.mjs";
4
+ import { r as reclaimCurrentCodexSessionGeneration } from "./session-binding-_RE7vtVN.mjs";
5
+ import { adoptionSessionKeyRest, catalogSessionActions } from "./session-catalog-node-adoption-BjYvYtAd.mjs";
6
6
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { listSessionCatalogEntries, sessionCatalogAdoptedSessionKey, sessionCatalogAdoptedSourceKey } from "openclaw/plugin-sdk/session-catalog";
8
8
  //#region extensions/codex/src/session-catalog-adoption.ts
@@ -164,7 +164,7 @@ async function createOrReuseAdoptedSession(params) {
164
164
  sourceThreadId: params.sourceThread.id,
165
165
  ...params.sourceHomeId ? { sourceHomeId: params.sourceHomeId } : {}
166
166
  };
167
- const { createImportedCodexSession } = await import("./session-history-import-DgwRu2eD.mjs");
167
+ const { createImportedCodexSession } = await import("./session-history-import-BhOzqhyI.mjs");
168
168
  const created = await createImportedCodexSession({
169
169
  runtime: params.api.runtime,
170
170
  bindingStore: params.bindingStore,
@@ -1,9 +1,9 @@
1
- import { o as CatalogParamsError } from "./session-catalog-parsing-B4OyhylL.mjs";
2
- import { m as sessionBindingIdentity } from "./session-binding-record-C2kDBZhx.mjs";
1
+ import { o as CatalogParamsError } from "./session-catalog-parsing-DmZmgRou.mjs";
2
+ import { m as sessionBindingIdentity } from "./session-binding-record-O62ZRFhy.mjs";
3
3
  import { t as assertCodexArchiveDescendantsUnowned } from "./thread-archive-guard-LKdwQKyr.mjs";
4
- import "./session-binding-BDnNz-Co.mjs";
5
- import { catalogSessionActions } from "./session-catalog-node-adoption-D11N0CMr.mjs";
6
- import { isAdoptionSessionKeyForThread, requireIdleThread } from "./session-catalog-adoption-Cl6fHxS5.mjs";
4
+ import "./session-binding-_RE7vtVN.mjs";
5
+ import { catalogSessionActions } from "./session-catalog-node-adoption-BjYvYtAd.mjs";
6
+ import { isAdoptionSessionKeyForThread, requireIdleThread } from "./session-catalog-adoption-DuChFASf.mjs";
7
7
  import { listAgentIds } from "openclaw/plugin-sdk/agent-scope-runtime";
8
8
  import { sessionCatalogAdoptedSourceKey } from "openclaw/plugin-sdk/session-catalog";
9
9
  //#region extensions/codex/src/session-catalog-archive.ts
@@ -1,11 +1,11 @@
1
- import { c as MAX_CWD_LENGTH, d as boundedCatalogString } from "./session-catalog-parsing-B4OyhylL.mjs";
2
- import { n as defineCodexBuildState } from "./build-state-DPMC9C_U.mjs";
1
+ import { c as MAX_CWD_LENGTH, d as boundedCatalogString } from "./session-catalog-parsing-DmZmgRou.mjs";
2
+ import { n as defineCodexBuildState } from "./build-state-vxQdf_74.mjs";
3
3
  import { r as inferCodexAppServerConnectionClass } from "./config-security-DpkGNy5T.mjs";
4
4
  import { n as resolveCodexAppServerLocalHomeDir } from "./auth-start-options-BPIPeEX8.mjs";
5
5
  import { n as codexCatalogHomeIdFromCanonicalPath } from "./session-catalog-home-id-vlih0B_g.mjs";
6
6
  import { t as buildCodexAppServerConnectionFingerprint } from "./plugin-app-cache-key-Bg9DbDI6.mjs";
7
- import { n as codexCatalogSourceForClient, o as observeCodexCatalogEphemeralThreads } from "./session-catalog-source-Xt6-hNns.mjs";
8
- import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-BJupfCyt.mjs";
7
+ import { n as codexCatalogSourceForClient, o as observeCodexCatalogEphemeralThreads } from "./session-catalog-source-0x1LVwV-.mjs";
8
+ import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-C6KOqnIb.mjs";
9
9
  import { createHash } from "node:crypto";
10
10
  import { embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-registration";
11
11
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import { t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-Daqt3JLk.mjs";
1
+ import { t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-9Ay62KQ0.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,12 +1,12 @@
1
- import { S as readControlCursor, _ as normalizeLimit, c as MAX_CWD_LENGTH, d as boundedCatalogString, h as filterCatalogPageByTitle, m as codexCatalogThreadStatus, o as CatalogParamsError, p as codexCatalogThreadName } from "./session-catalog-parsing-B4OyhylL.mjs";
2
- import { n as detachCodexCatalogString, t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-Daqt3JLk.mjs";
3
- import { i as retainCodexCatalogRow, n as codexCatalogRowRecency, r as compareCodexCatalogRows, t as CodexCatalogOrdering } from "./session-catalog-index-order-B30rjUEJ.mjs";
4
- import { c as CodexCatalogPersistence, i as CodexCatalogAvailability, l as codexCatalogMetadataPage, r as withCodexCatalogListRequest } from "./session-catalog-list-request-SJyGz02j.mjs";
5
- import { a as hasLiveCodexCatalogSource, c as setCodexCatalogSource, i as getCodexCatalogSource } from "./session-catalog-source-Xt6-hNns.mjs";
6
- import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-BJupfCyt.mjs";
7
- import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-BBV3DMG7.mjs";
1
+ import { S as readControlCursor, _ as normalizeLimit, c as MAX_CWD_LENGTH, d as boundedCatalogString, h as filterCatalogPageByTitle, m as codexCatalogThreadStatus, o as CatalogParamsError, p as codexCatalogThreadName } from "./session-catalog-parsing-DmZmgRou.mjs";
2
+ import { n as detachCodexCatalogString, t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-9Ay62KQ0.mjs";
3
+ import { i as retainCodexCatalogRow, n as codexCatalogRowRecency, r as compareCodexCatalogRows, t as CodexCatalogOrdering } from "./session-catalog-index-order-CTSrDiE1.mjs";
4
+ import { c as CodexCatalogPersistence, i as CodexCatalogAvailability, l as codexCatalogMetadataPage, r as withCodexCatalogListRequest } from "./session-catalog-list-request-uKKvUIoN.mjs";
5
+ import { a as hasLiveCodexCatalogSource, c as setCodexCatalogSource, i as getCodexCatalogSource } from "./session-catalog-source-0x1LVwV-.mjs";
6
+ import { r as projectCodexCatalogNativeThread } from "./session-catalog-native-projection-C6KOqnIb.mjs";
7
+ import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-C8i0HBz5.mjs";
8
8
  import { a as reportCodexCatalogSpawnFailure, n as findCodexAppServerSpawnError } from "./spawn-error-CL3n6MAa.mjs";
9
- import { CodexCatalogProjectionCapacityError, CodexCatalogProjections, mergeCodexCatalogRolloutRow, n as readCodexCatalogRollout, projectCodexCatalogPage, r as resolveCodexCatalogRolloutFingerprint, t as codexCatalogRolloutLogicalPath } from "./session-catalog-projection-CYgFTaYm.mjs";
9
+ import { CodexCatalogProjectionCapacityError, CodexCatalogProjections, mergeCodexCatalogRolloutRow, n as readCodexCatalogRollout, projectCodexCatalogPage, r as resolveCodexCatalogRolloutFingerprint, t as codexCatalogRolloutLogicalPath } from "./session-catalog-projection-DD5m0grG.mjs";
10
10
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
11
11
  import { createHash } from "node:crypto";
12
12
  import { isDeepStrictEqual } from "node:util";
@@ -1,4 +1,4 @@
1
- import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
1
+ import { t as __exportAll } from "./session-binding-sidecars-CAHe3enw.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-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";
1
+ import { o as CatalogParamsError, v as parseCatalogPage } from "./session-catalog-parsing-DmZmgRou.mjs";
2
+ import { n as detachCodexCatalogString } from "./session-catalog-limits-9Ay62KQ0.mjs";
3
+ import { i as retainCodexCatalogRow, r as compareCodexCatalogRows } from "./session-catalog-index-order-CTSrDiE1.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-B4OyhylL.mjs";
1
+ import { D as selectCodexCatalogPreviewInput, c as MAX_CWD_LENGTH, d as boundedCatalogString, k as truncateCodexCatalogPreview } from "./session-catalog-parsing-DmZmgRou.mjs";
2
2
  import { i as isJsonObject } from "./protocol-CANUwXJ3.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";
3
+ import { n as detachCodexCatalogString } from "./session-catalog-limits-9Ay62KQ0.mjs";
4
+ import { r as copyCodexCatalogSource } from "./session-catalog-source-0x1LVwV-.mjs";
5
+ import { t as __exportAll } from "./session-binding-sidecars-CAHe3enw.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-B4OyhylL.mjs";
1
+ import { o as CatalogParamsError } from "./session-catalog-parsing-DmZmgRou.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-DVEzdOs0.mjs").then((n) => n.a);
159
+ const { importCodexThreadHistoryToTranscript } = await import("./transcript-mirror-CPdcVWTn.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-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";
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-DmZmgRou.mjs";
2
+ import { n as createCodexCliNodeConversationBindingData } from "./conversation-binding-data-BqzGWkPW.mjs";
3
+ import { r as CODEX_CLI_SESSION_SOURCE_UPGRADE_MESSAGE, t as CODEX_CLI_SESSION_RESUME_COMMAND } from "./node-cli-sessions-BQNAFnCa.mjs";
4
4
  import { i as withTimeout } from "./timeout-D0mEWSGG.mjs";
5
- import { t as lookupNodeCodexCatalogRecord } from "./session-catalog-node-lookup-DQVe6vhs.mjs";
5
+ import { t as lookupNodeCodexCatalogRecord } from "./session-catalog-node-lookup-CBomNvUN.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-D11N0CMr.mjs";
7
+ import { catalogSessionActions, createOrReuseNodeAdoptedSession, finalizeNodeAdoptedSession, findNodeAdoptedSessionEntry, nodeAdoptedSourceKey, nodeSessionMarker } from "./session-catalog-node-adoption-BjYvYtAd.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-B4OyhylL.mjs";
2
- import "./session-catalog-limits-Daqt3JLk.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-DmZmgRou.mjs";
2
+ import "./session-catalog-limits-9Ay62KQ0.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-Daqt3JLk.mjs";
2
+ import { n as detachCodexCatalogString } from "./session-catalog-limits-9Ay62KQ0.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-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";
1
+ import { D as selectCodexCatalogPreviewInput, O as toCatalogSession, S as readControlCursor, d as boundedCatalogString, k as truncateCodexCatalogPreview } from "./session-catalog-parsing-DmZmgRou.mjs";
2
+ import { n as detachCodexCatalogString } from "./session-catalog-limits-9Ay62KQ0.mjs";
3
+ import { n as codexCatalogRowRecency } from "./session-catalog-index-order-CTSrDiE1.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-Xt6-hNns.mjs";
5
+ import { c as setCodexCatalogSource, i as getCodexCatalogSource, r as copyCodexCatalogSource } from "./session-catalog-source-0x1LVwV-.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-DPMC9C_U.mjs";
1
+ import { n as defineCodexBuildState } from "./build-state-vxQdf_74.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-B4OyhylL.mjs";
1
+ import "./session-catalog-parsing-DmZmgRou.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-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";
1
+ import { m as sessionBindingIdentity } from "./session-binding-record-O62ZRFhy.mjs";
2
+ import "./session-binding-_RE7vtVN.mjs";
3
+ import { r as importCodexThreadHistoryToTranscript } from "./transcript-mirror-CPdcVWTn.mjs";
4
+ import { n as prepareCodexSessionInitialization } from "./session-initialization-Bwe0Bikj.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. */
@@ -305,12 +305,14 @@ function projectVerifiedSettledCodexMessages(history, params) {
305
305
  }
306
306
  /** Yields only the settled prefix, but exhausts suffix identity checks before accepting it. */
307
307
  function* verifiedSettledMessages(history, params, prior) {
308
- const promptIdentity = `${params.turnId}:prompt`;
308
+ const promptIdentity = params.promptIdentity ?? `${params.turnId}:prompt`;
309
309
  const boundaryIndex = params.settledMessages.findLastIndex((message) => message.role === "toolResult");
310
310
  const boundary = params.settledMessages[boundaryIndex];
311
311
  const boundaryIdentity = boundary && readMirrorIdentity(boundary);
312
312
  const requiredIds = params.settledMessages.slice(0, boundaryIndex + 1).flatMap((message) => readMirrorIdentity(message) ?? []);
313
- if (!boundaryIdentity?.startsWith(`${params.turnId}:tool:`) || requiredIds.length !== boundaryIndex + 1 || new Set(requiredIds).size !== requiredIds.length || !requiredIds.includes(promptIdentity)) rejectEvidence();
313
+ const anchorIdentity = params.promptSuppressed ? requiredIds[0] : promptIdentity;
314
+ const hasPrompt = requiredIds.includes(promptIdentity);
315
+ if (!boundaryIdentity?.startsWith(`${params.turnId}:tool:`) || requiredIds.length !== boundaryIndex + 1 || new Set(requiredIds).size !== requiredIds.length || (params.promptSuppressed ? hasPrompt || !anchorIdentity?.startsWith(`${params.turnId}:`) : !hasPrompt)) rejectEvidence();
314
316
  const mirrored = params.mirroredMessages;
315
317
  const mirroredIds = mirrored.flatMap((message) => readMirrorIdentity(message) ?? []);
316
318
  const mirroredBoundaryIndex = mirrored.findIndex((message) => readMirrorIdentity(message) === boundaryIdentity);
@@ -331,7 +333,7 @@ function* verifiedSettledMessages(history, params, prior) {
331
333
  matched += 1;
332
334
  }
333
335
  }
334
- currentStarted ||= identity === promptIdentity;
336
+ currentStarted ||= identity === anchorIdentity;
335
337
  if (!currentStarted) prior.append(message);
336
338
  else if (!throughBoundary) yield message;
337
339
  throughBoundary ||= identity === boundaryIdentity;
@@ -1,5 +1,5 @@
1
1
  import { s as validateBindingForWrite } from "./session-binding-record-codec-CWQXr9os.mjs";
2
- import "./session-binding-BDnNz-Co.mjs";
2
+ import "./session-binding-_RE7vtVN.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,10 +1,10 @@
1
- import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-CXK7tmkb.mjs";
1
+ import { S as retainSharedCodexAppServerClientByInstanceId } from "./auth-cache-key-8VTsPn2f.mjs";
2
2
  import { t as withCodexAppServerThreadMutation } from "./thread-ownership-queue-CeyYScUC.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";
3
+ import { H as isCodexAppServerLiveThreadClaimed, R as hasCodexAppServerLiveThread, q as releaseCodexAppServerLiveThread } from "./shared-client-Bo9MCCKj.mjs";
4
+ import { f as unsubscribeCodexThreadBestEffort, n as CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS, o as closeCodexStartupClientBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-BmPBqnW3.mjs";
5
+ import { t as isSameCodexAppServerThreadOwner } from "./thread-ownership-C5Hpc-Q1.mjs";
6
+ import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-CuNglHrq.mjs";
7
+ import { t as getCodexSessionInitializationRollback } from "./session-initialization-Bwe0Bikj.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 { 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";
3
+ import { at as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-Bo9MCCKj.mjs";
4
+ import { f as assertCodexPassiveTurnItems } from "./client-BTWv2cJe.mjs";
5
+ import { runBoundedCodexAppServerTurn } from "./bounded-turn-DByEneJg.mjs";
6
6
  import { t as resolveCodexLocalRuntimeAttribution } from "./local-runtime-attribution-CZz2DJ4q.mjs";
7
- import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-CIQJykuM.mjs";
7
+ import { t as resolveCodexBoundedTurnIsolation } from "./bounded-turn-isolation-BRNgfoRl.mjs";
8
8
  import { a as createAttributedCodexAssistantMessage } from "./event-projector-assistant-message-CLMKN4x-.mjs";
9
- import { t as codexTranscriptMirrorRuntime } from "./transcript-mirror-DVEzdOs0.mjs";
9
+ import { t as codexTranscriptMirrorRuntime } from "./transcript-mirror-CPdcVWTn.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-DPMC9C_U.mjs";
2
+ import { n as defineCodexBuildState, t as codexBuildSymbol } from "./build-state-vxQdf_74.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
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";
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-Boj8_lWV.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-8VTsPn2f.mjs";
9
+ import { n as resolveCodexAppServerSpawnEnv } from "./transport-stdio-BsXQmXll.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-BBV3DMG7.mjs";
15
- import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DGB1-VbB.mjs";
14
+ import { n as observeCodexCatalogClient } from "./session-catalog-events-C8i0HBz5.mjs";
15
+ import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-BUH-IDVE.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-Div-zqnz.mjs";
19
- import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-CEBjEtFP.mjs";
20
- import { t as __exportAll } from "./session-binding-sidecars-DijNZb31.mjs";
18
+ import { N as isUnsupportedCodexAppServerVersionError, t as CodexAppServerClient } from "./client-BTWv2cJe.mjs";
19
+ import { n as isCodexWebSocketOpenFailure } from "./transport-websocket-B5mq2Iq2.mjs";
20
+ import { t as __exportAll } from "./session-binding-sidecars-CAHe3enw.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";
@@ -1560,6 +1560,47 @@ function resolveExplicitChatgptAccountId(credential) {
1560
1560
  return "accountId" in credential && typeof credential.accountId === "string" ? credential.accountId.trim() || void 0 : void 0;
1561
1561
  }
1562
1562
  //#endregion
1563
+ //#region extensions/codex/src/app-server/client-thread-closure.ts
1564
+ const MAX_CLOSED_THREAD_RECEIPTS = 256;
1565
+ const THREAD_TERMINAL_NOTIFICATION_METHODS = /* @__PURE__ */ new Set([
1566
+ "thread/archived",
1567
+ "thread/deleted",
1568
+ "thread/closed"
1569
+ ]);
1570
+ const closureState = defineCodexBuildState("openclaw.codexAppServerClosedThreads", () => ({
1571
+ closedThreadsByClient: /* @__PURE__ */ new WeakMap(),
1572
+ observedClients: /* @__PURE__ */ new WeakSet()
1573
+ }))();
1574
+ function recordCodexAppServerThreadClosed(client, threadId) {
1575
+ const receipts = closureState.closedThreadsByClient.get(client) ?? /* @__PURE__ */ new Set();
1576
+ receipts.delete(threadId);
1577
+ receipts.add(threadId);
1578
+ while (receipts.size > MAX_CLOSED_THREAD_RECEIPTS) {
1579
+ const oldestThreadId = receipts.values().next().value;
1580
+ if (oldestThreadId === void 0) break;
1581
+ receipts.delete(oldestThreadId);
1582
+ }
1583
+ closureState.closedThreadsByClient.set(client, receipts);
1584
+ }
1585
+ function isCodexAppServerThreadTerminalNotification(method) {
1586
+ return THREAD_TERMINAL_NOTIFICATION_METHODS.has(method);
1587
+ }
1588
+ function ensureCodexAppServerThreadClosureTracking(client) {
1589
+ if (closureState.observedClients.has(client)) return;
1590
+ closureState.observedClients.add(client);
1591
+ client.addNotificationHandler((notification) => {
1592
+ const threadId = notification.params && typeof notification.params === "object" ? Reflect.get(notification.params, "threadId") : void 0;
1593
+ if (isCodexAppServerThreadTerminalNotification(notification.method) && typeof threadId === "string") recordCodexAppServerThreadClosed(client, threadId);
1594
+ });
1595
+ client.addCloseHandler(() => closureState.closedThreadsByClient.delete(client));
1596
+ }
1597
+ function clearCodexAppServerThreadClosed(client, threadId) {
1598
+ closureState.closedThreadsByClient.get(client)?.delete(threadId);
1599
+ }
1600
+ function wasCodexAppServerThreadClosed(client, threadId) {
1601
+ return closureState.closedThreadsByClient.get(client)?.has(threadId) === true;
1602
+ }
1603
+ //#endregion
1563
1604
  //#region extensions/codex/src/app-server/client-thread-owner.ts
1564
1605
  /** Background custody can survive projection replacement only under its creation policy. */
1565
1606
  function isThreadBackgroundOnly(runtime, threadId, configFingerprint) {
@@ -1860,6 +1901,7 @@ function ensureCodexAppServerClientRuntime(client, context) {
1860
1901
  workspaceReferences: /* @__PURE__ */ new Map()
1861
1902
  };
1862
1903
  configuredClients.set(client, runtime);
1904
+ ensureCodexAppServerThreadClosureTracking(client);
1863
1905
  client.addCloseHandler(() => {
1864
1906
  runtime.closed = true;
1865
1907
  clearTimeout(runtime.evictionTimer);
@@ -2007,6 +2049,7 @@ async function retainCodexAppServerLiveThread(client, threadId, releaseThread, c
2007
2049
  return false;
2008
2050
  }
2009
2051
  const previousOwner = runtime.retainedThreads.get(threadId)?.ownerToken;
2052
+ clearCodexAppServerThreadClosed(client, threadId);
2010
2053
  runtime.retainedThreads.delete(threadId);
2011
2054
  const retained = {
2012
2055
  ownerToken,
@@ -2297,8 +2340,10 @@ function supportsInferenceEnvironment(native) {
2297
2340
  if (bypasses.some((entry) => ![
2298
2341
  "127.0.0.1",
2299
2342
  "localhost",
2343
+ "localhost.",
2300
2344
  "::1",
2301
- "[::1]"
2345
+ "[::1]",
2346
+ "127.0.0.0/8"
2302
2347
  ].includes(entry))) return false;
2303
2348
  if ((http || all) && !bypasses.includes("127.0.0.1")) return false;
2304
2349
  return /^https?:\/\//.test(https ?? all ?? "");
@@ -2497,8 +2542,8 @@ async function prepareCodexInferenceRoute(params) {
2497
2542
  throw new Error("Codex inference route limit reached; start a fresh managed native connection before retrying.");
2498
2543
  }
2499
2544
  pending = Promise.all([
2500
- import("./inference-proxy-DSnaS-uS.mjs"),
2501
- import("./native-subagent-monitor-CBYFkNsB.mjs").then((n) => n.n),
2545
+ import("./inference-proxy-BZgN5W8m.mjs"),
2546
+ import("./native-subagent-monitor-CuNglHrq.mjs").then((n) => n.n),
2502
2547
  import("./inference-dispatch-CO6tTs4q.mjs")
2503
2548
  ]).then(([{ createCodexInferenceProxy }, native, { createCodexInferenceModelBinding }]) => {
2504
2549
  assertClient();
@@ -3313,7 +3358,7 @@ async function startInitializedCodexAppServerClientOnce(params) {
3313
3358
  } finally {
3314
3359
  artifactDrain?.cancel();
3315
3360
  }
3316
- const runtimeArtifactModule = params.runtimeArtifactMode ? await import("./runtime-artifact-CCPLKFGR.mjs") : void 0;
3361
+ const runtimeArtifactModule = params.runtimeArtifactMode ? await import("./runtime-artifact-Ch7fCcgJ.mjs") : void 0;
3317
3362
  const runtimeArtifactBeforeStart = runtimeArtifactModule ? await runtimeArtifactModule.captureCodexAppServerRuntimeArtifactBeforeStart({
3318
3363
  startOptions,
3319
3364
  spawnIdentity: resolveCodexAppServerSpawnIdentity(startOptions),
@@ -3567,4 +3612,4 @@ function clearSharedCodexAppServerClientIfCurrentAndUnclaimed(client) {
3567
3612
  };
3568
3613
  }
3569
3614
  //#endregion
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 };
3615
+ 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 _, resolveCodexGatewayTimeoutWithGraceMs as _t, clearSharedCodexAppServerClientIfCurrentAndUnclaimed as a, resolveCodexAppServerPreparedAuthHandoff as at, withLeasedCodexAppServerClientStartSelectionRetry as b, getLeasedSharedCodexAppServerClient as c, hasLegacyCodexComputerUseMcpPolicy as ct, readCodexAppServerClientDesktopGeneration as d, ensureCodexComputerUseSharedPluginCache as dt, createCodexEphemeralThreadPolicy as et, readCodexAppServerClientDesktopGenerationFingerprint as f, assertNotSymlink as ft, resolveCodexNativeConfigFenceKey as g, isCodexAppServerStartupError as gt, releaseLeasedSharedCodexAppServerClient as h, TURN_TERMINAL_SETTLEMENT_TIMEOUT_MS as ht, clearSharedCodexAppServerClientIfCurrent as i, resolveCodexAppServerAuthAccountCacheKey as it, getCodexInferenceThread as j, assertCodexInferenceRouteConfig as k, getSharedCodexAppServerClient as l, isLegacyCodexComputerUsePluginDisabled as lt, releaseCodexAppServerClientLease as m, TURN_FINALIZE_DRAIN_ABORT_GRACE_MS as mt, captureCodexAppServerClientLifetime as n, wasCodexAppServerThreadClosed as nt, clearSharedCodexAppServerClientIfCurrentAndWait as o, resolveBundledComputerUseMarketplacePath as ot, readCodexAppServerClientProcessIdentity as p, CodexAppServerStartupError as pt, releaseCodexAppServerLiveThread as q, captureSharedCodexAppServerCatalogLifetime as r, reconcileCodexComputerUseStartArtifacts as rt, createIsolatedCodexAppServerClient as s, resolveClientManagedBundledMarketplacePath as st, assertCodexAppServerClientStartSelectionCurrent as t, isCodexAppServerThreadTerminalNotification as tt, isCodexAppServerStartSelectionChangedError as u, resolveManagedCodexComputerUseConfig as ut, shared_client_exports as v, resolveCodexStartupTimeoutMs as vt, CodexThreadClientReplacementError as w, CODEX_APP_SERVER_CONTEXT_RESTART_SELECTION_CHANGED as x, waitForCodexAppServerClientDesktopGenerationDrain as y, withCodexStartupTimeout as yt, hasCodexAppServerSiblingThreadWork as z };