wave-agent-sdk 0.6.1 → 0.6.3
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/agent.d.ts +0 -5
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +3 -67
- package/dist/constants/subagents.d.ts +5 -0
- package/dist/constants/subagents.d.ts.map +1 -0
- package/dist/constants/subagents.js +4 -0
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +9 -25
- package/dist/managers/backgroundTaskManager.d.ts.map +1 -1
- package/dist/managers/backgroundTaskManager.js +4 -0
- package/dist/managers/messageManager.d.ts +0 -18
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +1 -36
- package/dist/managers/reversionManager.d.ts.map +1 -1
- package/dist/managers/reversionManager.js +23 -2
- package/dist/managers/slashCommandManager.js +1 -1
- package/dist/managers/subagentManager.d.ts +4 -14
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +35 -109
- package/dist/{constants/prompts.d.ts → prompts/index.d.ts} +7 -8
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/{constants/prompts.js → prompts/index.js} +127 -11
- package/dist/services/aiService.js +1 -1
- package/dist/services/taskManager.d.ts +5 -1
- package/dist/services/taskManager.d.ts.map +1 -1
- package/dist/services/taskManager.js +6 -0
- package/dist/tools/bashTool.d.ts.map +1 -1
- package/dist/tools/bashTool.js +34 -29
- package/dist/tools/exitPlanMode.js +1 -1
- package/dist/tools/taskManagementTools.d.ts.map +1 -1
- package/dist/tools/taskManagementTools.js +8 -0
- package/dist/tools/taskTool.d.ts.map +1 -1
- package/dist/tools/taskTool.js +32 -2
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/types/messaging.d.ts +1 -11
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/types/processes.d.ts +5 -0
- package/dist/types/processes.d.ts.map +1 -1
- package/dist/utils/builtinSubagents.d.ts.map +1 -1
- package/dist/utils/builtinSubagents.js +28 -50
- package/dist/utils/editUtils.d.ts.map +1 -1
- package/dist/utils/editUtils.js +2 -2
- package/dist/utils/gitUtils.d.ts +7 -0
- package/dist/utils/gitUtils.d.ts.map +1 -0
- package/dist/utils/gitUtils.js +24 -0
- package/dist/utils/messageOperations.d.ts +1 -23
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/messageOperations.js +0 -49
- package/package.json +1 -1
- package/src/agent.ts +3 -89
- package/src/constants/subagents.ts +4 -0
- package/src/managers/aiManager.ts +9 -25
- package/src/managers/backgroundTaskManager.ts +5 -0
- package/src/managers/messageManager.ts +0 -80
- package/src/managers/reversionManager.ts +26 -2
- package/src/managers/slashCommandManager.ts +1 -1
- package/src/managers/subagentManager.ts +42 -145
- package/src/{constants/prompts.ts → prompts/index.ts} +136 -13
- package/src/services/aiService.ts +1 -1
- package/src/services/taskManager.ts +8 -1
- package/src/tools/bashTool.ts +35 -30
- package/src/tools/exitPlanMode.ts +1 -1
- package/src/tools/taskManagementTools.ts +18 -0
- package/src/tools/taskTool.ts +39 -1
- package/src/tools/types.ts +2 -0
- package/src/types/messaging.ts +0 -12
- package/src/types/processes.ts +5 -0
- package/src/utils/builtinSubagents.ts +41 -51
- package/src/utils/editUtils.ts +2 -6
- package/src/utils/gitUtils.ts +24 -0
- package/src/utils/messageOperations.ts +1 -93
- package/dist/constants/prompts.d.ts.map +0 -1
package/dist/agent.d.ts
CHANGED
|
@@ -188,11 +188,6 @@ export declare class Agent {
|
|
|
188
188
|
private resolveAndValidateConfig;
|
|
189
189
|
/** Private initialization method, handles async initialization logic */
|
|
190
190
|
private initialize;
|
|
191
|
-
/**
|
|
192
|
-
* Restore subagent sessions associated with the current main session
|
|
193
|
-
* This method is called after the main session is restored to load any subagent sessions
|
|
194
|
-
*/
|
|
195
|
-
private restoreSubagentSessions;
|
|
196
191
|
/**
|
|
197
192
|
* Restore a session by ID, switching to the target session without destroying the Agent instance
|
|
198
193
|
* @param sessionId - The ID of the session to restore
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGhF,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,qCAAqC,CAAC;AAQ7C,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,eAAe,EACf,aAAa,EACb,WAAW,EACX,KAAK,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,cAAc,EACf,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -80,9 +80,6 @@ export class Agent {
|
|
|
80
80
|
this.taskManager.setTaskListId(this.messageManager.getRootSessionId());
|
|
81
81
|
callbacks.onSessionIdChange?.(sessionId);
|
|
82
82
|
},
|
|
83
|
-
onSubagentTaskStopRequested: (subagentId) => {
|
|
84
|
-
this.backgroundTaskManager.stopTask(subagentId);
|
|
85
|
-
},
|
|
86
83
|
},
|
|
87
84
|
workdir: this.workdir,
|
|
88
85
|
logger: this.logger,
|
|
@@ -192,7 +189,6 @@ export class Agent {
|
|
|
192
189
|
this.subagentManager = new SubagentManager({
|
|
193
190
|
workdir: this.workdir,
|
|
194
191
|
parentToolManager: this.toolManager,
|
|
195
|
-
parentMessageManager: this.messageManager,
|
|
196
192
|
callbacks: {
|
|
197
193
|
onSubagentUserMessageAdded: callbacks.onSubagentUserMessageAdded,
|
|
198
194
|
onSubagentAssistantMessageAdded: callbacks.onSubagentAssistantMessageAdded,
|
|
@@ -549,8 +545,6 @@ export class Agent {
|
|
|
549
545
|
const sessionToRestore = await handleSessionRestoration(options?.restoreSessionId, options?.continueLastSession, this.messageManager.getWorkdir());
|
|
550
546
|
// Rebuild usage array from restored messages
|
|
551
547
|
this.rebuildUsageFromMessages(sessionToRestore?.messages || []);
|
|
552
|
-
// After main session is restored, restore any associated subagent sessions
|
|
553
|
-
await this.restoreSubagentSessions(sessionToRestore?.messages || []);
|
|
554
548
|
if (sessionToRestore) {
|
|
555
549
|
this.messageManager.initializeFromSession(sessionToRestore);
|
|
556
550
|
// Update task manager with the root session ID to ensure continuity across compressions
|
|
@@ -561,65 +555,6 @@ export class Agent {
|
|
|
561
555
|
}
|
|
562
556
|
}
|
|
563
557
|
}
|
|
564
|
-
/**
|
|
565
|
-
* Restore subagent sessions associated with the current main session
|
|
566
|
-
* This method is called after the main session is restored to load any subagent sessions
|
|
567
|
-
*/
|
|
568
|
-
async restoreSubagentSessions(messages) {
|
|
569
|
-
try {
|
|
570
|
-
// Only attempt to restore subagent sessions if we have messages (session was restored)
|
|
571
|
-
if (messages.length === 0) {
|
|
572
|
-
return;
|
|
573
|
-
}
|
|
574
|
-
// Extract sessionId -> subagentId mapping from SubagentBlocks
|
|
575
|
-
const subagentBlockMap = new Map(); // sessionId -> { subagentId, configuration }
|
|
576
|
-
for (const message of messages) {
|
|
577
|
-
if (message.role === "assistant" && message.blocks) {
|
|
578
|
-
for (const block of message.blocks) {
|
|
579
|
-
if (block.type === "subagent" &&
|
|
580
|
-
block.sessionId &&
|
|
581
|
-
block.subagentId &&
|
|
582
|
-
block.configuration) {
|
|
583
|
-
subagentBlockMap.set(block.sessionId, {
|
|
584
|
-
subagentId: block.subagentId,
|
|
585
|
-
configuration: block.configuration,
|
|
586
|
-
});
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
if (subagentBlockMap.size === 0) {
|
|
592
|
-
return; // No subagent blocks found
|
|
593
|
-
}
|
|
594
|
-
// Load subagent sessions using sessionIds
|
|
595
|
-
const subagentSessions = [];
|
|
596
|
-
for (const [sessionId, blockData] of subagentBlockMap) {
|
|
597
|
-
try {
|
|
598
|
-
const sessionData = await loadSessionFromJsonl(sessionId, this.messageManager.getWorkdir(), "subagent");
|
|
599
|
-
if (sessionData) {
|
|
600
|
-
subagentSessions.push({
|
|
601
|
-
sessionData,
|
|
602
|
-
subagentId: blockData.subagentId, // Use the subagentId from SubagentBlock
|
|
603
|
-
configuration: blockData.configuration, // Include configuration
|
|
604
|
-
});
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
catch (error) {
|
|
608
|
-
this.logger?.warn(`Failed to load subagent session ${sessionId}:`, error);
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
if (subagentSessions.length > 0) {
|
|
612
|
-
this.logger?.debug(`Found ${subagentSessions.length} subagent sessions to restore`);
|
|
613
|
-
// Restore subagent sessions through the SubagentManager
|
|
614
|
-
await this.subagentManager.restoreSubagentSessions(subagentSessions);
|
|
615
|
-
this.logger?.debug("Subagent sessions restored successfully");
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
catch (error) {
|
|
619
|
-
this.logger?.warn("Failed to restore subagent sessions:", error);
|
|
620
|
-
// Don't throw error to prevent app startup failure
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
558
|
/**
|
|
624
559
|
* Restore a session by ID, switching to the target session without destroying the Agent instance
|
|
625
560
|
* @param sessionId - The ID of the session to restore
|
|
@@ -645,9 +580,8 @@ export class Agent {
|
|
|
645
580
|
// 4. Clean current state
|
|
646
581
|
this.abortMessage(); // Abort any running operations
|
|
647
582
|
this.subagentManager.cleanup(); // Clean up active subagents
|
|
648
|
-
// 5. Rebuild usage
|
|
583
|
+
// 5. Rebuild usage (in correct order)
|
|
649
584
|
this.rebuildUsageFromMessages(sessionData.messages);
|
|
650
|
-
await this.restoreSubagentSessions(sessionData.messages);
|
|
651
585
|
// 6. Initialize session state last
|
|
652
586
|
this.messageManager.initializeFromSession(sessionData);
|
|
653
587
|
// Update task manager with the root session ID to ensure continuity across compressions
|
|
@@ -886,6 +820,8 @@ export class Agent {
|
|
|
886
820
|
*/
|
|
887
821
|
async truncateHistory(index) {
|
|
888
822
|
await this.messageManager.truncateHistory(index, this.reversionManager);
|
|
823
|
+
// After truncating history, the task list might have changed, so refresh it.
|
|
824
|
+
await this.taskManager.refreshTasks();
|
|
889
825
|
}
|
|
890
826
|
/**
|
|
891
827
|
* Get the full message thread including parent sessions
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const BASH_SUBAGENT_TYPE = "Bash";
|
|
2
|
+
export declare const EXPLORE_SUBAGENT_TYPE = "Explore";
|
|
3
|
+
export declare const PLAN_SUBAGENT_TYPE = "Plan";
|
|
4
|
+
export declare const GENERAL_PURPOSE_SUBAGENT_TYPE = "general-purpose";
|
|
5
|
+
//# sourceMappingURL=subagents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagents.d.ts","sourceRoot":"","sources":["../../src/constants/subagents.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,6BAA6B,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,8 @@
|
|
|
1
|
-
import * as os from "node:os";
|
|
2
|
-
import * as path from "node:path";
|
|
3
1
|
import { callAgent, compressMessages, } from "../services/aiService.js";
|
|
4
2
|
import { convertMessagesForAPI } from "../utils/convertMessagesForAPI.js";
|
|
5
3
|
import { calculateComprehensiveTotalTokens } from "../utils/tokenCalculation.js";
|
|
6
|
-
import * as fsSync from "node:fs";
|
|
7
4
|
import * as fs from "node:fs/promises";
|
|
8
|
-
import { buildSystemPrompt } from "../
|
|
9
|
-
function isGitRepository(dirPath) {
|
|
10
|
-
try {
|
|
11
|
-
// Check if .git directory exists in current directory or any parent directory
|
|
12
|
-
let currentPath = path.resolve(dirPath);
|
|
13
|
-
while (currentPath !== path.dirname(currentPath)) {
|
|
14
|
-
const gitPath = path.join(currentPath, ".git");
|
|
15
|
-
if (fsSync.existsSync(gitPath)) {
|
|
16
|
-
return "Yes";
|
|
17
|
-
}
|
|
18
|
-
currentPath = path.dirname(currentPath);
|
|
19
|
-
}
|
|
20
|
-
return "No";
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return "No";
|
|
24
|
-
}
|
|
25
|
-
}
|
|
5
|
+
import { buildSystemPrompt } from "../prompts/index.js";
|
|
26
6
|
export class AIManager {
|
|
27
7
|
constructor(options) {
|
|
28
8
|
this.isLoading = false;
|
|
@@ -256,12 +236,9 @@ export class AIManager {
|
|
|
256
236
|
model: model, // Use passed model
|
|
257
237
|
systemPrompt: buildSystemPrompt(this.systemPrompt, filteredToolPlugins, {
|
|
258
238
|
workdir: this.workdir,
|
|
259
|
-
isGitRepo: isGitRepository(this.workdir),
|
|
260
|
-
platform: os.platform(),
|
|
261
|
-
osVersion: `${os.type()} ${os.release()}`,
|
|
262
|
-
today: new Date().toISOString().split("T")[0],
|
|
263
239
|
memory: combinedMemory,
|
|
264
240
|
language: this.getLanguage(),
|
|
241
|
+
isSubagent: !!this.subagentType,
|
|
265
242
|
planMode: planModeOptions,
|
|
266
243
|
}), // Pass custom system prompt
|
|
267
244
|
maxTokens: maxTokens, // Pass max tokens override
|
|
@@ -450,6 +427,13 @@ export class AIManager {
|
|
|
450
427
|
messageId: this.messageManager.getMessages().slice(-1)[0]?.id,
|
|
451
428
|
sessionId: this.messageManager.getSessionId(),
|
|
452
429
|
taskManager: this.taskManager,
|
|
430
|
+
onShortResultUpdate: (shortResult) => {
|
|
431
|
+
this.messageManager.updateToolBlock({
|
|
432
|
+
id: toolId,
|
|
433
|
+
shortResult,
|
|
434
|
+
stage: "running", // Keep it in running stage while updating shortResult
|
|
435
|
+
});
|
|
436
|
+
},
|
|
453
437
|
};
|
|
454
438
|
// Execute tool
|
|
455
439
|
const toolResult = await this.toolManager.execute(functionToolCall.function?.name || "", toolArgs, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backgroundTaskManager.d.ts","sourceRoot":"","sources":["../../src/managers/backgroundTaskManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAIxE,MAAM,WAAW,8BAA8B;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,8BAA8B,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,4BAA4B;IAKjD,OAAO,CAAC,iBAAiB;IAIlB,UAAU,IAAI,MAAM;IAIpB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAKnC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI/C,WAAW,IAAI,cAAc,EAAE;IAI/B,UAAU,CACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE;IA8GnD,YAAY,CACjB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,MAAW,EAC1B,aAAa,GAAE,MAAW,GACzB,MAAM;IAoEF,SAAS,CACd,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,MAAM,GACd;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiCrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"backgroundTaskManager.d.ts","sourceRoot":"","sources":["../../src/managers/backgroundTaskManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAIxE,MAAM,WAAW,8BAA8B;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,8BAA8B,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,4BAA4B;IAKjD,OAAO,CAAC,iBAAiB;IAIlB,UAAU,IAAI,MAAM;IAIpB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAKnC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI/C,WAAW,IAAI,cAAc,EAAE;IAI/B,UAAU,CACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE;IA8GnD,YAAY,CACjB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,MAAW,EAC1B,aAAa,GAAE,MAAW,GACzB,MAAM;IAoEF,SAAS,CACd,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,MAAM,GACd;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiCrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IA+B7B,OAAO,IAAI,IAAI;CAUvB"}
|
|
@@ -236,6 +236,10 @@ export class BackgroundTaskManager {
|
|
|
236
236
|
logger.error("Error in background task onStop callback:", error);
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
|
+
// If it's a subagent task, we should also notify the subagent manager to cleanup
|
|
240
|
+
// However, to avoid circular dependency, we rely on the onStop callback
|
|
241
|
+
// which is already set to instance.aiManager.abortAIMessage()
|
|
242
|
+
// The subagentManager.cleanupInstance will be called by the tool or by status change.
|
|
239
243
|
task.status = "killed";
|
|
240
244
|
task.endTime = Date.now();
|
|
241
245
|
task.runtime = task.endTime - task.startTime;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { UserMessageParams, type AgentToolBlockUpdateParams } from "../utils/messageOperations.js";
|
|
2
|
-
import type { SubagentConfiguration } from "../utils/subagentParser.js";
|
|
3
2
|
import type { Logger, Message, Usage, SlashCommand } from "../types/index.js";
|
|
4
3
|
import { SessionData } from "../services/session.js";
|
|
5
4
|
import { ChatCompletionMessageFunctionToolCall } from "openai/resources.js";
|
|
@@ -24,14 +23,7 @@ export interface MessageManagerCallbacks {
|
|
|
24
23
|
onSlashCommandsChange?: (commands: SlashCommand[]) => void;
|
|
25
24
|
onInfoBlockAdded?: (content: string) => void;
|
|
26
25
|
onShowRewind?: () => void;
|
|
27
|
-
onSubAgentBlockAdded?: (subagentId: string, parameters: {
|
|
28
|
-
description: string;
|
|
29
|
-
prompt: string;
|
|
30
|
-
subagent_type: string;
|
|
31
|
-
}) => void;
|
|
32
|
-
onSubAgentBlockUpdated?: (subagentId: string, status: "active" | "completed" | "error" | "aborted") => void;
|
|
33
26
|
onFileHistoryBlockAdded?: (snapshots: import("../types/reversion.js").FileSnapshot[]) => void;
|
|
34
|
-
onSubagentTaskStopRequested?: (subagentId: string) => void;
|
|
35
27
|
}
|
|
36
28
|
export interface MessageManagerOptions {
|
|
37
29
|
callbacks: MessageManagerCallbacks;
|
|
@@ -117,16 +109,6 @@ export declare class MessageManager {
|
|
|
117
109
|
addCommandOutputMessage(command: string): void;
|
|
118
110
|
updateCommandOutputMessage(command: string, output: string): void;
|
|
119
111
|
completeCommandMessage(command: string, exitCode: number): void;
|
|
120
|
-
addSubagentBlock(subagentId: string, subagentName: string, sessionId: string, configuration: SubagentConfiguration, status: "active" | "completed" | "error" | "aborted" | undefined, parameters: {
|
|
121
|
-
description: string;
|
|
122
|
-
prompt: string;
|
|
123
|
-
subagent_type: string;
|
|
124
|
-
}, runInBackground?: boolean): void;
|
|
125
|
-
updateSubagentBlock(subagentId: string, updates: Partial<{
|
|
126
|
-
status: "active" | "completed" | "error" | "aborted";
|
|
127
|
-
sessionId: string;
|
|
128
|
-
runInBackground: boolean;
|
|
129
|
-
}>): void;
|
|
130
112
|
/**
|
|
131
113
|
* Trigger usage change callback with all usage data from assistant messages
|
|
132
114
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,iBAAiB,EACjB,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAIL,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,yBAAyB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAE3C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEzD,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IAErC,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzE,2BAA2B,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAClE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,kBAAkB,CAAC,EAAE,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,GAAG,MAAM,EACxB,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;IAEV,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,4BAA4B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC3D,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,uBAAuB,CAAC,EAAE,CACxB,SAAS,EAAE,OAAO,uBAAuB,EAAE,YAAY,EAAE,KACtD,IAAI,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,uBAAuB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,qBAAa,cAAc;IAEzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,OAAO,EAAE,qBAAqB;IAmBnC,YAAY,IAAI,MAAM;IAItB,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,MAAM,GAAG,SAAS;IAIxC,WAAW,IAAI,OAAO,EAAE;IAIxB,oBAAoB,IAAI,MAAM;IAI9B,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,iBAAiB,IAAI,MAAM,EAAE;IAI7B,aAAa,IAAI,MAAM;IAIvB,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAqBjD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAStB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAY5C;;OAEG;YACW,qBAAqB;IAQ5B,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAM7C;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAiClC,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAQ5D;;OAEG;IACI,aAAa,IAAI,IAAI;IAQ5B;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAIhC;;OAEG;IACI,0BAA0B,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI;IAK1D,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAcrD,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAW/C,mBAAmB,CACxB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,qCAAqC,EAAE,EACnD,KAAK,CAAC,EAAE,KAAK,EACb,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,IAAI;IAsBA,8BAA8B,CACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC,IAAI;IA+BA,eAAe,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI;IAWzD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASlC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAY1C;;OAEG;IACI,gCAAgC,CACrC,iBAAiB,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,KAAK,GACZ,IAAI;IAqCA,mBAAmB,CACxB,SAAS,EAAE,OAAO,uBAAuB,EAAE,YAAY,EAAE,GACxD,IAAI;IAeA,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS9C,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAUjE,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUtE;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAUjC;;;;OAIG;IACI,2BAA2B,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI;IA6CvE;;;OAGG;IACI,6BAA6B,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI;IA8C3E;;;OAGG;IACI,qBAAqB,IAAI,IAAI;IAKvB,oBAAoB,IAAI,OAAO,CAAC;QAC3C,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IAKF;;;;OAIG;IACU,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,gBAAgB,CAAC,EAAE,OAAO,uBAAuB,EAAE,gBAAgB,GAClE,OAAO,CAAC,IAAI,CAAC;IAkGhB;;OAEG;YACW,kBAAkB;IAoBhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,sBAAsB;CA4B/B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addAssistantMessageToMessages, updateToolBlockInMessage, addErrorBlockToMessage, addUserMessageToMessages, addCommandOutputMessage, updateCommandOutputInMessage, completeCommandInMessage,
|
|
1
|
+
import { addAssistantMessageToMessages, updateToolBlockInMessage, addErrorBlockToMessage, addUserMessageToMessages, addCommandOutputMessage, updateCommandOutputInMessage, completeCommandInMessage, removeLastUserMessage, } from "../utils/messageOperations.js";
|
|
2
2
|
import { join } from "path";
|
|
3
3
|
import { appendMessages, createSession, generateSessionId, SESSION_DIR, } from "../services/session.js";
|
|
4
4
|
import { pathEncoder } from "../utils/pathEncoder.js";
|
|
@@ -319,33 +319,6 @@ export class MessageManager {
|
|
|
319
319
|
this.setMessages(updatedMessages);
|
|
320
320
|
this.callbacks.onCompleteCommandMessage?.(command, exitCode);
|
|
321
321
|
}
|
|
322
|
-
// Subagent block methods
|
|
323
|
-
addSubagentBlock(subagentId, subagentName, sessionId, configuration, status = "active", parameters, runInBackground) {
|
|
324
|
-
const params = {
|
|
325
|
-
messages: this.messages,
|
|
326
|
-
subagentId,
|
|
327
|
-
subagentName,
|
|
328
|
-
sessionId,
|
|
329
|
-
status,
|
|
330
|
-
configuration,
|
|
331
|
-
runInBackground,
|
|
332
|
-
};
|
|
333
|
-
const updatedMessages = addSubagentBlockToMessage(params);
|
|
334
|
-
this.setMessages(updatedMessages);
|
|
335
|
-
this.callbacks.onSubAgentBlockAdded?.(params.subagentId, parameters);
|
|
336
|
-
}
|
|
337
|
-
updateSubagentBlock(subagentId, updates) {
|
|
338
|
-
const updatedMessages = updateSubagentBlockInMessage(this.messages, subagentId, updates);
|
|
339
|
-
this.setMessages(updatedMessages);
|
|
340
|
-
const params = {
|
|
341
|
-
messages: this.messages,
|
|
342
|
-
subagentId,
|
|
343
|
-
status: updates.status || "active",
|
|
344
|
-
};
|
|
345
|
-
if (updates.status) {
|
|
346
|
-
this.callbacks.onSubAgentBlockUpdated?.(params.subagentId, params.status);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
322
|
/**
|
|
350
323
|
* Trigger usage change callback with all usage data from assistant messages
|
|
351
324
|
*/
|
|
@@ -503,14 +476,6 @@ export class MessageManager {
|
|
|
503
476
|
}
|
|
504
477
|
// Truncate messages in the target session
|
|
505
478
|
const newMessagesInSession = targetSessionData.messages.slice(0, targetIndexInSession);
|
|
506
|
-
// Identify subagent tasks to stop
|
|
507
|
-
for (const message of messagesToRemove) {
|
|
508
|
-
for (const block of message.blocks) {
|
|
509
|
-
if (block.type === "subagent" && block.subagentId) {
|
|
510
|
-
this.callbacks.onSubagentTaskStopRequested?.(block.subagentId);
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
479
|
// Update target session file
|
|
515
480
|
this.sessionId = targetSessionId;
|
|
516
481
|
this.rootSessionId = targetSessionData.rootSessionId || targetSessionId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reversionManager.d.ts","sourceRoot":"","sources":["../../src/managers/reversionManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,gBAAgB,EAAE,gBAAgB;IAI9C;;;OAGG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GACxC,OAAO,CAAC,MAAM,CAAC;IAuBlB;;;OAGG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GACxC,OAAO,CAAC,MAAM,CAAC;IAIlB;;;OAGG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvD,OAAO,CAAC,kBAAkB,CAAsB;IAEhD;;OAEG;IACH,6BAA6B,IAAI,YAAY,EAAE;IAM/C;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIzC;;;;OAIG;IACG,QAAQ,CACZ,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,OAAO,mBAAmB,EAAE,OAAO,EAAE,GACjD,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"reversionManager.d.ts","sourceRoot":"","sources":["../../src/managers/reversionManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,gBAAgB,EAAE,gBAAgB;IAI9C;;;OAGG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GACxC,OAAO,CAAC,MAAM,CAAC;IAuBlB;;;OAGG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GACxC,OAAO,CAAC,MAAM,CAAC;IAIlB;;;OAGG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvD,OAAO,CAAC,kBAAkB,CAAsB;IAEhD;;OAEG;IACH,6BAA6B,IAAI,YAAY,EAAE;IAM/C;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIzC;;;;OAIG;IACG,QAAQ,CACZ,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,OAAO,mBAAmB,EAAE,OAAO,EAAE,GACjD,OAAO,CAAC,MAAM,CAAC;CAqEnB"}
|
|
@@ -89,10 +89,15 @@ export class ReversionManager {
|
|
|
89
89
|
// Revert in reverse chronological order (LIFO)
|
|
90
90
|
const sortedSnapshots = snapshots.sort((a, b) => b.timestamp - a.timestamp);
|
|
91
91
|
let revertedCount = 0;
|
|
92
|
+
const affectedTaskListIds = new Set();
|
|
92
93
|
for (const snapshot of sortedSnapshots) {
|
|
93
94
|
try {
|
|
94
|
-
if (
|
|
95
|
-
//
|
|
95
|
+
if (snapshot.operation === "create") {
|
|
96
|
+
// For 'create' operations, we should hard delete the file upon reversion
|
|
97
|
+
await fs.rm(snapshot.filePath, { force: true });
|
|
98
|
+
}
|
|
99
|
+
else if (!snapshot.snapshotPath) {
|
|
100
|
+
// Fallback for older snapshots or if snapshotPath is missing
|
|
96
101
|
await fs.rm(snapshot.filePath, { force: true });
|
|
97
102
|
}
|
|
98
103
|
else {
|
|
@@ -107,12 +112,28 @@ export class ReversionManager {
|
|
|
107
112
|
await fs.rm(snapshot.filePath, { force: true });
|
|
108
113
|
}
|
|
109
114
|
}
|
|
115
|
+
// Check if this is a task file and track the task list ID
|
|
116
|
+
if (snapshot.filePath.includes("/.wave/tasks/")) {
|
|
117
|
+
const parts = snapshot.filePath.split("/.wave/tasks/");
|
|
118
|
+
if (parts.length > 1) {
|
|
119
|
+
const taskListId = parts[1].split("/")[0];
|
|
120
|
+
if (taskListId) {
|
|
121
|
+
affectedTaskListIds.add(taskListId);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
110
125
|
revertedCount++;
|
|
111
126
|
}
|
|
112
127
|
catch (error) {
|
|
113
128
|
console.error(`Failed to revert file ${snapshot.filePath}:`, error);
|
|
114
129
|
}
|
|
115
130
|
}
|
|
131
|
+
// Notify TaskManager if any task lists were affected
|
|
132
|
+
// Note: In the current architecture, TaskManager is managed by Agent and
|
|
133
|
+
// listens for file changes if it's a foreground process, or we might need
|
|
134
|
+
// to explicitly trigger a refresh. Since ReversionManager doesn't have
|
|
135
|
+
// a direct reference to TaskManager, we rely on the fact that TaskManager
|
|
136
|
+
// will see the file system changes or be refreshed by the Agent/UI.
|
|
116
137
|
return revertedCount;
|
|
117
138
|
}
|
|
118
139
|
}
|
|
@@ -3,7 +3,7 @@ import { substituteCommandParameters, parseSlashCommandInput, hasParameterPlaceh
|
|
|
3
3
|
import { parseBashCommands, replaceBashCommandsWithOutput, } from "../utils/markdownParser.js";
|
|
4
4
|
import { exec } from "child_process";
|
|
5
5
|
import { promisify } from "util";
|
|
6
|
-
import { INIT_PROMPT } from "../
|
|
6
|
+
import { INIT_PROMPT } from "../prompts/index.js";
|
|
7
7
|
const execAsync = promisify(exec);
|
|
8
8
|
export class SlashCommandManager {
|
|
9
9
|
constructor(options) {
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import type { MemoryRuleManager } from "./MemoryRuleManager.js";
|
|
2
2
|
import type { SubagentConfiguration } from "../utils/subagentParser.js";
|
|
3
3
|
import type { Message, Logger, GatewayConfig, ModelConfig, Usage } from "../types/index.js";
|
|
4
|
-
import type { SessionData } from "../services/session.js";
|
|
5
4
|
import { AIManager } from "./aiManager.js";
|
|
6
5
|
import { MessageManager } from "./messageManager.js";
|
|
7
6
|
import { ToolManager } from "./toolManager.js";
|
|
8
7
|
import { HookManager } from "./hookManager.js";
|
|
9
|
-
import { UserMessageParams, type AgentToolBlockUpdateParams } from "../utils/messageOperations.js";
|
|
10
8
|
import { BackgroundTaskManager } from "./backgroundTaskManager.js";
|
|
9
|
+
import { UserMessageParams, type AgentToolBlockUpdateParams } from "../utils/messageOperations.js";
|
|
11
10
|
export interface SubagentManagerCallbacks {
|
|
12
11
|
/** Triggered when subagent adds user message */
|
|
13
12
|
onSubagentUserMessageAdded?: (subagentId: string, params: UserMessageParams) => void;
|
|
@@ -32,13 +31,14 @@ export interface SubagentInstance {
|
|
|
32
31
|
toolManager: ToolManager;
|
|
33
32
|
status: "initializing" | "active" | "completed" | "error" | "aborted";
|
|
34
33
|
messages: Message[];
|
|
34
|
+
lastTools: string[];
|
|
35
35
|
subagentType: string;
|
|
36
36
|
backgroundTaskId?: string;
|
|
37
|
+
onUpdate?: () => void;
|
|
37
38
|
}
|
|
38
39
|
export interface SubagentManagerOptions {
|
|
39
40
|
workdir: string;
|
|
40
41
|
parentToolManager: ToolManager;
|
|
41
|
-
parentMessageManager: MessageManager;
|
|
42
42
|
taskManager: import("../services/taskManager.js").TaskManager;
|
|
43
43
|
callbacks?: SubagentManagerCallbacks;
|
|
44
44
|
logger?: Logger;
|
|
@@ -56,7 +56,6 @@ export declare class SubagentManager {
|
|
|
56
56
|
private cachedConfigurations;
|
|
57
57
|
private workdir;
|
|
58
58
|
private parentToolManager;
|
|
59
|
-
private parentMessageManager;
|
|
60
59
|
private taskManager;
|
|
61
60
|
private callbacks?;
|
|
62
61
|
private logger?;
|
|
@@ -92,7 +91,7 @@ export declare class SubagentManager {
|
|
|
92
91
|
description: string;
|
|
93
92
|
prompt: string;
|
|
94
93
|
subagent_type: string;
|
|
95
|
-
}, runInBackground?: boolean): Promise<SubagentInstance>;
|
|
94
|
+
}, runInBackground?: boolean, onUpdate?: () => void): Promise<SubagentInstance>;
|
|
96
95
|
/**
|
|
97
96
|
* Execute task using subagent instance
|
|
98
97
|
*
|
|
@@ -126,15 +125,6 @@ export declare class SubagentManager {
|
|
|
126
125
|
* Clean up all instances (for session end)
|
|
127
126
|
*/
|
|
128
127
|
cleanup(): void;
|
|
129
|
-
/**
|
|
130
|
-
* Restore subagent instances from saved session data
|
|
131
|
-
* This method is called during agent initialization to restore previous subagent states
|
|
132
|
-
*/
|
|
133
|
-
restoreSubagentSessions(subagentSessions: Array<{
|
|
134
|
-
sessionData: SessionData;
|
|
135
|
-
subagentId: string;
|
|
136
|
-
configuration: SubagentConfiguration;
|
|
137
|
-
}>): Promise<void>;
|
|
138
128
|
/**
|
|
139
129
|
* Create subagent callbacks for a specific subagent ID
|
|
140
130
|
* Extracted to reuse in both create and restore flows
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,aAAa,EACb,WAAW,EACX,KAAK,EACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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"}
|