@yu_robotics/remote-cli 1.1.13 → 1.1.20
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/client/MessageHandler.d.ts.map +1 -1
- package/dist/client/MessageHandler.js +1 -4
- package/dist/client/MessageHandler.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +26 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/executor/ClaudePersistentExecutor.d.ts.map +1 -1
- package/dist/executor/ClaudePersistentExecutor.js +44 -7
- package/dist/executor/ClaudePersistentExecutor.js.map +1 -1
- package/dist/executor/GeminiExecutor.d.ts +9 -16
- package/dist/executor/GeminiExecutor.d.ts.map +1 -1
- package/dist/executor/GeminiExecutor.js +73 -93
- package/dist/executor/GeminiExecutor.js.map +1 -1
- package/dist/executor/acp/AcpClient.d.ts +25 -9
- package/dist/executor/acp/AcpClient.d.ts.map +1 -1
- package/dist/executor/acp/AcpClient.js +124 -34
- package/dist/executor/acp/AcpClient.js.map +1 -1
- package/dist/executor/acp/AcpTypes.d.ts +70 -59
- package/dist/executor/acp/AcpTypes.d.ts.map +1 -1
- package/dist/executor/acp/AcpTypes.js +7 -3
- package/dist/executor/acp/AcpTypes.js.map +1 -1
- package/dist/security/security-guard.d.ts +3 -2
- package/dist/security/security-guard.d.ts.map +1 -1
- package/dist/security/security-guard.js +8 -7
- package/dist/security/security-guard.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,15 +36,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.AcpClient = void 0;
|
|
37
37
|
const child_process_1 = require("child_process");
|
|
38
38
|
const readline = __importStar(require("readline"));
|
|
39
|
+
// ─── Grace period before SIGKILL after SIGTERM (mirrors acpx) ─────────────────
|
|
40
|
+
const SIGKILL_GRACE_MS = 5_000;
|
|
39
41
|
/**
|
|
40
42
|
* Bidirectional JSON-RPC 2.0 transport for Gemini CLI ACP.
|
|
41
43
|
*
|
|
42
|
-
*
|
|
43
|
-
* -
|
|
44
|
-
* -
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
44
|
+
* Improvements over the previous version (inspired by acpx):
|
|
45
|
+
* - Uses canonical types from @agentclientprotocol/sdk
|
|
46
|
+
* - Multi-stage graceful shutdown: stdin close → SIGTERM → SIGKILL
|
|
47
|
+
* - Explicit sendCancel() for cooperative in-flight cancellation
|
|
48
|
+
* - Strict JSON-RPC message validation before routing
|
|
49
|
+
* - Handles the 'close' event in addition to 'exit' for reliable cleanup
|
|
48
50
|
*/
|
|
49
51
|
class AcpClient {
|
|
50
52
|
child;
|
|
@@ -53,22 +55,34 @@ class AcpClient {
|
|
|
53
55
|
callbacks;
|
|
54
56
|
rl;
|
|
55
57
|
destroyed = false;
|
|
58
|
+
killTimer = null;
|
|
56
59
|
constructor(geminiCommand, geminiArgs, cwd, callbacks) {
|
|
57
60
|
this.callbacks = callbacks;
|
|
58
61
|
this.child = (0, child_process_1.spawn)(geminiCommand, geminiArgs, {
|
|
59
62
|
cwd,
|
|
60
|
-
stdio: ['pipe', 'pipe', '
|
|
63
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
61
64
|
env: process.env,
|
|
62
65
|
});
|
|
66
|
+
// Suppress EPIPE noise from Gemini CLI writing to our closed read-end
|
|
67
|
+
this.child.stdout.on('error', () => { });
|
|
68
|
+
// Pipe child stderr: forward real errors, suppress EPIPE chatter during shutdown
|
|
69
|
+
this.child.stderr?.on('data', (chunk) => {
|
|
70
|
+
const msg = chunk.toString().trimEnd();
|
|
71
|
+
if (msg && !msg.includes('EPIPE') && !msg.includes('write EPIPE')) {
|
|
72
|
+
console.error(`[AcpClient stderr] ${msg}`);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
63
75
|
this.rl = readline.createInterface({ input: this.child.stdout });
|
|
64
76
|
this.rl.on('line', (line) => this.handleLine(line));
|
|
65
77
|
this.child.on('error', (err) => {
|
|
66
78
|
console.error('[AcpClient] Child process error:', err.message);
|
|
67
79
|
this.rejectAllPending(err);
|
|
68
80
|
});
|
|
69
|
-
|
|
81
|
+
// Use 'close' (fires after stdio is drained) rather than 'exit' alone
|
|
82
|
+
this.child.on('close', (code, signal) => {
|
|
83
|
+
this.clearKillTimer();
|
|
70
84
|
if (!this.destroyed) {
|
|
71
|
-
console.warn(`[AcpClient] Child
|
|
85
|
+
console.warn(`[AcpClient] Child closed unexpectedly: code=${code} signal=${signal}`);
|
|
72
86
|
this.rejectAllPending(new Error(`Gemini CLI exited: code=${code} signal=${signal}`));
|
|
73
87
|
}
|
|
74
88
|
});
|
|
@@ -79,25 +93,59 @@ class AcpClient {
|
|
|
79
93
|
console.log(`[AcpClient] Initialized, server protocol version: ${result.protocolVersion}`);
|
|
80
94
|
}
|
|
81
95
|
async newSession(cwd) {
|
|
82
|
-
const result = await this.sendRequest('session/new', { cwd });
|
|
96
|
+
const result = await this.sendRequest('session/new', { cwd, mcpServers: [] });
|
|
83
97
|
return result.sessionId;
|
|
84
98
|
}
|
|
99
|
+
/** Switch a session to YOLO mode so no per-tool permission requests are sent. */
|
|
100
|
+
async setSessionMode(sessionId, modeId) {
|
|
101
|
+
await this.sendRequest('session/set_mode', { sessionId, modeId });
|
|
102
|
+
}
|
|
85
103
|
async prompt(sessionId, text) {
|
|
86
|
-
const result = await this.sendRequest('session/prompt', {
|
|
104
|
+
const result = await this.sendRequest('session/prompt', {
|
|
105
|
+
sessionId,
|
|
106
|
+
prompt: [{ type: 'text', text }],
|
|
107
|
+
});
|
|
87
108
|
return result;
|
|
88
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Send a cooperative cancel notification for an in-flight prompt.
|
|
112
|
+
* The agent may still send final updates before replying with stopReason='cancelled'.
|
|
113
|
+
*/
|
|
89
114
|
sendCancel(sessionId) {
|
|
90
115
|
this.sendNotification('session/cancel', { sessionId });
|
|
91
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Graceful multi-stage shutdown (mirrors acpx):
|
|
119
|
+
* 1. Close stdin so the agent sees EOF
|
|
120
|
+
* 2. Send SIGTERM and wait SIGKILL_GRACE_MS
|
|
121
|
+
* 3. If still alive, send SIGKILL
|
|
122
|
+
*/
|
|
92
123
|
destroy() {
|
|
93
124
|
if (this.destroyed)
|
|
94
125
|
return;
|
|
95
126
|
this.destroyed = true;
|
|
127
|
+
// Reject all pending requests FIRST so callers get a clean error even if
|
|
128
|
+
// readline emits buffered lines during the shutdown sequence below.
|
|
129
|
+
this.rejectAllPending(new Error('AcpClient destroyed'));
|
|
96
130
|
this.rl.close();
|
|
131
|
+
// Stage 1: close stdin (EOF signal to the child)
|
|
132
|
+
try {
|
|
133
|
+
this.child.stdin?.end();
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// ignore
|
|
137
|
+
}
|
|
97
138
|
if (!this.child.killed) {
|
|
139
|
+
// Stage 2: SIGTERM
|
|
98
140
|
this.child.kill('SIGTERM');
|
|
141
|
+
// Stage 3: escalate to SIGKILL if still running after grace period
|
|
142
|
+
this.killTimer = setTimeout(() => {
|
|
143
|
+
if (!this.child.killed) {
|
|
144
|
+
console.warn('[AcpClient] Grace period elapsed, sending SIGKILL');
|
|
145
|
+
this.child.kill('SIGKILL');
|
|
146
|
+
}
|
|
147
|
+
}, SIGKILL_GRACE_MS);
|
|
99
148
|
}
|
|
100
|
-
this.rejectAllPending(new Error('AcpClient destroyed'));
|
|
101
149
|
}
|
|
102
150
|
// ─── Internal message routing ───────────────────────────────────────────────
|
|
103
151
|
sendRequest(method, params) {
|
|
@@ -123,39 +171,65 @@ class AcpClient {
|
|
|
123
171
|
writeLine(msg) {
|
|
124
172
|
if (this.destroyed || !this.child.stdin)
|
|
125
173
|
return;
|
|
126
|
-
|
|
174
|
+
const line = JSON.stringify(msg);
|
|
175
|
+
console.log(`[AcpClient] → ${line.slice(0, 200)}${line.length > 200 ? '...' : ''}`);
|
|
176
|
+
try {
|
|
177
|
+
this.child.stdin.write(line + '\n');
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// stdin may be closed (EPIPE) if the child exited unexpectedly — ignore
|
|
181
|
+
}
|
|
127
182
|
}
|
|
128
183
|
handleLine(line) {
|
|
129
184
|
if (!line.trim())
|
|
130
185
|
return;
|
|
186
|
+
console.log(`[AcpClient] ← ${line.slice(0, 300)}${line.length > 300 ? '...' : ''}`);
|
|
131
187
|
let msg;
|
|
132
188
|
try {
|
|
133
189
|
msg = JSON.parse(line);
|
|
134
190
|
}
|
|
135
191
|
catch {
|
|
136
|
-
// Non-JSON output
|
|
192
|
+
// Non-JSON output (e.g. Gemini startup logs) — ignore
|
|
193
|
+
console.log(`[AcpClient] ← Non-JSON: ${line.slice(0, 200)}`);
|
|
137
194
|
return;
|
|
138
195
|
}
|
|
196
|
+
// ── Strict JSON-RPC 2.0 validation ──────────────────────────────────────
|
|
197
|
+
if (typeof msg !== 'object' || msg === null)
|
|
198
|
+
return;
|
|
139
199
|
const obj = msg;
|
|
140
|
-
if (
|
|
141
|
-
|
|
200
|
+
if (obj['jsonrpc'] !== '2.0') {
|
|
201
|
+
console.warn('[AcpClient] ⚠️ Dropping non-JSON-RPC-2.0 message');
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const hasId = typeof obj['id'] === 'number';
|
|
205
|
+
const hasMethod = typeof obj['method'] === 'string';
|
|
206
|
+
if (hasId && hasMethod) {
|
|
207
|
+
// Server→client request (e.g. session/request_permission)
|
|
142
208
|
this.handleServerRequest(obj);
|
|
143
209
|
}
|
|
144
|
-
else if (
|
|
210
|
+
else if (hasId) {
|
|
145
211
|
// Response to one of our requests
|
|
146
212
|
this.handleResponse(obj);
|
|
147
213
|
}
|
|
148
|
-
else if (
|
|
149
|
-
// Notification
|
|
214
|
+
else if (hasMethod) {
|
|
215
|
+
// Notification
|
|
150
216
|
this.handleNotification(obj);
|
|
151
217
|
}
|
|
218
|
+
else {
|
|
219
|
+
console.warn('[AcpClient] ⚠️ Unrecognized JSON-RPC message shape');
|
|
220
|
+
}
|
|
152
221
|
}
|
|
153
222
|
handleResponse(msg) {
|
|
223
|
+
if (this.destroyed)
|
|
224
|
+
return; // ignore late responses after shutdown
|
|
154
225
|
const pending = this.pendingRequests.get(msg.id);
|
|
155
|
-
if (!pending)
|
|
226
|
+
if (!pending) {
|
|
227
|
+
console.warn(`[AcpClient] ⚠️ No pending request for id=${msg.id}`);
|
|
156
228
|
return;
|
|
229
|
+
}
|
|
157
230
|
this.pendingRequests.delete(msg.id);
|
|
158
231
|
if ('error' in msg) {
|
|
232
|
+
console.error(`[AcpClient] ❌ RPC error id=${msg.id} code=${msg.error.code}: ${msg.error.message}`);
|
|
159
233
|
pending.reject(new Error(`ACP error ${msg.error.code}: ${msg.error.message}`));
|
|
160
234
|
}
|
|
161
235
|
else {
|
|
@@ -166,14 +240,14 @@ class AcpClient {
|
|
|
166
240
|
if (msg.method === 'session/update') {
|
|
167
241
|
this.handleSessionUpdate(msg.params);
|
|
168
242
|
}
|
|
169
|
-
// Other notifications
|
|
243
|
+
// Other notifications silently ignored
|
|
170
244
|
}
|
|
171
245
|
handleServerRequest(msg) {
|
|
172
246
|
if (msg.method === 'session/request_permission') {
|
|
173
247
|
void this.handlePermissionRequest(msg.id, msg.params);
|
|
174
248
|
}
|
|
175
249
|
else {
|
|
176
|
-
//
|
|
250
|
+
// Unknown method — reply method_not_found so the agent can fall back gracefully
|
|
177
251
|
this.sendErrorResponse(msg.id, -32601, 'Method not found');
|
|
178
252
|
}
|
|
179
253
|
}
|
|
@@ -181,13 +255,15 @@ class AcpClient {
|
|
|
181
255
|
const { update } = params;
|
|
182
256
|
switch (update.sessionUpdate) {
|
|
183
257
|
case 'agent_message_chunk': {
|
|
184
|
-
const
|
|
258
|
+
const block = update.content;
|
|
259
|
+
const text = block.type === 'text' ? block.text : undefined;
|
|
185
260
|
if (text)
|
|
186
261
|
this.callbacks.onTextChunk(text);
|
|
187
262
|
break;
|
|
188
263
|
}
|
|
189
264
|
case 'agent_thought_chunk': {
|
|
190
|
-
const
|
|
265
|
+
const block = update.content;
|
|
266
|
+
const text = block.type === 'text' ? block.text : undefined;
|
|
191
267
|
if (text && this.callbacks.onThoughtChunk) {
|
|
192
268
|
this.callbacks.onThoughtChunk(text);
|
|
193
269
|
}
|
|
@@ -196,33 +272,38 @@ class AcpClient {
|
|
|
196
272
|
case 'tool_call': {
|
|
197
273
|
const u = update;
|
|
198
274
|
if (this.callbacks.onToolCall) {
|
|
199
|
-
this.callbacks.onToolCall(u.toolCallId, u.title, u.kind);
|
|
275
|
+
this.callbacks.onToolCall(u.toolCallId, u.title ?? u.toolCallId, u.kind ?? undefined);
|
|
200
276
|
}
|
|
201
277
|
break;
|
|
202
278
|
}
|
|
203
279
|
case 'tool_call_update': {
|
|
204
280
|
const u = update;
|
|
205
281
|
if (u.status === 'completed' && this.callbacks.onToolResult) {
|
|
206
|
-
|
|
282
|
+
const rawOutput = u.content
|
|
283
|
+
?.map((c) => ('text' in c ? c.text : ''))
|
|
284
|
+
.filter(Boolean)
|
|
285
|
+
.join('');
|
|
286
|
+
this.callbacks.onToolResult(u.toolCallId, u.status, rawOutput);
|
|
207
287
|
}
|
|
208
288
|
break;
|
|
209
289
|
}
|
|
210
290
|
case 'plan': {
|
|
211
291
|
if (this.callbacks.onPlan) {
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
.
|
|
292
|
+
const u = update;
|
|
293
|
+
const text = u.entries
|
|
294
|
+
.map((e) => `[${e.status}] ${e.content}`)
|
|
295
|
+
.join('\n');
|
|
215
296
|
this.callbacks.onPlan(text);
|
|
216
297
|
}
|
|
217
298
|
break;
|
|
218
299
|
}
|
|
219
300
|
default:
|
|
220
|
-
// Unknown update type — ignore
|
|
301
|
+
// Unknown update type — silently ignore for forward compatibility
|
|
221
302
|
break;
|
|
222
303
|
}
|
|
223
304
|
}
|
|
224
305
|
async handlePermissionRequest(id, params) {
|
|
225
|
-
let chosenIndex = 0; // default: first option
|
|
306
|
+
let chosenIndex = 0; // default: first option (allow_once / proceed_once)
|
|
226
307
|
if (this.callbacks.onPermissionRequest) {
|
|
227
308
|
try {
|
|
228
309
|
chosenIndex = await this.callbacks.onPermissionRequest(params.toolCall.title, params.options);
|
|
@@ -232,12 +313,21 @@ class AcpClient {
|
|
|
232
313
|
}
|
|
233
314
|
}
|
|
234
315
|
const chosen = params.options[chosenIndex] ?? params.options[0];
|
|
235
|
-
|
|
316
|
+
const outcome = chosen.kind.startsWith('reject')
|
|
317
|
+
? { outcome: 'cancelled' }
|
|
318
|
+
: { outcome: 'selected', optionId: chosen.optionId };
|
|
319
|
+
this.sendResponse(id, { outcome });
|
|
236
320
|
}
|
|
237
321
|
rejectAllPending(error) {
|
|
238
|
-
for (const [
|
|
322
|
+
for (const [, pending] of this.pendingRequests) {
|
|
239
323
|
pending.reject(error);
|
|
240
|
-
|
|
324
|
+
}
|
|
325
|
+
this.pendingRequests.clear();
|
|
326
|
+
}
|
|
327
|
+
clearKillTimer() {
|
|
328
|
+
if (this.killTimer !== null) {
|
|
329
|
+
clearTimeout(this.killTimer);
|
|
330
|
+
this.killTimer = null;
|
|
241
331
|
}
|
|
242
332
|
}
|
|
243
333
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcpClient.js","sourceRoot":"","sources":["../../../src/executor/acp/AcpClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAoD;AACpD,mDAAqC;
|
|
1
|
+
{"version":3,"file":"AcpClient.js","sourceRoot":"","sources":["../../../src/executor/acp/AcpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,74 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ACP wire
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* ACP wire-format types — inlined from the Agent Client Protocol spec.
|
|
3
|
+
*
|
|
4
|
+
* These were previously re-exported from @agentclientprotocol/sdk, but that
|
|
5
|
+
* package is a pure-type dependency that causes "Cannot find module" errors
|
|
6
|
+
* when the published package is installed without it. Since we only use a
|
|
7
|
+
* small subset of the ACP types we inline the relevant definitions here so
|
|
8
|
+
* there is no external type dependency at all.
|
|
5
9
|
*/
|
|
10
|
+
export type StopReason = 'end_turn' | 'max_tokens' | 'max_turn_requests' | 'refusal' | 'cancelled';
|
|
11
|
+
export type PlanEntryStatus = 'pending' | 'in_progress' | 'completed';
|
|
12
|
+
export type PlanEntryPriority = 'high' | 'medium' | 'low';
|
|
13
|
+
export interface PlanEntry {
|
|
14
|
+
content: string;
|
|
15
|
+
status: PlanEntryStatus;
|
|
16
|
+
priority: PlanEntryPriority;
|
|
17
|
+
}
|
|
18
|
+
export interface Plan {
|
|
19
|
+
entries: PlanEntry[];
|
|
20
|
+
}
|
|
21
|
+
export type TextContent = {
|
|
22
|
+
type: 'text';
|
|
23
|
+
text: string;
|
|
24
|
+
};
|
|
25
|
+
export type ImageContent = {
|
|
26
|
+
type: 'image';
|
|
27
|
+
data: string;
|
|
28
|
+
mimeType: string;
|
|
29
|
+
};
|
|
30
|
+
export type ContentBlock = TextContent | ImageContent | {
|
|
31
|
+
type: string;
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
};
|
|
34
|
+
/** agent_message_chunk / agent_thought_chunk */
|
|
35
|
+
export interface ContentChunk {
|
|
36
|
+
content: ContentBlock;
|
|
37
|
+
}
|
|
38
|
+
export type ToolCallStatus = 'pending' | 'in_progress' | 'completed' | 'failed';
|
|
39
|
+
/** tool_call notification */
|
|
40
|
+
export interface ToolCall {
|
|
41
|
+
toolCallId: string;
|
|
42
|
+
title?: string;
|
|
43
|
+
kind?: string;
|
|
44
|
+
}
|
|
45
|
+
/** tool_call_update notification */
|
|
46
|
+
export interface ToolCallUpdate {
|
|
47
|
+
toolCallId: string;
|
|
48
|
+
status?: ToolCallStatus | null;
|
|
49
|
+
content?: Array<ContentBlock> | null;
|
|
50
|
+
}
|
|
51
|
+
export type PermissionOptionKind = 'allow_once' | 'allow_always' | 'reject_once' | 'reject_always';
|
|
52
|
+
export type PermissionOptionId = string;
|
|
53
|
+
export interface PermissionOption {
|
|
54
|
+
kind: PermissionOptionKind;
|
|
55
|
+
optionId: PermissionOptionId;
|
|
56
|
+
name?: string;
|
|
57
|
+
}
|
|
58
|
+
export type SessionUpdate = (ContentChunk & {
|
|
59
|
+
sessionUpdate: 'agent_message_chunk';
|
|
60
|
+
}) | (ContentChunk & {
|
|
61
|
+
sessionUpdate: 'agent_thought_chunk';
|
|
62
|
+
}) | (ToolCall & {
|
|
63
|
+
sessionUpdate: 'tool_call';
|
|
64
|
+
}) | (ToolCallUpdate & {
|
|
65
|
+
sessionUpdate: 'tool_call_update';
|
|
66
|
+
}) | (Plan & {
|
|
67
|
+
sessionUpdate: 'plan';
|
|
68
|
+
}) | {
|
|
69
|
+
sessionUpdate: string;
|
|
70
|
+
[key: string]: unknown;
|
|
71
|
+
};
|
|
6
72
|
export interface JsonRpcRequest {
|
|
7
73
|
jsonrpc: '2.0';
|
|
8
74
|
id: number;
|
|
@@ -29,63 +95,8 @@ export interface JsonRpcErrorResponse {
|
|
|
29
95
|
};
|
|
30
96
|
}
|
|
31
97
|
export type JsonRpcResponse = JsonRpcSuccessResponse | JsonRpcErrorResponse;
|
|
32
|
-
export interface AcpContentBlock {
|
|
33
|
-
type: 'text' | 'image' | 'resource_link' | 'resource';
|
|
34
|
-
text?: string;
|
|
35
|
-
}
|
|
36
|
-
export interface AcpUpdateAgentMessageChunk {
|
|
37
|
-
sessionUpdate: 'agent_message_chunk';
|
|
38
|
-
content: AcpContentBlock;
|
|
39
|
-
}
|
|
40
|
-
export interface AcpUpdateAgentThoughtChunk {
|
|
41
|
-
sessionUpdate: 'agent_thought_chunk';
|
|
42
|
-
content: AcpContentBlock;
|
|
43
|
-
}
|
|
44
|
-
export interface AcpUpdateToolCall {
|
|
45
|
-
sessionUpdate: 'tool_call';
|
|
46
|
-
toolCallId: string;
|
|
47
|
-
title: string;
|
|
48
|
-
kind?: string;
|
|
49
|
-
status?: string;
|
|
50
|
-
}
|
|
51
|
-
export interface AcpUpdateToolCallUpdate {
|
|
52
|
-
sessionUpdate: 'tool_call_update';
|
|
53
|
-
toolCallId: string;
|
|
54
|
-
status: string;
|
|
55
|
-
rawOutput?: string;
|
|
56
|
-
}
|
|
57
|
-
export interface AcpUpdatePlan {
|
|
58
|
-
sessionUpdate: 'plan';
|
|
59
|
-
content: AcpContentBlock[];
|
|
60
|
-
}
|
|
61
|
-
export interface AcpUpdateUnknown {
|
|
62
|
-
sessionUpdate: string;
|
|
63
|
-
[key: string]: unknown;
|
|
64
|
-
}
|
|
65
|
-
export type AcpSessionUpdate = AcpUpdateAgentMessageChunk | AcpUpdateAgentThoughtChunk | AcpUpdateToolCall | AcpUpdateToolCallUpdate | AcpUpdatePlan | AcpUpdateUnknown;
|
|
66
98
|
export interface AcpSessionUpdateParams {
|
|
67
99
|
sessionId: string;
|
|
68
|
-
update:
|
|
69
|
-
}
|
|
70
|
-
export interface AcpPermissionOption {
|
|
71
|
-
kind: 'allow_once' | 'allow_always' | 'reject_once' | 'reject_always';
|
|
72
|
-
}
|
|
73
|
-
export interface AcpRequestPermissionParams {
|
|
74
|
-
sessionId: string;
|
|
75
|
-
toolCall: {
|
|
76
|
-
toolCallId: string;
|
|
77
|
-
title: string;
|
|
78
|
-
};
|
|
79
|
-
options: AcpPermissionOption[];
|
|
80
|
-
}
|
|
81
|
-
export interface AcpInitializeResult {
|
|
82
|
-
protocolVersion: number;
|
|
83
|
-
}
|
|
84
|
-
export interface AcpNewSessionResult {
|
|
85
|
-
sessionId: string;
|
|
86
|
-
}
|
|
87
|
-
export interface AcpPromptResult {
|
|
88
|
-
sessionId: string;
|
|
89
|
-
stopReason: 'end_turn' | 'max_tokens' | 'cancelled' | 'refusal' | 'max_turn_requests';
|
|
100
|
+
update: SessionUpdate;
|
|
90
101
|
}
|
|
91
102
|
//# sourceMappingURL=AcpTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcpTypes.d.ts","sourceRoot":"","sources":["../../../src/executor/acp/AcpTypes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AcpTypes.d.ts","sourceRoot":"","sources":["../../../src/executor/acp/AcpTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* ACP wire
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* ACP wire-format types — inlined from the Agent Client Protocol spec.
|
|
4
|
+
*
|
|
5
|
+
* These were previously re-exported from @agentclientprotocol/sdk, but that
|
|
6
|
+
* package is a pure-type dependency that causes "Cannot find module" errors
|
|
7
|
+
* when the published package is installed without it. Since we only use a
|
|
8
|
+
* small subset of the ACP types we inline the relevant definitions here so
|
|
9
|
+
* there is no external type dependency at all.
|
|
6
10
|
*/
|
|
7
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
12
|
//# sourceMappingURL=AcpTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcpTypes.js","sourceRoot":"","sources":["../../../src/executor/acp/AcpTypes.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"AcpTypes.js","sourceRoot":"","sources":["../../../src/executor/acp/AcpTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
|
|
@@ -34,8 +34,9 @@ export interface HookData {
|
|
|
34
34
|
*/
|
|
35
35
|
export declare function validateToolUse(hookData: HookData, allowedDirs: string[]): ValidationResult;
|
|
36
36
|
/**
|
|
37
|
-
* Load allowed directories from config file
|
|
38
|
-
*
|
|
37
|
+
* Load allowed directories from config file.
|
|
38
|
+
* Merges allowedDirectories and lastWorkingDirectory so that both the
|
|
39
|
+
* user-configured whitelist and the current working directory are permitted.
|
|
39
40
|
*/
|
|
40
41
|
export declare function loadAllowedDirs(configPath?: string): string[];
|
|
41
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-guard.d.ts","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAsLD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,gBAAgB,CA+D3F;AAED
|
|
1
|
+
{"version":3,"file":"security-guard.d.ts","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAsLD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,gBAAgB,CA+D3F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB7D;AAED;;;GAGG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiC1C"}
|
|
@@ -263,8 +263,9 @@ function validateToolUse(hookData, allowedDirs) {
|
|
|
263
263
|
};
|
|
264
264
|
}
|
|
265
265
|
/**
|
|
266
|
-
* Load allowed directories from config file
|
|
267
|
-
*
|
|
266
|
+
* Load allowed directories from config file.
|
|
267
|
+
* Merges allowedDirectories and lastWorkingDirectory so that both the
|
|
268
|
+
* user-configured whitelist and the current working directory are permitted.
|
|
268
269
|
*/
|
|
269
270
|
function loadAllowedDirs(configPath) {
|
|
270
271
|
const effectivePath = configPath ||
|
|
@@ -272,13 +273,13 @@ function loadAllowedDirs(configPath) {
|
|
|
272
273
|
path.join(process.env.HOME || '', '.remote-cli', 'config.json');
|
|
273
274
|
try {
|
|
274
275
|
const config = JSON.parse(fs.readFileSync(effectivePath, 'utf8'));
|
|
275
|
-
|
|
276
|
-
//
|
|
276
|
+
const configured = config.security?.allowedDirectories || [];
|
|
277
|
+
// Include lastWorkingDirectory in addition to (not instead of) the configured list
|
|
277
278
|
if (config.lastWorkingDirectory) {
|
|
278
|
-
|
|
279
|
+
const merged = new Set([...configured, config.lastWorkingDirectory]);
|
|
280
|
+
return Array.from(merged);
|
|
279
281
|
}
|
|
280
|
-
|
|
281
|
-
return config.security?.allowedDirectories || [];
|
|
282
|
+
return configured;
|
|
282
283
|
}
|
|
283
284
|
catch {
|
|
284
285
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-guard.js","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiNH,0CA+DC;
|
|
1
|
+
{"version":3,"file":"security-guard.js","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"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"}
|