@openclaw/codex 2026.9.6 → 2026.9.7
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 +2 -0
- package/assets/icon.png +0 -0
- package/dist/.setup/{account-usage-runtime-Eem_WGqY.mjs → account-usage-runtime-DFhbh1zz.mjs} +5 -5
- package/dist/.setup/{apply-DDOi8uNx.mjs → apply-D3GcSoSa.mjs} +22 -36
- package/dist/.setup/{attempt-client-cleanup-CEv1cKwF.mjs → attempt-client-cleanup-DOP-cW5j.mjs} +128 -37
- package/dist/.setup/attempt-workspace-context-C5HigshI.mjs +164 -0
- package/dist/.setup/{auth-binding-DhLWa_7K.mjs → auth-binding-BLWz7stm.mjs} +14 -1
- package/dist/.setup/{auth-cache-key-B2mpaI9D.mjs → auth-cache-key-Dbvq-QgB.mjs} +36 -34
- package/dist/.setup/{auth-profile-WqZtZfXN.mjs → auth-profile-B0okYl2D.mjs} +1 -2
- package/dist/.setup/auth-start-options-BPIPeEX8.mjs +44 -0
- package/dist/.setup/{binding-connection-ThoatDcb.mjs → binding-connection-DTtN1KrX.mjs} +2 -2
- package/dist/.setup/{binding-connection.runtime-yoHrABt-.mjs → binding-connection.runtime-6TpgD1M6.mjs} +4 -4
- package/dist/.setup/{bounded-turn-B2HScEgT.mjs → bounded-turn-CbjoN2OW.mjs} +15 -18
- package/dist/.setup/bounded-turn-isolation-B8K_ylqk.mjs +14 -0
- package/dist/.setup/{build-state-C7EnDVgr.mjs → build-state-Da1_z0kd.mjs} +1 -1
- package/dist/.setup/{capabilities-CDXOOFdZ.mjs → capabilities-B3WEZl4e.mjs} +2 -10
- package/dist/.setup/{client-Cs08OXVQ.mjs → client-N0JpgSzF.mjs} +138 -399
- package/dist/.setup/{client-catalog-response-BMgt_4q4.mjs → client-catalog-response-5HHLdcde.mjs} +1 -1
- package/dist/.setup/{command-dispatch-B4JuOsOk.mjs → command-dispatch-BeAoaovI.mjs} +5 -8
- package/dist/.setup/{command-formatters-Bmqvr9tO.mjs → command-formatters-R3ckE3Co.mjs} +29 -61
- package/dist/.setup/{command-handlers-DW7Lx9oH.mjs → command-handlers-ylTMS00z.mjs} +222 -343
- package/dist/.setup/{command-rpc-DixIj3HW.mjs → command-rpc-CGJGUQ6Y.mjs} +15 -18
- package/dist/.setup/compact-C2WamavS.mjs +776 -0
- package/dist/.setup/{config-BoTP_mrL.mjs → config-DKhXquav.mjs} +26 -28
- package/dist/.setup/{config-options-BvaRs51b.mjs → config-options-CzyWLTJt.mjs} +24 -37
- package/dist/.setup/{config-parsing-CcB9iPoq.mjs → config-parsing-b088LyhT.mjs} +57 -60
- package/dist/.setup/{config-runtime-C8Rw1m1m.mjs → config-runtime-C0NbLms1.mjs} +2 -2
- package/dist/.setup/{config-security-BEReZ6go.mjs → config-security-CE-FcGw9.mjs} +32 -111
- package/dist/.setup/{config-utils-DujwEnhg.mjs → config-utils-D0CXecki.mjs} +3 -13
- package/dist/.setup/context-engine-projection-PezSESth.mjs +387 -0
- package/dist/.setup/{conversation-binding-DP-gMrBP.mjs → conversation-binding-3Min8qvP.mjs} +67 -90
- package/dist/.setup/{conversation-binding-data-CrcyZk6O.mjs → conversation-binding-data-C746z5Pn.mjs} +8 -12
- package/dist/.setup/{conversation-control-uK9Jomlc.mjs → conversation-control-CEP8X5JC.mjs} +8 -8
- package/dist/.setup/{cyber-failover-DYwbmf1o.mjs → cyber-failover-XV0nNRZu.mjs} +1 -1
- package/dist/.setup/{cyber-failover-notice-e9G3J9-e.mjs → cyber-failover-notice-RNpGpTyP.mjs} +1 -1
- package/dist/.setup/{dynamic-tools-BDXl-8Cw.mjs → dynamic-tools-DzlsLUuS.mjs} +2305 -2606
- package/dist/.setup/{effective-mcp-catalog-CvnvnGIe.mjs → effective-mcp-catalog-CxUtC-xG.mjs} +8 -17
- package/dist/.setup/{ephemeral-turn-poidXgek.mjs → ephemeral-turn-CDsPJOa2.mjs} +3 -3
- package/dist/.setup/event-projector-assistant-message-CigreO4K.mjs +69 -0
- package/dist/.setup/{event-projector-usage-CnBS8Wa3.mjs → event-projector-usage-03R0I2dM.mjs} +3 -25
- package/dist/.setup/event-projector-values-DJSz8BTk.mjs +106 -0
- package/dist/.setup/incognito-session-DWYapfwf.mjs +2 -0
- package/dist/.setup/{inference-context-D96l9-ew.mjs → inference-context-D-9gWlTR.mjs} +16 -18
- package/dist/.setup/inference-dispatch-CMZtjQyz.mjs +359 -0
- package/dist/.setup/inference-metadata-CgIf7sOx.mjs +81 -0
- package/dist/.setup/{inference-proxy-b-aJMSxm.mjs → inference-proxy-DhcXOgUE.mjs} +174 -214
- package/dist/.setup/{isolated-completion-BIZFhTNG.mjs → isolated-completion-Dm3PzxJk.mjs} +9 -12
- package/dist/.setup/{managed-binary-BnshlFag.mjs → managed-binary-kiWRhNRE.mjs} +8 -12
- package/dist/.setup/{model-catalog-CfXJf9Ay.mjs → model-catalog-PAuZgJC6.mjs} +11 -10
- package/dist/.setup/model-runtime-BdqzOMkU.mjs +11 -0
- package/dist/.setup/{models-KnqBv0hE.mjs → models-DHXZtVVk.mjs} +9 -18
- package/dist/.setup/{native-auth-rWbGbMn3.mjs → native-auth-CuG53tu4.mjs} +4 -4
- package/dist/.setup/{native-execution-policy-umd0tgh4.mjs → native-execution-policy-BxZJy5mP.mjs} +5 -30
- package/dist/.setup/{native-subagent-monitor-D3filLY2.mjs → native-subagent-monitor-Dpsmf2wz.mjs} +4395 -3609
- package/dist/.setup/native-subagent-pending-assignments-DwkCzLvD.mjs +203 -0
- package/dist/.setup/native-task-assignments-DMQ0g3hu.mjs +194 -0
- package/dist/.setup/{node-cli-sessions-r3avj02l.mjs → node-cli-sessions-HC4W6FLI.mjs} +19 -49
- package/dist/.setup/{node-exec-server.runtime-BDwWXVpK.mjs → node-exec-server.runtime-BgBfWQqo.mjs} +3 -6
- package/dist/.setup/{plan-CN3VwfNU.mjs → plan-Y-QIvrKB.mjs} +49 -92
- package/dist/.setup/{plugin-activation-DT3MNtqj.mjs → plugin-activation-cNHRfaxU.mjs} +8 -36
- package/dist/.setup/{plugin-app-cache-key-B2CsSdnV.mjs → plugin-app-cache-key-BL9B5H0L.mjs} +6 -23
- package/dist/.setup/{plugin-inventory-BoRei8Z4.mjs → plugin-inventory-Cky2XJUw.mjs} +21 -21
- package/dist/.setup/{plugin-marketplace-discovery-CDOi8IFs.mjs → plugin-marketplace-discovery-D_dV9FXa.mjs} +18 -24
- package/dist/.setup/{plugin-metadata-cache-Ctmo83k_.mjs → plugin-metadata-cache-DsjsL1dr.mjs} +115 -175
- package/dist/.setup/{provider-BOsxQHOM.mjs → provider-DH8NSzGt.mjs} +11 -14
- package/dist/.setup/{provider-capabilities-BfE88FZ5.mjs → provider-capabilities-CAxoF-X1.mjs} +13 -18
- package/dist/.setup/{rate-limits-CMU3DUD0.mjs → rate-limits-B7-X2TgG.mjs} +9 -31
- package/dist/.setup/{request-D2L0zMrq.mjs → request-BHZ1nz8d.mjs} +7 -6
- package/dist/.setup/responses-oauth-twnuTaAa.mjs +93 -0
- package/dist/.setup/rpc-error-BlD2vuzn.mjs +31 -0
- package/dist/.setup/{run-attempt-BHu11r7h.mjs → run-attempt-D8RZUOzY.mjs} +1035 -1023
- package/dist/.setup/{run-attempt-lifecycle-B7JbY4-F.mjs → run-attempt-lifecycle-C-6O3Exn.mjs} +10 -24
- package/dist/.setup/{runtime-artifact-CLZ8udh-.mjs → runtime-artifact-DDQ-HGXf.mjs} +16 -4
- package/dist/.setup/runtime-artifact-connection-D68qQn1m.mjs +78 -0
- package/dist/.setup/sandbox-guard-DjCz2eOw.mjs +126 -0
- package/dist/.setup/scope-DOC1Xjc8.mjs +6 -0
- package/dist/.setup/session-binding-DGCYAfvD.mjs +443 -0
- package/dist/.setup/{session-binding-record-BGoz8wOK.mjs → session-binding-record-Oe9L-CNY.mjs} +52 -130
- package/dist/.setup/{session-binding-sidecars-BlB5EvIS.mjs → session-binding-sidecars-jo6H8dFr.mjs} +196 -17
- package/dist/.setup/{session-catalog-Pno1xGcl.mjs → session-catalog-4sCdv5qx.mjs} +170 -324
- package/dist/.setup/{session-catalog-adoption-BI6UTDZT.mjs → session-catalog-adoption-BU_pHWG7.mjs} +7 -6
- package/dist/.setup/{session-catalog-archive-lHBqzhaO.mjs → session-catalog-archive-spHfihri.mjs} +6 -6
- package/dist/.setup/session-catalog-events-DePDzzjc.mjs +139 -0
- package/dist/.setup/session-catalog-home-id-vlih0B_g.mjs +22 -0
- package/dist/.setup/{session-catalog-index-B9_VQIUz.mjs → session-catalog-index-CZvDzC6z.mjs} +126 -122
- package/dist/.setup/{session-catalog-index-order-hcdz07yN.mjs → session-catalog-index-order-BcQpHks3.mjs} +1 -1
- package/dist/.setup/{session-catalog-index-state-Dgh8ORJm.mjs → session-catalog-index-state-TeO7EyO-.mjs} +3 -2
- package/dist/.setup/session-catalog-limits-DDxOsQeC.mjs +14 -0
- package/dist/.setup/session-catalog-list-request-CvtxrYSe.mjs +170 -0
- package/dist/.setup/session-catalog-native-projection-DjhwGL6x.mjs +178 -0
- package/dist/.setup/{session-catalog-node-adoption-ITddWx_X.mjs → session-catalog-node-adoption-DgXvSGu0.mjs} +10 -27
- package/dist/.setup/{session-catalog-node-continue-6g6qi4A9.mjs → session-catalog-node-continue-DjKXHBbi.mjs} +8 -10
- package/dist/.setup/session-catalog-node-lookup-CtAXI5W5.mjs +56 -0
- package/dist/.setup/{session-catalog-native-projection-DowriLid.mjs → session-catalog-parsing-CPGaPYr-.mjs} +11 -194
- package/dist/.setup/{session-catalog-projection-zK_PUsiE.mjs → session-catalog-projection-Cr5qP5Dj.mjs} +6 -4
- package/dist/.setup/session-catalog-provenance-DoAvktcj.mjs +95 -0
- package/dist/.setup/{session-cli-irrD-uo7.mjs → session-cli-Cn_nCqfq.mjs} +9 -22
- package/dist/.setup/{session-history-BrqhSCf9.mjs → session-history-D83lJWHG.mjs} +4 -6
- package/dist/.setup/{session-history-import-D-3wAgOP.mjs → session-history-import-WhX-X33a.mjs} +7 -10
- package/dist/.setup/session-history-read-Ov3StuL4.mjs +133 -0
- package/dist/.setup/{session-history.worker-CaCh0xF_.mjs → session-history.worker-MnPKncqP.mjs} +9 -5
- package/dist/.setup/session-initialization-6aveB9qb.mjs +22 -0
- package/dist/.setup/{session-permission-policy-BI1QK_98.mjs → session-permission-policy-Ci_fVX6y.mjs} +4 -8
- package/dist/.setup/{session-retirement-BH-S6qkJ.mjs → session-retirement-qMTxkNx2.mjs} +17 -17
- package/dist/.setup/{settled-turn-context-fmwouT5I.mjs → settled-turn-context-D4yj4rxf.mjs} +1 -1
- package/dist/.setup/{settled-turn-finalizer-DiAi6Kx6.mjs → settled-turn-finalizer-BsvEabkw.mjs} +14 -10
- package/dist/.setup/{shared-client-DA4VR4Eb.mjs → shared-client-DqyTMYug.mjs} +783 -412
- package/dist/.setup/shared-client-lifecycle-DJIgqgMw.mjs +153 -0
- package/dist/.setup/{side-question-BJ1wSDcB.mjs → side-question-C4kCmQy1.mjs} +79 -143
- package/dist/.setup/{source-CUzJq5WN.mjs → source-CS_7GFJZ.mjs} +80 -137
- package/dist/.setup/{thread-lifecycle-B3mfz1TG.mjs → thread-lifecycle-DPflntEJ.mjs} +294 -737
- package/dist/.setup/{incognito-session-uhrBF6wJ.mjs → thread-ownership-queue-Dp24d7-F.mjs} +1 -2
- package/dist/.setup/{thread-ownership-DcTtAcXj.mjs → thread-ownership-roNP0l1c.mjs} +45 -10
- package/dist/.setup/{thread-policy-DGuQsuFC.mjs → thread-policy-DTd-DtkX.mjs} +46 -7
- package/dist/.setup/{thread-requests-BLvGkP2R.mjs → thread-requests-B_bRnMGN.mjs} +199 -302
- package/dist/.setup/{thread-resume-DIBXwOpE.mjs → thread-resume-CdDaoc7T.mjs} +6 -6
- package/dist/.setup/{timeout-C910MdAB.mjs → timeout-CXOfNoaX.mjs} +1 -35
- package/dist/.setup/{transcript-history-projection-ZZpkFkJ_.mjs → transcript-history-projection-DRSifI-1.mjs} +17 -89
- package/dist/.setup/{transcript-mirror-attestation-CzM-94NC.mjs → transcript-mirror-attestation-YSegaktH.mjs} +3 -4
- package/dist/.setup/{transcript-mirror-BtHDBp1G.mjs → transcript-mirror-kxmCYsuF.mjs} +7 -9
- package/dist/.setup/{transport-stdio-h2VHOskC.mjs → transport-stdio-Bdegpn2V.mjs} +5 -22
- package/dist/.setup/transport-websocket-BTBE-LD9.mjs +211 -0
- package/dist/.setup/{upstream-prompt-provenance-LphB8slG.mjs → upstream-prompt-provenance-fXkKbPVC.mjs} +3 -9
- package/dist/.setup/{upstream-session-fork-BUr4OUbC.mjs → upstream-session-fork-CBeVjBpT.mjs} +23 -23
- package/dist/.setup/{usage-BML0r-ua.mjs → usage-BMzNxeR_.mjs} +4 -4
- package/dist/.setup/{usage-limit-error-DUMbefVY.mjs → usage-limit-error-QXerDo3i.mjs} +4 -19
- package/dist/.setup/{web-search-provider.runtime-CDKlN-Rv.mjs → web-search-provider.runtime-P77OUeoo.mjs} +8 -19
- package/dist/api.js +9 -11
- package/dist/catalog-page.worker.js +1 -1
- package/dist/cli-metadata.js +1 -1
- package/dist/doctor-contract-api.js +50 -8
- package/dist/harness.js +344 -1
- package/dist/index.js +193 -245
- package/dist/media-understanding-provider.js +9 -22
- package/dist/migration-provider-api.js +1 -1
- package/dist/provider-discovery.js +1 -1
- package/dist/session-history-worker-runtime.js +3 -3
- package/dist/session-history.worker.js +1 -1
- package/openclaw.plugin.json +14 -2
- package/package.json +7 -6
- package/dist/.setup/attempt-workspace-context-DUVEn_CS.mjs +0 -331
- package/dist/.setup/compact-Du5UvtxA.mjs +0 -680
- package/dist/.setup/event-projector-assistant-message-BsruvNrH.mjs +0 -103
- package/dist/.setup/event-projector-items-C6L_5ZiT.mjs +0 -234
- package/dist/.setup/harness-a_MsE4-_.mjs +0 -355
- package/dist/.setup/history-rejection-B4nOXNXF.mjs +0 -13
- package/dist/.setup/image-payload-sanitizer-tupAr-2o.mjs +0 -79
- package/dist/.setup/local-runtime-attribution-B_2mnqhb.mjs +0 -19
- package/dist/.setup/native-subagent-history-0nYYgo0k.mjs +0 -148
- package/dist/.setup/native-subagent-task-ids-wb8CKZGN.mjs +0 -441
- package/dist/.setup/plugin-approval-roundtrip-C0MZzCuP.mjs +0 -122
- package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
- package/dist/.setup/sandbox-guard-C2sRMOEY.mjs +0 -166
- package/dist/.setup/session-binding-Cm0apEbd.mjs +0 -692
- package/dist/.setup/session-catalog-events-Bj6j94E_.mjs +0 -347
- package/dist/.setup/session-history-read-B3ZfSUbF.mjs +0 -50
- package/dist/.setup/session-initialization-rcgbZiid.mjs +0 -75
- package/dist/.setup/thread-history-page-DoVpnHim.mjs +0 -83
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
|
|
2
2
|
import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
|
|
3
|
-
import { isIncognitoSessionKey as isIncognitoSessionKey$1 } from "openclaw/plugin-sdk/session-key-runtime";
|
|
4
3
|
//#region extensions/codex/src/app-server/thread-ownership-queue.ts
|
|
5
4
|
const nativeThreadOwners = resolveGlobalSingleton(Symbol.for("openclaw.codexNativeThreadOwners"), () => new KeyedAsyncQueue());
|
|
6
5
|
/** Serialize OpenClaw-owned lifecycle changes, not native-internal thread controllers. */
|
|
@@ -12,4 +11,4 @@ async function withCodexConversationThreadActivity(bindingId, run) {
|
|
|
12
11
|
return await nativeThreadOwners.enqueue(`conversation:${bindingId}`, run);
|
|
13
12
|
}
|
|
14
13
|
//#endregion
|
|
15
|
-
export {
|
|
14
|
+
export { withCodexConversationThreadActivity as n, withCodexAppServerThreadMutation as t };
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-
|
|
1
|
+
import { l as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-DJIgqgMw.mjs";
|
|
2
|
+
import { t as withCodexAppServerThreadMutation } from "./thread-ownership-queue-Dp24d7-F.mjs";
|
|
3
|
+
import { G as releaseCodexAppServerLiveThread, K as retainCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed } from "./shared-client-DqyTMYug.mjs";
|
|
4
|
+
import { o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-DOP-cW5j.mjs";
|
|
5
|
+
import { t as __exportAll } from "./session-binding-sidecars-jo6H8dFr.mjs";
|
|
6
|
+
import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
|
|
7
|
+
import { runWithAsyncWorkResources } from "openclaw/plugin-sdk/agent-harness-tool-runtime";
|
|
5
8
|
//#region extensions/codex/src/app-server/thread-ownership.ts
|
|
6
9
|
var thread_ownership_exports = /* @__PURE__ */ __exportAll({
|
|
7
10
|
isSameCodexAppServerThreadOwner: () => isSameCodexAppServerThreadOwner,
|
|
@@ -9,8 +12,36 @@ var thread_ownership_exports = /* @__PURE__ */ __exportAll({
|
|
|
9
12
|
retainCodexAppServerBindingSubscription: () => retainCodexAppServerBindingSubscription,
|
|
10
13
|
retireCodexConversationThreadBinding: () => retireCodexConversationThreadBinding,
|
|
11
14
|
rollbackCodexAppServerBindingSubscription: () => rollbackCodexAppServerBindingSubscription,
|
|
15
|
+
withCodexAppServerThreadMutationHold: () => withCodexAppServerThreadMutationHold,
|
|
12
16
|
withExclusiveCodexAppServerThread: () => withExclusiveCodexAppServerThread
|
|
13
17
|
});
|
|
18
|
+
/** Queued cancellation settles the caller without letting successors overtake its lane. */
|
|
19
|
+
async function withCodexAppServerThreadMutationHold(threadId, run, signal) {
|
|
20
|
+
return await runWithAsyncWorkResources(async (onAcquired) => {
|
|
21
|
+
signal?.throwIfAborted();
|
|
22
|
+
const { promise, resolve, reject } = createDeferred();
|
|
23
|
+
const abort = () => reject(signal?.reason instanceof Error ? signal.reason : /* @__PURE__ */ new Error("compaction aborted"));
|
|
24
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
25
|
+
const start = () => signal?.removeEventListener("abort", abort);
|
|
26
|
+
const queued = withCodexAppServerThreadMutation(threadId, async () => {
|
|
27
|
+
let heldUntil;
|
|
28
|
+
try {
|
|
29
|
+
signal?.throwIfAborted();
|
|
30
|
+
resolve(await run((until) => {
|
|
31
|
+
heldUntil ??= until;
|
|
32
|
+
}, start));
|
|
33
|
+
} catch (error) {
|
|
34
|
+
reject(error);
|
|
35
|
+
}
|
|
36
|
+
await heldUntil;
|
|
37
|
+
});
|
|
38
|
+
onAcquired({ release: async () => {
|
|
39
|
+
await Promise.allSettled([queued]);
|
|
40
|
+
} });
|
|
41
|
+
queued.finally(start).catch(reject);
|
|
42
|
+
return promise;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
14
45
|
/** Codex subscriptions belong to a physical connection, not the native thread ID alone. */
|
|
15
46
|
function isSameCodexAppServerThreadOwner(current, expected) {
|
|
16
47
|
return current !== void 0 && expected !== void 0 && current.threadId === expected.threadId && current.clientId === expected.clientId;
|
|
@@ -48,7 +79,7 @@ async function rollbackCodexAppServerBindingSubscription(client, threadId, retai
|
|
|
48
79
|
/** Releases only the physical client and native thread recorded by the displaced binding owner. */
|
|
49
80
|
async function releaseCodexAppServerBindingSubscription(binding, options = {}) {
|
|
50
81
|
options.assertCurrent?.();
|
|
51
|
-
const clientLease = retainSharedCodexAppServerClientByInstanceId(binding.clientId);
|
|
82
|
+
const clientLease = await retainSharedCodexAppServerClientByInstanceId(binding.clientId);
|
|
52
83
|
if (!clientLease) return;
|
|
53
84
|
try {
|
|
54
85
|
if (await releaseCodexAppServerLiveThread(clientLease.client, binding.threadId, options.assertCurrent)) return;
|
|
@@ -64,7 +95,7 @@ async function releaseCodexAppServerBindingSubscription(binding, options = {}) {
|
|
|
64
95
|
throw new CodexAppServerUnsafeSubscriptionError(`Codex retired thread subscription could not be released: ${binding.threadId}`);
|
|
65
96
|
}
|
|
66
97
|
} finally {
|
|
67
|
-
clientLease.release();
|
|
98
|
+
await clientLease.release(binding.clientId !== options.retainedClientId && !isCodexAppServerLiveThreadClaimed(clientLease.client, binding.threadId));
|
|
68
99
|
}
|
|
69
100
|
}
|
|
70
101
|
/** Clears and releases one exact conversation generation without touching its replacement. */
|
|
@@ -76,13 +107,17 @@ async function retireCodexConversationThreadBinding(params) {
|
|
|
76
107
|
const current = params.bindingStore.read(params.identity);
|
|
77
108
|
if (!current || !isSameCodexAppServerThreadOwner(current, expected) || params.expectedStartId && current?.conversationStartId !== params.expectedStartId) return false;
|
|
78
109
|
assertCurrent?.();
|
|
79
|
-
await releaseCodexAppServerBindingSubscription(current, {
|
|
110
|
+
await releaseCodexAppServerBindingSubscription(current, {
|
|
111
|
+
allowUntracked: params.allowUntracked,
|
|
112
|
+
assertCurrent
|
|
113
|
+
});
|
|
80
114
|
const cleared = await params.bindingStore.mutate(params.identity, {
|
|
81
115
|
kind: "clear",
|
|
82
116
|
threadId: current.threadId
|
|
83
|
-
});
|
|
117
|
+
}, assertCurrent);
|
|
84
118
|
if (!cleared || !params.afterClear) return cleared;
|
|
85
119
|
try {
|
|
120
|
+
assertCurrent?.();
|
|
86
121
|
await params.afterClear();
|
|
87
122
|
return true;
|
|
88
123
|
} catch (error) {
|
|
@@ -91,7 +126,7 @@ async function retireCodexConversationThreadBinding(params) {
|
|
|
91
126
|
kind: "set",
|
|
92
127
|
binding: current,
|
|
93
128
|
if: { kind: "absent" }
|
|
94
|
-
})) throw new Error("the previous Codex binding generation could not be restored", { cause: error });
|
|
129
|
+
}, assertCurrent)) throw new Error("the previous Codex binding generation could not be restored", { cause: error });
|
|
95
130
|
} catch (restorationError) {
|
|
96
131
|
throw new AggregateError([error, restorationError], `Codex conversation detachment failed and native thread ${current.threadId} could not be restored; run /codex resume ${current.threadId} to recover it`, { cause: restorationError });
|
|
97
132
|
}
|
|
@@ -100,4 +135,4 @@ async function retireCodexConversationThreadBinding(params) {
|
|
|
100
135
|
}));
|
|
101
136
|
}
|
|
102
137
|
//#endregion
|
|
103
|
-
export { rollbackCodexAppServerBindingSubscription as a, retireCodexConversationThreadBinding as i, releaseCodexAppServerBindingSubscription as n, thread_ownership_exports as o, retainCodexAppServerBindingSubscription as r,
|
|
138
|
+
export { rollbackCodexAppServerBindingSubscription as a, withExclusiveCodexAppServerThread as c, retireCodexConversationThreadBinding as i, releaseCodexAppServerBindingSubscription as n, thread_ownership_exports as o, retainCodexAppServerBindingSubscription as r, withCodexAppServerThreadMutationHold as s, isSameCodexAppServerThreadOwner as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { r as requestCodexAppServerClientJson, t as CodexAppServerScopedRequestRejectedError } from "./request-
|
|
2
|
-
import { S as CodexAdoptedThreadActiveError } from "./shared-client-
|
|
3
|
-
import { l as isCodexAppServerOverloadError, u as isCodexAppServerPrewriteRequestCancellationError, v as assertCodexThreadAcceptsDirectInput } from "./client-
|
|
4
|
-
import { AgentHarnessPreflightError } from "openclaw/plugin-sdk/agent-harness-runtime";
|
|
1
|
+
import { r as requestCodexAppServerClientJson, t as CodexAppServerScopedRequestRejectedError } from "./request-BHZ1nz8d.mjs";
|
|
2
|
+
import { S as CodexAdoptedThreadActiveError } from "./shared-client-DqyTMYug.mjs";
|
|
3
|
+
import { l as isCodexAppServerOverloadError, u as isCodexAppServerPrewriteRequestCancellationError, v as assertCodexThreadAcceptsDirectInput } from "./client-N0JpgSzF.mjs";
|
|
4
|
+
import { AgentHarnessPreflightError, embeddedAgentLog, formatErrorMessage } from "openclaw/plugin-sdk/agent-harness-runtime";
|
|
5
5
|
//#region extensions/codex/src/app-server/thread-policy.ts
|
|
6
6
|
/** A refusal, not a failed native write: the ephemeral conversation must stay alive. */
|
|
7
7
|
var CodexIncognitoPolicyChangeError = class extends AgentHarnessPreflightError {
|
|
@@ -20,7 +20,46 @@ var CodexThreadPolicyHandoffError = class extends AgentHarnessPreflightError {
|
|
|
20
20
|
};
|
|
21
21
|
/** The complete body remains generic configuration for compaction and native child inheritance. */
|
|
22
22
|
async function refreshCodexThreadPolicy(params) {
|
|
23
|
-
|
|
23
|
+
await injectCodexThreadDeveloperHandoff(params, "The following is the complete current OpenClaw-supplied generic instruction policy. It replaces earlier OpenClaw-supplied generic policy, including sections removed from that generic policy. Parent-local instructions supplied for the current inference request are outside this policy replacement. Independently supplied native managed, guardian, security, collaboration, and project instructions retain their authority. User requests retain their own authority.\n\n" + (params.developerInstructions === "" ? "The current OpenClaw generic policy is empty; earlier OpenClaw generic policy is withdrawn." : params.developerInstructions));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Refreshes only the skill catalog on a live thread whose generic policy cannot
|
|
27
|
+
* change (ephemeral threads have no resume source). The refresh is a client-authored
|
|
28
|
+
* developer message, so it must be re-delivered after every compaction.
|
|
29
|
+
*/
|
|
30
|
+
async function refreshCodexThreadSkillsCatalog(params) {
|
|
31
|
+
await injectCodexThreadDeveloperHandoff(params, "The following is the complete current OpenClaw skills catalog. It replaces the earlier OpenClaw skills catalog in this conversation.\n\n" + (params.skillsInstructions ?? "The current OpenClaw skills catalog is empty; the earlier catalog is withdrawn."));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Compaction rebuilds initial context from the thread's creation-time developer
|
|
35
|
+
* instructions and drops client-authored developer messages unless
|
|
36
|
+
* `retain_client_developer_messages` is enabled, which is off by default
|
|
37
|
+
* (codex-rs/core/src/compact_remote_v2.rs). A catalog refreshed in place therefore
|
|
38
|
+
* reverts to the creation-time catalog, while the host still records the refreshed
|
|
39
|
+
* value as delivered and skips reinjection on later turns. Re-deliver the current
|
|
40
|
+
* catalog after every compaction, including compaction inside an active turn.
|
|
41
|
+
*/
|
|
42
|
+
async function restoreCodexThreadSkillsCatalogAfterCompaction(params) {
|
|
43
|
+
const policy = params.ephemeralPolicy;
|
|
44
|
+
if (!policy || policy.skillsInstructions === policy.nativeSkillsInstructions) return policy;
|
|
45
|
+
try {
|
|
46
|
+
await refreshCodexThreadSkillsCatalog({
|
|
47
|
+
...params,
|
|
48
|
+
skillsInstructions: policy.skillsInstructions
|
|
49
|
+
});
|
|
50
|
+
return policy;
|
|
51
|
+
} catch (error) {
|
|
52
|
+
embeddedAgentLog.warn("failed to restore Codex skill catalog after compaction", {
|
|
53
|
+
threadId: params.threadId,
|
|
54
|
+
error: formatErrorMessage(error)
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
...policy,
|
|
58
|
+
skillsInstructions: policy.nativeSkillsInstructions
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async function injectCodexThreadDeveloperHandoff(params, text) {
|
|
24
63
|
let outcome = "unknown";
|
|
25
64
|
try {
|
|
26
65
|
await requestCodexAppServerClientJson({
|
|
@@ -39,7 +78,7 @@ async function refreshCodexThreadPolicy(params) {
|
|
|
39
78
|
}
|
|
40
79
|
});
|
|
41
80
|
outcome = "acknowledged";
|
|
42
|
-
params.assertCurrent();
|
|
81
|
+
params.assertCurrent?.();
|
|
43
82
|
params.signal?.throwIfAborted();
|
|
44
83
|
} catch (cause) {
|
|
45
84
|
if (outcome !== "acknowledged" && (cause instanceof CodexAppServerScopedRequestRejectedError || isCodexAppServerPrewriteRequestCancellationError(cause) || isCodexAppServerOverloadError(cause))) outcome = "not-written";
|
|
@@ -67,4 +106,4 @@ async function assertAdoptedCodexThreadResumeAllowed(params, threadId, context,
|
|
|
67
106
|
return thread;
|
|
68
107
|
}
|
|
69
108
|
//#endregion
|
|
70
|
-
export { refreshCodexThreadPolicy as a, assertCodexSupervisionThreadLineage as i, CodexThreadPolicyHandoffError as n, assertAdoptedCodexThreadResumeAllowed as r, CodexIncognitoPolicyChangeError as t };
|
|
109
|
+
export { refreshCodexThreadPolicy as a, assertCodexSupervisionThreadLineage as i, CodexThreadPolicyHandoffError as n, refreshCodexThreadSkillsCatalog as o, assertAdoptedCodexThreadResumeAllowed as r, restoreCodexThreadSkillsCatalogAfterCompaction as s, CodexIncognitoPolicyChangeError as t };
|