wave-agent-sdk 0.5.0 → 0.6.2
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 +14 -11
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +64 -151
- 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/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 +43 -48
- package/dist/managers/backgroundTaskManager.d.ts.map +1 -1
- package/dist/managers/backgroundTaskManager.js +63 -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 +13 -27
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +94 -89
- 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/reversionManager.d.ts.map +1 -1
- package/dist/managers/reversionManager.js +23 -2
- package/dist/managers/slashCommandManager.d.ts +3 -0
- package/dist/managers/slashCommandManager.d.ts.map +1 -1
- package/dist/managers/slashCommandManager.js +8 -3
- package/dist/managers/subagentManager.d.ts +8 -14
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +46 -112
- 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/{constants/prompts.d.ts → prompts/index.d.ts} +17 -15
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +309 -0
- 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 +15 -1
- package/dist/services/session.d.ts.map +1 -1
- package/dist/services/session.js +57 -1
- package/dist/services/taskManager.d.ts +25 -0
- package/dist/services/taskManager.d.ts.map +1 -0
- package/dist/services/taskManager.js +164 -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 +13 -11
- 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 +26 -2
- 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 +461 -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 +37 -2
- package/dist/tools/types.d.ts +11 -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 -18
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/types/processes.d.ts +16 -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 +59 -44
- 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/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 +3 -58
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/messageOperations.js +4 -146
- 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 +86 -183
- package/src/constants/subagents.ts +4 -0
- package/src/constants/tools.ts +4 -1
- package/src/index.ts +1 -0
- package/src/managers/aiManager.ts +63 -70
- package/src/managers/backgroundTaskManager.ts +58 -54
- package/src/managers/foregroundTaskManager.ts +3 -2
- package/src/managers/mcpManager.ts +6 -3
- package/src/managers/messageManager.ts +126 -142
- package/src/managers/permissionManager.ts +32 -21
- package/src/managers/planManager.ts +2 -2
- package/src/managers/reversionManager.ts +26 -2
- package/src/managers/slashCommandManager.ts +12 -3
- package/src/managers/subagentManager.ts +60 -144
- package/src/managers/toolManager.ts +32 -2
- package/src/prompts/index.ts +366 -0
- package/src/services/aiService.ts +3 -145
- package/src/services/memory.ts +0 -72
- package/src/services/session.ts +73 -0
- package/src/services/taskManager.ts +195 -0
- package/src/tools/askUserQuestion.ts +51 -29
- package/src/tools/bashTool.ts +15 -17
- package/src/tools/editTool.ts +3 -1
- package/src/tools/exitPlanMode.ts +27 -3
- 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 +516 -0
- package/src/tools/taskOutputTool.ts +34 -12
- package/src/tools/taskStopTool.ts +7 -1
- package/src/tools/taskTool.ts +45 -1
- package/src/tools/types.ts +12 -0
- package/src/tools/writeTool.ts +9 -2
- package/src/types/index.ts +1 -0
- package/src/types/messaging.ts +1 -21
- package/src/types/processes.ts +18 -7
- package/src/types/tasks.ts +13 -0
- package/src/types/tools.ts +4 -1
- package/src/utils/builtinSubagents.ts +81 -45
- package/src/utils/cacheControlUtils.ts +26 -18
- package/src/utils/constants.ts +0 -5
- package/src/utils/convertMessagesForAPI.ts +2 -2
- package/src/utils/editUtils.ts +2 -6
- package/src/utils/gitUtils.ts +24 -0
- package/src/utils/messageOperations.ts +6 -229
- package/src/utils/nameGenerator.ts +20 -3
- package/dist/constants/prompts.d.ts.map +0 -1
- package/dist/constants/prompts.js +0 -118
- 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/constants/prompts.ts +0 -155
- package/src/tools/todoWriteTool.ts +0 -257
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { callAgent, compressMessages, } from "../services/aiService.js";
|
|
2
|
-
import { getMessagesToCompress } from "../utils/messageOperations.js";
|
|
3
2
|
import { convertMessagesForAPI } from "../utils/convertMessagesForAPI.js";
|
|
4
3
|
import { calculateComprehensiveTotalTokens } from "../utils/tokenCalculation.js";
|
|
5
4
|
import * as fs from "node:fs/promises";
|
|
6
|
-
import {
|
|
5
|
+
import { buildSystemPrompt } from "../prompts/index.js";
|
|
7
6
|
export class AIManager {
|
|
8
7
|
constructor(options) {
|
|
9
8
|
this.isLoading = false;
|
|
@@ -12,6 +11,7 @@ export class AIManager {
|
|
|
12
11
|
this.isCompressing = false;
|
|
13
12
|
this.messageManager = options.messageManager;
|
|
14
13
|
this.toolManager = options.toolManager;
|
|
14
|
+
this.taskManager = options.taskManager;
|
|
15
15
|
this.backgroundTaskManager = options.backgroundTaskManager;
|
|
16
16
|
this.hookManager = options.hookManager;
|
|
17
17
|
this.reversionManager = options.reversionManager;
|
|
@@ -78,14 +78,6 @@ export class AIManager {
|
|
|
78
78
|
}
|
|
79
79
|
this.setIsLoading(false);
|
|
80
80
|
}
|
|
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
81
|
// Helper method to generate compactParams
|
|
90
82
|
generateCompactParams(toolName, toolArgs) {
|
|
91
83
|
try {
|
|
@@ -95,6 +87,7 @@ export class AIManager {
|
|
|
95
87
|
if (toolPlugin?.formatCompactParams) {
|
|
96
88
|
const context = {
|
|
97
89
|
workdir: this.workdir,
|
|
90
|
+
taskManager: this.taskManager,
|
|
98
91
|
};
|
|
99
92
|
return toolPlugin.formatCompactParams(toolArgs, context);
|
|
100
93
|
}
|
|
@@ -118,7 +111,7 @@ export class AIManager {
|
|
|
118
111
|
this.getMaxInputTokens()) {
|
|
119
112
|
this.logger?.debug(`Token usage exceeded ${this.getMaxInputTokens()}, compressing messages...`);
|
|
120
113
|
// Check if messages need compression
|
|
121
|
-
const
|
|
114
|
+
const messagesToCompress = this.messageManager.getMessages();
|
|
122
115
|
// If there are messages to compress, perform compression
|
|
123
116
|
if (messagesToCompress.length > 0) {
|
|
124
117
|
const recentChatMessages = convertMessagesForAPI(messagesToCompress);
|
|
@@ -145,7 +138,7 @@ export class AIManager {
|
|
|
145
138
|
};
|
|
146
139
|
}
|
|
147
140
|
// Execute message reconstruction and sessionId update after compression
|
|
148
|
-
this.messageManager.compressMessagesAndUpdateSession(
|
|
141
|
+
this.messageManager.compressMessagesAndUpdateSession(compressionResult.content, compressionUsage);
|
|
149
142
|
// Notify Agent to add to usage tracking
|
|
150
143
|
if (compressionUsage && this.callbacks?.onUsageAdded) {
|
|
151
144
|
this.callbacks.onUsageAdded(compressionUsage);
|
|
@@ -176,6 +169,8 @@ export class AIManager {
|
|
|
176
169
|
if (recursionDepth === 0 && this.isLoading) {
|
|
177
170
|
return;
|
|
178
171
|
}
|
|
172
|
+
// Save session in each recursion to ensure message persistence
|
|
173
|
+
await this.messageManager.saveSession();
|
|
179
174
|
// Only create new AbortControllers for the initial call (recursionDepth === 0)
|
|
180
175
|
// For recursive calls, reuse existing controllers to maintain abort signal
|
|
181
176
|
let abortController;
|
|
@@ -189,12 +184,9 @@ export class AIManager {
|
|
|
189
184
|
}
|
|
190
185
|
else {
|
|
191
186
|
// Reuse existing controllers for recursive calls
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
toolAbortController = this.toolAbortController || new AbortController();
|
|
187
|
+
abortController = this.abortController;
|
|
188
|
+
toolAbortController = this.toolAbortController;
|
|
195
189
|
}
|
|
196
|
-
// Save session in each recursion to ensure message persistence
|
|
197
|
-
await this.messageManager.saveSession();
|
|
198
190
|
// Only set loading state for the initial call
|
|
199
191
|
if (recursionDepth === 0) {
|
|
200
192
|
this.setIsLoading(true);
|
|
@@ -213,13 +205,11 @@ export class AIManager {
|
|
|
213
205
|
// Get current permission mode and plan file path
|
|
214
206
|
const currentMode = this.permissionManager?.getCurrentEffectiveMode(this.getModelConfig().permissionMode);
|
|
215
207
|
const toolsConfig = this.getFilteredToolsConfig(tools);
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
effectiveSystemPrompt = (effectiveSystemPrompt || "") + languagePrompt;
|
|
222
|
-
}
|
|
208
|
+
const toolNames = new Set(toolsConfig.map((t) => t.function.name));
|
|
209
|
+
const filteredToolPlugins = this.toolManager
|
|
210
|
+
.getTools()
|
|
211
|
+
.filter((t) => toolNames.has(t.name));
|
|
212
|
+
let planModeOptions;
|
|
223
213
|
if (currentMode === "plan") {
|
|
224
214
|
const planFilePath = this.permissionManager?.getPlanFilePath();
|
|
225
215
|
if (planFilePath) {
|
|
@@ -231,8 +221,7 @@ export class AIManager {
|
|
|
231
221
|
catch {
|
|
232
222
|
planExists = false;
|
|
233
223
|
}
|
|
234
|
-
|
|
235
|
-
effectiveSystemPrompt = (effectiveSystemPrompt || "") + reminder;
|
|
224
|
+
planModeOptions = { planFilePath, planExists };
|
|
236
225
|
}
|
|
237
226
|
}
|
|
238
227
|
// Call AI service with streaming callbacks if enabled
|
|
@@ -242,11 +231,16 @@ export class AIManager {
|
|
|
242
231
|
messages: recentMessages,
|
|
243
232
|
sessionId: this.messageManager.getSessionId(),
|
|
244
233
|
abortSignal: abortController.signal,
|
|
245
|
-
memory: combinedMemory, // Pass combined memory content
|
|
246
234
|
workdir: this.workdir, // Pass working directory
|
|
247
235
|
tools: toolsConfig, // Pass filtered tool configuration
|
|
248
236
|
model: model, // Use passed model
|
|
249
|
-
systemPrompt:
|
|
237
|
+
systemPrompt: buildSystemPrompt(this.systemPrompt, filteredToolPlugins, {
|
|
238
|
+
workdir: this.workdir,
|
|
239
|
+
memory: combinedMemory,
|
|
240
|
+
language: this.getLanguage(),
|
|
241
|
+
isSubagent: !!this.subagentType,
|
|
242
|
+
planMode: planModeOptions,
|
|
243
|
+
}), // Pass custom system prompt
|
|
250
244
|
maxTokens: maxTokens, // Pass max tokens override
|
|
251
245
|
};
|
|
252
246
|
// Add streaming callbacks only if streaming is enabled
|
|
@@ -431,19 +425,18 @@ export class AIManager {
|
|
|
431
425
|
backgroundTaskManager: this.backgroundTaskManager,
|
|
432
426
|
workdir: this.workdir,
|
|
433
427
|
messageId: this.messageManager.getMessages().slice(-1)[0]?.id,
|
|
428
|
+
sessionId: this.messageManager.getSessionId(),
|
|
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
|
+
},
|
|
434
437
|
};
|
|
435
438
|
// Execute tool
|
|
436
439
|
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
440
|
// Update message state - tool execution completed
|
|
448
441
|
this.messageManager.updateToolBlock({
|
|
449
442
|
id: toolId,
|
|
@@ -455,6 +448,7 @@ export class AIManager {
|
|
|
455
448
|
stage: "end",
|
|
456
449
|
name: toolName,
|
|
457
450
|
shortResult: toolResult.shortResult,
|
|
451
|
+
isManuallyBackgrounded: toolResult.isManuallyBackgrounded,
|
|
458
452
|
});
|
|
459
453
|
// Execute PostToolUse hooks after successful tool completion
|
|
460
454
|
await this.executePostToolUseHooks(toolId, toolName, toolArgs, toolResult);
|
|
@@ -472,6 +466,7 @@ export class AIManager {
|
|
|
472
466
|
stage: "end",
|
|
473
467
|
name: toolName,
|
|
474
468
|
compactParams,
|
|
469
|
+
isManuallyBackgrounded: false,
|
|
475
470
|
});
|
|
476
471
|
}
|
|
477
472
|
});
|
|
@@ -491,7 +486,15 @@ export class AIManager {
|
|
|
491
486
|
}
|
|
492
487
|
// Check interruption status
|
|
493
488
|
const isCurrentlyAborted = abortController.signal.aborted || toolAbortController.signal.aborted;
|
|
494
|
-
if
|
|
489
|
+
// Check if all tools were manually backgrounded
|
|
490
|
+
const lastMessage = this.messageManager.getMessages()[this.messageManager.getMessages().length - 1];
|
|
491
|
+
const toolBlocks = lastMessage?.blocks.filter((block) => block.type === "tool") || [];
|
|
492
|
+
const hasBackgrounded = toolBlocks.length > 0 &&
|
|
493
|
+
toolBlocks.some((block) => block.isManuallyBackgrounded);
|
|
494
|
+
if (hasBackgrounded) {
|
|
495
|
+
this.logger?.info("Some tools were manually backgrounded, stopping recursion.");
|
|
496
|
+
}
|
|
497
|
+
else if (!isCurrentlyAborted) {
|
|
495
498
|
// Recursively call AI service, increment recursion depth, and pass same configuration
|
|
496
499
|
await this.sendAIMessage({
|
|
497
500
|
recursionDepth: recursionDepth + 1,
|
|
@@ -504,15 +507,7 @@ export class AIManager {
|
|
|
504
507
|
}
|
|
505
508
|
}
|
|
506
509
|
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
|
-
}
|
|
510
|
+
this.messageManager.addErrorBlock(error instanceof Error ? error.message : "Unknown error occurred");
|
|
516
511
|
}
|
|
517
512
|
finally {
|
|
518
513
|
// 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;IA+B7B,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,28 @@ 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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
return false;
|
|
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.
|
|
243
|
+
task.status = "killed";
|
|
244
|
+
task.endTime = Date.now();
|
|
245
|
+
task.runtime = task.endTime - task.startTime;
|
|
246
|
+
this.notifyTasksChange();
|
|
247
|
+
return true;
|
|
238
248
|
}
|
|
239
249
|
cleanup() {
|
|
240
250
|
// 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"}
|
|
@@ -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";
|
|
@@ -8,7 +7,6 @@ export interface MessageManagerCallbacks {
|
|
|
8
7
|
onMessagesChange?: (messages: Message[]) => void;
|
|
9
8
|
onSessionIdChange?: (sessionId: string) => void;
|
|
10
9
|
onLatestTotalTokensChange?: (latestTotalTokens: number) => void;
|
|
11
|
-
onUserInputHistoryChange?: (history: string[]) => void;
|
|
12
10
|
onUsagesChange?: (usages: Usage[]) => void;
|
|
13
11
|
onUserMessageAdded?: (params: UserMessageParams) => void;
|
|
14
12
|
onAssistantMessageAdded?: () => void;
|
|
@@ -16,7 +14,7 @@ export interface MessageManagerCallbacks {
|
|
|
16
14
|
onAssistantReasoningUpdated?: (chunk: string, accumulated: string) => void;
|
|
17
15
|
onToolBlockUpdated?: (params: AgentToolBlockUpdateParams) => void;
|
|
18
16
|
onErrorBlockAdded?: (error: string) => void;
|
|
19
|
-
onCompressBlockAdded?: (
|
|
17
|
+
onCompressBlockAdded?: (content: string) => void;
|
|
20
18
|
onCompressionStateChange?: (isCompressing: boolean) => void;
|
|
21
19
|
onMemoryBlockAdded?: (content: string, success: boolean, type: "project" | "user", storagePath: string) => void;
|
|
22
20
|
onAddCommandOutputMessage?: (command: string) => void;
|
|
@@ -25,12 +23,7 @@ export interface MessageManagerCallbacks {
|
|
|
25
23
|
onSlashCommandsChange?: (commands: SlashCommand[]) => void;
|
|
26
24
|
onInfoBlockAdded?: (content: string) => void;
|
|
27
25
|
onShowRewind?: () => void;
|
|
28
|
-
|
|
29
|
-
description: string;
|
|
30
|
-
prompt: string;
|
|
31
|
-
subagent_type: string;
|
|
32
|
-
}) => void;
|
|
33
|
-
onSubAgentBlockUpdated?: (subagentId: string, status: "active" | "completed" | "error" | "aborted") => void;
|
|
26
|
+
onFileHistoryBlockAdded?: (snapshots: import("../types/reversion.js").FileSnapshot[]) => void;
|
|
34
27
|
}
|
|
35
28
|
export interface MessageManagerOptions {
|
|
36
29
|
callbacks: MessageManagerCallbacks;
|
|
@@ -42,9 +35,10 @@ export interface MessageManagerOptions {
|
|
|
42
35
|
}
|
|
43
36
|
export declare class MessageManager {
|
|
44
37
|
private sessionId;
|
|
38
|
+
private rootSessionId;
|
|
39
|
+
private parentSessionId?;
|
|
45
40
|
private messages;
|
|
46
41
|
private latestTotalTokens;
|
|
47
|
-
private userInputHistory;
|
|
48
42
|
private workdir;
|
|
49
43
|
private encodedWorkdir;
|
|
50
44
|
private logger?;
|
|
@@ -57,9 +51,10 @@ export declare class MessageManager {
|
|
|
57
51
|
private subagentType?;
|
|
58
52
|
constructor(options: MessageManagerOptions);
|
|
59
53
|
getSessionId(): string;
|
|
54
|
+
getRootSessionId(): string;
|
|
55
|
+
getParentSessionId(): string | undefined;
|
|
60
56
|
getMessages(): Message[];
|
|
61
57
|
getlatestTotalTokens(): number;
|
|
62
|
-
getUserInputHistory(): string[];
|
|
63
58
|
getWorkdir(): string;
|
|
64
59
|
/**
|
|
65
60
|
* Returns all files mentioned in the current conversation context.
|
|
@@ -87,9 +82,8 @@ export declare class MessageManager {
|
|
|
87
82
|
*/
|
|
88
83
|
saveSession(): Promise<void>;
|
|
89
84
|
setlatestTotalTokens(latestTotalTokens: number): void;
|
|
90
|
-
setUserInputHistory(userInputHistory: string[]): void;
|
|
91
85
|
/**
|
|
92
|
-
* Clear messages
|
|
86
|
+
* Clear messages
|
|
93
87
|
*/
|
|
94
88
|
clearMessages(): void;
|
|
95
89
|
/**
|
|
@@ -101,8 +95,6 @@ export declare class MessageManager {
|
|
|
101
95
|
*/
|
|
102
96
|
triggerSlashCommandsChange(commands: SlashCommand[]): void;
|
|
103
97
|
initializeFromSession(sessionData: SessionData): void;
|
|
104
|
-
addToInputHistory(input: string): void;
|
|
105
|
-
clearInputHistory(): void;
|
|
106
98
|
addUserMessage(params: UserMessageParams): void;
|
|
107
99
|
addAssistantMessage(content?: string, toolCalls?: ChatCompletionMessageFunctionToolCall[], usage?: Usage, additionalFields?: Record<string, unknown>): void;
|
|
108
100
|
mergeAssistantAdditionalFields(additionalFields: Record<string, unknown>): void;
|
|
@@ -110,23 +102,13 @@ export declare class MessageManager {
|
|
|
110
102
|
addErrorBlock(error: string): void;
|
|
111
103
|
addInfoBlock(content: string): void;
|
|
112
104
|
/**
|
|
113
|
-
* Compress messages and update session, delete compressed messages, only keep compressed messages and
|
|
105
|
+
* Compress messages and update session, delete compressed messages, only keep compressed messages and last 3 messages
|
|
114
106
|
*/
|
|
115
|
-
compressMessagesAndUpdateSession(
|
|
107
|
+
compressMessagesAndUpdateSession(compressedContent: string, usage?: Usage): void;
|
|
116
108
|
addFileHistoryBlock(snapshots: import("../types/reversion.js").FileSnapshot[]): void;
|
|
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
|
*/
|
|
@@ -147,6 +129,10 @@ export declare class MessageManager {
|
|
|
147
129
|
* Used for hook error handling when the user prompt needs to be erased
|
|
148
130
|
*/
|
|
149
131
|
removeLastUserMessage(): void;
|
|
132
|
+
getFullMessageThread(): Promise<{
|
|
133
|
+
messages: Message[];
|
|
134
|
+
sessionIds: string[];
|
|
135
|
+
}>;
|
|
150
136
|
/**
|
|
151
137
|
* Truncate history to a specific index and revert file changes.
|
|
152
138
|
* @param index - The index of the user message to truncate to.
|
|
@@ -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":"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"}
|