acp-factory 0.0.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/CHANGELOG.md +33 -0
- package/LICENSE +21 -0
- package/README.md +341 -0
- package/dist/agent-handle.d.ts +55 -0
- package/dist/agent-handle.d.ts.map +1 -0
- package/dist/agent-handle.js +154 -0
- package/dist/agent-handle.js.map +1 -0
- package/dist/client-handler.d.ts +99 -0
- package/dist/client-handler.d.ts.map +1 -0
- package/dist/client-handler.js +311 -0
- package/dist/client-handler.js.map +1 -0
- package/dist/factory.d.ts +28 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +48 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/claude-code.d.ts +9 -0
- package/dist/providers/claude-code.d.ts.map +1 -0
- package/dist/providers/claude-code.js +12 -0
- package/dist/providers/claude-code.js.map +1 -0
- package/dist/session.d.ts +125 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +221 -0
- package/dist/session.js.map +1 -0
- package/dist/types.d.ts +154 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACPClientHandler - Implements acp.Client interface
|
|
3
|
+
*/
|
|
4
|
+
import type * as acp from "@agentclientprotocol/sdk";
|
|
5
|
+
import type { ClientHandlers, PermissionMode, ExtendedSessionUpdate } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* A pushable async iterable for bridging push-based and async-iterator-based code.
|
|
8
|
+
* Used to stream session updates to consumers.
|
|
9
|
+
*/
|
|
10
|
+
export declare class Pushable<T> implements AsyncIterable<T> {
|
|
11
|
+
private queue;
|
|
12
|
+
private resolvers;
|
|
13
|
+
private done;
|
|
14
|
+
/** Push an item to the queue */
|
|
15
|
+
push(item: T): void;
|
|
16
|
+
/** Signal that no more items will be pushed */
|
|
17
|
+
end(): void;
|
|
18
|
+
/** Check if the pushable has ended */
|
|
19
|
+
isDone(): boolean;
|
|
20
|
+
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Implements the ACP Client interface, bridging agent requests to callbacks
|
|
24
|
+
*/
|
|
25
|
+
export declare class ACPClientHandler implements acp.Client {
|
|
26
|
+
private handlers;
|
|
27
|
+
private permissionMode;
|
|
28
|
+
/** Per-session update streams */
|
|
29
|
+
private sessionStreams;
|
|
30
|
+
/** Pending permission requests awaiting user response (interactive mode) */
|
|
31
|
+
private pendingPermissions;
|
|
32
|
+
/** Counter for generating unique permission request IDs */
|
|
33
|
+
private permissionRequestCounter;
|
|
34
|
+
constructor(handlers?: ClientHandlers, permissionMode?: PermissionMode);
|
|
35
|
+
/**
|
|
36
|
+
* Get or create a pushable stream for a session
|
|
37
|
+
*/
|
|
38
|
+
getSessionStream(sessionId: string): Pushable<ExtendedSessionUpdate>;
|
|
39
|
+
/**
|
|
40
|
+
* End a session's update stream
|
|
41
|
+
*/
|
|
42
|
+
endSessionStream(sessionId: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Respond to a pending permission request (for interactive mode)
|
|
45
|
+
* @param requestId - The permission request ID from the PermissionRequestUpdate
|
|
46
|
+
* @param optionId - The optionId of the selected option
|
|
47
|
+
*/
|
|
48
|
+
respondToPermission(requestId: string, optionId: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Cancel a pending permission request (for interactive mode)
|
|
51
|
+
* @param requestId - The permission request ID from the PermissionRequestUpdate
|
|
52
|
+
*/
|
|
53
|
+
cancelPermission(requestId: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Check if there are any pending permission requests
|
|
56
|
+
*/
|
|
57
|
+
hasPendingPermissions(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get all pending permission request IDs for a session
|
|
60
|
+
*/
|
|
61
|
+
getPendingPermissionIds(sessionId: string): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Handle permission requests from the agent
|
|
64
|
+
*/
|
|
65
|
+
requestPermission(params: acp.RequestPermissionRequest): Promise<acp.RequestPermissionResponse>;
|
|
66
|
+
/**
|
|
67
|
+
* Handle session updates from the agent
|
|
68
|
+
*/
|
|
69
|
+
sessionUpdate(params: acp.SessionNotification): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Handle file read requests
|
|
72
|
+
*/
|
|
73
|
+
readTextFile(params: acp.ReadTextFileRequest): Promise<acp.ReadTextFileResponse>;
|
|
74
|
+
/**
|
|
75
|
+
* Handle file write requests
|
|
76
|
+
*/
|
|
77
|
+
writeTextFile(params: acp.WriteTextFileRequest): Promise<acp.WriteTextFileResponse>;
|
|
78
|
+
/**
|
|
79
|
+
* Handle terminal creation requests
|
|
80
|
+
*/
|
|
81
|
+
createTerminal(params: acp.CreateTerminalRequest): Promise<acp.CreateTerminalResponse>;
|
|
82
|
+
/**
|
|
83
|
+
* Handle terminal output requests
|
|
84
|
+
*/
|
|
85
|
+
terminalOutput(params: acp.TerminalOutputRequest): Promise<acp.TerminalOutputResponse>;
|
|
86
|
+
/**
|
|
87
|
+
* Handle terminal kill requests
|
|
88
|
+
*/
|
|
89
|
+
killTerminal(params: acp.KillTerminalCommandRequest): Promise<acp.KillTerminalCommandResponse>;
|
|
90
|
+
/**
|
|
91
|
+
* Handle terminal release requests
|
|
92
|
+
*/
|
|
93
|
+
releaseTerminal(params: acp.ReleaseTerminalRequest): Promise<acp.ReleaseTerminalResponse>;
|
|
94
|
+
/**
|
|
95
|
+
* Handle terminal wait for exit requests
|
|
96
|
+
*/
|
|
97
|
+
waitForTerminalExit(params: acp.WaitForTerminalExitRequest): Promise<acp.WaitForTerminalExitResponse>;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=client-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-handler.d.ts","sourceRoot":"","sources":["../src/client-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAEd,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,QAAQ,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,IAAI,CAAS;IAErB,gCAAgC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAWnB,+CAA+C;IAC/C,GAAG,IAAI,IAAI;IAQX,sCAAsC;IACtC,MAAM,IAAI,OAAO;IAIjB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;CAgB3C;AAWD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,GAAG,CAAC,MAAM;IACjD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,cAAc,CAAiB;IAEvC,iCAAiC;IACjC,OAAO,CAAC,cAAc,CAA2D;IAEjF,4EAA4E;IAC5E,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,2DAA2D;IAC3D,OAAO,CAAC,wBAAwB,CAAK;gBAGnC,QAAQ,GAAE,cAAmB,EAC7B,cAAc,GAAE,cAA+B;IAMjD;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC,qBAAqB,CAAC;IASpE;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOzC;;;;OAIG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAe9D;;;OAGG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAczC;;OAEG;IACH,qBAAqB,IAAI,OAAO;IAIhC;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAUpD;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,GAAG,CAAC,wBAAwB,GACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;IAqFzC;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnE;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,GAAG,CAAC,mBAAmB,GAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAiBpC;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,GAAG,CAAC,oBAAoB,GAC/B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAiBrC;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,GAAG,CAAC,qBAAqB,GAChC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAStC;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,GAAG,CAAC,qBAAqB,GAChC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAUtC;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,GAAG,CAAC,0BAA0B,GACrC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAU3C;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,GAAG,CAAC,sBAAsB,GACjC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAUvC;;OAEG;IACG,mBAAmB,CACvB,MAAM,EAAE,GAAG,CAAC,0BAA0B,GACrC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;CAS5C"}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACPClientHandler - Implements acp.Client interface
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "node:fs/promises";
|
|
5
|
+
/**
|
|
6
|
+
* A pushable async iterable for bridging push-based and async-iterator-based code.
|
|
7
|
+
* Used to stream session updates to consumers.
|
|
8
|
+
*/
|
|
9
|
+
export class Pushable {
|
|
10
|
+
queue = [];
|
|
11
|
+
resolvers = [];
|
|
12
|
+
done = false;
|
|
13
|
+
/** Push an item to the queue */
|
|
14
|
+
push(item) {
|
|
15
|
+
if (this.done)
|
|
16
|
+
return;
|
|
17
|
+
if (this.resolvers.length > 0) {
|
|
18
|
+
const resolve = this.resolvers.shift();
|
|
19
|
+
resolve({ value: item, done: false });
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.queue.push(item);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Signal that no more items will be pushed */
|
|
26
|
+
end() {
|
|
27
|
+
this.done = true;
|
|
28
|
+
while (this.resolvers.length > 0) {
|
|
29
|
+
const resolve = this.resolvers.shift();
|
|
30
|
+
resolve({ value: undefined, done: true });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Check if the pushable has ended */
|
|
34
|
+
isDone() {
|
|
35
|
+
return this.done;
|
|
36
|
+
}
|
|
37
|
+
[Symbol.asyncIterator]() {
|
|
38
|
+
return {
|
|
39
|
+
next: () => {
|
|
40
|
+
if (this.queue.length > 0) {
|
|
41
|
+
const value = this.queue.shift();
|
|
42
|
+
return Promise.resolve({ value, done: false });
|
|
43
|
+
}
|
|
44
|
+
if (this.done) {
|
|
45
|
+
return Promise.resolve({ value: undefined, done: true });
|
|
46
|
+
}
|
|
47
|
+
return new Promise((resolve) => {
|
|
48
|
+
this.resolvers.push(resolve);
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Implements the ACP Client interface, bridging agent requests to callbacks
|
|
56
|
+
*/
|
|
57
|
+
export class ACPClientHandler {
|
|
58
|
+
handlers;
|
|
59
|
+
permissionMode;
|
|
60
|
+
/** Per-session update streams */
|
|
61
|
+
sessionStreams = new Map();
|
|
62
|
+
/** Pending permission requests awaiting user response (interactive mode) */
|
|
63
|
+
pendingPermissions = new Map();
|
|
64
|
+
/** Counter for generating unique permission request IDs */
|
|
65
|
+
permissionRequestCounter = 0;
|
|
66
|
+
constructor(handlers = {}, permissionMode = "auto-approve") {
|
|
67
|
+
this.handlers = handlers;
|
|
68
|
+
this.permissionMode = permissionMode;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get or create a pushable stream for a session
|
|
72
|
+
*/
|
|
73
|
+
getSessionStream(sessionId) {
|
|
74
|
+
let stream = this.sessionStreams.get(sessionId);
|
|
75
|
+
if (!stream) {
|
|
76
|
+
stream = new Pushable();
|
|
77
|
+
this.sessionStreams.set(sessionId, stream);
|
|
78
|
+
}
|
|
79
|
+
return stream;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* End a session's update stream
|
|
83
|
+
*/
|
|
84
|
+
endSessionStream(sessionId) {
|
|
85
|
+
const stream = this.sessionStreams.get(sessionId);
|
|
86
|
+
if (stream) {
|
|
87
|
+
stream.end();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Respond to a pending permission request (for interactive mode)
|
|
92
|
+
* @param requestId - The permission request ID from the PermissionRequestUpdate
|
|
93
|
+
* @param optionId - The optionId of the selected option
|
|
94
|
+
*/
|
|
95
|
+
respondToPermission(requestId, optionId) {
|
|
96
|
+
const pending = this.pendingPermissions.get(requestId);
|
|
97
|
+
if (!pending) {
|
|
98
|
+
throw new Error(`No pending permission request with ID: ${requestId}`);
|
|
99
|
+
}
|
|
100
|
+
this.pendingPermissions.delete(requestId);
|
|
101
|
+
pending.resolve({
|
|
102
|
+
outcome: {
|
|
103
|
+
outcome: "selected",
|
|
104
|
+
optionId,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Cancel a pending permission request (for interactive mode)
|
|
110
|
+
* @param requestId - The permission request ID from the PermissionRequestUpdate
|
|
111
|
+
*/
|
|
112
|
+
cancelPermission(requestId) {
|
|
113
|
+
const pending = this.pendingPermissions.get(requestId);
|
|
114
|
+
if (!pending) {
|
|
115
|
+
throw new Error(`No pending permission request with ID: ${requestId}`);
|
|
116
|
+
}
|
|
117
|
+
this.pendingPermissions.delete(requestId);
|
|
118
|
+
pending.resolve({
|
|
119
|
+
outcome: {
|
|
120
|
+
outcome: "cancelled",
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if there are any pending permission requests
|
|
126
|
+
*/
|
|
127
|
+
hasPendingPermissions() {
|
|
128
|
+
return this.pendingPermissions.size > 0;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get all pending permission request IDs for a session
|
|
132
|
+
*/
|
|
133
|
+
getPendingPermissionIds(sessionId) {
|
|
134
|
+
const ids = [];
|
|
135
|
+
for (const [id, pending] of this.pendingPermissions) {
|
|
136
|
+
if (pending.sessionId === sessionId) {
|
|
137
|
+
ids.push(id);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return ids;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Handle permission requests from the agent
|
|
144
|
+
*/
|
|
145
|
+
async requestPermission(params) {
|
|
146
|
+
// If callback mode and handler provided, delegate to it
|
|
147
|
+
if (this.permissionMode === "callback" && this.handlers.onPermissionRequest) {
|
|
148
|
+
return this.handlers.onPermissionRequest(params);
|
|
149
|
+
}
|
|
150
|
+
// Find appropriate option based on mode
|
|
151
|
+
const options = params.options;
|
|
152
|
+
if (this.permissionMode === "auto-approve") {
|
|
153
|
+
// Look for allow_once or allow_always option
|
|
154
|
+
const allowOption = options.find((opt) => opt.kind === "allow_once" || opt.kind === "allow_always");
|
|
155
|
+
if (allowOption) {
|
|
156
|
+
return {
|
|
157
|
+
outcome: {
|
|
158
|
+
outcome: "selected",
|
|
159
|
+
optionId: allowOption.optionId,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (this.permissionMode === "auto-deny") {
|
|
165
|
+
// Look for reject_once or reject_always option
|
|
166
|
+
const denyOption = options.find((opt) => opt.kind === "reject_once" || opt.kind === "reject_always");
|
|
167
|
+
if (denyOption) {
|
|
168
|
+
return {
|
|
169
|
+
outcome: {
|
|
170
|
+
outcome: "selected",
|
|
171
|
+
optionId: denyOption.optionId,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Interactive mode: emit permission request as session update and wait for response
|
|
177
|
+
if (this.permissionMode === "interactive") {
|
|
178
|
+
const requestId = `perm-${++this.permissionRequestCounter}`;
|
|
179
|
+
// Create the permission request update
|
|
180
|
+
const permissionUpdate = {
|
|
181
|
+
sessionUpdate: "permission_request",
|
|
182
|
+
requestId,
|
|
183
|
+
sessionId: params.sessionId,
|
|
184
|
+
toolCall: {
|
|
185
|
+
toolCallId: params.toolCall.toolCallId,
|
|
186
|
+
title: params.toolCall.title ?? "Unknown",
|
|
187
|
+
status: params.toolCall.status ?? "pending",
|
|
188
|
+
rawInput: params.toolCall.rawInput,
|
|
189
|
+
},
|
|
190
|
+
options: params.options,
|
|
191
|
+
};
|
|
192
|
+
// Emit to session stream
|
|
193
|
+
const stream = this.getSessionStream(params.sessionId);
|
|
194
|
+
stream.push(permissionUpdate);
|
|
195
|
+
// Create deferred promise and wait for response
|
|
196
|
+
return new Promise((resolve, reject) => {
|
|
197
|
+
this.pendingPermissions.set(requestId, {
|
|
198
|
+
resolve,
|
|
199
|
+
reject,
|
|
200
|
+
sessionId: params.sessionId,
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
// Fallback: if we have a handler, use it; otherwise pick first option
|
|
205
|
+
if (this.handlers.onPermissionRequest) {
|
|
206
|
+
return this.handlers.onPermissionRequest(params);
|
|
207
|
+
}
|
|
208
|
+
// Last resort: return first option
|
|
209
|
+
return {
|
|
210
|
+
outcome: {
|
|
211
|
+
outcome: "selected",
|
|
212
|
+
optionId: options[0].optionId,
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Handle session updates from the agent
|
|
218
|
+
*/
|
|
219
|
+
async sessionUpdate(params) {
|
|
220
|
+
const stream = this.getSessionStream(params.sessionId);
|
|
221
|
+
stream.push(params.update);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Handle file read requests
|
|
225
|
+
*/
|
|
226
|
+
async readTextFile(params) {
|
|
227
|
+
// Use custom handler if provided
|
|
228
|
+
if (this.handlers.onFileRead) {
|
|
229
|
+
const content = await this.handlers.onFileRead(params.path);
|
|
230
|
+
return { content };
|
|
231
|
+
}
|
|
232
|
+
// Default: read from filesystem
|
|
233
|
+
try {
|
|
234
|
+
const content = await fs.readFile(params.path, "utf-8");
|
|
235
|
+
return { content };
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
239
|
+
throw new Error(`Failed to read file ${params.path}: ${message}`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Handle file write requests
|
|
244
|
+
*/
|
|
245
|
+
async writeTextFile(params) {
|
|
246
|
+
// Use custom handler if provided
|
|
247
|
+
if (this.handlers.onFileWrite) {
|
|
248
|
+
await this.handlers.onFileWrite(params.path, params.content);
|
|
249
|
+
return {};
|
|
250
|
+
}
|
|
251
|
+
// Default: write to filesystem
|
|
252
|
+
try {
|
|
253
|
+
await fs.writeFile(params.path, params.content, "utf-8");
|
|
254
|
+
return {};
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
258
|
+
throw new Error(`Failed to write file ${params.path}: ${message}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Handle terminal creation requests
|
|
263
|
+
*/
|
|
264
|
+
async createTerminal(params) {
|
|
265
|
+
if (!this.handlers.onTerminalCreate) {
|
|
266
|
+
throw new Error("Terminal operations not supported: no onTerminalCreate handler provided");
|
|
267
|
+
}
|
|
268
|
+
return this.handlers.onTerminalCreate(params);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Handle terminal output requests
|
|
272
|
+
*/
|
|
273
|
+
async terminalOutput(params) {
|
|
274
|
+
if (!this.handlers.onTerminalOutput) {
|
|
275
|
+
throw new Error("Terminal operations not supported: no onTerminalOutput handler provided");
|
|
276
|
+
}
|
|
277
|
+
const output = await this.handlers.onTerminalOutput(params.terminalId);
|
|
278
|
+
return { output, truncated: false };
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Handle terminal kill requests
|
|
282
|
+
*/
|
|
283
|
+
async killTerminal(params) {
|
|
284
|
+
if (!this.handlers.onTerminalKill) {
|
|
285
|
+
throw new Error("Terminal operations not supported: no onTerminalKill handler provided");
|
|
286
|
+
}
|
|
287
|
+
await this.handlers.onTerminalKill(params.terminalId);
|
|
288
|
+
return {};
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Handle terminal release requests
|
|
292
|
+
*/
|
|
293
|
+
async releaseTerminal(params) {
|
|
294
|
+
if (!this.handlers.onTerminalRelease) {
|
|
295
|
+
throw new Error("Terminal operations not supported: no onTerminalRelease handler provided");
|
|
296
|
+
}
|
|
297
|
+
await this.handlers.onTerminalRelease(params.terminalId);
|
|
298
|
+
return {};
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Handle terminal wait for exit requests
|
|
302
|
+
*/
|
|
303
|
+
async waitForTerminalExit(params) {
|
|
304
|
+
if (!this.handlers.onTerminalWaitForExit) {
|
|
305
|
+
throw new Error("Terminal operations not supported: no onTerminalWaitForExit handler provided");
|
|
306
|
+
}
|
|
307
|
+
const exitCode = await this.handlers.onTerminalWaitForExit(params.terminalId);
|
|
308
|
+
return { exitCode };
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=client-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-handler.js","sourceRoot":"","sources":["../src/client-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentFactory - Registry and spawner for agent types
|
|
3
|
+
*/
|
|
4
|
+
import type { AgentConfig, SpawnOptions } from "./types.js";
|
|
5
|
+
import { AgentHandle } from "./agent-handle.js";
|
|
6
|
+
/**
|
|
7
|
+
* Factory for spawning and managing agents
|
|
8
|
+
*/
|
|
9
|
+
export declare class AgentFactory {
|
|
10
|
+
private static registry;
|
|
11
|
+
/**
|
|
12
|
+
* Register an agent configuration
|
|
13
|
+
*/
|
|
14
|
+
static register(name: string, config: AgentConfig): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get a registered agent configuration
|
|
17
|
+
*/
|
|
18
|
+
static getConfig(name: string): AgentConfig | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* List all registered agent names
|
|
21
|
+
*/
|
|
22
|
+
static listAgents(): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Spawn an agent by name
|
|
25
|
+
*/
|
|
26
|
+
static spawn(name: string, options?: SpawnOptions): Promise<AgentHandle>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuC;IAO9D;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IAIxD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIvD;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,MAAM,EAAE;IAI7B;;OAEG;WACU,KAAK,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC;CAcxB"}
|
package/dist/factory.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentFactory - Registry and spawner for agent types
|
|
3
|
+
*/
|
|
4
|
+
import { AgentHandle } from "./agent-handle.js";
|
|
5
|
+
// Import default providers
|
|
6
|
+
import { claudeCodeConfig } from "./providers/claude-code.js";
|
|
7
|
+
/**
|
|
8
|
+
* Factory for spawning and managing agents
|
|
9
|
+
*/
|
|
10
|
+
export class AgentFactory {
|
|
11
|
+
static registry = new Map();
|
|
12
|
+
// Static initialization - register default providers
|
|
13
|
+
static {
|
|
14
|
+
AgentFactory.register("claude-code", claudeCodeConfig);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Register an agent configuration
|
|
18
|
+
*/
|
|
19
|
+
static register(name, config) {
|
|
20
|
+
AgentFactory.registry.set(name, config);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get a registered agent configuration
|
|
24
|
+
*/
|
|
25
|
+
static getConfig(name) {
|
|
26
|
+
return AgentFactory.registry.get(name);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* List all registered agent names
|
|
30
|
+
*/
|
|
31
|
+
static listAgents() {
|
|
32
|
+
return Array.from(AgentFactory.registry.keys());
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Spawn an agent by name
|
|
36
|
+
*/
|
|
37
|
+
static async spawn(name, options = {}) {
|
|
38
|
+
const config = AgentFactory.registry.get(name);
|
|
39
|
+
if (!config) {
|
|
40
|
+
throw new Error(`Unknown agent type: ${name}. Available: ${AgentFactory.listAgents().join(", ")}`);
|
|
41
|
+
}
|
|
42
|
+
// Merge environment variables
|
|
43
|
+
const env = { ...config.env, ...options.env };
|
|
44
|
+
const mergedConfig = { ...config, env };
|
|
45
|
+
return AgentHandle.create(mergedConfig, options);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,2BAA2B;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAC,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;IAE9D,qDAAqD;IACrD;QACE,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,MAAmB;QAC/C,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAY;QAC3B,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,IAAY,EACZ,UAAwB,EAAE;QAE1B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,gBAAgB,YAAY,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClF,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAgB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;QAErD,OAAO,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* acp-factory - A library for spawning and managing agents through ACP
|
|
3
|
+
*/
|
|
4
|
+
export { AgentFactory } from "./factory.js";
|
|
5
|
+
export { AgentHandle } from "./agent-handle.js";
|
|
6
|
+
export { Session } from "./session.js";
|
|
7
|
+
export { Pushable } from "./client-handler.js";
|
|
8
|
+
export type { AgentConfig, SpawnOptions, SessionOptions, PermissionMode, ClientHandlers, PromptContent, } from "./types.js";
|
|
9
|
+
export type { SessionUpdate, ContentBlock, TextContent, ImageContent, ResourceLink, AgentCapabilities, StopReason, } from "./types.js";
|
|
10
|
+
export type { ToolCall, ToolCallUpdate, ToolCallStatus, ToolCallContent, ToolCallLocation, } from "./types.js";
|
|
11
|
+
export type { RequestPermissionRequest, RequestPermissionResponse, PermissionOption, } from "./types.js";
|
|
12
|
+
export type { PermissionRequestUpdate, ExtendedSessionUpdate, } from "./types.js";
|
|
13
|
+
export type { CreateTerminalRequest, CreateTerminalResponse, TerminalOutputRequest, TerminalOutputResponse, } from "./types.js";
|
|
14
|
+
export type { McpServer, McpServerStdio, McpServerHttp, McpServerSse, } from "./types.js";
|
|
15
|
+
export type { NewSessionResponse, PromptResponse, InitializeRequest, InitializeResponse, } from "./types.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,YAAY,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* acp-factory - A library for spawning and managing agents through ACP
|
|
3
|
+
*/
|
|
4
|
+
// Core exports
|
|
5
|
+
export { AgentFactory } from "./factory.js";
|
|
6
|
+
export { AgentHandle } from "./agent-handle.js";
|
|
7
|
+
export { Session } from "./session.js";
|
|
8
|
+
export { Pushable } from "./client-handler.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code agent configuration
|
|
3
|
+
*/
|
|
4
|
+
import type { AgentConfig } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Default configuration for Claude Code agent via claude-code-acp
|
|
7
|
+
*/
|
|
8
|
+
export declare const claudeCodeConfig: AgentConfig;
|
|
9
|
+
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/providers/claude-code.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAI9B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code agent configuration
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Default configuration for Claude Code agent via claude-code-acp
|
|
6
|
+
*/
|
|
7
|
+
export const claudeCodeConfig = {
|
|
8
|
+
command: "npx",
|
|
9
|
+
args: ["@zed-industries/claude-code-acp"],
|
|
10
|
+
env: {},
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/providers/claude-code.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAgB;IAC3C,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,iCAAiC,CAAC;IACzC,GAAG,EAAE,EAAE;CACR,CAAC"}
|