@agentrq/acp-gateway 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -1
- package/dist/__tests__/acpClient.test.js +232 -0
- package/dist/__tests__/acpClient.test.js.map +1 -1
- package/dist/__tests__/agentInstall.test.js +342 -0
- package/dist/__tests__/agentInstall.test.js.map +1 -0
- package/dist/__tests__/auth.test.js +283 -0
- package/dist/__tests__/auth.test.js.map +1 -0
- package/dist/__tests__/index.test.js +401 -8
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/__tests__/registry.test.js +175 -0
- package/dist/__tests__/registry.test.js.map +1 -0
- package/dist/acpClient.js +45 -6
- package/dist/acpClient.js.map +1 -1
- package/dist/agentInstall.js +241 -0
- package/dist/agentInstall.js.map +1 -0
- package/dist/auth.js +189 -0
- package/dist/auth.js.map +1 -0
- package/dist/index.js +375 -32
- package/dist/index.js.map +1 -1
- package/dist/mcpClient.js +1 -1
- package/dist/registry.js +118 -0
- package/dist/registry.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from "vitest";
|
|
2
|
+
import { DEFAULT_REGISTRY_URL, availableKinds, describeAgents, fetchRegistry, findAgent, hostPlatformTarget, packageLaunchSpec, selectBinaryTarget, } from "../registry.js";
|
|
3
|
+
const gemini = {
|
|
4
|
+
id: "gemini",
|
|
5
|
+
name: "Gemini CLI",
|
|
6
|
+
version: "0.58.0",
|
|
7
|
+
description: "Google's official CLI for Gemini",
|
|
8
|
+
distribution: {
|
|
9
|
+
npx: { package: "@google/gemini-cli@0.58.0", args: ["--acp"] },
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
const antigravity = {
|
|
13
|
+
id: "antigravity-acp",
|
|
14
|
+
name: "Google Antigravity",
|
|
15
|
+
version: "1.0.0",
|
|
16
|
+
description: "Google's AI coding agent",
|
|
17
|
+
distribution: {
|
|
18
|
+
binary: {
|
|
19
|
+
"darwin-aarch64": {
|
|
20
|
+
archive: "https://dl.google.com/agy/darwin-arm64.zip",
|
|
21
|
+
cmd: "./agy_acp_server.par",
|
|
22
|
+
},
|
|
23
|
+
"linux-x86_64": {
|
|
24
|
+
archive: "https://dl.google.com/agy/linux-x86_64.zip",
|
|
25
|
+
sha256: "a".repeat(64),
|
|
26
|
+
cmd: "./agy_acp_server.par",
|
|
27
|
+
args: ["--uid="],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
const fastAgent = {
|
|
33
|
+
id: "fast-agent",
|
|
34
|
+
name: "fast-agent",
|
|
35
|
+
version: "1.0.0",
|
|
36
|
+
description: "A Python agent",
|
|
37
|
+
distribution: { uvx: { package: "fast-agent-mcp", args: ["serve"] } },
|
|
38
|
+
};
|
|
39
|
+
const registry = {
|
|
40
|
+
version: "1.0.0",
|
|
41
|
+
agents: [gemini, antigravity, fastAgent],
|
|
42
|
+
};
|
|
43
|
+
function jsonResponse(body, init = {}) {
|
|
44
|
+
return {
|
|
45
|
+
ok: true,
|
|
46
|
+
status: 200,
|
|
47
|
+
statusText: "OK",
|
|
48
|
+
json: async () => body,
|
|
49
|
+
...init,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
describe("registry", () => {
|
|
53
|
+
describe("hostPlatformTarget", () => {
|
|
54
|
+
it("maps Node's platform and arch onto the registry's identifiers", () => {
|
|
55
|
+
expect(hostPlatformTarget("darwin", "arm64")).toBe("darwin-aarch64");
|
|
56
|
+
expect(hostPlatformTarget("darwin", "x64")).toBe("darwin-x86_64");
|
|
57
|
+
expect(hostPlatformTarget("linux", "arm64")).toBe("linux-aarch64");
|
|
58
|
+
expect(hostPlatformTarget("linux", "x64")).toBe("linux-x86_64");
|
|
59
|
+
expect(hostPlatformTarget("win32", "x64")).toBe("windows-x86_64");
|
|
60
|
+
expect(hostPlatformTarget("win32", "arm64")).toBe("windows-aarch64");
|
|
61
|
+
});
|
|
62
|
+
it("returns nothing for platforms the registry does not publish for", () => {
|
|
63
|
+
expect(hostPlatformTarget("freebsd", "x64")).toBeUndefined();
|
|
64
|
+
expect(hostPlatformTarget("linux", "ppc64")).toBeUndefined();
|
|
65
|
+
});
|
|
66
|
+
it("describes the machine it is running on by default", () => {
|
|
67
|
+
// Every platform this package supports is one the registry publishes for.
|
|
68
|
+
expect(hostPlatformTarget()).toMatch(/^(darwin|linux|windows)-(aarch64|x86_64)$/);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe("fetchRegistry", () => {
|
|
72
|
+
it("fetches the published index by default", async () => {
|
|
73
|
+
const fetchImpl = vi.fn().mockResolvedValue(jsonResponse(registry));
|
|
74
|
+
expect(await fetchRegistry(undefined, fetchImpl)).toEqual(registry);
|
|
75
|
+
expect(fetchImpl).toHaveBeenCalledWith(DEFAULT_REGISTRY_URL);
|
|
76
|
+
});
|
|
77
|
+
it("accepts a different registry so a local copy can be used", async () => {
|
|
78
|
+
const fetchImpl = vi.fn().mockResolvedValue(jsonResponse(registry));
|
|
79
|
+
await fetchRegistry("http://localhost:9000/registry.json", fetchImpl);
|
|
80
|
+
expect(fetchImpl).toHaveBeenCalledWith("http://localhost:9000/registry.json");
|
|
81
|
+
});
|
|
82
|
+
it("reports a failed request", async () => {
|
|
83
|
+
const fetchImpl = vi
|
|
84
|
+
.fn()
|
|
85
|
+
.mockResolvedValue({ ok: false, status: 404, statusText: "Not Found" });
|
|
86
|
+
await expect(fetchRegistry(DEFAULT_REGISTRY_URL, fetchImpl)).rejects.toThrow(/404 Not Found/);
|
|
87
|
+
});
|
|
88
|
+
it("rejects a response that is not a registry index", async () => {
|
|
89
|
+
const fetchImpl = vi.fn().mockResolvedValue(jsonResponse({ nope: true }));
|
|
90
|
+
await expect(fetchRegistry(DEFAULT_REGISTRY_URL, fetchImpl)).rejects.toThrow(/did not return an ACP registry index/);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
describe("findAgent", () => {
|
|
94
|
+
it("finds an agent by id", () => {
|
|
95
|
+
expect(findAgent(registry, "gemini")).toBe(gemini);
|
|
96
|
+
});
|
|
97
|
+
it("returns nothing for an unknown id", () => {
|
|
98
|
+
expect(findAgent(registry, "nope")).toBeUndefined();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe("availableKinds", () => {
|
|
102
|
+
it("lists the distributions that can run here", () => {
|
|
103
|
+
expect(availableKinds(gemini, "darwin-aarch64")).toEqual(["npx"]);
|
|
104
|
+
expect(availableKinds(fastAgent, "darwin-aarch64")).toEqual(["uvx"]);
|
|
105
|
+
expect(availableKinds(antigravity, "darwin-aarch64")).toEqual(["binary"]);
|
|
106
|
+
});
|
|
107
|
+
it("omits a binary the registry does not publish for this platform", () => {
|
|
108
|
+
expect(availableKinds(antigravity, "windows-aarch64")).toEqual([]);
|
|
109
|
+
expect(availableKinds(antigravity, undefined)).toEqual([]);
|
|
110
|
+
});
|
|
111
|
+
it("lists every distribution an agent offers", () => {
|
|
112
|
+
const both = {
|
|
113
|
+
...gemini,
|
|
114
|
+
distribution: { ...gemini.distribution, binary: antigravity.distribution.binary },
|
|
115
|
+
};
|
|
116
|
+
expect(availableKinds(both, "darwin-aarch64")).toEqual(["npx", "binary"]);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe("describeAgents", () => {
|
|
120
|
+
it("lists every agent with how it can be run here", () => {
|
|
121
|
+
const text = describeAgents(registry, "darwin-aarch64");
|
|
122
|
+
expect(text).toContain("gemini");
|
|
123
|
+
expect(text).toContain("Gemini CLI — npx");
|
|
124
|
+
expect(text).toContain("fast-agent");
|
|
125
|
+
});
|
|
126
|
+
it("says when an agent cannot run on this machine", () => {
|
|
127
|
+
const unavailable = {
|
|
128
|
+
version: "1.0.0",
|
|
129
|
+
agents: [{ ...antigravity, distribution: { binary: {} } }],
|
|
130
|
+
};
|
|
131
|
+
expect(describeAgents(unavailable, "darwin-aarch64")).toContain("unavailable on this platform");
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe("selectBinaryTarget", () => {
|
|
135
|
+
it("picks the build for this machine", () => {
|
|
136
|
+
expect(selectBinaryTarget(antigravity, "linux-x86_64").args).toEqual(["--uid="]);
|
|
137
|
+
});
|
|
138
|
+
it("refuses an agent that ships no binaries", () => {
|
|
139
|
+
expect(() => selectBinaryTarget(gemini, "darwin-aarch64")).toThrow(/publishes no binary distribution/);
|
|
140
|
+
});
|
|
141
|
+
it("refuses a platform the registry does not cover", () => {
|
|
142
|
+
expect(() => selectBinaryTarget(antigravity, undefined)).toThrow(/registry publishes no binaries for/);
|
|
143
|
+
});
|
|
144
|
+
it("refuses to substitute another platform's build", () => {
|
|
145
|
+
expect(() => selectBinaryTarget(antigravity, "windows-x86_64")).toThrow(/no binary for windows-x86_64 \(available: darwin-aarch64, linux-x86_64\)/);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
describe("packageLaunchSpec", () => {
|
|
149
|
+
it("runs npm packages through npx without prompting", () => {
|
|
150
|
+
expect(packageLaunchSpec("npx", gemini.distribution.npx)).toEqual({
|
|
151
|
+
command: "npx",
|
|
152
|
+
args: ["-y", "@google/gemini-cli@0.58.0", "--acp"],
|
|
153
|
+
env: undefined,
|
|
154
|
+
kind: "npx",
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
it("runs PyPI packages through uvx", () => {
|
|
158
|
+
expect(packageLaunchSpec("uvx", fastAgent.distribution.uvx)).toEqual({
|
|
159
|
+
command: "uvx",
|
|
160
|
+
args: ["fast-agent-mcp", "serve"],
|
|
161
|
+
env: undefined,
|
|
162
|
+
kind: "uvx",
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
it("passes the distribution's env through and tolerates missing args", () => {
|
|
166
|
+
expect(packageLaunchSpec("npx", { package: "some-agent", env: { KEY: "v" } })).toEqual({
|
|
167
|
+
command: "npx",
|
|
168
|
+
args: ["-y", "some-agent"],
|
|
169
|
+
env: { KEY: "v" },
|
|
170
|
+
kind: "npx",
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/__tests__/registry.test.ts"],"names":[],"mappings":"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"}
|
package/dist/acpClient.js
CHANGED
|
@@ -6,12 +6,19 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from "node:fs/promises";
|
|
8
8
|
import * as path from "node:path";
|
|
9
|
+
/** Identifies a tool call routed through an agentrq MCP server. */
|
|
10
|
+
const AGENTRQ_TOOL_PATTERN = /agentrq-[a-zA-Z0-9]{11}/;
|
|
9
11
|
export class AgentRQACPClient {
|
|
10
12
|
mcpBridge;
|
|
11
13
|
getTaskIdForSession;
|
|
12
14
|
replyBuffers = new Map();
|
|
13
15
|
// chatId → text sent by the agent via the reply MCP tool (for dedup in flushReply)
|
|
14
16
|
agentReplies = new Map();
|
|
17
|
+
// toolCallId → details seen on session updates. A `tool_call` update always
|
|
18
|
+
// carries a title, but the permission request for that same call may omit it
|
|
19
|
+
// (ACP marks it optional there, and codex-acp sends it bare), which would
|
|
20
|
+
// otherwise leave us unable to tell an agentrq MCP call from anything else.
|
|
21
|
+
toolCallDetails = new Map();
|
|
15
22
|
constructor(mcpBridge, getTaskIdForSession = () => undefined) {
|
|
16
23
|
this.mcpBridge = mcpBridge;
|
|
17
24
|
this.getTaskIdForSession = getTaskIdForSession;
|
|
@@ -42,10 +49,14 @@ export class AgentRQACPClient {
|
|
|
42
49
|
}
|
|
43
50
|
async requestPermission(params) {
|
|
44
51
|
const requestId = params.toolCall.toolCallId;
|
|
45
|
-
|
|
52
|
+
// Fall back to what the earlier session update reported for this same tool
|
|
53
|
+
// call: the permission request itself may carry no title or input.
|
|
54
|
+
const remembered = this.toolCallDetails.get(requestId);
|
|
55
|
+
this.toolCallDetails.delete(requestId);
|
|
56
|
+
const toolTitle = params.toolCall.title ?? remembered?.title ?? "Unknown Tool";
|
|
57
|
+
const rawInput = params.toolCall.rawInput ?? remembered?.rawInput;
|
|
46
58
|
// Auto-allow tool calls that contain the pattern: agentrq-<11 chars a-zA-Z0-9>
|
|
47
|
-
|
|
48
|
-
if (agentrqToolPattern.test(toolTitle)) {
|
|
59
|
+
if (AGENTRQ_TOOL_PATTERN.test(toolTitle)) {
|
|
49
60
|
console.error(`\n🔓 ACP Auto-allowing tool call: ${toolTitle} (ID: ${requestId})`);
|
|
50
61
|
const option = params.options.find(o => o.kind.startsWith("allow") ||
|
|
51
62
|
o.name.toLowerCase().includes("allow") ||
|
|
@@ -66,7 +77,7 @@ export class AgentRQACPClient {
|
|
|
66
77
|
task_id: taskId,
|
|
67
78
|
tool_name: toolTitle,
|
|
68
79
|
description: toolTitle,
|
|
69
|
-
input_preview: JSON.stringify(
|
|
80
|
+
input_preview: JSON.stringify(rawInput ?? {}),
|
|
70
81
|
};
|
|
71
82
|
console.error(`[acp] Bridge Session ID: ${this.mcpBridge.getSessionId() ?? "unknown"}`);
|
|
72
83
|
console.error(`[acp] Sending permission request notification:`, JSON.stringify(payload, null, 2));
|
|
@@ -140,6 +151,31 @@ export class AgentRQACPClient {
|
|
|
140
151
|
this.mcpBridge.on("verdict", handler);
|
|
141
152
|
});
|
|
142
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Records what a tool call is, keyed by its id, so that a permission request
|
|
156
|
+
* arriving without a title or input can still be identified. ACP requires a
|
|
157
|
+
* title on the `tool_call` session update but leaves it optional on the
|
|
158
|
+
* permission request for that same call — codex-acp sends the request bare,
|
|
159
|
+
* which previously surfaced agentrq's own MCP calls to the human as
|
|
160
|
+
* "Unknown Tool" instead of being auto-allowed.
|
|
161
|
+
*/
|
|
162
|
+
rememberToolCall(update) {
|
|
163
|
+
const id = update.toolCallId;
|
|
164
|
+
if (!id)
|
|
165
|
+
return;
|
|
166
|
+
// A finished call will never ask for permission, so drop what we kept
|
|
167
|
+
// rather than growing the map for the lifetime of the session.
|
|
168
|
+
if (update.status === "completed" || update.status === "failed") {
|
|
169
|
+
this.toolCallDetails.delete(id);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const previous = this.toolCallDetails.get(id);
|
|
173
|
+
const title = update.title ?? previous?.title;
|
|
174
|
+
const rawInput = update.rawInput ?? previous?.rawInput;
|
|
175
|
+
if (title === undefined && rawInput === undefined)
|
|
176
|
+
return;
|
|
177
|
+
this.toolCallDetails.set(id, { title, rawInput });
|
|
178
|
+
}
|
|
143
179
|
async sessionUpdate(params) {
|
|
144
180
|
const update = params.update;
|
|
145
181
|
switch (update.sessionUpdate) {
|
|
@@ -150,9 +186,12 @@ export class AgentRQACPClient {
|
|
|
150
186
|
this.replyBuffers.set(sid, (this.replyBuffers.get(sid) ?? "") + update.content.text);
|
|
151
187
|
}
|
|
152
188
|
break;
|
|
189
|
+
case "tool_call_update":
|
|
190
|
+
this.rememberToolCall(update);
|
|
191
|
+
break;
|
|
153
192
|
case "tool_call": {
|
|
154
|
-
|
|
155
|
-
if (update.title &&
|
|
193
|
+
this.rememberToolCall(update);
|
|
194
|
+
if (update.title && AGENTRQ_TOOL_PATTERN.test(update.title)) {
|
|
156
195
|
// Track completed reply calls so flushReply can skip exact duplicates
|
|
157
196
|
if (update.status === "completed" &&
|
|
158
197
|
update.title.split(/[\s(]/)[0] === "reply" &&
|
package/dist/acpClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acpClient.js","sourceRoot":"","sources":["../src/acpClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acpClient.js","sourceRoot":"","sources":["../src/acpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agentInstall.ts
|
|
3
|
+
*
|
|
4
|
+
* Downloads, verifies and unpacks the binary distribution of a registry agent,
|
|
5
|
+
* caching it so the download happens once.
|
|
6
|
+
*
|
|
7
|
+
* This is the one place in the gateway that fetches a third-party executable
|
|
8
|
+
* and runs it, so the rules here are deliberately strict: an archive is only
|
|
9
|
+
* installed when the registry publishes a `sha256` that the download matches,
|
|
10
|
+
* unless the user has explicitly said otherwise.
|
|
11
|
+
*/
|
|
12
|
+
import { createHash } from "node:crypto";
|
|
13
|
+
import { spawn } from "node:child_process";
|
|
14
|
+
import { chmod, cp, mkdir, mkdtemp, rename, rm, writeFile } from "node:fs/promises";
|
|
15
|
+
import { existsSync } from "node:fs";
|
|
16
|
+
import { homedir, tmpdir } from "node:os";
|
|
17
|
+
import * as path from "node:path";
|
|
18
|
+
import { availableKinds, findAgent, packageLaunchSpec, selectBinaryTarget, } from "./registry.js";
|
|
19
|
+
/**
|
|
20
|
+
* Where downloaded agents live, unless overridden.
|
|
21
|
+
*
|
|
22
|
+
* Follows each platform's own convention: `%LOCALAPPDATA%` on Windows,
|
|
23
|
+
* `XDG_CACHE_HOME` where it is set, and `~/.cache` otherwise.
|
|
24
|
+
*/
|
|
25
|
+
export function defaultCacheDir(platform = process.platform, env = process.env) {
|
|
26
|
+
const base = platform === "win32"
|
|
27
|
+
? env.LOCALAPPDATA || path.join(homedir(), "AppData", "Local")
|
|
28
|
+
: env.XDG_CACHE_HOME || path.join(homedir(), ".cache");
|
|
29
|
+
return path.join(base, "acp-gateway", "agents");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Classifies an archive by its URL.
|
|
33
|
+
*
|
|
34
|
+
* The registry documents exactly which formats may appear; anything else is a
|
|
35
|
+
* raw executable to be saved as-is.
|
|
36
|
+
*/
|
|
37
|
+
export function archiveKind(url) {
|
|
38
|
+
const pathname = url.split("?")[0].split("#")[0].toLowerCase();
|
|
39
|
+
if (pathname.endsWith(".zip"))
|
|
40
|
+
return "zip";
|
|
41
|
+
if (pathname.endsWith(".tar.gz") || pathname.endsWith(".tgz"))
|
|
42
|
+
return "tar.gz";
|
|
43
|
+
if (pathname.endsWith(".tar.bz2") || pathname.endsWith(".tbz2"))
|
|
44
|
+
return "tar.bz2";
|
|
45
|
+
return "raw";
|
|
46
|
+
}
|
|
47
|
+
/** The directory one agent build is unpacked into. */
|
|
48
|
+
export function installDir(cacheDir, agentId, target, version) {
|
|
49
|
+
// The version is part of the path so a registry bump installs alongside the
|
|
50
|
+
// old build rather than half-overwriting it.
|
|
51
|
+
return path.join(cacheDir, `${agentId}@${version}`, target);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Resolves the registry's `cmd` inside the install directory.
|
|
55
|
+
*
|
|
56
|
+
* `cmd` is third-party text, so a path that climbs out of the directory — and
|
|
57
|
+
* would have us run something else entirely — is rejected rather than resolved.
|
|
58
|
+
*/
|
|
59
|
+
export function resolveExecutable(dir, cmd) {
|
|
60
|
+
const executable = path.resolve(dir, cmd);
|
|
61
|
+
const root = path.resolve(dir);
|
|
62
|
+
if (executable !== root && !executable.startsWith(root + path.sep)) {
|
|
63
|
+
throw new Error(`Agent command "${cmd}" points outside its install directory; refusing to run it.`);
|
|
64
|
+
}
|
|
65
|
+
return executable;
|
|
66
|
+
}
|
|
67
|
+
export function sha256(data) {
|
|
68
|
+
return createHash("sha256").update(data).digest("hex");
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Refuses an archive we cannot vouch for.
|
|
72
|
+
*
|
|
73
|
+
* Roughly half the registry's binary targets publish no checksum. Running one
|
|
74
|
+
* means trusting whatever the vendor's host served, so it takes an explicit
|
|
75
|
+
* opt-in rather than happening quietly.
|
|
76
|
+
*/
|
|
77
|
+
export function assertVerifiable(agent, target, allowUnverified) {
|
|
78
|
+
if (target.sha256 || allowUnverified)
|
|
79
|
+
return;
|
|
80
|
+
throw new Error(`The ACP registry publishes no sha256 for "${agent.id}" on this platform, so the ` +
|
|
81
|
+
`download cannot be verified. Re-run with --allow-unverified-agent to install it anyway, ` +
|
|
82
|
+
`or install the agent yourself and pass it after --.`);
|
|
83
|
+
}
|
|
84
|
+
/** Checks a download against the registry's checksum. */
|
|
85
|
+
export function assertChecksum(agent, target, data) {
|
|
86
|
+
if (!target.sha256)
|
|
87
|
+
return;
|
|
88
|
+
const actual = sha256(data);
|
|
89
|
+
if (actual.toLowerCase() !== target.sha256.toLowerCase()) {
|
|
90
|
+
throw new Error(`Checksum mismatch for "${agent.id}": the registry expects ${target.sha256.toLowerCase()} ` +
|
|
91
|
+
`but ${target.archive} produced ${actual}. Refusing to run it.`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Downloads an archive into memory so it can be checksummed before it touches disk. */
|
|
95
|
+
export async function downloadArchive(url, fetchImpl = fetch) {
|
|
96
|
+
const response = await fetchImpl(url);
|
|
97
|
+
if (!response.ok) {
|
|
98
|
+
throw new Error(`Failed to download ${url}: ${response.status} ${response.statusText}`);
|
|
99
|
+
}
|
|
100
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
101
|
+
}
|
|
102
|
+
/** Runs an extraction tool, failing with its own diagnostics attached. */
|
|
103
|
+
export async function runExtractionTool(command, args, cwd) {
|
|
104
|
+
const child = spawn(command, args, { cwd, stdio: ["ignore", "ignore", "pipe"] });
|
|
105
|
+
let stderr = "";
|
|
106
|
+
child.stderr?.on("data", (chunk) => {
|
|
107
|
+
stderr += chunk.toString();
|
|
108
|
+
});
|
|
109
|
+
await new Promise((resolve, reject) => {
|
|
110
|
+
child.on("error", (err) => reject(new Error(`Could not run "${command}" to unpack the agent archive: ${err.message}. ` +
|
|
111
|
+
`Install it, or install the agent yourself and pass it after --.`)));
|
|
112
|
+
child.on("exit", (code) => {
|
|
113
|
+
if (code === 0)
|
|
114
|
+
return resolve();
|
|
115
|
+
reject(new Error(`"${command}" failed to unpack the agent archive (code=${code}): ${stderr.trim()}`));
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Unpacks an archive into `dir`.
|
|
121
|
+
*
|
|
122
|
+
* Uses the system's own tools rather than adding archive libraries as
|
|
123
|
+
* dependencies. `tar` handles the tarballs everywhere and zips on macOS and
|
|
124
|
+
* Windows, where it is bsdtar; GNU tar cannot read zips, so Linux falls back
|
|
125
|
+
* to `unzip`.
|
|
126
|
+
*/
|
|
127
|
+
export async function extractArchive(data, kind, dir, cmd, platform = process.platform) {
|
|
128
|
+
await mkdir(dir, { recursive: true });
|
|
129
|
+
if (kind === "raw") {
|
|
130
|
+
// No archive to unpack: the download is the executable itself.
|
|
131
|
+
await writeFile(path.join(dir, path.basename(cmd)), data);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const archivePath = path.join(dir, `archive.${kind}`);
|
|
135
|
+
await writeFile(archivePath, data);
|
|
136
|
+
try {
|
|
137
|
+
if (kind === "zip" && platform === "linux") {
|
|
138
|
+
await runExtractionTool("unzip", ["-q", "-o", archivePath], dir);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
await runExtractionTool("tar", ["-xf", archivePath], dir);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
await rm(archivePath, { force: true });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Makes a registry agent runnable, returning the command that launches it.
|
|
150
|
+
*
|
|
151
|
+
* A cached install is reused as-is; the version in the cache path means a
|
|
152
|
+
* registry bump installs a fresh copy rather than reusing a stale one.
|
|
153
|
+
*/
|
|
154
|
+
export async function installBinaryAgent({ agent, target, platformTarget, cacheDir, allowUnverified = false, fetchImpl = fetch, platform = process.platform, }) {
|
|
155
|
+
cacheDir ??= defaultCacheDir(platform);
|
|
156
|
+
const dir = installDir(cacheDir, agent.id, platformTarget, agent.version);
|
|
157
|
+
const executable = resolveExecutable(dir, target.cmd);
|
|
158
|
+
const spec = {
|
|
159
|
+
command: executable,
|
|
160
|
+
args: target.args ?? [],
|
|
161
|
+
env: target.env,
|
|
162
|
+
kind: "binary",
|
|
163
|
+
};
|
|
164
|
+
if (existsSync(executable)) {
|
|
165
|
+
console.error(`[registry] Using cached ${agent.id} ${agent.version} from ${dir}`);
|
|
166
|
+
return spec;
|
|
167
|
+
}
|
|
168
|
+
assertVerifiable(agent, target, allowUnverified);
|
|
169
|
+
console.error(`[registry] Downloading ${agent.id} ${agent.version} from ${target.archive}`);
|
|
170
|
+
const data = await downloadArchive(target.archive, fetchImpl);
|
|
171
|
+
assertChecksum(agent, target, data);
|
|
172
|
+
if (!target.sha256) {
|
|
173
|
+
console.error(`[registry] ⚠️ ${agent.id} publishes no checksum; installing it unverified at your request.`);
|
|
174
|
+
}
|
|
175
|
+
// Unpack somewhere temporary and move into place only once it succeeded, so
|
|
176
|
+
// a failed extraction never leaves a half-installed agent to be cached.
|
|
177
|
+
const staging = await mkdtemp(path.join(tmpdir(), `acp-gateway-${agent.id}-`));
|
|
178
|
+
try {
|
|
179
|
+
await extractArchive(data, archiveKind(target.archive), staging, target.cmd, platform);
|
|
180
|
+
const staged = resolveExecutable(staging, target.cmd);
|
|
181
|
+
if (!existsSync(staged)) {
|
|
182
|
+
throw new Error(`The archive for "${agent.id}" does not contain "${target.cmd}" where the registry says it should.`);
|
|
183
|
+
}
|
|
184
|
+
await rm(dir, { recursive: true, force: true });
|
|
185
|
+
await mkdir(path.dirname(dir), { recursive: true });
|
|
186
|
+
await moveInto(staging, dir);
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
await rm(staging, { recursive: true, force: true });
|
|
190
|
+
}
|
|
191
|
+
// Archive formats do not always carry the executable bit. Windows has no
|
|
192
|
+
// such bit — chmod there only toggles the read-only flag — so skip it.
|
|
193
|
+
if (platform !== "win32") {
|
|
194
|
+
await chmod(executable, 0o755);
|
|
195
|
+
}
|
|
196
|
+
console.error(`[registry] Installed ${agent.id} ${agent.version} to ${dir}`);
|
|
197
|
+
return spec;
|
|
198
|
+
}
|
|
199
|
+
/** Moves a staged install into the cache, copying across filesystems if needed. */
|
|
200
|
+
export async function moveInto(from, to) {
|
|
201
|
+
try {
|
|
202
|
+
await rename(from, to);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
// rename() fails across devices — the temp dir is often a different mount.
|
|
206
|
+
await cp(from, to, { recursive: true });
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Turns a registry id into the command that runs that agent, installing it
|
|
211
|
+
* first where the only distribution is a binary.
|
|
212
|
+
*
|
|
213
|
+
* Package distributions are preferred over binaries: npm and PyPI verify what
|
|
214
|
+
* they serve, and nothing has to be downloaded, unpacked or cached here.
|
|
215
|
+
*/
|
|
216
|
+
export async function resolveAgentLaunch({ id, registry, platformTarget, cacheDir, allowUnverified = false, fetchImpl = fetch, platform = process.platform, }) {
|
|
217
|
+
const agent = findAgent(registry, id);
|
|
218
|
+
if (!agent) {
|
|
219
|
+
throw new Error(`No agent "${id}" in the ACP registry. Run --list-agents to see what it publishes.`);
|
|
220
|
+
}
|
|
221
|
+
const kinds = availableKinds(agent, platformTarget);
|
|
222
|
+
if (!kinds.length) {
|
|
223
|
+
const published = Object.keys(agent.distribution).join(", ") || "nothing";
|
|
224
|
+
throw new Error(`The ACP registry publishes no build of "${id}" for ${platformTarget ?? `${process.platform}/${process.arch}`} ` +
|
|
225
|
+
`(it publishes: ${published}).`);
|
|
226
|
+
}
|
|
227
|
+
if (kinds.includes("npx"))
|
|
228
|
+
return packageLaunchSpec("npx", agent.distribution.npx, platform);
|
|
229
|
+
if (kinds.includes("uvx"))
|
|
230
|
+
return packageLaunchSpec("uvx", agent.distribution.uvx, platform);
|
|
231
|
+
return installBinaryAgent({
|
|
232
|
+
agent,
|
|
233
|
+
target: selectBinaryTarget(agent, platformTarget),
|
|
234
|
+
platformTarget: platformTarget,
|
|
235
|
+
cacheDir,
|
|
236
|
+
allowUnverified,
|
|
237
|
+
fetchImpl,
|
|
238
|
+
platform,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=agentInstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentInstall.js","sourceRoot":"","sources":["../src/agentInstall.ts"],"names":[],"mappings":"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"}
|