@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.
- package/dist/.setup/{config-D0ATuiVJ.mjs → config-CE-ej7LM.mjs} +4 -8
- package/dist/.setup/{harness-attempt-lu4_bMfd.mjs → harness-attempt-Bgcm-zBR.mjs} +1 -2
- package/dist/.setup/{pi-session-catalog-runtime-BAM1pEMw.mjs → pi-session-catalog-runtime-Cdf46b05.mjs} +5 -9
- package/dist/.setup/{pi-session-paths-CIvyk6KB.mjs → pi-session-paths-Co5515li.mjs} +2 -4
- package/dist/.setup/{register.runtime-CdG6bROH.mjs → register.runtime-CSJY10FS.mjs} +3 -5
- package/dist/.setup/{runtime-doctor-migrations-hxP-CXX7.mjs → runtime-doctor-migrations-CSvRANPN.mjs} +5 -10
- package/dist/.setup/{service-5eVJSjDE.mjs → service-Dr8U5n0S.mjs} +23 -32
- package/dist/.setup/{session-owner-migration-duvwZfxk.mjs → session-owner-migration-WmiXoSmh.mjs} +7 -10
- package/dist/.setup/{session-resource-DKJsUJPu.mjs → session-resource-Cv-RAA6y.mjs} +2 -3
- package/dist/.source-module-urls/78a9d561eb54d4bf1ca0db6e6d12bb5688647241f2c0b289c611a0effb44d715.json +1 -1
- package/dist/doctor-contract-api.js +5 -6
- package/dist/index.js +9 -13
- package/dist/register.runtime.js +1 -1
- package/dist/setup-api.js +1 -2
- package/package.json +5 -5
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
1907
|
+
const createBase = (overrides = {}) => new AcpxRuntime({
|
|
1918
1908
|
...options,
|
|
1919
|
-
|
|
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 =
|
|
1959
|
-
this.generationRegistry = new AcpxGenerationRegistry(this.sessionStore, this.delegate,
|
|
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:
|
|
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
|
-
|
|
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 };
|
package/dist/.setup/{session-owner-migration-duvwZfxk.mjs → session-owner-migration-WmiXoSmh.mjs}
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { t as runtime_doctor_migrations_exports } from "./runtime-doctor-migrations-
|
|
2
|
-
import { c as renderAgentCommand, t as resolveAcpxPluginConfig, u as splitCommandParts } from "./config-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
2
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
2
|
-
import { g as AcpxNativeAgentsSchema, h as ACPX_NATIVE_AGENT_IDS, t as resolveAcpxPluginConfig } from "./.setup/config-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
248
|
-
|
|
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
|
-
|
|
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 };
|
package/dist/register.runtime.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as createAcpxRuntimeService } from "./.setup/register.runtime-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
48
|
+
"pluginApi": ">=2026.10.10"
|
|
49
49
|
},
|
|
50
50
|
"build": {
|
|
51
|
-
"openclawVersion": "2026.10.10
|
|
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
|
|
71
|
+
"openclaw": ">=2026.10.10"
|
|
72
72
|
},
|
|
73
73
|
"peerDependenciesMeta": {
|
|
74
74
|
"openclaw": {
|