@openclaw/codex 2026.7.2-beta.3 → 2026.7.2-beta.4

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 (38) hide show
  1. package/dist/{app-server-policy-DUMF2Xyr.js → app-server-policy-BO3jYBkv.js} +1 -1
  2. package/dist/{attempt-notifications-Ecjyzufe.js → attempt-notifications-DdmnBMUp.js} +1 -1
  3. package/dist/{media-understanding-provider-IPNNQre6.js → bounded-turn-CaQL96kg.js} +43 -183
  4. package/dist/capabilities-CLICvTxf.js +36 -0
  5. package/dist/cli-metadata.js +1 -1
  6. package/dist/{command-formatters-NCTL7A2q.js → command-formatters-DgADqnHa.js} +3 -37
  7. package/dist/{command-handlers-DtFbZiba.js → command-handlers-l_lVPNlB.js} +12 -11
  8. package/dist/{compact-Kgy26gIM.js → compact-CC5KhBzX.js} +5 -4
  9. package/dist/{computer-use-C7x4ZaqR.js → computer-use-Ip1-QGa-.js} +4 -4
  10. package/dist/{conversation-control-B0s3aIjT.js → conversation-control-sNPsbTCP.js} +6 -5
  11. package/dist/doctor-contract-api.js +1 -1
  12. package/dist/{dynamic-tools-D_vSVmv9.js → dynamic-tools-CQI3UwqY.js} +105 -2670
  13. package/dist/event-projector-assistant-message-DTgnPPVF.js +101 -0
  14. package/dist/event-projector-usage-D6tE7_qD.js +69 -0
  15. package/dist/harness.js +25 -6
  16. package/dist/incognito-session-ET_ufDH-.js +2 -0
  17. package/dist/index.js +60 -26
  18. package/dist/media-understanding-provider.js +168 -1
  19. package/dist/{models-DD5zBdX5.js → models-BNeMlHgg.js} +2 -2
  20. package/dist/{notification-correlation-C8DVQ_Bq.js → notification-correlation-BGLixv5_.js} +3 -3
  21. package/dist/{plugin-app-cache-key-DJbhLYSK.js → plugin-app-cache-key-CvzvmBRz.js} +2 -2
  22. package/dist/{rate-limits-CqhWQ2R9.js → rate-limits-D0IJT-a6.js} +1 -1
  23. package/dist/{request-9yf9pZjf.js → request-BTccUTD3.js} +1 -1
  24. package/dist/{run-attempt-BIoO8ISr.js → run-attempt--858NXDl.js} +2653 -109
  25. package/dist/{session-binding-Bmt20HfB.js → session-binding-ZSMX1omP.js} +7 -2
  26. package/dist/{session-catalog-CA7R-hX2.js → session-catalog-DsKaezgR.js} +82 -80
  27. package/dist/{session-cli-Bxk3-Wqz.js → session-cli-CYJTfRLG.js} +1 -1
  28. package/dist/session-upstream-marker-D7XlI9us.js +82 -0
  29. package/dist/settled-turn-finalizer-DHltNgtF.js +303 -0
  30. package/dist/{shared-client-CSXLtCLE.js → shared-client-wmgNFNYp.js} +33 -13
  31. package/dist/{side-question-DtzquMOb.js → side-question-BfFZCsJ-.js} +21 -15
  32. package/dist/{thread-lifecycle-CQ_9mAa1.js → thread-lifecycle-cqrOlJkq.js} +120 -26
  33. package/dist/{transcript-mirror-D9rTxx2P.js → transcript-mirror-2p7kl6e4.js} +433 -145
  34. package/dist/upstream-session-fork-vPjwkT1i.js +320 -0
  35. package/dist/{usage-CuPpFgTc.js → usage-DM_I3mPT.js} +3 -3
  36. package/dist/{web-search-provider.runtime-_x5XTeqh.js → web-search-provider.runtime-Bx6HAc_k.js} +3 -3
  37. package/npm-shrinkwrap.json +38 -38
  38. package/package.json +7 -7
@@ -1,7 +1,8 @@
1
- import { G as isCodexAppServerPrewriteRequestCancellationError, H as isCodexAppServerConnectionClosedError, R as CodexAppServerRpcError, X as flattenCodexDynamicToolFunctions, Z as isJsonObject, d as retireSharedCodexAppServerClientIfCurrent, n as clearSharedCodexAppServerClientIfCurrentAndUnclaimed, o as isCodexAppServerStartSelectionChangedError, t as clearSharedCodexAppServerClientIfCurrent, z as getCodexAppServerClientInstanceId } from "./shared-client-CSXLtCLE.js";
2
- import { T as resolveCodexPluginsPolicy, a as isCodexAppServerNativeAuthProfile, c as sessionBindingIdentity, d as CODEX_PLUGINS_WORKSPACE_MARKETPLACE_NAME, h as codexSandboxPolicyForTurn, i as hashCodexAppServerBindingFingerprint, n as assertCodexBindingMayBeReplaced, o as normalizeCodexAppServerBindingModelProvider, s as reclaimCurrentCodexSessionGeneration, u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./session-binding-Bmt20HfB.js";
3
- import { a as projectBoundedCodexThreadHistory, d as assertCodexThreadStartResponse, l as assertCodexThreadForkResponse, u as assertCodexThreadResumeResponse } from "./transcript-mirror-D9rTxx2P.js";
4
- import { a as serializeCodexAppInventoryError, i as defaultCodexAppInventoryCache, t as buildCodexAppServerConnectionFingerprint } from "./plugin-app-cache-key-DJbhLYSK.js";
1
+ import { G as isCodexAppServerPrewriteRequestCancellationError, H as isCodexAppServerConnectionClosedError, Q as isJsonObject, R as CodexAppServerRpcError, Z as flattenCodexDynamicToolFunctions, d as retireSharedCodexAppServerClientIfCurrent, n as clearSharedCodexAppServerClientIfCurrentAndUnclaimed, o as isCodexAppServerStartSelectionChangedError, q as resolveCodexAppServerClientInstanceId, t as clearSharedCodexAppServerClientIfCurrent, z as getCodexAppServerClientInstanceId } from "./shared-client-wmgNFNYp.js";
2
+ import { E as resolveCodexPluginsPolicy, a as hashCodexAppServerBindingFingerprint, c as reclaimCurrentCodexSessionGeneration, d as CODEX_PLUGINS_MARKETPLACE_NAME, f as CODEX_PLUGINS_WORKSPACE_MARKETPLACE_NAME, g as codexSandboxPolicyForTurn, i as createCodexSessionGenerationSupersededError, l as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced, o as isCodexAppServerNativeAuthProfile, s as normalizeCodexAppServerBindingModelProvider } from "./session-binding-ZSMX1omP.js";
3
+ import { _ as assertCodexThreadStartResponse, a as projectBoundedCodexThreadHistory, g as assertCodexThreadResumeResponse, h as assertCodexThreadForkResponse } from "./transcript-mirror-2p7kl6e4.js";
4
+ import { a as serializeCodexAppInventoryError, i as defaultCodexAppInventoryCache, t as buildCodexAppServerConnectionFingerprint } from "./plugin-app-cache-key-CvzvmBRz.js";
5
+ import { t as isIncognitoSessionKey } from "./incognito-session-ET_ufDH-.js";
5
6
  import { sliceUtf16Safe, truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
6
7
  import * as crypto$1 from "node:crypto";
7
8
  import crypto from "node:crypto";
@@ -13,6 +14,82 @@ import { isDiagnosticFlagEnabled } from "openclaw/plugin-sdk/diagnostic-runtime"
13
14
  import { listRegisteredPluginAgentPromptGuidance } from "openclaw/plugin-sdk/plugin-runtime";
14
15
  import { GPT5_HEARTBEAT_PROMPT_OVERLAY } from "openclaw/plugin-sdk/provider-model-shared";
15
16
  import { INLINE_IMAGE_DATA_URL_PREFIX, sanitizeInlineImageDataUrl } from "openclaw/plugin-sdk/inline-image-data-url-runtime";
17
+ //#region extensions/codex/src/app-server/event-projector-values.ts
18
+ function readString(record, key) {
19
+ const value = record[key];
20
+ return typeof value === "string" ? value : void 0;
21
+ }
22
+ function normalizeNonEmptyString(value) {
23
+ if (typeof value !== "string") return;
24
+ return value.trim() || void 0;
25
+ }
26
+ function readNonEmptyString(record, key) {
27
+ return normalizeNonEmptyString(record[key]);
28
+ }
29
+ function readNonEmptyStringArray(record, key) {
30
+ const value = record[key];
31
+ if (!Array.isArray(value)) return [];
32
+ const entries = [];
33
+ for (const entry of value) {
34
+ const normalized = normalizeNonEmptyString(entry);
35
+ if (normalized) entries.push(normalized);
36
+ }
37
+ return entries;
38
+ }
39
+ function readNullableString(record, key) {
40
+ const value = record[key];
41
+ if (value === null) return null;
42
+ return typeof value === "string" ? value : void 0;
43
+ }
44
+ function readNumber(record, key) {
45
+ const value = record[key];
46
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
47
+ }
48
+ function readNonNegativeInteger(record, key) {
49
+ const value = readNumber(record, key);
50
+ return value !== void 0 && Number.isInteger(value) && value >= 0 ? value : void 0;
51
+ }
52
+ function readCodexErrorNotificationMessage(record) {
53
+ const error = record.error;
54
+ return isJsonObject(error) ? readString(error, "message") : void 0;
55
+ }
56
+ function readHookOutputEntries(value) {
57
+ if (!Array.isArray(value)) return [];
58
+ return value.flatMap((entry) => {
59
+ if (!isJsonObject(entry)) return [];
60
+ const text = readString(entry, "text");
61
+ if (!text) return [];
62
+ const kind = readString(entry, "kind");
63
+ return [{
64
+ ...kind ? { kind } : {},
65
+ text
66
+ }];
67
+ });
68
+ }
69
+ function splitPlanText(text) {
70
+ return text.split(/\r?\n/).map((line) => line.trim().replace(/^[-*]\s+/, "")).filter((line) => line.length > 0);
71
+ }
72
+ function extractRawAssistantText(item) {
73
+ return (Array.isArray(item.content) ? item.content : []).flatMap((entry) => {
74
+ if (!isJsonObject(entry)) return [];
75
+ const type = readString(entry, "type");
76
+ if (type !== "output_text" && type !== "text") return [];
77
+ const value = readString(entry, "text");
78
+ return value ? [value] : [];
79
+ }).join("").trim() || void 0;
80
+ }
81
+ function readItemString(item, key) {
82
+ const value = item[key];
83
+ return typeof value === "string" ? value : void 0;
84
+ }
85
+ function readItem(value) {
86
+ if (!isJsonObject(value)) return;
87
+ const type = typeof value.type === "string" ? value.type : void 0;
88
+ const id = typeof value.id === "string" ? value.id : void 0;
89
+ if (!type || !id) return;
90
+ return value;
91
+ }
92
+ //#endregion
16
93
  //#region extensions/codex/src/app-server/plugin-inventory.ts
17
94
  /**
18
95
  * Reads Codex plugin marketplace state and app inventory to decide which
@@ -864,13 +941,9 @@ function resolveCodexContextEngineProjectionMaxChars(params) {
864
941
  reserveTokens: params.reserveTokens
865
942
  }) * APPROX_RENDERED_CHARS_PER_TOKEN);
866
943
  }
867
- /** Reads Codex projection reserve tokens from compaction config. */
868
- function resolveCodexContextEngineProjectionReserveTokens(params) {
869
- const compaction = asRecord(asRecord(asRecord(params.config)?.agents)?.defaults)?.compaction;
870
- const configuredReserveTokens = toNonNegativeInt(asRecord(compaction)?.reserveTokens);
871
- const configuredReserveTokensFloor = toNonNegativeInt(asRecord(compaction)?.reserveTokensFloor);
872
- if (configuredReserveTokens !== void 0) return Math.max(configuredReserveTokens, configuredReserveTokensFloor ?? DEFAULT_CODEX_PROJECTION_RESERVE_TOKENS);
873
- if (configuredReserveTokensFloor !== void 0) return configuredReserveTokensFloor;
944
+ /** Returns the fixed reserve used for Codex context-engine projections. */
945
+ function resolveCodexContextEngineProjectionReserveTokens() {
946
+ return DEFAULT_CODEX_PROJECTION_RESERVE_TOKENS;
874
947
  }
875
948
  /** Fits projected context prompts under Codex app-server turn/start text limits. */
876
949
  function fitCodexProjectedContextForTurnStart(params) {
@@ -918,13 +991,6 @@ function resolveProjectionPromptBudgetTokens(params) {
918
991
  const effectiveReserveTokens = Math.min(requestedReserveTokens, Math.max(0, params.contextTokenBudget - minPromptBudget));
919
992
  return Math.max(1, params.contextTokenBudget - effectiveReserveTokens);
920
993
  }
921
- function asRecord(value) {
922
- return value && typeof value === "object" ? value : void 0;
923
- }
924
- function toNonNegativeInt(value) {
925
- if (typeof value !== "number" || !Number.isFinite(value) || value < 0) return;
926
- return Math.floor(value);
927
- }
928
994
  function dropDuplicateTrailingPrompt(messages, prompt) {
929
995
  if (!prompt) return messages;
930
996
  const trailing = messages.at(-1);
@@ -1086,7 +1152,7 @@ function buildContextEngineBinding(params, projection) {
1086
1152
  contextTokenBudget: params.contextTokenBudget,
1087
1153
  projectionMaxChars: resolveCodexContextEngineProjectionMaxChars({
1088
1154
  contextTokenBudget: params.contextTokenBudget,
1089
- reserveTokens: resolveCodexContextEngineProjectionReserveTokens({ config: params.config })
1155
+ reserveTokens: resolveCodexContextEngineProjectionReserveTokens()
1090
1156
  })
1091
1157
  }),
1092
1158
  projection: projection ? buildContextEngineProjectionBinding(projection) : void 0
@@ -1866,7 +1932,8 @@ function buildThreadStartParams(params, options) {
1866
1932
  ...resolveCodexThreadEnvironmentSelection(options),
1867
1933
  developerInstructions: options.developerInstructions ?? buildDeveloperInstructions(params, { dynamicTools: options.dynamicTools }),
1868
1934
  dynamicTools: [...options.dynamicTools],
1869
- experimentalRawEvents: true
1935
+ experimentalRawEvents: true,
1936
+ ...isIncognitoSessionKey(params.sessionKey) ? { ephemeral: true } : {}
1870
1937
  };
1871
1938
  }
1872
1939
  function buildThreadResumeParams(params, options) {
@@ -2208,6 +2275,7 @@ async function resumeExistingCodexThread(params, context) {
2208
2275
  }
2209
2276
  }
2210
2277
  async function startFreshCodexThread(params, context) {
2278
+ const clientId = resolveCodexAppServerClientInstanceId(params.client);
2211
2279
  const { bindingIdentity, startModelSelection, startModelProvider, userMcpServersConfigPatch, dynamicToolsFingerprint, dynamicToolsContainDeferred, webSearchThreadConfigFingerprint, userMcpServersFingerprint, ringZeroConfigFingerprint, ringZeroClientInstanceId, networkProxyConfigFingerprint, contextEngineBinding, environmentSelectionFingerprint, hostSystemAgentActive, ringZeroActive, ringZeroInheritedMcpServerNames, lifecycleTiming, normalizeBindingModelProvider, throwIfAborted, prebuiltPluginThreadConfig, preserveExistingBinding, rotatedContextEngineBinding } = context;
2212
2280
  const pluginThreadConfig = params.pluginThreadConfig?.enabled ? prebuiltPluginThreadConfig ?? await lifecycleTiming.measure("plugin-config-build", () => params.pluginThreadConfig?.build()) : void 0;
2213
2281
  const finalConfigPatch = params.buildFinalConfigPatch?.({ action: "start" }) ?? {
@@ -2261,6 +2329,7 @@ async function startFreshCodexThread(params, context) {
2261
2329
  if: { kind: "absent" },
2262
2330
  binding: {
2263
2331
  threadId: response.thread.id,
2332
+ ...clientId ? { clientId } : {},
2264
2333
  cwd: params.cwd,
2265
2334
  authProfileId: params.params.authProfileId,
2266
2335
  model: response.model ?? startParams.model ?? params.params.modelId,
@@ -2303,6 +2372,7 @@ async function startFreshCodexThread(params, context) {
2303
2372
  });
2304
2373
  return {
2305
2374
  threadId: response.thread.id,
2375
+ ...clientId ? { clientId } : {},
2306
2376
  cwd: params.cwd,
2307
2377
  authProfileId: params.params.authProfileId,
2308
2378
  model: response.model ?? startParams.model ?? params.params.modelId,
@@ -2625,7 +2695,7 @@ function buildPendingSupervisionProbeForkParams(params, pending) {
2625
2695
  ...params.appServer.serviceTier !== void 0 ? { serviceTier: params.appServer.serviceTier } : {},
2626
2696
  config: runtimeConfig,
2627
2697
  developerInstructions: params.developerInstructions ?? buildDeveloperInstructions(params.attempt, { dynamicTools: params.dynamicTools }),
2628
- ephemeral: false,
2698
+ ephemeral: isIncognitoSessionKey(params.attempt.sessionKey),
2629
2699
  threadSource: "appServer",
2630
2700
  excludeTurns: true
2631
2701
  };
@@ -2741,6 +2811,8 @@ async function archiveSupervisionArtifact(client, threadId) {
2741
2811
  //#endregion
2742
2812
  //#region extensions/codex/src/app-server/thread-lifecycle-run.ts
2743
2813
  async function startOrResumeThread(params) {
2814
+ const incognito = isIncognitoSessionKey(params.params.sessionKey);
2815
+ const clientId = resolveCodexAppServerClientInstanceId(params.client);
2744
2816
  const bindingIdentity = sessionBindingIdentity({
2745
2817
  sessionId: params.params.sessionId,
2746
2818
  sessionKey: params.params.sessionKey,
@@ -2808,7 +2880,7 @@ async function startOrResumeThread(params) {
2808
2880
  bindingStore: params.bindingStore,
2809
2881
  identity: bindingIdentity,
2810
2882
  config: params.params.config
2811
- }))) throw new Error(`Codex session generation is no longer current: ${bindingIdentity.sessionId}`);
2883
+ }))) throw createCodexSessionGenerationSupersededError(bindingIdentity.sessionId);
2812
2884
  }
2813
2885
  if (binding?.pendingSupervisionBranch) {
2814
2886
  const pendingBinding = binding;
@@ -2841,6 +2913,7 @@ async function startOrResumeThread(params) {
2841
2913
  normalizeBindingModelProvider,
2842
2914
  bindingPatch: {
2843
2915
  cwd: params.cwd,
2916
+ ...clientId ? { clientId } : {},
2844
2917
  authProfileId: void 0,
2845
2918
  preserveNativeModel: true,
2846
2919
  dynamicToolsFingerprint,
@@ -3034,6 +3107,28 @@ async function startOrResumeThread(params) {
3034
3107
  embeddedAgentLog.debug("codex app-server dynamic tool catalog changed; starting a new thread", { threadId: binding.threadId });
3035
3108
  await clearCurrentBinding("rotating a stale thread binding");
3036
3109
  }
3110
+ } else if (incognito) {
3111
+ if (binding.clientId && binding.clientId === clientId) {
3112
+ params.buildFinalConfigPatch?.({
3113
+ action: "resume",
3114
+ binding
3115
+ });
3116
+ throwIfAborted();
3117
+ lifecycleTiming.mark("thread-ready");
3118
+ lifecycleTiming.logSummary({
3119
+ runId: params.params.runId,
3120
+ sessionId: params.params.sessionId,
3121
+ sessionKey: params.params.sessionKey,
3122
+ threadId: binding.threadId,
3123
+ action: "resumed"
3124
+ });
3125
+ return {
3126
+ ...binding,
3127
+ lifecycle: { action: "resumed" }
3128
+ };
3129
+ }
3130
+ await clearCurrentBinding("rotating an unavailable ephemeral thread binding");
3131
+ binding = void 0;
3037
3132
  } else {
3038
3133
  const resumed = await resumeExistingCodexThread(params, {
3039
3134
  binding,
@@ -3199,8 +3294,7 @@ function buildTurnStartParams(params, options) {
3199
3294
  model: modelSelection.model,
3200
3295
  turnScopedDeveloperInstructions: options.turnScopedDeveloperInstructions,
3201
3296
  skillsCollaborationInstructions: options.skillsCollaborationInstructions,
3202
- memoryCollaborationInstructions: options.memoryCollaborationInstructions,
3203
- heartbeatCollaborationInstructions: options.heartbeatCollaborationInstructions
3297
+ memoryCollaborationInstructions: options.memoryCollaborationInstructions
3204
3298
  }) } : {}
3205
3299
  };
3206
3300
  }
@@ -3218,7 +3312,7 @@ function buildTurnCollaborationMode(params, options = {}) {
3218
3312
  function buildTurnScopedCollaborationInstructions(params, options = {}) {
3219
3313
  const contextInstructions = joinPresentSections(options.turnScopedDeveloperInstructions, options.memoryCollaborationInstructions, options.skillsCollaborationInstructions);
3220
3314
  if (params.trigger === "cron") return joinPresentSections(buildCronCollaborationInstructions(), contextInstructions);
3221
- if (params.trigger === "heartbeat" && params.bootstrapContextRunKind !== "commitment-only") return joinPresentSections(buildHeartbeatCollaborationInstructions(), contextInstructions, options.heartbeatCollaborationInstructions);
3315
+ if (params.trigger === "heartbeat" && params.bootstrapContextRunKind !== "commitment-only") return joinPresentSections(buildHeartbeatCollaborationInstructions(), contextInstructions);
3222
3316
  if (contextInstructions?.trim()) return joinPresentSections(buildDefaultCollaborationInstructions(), contextInstructions);
3223
3317
  return null;
3224
3318
  }
@@ -3256,4 +3350,4 @@ function joinPresentSections(...sections) {
3256
3350
  return sections.filter((section) => Boolean(section?.trim())).join("\n\n");
3257
3351
  }
3258
3352
  //#endregion
3259
- export { CodexAppServerUnsafeSubscriptionError as A, fitCodexProjectedContextForTurnStart as B, isForcedPrivateQaCodexRuntime as C, resolveCodexDynamicToolsLoadingForRuntime as D, resolveCodexDynamicToolsLoading as E, areCodexDynamicToolFingerprintsCompatible as F, buildCodexPluginThreadConfig as G, resolveCodexContextEngineProjectionMaxChars as H, codexDynamicToolsFingerprint as I, mergeCodexThreadConfigs as J, buildCodexPluginThreadConfigInputFingerprint as K, codexLegacyDynamicToolsFingerprint as L, interruptCodexTurnBestEffort as M, retireCodexAppServerClientAfterTimedOutTurn as N, CODEX_APP_SERVER_INTERRUPT_TIMEOUT_MS as O, unsubscribeCodexThreadBestEffort as P, resolveRecoverableCodexPluginConfigKeys as Q, buildContextEngineBinding as R, filterCodexDynamicToolsWithOpenClawShell as S, normalizeCodexDynamicToolName as T, resolveCodexContextEngineProjectionReserveTokens as U, projectContextEngineAssemblyForCodex as V, buildCodexPluginAppsConfigPatchFromPolicyContext as W, ensureCodexPluginActivation as X, shouldBuildCodexPluginThreadConfig as Y, pluginReadParams as Z, resolveCodexBindingModelProviderFallback as _, sanitizeCodexHistoryImagePayloads as a, isCodexAppServerProfilerEnabled as b, resumeCodexAppServerThread as c, resolveCodexWebSearchPlan as d, buildDeveloperInstructions as f, resolveCodexAppServerThreadModelSelection as g, resolveCodexAppServerRequestModelSelection as h, invalidInlineImageText as i, closeCodexStartupClientBestEffort as j, CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS as k, buildCodexRuntimeThreadConfig as l, resolveCodexAppServerModelProvider as m, buildTurnStartParams as n, sanitizeInlineImageDataUrl$1 as o, CODEX_NATIVE_PERSONALITY_NONE as p, buildCodexPluginThreadConfigTimeoutFallback as q, buildCodexUserInput as r, startOrResumeThread as s, buildTurnCollaborationMode as t, buildCodexNativeWebSearchThreadConfig as u, resolveReasoningEffort as v, isSystemAgentOnlyCodexDynamicToolAllowlist as w, filterCodexDynamicTools as x, readCodexSupportedReasoningEfforts as y, isContextEngineBindingCompatible as z };
3353
+ export { shouldBuildCodexPluginThreadConfig as $, resolveCodexDynamicToolsLoading as A, codexDynamicToolsFingerprint as B, readCodexSupportedReasoningEfforts as C, isForcedPrivateQaCodexRuntime as D, filterCodexDynamicToolsWithOpenClawShell as E, closeCodexStartupClientBestEffort as F, projectContextEngineAssemblyForCodex as G, buildContextEngineBinding as H, interruptCodexTurnBestEffort as I, buildCodexPluginAppsConfigPatchFromPolicyContext as J, resolveCodexContextEngineProjectionMaxChars as K, retireCodexAppServerClientAfterTimedOutTurn as L, CODEX_APP_SERVER_INTERRUPT_TIMEOUT_MS as M, CODEX_APP_SERVER_UNSUBSCRIBE_TIMEOUT_MS as N, isSystemAgentOnlyCodexDynamicToolAllowlist as O, CodexAppServerUnsafeSubscriptionError as P, mergeCodexThreadConfigs as Q, unsubscribeCodexThreadBestEffort as R, resolveReasoningEffort as S, filterCodexDynamicTools as T, isContextEngineBindingCompatible as U, codexLegacyDynamicToolsFingerprint as V, fitCodexProjectedContextForTurnStart as W, buildCodexPluginThreadConfigInputFingerprint as X, buildCodexPluginThreadConfig as Y, buildCodexPluginThreadConfigTimeoutFallback as Z, CODEX_NATIVE_PERSONALITY_NONE as _, sanitizeCodexHistoryImagePayloads as a, readCodexErrorNotificationMessage as at, resolveCodexAppServerThreadModelSelection as b, resumeCodexAppServerThread as c, readItemString as ct, buildCodexRingZeroThreadConfigPatch as d, readNonNegativeInteger as dt, ensureCodexPluginActivation as et, buildCodexRuntimeThreadConfig as f, readNullableString as ft, buildDeveloperInstructions as g, resolveCodexWebSearchPlan as h, splitPlanText as ht, invalidInlineImageText as i, normalizeNonEmptyString as it, resolveCodexDynamicToolsLoadingForRuntime as j, normalizeCodexDynamicToolName as k, assertCodexRingZeroHasNoManagedHooks as l, readNonEmptyString as lt, buildCodexNativeWebSearchThreadConfig as m, readString as mt, buildTurnStartParams as n, resolveRecoverableCodexPluginConfigKeys as nt, sanitizeInlineImageDataUrl$1 as o, readHookOutputEntries as ot, readCodexInheritedMcpServerNames as p, readNumber as pt, resolveCodexContextEngineProjectionReserveTokens as q, buildCodexUserInput as r, extractRawAssistantText as rt, startOrResumeThread as s, readItem as st, buildTurnCollaborationMode as t, pluginReadParams as tt, attestCodexRingZeroThreadHasNoMcpServers as u, readNonEmptyStringArray as ut, resolveCodexAppServerModelProvider as v, isCodexAppServerProfilerEnabled as w, resolveCodexBindingModelProviderFallback as x, resolveCodexAppServerRequestModelSelection as y, areCodexDynamicToolFingerprintsCompatible as z };