@openclaw/codex 2026.7.2-beta.5 → 2026.7.2-beta.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/dist/{app-server-policy-BmDgseo_.js → app-server-policy-BSaO2JIT.js} +1 -1
- package/dist/{attempt-notifications-CMR2_fmR.js → attempt-notifications-AP-a-Q5k.js} +1 -1
- package/dist/{bounded-turn-FEbUXoYT.js → bounded-turn-D2ZAgZVz.js} +29 -22
- package/dist/{capabilities-BHRSI6Cn.js → capabilities-BFDTVYr4.js} +1 -1
- package/dist/cli-metadata.js +1 -1
- package/dist/{command-formatters-ico4ZFnk.js → command-formatters-C336eRVS.js} +2 -2
- package/dist/{command-handlers-CRmnwI2N.js → command-handlers-DAHUSry9.js} +12 -12
- package/dist/{compact-dEN49UH6.js → compact-D_uvHurS.js} +5 -5
- package/dist/{computer-use-BjGylO-E.js → computer-use-CYEc8U3w.js} +111 -113
- package/dist/{conversation-control-DE7d9DOj.js → conversation-control-xsIeXbo4.js} +6 -6
- package/dist/doctor-contract-api.js +1 -1
- package/dist/{dynamic-tools-LIt9ojep.js → dynamic-tools-D2gYkSBO.js} +438 -51
- package/dist/effective-mcp-catalog-Bbd98Inw.js +114 -0
- package/dist/{event-projector-usage-tvgb1NCX.js → event-projector-usage-Xp4AlR2k.js} +20 -3
- package/dist/harness.js +13 -9
- package/dist/index.js +131 -108
- package/dist/media-understanding-provider.js +1 -1
- package/dist/{models-BA01NEez.js → models-BBMKU4jA.js} +2 -2
- package/dist/{notification-correlation-Bj_Ak_jI.js → notification-correlation-CU6_AnOb.js} +3 -3
- package/dist/{plugin-app-cache-key-DSXX-rXO.js → plugin-app-cache-key-DztPafOA.js} +132 -39
- package/dist/{rate-limits-S_PXs0ul.js → rate-limits-CU-gVCCS.js} +1 -1
- package/dist/{request-CXpPennK.js → request-qKh331yu.js} +3 -3
- package/dist/{run-attempt-C5GTPJOE.js → run-attempt-CY9WlDLc.js} +677 -199
- package/dist/{runtime-artifact-C2ITXdhM.js → runtime-artifact-CmtG_t1L.js} +90 -24
- package/dist/{sandbox-guard-D1Wky__S.js → sandbox-guard-NuhpXmPB.js} +4 -0
- package/dist/{session-binding-DlVQ-Pxs.js → session-binding-BXpo9ymA.js} +60 -7
- package/dist/{session-catalog-CP2oCcEb.js → session-catalog-DyOgR4WH.js} +268 -44
- package/dist/{session-cli-CqZ0Fp2a.js → session-cli-2PZaFLRh.js} +1 -1
- package/dist/{session-upstream-marker-QE-m5QFG.js → session-upstream-marker-B6U7tLw5.js} +1 -1
- package/dist/{settled-turn-finalizer-CA_2QXIE.js → settled-turn-finalizer-CXY2Z9dT.js} +19 -6
- package/dist/{shared-client-BVKE40c-.js → shared-client-DTbvH-XV.js} +166 -49
- package/dist/{side-question-CO12sHxo.js → side-question-_ulBk1AL.js} +10 -10
- package/dist/{thread-lifecycle-DRg_FdzC.js → thread-lifecycle-DF53ogiA.js} +968 -214
- package/dist/{protocol-validators-Dm4eXZmt.js → transcript-mirror-DzsdNCf5.js} +589 -2
- package/dist/{upstream-session-fork-_Vrz4WJr.js → upstream-session-fork-Dy4Xvuoj.js} +3 -3
- package/dist/{usage-UpVbdX5G.js → usage-CQ6GhD5-.js} +3 -3
- package/dist/{web-search-provider.runtime-CaQMYDbp.js → web-search-provider.runtime-CCFhg2z5.js} +3 -3
- package/package.json +6 -7
- package/dist/attempt-client-cleanup-Ia52yRWc.js +0 -127
- package/dist/realtime-voice-api-BPcA1uN9.js +0 -494
- package/dist/realtime-voice-api.js +0 -2
- package/dist/transcript-mirror-uKA-A4tB.js +0 -550
|
@@ -28,6 +28,32 @@ const RUNTIME_INJECTION_ENV_KEYS = /* @__PURE__ */ new Set([
|
|
|
28
28
|
"DYLD_INSERT_LIBRARIES",
|
|
29
29
|
"DYLD_LIBRARY_PATH"
|
|
30
30
|
]);
|
|
31
|
+
const SAFE_NODE_OPTIONS_BOOLEAN_FLAGS = /* @__PURE__ */ new Set([
|
|
32
|
+
"--enable-network-family-autoselection",
|
|
33
|
+
"--network-family-autoselection",
|
|
34
|
+
"--no-deprecation",
|
|
35
|
+
"--no-network-family-autoselection",
|
|
36
|
+
"--no-warnings",
|
|
37
|
+
"--pending-deprecation",
|
|
38
|
+
"--throw-deprecation",
|
|
39
|
+
"--trace-deprecation",
|
|
40
|
+
"--trace-warnings",
|
|
41
|
+
"--use-bundled-ca",
|
|
42
|
+
"--use-env-proxy",
|
|
43
|
+
"--use-openssl-ca",
|
|
44
|
+
"--use-system-ca"
|
|
45
|
+
]);
|
|
46
|
+
const SAFE_NODE_OPTIONS_NUMERIC_FLAGS = /* @__PURE__ */ new Set([
|
|
47
|
+
"--max-old-space-size",
|
|
48
|
+
"--max-semi-space-size",
|
|
49
|
+
"--network-family-autoselection-attempt-timeout",
|
|
50
|
+
"--stack-trace-limit"
|
|
51
|
+
]);
|
|
52
|
+
const SAFE_NODE_OPTIONS_DNS_RESULT_ORDERS = /* @__PURE__ */ new Set([
|
|
53
|
+
"ipv4first",
|
|
54
|
+
"ipv6first",
|
|
55
|
+
"verbatim"
|
|
56
|
+
]);
|
|
31
57
|
const ARTIFACT_BINDINGS_SYMBOL = Symbol.for("openclaw.codexAppServerRuntimeArtifactBindings");
|
|
32
58
|
function getRuntimeArtifactBindings() {
|
|
33
59
|
const globalState = globalThis;
|
|
@@ -116,40 +142,80 @@ function assertNoRuntimeInjectionEnvironment(env) {
|
|
|
116
142
|
for (const [rawKey, value] of Object.entries(env)) {
|
|
117
143
|
const key = rawKey.toUpperCase();
|
|
118
144
|
if (!value?.trim()) continue;
|
|
119
|
-
if (key === "NODE_OPTIONS"
|
|
120
|
-
|
|
145
|
+
if (key === "NODE_OPTIONS") {
|
|
146
|
+
const result = attestNodeOptions(value);
|
|
147
|
+
if (result.ok) continue;
|
|
148
|
+
if (result.option) throw new Error(`Codex runtime artifact cannot attest NODE_OPTIONS option ${result.option}`);
|
|
149
|
+
throw new Error("Codex runtime artifact cannot safely parse NODE_OPTIONS");
|
|
150
|
+
}
|
|
121
151
|
if (RUNTIME_INJECTION_ENV_KEYS.has(key) || key.startsWith("DYLD_")) throw new Error(`Codex runtime artifact cannot attest injected runtime environment: ${key}`);
|
|
122
152
|
}
|
|
123
153
|
}
|
|
124
|
-
function
|
|
125
|
-
const tokens =
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
"
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
"
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
"
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
154
|
+
function parseNodeOptions(value) {
|
|
155
|
+
const tokens = [];
|
|
156
|
+
let inQuotes = false;
|
|
157
|
+
let startsNewToken = true;
|
|
158
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
159
|
+
let character = value[index];
|
|
160
|
+
if (character === "\\" && inQuotes) {
|
|
161
|
+
index += 1;
|
|
162
|
+
if (index >= value.length) return;
|
|
163
|
+
character = value[index];
|
|
164
|
+
} else if (character === " " && !inQuotes) {
|
|
165
|
+
startsNewToken = true;
|
|
166
|
+
continue;
|
|
167
|
+
} else if (character === "\"") {
|
|
168
|
+
inQuotes = !inQuotes;
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
if (startsNewToken) {
|
|
172
|
+
tokens.push(character);
|
|
173
|
+
startsNewToken = false;
|
|
174
|
+
} else tokens[tokens.length - 1] += character;
|
|
175
|
+
}
|
|
176
|
+
return inQuotes ? void 0 : tokens;
|
|
177
|
+
}
|
|
178
|
+
function normalizedNodeOptionName(token) {
|
|
179
|
+
const equalsIndex = token.indexOf("=");
|
|
180
|
+
const name = (equalsIndex === -1 ? token : token.slice(0, equalsIndex)).replaceAll("_", "-");
|
|
181
|
+
return /^--[a-z][a-z0-9-]{0,63}$/u.test(name) ? name : void 0;
|
|
182
|
+
}
|
|
183
|
+
function attestNodeOptions(value) {
|
|
184
|
+
const tokens = parseNodeOptions(value);
|
|
185
|
+
if (!tokens || tokens.length === 0) return { ok: false };
|
|
141
186
|
for (let index = 0; index < tokens.length; index += 1) {
|
|
142
187
|
const token = tokens[index];
|
|
143
|
-
if (booleanFlags.has(token)) continue;
|
|
144
188
|
const equalsIndex = token.indexOf("=");
|
|
145
|
-
const flag =
|
|
189
|
+
const flag = normalizedNodeOptionName(token);
|
|
190
|
+
if (!flag) return { ok: false };
|
|
146
191
|
const inlineValue = equalsIndex === -1 ? void 0 : token.slice(equalsIndex + 1);
|
|
192
|
+
if (SAFE_NODE_OPTIONS_BOOLEAN_FLAGS.has(flag)) {
|
|
193
|
+
if (inlineValue === void 0) continue;
|
|
194
|
+
return {
|
|
195
|
+
ok: false,
|
|
196
|
+
option: flag
|
|
197
|
+
};
|
|
198
|
+
}
|
|
147
199
|
if (flag === "--disable-warning" && inlineValue && /^[A-Za-z][A-Za-z0-9_.:-]{0,63}$/u.test(inlineValue)) continue;
|
|
148
|
-
if (
|
|
200
|
+
if (flag === "--dns-result-order") {
|
|
201
|
+
const order = inlineValue ?? tokens[++index];
|
|
202
|
+
if (order && SAFE_NODE_OPTIONS_DNS_RESULT_ORDERS.has(order)) continue;
|
|
203
|
+
return {
|
|
204
|
+
ok: false,
|
|
205
|
+
option: flag
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
if (!SAFE_NODE_OPTIONS_NUMERIC_FLAGS.has(flag)) return {
|
|
209
|
+
ok: false,
|
|
210
|
+
option: flag
|
|
211
|
+
};
|
|
149
212
|
const numericValue = inlineValue ?? tokens[++index];
|
|
150
|
-
if (!numericValue || !/^\d+$/u.test(numericValue)) return
|
|
213
|
+
if (!numericValue || !/^\d+$/u.test(numericValue)) return {
|
|
214
|
+
ok: false,
|
|
215
|
+
option: flag
|
|
216
|
+
};
|
|
151
217
|
}
|
|
152
|
-
return
|
|
218
|
+
return { ok: true };
|
|
153
219
|
}
|
|
154
220
|
async function hashSelectedArtifactFiles(descriptor, signal) {
|
|
155
221
|
throwIfAborted(signal);
|
|
@@ -142,7 +142,10 @@ function readRuntimeSessionEntryBestEffort(params) {
|
|
|
142
142
|
const DIRECT_METHOD_POLICIES = /* @__PURE__ */ new Map([
|
|
143
143
|
["account/rateLimits/read", "allowed-control-plane"],
|
|
144
144
|
["account/read", "allowed-control-plane"],
|
|
145
|
+
["app/installed", "allowed-control-plane"],
|
|
145
146
|
["app/list", "allowed-control-plane"],
|
|
147
|
+
["app/read", "allowed-control-plane"],
|
|
148
|
+
["config/batchWrite", "allowed-control-plane"],
|
|
146
149
|
["config/mcpServer/reload", "allowed-control-plane"],
|
|
147
150
|
["config/read", "allowed-control-plane"],
|
|
148
151
|
["config/value/write", "allowed-control-plane"],
|
|
@@ -155,6 +158,7 @@ const DIRECT_METHOD_POLICIES = /* @__PURE__ */ new Map([
|
|
|
155
158
|
["mcpServerStatus/list", "allowed-control-plane"],
|
|
156
159
|
["model/list", "allowed-control-plane"],
|
|
157
160
|
["plugin/install", "allowed-control-plane"],
|
|
161
|
+
["plugin/installed", "allowed-control-plane"],
|
|
158
162
|
["plugin/list", "allowed-control-plane"],
|
|
159
163
|
["plugin/read", "allowed-control-plane"],
|
|
160
164
|
["skills/list", "allowed-control-plane"],
|
|
@@ -14,6 +14,7 @@ import { normalizeTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-ru
|
|
|
14
14
|
import { detectWindowsSpawnCommandInlineArgs } from "openclaw/plugin-sdk/windows-spawn";
|
|
15
15
|
import { z } from "zod";
|
|
16
16
|
import { parse } from "smol-toml";
|
|
17
|
+
import { isLoopbackHost } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
17
18
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
18
19
|
import { getSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
|
|
19
20
|
//#region extensions/codex/src/app-server/config-contracts.ts
|
|
@@ -1025,8 +1026,7 @@ function isLoopbackWebSocketUrl(value) {
|
|
|
1025
1026
|
return false;
|
|
1026
1027
|
}
|
|
1027
1028
|
if (parsed.protocol !== "ws:" && parsed.protocol !== "wss:") return false;
|
|
1028
|
-
|
|
1029
|
-
return host === "localhost" || host === "127.0.0.1" || host === "::1" || host === "[::1]" || host.startsWith("127.");
|
|
1029
|
+
return isLoopbackHost(parsed.hostname);
|
|
1030
1030
|
}
|
|
1031
1031
|
function hasIdentityBearingWebSocketAuth(params) {
|
|
1032
1032
|
if (readNonEmptyString(params.authToken)) return true;
|
|
@@ -1074,11 +1074,23 @@ function resolveDefaultCodexAppServerPolicy(params) {
|
|
|
1074
1074
|
}
|
|
1075
1075
|
//#endregion
|
|
1076
1076
|
//#region extensions/codex/src/app-server/config-runtime.ts
|
|
1077
|
+
/**
|
|
1078
|
+
* Sole owner of the app-server home-scope decision. Ordinary harness connections
|
|
1079
|
+
* default to the isolated agent home; the supervision connection owns the operator's
|
|
1080
|
+
* native Codex home on local transports. Auth handoffs must read the scope from here
|
|
1081
|
+
* (or from resolved start options) because a prepared login on a native home rewrites
|
|
1082
|
+
* the account Codex CLI and Desktop share.
|
|
1083
|
+
*/
|
|
1084
|
+
function resolveCodexAppServerHomeScope(params) {
|
|
1085
|
+
const configured = params.appServer?.homeScope;
|
|
1086
|
+
if (configured) return configured;
|
|
1087
|
+
return params.connectionScope === "supervision" && resolveTransport(params.appServer?.transport) !== "websocket" ? "user" : "agent";
|
|
1088
|
+
}
|
|
1077
1089
|
function resolveCodexAppServerRuntimeOptions(params = {}) {
|
|
1078
1090
|
const env = params.env ?? process.env;
|
|
1079
1091
|
const config = readCodexPluginConfig(params.pluginConfig).appServer ?? {};
|
|
1080
1092
|
const transport = resolveTransport(config.transport);
|
|
1081
|
-
const homeScope = config
|
|
1093
|
+
const homeScope = resolveCodexAppServerHomeScope({ appServer: config });
|
|
1082
1094
|
const configCommand = readNonEmptyString(config.command);
|
|
1083
1095
|
const envCommand = readNonEmptyString(env.OPENCLAW_CODEX_APP_SERVER_BIN);
|
|
1084
1096
|
const command = configCommand ?? envCommand ?? "codex";
|
|
@@ -1326,8 +1338,10 @@ function codexSandboxPolicyForTurn(mode, cwd, nativeArgs = []) {
|
|
|
1326
1338
|
function resolveCodexSupervisionAppServerRuntimeOptions(params = {}) {
|
|
1327
1339
|
const pluginConfig = readCodexPluginConfig(params.pluginConfig);
|
|
1328
1340
|
const appServer = pluginConfig.appServer ?? {};
|
|
1329
|
-
const
|
|
1330
|
-
|
|
1341
|
+
const homeScope = resolveCodexAppServerHomeScope({
|
|
1342
|
+
appServer,
|
|
1343
|
+
connectionScope: "supervision"
|
|
1344
|
+
});
|
|
1331
1345
|
return resolveCodexAppServerRuntimeOptions({
|
|
1332
1346
|
...params,
|
|
1333
1347
|
pluginConfig: {
|
|
@@ -1360,6 +1374,8 @@ var session_binding_exports = /* @__PURE__ */ __exportAll({
|
|
|
1360
1374
|
readStoredCodexAppServerBinding: () => readStoredCodexAppServerBinding,
|
|
1361
1375
|
reclaimCurrentCodexSessionGeneration: () => reclaimCurrentCodexSessionGeneration,
|
|
1362
1376
|
resolveCodexAppServerBindingModelProvider: () => resolveCodexAppServerBindingModelProvider,
|
|
1377
|
+
resolveCodexRunSessionBindingAuthority: () => resolveCodexRunSessionBindingAuthority,
|
|
1378
|
+
scopeCodexRunBindingStore: () => scopeCodexRunBindingStore,
|
|
1363
1379
|
sessionBindingIdentity: () => sessionBindingIdentity
|
|
1364
1380
|
});
|
|
1365
1381
|
const CODEX_APP_SERVER_NATIVE_AUTH_PROVIDER = "openai";
|
|
@@ -1382,6 +1398,25 @@ function sessionBindingIdentity(params) {
|
|
|
1382
1398
|
...sessionKey ? { sessionKey } : {}
|
|
1383
1399
|
};
|
|
1384
1400
|
}
|
|
1401
|
+
/** Decides whether a run may share the durable stable-key binding owner. */
|
|
1402
|
+
function resolveCodexRunSessionBindingAuthority(params) {
|
|
1403
|
+
const sessionKey = params.identity.sessionKey?.trim();
|
|
1404
|
+
if (!sessionKey) return "ephemeral";
|
|
1405
|
+
try {
|
|
1406
|
+
const storePath = params.storePath?.trim() || resolveStorePath(params.config?.session?.store, { agentId: params.identity.agentId });
|
|
1407
|
+
const entry = getSessionEntry({
|
|
1408
|
+
agentId: params.identity.agentId,
|
|
1409
|
+
hydrateSkillPromptRefs: false,
|
|
1410
|
+
readConsistency: "latest",
|
|
1411
|
+
sessionKey,
|
|
1412
|
+
storePath
|
|
1413
|
+
});
|
|
1414
|
+
if (!entry) return "ephemeral";
|
|
1415
|
+
return entry.sessionId === params.identity.sessionId ? "current" : "superseded";
|
|
1416
|
+
} catch {
|
|
1417
|
+
return "superseded";
|
|
1418
|
+
}
|
|
1419
|
+
}
|
|
1385
1420
|
/** Builds the terminal coordination error used when a newer OpenClaw session owns the binding. */
|
|
1386
1421
|
function createCodexSessionGenerationSupersededError(sessionId) {
|
|
1387
1422
|
return new AgentHarnessSessionSupersededError(`Codex session generation is no longer current: ${sessionId}`);
|
|
@@ -1449,6 +1484,7 @@ const threadBindingSchema = z.object({
|
|
|
1449
1484
|
threadId: z.string().refine((value) => Boolean(value.trim())),
|
|
1450
1485
|
clientId: optionalStringSchema,
|
|
1451
1486
|
cwd: z.string(),
|
|
1487
|
+
rolloutPath: optionalNonBlankStringSchema,
|
|
1452
1488
|
connectionScope: z.literal("supervision").optional(),
|
|
1453
1489
|
supervisionSourceThreadId: z.string().trim().min(1).optional(),
|
|
1454
1490
|
authProfileId: optionalStringSchema,
|
|
@@ -1472,6 +1508,7 @@ const threadBindingSchema = z.object({
|
|
|
1472
1508
|
dynamicToolsFingerprint: optionalStringSchema,
|
|
1473
1509
|
dynamicToolsContainDeferred: optionalBooleanSchema,
|
|
1474
1510
|
webSearchThreadConfigFingerprint: optionalStringSchema,
|
|
1511
|
+
nativeSkillIsolationFingerprint: optionalStringSchema,
|
|
1475
1512
|
userMcpServersFingerprint: optionalStringSchema,
|
|
1476
1513
|
mcpServersFingerprint: optionalStringSchema,
|
|
1477
1514
|
ringZeroConfigFingerprint: optionalStringSchema,
|
|
@@ -1610,6 +1647,22 @@ function createStoredCodexAppServerBinding(value, options = {}) {
|
|
|
1610
1647
|
function bindingLeaseLostError(key, cause) {
|
|
1611
1648
|
return new Error(`Lost Codex binding lease: ${key}`, cause === void 0 ? void 0 : { cause });
|
|
1612
1649
|
}
|
|
1650
|
+
/** Carries one prepared run identity through callers that rederive it from public params. */
|
|
1651
|
+
function scopeCodexRunBindingStore(params) {
|
|
1652
|
+
const mapSessionIdentity = (identity) => identity.agentId === params.logicalIdentity.agentId && identity.sessionId === params.logicalIdentity.sessionId && identity.sessionKey?.trim() === params.logicalIdentity.sessionKey?.trim() ? params.physicalIdentity : identity;
|
|
1653
|
+
const mapIdentity = (identity) => identity.kind === "session" ? mapSessionIdentity(identity) : identity;
|
|
1654
|
+
return {
|
|
1655
|
+
read: (identity) => params.bindingStore.read(mapIdentity(identity)),
|
|
1656
|
+
hasOtherThreadOwner: (threadId, identity) => params.bindingStore.hasOtherThreadOwner(threadId, identity ? mapIdentity(identity) : void 0),
|
|
1657
|
+
mutate: (identity, mutation) => params.bindingStore.mutate(mapIdentity(identity), mutation),
|
|
1658
|
+
prepareSessionGenerationReclaim: (identity) => params.bindingStore.prepareSessionGenerationReclaim(mapSessionIdentity(identity)),
|
|
1659
|
+
adoptSessionGeneration: (identity, expectedPreviousSessionId) => params.bindingStore.adoptSessionGeneration(mapSessionIdentity(identity), expectedPreviousSessionId),
|
|
1660
|
+
resetSessionGeneration: (identity) => params.bindingStore.resetSessionGeneration(mapSessionIdentity(identity)),
|
|
1661
|
+
retireSessionGeneration: (identity) => params.bindingStore.retireSessionGeneration(mapSessionIdentity(identity)),
|
|
1662
|
+
withThreadArchiveFence: (run) => params.bindingStore.withThreadArchiveFence(run),
|
|
1663
|
+
withLease: (identity, run) => params.bindingStore.withLease(mapIdentity(identity), run)
|
|
1664
|
+
};
|
|
1665
|
+
}
|
|
1613
1666
|
/** Lets the authoritative OpenClaw session generation claim a stale stable binding row. */
|
|
1614
1667
|
async function reclaimCurrentCodexSessionGeneration(params) {
|
|
1615
1668
|
const sessionKey = params.identity.sessionKey?.trim();
|
|
@@ -1617,7 +1670,7 @@ async function reclaimCurrentCodexSessionGeneration(params) {
|
|
|
1617
1670
|
const plan = await params.bindingStore.prepareSessionGenerationReclaim(params.identity);
|
|
1618
1671
|
if (plan.kind === "resolved") return plan.result;
|
|
1619
1672
|
try {
|
|
1620
|
-
const storePath = resolveStorePath(params.config?.session?.store, { agentId: params.identity.agentId });
|
|
1673
|
+
const storePath = params.storePath?.trim() || resolveStorePath(params.config?.session?.store, { agentId: params.identity.agentId });
|
|
1621
1674
|
if (getSessionEntry({
|
|
1622
1675
|
agentId: params.identity.agentId,
|
|
1623
1676
|
hydrateSkillPromptRefs: false,
|
|
@@ -2158,4 +2211,4 @@ function resolveCodexAppServerBindingModelProvider(params) {
|
|
|
2158
2211
|
return params.modelProvider?.trim() || (isCodexAppServerNativeAuthProfile(params) ? PUBLIC_OPENAI_MODEL_PROVIDER : void 0);
|
|
2159
2212
|
}
|
|
2160
2213
|
//#endregion
|
|
2161
|
-
export {
|
|
2214
|
+
export { resolveOpenClawExecPolicyForCodexAppServer as A, canUseCodexModelBackedApprovalsReviewerForModel as C, isCodexSandboxExecServerEnabled as D, isCodexAppServerApprovalPolicyAllowedByRequirements as E, CODEX_PLUGINS_MARKETPLACE_NAME as M, CODEX_PLUGINS_WORKSPACE_MARKETPLACE_NAME as N, readCodexPluginConfig as O, withMcpElicitationsApprovalPolicy as S, resolveCodexModelBackedReviewerPolicyContext as T, resolveCodexAppServerStartOptionsForAgent as _, hashCodexAppServerBindingFingerprint as a, assertCodexAppServerConnectionSecurity as b, reclaimCurrentCodexSessionGeneration as c, sessionBindingIdentity as d, session_binding_exports as f, resolveCodexAppServerRuntimeOptions as g, resolveCodexAppServerHomeScope as h, createCodexSessionGenerationSupersededError as i, isCodexFastServiceTier as j, resolveCodexPluginsPolicy as k, resolveCodexRunSessionBindingAuthority as l, codexSandboxPolicyForTurn as m, assertCodexBindingMayBeReplaced as n, isCodexAppServerNativeAuthProfile as o, codexAppServerStartOptionsKey as p, bindingStoreKey as r, normalizeCodexAppServerBindingModelProvider as s, CODEX_APP_SERVER_BINDING_GUARDED_REQUEST_TIMEOUT_MS as t, scopeCodexRunBindingStore as u, resolveCodexComputerUseConfig as v, resolveCodexAppServerUserHomeDir as w, shouldAutoApproveCodexAppServerApprovals as x, resolveCodexSupervisionAppServerRuntimeOptions as y };
|