@openclaw/codex 2026.9.35 → 2026.9.36

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 (60) hide show
  1. package/dist/.setup/{account-usage-runtime-BaJamBiM.mjs → account-usage-runtime-BOmEegZv.mjs} +1 -1
  2. package/dist/.setup/{apply-CxwOGLd_.mjs → apply-DhLjXde1.mjs} +4 -4
  3. package/dist/.setup/{attempt-client-cleanup-BVtNsTOE.mjs → attempt-client-cleanup-C9dwStbK.mjs} +4 -4
  4. package/dist/.setup/{attempt-workspace-context-XRsWP165.mjs → attempt-workspace-context-DJrvhJDC.mjs} +1 -1
  5. package/dist/.setup/{auth-cache-key-CskfconU.mjs → auth-cache-key-DWIq3Lzf.mjs} +1 -1
  6. package/dist/.setup/{bounded-turn-DBwLoFDR.mjs → bounded-turn-Csc9Qvpm.mjs} +9 -9
  7. package/dist/.setup/{build-state-B3lvV1Op.mjs → build-state-CmeL24P5.mjs} +1 -1
  8. package/dist/.setup/{client-DcTISXe3.mjs → client-BdNoDUaQ.mjs} +263 -2
  9. package/dist/.setup/{command-dispatch-MOoD3rsD.mjs → command-dispatch-9sYDmuIo.mjs} +1 -1
  10. package/dist/.setup/{command-handlers-Cevt_YwM.mjs → command-handlers-C-uyeN_H.mjs} +11 -11
  11. package/dist/.setup/{command-rpc-kf7Uq4L-.mjs → command-rpc-BHE3OG7z.mjs} +6 -6
  12. package/dist/.setup/{compact-BNKuKa7o.mjs → compact-DsrYq-_j.mjs} +8 -8
  13. package/dist/.setup/{conversation-binding-CKYGEvcX.mjs → conversation-binding-CfIcWNVS.mjs} +9 -9
  14. package/dist/.setup/{conversation-control-CoWUL35l.mjs → conversation-control-BWzVNh-v.mjs} +2 -2
  15. package/dist/.setup/{dynamic-tools-Dr0ye5P3.mjs → dynamic-tools-CAWsGyFZ.mjs} +6 -6
  16. package/dist/.setup/{effective-mcp-catalog-BFJCwjSI.mjs → effective-mcp-catalog-BYzIV1DD.mjs} +2 -2
  17. package/dist/.setup/{ephemeral-turn-Dj3iTfSP.mjs → ephemeral-turn-CIcaAzR4.mjs} +2 -2
  18. package/dist/.setup/{event-projector-assistant-message-DXDX94zH.mjs → event-projector-assistant-message-CDe3ohIy.mjs} +1 -1
  19. package/dist/.setup/{isolated-completion-GB52W-qA.mjs → isolated-completion-DLV0kBu2.mjs} +4 -4
  20. package/dist/.setup/{model-catalog-DxSrOSY0.mjs → model-catalog-CbhJ0pMa.mjs} +5 -5
  21. package/dist/.setup/{models-BwkZaXXj.mjs → models-DXVC1KpU.mjs} +3 -3
  22. package/dist/.setup/{native-subagent-monitor-g-ZDkvCr.mjs → native-subagent-monitor-GOGINNw0.mjs} +2 -2
  23. package/dist/.setup/{plan-Cwp_21m-.mjs → plan-BB5rf7qh.mjs} +2 -2
  24. package/dist/.setup/{plugin-metadata-cache-C-LRxilF.mjs → plugin-metadata-cache-DuaAXtXC.mjs} +4 -4
  25. package/dist/.setup/{provider-DUotqBZ6.mjs → provider-BEDFjTWv.mjs} +4 -4
  26. package/dist/.setup/{provider-capabilities-DBs9l8oL.mjs → provider-capabilities-DcF-V_3D.mjs} +2 -2
  27. package/dist/.setup/{request-CWERwKIL.mjs → request-DZKa6YSy.mjs} +1 -1
  28. package/dist/.setup/{run-attempt-ypT0LYSD.mjs → run-attempt-EMGdmQqt.mjs} +19 -19
  29. package/dist/.setup/{session-catalog-DMagZcW-.mjs → session-catalog-apN5C2Oz.mjs} +9 -9
  30. package/dist/.setup/{session-catalog-events-r59AxcQ4.mjs → session-catalog-events-DHPtqvWu.mjs} +2 -2
  31. package/dist/.setup/{session-catalog-index-CY1lNpxF.mjs → session-catalog-index-JJogsGuf.mjs} +3 -3
  32. package/dist/.setup/{session-catalog-native-projection-CXTe4qQr.mjs → session-catalog-native-projection-C_xvyztm.mjs} +1 -1
  33. package/dist/.setup/{session-catalog-projection-DcDKizZd.mjs → session-catalog-projection-C6PSmTcX.mjs} +1 -1
  34. package/dist/.setup/{session-cli-C3GejWcm.mjs → session-cli-B5RvT_Rs.mjs} +2 -2
  35. package/dist/.setup/{session-retirement-CQCMiDul.mjs → session-retirement-Bdygfnxa.mjs} +5 -5
  36. package/dist/.setup/{settled-turn-finalizer-w92T5Rbb.mjs → settled-turn-finalizer-BzVjkwgJ.mjs} +5 -5
  37. package/dist/.setup/{shared-client-ZXKMsK6f.mjs → shared-client-B__jQti1.mjs} +6 -6
  38. package/dist/.setup/{shared-client-lifecycle-BH_y_i8l.mjs → shared-client-lifecycle-wN_lOZkB.mjs} +1 -1
  39. package/dist/.setup/{side-question-BBZJibHK.mjs → side-question-B25zswMS.mjs} +9 -9
  40. package/dist/.setup/{source-Iusn97ly.mjs → source-DuNxTQoz.mjs} +1 -1
  41. package/dist/.setup/{thread-lifecycle-CzzYMvTL.mjs → thread-lifecycle-Cw5Nsciw.mjs} +8 -8
  42. package/dist/.setup/{thread-ownership-BT_SeSUp.mjs → thread-ownership-Cxb01Uwq.mjs} +3 -3
  43. package/dist/.setup/{thread-policy-MM5YD22L.mjs → thread-policy-BHr4QsDO.mjs} +3 -3
  44. package/dist/.setup/{thread-requests-y_MnVuWC.mjs → thread-requests-D-GTNAnZ.mjs} +4 -4
  45. package/dist/.setup/{thread-resume-B9clyqXE.mjs → thread-resume-BNdEFZpM.mjs} +5 -5
  46. package/dist/.setup/{upstream-session-fork-2ipYynVl.mjs → upstream-session-fork-D8rqW9ad.mjs} +8 -8
  47. package/dist/.setup/{usage-BgB8DOas.mjs → usage-D_W8Be4u.mjs} +1 -1
  48. package/dist/.setup/{usage-limit-error-B1FCZdeH.mjs → usage-limit-error-CpasNGjp.mjs} +1 -1
  49. package/dist/.setup/{web-search-provider.runtime-BWbZnYAL.mjs → web-search-provider.runtime-CyRLuVOO.mjs} +2 -2
  50. package/dist/.source-module-urls/0560e3825cf513bbe9e095a85951c1215dfced0c1e581c5f32b007a3e759636e.json +1 -0
  51. package/dist/.source-module-urls/89af8e902f34481d87fbb497cd5ac223d504b1fa22d95d3038b6d33a3b97c3da.json +1 -0
  52. package/dist/catalog-page.worker.js +338 -1
  53. package/dist/cli-metadata.js +1 -1
  54. package/dist/harness.js +14 -14
  55. package/dist/index.js +18 -18
  56. package/dist/media-understanding-provider.js +2 -2
  57. package/dist/migration-provider-api.js +1 -1
  58. package/package.json +5 -5
  59. package/dist/.setup/client-catalog-response-BcbsrQXY.mjs +0 -285
  60. package/dist/.source-module-urls/78bb81623f5bb4c04c8cbd3fb1e9f10b4529f4811dc3cd99cedf5880f01c9b28.json +0 -1
@@ -1,6 +1,6 @@
1
1
  import { n as isCodexAppServerProxyLaunch } from "./launch-args-DbFCehO7.mjs";
2
2
  import { t as buildCodexAppServerUsageSnapshot } from "./rate-limits-B7-X2TgG.mjs";
3
- import { n as readCodexAppServerUsage } from "./request-CWERwKIL.mjs";
3
+ import { n as readCodexAppServerUsage } from "./request-DZKa6YSy.mjs";
4
4
  import "./config-DqmrqI23.mjs";
5
5
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DDhvIeUC.mjs";
6
6
  import { a as resolveCodexAppServerAuthProfileStore } from "./auth-profile-B0okYl2D.mjs";
@@ -1,14 +1,14 @@
1
1
  import { n as isOpenAiCuratedMarketplace, u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./plugin-inventory-B4uqIw4J.mjs";
2
2
  import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
3
- import { s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-CskfconU.mjs";
3
+ import { s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-DWIq3Lzf.mjs";
4
4
  import { a as defaultCodexAppInventoryCache, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-BL9B5H0L.mjs";
5
- import { i as requestCodexAppServerJson } from "./request-CWERwKIL.mjs";
5
+ import { i as requestCodexAppServerJson } from "./request-DZKa6YSy.mjs";
6
6
  import "./config-DqmrqI23.mjs";
7
7
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DDhvIeUC.mjs";
8
8
  import { i as resolveCodexAppServerAuthProfileIdForAgent } from "./auth-profile-B0okYl2D.mjs";
9
- import { c as getLeasedSharedCodexAppServerClient, h as releaseLeasedSharedCodexAppServerClient, nt as resolveCodexAppServerAuthAccountCacheKey, o as clearSharedCodexAppServerClientIfCurrentAndWait } from "./shared-client-ZXKMsK6f.mjs";
9
+ import { c as getLeasedSharedCodexAppServerClient, h as releaseLeasedSharedCodexAppServerClient, nt as resolveCodexAppServerAuthAccountCacheKey, o as clearSharedCodexAppServerClientIfCurrentAndWait } from "./shared-client-B__jQti1.mjs";
10
10
  import { t as ensureCodexPluginActivation } from "./plugin-activation-BaDnJKJd.mjs";
11
- import { CODEX_PLUGIN_CONFIG_PATH, buildCodexMigrationPlan, buildCodexPluginsConfigValue, hasCodexPluginConfigConflict, n as resolveCodexConfigPatchMode, readCodexPluginMigrationConfigEntry, t as createCodexAuthItemApplier } from "./plan-Cwp_21m-.mjs";
11
+ import { CODEX_PLUGIN_CONFIG_PATH, buildCodexMigrationPlan, buildCodexPluginsConfigValue, hasCodexPluginConfigConflict, n as resolveCodexConfigPatchMode, readCodexPluginMigrationConfigEntry, t as createCodexAuthItemApplier } from "./plan-BB5rf7qh.mjs";
12
12
  import { uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
13
13
  import { parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
14
14
  import path from "node:path";
@@ -1,16 +1,16 @@
1
+ import { E as readCodexTurnCompletedNotification, a as isCodexAppServerBrokenPipeError, d as isCodexAppServerRequestTimeoutError, l as isCodexAppServerOverloadError } from "./client-BdNoDUaQ.mjs";
1
2
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
- import { f as retireSharedCodexAppServerClientIfCurrent } from "./shared-client-lifecycle-BH_y_i8l.mjs";
3
+ import { f as retireSharedCodexAppServerClientIfCurrent } from "./shared-client-lifecycle-wN_lOZkB.mjs";
3
4
  import { n as CodexAppServerRpcError } from "./rpc-error-BlD2vuzn.mjs";
4
5
  import { n as waitForPromiseOrAbort, t as abortReason } from "./timeout-CXOfNoaX.mjs";
5
- import { Y as unsubscribeCodexAppServerLiveThread, mt as isCodexAppServerStartupError, u as isCodexAppServerStartSelectionChangedError } from "./shared-client-ZXKMsK6f.mjs";
6
- import { E as readCodexTurnCompletedNotification, a as isCodexAppServerBrokenPipeError, d as isCodexAppServerRequestTimeoutError, l as isCodexAppServerOverloadError } from "./client-DcTISXe3.mjs";
6
+ import { Y as unsubscribeCodexAppServerLiveThread, mt as isCodexAppServerStartupError, u as isCodexAppServerStartSelectionChangedError } from "./shared-client-B__jQti1.mjs";
7
7
  import { t as __exportAll } from "./session-binding-sidecars-BuEALwJY.mjs";
8
8
  import { normalizeOptionalString, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { AsyncResource } from "node:async_hooks";
10
10
  import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
11
- import { sanitizeTerminalText } from "openclaw/plugin-sdk/text-chunking";
12
11
  import { AgentHarnessPreflightError, embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-runtime";
13
12
  import { redactSensitiveText } from "openclaw/plugin-sdk/logging-core";
13
+ import { sanitizeTerminalText } from "openclaw/plugin-sdk/text-chunking";
14
14
  //#region extensions/codex/src/app-server/event-projector-items.ts
15
15
  const itemStatuses = /* @__PURE__ */ new Map([
16
16
  ["completed", "completed"],
@@ -1,5 +1,5 @@
1
1
  import { r as flattenCodexDynamicToolFunctions } from "./protocol-CANUwXJ3.mjs";
2
- import { lt as isMessageOnlyCodexSourceReply } from "./thread-requests-y_MnVuWC.mjs";
2
+ import { lt as isMessageOnlyCodexSourceReply } from "./thread-requests-D-GTNAnZ.mjs";
3
3
  import path from "node:path";
4
4
  import { buildAgentWorkspaceInstructionSnapshot, buildBootstrapContextForFiles, embeddedAgentLog, prepareAgentWorkspaceContext } from "openclaw/plugin-sdk/agent-harness-runtime";
5
5
  import { resolveAgentWorkspaceMemoryRouting, shouldIncludeAgentHarnessRuntimeContext } from "openclaw/plugin-sdk/agent-harness-attempt-runtime";
@@ -1,4 +1,4 @@
1
- import { n as defineCodexBuildState } from "./build-state-B3lvV1Op.mjs";
1
+ import { n as defineCodexBuildState } from "./build-state-CmeL24P5.mjs";
2
2
  import { u as resolveMacOSDesktopCodexAppPathCandidates } from "./managed-binary-Ckgvm_4V.mjs";
3
3
  import { n as resolveCodexAppServerSpawnEnv } from "./transport-stdio-DU8dIOCj.mjs";
4
4
  import { createHash } from "node:crypto";
@@ -1,16 +1,16 @@
1
+ import { S as assertCodexTurnStartResponse, T as readCodexErrorNotification, k as createCodexElicitationResponse, x as assertCodexThreadStartResponse } from "./client-BdNoDUaQ.mjs";
1
2
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
3
  import { a as resolveCodexPrivateLauncher, i as readCodexAppServerConfigOptions } from "./launch-args-DbFCehO7.mjs";
3
4
  import { d as readCodexEffectiveConfig } from "./config-options-CzyWLTJt.mjs";
4
5
  import "./config-DqmrqI23.mjs";
5
6
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DDhvIeUC.mjs";
6
- import { u as isCodexAppServerStartSelectionChangedError } from "./shared-client-ZXKMsK6f.mjs";
7
- import { S as assertCodexTurnStartResponse, T as readCodexErrorNotification, k as createCodexElicitationResponse, x as assertCodexThreadStartResponse } from "./client-DcTISXe3.mjs";
8
- import { o as closeCodexStartupClientBestEffort, s as interruptCodexTurnAndWaitBestEffort, t as CODEX_APP_SERVER_INTERRUPT_TIMEOUT_MS } from "./attempt-client-cleanup-BVtNsTOE.mjs";
9
- import { t as CodexEphemeralTurn } from "./ephemeral-turn-Dj3iTfSP.mjs";
10
- import { i as readModelListResult } from "./models-BwkZaXXj.mjs";
11
- import { R as attestCodexRestrictedToolSurfaceMcpServersDisabled, St as mergeCodexThreadConfigs, l as readCodexInheritedMcpServerNames, n as buildCodexRingZeroThreadConfigPatch, r as buildCodexRuntimeThreadConfig, t as assertCodexManagedRequirementsDoNotOverrideToolPolicy } from "./thread-requests-y_MnVuWC.mjs";
12
- import { S as resolveCodexAppServerReasoningEffort } from "./thread-lifecycle-CzzYMvTL.mjs";
13
- import { a as resolveCodexPromptError } from "./usage-limit-error-B1FCZdeH.mjs";
7
+ import { u as isCodexAppServerStartSelectionChangedError } from "./shared-client-B__jQti1.mjs";
8
+ import { o as closeCodexStartupClientBestEffort, s as interruptCodexTurnAndWaitBestEffort, t as CODEX_APP_SERVER_INTERRUPT_TIMEOUT_MS } from "./attempt-client-cleanup-C9dwStbK.mjs";
9
+ import { t as CodexEphemeralTurn } from "./ephemeral-turn-CIcaAzR4.mjs";
10
+ import { i as readModelListResult } from "./models-DXVC1KpU.mjs";
11
+ import { R as attestCodexRestrictedToolSurfaceMcpServersDisabled, St as mergeCodexThreadConfigs, l as readCodexInheritedMcpServerNames, n as buildCodexRingZeroThreadConfigPatch, r as buildCodexRuntimeThreadConfig, t as assertCodexManagedRequirementsDoNotOverrideToolPolicy } from "./thread-requests-D-GTNAnZ.mjs";
12
+ import { S as resolveCodexAppServerReasoningEffort } from "./thread-lifecycle-Cw5Nsciw.mjs";
13
+ import { a as resolveCodexPromptError } from "./usage-limit-error-CpasNGjp.mjs";
14
14
  import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
15
15
  import { parse } from "smol-toml";
16
16
  import path from "node:path";
@@ -144,7 +144,7 @@ async function runBoundedCodexAppServerTurnInWorkspace(params, appServer, worksp
144
144
  assertCurrent: params.assertCurrent,
145
145
  ...params.signal ? { abandonSignal: params.signal } : {}
146
146
  };
147
- const client = params.options.clientFactory ? await params.options.clientFactory(clientOptions) : await import("./shared-client-ZXKMsK6f.mjs").then((n) => n.v).then(({ createIsolatedCodexAppServerClient }) => createIsolatedCodexAppServerClient({
147
+ const client = params.options.clientFactory ? await params.options.clientFactory(clientOptions) : await import("./shared-client-B__jQti1.mjs").then((n) => n.v).then(({ createIsolatedCodexAppServerClient }) => createIsolatedCodexAppServerClient({
148
148
  ...clientOptions,
149
149
  authProfileStore: params.authProfileStore
150
150
  }));
@@ -1,5 +1,5 @@
1
1
  //#region extensions/codex/package.json
2
- var version = "2026.9.35";
2
+ var version = "2026.9.36";
3
3
  //#endregion
4
4
  //#region extensions/codex/src/build-state.ts
5
5
  /**
@@ -1,9 +1,8 @@
1
- import { a as stringifyCodexAppServerMessage, c as isRpcResponse, i as readCodexCatalogDecodeRoute, n as projectCodexCatalogMessage, o as CodexAppServerMessageDecoder, r as listenCodexAppServerLines, s as redactCodexAppServerLinePreview } from "./client-catalog-response-BcbsrQXY.mjs";
2
1
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
3
2
  import { c as MIN_SUPPORTED_CODEX_APP_SERVER_VERSION, s as CODEX_APP_SERVER_VERSION } from "./managed-binary-Ckgvm_4V.mjs";
4
3
  import { a as closeCodexAppServerTransportAndWait, i as closeCodexAppServerTransport, o as hasCodexAppServerNaturalExit, t as createStdioTransport } from "./transport-stdio-DU8dIOCj.mjs";
5
4
  import { n as CodexAppServerRpcError, t as CODEX_APP_SERVER_OVERLOADED_ERROR_CODE } from "./rpc-error-BlD2vuzn.mjs";
6
- import { f as recordCodexCatalogResponseSource, i as reuseCodexCatalogPreview, o as closeCodexCatalogClientSource, s as codexCatalogSourceForClient } from "./session-catalog-native-projection-CXTe4qQr.mjs";
5
+ import { f as recordCodexCatalogResponseSource, i as reuseCodexCatalogPreview, n as projectCodexCatalogNativeResponse, o as closeCodexCatalogClientSource, r as projectCodexCatalogNativeThread, s as codexCatalogSourceForClient } from "./session-catalog-native-projection-C_xvyztm.mjs";
7
6
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DDhvIeUC.mjs";
8
7
  import { codexCatalogPageWorkerEntrypoint } from "../catalog-page-worker-entrypoint.js";
9
8
  import { t as createWebSocketTransport } from "./transport-websocket-zu3jRPnu.mjs";
@@ -20,9 +19,271 @@ import { hasPendingInternalDiagnosticEvent } from "openclaw/plugin-sdk/diagnosti
20
19
  import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
21
20
  import { OPENCLAW_VERSION, embeddedAgentLog, formatToolExecutionErrorMessage, normalizeQuestionTimeoutSeconds, resolveToolExecutionErrorKind } from "openclaw/plugin-sdk/agent-harness-runtime";
22
21
  import { parse } from "semver";
22
+ import { sanitizeTerminalText } from "openclaw/plugin-sdk/text-chunking";
23
23
  import { AsyncWorkScope } from "openclaw/plugin-sdk/concurrency-runtime";
24
24
  import { copyInternalToolResultState, runWithAsyncWorkResources } from "openclaw/plugin-sdk/agent-harness-tool-runtime";
25
25
  import { Compile } from "typebox/compile";
26
+ //#region extensions/codex/src/app-server/protocol-json.ts
27
+ function isRpcResponse(message) {
28
+ return message !== null && typeof message === "object" && "id" in message && (typeof message.id === "number" || typeof message.id === "string") && !("method" in message);
29
+ }
30
+ //#endregion
31
+ //#region extensions/codex/src/app-server/client-line-preview.ts
32
+ const CODEX_APP_SERVER_PARSE_LOG_MAX = 500;
33
+ function redactCodexAppServerLinePreview(value) {
34
+ const redacted = value.replace(/\s+/g, " ").trim().replace(/(Bearer\s+)[A-Za-z0-9._~+/-]+/gi, "$1<redacted>").replace(/("(?:api_?key|authorization|token|access_token|refresh_token)"\s*:\s*")([^"]+)(")/gi, "$1<redacted>$3").replace(/\b([a-z0-9_]*(?:api_?key|authorization|access_token|refresh_token|token))(\s*=\s*)(["']?)[^\s"']+(\3)/gi, "$1$2$3<redacted>$4");
35
+ return redacted.length > CODEX_APP_SERVER_PARSE_LOG_MAX ? `${truncateUtf16Safe(redacted, CODEX_APP_SERVER_PARSE_LOG_MAX)}...` : redacted;
36
+ }
37
+ //#endregion
38
+ //#region extensions/codex/src/app-server/client-message-decoder.ts
39
+ const PARSE_BUFFER_MAX = 8388608;
40
+ const PARSE_BUFFER_MAX_LINES = 1e3;
41
+ const UNICODE_ESCAPE_QUAD = /^[\da-fA-F]{4}$/u;
42
+ /** Recovers the raw newlines observed inside native JSON string values. */
43
+ var CodexAppServerMessageDecoder = class {
44
+ constructor(reportError) {
45
+ this.reportError = reportError;
46
+ }
47
+ clear() {
48
+ this.pending = void 0;
49
+ }
50
+ get hasPending() {
51
+ return this.pending !== void 0;
52
+ }
53
+ parse(line) {
54
+ const rawLine = line.endsWith("\r") ? line.slice(0, -1) : line;
55
+ if (this.pending) return this.parseContinuation(rawLine, this.pending);
56
+ const trimmed = rawLine.trim();
57
+ if (!trimmed) return;
58
+ try {
59
+ return JSON.parse(trimmed);
60
+ } catch (error) {
61
+ if (isRecoverableParseFailure(trimmed, error)) {
62
+ const text = rawLine.trimStart();
63
+ this.pending = {
64
+ fragments: [text],
65
+ length: text.length,
66
+ inString: endsInsideJsonString(text)
67
+ };
68
+ } else this.reportError(trimmed, error, 1);
69
+ }
70
+ }
71
+ parseContinuation(line, pending) {
72
+ pending.fragments.push(line);
73
+ pending.length += 2 + line.length;
74
+ const withinBounds = pending.length <= PARSE_BUFFER_MAX && pending.fragments.length <= PARSE_BUFFER_MAX_LINES;
75
+ if (withinBounds && pending.inString && scanJsonString(line, 0) === line.length) return;
76
+ const candidate = pending.fragments.join("\\n");
77
+ this.pending = void 0;
78
+ try {
79
+ return JSON.parse(candidate);
80
+ } catch (error) {
81
+ if (withinBounds && isRecoverableParseFailure(candidate, error)) {
82
+ pending.inString = endsInsideJsonString(candidate);
83
+ this.pending = pending;
84
+ } else this.reportError(candidate, error, pending.fragments.length);
85
+ }
86
+ }
87
+ };
88
+ function isRecoverableParseFailure(value, error) {
89
+ if (!value.startsWith("{") && !value.startsWith("[")) return false;
90
+ const message = coerceErrorMessage(error);
91
+ return message.includes("Unterminated string") || message.includes("Unexpected end of JSON input");
92
+ }
93
+ function endsInsideJsonString(value) {
94
+ for (let index = 0; index < value.length; index++) {
95
+ if (value[index] !== "\"") continue;
96
+ const end = scanJsonString(value, index + 1);
97
+ if (end < 0) return false;
98
+ if (end === value.length) return true;
99
+ index = end;
100
+ }
101
+ return false;
102
+ }
103
+ /** Finds a closing quote; incomplete or invalid escapes require native parsing. */
104
+ function scanJsonString(value, start) {
105
+ for (let index = start; index < value.length; index++) {
106
+ const character = value[index];
107
+ if (character === "\"") return index;
108
+ if (value.charCodeAt(index) < 32) return -1;
109
+ if (character !== "\\") continue;
110
+ const escape = value[++index];
111
+ if (escape === "u") {
112
+ if (!UNICODE_ESCAPE_QUAD.test(value.slice(index + 1, index + 5))) return -1;
113
+ index += 4;
114
+ } else if (!escape || !"\"\\/bfnrt".includes(escape)) return -1;
115
+ }
116
+ return value.length;
117
+ }
118
+ //#endregion
119
+ //#region extensions/codex/src/app-server/client-message-frames.ts
120
+ const UNPAIRED_SURROGATE_RE = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g;
121
+ /** One byte reader owns framing and stops at an asynchronous page decode. */
122
+ function listenCodexAppServerLines(input, onLine, onError) {
123
+ let fragments = [];
124
+ let length = 0;
125
+ let remainder;
126
+ let waiting = false;
127
+ let ended = false;
128
+ let closed = false;
129
+ const close = () => {
130
+ closed = true;
131
+ fragments = [];
132
+ remainder = void 0;
133
+ input.off("data", onData);
134
+ input.off("end", onEnd);
135
+ input.pause();
136
+ };
137
+ const deliver = (tail) => {
138
+ const line = fragments.length ? Buffer.concat([...fragments, tail], length + tail.length) : tail;
139
+ fragments = [];
140
+ length = 0;
141
+ const completion = onLine(line);
142
+ if (!completion) return true;
143
+ waiting = true;
144
+ input.pause();
145
+ completion.then(() => {
146
+ waiting = false;
147
+ if (!closed) {
148
+ drain();
149
+ if (!waiting && !ended && !closed) input.resume();
150
+ }
151
+ }).catch((error) => {
152
+ close();
153
+ onError(error);
154
+ });
155
+ return false;
156
+ };
157
+ const drain = () => {
158
+ try {
159
+ const chunk = remainder;
160
+ remainder = void 0;
161
+ if (chunk) {
162
+ let start = 0;
163
+ let end;
164
+ while ((end = chunk.indexOf(10, start)) !== -1) {
165
+ if (closed) return;
166
+ remainder = chunk.subarray(end + 1);
167
+ if (!deliver(chunk.subarray(start, end))) return;
168
+ remainder = void 0;
169
+ start = end + 1;
170
+ }
171
+ if (!closed && start < chunk.length) {
172
+ fragments.push(chunk.subarray(start));
173
+ length += chunk.length - start;
174
+ }
175
+ }
176
+ if (ended && !closed) {
177
+ if (length && !deliver(Buffer.alloc(0))) return;
178
+ close();
179
+ }
180
+ } catch (error) {
181
+ close();
182
+ onError(error);
183
+ }
184
+ };
185
+ const onData = (chunk) => {
186
+ remainder = chunk;
187
+ drain();
188
+ };
189
+ const onEnd = () => {
190
+ ended = true;
191
+ if (!waiting) drain();
192
+ };
193
+ input.on("data", onData);
194
+ input.once("end", onEnd);
195
+ return close;
196
+ }
197
+ function codexCatalogResponseRoute(id) {
198
+ return typeof id === "number" && Number.isSafeInteger(id) && id >= 2 ** 52 ? {
199
+ id,
200
+ kind: id % 2 === 1 ? "list" : "thread"
201
+ } : void 0;
202
+ }
203
+ /** Read bounded envelope keys and IDs; skip native payload strings as bytes. */
204
+ function readCodexCatalogDecodeRoute(line) {
205
+ let depth = 0;
206
+ let route;
207
+ let response = false;
208
+ for (let index = 0; index < line.length; index++) {
209
+ const byte = line[index];
210
+ if (byte === 123 || byte === 91) depth++;
211
+ else if (byte === 125 || byte === 93) depth--;
212
+ else if (byte === 34) {
213
+ const start = index;
214
+ for (;;) {
215
+ index = line.indexOf(34, index + 1);
216
+ if (index < 0) return "unresolved";
217
+ let slash = index - 1;
218
+ while (line[slash] === 92) slash--;
219
+ if ((index - slash) % 2 === 1) break;
220
+ }
221
+ if (depth !== 1 || index - start > 64) continue;
222
+ let colon = index + 1;
223
+ while (line[colon] === 32 || line[colon] === 9 || line[colon] === 13) colon++;
224
+ if (line[colon] !== 58) continue;
225
+ const token = line.toString("utf8", start, index + 1);
226
+ let key = token.slice(1, -1);
227
+ if (token.includes("\\")) try {
228
+ key = JSON.parse(token);
229
+ } catch {
230
+ return "unresolved";
231
+ }
232
+ if (key === "method") return;
233
+ if (key === "result" || key === "error") {
234
+ response = true;
235
+ if (route) return route;
236
+ }
237
+ if (key !== "id") continue;
238
+ const match = /^\s*:\s*(\d+)(?=\s*[,}])/u.exec(line.toString("utf8", index + 1, Math.min(index + 100, line.length)));
239
+ if (!match) continue;
240
+ route = codexCatalogResponseRoute(Number(match[1]));
241
+ if (!route || response) return route;
242
+ }
243
+ }
244
+ return response || route ? "unresolved" : void 0;
245
+ }
246
+ function stringifyCodexAppServerMessage(message) {
247
+ return JSON.stringify(message, (_key, value) => typeof value === "string" ? value.replace(UNPAIRED_SURROGATE_RE, "") : value) ?? "null";
248
+ }
249
+ //#endregion
250
+ //#region extensions/codex/src/app-server/client-catalog-response.ts
251
+ function projectCodexCatalogMessage(parsed, input, cachedPreview) {
252
+ const result = {
253
+ pending: false,
254
+ failures: []
255
+ };
256
+ if (!isJsonObject(parsed)) return result;
257
+ result.message = parsed;
258
+ if (!isRpcResponse(parsed)) return result;
259
+ const message = parsed;
260
+ const route = codexCatalogResponseRoute(message.id);
261
+ if (message.error || !route) return result;
262
+ const remainingRows = input.route === "unresolved" ? input.catalogRows?.has(route.id) ? input.catalogRows.get(route.id) : 0 : input.remainingRows;
263
+ try {
264
+ if (!isJsonObject(message.result)) throw new Error("Codex catalog response contains an invalid result");
265
+ if (route.kind === "list") {
266
+ const raw = message.result;
267
+ message.result = projectCodexCatalogNativeResponse(raw, sanitizeTerminalText, cachedPreview, remainingRows);
268
+ if (!cachedPreview) result.previewStates = Array.isArray(raw.data) ? raw.data.slice(0, Array.isArray(message.result.data) ? message.result.data.length : 0).map((row) => isJsonObject(row) && typeof row.preview === "string" ? Boolean(row.preview) : void 0) : [];
269
+ } else {
270
+ const thread = message.result.thread;
271
+ message.result = { thread: {
272
+ ...projectCodexCatalogNativeThread(thread, sanitizeTerminalText),
273
+ ...isJsonObject(thread) && typeof thread.cwd === "string" ? { cwd: thread.cwd } : {},
274
+ ...isJsonObject(thread) && (thread.historyMode === "paginated" || thread.historyMode === "legacy") ? { historyMode: thread.historyMode } : {}
275
+ } };
276
+ }
277
+ } catch (error) {
278
+ delete result.message;
279
+ result.projectionError = {
280
+ id: route.id,
281
+ error: error instanceof Error ? error : new Error("Codex catalog projection failed", { cause: error })
282
+ };
283
+ }
284
+ return result;
285
+ }
286
+ //#endregion
26
287
  //#region extensions/codex/src/app-server/client-catalog-worker.ts
27
288
  const INLINE_CATALOG_MAX_BYTES = 65536;
28
289
  const CATALOG_WORKER_IDLE_MS = 6e4;
@@ -9,7 +9,7 @@ async function handleCodexCommand(ctx, options) {
9
9
  };
10
10
  const { resolvePluginConfig, ...subcommandOptions } = options;
11
11
  try {
12
- const { handleCodexSubcommand } = await import("./command-handlers-Cevt_YwM.mjs");
12
+ const { handleCodexSubcommand } = await import("./command-handlers-C-uyeN_H.mjs");
13
13
  return await handleCodexSubcommand(commandContext, {
14
14
  ...subcommandOptions,
15
15
  pluginConfig: resolvePluginConfig?.() ?? subcommandOptions.pluginConfig
@@ -1,8 +1,9 @@
1
1
  import { n as isCodexFastServiceTier } from "./config-utils-D0CXecki.mjs";
2
2
  import { o as pluginReadParams, r as isOpenAiCuratedMarketplaceName, t as findCodexMarketplacePluginSummary, u as CODEX_PLUGINS_MARKETPLACE_NAME } from "./plugin-inventory-B4uqIw4J.mjs";
3
+ import { b as assertCodexThreadResumeResponse, s as isCodexAppServerIndeterminateRequestCancellationError, u as isCodexAppServerPrewriteRequestCancellationError, v as assertCodexThreadAcceptsDirectInput } from "./client-BdNoDUaQ.mjs";
3
4
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
4
5
  import { n as assertCodexBindingMayBeReplaced, r as bindingStoreKey, v as sessionBindingIdentity } from "./session-binding-record-CUKpUKVm.mjs";
5
- import { c as resolveCodexAppServerPreparedApiKeyCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-CskfconU.mjs";
6
+ import { c as resolveCodexAppServerPreparedApiKeyCacheKey, s as resolveCodexAppServerFallbackApiKeyCacheKey } from "./auth-cache-key-DWIq3Lzf.mjs";
6
7
  import { n as withCodexConversationThreadActivity } from "./thread-ownership-queue-Dp24d7-F.mjs";
7
8
  import { a as CODEX_HOST_INSPECTION_AUTH_ERROR, c as canMutateCodexHost, i as CODEX_FULL_PERMISSIONS_AUTH_ERROR, l as hasCodexAdminScope, n as filterCodexMarketplacePlugins, o as CODEX_NATIVE_EXECUTION_AUTH_ERROR, r as parseCodexPluginMarketplaceId, s as assertCodexHostOwnerCurrent, t as discoverCodexMarketplacePlugins } from "./plugin-marketplace-discovery-D_dV9FXa.mjs";
8
9
  import { l as formatRelativeDuration, s as summarizeCodexAccountUsage } from "./rate-limits-B7-X2TgG.mjs";
@@ -14,23 +15,22 @@ import { t as CODEX_CONTROL_METHODS } from "./capabilities-B3WEZl4e.mjs";
14
15
  import { o as formatCodexCliSessions } from "./node-cli-sessions-BwhIYgCZ.mjs";
15
16
  import { a as defaultCodexAppInventoryCache, r as buildCodexPluginAppCacheKey } from "./plugin-app-cache-key-BL9B5H0L.mjs";
16
17
  import { i as resolveCodexBindingAppServerConnection } from "./binding-connection-DRPlnIgg.mjs";
17
- import { o as withCodexAppServerJsonClient } from "./request-CWERwKIL.mjs";
18
+ import { o as withCodexAppServerJsonClient } from "./request-DZKa6YSy.mjs";
18
19
  import "./config-DqmrqI23.mjs";
19
20
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DDhvIeUC.mjs";
20
21
  import { a as resolveCodexAppServerAuthProfileStore, i as resolveCodexAppServerAuthProfileIdForAgent, n as normalizeCodexAppServerBindingModelProvider } from "./auth-profile-B0okYl2D.mjs";
21
- import { F as consumeCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, c as getLeasedSharedCodexAppServerClient, h as releaseLeasedSharedCodexAppServerClient, nt as resolveCodexAppServerAuthAccountCacheKey } from "./shared-client-ZXKMsK6f.mjs";
22
- import { b as assertCodexThreadResumeResponse, s as isCodexAppServerIndeterminateRequestCancellationError, u as isCodexAppServerPrewriteRequestCancellationError, v as assertCodexThreadAcceptsDirectInput } from "./client-DcTISXe3.mjs";
23
- import { o as closeCodexStartupClientBestEffort } from "./attempt-client-cleanup-BVtNsTOE.mjs";
22
+ import { F as consumeCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, c as getLeasedSharedCodexAppServerClient, h as releaseLeasedSharedCodexAppServerClient, nt as resolveCodexAppServerAuthAccountCacheKey } from "./shared-client-B__jQti1.mjs";
23
+ import { o as closeCodexStartupClientBestEffort } from "./attempt-client-cleanup-C9dwStbK.mjs";
24
24
  import { n as fingerprintCodexAppServerAuthBinding } from "./auth-binding-Bnaj0_iV.mjs";
25
- import { n as listAllCodexAppServerModels } from "./models-BwkZaXXj.mjs";
25
+ import { n as listAllCodexAppServerModels } from "./models-DXVC1KpU.mjs";
26
26
  import { n as refreshCodexAppRuntimeState, r as refreshCodexPluginRuntimeState } from "./plugin-activation-BaDnJKJd.mjs";
27
27
  import { n as createCodexSessionGenerationSupersededError, o as resolveCodexSessionBinding } from "./session-binding-Fn7Ekzuv.mjs";
28
- import { i as assertCodexSupervisionThreadLineage } from "./thread-policy-MM5YD22L.mjs";
29
- import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, i as retireCodexConversationThreadBinding, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BT_SeSUp.mjs";
28
+ import { i as assertCodexSupervisionThreadLineage } from "./thread-policy-BHr4QsDO.mjs";
29
+ import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, i as retireCodexConversationThreadBinding, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-Cxb01Uwq.mjs";
30
30
  import { n as resolveCodexNativeSandboxBlock, t as resolveCodexNativeExecutionBlock } from "./sandbox-guard-OIYEmTRF.mjs";
31
- import { i as readCodexComputerUseStatus, r as installCodexComputerUse, t as defaultCodexPluginMetadataCache } from "./plugin-metadata-cache-C-LRxilF.mjs";
32
- import { a as requestOptions, i as readCodexStatusProbes, o as safeCodexControlRequest, r as prepareCodexControlSessionAuth, t as codexControlRequest } from "./command-rpc-kf7Uq4L-.mjs";
33
- import { a as setCodexConversationFastMode, c as steerCodexConversationTurn, i as readCodexConversationActiveTurn, l as stopCodexConversationTurn, n as parseCodexFastModeArg, o as setCodexConversationModel, r as parseCodexPermissionsModeArg, s as setCodexConversationPermissions, t as formatPermissionsMode } from "./conversation-control-CoWUL35l.mjs";
31
+ import { i as readCodexComputerUseStatus, r as installCodexComputerUse, t as defaultCodexPluginMetadataCache } from "./plugin-metadata-cache-DuaAXtXC.mjs";
32
+ import { a as requestOptions, i as readCodexStatusProbes, o as safeCodexControlRequest, r as prepareCodexControlSessionAuth, t as codexControlRequest } from "./command-rpc-BHE3OG7z.mjs";
33
+ import { a as setCodexConversationFastMode, c as steerCodexConversationTurn, i as readCodexConversationActiveTurn, l as stopCodexConversationTurn, n as parseCodexFastModeArg, o as setCodexConversationModel, r as parseCodexPermissionsModeArg, s as setCodexConversationPermissions, t as formatPermissionsMode } from "./conversation-control-BWzVNh-v.mjs";
34
34
  import { normalizeOptionalString, normalizeUniqueStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
35
35
  import crypto from "node:crypto";
36
36
  import { isDeepStrictEqual } from "node:util";
@@ -1,17 +1,17 @@
1
+ import { c as isCodexAppServerIndeterminateTransportError, l as isCodexAppServerOverloadError, s as isCodexAppServerIndeterminateRequestCancellationError } from "./client-BdNoDUaQ.mjs";
1
2
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
3
  import { n as CodexAppServerRpcError } from "./rpc-error-BlD2vuzn.mjs";
3
4
  import { n as describeControlFailure, t as CODEX_CONTROL_METHODS } from "./capabilities-B3WEZl4e.mjs";
4
- import { i as requestCodexAppServerJson, o as withCodexAppServerJsonClient } from "./request-CWERwKIL.mjs";
5
+ import { i as requestCodexAppServerJson, o as withCodexAppServerJsonClient } from "./request-DZKa6YSy.mjs";
5
6
  import "./config-DqmrqI23.mjs";
6
7
  import { n as resolveCodexAppServerRuntimeOptions, r as resolveCodexSupervisionAppServerRuntimeOptions } from "./config-runtime-DDhvIeUC.mjs";
7
8
  import { a as resolveCodexAppServerAuthProfileStore, r as resolveCodexAppServerAuthProfileId } from "./auth-profile-B0okYl2D.mjs";
8
- import { rt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-ZXKMsK6f.mjs";
9
- import { c as isCodexAppServerIndeterminateTransportError, l as isCodexAppServerOverloadError, s as isCodexAppServerIndeterminateRequestCancellationError } from "./client-DcTISXe3.mjs";
10
- import { o as closeCodexStartupClientBestEffort } from "./attempt-client-cleanup-BVtNsTOE.mjs";
9
+ import { rt as resolveCodexAppServerPreparedAuthHandoff } from "./shared-client-B__jQti1.mjs";
10
+ import { o as closeCodexStartupClientBestEffort } from "./attempt-client-cleanup-C9dwStbK.mjs";
11
11
  import { r as prepareCodexAppServerAuthBinding } from "./auth-binding-Bnaj0_iV.mjs";
12
- import { r as listCodexAppServerModels } from "./models-BwkZaXXj.mjs";
12
+ import { r as listCodexAppServerModels } from "./models-DXVC1KpU.mjs";
13
13
  import { n as createCodexSessionGenerationSupersededError } from "./session-binding-Fn7Ekzuv.mjs";
14
- import { t as resumeCodexAppServerThread } from "./thread-resume-B9clyqXE.mjs";
14
+ import { t as resumeCodexAppServerThread } from "./thread-resume-BNdEFZpM.mjs";
15
15
  import { t as __exportAll } from "./session-binding-sidecars-BuEALwJY.mjs";
16
16
  import { resolveAgentDir, resolveSessionAgentIdsStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
17
17
  import { resolveAgentWorkspaceDir } from "openclaw/plugin-sdk/agent-runtime";
@@ -1,20 +1,20 @@
1
1
  import { n as readCodexRuntimeModelId } from "./model-runtime-BdqzOMkU.mjs";
2
+ import { s as isCodexAppServerIndeterminateRequestCancellationError, u as isCodexAppServerPrewriteRequestCancellationError } from "./client-BdNoDUaQ.mjs";
2
3
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
3
4
  import { v as sessionBindingIdentity } from "./session-binding-record-CUKpUKVm.mjs";
4
- import { m as waitForCodexAppServerClientExit, u as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-BH_y_i8l.mjs";
5
+ import { m as waitForCodexAppServerClientExit, u as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-wN_lOZkB.mjs";
5
6
  import { t as isIncognitoSessionKey } from "./incognito-session-C5ve_-63.mjs";
6
7
  import { n as CodexAppServerRpcError } from "./rpc-error-BlD2vuzn.mjs";
7
8
  import { i as resolveCodexBindingAppServerConnection } from "./binding-connection-DRPlnIgg.mjs";
8
- import { F as consumeCodexAppServerLiveThread, J as revertCodexAppServerLiveThreadSkillsCatalog, M as getCodexInferenceThreadQualification, W as protectCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientIfCurrent, q as retainCodexAppServerLiveThread, s as createIsolatedCodexAppServerClient } from "./shared-client-ZXKMsK6f.mjs";
9
+ import { F as consumeCodexAppServerLiveThread, J as revertCodexAppServerLiveThreadSkillsCatalog, M as getCodexInferenceThreadQualification, W as protectCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientIfCurrent, q as retainCodexAppServerLiveThread, s as createIsolatedCodexAppServerClient } from "./shared-client-B__jQti1.mjs";
9
10
  import "./responses-oauth-twnuTaAa.mjs";
10
- import { s as isCodexAppServerIndeterminateRequestCancellationError, u as isCodexAppServerPrewriteRequestCancellationError } from "./client-DcTISXe3.mjs";
11
- import { b as readCodexNotificationTurnId, l as isCodexNoActiveTurnInterruptError, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError, y as readCodexNotificationThreadId } from "./attempt-client-cleanup-BVtNsTOE.mjs";
11
+ import { b as readCodexNotificationTurnId, l as isCodexNoActiveTurnInterruptError, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, r as CodexAppServerUnsafeSubscriptionError, y as readCodexNotificationThreadId } from "./attempt-client-cleanup-C9dwStbK.mjs";
12
12
  import { n as readCodexThreadContextSnapshot, s as readCodexNotificationItem } from "./event-projector-usage-03R0I2dM.mjs";
13
13
  import { o as resolveCodexSessionBinding, t as CODEX_APP_SERVER_BINDING_GUARDED_REQUEST_TIMEOUT_MS } from "./session-binding-Fn7Ekzuv.mjs";
14
- import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-g-ZDkvCr.mjs";
15
- import { i as assertCodexSupervisionThreadLineage } from "./thread-policy-MM5YD22L.mjs";
16
- import { t as resumeCodexAppServerThread } from "./thread-resume-B9clyqXE.mjs";
17
- import { s as withCodexAppServerThreadMutationHold, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BT_SeSUp.mjs";
14
+ import { t as codexNativeSubagentMonitorRuntime } from "./native-subagent-monitor-GOGINNw0.mjs";
15
+ import { i as assertCodexSupervisionThreadLineage } from "./thread-policy-BHr4QsDO.mjs";
16
+ import { t as resumeCodexAppServerThread } from "./thread-resume-BNdEFZpM.mjs";
17
+ import { s as withCodexAppServerThreadMutationHold, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-Cxb01Uwq.mjs";
18
18
  import { t as persistCodexContextCompactionActivity } from "./context-compaction-activity-CMla5FPJ.mjs";
19
19
  import { t as resolveCodexNativeExecutionBlock } from "./sandbox-guard-OIYEmTRF.mjs";
20
20
  import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,24 +1,24 @@
1
+ import { h as CodexThreadDirectInputError, l as isCodexAppServerOverloadError, s as isCodexAppServerIndeterminateRequestCancellationError, v as assertCodexThreadAcceptsDirectInput, x as assertCodexThreadStartResponse } from "./client-BdNoDUaQ.mjs";
1
2
  import { i as isJsonObject } from "./protocol-CANUwXJ3.mjs";
2
3
  import { n as assertCodexBindingMayBeReplaced, v as sessionBindingIdentity } from "./session-binding-record-CUKpUKVm.mjs";
3
4
  import { m as readCodexRequirementsToml } from "./config-security-CE-FcGw9.mjs";
4
5
  import { d as readCodexPluginConfig } from "./config-parsing-b088LyhT.mjs";
5
6
  import { d as readCodexEffectiveConfig, n as codexSandboxPolicyForTurn } from "./config-options-CzyWLTJt.mjs";
6
- import { u as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-BH_y_i8l.mjs";
7
+ import { u as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-wN_lOZkB.mjs";
7
8
  import { o as resolveCodexDefaultWorkspaceDir } from "./conversation-binding-data-DlsG-dQu.mjs";
8
9
  import { n as projectBoundedCodexVisibleSessionHistory } from "./transcript-history-projection-DRSifI-1.mjs";
9
10
  import { n as canUseCodexModelBackedApprovalsReviewerForModel, r as resolveOpenClawExecPolicyForCodexAppServer } from "./config-DqmrqI23.mjs";
10
11
  import { n as resolveCodexAppServerRuntimeOptions } from "./config-runtime-DDhvIeUC.mjs";
11
12
  import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-B0okYl2D.mjs";
12
- import { B as isCodexAppServerClientRuntimeLive, F as consumeCodexAppServerLiveThread, K as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease } from "./shared-client-ZXKMsK6f.mjs";
13
- import { h as CodexThreadDirectInputError, l as isCodexAppServerOverloadError, s as isCodexAppServerIndeterminateRequestCancellationError, v as assertCodexThreadAcceptsDirectInput, x as assertCodexThreadStartResponse } from "./client-DcTISXe3.mjs";
14
- import { c as isCodexAppServerUnsafeSubscriptionError, h as getCodexAppServerTurnRouter, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort, v as isCodexNotificationForTurn } from "./attempt-client-cleanup-BVtNsTOE.mjs";
15
- import { S as buildCodexProjectDocThreadConfig, St as mergeCodexThreadConfigs, g as CODEX_NATIVE_PERSONALITY_NONE, v as resolveCodexAppServerRequestModelSelection, vt as buildDisabledAppsConfigPatch } from "./thread-requests-y_MnVuWC.mjs";
16
- import "./thread-lifecycle-CzzYMvTL.mjs";
13
+ import { B as isCodexAppServerClientRuntimeLive, F as consumeCodexAppServerLiveThread, K as releaseCodexAppServerLiveThread, R as hasCodexAppServerLiveThread, V as isCodexAppServerLiveThreadClaimed, b as withLeasedCodexAppServerClientStartSelectionRetry, c as getLeasedSharedCodexAppServerClient, m as releaseCodexAppServerClientLease } from "./shared-client-B__jQti1.mjs";
14
+ import { c as isCodexAppServerUnsafeSubscriptionError, h as getCodexAppServerTurnRouter, o as closeCodexStartupClientBestEffort, p as unsubscribeCodexThreadBestEffort, s as interruptCodexTurnAndWaitBestEffort, u as retireUnsafeCodexTurnClientBestEffort, v as isCodexNotificationForTurn } from "./attempt-client-cleanup-C9dwStbK.mjs";
15
+ import { S as buildCodexProjectDocThreadConfig, St as mergeCodexThreadConfigs, g as CODEX_NATIVE_PERSONALITY_NONE, v as resolveCodexAppServerRequestModelSelection, vt as buildDisabledAppsConfigPatch } from "./thread-requests-D-GTNAnZ.mjs";
16
+ import "./thread-lifecycle-Cw5Nsciw.mjs";
17
17
  import "./session-binding-Fn7Ekzuv.mjs";
18
- import { t as resumeCodexAppServerThread } from "./thread-resume-B9clyqXE.mjs";
19
- import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-BT_SeSUp.mjs";
18
+ import { t as resumeCodexAppServerThread } from "./thread-resume-BNdEFZpM.mjs";
19
+ import { a as rollbackCodexAppServerBindingSubscription, c as withExclusiveCodexAppServerThread, n as releaseCodexAppServerBindingSubscription, r as retainCodexAppServerBindingSubscription, t as isSameCodexAppServerThreadOwner } from "./thread-ownership-Cxb01Uwq.mjs";
20
20
  import { a as resolveCodexAppServerForModelProvider, i as resolveCodexSessionPermissionCwd, n as applyCodexSessionPermissionPolicy, t as CODEX_SESSION_PERMISSION_EXEC_MODES } from "./session-permission-policy-7lM447LW.mjs";
21
- import { u as trackCodexConversationActiveTurn } from "./conversation-control-CoWUL35l.mjs";
21
+ import { u as trackCodexConversationActiveTurn } from "./conversation-control-BWzVNh-v.mjs";
22
22
  import { asOptionalRecord, normalizeOptionalString, readNonEmptyStringPreservingWhitespace } from "openclaw/plugin-sdk/string-coerce-runtime";
23
23
  import { resolveSessionAgentIdsStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
24
24
  import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
@@ -3,8 +3,8 @@ import { r as bindingStoreKey } from "./session-binding-record-CUKpUKVm.mjs";
3
3
  import { o as formatCodexDisplayText } from "./command-formatters-R3ckE3Co.mjs";
4
4
  import "./config-DqmrqI23.mjs";
5
5
  import { n as normalizeCodexAppServerBindingModelProvider, t as isCodexAppServerNativeAuthProfile } from "./auth-profile-B0okYl2D.mjs";
6
- import { b as resolveCodexBindingModelProviderFallback, v as resolveCodexAppServerRequestModelSelection } from "./thread-requests-y_MnVuWC.mjs";
7
- import "./thread-lifecycle-CzzYMvTL.mjs";
6
+ import { b as resolveCodexBindingModelProviderFallback, v as resolveCodexAppServerRequestModelSelection } from "./thread-requests-D-GTNAnZ.mjs";
7
+ import "./thread-lifecycle-Cw5Nsciw.mjs";
8
8
  import "./session-binding-Fn7Ekzuv.mjs";
9
9
  import { resolveAgentDir } from "openclaw/plugin-sdk/agent-runtime";
10
10
  import { getSessionEntry, patchSessionEntry, resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
@@ -1,4 +1,5 @@
1
1
  import { CODEX_NATIVE_TOOL_REQUIREMENTS } from "../native-tool-policy.js";
2
+ import { B as resolveCodexToolAbortTerminalReason, E as readCodexTurnCompletedNotification, H as failedToolResult, V as createFailedDynamicToolResponse, k as createCodexElicitationResponse, m as CodexServerRequestResolvedError } from "./client-BdNoDUaQ.mjs";
2
3
  import { i as isJsonObject, r as flattenCodexDynamicToolFunctions, t as CODEX_OPENCLAW_DIRECT_DYNAMIC_TOOL_NAMESPACE } from "./protocol-CANUwXJ3.mjs";
3
4
  import { d as readCodexPluginConfig, l as isCodexRemoteExecPlacementSandbox } from "./config-parsing-b088LyhT.mjs";
4
5
  import { o as formatCodexDisplayText } from "./command-formatters-R3ckE3Co.mjs";
@@ -6,14 +7,13 @@ import { s as readItem } from "./event-projector-values-DJSz8BTk.mjs";
6
7
  import { s as codexAppIdentityKey } from "./plugin-app-cache-key-BL9B5H0L.mjs";
7
8
  import "./config-DqmrqI23.mjs";
8
9
  import { i as sanitizeInlineImageDataUrl, r as invalidInlineImageText } from "./session-history-read-Ov3StuL4.mjs";
9
- import { W as protectCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientIfCurrent } from "./shared-client-ZXKMsK6f.mjs";
10
+ import { W as protectCodexAppServerLiveThread, _ as retainSharedCodexAppServerClientIfCurrent } from "./shared-client-B__jQti1.mjs";
10
11
  import { a as isCodexResponsesOAuthRun } from "./responses-oauth-twnuTaAa.mjs";
11
- import { B as resolveCodexToolAbortTerminalReason, E as readCodexTurnCompletedNotification, H as failedToolResult, V as createFailedDynamicToolResponse, k as createCodexElicitationResponse, m as CodexServerRequestResolvedError } from "./client-DcTISXe3.mjs";
12
- import { A as itemStatus, C as auditNativeToolUnfinishedStatus, N as shouldClearTerminalPresentationForNativeItem, S as auditNativeToolTerminalStatus, b as readCodexNotificationTurnId, k as itemName, v as isCodexNotificationForTurn, x as auditNativeToolName, y as readCodexNotificationThreadId } from "./attempt-client-cleanup-BVtNsTOE.mjs";
13
- import { ct as isForcedPrivateQaCodexRuntime, dt as normalizeCodexDynamicToolName, j as emitCodexNativePreToolUseFailureDiagnostic, ot as filterCodexDynamicTools, p as resolveCodexWebSearchPlan, st as filterCodexDynamicToolsForDisabledNativeSurface, ut as isSystemAgentOnlyCodexDynamicToolAllowlist } from "./thread-requests-y_MnVuWC.mjs";
14
- import { _ as waitForPluginApprovalDecision, d as mapExecDecisionToOutcome, f as requestPluginApproval, g as truncateCodexApprovalDisplayText, h as stripDanglingCodexApprovalTerminalSequence, l as approvalRequestExplicitlyUnavailable, m as sanitizeCodexApprovalVisibleText, p as requestPluginApprovalOutcome, u as codexApprovalTimeoutText } from "./native-subagent-monitor-g-ZDkvCr.mjs";
12
+ import { A as itemStatus, C as auditNativeToolUnfinishedStatus, N as shouldClearTerminalPresentationForNativeItem, S as auditNativeToolTerminalStatus, b as readCodexNotificationTurnId, k as itemName, v as isCodexNotificationForTurn, x as auditNativeToolName, y as readCodexNotificationThreadId } from "./attempt-client-cleanup-C9dwStbK.mjs";
13
+ import { ct as isForcedPrivateQaCodexRuntime, dt as normalizeCodexDynamicToolName, j as emitCodexNativePreToolUseFailureDiagnostic, ot as filterCodexDynamicTools, p as resolveCodexWebSearchPlan, st as filterCodexDynamicToolsForDisabledNativeSurface, ut as isSystemAgentOnlyCodexDynamicToolAllowlist } from "./thread-requests-D-GTNAnZ.mjs";
14
+ import { _ as waitForPluginApprovalDecision, d as mapExecDecisionToOutcome, f as requestPluginApproval, g as truncateCodexApprovalDisplayText, h as stripDanglingCodexApprovalTerminalSequence, l as approvalRequestExplicitlyUnavailable, m as sanitizeCodexApprovalVisibleText, p as requestPluginApprovalOutcome, u as codexApprovalTimeoutText } from "./native-subagent-monitor-GOGINNw0.mjs";
15
15
  import { n as resolveCodexNativeExecutionPolicy, r as resolveCodexNodeExecToolOverrides } from "./native-execution-policy-BxZJy5mP.mjs";
16
- import { a as CODEX_NODE_EXEC_DYNAMIC_TOOL_NAME, c as createNodeExecAliasDynamicTool, d as isCodexDynamicToolExcluded, i as CODEX_GATEWAY_PROCESS_DYNAMIC_TOOL_NAME, l as createSandboxExecProjection, o as createGatewayExecProjection, r as CODEX_GATEWAY_EXEC_DYNAMIC_TOOL_NAME, s as createGatewayProcessProjection, u as createSandboxProcessProjection } from "./provider-capabilities-DBs9l8oL.mjs";
16
+ import { a as CODEX_NODE_EXEC_DYNAMIC_TOOL_NAME, c as createNodeExecAliasDynamicTool, d as isCodexDynamicToolExcluded, i as CODEX_GATEWAY_PROCESS_DYNAMIC_TOOL_NAME, l as createSandboxExecProjection, o as createGatewayExecProjection, r as CODEX_GATEWAY_EXEC_DYNAMIC_TOOL_NAME, s as createGatewayProcessProjection, u as createSandboxProcessProjection } from "./provider-capabilities-DcF-V_3D.mjs";
17
17
  import { createRequire } from "node:module";
18
18
  import { asNonArrayRecord, asOptionalRecord, isRecord, normalizeTrimmedStringList, readNonBlankString, readStringField } from "openclaw/plugin-sdk/string-coerce-runtime";
19
19
  import { createHash, randomUUID } from "node:crypto";
@@ -1,6 +1,6 @@
1
1
  import { v as sessionBindingIdentity } from "./session-binding-record-CUKpUKVm.mjs";
2
- import { u as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-BH_y_i8l.mjs";
3
- import "./shared-client-ZXKMsK6f.mjs";
2
+ import { u as retainSharedCodexAppServerClientByInstanceId } from "./shared-client-lifecycle-wN_lOZkB.mjs";
3
+ import "./shared-client-B__jQti1.mjs";
4
4
  import "./session-binding-Fn7Ekzuv.mjs";
5
5
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { assignMcpCatalogSafeServerNames } from "openclaw/plugin-sdk/agent-harness-runtime";