@openclaw/acpx 2026.5.24-beta.2 → 2026.5.26-beta.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.
- package/dist/{process-reaper-BfveBZT6.js → process-reaper-CAUlLOkM.js} +271 -45
- package/dist/register.runtime.js +1 -1
- package/dist/{runtime-0RO54Ii1.js → runtime-BMXFIXQq.js} +3 -2
- package/dist/{service-CwnfaUP9.js → service-CvQo2rym.js} +3 -216
- package/npm-shrinkwrap.json +85 -94
- package/package.json +7 -7
|
@@ -1,10 +1,57 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
+
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
3
|
import fs from "node:fs/promises";
|
|
3
4
|
import path from "node:path";
|
|
4
5
|
import { createHash, randomUUID } from "node:crypto";
|
|
5
6
|
import { readJsonFileWithFallback, writeJsonFileAtomically } from "openclaw/plugin-sdk/json-store";
|
|
6
7
|
import { execFile } from "node:child_process";
|
|
7
8
|
import { promisify } from "node:util";
|
|
9
|
+
import fsSync from "node:fs";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
import { formatPluginConfigIssue } from "openclaw/plugin-sdk/extension-shared";
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
//#region extensions/acpx/src/command-line.ts
|
|
14
|
+
function quoteCommandPart(value) {
|
|
15
|
+
return JSON.stringify(value);
|
|
16
|
+
}
|
|
17
|
+
function splitCommandParts(value) {
|
|
18
|
+
const parts = [];
|
|
19
|
+
let current = "";
|
|
20
|
+
let quote = null;
|
|
21
|
+
let escaping = false;
|
|
22
|
+
for (const ch of value) {
|
|
23
|
+
if (escaping) {
|
|
24
|
+
current += ch;
|
|
25
|
+
escaping = false;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (ch === "\\" && quote !== "'") {
|
|
29
|
+
escaping = true;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (quote) {
|
|
33
|
+
if (ch === quote) quote = null;
|
|
34
|
+
else current += ch;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (ch === "'" || ch === "\"") {
|
|
38
|
+
quote = ch;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (/\s/.test(ch)) {
|
|
42
|
+
if (current) {
|
|
43
|
+
parts.push(current);
|
|
44
|
+
current = "";
|
|
45
|
+
}
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
current += ch;
|
|
49
|
+
}
|
|
50
|
+
if (escaping) current += "\\";
|
|
51
|
+
if (current) parts.push(current);
|
|
52
|
+
return parts;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
8
55
|
//#region extensions/acpx/src/process-lease.ts
|
|
9
56
|
const OPENCLAW_ACPX_LEASE_ID_ENV = "OPENCLAW_ACPX_LEASE_ID";
|
|
10
57
|
const OPENCLAW_GATEWAY_INSTANCE_ID_ENV = "OPENCLAW_GATEWAY_INSTANCE_ID";
|
|
@@ -110,46 +157,213 @@ function withAcpxLeaseEnvironment(params) {
|
|
|
110
157
|
].join(" ");
|
|
111
158
|
}
|
|
112
159
|
//#endregion
|
|
113
|
-
//#region extensions/acpx/src/
|
|
114
|
-
|
|
115
|
-
|
|
160
|
+
//#region extensions/acpx/src/config-schema.ts
|
|
161
|
+
const ACPX_PERMISSION_MODES = [
|
|
162
|
+
"approve-all",
|
|
163
|
+
"approve-reads",
|
|
164
|
+
"deny-all"
|
|
165
|
+
];
|
|
166
|
+
const ACPX_NON_INTERACTIVE_POLICIES = ["deny", "fail"];
|
|
167
|
+
const nonEmptyTrimmedString = (message) => z.string({ error: message }).trim().min(1, { error: message });
|
|
168
|
+
const McpServerConfigSchema = z.object({
|
|
169
|
+
command: nonEmptyTrimmedString("command must be a non-empty string").describe("Command to run the MCP server"),
|
|
170
|
+
args: z.array(z.string({ error: "args must be an array of strings" }), { error: "args must be an array of strings" }).optional().describe("Arguments to pass to the command"),
|
|
171
|
+
env: z.record(z.string(), z.string({ error: "env values must be strings" }), { error: "env must be an object of strings" }).optional().describe("Environment variables for the MCP server")
|
|
172
|
+
});
|
|
173
|
+
const AcpxPluginConfigSchema = z.strictObject({
|
|
174
|
+
cwd: nonEmptyTrimmedString("cwd must be a non-empty string").optional(),
|
|
175
|
+
stateDir: nonEmptyTrimmedString("stateDir must be a non-empty string").optional(),
|
|
176
|
+
probeAgent: nonEmptyTrimmedString("probeAgent must be a non-empty string").optional(),
|
|
177
|
+
permissionMode: z.enum(ACPX_PERMISSION_MODES, { error: `permissionMode must be one of: ${ACPX_PERMISSION_MODES.join(", ")}` }).optional(),
|
|
178
|
+
nonInteractivePermissions: z.enum(ACPX_NON_INTERACTIVE_POLICIES, { error: `nonInteractivePermissions must be one of: ${ACPX_NON_INTERACTIVE_POLICIES.join(", ")}` }).optional(),
|
|
179
|
+
pluginToolsMcpBridge: z.boolean({ error: "pluginToolsMcpBridge must be a boolean" }).optional(),
|
|
180
|
+
openClawToolsMcpBridge: z.boolean({ error: "openClawToolsMcpBridge must be a boolean" }).optional(),
|
|
181
|
+
strictWindowsCmdWrapper: z.boolean({ error: "strictWindowsCmdWrapper must be a boolean" }).optional(),
|
|
182
|
+
timeoutSeconds: z.number({ error: "timeoutSeconds must be a number >= 0.001" }).min(.001, { error: "timeoutSeconds must be a number >= 0.001" }).default(120),
|
|
183
|
+
queueOwnerTtlSeconds: z.number({ error: "queueOwnerTtlSeconds must be a number >= 0" }).min(0, { error: "queueOwnerTtlSeconds must be a number >= 0" }).optional(),
|
|
184
|
+
mcpServers: z.record(z.string(), McpServerConfigSchema).optional(),
|
|
185
|
+
agents: z.record(z.string(), z.strictObject({
|
|
186
|
+
command: nonEmptyTrimmedString("agents.<id>.command must be a non-empty string"),
|
|
187
|
+
args: z.array(z.string({ error: "args must be an array of strings" })).optional()
|
|
188
|
+
})).optional()
|
|
189
|
+
});
|
|
190
|
+
//#endregion
|
|
191
|
+
//#region extensions/acpx/src/config.ts
|
|
192
|
+
const ACPX_PLUGIN_TOOLS_MCP_SERVER_NAME = "openclaw-plugin-tools";
|
|
193
|
+
const ACPX_OPENCLAW_TOOLS_MCP_SERVER_NAME = "openclaw-tools";
|
|
194
|
+
const requireFromHere$1 = createRequire(import.meta.url);
|
|
195
|
+
function isAcpxPluginRoot(dir) {
|
|
196
|
+
return fsSync.existsSync(path.join(dir, "openclaw.plugin.json")) && fsSync.existsSync(path.join(dir, "package.json"));
|
|
116
197
|
}
|
|
117
|
-
function
|
|
118
|
-
|
|
119
|
-
let
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
current += ch;
|
|
125
|
-
escaping = false;
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
|
-
if (ch === "\\" && quote !== "'") {
|
|
129
|
-
escaping = true;
|
|
130
|
-
continue;
|
|
131
|
-
}
|
|
132
|
-
if (quote) {
|
|
133
|
-
if (ch === quote) quote = null;
|
|
134
|
-
else current += ch;
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
if (ch === "'" || ch === "\"") {
|
|
138
|
-
quote = ch;
|
|
139
|
-
continue;
|
|
140
|
-
}
|
|
141
|
-
if (/\s/.test(ch)) {
|
|
142
|
-
if (current) {
|
|
143
|
-
parts.push(current);
|
|
144
|
-
current = "";
|
|
145
|
-
}
|
|
146
|
-
continue;
|
|
147
|
-
}
|
|
148
|
-
current += ch;
|
|
198
|
+
function resolveNearestAcpxPluginRoot(moduleUrl) {
|
|
199
|
+
let cursor = path.dirname(fileURLToPath(moduleUrl));
|
|
200
|
+
for (let i = 0; i < 3; i += 1) {
|
|
201
|
+
if (isAcpxPluginRoot(cursor)) return cursor;
|
|
202
|
+
const parent = path.dirname(cursor);
|
|
203
|
+
if (parent === cursor) break;
|
|
204
|
+
cursor = parent;
|
|
149
205
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
206
|
+
return path.resolve(path.dirname(fileURLToPath(moduleUrl)), "..");
|
|
207
|
+
}
|
|
208
|
+
function resolveWorkspaceAcpxPluginRoot(currentRoot) {
|
|
209
|
+
if (path.basename(currentRoot) !== "acpx" || path.basename(path.dirname(currentRoot)) !== "extensions" || path.basename(path.dirname(path.dirname(currentRoot))) !== "dist") return null;
|
|
210
|
+
const workspaceRoot = path.resolve(currentRoot, "..", "..", "..", "extensions", "acpx");
|
|
211
|
+
return isAcpxPluginRoot(workspaceRoot) ? workspaceRoot : null;
|
|
212
|
+
}
|
|
213
|
+
function resolveRepoAcpxPluginRoot(currentRoot) {
|
|
214
|
+
const workspaceRoot = path.join(currentRoot, "extensions", "acpx");
|
|
215
|
+
return isAcpxPluginRoot(workspaceRoot) ? workspaceRoot : null;
|
|
216
|
+
}
|
|
217
|
+
function resolveAcpxPluginRootFromOpenClawLayout(moduleUrl) {
|
|
218
|
+
let cursor = path.dirname(fileURLToPath(moduleUrl));
|
|
219
|
+
for (let i = 0; i < 5; i += 1) {
|
|
220
|
+
const candidates = [
|
|
221
|
+
path.join(cursor, "extensions", "acpx"),
|
|
222
|
+
path.join(cursor, "dist", "extensions", "acpx"),
|
|
223
|
+
path.join(cursor, "dist-runtime", "extensions", "acpx")
|
|
224
|
+
];
|
|
225
|
+
for (const candidate of candidates) if (isAcpxPluginRoot(candidate)) return candidate;
|
|
226
|
+
const parent = path.dirname(cursor);
|
|
227
|
+
if (parent === cursor) break;
|
|
228
|
+
cursor = parent;
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
function resolveAcpxPluginRoot(moduleUrl = import.meta.url) {
|
|
233
|
+
const resolvedRoot = resolveNearestAcpxPluginRoot(moduleUrl);
|
|
234
|
+
return resolveWorkspaceAcpxPluginRoot(resolvedRoot) ?? resolveRepoAcpxPluginRoot(resolvedRoot) ?? resolveAcpxPluginRootFromOpenClawLayout(moduleUrl) ?? resolvedRoot;
|
|
235
|
+
}
|
|
236
|
+
const DEFAULT_PERMISSION_MODE = "approve-reads";
|
|
237
|
+
const DEFAULT_NON_INTERACTIVE_POLICY = "fail";
|
|
238
|
+
const DEFAULT_QUEUE_OWNER_TTL_SECONDS = .1;
|
|
239
|
+
const DEFAULT_STRICT_WINDOWS_CMD_WRAPPER = true;
|
|
240
|
+
function parseAcpxPluginConfig(value) {
|
|
241
|
+
if (value === void 0) return {
|
|
242
|
+
ok: true,
|
|
243
|
+
value: void 0
|
|
244
|
+
};
|
|
245
|
+
const parsed = AcpxPluginConfigSchema.safeParse(value);
|
|
246
|
+
if (!parsed.success) return {
|
|
247
|
+
ok: false,
|
|
248
|
+
message: formatPluginConfigIssue(parsed.error.issues[0])
|
|
249
|
+
};
|
|
250
|
+
return {
|
|
251
|
+
ok: true,
|
|
252
|
+
value: parsed.data
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
function resolveOpenClawRoot(currentRoot) {
|
|
256
|
+
if (path.basename(currentRoot) === "acpx" && path.basename(path.dirname(currentRoot)) === "extensions") {
|
|
257
|
+
const parent = path.dirname(path.dirname(currentRoot));
|
|
258
|
+
if (path.basename(parent) === "dist") return path.dirname(parent);
|
|
259
|
+
return parent;
|
|
260
|
+
}
|
|
261
|
+
return path.resolve(currentRoot, "..");
|
|
262
|
+
}
|
|
263
|
+
function resolveTsxImportSpecifier() {
|
|
264
|
+
try {
|
|
265
|
+
return requireFromHere$1.resolve("tsx");
|
|
266
|
+
} catch {
|
|
267
|
+
return "tsx";
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function shellQuoteCommandArg(arg) {
|
|
271
|
+
if (!/[\s'"\\$|&;<>{}()*?[\]~`]/.test(arg)) return arg;
|
|
272
|
+
return `'${arg.replace(/'/g, "'\"'\"'")}'`;
|
|
273
|
+
}
|
|
274
|
+
function resolvePluginToolsMcpServerConfig(moduleUrl = import.meta.url) {
|
|
275
|
+
const openClawRoot = resolveOpenClawRoot(resolveAcpxPluginRoot(moduleUrl));
|
|
276
|
+
const distEntry = path.join(openClawRoot, "dist", "mcp", "plugin-tools-serve.js");
|
|
277
|
+
if (fsSync.existsSync(distEntry)) return {
|
|
278
|
+
command: process.execPath,
|
|
279
|
+
args: [distEntry]
|
|
280
|
+
};
|
|
281
|
+
const sourceEntry = path.join(openClawRoot, "src", "mcp", "plugin-tools-serve.ts");
|
|
282
|
+
return {
|
|
283
|
+
command: process.execPath,
|
|
284
|
+
args: [
|
|
285
|
+
"--import",
|
|
286
|
+
resolveTsxImportSpecifier(),
|
|
287
|
+
sourceEntry
|
|
288
|
+
]
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
function resolveOpenClawToolsMcpServerConfig(moduleUrl = import.meta.url) {
|
|
292
|
+
const openClawRoot = resolveOpenClawRoot(resolveAcpxPluginRoot(moduleUrl));
|
|
293
|
+
const distEntry = path.join(openClawRoot, "dist", "mcp", "openclaw-tools-serve.js");
|
|
294
|
+
if (fsSync.existsSync(distEntry)) return {
|
|
295
|
+
command: process.execPath,
|
|
296
|
+
args: [distEntry]
|
|
297
|
+
};
|
|
298
|
+
const sourceEntry = path.join(openClawRoot, "src", "mcp", "openclaw-tools-serve.ts");
|
|
299
|
+
return {
|
|
300
|
+
command: process.execPath,
|
|
301
|
+
args: [
|
|
302
|
+
"--import",
|
|
303
|
+
resolveTsxImportSpecifier(),
|
|
304
|
+
sourceEntry
|
|
305
|
+
]
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
function resolveConfiguredMcpServers(params) {
|
|
309
|
+
const resolved = { ...params.mcpServers };
|
|
310
|
+
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`);
|
|
311
|
+
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`);
|
|
312
|
+
if (params.pluginToolsMcpBridge) resolved[ACPX_PLUGIN_TOOLS_MCP_SERVER_NAME] = resolvePluginToolsMcpServerConfig(params.moduleUrl);
|
|
313
|
+
if (params.openClawToolsMcpBridge) resolved[ACPX_OPENCLAW_TOOLS_MCP_SERVER_NAME] = resolveOpenClawToolsMcpServerConfig(params.moduleUrl);
|
|
314
|
+
return resolved;
|
|
315
|
+
}
|
|
316
|
+
function toAcpMcpServers(mcpServers) {
|
|
317
|
+
return Object.entries(mcpServers).map(([name, server]) => ({
|
|
318
|
+
name,
|
|
319
|
+
command: server.command,
|
|
320
|
+
args: [...server.args ?? []],
|
|
321
|
+
env: Object.entries(server.env ?? {}).map(([envName, value]) => ({
|
|
322
|
+
name: envName,
|
|
323
|
+
value
|
|
324
|
+
}))
|
|
325
|
+
}));
|
|
326
|
+
}
|
|
327
|
+
function resolveAcpxPluginConfig(params) {
|
|
328
|
+
const parsed = parseAcpxPluginConfig(params.rawConfig);
|
|
329
|
+
if (!parsed.ok) throw new Error(parsed.message);
|
|
330
|
+
const normalized = parsed.value ?? {};
|
|
331
|
+
const workspaceDir = params.workspaceDir?.trim() || process.cwd();
|
|
332
|
+
const fallbackCwd = workspaceDir;
|
|
333
|
+
const cwd = path.resolve(normalized.cwd?.trim() || fallbackCwd);
|
|
334
|
+
const stateDir = path.resolve(normalized.stateDir?.trim() || path.join(workspaceDir, "state"));
|
|
335
|
+
const pluginToolsMcpBridge = normalized.pluginToolsMcpBridge === true;
|
|
336
|
+
const openClawToolsMcpBridge = normalized.openClawToolsMcpBridge === true;
|
|
337
|
+
const mcpServers = resolveConfiguredMcpServers({
|
|
338
|
+
mcpServers: normalized.mcpServers,
|
|
339
|
+
pluginToolsMcpBridge,
|
|
340
|
+
openClawToolsMcpBridge,
|
|
341
|
+
moduleUrl: params.moduleUrl
|
|
342
|
+
});
|
|
343
|
+
const agents = Object.fromEntries(Object.entries(normalized.agents ?? {}).map(([name, entry]) => {
|
|
344
|
+
const cmd = entry.command.trim();
|
|
345
|
+
const cmdArgs = entry.args ?? [];
|
|
346
|
+
const fullCommand = cmdArgs.length > 0 ? `${cmd} ${cmdArgs.map(shellQuoteCommandArg).join(" ")}` : cmd;
|
|
347
|
+
return [normalizeLowercaseStringOrEmpty(name), fullCommand];
|
|
348
|
+
}));
|
|
349
|
+
return {
|
|
350
|
+
cwd,
|
|
351
|
+
stateDir,
|
|
352
|
+
probeAgent: normalizeLowercaseStringOrEmpty(normalized.probeAgent) || void 0,
|
|
353
|
+
permissionMode: normalized.permissionMode ?? DEFAULT_PERMISSION_MODE,
|
|
354
|
+
nonInteractivePermissions: normalized.nonInteractivePermissions ?? DEFAULT_NON_INTERACTIVE_POLICY,
|
|
355
|
+
pluginToolsMcpBridge,
|
|
356
|
+
openClawToolsMcpBridge,
|
|
357
|
+
strictWindowsCmdWrapper: normalized.strictWindowsCmdWrapper ?? DEFAULT_STRICT_WINDOWS_CMD_WRAPPER,
|
|
358
|
+
timeoutSeconds: normalized.timeoutSeconds ?? 120,
|
|
359
|
+
queueOwnerTtlSeconds: normalized.queueOwnerTtlSeconds ?? DEFAULT_QUEUE_OWNER_TTL_SECONDS,
|
|
360
|
+
legacyCompatibilityConfig: {
|
|
361
|
+
strictWindowsCmdWrapper: normalized.strictWindowsCmdWrapper,
|
|
362
|
+
queueOwnerTtlSeconds: normalized.queueOwnerTtlSeconds
|
|
363
|
+
},
|
|
364
|
+
mcpServers,
|
|
365
|
+
agents
|
|
366
|
+
};
|
|
153
367
|
}
|
|
154
368
|
//#endregion
|
|
155
369
|
//#region extensions/acpx/src/process-reaper.ts
|
|
@@ -168,11 +382,7 @@ const OWNED_ACP_PACKAGE_NAMES = [
|
|
|
168
382
|
"@agentclientprotocol/claude-agent-acp",
|
|
169
383
|
"acpx"
|
|
170
384
|
];
|
|
171
|
-
const ACP_PACKAGE_MARKERS = [
|
|
172
|
-
"/@zed-industries/codex-acp/",
|
|
173
|
-
"/@agentclientprotocol/claude-agent-acp/",
|
|
174
|
-
"/acpx/dist/"
|
|
175
|
-
];
|
|
385
|
+
const ACP_PACKAGE_MARKERS = [...OWNED_ACP_PACKAGE_NAMES.map((packageName) => `/node_modules/${packageName}/`), "/acpx/dist/"];
|
|
176
386
|
function normalizePathLike(value) {
|
|
177
387
|
return value.replaceAll("\\", "/");
|
|
178
388
|
}
|
|
@@ -183,7 +393,23 @@ function resolvePackageRoot(packageName) {
|
|
|
183
393
|
return;
|
|
184
394
|
}
|
|
185
395
|
}
|
|
186
|
-
|
|
396
|
+
function resolveOpenClawInstallRoot(pluginRoot) {
|
|
397
|
+
if (path.basename(pluginRoot) === "acpx" && path.basename(path.dirname(pluginRoot)) === "extensions") {
|
|
398
|
+
const parent = path.dirname(path.dirname(pluginRoot));
|
|
399
|
+
return path.basename(parent) === "dist" ? path.dirname(parent) : parent;
|
|
400
|
+
}
|
|
401
|
+
return path.resolve(pluginRoot, "..");
|
|
402
|
+
}
|
|
403
|
+
function resolveOwnedAcpPackageRootCandidates(packageName) {
|
|
404
|
+
const pluginRoot = resolveAcpxPluginRoot(import.meta.url);
|
|
405
|
+
const openClawRoot = resolveOpenClawInstallRoot(pluginRoot);
|
|
406
|
+
return [
|
|
407
|
+
resolvePackageRoot(packageName),
|
|
408
|
+
path.join(pluginRoot, "node_modules", packageName),
|
|
409
|
+
path.join(openClawRoot, "node_modules", packageName)
|
|
410
|
+
].flatMap((root) => root ? [normalizePathLike(root)] : []);
|
|
411
|
+
}
|
|
412
|
+
const OWNED_ACP_PACKAGE_ROOTS = Array.from(new Set(OWNED_ACP_PACKAGE_NAMES.flatMap(resolveOwnedAcpPackageRootCandidates)));
|
|
187
413
|
function commandBelongsToResolvedAcpPackage(command) {
|
|
188
414
|
return OWNED_ACP_PACKAGE_ROOTS.some((root) => command.includes(`${root}/`));
|
|
189
415
|
}
|
|
@@ -372,4 +598,4 @@ async function reapStaleOpenClawOwnedAcpxOrphans(params) {
|
|
|
372
598
|
};
|
|
373
599
|
}
|
|
374
600
|
//#endregion
|
|
375
|
-
export {
|
|
601
|
+
export { resolveAcpxPluginRoot as a, OPENCLAW_ACPX_LEASE_ID_ENV as c, createAcpxProcessLeaseStore as d, hashAcpxProcessCommand as f, splitCommandParts as h, resolveAcpxPluginConfig as i, OPENCLAW_GATEWAY_INSTANCE_ID_ARG as l, quoteCommandPart as m, isOpenClawLeaseAwareAcpxProcessCommand as n, toAcpMcpServers as o, withAcpxLeaseEnvironment as p, reapStaleOpenClawOwnedAcpxOrphans as r, OPENCLAW_ACPX_LEASE_ID_ARG as s, cleanupOpenClawOwnedAcpxProcessTree as t, createAcpxProcessLeaseId as u };
|
package/dist/register.runtime.js
CHANGED
|
@@ -64,7 +64,7 @@ var LegacyRunTurnEventQueue = class {
|
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
66
|
function loadServiceModule() {
|
|
67
|
-
serviceModulePromise ??= import("./service-
|
|
67
|
+
serviceModulePromise ??= import("./service-CvQo2rym.js");
|
|
68
68
|
return serviceModulePromise;
|
|
69
69
|
}
|
|
70
70
|
async function startRealService(state) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AcpRuntimeError } from "./runtime-api.js";
|
|
2
|
-
import {
|
|
2
|
+
import { f as hashAcpxProcessCommand, h as splitCommandParts, n as isOpenClawLeaseAwareAcpxProcessCommand, p as withAcpxLeaseEnvironment, t as cleanupOpenClawOwnedAcpxProcessTree, u as createAcpxProcessLeaseId } from "./process-reaper-CAUlLOkM.js";
|
|
3
|
+
import { normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
4
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
4
5
|
import fs from "node:fs/promises";
|
|
5
6
|
import path, { resolve } from "node:path";
|
|
@@ -74,7 +75,7 @@ function extractGeneratedWrapperPath(command) {
|
|
|
74
75
|
return splitCommandParts(command ?? "").find((part) => basename(part) === "codex-acp-wrapper.mjs" || basename(part) === "claude-agent-acp-wrapper.mjs") ?? "";
|
|
75
76
|
}
|
|
76
77
|
function selectCurrentSessionLease(params) {
|
|
77
|
-
const sessionKeys = new Set(params.sessionKeys
|
|
78
|
+
const sessionKeys = new Set(normalizeStringEntries(params.sessionKeys));
|
|
78
79
|
const candidates = params.leases.filter((lease) => sessionKeys.has(lease.sessionKey));
|
|
79
80
|
if (params.rootPid) return candidates.find((lease) => lease.rootPid === params.rootPid);
|
|
80
81
|
let selected;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { registerAcpRuntimeBackend, unregisterAcpRuntimeBackend } from "./runtime-api.js";
|
|
2
|
-
import { a as
|
|
2
|
+
import { a as resolveAcpxPluginRoot, c as OPENCLAW_ACPX_LEASE_ID_ENV, d as createAcpxProcessLeaseStore, h as splitCommandParts, i as resolveAcpxPluginConfig, l as OPENCLAW_GATEWAY_INSTANCE_ID_ARG, m as quoteCommandPart, o as toAcpMcpServers, r as reapStaleOpenClawOwnedAcpxOrphans, s as OPENCLAW_ACPX_LEASE_ID_ARG, t as cleanupOpenClawOwnedAcpxProcessTree } from "./process-reaper-CAUlLOkM.js";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
|
-
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
4
|
import fs from "node:fs/promises";
|
|
6
5
|
import path from "node:path";
|
|
7
6
|
import { randomUUID } from "node:crypto";
|
|
8
7
|
import { readJsonFileWithFallback } from "openclaw/plugin-sdk/json-store";
|
|
9
8
|
import { inspect } from "node:util";
|
|
10
|
-
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
11
9
|
import fsSync from "node:fs";
|
|
10
|
+
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
12
11
|
import os from "node:os";
|
|
13
|
-
import { fileURLToPath } from "node:url";
|
|
14
|
-
import { formatPluginConfigIssue } from "openclaw/plugin-sdk/extension-shared";
|
|
15
|
-
import { z } from "zod";
|
|
16
12
|
//#region extensions/acpx/src/codex-trust-config.ts
|
|
17
13
|
function stripTomlComment(line) {
|
|
18
14
|
let quote = null;
|
|
@@ -210,215 +206,6 @@ function renderIsolatedCodexConfig(params) {
|
|
|
210
206
|
].filter((line, index, lines) => !(line === "" && lines[index - 1] === "")).join("\n");
|
|
211
207
|
}
|
|
212
208
|
//#endregion
|
|
213
|
-
//#region extensions/acpx/src/config-schema.ts
|
|
214
|
-
const ACPX_PERMISSION_MODES = [
|
|
215
|
-
"approve-all",
|
|
216
|
-
"approve-reads",
|
|
217
|
-
"deny-all"
|
|
218
|
-
];
|
|
219
|
-
const ACPX_NON_INTERACTIVE_POLICIES = ["deny", "fail"];
|
|
220
|
-
const nonEmptyTrimmedString = (message) => z.string({ error: message }).trim().min(1, { error: message });
|
|
221
|
-
const McpServerConfigSchema = z.object({
|
|
222
|
-
command: nonEmptyTrimmedString("command must be a non-empty string").describe("Command to run the MCP server"),
|
|
223
|
-
args: z.array(z.string({ error: "args must be an array of strings" }), { error: "args must be an array of strings" }).optional().describe("Arguments to pass to the command"),
|
|
224
|
-
env: z.record(z.string(), z.string({ error: "env values must be strings" }), { error: "env must be an object of strings" }).optional().describe("Environment variables for the MCP server")
|
|
225
|
-
});
|
|
226
|
-
const AcpxPluginConfigSchema = z.strictObject({
|
|
227
|
-
cwd: nonEmptyTrimmedString("cwd must be a non-empty string").optional(),
|
|
228
|
-
stateDir: nonEmptyTrimmedString("stateDir must be a non-empty string").optional(),
|
|
229
|
-
probeAgent: nonEmptyTrimmedString("probeAgent must be a non-empty string").optional(),
|
|
230
|
-
permissionMode: z.enum(ACPX_PERMISSION_MODES, { error: `permissionMode must be one of: ${ACPX_PERMISSION_MODES.join(", ")}` }).optional(),
|
|
231
|
-
nonInteractivePermissions: z.enum(ACPX_NON_INTERACTIVE_POLICIES, { error: `nonInteractivePermissions must be one of: ${ACPX_NON_INTERACTIVE_POLICIES.join(", ")}` }).optional(),
|
|
232
|
-
pluginToolsMcpBridge: z.boolean({ error: "pluginToolsMcpBridge must be a boolean" }).optional(),
|
|
233
|
-
openClawToolsMcpBridge: z.boolean({ error: "openClawToolsMcpBridge must be a boolean" }).optional(),
|
|
234
|
-
strictWindowsCmdWrapper: z.boolean({ error: "strictWindowsCmdWrapper must be a boolean" }).optional(),
|
|
235
|
-
timeoutSeconds: z.number({ error: "timeoutSeconds must be a number >= 0.001" }).min(.001, { error: "timeoutSeconds must be a number >= 0.001" }).default(120),
|
|
236
|
-
queueOwnerTtlSeconds: z.number({ error: "queueOwnerTtlSeconds must be a number >= 0" }).min(0, { error: "queueOwnerTtlSeconds must be a number >= 0" }).optional(),
|
|
237
|
-
mcpServers: z.record(z.string(), McpServerConfigSchema).optional(),
|
|
238
|
-
agents: z.record(z.string(), z.strictObject({
|
|
239
|
-
command: nonEmptyTrimmedString("agents.<id>.command must be a non-empty string"),
|
|
240
|
-
args: z.array(z.string({ error: "args must be an array of strings" })).optional()
|
|
241
|
-
})).optional()
|
|
242
|
-
});
|
|
243
|
-
//#endregion
|
|
244
|
-
//#region extensions/acpx/src/config.ts
|
|
245
|
-
const ACPX_PLUGIN_TOOLS_MCP_SERVER_NAME = "openclaw-plugin-tools";
|
|
246
|
-
const ACPX_OPENCLAW_TOOLS_MCP_SERVER_NAME = "openclaw-tools";
|
|
247
|
-
const requireFromHere$1 = createRequire(import.meta.url);
|
|
248
|
-
function isAcpxPluginRoot(dir) {
|
|
249
|
-
return fsSync.existsSync(path.join(dir, "openclaw.plugin.json")) && fsSync.existsSync(path.join(dir, "package.json"));
|
|
250
|
-
}
|
|
251
|
-
function resolveNearestAcpxPluginRoot(moduleUrl) {
|
|
252
|
-
let cursor = path.dirname(fileURLToPath(moduleUrl));
|
|
253
|
-
for (let i = 0; i < 3; i += 1) {
|
|
254
|
-
if (isAcpxPluginRoot(cursor)) return cursor;
|
|
255
|
-
const parent = path.dirname(cursor);
|
|
256
|
-
if (parent === cursor) break;
|
|
257
|
-
cursor = parent;
|
|
258
|
-
}
|
|
259
|
-
return path.resolve(path.dirname(fileURLToPath(moduleUrl)), "..");
|
|
260
|
-
}
|
|
261
|
-
function resolveWorkspaceAcpxPluginRoot(currentRoot) {
|
|
262
|
-
if (path.basename(currentRoot) !== "acpx" || path.basename(path.dirname(currentRoot)) !== "extensions" || path.basename(path.dirname(path.dirname(currentRoot))) !== "dist") return null;
|
|
263
|
-
const workspaceRoot = path.resolve(currentRoot, "..", "..", "..", "extensions", "acpx");
|
|
264
|
-
return isAcpxPluginRoot(workspaceRoot) ? workspaceRoot : null;
|
|
265
|
-
}
|
|
266
|
-
function resolveRepoAcpxPluginRoot(currentRoot) {
|
|
267
|
-
const workspaceRoot = path.join(currentRoot, "extensions", "acpx");
|
|
268
|
-
return isAcpxPluginRoot(workspaceRoot) ? workspaceRoot : null;
|
|
269
|
-
}
|
|
270
|
-
function resolveAcpxPluginRootFromOpenClawLayout(moduleUrl) {
|
|
271
|
-
let cursor = path.dirname(fileURLToPath(moduleUrl));
|
|
272
|
-
for (let i = 0; i < 5; i += 1) {
|
|
273
|
-
const candidates = [
|
|
274
|
-
path.join(cursor, "extensions", "acpx"),
|
|
275
|
-
path.join(cursor, "dist", "extensions", "acpx"),
|
|
276
|
-
path.join(cursor, "dist-runtime", "extensions", "acpx")
|
|
277
|
-
];
|
|
278
|
-
for (const candidate of candidates) if (isAcpxPluginRoot(candidate)) return candidate;
|
|
279
|
-
const parent = path.dirname(cursor);
|
|
280
|
-
if (parent === cursor) break;
|
|
281
|
-
cursor = parent;
|
|
282
|
-
}
|
|
283
|
-
return null;
|
|
284
|
-
}
|
|
285
|
-
function resolveAcpxPluginRoot(moduleUrl = import.meta.url) {
|
|
286
|
-
const resolvedRoot = resolveNearestAcpxPluginRoot(moduleUrl);
|
|
287
|
-
return resolveWorkspaceAcpxPluginRoot(resolvedRoot) ?? resolveRepoAcpxPluginRoot(resolvedRoot) ?? resolveAcpxPluginRootFromOpenClawLayout(moduleUrl) ?? resolvedRoot;
|
|
288
|
-
}
|
|
289
|
-
const DEFAULT_PERMISSION_MODE = "approve-reads";
|
|
290
|
-
const DEFAULT_NON_INTERACTIVE_POLICY = "fail";
|
|
291
|
-
const DEFAULT_QUEUE_OWNER_TTL_SECONDS = .1;
|
|
292
|
-
const DEFAULT_STRICT_WINDOWS_CMD_WRAPPER = true;
|
|
293
|
-
function parseAcpxPluginConfig(value) {
|
|
294
|
-
if (value === void 0) return {
|
|
295
|
-
ok: true,
|
|
296
|
-
value: void 0
|
|
297
|
-
};
|
|
298
|
-
const parsed = AcpxPluginConfigSchema.safeParse(value);
|
|
299
|
-
if (!parsed.success) return {
|
|
300
|
-
ok: false,
|
|
301
|
-
message: formatPluginConfigIssue(parsed.error.issues[0])
|
|
302
|
-
};
|
|
303
|
-
return {
|
|
304
|
-
ok: true,
|
|
305
|
-
value: parsed.data
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
function resolveOpenClawRoot(currentRoot) {
|
|
309
|
-
if (path.basename(currentRoot) === "acpx" && path.basename(path.dirname(currentRoot)) === "extensions") {
|
|
310
|
-
const parent = path.dirname(path.dirname(currentRoot));
|
|
311
|
-
if (path.basename(parent) === "dist") return path.dirname(parent);
|
|
312
|
-
return parent;
|
|
313
|
-
}
|
|
314
|
-
return path.resolve(currentRoot, "..");
|
|
315
|
-
}
|
|
316
|
-
function resolveTsxImportSpecifier() {
|
|
317
|
-
try {
|
|
318
|
-
return requireFromHere$1.resolve("tsx");
|
|
319
|
-
} catch {
|
|
320
|
-
return "tsx";
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
function shellQuoteCommandArg(arg) {
|
|
324
|
-
if (!/[\s'"\\$|&;<>{}()*?[\]~`]/.test(arg)) return arg;
|
|
325
|
-
return `'${arg.replace(/'/g, "'\"'\"'")}'`;
|
|
326
|
-
}
|
|
327
|
-
function resolvePluginToolsMcpServerConfig(moduleUrl = import.meta.url) {
|
|
328
|
-
const openClawRoot = resolveOpenClawRoot(resolveAcpxPluginRoot(moduleUrl));
|
|
329
|
-
const distEntry = path.join(openClawRoot, "dist", "mcp", "plugin-tools-serve.js");
|
|
330
|
-
if (fsSync.existsSync(distEntry)) return {
|
|
331
|
-
command: process.execPath,
|
|
332
|
-
args: [distEntry]
|
|
333
|
-
};
|
|
334
|
-
const sourceEntry = path.join(openClawRoot, "src", "mcp", "plugin-tools-serve.ts");
|
|
335
|
-
return {
|
|
336
|
-
command: process.execPath,
|
|
337
|
-
args: [
|
|
338
|
-
"--import",
|
|
339
|
-
resolveTsxImportSpecifier(),
|
|
340
|
-
sourceEntry
|
|
341
|
-
]
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
function resolveOpenClawToolsMcpServerConfig(moduleUrl = import.meta.url) {
|
|
345
|
-
const openClawRoot = resolveOpenClawRoot(resolveAcpxPluginRoot(moduleUrl));
|
|
346
|
-
const distEntry = path.join(openClawRoot, "dist", "mcp", "openclaw-tools-serve.js");
|
|
347
|
-
if (fsSync.existsSync(distEntry)) return {
|
|
348
|
-
command: process.execPath,
|
|
349
|
-
args: [distEntry]
|
|
350
|
-
};
|
|
351
|
-
const sourceEntry = path.join(openClawRoot, "src", "mcp", "openclaw-tools-serve.ts");
|
|
352
|
-
return {
|
|
353
|
-
command: process.execPath,
|
|
354
|
-
args: [
|
|
355
|
-
"--import",
|
|
356
|
-
resolveTsxImportSpecifier(),
|
|
357
|
-
sourceEntry
|
|
358
|
-
]
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
function resolveConfiguredMcpServers(params) {
|
|
362
|
-
const resolved = { ...params.mcpServers };
|
|
363
|
-
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`);
|
|
364
|
-
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`);
|
|
365
|
-
if (params.pluginToolsMcpBridge) resolved[ACPX_PLUGIN_TOOLS_MCP_SERVER_NAME] = resolvePluginToolsMcpServerConfig(params.moduleUrl);
|
|
366
|
-
if (params.openClawToolsMcpBridge) resolved[ACPX_OPENCLAW_TOOLS_MCP_SERVER_NAME] = resolveOpenClawToolsMcpServerConfig(params.moduleUrl);
|
|
367
|
-
return resolved;
|
|
368
|
-
}
|
|
369
|
-
function toAcpMcpServers(mcpServers) {
|
|
370
|
-
return Object.entries(mcpServers).map(([name, server]) => ({
|
|
371
|
-
name,
|
|
372
|
-
command: server.command,
|
|
373
|
-
args: [...server.args ?? []],
|
|
374
|
-
env: Object.entries(server.env ?? {}).map(([envName, value]) => ({
|
|
375
|
-
name: envName,
|
|
376
|
-
value
|
|
377
|
-
}))
|
|
378
|
-
}));
|
|
379
|
-
}
|
|
380
|
-
function resolveAcpxPluginConfig(params) {
|
|
381
|
-
const parsed = parseAcpxPluginConfig(params.rawConfig);
|
|
382
|
-
if (!parsed.ok) throw new Error(parsed.message);
|
|
383
|
-
const normalized = parsed.value ?? {};
|
|
384
|
-
const workspaceDir = params.workspaceDir?.trim() || process.cwd();
|
|
385
|
-
const fallbackCwd = workspaceDir;
|
|
386
|
-
const cwd = path.resolve(normalized.cwd?.trim() || fallbackCwd);
|
|
387
|
-
const stateDir = path.resolve(normalized.stateDir?.trim() || path.join(workspaceDir, "state"));
|
|
388
|
-
const pluginToolsMcpBridge = normalized.pluginToolsMcpBridge === true;
|
|
389
|
-
const openClawToolsMcpBridge = normalized.openClawToolsMcpBridge === true;
|
|
390
|
-
const mcpServers = resolveConfiguredMcpServers({
|
|
391
|
-
mcpServers: normalized.mcpServers,
|
|
392
|
-
pluginToolsMcpBridge,
|
|
393
|
-
openClawToolsMcpBridge,
|
|
394
|
-
moduleUrl: params.moduleUrl
|
|
395
|
-
});
|
|
396
|
-
const agents = Object.fromEntries(Object.entries(normalized.agents ?? {}).map(([name, entry]) => {
|
|
397
|
-
const cmd = entry.command.trim();
|
|
398
|
-
const cmdArgs = entry.args ?? [];
|
|
399
|
-
const fullCommand = cmdArgs.length > 0 ? `${cmd} ${cmdArgs.map(shellQuoteCommandArg).join(" ")}` : cmd;
|
|
400
|
-
return [normalizeLowercaseStringOrEmpty(name), fullCommand];
|
|
401
|
-
}));
|
|
402
|
-
return {
|
|
403
|
-
cwd,
|
|
404
|
-
stateDir,
|
|
405
|
-
probeAgent: normalizeLowercaseStringOrEmpty(normalized.probeAgent) || void 0,
|
|
406
|
-
permissionMode: normalized.permissionMode ?? DEFAULT_PERMISSION_MODE,
|
|
407
|
-
nonInteractivePermissions: normalized.nonInteractivePermissions ?? DEFAULT_NON_INTERACTIVE_POLICY,
|
|
408
|
-
pluginToolsMcpBridge,
|
|
409
|
-
openClawToolsMcpBridge,
|
|
410
|
-
strictWindowsCmdWrapper: normalized.strictWindowsCmdWrapper ?? DEFAULT_STRICT_WINDOWS_CMD_WRAPPER,
|
|
411
|
-
timeoutSeconds: normalized.timeoutSeconds ?? 120,
|
|
412
|
-
queueOwnerTtlSeconds: normalized.queueOwnerTtlSeconds ?? DEFAULT_QUEUE_OWNER_TTL_SECONDS,
|
|
413
|
-
legacyCompatibilityConfig: {
|
|
414
|
-
strictWindowsCmdWrapper: normalized.strictWindowsCmdWrapper,
|
|
415
|
-
queueOwnerTtlSeconds: normalized.queueOwnerTtlSeconds
|
|
416
|
-
},
|
|
417
|
-
mcpServers,
|
|
418
|
-
agents
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
//#endregion
|
|
422
209
|
//#region extensions/acpx/src/codex-auth-bridge.ts
|
|
423
210
|
const CODEX_ACP_PACKAGE = "@zed-industries/codex-acp";
|
|
424
211
|
const CODEX_ACP_BIN = "codex-acp";
|
|
@@ -1013,7 +800,7 @@ const SKIP_RUNTIME_PROBE_ENV = "OPENCLAW_SKIP_ACPX_RUNTIME_PROBE";
|
|
|
1013
800
|
const ACPX_BACKEND_ID = "acpx";
|
|
1014
801
|
let runtimeModulePromise = null;
|
|
1015
802
|
function loadRuntimeModule() {
|
|
1016
|
-
runtimeModulePromise ??= import("./runtime-
|
|
803
|
+
runtimeModulePromise ??= import("./runtime-BMXFIXQq.js");
|
|
1017
804
|
return runtimeModulePromise;
|
|
1018
805
|
}
|
|
1019
806
|
function createDeferredResult() {
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/acpx",
|
|
3
|
-
"version": "2026.5.
|
|
3
|
+
"version": "2026.5.26-beta.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/acpx",
|
|
9
|
-
"version": "2026.5.
|
|
9
|
+
"version": "2026.5.26-beta.1",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@agentclientprotocol/claude-agent-acp": "0.
|
|
12
|
-
"@zed-industries/codex-acp": "0.
|
|
13
|
-
"acpx": "0.
|
|
11
|
+
"@agentclientprotocol/claude-agent-acp": "0.37.0",
|
|
12
|
+
"@zed-industries/codex-acp": "0.15.0",
|
|
13
|
+
"acpx": "0.10.0",
|
|
14
14
|
"zod": "4.4.3"
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"node_modules/@agentclientprotocol/claude-agent-acp": {
|
|
18
|
-
"version": "0.
|
|
19
|
-
"resolved": "https://registry.npmjs.org/@agentclientprotocol/claude-agent-acp/-/claude-agent-acp-0.
|
|
20
|
-
"integrity": "sha512-
|
|
18
|
+
"version": "0.37.0",
|
|
19
|
+
"resolved": "https://registry.npmjs.org/@agentclientprotocol/claude-agent-acp/-/claude-agent-acp-0.37.0.tgz",
|
|
20
|
+
"integrity": "sha512-xZd/0tYQyUAQICMqx/msJJEtF07KJzUwQodHDrpUoaHG3miBKW635bLKo9kQInWYIhQ96ZJDhdSHHnH44e+KlA==",
|
|
21
21
|
"license": "Apache-2.0",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@agentclientprotocol/sdk": "0.22.
|
|
24
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
23
|
+
"@agentclientprotocol/sdk": "0.22.1",
|
|
24
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.146",
|
|
25
25
|
"zod": "^3.25.0 || ^4.0.0"
|
|
26
26
|
},
|
|
27
27
|
"bin": {
|
|
@@ -29,31 +29,31 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"node_modules/@agentclientprotocol/sdk": {
|
|
32
|
-
"version": "0.22.
|
|
33
|
-
"resolved": "https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-0.22.
|
|
34
|
-
"integrity": "sha512-
|
|
32
|
+
"version": "0.22.1",
|
|
33
|
+
"resolved": "https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-0.22.1.tgz",
|
|
34
|
+
"integrity": "sha512-DfqXtl/8gO9NImq094MTaCXEU2vkhh6v7q/kT+9UjZxUqj8hYaya2OjLVIqn16MzNHcXEpShTR2RIauLSYeDQQ==",
|
|
35
35
|
"license": "Apache-2.0",
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"zod": "^3.25.0 || ^4.0.0"
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"node_modules/@anthropic-ai/claude-agent-sdk": {
|
|
41
|
-
"version": "0.3.
|
|
42
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.
|
|
43
|
-
"integrity": "sha512-
|
|
41
|
+
"version": "0.3.146",
|
|
42
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.146.tgz",
|
|
43
|
+
"integrity": "sha512-hK9/Ng+hOyexUemTxdIUsSWJ9o2LFi2YNWzHwz8/YMCohUYOnFMZkBiENvUAb0WIc5hieOyBZrOIlg5OewuJMg==",
|
|
44
44
|
"license": "SEE LICENSE IN README.md",
|
|
45
45
|
"engines": {
|
|
46
46
|
"node": ">=18.0.0"
|
|
47
47
|
},
|
|
48
48
|
"optionalDependencies": {
|
|
49
|
-
"@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.
|
|
50
|
-
"@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.
|
|
51
|
-
"@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.
|
|
52
|
-
"@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.
|
|
53
|
-
"@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.
|
|
54
|
-
"@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.
|
|
55
|
-
"@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.
|
|
56
|
-
"@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.
|
|
49
|
+
"@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.146",
|
|
50
|
+
"@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.146",
|
|
51
|
+
"@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.146",
|
|
52
|
+
"@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.146",
|
|
53
|
+
"@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.146",
|
|
54
|
+
"@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.146",
|
|
55
|
+
"@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.146",
|
|
56
|
+
"@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.146"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"@anthropic-ai/sdk": ">=0.93.0",
|
|
@@ -62,9 +62,9 @@
|
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
"node_modules/@anthropic-ai/claude-agent-sdk-darwin-arm64": {
|
|
65
|
-
"version": "0.3.
|
|
66
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.
|
|
67
|
-
"integrity": "sha512-
|
|
65
|
+
"version": "0.3.146",
|
|
66
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.146.tgz",
|
|
67
|
+
"integrity": "sha512-0IIvlEaenq2CRSVx5Bo5BaCtHQXS87GancM35WKEYveGVLn6DI+5G7ikYuTE4AKRPkMnogFtY4BJt6LulWGj+A==",
|
|
68
68
|
"cpu": [
|
|
69
69
|
"arm64"
|
|
70
70
|
],
|
|
@@ -75,9 +75,9 @@
|
|
|
75
75
|
]
|
|
76
76
|
},
|
|
77
77
|
"node_modules/@anthropic-ai/claude-agent-sdk-darwin-x64": {
|
|
78
|
-
"version": "0.3.
|
|
79
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.
|
|
80
|
-
"integrity": "sha512-
|
|
78
|
+
"version": "0.3.146",
|
|
79
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.146.tgz",
|
|
80
|
+
"integrity": "sha512-Dk5xJ03Ff1JXbMRP1t2wc/TyfY6xF/2Ysp31wMhFPjoNiKSPHMWaIg242+T3CHdxLWmJ8plWHL1HL5cyZ/LCkw==",
|
|
81
81
|
"cpu": [
|
|
82
82
|
"x64"
|
|
83
83
|
],
|
|
@@ -88,9 +88,9 @@
|
|
|
88
88
|
]
|
|
89
89
|
},
|
|
90
90
|
"node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64": {
|
|
91
|
-
"version": "0.3.
|
|
92
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.
|
|
93
|
-
"integrity": "sha512
|
|
91
|
+
"version": "0.3.146",
|
|
92
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.146.tgz",
|
|
93
|
+
"integrity": "sha512-mzBXDDWWBAC/vDtAYpO1G/dq5QvJtYSPXsqcb+sNdcDhiuf4IYnYp7ytRncYlsUNDkLmX6Gk2jkWAHUUA2Lozg==",
|
|
94
94
|
"cpu": [
|
|
95
95
|
"arm64"
|
|
96
96
|
],
|
|
@@ -101,9 +101,9 @@
|
|
|
101
101
|
]
|
|
102
102
|
},
|
|
103
103
|
"node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64-musl": {
|
|
104
|
-
"version": "0.3.
|
|
105
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.
|
|
106
|
-
"integrity": "sha512-
|
|
104
|
+
"version": "0.3.146",
|
|
105
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.146.tgz",
|
|
106
|
+
"integrity": "sha512-QlCid0ucdrmhUAOewfQjaofN2wlokWcfFTxSFePTSj1umk35JO7TDFP700F7jU49r1fPWIdvJpPwWGyB0DeFPA==",
|
|
107
107
|
"cpu": [
|
|
108
108
|
"arm64"
|
|
109
109
|
],
|
|
@@ -114,9 +114,9 @@
|
|
|
114
114
|
]
|
|
115
115
|
},
|
|
116
116
|
"node_modules/@anthropic-ai/claude-agent-sdk-linux-x64": {
|
|
117
|
-
"version": "0.3.
|
|
118
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.
|
|
119
|
-
"integrity": "sha512-
|
|
117
|
+
"version": "0.3.146",
|
|
118
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.146.tgz",
|
|
119
|
+
"integrity": "sha512-B2baXU1tCBT5CVlD7jJMKjpC4xdO45NUIWpqImmwuOfKvlM/PITjyTXyTY662mGZf1dBmdqBBsqirwFH/jhi8Q==",
|
|
120
120
|
"cpu": [
|
|
121
121
|
"x64"
|
|
122
122
|
],
|
|
@@ -127,9 +127,9 @@
|
|
|
127
127
|
]
|
|
128
128
|
},
|
|
129
129
|
"node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl": {
|
|
130
|
-
"version": "0.3.
|
|
131
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.
|
|
132
|
-
"integrity": "sha512-
|
|
130
|
+
"version": "0.3.146",
|
|
131
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.146.tgz",
|
|
132
|
+
"integrity": "sha512-E3coK1ThQT08KIX80RLcsq7DWXFllCKOzoOe32it/bdtY56TBgPY9xemwXhIJ+cVBHTI9/MpBSIlKBcFCt+yQA==",
|
|
133
133
|
"cpu": [
|
|
134
134
|
"x64"
|
|
135
135
|
],
|
|
@@ -140,9 +140,9 @@
|
|
|
140
140
|
]
|
|
141
141
|
},
|
|
142
142
|
"node_modules/@anthropic-ai/claude-agent-sdk-win32-arm64": {
|
|
143
|
-
"version": "0.3.
|
|
144
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.
|
|
145
|
-
"integrity": "sha512-
|
|
143
|
+
"version": "0.3.146",
|
|
144
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.146.tgz",
|
|
145
|
+
"integrity": "sha512-CIwQxGX2r/yWpjCJ6ahB3smKXhghWgGTxL98+LGW52TUwqTiBnlNrH9DPqqgv1/+Hyquw6xfLrKU+StyfMgiLw==",
|
|
146
146
|
"cpu": [
|
|
147
147
|
"arm64"
|
|
148
148
|
],
|
|
@@ -153,9 +153,9 @@
|
|
|
153
153
|
]
|
|
154
154
|
},
|
|
155
155
|
"node_modules/@anthropic-ai/claude-agent-sdk-win32-x64": {
|
|
156
|
-
"version": "0.3.
|
|
157
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.
|
|
158
|
-
"integrity": "sha512-
|
|
156
|
+
"version": "0.3.146",
|
|
157
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.146.tgz",
|
|
158
|
+
"integrity": "sha512-qmxrsyaqA8s4HShqJls7ZCRjdoqN66Jo/hbjQNB3uHepD8tEO1iD19aPV4+osdLT7feMkhDBfLT07Q30R2NB5w==",
|
|
159
159
|
"cpu": [
|
|
160
160
|
"x64"
|
|
161
161
|
],
|
|
@@ -166,9 +166,9 @@
|
|
|
166
166
|
]
|
|
167
167
|
},
|
|
168
168
|
"node_modules/@anthropic-ai/sdk": {
|
|
169
|
-
"version": "0.
|
|
170
|
-
"resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.
|
|
171
|
-
"integrity": "sha512-
|
|
169
|
+
"version": "0.98.0",
|
|
170
|
+
"resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.98.0.tgz",
|
|
171
|
+
"integrity": "sha512-N7aXtCvC5g6T1Y4V29lJjceu/zTkVkIZF0jdBvagr0TRFHuKeImffalGWEfqZKrvjH+IQbzJWw6TmSmUzrlMgg==",
|
|
172
172
|
"license": "MIT",
|
|
173
173
|
"dependencies": {
|
|
174
174
|
"json-schema-to-ts": "^3.1.1",
|
|
@@ -698,26 +698,26 @@
|
|
|
698
698
|
"license": "MIT"
|
|
699
699
|
},
|
|
700
700
|
"node_modules/@zed-industries/codex-acp": {
|
|
701
|
-
"version": "0.
|
|
702
|
-
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp/-/codex-acp-0.
|
|
703
|
-
"integrity": "sha512-
|
|
701
|
+
"version": "0.15.0",
|
|
702
|
+
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp/-/codex-acp-0.15.0.tgz",
|
|
703
|
+
"integrity": "sha512-eAv7sGBeiYrYkOulF729nrM51szS7WIhBtugRj5wWq6csRKZUhAZfoUZlF8xUWdHPtOIzd/eT6MNG6gMHu6z0w==",
|
|
704
704
|
"license": "Apache-2.0",
|
|
705
705
|
"bin": {
|
|
706
706
|
"codex-acp": "bin/codex-acp.js"
|
|
707
707
|
},
|
|
708
708
|
"optionalDependencies": {
|
|
709
|
-
"@zed-industries/codex-acp-darwin-arm64": "0.
|
|
710
|
-
"@zed-industries/codex-acp-darwin-x64": "0.
|
|
711
|
-
"@zed-industries/codex-acp-linux-arm64": "0.
|
|
712
|
-
"@zed-industries/codex-acp-linux-x64": "0.
|
|
713
|
-
"@zed-industries/codex-acp-win32-arm64": "0.
|
|
714
|
-
"@zed-industries/codex-acp-win32-x64": "0.
|
|
709
|
+
"@zed-industries/codex-acp-darwin-arm64": "0.15.0",
|
|
710
|
+
"@zed-industries/codex-acp-darwin-x64": "0.15.0",
|
|
711
|
+
"@zed-industries/codex-acp-linux-arm64": "0.15.0",
|
|
712
|
+
"@zed-industries/codex-acp-linux-x64": "0.15.0",
|
|
713
|
+
"@zed-industries/codex-acp-win32-arm64": "0.15.0",
|
|
714
|
+
"@zed-industries/codex-acp-win32-x64": "0.15.0"
|
|
715
715
|
}
|
|
716
716
|
},
|
|
717
717
|
"node_modules/@zed-industries/codex-acp-darwin-arm64": {
|
|
718
|
-
"version": "0.
|
|
719
|
-
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-darwin-arm64/-/codex-acp-darwin-arm64-0.
|
|
720
|
-
"integrity": "sha512-
|
|
718
|
+
"version": "0.15.0",
|
|
719
|
+
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-darwin-arm64/-/codex-acp-darwin-arm64-0.15.0.tgz",
|
|
720
|
+
"integrity": "sha512-9/tnj1fXeXIONgr+5FGwr3bkqd4jaORdr3X9/k++rzHW+UIzvgIeXrJKv43403gtuKp0BoxdzsFxe2qsAQhhkw==",
|
|
721
721
|
"cpu": [
|
|
722
722
|
"arm64"
|
|
723
723
|
],
|
|
@@ -731,9 +731,9 @@
|
|
|
731
731
|
}
|
|
732
732
|
},
|
|
733
733
|
"node_modules/@zed-industries/codex-acp-darwin-x64": {
|
|
734
|
-
"version": "0.
|
|
735
|
-
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-darwin-x64/-/codex-acp-darwin-x64-0.
|
|
736
|
-
"integrity": "sha512-
|
|
734
|
+
"version": "0.15.0",
|
|
735
|
+
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-darwin-x64/-/codex-acp-darwin-x64-0.15.0.tgz",
|
|
736
|
+
"integrity": "sha512-2cmflnVYM5yzvNu4ldff6OsfLzQThFToPszCT3t7jytWuG28V+W1cUEGsvFJGNkGC1Wo29Z4w5LZ3wyfOkvPxg==",
|
|
737
737
|
"cpu": [
|
|
738
738
|
"x64"
|
|
739
739
|
],
|
|
@@ -747,9 +747,9 @@
|
|
|
747
747
|
}
|
|
748
748
|
},
|
|
749
749
|
"node_modules/@zed-industries/codex-acp-linux-arm64": {
|
|
750
|
-
"version": "0.
|
|
751
|
-
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-linux-arm64/-/codex-acp-linux-arm64-0.
|
|
752
|
-
"integrity": "sha512-
|
|
750
|
+
"version": "0.15.0",
|
|
751
|
+
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-linux-arm64/-/codex-acp-linux-arm64-0.15.0.tgz",
|
|
752
|
+
"integrity": "sha512-ioCXCiZMd4v7Eqyed9Iz4xcPKsZbSH157wOitsWQKxUiX43c1Ti5fykZcrh9cNSLOgiGmI3V2nbYp0aTf66grQ==",
|
|
753
753
|
"cpu": [
|
|
754
754
|
"arm64"
|
|
755
755
|
],
|
|
@@ -763,9 +763,9 @@
|
|
|
763
763
|
}
|
|
764
764
|
},
|
|
765
765
|
"node_modules/@zed-industries/codex-acp-linux-x64": {
|
|
766
|
-
"version": "0.
|
|
767
|
-
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-linux-x64/-/codex-acp-linux-x64-0.
|
|
768
|
-
"integrity": "sha512-
|
|
766
|
+
"version": "0.15.0",
|
|
767
|
+
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-linux-x64/-/codex-acp-linux-x64-0.15.0.tgz",
|
|
768
|
+
"integrity": "sha512-WtqI8KGX9z7XvdkazumYraoDwpip5lFBRtFXoIwYCSBoDZdOqQsfNQndIfTDttfQ1BdZYKczDnrfbRaiIFU9UA==",
|
|
769
769
|
"cpu": [
|
|
770
770
|
"x64"
|
|
771
771
|
],
|
|
@@ -779,9 +779,9 @@
|
|
|
779
779
|
}
|
|
780
780
|
},
|
|
781
781
|
"node_modules/@zed-industries/codex-acp-win32-arm64": {
|
|
782
|
-
"version": "0.
|
|
783
|
-
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-win32-arm64/-/codex-acp-win32-arm64-0.
|
|
784
|
-
"integrity": "sha512-
|
|
782
|
+
"version": "0.15.0",
|
|
783
|
+
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-win32-arm64/-/codex-acp-win32-arm64-0.15.0.tgz",
|
|
784
|
+
"integrity": "sha512-L+OFIPOzAuxsImlq8E227MZxgujMLMEJSqiR9QjZq8fiIFCKh/HnxmvyXvjWaHbJdb1pZ09WKe3MNwV9ln/+GQ==",
|
|
785
785
|
"cpu": [
|
|
786
786
|
"arm64"
|
|
787
787
|
],
|
|
@@ -795,9 +795,9 @@
|
|
|
795
795
|
}
|
|
796
796
|
},
|
|
797
797
|
"node_modules/@zed-industries/codex-acp-win32-x64": {
|
|
798
|
-
"version": "0.
|
|
799
|
-
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-win32-x64/-/codex-acp-win32-x64-0.
|
|
800
|
-
"integrity": "sha512-
|
|
798
|
+
"version": "0.15.0",
|
|
799
|
+
"resolved": "https://registry.npmjs.org/@zed-industries/codex-acp-win32-x64/-/codex-acp-win32-x64-0.15.0.tgz",
|
|
800
|
+
"integrity": "sha512-LDnADpCg1Rzbkyxs4hMaOvRwNa68KLp8CoNVom8ZE/sChSvcDrj/RCoMsZWrARJGWs7EQ9zYeLoeVk5VcVQoPQ==",
|
|
801
801
|
"cpu": [
|
|
802
802
|
"x64"
|
|
803
803
|
],
|
|
@@ -824,12 +824,12 @@
|
|
|
824
824
|
}
|
|
825
825
|
},
|
|
826
826
|
"node_modules/acpx": {
|
|
827
|
-
"version": "0.
|
|
828
|
-
"resolved": "https://registry.npmjs.org/acpx/-/acpx-0.
|
|
829
|
-
"integrity": "sha512-
|
|
827
|
+
"version": "0.10.0",
|
|
828
|
+
"resolved": "https://registry.npmjs.org/acpx/-/acpx-0.10.0.tgz",
|
|
829
|
+
"integrity": "sha512-hd48XV03gG3sd409T1lDrOKJTTz1ap4g0wrndXjxQ590tN85pBYlvfNLyerybvGRrtUGsZjNdt99r1jpIt6ukA==",
|
|
830
830
|
"license": "MIT",
|
|
831
831
|
"dependencies": {
|
|
832
|
-
"@agentclientprotocol/sdk": "^0.
|
|
832
|
+
"@agentclientprotocol/sdk": "^0.22.1",
|
|
833
833
|
"commander": "^14.0.3",
|
|
834
834
|
"skillflag": "^0.1.4",
|
|
835
835
|
"tsx": "^4.22.0",
|
|
@@ -842,15 +842,6 @@
|
|
|
842
842
|
"node": ">=22.13.0"
|
|
843
843
|
}
|
|
844
844
|
},
|
|
845
|
-
"node_modules/acpx/node_modules/@agentclientprotocol/sdk": {
|
|
846
|
-
"version": "0.21.1",
|
|
847
|
-
"resolved": "https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-0.21.1.tgz",
|
|
848
|
-
"integrity": "sha512-ZTLH+o9QxcZDLX/9ww+W7C2iExnXFM+vD/uGFVSlR61Kzj9FaxUqBC6Rv/kwgA7qVWYUEI9c5ZNqCuO9PM4rKg==",
|
|
849
|
-
"license": "Apache-2.0",
|
|
850
|
-
"peerDependencies": {
|
|
851
|
-
"zod": "^3.25.0 || ^4.0.0"
|
|
852
|
-
}
|
|
853
|
-
},
|
|
854
845
|
"node_modules/ajv": {
|
|
855
846
|
"version": "8.20.0",
|
|
856
847
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
|
|
@@ -1834,9 +1825,9 @@
|
|
|
1834
1825
|
}
|
|
1835
1826
|
},
|
|
1836
1827
|
"node_modules/qs": {
|
|
1837
|
-
"version": "6.
|
|
1838
|
-
"resolved": "https://registry.npmjs.org/qs/-/qs-6.
|
|
1839
|
-
"integrity": "sha512-
|
|
1828
|
+
"version": "6.15.2",
|
|
1829
|
+
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
|
|
1830
|
+
"integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==",
|
|
1840
1831
|
"license": "BSD-3-Clause",
|
|
1841
1832
|
"dependencies": {
|
|
1842
1833
|
"side-channel": "^1.1.0"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/acpx",
|
|
3
|
-
"version": "2026.5.
|
|
3
|
+
"version": "2026.5.26-beta.1",
|
|
4
4
|
"description": "OpenClaw ACP runtime backend",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@agentclientprotocol/claude-agent-acp": "0.
|
|
12
|
-
"@zed-industries/codex-acp": "0.
|
|
13
|
-
"acpx": "0.
|
|
11
|
+
"@agentclientprotocol/claude-agent-acp": "0.37.0",
|
|
12
|
+
"@zed-industries/codex-acp": "0.15.0",
|
|
13
|
+
"acpx": "0.10.0",
|
|
14
14
|
"zod": "4.4.3"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
"minHostVersion": ">=2026.4.25"
|
|
27
27
|
},
|
|
28
28
|
"compat": {
|
|
29
|
-
"pluginApi": ">=2026.5.
|
|
29
|
+
"pluginApi": ">=2026.5.26-beta.1"
|
|
30
30
|
},
|
|
31
31
|
"build": {
|
|
32
|
-
"openclawVersion": "2026.5.
|
|
32
|
+
"openclawVersion": "2026.5.26-beta.1",
|
|
33
33
|
"staticAssets": [
|
|
34
34
|
{
|
|
35
35
|
"source": "./src/runtime-internals/mcp-proxy.mjs",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"skills/**"
|
|
62
62
|
],
|
|
63
63
|
"peerDependencies": {
|
|
64
|
-
"openclaw": ">=2026.5.
|
|
64
|
+
"openclaw": ">=2026.5.26-beta.1"
|
|
65
65
|
},
|
|
66
66
|
"peerDependenciesMeta": {
|
|
67
67
|
"openclaw": {
|