@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/LICENSE +21 -0
- package/README.md +350 -0
- package/dist/acp-client.d.ts +179 -0
- package/dist/acp-client.d.ts.map +1 -0
- package/dist/acp-client.js +718 -0
- package/dist/acp-client.js.map +1 -0
- package/dist/agents.d.ts +180 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +430 -0
- package/dist/agents.js.map +1 -0
- package/dist/bin/acp-router-cli.d.ts +3 -0
- package/dist/bin/acp-router-cli.d.ts.map +1 -0
- package/dist/bin/acp-router-cli.js +252 -0
- package/dist/bin/acp-router-cli.js.map +1 -0
- package/dist/bin/acp-router.d.ts +3 -0
- package/dist/bin/acp-router.d.ts.map +1 -0
- package/dist/bin/acp-router.js +7 -0
- package/dist/bin/acp-router.js.map +1 -0
- package/dist/constants.d.ts +44 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +131 -0
- package/dist/constants.js.map +1 -0
- package/dist/jobs.d.ts +133 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +716 -0
- package/dist/jobs.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +180 -0
- package/dist/server.js.map +1 -0
- package/dist/storage.d.ts +166 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +506 -0
- package/dist/storage.js.map +1 -0
- package/dist/utils.d.ts +31 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +78 -0
- package/dist/utils.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createJob, getJob, tailJobEvents, listJobs, cancelJob, listSessions } from "../jobs.js";
|
|
3
|
+
import { discoverAgents, configureDispatcher } from "../agents.js";
|
|
4
|
+
import { readConfig } from "../storage.js";
|
|
5
|
+
import { probeAgentModels } from "../acp-client.js";
|
|
6
|
+
import { safeEnv } from "../utils.js";
|
|
7
|
+
const HELP = `acp-router CLI
|
|
8
|
+
|
|
9
|
+
Usage: acp-router-cli <command> [options]
|
|
10
|
+
|
|
11
|
+
Commands:
|
|
12
|
+
run Run a coding agent in a worktree (sync, blocks until done)
|
|
13
|
+
agents List discovered agents
|
|
14
|
+
models Probe an agent for available models
|
|
15
|
+
jobs List jobs
|
|
16
|
+
job Get job details
|
|
17
|
+
tail Tail job events
|
|
18
|
+
cancel Cancel a running job
|
|
19
|
+
sessions List sessions
|
|
20
|
+
config Get or set config
|
|
21
|
+
|
|
22
|
+
Run "acp-router-cli <command> --help" for command-specific options.
|
|
23
|
+
`;
|
|
24
|
+
function parseArgs(argv) {
|
|
25
|
+
const args = {};
|
|
26
|
+
for (let i = 0; i < argv.length; i++) {
|
|
27
|
+
const arg = argv[i];
|
|
28
|
+
if (arg.startsWith("--")) {
|
|
29
|
+
const key = arg.slice(2);
|
|
30
|
+
const next = argv[i + 1];
|
|
31
|
+
if (next !== undefined && !next.startsWith("--")) {
|
|
32
|
+
args[key] = next;
|
|
33
|
+
i++;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
args[key] = true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
args._ = args._ || [];
|
|
41
|
+
args._.push(arg);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return args;
|
|
45
|
+
}
|
|
46
|
+
function printJson(obj) {
|
|
47
|
+
process.stdout.write(JSON.stringify(obj, null, 2) + "\n");
|
|
48
|
+
}
|
|
49
|
+
async function cmdRun(args) {
|
|
50
|
+
if (args.help) {
|
|
51
|
+
process.stdout.write(`acp-router-cli run -- Run a coding agent (sync, blocks until done)
|
|
52
|
+
|
|
53
|
+
Options:
|
|
54
|
+
--worktree <path> Absolute path to worktree (required)
|
|
55
|
+
--prompt <text> Task prompt (required)
|
|
56
|
+
--agent <id> Agent id (default: auto-select)
|
|
57
|
+
--mode <mode> Execution mode (default: implementation)
|
|
58
|
+
--timeout-sec <n> Timeout in seconds (default: 3600)
|
|
59
|
+
--permission-profile <p> plan | acceptEdits | bypassPermissions (default: bypassPermissions)
|
|
60
|
+
--model <id> Model id to use (agent-specific)
|
|
61
|
+
--collect-diff <bool> Collect git diff (default: true)
|
|
62
|
+
--session-id <id> Continue an existing session
|
|
63
|
+
--stream Stream events to stderr while running
|
|
64
|
+
`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!args.worktree || !args.prompt) {
|
|
68
|
+
process.stderr.write("Error: --worktree and --prompt are required\n");
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
const wantStream = args.stream === true;
|
|
72
|
+
const jobArgs = {
|
|
73
|
+
worktree: args.worktree,
|
|
74
|
+
prompt: args.prompt,
|
|
75
|
+
agent: args.agent,
|
|
76
|
+
mode: args.mode,
|
|
77
|
+
timeoutSec: args["timeout-sec"] ? Number(args["timeout-sec"]) : undefined,
|
|
78
|
+
permissionProfile: args["permission-profile"],
|
|
79
|
+
model: args.model,
|
|
80
|
+
collectDiff: args["collect-diff"] === "false" ? false : undefined,
|
|
81
|
+
sessionId: args["session-id"],
|
|
82
|
+
async: wantStream
|
|
83
|
+
};
|
|
84
|
+
const result = await createJob(jobArgs);
|
|
85
|
+
if (wantStream && result.jobId) {
|
|
86
|
+
let lastIndex = -1;
|
|
87
|
+
while (true) {
|
|
88
|
+
const tail = await tailJobEvents({ jobId: result.jobId, afterEventIndex: lastIndex, limit: 50 });
|
|
89
|
+
for (const event of tail.events) {
|
|
90
|
+
process.stderr.write(`[${event.type}] ${event.message || ""}\n`);
|
|
91
|
+
lastIndex = event.eventIndex ?? lastIndex;
|
|
92
|
+
}
|
|
93
|
+
if (tail.status !== "running" && tail.status !== "starting" && tail.status !== "queued")
|
|
94
|
+
break;
|
|
95
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
96
|
+
}
|
|
97
|
+
const final = await getJob({ jobId: result.jobId });
|
|
98
|
+
printJson(final);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
printJson(result);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async function cmdAgents(args) {
|
|
105
|
+
const result = await discoverAgents({
|
|
106
|
+
refresh: args.refresh === true,
|
|
107
|
+
includeNotInstalled: args["include-not-installed"] !== "false"
|
|
108
|
+
});
|
|
109
|
+
printJson(result);
|
|
110
|
+
}
|
|
111
|
+
async function cmdJobs(args) {
|
|
112
|
+
const result = await listJobs({
|
|
113
|
+
status: args.status,
|
|
114
|
+
agent: args.agent,
|
|
115
|
+
worktree: args.worktree,
|
|
116
|
+
limit: args.limit ? Number(args.limit) : undefined
|
|
117
|
+
});
|
|
118
|
+
printJson(result);
|
|
119
|
+
}
|
|
120
|
+
async function cmdJob(args) {
|
|
121
|
+
if (!args._ || !args._[0]) {
|
|
122
|
+
process.stderr.write("Error: job id required\n");
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
const result = await getJob({ jobId: args._[0] });
|
|
126
|
+
printJson(result);
|
|
127
|
+
}
|
|
128
|
+
async function cmdTail(args) {
|
|
129
|
+
if (!args._ || !args._[0]) {
|
|
130
|
+
process.stderr.write("Error: job id required\n");
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
const result = await tailJobEvents({
|
|
134
|
+
jobId: args._[0],
|
|
135
|
+
afterEventIndex: args["after-event-index"] ? Number(args["after-event-index"]) : undefined,
|
|
136
|
+
limit: args.limit ? Number(args.limit) : undefined,
|
|
137
|
+
includeLogTail: args["include-log-tail"] === true,
|
|
138
|
+
logTailBytes: args["log-tail-bytes"] ? Number(args["log-tail-bytes"]) : undefined
|
|
139
|
+
});
|
|
140
|
+
printJson(result);
|
|
141
|
+
}
|
|
142
|
+
async function cmdCancel(args) {
|
|
143
|
+
if (!args._ || !args._[0]) {
|
|
144
|
+
process.stderr.write("Error: job id required\n");
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
const result = await cancelJob({ jobId: args._[0], reason: args.reason });
|
|
148
|
+
printJson(result);
|
|
149
|
+
}
|
|
150
|
+
async function cmdModels(args) {
|
|
151
|
+
if (!args._ || !args._[0]) {
|
|
152
|
+
process.stderr.write("Error: agent id required (e.g. opencode, claude, codex)\n");
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
const agentId = args._[0];
|
|
156
|
+
const config = await readConfig();
|
|
157
|
+
const { agents } = await discoverAgents({ includeNotInstalled: false });
|
|
158
|
+
const selectedAgent = agents.find((a) => a.id === agentId);
|
|
159
|
+
if (!selectedAgent) {
|
|
160
|
+
process.stderr.write(`Error: agent "${agentId}" not found. Available: ${agents.map((a) => a.id).join(", ")}\n`);
|
|
161
|
+
process.exit(1);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (!selectedAgent.acp?.available) {
|
|
165
|
+
process.stderr.write(`Error: agent "${agentId}" does not have ACP available\n`);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const result = await probeAgentModels({
|
|
171
|
+
selectedAgent,
|
|
172
|
+
worktree: args.worktree,
|
|
173
|
+
env: safeEnv({ inheritEnvironment: config.safety.inheritEnvironment === true })
|
|
174
|
+
});
|
|
175
|
+
printJson(result);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
process.stderr.write(`Error: ${error.message}\n`);
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
async function cmdSessions(args) {
|
|
183
|
+
const result = await listSessions({
|
|
184
|
+
includeArchived: args["include-archived"] === true,
|
|
185
|
+
agent: args.agent,
|
|
186
|
+
worktree: args.worktree,
|
|
187
|
+
limit: args.limit ? Number(args.limit) : undefined
|
|
188
|
+
});
|
|
189
|
+
printJson(result);
|
|
190
|
+
}
|
|
191
|
+
async function cmdConfig(args) {
|
|
192
|
+
if (args.set) {
|
|
193
|
+
const setArgs = {};
|
|
194
|
+
for (const key of ["defaultAgent", "disabledAgents", "allowCurrentDirectory", "registryEnabled", "registryUrl", "registryCacheTtlSec", "launchExternalAgents", "allowBypassPermissions", "inheritEnvironment"]) {
|
|
195
|
+
if (args[key] !== undefined)
|
|
196
|
+
setArgs[key] = args[key];
|
|
197
|
+
}
|
|
198
|
+
const result = await configureDispatcher({ action: "set", ...setArgs });
|
|
199
|
+
printJson(result);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
const config = await readConfig();
|
|
203
|
+
printJson({ config });
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async function main() {
|
|
207
|
+
const argv = process.argv.slice(2);
|
|
208
|
+
const command = argv[0];
|
|
209
|
+
const rest = argv.slice(1);
|
|
210
|
+
if (!command || command === "--help" || command === "-h") {
|
|
211
|
+
process.stdout.write(HELP);
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
const args = parseArgs(rest);
|
|
215
|
+
switch (command) {
|
|
216
|
+
case "run":
|
|
217
|
+
await cmdRun(args);
|
|
218
|
+
break;
|
|
219
|
+
case "agents":
|
|
220
|
+
await cmdAgents(args);
|
|
221
|
+
break;
|
|
222
|
+
case "models":
|
|
223
|
+
await cmdModels(args);
|
|
224
|
+
break;
|
|
225
|
+
case "jobs":
|
|
226
|
+
await cmdJobs(args);
|
|
227
|
+
break;
|
|
228
|
+
case "job":
|
|
229
|
+
await cmdJob(args);
|
|
230
|
+
break;
|
|
231
|
+
case "tail":
|
|
232
|
+
await cmdTail(args);
|
|
233
|
+
break;
|
|
234
|
+
case "cancel":
|
|
235
|
+
await cmdCancel(args);
|
|
236
|
+
break;
|
|
237
|
+
case "sessions":
|
|
238
|
+
await cmdSessions(args);
|
|
239
|
+
break;
|
|
240
|
+
case "config":
|
|
241
|
+
await cmdConfig(args);
|
|
242
|
+
break;
|
|
243
|
+
default:
|
|
244
|
+
process.stderr.write(`Unknown command: ${command}\n\n${HELP}`);
|
|
245
|
+
process.exit(1);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
main().catch((error) => {
|
|
249
|
+
process.stderr.write(`acp-router-cli: ${error.message}\n`);
|
|
250
|
+
process.exit(1);
|
|
251
|
+
});
|
|
252
|
+
//# sourceMappingURL=acp-router-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-router-cli.js","sourceRoot":"","sources":["../../src/bin/acp-router-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-router.d.ts","sourceRoot":"","sources":["../../src/bin/acp-router.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp-router.js","sourceRoot":"","sources":["../../src/bin/acp-router.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type PermissionProfile = "plan" | "acceptEdits" | "bypassPermissions";
|
|
2
|
+
export interface AcpAdapterSpec {
|
|
3
|
+
executable: string;
|
|
4
|
+
versionArgs: string[];
|
|
5
|
+
adapterStatus: string;
|
|
6
|
+
label: string;
|
|
7
|
+
buildArgsKey: string;
|
|
8
|
+
buildArgs: (args: {
|
|
9
|
+
worktree: string;
|
|
10
|
+
}) => string[];
|
|
11
|
+
}
|
|
12
|
+
export interface BuiltInAgent {
|
|
13
|
+
id: string;
|
|
14
|
+
displayName: string;
|
|
15
|
+
executable: string;
|
|
16
|
+
versionArgs: string[];
|
|
17
|
+
transport: string;
|
|
18
|
+
command: string;
|
|
19
|
+
acp?: AcpAdapterSpec;
|
|
20
|
+
capabilities: string[];
|
|
21
|
+
source: string[];
|
|
22
|
+
notes: string[];
|
|
23
|
+
}
|
|
24
|
+
export type AcpModeMap = Record<string, Record<PermissionProfile, string>>;
|
|
25
|
+
declare const SERVER_NAME = "acp-router";
|
|
26
|
+
declare const SERVER_VERSION = "0.8.0";
|
|
27
|
+
declare const DATA_DIR: string;
|
|
28
|
+
declare const REGISTRY_PATH: string;
|
|
29
|
+
declare const CONFIG_PATH: string;
|
|
30
|
+
declare const ACP_REGISTRY_CACHE_PATH: string;
|
|
31
|
+
declare const LOG_DIR: string;
|
|
32
|
+
declare const DEFAULT_ACP_REGISTRY_URL = "https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json";
|
|
33
|
+
declare const COMMAND_TIMEOUT_MS = 3000;
|
|
34
|
+
declare const ACP_STARTUP_DELAY_MS = 300;
|
|
35
|
+
declare const ACTIVE_JOB_STATUSES: Set<string>;
|
|
36
|
+
declare const TERMINAL_JOB_STATUSES: Set<string>;
|
|
37
|
+
declare const MAX_RECURSION_DEPTH = 3;
|
|
38
|
+
declare const ACP_MODE_MAP: AcpModeMap;
|
|
39
|
+
declare const BUILT_IN_AGENTS: BuiltInAgent[];
|
|
40
|
+
declare const AGENT_ENV_ALLOWLIST: readonly string[];
|
|
41
|
+
declare const AGENT_ERROR_PATTERNS: readonly RegExp[];
|
|
42
|
+
declare const AGENT_ERROR_KEY_PATTERN: RegExp;
|
|
43
|
+
export { SERVER_NAME, SERVER_VERSION, DATA_DIR, REGISTRY_PATH, CONFIG_PATH, ACP_REGISTRY_CACHE_PATH, LOG_DIR, DEFAULT_ACP_REGISTRY_URL, COMMAND_TIMEOUT_MS, ACP_STARTUP_DELAY_MS, ACTIVE_JOB_STATUSES, TERMINAL_JOB_STATUSES, MAX_RECURSION_DEPTH, ACP_MODE_MAP, BUILT_IN_AGENTS, AGENT_ENV_ALLOWLIST, AGENT_ERROR_PATTERNS, AGENT_ERROR_KEY_PATTERN };
|
|
44
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,aAAa,GAAG,mBAAmB,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3E,QAAA,MAAM,WAAW,eAAe,CAAC;AACjC,QAAA,MAAM,cAAc,UAAU,CAAC;AAC/B,QAAA,MAAM,QAAQ,QAE4B,CAAC;AAC3C,QAAA,MAAM,aAAa,QAAuC,CAAC;AAC3D,QAAA,MAAM,WAAW,QAAqC,CAAC;AACvD,QAAA,MAAM,uBAAuB,QAAiD,CAAC;AAC/E,QAAA,MAAM,OAAO,QAA8B,CAAC;AAC5C,QAAA,MAAM,wBAAwB,yEAAyE,CAAC;AACxG,QAAA,MAAM,kBAAkB,OAAO,CAAC;AAChC,QAAA,MAAM,oBAAoB,MAAM,CAAC;AACjC,QAAA,MAAM,mBAAmB,aAA6C,CAAC;AACvE,QAAA,MAAM,qBAAqB,aAAyE,CAAC;AAErG,QAAA,MAAM,mBAAmB,IAAI,CAAC;AAE9B,QAAA,MAAM,YAAY,EAAE,UAgBnB,CAAC;AAEF,QAAA,MAAM,eAAe,EAAE,YAAY,EAqElC,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAMzC,CAAC;AAEF,QAAA,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAgB1C,CAAC;AAEF,QAAA,MAAM,uBAAuB,QAAsG,CAAC;AAEpI,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,OAAO,EACP,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACxB,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const SERVER_NAME = "acp-router";
|
|
4
|
+
const SERVER_VERSION = "0.8.0";
|
|
5
|
+
const DATA_DIR = process.env.ACP_ROUTER_DATA_DIR
|
|
6
|
+
? path.resolve(process.env.ACP_ROUTER_DATA_DIR)
|
|
7
|
+
: path.join(os.homedir(), ".acp-router");
|
|
8
|
+
const REGISTRY_PATH = path.join(DATA_DIR, "registry.json");
|
|
9
|
+
const CONFIG_PATH = path.join(DATA_DIR, "config.json");
|
|
10
|
+
const ACP_REGISTRY_CACHE_PATH = path.join(DATA_DIR, "acp-registry-cache.json");
|
|
11
|
+
const LOG_DIR = path.join(DATA_DIR, "logs");
|
|
12
|
+
const DEFAULT_ACP_REGISTRY_URL = "https://cdn.agentclientprotocol.com/registry/v1/latest/registry.json";
|
|
13
|
+
const COMMAND_TIMEOUT_MS = 3000;
|
|
14
|
+
const ACP_STARTUP_DELAY_MS = 300;
|
|
15
|
+
const ACTIVE_JOB_STATUSES = new Set(["queued", "starting", "running"]);
|
|
16
|
+
const TERMINAL_JOB_STATUSES = new Set(["completed", "failed", "cancelled", "timed_out", "orphaned"]);
|
|
17
|
+
const MAX_RECURSION_DEPTH = 3;
|
|
18
|
+
const ACP_MODE_MAP = {
|
|
19
|
+
claude: {
|
|
20
|
+
plan: "plan",
|
|
21
|
+
acceptEdits: "acceptEdits",
|
|
22
|
+
bypassPermissions: "bypassPermissions"
|
|
23
|
+
},
|
|
24
|
+
codex: {
|
|
25
|
+
plan: "read-only",
|
|
26
|
+
acceptEdits: "auto",
|
|
27
|
+
bypassPermissions: "full-access"
|
|
28
|
+
},
|
|
29
|
+
opencode: {
|
|
30
|
+
plan: "plan",
|
|
31
|
+
acceptEdits: "build",
|
|
32
|
+
bypassPermissions: "build"
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const BUILT_IN_AGENTS = [
|
|
36
|
+
{
|
|
37
|
+
id: "opencode",
|
|
38
|
+
displayName: "OpenCode",
|
|
39
|
+
executable: "opencode",
|
|
40
|
+
versionArgs: ["--version"],
|
|
41
|
+
transport: "acp_stdio",
|
|
42
|
+
command: "opencode acp --cwd <worktree>",
|
|
43
|
+
acp: {
|
|
44
|
+
executable: "opencode",
|
|
45
|
+
versionArgs: ["--version"],
|
|
46
|
+
adapterStatus: "opencode_acp",
|
|
47
|
+
label: "OpenCode ACP",
|
|
48
|
+
buildArgsKey: "opencode",
|
|
49
|
+
buildArgs: ({ worktree }) => ["acp", "--cwd", worktree, "--print-logs", "--log-level", "ERROR"]
|
|
50
|
+
},
|
|
51
|
+
capabilities: ["session_list", "session_continue", "file_edit", "shell", "diff_collection"],
|
|
52
|
+
source: ["path", "registry"],
|
|
53
|
+
notes: ["Native ACP adapter target for V1."]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "cursor-agent",
|
|
57
|
+
displayName: "Cursor Agent",
|
|
58
|
+
executable: "agent",
|
|
59
|
+
versionArgs: ["--version"],
|
|
60
|
+
transport: "cli",
|
|
61
|
+
command: "agent --print --output-format stream-json --workspace <worktree> --trust <prompt>",
|
|
62
|
+
capabilities: ["file_edit", "shell", "diff_collection"],
|
|
63
|
+
source: ["path"],
|
|
64
|
+
notes: ["CLI fallback target; sessions are dispatcher-managed until an ACP adapter is available."]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: "claude",
|
|
68
|
+
displayName: "Claude Code",
|
|
69
|
+
executable: "claude",
|
|
70
|
+
versionArgs: ["--version"],
|
|
71
|
+
transport: "cli",
|
|
72
|
+
command: "claude -p --output-format stream-json",
|
|
73
|
+
acp: {
|
|
74
|
+
executable: "claude-agent-acp",
|
|
75
|
+
versionArgs: ["--version"],
|
|
76
|
+
adapterStatus: "claude_acp",
|
|
77
|
+
label: "Claude Agent ACP",
|
|
78
|
+
buildArgsKey: "claude-agent-acp",
|
|
79
|
+
buildArgs: () => []
|
|
80
|
+
},
|
|
81
|
+
capabilities: ["file_edit", "shell", "permission_modes", "diff_collection"],
|
|
82
|
+
source: ["path"],
|
|
83
|
+
notes: ["ACP adapter preferred when claude-agent-acp is installed; otherwise CLI fallback target."]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: "codex",
|
|
87
|
+
displayName: "Codex CLI",
|
|
88
|
+
executable: "codex",
|
|
89
|
+
versionArgs: ["--version"],
|
|
90
|
+
transport: "cli",
|
|
91
|
+
command: "codex exec",
|
|
92
|
+
acp: {
|
|
93
|
+
executable: "codex-acp",
|
|
94
|
+
versionArgs: ["--version"],
|
|
95
|
+
adapterStatus: "codex_acp",
|
|
96
|
+
label: "Codex ACP",
|
|
97
|
+
buildArgsKey: "codex-acp",
|
|
98
|
+
buildArgs: () => []
|
|
99
|
+
},
|
|
100
|
+
capabilities: ["file_edit", "shell", "diff_collection"],
|
|
101
|
+
source: ["path"],
|
|
102
|
+
notes: ["ACP adapter preferred when codex-acp is installed. Use cautiously to avoid recursive control loops; require an isolated worktree."]
|
|
103
|
+
}
|
|
104
|
+
];
|
|
105
|
+
const AGENT_ENV_ALLOWLIST = [
|
|
106
|
+
"ANTHROPIC_API_KEY",
|
|
107
|
+
"ANTHROPIC_AUTH_TOKEN",
|
|
108
|
+
"ANTHROPIC_BASE_URL",
|
|
109
|
+
"CLAUDE_CODE_OAUTH_TOKEN",
|
|
110
|
+
"CLAUDE_CONFIG_DIR"
|
|
111
|
+
];
|
|
112
|
+
const AGENT_ERROR_PATTERNS = [
|
|
113
|
+
/insufficient balance/i,
|
|
114
|
+
/rate[_ -]?limit/i,
|
|
115
|
+
/rate limit/i,
|
|
116
|
+
/quota/i,
|
|
117
|
+
/unauthorized/i,
|
|
118
|
+
/forbidden/i,
|
|
119
|
+
/permission denied/i,
|
|
120
|
+
/auth(?:entication)?[_ -]?failed/i,
|
|
121
|
+
/auth(?:entication)? failed/i,
|
|
122
|
+
/failed to authenticate/i,
|
|
123
|
+
/not logged in/i,
|
|
124
|
+
/api[_/-]?retry/i,
|
|
125
|
+
/api[_-]?error[_-]?status/i,
|
|
126
|
+
/error[_-]?status/i,
|
|
127
|
+
/\berror\b/i
|
|
128
|
+
];
|
|
129
|
+
const AGENT_ERROR_KEY_PATTERN = /(?:api[_-]?error[_-]?status|error[_-]?status|error|fail|auth|login|rate|quota|retry|reason|code)/i;
|
|
130
|
+
export { SERVER_NAME, SERVER_VERSION, DATA_DIR, REGISTRY_PATH, CONFIG_PATH, ACP_REGISTRY_CACHE_PATH, LOG_DIR, DEFAULT_ACP_REGISTRY_URL, COMMAND_TIMEOUT_MS, ACP_STARTUP_DELAY_MS, ACTIVE_JOB_STATUSES, TERMINAL_JOB_STATUSES, MAX_RECURSION_DEPTH, ACP_MODE_MAP, BUILT_IN_AGENTS, AGENT_ENV_ALLOWLIST, AGENT_ERROR_PATTERNS, AGENT_ERROR_KEY_PATTERN };
|
|
131
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AA4B7B,MAAM,WAAW,GAAG,YAAY,CAAC;AACjC,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB;IAC9C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC/C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvD,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;AAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,wBAAwB,GAAG,sEAAsE,CAAC;AACxG,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACvE,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAErG,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,MAAM,YAAY,GAAe;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,aAAa;QAC1B,iBAAiB,EAAE,mBAAmB;KACvC;IACD,KAAK,EAAE;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,MAAM;QACnB,iBAAiB,EAAE,aAAa;KACjC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,OAAO;QACpB,iBAAiB,EAAE,OAAO;KAC3B;CACF,CAAC;AAEF,MAAM,eAAe,GAAmB;IACtC;QACE,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,+BAA+B;QACxC,GAAG,EAAE;YACH,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,CAAC,WAAW,CAAC;YAC1B,aAAa,EAAE,cAAc;YAC7B,KAAK,EAAE,cAAc;YACrB,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,CAAC;SAChG;QACD,YAAY,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC;QAC3F,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;QAC5B,KAAK,EAAE,CAAC,mCAAmC,CAAC;KAC7C;IACD;QACE,EAAE,EAAE,cAAc;QAClB,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,mFAAmF;QAC5F,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC;QACvD,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,CAAC,yFAAyF,CAAC;KACnG;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,aAAa;QAC1B,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,uCAAuC;QAChD,GAAG,EAAE;YACH,UAAU,EAAE,kBAAkB;YAC9B,WAAW,EAAE,CAAC,WAAW,CAAC;YAC1B,aAAa,EAAE,YAAY;YAC3B,KAAK,EAAE,kBAAkB;YACzB,YAAY,EAAE,kBAAkB;YAChC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;SACpB;QACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;QAC3E,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,CAAC,0FAA0F,CAAC;KACpG;IACD;QACE,EAAE,EAAE,OAAO;QACX,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,CAAC,WAAW,CAAC;QAC1B,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,YAAY;QACrB,GAAG,EAAE;YACH,UAAU,EAAE,WAAW;YACvB,WAAW,EAAE,CAAC,WAAW,CAAC;YAC1B,aAAa,EAAE,WAAW;YAC1B,KAAK,EAAE,WAAW;YAClB,YAAY,EAAE,WAAW;YACzB,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;SACpB;QACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC;QACvD,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,KAAK,EAAE,CAAC,mIAAmI,CAAC;KAC7I;CACF,CAAC;AAEF,MAAM,mBAAmB,GAAsB;IAC7C,mBAAmB;IACnB,sBAAsB;IACtB,oBAAoB;IACpB,yBAAyB;IACzB,mBAAmB;CACpB,CAAC;AAEF,MAAM,oBAAoB,GAAsB;IAC9C,uBAAuB;IACvB,kBAAkB;IAClB,aAAa;IACb,QAAQ;IACR,eAAe;IACf,YAAY;IACZ,oBAAoB;IACpB,kCAAkC;IAClC,6BAA6B;IAC7B,yBAAyB;IACzB,gBAAgB;IAChB,iBAAiB;IACjB,2BAA2B;IAC3B,mBAAmB;IACnB,YAAY;CACb,CAAC;AAEF,MAAM,uBAAuB,GAAG,mGAAmG,CAAC;AAEpI,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,OAAO,EACP,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACxB,CAAC"}
|
package/dist/jobs.d.ts
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
interface JobArgs {
|
|
2
|
+
agent?: string | null;
|
|
3
|
+
worktree: string;
|
|
4
|
+
prompt: string;
|
|
5
|
+
mode?: string;
|
|
6
|
+
async?: boolean;
|
|
7
|
+
sessionId?: string | null;
|
|
8
|
+
timeoutSec?: number;
|
|
9
|
+
permissionProfile?: string;
|
|
10
|
+
model?: string;
|
|
11
|
+
collectDiff?: boolean;
|
|
12
|
+
launchExternalAgents?: boolean;
|
|
13
|
+
inheritEnvironment?: boolean;
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
interface RunController {
|
|
17
|
+
jobId: string;
|
|
18
|
+
cancelRequested: boolean;
|
|
19
|
+
cancelReason: string | null;
|
|
20
|
+
cancelProcess: (() => boolean) | null;
|
|
21
|
+
processInfo: any | null;
|
|
22
|
+
recordProcess: (info: any) => Promise<void>;
|
|
23
|
+
cancel: (reason?: string) => boolean;
|
|
24
|
+
}
|
|
25
|
+
interface RunRequest {
|
|
26
|
+
args: JobArgs;
|
|
27
|
+
job: any;
|
|
28
|
+
session: any;
|
|
29
|
+
selectedAgent: any;
|
|
30
|
+
timeoutSec: number;
|
|
31
|
+
agentEnv: Record<string, string | undefined>;
|
|
32
|
+
launchKind: string;
|
|
33
|
+
}
|
|
34
|
+
interface ListJobsArgs {
|
|
35
|
+
limit?: number;
|
|
36
|
+
status?: string | null;
|
|
37
|
+
agent?: string | null;
|
|
38
|
+
worktree?: string | null;
|
|
39
|
+
}
|
|
40
|
+
interface GetJobArgs {
|
|
41
|
+
jobId: string;
|
|
42
|
+
}
|
|
43
|
+
interface TailJobEventsArgs {
|
|
44
|
+
jobId: string;
|
|
45
|
+
afterEventIndex?: number;
|
|
46
|
+
limit?: number;
|
|
47
|
+
includeLogTail?: boolean;
|
|
48
|
+
logTailBytes?: number;
|
|
49
|
+
}
|
|
50
|
+
interface CancelJobArgs {
|
|
51
|
+
jobId: string;
|
|
52
|
+
reason?: string;
|
|
53
|
+
}
|
|
54
|
+
interface ListSessionsArgs {
|
|
55
|
+
includeArchived?: boolean;
|
|
56
|
+
agent?: string | null;
|
|
57
|
+
worktree?: string | null;
|
|
58
|
+
limit?: number;
|
|
59
|
+
}
|
|
60
|
+
interface ContinueSessionArgs {
|
|
61
|
+
agent?: string | null;
|
|
62
|
+
sessionId: string;
|
|
63
|
+
prompt?: string;
|
|
64
|
+
worktree?: string;
|
|
65
|
+
async?: boolean;
|
|
66
|
+
launchExternalAgents?: boolean;
|
|
67
|
+
inheritEnvironment?: boolean;
|
|
68
|
+
timeoutSec?: number;
|
|
69
|
+
}
|
|
70
|
+
interface ArchiveSessionArgs {
|
|
71
|
+
sessionId: string;
|
|
72
|
+
}
|
|
73
|
+
declare const ACTIVE_RUNS: Map<string, RunController>;
|
|
74
|
+
declare function createJob(args: JobArgs): Promise<any>;
|
|
75
|
+
declare function startBackgroundJobRun(runRequest: RunRequest): void;
|
|
76
|
+
declare function executeAndPersistJobRun({ args, job, session, selectedAgent, timeoutSec, agentEnv, launchKind }: RunRequest): Promise<void>;
|
|
77
|
+
declare function createRunController(jobId: string): RunController;
|
|
78
|
+
declare function persistJobRunResult({ job, session, selectedAgent, runResult }: {
|
|
79
|
+
job: any;
|
|
80
|
+
session: any;
|
|
81
|
+
selectedAgent: any;
|
|
82
|
+
runResult: any;
|
|
83
|
+
}): Promise<void>;
|
|
84
|
+
declare function markJobRunCrashed(runRequest: RunRequest, error: Error): Promise<void>;
|
|
85
|
+
declare function listJobs(args: ListJobsArgs): Promise<{
|
|
86
|
+
jobs: any[];
|
|
87
|
+
}>;
|
|
88
|
+
declare function getJob(args: GetJobArgs): Promise<any>;
|
|
89
|
+
declare function tailJobEvents(args: TailJobEventsArgs): Promise<any>;
|
|
90
|
+
declare function cancelJob(args: CancelJobArgs): Promise<any>;
|
|
91
|
+
declare function listSessions(args: ListSessionsArgs): Promise<any>;
|
|
92
|
+
declare function compactSessionForList(session: any): any;
|
|
93
|
+
declare function maybeListNativeSessions({ args, config, registry }: {
|
|
94
|
+
args: ListSessionsArgs;
|
|
95
|
+
config: any;
|
|
96
|
+
registry: any;
|
|
97
|
+
}): Promise<{
|
|
98
|
+
sessions: any[];
|
|
99
|
+
meta: any;
|
|
100
|
+
}>;
|
|
101
|
+
declare function listAcpNativeSessions({ selectedAgent, worktree, env }: {
|
|
102
|
+
selectedAgent: any;
|
|
103
|
+
worktree: string | null;
|
|
104
|
+
env: Record<string, string | undefined>;
|
|
105
|
+
}): Promise<{
|
|
106
|
+
supported: boolean;
|
|
107
|
+
sessions: any[];
|
|
108
|
+
pages: number;
|
|
109
|
+
nextCursor: string | null;
|
|
110
|
+
}>;
|
|
111
|
+
declare function mapNativeSessions({ nativeSessions, registry, args, agentId }: {
|
|
112
|
+
nativeSessions: any[];
|
|
113
|
+
registry: any;
|
|
114
|
+
args: ListSessionsArgs;
|
|
115
|
+
agentId: string;
|
|
116
|
+
}): any[];
|
|
117
|
+
declare function mergeSessionLists({ localSessions, nativeSessions, limit }: {
|
|
118
|
+
localSessions: any[];
|
|
119
|
+
nativeSessions: any[];
|
|
120
|
+
limit: number;
|
|
121
|
+
}): any[];
|
|
122
|
+
declare function createNativeDispatcherSessionId(agentId: string, providerSessionId: string): string;
|
|
123
|
+
declare function parseNativeDispatcherSessionId(sessionId: string): {
|
|
124
|
+
agentId: string;
|
|
125
|
+
providerSessionId: string;
|
|
126
|
+
} | null;
|
|
127
|
+
declare function encodeBase64Url(value: string): string;
|
|
128
|
+
declare function decodeBase64Url(value: string): string | null;
|
|
129
|
+
declare function continueSession(args: ContinueSessionArgs): Promise<any>;
|
|
130
|
+
declare function archiveSession(args: ArchiveSessionArgs): Promise<any>;
|
|
131
|
+
declare function findActiveWorktreeJob(registry: any, worktree: string, permissionProfile: string): any | null;
|
|
132
|
+
export { ACTIVE_RUNS, createJob, startBackgroundJobRun, executeAndPersistJobRun, createRunController, persistJobRunResult, markJobRunCrashed, listJobs, getJob, tailJobEvents, cancelJob, listSessions, compactSessionForList, maybeListNativeSessions, listAcpNativeSessions, mapNativeSessions, mergeSessionLists, createNativeDispatcherSessionId, parseNativeDispatcherSessionId, encodeBase64Url, decodeBase64Url, continueSession, archiveSession, findActiveWorktreeJob };
|
|
133
|
+
//# sourceMappingURL=jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
|