@openclaw/acpx 2026.10.10 → 2026.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -52,7 +52,7 @@ function createLazyAcpRuntimeProxy(resolveRuntime) {
52
52
  * immediately, then imports the heavier service only when a session needs it.
53
53
  */
54
54
  const ACPX_BACKEND_ID = "acpx";
55
- const loadServiceModule = createLazyRuntimeModule(() => import("./service-Dr8U5n0S.mjs"));
55
+ const loadServiceModule = createLazyRuntimeModule(() => import("./service-ChAbEe-N.mjs"));
56
56
  function unregisterOwnedRuntime(runtime) {
57
57
  if (runtime && getAcpRuntimeBackend(ACPX_BACKEND_ID)?.runtime === runtime) unregisterAcpRuntimeBackend(ACPX_BACKEND_ID);
58
58
  }
@@ -1,7 +1,7 @@
1
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
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";
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-DNwxBa5P.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";
@@ -267,8 +267,8 @@ function matchesClaimRecord(claim, raw, oldId, resource, decode) {
267
267
  }
268
268
  async function migrateRecord(input, directory, oldId, claims, changes, warnings) {
269
269
  const sourcePath = recordPath(directory, oldId);
270
- const sourceBytes = await fs.readFile(sourcePath, "utf8");
271
- const raw = (0, runtime_doctor_migrations_exports.asObjectRecord)(JSON.parse(sourceBytes));
270
+ const sourceBytes = await fs.readFile(sourcePath);
271
+ const raw = (0, runtime_doctor_migrations_exports.asObjectRecord)(JSON.parse((0, runtime_doctor_migrations_exports.decodeUtf8Input)(sourceBytes, `ACP record ${sourcePath}`)));
272
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");
273
273
  requireStoppedPid(raw.pid);
274
274
  const { resolveAcpxSessionResource } = await import("./session-resource-Cv-RAA6y.mjs").then((n) => n.n);
@@ -321,13 +321,13 @@ async function migrateRecord(input, directory, oldId, claims, changes, warnings)
321
321
  acpxRecordId: resource,
322
322
  name: resource
323
323
  })) throw new Error("rekey would alter interpreted history/event references; source retained");
324
- const existing = await fs.readFile(destinationPath, "utf8").catch((error) => {
324
+ const existing = await fs.readFile(destinationPath).catch((error) => {
325
325
  if ((0, runtime_doctor_migrations_exports.asObjectRecord)(error)?.code === "ENOENT") return;
326
326
  throw error;
327
327
  });
328
328
  const originalLocator = decodeAcpxRuntimeHandleState(claim.meta.runtimeSessionName);
329
329
  if (!oneshot && originalLocator.name === resource && existing === void 0) throw new Error("migrated metadata has no published destination; source retained");
330
- if (existing !== void 0 && !isDeepStrictEqual(JSON.parse(existing), candidate)) throw new Error("destination conflicts; no files were overwritten");
330
+ if (existing !== void 0 && !isDeepStrictEqual(JSON.parse((0, runtime_doctor_migrations_exports.decodeUtf8Input)(existing, `ACP record ${destinationPath}`)), candidate)) throw new Error("destination conflicts; no files were overwritten");
331
331
  if (existing === void 0) await fs.link(temporaryPath, destinationPath);
332
332
  const publicationDirectory = await fs.open(directory, "r");
333
333
  try {
@@ -335,8 +335,8 @@ async function migrateRecord(input, directory, oldId, claims, changes, warnings)
335
335
  } finally {
336
336
  await publicationDirectory.close();
337
337
  }
338
- if (await fs.readFile(sourcePath, "utf8") !== sourceBytes) throw new Error("source changed during repair");
339
- if (!isDeepStrictEqual(JSON.parse(await fs.readFile(destinationPath, "utf8")), candidate)) throw new Error("destination changed during repair");
338
+ if (!(await fs.readFile(sourcePath)).equals(sourceBytes)) throw new Error("source changed during repair");
339
+ if (!isDeepStrictEqual(JSON.parse((0, runtime_doctor_migrations_exports.decodeUtf8Input)(await fs.readFile(destinationPath), `ACP record ${destinationPath}`)), candidate)) throw new Error("destination changed during repair");
340
340
  for (const { row } of matchingLeases) {
341
341
  if (!isDeepStrictEqual(await leaseStore.lookup(row.key), row.value)) throw new Error("lease changed during repair");
342
342
  await leaseStore.register(row.key, {
@@ -412,16 +412,19 @@ const acpxSessionOwnerMigration = {
412
412
  changes,
413
413
  warnings: [`ACP owner evidence is incomplete; all records retained: ${evidence.incomplete.join("; ")}`]
414
414
  };
415
+ let recoverableWarnings = 0;
415
416
  for (const oldId of ids) try {
416
417
  const current = await input.context.inspectAcpSessionClaims();
417
418
  if (current.incomplete.length) throw new Error("current ownership evidence became incomplete");
418
419
  await migrateRecord(input, directory, oldId, current.claims, changes, warnings);
419
420
  } catch (error) {
421
+ if (error instanceof runtime_doctor_migrations_exports.Utf8InputError) recoverableWarnings++;
420
422
  warnings.push(`ACP record ${oldId} retained: ${String(error)}`);
421
423
  }
422
424
  return {
423
425
  changes,
424
- warnings
426
+ warnings,
427
+ ...warnings.length > 0 && warnings.length === recoverableWarnings ? { warningDisposition: "recoverable" } : {}
425
428
  };
426
429
  }
427
430
  };
@@ -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-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
+ {"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-vh7Rwnmk.mjs","sha256":"12fbd0ff2f83dee8210b17eff5098b26ef5f542134cb51e242329485430ff73b","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-ChAbEe-N.mjs","sha256":"0cb4bcb51516d79da3e9021fc953dcb9b2a9f99b41cb736d2cc5ee89cb3cc95d","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-DNwxBa5P.mjs","sha256":"6345ef669b08b1d217e809dbeec0bc7fcc29ad09c0e4e573a4c01236183b20f3","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":"e554c4685c070e04028f8972d7afcc413b185a9a3e641ab978a9519f324e4981","facadeSource":"extensions/acpx/doctor-contract-api.ts","sources":["extensions/acpx/doctor-contract-api.ts"]},{"output":"index.js","sha256":"bf706b687675d07e7696515e532ec72b32bcce6325fef1141448e31553de36b1","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":"517ee3938ec98816c3dee8bd7392205834de693a64a810bb8240172d0847a9e4","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"]}
@@ -40,13 +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-WmiXoSmh.mjs")).acpxSessionOwnerMigration.collectBackupResources(input);
43
+ return (await import("./.setup/session-owner-migration-DNwxBa5P.mjs")).acpxSessionOwnerMigration.collectBackupResources(input);
44
44
  },
45
45
  async detectLegacyState(input) {
46
- return (await import("./.setup/session-owner-migration-WmiXoSmh.mjs")).acpxSessionOwnerMigration.detectLegacyState(input);
46
+ return (await import("./.setup/session-owner-migration-DNwxBa5P.mjs")).acpxSessionOwnerMigration.detectLegacyState(input);
47
47
  },
48
48
  async migrateLegacyState(input) {
49
- return (await import("./.setup/session-owner-migration-WmiXoSmh.mjs")).acpxSessionOwnerMigration.migrateLegacyState(input);
49
+ return (await import("./.setup/session-owner-migration-DNwxBa5P.mjs")).acpxSessionOwnerMigration.migrateLegacyState(input);
50
50
  }
51
51
  }];
52
52
  export { legacyConfigRules, normalizeCompatibilityConfig, stateMigrations };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as createAcpxRuntimeService } from "./.setup/register.runtime-CSJY10FS.mjs";
1
+ import { t as createAcpxRuntimeService } from "./.setup/register.runtime-vh7Rwnmk.mjs";
2
2
  import { g as AcpxNativeAgentsSchema, h as ACPX_NATIVE_AGENT_IDS, t as resolveAcpxPluginConfig } from "./.setup/config-CE-ej7LM.mjs";
3
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";
@@ -1 +1 @@
1
- export { t as createAcpxRuntimeService } from "./.setup/register.runtime-CSJY10FS.mjs";
1
+ export { t as createAcpxRuntimeService } from "./.setup/register.runtime-vh7Rwnmk.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/acpx",
3
- "version": "2026.10.10",
3
+ "version": "2026.11.1",
4
4
  "description": "OpenClaw ACP runtime backend with plugin-owned session and transport management.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -45,10 +45,10 @@
45
45
  ]
46
46
  },
47
47
  "compat": {
48
- "pluginApi": ">=2026.10.10"
48
+ "pluginApi": ">=2026.11.1"
49
49
  },
50
50
  "build": {
51
- "openclawVersion": "2026.10.10"
51
+ "openclawVersion": "2026.11.1"
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"
71
+ "openclaw": ">=2026.11.1"
72
72
  },
73
73
  "peerDependenciesMeta": {
74
74
  "openclaw": {