@openclaw/codex 2026.7.2-beta.1 → 2026.7.2-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +1 -1
  2. package/dist/{app-server-policy-DVcxdse_.js → app-server-policy-Scc-Wevo.js} +1 -1
  3. package/dist/{attempt-notifications-DEv9h7iC.js → attempt-notifications-BFmNhqFl.js} +3 -6
  4. package/dist/cli-metadata.js +1 -1
  5. package/dist/{command-formatters-D6ZlGNmb.js → command-formatters-Dq9InZUK.js} +34 -3
  6. package/dist/{command-handlers-Cpl9fUWv.js → command-handlers-IgqmL_kv.js} +10 -13
  7. package/dist/{compact-FnJmiPNA.js → compact-DCTmg3id.js} +4 -5
  8. package/dist/{computer-use-DVzr8OP1.js → computer-use-CPcU8TjG.js} +4 -4
  9. package/dist/{conversation-control-DtQ-E7mr.js → conversation-control-CGkBlfc5.js} +5 -7
  10. package/dist/doctor-contract-api.js +1 -1
  11. package/dist/{dynamic-tools-BMLoaTeG.js → dynamic-tools-C_1tEs34.js} +608 -330
  12. package/dist/harness.js +9 -5
  13. package/dist/index.js +52 -31
  14. package/dist/{media-understanding-provider-D580L0P8.js → media-understanding-provider-D31dOJwb.js} +11 -12
  15. package/dist/media-understanding-provider.js +1 -1
  16. package/dist/{models-DuKzZA6G.js → models-uh26C8QU.js} +5 -9
  17. package/dist/{notification-correlation-DfaCm0mx.js → notification-correlation-KmfV4EkP.js} +3 -3
  18. package/dist/{plugin-app-cache-key-BKNjHMEs.js → plugin-app-cache-key-Ceb-lm2c.js} +2 -2
  19. package/dist/{rate-limits-Dhp04Rqo.js → rate-limits-DyXaYAxU.js} +7 -6
  20. package/dist/{request-DborTWgw.js → request-B_oQsCXy.js} +54 -8
  21. package/dist/{run-attempt-VPVJoYDP.js → run-attempt-MLzoMe_m.js} +499 -295
  22. package/dist/{config-c48K5HP9.js → session-binding-h1mmCGnl.js} +786 -3
  23. package/dist/{session-catalog-7H112Tr_.js → session-catalog-CEvoXWHA.js} +45 -29
  24. package/dist/{session-cli-B28RhCyp.js → session-cli-XsEuWb_C.js} +1 -1
  25. package/dist/{shared-client-D4mFI9al.js → shared-client-JiAnW6pc.js} +255 -81
  26. package/dist/{side-question-CgJBz52s.js → side-question-DqDvIwSU.js} +15 -13
  27. package/dist/{thread-lifecycle-BgLXzjvV.js → thread-lifecycle-CN_pPtPh.js} +1787 -1579
  28. package/dist/{protocol-validators-dZQ-UTOa.js → transcript-mirror-D9rTxx2P.js} +485 -2
  29. package/dist/usage-D5Rohxoc.js +25 -0
  30. package/dist/{web-search-provider.runtime-Bs-eTn5U.js → web-search-provider.runtime-CKVBn3fP.js} +3 -3
  31. package/npm-shrinkwrap.json +30 -30
  32. package/openclaw.plugin.json +10 -5
  33. package/package.json +6 -6
  34. package/dist/capabilities-42Dfn2TV.js +0 -33
  35. package/dist/prompt-overlay.js +0 -15
  36. package/dist/protocol-BMifTfdW.js +0 -15
  37. package/dist/provider-catalog.js +0 -118
  38. package/dist/provider-discovery.js +0 -34
  39. package/dist/provider.js +0 -307
  40. package/dist/session-binding-BMfX1OX-.js +0 -786
  41. package/dist/transcript-mirror-DhLwFIL4.js +0 -485
package/README.md CHANGED
@@ -8,7 +8,7 @@ Install from OpenClaw:
8
8
  openclaw plugins install @openclaw/codex
9
9
  ```
10
10
 
11
- Use this plugin when you want OpenClaw to run Codex-backed model turns, media understanding, and prompt overlays through the Codex app-server harness, or to browse non-archived Codex Desktop and CLI sessions and paginated transcripts across paired computers.
11
+ Use this plugin when you want OpenClaw to run Codex-backed model turns, media understanding, and prompt overlays through the Codex app-server harness, or to browse non-archived Codex CLI, VS Code, Atlas, and ChatGPT sessions and paginated transcripts across paired computers.
12
12
 
13
13
  Guided onboarding attempts to install and enable supervision after it detects a native Codex installation and the selected inference backend passes its live check; Codex does not need to be the primary backend. Supervision activates when that opportunistic plugin setup succeeds. App Server availability is checked when supervision connects. An explicit Codex plugin disable, plugin-policy block, or `supervision.enabled: false` prevents opportunistic enablement. Manual setups enable `plugins.entries.codex.config.supervision.enabled`. Without explicit App Server connection settings, supervision uses a managed user-home stdio connection; explicit `appServer` settings are honored.
14
14
 
@@ -1,4 +1,4 @@
1
- import { i as canUseCodexModelBackedApprovalsReviewerForModel } from "./config-c48K5HP9.js";
1
+ import { p as canUseCodexModelBackedApprovalsReviewerForModel } from "./session-binding-h1mmCGnl.js";
2
2
  //#region extensions/codex/src/app-server/app-server-policy.ts
3
3
  /**
4
4
  * Policy promotion for Codex app-server runs that can safely use OpenClaw tool
@@ -1,4 +1,4 @@
1
- import { i as isJsonObject } from "./protocol-BMifTfdW.js";
1
+ import { Z as isJsonObject } from "./shared-client-JiAnW6pc.js";
2
2
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
3
3
  //#region extensions/codex/src/app-server/attempt-notifications.ts
4
4
  /**
@@ -6,8 +6,6 @@ import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
6
6
  */
7
7
  const CODEX_TURN_ABORT_MARKER_START = "<turn_aborted>";
8
8
  const CODEX_TURN_ABORT_MARKER_END = "</turn_aborted>";
9
- const CODEX_INTERRUPTED_USER_GUIDANCE = "The user interrupted the previous turn on purpose. Any running unified exec processes may still be running in the background. If any tools/commands were aborted, they may have partially executed.";
10
- const CODEX_INTERRUPTED_DEVELOPER_GUIDANCE = "The previous turn was interrupted on purpose. Any running unified exec processes may still be running in the background. If any tools/commands were aborted, they may have partially executed.";
11
9
  /** Builds compact activity metadata for watchdog and diagnostic updates. */
12
10
  function describeNotificationActivity(notification) {
13
11
  if (!isJsonObject(notification.params)) return { lastNotificationMethod: notification.method };
@@ -182,12 +180,11 @@ function isCodexTurnAbortMarkerNotification(notification, options = {}) {
182
180
  if (notification.method !== "rawResponseItem/completed" || !isJsonObject(notification.params)) return false;
183
181
  const item = notification.params.item;
184
182
  const role = isJsonObject(item) ? readString(item, "role") : void 0;
185
- if (!isJsonObject(item) || role !== "user" && role !== "developer") return false;
183
+ if (!isJsonObject(item) || readString(item, "type") !== "message" || role !== "user" && role !== "developer") return false;
186
184
  const text = extractRawResponseItemText(item).trim();
187
185
  const currentPromptTexts = [options.currentPromptText, ...options.currentPromptTexts ?? []].filter(isNonEmptyString).map((prompt) => prompt.trim());
188
186
  if (role === "user" && currentPromptTexts.includes(text)) return false;
189
- const markerBody = readCodexTurnAbortMarkerBody(text);
190
- return markerBody === CODEX_INTERRUPTED_USER_GUIDANCE || markerBody === CODEX_INTERRUPTED_DEVELOPER_GUIDANCE;
187
+ return readCodexTurnAbortMarkerBody(text) !== void 0;
191
188
  }
192
189
  function readCodexTurnAbortMarkerBody(text) {
193
190
  if (!text.startsWith(CODEX_TURN_ABORT_MARKER_START) || !text.endsWith(CODEX_TURN_ABORT_MARKER_END)) return;
@@ -2,7 +2,7 @@ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
2
2
  //#region extensions/codex/cli-metadata.ts
3
3
  function registerCodexCliMetadata(api) {
4
4
  api.registerCli(async ({ program }) => {
5
- const { registerCodexSessionCli } = await import("./session-cli-B28RhCyp.js");
5
+ const { registerCodexSessionCli } = await import("./session-cli-XsEuWb_C.js");
6
6
  registerCodexSessionCli(program);
7
7
  }, { descriptors: [{
8
8
  name: "codex",
@@ -1,5 +1,36 @@
1
- import { i as isJsonObject } from "./protocol-BMifTfdW.js";
2
- import { c as summarizeCodexRateLimits, o as summarizeCodexAccountRateLimits, r as hasCodexRateLimitSnapshots } from "./rate-limits-Dhp04Rqo.js";
1
+ import { R as CodexAppServerRpcError, Z as isJsonObject } from "./shared-client-JiAnW6pc.js";
2
+ import { c as summarizeCodexRateLimits, o as summarizeCodexAccountRateLimits, r as hasCodexRateLimitSnapshots } from "./rate-limits-DyXaYAxU.js";
3
+ //#region extensions/codex/src/app-server/capabilities.ts
4
+ /**
5
+ * Capability helpers for optional Codex app-server control-plane methods.
6
+ */
7
+ /** Known app-server methods used by OpenClaw control surfaces. */
8
+ const CODEX_CONTROL_METHODS = {
9
+ account: "account/read",
10
+ compact: "thread/compact/start",
11
+ feedback: "feedback/upload",
12
+ forkThread: "thread/fork",
13
+ listMcpServers: "mcpServerStatus/list",
14
+ listSkills: "skills/list",
15
+ listThreads: "thread/list",
16
+ listThreadTurns: "thread/turns/list",
17
+ readThread: "thread/read",
18
+ rateLimits: "account/rateLimits/read",
19
+ archiveThread: "thread/archive",
20
+ renameThread: "thread/name/set",
21
+ resumeThread: "thread/resume",
22
+ review: "review/start",
23
+ unarchiveThread: "thread/unarchive"
24
+ };
25
+ /** Formats unsupported control calls differently from ordinary RPC failures. */
26
+ function describeControlFailure(error) {
27
+ if (isUnsupportedControlError(error)) return "unsupported by this Codex app-server";
28
+ return error instanceof Error ? error.message : String(error);
29
+ }
30
+ function isUnsupportedControlError(error) {
31
+ return error instanceof CodexAppServerRpcError && error.code === -32601;
32
+ }
33
+ //#endregion
3
34
  //#region extensions/codex/src/command-formatters.ts
4
35
  /** Formats the combined `/codex status` probe result. */
5
36
  function formatCodexStatus(probes) {
@@ -277,4 +308,4 @@ function readString(record, key) {
277
308
  return typeof value === "string" && value.trim() ? value.trim() : void 0;
278
309
  }
279
310
  //#endregion
280
- export { formatComputerUseStatus as a, formatSkills as c, formatCodexStatus as i, formatThreads as l, formatAccount as n, formatList as o, formatCodexDisplayText as r, formatModels as s, buildHelp as t, readString as u };
311
+ export { formatComputerUseStatus as a, formatSkills as c, CODEX_CONTROL_METHODS as d, describeControlFailure as f, formatCodexStatus as i, formatThreads as l, formatAccount as n, formatList as o, formatCodexDisplayText as r, formatModels as s, buildHelp as t, readString as u };
@@ -1,18 +1,15 @@
1
- import { i as isJsonObject } from "./protocol-BMifTfdW.js";
2
- import { c as isCodexFastServiceTier } from "./config-c48K5HP9.js";
3
- import { n as assertCodexThreadResumeResponse } from "./protocol-validators-dZQ-UTOa.js";
4
- import { t as listAllCodexAppServerModels } from "./models-DuKzZA6G.js";
5
- import { S as resolveCodexAppServerAuthProfileIdForAgent } from "./shared-client-D4mFI9al.js";
6
- import { c as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced, o as normalizeCodexAppServerBindingModelProvider, r as bindingStoreKey, s as reclaimCurrentCodexSessionGeneration } from "./session-binding-BMfX1OX-.js";
7
- import { s as summarizeCodexAccountUsage } from "./rate-limits-Dhp04Rqo.js";
8
- import { t as CODEX_CONTROL_METHODS } from "./capabilities-42Dfn2TV.js";
9
- import { a as formatComputerUseStatus, c as formatSkills, i as formatCodexStatus, l as formatThreads, n as formatAccount, o as formatList, r as formatCodexDisplayText, s as formatModels, t as buildHelp, u as readString$1 } from "./command-formatters-D6ZlGNmb.js";
1
+ import { S as resolveCodexAppServerAuthProfileIdForAgent, Z as isJsonObject } from "./shared-client-JiAnW6pc.js";
2
+ import { _ as isCodexFastServiceTier, c as sessionBindingIdentity, n as assertCodexBindingMayBeReplaced, o as normalizeCodexAppServerBindingModelProvider, r as bindingStoreKey, s as reclaimCurrentCodexSessionGeneration } from "./session-binding-h1mmCGnl.js";
3
+ import { u as assertCodexThreadResumeResponse } from "./transcript-mirror-D9rTxx2P.js";
4
+ import { t as listAllCodexAppServerModels } from "./models-uh26C8QU.js";
5
+ import { a as formatComputerUseStatus, c as formatSkills, d as CODEX_CONTROL_METHODS, i as formatCodexStatus, l as formatThreads, n as formatAccount, o as formatList, r as formatCodexDisplayText, s as formatModels, t as buildHelp, u as readString$1 } from "./command-formatters-Dq9InZUK.js";
6
+ import { s as summarizeCodexAccountUsage } from "./rate-limits-DyXaYAxU.js";
10
7
  import { n as resolveCodexNativeExecutionBlock, r as resolveCodexNativeSandboxBlock } from "./sandbox-guard-D1Wky__S.js";
11
- import { a as setCodexConversationFastMode, c as steerCodexConversationTurn, d as CODEX_NATIVE_EXECUTION_AUTH_ERROR, f as canMutateCodexHost, i as readCodexConversationActiveTurn, l as stopCodexConversationTurn, n as parseCodexFastModeArg, o as setCodexConversationModel, r as parseCodexPermissionsModeArg, s as setCodexConversationPermissions, t as formatPermissionsMode } from "./conversation-control-DtQ-E7mr.js";
8
+ import { a as setCodexConversationFastMode, c as steerCodexConversationTurn, d as CODEX_NATIVE_EXECUTION_AUTH_ERROR, f as canMutateCodexHost, i as readCodexConversationActiveTurn, l as stopCodexConversationTurn, n as parseCodexFastModeArg, o as setCodexConversationModel, r as parseCodexPermissionsModeArg, s as setCodexConversationPermissions, t as formatPermissionsMode } from "./conversation-control-CGkBlfc5.js";
12
9
  import { i as readCodexConversationBindingData, n as createCodexCliNodeConversationBindingData, o as resolveCodexDefaultWorkspaceDir, r as createCodexConversationBindingData } from "./conversation-binding-data-BHRpYbX3.js";
13
- import { a as resolveCodexBindingAppServerConnection } from "./notification-correlation-DfaCm0mx.js";
14
- import { c as requestOptions, l as safeCodexControlRequest, o as codexControlRequest, p as formatCodexCliSessions, s as readCodexStatusProbes } from "./session-catalog-7H112Tr_.js";
15
- import { i as readCodexComputerUseStatus, n as installCodexComputerUse } from "./computer-use-DVzr8OP1.js";
10
+ import { a as resolveCodexBindingAppServerConnection } from "./notification-correlation-KmfV4EkP.js";
11
+ import { c as requestOptions, l as safeCodexControlRequest, o as codexControlRequest, p as formatCodexCliSessions, s as readCodexStatusProbes } from "./session-catalog-CEvoXWHA.js";
12
+ import { i as readCodexComputerUseStatus, n as installCodexComputerUse } from "./computer-use-CPcU8TjG.js";
16
13
  import { parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
17
14
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
18
15
  import crypto from "node:crypto";
@@ -1,9 +1,8 @@
1
- import { i as isJsonObject } from "./protocol-BMifTfdW.js";
2
- import { _ as readCodexNotificationItem } from "./attempt-notifications-DEv9h7iC.js";
3
- import { O as CodexAppServerRpcError, a as getLeasedSharedCodexAppServerClient, c as releaseLeasedSharedCodexAppServerClient } from "./shared-client-D4mFI9al.js";
4
- import { c as sessionBindingIdentity, t as CODEX_APP_SERVER_BINDING_GUARDED_REQUEST_TIMEOUT_MS } from "./session-binding-BMfX1OX-.js";
1
+ import { R as CodexAppServerRpcError, Z as isJsonObject, a as getLeasedSharedCodexAppServerClient, c as releaseLeasedSharedCodexAppServerClient } from "./shared-client-JiAnW6pc.js";
2
+ import { _ as readCodexNotificationItem } from "./attempt-notifications-BFmNhqFl.js";
3
+ import { c as sessionBindingIdentity, t as CODEX_APP_SERVER_BINDING_GUARDED_REQUEST_TIMEOUT_MS } from "./session-binding-h1mmCGnl.js";
5
4
  import { n as resolveCodexNativeExecutionBlock } from "./sandbox-guard-D1Wky__S.js";
6
- import { a as resolveCodexBindingAppServerConnection, n as readCodexNotificationThreadId, r as readCodexNotificationTurnId } from "./notification-correlation-DfaCm0mx.js";
5
+ import { a as resolveCodexBindingAppServerConnection, n as readCodexNotificationThreadId, r as readCodexNotificationTurnId } from "./notification-correlation-KmfV4EkP.js";
7
6
  import { resolveAgentDir, resolveDefaultAgentId } from "openclaw/plugin-sdk/agent-runtime";
8
7
  import { embeddedAgentLog, resolveCompactionTimeoutMs } from "openclaw/plugin-sdk/agent-harness-runtime";
9
8
  //#region extensions/codex/src/app-server/compact.ts
@@ -1,7 +1,7 @@
1
- import { f as resolveCodexAppServerRuntimeOptions, h as resolveCodexComputerUseConfig } from "./config-c48K5HP9.js";
2
- import { E as resolveFirstExistingMacOSDesktopCodexBundledMarketplacePath, M as isCodexAppServerIndeterminateRequestCancellationError, N as isCodexAppServerIndeterminateTransportError, a as getLeasedSharedCodexAppServerClient, c as releaseLeasedSharedCodexAppServerClient, h as acquireCodexNativeConfigFence, j as isCodexAppServerConnectionClosedError, l as resolveCodexNativeConfigFenceKey } from "./shared-client-D4mFI9al.js";
3
- import { n as describeControlFailure } from "./capabilities-42Dfn2TV.js";
4
- import { n as requestCodexAppServerJson } from "./request-DborTWgw.js";
1
+ import { E as resolveFirstExistingMacOSDesktopCodexBundledMarketplacePath, H as isCodexAppServerConnectionClosedError, U as isCodexAppServerIndeterminateRequestCancellationError, W as isCodexAppServerIndeterminateTransportError, a as getLeasedSharedCodexAppServerClient, c as releaseLeasedSharedCodexAppServerClient, h as acquireCodexNativeConfigFence, l as resolveCodexNativeConfigFenceKey } from "./shared-client-JiAnW6pc.js";
2
+ import { C as resolveCodexComputerUseConfig, b as resolveCodexAppServerRuntimeOptions } from "./session-binding-h1mmCGnl.js";
3
+ import { f as describeControlFailure } from "./command-formatters-Dq9InZUK.js";
4
+ import { r as requestCodexAppServerJson } from "./request-B_oQsCXy.js";
5
5
  import { existsSync } from "node:fs";
6
6
  import { runExec } from "openclaw/plugin-sdk/process-runtime";
7
7
  //#region extensions/codex/src/app-server/computer-use.ts
@@ -1,10 +1,8 @@
1
- import { c as isCodexFastServiceTier, f as resolveCodexAppServerRuntimeOptions, g as resolveCodexModelBackedReviewerPolicyContext } from "./config-c48K5HP9.js";
2
- import { a as getLeasedSharedCodexAppServerClient, c as releaseLeasedSharedCodexAppServerClient, p as withLeasedCodexAppServerClientStartSelectionRetry, s as releaseCodexAppServerClientLease } from "./shared-client-D4mFI9al.js";
3
- import { f as resolveCodexAppServerRequestModelSelection, m as resolveCodexBindingModelProviderFallback } from "./thread-lifecycle-BgLXzjvV.js";
4
- import { a as isCodexAppServerNativeAuthProfile, o as normalizeCodexAppServerBindingModelProvider, r as bindingStoreKey } from "./session-binding-BMfX1OX-.js";
5
- import { t as CODEX_CONTROL_METHODS } from "./capabilities-42Dfn2TV.js";
6
- import { r as formatCodexDisplayText } from "./command-formatters-D6ZlGNmb.js";
7
- import { a as resolveCodexBindingAppServerConnection } from "./notification-correlation-DfaCm0mx.js";
1
+ import { a as getLeasedSharedCodexAppServerClient, c as releaseLeasedSharedCodexAppServerClient, p as withLeasedCodexAppServerClientStartSelectionRetry, s as releaseCodexAppServerClientLease } from "./shared-client-JiAnW6pc.js";
2
+ import { _ as isCodexFastServiceTier, a as isCodexAppServerNativeAuthProfile, b as resolveCodexAppServerRuntimeOptions, o as normalizeCodexAppServerBindingModelProvider, r as bindingStoreKey, w as resolveCodexModelBackedReviewerPolicyContext } from "./session-binding-h1mmCGnl.js";
3
+ import { _ as resolveCodexBindingModelProviderFallback, h as resolveCodexAppServerRequestModelSelection } from "./thread-lifecycle-CN_pPtPh.js";
4
+ import { d as CODEX_CONTROL_METHODS, r as formatCodexDisplayText } from "./command-formatters-Dq9InZUK.js";
5
+ import { a as resolveCodexBindingAppServerConnection } from "./notification-correlation-KmfV4EkP.js";
8
6
  import { ModelSelectionLockedError } from "openclaw/plugin-sdk/model-session-runtime";
9
7
  //#region extensions/codex/src/command-authorization.ts
10
8
  const CODEX_NATIVE_EXECUTION_AUTH_ERROR = "Only an owner or operator.admin can control Codex native execution.";
@@ -302,7 +302,7 @@ async function migrateSource(source, candidates, params, store) {
302
302
  return await withFileLock(source.sidecarPath, LEGACY_BINDING_LOCK_OPTIONS, async () => {
303
303
  const [contents, stat] = await Promise.all([fs.readFile(source.sidecarPath, "utf8"), fs.stat(source.sidecarPath)]);
304
304
  const raw = JSON.parse(contents);
305
- const [{ bindingStoreKey, createStoredCodexAppServerBinding, normalizeStoredCodexAppServerBindingFingerprints, readStoredCodexAppServerBinding }, { legacyCodexConversationBindingId }] = await Promise.all([import("./session-binding-BMfX1OX-.js").then((n) => n.l), import("./conversation-binding-data-BHRpYbX3.js").then((n) => n.t)]);
305
+ const [{ bindingStoreKey, createStoredCodexAppServerBinding, normalizeStoredCodexAppServerBindingFingerprints, readStoredCodexAppServerBinding }, { legacyCodexConversationBindingId }] = await Promise.all([import("./session-binding-h1mmCGnl.js").then((n) => n.l), import("./conversation-binding-data-BHRpYbX3.js").then((n) => n.t)]);
306
306
  const agentId = owner?.agentId ?? (source.agentIds.size === 1 ? [...source.agentIds][0] : void 0);
307
307
  const baseStored = createStoredCodexAppServerBinding(raw, {
308
308
  now: stat.mtime.toISOString(),