cyrus-core 0.2.5 → 0.2.6
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/CyrusAgentSession.d.ts +14 -0
- package/dist/CyrusAgentSession.d.ts.map +1 -1
- package/dist/agent-runner-types.d.ts +97 -0
- package/dist/agent-runner-types.d.ts.map +1 -1
- package/dist/config-types.d.ts +22 -4
- package/dist/config-types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/issue-tracker/IIssueTrackerService.d.ts +18 -5
- package/dist/issue-tracker/IIssueTrackerService.d.ts.map +1 -1
- package/dist/issue-tracker/adapters/CLIEventTransport.d.ts +91 -0
- package/dist/issue-tracker/adapters/CLIEventTransport.d.ts.map +1 -0
- package/dist/issue-tracker/adapters/CLIEventTransport.js +104 -0
- package/dist/issue-tracker/adapters/CLIEventTransport.js.map +1 -0
- package/dist/issue-tracker/adapters/CLIIssueTrackerService.d.ts +239 -0
- package/dist/issue-tracker/adapters/CLIIssueTrackerService.d.ts.map +1 -0
- package/dist/issue-tracker/adapters/CLIIssueTrackerService.js +1112 -0
- package/dist/issue-tracker/adapters/CLIIssueTrackerService.js.map +1 -0
- package/dist/issue-tracker/adapters/CLIRPCServer.d.ts +318 -0
- package/dist/issue-tracker/adapters/CLIRPCServer.d.ts.map +1 -0
- package/dist/issue-tracker/adapters/CLIRPCServer.js +536 -0
- package/dist/issue-tracker/adapters/CLIRPCServer.js.map +1 -0
- package/dist/issue-tracker/adapters/CLITypes.d.ts +243 -0
- package/dist/issue-tracker/adapters/CLITypes.d.ts.map +1 -0
- package/dist/issue-tracker/adapters/CLITypes.js +378 -0
- package/dist/issue-tracker/adapters/CLITypes.js.map +1 -0
- package/dist/issue-tracker/adapters/index.d.ts +14 -0
- package/dist/issue-tracker/adapters/index.d.ts.map +1 -0
- package/dist/issue-tracker/adapters/index.js +11 -0
- package/dist/issue-tracker/adapters/index.js.map +1 -0
- package/dist/issue-tracker/index.d.ts +2 -1
- package/dist/issue-tracker/index.d.ts.map +1 -1
- package/dist/issue-tracker/index.js +3 -2
- package/dist/issue-tracker/index.js.map +1 -1
- package/dist/issue-tracker/types.d.ts +141 -29
- package/dist/issue-tracker/types.d.ts.map +1 -1
- package/dist/issue-tracker/types.js.map +1 -1
- package/package.json +30 -30
- package/LICENSE +0 -674
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI RPC Server - Fastify-based JSON-RPC handler for F1 testing framework
|
|
3
|
+
*
|
|
4
|
+
* This server exposes HTTP endpoints that bridge the F1 CLI binary with the
|
|
5
|
+
* CLIIssueTrackerService and EdgeWorker, enabling command routing, pagination,
|
|
6
|
+
* and session management.
|
|
7
|
+
*
|
|
8
|
+
* @module issue-tracker/adapters/CLIRPCServer
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Standard JSON-RPC 2.0 error codes
|
|
12
|
+
*/
|
|
13
|
+
export const RPCErrorCodes = {
|
|
14
|
+
PARSE_ERROR: -32700,
|
|
15
|
+
INVALID_REQUEST: -32600,
|
|
16
|
+
METHOD_NOT_FOUND: -32601,
|
|
17
|
+
INVALID_PARAMS: -32602,
|
|
18
|
+
INTERNAL_ERROR: -32603,
|
|
19
|
+
SERVER_ERROR: -32000, // Generic server error
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* CLI RPC Server
|
|
23
|
+
*
|
|
24
|
+
* Exposes HTTP JSON-RPC endpoints for CLI commands, delegating to
|
|
25
|
+
* CLIIssueTrackerService for all operations.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const server = new CLIRPCServer({
|
|
30
|
+
* fastifyServer: app,
|
|
31
|
+
* issueTracker: cliIssueTracker,
|
|
32
|
+
* version: "1.0.0"
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* server.register();
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export class CLIRPCServer {
|
|
39
|
+
config;
|
|
40
|
+
startTime;
|
|
41
|
+
constructor(config) {
|
|
42
|
+
this.config = config;
|
|
43
|
+
this.startTime = Date.now();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Register the /cli/rpc endpoint with Fastify
|
|
47
|
+
*/
|
|
48
|
+
register() {
|
|
49
|
+
this.config.fastifyServer.post("/cli/rpc", async (request, reply) => {
|
|
50
|
+
const requestId = request.body?.id ?? null;
|
|
51
|
+
try {
|
|
52
|
+
const { method, params } = request.body;
|
|
53
|
+
// Route to appropriate handler
|
|
54
|
+
const response = await this.handleCommand(method, params, requestId);
|
|
55
|
+
reply.send(response);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
59
|
+
reply.send({
|
|
60
|
+
jsonrpc: "2.0",
|
|
61
|
+
error: {
|
|
62
|
+
code: RPCErrorCodes.INTERNAL_ERROR,
|
|
63
|
+
message: errorMessage,
|
|
64
|
+
},
|
|
65
|
+
id: requestId,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Route commands to appropriate handlers
|
|
72
|
+
*/
|
|
73
|
+
async handleCommand(method, params, requestId) {
|
|
74
|
+
switch (method) {
|
|
75
|
+
case "ping":
|
|
76
|
+
return this.handlePing(params, requestId);
|
|
77
|
+
case "status":
|
|
78
|
+
return this.handleStatus(params, requestId);
|
|
79
|
+
case "version":
|
|
80
|
+
return this.handleVersion(params, requestId);
|
|
81
|
+
case "createIssue":
|
|
82
|
+
return this.handleCreateIssue(params, requestId);
|
|
83
|
+
case "assignIssue":
|
|
84
|
+
return this.handleAssignIssue(params, requestId);
|
|
85
|
+
case "createComment":
|
|
86
|
+
return this.handleCreateComment(params, requestId);
|
|
87
|
+
case "startSession":
|
|
88
|
+
return this.handleStartSession(params, requestId);
|
|
89
|
+
case "viewSession":
|
|
90
|
+
return this.handleViewSession(params, requestId);
|
|
91
|
+
case "promptSession":
|
|
92
|
+
return this.handlePromptSession(params, requestId);
|
|
93
|
+
case "stopSession":
|
|
94
|
+
return this.handleStopSession(params, requestId);
|
|
95
|
+
case "listAgentSessions":
|
|
96
|
+
return this.handleListAgentSessions(params, requestId);
|
|
97
|
+
default:
|
|
98
|
+
return {
|
|
99
|
+
jsonrpc: "2.0",
|
|
100
|
+
error: {
|
|
101
|
+
code: RPCErrorCodes.METHOD_NOT_FOUND,
|
|
102
|
+
message: `Unknown command: ${method}`,
|
|
103
|
+
},
|
|
104
|
+
id: requestId,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Handle ping command - health check
|
|
110
|
+
*/
|
|
111
|
+
async handlePing(_params, requestId) {
|
|
112
|
+
return {
|
|
113
|
+
jsonrpc: "2.0",
|
|
114
|
+
result: {
|
|
115
|
+
message: "pong",
|
|
116
|
+
timestamp: Date.now(),
|
|
117
|
+
},
|
|
118
|
+
id: requestId,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Handle status command - server status with uptime
|
|
123
|
+
*/
|
|
124
|
+
async handleStatus(_params, requestId) {
|
|
125
|
+
return {
|
|
126
|
+
jsonrpc: "2.0",
|
|
127
|
+
result: {
|
|
128
|
+
uptime: Date.now() - this.startTime,
|
|
129
|
+
status: "ready",
|
|
130
|
+
server: "CLIRPCServer",
|
|
131
|
+
},
|
|
132
|
+
id: requestId,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Handle version command - version info
|
|
137
|
+
*/
|
|
138
|
+
async handleVersion(_params, requestId) {
|
|
139
|
+
return {
|
|
140
|
+
jsonrpc: "2.0",
|
|
141
|
+
result: {
|
|
142
|
+
version: this.config.version ?? "unknown",
|
|
143
|
+
platform: "cli",
|
|
144
|
+
},
|
|
145
|
+
id: requestId,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Handle createIssue command - create new issue
|
|
150
|
+
*/
|
|
151
|
+
async handleCreateIssue(params, requestId) {
|
|
152
|
+
const { teamId, title, description, priority, stateId } = params;
|
|
153
|
+
if (!teamId || !title) {
|
|
154
|
+
return {
|
|
155
|
+
jsonrpc: "2.0",
|
|
156
|
+
error: {
|
|
157
|
+
code: RPCErrorCodes.INVALID_PARAMS,
|
|
158
|
+
message: "Missing required parameters: teamId and title are required",
|
|
159
|
+
},
|
|
160
|
+
id: requestId,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const issue = await this.config.issueTracker.createIssue({
|
|
165
|
+
teamId,
|
|
166
|
+
title,
|
|
167
|
+
description,
|
|
168
|
+
priority,
|
|
169
|
+
stateId,
|
|
170
|
+
});
|
|
171
|
+
return {
|
|
172
|
+
jsonrpc: "2.0",
|
|
173
|
+
result: {
|
|
174
|
+
issue,
|
|
175
|
+
},
|
|
176
|
+
id: requestId,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
return {
|
|
181
|
+
jsonrpc: "2.0",
|
|
182
|
+
error: {
|
|
183
|
+
code: RPCErrorCodes.SERVER_ERROR,
|
|
184
|
+
message: error instanceof Error ? error.message : "Failed to create issue",
|
|
185
|
+
},
|
|
186
|
+
id: requestId,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Handle assignIssue command - assign issue to user
|
|
192
|
+
*/
|
|
193
|
+
async handleAssignIssue(params, requestId) {
|
|
194
|
+
const { issueId, userId } = params;
|
|
195
|
+
if (!issueId || !userId) {
|
|
196
|
+
return {
|
|
197
|
+
jsonrpc: "2.0",
|
|
198
|
+
error: {
|
|
199
|
+
code: RPCErrorCodes.INVALID_PARAMS,
|
|
200
|
+
message: "Missing required parameters: issueId and userId are required",
|
|
201
|
+
},
|
|
202
|
+
id: requestId,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
try {
|
|
206
|
+
const updates = {
|
|
207
|
+
assigneeId: userId,
|
|
208
|
+
};
|
|
209
|
+
const issue = await this.config.issueTracker.updateIssue(issueId, updates);
|
|
210
|
+
return {
|
|
211
|
+
jsonrpc: "2.0",
|
|
212
|
+
result: {
|
|
213
|
+
issue,
|
|
214
|
+
},
|
|
215
|
+
id: requestId,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
return {
|
|
220
|
+
jsonrpc: "2.0",
|
|
221
|
+
error: {
|
|
222
|
+
code: RPCErrorCodes.SERVER_ERROR,
|
|
223
|
+
message: error instanceof Error ? error.message : "Failed to assign issue",
|
|
224
|
+
},
|
|
225
|
+
id: requestId,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Handle createComment command - add comment to issue
|
|
231
|
+
*/
|
|
232
|
+
async handleCreateComment(params, requestId) {
|
|
233
|
+
const { issueId, body } = params;
|
|
234
|
+
if (!issueId || !body) {
|
|
235
|
+
return {
|
|
236
|
+
jsonrpc: "2.0",
|
|
237
|
+
error: {
|
|
238
|
+
code: RPCErrorCodes.INVALID_PARAMS,
|
|
239
|
+
message: "Missing required parameters: issueId and body are required",
|
|
240
|
+
},
|
|
241
|
+
id: requestId,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
const input = {
|
|
246
|
+
body,
|
|
247
|
+
};
|
|
248
|
+
const comment = await this.config.issueTracker.createComment(issueId, input);
|
|
249
|
+
return {
|
|
250
|
+
jsonrpc: "2.0",
|
|
251
|
+
result: {
|
|
252
|
+
comment,
|
|
253
|
+
},
|
|
254
|
+
id: requestId,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
return {
|
|
259
|
+
jsonrpc: "2.0",
|
|
260
|
+
error: {
|
|
261
|
+
code: RPCErrorCodes.SERVER_ERROR,
|
|
262
|
+
message: error instanceof Error ? error.message : "Failed to create comment",
|
|
263
|
+
},
|
|
264
|
+
id: requestId,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Handle startSession command - start agent session on issue
|
|
270
|
+
*/
|
|
271
|
+
async handleStartSession(params, requestId) {
|
|
272
|
+
const { issueId, externalLink } = params;
|
|
273
|
+
if (!issueId) {
|
|
274
|
+
return {
|
|
275
|
+
jsonrpc: "2.0",
|
|
276
|
+
error: {
|
|
277
|
+
code: RPCErrorCodes.INVALID_PARAMS,
|
|
278
|
+
message: "Missing required parameter: issueId is required",
|
|
279
|
+
},
|
|
280
|
+
id: requestId,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
try {
|
|
284
|
+
const input = {
|
|
285
|
+
issueId,
|
|
286
|
+
...(externalLink && { externalLink }),
|
|
287
|
+
};
|
|
288
|
+
const result = await this.config.issueTracker.createAgentSessionOnIssue(input);
|
|
289
|
+
// Extract session from LinearFetch result
|
|
290
|
+
const agentSessionPayload = await result;
|
|
291
|
+
// Access agentSession property safely
|
|
292
|
+
const agentSession = await agentSessionPayload.agentSession;
|
|
293
|
+
if (!agentSession) {
|
|
294
|
+
throw new Error("Failed to create agent session - no session returned");
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
jsonrpc: "2.0",
|
|
298
|
+
result: {
|
|
299
|
+
session: {
|
|
300
|
+
sessionId: agentSession.id,
|
|
301
|
+
issueId,
|
|
302
|
+
status: agentSession.status ?? "unknown",
|
|
303
|
+
createdAt: Date.now(),
|
|
304
|
+
updatedAt: Date.now(),
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
id: requestId,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
return {
|
|
312
|
+
jsonrpc: "2.0",
|
|
313
|
+
error: {
|
|
314
|
+
code: RPCErrorCodes.SERVER_ERROR,
|
|
315
|
+
message: error instanceof Error ? error.message : "Failed to start session",
|
|
316
|
+
},
|
|
317
|
+
id: requestId,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Handle viewSession command - view session with activity pagination
|
|
323
|
+
*/
|
|
324
|
+
async handleViewSession(params, requestId) {
|
|
325
|
+
const { sessionId, limit = 50, offset = 0, search } = params;
|
|
326
|
+
if (!sessionId) {
|
|
327
|
+
return {
|
|
328
|
+
jsonrpc: "2.0",
|
|
329
|
+
error: {
|
|
330
|
+
code: RPCErrorCodes.INVALID_PARAMS,
|
|
331
|
+
message: "Missing required parameter: sessionId is required",
|
|
332
|
+
},
|
|
333
|
+
id: requestId,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
try {
|
|
337
|
+
// Fetch session
|
|
338
|
+
const agentSession = await this.config.issueTracker.fetchAgentSession(sessionId);
|
|
339
|
+
// Fetch ALL activities from the issue tracker (no limit yet)
|
|
340
|
+
const activityDataList = this.config.issueTracker.listAgentActivities(sessionId);
|
|
341
|
+
// Filter out ephemeral activities that have been replaced by subsequent activities
|
|
342
|
+
// An ephemeral activity is replaced if there's ANY activity that comes after it
|
|
343
|
+
const visibleActivities = activityDataList.filter((activity, index) => {
|
|
344
|
+
// If this activity is not ephemeral, it's always visible
|
|
345
|
+
if (activity.ephemeral !== true) {
|
|
346
|
+
return true;
|
|
347
|
+
}
|
|
348
|
+
// If this is an ephemeral activity, check if there's any activity after it (by index)
|
|
349
|
+
// If there is, this ephemeral activity should be hidden (replaced)
|
|
350
|
+
// We use index comparison because activities may have the same timestamp
|
|
351
|
+
const hasSubsequentActivity = activityDataList.some((_otherActivity, otherIndex) => otherIndex > index);
|
|
352
|
+
// Show ephemeral activity only if there's no subsequent activity
|
|
353
|
+
return !hasSubsequentActivity;
|
|
354
|
+
});
|
|
355
|
+
// Filter by search if provided
|
|
356
|
+
let filteredActivities = visibleActivities;
|
|
357
|
+
if (search) {
|
|
358
|
+
const searchLower = search.toLowerCase();
|
|
359
|
+
filteredActivities = visibleActivities.filter((a) => a.content.toLowerCase().includes(searchLower));
|
|
360
|
+
}
|
|
361
|
+
// Apply pagination after filtering
|
|
362
|
+
const paginatedActivityData = filteredActivities.slice(offset, offset + limit);
|
|
363
|
+
// Check if there are more activities
|
|
364
|
+
const hasMore = filteredActivities.length > offset + limit;
|
|
365
|
+
// Transform to AgentActivityData format
|
|
366
|
+
const activities = paginatedActivityData.map((activityData) => ({
|
|
367
|
+
id: activityData.id,
|
|
368
|
+
type: activityData.type,
|
|
369
|
+
content: activityData.content,
|
|
370
|
+
createdAt: activityData.createdAt.getTime(),
|
|
371
|
+
}));
|
|
372
|
+
// Total count is based on filtered activities
|
|
373
|
+
const totalCount = filteredActivities.length;
|
|
374
|
+
return {
|
|
375
|
+
jsonrpc: "2.0",
|
|
376
|
+
result: {
|
|
377
|
+
session: {
|
|
378
|
+
sessionId: agentSession.id,
|
|
379
|
+
issueId: agentSession.issueId ?? "unknown",
|
|
380
|
+
status: agentSession.status ?? "unknown",
|
|
381
|
+
createdAt: agentSession.createdAt.getTime(),
|
|
382
|
+
updatedAt: agentSession.updatedAt.getTime(),
|
|
383
|
+
},
|
|
384
|
+
activities,
|
|
385
|
+
totalCount,
|
|
386
|
+
hasMore,
|
|
387
|
+
},
|
|
388
|
+
id: requestId,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
catch (error) {
|
|
392
|
+
return {
|
|
393
|
+
jsonrpc: "2.0",
|
|
394
|
+
error: {
|
|
395
|
+
code: RPCErrorCodes.SERVER_ERROR,
|
|
396
|
+
message: error instanceof Error ? error.message : "Failed to view session",
|
|
397
|
+
},
|
|
398
|
+
id: requestId,
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Handle promptSession command - send message to session
|
|
404
|
+
*/
|
|
405
|
+
async handlePromptSession(params, requestId) {
|
|
406
|
+
const { sessionId, message } = params;
|
|
407
|
+
if (!sessionId || !message) {
|
|
408
|
+
return {
|
|
409
|
+
jsonrpc: "2.0",
|
|
410
|
+
error: {
|
|
411
|
+
code: RPCErrorCodes.INVALID_PARAMS,
|
|
412
|
+
message: "Missing required parameters: sessionId and message are required",
|
|
413
|
+
},
|
|
414
|
+
id: requestId,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
try {
|
|
418
|
+
// Prompt the session - this creates a comment and emits a prompted event
|
|
419
|
+
await this.config.issueTracker.promptAgentSession(sessionId, message);
|
|
420
|
+
return {
|
|
421
|
+
jsonrpc: "2.0",
|
|
422
|
+
result: {
|
|
423
|
+
success: true,
|
|
424
|
+
message: "Session prompted successfully",
|
|
425
|
+
},
|
|
426
|
+
id: requestId,
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
catch (error) {
|
|
430
|
+
return {
|
|
431
|
+
jsonrpc: "2.0",
|
|
432
|
+
error: {
|
|
433
|
+
code: RPCErrorCodes.SERVER_ERROR,
|
|
434
|
+
message: error instanceof Error ? error.message : "Failed to prompt session",
|
|
435
|
+
},
|
|
436
|
+
id: requestId,
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Handle stopSession command - stop agent session
|
|
442
|
+
*/
|
|
443
|
+
async handleStopSession(params, requestId) {
|
|
444
|
+
const { sessionId } = params;
|
|
445
|
+
if (!sessionId) {
|
|
446
|
+
return {
|
|
447
|
+
jsonrpc: "2.0",
|
|
448
|
+
error: {
|
|
449
|
+
code: RPCErrorCodes.INVALID_PARAMS,
|
|
450
|
+
message: "Missing required parameter: sessionId is required",
|
|
451
|
+
},
|
|
452
|
+
id: requestId,
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
try {
|
|
456
|
+
// Import AgentSessionStatus for the update
|
|
457
|
+
const { AgentSessionStatus } = await import("../types.js");
|
|
458
|
+
// Update the session status to complete
|
|
459
|
+
await this.config.issueTracker.updateAgentSessionStatus(sessionId, AgentSessionStatus.Complete);
|
|
460
|
+
// Emit stop signal event for EdgeWorker to handle
|
|
461
|
+
await this.config.issueTracker.emitStopSignalEvent(sessionId);
|
|
462
|
+
return {
|
|
463
|
+
jsonrpc: "2.0",
|
|
464
|
+
result: {
|
|
465
|
+
success: true,
|
|
466
|
+
message: "Session stopped successfully",
|
|
467
|
+
},
|
|
468
|
+
id: requestId,
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
catch (error) {
|
|
472
|
+
return {
|
|
473
|
+
jsonrpc: "2.0",
|
|
474
|
+
error: {
|
|
475
|
+
code: RPCErrorCodes.SERVER_ERROR,
|
|
476
|
+
message: error instanceof Error ? error.message : "Failed to stop session",
|
|
477
|
+
},
|
|
478
|
+
id: requestId,
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Handle listAgentSessions command - list all sessions (optional)
|
|
484
|
+
*/
|
|
485
|
+
async handleListAgentSessions(params, requestId) {
|
|
486
|
+
const { issueId, limit = 50, offset = 0 } = params;
|
|
487
|
+
try {
|
|
488
|
+
// Get sessions from the issue tracker
|
|
489
|
+
const sessionDataList = this.config.issueTracker.listAgentSessions({
|
|
490
|
+
issueId,
|
|
491
|
+
limit: limit + 1, // Fetch one extra to check hasMore
|
|
492
|
+
offset,
|
|
493
|
+
});
|
|
494
|
+
// Check if there are more sessions
|
|
495
|
+
const hasMore = sessionDataList.length > limit;
|
|
496
|
+
const paginatedSessionData = hasMore
|
|
497
|
+
? sessionDataList.slice(0, limit)
|
|
498
|
+
: sessionDataList;
|
|
499
|
+
// Transform to AgentSessionData format
|
|
500
|
+
const sessions = paginatedSessionData.map((sessionData) => ({
|
|
501
|
+
sessionId: sessionData.id,
|
|
502
|
+
issueId: sessionData.issueId ?? "unknown",
|
|
503
|
+
status: sessionData.status ?? "unknown",
|
|
504
|
+
createdAt: sessionData.createdAt.getTime(),
|
|
505
|
+
updatedAt: sessionData.updatedAt.getTime(),
|
|
506
|
+
}));
|
|
507
|
+
// Get total count (approximate - would need separate count query for accuracy)
|
|
508
|
+
const allSessions = this.config.issueTracker.listAgentSessions({
|
|
509
|
+
issueId,
|
|
510
|
+
});
|
|
511
|
+
const totalCount = allSessions.length;
|
|
512
|
+
return {
|
|
513
|
+
jsonrpc: "2.0",
|
|
514
|
+
result: {
|
|
515
|
+
sessions,
|
|
516
|
+
totalCount,
|
|
517
|
+
hasMore,
|
|
518
|
+
},
|
|
519
|
+
id: requestId,
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
catch (error) {
|
|
523
|
+
return {
|
|
524
|
+
jsonrpc: "2.0",
|
|
525
|
+
error: {
|
|
526
|
+
code: RPCErrorCodes.SERVER_ERROR,
|
|
527
|
+
message: error instanceof Error
|
|
528
|
+
? error.message
|
|
529
|
+
: "Failed to list agent sessions",
|
|
530
|
+
},
|
|
531
|
+
id: requestId,
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
//# sourceMappingURL=CLIRPCServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CLIRPCServer.js","sourceRoot":"","sources":["../../../src/issue-tracker/adapters/CLIRPCServer.ts"],"names":[],"mappings":"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"}
|