@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.
- package/README.md +8 -0
- package/dist/.setup/{account-usage-runtime-G348lY1q.mjs → account-usage-runtime-DGqFpAud.mjs} +5 -5
- package/dist/.setup/app-server-policy-Bg4FZw1f.mjs +23 -0
- package/dist/.setup/{apply-Cqb-YoCS.mjs → apply-CXTudl9p.mjs} +48 -39
- package/dist/.setup/attempt-client-cleanup-BH0hW2xU.mjs +155 -0
- package/dist/.setup/{attempt-workspace-context-BJ5Z_olH.mjs → attempt-workspace-context-BY0jprWJ.mjs} +11 -15
- package/dist/.setup/{auth-binding-BLWz7stm.mjs → auth-binding-BoMwpuPN.mjs} +17 -25
- package/dist/.setup/{auth-cache-key-Dnps4W4_.mjs → auth-cache-key-CGm0UJOr.mjs} +244 -82
- package/dist/.setup/{auth-profile-B0okYl2D.mjs → auth-profile-CgHQ8Vot.mjs} +2 -1
- package/dist/.setup/{auth-profile-selection-DFu9e167.mjs → auth-profile-selection-hr8ocLtz.mjs} +5 -7
- package/dist/.setup/{binding-connection-DTtN1KrX.mjs → binding-connection-C-08ez1w.mjs} +2 -2
- package/dist/.setup/{binding-connection.runtime-6TpgD1M6.mjs → binding-connection.runtime-Dn2p-fdy.mjs} +3 -3
- package/dist/.setup/{bounded-turn-isolation-B8K_ylqk.mjs → bounded-turn-isolation-DklXNk3k.mjs} +4 -4
- package/dist/.setup/{bounded-turn-BNunZPtz.mjs → bounded-turn-pGsfXcmH.mjs} +14 -13
- package/dist/.setup/{build-state-DIQ5O_-S.mjs → build-state-CqQnsg7T.mjs} +1 -1
- package/dist/.setup/{capabilities-B3WEZl4e.mjs → capabilities-kQntafj_.mjs} +1 -1
- package/dist/.setup/{client-qyUBJlGZ.mjs → client-C8lgBOoO.mjs} +438 -160
- package/dist/.setup/{client-catalog-response-DRvx_wCC.mjs → client-catalog-response-Bqp7WG51.mjs} +57 -25
- package/dist/.setup/command-authorization-AikPDtcc.mjs +15 -0
- package/dist/.setup/{command-dispatch-Btrs1D6f.mjs → command-dispatch-DhBbFIQ5.mjs} +3 -3
- package/dist/.setup/{command-formatters-R3ckE3Co.mjs → command-formatters-DV3DHhdr.mjs} +7 -5
- package/dist/.setup/{command-handlers-DvlCHJch.mjs → command-handlers-ztOOzm6O.mjs} +82 -144
- package/dist/.setup/{command-rpc-skzRq4wD.mjs → command-rpc-CuC5fPom.mjs} +23 -31
- package/dist/.setup/{compact-8ttks5U5.mjs → compact-tUb9AYfH.mjs} +117 -65
- package/dist/.setup/{plugin-metadata-cache-BRwtRct9.mjs → computer-use-BBN9y326.mjs} +65 -202
- package/dist/.setup/{config-DKhXquav.mjs → config-0Gxk3_eq.mjs} +5 -6
- package/dist/.setup/{config-options-CzyWLTJt.mjs → config-options-HG_Rr3W_.mjs} +13 -23
- package/dist/.setup/{config-parsing-b088LyhT.mjs → config-parsing-BQq-CHTF.mjs} +41 -4
- package/dist/.setup/{config-runtime-C0NbLms1.mjs → config-runtime-cUYrqu_a.mjs} +2 -2
- package/dist/.setup/{config-security-CE-FcGw9.mjs → config-security-KAPScztc.mjs} +20 -36
- package/dist/.setup/{context-engine-projection-PezSESth.mjs → context-engine-projection-CsgYSQhW.mjs} +11 -14
- package/dist/.setup/{conversation-binding-74LaGGH-.mjs → conversation-binding-B3MNMVzb.mjs} +36 -48
- package/dist/.setup/{conversation-binding-data-C746z5Pn.mjs → conversation-binding-data-DJ4ix-W5.mjs} +1 -1
- package/dist/.setup/{conversation-control-OrN6zuaY.mjs → conversation-control-CYsMlCuE.mjs} +19 -21
- package/dist/.setup/{cyber-failover-XV0nNRZu.mjs → cyber-failover-Bb1J6hS1.mjs} +1 -1
- package/dist/.setup/{cyber-failover-notice-RNpGpTyP.mjs → cyber-failover-notice-XR03ef31.mjs} +1 -1
- package/dist/.setup/doctor-start-options-DPW9JxIE.mjs +63 -0
- package/dist/.setup/dynamic-tool-build-C8xGEXmR.mjs +463 -0
- package/dist/.setup/{dynamic-tools-Db2sY5cZ.mjs → dynamic-tools-DyERJnR6.mjs} +238 -878
- package/dist/.setup/{effective-mcp-catalog-Bi6-SQ7i.mjs → effective-mcp-catalog-C26Mio5l.mjs} +83 -11
- package/dist/.setup/{elicitation-input-DPoK8F7w.mjs → elicitation-input-r9axtppm.mjs} +4 -2
- package/dist/.setup/{ephemeral-turn-DiCS1ijR.mjs → ephemeral-turn-D8VcDTNo.mjs} +2 -2
- package/dist/.setup/{event-projector-assistant-message-MV_1dj-3.mjs → event-projector-assistant-message-BN7CNUB5.mjs} +2 -2
- package/dist/.setup/{event-projector-values-DJSz8BTk.mjs → event-projector-values-DTqZHizf.mjs} +2 -12
- package/dist/.setup/{inference-dispatch-CMZtjQyz.mjs → inference-dispatch-B5UKEUyC.mjs} +12 -21
- package/dist/.setup/{inference-proxy-DhcXOgUE.mjs → inference-proxy-DUO5E2QQ.mjs} +6 -5
- package/dist/.setup/{isolated-completion-D80IXfQF.mjs → isolated-completion-C0jrcplS.mjs} +8 -8
- package/dist/.setup/{managed-binary-kiWRhNRE.mjs → managed-binary-C1VFoVPf.mjs} +31 -38
- package/dist/.setup/mcp-app-session-preparation-BxN0_CYe.mjs +223 -0
- package/dist/.setup/mcp-tool-metadata-j10HhfTC.mjs +43 -0
- package/dist/.setup/{model-catalog-DiC0Tkha.mjs → model-catalog-DZyNeDKG.mjs} +7 -7
- package/dist/.setup/{models-DfLmPV0k.mjs → models-DSseKSMg.mjs} +10 -7
- package/dist/.setup/{native-auth-CuG53tu4.mjs → native-auth-Cjb9y7IZ.mjs} +5 -6
- package/dist/.setup/{native-execution-policy-BxZJy5mP.mjs → native-execution-policy-ClzpdG3D.mjs} +1 -12
- package/dist/.setup/native-mcp-app-CqcPVmhH.mjs +310 -0
- package/dist/.setup/{native-subagent-monitor-BwkQXf9e.mjs → native-subagent-monitor-BUYOUp9X.mjs} +235 -318
- package/dist/.setup/{native-subagent-pending-assignments-DwkCzLvD.mjs → native-subagent-pending-assignments-BDqhOdJp.mjs} +0 -4
- package/dist/.setup/{native-task-assignments-DMQ0g3hu.mjs → native-task-assignments-C6KVqiN1.mjs} +9 -8
- package/dist/.setup/{node-cli-sessions-HC4W6FLI.mjs → node-cli-sessions-B5oNDkUS.mjs} +11 -17
- package/dist/.setup/{node-exec-server.runtime-BgBfWQqo.mjs → node-exec-server.runtime-0xSEjKYt.mjs} +2 -2
- package/dist/.setup/{plan-DPdMk1Oy.mjs → plan-BJ37d2Og.mjs} +67 -89
- package/dist/.setup/{plugin-activation-cNHRfaxU.mjs → plugin-activation-BcyBv8PG.mjs} +4 -4
- package/dist/.setup/{plugin-app-cache-key-BL9B5H0L.mjs → plugin-app-cache-key-BW8rd98k.mjs} +11 -15
- package/dist/.setup/plugin-approval-roundtrip-CuahdPLC.mjs +109 -0
- package/dist/.setup/{plugin-inventory-Cky2XJUw.mjs → plugin-inventory-Bf0_piTw.mjs} +29 -51
- package/dist/.setup/{plugin-marketplace-discovery-D_dV9FXa.mjs → plugin-marketplace-discovery-SQPhSuic.mjs} +2 -16
- package/dist/.setup/plugin-metadata-cache-DWnB7VMj.mjs +84 -0
- package/dist/.setup/plugin-thread-config-deadline-B8LGaZNW.mjs +124 -0
- package/dist/.setup/{provider-D6F_7p1I.mjs → provider-BnwHVD_z.mjs} +4 -4
- package/dist/.setup/provider-capabilities-D68Whix6.mjs +50 -0
- package/dist/.setup/{rate-limits-B7-X2TgG.mjs → rate-limits-CMPy24F5.mjs} +1 -5
- package/dist/.setup/{request-BZOfsSXW.mjs → request-jSbhc1sg.mjs} +189 -49
- package/dist/.setup/rpc-error-hmWM21RB.mjs +57 -0
- package/dist/.setup/{run-attempt-dYJhjZrp.mjs → run-attempt-BLDZeYLD.mjs} +553 -727
- package/dist/.setup/{run-attempt-lifecycle-C-6O3Exn.mjs → run-attempt-lifecycle-BuZgVbDA.mjs} +19 -3
- package/dist/.setup/{runtime-artifact-DDQ-HGXf.mjs → runtime-artifact-CUTOOnKw.mjs} +5 -6
- package/dist/.setup/{runtime-artifact-connection-D68qQn1m.mjs → runtime-artifact-connection-CADz3_BY.mjs} +5 -4
- package/dist/.setup/{sandbox-guard-DjCz2eOw.mjs → sandbox-guard-WqE8yPge.mjs} +3 -3
- package/dist/.setup/service-tier-normalization-Cei89SW6.mjs +15 -0
- package/dist/.setup/{session-binding-DGCYAfvD.mjs → session-binding-Ce7BqiPN.mjs} +92 -102
- package/dist/.setup/session-binding-meta-Lkm5Lpf4.mjs +15 -0
- package/dist/.setup/session-binding-record-BZB8RgcF.mjs +179 -0
- package/dist/.setup/session-binding-record-codec-z4ZpDn6E.mjs +216 -0
- package/dist/.setup/{session-binding-sidecars-jo6H8dFr.mjs → session-binding-sidecars-BrdV95Fg.mjs} +8 -2
- package/dist/.setup/{session-catalog-adoption-BU_pHWG7.mjs → session-catalog-adoption-CPIP4S_y.mjs} +34 -18
- package/dist/.setup/{session-catalog-archive-spHfihri.mjs → session-catalog-archive-DcgwvSbF.mjs} +24 -29
- package/dist/.setup/{session-catalog-events-BMCFMZw-.mjs → session-catalog-events-Bdjw9HEn.mjs} +5 -5
- package/dist/.setup/{session-catalog-index-DwJjnF5k.mjs → session-catalog-index-DufISKJ6.mjs} +361 -72
- package/dist/.setup/{session-catalog-index-order-BcQpHks3.mjs → session-catalog-index-order-nhyO0wdW.mjs} +1 -1
- package/dist/.setup/{session-catalog-limits-DDxOsQeC.mjs → session-catalog-limits-DEU36Qlo.mjs} +1 -1
- package/dist/.setup/{session-catalog-index-state-TeO7EyO-.mjs → session-catalog-list-request-tXephOB4.mjs} +180 -6
- package/dist/.setup/{session-catalog-native-projection-CuaFZuQE.mjs → session-catalog-native-projection-D6IiLtMb.mjs} +7 -6
- package/dist/.setup/{session-catalog-node-adoption-DgXvSGu0.mjs → session-catalog-node-adoption-7-WEQTB1.mjs} +12 -2
- package/dist/.setup/{session-catalog-node-continue-DjKXHBbi.mjs → session-catalog-node-continue-DLWBwAAO.mjs} +11 -15
- package/dist/.setup/{session-catalog-node-lookup-CtAXI5W5.mjs → session-catalog-node-lookup-Uufckwcm.mjs} +2 -2
- package/dist/.setup/{session-catalog-parsing-CPGaPYr-.mjs → session-catalog-parsing-B-qWJh2x.mjs} +70 -28
- package/dist/.setup/{session-catalog-projection-CGfzfP93.mjs → session-catalog-projection-8aHNwzWD.mjs} +6 -122
- package/dist/.setup/{session-catalog-provenance-DoAvktcj.mjs → session-catalog-provenance-CmsOE5mh.mjs} +6 -1
- package/dist/.setup/{session-cli-DlmBHYIe.mjs → session-cli-kH4vuGod.mjs} +1 -2
- package/dist/.setup/{session-history-D83lJWHG.mjs → session-history-BogBHKLk.mjs} +1 -1
- package/dist/.setup/{session-history-import-WhX-X33a.mjs → session-history-import-NWKPa4ZO.mjs} +4 -4
- package/dist/.setup/{session-history-read-Ov3StuL4.mjs → session-history-read-CNN8zwbD.mjs} +8 -19
- package/dist/.setup/{session-history.worker-MnPKncqP.mjs → session-history.worker-Cq_4DYgN.mjs} +3 -3
- package/dist/.setup/{session-initialization-6aveB9qb.mjs → session-initialization-D6dtFQkE.mjs} +2 -2
- package/dist/.setup/{session-permission-policy-Ci_fVX6y.mjs → session-permission-policy-BxIUJ0Zd.mjs} +8 -37
- package/dist/.setup/{session-retirement-LlYWBKTJ.mjs → session-retirement-Czbchv_O.mjs} +14 -15
- package/dist/.setup/{settled-turn-context-D4yj4rxf.mjs → settled-turn-context-BZsMjkIO.mjs} +13 -6
- package/dist/.setup/{settled-turn-finalizer-DW9W3gza.mjs → settled-turn-finalizer-DjZsIwbZ.mjs} +8 -8
- package/dist/.setup/{shared-client-CJCTeFpQ.mjs → shared-client-qhyYWbew.mjs} +291 -272
- package/dist/.setup/{provider-capabilities-DG5qbsUZ.mjs → shell-dynamic-tools-D3Brj3g9.mjs} +16 -55
- package/dist/.setup/{side-question-BLeGj7TQ.mjs → side-question-D3NJlgbl.mjs} +99 -91
- package/dist/.setup/{source-CJis_1EF.mjs → source-BYu0T780.mjs} +24 -40
- package/dist/.setup/{thread-lifecycle-_bAbjedG.mjs → thread-lifecycle-Cbz_7ySv.mjs} +262 -305
- package/dist/.setup/{thread-ownership-B6pPt21M.mjs → thread-ownership-DwuSrt3s.mjs} +10 -8
- package/dist/.setup/{thread-policy-gNPzzpVp.mjs → thread-policy-DoNxbhqt.mjs} +22 -21
- package/dist/.setup/{thread-requests-OWGOiDaV.mjs → thread-requests-CL1e8Wmx.mjs} +107 -98
- package/dist/.setup/{thread-resume-GOry0AYh.mjs → thread-resume-BT6NHMkM.mjs} +10 -18
- package/dist/.setup/{transcript-history-projection-DRSifI-1.mjs → transcript-history-projection-B9a7HwUV.mjs} +11 -16
- package/dist/.setup/{transcript-mirror-kxmCYsuF.mjs → transcript-mirror-BfLRARNL.mjs} +64 -67
- package/dist/.setup/{transport-stdio-Bdegpn2V.mjs → transport-stdio-a0HDa2Mj.mjs} +27 -8
- package/dist/.setup/{transport-websocket-BTBE-LD9.mjs → transport-websocket-zqJ0Cmtn.mjs} +3 -8
- package/dist/.setup/{attempt-client-cleanup-B-S7ngS_.mjs → turn-router-sS69wYnI.mjs} +75 -170
- package/dist/.setup/{upstream-session-fork-gkdRj2yH.mjs → upstream-session-fork-ChSld66u.mjs} +35 -46
- package/dist/.setup/{usage-CApUvLOV.mjs → usage-D8e8Xiqf.mjs} +4 -4
- package/dist/.setup/{usage-limit-error-wSMQkbpV.mjs → usage-limit-error-GbT-5NcW.mjs} +4 -4
- package/dist/.setup/{web-search-provider.runtime-UKgeiBUG.mjs → web-search-provider.runtime-dL2GD1Kl.mjs} +4 -20
- package/dist/.setup/websocket-data-XlRvt8Ys.mjs +6 -0
- package/dist/.setup/workspace-write-sandbox-probe-DmUHLrrl.mjs +118 -0
- package/dist/api.js +34 -54
- package/dist/catalog-page.worker.js +1 -1
- package/dist/cli-metadata.js +1 -1
- package/dist/doctor-contract-api.js +15 -27
- package/dist/harness.js +37 -22
- package/dist/index.js +2880 -276
- package/dist/media-understanding-provider.js +2 -2
- package/dist/migration-provider-api.js +1 -1
- package/dist/native-session-binding-api.js +2 -0
- package/dist/provider-discovery.js +1 -1
- package/dist/session-history-worker-runtime.js +33 -4
- package/dist/session-history.worker.js +1 -1
- package/openclaw.plugin.json +3 -3
- package/package.json +6 -6
- package/dist/.setup/config-utils-D0CXecki.mjs +0 -57
- package/dist/.setup/incognito-session-DWYapfwf.mjs +0 -2
- package/dist/.setup/managed-thread-store-BMqgThVL.mjs +0 -100
- package/dist/.setup/rpc-error-BlD2vuzn.mjs +0 -31
- package/dist/.setup/session-binding-meta-B7aEMU7g.mjs +0 -6
- package/dist/.setup/session-binding-record-Oe9L-CNY.mjs +0 -375
- package/dist/.setup/session-catalog-BFafIiF6.mjs +0 -2599
- package/dist/.setup/session-catalog-list-request-CvtxrYSe.mjs +0 -170
- 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-
|
|
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-
|
|
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-
|
|
1
|
+
import { t as buildCodexMigrationProvider } from "./.setup/provider-BnwHVD_z.mjs";
|
|
2
2
|
export { buildCodexMigrationProvider as buildMigrationProvider };
|
|
@@ -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-
|
|
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 {
|
|
2
|
-
import { t as runCodexHistoryWorkerInput } from "./.setup/session-history.worker-
|
|
3
|
-
import { n as resolveCodexHistoryTarget } from "./.setup/session-history-
|
|
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-
|
|
1
|
+
import { t as runCodexHistoryWorkerInput } from "./.setup/session-history.worker-Cq_4DYgN.mjs";
|
|
2
2
|
export { runCodexHistoryWorkerInput };
|
package/openclaw.plugin.json
CHANGED
|
@@ -597,7 +597,7 @@
|
|
|
597
597
|
},
|
|
598
598
|
"enableUltrafast": {
|
|
599
599
|
"type": "boolean",
|
|
600
|
-
"default":
|
|
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": "
|
|
988
|
-
"help": "
|
|
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.
|
|
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.
|
|
12
|
-
"@openclaw/fs-safe": "0.
|
|
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.
|
|
41
|
+
"pluginApi": ">=2026.10.1-beta.2"
|
|
42
42
|
},
|
|
43
43
|
"build": {
|
|
44
|
-
"openclawVersion": "2026.
|
|
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.
|
|
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,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 };
|