@openclaw/acpx 2026.9.2 → 2026.9.4

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.
@@ -1,4 +1,5 @@
1
1
  import { t as AcpxPluginConfigSchema } from "./config-schema-DN_uAi4R.js";
2
+ import { _ as splitCommandParts } from "./process-lease-B83BGiLj.js";
2
3
  import { createRequire } from "node:module";
3
4
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
4
5
  import fs from "node:fs";
@@ -57,21 +58,6 @@ function resolveAcpxPluginRoot(moduleUrl = import.meta.url) {
57
58
  }
58
59
  const DEFAULT_PERMISSION_MODE = "approve-reads";
59
60
  const DEFAULT_NON_INTERACTIVE_POLICY = "fail";
60
- function parseAcpxPluginConfig(value) {
61
- if (value === void 0) return {
62
- ok: true,
63
- value: void 0
64
- };
65
- const parsed = AcpxPluginConfigSchema.safeParse(value);
66
- if (!parsed.success) return {
67
- ok: false,
68
- message: formatPluginConfigIssue(parsed.error.issues[0])
69
- };
70
- return {
71
- ok: true,
72
- value: parsed.data
73
- };
74
- }
75
61
  function resolveOpenClawRoot(currentRoot) {
76
62
  if (path.basename(currentRoot) === "acpx" && path.basename(path.dirname(currentRoot)) === "extensions") {
77
63
  const parent = path.dirname(path.dirname(currentRoot));
@@ -87,35 +73,14 @@ function resolveTsxImportSpecifier() {
87
73
  return "tsx";
88
74
  }
89
75
  }
90
- function shellQuoteCommandArg(arg) {
91
- if (!/[\s'"\\$|&;<>{}()*?[\]~`]/.test(arg)) return arg;
92
- return `'${arg.replace(/'/g, "'\"'\"'")}'`;
93
- }
94
- function resolvePluginToolsMcpServerConfig(moduleUrl = import.meta.url) {
95
- const openClawRoot = resolveOpenClawRoot(resolveAcpxPluginRoot(moduleUrl));
96
- const distEntry = path.join(openClawRoot, "dist", "mcp", "plugin-tools-serve.js");
97
- if (fs.existsSync(distEntry)) return {
98
- command: process.execPath,
99
- args: [distEntry]
100
- };
101
- const sourceEntry = path.join(openClawRoot, "src", "mcp", "plugin-tools-serve.ts");
102
- return {
103
- command: process.execPath,
104
- args: [
105
- "--import",
106
- resolveTsxImportSpecifier(),
107
- sourceEntry
108
- ]
109
- };
110
- }
111
- function resolveOpenClawToolsMcpServerConfig(moduleUrl = import.meta.url) {
76
+ function resolveManagedToolsMcpServerConfig(entryPoint, moduleUrl = import.meta.url) {
112
77
  const openClawRoot = resolveOpenClawRoot(resolveAcpxPluginRoot(moduleUrl));
113
- const distEntry = path.join(openClawRoot, "dist", "mcp", "openclaw-tools-serve.js");
78
+ const distEntry = path.join(openClawRoot, "dist", "mcp", `${entryPoint}.js`);
114
79
  if (fs.existsSync(distEntry)) return {
115
80
  command: process.execPath,
116
81
  args: [distEntry]
117
82
  };
118
- const sourceEntry = path.join(openClawRoot, "src", "mcp", "openclaw-tools-serve.ts");
83
+ const sourceEntry = path.join(openClawRoot, "src", "mcp", `${entryPoint}.ts`);
119
84
  return {
120
85
  command: process.execPath,
121
86
  args: [
@@ -129,8 +94,8 @@ function resolveConfiguredMcpServers(params) {
129
94
  const resolved = { ...params.mcpServers };
130
95
  if (params.pluginToolsMcpBridge && resolved[ACPX_PLUGIN_TOOLS_MCP_SERVER_NAME]) throw new Error(`mcpServers.${ACPX_PLUGIN_TOOLS_MCP_SERVER_NAME} is reserved when pluginToolsMcpBridge=true`);
131
96
  if (params.openClawToolsMcpBridge && resolved[ACPX_OPENCLAW_TOOLS_MCP_SERVER_NAME]) throw new Error(`mcpServers.${ACPX_OPENCLAW_TOOLS_MCP_SERVER_NAME} is reserved when openClawToolsMcpBridge=true`);
132
- if (params.pluginToolsMcpBridge) resolved[ACPX_PLUGIN_TOOLS_MCP_SERVER_NAME] = resolvePluginToolsMcpServerConfig(params.moduleUrl);
133
- if (params.openClawToolsMcpBridge) resolved[ACPX_OPENCLAW_TOOLS_MCP_SERVER_NAME] = resolveOpenClawToolsMcpServerConfig(params.moduleUrl);
97
+ if (params.pluginToolsMcpBridge) resolved[ACPX_PLUGIN_TOOLS_MCP_SERVER_NAME] = resolveManagedToolsMcpServerConfig("plugin-tools-serve", params.moduleUrl);
98
+ if (params.openClawToolsMcpBridge) resolved[ACPX_OPENCLAW_TOOLS_MCP_SERVER_NAME] = resolveManagedToolsMcpServerConfig("openclaw-tools-serve", params.moduleUrl);
134
99
  return resolved;
135
100
  }
136
101
  /** Convert OpenClaw MCP server config into ACPX runtime MCP server entries. */
@@ -147,12 +112,12 @@ function toAcpMcpServers(mcpServers) {
147
112
  }
148
113
  /** Validate and normalize raw ACPX plugin config for runtime startup. */
149
114
  function resolveAcpxPluginConfig(params) {
150
- const parsed = parseAcpxPluginConfig(params.rawConfig);
151
- if (!parsed.ok) throw new Error(parsed.message);
152
- const normalized = parsed.value ?? {};
115
+ const { rawConfig } = params;
116
+ const parsed = AcpxPluginConfigSchema.safeParse(rawConfig === void 0 ? {} : rawConfig);
117
+ if (!parsed.success) throw new Error(formatPluginConfigIssue(parsed.error.issues[0]));
118
+ const normalized = parsed.data;
153
119
  const workspaceDir = params.workspaceDir?.trim() || process.cwd();
154
- const fallbackCwd = workspaceDir;
155
- const cwd = path.resolve(normalized.cwd?.trim() || fallbackCwd);
120
+ const cwd = path.resolve(normalized.cwd?.trim() || workspaceDir);
156
121
  const stateDir = path.resolve(normalized.stateDir?.trim() || path.join(workspaceDir, "state"));
157
122
  const pluginToolsMcpBridge = normalized.pluginToolsMcpBridge === true;
158
123
  const openClawToolsMcpBridge = normalized.openClawToolsMcpBridge === true;
@@ -164,9 +129,8 @@ function resolveAcpxPluginConfig(params) {
164
129
  });
165
130
  const agents = Object.fromEntries(Object.entries(normalized.agents ?? {}).map(([name, entry]) => {
166
131
  const cmd = entry.command.trim();
167
- const cmdArgs = entry.args ?? [];
168
- const fullCommand = cmdArgs.length > 0 ? `${cmd} ${cmdArgs.map(shellQuoteCommandArg).join(" ")}` : cmd;
169
- return [normalizeLowercaseStringOrEmpty(name), fullCommand];
132
+ const command = path.isAbsolute(cmd) && fs.existsSync(cmd) ? [cmd] : splitCommandParts(cmd);
133
+ return [normalizeLowercaseStringOrEmpty(name), [...command, ...entry.args ?? []]];
170
134
  }));
171
135
  return {
172
136
  cwd,
@@ -176,10 +140,10 @@ function resolveAcpxPluginConfig(params) {
176
140
  nonInteractivePermissions: normalized.nonInteractivePermissions ?? DEFAULT_NON_INTERACTIVE_POLICY,
177
141
  pluginToolsMcpBridge,
178
142
  openClawToolsMcpBridge,
179
- timeoutSeconds: normalized.timeoutSeconds ?? 120,
143
+ timeoutSeconds: normalized.timeoutSeconds,
180
144
  mcpServers,
181
145
  agents
182
146
  };
183
147
  }
184
148
  //#endregion
185
- export { resolveAcpxPluginRoot as n, toAcpMcpServers as r, resolveAcpxPluginConfig as t };
149
+ export { toAcpMcpServers as i, resolveAcpxPluginRoot as n, resolveOpenClawRoot as r, resolveAcpxPluginConfig as t };
@@ -1,4 +1,4 @@
1
- import { c as normalizeAcpxProcessLeaseFile, f as ACPX_GATEWAY_INSTANCE_KEY, g as normalizeAcpxGatewayInstanceRecord, h as ACPX_LEGACY_PROCESS_LEASE_FILE, l as openAcpxProcessLeaseStateStore, m as ACPX_LEGACY_GATEWAY_INSTANCE_FILE, p as ACPX_GATEWAY_INSTANCE_NAMESPACE, s as normalizeAcpxProcessLease } from "./process-lease-Cwvj7WGe.js";
1
+ import { c as openAcpxProcessLeaseStateStore, d as ACPX_GATEWAY_INSTANCE_KEY, f as ACPX_GATEWAY_INSTANCE_NAMESPACE, h as normalizeAcpxGatewayInstanceRecord, m as ACPX_LEGACY_PROCESS_LEASE_FILE, o as normalizeAcpxProcessLease, p as ACPX_LEGACY_GATEWAY_INSTANCE_FILE, s as normalizeAcpxProcessLeaseFile } from "./process-lease-B83BGiLj.js";
2
2
  import path from "node:path";
3
3
  import fs from "node:fs/promises";
4
4
  import { archiveLegacyStateSource, asObjectRecord } from "openclaw/plugin-sdk/runtime-doctor-migrations";
@@ -137,10 +137,10 @@ const stateMigrations = [{
137
137
  doctorOnly: true,
138
138
  phase: "after-session-repair",
139
139
  async detectLegacyState(input) {
140
- return (await import("./session-owner-migration-CistlQKM.js")).acpxSessionOwnerMigration.detectLegacyState(input);
140
+ return (await import("./session-owner-migration-D36AH9RC.js")).acpxSessionOwnerMigration.detectLegacyState(input);
141
141
  },
142
142
  async migrateLegacyState(input) {
143
- return (await import("./session-owner-migration-CistlQKM.js")).acpxSessionOwnerMigration.migrateLegacyState(input);
143
+ return (await import("./session-owner-migration-D36AH9RC.js")).acpxSessionOwnerMigration.migrateLegacyState(input);
144
144
  }
145
145
  }];
146
146
  //#endregion
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as createAcpxRuntimeService } from "./register.runtime-Ba7FPMGu.js";
1
+ import { t as createAcpxRuntimeService } from "./register.runtime-CksaMeEx.js";
2
2
  import "./config-schema-DN_uAi4R.js";
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 "./pi-session-paths-EMbd4Hkz.js";
4
4
  import { tryDispatchAcpReplyHook } from "openclaw/plugin-sdk/acp-runtime-backend";
@@ -8,7 +8,7 @@ import { resolveNodeHostExecutable } from "openclaw/plugin-sdk/node-host";
8
8
  import { createSessionCatalogNodeHostBindings } from "openclaw/plugin-sdk/session-catalog";
9
9
  import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
10
10
  //#region extensions/acpx/src/pi-session-catalog-plugin.ts
11
- const loadPiSessionCatalogModule = createLazyRuntimeModule(() => import("./pi-session-catalog-runtime-C0HodUWT.js"));
11
+ const loadPiSessionCatalogModule = createLazyRuntimeModule(() => import("./pi-session-catalog-runtime-BrPX6xQV.js"));
12
12
  function fullConfigCatalogEnabled(config) {
13
13
  if (!isRecord(config) || !isRecord(config.plugins) || !isRecord(config.plugins.entries)) return true;
14
14
  const entry = config.plugins.entries.acpx;
@@ -1,7 +1,7 @@
1
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-EMbd4Hkz.js";
2
2
  import { parseDateFirstTimestampMs } from "openclaw/plugin-sdk/number-runtime";
3
3
  import { resolveNodeHostExecutable } from "openclaw/plugin-sdk/node-host";
4
- import { createSessionCatalogFamily, importSessionCatalogHistory, isExternalUserText, listAdoptedSessionCatalogSessions, sessionCatalogAdoptedSessionKey, sessionCatalogPaging } from "openclaw/plugin-sdk/session-catalog";
4
+ import { createSessionCatalogFamily, importSessionCatalogHistory, isExternalUserText, listAdoptedSessionCatalogSessions, sessionCatalogAdoptedSessionKey } from "openclaw/plugin-sdk/session-catalog";
5
5
  import { isRecord, normalizeBoundedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { createReadStream } from "node:fs";
7
7
  import path from "node:path";
@@ -9,9 +9,10 @@ import fs$1 from "node:fs/promises";
9
9
  import process from "node:process";
10
10
  import { resolveAcpSessionAvailability } from "openclaw/plugin-sdk/acp-runtime";
11
11
  import { resolveSessionAgentIdsStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
12
+ import { sessionCatalogPaging } from "openclaw/plugin-sdk/session-catalog-paging";
12
13
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
13
14
  import { runTasksWithConcurrency } from "openclaw/plugin-sdk/concurrency-runtime";
14
- import { isPathStrictlyInside } from "openclaw/plugin-sdk/file-access-runtime";
15
+ import { isPathStrictlyInside, readFileRangeAsync } from "openclaw/plugin-sdk/file-access-runtime";
15
16
  //#region extensions/acpx/src/pi-session-timestamp.ts
16
17
  /** Preserve Pi JSONL's date-first string contract while accepting numeric millisecond values. */
17
18
  function parsePiSessionTimestampMs(value) {
@@ -586,16 +587,6 @@ async function readLocalPiTranscriptPage(value) {
586
587
  //#endregion
587
588
  //#region extensions/acpx/src/pi-session-upstream-activity.ts
588
589
  const MAX_PI_UPSTREAM_SCAN_BYTES = 1048576;
589
- async function readFileRange(handle, position, length) {
590
- const buffer = Buffer.alloc(length);
591
- let offset = 0;
592
- while (offset < length) {
593
- const { bytesRead } = await handle.read(buffer, offset, length - offset, position + offset);
594
- if (bytesRead <= 0) break;
595
- offset += bytesRead;
596
- }
597
- return offset === length ? buffer : buffer.subarray(0, offset);
598
- }
599
590
  function parseCompletePiRows(tail) {
600
591
  const entries = [];
601
592
  let lineStart = 0;
@@ -666,7 +657,7 @@ async function checkPiSessionUpstreamActivity(probe) {
666
657
  };
667
658
  if (stat.size <= markerOffset) return;
668
659
  const readLength = Math.min(stat.size - markerOffset, MAX_PI_UPSTREAM_SCAN_BYTES);
669
- const { entries, classifiedBytes } = parseCompletePiRows(await readFileRange(handle, markerOffset, readLength));
660
+ const { entries, classifiedBytes } = parseCompletePiRows(await readFileRangeAsync(handle, markerOffset, readLength));
670
661
  if (classifiedBytes === 0) return;
671
662
  let humanTurns = 0;
672
663
  let occurredAt;
@@ -879,6 +870,7 @@ function createPiSessionCatalogRuntime(api) {
879
870
  },
880
871
  terminal: {
881
872
  executable: "pi",
873
+ uploadPathStyle: "native",
882
874
  args: (threadId) => ["--session", threadId],
883
875
  title: (threadId) => `pi --session ${threadId.slice(0, 12)}…`,
884
876
  requireLocalSession: requireLocalPiSession,
@@ -1,29 +1,38 @@
1
- import { createHash, randomUUID } from "node:crypto";
1
+ import { createHash } from "node:crypto";
2
2
  //#region extensions/acpx/src/command-line.ts
3
- /**
4
- * Small shell-command helpers for ACPX-launched processes. Splitting supports
5
- * simple quoted command strings from config without invoking a shell parser.
6
- */
7
- /** Quote one command argument for display or config serialization. */
8
- function quoteCommandPart(value) {
9
- return JSON.stringify(value);
3
+ /** Match ACPX's persisted argv identity; scalar records keep their original bytes. */
4
+ function renderAgentCommand(command) {
5
+ return typeof command === "string" ? command : command.map((part) => /^[A-Za-z0-9_@%+=:,./^~-]+$/.test(part) ? part : JSON.stringify(part)).join(" ");
10
6
  }
11
7
  /** Split a command string into argv-like parts using simple quote/backslash rules. */
12
8
  function splitCommandParts(value) {
9
+ if (Array.isArray(value)) return value;
10
+ const windows = process.platform === "win32";
13
11
  const parts = [];
14
12
  let current = "";
15
13
  let quote = null;
16
14
  let escaping = false;
15
+ let hasPart = false;
17
16
  for (const ch of value) {
18
17
  if (escaping) {
19
18
  current += ch;
20
19
  escaping = false;
20
+ hasPart = true;
21
21
  continue;
22
22
  }
23
- if (ch === "\\" && quote !== "'") {
23
+ if (ch === "\\" && quote !== "'" && !windows) {
24
24
  escaping = true;
25
+ hasPart = true;
25
26
  continue;
26
27
  }
28
+ if (windows && ch === "\"" && quote !== "'") {
29
+ const backslashes = current.match(/\\+$/)?.[0].length ?? 0;
30
+ current = current.slice(0, current.length - backslashes) + "\\".repeat(Math.floor(backslashes / 2));
31
+ if (backslashes % 2 === 1) {
32
+ current += "\"";
33
+ continue;
34
+ }
35
+ }
27
36
  if (quote) {
28
37
  if (ch === quote) quote = null;
29
38
  else current += ch;
@@ -31,19 +40,23 @@ function splitCommandParts(value) {
31
40
  }
32
41
  if (ch === "'" || ch === "\"") {
33
42
  quote = ch;
43
+ hasPart = true;
34
44
  continue;
35
45
  }
36
46
  if (/\s/.test(ch)) {
37
- if (current) {
47
+ if (hasPart) {
38
48
  parts.push(current);
39
49
  current = "";
50
+ hasPart = false;
40
51
  }
41
52
  continue;
42
53
  }
43
54
  current += ch;
55
+ hasPart = true;
44
56
  }
45
57
  if (escaping) current += "\\";
46
- if (current) parts.push(current);
58
+ if (quote) throw new Error("Invalid agent command: unterminated quote");
59
+ if (hasPart) parts.push(current);
47
60
  return parts;
48
61
  }
49
62
  //#endregion
@@ -78,7 +91,7 @@ const OPENCLAW_GATEWAY_INSTANCE_ID_ARG = "--openclaw-gateway-instance-id";
78
91
  const ACPX_PROBE_LEASE_SESSION_KEY = "openclaw:acpx:probe";
79
92
  /** Read OpenClaw lease identity from a generated wrapper command. */
80
93
  function readAcpxProcessLeaseIdentity(command) {
81
- const parts = splitCommandParts(command?.trim() ?? "");
94
+ const parts = typeof command === "string" ? Array.from(command.matchAll(/(?:^|\s)(--openclaw-(?:acpx-lease-id|gateway-instance-id))\s+(?:"([^"]*)"|'([^']*)'|(\S+))(?=\s|$)/g)).flatMap((match) => [match[1], match[2] ?? match[3] ?? match[4]]) : command ?? [];
82
95
  const leaseIndex = parts.lastIndexOf(OPENCLAW_ACPX_LEASE_ID_ARG);
83
96
  const gatewayIndex = parts.lastIndexOf(OPENCLAW_GATEWAY_INSTANCE_ID_ARG);
84
97
  const leaseId = leaseIndex >= 0 ? parts[leaseIndex + 1]?.trim() : "";
@@ -167,29 +180,19 @@ function createAcpxProcessLeaseStore(params) {
167
180
  }
168
181
  };
169
182
  }
170
- /** Create a unique lease id for one ACPX wrapper process. */
171
- function createAcpxProcessLeaseId() {
172
- return randomUUID();
173
- }
174
183
  /** Hash a wrapper command so process leases can detect command drift. */
175
184
  function hashAcpxProcessCommand(command) {
176
- return createHash("sha256").update(command).digest("hex");
177
- }
178
- function quoteEnvValue(value) {
179
- return /^[A-Za-z0-9_./:=@+-]+$/.test(value) ? value : `'${value.replace(/'/g, "'\\''")}'`;
185
+ return createHash("sha256").update(renderAgentCommand(command)).digest("hex");
180
186
  }
181
- function appendAcpxLeaseArgs(params) {
187
+ /** Append portable wrapper arguments without changing the executable or argument bytes. */
188
+ function withAcpxLeaseArgs(params) {
182
189
  return [
183
- params.command,
190
+ ...splitCommandParts(params.command),
184
191
  OPENCLAW_ACPX_LEASE_ID_ARG,
185
- quoteEnvValue(params.leaseId),
192
+ params.leaseId,
186
193
  OPENCLAW_GATEWAY_INSTANCE_ID_ARG,
187
- quoteEnvValue(params.gatewayInstanceId)
188
- ].join(" ");
189
- }
190
- /** Add ACPX lease identity to a command through portable wrapper arguments. */
191
- function withAcpxLeaseEnvironment(params) {
192
- return appendAcpxLeaseArgs(params);
194
+ params.gatewayInstanceId
195
+ ];
193
196
  }
194
197
  //#endregion
195
- export { quoteCommandPart as _, createAcpxProcessLeaseStore as a, normalizeAcpxProcessLeaseFile as c, withAcpxLeaseEnvironment as d, ACPX_GATEWAY_INSTANCE_KEY as f, normalizeAcpxGatewayInstanceRecord as g, ACPX_LEGACY_PROCESS_LEASE_FILE as h, createAcpxProcessLeaseId as i, openAcpxProcessLeaseStateStore as l, ACPX_LEGACY_GATEWAY_INSTANCE_FILE as m, OPENCLAW_ACPX_LEASE_ID_ARG as n, hashAcpxProcessCommand as o, ACPX_GATEWAY_INSTANCE_NAMESPACE as p, OPENCLAW_GATEWAY_INSTANCE_ID_ARG as r, normalizeAcpxProcessLease as s, ACPX_PROBE_LEASE_SESSION_KEY as t, readAcpxProcessLeaseIdentity as u, splitCommandParts as v };
198
+ export { splitCommandParts as _, hashAcpxProcessCommand as a, openAcpxProcessLeaseStateStore as c, ACPX_GATEWAY_INSTANCE_KEY as d, ACPX_GATEWAY_INSTANCE_NAMESPACE as f, renderAgentCommand as g, normalizeAcpxGatewayInstanceRecord as h, createAcpxProcessLeaseStore as i, readAcpxProcessLeaseIdentity as l, ACPX_LEGACY_PROCESS_LEASE_FILE as m, OPENCLAW_ACPX_LEASE_ID_ARG as n, normalizeAcpxProcessLease as o, ACPX_LEGACY_GATEWAY_INSTANCE_FILE as p, OPENCLAW_GATEWAY_INSTANCE_ID_ARG as r, normalizeAcpxProcessLeaseFile as s, ACPX_PROBE_LEASE_SESSION_KEY as t, withAcpxLeaseArgs as u };
@@ -67,7 +67,7 @@ function createLazyAcpRuntimeProxy(resolveRuntime) {
67
67
  * immediately, then imports the heavier service only when a session needs it.
68
68
  */
69
69
  const ACPX_BACKEND_ID = "acpx";
70
- const loadServiceModule = createLazyRuntimeModule(() => import("./service-COMUTA5A.js").then((n) => n.t));
70
+ const loadServiceModule = createLazyRuntimeModule(() => import("./service-BAf6nuci.js").then((n) => n.t));
71
71
  function unregisterOwnedRuntime(runtime) {
72
72
  if (runtime && getAcpRuntimeBackend(ACPX_BACKEND_ID)?.runtime === runtime) unregisterAcpRuntimeBackend(ACPX_BACKEND_ID);
73
73
  }
@@ -1,2 +1,2 @@
1
- import { t as createAcpxRuntimeService } from "./register.runtime-Ba7FPMGu.js";
1
+ import { t as createAcpxRuntimeService } from "./register.runtime-CksaMeEx.js";
2
2
  export { createAcpxRuntimeService };