@openclaw/codex 2026.8.1-beta.3 → 2026.9.1-beta.1

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 (54) hide show
  1. package/dist/api.js +3 -3
  2. package/dist/{attempt-client-cleanup-URjUlCHg.js → attempt-client-cleanup-bfsmcQ6m.js} +21 -2
  3. package/dist/{binding-connection-DAvZwp96.js → binding-connection-BMvPX73o.js} +2 -2
  4. package/dist/{bounded-turn-4BjrZEwW.js → bounded-turn-B7iBUcuP.js} +8 -8
  5. package/dist/{capabilities-CH3K57v4.js → capabilities-BRMh0aIq.js} +1 -1
  6. package/dist/cli-metadata.js +1 -1
  7. package/dist/{command-formatters-D0nZ3qtd.js → command-formatters-DEsIufkt.js} +2 -2
  8. package/dist/{command-handlers-DC86lgT4.js → command-handlers-D_-1_qRp.js} +43 -32
  9. package/dist/{command-rpc-xUIIonsO.js → command-rpc-CCeCkf_v.js} +4 -4
  10. package/dist/{compact-COqgBRny.js → compact-BglNFZrQ.js} +8 -8
  11. package/dist/{config-CpNeo5AE.js → config-giW8X0QA.js} +82 -28
  12. package/dist/doctor-contract-api.js +9 -8
  13. package/dist/{dynamic-tools-fJZhl4CE.js → dynamic-tools-Dnlfa--w.js} +108 -820
  14. package/dist/{effective-mcp-catalog-4YKn51aG.js → effective-mcp-catalog-CTeGrnfO.js} +2 -2
  15. package/dist/{event-projector-assistant-message-BwxV4d6N.js → event-projector-assistant-message-C5-Ds8mA.js} +18 -1
  16. package/dist/{event-projector-usage-CLwNEJqW.js → event-projector-usage-Bk1I90Bg.js} +3 -3
  17. package/dist/{harness-DoKQcF8n.js → harness-Csz0F-DK.js} +11 -11
  18. package/dist/harness.js +1 -1
  19. package/dist/index.js +130 -172
  20. package/dist/{isolated-completion-DPMtlH9r.js → isolated-completion-Cv6FqygM.js} +4 -4
  21. package/dist/{managed-binary-By4FZC6i.js → managed-binary-DFYK4DWq.js} +43 -7
  22. package/dist/media-understanding-provider.js +1 -1
  23. package/dist/{model-catalog-CmGoqVKB.js → model-catalog-i9rNBthX.js} +4 -4
  24. package/dist/{models-CZw1wClT.js → models-TS3HBU-q.js} +4 -3
  25. package/dist/{native-subagent-monitor-GGq3RnOo.js → native-subagent-monitor-4Mfq2HDs.js} +176 -19
  26. package/dist/{node-exec-server.runtime-Bsu1LdFZ.js → node-exec-server.runtime-BpWqJO1V.js} +2 -2
  27. package/dist/{plugin-app-cache-key-DMNQ8Zi8.js → plugin-app-cache-key-C1CAdfcP.js} +6 -3
  28. package/dist/{plugin-approval-roundtrip-C75Yiiwc.js → plugin-approval-roundtrip-bUm777tR.js} +1 -1
  29. package/dist/{plugin-marketplace-discovery-CSWDkMrP.js → plugin-marketplace-discovery-B9DvaAG-.js} +29 -38
  30. package/dist/{plugin-metadata-cache-BXH5NF-4.js → plugin-metadata-cache-CTCT3w5L.js} +162 -135
  31. package/dist/{protocol-validators-VAVyEnDp.js → protocol-validators-VeJxxJ0U.js} +25 -3
  32. package/dist/{rate-limits-BI1dMHDG.js → rate-limits-C5_D8Gmb.js} +1 -1
  33. package/dist/{request-DSK0W6YI.js → request-DXXGHko0.js} +2 -2
  34. package/dist/{run-attempt-BV3HzuCf.js → run-attempt-DYc0QCBF.js} +346 -267
  35. package/dist/{sandbox-guard-C1qEeZ5C.js → sandbox-guard-kuWTn9C5.js} +1 -1
  36. package/dist/{session-binding-BTrLf9Qm.js → session-binding-Bcynfd-_.js} +1 -1
  37. package/dist/{session-catalog-ezP_UcRM.js → session-catalog-DaLKVtpH.js} +17 -16
  38. package/dist/{session-cli-B1hKvfkI.js → session-cli-DMc4oS2w.js} +1 -1
  39. package/dist/session-permission-policy-BrNH1bjy.js +160 -0
  40. package/dist/{session-retirement-CE4iMiLh.js → session-retirement-CcNC3YSY.js} +3 -3
  41. package/dist/{session-upstream-marker-D_2npHlA.js → session-upstream-marker-BIkusb95.js} +1 -1
  42. package/dist/{settled-turn-finalizer-Dx1onIqg.js → settled-turn-finalizer-Dc3ApjU4.js} +4 -4
  43. package/dist/{shared-client-Dw-rzii0.js → shared-client-DKz23hHY.js} +1026 -248
  44. package/dist/{side-question-DbXkJZzg.js → side-question-DjA_jsNe.js} +65 -36
  45. package/dist/{thread-lifecycle-DKdrnTMX.js → thread-lifecycle-L7oEkTlq.js} +850 -35
  46. package/dist/{thread-ownership-i2NBwDUL.js → thread-ownership-DZeuKH1j.js} +2 -2
  47. package/dist/{thread-resume-CdJk2Ehf.js → thread-resume-BE9qNEW0.js} +3 -3
  48. package/dist/{transcript-mirror-BU0_LKAL.js → transcript-mirror-DsCMWBca.js} +91 -10
  49. package/dist/{upstream-session-fork-BDVJCLAD.js → upstream-session-fork-DlaHxSLC.js} +3 -3
  50. package/dist/{usage-9dKJCgcy.js → usage-ROIaW3wo.js} +3 -3
  51. package/dist/{web-search-provider.runtime-DCdx4DGu.js → web-search-provider.runtime-ClaNPV7N.js} +3 -3
  52. package/openclaw.plugin.json +18 -1
  53. package/package.json +8 -8
  54. package/dist/app-server-policy-bg5QPSVP.js +0 -25
@@ -1,5 +1,5 @@
1
- import { J as releaseCodexAppServerLiveThread, K as isCodexAppServerLiveThreadClaimed, Y as retainCodexAppServerLiveThread, d as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-Dw-rzii0.js";
2
- import { a as closeCodexStartupClientBestEffort, d as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-URjUlCHg.js";
1
+ import { $ as releaseCodexAppServerLiveThread, Z as isCodexAppServerLiveThreadClaimed, et as retainCodexAppServerLiveThread, h as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-DKz23hHY.js";
2
+ import { a as closeCodexStartupClientBestEffort, d as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-bfsmcQ6m.js";
3
3
  import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
4
4
  //#region extensions/codex/src/app-server/thread-ownership.ts
5
5
  const nativeThreadOwners = new KeyedAsyncQueue();
@@ -1,6 +1,6 @@
1
- import { B as CodexAppServerRpcError, F as isCodexAppServerPrewriteRequestCancellationError, s as isCodexAppServerStartSelectionChangedError } from "./shared-client-Dw-rzii0.js";
2
- import { i as assertCodexThreadResumeSubscription, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-URjUlCHg.js";
3
- import { i as assertCodexThreadResumeResponse } from "./protocol-validators-VAVyEnDp.js";
1
+ import { B as isCodexAppServerPrewriteRequestCancellationError, G as CodexAppServerRpcError, c as isCodexAppServerStartSelectionChangedError } from "./shared-client-DKz23hHY.js";
2
+ import { i as assertCodexThreadResumeSubscription, r as CodexAppServerUnsafeSubscriptionError } from "./attempt-client-cleanup-bfsmcQ6m.js";
3
+ import { i as assertCodexThreadResumeResponse } from "./protocol-validators-VeJxxJ0U.js";
4
4
  //#region extensions/codex/src/app-server/thread-resume.ts
5
5
  /** Owns Codex thread/resume subscription safety. */
6
6
  /** Resumes one thread and retires the physical client when acceptance is indeterminate. */
@@ -1,6 +1,6 @@
1
1
  import { i as readUpstreamUserText, n as attachUpstreamUserText, r as readMirrorIdentity, t as attachCodexMirrorIdentity } from "./upstream-prompt-provenance-CFmsKwr9.js";
2
2
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
- import { embeddedAgentLog, formatErrorMessage, projectAgentHarnessTranscriptMessageForDisplay, runAgentHarnessBeforeMessageWriteHook } from "openclaw/plugin-sdk/agent-harness-runtime";
3
+ import { deliverAgentHarnessUserInputPrompt, embeddedAgentLog, formatErrorMessage, projectAgentHarnessTranscriptMessageForDisplay, runAgentHarnessBeforeMessageWriteHook } from "openclaw/plugin-sdk/agent-harness-runtime";
4
4
  import { createHash } from "node:crypto";
5
5
  import { truncateUtf8Prefix } from "openclaw/plugin-sdk/text-utility-runtime";
6
6
  import { withCodexSessionTranscriptMirrorWriteLock } from "openclaw/plugin-sdk/codex-session-transcript-runtime";
@@ -82,6 +82,8 @@ function projectCodexThreadHistory(params) {
82
82
  const role = item.type === "userMessage" ? "user" : item.type === "agentMessage" ? "assistant" : void 0;
83
83
  itemOffset += 1;
84
84
  if (!text || !role) continue;
85
+ const phase = item.phase === "commentary" || item.phase === "final_answer" ? item.phase : void 0;
86
+ const asyncDelivery = item.delivery === "async";
85
87
  const message = role === "assistant" ? attachCodexMirrorIdentity({
86
88
  role,
87
89
  content: [{
@@ -94,13 +96,14 @@ function projectCodexThreadHistory(params) {
94
96
  usage: CODEX_HISTORY_ZERO_USAGE,
95
97
  stopReason: turn.status === "interrupted" ? "aborted" : turn.status === "failed" ? "error" : "stop",
96
98
  ...turn.status === "failed" && turn.error?.message ? { errorMessage: turn.error.message } : {},
99
+ ...phase ? { phase } : {},
100
+ ...asyncDelivery && itemId ? { openclawAsyncDelivery: { itemId } } : {},
97
101
  timestamp
98
102
  }, identity) : attachCodexMirrorIdentity({
99
103
  role,
100
104
  content: text,
101
105
  timestamp
102
106
  }, identity);
103
- const phase = item.phase === "commentary" || item.phase === "final_answer" ? item.phase : void 0;
104
107
  projected.push({
105
108
  message,
106
109
  responseItem: {
@@ -141,7 +144,7 @@ function projectBoundedCodexThreadHistory(params) {
141
144
  return {
142
145
  importedMessages: selected.length,
143
146
  omittedMessages: projected.length - selected.length,
144
- responseItems: selected.filter(({ message }) => message.role !== "assistant" || message.stopReason !== "aborted" && message.stopReason !== "error").map(({ responseItem }) => responseItem),
147
+ responseItems: selected.filter(({ message }) => message.role !== "assistant" || message.stopReason !== "aborted" && message.stopReason !== "error" && !("openclawAsyncDelivery" in message)).map(({ responseItem }) => responseItem),
145
148
  transcriptMessages: selected.map(({ message }) => message)
146
149
  };
147
150
  }
@@ -150,7 +153,7 @@ function projectBoundedCodexVisibleSessionHistory(entries) {
150
153
  const projected = [];
151
154
  for (const entry of entries) {
152
155
  if (entry.role !== "user" && entry.role !== "assistant" || !("content" in entry.message)) continue;
153
- if (entry.role === "assistant" && "stopReason" in entry.message && (entry.message.stopReason === "aborted" || entry.message.stopReason === "error")) continue;
156
+ if (entry.role === "assistant" && ("stopReason" in entry.message && (entry.message.stopReason === "aborted" || entry.message.stopReason === "error") || "openclawAsyncDelivery" in entry.message)) continue;
154
157
  const content = entry.message.content;
155
158
  const text = normalizeImportedHistoryText(typeof content === "string" ? content : Array.isArray(content) ? content.flatMap((part) => part && typeof part === "object" && "text" in part && typeof part.text === "string" ? [part.text] : []).join("\n") : void 0);
156
159
  if (!text) continue;
@@ -270,6 +273,10 @@ async function buildResolvedCodexUserPromptMessage(params) {
270
273
  function isMirroredAgentMessage(message) {
271
274
  return message.role === "user" || message.role === "assistant" || message.role === "toolResult";
272
275
  }
276
+ function readMirroredAssistantText(message) {
277
+ if (message?.role !== "assistant") return;
278
+ return message.content.flatMap((part) => part.type === "text" ? [part.text] : []).join("\n") || void 0;
279
+ }
273
280
  /** Imports a bounded, user-visible Codex history tail into a new OpenClaw transcript. */
274
281
  async function importCodexThreadHistoryToTranscript(params) {
275
282
  const projection = projectBoundedCodexThreadHistory({
@@ -431,6 +438,7 @@ function buildMirrorDedupeIdentity(message) {
431
438
  async function mirror(params) {
432
439
  const messages = params.messages.filter(isMirroredAgentMessage);
433
440
  if (messages.length === 0) return {
441
+ assistantMirrorIdentitiesAppended: [],
434
442
  assistantMirrorIdentitiesOwned: [],
435
443
  anchorsByMirrorIdentity: /* @__PURE__ */ new Map(),
436
444
  messagesPresent: [],
@@ -449,11 +457,12 @@ async function mirror(params) {
449
457
  });
450
458
  const candidateIdempotencyKeys = candidates.flatMap(({ idempotencyKey }) => idempotencyKey ? [idempotencyKey] : []);
451
459
  const transcriptTarget = resolveCodexMirrorTranscriptTarget(params);
452
- const { appendedUpdates, assistantMirrorIdentitiesOwned, anchorsByMirrorIdentity, messagesPresent, userMessageReceipts, userMessagesPresent } = await withCodexSessionTranscriptMirrorWriteLock({
460
+ const { appendedUpdates, assistantMirrorIdentitiesAppended, assistantMirrorIdentitiesOwned, anchorsByMirrorIdentity, messagesPresent, userMessageReceipts, userMessagesPresent } = await withCodexSessionTranscriptMirrorWriteLock({
453
461
  ...transcriptTarget,
454
462
  config: params.config
455
463
  }, async (transcript) => {
456
464
  const nextAppendedUpdates = [];
465
+ const nextAssistantMirrorIdentitiesAppended = /* @__PURE__ */ new Set();
457
466
  const nextAssistantMirrorIdentitiesOwned = /* @__PURE__ */ new Set();
458
467
  const nextAnchorsByMirrorIdentity = /* @__PURE__ */ new Map();
459
468
  const nextMessagesPresent = [];
@@ -501,6 +510,7 @@ async function mirror(params) {
501
510
  } : attachCodexMirrorAttestation(nextMessage, sourceFingerprint);
502
511
  if (mirrorIdentity) messageToAppend = attachCodexMirrorIdentity(messageToAppend, mirrorIdentity);
503
512
  if (ownsRun && params.runId) messageToAppend = attachCodexMirrorRunId(messageToAppend, params.runId, ownsTerminal);
513
+ if (message.role === "assistant" && message.openclawAsyncDelivery) messageToAppend = Object.assign(messageToAppend, { openclawAsyncDelivery: { itemId: message.openclawAsyncDelivery.itemId } });
504
514
  messageToAppend = projectAgentHarnessTranscriptMessageForDisplay({
505
515
  hidden: message.display === false,
506
516
  message: messageToAppend
@@ -525,11 +535,14 @@ async function mirror(params) {
525
535
  message: appendedMessage
526
536
  });
527
537
  }
528
- if (appended.appended) nextAppendedUpdates.push({
529
- messageId,
530
- message: appendedMessage,
531
- ...messageSeq !== void 0 ? { messageSeq } : {}
532
- });
538
+ if (appended.appended) {
539
+ if (message.role === "assistant") nextAssistantMirrorIdentitiesAppended.add(dedupeIdentity);
540
+ nextAppendedUpdates.push({
541
+ messageId,
542
+ message: appendedMessage,
543
+ ...messageSeq !== void 0 ? { messageSeq } : {}
544
+ });
545
+ }
533
546
  if (idempotencyKey) {
534
547
  mirrorFacts.existingIdempotencyKeys.add(idempotencyKey);
535
548
  if (appended.anchor) mirrorFacts.anchorsByIdempotencyKey.set(idempotencyKey, appended.anchor);
@@ -537,6 +550,7 @@ async function mirror(params) {
537
550
  }
538
551
  return {
539
552
  appendedUpdates: nextAppendedUpdates,
553
+ assistantMirrorIdentitiesAppended: [...nextAssistantMirrorIdentitiesAppended],
540
554
  assistantMirrorIdentitiesOwned: [...nextAssistantMirrorIdentitiesOwned],
541
555
  anchorsByMirrorIdentity: nextAnchorsByMirrorIdentity,
542
556
  messagesPresent: nextMessagesPresent,
@@ -562,6 +576,7 @@ async function mirror(params) {
562
576
  embeddedAgentLog.warn("failed to publish codex app-server transcript update", { error: formatErrorMessage(error) });
563
577
  }
564
578
  return {
579
+ assistantMirrorIdentitiesAppended,
565
580
  assistantMirrorIdentitiesOwned,
566
581
  anchorsByMirrorIdentity,
567
582
  messagesPresent,
@@ -569,10 +584,76 @@ async function mirror(params) {
569
584
  userMessagesPresent
570
585
  };
571
586
  }
587
+ async function deliverAsyncMessageBestEffort(params) {
588
+ const mirrorIdentity = `${params.turnId}:async:${params.itemId}`;
589
+ const deliveryIntentId = `block-reply:v1:codex-app-server:${[
590
+ params.threadId,
591
+ params.turnId,
592
+ params.itemId
593
+ ].map(encodeURIComponent).join(":")}`;
594
+ const target = params.params.sessionTarget;
595
+ if (!target) {
596
+ if (!params.params.onBlockReply) return "retry";
597
+ try {
598
+ await deliverAsyncBlockReply(params.params.onBlockReply, params.text, deliveryIntentId);
599
+ return "settled";
600
+ } catch (error) {
601
+ embeddedAgentLog.warn("failed to deliver codex async agent message", {
602
+ error: formatErrorMessage(error),
603
+ itemId: params.itemId,
604
+ runId: params.params.runId,
605
+ threadId: params.threadId,
606
+ turnId: params.turnId
607
+ });
608
+ return "retry";
609
+ }
610
+ }
611
+ let result;
612
+ try {
613
+ result = await mirror({
614
+ agentId: target.agentId ?? params.params.agentId,
615
+ sessionId: target.sessionId ?? params.params.sessionId,
616
+ sessionKey: target.sessionKey ?? params.params.sessionKey,
617
+ storePath: target.storePath,
618
+ cwd: params.cwd,
619
+ config: params.params.config,
620
+ messages: [attachCodexMirrorIdentity(params.message, mirrorIdentity)],
621
+ idempotencyScope: `codex-app-server:${params.threadId}`
622
+ });
623
+ } catch (error) {
624
+ embeddedAgentLog.warn("failed to persist codex async agent message", {
625
+ error: formatErrorMessage(error),
626
+ itemId: params.itemId,
627
+ runId: params.params.runId,
628
+ threadId: params.threadId,
629
+ turnId: params.turnId
630
+ });
631
+ return "retry";
632
+ }
633
+ if (!result.assistantMirrorIdentitiesOwned.includes(mirrorIdentity)) return "retry";
634
+ const persistedText = readMirroredAssistantText(result.messagesPresent.find((message) => readMirrorIdentity(message) === mirrorIdentity));
635
+ if (params.params.onBlockReply && persistedText !== void 0) try {
636
+ await deliverAsyncBlockReply(params.params.onBlockReply, persistedText, deliveryIntentId);
637
+ } catch (error) {
638
+ embeddedAgentLog.warn("failed to deliver persisted codex async agent message", {
639
+ error: formatErrorMessage(error),
640
+ itemId: params.itemId,
641
+ runId: params.params.runId,
642
+ threadId: params.threadId,
643
+ turnId: params.turnId
644
+ });
645
+ return "retry";
646
+ }
647
+ return "settled";
648
+ }
572
649
  const codexTranscriptMirrorRuntime = {
650
+ deliverAsyncMessageBestEffort,
573
651
  mirror,
574
652
  mirrorBestEffort
575
653
  };
654
+ async function deliverAsyncBlockReply(onBlockReply, text, deliveryIntentId) {
655
+ await deliverAgentHarnessUserInputPrompt({ onBlockReply: (payload) => onBlockReply(payload, { deliveryIntentId }) }, [], { intro: text });
656
+ }
576
657
  function resolveCodexMirrorTranscriptTarget(params) {
577
658
  const sessionKey = params.sessionKey?.trim();
578
659
  const storePath = params.storePath?.trim();
@@ -1,7 +1,7 @@
1
- import { d as sessionBindingIdentity } from "./session-binding-BTrLf9Qm.js";
2
- import { r as assertCodexThreadForkResponse } from "./protocol-validators-VAVyEnDp.js";
1
+ import { d as sessionBindingIdentity } from "./session-binding-Bcynfd-_.js";
2
+ import { r as assertCodexThreadForkResponse } from "./protocol-validators-VeJxxJ0U.js";
3
3
  import { t as isIncognitoSessionKey } from "./incognito-session-ET_ufDH-.js";
4
- import { i as createImportedCodexSession, n as codexUpstreamBaseline, t as codexLastTerminalTurnId } from "./session-upstream-marker-D_2npHlA.js";
4
+ import { i as createImportedCodexSession, n as codexUpstreamBaseline, t as codexLastTerminalTurnId } from "./session-upstream-marker-BIkusb95.js";
5
5
  import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { readVisibleSessionTranscriptMessageEntries } from "openclaw/plugin-sdk/session-transcript-runtime";
7
7
  import { deleteSessionUpstreamLink, upsertSessionUpstreamLink } from "openclaw/plugin-sdk/session-catalog";
@@ -1,6 +1,6 @@
1
- import { i as resolveCodexAppServerRuntimeOptions } from "./config-CpNeo5AE.js";
2
- import { t as buildCodexAppServerUsageSnapshot } from "./rate-limits-BI1dMHDG.js";
3
- import { t as readCodexAppServerUsage } from "./request-DSK0W6YI.js";
1
+ import { i as resolveCodexAppServerRuntimeOptions } from "./config-giW8X0QA.js";
2
+ import { t as buildCodexAppServerUsageSnapshot } from "./rate-limits-C5_D8Gmb.js";
3
+ import { t as readCodexAppServerUsage } from "./request-DXXGHko0.js";
4
4
  import { CODEX_APP_SERVER_AUTH_MARKER } from "openclaw/plugin-sdk/agent-runtime";
5
5
  //#region extensions/codex/src/app-server/usage.ts
6
6
  /** Handles the synthetic usage credential for a Codex-backed OpenAI route. */
@@ -1,6 +1,6 @@
1
- import { ut as isJsonObject } from "./shared-client-Dw-rzii0.js";
2
- import { d as buildCodexNativeWebSearchThreadConfig } from "./thread-lifecycle-DKdrnTMX.js";
3
- import { t as runBoundedCodexAppServerTurn } from "./bounded-turn-4BjrZEwW.js";
1
+ import { vt as isJsonObject } from "./shared-client-DKz23hHY.js";
2
+ import { P as buildCodexNativeWebSearchThreadConfig } from "./thread-lifecycle-L7oEkTlq.js";
3
+ import { t as runBoundedCodexAppServerTurn } from "./bounded-turn-B7iBUcuP.js";
4
4
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { readStringParam, resolveSearchTimeoutSeconds, wrapWebContent } from "openclaw/plugin-sdk/provider-web-search";
6
6
  //#region extensions/codex/src/web-search-provider.runtime.ts
@@ -1,5 +1,22 @@
1
1
  {
2
2
  "id": "codex",
3
+ "backupResources": [
4
+ {
5
+ "disposition": "regenerable",
6
+ "scope": "agent",
7
+ "relativePath": "codex-home/tmp/arg0"
8
+ },
9
+ {
10
+ "disposition": "regenerable",
11
+ "scope": "agent",
12
+ "relativePath": "codex-home/.tmp/plugins"
13
+ },
14
+ {
15
+ "disposition": "regenerable",
16
+ "scope": "agent",
17
+ "relativePath": "codex-home/.tmp/bundled-marketplaces"
18
+ }
19
+ ],
3
20
  "doctorContract": {
4
21
  "configRepair": true,
5
22
  "stateMigrations": true
@@ -497,7 +514,7 @@
497
514
  },
498
515
  "computerUse.autoRepair": {
499
516
  "label": "Auto Repair",
500
- "help": "When true, failed Computer Use live tests repair stale scoped Computer Use MCP children before retrying once.",
517
+ "help": "When true, failed Computer Use live tests reload the Codex-owned MCP runtime before retrying once.",
501
518
  "advanced": true
502
519
  },
503
520
  "computerUse.marketplaceSource": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/codex",
3
- "version": "2026.8.1-beta.3",
3
+ "version": "2026.9.1-beta.1",
4
4
  "description": "OpenClaw Codex app-server harness and native session supervision plugin.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,11 +8,11 @@
8
8
  },
9
9
  "type": "module",
10
10
  "dependencies": {
11
- "@openai/codex": "0.149.1",
11
+ "@openai/codex": "0.150.1",
12
12
  "semver": "7.8.5",
13
- "smol-toml": "1.7.1",
14
- "typebox": "1.3.6",
15
- "ws": "8.21.1",
13
+ "smol-toml": "1.8.0",
14
+ "typebox": "1.3.16",
15
+ "ws": "8.21.3",
16
16
  "zod": "4.4.3"
17
17
  },
18
18
  "devDependencies": {
@@ -36,10 +36,10 @@
36
36
  ]
37
37
  },
38
38
  "compat": {
39
- "pluginApi": ">=2026.8.1-beta.3"
39
+ "pluginApi": ">=2026.9.1-beta.1"
40
40
  },
41
41
  "build": {
42
- "openclawVersion": "2026.8.1-beta.3"
42
+ "openclawVersion": "2026.9.1-beta.1"
43
43
  },
44
44
  "release": {
45
45
  "publishToClawHub": true,
@@ -59,7 +59,7 @@
59
59
  "README.md"
60
60
  ],
61
61
  "peerDependencies": {
62
- "openclaw": ">=2026.8.1-beta.3"
62
+ "openclaw": ">=2026.9.1-beta.1"
63
63
  },
64
64
  "peerDependenciesMeta": {
65
65
  "openclaw": {
@@ -1,25 +0,0 @@
1
- import { b as canUseCodexModelBackedApprovalsReviewerForModel } from "./config-CpNeo5AE.js";
2
- //#region extensions/codex/src/app-server/app-server-policy.ts
3
- function resolveCodexAppServerForModelProvider(params) {
4
- const explicitProvider = normalizeModelBackedReviewerProvider(params.provider);
5
- if (!isCodexModelBackedApprovalsReviewer(params.appServer.approvalsReviewer) || canUseCodexModelBackedApprovalsReviewerForModel({
6
- modelProvider: explicitProvider,
7
- model: params.model,
8
- config: params.config,
9
- env: params.env,
10
- agentDir: params.agentDir,
11
- codexConfigToml: params.codexConfigToml
12
- })) return params.appServer;
13
- return {
14
- ...params.appServer,
15
- approvalsReviewer: "user"
16
- };
17
- }
18
- function isCodexModelBackedApprovalsReviewer(value) {
19
- return value === "auto_review" || value === "guardian_subagent";
20
- }
21
- function normalizeModelBackedReviewerProvider(provider) {
22
- return provider?.trim().toLowerCase() || void 0;
23
- }
24
- //#endregion
25
- export { resolveCodexAppServerForModelProvider as t };