@peanut996/acp-router 0.8.0

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/agents.js ADDED
@@ -0,0 +1,430 @@
1
+ import fs from "node:fs/promises";
2
+ import { constants as fsConstants } from "node:fs";
3
+ import path from "node:path";
4
+ import { BUILT_IN_AGENTS, COMMAND_TIMEOUT_MS, CONFIG_PATH } from "./constants.js";
5
+ import { safeEnv, isPlainObject, execFileAsync } from "./utils.js";
6
+ import { readConfig, readAcpRegistry, writeJson, buildRegistryInstallHint, extractRegistryNpxPackage, buildNpxAcpFallback } from "./storage.js";
7
+ async function discoverAgents(args) {
8
+ const config = await readConfig();
9
+ const pathEntries = (process.env.PATH ?? "").split(path.delimiter).filter(Boolean);
10
+ const acpRegistry = await readAcpRegistry(config, { refresh: args.refresh === true });
11
+ const agents = await Promise.all(BUILT_IN_AGENTS.map(async (agent) => enrichAgentWithRegistry(await probeAgent(agent, config, pathEntries), acpRegistry)));
12
+ const filteredAgents = args.includeNotInstalled === false
13
+ ? agents.filter((agent) => agent.status !== "not_installed")
14
+ : agents;
15
+ const recommended = chooseAgent(agents, config, null);
16
+ return {
17
+ agents: filteredAgents,
18
+ recommendedDefaultAgent: recommended.agentId
19
+ ? { agentId: recommended.agentId, reason: recommended.reason }
20
+ : null,
21
+ registry: acpRegistry.meta,
22
+ refreshedAt: new Date().toISOString()
23
+ };
24
+ }
25
+ async function configureDispatcher(args) {
26
+ const existing = await readConfig();
27
+ const nextSafety = {
28
+ ...existing.safety,
29
+ launchExternalAgents: typeof args.launchExternalAgents === "boolean"
30
+ ? args.launchExternalAgents
31
+ : existing.safety.launchExternalAgents,
32
+ allowBypassPermissions: typeof args.allowBypassPermissions === "boolean"
33
+ ? args.allowBypassPermissions
34
+ : existing.safety.allowBypassPermissions,
35
+ defaultPermissionProfile: typeof args.defaultPermissionProfile === "string"
36
+ ? args.defaultPermissionProfile
37
+ : existing.safety.defaultPermissionProfile,
38
+ inheritEnvironment: typeof args.inheritEnvironment === "boolean"
39
+ ? args.inheritEnvironment
40
+ : existing.safety.inheritEnvironment
41
+ };
42
+ const next = {
43
+ ...existing,
44
+ defaultAgent: Object.prototype.hasOwnProperty.call(args, "defaultAgent")
45
+ ? (args.defaultAgent ?? null)
46
+ : existing.defaultAgent,
47
+ modeDefaults: {
48
+ ...existing.modeDefaults,
49
+ ...(isPlainObject(args.modeDefaults) ? args.modeDefaults : {})
50
+ },
51
+ disabledAgents: Array.isArray(args.disabledAgents)
52
+ ? Array.from(new Set(args.disabledAgents.filter((value) => typeof value === "string" && value.trim())))
53
+ : existing.disabledAgents,
54
+ allowCurrentDirectory: typeof args.allowCurrentDirectory === "boolean"
55
+ ? args.allowCurrentDirectory
56
+ : existing.allowCurrentDirectory,
57
+ registryEnabled: typeof args.registryEnabled === "boolean"
58
+ ? args.registryEnabled
59
+ : existing.registryEnabled,
60
+ registryUrl: typeof args.registryUrl === "string" && args.registryUrl.trim()
61
+ ? args.registryUrl.trim()
62
+ : existing.registryUrl,
63
+ registryCacheTtlSec: Number.isInteger(args.registryCacheTtlSec)
64
+ ? args.registryCacheTtlSec
65
+ : existing.registryCacheTtlSec,
66
+ safety: nextSafety,
67
+ updatedAt: new Date().toISOString()
68
+ };
69
+ await writeJson(CONFIG_PATH, next);
70
+ return { config: next };
71
+ }
72
+ function enrichAgentWithRegistry(agent, acpRegistry) {
73
+ const registryAgent = acpRegistry.agentsByRouterId.get(agent.id);
74
+ if (!registryAgent)
75
+ return agent;
76
+ const installHint = buildRegistryInstallHint(registryAgent);
77
+ const registryVersion = typeof registryAgent.version === "string" && registryAgent.version.trim()
78
+ ? registryAgent.version.trim()
79
+ : null;
80
+ const npxPackage = extractRegistryNpxPackage(registryAgent);
81
+ const npxFallback = agent.acp && !agent.acp.available && npxPackage
82
+ ? buildNpxAcpFallback(npxPackage)
83
+ : null;
84
+ const acpVersionFromRegistry = Boolean(agent.acp?.available && !agent.acp.version && registryVersion);
85
+ const notes = acpVersionFromRegistry
86
+ ? agent.notes.filter((note) => !note.startsWith("ACP version probe failed:"))
87
+ : agent.notes;
88
+ const extraNotes = [];
89
+ if (npxFallback) {
90
+ extraNotes.push(`ACP adapter available via npx: ${npxFallback.launchCommand.join(" ")}`);
91
+ }
92
+ if (installHint) {
93
+ extraNotes.push(`Install hint: ${installHint}`);
94
+ }
95
+ const transport = npxFallback ? "acp_stdio" : agent.transport;
96
+ const status = npxFallback && agent.status === "not_installed" ? "available" : agent.status;
97
+ return {
98
+ ...agent,
99
+ version: agent.version ?? (acpVersionFromRegistry || npxFallback ? registryVersion : null),
100
+ displayName: agent.displayName || registryAgent.name,
101
+ description: registryAgent.description ?? null,
102
+ icon: registryAgent.icon ? { kind: "registry_url", value: registryAgent.icon } : agent.icon,
103
+ transport,
104
+ status,
105
+ registry: {
106
+ id: registryAgent.id,
107
+ name: registryAgent.name,
108
+ version: registryVersion,
109
+ repository: registryAgent.repository ?? null,
110
+ license: registryAgent.license ?? null,
111
+ distribution: registryAgent.distribution,
112
+ installHint
113
+ },
114
+ acp: agent.acp ? {
115
+ ...agent.acp,
116
+ available: npxFallback ? true : agent.acp.available,
117
+ installedPath: npxFallback ? null : agent.acp.installedPath,
118
+ launchMode: npxFallback ? "npx" : agent.acp.launchMode ?? null,
119
+ launchCommand: npxFallback ? npxFallback.launchCommand : agent.acp.launchCommand ?? null,
120
+ version: agent.acp.version ?? (agent.acp.available || npxFallback ? registryVersion : null)
121
+ } : null,
122
+ notes: [
123
+ ...notes,
124
+ `Registry: ${registryAgent.name}${registryVersion ? ` ${registryVersion}` : ""}.`,
125
+ ...extraNotes
126
+ ]
127
+ };
128
+ }
129
+ async function probeAgent(agent, config, pathEntries) {
130
+ const selection = await selectExecutable(agent, pathEntries);
131
+ const installedPath = selection.installedPath;
132
+ const acpSelection = agent.acp ? await selectExecutable({
133
+ executable: agent.acp.executable,
134
+ versionArgs: agent.acp.versionArgs ?? agent.versionArgs
135
+ }, pathEntries) : null;
136
+ const acpInstalledPath = acpSelection?.installedPath ?? null;
137
+ const disabled = config.disabledAgents.includes(agent.id);
138
+ const notes = [];
139
+ if (acpInstalledPath) {
140
+ notes.push(`Found ACP adapter at ${acpInstalledPath}`);
141
+ }
142
+ if (installedPath) {
143
+ notes.push(`Found CLI at ${installedPath}`);
144
+ }
145
+ if (notes.length === 0)
146
+ notes.push(...agent.notes);
147
+ if (selection.selectionNote)
148
+ notes.push(selection.selectionNote);
149
+ if (selection.note)
150
+ notes.push(selection.note);
151
+ if (acpSelection?.selectionNote)
152
+ notes.push(acpSelection.selectionNote);
153
+ if (acpSelection?.note)
154
+ notes.push(`ACP version probe failed: ${acpSelection.note.replace(/^Version probe failed: /, "")}`);
155
+ const status = disabled
156
+ ? "disabled"
157
+ : acpInstalledPath || installedPath
158
+ ? "available"
159
+ : "not_installed";
160
+ const transport = acpInstalledPath ? "acp_stdio" : agent.transport;
161
+ return {
162
+ id: agent.id,
163
+ displayName: agent.displayName,
164
+ status,
165
+ version: acpSelection?.version ?? selection.version,
166
+ installedPath,
167
+ transport,
168
+ command: acpInstalledPath ? `${agent.acp.executable} <acp stdio>` : agent.command,
169
+ acp: agent.acp ? {
170
+ executable: agent.acp.executable,
171
+ installedPath: acpInstalledPath,
172
+ version: acpSelection?.version ?? null,
173
+ adapterStatus: agent.acp.adapterStatus,
174
+ label: agent.acp.label,
175
+ buildArgsKey: agent.acp.buildArgsKey ?? agent.acp.executable,
176
+ available: Boolean(acpInstalledPath)
177
+ } : null,
178
+ source: agent.source,
179
+ capabilities: agent.capabilities,
180
+ icon: null,
181
+ notes
182
+ };
183
+ }
184
+ function compareExecutableProbe(a, b) {
185
+ const versionComparison = compareVersionStrings(b.version, a.version);
186
+ if (versionComparison !== 0)
187
+ return versionComparison;
188
+ return a.index - b.index;
189
+ }
190
+ function compareVersionStrings(a, b) {
191
+ const parsedA = parseVersionParts(a);
192
+ const parsedB = parseVersionParts(b);
193
+ const length = Math.max(parsedA.length, parsedB.length);
194
+ for (let index = 0; index < length; index += 1) {
195
+ const left = parsedA[index] ?? 0;
196
+ const right = parsedB[index] ?? 0;
197
+ if (left !== right)
198
+ return left - right;
199
+ }
200
+ return 0;
201
+ }
202
+ function parseVersionParts(value) {
203
+ const match = String(value ?? "").match(/\d+(?:\.\d+){0,3}/);
204
+ if (!match)
205
+ return [];
206
+ return match[0].split(".").map((part) => Number.parseInt(part, 10)).filter(Number.isFinite);
207
+ }
208
+ async function probeVersion(executablePath, versionArgs) {
209
+ try {
210
+ const { stdout, stderr } = await execFileAsync(executablePath, versionArgs, {
211
+ timeout: COMMAND_TIMEOUT_MS,
212
+ windowsHide: true,
213
+ env: safeEnv()
214
+ });
215
+ const output = `${stdout}\n${stderr}`.trim();
216
+ return {
217
+ version: output.split(/\r?\n/).map((line) => line.trim()).find(Boolean) ?? null,
218
+ note: null
219
+ };
220
+ }
221
+ catch (error) {
222
+ return {
223
+ version: null,
224
+ note: `Version probe failed: ${error.code ?? error.message}`
225
+ };
226
+ }
227
+ }
228
+ async function findExecutables(binary, pathEntries) {
229
+ const seen = new Set();
230
+ const candidates = [];
231
+ for (const entry of pathEntries) {
232
+ const candidate = path.join(entry, binary);
233
+ try {
234
+ await fs.access(candidate, fsConstants.X_OK);
235
+ const realPath = await fs.realpath(candidate).catch(() => candidate);
236
+ if (seen.has(realPath))
237
+ continue;
238
+ seen.add(realPath);
239
+ candidates.push(candidate);
240
+ }
241
+ catch {
242
+ continue;
243
+ }
244
+ }
245
+ return candidates;
246
+ }
247
+ async function selectExecutable(agent, pathEntries) {
248
+ const candidates = await findExecutables(agent.executable, pathEntries);
249
+ if (candidates.length === 0) {
250
+ return {
251
+ installedPath: null,
252
+ version: null,
253
+ note: null,
254
+ candidates: [],
255
+ selectionNote: null
256
+ };
257
+ }
258
+ const probes = await Promise.all(candidates.map(async (candidate, index) => ({
259
+ path: candidate,
260
+ index,
261
+ ...(await probeVersion(candidate, agent.versionArgs ?? []))
262
+ })));
263
+ const sorted = [...probes].sort(compareExecutableProbe);
264
+ const selected = sorted[0];
265
+ const skipped = sorted.slice(1).map((probe) => probe.version ? `${probe.path} (${probe.version})` : probe.path);
266
+ return {
267
+ installedPath: selected.path,
268
+ version: selected.version,
269
+ note: selected.note,
270
+ candidates: probes,
271
+ selectionNote: skipped.length > 0 ? `Selected ${selected.path}; skipped ${skipped.join(", ")}` : null
272
+ };
273
+ }
274
+ function chooseAgent(agents, config, mode) {
275
+ const disabled = new Set(config.disabledAgents ?? []);
276
+ const available = agents.filter((agent) => agent.status === "available" && !disabled.has(agent.id));
277
+ const explicit = config.defaultAgent && available.find((agent) => agent.id === config.defaultAgent);
278
+ if (explicit)
279
+ return { agentId: explicit.id, reason: "configured default agent" };
280
+ const modeDefault = mode ? config.modeDefaults?.[mode] : undefined;
281
+ const modeAgent = typeof modeDefault === "string" && modeDefault
282
+ ? available.find((agent) => agent.id === modeDefault)
283
+ : undefined;
284
+ if (modeAgent)
285
+ return { agentId: modeAgent.id, reason: `configured default for ${mode}` };
286
+ const acp = available.find((agent) => agent.transport === "acp_stdio");
287
+ if (acp)
288
+ return { agentId: acp.id, reason: "native ACP available" };
289
+ return { agentId: null, reason: "no available ACP agent found; CLI fallback removed" };
290
+ }
291
+ async function validateWorktree(worktree) {
292
+ if (typeof worktree !== "string" || !worktree.trim()) {
293
+ return { ok: false, reason: "worktree_required" };
294
+ }
295
+ if (!path.isAbsolute(worktree)) {
296
+ return { ok: false, reason: "worktree_must_be_absolute" };
297
+ }
298
+ try {
299
+ const stat = await fs.stat(worktree);
300
+ if (!stat.isDirectory())
301
+ return { ok: false, reason: "worktree_must_be_directory" };
302
+ await fs.access(worktree);
303
+ return { ok: true };
304
+ }
305
+ catch {
306
+ return { ok: false, reason: "worktree_not_accessible" };
307
+ }
308
+ }
309
+ async function collectWorktreeState(worktree) {
310
+ const gitRoot = await runGit(worktree, ["rev-parse", "--show-toplevel"]);
311
+ if (!gitRoot.ok) {
312
+ return {
313
+ isGitRepository: false,
314
+ currentBranch: null,
315
+ preExistingChangedFiles: [],
316
+ note: "Worktree is not a git repository or git is unavailable."
317
+ };
318
+ }
319
+ const branch = await runGit(worktree, ["branch", "--show-current"]);
320
+ const status = await runGit(worktree, ["status", "--porcelain=v1"]);
321
+ return {
322
+ isGitRepository: true,
323
+ gitRoot: gitRoot.stdout.trim(),
324
+ currentBranch: branch.ok ? branch.stdout.trim() || null : null,
325
+ preExistingChangedFiles: status.ok ? parseGitStatusFiles(status.stdout) : [],
326
+ statusProbeError: status.ok ? null : status.error
327
+ };
328
+ }
329
+ async function runGit(cwd, args) {
330
+ try {
331
+ const { stdout, stderr } = await execFileAsync("git", args, {
332
+ cwd,
333
+ timeout: COMMAND_TIMEOUT_MS,
334
+ windowsHide: true,
335
+ env: safeEnv()
336
+ });
337
+ return { ok: true, stdout, stderr };
338
+ }
339
+ catch (error) {
340
+ return {
341
+ ok: false,
342
+ stdout: error.stdout ?? "",
343
+ stderr: error.stderr ?? "",
344
+ error: error.message
345
+ };
346
+ }
347
+ }
348
+ function parseGitStatusFiles(stdout) {
349
+ return stdout
350
+ .split(/\r?\n/)
351
+ .map((line) => line.trimEnd())
352
+ .filter(Boolean)
353
+ .map((line) => line.slice(3).replace(/^.* -> /, ""))
354
+ .filter(Boolean);
355
+ }
356
+ function getAcpAdapterArgs(selectedAgent, worktree) {
357
+ if (selectedAgent.id === "opencode") {
358
+ return ["acp", "--cwd", worktree, "--print-logs", "--log-level", "INFO"];
359
+ }
360
+ return [];
361
+ }
362
+ function resolveAcpLaunchTarget(acpSpec, selectedAgent, worktree) {
363
+ if (!acpSpec?.available)
364
+ return null;
365
+ if (acpSpec.launchMode === "npx" && Array.isArray(acpSpec.launchCommand) && acpSpec.launchCommand.length > 0) {
366
+ return {
367
+ command: acpSpec.launchCommand[0],
368
+ args: [...acpSpec.launchCommand.slice(1), ...getAcpAdapterArgs(selectedAgent, worktree)],
369
+ processLabel: acpSpec.launchCommand.join(" ")
370
+ };
371
+ }
372
+ if (acpSpec.installedPath) {
373
+ return {
374
+ command: acpSpec.installedPath,
375
+ args: getAcpAdapterArgs(selectedAgent, worktree),
376
+ processLabel: path.basename(acpSpec.installedPath)
377
+ };
378
+ }
379
+ return null;
380
+ }
381
+ function isAcpRunReady(selectedAgent) {
382
+ const acp = selectedAgent?.acp;
383
+ if (!acp?.available)
384
+ return false;
385
+ if (acp.installedPath)
386
+ return true;
387
+ return acp.launchMode === "npx" && Array.isArray(acp.launchCommand) && acp.launchCommand.length > 0;
388
+ }
389
+ function buildAcpUnavailableError(selectedAgent) {
390
+ if (selectedAgent.id === "cursor-agent") {
391
+ return "Cursor Agent has no ACP adapter; CLI fallback removed. Install a Cursor ACP adapter or use a different agent.";
392
+ }
393
+ const installHint = selectedAgent.registry?.installHint ?? null;
394
+ const base = `ACP is required for ${selectedAgent.displayName} and CLI fallback has been removed.`;
395
+ if (installHint) {
396
+ return `${base} Install the ACP adapter: ${installHint}`;
397
+ }
398
+ return `${base} Install the ${selectedAgent.displayName} ACP adapter or use a different agent.`;
399
+ }
400
+ function planLaunch({ launchingEnabled, selectedAgent }) {
401
+ if (!launchingEnabled) {
402
+ return {
403
+ kind: "record_only",
404
+ runnable: false,
405
+ status: "completed",
406
+ adapterStatus: "record_only",
407
+ summary: "Recorded Agent Router job, selected agent, session binding, and current worktree state without launching an external process.",
408
+ risks: ["No external agent process was launched in this alpha build."]
409
+ };
410
+ }
411
+ if (selectedAgent.acp?.available && (selectedAgent.acp.installedPath || selectedAgent.acp.launchMode === "npx")) {
412
+ return {
413
+ kind: "acp_stdio",
414
+ runnable: true,
415
+ adapterStatus: "starting",
416
+ summary: `Starting ${selectedAgent.displayName} ACP adapter.`,
417
+ risks: []
418
+ };
419
+ }
420
+ return {
421
+ kind: "unsupported",
422
+ runnable: false,
423
+ status: "failed",
424
+ adapterStatus: "adapter_not_implemented",
425
+ summary: `External launch is not implemented for ${selectedAgent.id}.`,
426
+ risks: ["External launch was requested, but no runnable adapter path was selected."]
427
+ };
428
+ }
429
+ export { discoverAgents, configureDispatcher, enrichAgentWithRegistry, probeAgent, compareExecutableProbe, compareVersionStrings, parseVersionParts, probeVersion, findExecutables, selectExecutable, chooseAgent, validateWorktree, collectWorktreeState, runGit, parseGitStatusFiles, getAcpAdapterArgs, resolveAcpLaunchTarget, isAcpRunReady, buildAcpUnavailableError, planLaunch };
430
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=acp-router-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-router-cli.d.ts","sourceRoot":"","sources":["../../src/bin/acp-router-cli.ts"],"names":[],"mappings":""}