@openclaw/codex 2026.9.8 → 2026.10.1-beta.2

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 (151) hide show
  1. package/README.md +8 -0
  2. package/dist/.setup/{account-usage-runtime-G348lY1q.mjs → account-usage-runtime-DGqFpAud.mjs} +5 -5
  3. package/dist/.setup/app-server-policy-Bg4FZw1f.mjs +23 -0
  4. package/dist/.setup/{apply-Cqb-YoCS.mjs → apply-CXTudl9p.mjs} +48 -39
  5. package/dist/.setup/attempt-client-cleanup-BH0hW2xU.mjs +155 -0
  6. package/dist/.setup/{attempt-workspace-context-BJ5Z_olH.mjs → attempt-workspace-context-BY0jprWJ.mjs} +11 -15
  7. package/dist/.setup/{auth-binding-BLWz7stm.mjs → auth-binding-BoMwpuPN.mjs} +17 -25
  8. package/dist/.setup/{auth-cache-key-Dnps4W4_.mjs → auth-cache-key-CGm0UJOr.mjs} +244 -82
  9. package/dist/.setup/{auth-profile-B0okYl2D.mjs → auth-profile-CgHQ8Vot.mjs} +2 -1
  10. package/dist/.setup/{auth-profile-selection-DFu9e167.mjs → auth-profile-selection-hr8ocLtz.mjs} +5 -7
  11. package/dist/.setup/{binding-connection-DTtN1KrX.mjs → binding-connection-C-08ez1w.mjs} +2 -2
  12. package/dist/.setup/{binding-connection.runtime-6TpgD1M6.mjs → binding-connection.runtime-Dn2p-fdy.mjs} +3 -3
  13. package/dist/.setup/{bounded-turn-isolation-B8K_ylqk.mjs → bounded-turn-isolation-DklXNk3k.mjs} +4 -4
  14. package/dist/.setup/{bounded-turn-BNunZPtz.mjs → bounded-turn-pGsfXcmH.mjs} +14 -13
  15. package/dist/.setup/{build-state-DIQ5O_-S.mjs → build-state-CqQnsg7T.mjs} +1 -1
  16. package/dist/.setup/{capabilities-B3WEZl4e.mjs → capabilities-kQntafj_.mjs} +1 -1
  17. package/dist/.setup/{client-qyUBJlGZ.mjs → client-C8lgBOoO.mjs} +438 -160
  18. package/dist/.setup/{client-catalog-response-DRvx_wCC.mjs → client-catalog-response-Bqp7WG51.mjs} +57 -25
  19. package/dist/.setup/command-authorization-AikPDtcc.mjs +15 -0
  20. package/dist/.setup/{command-dispatch-Btrs1D6f.mjs → command-dispatch-DhBbFIQ5.mjs} +3 -3
  21. package/dist/.setup/{command-formatters-R3ckE3Co.mjs → command-formatters-DV3DHhdr.mjs} +7 -5
  22. package/dist/.setup/{command-handlers-DvlCHJch.mjs → command-handlers-ztOOzm6O.mjs} +82 -144
  23. package/dist/.setup/{command-rpc-skzRq4wD.mjs → command-rpc-CuC5fPom.mjs} +23 -31
  24. package/dist/.setup/{compact-8ttks5U5.mjs → compact-tUb9AYfH.mjs} +117 -65
  25. package/dist/.setup/{plugin-metadata-cache-BRwtRct9.mjs → computer-use-BBN9y326.mjs} +65 -202
  26. package/dist/.setup/{config-DKhXquav.mjs → config-0Gxk3_eq.mjs} +5 -6
  27. package/dist/.setup/{config-options-CzyWLTJt.mjs → config-options-HG_Rr3W_.mjs} +13 -23
  28. package/dist/.setup/{config-parsing-b088LyhT.mjs → config-parsing-BQq-CHTF.mjs} +41 -4
  29. package/dist/.setup/{config-runtime-C0NbLms1.mjs → config-runtime-cUYrqu_a.mjs} +2 -2
  30. package/dist/.setup/{config-security-CE-FcGw9.mjs → config-security-KAPScztc.mjs} +20 -36
  31. package/dist/.setup/{context-engine-projection-PezSESth.mjs → context-engine-projection-CsgYSQhW.mjs} +11 -14
  32. package/dist/.setup/{conversation-binding-74LaGGH-.mjs → conversation-binding-B3MNMVzb.mjs} +36 -48
  33. package/dist/.setup/{conversation-binding-data-C746z5Pn.mjs → conversation-binding-data-DJ4ix-W5.mjs} +1 -1
  34. package/dist/.setup/{conversation-control-OrN6zuaY.mjs → conversation-control-CYsMlCuE.mjs} +19 -21
  35. package/dist/.setup/{cyber-failover-XV0nNRZu.mjs → cyber-failover-Bb1J6hS1.mjs} +1 -1
  36. package/dist/.setup/{cyber-failover-notice-RNpGpTyP.mjs → cyber-failover-notice-XR03ef31.mjs} +1 -1
  37. package/dist/.setup/doctor-start-options-DPW9JxIE.mjs +63 -0
  38. package/dist/.setup/dynamic-tool-build-C8xGEXmR.mjs +463 -0
  39. package/dist/.setup/{dynamic-tools-Db2sY5cZ.mjs → dynamic-tools-DyERJnR6.mjs} +238 -878
  40. package/dist/.setup/{effective-mcp-catalog-Bi6-SQ7i.mjs → effective-mcp-catalog-C26Mio5l.mjs} +83 -11
  41. package/dist/.setup/{elicitation-input-DPoK8F7w.mjs → elicitation-input-r9axtppm.mjs} +4 -2
  42. package/dist/.setup/{ephemeral-turn-DiCS1ijR.mjs → ephemeral-turn-D8VcDTNo.mjs} +2 -2
  43. package/dist/.setup/{event-projector-assistant-message-MV_1dj-3.mjs → event-projector-assistant-message-BN7CNUB5.mjs} +2 -2
  44. package/dist/.setup/{event-projector-values-DJSz8BTk.mjs → event-projector-values-DTqZHizf.mjs} +2 -12
  45. package/dist/.setup/{inference-dispatch-CMZtjQyz.mjs → inference-dispatch-B5UKEUyC.mjs} +12 -21
  46. package/dist/.setup/{inference-proxy-DhcXOgUE.mjs → inference-proxy-DUO5E2QQ.mjs} +6 -5
  47. package/dist/.setup/{isolated-completion-D80IXfQF.mjs → isolated-completion-C0jrcplS.mjs} +8 -8
  48. package/dist/.setup/{managed-binary-kiWRhNRE.mjs → managed-binary-C1VFoVPf.mjs} +31 -38
  49. package/dist/.setup/mcp-app-session-preparation-BxN0_CYe.mjs +223 -0
  50. package/dist/.setup/mcp-tool-metadata-j10HhfTC.mjs +43 -0
  51. package/dist/.setup/{model-catalog-DiC0Tkha.mjs → model-catalog-DZyNeDKG.mjs} +7 -7
  52. package/dist/.setup/{models-DfLmPV0k.mjs → models-DSseKSMg.mjs} +10 -7
  53. package/dist/.setup/{native-auth-CuG53tu4.mjs → native-auth-Cjb9y7IZ.mjs} +5 -6
  54. package/dist/.setup/{native-execution-policy-BxZJy5mP.mjs → native-execution-policy-ClzpdG3D.mjs} +1 -12
  55. package/dist/.setup/native-mcp-app-CqcPVmhH.mjs +310 -0
  56. package/dist/.setup/{native-subagent-monitor-BwkQXf9e.mjs → native-subagent-monitor-BUYOUp9X.mjs} +235 -318
  57. package/dist/.setup/{native-subagent-pending-assignments-DwkCzLvD.mjs → native-subagent-pending-assignments-BDqhOdJp.mjs} +0 -4
  58. package/dist/.setup/{native-task-assignments-DMQ0g3hu.mjs → native-task-assignments-C6KVqiN1.mjs} +9 -8
  59. package/dist/.setup/{node-cli-sessions-HC4W6FLI.mjs → node-cli-sessions-B5oNDkUS.mjs} +11 -17
  60. package/dist/.setup/{node-exec-server.runtime-BgBfWQqo.mjs → node-exec-server.runtime-0xSEjKYt.mjs} +2 -2
  61. package/dist/.setup/{plan-DPdMk1Oy.mjs → plan-BJ37d2Og.mjs} +67 -89
  62. package/dist/.setup/{plugin-activation-cNHRfaxU.mjs → plugin-activation-BcyBv8PG.mjs} +4 -4
  63. package/dist/.setup/{plugin-app-cache-key-BL9B5H0L.mjs → plugin-app-cache-key-BW8rd98k.mjs} +11 -15
  64. package/dist/.setup/plugin-approval-roundtrip-CuahdPLC.mjs +109 -0
  65. package/dist/.setup/{plugin-inventory-Cky2XJUw.mjs → plugin-inventory-Bf0_piTw.mjs} +29 -51
  66. package/dist/.setup/{plugin-marketplace-discovery-D_dV9FXa.mjs → plugin-marketplace-discovery-SQPhSuic.mjs} +2 -16
  67. package/dist/.setup/plugin-metadata-cache-DWnB7VMj.mjs +84 -0
  68. package/dist/.setup/plugin-thread-config-deadline-B8LGaZNW.mjs +124 -0
  69. package/dist/.setup/{provider-D6F_7p1I.mjs → provider-BnwHVD_z.mjs} +4 -4
  70. package/dist/.setup/provider-capabilities-D68Whix6.mjs +50 -0
  71. package/dist/.setup/{rate-limits-B7-X2TgG.mjs → rate-limits-CMPy24F5.mjs} +1 -5
  72. package/dist/.setup/{request-BZOfsSXW.mjs → request-jSbhc1sg.mjs} +189 -49
  73. package/dist/.setup/rpc-error-hmWM21RB.mjs +57 -0
  74. package/dist/.setup/{run-attempt-dYJhjZrp.mjs → run-attempt-BLDZeYLD.mjs} +553 -727
  75. package/dist/.setup/{run-attempt-lifecycle-C-6O3Exn.mjs → run-attempt-lifecycle-BuZgVbDA.mjs} +19 -3
  76. package/dist/.setup/{runtime-artifact-DDQ-HGXf.mjs → runtime-artifact-CUTOOnKw.mjs} +5 -6
  77. package/dist/.setup/{runtime-artifact-connection-D68qQn1m.mjs → runtime-artifact-connection-CADz3_BY.mjs} +5 -4
  78. package/dist/.setup/{sandbox-guard-DjCz2eOw.mjs → sandbox-guard-WqE8yPge.mjs} +3 -3
  79. package/dist/.setup/service-tier-normalization-Cei89SW6.mjs +15 -0
  80. package/dist/.setup/{session-binding-DGCYAfvD.mjs → session-binding-Ce7BqiPN.mjs} +92 -102
  81. package/dist/.setup/session-binding-meta-Lkm5Lpf4.mjs +15 -0
  82. package/dist/.setup/session-binding-record-BZB8RgcF.mjs +179 -0
  83. package/dist/.setup/session-binding-record-codec-z4ZpDn6E.mjs +216 -0
  84. package/dist/.setup/{session-binding-sidecars-jo6H8dFr.mjs → session-binding-sidecars-BrdV95Fg.mjs} +8 -2
  85. package/dist/.setup/{session-catalog-adoption-BU_pHWG7.mjs → session-catalog-adoption-CPIP4S_y.mjs} +34 -18
  86. package/dist/.setup/{session-catalog-archive-spHfihri.mjs → session-catalog-archive-DcgwvSbF.mjs} +24 -29
  87. package/dist/.setup/{session-catalog-events-BMCFMZw-.mjs → session-catalog-events-Bdjw9HEn.mjs} +5 -5
  88. package/dist/.setup/{session-catalog-index-DwJjnF5k.mjs → session-catalog-index-DufISKJ6.mjs} +361 -72
  89. package/dist/.setup/{session-catalog-index-order-BcQpHks3.mjs → session-catalog-index-order-nhyO0wdW.mjs} +1 -1
  90. package/dist/.setup/{session-catalog-limits-DDxOsQeC.mjs → session-catalog-limits-DEU36Qlo.mjs} +1 -1
  91. package/dist/.setup/{session-catalog-index-state-TeO7EyO-.mjs → session-catalog-list-request-tXephOB4.mjs} +180 -6
  92. package/dist/.setup/{session-catalog-native-projection-CuaFZuQE.mjs → session-catalog-native-projection-D6IiLtMb.mjs} +7 -6
  93. package/dist/.setup/{session-catalog-node-adoption-DgXvSGu0.mjs → session-catalog-node-adoption-7-WEQTB1.mjs} +12 -2
  94. package/dist/.setup/{session-catalog-node-continue-DjKXHBbi.mjs → session-catalog-node-continue-DLWBwAAO.mjs} +11 -15
  95. package/dist/.setup/{session-catalog-node-lookup-CtAXI5W5.mjs → session-catalog-node-lookup-Uufckwcm.mjs} +2 -2
  96. package/dist/.setup/{session-catalog-parsing-CPGaPYr-.mjs → session-catalog-parsing-B-qWJh2x.mjs} +70 -28
  97. package/dist/.setup/{session-catalog-projection-CGfzfP93.mjs → session-catalog-projection-8aHNwzWD.mjs} +6 -122
  98. package/dist/.setup/{session-catalog-provenance-DoAvktcj.mjs → session-catalog-provenance-CmsOE5mh.mjs} +6 -1
  99. package/dist/.setup/{session-cli-DlmBHYIe.mjs → session-cli-kH4vuGod.mjs} +1 -2
  100. package/dist/.setup/{session-history-D83lJWHG.mjs → session-history-BogBHKLk.mjs} +1 -1
  101. package/dist/.setup/{session-history-import-WhX-X33a.mjs → session-history-import-NWKPa4ZO.mjs} +4 -4
  102. package/dist/.setup/{session-history-read-Ov3StuL4.mjs → session-history-read-CNN8zwbD.mjs} +8 -19
  103. package/dist/.setup/{session-history.worker-MnPKncqP.mjs → session-history.worker-Cq_4DYgN.mjs} +3 -3
  104. package/dist/.setup/{session-initialization-6aveB9qb.mjs → session-initialization-D6dtFQkE.mjs} +2 -2
  105. package/dist/.setup/{session-permission-policy-Ci_fVX6y.mjs → session-permission-policy-BxIUJ0Zd.mjs} +8 -37
  106. package/dist/.setup/{session-retirement-LlYWBKTJ.mjs → session-retirement-Czbchv_O.mjs} +14 -15
  107. package/dist/.setup/{settled-turn-context-D4yj4rxf.mjs → settled-turn-context-BZsMjkIO.mjs} +13 -6
  108. package/dist/.setup/{settled-turn-finalizer-DW9W3gza.mjs → settled-turn-finalizer-DjZsIwbZ.mjs} +8 -8
  109. package/dist/.setup/{shared-client-CJCTeFpQ.mjs → shared-client-qhyYWbew.mjs} +291 -272
  110. package/dist/.setup/{provider-capabilities-DG5qbsUZ.mjs → shell-dynamic-tools-D3Brj3g9.mjs} +16 -55
  111. package/dist/.setup/{side-question-BLeGj7TQ.mjs → side-question-D3NJlgbl.mjs} +99 -91
  112. package/dist/.setup/{source-CJis_1EF.mjs → source-BYu0T780.mjs} +24 -40
  113. package/dist/.setup/{thread-lifecycle-_bAbjedG.mjs → thread-lifecycle-Cbz_7ySv.mjs} +262 -305
  114. package/dist/.setup/{thread-ownership-B6pPt21M.mjs → thread-ownership-DwuSrt3s.mjs} +10 -8
  115. package/dist/.setup/{thread-policy-gNPzzpVp.mjs → thread-policy-DoNxbhqt.mjs} +22 -21
  116. package/dist/.setup/{thread-requests-OWGOiDaV.mjs → thread-requests-CL1e8Wmx.mjs} +107 -98
  117. package/dist/.setup/{thread-resume-GOry0AYh.mjs → thread-resume-BT6NHMkM.mjs} +10 -18
  118. package/dist/.setup/{transcript-history-projection-DRSifI-1.mjs → transcript-history-projection-B9a7HwUV.mjs} +11 -16
  119. package/dist/.setup/{transcript-mirror-kxmCYsuF.mjs → transcript-mirror-BfLRARNL.mjs} +64 -67
  120. package/dist/.setup/{transport-stdio-Bdegpn2V.mjs → transport-stdio-a0HDa2Mj.mjs} +27 -8
  121. package/dist/.setup/{transport-websocket-BTBE-LD9.mjs → transport-websocket-zqJ0Cmtn.mjs} +3 -8
  122. package/dist/.setup/{attempt-client-cleanup-B-S7ngS_.mjs → turn-router-sS69wYnI.mjs} +75 -170
  123. package/dist/.setup/{upstream-session-fork-gkdRj2yH.mjs → upstream-session-fork-ChSld66u.mjs} +35 -46
  124. package/dist/.setup/{usage-CApUvLOV.mjs → usage-D8e8Xiqf.mjs} +4 -4
  125. package/dist/.setup/{usage-limit-error-wSMQkbpV.mjs → usage-limit-error-GbT-5NcW.mjs} +4 -4
  126. package/dist/.setup/{web-search-provider.runtime-UKgeiBUG.mjs → web-search-provider.runtime-dL2GD1Kl.mjs} +4 -20
  127. package/dist/.setup/websocket-data-XlRvt8Ys.mjs +6 -0
  128. package/dist/.setup/workspace-write-sandbox-probe-DmUHLrrl.mjs +118 -0
  129. package/dist/api.js +34 -54
  130. package/dist/catalog-page.worker.js +1 -1
  131. package/dist/cli-metadata.js +1 -1
  132. package/dist/doctor-contract-api.js +15 -27
  133. package/dist/harness.js +37 -22
  134. package/dist/index.js +2880 -276
  135. package/dist/media-understanding-provider.js +2 -2
  136. package/dist/migration-provider-api.js +1 -1
  137. package/dist/native-session-binding-api.js +2 -0
  138. package/dist/provider-discovery.js +1 -1
  139. package/dist/session-history-worker-runtime.js +33 -4
  140. package/dist/session-history.worker.js +1 -1
  141. package/openclaw.plugin.json +3 -3
  142. package/package.json +6 -6
  143. package/dist/.setup/config-utils-D0CXecki.mjs +0 -57
  144. package/dist/.setup/incognito-session-DWYapfwf.mjs +0 -2
  145. package/dist/.setup/managed-thread-store-BMqgThVL.mjs +0 -100
  146. package/dist/.setup/rpc-error-BlD2vuzn.mjs +0 -31
  147. package/dist/.setup/session-binding-meta-B7aEMU7g.mjs +0 -6
  148. package/dist/.setup/session-binding-record-Oe9L-CNY.mjs +0 -375
  149. package/dist/.setup/session-catalog-BFafIiF6.mjs +0 -2599
  150. package/dist/.setup/session-catalog-list-request-CvtxrYSe.mjs +0 -170
  151. package/dist/.setup/shared-client-lifecycle-7xgtlo15.mjs +0 -153
@@ -33,7 +33,7 @@ async function describeCodexImages(req, options) {
33
33
  const model = req.model.trim();
34
34
  if (!model) throw new Error("Codex image understanding requires model id.");
35
35
  req.signal?.throwIfAborted();
36
- const { runBoundedCodexAppServerTurn } = await import("./.setup/bounded-turn-BNunZPtz.mjs");
36
+ const { runBoundedCodexAppServerTurn } = await import("./.setup/bounded-turn-pGsfXcmH.mjs");
37
37
  req.signal?.throwIfAborted();
38
38
  const { text } = await runBoundedCodexAppServerTurn({
39
39
  config: req.cfg,
@@ -73,7 +73,7 @@ async function extractCodexStructured(req, options) {
73
73
  if (req.input.length === 0) throw new Error("Codex structured extraction requires at least one input.");
74
74
  if (!req.input.some((entry) => entry.type === "image")) throw new Error("Codex structured extraction requires at least one image input.");
75
75
  req.signal?.throwIfAborted();
76
- const { runBoundedCodexAppServerTurn } = await import("./.setup/bounded-turn-BNunZPtz.mjs");
76
+ const { runBoundedCodexAppServerTurn } = await import("./.setup/bounded-turn-pGsfXcmH.mjs");
77
77
  req.signal?.throwIfAborted();
78
78
  const { text } = await runBoundedCodexAppServerTurn({
79
79
  config: req.cfg,
@@ -1,2 +1,2 @@
1
- import { t as buildCodexMigrationProvider } from "./.setup/provider-D6F_7p1I.mjs";
1
+ import { t as buildCodexMigrationProvider } from "./.setup/provider-BnwHVD_z.mjs";
2
2
  export { buildCodexMigrationProvider as buildMigrationProvider };
@@ -0,0 +1,2 @@
1
+ import { a as readStoredCodexAppServerBinding } from "./.setup/session-binding-record-codec-z4ZpDn6E.mjs";
2
+ export { readStoredCodexAppServerBinding as readNativeSessionBindingRecord };
@@ -5,7 +5,7 @@ const codexProviderDiscovery = {
5
5
  auth: [],
6
6
  prepareSyntheticAuth: async ({ config, provider, env, signal, pluginRoot }) => {
7
7
  if (provider !== "codex") return;
8
- const { probeCodexNativeAuth } = await import("./.setup/native-auth-CuG53tu4.mjs");
8
+ const { probeCodexNativeAuth } = await import("./.setup/native-auth-Cjb9y7IZ.mjs");
9
9
  return await probeCodexNativeAuth({
10
10
  config,
11
11
  env,
@@ -1,6 +1,6 @@
1
- import { o as codexHistoryRejectionReason } from "./.setup/session-history-read-Ov3StuL4.mjs";
2
- import { t as runCodexHistoryWorkerInput } from "./.setup/session-history.worker-MnPKncqP.mjs";
3
- import { n as resolveCodexHistoryTarget } from "./.setup/session-history-D83lJWHG.mjs";
1
+ import { a as codexHistoryRejectionReason, t as consumeCodexHistory } from "./.setup/session-history-read-CNN8zwbD.mjs";
2
+ import { n as projectVerifiedSettledCodexMessages, t as runCodexHistoryWorkerInput } from "./.setup/session-history.worker-Cq_4DYgN.mjs";
3
+ import { n as resolveCodexHistoryTarget } from "./.setup/session-history-BogBHKLk.mjs";
4
4
  import { WorkerTaskPool, resolveRuntimeWorkerArgv, resolveRuntimeWorkerUrl } from "openclaw/plugin-sdk/process-runtime";
5
5
  import { isIncognitoSessionKey } from "openclaw/plugin-sdk/session-key-runtime";
6
6
  import { fileURLToPath } from "node:url";
@@ -27,9 +27,38 @@ const historyReads = new WorkerTaskPool({
27
27
  workerUrl: resolveCodexHistoryWorkerUrl(),
28
28
  maxWorkers: 1
29
29
  });
30
- async function projectCodexSettledHistoryInWorker(target, signal) {
30
+ async function projectCodexSettledHistoryInWorker(target, signal, contextReader) {
31
31
  signal?.throwIfAborted();
32
+ if (contextReader && !target.sessionTarget) throw new Error("Actor history requires a captured sessionTarget");
32
33
  const resolved = resolveCodexHistoryTarget(target);
34
+ if (contextReader) {
35
+ if (resolved.kind !== "sqlite") throw new Error("Actor history requires a complete matching sessionTarget");
36
+ let result;
37
+ try {
38
+ result = await contextReader(resolved.target, (messages, header) => {
39
+ signal?.throwIfAborted();
40
+ try {
41
+ return {
42
+ status: "ok",
43
+ value: consumeCodexHistory(messages, header, target.sessionId, (history) => projectVerifiedSettledCodexMessages(history, target))
44
+ };
45
+ } catch (error) {
46
+ return {
47
+ status: "rejected",
48
+ reason: codexHistoryRejectionReason(error)
49
+ };
50
+ }
51
+ });
52
+ } catch (error) {
53
+ if (error instanceof SessionTranscriptReadFenceError) result = {
54
+ status: "rejected",
55
+ reason: "snapshot_invalidated"
56
+ };
57
+ else throw error;
58
+ }
59
+ signal?.throwIfAborted();
60
+ return result;
61
+ }
33
62
  const receipt = resolved.kind === "sqlite" ? captureCodexSessionTranscriptReadAdmission(resolved.target) : void 0;
34
63
  const input = {
35
64
  target: resolved,
@@ -1,2 +1,2 @@
1
- import { t as runCodexHistoryWorkerInput } from "./.setup/session-history.worker-MnPKncqP.mjs";
1
+ import { t as runCodexHistoryWorkerInput } from "./.setup/session-history.worker-Cq_4DYgN.mjs";
2
2
  export { runCodexHistoryWorkerInput };
@@ -597,7 +597,7 @@
597
597
  },
598
598
  "enableUltrafast": {
599
599
  "type": "boolean",
600
- "default": false
600
+ "default": true
601
601
  },
602
602
  "cyberFailover": {
603
603
  "type": "object",
@@ -984,8 +984,8 @@
984
984
  "advanced": true
985
985
  },
986
986
  "appServer.enableUltrafast": {
987
- "label": "Enable Ultrafast (for supported models)",
988
- "help": "Use Ultrafast when the selected model advertises access; otherwise keep the current tier. Shared Fast off remains off.",
987
+ "label": "Allow explicit Ultrafast (for supported models)",
988
+ "help": "Allow Ultrafast only when the effective shared Fast-mode selection is explicitly ultrafast and the authenticated app-server catalog advertises it for the selected native model. Unset or true permits explicit selection; false hides Ultrafast for the Codex runtime in the picker, sends ordinary Fast (priority) for an explicit selection, and skips the Ultrafast catalog check. Fast, Auto, and unspecified selections never automatically upgrade. Standard and inactive Auto remain off.",
989
989
  "advanced": true
990
990
  },
991
991
  "appServer.networkProxy": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/codex",
3
- "version": "2026.9.8",
3
+ "version": "2026.10.1-beta.2",
4
4
  "description": "OpenClaw Codex app-server harness and native session supervision plugin.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,8 +8,8 @@
8
8
  },
9
9
  "type": "module",
10
10
  "dependencies": {
11
- "@openai/codex": "0.158.0",
12
- "@openclaw/fs-safe": "0.21.1",
11
+ "@openai/codex": "0.160.0",
12
+ "@openclaw/fs-safe": "0.23.0",
13
13
  "semver": "7.8.5",
14
14
  "smol-toml": "1.8.0",
15
15
  "typebox": "1.3.34",
@@ -38,10 +38,10 @@
38
38
  ]
39
39
  },
40
40
  "compat": {
41
- "pluginApi": ">=2026.9.8"
41
+ "pluginApi": ">=2026.10.1-beta.2"
42
42
  },
43
43
  "build": {
44
- "openclawVersion": "2026.9.8",
44
+ "openclawVersion": "2026.10.1-beta.2",
45
45
  "workerEntries": [
46
46
  "./catalog-page.worker.ts"
47
47
  ]
@@ -66,7 +66,7 @@
66
66
  "assets/activity.svg"
67
67
  ],
68
68
  "peerDependencies": {
69
- "openclaw": ">=2026.9.8"
69
+ "openclaw": ">=2026.10.1-beta.2"
70
70
  },
71
71
  "peerDependenciesMeta": {
72
72
  "openclaw": {
@@ -1,57 +0,0 @@
1
- import { asOptionalRecord as readRecord, normalizeOptionalString as readNonEmptyString } from "openclaw/plugin-sdk/string-coerce-runtime";
2
- import { createHmac, randomBytes } from "node:crypto";
3
- import { splitCommandArgs } from "openclaw/plugin-sdk/process-runtime";
4
- import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
5
- //#region extensions/codex/src/app-server/config-contracts.shared.ts
6
- const CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN = /^[A-Za-z0-9_-]+$/;
7
- //#endregion
8
- //#region extensions/codex/src/app-server/config-utils.ts
9
- const START_OPTIONS_KEY_SECRET_SYMBOL = Symbol.for("openclaw.codexAppServerStartOptionsKeySecret");
10
- const START_OPTIONS_KEY_SECRET = getStartOptionsKeySecret();
11
- const PLAIN_DECIMAL_NUMBER_RE = /^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))$/;
12
- function normalizeCodexServiceTier(value) {
13
- if (typeof value !== "string") return;
14
- const trimmed = value.trim();
15
- if (!trimmed) return;
16
- const normalized = trimmed.toLowerCase();
17
- if (normalized === "fast" || normalized === "priority") return "priority";
18
- if (normalized === "flex") return "flex";
19
- return trimmed;
20
- }
21
- function isCodexFastServiceTier(value) {
22
- return normalizeCodexServiceTier(value) === "priority";
23
- }
24
- function normalizeHeaders(value) {
25
- if (!value || typeof value !== "object" || Array.isArray(value)) return {};
26
- return Object.fromEntries(Object.entries(value).map(([key, child]) => [key.trim(), normalizeResolvedSecretInputString({
27
- value: child,
28
- path: `plugins.entries.codex.config.appServer.headers.${key}`
29
- })]).filter((entry) => Boolean(entry[0] && entry[1])));
30
- }
31
- function readExecSecurity(value) {
32
- return value === "deny" || value === "allowlist" || value === "full" ? value : void 0;
33
- }
34
- function readExecAsk(value) {
35
- return value === "off" || value === "on-miss" || value === "always" ? value : void 0;
36
- }
37
- function readNumberEnv(value) {
38
- const trimmed = value?.trim();
39
- if (!trimmed || !PLAIN_DECIMAL_NUMBER_RE.test(trimmed)) return;
40
- const parsed = Number(trimmed);
41
- return Number.isFinite(parsed) ? parsed : void 0;
42
- }
43
- function resolveArgs(configArgs, envArgs) {
44
- if (Array.isArray(configArgs)) return configArgs.map((entry) => readNonEmptyString(entry)).filter((entry) => entry !== void 0);
45
- return splitCommandArgs(typeof configArgs === "string" ? configArgs : envArgs ?? "", { allowUnclosedQuotes: true });
46
- }
47
- function hashSecretForKey(value, label) {
48
- if (!value) return null;
49
- return createHmac("sha256", START_OPTIONS_KEY_SECRET).update(label).update("\0").update(value).digest("hex");
50
- }
51
- function getStartOptionsKeySecret() {
52
- const globalState = globalThis;
53
- globalState[START_OPTIONS_KEY_SECRET_SYMBOL] ??= randomBytes(32);
54
- return globalState[START_OPTIONS_KEY_SECRET_SYMBOL];
55
- }
56
- //#endregion
57
- export { readExecAsk as a, readNumberEnv as c, CODEX_PLUGIN_MARKETPLACE_NAME_PATTERN as d, normalizeHeaders as i, readRecord as l, isCodexFastServiceTier as n, readExecSecurity as o, normalizeCodexServiceTier as r, readNonEmptyString as s, hashSecretForKey as t, resolveArgs as u };
@@ -1,2 +0,0 @@
1
- import { isIncognitoSessionKey as isIncognitoSessionKey$1 } from "openclaw/plugin-sdk/session-key-runtime";
2
- export { isIncognitoSessionKey$1 as t };
@@ -1,100 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-registration";
3
- import { z } from "zod";
4
- //#region extensions/codex/src/app-server/managed-thread-store.ts
5
- const CODEX_MANAGED_THREAD_NAMESPACE = "app-server-managed-threads";
6
- const CODEX_MANAGED_THREAD_MAX_ENTRIES = 2e4;
7
- const managedThreadSchema = z.object({
8
- version: z.literal(1),
9
- kind: z.literal("managed-thread"),
10
- sourceHomeId: z.string().min(1),
11
- threadId: z.string().min(1),
12
- rolloutPath: z.string().min(1).optional()
13
- });
14
- async function markStartedCodexManagedThread(store, params) {
15
- if (!store) return;
16
- try {
17
- await store.mark({
18
- sourceHomeId: params.sourceHomeId,
19
- threadId: params.threadId,
20
- ...params.rolloutPath ? { rolloutPath: params.rolloutPath } : {}
21
- });
22
- } catch (error) {
23
- embeddedAgentLog.warn("failed to record Codex managed thread ownership", { error });
24
- }
25
- }
26
- function managedThreadStoreKey(sourceHomeId, threadId) {
27
- return `sha256:${createHash("sha256").update("openclaw:codex-managed-thread:v1\0").update(sourceHomeId).update("\0").update(threadId).digest("hex")}`;
28
- }
29
- /** Durable ownership index for Codex threads created by OpenClaw. */
30
- function createCodexManagedThreadStore(state) {
31
- const byHome = /* @__PURE__ */ new Map();
32
- const memberships = /* @__PURE__ */ new Map();
33
- let hydration;
34
- const remember = ({ sourceHomeId, threadId }) => {
35
- const key = managedThreadStoreKey(sourceHomeId, threadId);
36
- if (memberships.has(key)) return key;
37
- memberships.set(key, {
38
- sourceHomeId,
39
- threadId
40
- });
41
- let ids = byHome.get(sourceHomeId);
42
- if (!ids) {
43
- ids = /* @__PURE__ */ new Set();
44
- byHome.set(sourceHomeId, ids);
45
- }
46
- ids.add(threadId);
47
- if (memberships.size > 2e4) {
48
- const oldest = memberships.entries().next().value;
49
- if (oldest) {
50
- memberships.delete(oldest[0]);
51
- const oldestHome = byHome.get(oldest[1].sourceHomeId);
52
- oldestHome?.delete(oldest[1].threadId);
53
- if (oldestHome?.size === 0) byHome.delete(oldest[1].sourceHomeId);
54
- }
55
- }
56
- return key;
57
- };
58
- const snapshot = async () => {
59
- hydration ??= state.entries().then((entries) => {
60
- const marked = new Map(memberships);
61
- memberships.clear();
62
- byHome.clear();
63
- for (const entry of entries.toSorted((a, b) => a.createdAt - b.createdAt)) {
64
- const parsed = managedThreadSchema.safeParse(entry.value);
65
- if (parsed.success) marked.delete(remember(parsed.data));
66
- }
67
- for (const membership of marked.values()) remember(membership);
68
- }).catch((error) => {
69
- hydration = void 0;
70
- throw error;
71
- });
72
- await hydration;
73
- return byHome;
74
- };
75
- return {
76
- async has(sourceHomeId, threadId) {
77
- return (await snapshot()).get(sourceHomeId)?.has(threadId) ?? false;
78
- },
79
- async mark(params) {
80
- try {
81
- const value = managedThreadSchema.parse({
82
- version: 1,
83
- kind: "managed-thread",
84
- sourceHomeId: params.sourceHomeId.trim(),
85
- threadId: params.threadId.trim(),
86
- ...params.rolloutPath?.trim() ? { rolloutPath: params.rolloutPath.trim() } : {}
87
- });
88
- await state.registerIfAbsent(managedThreadStoreKey(value.sourceHomeId, value.threadId), value);
89
- remember(value);
90
- return true;
91
- } catch (error) {
92
- embeddedAgentLog.warn("failed to record Codex managed thread ownership", { error });
93
- return false;
94
- }
95
- },
96
- snapshot
97
- };
98
- }
99
- //#endregion
100
- export { markStartedCodexManagedThread as i, CODEX_MANAGED_THREAD_NAMESPACE as n, createCodexManagedThreadStore as r, CODEX_MANAGED_THREAD_MAX_ENTRIES as t };
@@ -1,31 +0,0 @@
1
- import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
- //#region extensions/codex/src/app-server/rpc-error.ts
3
- const CODEX_APP_SERVER_OVERLOADED_ERROR_CODE = -32001;
4
- /** RPC error wrapper that preserves app-server error code and data. */
5
- var CodexAppServerRpcError = class extends Error {
6
- constructor(error, method) {
7
- super(formatCodexAppServerRpcErrorMessage(error, method));
8
- this.name = "CodexAppServerRpcError";
9
- this.code = error.code;
10
- this.data = error.data;
11
- this.method = method;
12
- }
13
- };
14
- function isCodexThreadReadMissingError(error, threadId) {
15
- return error instanceof CodexAppServerRpcError && error.method === "thread/read" && error.code === -32600 && error.message === `thread not loaded: ${threadId}`;
16
- }
17
- function formatCodexAppServerRpcErrorMessage(error, method) {
18
- const message = error.message || `${method} failed`;
19
- const detail = readCodexAppServerRpcReloginDetail(error.data);
20
- return detail && !message.includes(detail) ? `${message}: ${detail}` : message;
21
- }
22
- function readCodexAppServerRpcReloginDetail(data) {
23
- const record = isJsonObject(data) ? data : void 0;
24
- const nested = isJsonObject(record?.error) ? record.error : record;
25
- if (!nested) return;
26
- const isRelogin = nested.action === "relogin" || nested.reason === "cloudRequirements" && nested.errorCode === "Auth";
27
- const detail = typeof nested.detail === "string" ? nested.detail.trim() : "";
28
- return isRelogin && detail ? detail : void 0;
29
- }
30
- //#endregion
31
- export { CodexAppServerRpcError as n, isCodexThreadReadMissingError as r, CODEX_APP_SERVER_OVERLOADED_ERROR_CODE as t };
@@ -1,6 +0,0 @@
1
- //#region extensions/codex/src/app-server/session-binding-meta.ts
2
- /** Process-stable plugin-state metadata for Codex app-server bindings. */
3
- const CODEX_APP_SERVER_BINDING_NAMESPACE = "app-server-thread-bindings";
4
- const CODEX_APP_SERVER_BINDING_MAX_ENTRIES = 5e4;
5
- //#endregion
6
- export { CODEX_APP_SERVER_BINDING_NAMESPACE as n, CODEX_APP_SERVER_BINDING_MAX_ENTRIES as t };