@finityno/claude-code-acp 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp-agent.d.ts +8 -0
- package/dist/acp-agent.d.ts.map +1 -1
- package/dist/acp-agent.js +87 -5
- package/dist/lib.d.ts +3 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +4 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +6 -0
- package/dist/subagent-tracker.d.ts +102 -2
- package/dist/subagent-tracker.d.ts.map +1 -1
- package/dist/subagent-tracker.js +189 -22
- package/dist/task-manager.d.ts +106 -0
- package/dist/task-manager.d.ts.map +1 -0
- package/dist/task-manager.js +231 -0
- package/dist/task-mcp-tools.d.ts +16 -0
- package/dist/task-mcp-tools.d.ts.map +1 -0
- package/dist/task-mcp-tools.js +256 -0
- package/package.json +2 -2
package/dist/acp-agent.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ type Session = {
|
|
|
19
19
|
cancelled: boolean;
|
|
20
20
|
permissionMode: PermissionMode;
|
|
21
21
|
settingsManager: SettingsManager;
|
|
22
|
+
approvedBashPrompts?: Array<{
|
|
23
|
+
tool: string;
|
|
24
|
+
prompt: string;
|
|
25
|
+
}>;
|
|
22
26
|
};
|
|
23
27
|
type BackgroundTerminal = {
|
|
24
28
|
handle: TerminalHandle;
|
|
@@ -87,6 +91,10 @@ export declare class ClaudeAcpAgent implements Agent {
|
|
|
87
91
|
authenticate(_params: AuthenticateRequest): Promise<void>;
|
|
88
92
|
prompt(params: PromptRequest): Promise<PromptResponse>;
|
|
89
93
|
cancel(params: CancelNotification): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Handle SDK task notification for background tasks
|
|
96
|
+
*/
|
|
97
|
+
private handleTaskNotification;
|
|
90
98
|
unstable_setSessionModel(params: SetSessionModelRequest): Promise<SetSessionModelResponse | void>;
|
|
91
99
|
setSessionMode(params: SetSessionModeRequest): Promise<SetSessionModeResponse>;
|
|
92
100
|
readTextFile(params: ReadTextFileRequest): Promise<ReadTextFileResponse>;
|
package/dist/acp-agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,mBAAmB,EACnB,mBAAmB,EAEnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAElB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EAEpB,oBAAoB,EACpB,qBAAqB,EAErB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,UAAU,EAEV,OAAO,EACP,cAAc,EACd,KAAK,EAEL,0BAA0B,EAC1B,cAAc,EACf,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAAwC,QAAQ,EAAe,MAAM,YAAY,CAAC;AAYzF,OAAO,EACL,eAAe,EAIhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAIlG,eAAO,MAAM,iBAAiB,QAA2D,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACjC;AAED,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"acp-agent.d.ts","sourceRoot":"","sources":["../src/acp-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/acp-agent.js
CHANGED
|
@@ -122,9 +122,15 @@ export class ClaudeAcpAgent {
|
|
|
122
122
|
break;
|
|
123
123
|
case "compact_boundary":
|
|
124
124
|
case "hook_response":
|
|
125
|
+
case "hook_started":
|
|
126
|
+
case "hook_progress":
|
|
125
127
|
case "status":
|
|
126
128
|
// Todo: process via status api: https://docs.claude.com/en/docs/claude-code/hooks#hook-output
|
|
127
129
|
break;
|
|
130
|
+
case "task_notification":
|
|
131
|
+
// Handle SDK task notification for background tasks
|
|
132
|
+
await this.handleTaskNotification(message, params.sessionId);
|
|
133
|
+
break;
|
|
128
134
|
default:
|
|
129
135
|
unreachable(message, this.logger);
|
|
130
136
|
break;
|
|
@@ -237,6 +243,19 @@ export class ClaudeAcpAgent {
|
|
|
237
243
|
}
|
|
238
244
|
await this.sessions[params.sessionId].query.interrupt();
|
|
239
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* Handle SDK task notification for background tasks
|
|
248
|
+
*/
|
|
249
|
+
async handleTaskNotification(message, sessionId) {
|
|
250
|
+
// Update the subagent tracker
|
|
251
|
+
await this.subagentTracker.handleTaskNotification({
|
|
252
|
+
task_id: message.task_id,
|
|
253
|
+
status: message.status,
|
|
254
|
+
output_file: message.output_file,
|
|
255
|
+
summary: message.summary,
|
|
256
|
+
});
|
|
257
|
+
this.logger.log(`[ACP] Task notification: ${message.task_id} -> ${message.status}`);
|
|
258
|
+
}
|
|
240
259
|
async unstable_setSessionModel(params) {
|
|
241
260
|
if (!this.sessions[params.sessionId]) {
|
|
242
261
|
throw new Error("Session not found");
|
|
@@ -285,8 +304,25 @@ export class ClaudeAcpAgent {
|
|
|
285
304
|
};
|
|
286
305
|
}
|
|
287
306
|
if (toolName === "ExitPlanMode") {
|
|
307
|
+
// Parse allowedPrompts from the tool input
|
|
308
|
+
const exitPlanInput = toolInput;
|
|
309
|
+
const allowedPrompts = exitPlanInput.allowedPrompts || [];
|
|
310
|
+
// Format requested permissions for display
|
|
311
|
+
const toolCallContent = [];
|
|
312
|
+
if (allowedPrompts.length > 0) {
|
|
313
|
+
const permissionLines = allowedPrompts.map((p) => ` - ${p.tool}(prompt: ${p.prompt})`);
|
|
314
|
+
toolCallContent.push({
|
|
315
|
+
type: "text",
|
|
316
|
+
text: `**Requested permissions:**\n${permissionLines.join("\n")}`,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
288
319
|
const response = await this.client.requestPermission({
|
|
289
320
|
options: [
|
|
321
|
+
{
|
|
322
|
+
kind: "allow_always",
|
|
323
|
+
name: "Yes, clear context and auto-accept edits",
|
|
324
|
+
optionId: "clearAndAcceptEdits",
|
|
325
|
+
},
|
|
290
326
|
{
|
|
291
327
|
kind: "allow_always",
|
|
292
328
|
name: "Yes, and auto-accept edits",
|
|
@@ -300,26 +336,52 @@ export class ClaudeAcpAgent {
|
|
|
300
336
|
toolCallId: toolUseID,
|
|
301
337
|
rawInput: toolInput,
|
|
302
338
|
title: toolInfoFromToolUse({ name: toolName, input: toolInput }).title,
|
|
339
|
+
content: toolCallContent.length > 0 ? toolCallContent : undefined,
|
|
303
340
|
},
|
|
341
|
+
_meta: allowedPrompts.length > 0 ? { requestedPermissions: allowedPrompts } : undefined,
|
|
304
342
|
});
|
|
305
343
|
if (signal.aborted || response.outcome?.outcome === "cancelled") {
|
|
306
344
|
throw new Error("Tool use aborted");
|
|
307
345
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
346
|
+
const selectedOption = response.outcome?.outcome === "selected" ? response.outcome.optionId : null;
|
|
347
|
+
if (selectedOption === "default" || selectedOption === "acceptEdits" || selectedOption === "clearAndAcceptEdits") {
|
|
348
|
+
// Store approved bash prompts in session
|
|
349
|
+
if (allowedPrompts.length > 0) {
|
|
350
|
+
session.approvedBashPrompts = allowedPrompts;
|
|
351
|
+
}
|
|
352
|
+
// Determine the permission mode based on selection
|
|
353
|
+
const permissionMode = selectedOption === "default" ? "default" : "acceptEdits";
|
|
354
|
+
session.permissionMode = permissionMode;
|
|
311
355
|
await this.client.sessionUpdate({
|
|
312
356
|
sessionId,
|
|
313
357
|
update: {
|
|
314
358
|
sessionUpdate: "current_mode_update",
|
|
315
|
-
currentModeId:
|
|
359
|
+
currentModeId: permissionMode,
|
|
316
360
|
},
|
|
317
361
|
});
|
|
362
|
+
// Handle context clearing if requested
|
|
363
|
+
if (selectedOption === "clearAndAcceptEdits") {
|
|
364
|
+
// Get the plan content from the tool input to preserve it after clearing
|
|
365
|
+
const planFilePath = toolInput.planFilePath;
|
|
366
|
+
const compactInstructions = planFilePath
|
|
367
|
+
? `Keep a summary of the implementation plan. The user has approved the plan and wants to start coding. The plan file is at: ${planFilePath}`
|
|
368
|
+
: "Keep a summary of the implementation plan. The user has approved the plan and wants to start coding.";
|
|
369
|
+
// Send a synthetic message to trigger compact
|
|
370
|
+
session.input.push({
|
|
371
|
+
type: "user",
|
|
372
|
+
message: {
|
|
373
|
+
role: "user",
|
|
374
|
+
content: `/compact ${compactInstructions}`,
|
|
375
|
+
},
|
|
376
|
+
parent_tool_use_id: null,
|
|
377
|
+
session_id: sessionId,
|
|
378
|
+
});
|
|
379
|
+
}
|
|
318
380
|
return {
|
|
319
381
|
behavior: "allow",
|
|
320
382
|
updatedInput: toolInput,
|
|
321
383
|
updatedPermissions: suggestions ?? [
|
|
322
|
-
{ type: "setMode", mode:
|
|
384
|
+
{ type: "setMode", mode: permissionMode, destination: "session" },
|
|
323
385
|
],
|
|
324
386
|
};
|
|
325
387
|
}
|
|
@@ -406,6 +468,26 @@ export class ClaudeAcpAgent {
|
|
|
406
468
|
],
|
|
407
469
|
};
|
|
408
470
|
}
|
|
471
|
+
// Check if Bash command matches approved prompts from plan mode
|
|
472
|
+
if (toolName === "Bash" && session.approvedBashPrompts && session.approvedBashPrompts.length > 0) {
|
|
473
|
+
const bashInput = toolInput;
|
|
474
|
+
const description = bashInput.description || "";
|
|
475
|
+
// Substring match: if any approved prompt appears in the command description
|
|
476
|
+
const matchesApprovedPrompt = session.approvedBashPrompts.some((prompt) => {
|
|
477
|
+
if (prompt.tool !== "Bash")
|
|
478
|
+
return false;
|
|
479
|
+
return description.toLowerCase().includes(prompt.prompt.toLowerCase());
|
|
480
|
+
});
|
|
481
|
+
if (matchesApprovedPrompt) {
|
|
482
|
+
return {
|
|
483
|
+
behavior: "allow",
|
|
484
|
+
updatedInput: toolInput,
|
|
485
|
+
updatedPermissions: suggestions ?? [
|
|
486
|
+
{ type: "addRules", rules: [{ toolName }], behavior: "allow", destination: "session" },
|
|
487
|
+
],
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
}
|
|
409
491
|
const response = await this.client.requestPermission({
|
|
410
492
|
options: [
|
|
411
493
|
{
|
package/dist/lib.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export { loadManagedSettings, applyEnvironmentSettings, nodeToWebReadable, nodeT
|
|
|
3
3
|
export { createMcpServer } from "./mcp-server.js";
|
|
4
4
|
export { toolInfoFromToolUse, planEntries, toolUpdateFromToolResult, createPreToolUseHook, acpToolNames as toolNames, normalizeToolName, getCanonicalToolName, } from "./tools.js";
|
|
5
5
|
export { SettingsManager, type ClaudeCodeSettings, type PermissionSettings, type PermissionDecision, type PermissionCheckResult, type SettingsManagerOptions, } from "./settings.js";
|
|
6
|
-
export { SubagentTracker, isTaskToolInput, extractSubagentMeta, type TrackedSubagent, type SubagentStatus, type SubagentType, type SubagentEventType, type SubagentUpdateMeta, type SubagentEventListener, type SubagentStats, type TaskToolInput, } from "./subagent-tracker.js";
|
|
6
|
+
export { SubagentTracker, isTaskToolInput, extractSubagentMeta, type TrackedSubagent, type SubagentStatus, type SubagentType, type SubagentEventType, type SubagentUpdateMeta, type SubagentEventListener, type SubagentStats, type TaskToolInput, type SerializedTrackerState, type SerializedTask, type SDKTaskNotification, } from "./subagent-tracker.js";
|
|
7
|
+
export { TaskManager, type TaskManagerOptions, type TaskFilter, } from "./task-manager.js";
|
|
8
|
+
export { registerTaskMcpTools, type TaskMcpToolsOptions } from "./task-mcp-tools.js";
|
|
7
9
|
export type { ClaudePlanEntry } from "./tools.js";
|
|
8
10
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,MAAM,EACN,kBAAkB,EAClB,6BAA6B,EAC7B,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,IAAI,SAAS,EACzB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,MAAM,EACN,kBAAkB,EAClB,6BAA6B,EAC7B,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,EACR,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,IAAI,SAAS,EACzB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGrF,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/lib.js
CHANGED
|
@@ -6,3 +6,7 @@ export { toolInfoFromToolUse, planEntries, toolUpdateFromToolResult, createPreTo
|
|
|
6
6
|
export { SettingsManager, } from "./settings.js";
|
|
7
7
|
// Export subagent tracking
|
|
8
8
|
export { SubagentTracker, isTaskToolInput, extractSubagentMeta, } from "./subagent-tracker.js";
|
|
9
|
+
// Export task management
|
|
10
|
+
export { TaskManager, } from "./task-manager.js";
|
|
11
|
+
// Export task MCP tools registration
|
|
12
|
+
export { registerTaskMcpTools } from "./task-mcp-tools.js";
|
package/dist/mcp-server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,OAAO,EAAqB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EACL,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,OAAO,EAAqB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EACL,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AASlC,eAAO,MAAM,eAAe,iSAIT,CAAC;AA2BpB,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,GACjD,SAAS,CAioBX;AA+DD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC,GACD;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAyF/C"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -57,6 +57,7 @@ import * as diff from "diff";
|
|
|
57
57
|
import * as path from "node:path";
|
|
58
58
|
import * as fs from "node:fs/promises";
|
|
59
59
|
import { sleep, unreachable, extractLinesWithByteLimit } from "./utils.js";
|
|
60
|
+
import { registerTaskMcpTools } from "./task-mcp-tools.js";
|
|
60
61
|
import { acpToolNames } from "./tools.js";
|
|
61
62
|
export const SYSTEM_REMINDER = `
|
|
62
63
|
|
|
@@ -649,6 +650,11 @@ In sessions with ${acpToolNames.killShell} always use it instead of KillShell.`,
|
|
|
649
650
|
}
|
|
650
651
|
});
|
|
651
652
|
}
|
|
653
|
+
// Register task management tools
|
|
654
|
+
registerTaskMcpTools(server, {
|
|
655
|
+
tracker: agent.subagentTracker,
|
|
656
|
+
sessionId,
|
|
657
|
+
});
|
|
652
658
|
return server;
|
|
653
659
|
}
|
|
654
660
|
function stripCommonPrefix(a, b) {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AgentSideConnection } from "@agentclientprotocol/sdk";
|
|
2
2
|
import { Logger } from "./acp-agent.js";
|
|
3
|
+
import { PermissionMode } from "@anthropic-ai/claude-agent-sdk";
|
|
3
4
|
/**
|
|
4
5
|
* Subagent status lifecycle
|
|
5
6
|
*/
|
|
6
|
-
export type SubagentStatus = "pending" | "running" | "completed" | "failed" | "cancelled";
|
|
7
|
+
export type SubagentStatus = "pending" | "running" | "completed" | "failed" | "cancelled" | "stopped";
|
|
7
8
|
/**
|
|
8
9
|
* Subagent type from Claude Code Task tool
|
|
9
10
|
*/
|
|
@@ -44,15 +45,30 @@ export interface TrackedSubagent {
|
|
|
44
45
|
maxTurns?: number;
|
|
45
46
|
/** Agent ID returned by Claude Code (for resume capability) */
|
|
46
47
|
agentId?: string;
|
|
48
|
+
/** Output file path for background tasks (from SDK task_notification) */
|
|
49
|
+
outputFile?: string;
|
|
50
|
+
/** Summary of task result (from SDK task_notification) */
|
|
51
|
+
summary?: string;
|
|
52
|
+
/** Name given to the spawned agent */
|
|
53
|
+
agentName?: string;
|
|
54
|
+
/** Team name if spawned as teammate */
|
|
55
|
+
teamName?: string;
|
|
56
|
+
/** Permission mode used for this task */
|
|
57
|
+
permissionMode?: PermissionMode;
|
|
58
|
+
/** Whether this task was resumed from a previous execution */
|
|
59
|
+
isResumed?: boolean;
|
|
60
|
+
/** Original task ID if this is a resumed task */
|
|
61
|
+
originalTaskId?: string;
|
|
47
62
|
}
|
|
48
63
|
/**
|
|
49
64
|
* Subagent event types for notifications
|
|
50
65
|
*/
|
|
51
|
-
export type SubagentEventType = "subagent_started" | "subagent_progress" | "subagent_completed" | "subagent_failed" | "subagent_cancelled";
|
|
66
|
+
export type SubagentEventType = "subagent_started" | "subagent_progress" | "subagent_completed" | "subagent_failed" | "subagent_cancelled" | "subagent_stopped";
|
|
52
67
|
/**
|
|
53
68
|
* Metadata for subagent-related notifications
|
|
54
69
|
*/
|
|
55
70
|
export interface SubagentUpdateMeta {
|
|
71
|
+
[key: string]: unknown;
|
|
56
72
|
claudeCode?: {
|
|
57
73
|
subagent: {
|
|
58
74
|
id: string;
|
|
@@ -67,6 +83,17 @@ export interface SubagentUpdateMeta {
|
|
|
67
83
|
agentId?: string;
|
|
68
84
|
/** Duration in milliseconds (for completed/failed events) */
|
|
69
85
|
durationMs?: number;
|
|
86
|
+
/** Output file for background tasks */
|
|
87
|
+
outputFile?: string;
|
|
88
|
+
/** Summary from SDK task notification */
|
|
89
|
+
summary?: string;
|
|
90
|
+
};
|
|
91
|
+
/** Task notification from SDK (for background tasks) */
|
|
92
|
+
taskNotification?: {
|
|
93
|
+
taskId: string;
|
|
94
|
+
status: "completed" | "failed" | "stopped";
|
|
95
|
+
outputFile: string;
|
|
96
|
+
summary: string;
|
|
70
97
|
};
|
|
71
98
|
};
|
|
72
99
|
}
|
|
@@ -80,7 +107,14 @@ export interface TaskToolInput {
|
|
|
80
107
|
model?: "sonnet" | "opus" | "haiku";
|
|
81
108
|
max_turns?: number;
|
|
82
109
|
run_in_background?: boolean;
|
|
110
|
+
/** Agent ID to resume from (SDK 0.2.17) */
|
|
83
111
|
resume?: string;
|
|
112
|
+
/** Name for spawned agent (SDK 0.2.17) */
|
|
113
|
+
name?: string;
|
|
114
|
+
/** Team name for spawning (SDK 0.2.17) */
|
|
115
|
+
team_name?: string;
|
|
116
|
+
/** Permission mode for spawned teammate (SDK 0.2.17) */
|
|
117
|
+
mode?: PermissionMode;
|
|
84
118
|
}
|
|
85
119
|
export type SubagentEventListener = (subagent: TrackedSubagent, data?: unknown) => void | Promise<void>;
|
|
86
120
|
export interface SubagentStats {
|
|
@@ -90,9 +124,52 @@ export interface SubagentStats {
|
|
|
90
124
|
completed: number;
|
|
91
125
|
failed: number;
|
|
92
126
|
cancelled: number;
|
|
127
|
+
stopped: number;
|
|
93
128
|
byType: Record<string, number>;
|
|
94
129
|
averageDurationMs?: number;
|
|
95
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Serializable state for task persistence
|
|
133
|
+
*/
|
|
134
|
+
export interface SerializedTrackerState {
|
|
135
|
+
version: number;
|
|
136
|
+
tasks: SerializedTask[];
|
|
137
|
+
lastUpdated: number;
|
|
138
|
+
}
|
|
139
|
+
export interface SerializedTask {
|
|
140
|
+
id: string;
|
|
141
|
+
parentSessionId: string;
|
|
142
|
+
parentToolUseId?: string;
|
|
143
|
+
subagentType: string;
|
|
144
|
+
description: string;
|
|
145
|
+
prompt: string;
|
|
146
|
+
model?: string;
|
|
147
|
+
status: SubagentStatus;
|
|
148
|
+
createdAt: number;
|
|
149
|
+
startedAt?: number;
|
|
150
|
+
completedAt?: number;
|
|
151
|
+
result?: unknown;
|
|
152
|
+
error?: string;
|
|
153
|
+
runInBackground: boolean;
|
|
154
|
+
maxTurns?: number;
|
|
155
|
+
agentId?: string;
|
|
156
|
+
outputFile?: string;
|
|
157
|
+
summary?: string;
|
|
158
|
+
agentName?: string;
|
|
159
|
+
teamName?: string;
|
|
160
|
+
permissionMode?: string;
|
|
161
|
+
isResumed?: boolean;
|
|
162
|
+
originalTaskId?: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* SDK Task Notification from SDKTaskNotificationMessage
|
|
166
|
+
*/
|
|
167
|
+
export interface SDKTaskNotification {
|
|
168
|
+
task_id: string;
|
|
169
|
+
status: "completed" | "failed" | "stopped";
|
|
170
|
+
output_file: string;
|
|
171
|
+
summary: string;
|
|
172
|
+
}
|
|
96
173
|
/**
|
|
97
174
|
* SubagentTracker manages the lifecycle of all subagents spawned via the Task tool
|
|
98
175
|
*/
|
|
@@ -101,6 +178,8 @@ export declare class SubagentTracker {
|
|
|
101
178
|
private subagents;
|
|
102
179
|
/** Map of session ID to subagent IDs in that session */
|
|
103
180
|
private sessionSubagents;
|
|
181
|
+
/** Map of agent ID to subagent ID (for resume lookups) */
|
|
182
|
+
private agentIdToSubagent;
|
|
104
183
|
/** Event listeners for subagent lifecycle events */
|
|
105
184
|
private listeners;
|
|
106
185
|
private client;
|
|
@@ -126,6 +205,11 @@ export declare class SubagentTracker {
|
|
|
126
205
|
* Mark a subagent as cancelled
|
|
127
206
|
*/
|
|
128
207
|
cancelSubagent(toolUseId: string): Promise<void>;
|
|
208
|
+
/**
|
|
209
|
+
* Handle SDKTaskNotificationMessage from the Claude Agent SDK.
|
|
210
|
+
* This is called when a background task completes/fails/stops.
|
|
211
|
+
*/
|
|
212
|
+
handleTaskNotification(notification: SDKTaskNotification): Promise<void>;
|
|
129
213
|
/**
|
|
130
214
|
* Send progress update for a running subagent
|
|
131
215
|
*/
|
|
@@ -156,6 +240,14 @@ export declare class SubagentTracker {
|
|
|
156
240
|
* Get all subagents (for debugging/monitoring)
|
|
157
241
|
*/
|
|
158
242
|
getAllSubagents(): TrackedSubagent[];
|
|
243
|
+
/**
|
|
244
|
+
* Find a subagent by its agent ID (for resume operations)
|
|
245
|
+
*/
|
|
246
|
+
findByAgentId(agentId: string): TrackedSubagent | undefined;
|
|
247
|
+
/**
|
|
248
|
+
* Get tasks that can be resumed (have agentId and are completed/failed/stopped)
|
|
249
|
+
*/
|
|
250
|
+
getResumableTasks(): TrackedSubagent[];
|
|
159
251
|
/**
|
|
160
252
|
* Check if a tool use ID is a Task tool (subagent)
|
|
161
253
|
*/
|
|
@@ -172,6 +264,14 @@ export declare class SubagentTracker {
|
|
|
172
264
|
* Clean up completed subagents older than given age (in ms)
|
|
173
265
|
*/
|
|
174
266
|
cleanup(maxAgeMs?: number): number;
|
|
267
|
+
/**
|
|
268
|
+
* Export current state for persistence
|
|
269
|
+
*/
|
|
270
|
+
exportState(): SerializedTrackerState;
|
|
271
|
+
/**
|
|
272
|
+
* Import state from persistence
|
|
273
|
+
*/
|
|
274
|
+
importState(state: SerializedTrackerState): void;
|
|
175
275
|
/**
|
|
176
276
|
* Get statistics about subagents
|
|
177
277
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-tracker.d.ts","sourceRoot":"","sources":["../src/subagent-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent-tracker.d.ts","sourceRoot":"","sources":["../src/subagent-tracker.ts"],"names":[],"mappings":"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"}
|