wave-agent-sdk 0.5.0 → 0.6.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/agent.d.ts +7 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +58 -74
- package/dist/constants/prompts.d.ts +18 -14
- package/dist/constants/prompts.d.ts.map +1 -1
- package/dist/constants/prompts.js +134 -54
- package/dist/constants/tools.d.ts +4 -1
- package/dist/constants/tools.d.ts.map +1 -1
- package/dist/constants/tools.js +4 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/managers/aiManager.d.ts +2 -5
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +59 -48
- package/dist/managers/backgroundTaskManager.d.ts.map +1 -1
- package/dist/managers/backgroundTaskManager.js +59 -53
- package/dist/managers/foregroundTaskManager.d.ts.map +1 -1
- package/dist/managers/foregroundTaskManager.js +3 -2
- package/dist/managers/mcpManager.d.ts.map +1 -1
- package/dist/managers/messageManager.d.ts +7 -3
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +28 -24
- package/dist/managers/permissionManager.d.ts.map +1 -1
- package/dist/managers/permissionManager.js +25 -15
- package/dist/managers/planManager.d.ts +1 -1
- package/dist/managers/planManager.d.ts.map +1 -1
- package/dist/managers/planManager.js +2 -2
- package/dist/managers/subagentManager.d.ts +4 -0
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +22 -14
- package/dist/managers/toolManager.d.ts +11 -0
- package/dist/managers/toolManager.d.ts.map +1 -1
- package/dist/managers/toolManager.js +20 -2
- package/dist/services/aiService.d.ts +0 -1
- package/dist/services/aiService.d.ts.map +1 -1
- package/dist/services/aiService.js +4 -140
- package/dist/services/memory.d.ts +0 -3
- package/dist/services/memory.d.ts.map +1 -1
- package/dist/services/memory.js +0 -59
- package/dist/services/session.d.ts +3 -1
- package/dist/services/session.d.ts.map +1 -1
- package/dist/services/session.js +16 -1
- package/dist/services/taskManager.d.ts +21 -0
- package/dist/services/taskManager.d.ts.map +1 -0
- package/dist/services/taskManager.js +158 -0
- package/dist/tools/askUserQuestion.d.ts.map +1 -1
- package/dist/tools/askUserQuestion.js +39 -25
- package/dist/tools/bashTool.d.ts.map +1 -1
- package/dist/tools/bashTool.js +7 -9
- package/dist/tools/editTool.d.ts.map +1 -1
- package/dist/tools/editTool.js +2 -1
- package/dist/tools/exitPlanMode.d.ts.map +1 -1
- package/dist/tools/exitPlanMode.js +25 -1
- package/dist/tools/globTool.d.ts.map +1 -1
- package/dist/tools/globTool.js +8 -2
- package/dist/tools/grepTool.d.ts.map +1 -1
- package/dist/tools/grepTool.js +17 -6
- package/dist/tools/lsTool.d.ts.map +1 -1
- package/dist/tools/lsTool.js +3 -1
- package/dist/tools/readTool.d.ts.map +1 -1
- package/dist/tools/readTool.js +16 -1
- package/dist/tools/taskManagementTools.d.ts +6 -0
- package/dist/tools/taskManagementTools.d.ts.map +1 -0
- package/dist/tools/taskManagementTools.js +453 -0
- package/dist/tools/taskOutputTool.d.ts.map +1 -1
- package/dist/tools/taskOutputTool.js +32 -8
- package/dist/tools/taskStopTool.d.ts.map +1 -1
- package/dist/tools/taskStopTool.js +7 -1
- package/dist/tools/taskTool.d.ts.map +1 -1
- package/dist/tools/taskTool.js +6 -1
- package/dist/tools/types.d.ts +9 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/writeTool.d.ts.map +1 -1
- package/dist/tools/writeTool.js +9 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/messaging.d.ts +2 -8
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/types/processes.d.ts +11 -6
- package/dist/types/processes.d.ts.map +1 -1
- package/dist/types/tasks.d.ts +13 -0
- package/dist/types/tasks.d.ts.map +1 -0
- package/dist/types/tasks.js +1 -0
- package/dist/types/tools.d.ts +4 -1
- package/dist/types/tools.d.ts.map +1 -1
- package/dist/utils/builtinSubagents.d.ts.map +1 -1
- package/dist/utils/builtinSubagents.js +38 -1
- package/dist/utils/cacheControlUtils.d.ts.map +1 -1
- package/dist/utils/cacheControlUtils.js +18 -12
- package/dist/utils/constants.d.ts +0 -4
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +0 -4
- package/dist/utils/convertMessagesForAPI.js +2 -2
- package/dist/utils/messageOperations.d.ts +2 -30
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/messageOperations.js +4 -79
- package/dist/utils/nameGenerator.d.ts +1 -1
- package/dist/utils/nameGenerator.d.ts.map +1 -1
- package/dist/utils/nameGenerator.js +19 -3
- package/package.json +1 -1
- package/src/agent.ts +79 -84
- package/src/constants/prompts.ts +161 -65
- package/src/constants/tools.ts +4 -1
- package/src/index.ts +1 -0
- package/src/managers/aiManager.ts +79 -70
- package/src/managers/backgroundTaskManager.ts +53 -54
- package/src/managers/foregroundTaskManager.ts +3 -2
- package/src/managers/mcpManager.ts +6 -3
- package/src/managers/messageManager.ts +37 -26
- package/src/managers/permissionManager.ts +32 -21
- package/src/managers/planManager.ts +2 -2
- package/src/managers/subagentManager.ts +33 -14
- package/src/managers/toolManager.ts +32 -2
- package/src/services/aiService.ts +3 -145
- package/src/services/memory.ts +0 -72
- package/src/services/session.ts +21 -0
- package/src/services/taskManager.ts +188 -0
- package/src/tools/askUserQuestion.ts +51 -29
- package/src/tools/bashTool.ts +9 -15
- package/src/tools/editTool.ts +3 -1
- package/src/tools/exitPlanMode.ts +26 -2
- package/src/tools/globTool.ts +10 -2
- package/src/tools/grepTool.ts +17 -6
- package/src/tools/lsTool.ts +3 -1
- package/src/tools/readTool.ts +17 -1
- package/src/tools/taskManagementTools.ts +498 -0
- package/src/tools/taskOutputTool.ts +34 -12
- package/src/tools/taskStopTool.ts +7 -1
- package/src/tools/taskTool.ts +7 -1
- package/src/tools/types.ts +10 -0
- package/src/tools/writeTool.ts +9 -2
- package/src/types/index.ts +1 -0
- package/src/types/messaging.ts +1 -9
- package/src/types/processes.ts +13 -7
- package/src/types/tasks.ts +13 -0
- package/src/types/tools.ts +4 -1
- package/src/utils/builtinSubagents.ts +47 -1
- package/src/utils/cacheControlUtils.ts +26 -18
- package/src/utils/constants.ts +0 -5
- package/src/utils/convertMessagesForAPI.ts +2 -2
- package/src/utils/messageOperations.ts +5 -116
- package/src/utils/nameGenerator.ts +20 -3
- package/dist/tools/todoWriteTool.d.ts +0 -6
- package/dist/tools/todoWriteTool.d.ts.map +0 -1
- package/dist/tools/todoWriteTool.js +0 -220
- package/src/tools/todoWriteTool.ts +0 -257
package/dist/index.d.ts
CHANGED
|
@@ -21,5 +21,6 @@ export * from "./utils/promptHistory.js";
|
|
|
21
21
|
export * from "./utils/stringUtils.js";
|
|
22
22
|
export * from "./utils/customCommands.js";
|
|
23
23
|
export * from "./utils/hookMatcher.js";
|
|
24
|
+
export * from "./utils/tokenCalculation.js";
|
|
24
25
|
export * from "./types/index.js";
|
|
25
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,sBAAsB,CAAC;AAGrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AAGjD,cAAc,YAAY,CAAC;AAG3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,sBAAsB,CAAC;AAGrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AAGjD,cAAc,YAAY,CAAC;AAG3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -26,5 +26,6 @@ export * from "./utils/promptHistory.js";
|
|
|
26
26
|
export * from "./utils/stringUtils.js";
|
|
27
27
|
export * from "./utils/customCommands.js";
|
|
28
28
|
export * from "./utils/hookMatcher.js";
|
|
29
|
+
export * from "./utils/tokenCalculation.js";
|
|
29
30
|
// Export types
|
|
30
31
|
export * from "./types/index.js";
|
|
@@ -11,6 +11,7 @@ export interface AIManagerCallbacks {
|
|
|
11
11
|
export interface AIManagerOptions {
|
|
12
12
|
messageManager: MessageManager;
|
|
13
13
|
toolManager: ToolManager;
|
|
14
|
+
taskManager: import("../services/taskManager.js").TaskManager;
|
|
14
15
|
logger?: Logger;
|
|
15
16
|
backgroundTaskManager?: BackgroundTaskManager;
|
|
16
17
|
hookManager?: HookManager;
|
|
@@ -35,6 +36,7 @@ export declare class AIManager {
|
|
|
35
36
|
private logger?;
|
|
36
37
|
private toolManager;
|
|
37
38
|
private messageManager;
|
|
39
|
+
private taskManager;
|
|
38
40
|
private backgroundTaskManager?;
|
|
39
41
|
private hookManager?;
|
|
40
42
|
private reversionManager?;
|
|
@@ -61,11 +63,6 @@ export declare class AIManager {
|
|
|
61
63
|
private getFilteredToolsConfig;
|
|
62
64
|
setIsLoading(isLoading: boolean): void;
|
|
63
65
|
abortAIMessage(): void;
|
|
64
|
-
/**
|
|
65
|
-
* Abort the AI recursion loop immediately.
|
|
66
|
-
* This is used when a tool is backgrounded via Ctrl-B, even if no foreground task was active.
|
|
67
|
-
*/
|
|
68
|
-
abortRecursion(): void;
|
|
69
66
|
private generateCompactParams;
|
|
70
67
|
private handleTokenUsageAndCompression;
|
|
71
68
|
getIsCompressing(): boolean;
|
|
@@ -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,9 +1,28 @@
|
|
|
1
|
+
import * as os from "node:os";
|
|
2
|
+
import * as path from "node:path";
|
|
1
3
|
import { callAgent, compressMessages, } from "../services/aiService.js";
|
|
2
|
-
import { getMessagesToCompress } from "../utils/messageOperations.js";
|
|
3
4
|
import { convertMessagesForAPI } from "../utils/convertMessagesForAPI.js";
|
|
4
5
|
import { calculateComprehensiveTotalTokens } from "../utils/tokenCalculation.js";
|
|
6
|
+
import * as fsSync from "node:fs";
|
|
5
7
|
import * as fs from "node:fs/promises";
|
|
6
|
-
import {
|
|
8
|
+
import { buildSystemPrompt } from "../constants/prompts.js";
|
|
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
|
+
}
|
|
7
26
|
export class AIManager {
|
|
8
27
|
constructor(options) {
|
|
9
28
|
this.isLoading = false;
|
|
@@ -12,6 +31,7 @@ export class AIManager {
|
|
|
12
31
|
this.isCompressing = false;
|
|
13
32
|
this.messageManager = options.messageManager;
|
|
14
33
|
this.toolManager = options.toolManager;
|
|
34
|
+
this.taskManager = options.taskManager;
|
|
15
35
|
this.backgroundTaskManager = options.backgroundTaskManager;
|
|
16
36
|
this.hookManager = options.hookManager;
|
|
17
37
|
this.reversionManager = options.reversionManager;
|
|
@@ -78,14 +98,6 @@ export class AIManager {
|
|
|
78
98
|
}
|
|
79
99
|
this.setIsLoading(false);
|
|
80
100
|
}
|
|
81
|
-
/**
|
|
82
|
-
* Abort the AI recursion loop immediately.
|
|
83
|
-
* This is used when a tool is backgrounded via Ctrl-B, even if no foreground task was active.
|
|
84
|
-
*/
|
|
85
|
-
abortRecursion() {
|
|
86
|
-
this.logger?.info("Aborting AI recursion loop");
|
|
87
|
-
this.abortAIMessage();
|
|
88
|
-
}
|
|
89
101
|
// Helper method to generate compactParams
|
|
90
102
|
generateCompactParams(toolName, toolArgs) {
|
|
91
103
|
try {
|
|
@@ -95,6 +107,7 @@ export class AIManager {
|
|
|
95
107
|
if (toolPlugin?.formatCompactParams) {
|
|
96
108
|
const context = {
|
|
97
109
|
workdir: this.workdir,
|
|
110
|
+
taskManager: this.taskManager,
|
|
98
111
|
};
|
|
99
112
|
return toolPlugin.formatCompactParams(toolArgs, context);
|
|
100
113
|
}
|
|
@@ -118,7 +131,7 @@ export class AIManager {
|
|
|
118
131
|
this.getMaxInputTokens()) {
|
|
119
132
|
this.logger?.debug(`Token usage exceeded ${this.getMaxInputTokens()}, compressing messages...`);
|
|
120
133
|
// Check if messages need compression
|
|
121
|
-
const
|
|
134
|
+
const messagesToCompress = this.messageManager.getMessages();
|
|
122
135
|
// If there are messages to compress, perform compression
|
|
123
136
|
if (messagesToCompress.length > 0) {
|
|
124
137
|
const recentChatMessages = convertMessagesForAPI(messagesToCompress);
|
|
@@ -145,7 +158,7 @@ export class AIManager {
|
|
|
145
158
|
};
|
|
146
159
|
}
|
|
147
160
|
// Execute message reconstruction and sessionId update after compression
|
|
148
|
-
this.messageManager.compressMessagesAndUpdateSession(
|
|
161
|
+
this.messageManager.compressMessagesAndUpdateSession(compressionResult.content, compressionUsage);
|
|
149
162
|
// Notify Agent to add to usage tracking
|
|
150
163
|
if (compressionUsage && this.callbacks?.onUsageAdded) {
|
|
151
164
|
this.callbacks.onUsageAdded(compressionUsage);
|
|
@@ -176,6 +189,8 @@ export class AIManager {
|
|
|
176
189
|
if (recursionDepth === 0 && this.isLoading) {
|
|
177
190
|
return;
|
|
178
191
|
}
|
|
192
|
+
// Save session in each recursion to ensure message persistence
|
|
193
|
+
await this.messageManager.saveSession();
|
|
179
194
|
// Only create new AbortControllers for the initial call (recursionDepth === 0)
|
|
180
195
|
// For recursive calls, reuse existing controllers to maintain abort signal
|
|
181
196
|
let abortController;
|
|
@@ -189,12 +204,9 @@ export class AIManager {
|
|
|
189
204
|
}
|
|
190
205
|
else {
|
|
191
206
|
// Reuse existing controllers for recursive calls
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
toolAbortController = this.toolAbortController || new AbortController();
|
|
207
|
+
abortController = this.abortController;
|
|
208
|
+
toolAbortController = this.toolAbortController;
|
|
195
209
|
}
|
|
196
|
-
// Save session in each recursion to ensure message persistence
|
|
197
|
-
await this.messageManager.saveSession();
|
|
198
210
|
// Only set loading state for the initial call
|
|
199
211
|
if (recursionDepth === 0) {
|
|
200
212
|
this.setIsLoading(true);
|
|
@@ -213,13 +225,11 @@ export class AIManager {
|
|
|
213
225
|
// Get current permission mode and plan file path
|
|
214
226
|
const currentMode = this.permissionManager?.getCurrentEffectiveMode(this.getModelConfig().permissionMode);
|
|
215
227
|
const toolsConfig = this.getFilteredToolsConfig(tools);
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
effectiveSystemPrompt = (effectiveSystemPrompt || "") + languagePrompt;
|
|
222
|
-
}
|
|
228
|
+
const toolNames = new Set(toolsConfig.map((t) => t.function.name));
|
|
229
|
+
const filteredToolPlugins = this.toolManager
|
|
230
|
+
.getTools()
|
|
231
|
+
.filter((t) => toolNames.has(t.name));
|
|
232
|
+
let planModeOptions;
|
|
223
233
|
if (currentMode === "plan") {
|
|
224
234
|
const planFilePath = this.permissionManager?.getPlanFilePath();
|
|
225
235
|
if (planFilePath) {
|
|
@@ -231,8 +241,7 @@ export class AIManager {
|
|
|
231
241
|
catch {
|
|
232
242
|
planExists = false;
|
|
233
243
|
}
|
|
234
|
-
|
|
235
|
-
effectiveSystemPrompt = (effectiveSystemPrompt || "") + reminder;
|
|
244
|
+
planModeOptions = { planFilePath, planExists };
|
|
236
245
|
}
|
|
237
246
|
}
|
|
238
247
|
// Call AI service with streaming callbacks if enabled
|
|
@@ -242,11 +251,19 @@ export class AIManager {
|
|
|
242
251
|
messages: recentMessages,
|
|
243
252
|
sessionId: this.messageManager.getSessionId(),
|
|
244
253
|
abortSignal: abortController.signal,
|
|
245
|
-
memory: combinedMemory, // Pass combined memory content
|
|
246
254
|
workdir: this.workdir, // Pass working directory
|
|
247
255
|
tools: toolsConfig, // Pass filtered tool configuration
|
|
248
256
|
model: model, // Use passed model
|
|
249
|
-
systemPrompt:
|
|
257
|
+
systemPrompt: buildSystemPrompt(this.systemPrompt, filteredToolPlugins, {
|
|
258
|
+
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
|
+
memory: combinedMemory,
|
|
264
|
+
language: this.getLanguage(),
|
|
265
|
+
planMode: planModeOptions,
|
|
266
|
+
}), // Pass custom system prompt
|
|
250
267
|
maxTokens: maxTokens, // Pass max tokens override
|
|
251
268
|
};
|
|
252
269
|
// Add streaming callbacks only if streaming is enabled
|
|
@@ -431,19 +448,11 @@ export class AIManager {
|
|
|
431
448
|
backgroundTaskManager: this.backgroundTaskManager,
|
|
432
449
|
workdir: this.workdir,
|
|
433
450
|
messageId: this.messageManager.getMessages().slice(-1)[0]?.id,
|
|
451
|
+
sessionId: this.messageManager.getSessionId(),
|
|
452
|
+
taskManager: this.taskManager,
|
|
434
453
|
};
|
|
435
454
|
// Execute tool
|
|
436
455
|
const toolResult = await this.toolManager.execute(functionToolCall.function?.name || "", toolArgs, context);
|
|
437
|
-
// Check if the tool was backgrounded via Ctrl-B
|
|
438
|
-
// If it was backgrounded, we should abort the AI recursion
|
|
439
|
-
if (toolResult.success &&
|
|
440
|
-
toolResult.content.includes("Command was manually backgrounded by user")) {
|
|
441
|
-
this.logger?.info(`Tool ${toolName} was backgrounded via Ctrl-B, aborting AI recursion`);
|
|
442
|
-
// Use abortAIMessage directly instead of abortRecursion to avoid double logging
|
|
443
|
-
// and ensure we don't trigger the "Request was aborted" error block
|
|
444
|
-
this.abortAIMessage();
|
|
445
|
-
return;
|
|
446
|
-
}
|
|
447
456
|
// Update message state - tool execution completed
|
|
448
457
|
this.messageManager.updateToolBlock({
|
|
449
458
|
id: toolId,
|
|
@@ -455,6 +464,7 @@ export class AIManager {
|
|
|
455
464
|
stage: "end",
|
|
456
465
|
name: toolName,
|
|
457
466
|
shortResult: toolResult.shortResult,
|
|
467
|
+
isManuallyBackgrounded: toolResult.isManuallyBackgrounded,
|
|
458
468
|
});
|
|
459
469
|
// Execute PostToolUse hooks after successful tool completion
|
|
460
470
|
await this.executePostToolUseHooks(toolId, toolName, toolArgs, toolResult);
|
|
@@ -472,6 +482,7 @@ export class AIManager {
|
|
|
472
482
|
stage: "end",
|
|
473
483
|
name: toolName,
|
|
474
484
|
compactParams,
|
|
485
|
+
isManuallyBackgrounded: false,
|
|
475
486
|
});
|
|
476
487
|
}
|
|
477
488
|
});
|
|
@@ -491,7 +502,15 @@ export class AIManager {
|
|
|
491
502
|
}
|
|
492
503
|
// Check interruption status
|
|
493
504
|
const isCurrentlyAborted = abortController.signal.aborted || toolAbortController.signal.aborted;
|
|
494
|
-
if
|
|
505
|
+
// Check if all tools were manually backgrounded
|
|
506
|
+
const lastMessage = this.messageManager.getMessages()[this.messageManager.getMessages().length - 1];
|
|
507
|
+
const toolBlocks = lastMessage?.blocks.filter((block) => block.type === "tool") || [];
|
|
508
|
+
const hasBackgrounded = toolBlocks.length > 0 &&
|
|
509
|
+
toolBlocks.some((block) => block.isManuallyBackgrounded);
|
|
510
|
+
if (hasBackgrounded) {
|
|
511
|
+
this.logger?.info("Some tools were manually backgrounded, stopping recursion.");
|
|
512
|
+
}
|
|
513
|
+
else if (!isCurrentlyAborted) {
|
|
495
514
|
// Recursively call AI service, increment recursion depth, and pass same configuration
|
|
496
515
|
await this.sendAIMessage({
|
|
497
516
|
recursionDepth: recursionDepth + 1,
|
|
@@ -504,15 +523,7 @@ export class AIManager {
|
|
|
504
523
|
}
|
|
505
524
|
}
|
|
506
525
|
catch (error) {
|
|
507
|
-
|
|
508
|
-
// Use the local variables to avoid null reference if this.abortController was cleared
|
|
509
|
-
const isCurrentlyAborted = abortController.signal.aborted || toolAbortController.signal.aborted;
|
|
510
|
-
if (isCurrentlyAborted) {
|
|
511
|
-
this.logger?.info("AI message processing was aborted");
|
|
512
|
-
}
|
|
513
|
-
else {
|
|
514
|
-
this.messageManager.addErrorBlock(error instanceof Error ? error.message : "Unknown error occurred");
|
|
515
|
-
}
|
|
526
|
+
this.messageManager.addErrorBlock(error instanceof Error ? error.message : "Unknown error occurred");
|
|
516
527
|
}
|
|
517
528
|
finally {
|
|
518
529
|
// Only execute cleanup and hooks for the initial call
|
|
@@ -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;
|
|
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;IA0B7B,OAAO,IAAI,IAAI;CAUvB"}
|
|
@@ -44,6 +44,29 @@ export class BackgroundTaskManager {
|
|
|
44
44
|
status: "running",
|
|
45
45
|
stdout: "",
|
|
46
46
|
stderr: "",
|
|
47
|
+
onStop: () => {
|
|
48
|
+
try {
|
|
49
|
+
if (child.pid) {
|
|
50
|
+
process.kill(-child.pid, "SIGTERM");
|
|
51
|
+
setTimeout(() => {
|
|
52
|
+
if (child.pid && !child.killed) {
|
|
53
|
+
try {
|
|
54
|
+
process.kill(-child.pid, "SIGKILL");
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logger.error("Failed to force kill process:", error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}, 1000);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
child.kill("SIGTERM");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
child.kill("SIGTERM");
|
|
68
|
+
}
|
|
69
|
+
},
|
|
47
70
|
};
|
|
48
71
|
this.tasks.set(id, shell);
|
|
49
72
|
this.notifyTasksChange();
|
|
@@ -114,6 +137,29 @@ export class BackgroundTaskManager {
|
|
|
114
137
|
status: "running",
|
|
115
138
|
stdout: initialStdout,
|
|
116
139
|
stderr: initialStderr,
|
|
140
|
+
onStop: () => {
|
|
141
|
+
try {
|
|
142
|
+
if (child.pid) {
|
|
143
|
+
process.kill(-child.pid, "SIGTERM");
|
|
144
|
+
setTimeout(() => {
|
|
145
|
+
if (child.pid && !child.killed) {
|
|
146
|
+
try {
|
|
147
|
+
process.kill(-child.pid, "SIGKILL");
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
logger.error("Failed to force kill process:", error);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}, 1000);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
child.kill("SIGTERM");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
child.kill("SIGTERM");
|
|
161
|
+
}
|
|
162
|
+
},
|
|
117
163
|
};
|
|
118
164
|
this.tasks.set(id, shell);
|
|
119
165
|
this.notifyTasksChange();
|
|
@@ -177,64 +223,24 @@ export class BackgroundTaskManager {
|
|
|
177
223
|
if (!task || task.status !== "running") {
|
|
178
224
|
return false;
|
|
179
225
|
}
|
|
180
|
-
if (task.
|
|
181
|
-
const shell = task;
|
|
226
|
+
if (task.onStop) {
|
|
182
227
|
try {
|
|
183
|
-
|
|
184
|
-
if (
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
if (shell.status === "running" &&
|
|
189
|
-
shell.process.pid &&
|
|
190
|
-
!shell.process.killed) {
|
|
191
|
-
try {
|
|
192
|
-
process.kill(-shell.process.pid, "SIGKILL");
|
|
193
|
-
}
|
|
194
|
-
catch (error) {
|
|
195
|
-
logger.error("Failed to force kill process:", error);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}, 1000);
|
|
228
|
+
const result = task.onStop();
|
|
229
|
+
if (result instanceof Promise) {
|
|
230
|
+
result.catch((error) => {
|
|
231
|
+
logger.error("Error in background task onStop callback:", error);
|
|
232
|
+
});
|
|
199
233
|
}
|
|
200
|
-
shell.status = "killed";
|
|
201
|
-
shell.endTime = Date.now();
|
|
202
|
-
shell.runtime = shell.endTime - shell.startTime;
|
|
203
|
-
this.notifyTasksChange();
|
|
204
|
-
return true;
|
|
205
234
|
}
|
|
206
|
-
catch {
|
|
207
|
-
|
|
208
|
-
try {
|
|
209
|
-
shell.process.kill("SIGTERM");
|
|
210
|
-
setTimeout(() => {
|
|
211
|
-
if (!shell.process.killed) {
|
|
212
|
-
shell.process.kill("SIGKILL");
|
|
213
|
-
}
|
|
214
|
-
}, 1000);
|
|
215
|
-
shell.status = "killed";
|
|
216
|
-
shell.endTime = Date.now();
|
|
217
|
-
shell.runtime = shell.endTime - shell.startTime;
|
|
218
|
-
this.notifyTasksChange();
|
|
219
|
-
return true;
|
|
220
|
-
}
|
|
221
|
-
catch (directKillError) {
|
|
222
|
-
logger.error("Failed to kill child process:", directKillError);
|
|
223
|
-
return false;
|
|
224
|
-
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
logger.error("Error in background task onStop callback:", error);
|
|
225
237
|
}
|
|
226
238
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
task.endTime = Date.now();
|
|
233
|
-
task.runtime = task.endTime - task.startTime;
|
|
234
|
-
this.notifyTasksChange();
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
return false;
|
|
239
|
+
task.status = "killed";
|
|
240
|
+
task.endTime = Date.now();
|
|
241
|
+
task.runtime = task.endTime - task.startTime;
|
|
242
|
+
this.notifyTasksChange();
|
|
243
|
+
return true;
|
|
238
244
|
}
|
|
239
245
|
cleanup() {
|
|
240
246
|
// Kill all running tasks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foregroundTaskManager.d.ts","sourceRoot":"","sources":["../../src/managers/foregroundTaskManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,qBAAqB,CAAwB;IAE9C,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIlD,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMpC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"foregroundTaskManager.d.ts","sourceRoot":"","sources":["../../src/managers/foregroundTaskManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,qBAAqB,CAAwB;IAE9C,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIlD,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMpC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5C,cAAc,IAAI,OAAO;CAGjC"}
|
|
@@ -9,8 +9,9 @@ export class ForegroundTaskManager {
|
|
|
9
9
|
this.activeForegroundTasks = this.activeForegroundTasks.filter((t) => t.id !== id);
|
|
10
10
|
}
|
|
11
11
|
async backgroundCurrentTask() {
|
|
12
|
-
const
|
|
13
|
-
|
|
12
|
+
const tasks = [...this.activeForegroundTasks].reverse();
|
|
13
|
+
this.activeForegroundTasks = [];
|
|
14
|
+
for (const task of tasks) {
|
|
14
15
|
await task.backgroundHandler();
|
|
15
16
|
}
|
|
16
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpManager.d.ts","sourceRoot":"","sources":["../../src/managers/mcpManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,SAAS,EACT,OAAO,EACP,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAQ3B,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,OAAO,GAAE,iBAAsB;IAK3C;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,IAAI,CAAC;IA4CV,kBAAkB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAO/C,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA0CvC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrD,SAAS,IAAI,SAAS,GAAG,IAAI;IAI7B,aAAa,IAAI,eAAe,EAAE;IAIlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIpD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IASzE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO;IAyBzD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAgB7B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4F7C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BtD,oBAAoB,IAAI,OAAO,EAAE;IAW3B,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;YAqCY,uBAAuB;IA8D/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;OAEG;IACH,iBAAiB,IAAI,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"mcpManager.d.ts","sourceRoot":"","sources":["../../src/managers/mcpManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,SAAS,EACT,OAAO,EACP,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAQ3B,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,OAAO,GAAE,iBAAsB;IAK3C;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,IAAI,CAAC;IA4CV,kBAAkB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAO/C,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA0CvC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrD,SAAS,IAAI,SAAS,GAAG,IAAI;IAI7B,aAAa,IAAI,eAAe,EAAE;IAIlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIpD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IASzE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO;IAyBzD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAgB7B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4F7C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BtD,oBAAoB,IAAI,OAAO,EAAE;IAW3B,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;YAqCY,uBAAuB;IA8D/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;OAEG;IACH,iBAAiB,IAAI,UAAU,EAAE;IA0BjC;;OAEG;IACH,iBAAiB,IAAI,0BAA0B,EAAE;IAIjD;;OAEG;IACG,wBAAwB,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IActB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAcjC"}
|
|
@@ -16,7 +16,7 @@ export interface MessageManagerCallbacks {
|
|
|
16
16
|
onAssistantReasoningUpdated?: (chunk: string, accumulated: string) => void;
|
|
17
17
|
onToolBlockUpdated?: (params: AgentToolBlockUpdateParams) => void;
|
|
18
18
|
onErrorBlockAdded?: (error: string) => void;
|
|
19
|
-
onCompressBlockAdded?: (
|
|
19
|
+
onCompressBlockAdded?: (content: string) => void;
|
|
20
20
|
onCompressionStateChange?: (isCompressing: boolean) => void;
|
|
21
21
|
onMemoryBlockAdded?: (content: string, success: boolean, type: "project" | "user", storagePath: string) => void;
|
|
22
22
|
onAddCommandOutputMessage?: (command: string) => void;
|
|
@@ -31,6 +31,8 @@ export interface MessageManagerCallbacks {
|
|
|
31
31
|
subagent_type: string;
|
|
32
32
|
}) => void;
|
|
33
33
|
onSubAgentBlockUpdated?: (subagentId: string, status: "active" | "completed" | "error" | "aborted") => void;
|
|
34
|
+
onFileHistoryBlockAdded?: (snapshots: import("../types/reversion.js").FileSnapshot[]) => void;
|
|
35
|
+
onSubagentTaskStopRequested?: (subagentId: string) => void;
|
|
34
36
|
}
|
|
35
37
|
export interface MessageManagerOptions {
|
|
36
38
|
callbacks: MessageManagerCallbacks;
|
|
@@ -42,6 +44,7 @@ export interface MessageManagerOptions {
|
|
|
42
44
|
}
|
|
43
45
|
export declare class MessageManager {
|
|
44
46
|
private sessionId;
|
|
47
|
+
private rootSessionId;
|
|
45
48
|
private messages;
|
|
46
49
|
private latestTotalTokens;
|
|
47
50
|
private userInputHistory;
|
|
@@ -57,6 +60,7 @@ export declare class MessageManager {
|
|
|
57
60
|
private subagentType?;
|
|
58
61
|
constructor(options: MessageManagerOptions);
|
|
59
62
|
getSessionId(): string;
|
|
63
|
+
getRootSessionId(): string;
|
|
60
64
|
getMessages(): Message[];
|
|
61
65
|
getlatestTotalTokens(): number;
|
|
62
66
|
getUserInputHistory(): string[];
|
|
@@ -110,9 +114,9 @@ export declare class MessageManager {
|
|
|
110
114
|
addErrorBlock(error: string): void;
|
|
111
115
|
addInfoBlock(content: string): void;
|
|
112
116
|
/**
|
|
113
|
-
* Compress messages and update session, delete compressed messages, only keep compressed messages and
|
|
117
|
+
* Compress messages and update session, delete compressed messages, only keep compressed messages and last 3 messages
|
|
114
118
|
*/
|
|
115
|
-
compressMessagesAndUpdateSession(
|
|
119
|
+
compressMessagesAndUpdateSession(compressedContent: string, usage?: Usage): void;
|
|
116
120
|
addFileHistoryBlock(snapshots: import("../types/reversion.js").FileSnapshot[]): void;
|
|
117
121
|
addCommandOutputMessage(command: string): void;
|
|
118
122
|
updateCommandOutputMessage(command: string, output: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,iBAAiB,EAGjB,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,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,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvD,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,
|
|
1
|
+
{"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"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"}
|