@openclaw/acpx 2026.10.10-beta.4 → 2026.10.10

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.
@@ -6,7 +6,7 @@ import { fileURLToPath } from "node:url";
6
6
  import { formatPluginConfigIssue } from "openclaw/plugin-sdk/extension-shared";
7
7
  import { resolveStateDir } from "openclaw/plugin-sdk/state-paths";
8
8
  import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
- //#region extensions/acpx/src/config-schema.ts
9
+ // extensions/acpx/src/config-schema.ts
10
10
  /**
11
11
  * ACPX plugin configuration schema and public config types. Runtime setup uses
12
12
  * this file as the single source of truth for validation and defaulting.
@@ -55,14 +55,12 @@ const AcpxPluginConfigSchema = z.strictObject({
55
55
  args: z.array(z.string({ error: "args must be an array of strings" })).optional()
56
56
  })).optional()
57
57
  });
58
- //#endregion
59
- //#region extensions/acpx/src/codex-adapter.ts
58
+ // extensions/acpx/src/codex-adapter.ts
60
59
  const CODEX_ACP_PACKAGE = "@agentclientprotocol/codex-acp";
61
60
  const CODEX_ACP_BIN = "codex-acp";
62
61
  const LEGACY_CODEX_ACP_PACKAGE = "@zed-industries/codex-acp";
63
62
  const OPENCLAW_CODEX_CONFIG_ARG = "--openclaw-codex-config";
64
- //#endregion
65
- //#region extensions/acpx/src/command-line.ts
63
+ // extensions/acpx/src/command-line.ts
66
64
  /** Match ACPX's persisted argv identity; scalar records keep their original bytes. */
67
65
  function renderAgentCommand(command) {
68
66
  return typeof command === "string" ? command : command.map((part) => /^[A-Za-z0-9_@%+=:,./^~-]+$/.test(part) ? part : JSON.stringify(part)).join(" ");
@@ -184,8 +182,7 @@ function resolveAgentCommand(params) {
184
182
  if (!normalizedAgentName) return;
185
183
  return splitCommandParts(params.agentRegistry.resolve(normalizedAgentName));
186
184
  }
187
- //#endregion
188
- //#region extensions/acpx/src/config.ts
185
+ // extensions/acpx/src/config.ts
189
186
  const MANAGED_MCP_BRIDGES = [[
190
187
  "pluginToolsMcpBridge",
191
188
  "openclaw-plugin-tools",
@@ -341,5 +338,4 @@ function resolveAcpxPluginConfig(params) {
341
338
  agents
342
339
  };
343
340
  }
344
- //#endregion
345
341
  export { isClaudeAcpCommand as a, renderAgentCommand as c, CODEX_ACP_BIN as d, CODEX_ACP_PACKAGE as f, AcpxNativeAgentsSchema as g, ACPX_NATIVE_AGENT_IDS as h, toAcpMcpServers as i, resolveAgentCommand as l, OPENCLAW_CODEX_CONFIG_ARG as m, resolveAcpxPluginRoot as n, isCodexAcpCommand as o, LEGACY_CODEX_ACP_PACKAGE as p, resolveOpenClawRoot as r, isOpenClawBridgeCommand as s, resolveAcpxPluginConfig as t, splitCommandParts as u };
@@ -7,7 +7,7 @@ import { DEFAULT_PLUGIN_APPROVAL_TIMEOUT_MS } from "openclaw/plugin-sdk/approval
7
7
  import { toErrorObject } from "openclaw/plugin-sdk/error-runtime";
8
8
  import { resolveStorePath } from "openclaw/plugin-sdk/session-store-runtime";
9
9
  import { appendSessionTranscriptMessageByIdentityStrict } from "openclaw/plugin-sdk/session-transcript-runtime";
10
- //#region extensions/acpx/src/harness-attempt.ts
10
+ // extensions/acpx/src/harness-attempt.ts
11
11
  async function runAcpHarnessAttempt(params) {
12
12
  const { input, runtime } = params;
13
13
  if (!input.agentId || !input.sessionKey) throw new Error("ACP chat requires an owned OpenClaw session");
@@ -364,5 +364,4 @@ async function runAcpHarnessAttempt(params) {
364
364
  }
365
365
  };
366
366
  }
367
- //#endregion
368
367
  export { runAcpHarnessAttempt };
@@ -1,4 +1,4 @@
1
- import { c as PI_SESSION_READ_COMMAND, i as PI_LOCAL_SESSION_HOST_ID, l as PI_TERMINAL_RESUME_COMMAND, n as piSessionStore, o as PI_SESSIONS_LIST_COMMAND, r as piSessionStoreAvailable, s as PI_SESSION_ID_PATTERN, t as piAcpSessionStoreRoot } from "./pi-session-paths-CIvyk6KB.mjs";
1
+ import { c as PI_SESSION_READ_COMMAND, i as PI_LOCAL_SESSION_HOST_ID, l as PI_TERMINAL_RESUME_COMMAND, n as piSessionStore, o as PI_SESSIONS_LIST_COMMAND, r as piSessionStoreAvailable, s as PI_SESSION_ID_PATTERN, t as piAcpSessionStoreRoot } from "./pi-session-paths-Co5515li.mjs";
2
2
  import { parseDateFirstTimestampMs, timestampMsToIsoString } from "openclaw/plugin-sdk/number-runtime";
3
3
  import { createReadStream } from "node:fs";
4
4
  import path from "node:path";
@@ -14,7 +14,7 @@ import { safeParseJson, truncateUtf16Safe } from "openclaw/plugin-sdk/text-utili
14
14
  import fs$1 from "node:fs/promises";
15
15
  import { runTasksWithConcurrency } from "openclaw/plugin-sdk/concurrency-runtime";
16
16
  import { isPathStrictlyInside } from "openclaw/plugin-sdk/file-access-runtime";
17
- //#region extensions/acpx/src/pi-session-store.ts
17
+ // extensions/acpx/src/pi-session-store.ts
18
18
  const MAX_DISCOVERY_FILES = 1e4;
19
19
  const SUMMARY_SCAN_BATCH_SIZE = 100;
20
20
  const MAX_SUMMARY_CACHE_ENTRIES = 256;
@@ -337,8 +337,7 @@ async function readPiSessionById(threadId, env) {
337
337
  throw new Error("Pi session is unavailable", { cause: error });
338
338
  }
339
339
  }
340
- //#endregion
341
- //#region extensions/acpx/src/pi-session-catalog.ts
340
+ // extensions/acpx/src/pi-session-catalog.ts
342
341
  const MAX_SEARCH_LENGTH = 500;
343
342
  const isExactPiSessionCursor = sessionCatalogPaging.isExactCursor;
344
343
  function textFromContent(content) {
@@ -531,8 +530,7 @@ async function readLocalPiTranscriptPage(value) {
531
530
  ...page
532
531
  };
533
532
  }
534
- //#endregion
535
- //#region extensions/acpx/src/pi-session-upstream-activity.ts
533
+ // extensions/acpx/src/pi-session-upstream-activity.ts
536
534
  function readFilePath(probe) {
537
535
  return isRecord(probe.upstreamRef) && typeof probe.upstreamRef.filePath === "string" ? probe.upstreamRef.filePath : void 0;
538
536
  }
@@ -582,8 +580,7 @@ async function checkPiUpstreamActivity(probes) {
582
580
  } catch {}
583
581
  return outcomes;
584
582
  }
585
- //#endregion
586
- //#region extensions/acpx/src/pi-session-catalog-runtime.ts
583
+ // extensions/acpx/src/pi-session-catalog-runtime.ts
587
584
  const NODE_TIMEOUT_MS = 2e4;
588
585
  const ACPX_BACKEND_ID = "acpx";
589
586
  const PI_ACP_AGENT_ID = "pi";
@@ -717,5 +714,4 @@ function createPiSessionCatalogRuntime(api) {
717
714
  checkUpstreamActivity: (probes, policy) => checkPiUpstreamActivity(probes.filter((probe) => probe.hostId !== "gateway" || policy?.allowProcessHomeFallback !== false || !piSessionStore(process.env).usesProcessHomeFallback))
718
715
  }, isExactPiSessionCursor);
719
716
  }
720
- //#endregion
721
717
  export { createPiSessionCatalogRuntime, listLocalPiSessionPage as listPiSessions, readLocalPiTranscriptPage as readPiSession, requireLocalPiSession };
@@ -2,15 +2,14 @@ import { readFileSync, statSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { isRecord, normalizeBoundedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import os from "node:os";
5
- //#region extensions/acpx/src/pi-session-catalog-shared.ts
5
+ // extensions/acpx/src/pi-session-catalog-shared.ts
6
6
  const PI_SESSIONS_LIST_COMMAND = "acpx.pi.sessions.list.v1";
7
7
  const PI_SESSION_READ_COMMAND = "acpx.pi.sessions.read.v1";
8
8
  const PI_TERMINAL_RESUME_COMMAND = "acpx.pi.terminal.resume.v1";
9
9
  const PI_SESSIONS_CAPABILITY = "pi-sessions";
10
10
  const PI_LOCAL_SESSION_HOST_ID = "gateway";
11
11
  const PI_SESSION_ID_PATTERN = /^(?!-)[A-Za-z0-9._:-]{1,256}$/u;
12
- //#endregion
13
- //#region extensions/acpx/src/pi-session-paths.ts
12
+ // extensions/acpx/src/pi-session-paths.ts
14
13
  function piHome(env) {
15
14
  return (process.platform === "win32" ? env.USERPROFILE?.trim() : env.HOME?.trim()) || os.homedir();
16
15
  }
@@ -80,5 +79,4 @@ function piSessionStoreAvailable(env, store) {
80
79
  return false;
81
80
  }
82
81
  }
83
- //#endregion
84
82
  export { PI_SESSIONS_CAPABILITY as a, PI_SESSION_READ_COMMAND as c, PI_LOCAL_SESSION_HOST_ID as i, PI_TERMINAL_RESUME_COMMAND as l, piSessionStore as n, PI_SESSIONS_LIST_COMMAND as o, piSessionStoreAvailable as r, PI_SESSION_ID_PATTERN as s, piAcpSessionStoreRoot as t };
@@ -1,6 +1,6 @@
1
1
  import { getAcpRuntimeBackend, registerAcpRuntimeBackend, unregisterAcpRuntimeBackend } from "openclaw/plugin-sdk/acp-runtime-backend";
2
2
  import { createLazyRuntimeMethodBinder, createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
3
- //#region extensions/acpx/src/runtime-proxy.ts
3
+ // extensions/acpx/src/runtime-proxy.ts
4
4
  /** Start an ACP turn through a lazy runtime resolver without awaiting resolution up front. */
5
5
  function lazyStartRuntimeTurn(resolveRuntime, input) {
6
6
  const turnPromise = resolveRuntime().then((runtime) => runtime.startTurn(input));
@@ -46,14 +46,13 @@ function createLazyAcpRuntimeProxy(resolveRuntime) {
46
46
  close: bind((runtime) => runtime.close.bind(runtime))
47
47
  };
48
48
  }
49
- //#endregion
50
- //#region extensions/acpx/register.runtime.ts
49
+ // extensions/acpx/register.runtime.ts
51
50
  /**
52
51
  * Lazy ACPX runtime service registration. The plugin exposes an ACP backend
53
52
  * immediately, then imports the heavier service only when a session needs it.
54
53
  */
55
54
  const ACPX_BACKEND_ID = "acpx";
56
- const loadServiceModule = createLazyRuntimeModule(() => import("./service-5eVJSjDE.mjs"));
55
+ const loadServiceModule = createLazyRuntimeModule(() => import("./service-Dr8U5n0S.mjs"));
57
56
  function unregisterOwnedRuntime(runtime) {
58
57
  if (runtime && getAcpRuntimeBackend(ACPX_BACKEND_ID)?.runtime === runtime) unregisterAcpRuntimeBackend(ACPX_BACKEND_ID);
59
58
  }
@@ -193,5 +192,4 @@ function createAcpxRuntimeService(params = {}) {
193
192
  }
194
193
  };
195
194
  }
196
- //#endregion
197
195
  export { createAcpxRuntimeService as t };
@@ -1,5 +1,5 @@
1
1
  import "node:module";
2
- //#region \0rolldown/runtime.js
2
+ // \0rolldown/runtime.js
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -24,8 +24,7 @@ var __copyProps = (to, from, except, desc) => {
24
24
  return to;
25
25
  };
26
26
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
27
- //#endregion
28
- //#region packages/normalization-core/src/record-coerce.ts
27
+ // packages/normalization-core/src/record-coerce.ts
29
28
  /** Type guard for non-array object records at browser-safe boundaries. */
30
29
  function isRecord(value) {
31
30
  return value !== null && typeof value === "object" && !Array.isArray(value);
@@ -34,8 +33,7 @@ function isRecord(value) {
34
33
  function asNullableRecord(value) {
35
34
  return isRecord(value) ? value : null;
36
35
  }
37
- //#endregion
38
- //#region src/config/channel-config-normalization.ts
36
+ // src/config/channel-config-normalization.ts
39
37
  /** Applies one channel-specific doctor migration to every object-shaped account. */
40
38
  function normalizeChannelAccounts(params) {
41
39
  const rawAccounts = asNullableRecord(params.entry.accounts);
@@ -111,8 +109,7 @@ function normalizeChannelConfigEntries(params) {
111
109
  changes
112
110
  };
113
111
  }
114
- //#endregion
115
- //#region src/plugin-sdk/legacy-webhook-listener-migration.ts
112
+ // src/plugin-sdk/legacy-webhook-listener-migration.ts
116
113
  /** Preserve explicitly configured webhook listeners while moving ingress onto Gateway routes. */
117
114
  function createLegacyWebhookListenerDoctorContract(params) {
118
115
  const portKey = params.portKey ?? "webhookPort";
@@ -182,10 +179,8 @@ function createLegacyWebhookListenerDoctorContract(params) {
182
179
  }
183
180
  };
184
181
  }
185
- //#endregion
186
- //#region \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
182
+ // \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
187
183
  var runtime_doctor_migrations_exports = /* @__PURE__ */ __exportAll({ createLegacyWebhookListenerDoctorContract: () => createLegacyWebhookListenerDoctorContract });
188
184
  import * as import_openclaw_plugin_sdk_runtime_doctor_migrations from "openclaw/plugin-sdk/runtime-doctor-migrations";
189
185
  __reExport(runtime_doctor_migrations_exports, import_openclaw_plugin_sdk_runtime_doctor_migrations);
190
- //#endregion
191
186
  export { __exportAll as n, runtime_doctor_migrations_exports as t };
@@ -1,7 +1,7 @@
1
- import { a as isClaudeAcpCommand, c as renderAgentCommand, d as CODEX_ACP_BIN, f as CODEX_ACP_PACKAGE, i as toAcpMcpServers, l as resolveAgentCommand, m as OPENCLAW_CODEX_CONFIG_ARG, n as resolveAcpxPluginRoot, o as isCodexAcpCommand, p as LEGACY_CODEX_ACP_PACKAGE, r as resolveOpenClawRoot, s as isOpenClawBridgeCommand, t as resolveAcpxPluginConfig, u as splitCommandParts } from "./config-D0ATuiVJ.mjs";
1
+ import { a as isClaudeAcpCommand, c as renderAgentCommand, d as CODEX_ACP_BIN, f as CODEX_ACP_PACKAGE, i as toAcpMcpServers, l as resolveAgentCommand, m as OPENCLAW_CODEX_CONFIG_ARG, n as resolveAcpxPluginRoot, o as isCodexAcpCommand, p as LEGACY_CODEX_ACP_PACKAGE, r as resolveOpenClawRoot, s as isOpenClawBridgeCommand, t as resolveAcpxPluginConfig, u as splitCommandParts } from "./config-CE-ej7LM.mjs";
2
2
  import { AcpRuntimeError } from "../runtime-api.js";
3
- import { t as resolveAcpxSessionResource } from "./session-resource-DKJsUJPu.mjs";
4
- import { a as hashAcpxProcessCommand, adoptAcpxStateDirectory, c as withAcpxLeaseArgs, d as normalizeAcpxGatewayInstanceRecord, i as createAcpxProcessLeaseStore, l as ACPX_GATEWAY_INSTANCE_KEY, n as OPENCLAW_ACPX_LEASE_ID_ARG, o as openAcpxProcessLeaseStateStore, r as OPENCLAW_GATEWAY_INSTANCE_ID_ARG, s as readAcpxProcessLeaseIdentity, t as ACPX_PROBE_LEASE_SESSION_KEY, u as ACPX_GATEWAY_INSTANCE_NAMESPACE } from "./session-owner-migration-duvwZfxk.mjs";
3
+ import { t as resolveAcpxSessionResource } from "./session-resource-Cv-RAA6y.mjs";
4
+ import { a as hashAcpxProcessCommand, adoptAcpxStateDirectory, c as withAcpxLeaseArgs, d as normalizeAcpxGatewayInstanceRecord, i as createAcpxProcessLeaseStore, l as ACPX_GATEWAY_INSTANCE_KEY, n as OPENCLAW_ACPX_LEASE_ID_ARG, o as openAcpxProcessLeaseStateStore, r as OPENCLAW_GATEWAY_INSTANCE_ID_ARG, s as readAcpxProcessLeaseIdentity, t as ACPX_PROBE_LEASE_SESSION_KEY, u as ACPX_GATEWAY_INSTANCE_NAMESPACE } from "./session-owner-migration-WmiXoSmh.mjs";
5
5
  import { createRequire } from "node:module";
6
6
  import { finiteSecondsToTimerSafeMilliseconds, parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
7
7
  import fs from "node:fs";
@@ -22,7 +22,7 @@ import { AsyncLocalStorage } from "node:async_hooks";
22
22
  import { isDeepStrictEqual } from "node:util";
23
23
  import { redactSensitiveText } from "openclaw/plugin-sdk/security-runtime";
24
24
  import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
25
- //#region extensions/acpx/src/adapter-wrapper-script.ts
25
+ // extensions/acpx/src/adapter-wrapper-script.ts
26
26
  const RUN_CONFIGURED_COMMAND_SENTINEL = "--openclaw-run-configured";
27
27
  const DIAGNOSTIC_REDACTION_RULES = [
28
28
  {
@@ -489,8 +489,7 @@ child.on("close", () => {
489
489
  main();
490
490
  `;
491
491
  }
492
- //#endregion
493
- //#region extensions/acpx/src/codex-trust-config.ts
492
+ // extensions/acpx/src/codex-trust-config.ts
494
493
  function stripTomlComment(line) {
495
494
  let quote = null;
496
495
  let escaping = false;
@@ -685,8 +684,7 @@ function renderIsolatedCodexConfig(params) {
685
684
  ""
686
685
  ].filter((line, index, lines) => !(line === "" && lines[index - 1] === "")).join("\n");
687
686
  }
688
- //#endregion
689
- //#region extensions/acpx/src/codex-auth-bridge.ts
687
+ // extensions/acpx/src/codex-auth-bridge.ts
690
688
  /**
691
689
  * Prepares isolated Codex and Claude ACP wrapper commands for ACPX. The bridge
692
690
  * copies safe auth/config state into plugin-owned homes and redacts diagnostics.
@@ -1010,8 +1008,7 @@ async function prepareAcpxCodexAuthConfig(params) {
1010
1008
  }
1011
1009
  };
1012
1010
  }
1013
- //#endregion
1014
- //#region extensions/acpx/src/process-reaper.ts
1011
+ // extensions/acpx/src/process-reaper.ts
1015
1012
  /**
1016
1013
  * ACPX process ownership checks and cleanup. The reaper only terminates
1017
1014
  * OpenClaw-owned wrapper trees after validating paths, packages, and lease ids.
@@ -1295,8 +1292,7 @@ async function reapStaleOpenClawOwnedAcpxOrphans(params) {
1295
1292
  terminatedPids: await terminatePids(uniquePids(orphanTrees.flatMap((tree) => tree.toReversed())), params.assertCurrent)
1296
1293
  };
1297
1294
  }
1298
- //#endregion
1299
- //#region extensions/acpx/src/model-ref.ts
1295
+ // extensions/acpx/src/model-ref.ts
1300
1296
  function withAcpxSessionOptions(input) {
1301
1297
  const model = input.model?.trim() || input.sessionOptions?.model;
1302
1298
  const sessionOptions = model ? {
@@ -1335,8 +1331,7 @@ async function ensureSessionWithModelRef(ensureSession, input) {
1335
1331
  };
1336
1332
  }
1337
1333
  }
1338
- //#endregion
1339
- //#region extensions/acpx/src/runtime-generations.ts
1334
+ // extensions/acpx/src/runtime-generations.ts
1340
1335
  var AcpxGenerationRegistry = class {
1341
1336
  constructor(sessionStore, delegate, createDelegate) {
1342
1337
  this.sessionStore = sessionStore;
@@ -1461,8 +1456,7 @@ var AcpxGenerationRegistry = class {
1461
1456
  this.isolatedSessionResources.clear();
1462
1457
  }
1463
1458
  };
1464
- //#endregion
1465
- //#region extensions/acpx/src/runtime-probe.ts
1459
+ // extensions/acpx/src/runtime-probe.ts
1466
1460
  var AcpxRuntimeProbe = class {
1467
1461
  constructor(params) {
1468
1462
  this.params = params;
@@ -1495,8 +1489,7 @@ var AcpxRuntimeProbe = class {
1495
1489
  await this.tail;
1496
1490
  }
1497
1491
  };
1498
- //#endregion
1499
- //#region extensions/acpx/src/runtime-session-store.ts
1492
+ // extensions/acpx/src/runtime-session-store.ts
1500
1493
  /** Generation-bound persistence and process-lease metadata for ACPX resets. */
1501
1494
  function withOpenClawLeaseSessionMetadata(record, lease) {
1502
1495
  return {
@@ -1638,8 +1631,7 @@ function createResetAwareSessionStore(baseStore, params) {
1638
1631
  }
1639
1632
  };
1640
1633
  }
1641
- //#endregion
1642
- //#region extensions/acpx/src/runtime-process-cleanup.ts
1634
+ // extensions/acpx/src/runtime-process-cleanup.ts
1643
1635
  /** Capture OpenClaw wrapper cleanup ownership before a backend close can yield. */
1644
1636
  async function prepareAcpxProcessCleanup(params) {
1645
1637
  const { leaseStore, gatewayInstanceId, wrapperRoot } = params;
@@ -1686,8 +1678,7 @@ async function prepareAcpxProcessCleanup(params) {
1686
1678
  });
1687
1679
  };
1688
1680
  }
1689
- //#endregion
1690
- //#region extensions/acpx/src/session-owner.ts
1681
+ // extensions/acpx/src/session-owner.ts
1691
1682
  function requireAcpxOwnerMigration(sessionKey) {
1692
1683
  throw new AcpRuntimeError("ACP_SESSION_INIT_FAILED", `ACP session "${sessionKey}" has an unqualified or unverifiable backend locator. Stop the Gateway and run "openclaw doctor --fix" to migrate ownership without losing history, then restart.`, { detailCode: "SESSION_OWNER_MIGRATION_REQUIRED" });
1693
1684
  }
@@ -1716,8 +1707,7 @@ function toAcpxResourceInput(input) {
1716
1707
  }
1717
1708
  };
1718
1709
  }
1719
- //#endregion
1720
- //#region extensions/acpx/src/runtime.ts
1710
+ // extensions/acpx/src/runtime.ts
1721
1711
  /**
1722
1712
  * OpenClaw ACPX runtime adapter. It wraps the upstream acpx runtime with
1723
1713
  * OpenClaw session metadata, lease tracking, model scoping, and cleanup policy.
@@ -1914,9 +1904,9 @@ var AcpxRuntime$1 = class {
1914
1904
  },
1915
1905
  list: () => this.agentRegistry.list()
1916
1906
  };
1917
- const createDelegate = (probeAgent = options.probeAgent) => new AcpxRuntime({
1907
+ const createBase = (overrides = {}) => new AcpxRuntime({
1918
1908
  ...options,
1919
- probeAgent,
1909
+ ...overrides,
1920
1910
  sessionStore: this.sessionStore,
1921
1911
  agentRegistry: this.scopedAgentRegistry,
1922
1912
  sessionPermissions: (context) => {
@@ -1955,11 +1945,14 @@ var AcpxRuntime$1 = class {
1955
1945
  onExit: options.processLifecycle?.onExit
1956
1946
  }
1957
1947
  }, testOptions);
1958
- this.delegate = createDelegate();
1959
- this.generationRegistry = new AcpxGenerationRegistry(this.sessionStore, this.delegate, createDelegate);
1948
+ this.delegate = createBase();
1949
+ this.generationRegistry = new AcpxGenerationRegistry(this.sessionStore, this.delegate, createBase);
1960
1950
  this.probe = new AcpxRuntimeProbe({
1961
1951
  getAgent: () => normalizeOptionalLowercaseString(options.getProbeAgent?.() ?? options.probeAgent) ?? "codex",
1962
- createRuntime: createDelegate,
1952
+ createRuntime: (probeAgent) => createBase({
1953
+ probeAgent,
1954
+ cwd: this.wrapperRoot ?? this.cwd
1955
+ }),
1963
1956
  assertRunning: () => this.generationRegistry.assertRunning(),
1964
1957
  runWithLease: (agent, run) => this.runWithLaunchLease({
1965
1958
  agent,
@@ -2451,8 +2444,7 @@ var AcpxRuntime$1 = class {
2451
2444
  });
2452
2445
  }
2453
2446
  };
2454
- //#endregion
2455
- //#region extensions/acpx/src/service.ts
2447
+ // extensions/acpx/src/service.ts
2456
2448
  const ENABLE_STARTUP_PROBE_ENV = "OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE";
2457
2449
  const SKIP_RUNTIME_PROBE_ENV = "OPENCLAW_SKIP_ACPX_RUNTIME_PROBE";
2458
2450
  const MAX_ACPX_TOKIO_WORKER_THREADS = 8;
@@ -2673,5 +2665,4 @@ function createAcpxRuntimeService(params) {
2673
2665
  }
2674
2666
  };
2675
2667
  }
2676
- //#endregion
2677
2668
  export { createAcpxRuntimeService };
@@ -1,12 +1,12 @@
1
- import { t as runtime_doctor_migrations_exports } from "./runtime-doctor-migrations-hxP-CXX7.mjs";
2
- import { c as renderAgentCommand, t as resolveAcpxPluginConfig, u as splitCommandParts } from "./config-D0ATuiVJ.mjs";
1
+ import { t as runtime_doctor_migrations_exports } from "./runtime-doctor-migrations-CSvRANPN.mjs";
2
+ import { c as renderAgentCommand, t as resolveAcpxPluginConfig, u as splitCommandParts } from "./config-CE-ej7LM.mjs";
3
3
  import path from "node:path";
4
4
  import { asFiniteNumber, asOptionalObjectRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { createHash } from "node:crypto";
6
6
  import fs from "node:fs/promises";
7
7
  import { isDeepStrictEqual } from "node:util";
8
8
  import { movePathWithCopyFallback } from "openclaw/plugin-sdk/security-runtime";
9
- //#region extensions/acpx/src/state.ts
9
+ // extensions/acpx/src/state.ts
10
10
  const ACPX_PROCESS_LEASE_NAMESPACE = "process-leases";
11
11
  const ACPX_PROCESS_LEASE_MAX_ENTRIES = 4096;
12
12
  const ACPX_GATEWAY_INSTANCE_NAMESPACE = "gateway-instance";
@@ -20,8 +20,7 @@ function normalizeAcpxGatewayInstanceRecord(value) {
20
20
  createdAt: Math.trunc(asFiniteNumber(record?.createdAt) ?? 0)
21
21
  };
22
22
  }
23
- //#endregion
24
- //#region extensions/acpx/src/process-lease.ts
23
+ // extensions/acpx/src/process-lease.ts
25
24
  const OPENCLAW_ACPX_LEASE_ID_ARG = "--openclaw-acpx-lease-id";
26
25
  const OPENCLAW_GATEWAY_INSTANCE_ID_ARG = "--openclaw-gateway-instance-id";
27
26
  /** Synthetic session identity for generated-wrapper health probes. */
@@ -119,8 +118,7 @@ function withAcpxLeaseArgs(params) {
119
118
  params.gatewayInstanceId
120
119
  ];
121
120
  }
122
- //#endregion
123
- //#region extensions/acpx/src/session-owner-migration.ts
121
+ // extensions/acpx/src/session-owner-migration.ts
124
122
  function openStateDirectoryMarker(input) {
125
123
  return input.openKeyedStore({
126
124
  namespace: "state-directory-migration",
@@ -230,7 +228,7 @@ async function legacyRecords(input, directory = sessionDirectory(input)) {
230
228
  directory,
231
229
  ids
232
230
  };
233
- const { resolveAcpxSessionResource } = await import("./session-resource-DKJsUJPu.mjs").then((n) => n.n);
231
+ const { resolveAcpxSessionResource } = await import("./session-resource-Cv-RAA6y.mjs").then((n) => n.n);
234
232
  const evidence = await input.context.inspectAcpSessionClaims?.();
235
233
  const { decodeAcpxRuntimeHandleState } = await import("acpx/runtime");
236
234
  return {
@@ -273,7 +271,7 @@ async function migrateRecord(input, directory, oldId, claims, changes, warnings)
273
271
  const raw = (0, runtime_doctor_migrations_exports.asObjectRecord)(JSON.parse(sourceBytes));
274
272
  if (!raw || raw.acpx_record_id !== oldId || typeof raw.name !== "string" || !raw.name.trim() || raw.name !== oldId && !oldId.startsWith(`${raw.name}:oneshot:`)) throw new Error("record ID/name is not a recognized ACPX locator");
275
273
  requireStoppedPid(raw.pid);
276
- const { resolveAcpxSessionResource } = await import("./session-resource-DKJsUJPu.mjs").then((n) => n.n);
274
+ const { resolveAcpxSessionResource } = await import("./session-resource-Cv-RAA6y.mjs").then((n) => n.n);
277
275
  const { createFileSessionStore, decodeAcpxRuntimeHandleState, encodeAcpxRuntimeHandleState } = await import("acpx/runtime");
278
276
  const candidates = claims.filter((claim) => matchesClaimRecord(claim, raw, oldId, resolveAcpxSessionResource(claim), decodeAcpxRuntimeHandleState));
279
277
  if (candidates.length !== 1) throw new Error("exactly one current owner claim is required");
@@ -427,5 +425,4 @@ const acpxSessionOwnerMigration = {
427
425
  };
428
426
  }
429
427
  };
430
- //#endregion
431
428
  export { hashAcpxProcessCommand as a, acpxSessionOwnerMigration, adoptAcpxStateDirectory, withAcpxLeaseArgs as c, normalizeAcpxGatewayInstanceRecord as d, createAcpxProcessLeaseStore as i, ACPX_GATEWAY_INSTANCE_KEY as l, OPENCLAW_ACPX_LEASE_ID_ARG as n, openAcpxProcessLeaseStateStore as o, OPENCLAW_GATEWAY_INSTANCE_ID_ARG as r, readAcpxProcessLeaseIdentity as s, ACPX_PROBE_LEASE_SESSION_KEY as t, ACPX_GATEWAY_INSTANCE_NAMESPACE as u };
@@ -1,8 +1,8 @@
1
- import { n as __exportAll } from "./runtime-doctor-migrations-hxP-CXX7.mjs";
1
+ import { n as __exportAll } from "./runtime-doctor-migrations-CSvRANPN.mjs";
2
2
  import { AcpRuntimeError } from "../runtime-api.js";
3
3
  import { createHash } from "node:crypto";
4
4
  import { normalizeAgentId, parseAgentSessionKey } from "openclaw/plugin-sdk/routing";
5
- //#region extensions/acpx/src/session-resource.ts
5
+ // extensions/acpx/src/session-resource.ts
6
6
  var session_resource_exports = /* @__PURE__ */ __exportAll({ resolveAcpxSessionResource: () => resolveAcpxSessionResource });
7
7
  /** Logical OpenClaw keys stay intact; only bare backend resource names need a namespace. */
8
8
  function resolveAcpxSessionResource(target) {
@@ -13,5 +13,4 @@ function resolveAcpxSessionResource(target) {
13
13
  if (encodedOwner) return sessionKey;
14
14
  return `openclaw-owner-v1-${createHash("sha256").update(JSON.stringify([agentId, sessionKey])).digest("hex")}`;
15
15
  }
16
- //#endregion
17
16
  export { session_resource_exports as n, resolveAcpxSessionResource as t };
@@ -1 +1 @@
1
- {"version":3,"entries":[{"output":"doctor-contract-api.js","source":"extensions/acpx/doctor-contract-api.ts"},{"output":"index.js","source":"extensions/acpx/index.ts"},{"output":"register.runtime.js","source":"extensions/acpx/register.runtime.ts"},{"output":"runtime-api.js","source":"extensions/acpx/runtime-api.ts"},{"output":"setup-api.js","source":"extensions/acpx/setup-api.ts"}],"chunks":[{"output":".setup/config-D0ATuiVJ.mjs","sha256":"c937e9c7986acc1a9b504365c5f3863677b7e42e4c312726cdeb0f4435969563","facadeSource":null,"sources":["extensions/acpx/src/codex-adapter.ts","extensions/acpx/src/command-line.ts","extensions/acpx/src/config-schema.ts","extensions/acpx/src/config.ts"]},{"output":".setup/harness-attempt-lu4_bMfd.mjs","sha256":"5104c8a9acdb9568195072bfea42e1c0456b606c190e530edf10b7f16202290a","facadeSource":"extensions/acpx/src/harness-attempt.ts","sources":["extensions/acpx/src/harness-attempt.ts"]},{"output":".setup/pi-session-catalog-runtime-BAM1pEMw.mjs","sha256":"dcf0ff56b95cc7d4d62dd7b12db72f673e8be23ba4c701cd6421960dc5eb8d25","facadeSource":"extensions/acpx/src/pi-session-catalog-runtime.ts","sources":["extensions/acpx/src/pi-session-catalog-runtime.ts","extensions/acpx/src/pi-session-catalog.ts","extensions/acpx/src/pi-session-store.ts","extensions/acpx/src/pi-session-upstream-activity.ts"]},{"output":".setup/pi-session-paths-CIvyk6KB.mjs","sha256":"29e58a9643c8f62ea7e77ddda041b9c2c203f99d6e51eb00a9447cf5fee6a8cc","facadeSource":null,"sources":["extensions/acpx/src/pi-session-catalog-shared.ts","extensions/acpx/src/pi-session-paths.ts"]},{"output":".setup/register.runtime-CdG6bROH.mjs","sha256":"a103da0745a3288a09fa504221a7e6aee0312f3f36471dfa35cd21332510f7e7","facadeSource":null,"sources":["extensions/acpx/register.runtime.ts","extensions/acpx/src/runtime-proxy.ts"]},{"output":".setup/runtime-doctor-migrations-hxP-CXX7.mjs","sha256":"5e20ed323f11ae0bd7d3a940409f89b15f676828463579f8ea705f5153368d1f","facadeSource":null,"sources":["packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":".setup/service-5eVJSjDE.mjs","sha256":"fb8c8a72255df4b0cb5091c54705e2f8a8c540d7881575d981cf84120526c3bc","facadeSource":"extensions/acpx/src/service.ts","sources":["extensions/acpx/src/adapter-wrapper-script.ts","extensions/acpx/src/codex-auth-bridge.ts","extensions/acpx/src/codex-trust-config.ts","extensions/acpx/src/model-ref.ts","extensions/acpx/src/process-reaper.ts","extensions/acpx/src/runtime-generations.ts","extensions/acpx/src/runtime-probe.ts","extensions/acpx/src/runtime-process-cleanup.ts","extensions/acpx/src/runtime-session-store.ts","extensions/acpx/src/runtime.ts","extensions/acpx/src/service.ts","extensions/acpx/src/session-owner.ts"]},{"output":".setup/session-owner-migration-duvwZfxk.mjs","sha256":"58ec74a753d1bcef16e8b4127f90854828616b5b2efcf677621b0100c5f67991","facadeSource":"extensions/acpx/src/session-owner-migration.ts","sources":["extensions/acpx/src/process-lease.ts","extensions/acpx/src/session-owner-migration.ts","extensions/acpx/src/state.ts"]},{"output":".setup/session-resource-DKJsUJPu.mjs","sha256":"b29b11d6b86315991f661aac189de3900aee37f705350de75bb3e86730b171cc","facadeSource":null,"sources":["extensions/acpx/src/session-resource.ts"]},{"output":"doctor-contract-api.js","sha256":"054b73df6d340a0c851ac63e99831d6bcf17549281496bc250830cd95f1aefdc","facadeSource":"extensions/acpx/doctor-contract-api.ts","sources":["extensions/acpx/doctor-contract-api.ts"]},{"output":"index.js","sha256":"2b17234312e82e30943d95934c1fc57f316349bee99cdb598d957108a3b23721","facadeSource":"extensions/acpx/index.ts","sources":["extensions/acpx/index.ts","extensions/acpx/src/harness.ts","extensions/acpx/src/native-agents.ts","extensions/acpx/src/pi-session-catalog-plugin.ts"]},{"output":"register.runtime.js","sha256":"49d67580efe2403b39ccb7abb0c60bd72fa4fa9cf8085cc61fee9cf99698d9f1","facadeSource":"extensions/acpx/register.runtime.ts","sources":[]},{"output":"runtime-api.js","sha256":"fc9734d9dfabafe7281fca6ede1415215a44ac03bd0aa798fce919d11ae68605","facadeSource":"extensions/acpx/runtime-api.ts","sources":[]},{"output":"setup-api.js","sha256":"325620704c2d29397d30e6df9e239a8390e0372a3e6ab4c9c2b29182173a6af8","facadeSource":"extensions/acpx/setup-api.ts","sources":["extensions/acpx/setup-api.ts"]}],"unrenderedSources":["extensions/acpx/runtime-api.ts"]}
1
+ {"version":3,"entries":[{"output":"doctor-contract-api.js","source":"extensions/acpx/doctor-contract-api.ts"},{"output":"index.js","source":"extensions/acpx/index.ts"},{"output":"register.runtime.js","source":"extensions/acpx/register.runtime.ts"},{"output":"runtime-api.js","source":"extensions/acpx/runtime-api.ts"},{"output":"setup-api.js","source":"extensions/acpx/setup-api.ts"}],"chunks":[{"output":".setup/config-CE-ej7LM.mjs","sha256":"24aa07079f114e9acdbbfdbe03577f13f46cd1f649596cf9873e0ac1a41aaa1d","facadeSource":null,"sources":["extensions/acpx/src/codex-adapter.ts","extensions/acpx/src/command-line.ts","extensions/acpx/src/config-schema.ts","extensions/acpx/src/config.ts"]},{"output":".setup/harness-attempt-Bgcm-zBR.mjs","sha256":"0a5ba2c691385969d3888be9d17579234f42576f317d734f0eee11c014f12dfa","facadeSource":"extensions/acpx/src/harness-attempt.ts","sources":["extensions/acpx/src/harness-attempt.ts"]},{"output":".setup/pi-session-catalog-runtime-Cdf46b05.mjs","sha256":"adc84d40792189b528b26dcfe1fae66b632345639e20e222f566f5efa5c38599","facadeSource":"extensions/acpx/src/pi-session-catalog-runtime.ts","sources":["extensions/acpx/src/pi-session-catalog-runtime.ts","extensions/acpx/src/pi-session-catalog.ts","extensions/acpx/src/pi-session-store.ts","extensions/acpx/src/pi-session-upstream-activity.ts"]},{"output":".setup/pi-session-paths-Co5515li.mjs","sha256":"5a1b1204e4ad3d63cbe0d4f8742aac8d59408d90ebf28bdd4c30465600047095","facadeSource":null,"sources":["extensions/acpx/src/pi-session-catalog-shared.ts","extensions/acpx/src/pi-session-paths.ts"]},{"output":".setup/register.runtime-CSJY10FS.mjs","sha256":"a4d8184bb6c1f3708eb2806f18b18cbac9fd45473d6585b7aa745dc371e52103","facadeSource":null,"sources":["extensions/acpx/register.runtime.ts","extensions/acpx/src/runtime-proxy.ts"]},{"output":".setup/runtime-doctor-migrations-CSvRANPN.mjs","sha256":"0f9941caf2101d12539e47fd11f7da27fd330dd82bf8e80cdc11d8fd81ae2c6f","facadeSource":null,"sources":["packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":".setup/service-Dr8U5n0S.mjs","sha256":"b4c35e3b39492f9bad1976f2a2f6acd0bd32c84744d2d01d8f7c9382759d09f1","facadeSource":"extensions/acpx/src/service.ts","sources":["extensions/acpx/src/adapter-wrapper-script.ts","extensions/acpx/src/codex-auth-bridge.ts","extensions/acpx/src/codex-trust-config.ts","extensions/acpx/src/model-ref.ts","extensions/acpx/src/process-reaper.ts","extensions/acpx/src/runtime-generations.ts","extensions/acpx/src/runtime-probe.ts","extensions/acpx/src/runtime-process-cleanup.ts","extensions/acpx/src/runtime-session-store.ts","extensions/acpx/src/runtime.ts","extensions/acpx/src/service.ts","extensions/acpx/src/session-owner.ts"]},{"output":".setup/session-owner-migration-WmiXoSmh.mjs","sha256":"feb128d86e750cc629f69f5c6fa14693ade9fa460a49dd8d4d182062212c5b97","facadeSource":"extensions/acpx/src/session-owner-migration.ts","sources":["extensions/acpx/src/process-lease.ts","extensions/acpx/src/session-owner-migration.ts","extensions/acpx/src/state.ts"]},{"output":".setup/session-resource-Cv-RAA6y.mjs","sha256":"8205fcb304c39a18d6f62ca4951d5f42effbdafdbc4e1879a274f8f3c146d430","facadeSource":null,"sources":["extensions/acpx/src/session-resource.ts"]},{"output":"doctor-contract-api.js","sha256":"a5eef7a90bdd5f1a58d860ff7da462729877e727765639b42fe6fe31241495f0","facadeSource":"extensions/acpx/doctor-contract-api.ts","sources":["extensions/acpx/doctor-contract-api.ts"]},{"output":"index.js","sha256":"f47103edd1ddeabb6aecdc06d3f2eb7320828b7bb55e942888d0c37275dc306f","facadeSource":"extensions/acpx/index.ts","sources":["extensions/acpx/index.ts","extensions/acpx/src/harness.ts","extensions/acpx/src/native-agents.ts","extensions/acpx/src/pi-session-catalog-plugin.ts"]},{"output":"register.runtime.js","sha256":"fe4127f83736be5be9c15e00e90d82477ca1404237262445b4d3473f900528a9","facadeSource":"extensions/acpx/register.runtime.ts","sources":[]},{"output":"runtime-api.js","sha256":"fc9734d9dfabafe7281fca6ede1415215a44ac03bd0aa798fce919d11ae68605","facadeSource":"extensions/acpx/runtime-api.ts","sources":[]},{"output":"setup-api.js","sha256":"8251d1074687501cbbb6aee52f51d74113118f5c93570733c3a2544f9beeac31","facadeSource":"extensions/acpx/setup-api.ts","sources":["extensions/acpx/setup-api.ts"]}],"unrenderedSources":["extensions/acpx/runtime-api.ts"]}
@@ -1,5 +1,5 @@
1
- import { t as runtime_doctor_migrations_exports } from "./.setup/runtime-doctor-migrations-hxP-CXX7.mjs";
2
- //#region extensions/acpx/doctor-contract-api.ts
1
+ import { t as runtime_doctor_migrations_exports } from "./.setup/runtime-doctor-migrations-CSvRANPN.mjs";
2
+ // extensions/acpx/doctor-contract-api.ts
3
3
  const ACPX_CONFIG_PATH = [
4
4
  "plugins",
5
5
  "entries",
@@ -40,14 +40,13 @@ const stateMigrations = [{
40
40
  doctorOnly: true,
41
41
  phase: "after-session-repair",
42
42
  async collectBackupResources(input) {
43
- return (await import("./.setup/session-owner-migration-duvwZfxk.mjs")).acpxSessionOwnerMigration.collectBackupResources(input);
43
+ return (await import("./.setup/session-owner-migration-WmiXoSmh.mjs")).acpxSessionOwnerMigration.collectBackupResources(input);
44
44
  },
45
45
  async detectLegacyState(input) {
46
- return (await import("./.setup/session-owner-migration-duvwZfxk.mjs")).acpxSessionOwnerMigration.detectLegacyState(input);
46
+ return (await import("./.setup/session-owner-migration-WmiXoSmh.mjs")).acpxSessionOwnerMigration.detectLegacyState(input);
47
47
  },
48
48
  async migrateLegacyState(input) {
49
- return (await import("./.setup/session-owner-migration-duvwZfxk.mjs")).acpxSessionOwnerMigration.migrateLegacyState(input);
49
+ return (await import("./.setup/session-owner-migration-WmiXoSmh.mjs")).acpxSessionOwnerMigration.migrateLegacyState(input);
50
50
  }
51
51
  }];
52
- //#endregion
53
52
  export { legacyConfigRules, normalizeCompatibilityConfig, stateMigrations };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { t as createAcpxRuntimeService } from "./.setup/register.runtime-CdG6bROH.mjs";
2
- import { g as AcpxNativeAgentsSchema, h as ACPX_NATIVE_AGENT_IDS, t as resolveAcpxPluginConfig } from "./.setup/config-D0ATuiVJ.mjs";
3
- import { a as PI_SESSIONS_CAPABILITY, c as PI_SESSION_READ_COMMAND, l as PI_TERMINAL_RESUME_COMMAND, o as PI_SESSIONS_LIST_COMMAND, r as piSessionStoreAvailable, s as PI_SESSION_ID_PATTERN } from "./.setup/pi-session-paths-CIvyk6KB.mjs";
1
+ import { t as createAcpxRuntimeService } from "./.setup/register.runtime-CSJY10FS.mjs";
2
+ import { g as AcpxNativeAgentsSchema, h as ACPX_NATIVE_AGENT_IDS, t as resolveAcpxPluginConfig } from "./.setup/config-CE-ej7LM.mjs";
3
+ import { a as PI_SESSIONS_CAPABILITY, c as PI_SESSION_READ_COMMAND, l as PI_TERMINAL_RESUME_COMMAND, o as PI_SESSIONS_LIST_COMMAND, r as piSessionStoreAvailable, s as PI_SESSION_ID_PATTERN } from "./.setup/pi-session-paths-Co5515li.mjs";
4
4
  import { createAgentRegistry } from "acpx/agent-registry";
5
5
  import { tryDispatchAcpReplyHook } from "openclaw/plugin-sdk/acp-runtime-backend";
6
6
  import { createLazyRuntimeModule, createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
@@ -8,7 +8,7 @@ import { finiteSecondsToTimerSafeMilliseconds } from "openclaw/plugin-sdk/number
8
8
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { resolveNodeHostExecutable } from "openclaw/plugin-sdk/node-host";
10
10
  import { createSessionCatalogNodeHostBindings } from "openclaw/plugin-sdk/session-catalog";
11
- //#region extensions/acpx/src/native-agents.ts
11
+ // extensions/acpx/src/native-agents.ts
12
12
  function isAcpxNativeAgentEnabled(flags, agent) {
13
13
  return AcpxNativeAgentsSchema.parse(flags)?.[agent] !== false;
14
14
  }
@@ -25,8 +25,7 @@ function listAcpxNativeAgents(rawConfig, agents) {
25
25
  enabled: enabled?.[agent.id] !== false
26
26
  }));
27
27
  }
28
- //#endregion
29
- //#region extensions/acpx/src/harness.ts
28
+ // extensions/acpx/src/harness.ts
30
29
  const LOCAL_TOOL_REQUIREMENTS = [
31
30
  "ls",
32
31
  "read",
@@ -204,7 +203,7 @@ function createAcpAgentHarness(params) {
204
203
  if (inspection?.launch.kind !== "installed") throw new Error(`${params.label} is not installed; refresh the model catalog`);
205
204
  const runtime = await runtimeFor(input.workspaceDir);
206
205
  generation.signal.throwIfAborted();
207
- const { runAcpHarnessAttempt } = await import("./.setup/harness-attempt-lu4_bMfd.mjs");
206
+ const { runAcpHarnessAttempt } = await import("./.setup/harness-attempt-Bgcm-zBR.mjs");
208
207
  return await runAcpHarnessAttempt({
209
208
  input,
210
209
  runtime,
@@ -244,9 +243,8 @@ function createAcpAgentHarness(params) {
244
243
  }
245
244
  };
246
245
  }
247
- //#endregion
248
- //#region extensions/acpx/src/pi-session-catalog-plugin.ts
249
- const loadPiSessionCatalogModule = createLazyRuntimeModule(() => import("./.setup/pi-session-catalog-runtime-BAM1pEMw.mjs"));
246
+ // extensions/acpx/src/pi-session-catalog-plugin.ts
247
+ const loadPiSessionCatalogModule = createLazyRuntimeModule(() => import("./.setup/pi-session-catalog-runtime-Cdf46b05.mjs"));
250
248
  function fullConfigCatalogEnabled(config) {
251
249
  if (!isRecord(config) || !isRecord(config.plugins) || !isRecord(config.plugins.entries)) return true;
252
250
  const entry = config.plugins.entries.acpx;
@@ -308,8 +306,7 @@ function registerPiSessionCatalog(api) {
308
306
  for (const command of nodeHost.commands) api.registerNodeHostCommand(command);
309
307
  for (const policy of nodeHost.policies) api.registerNodeInvokePolicy(policy);
310
308
  }
311
- //#endregion
312
- //#region extensions/acpx/index.ts
309
+ // extensions/acpx/index.ts
313
310
  /**
314
311
  * ACPX runtime plugin entry. It registers the embedded ACP backend service and
315
312
  * wires reply-dispatch hooks into the plugin SDK runtime.
@@ -366,5 +363,4 @@ const plugin = {
366
363
  api.on("reply_dispatch", tryDispatchAcpReplyHook, { eligibleDispatchKinds: ["acp"] });
367
364
  }
368
365
  };
369
- //#endregion
370
366
  export { plugin as default };
@@ -1 +1 @@
1
- export { t as createAcpxRuntimeService } from "./.setup/register.runtime-CdG6bROH.mjs";
1
+ export { t as createAcpxRuntimeService } from "./.setup/register.runtime-CSJY10FS.mjs";
package/dist/setup-api.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
2
2
  import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
3
- //#region extensions/acpx/setup-api.ts
3
+ // extensions/acpx/setup-api.ts
4
4
  /**
5
5
  * ACPX setup plugin entry. It auto-enables setup when ACP config already points
6
6
  * at the embedded ACPX runtime backend.
@@ -16,5 +16,4 @@ var setup_api_default = definePluginEntry({
16
16
  });
17
17
  }
18
18
  });
19
- //#endregion
20
19
  export { setup_api_default as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/acpx",
3
- "version": "2026.10.10-beta.4",
3
+ "version": "2026.10.10",
4
4
  "description": "OpenClaw ACP runtime backend with plugin-owned session and transport management.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "type": "module",
10
10
  "dependencies": {
11
- "@agentclientprotocol/claude-agent-acp": "0.86.0",
11
+ "@agentclientprotocol/claude-agent-acp": "0.95.0",
12
12
  "@agentclientprotocol/codex-acp": "2.1.1",
13
13
  "@openclaw/fs-safe": "0.26.5",
14
14
  "acpx": "0.19.4",
@@ -45,10 +45,10 @@
45
45
  ]
46
46
  },
47
47
  "compat": {
48
- "pluginApi": ">=2026.10.10-beta.4"
48
+ "pluginApi": ">=2026.10.10"
49
49
  },
50
50
  "build": {
51
- "openclawVersion": "2026.10.10-beta.4"
51
+ "openclawVersion": "2026.10.10"
52
52
  },
53
53
  "release": {
54
54
  "publishToClawHub": true,
@@ -68,7 +68,7 @@
68
68
  "skills/**"
69
69
  ],
70
70
  "peerDependencies": {
71
- "openclaw": ">=2026.10.10-beta.4"
71
+ "openclaw": ">=2026.10.10"
72
72
  },
73
73
  "peerDependenciesMeta": {
74
74
  "openclaw": {