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
|
@@ -6,6 +6,7 @@ export class MessageManager {
|
|
|
6
6
|
constructor(options) {
|
|
7
7
|
this.filesInContext = new Set(); // Track files mentioned in the conversation
|
|
8
8
|
this.sessionId = generateSessionId();
|
|
9
|
+
this.rootSessionId = this.sessionId;
|
|
9
10
|
this.messages = [];
|
|
10
11
|
this.latestTotalTokens = 0;
|
|
11
12
|
this.userInputHistory = [];
|
|
@@ -24,6 +25,9 @@ export class MessageManager {
|
|
|
24
25
|
getSessionId() {
|
|
25
26
|
return this.sessionId;
|
|
26
27
|
}
|
|
28
|
+
getRootSessionId() {
|
|
29
|
+
return this.rootSessionId;
|
|
30
|
+
}
|
|
27
31
|
getMessages() {
|
|
28
32
|
return [...this.messages];
|
|
29
33
|
}
|
|
@@ -122,7 +126,7 @@ export class MessageManager {
|
|
|
122
126
|
}
|
|
123
127
|
// Use JSONL format for new sessions
|
|
124
128
|
await appendMessages(this.sessionId, unsavedMessages, // Only append new messages
|
|
125
|
-
this.workdir, this.sessionType);
|
|
129
|
+
this.workdir, this.sessionType, this.rootSessionId);
|
|
126
130
|
// Update the saved message count
|
|
127
131
|
this.savedMessageCount = this.messages.length;
|
|
128
132
|
}
|
|
@@ -165,6 +169,7 @@ export class MessageManager {
|
|
|
165
169
|
// Initialize state from session data
|
|
166
170
|
initializeFromSession(sessionData) {
|
|
167
171
|
this.setSessionId(sessionData.id);
|
|
172
|
+
this.rootSessionId = sessionData.rootSessionId || sessionData.id;
|
|
168
173
|
this.setMessages([...sessionData.messages]);
|
|
169
174
|
this.updateFilesInContext(sessionData.messages);
|
|
170
175
|
this.setlatestTotalTokens(sessionData.metadata.latestTotalTokens);
|
|
@@ -236,17 +241,7 @@ export class MessageManager {
|
|
|
236
241
|
updateToolBlock(params) {
|
|
237
242
|
const newMessages = updateToolBlockInMessage({
|
|
238
243
|
messages: this.messages,
|
|
239
|
-
|
|
240
|
-
parameters: params.parameters,
|
|
241
|
-
result: params.result,
|
|
242
|
-
success: params.success,
|
|
243
|
-
error: params.error,
|
|
244
|
-
stage: params.stage,
|
|
245
|
-
name: params.name,
|
|
246
|
-
shortResult: params.shortResult,
|
|
247
|
-
images: params.images,
|
|
248
|
-
compactParams: params.compactParams,
|
|
249
|
-
parametersChunk: params.parametersChunk,
|
|
244
|
+
...params,
|
|
250
245
|
});
|
|
251
246
|
this.setMessages(newMessages);
|
|
252
247
|
this.callbacks.onToolBlockUpdated?.(params);
|
|
@@ -272,10 +267,11 @@ export class MessageManager {
|
|
|
272
267
|
}
|
|
273
268
|
}
|
|
274
269
|
/**
|
|
275
|
-
* Compress messages and update session, delete compressed messages, only keep compressed messages and
|
|
270
|
+
* Compress messages and update session, delete compressed messages, only keep compressed messages and last 3 messages
|
|
276
271
|
*/
|
|
277
|
-
compressMessagesAndUpdateSession(
|
|
278
|
-
|
|
272
|
+
compressMessagesAndUpdateSession(compressedContent, usage) {
|
|
273
|
+
// Get last 3 messages to preserve
|
|
274
|
+
const lastThreeMessages = this.messages.slice(-3);
|
|
279
275
|
// Create compressed message
|
|
280
276
|
const compressMessage = {
|
|
281
277
|
role: "assistant",
|
|
@@ -288,19 +284,18 @@ export class MessageManager {
|
|
|
288
284
|
],
|
|
289
285
|
...(usage && { usage }),
|
|
290
286
|
};
|
|
291
|
-
//
|
|
292
|
-
const
|
|
293
|
-
// Build new message array: keep compressed message and all messages from actualIndex onwards
|
|
294
|
-
const newMessages = [
|
|
295
|
-
compressMessage,
|
|
296
|
-
...currentMessages.slice(actualIndex),
|
|
297
|
-
];
|
|
287
|
+
// Build new message array: keep the compressed message and last 3 messages
|
|
288
|
+
const newMessages = [compressMessage, ...lastThreeMessages];
|
|
298
289
|
// Update sessionId
|
|
299
290
|
this.setSessionId(generateSessionId());
|
|
291
|
+
// Trigger task list update if this is the main session to ensure continuity
|
|
292
|
+
if (this.sessionType === "main") {
|
|
293
|
+
this.callbacks.onSessionIdChange?.(this.sessionId);
|
|
294
|
+
}
|
|
300
295
|
// Set new message list
|
|
301
296
|
this.setMessages(newMessages);
|
|
302
|
-
// Trigger compression callback
|
|
303
|
-
this.callbacks.onCompressBlockAdded?.(
|
|
297
|
+
// Trigger compression callback
|
|
298
|
+
this.callbacks.onCompressBlockAdded?.(compressedContent);
|
|
304
299
|
}
|
|
305
300
|
addFileHistoryBlock(snapshots) {
|
|
306
301
|
if (snapshots.length === 0)
|
|
@@ -312,6 +307,7 @@ export class MessageManager {
|
|
|
312
307
|
snapshots,
|
|
313
308
|
});
|
|
314
309
|
this.setMessages([...this.messages]);
|
|
310
|
+
this.callbacks.onFileHistoryBlockAdded?.(snapshots);
|
|
315
311
|
}
|
|
316
312
|
}
|
|
317
313
|
// Bash command related message operations
|
|
@@ -480,6 +476,14 @@ export class MessageManager {
|
|
|
480
476
|
}
|
|
481
477
|
// Truncate messages in memory
|
|
482
478
|
const newMessages = this.messages.slice(0, index);
|
|
479
|
+
// Identify subagent tasks to stop
|
|
480
|
+
for (const message of messagesToRemove) {
|
|
481
|
+
for (const block of message.blocks) {
|
|
482
|
+
if (block.type === "subagent" && block.subagentId) {
|
|
483
|
+
this.callbacks.onSubagentTaskStopRequested?.(block.subagentId);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
483
487
|
this.setMessages(newMessages);
|
|
484
488
|
// Update persistence: rewrite the session file
|
|
485
489
|
await this.rewriteSessionFile(newMessages);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAqBhD,MAAM,WAAW,wBAAwB;IACvC,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,qBAAqB,CAAC,EAAE,cAAc,CAAC;IACvC,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAC/C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,6BAA6B,CAAC,CAAiC;gBAE3D,OAAO,GAAE,wBAA6B;IAUlD;;OAEG;IACI,gCAAgC,CACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GACvC,IAAI;IAIP;;OAEG;IACH,2BAA2B,CAAC,WAAW,CAAC,EAAE,cAAc,GAAG,IAAI;IAyB/D;;OAEG;IACI,eAAe,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAOzC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAOxC;;OAEG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ/C;;OAEG;IACI,mBAAmB,IAAI,IAAI;IAKlC;;OAEG;IACH,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;IAYxD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKtD;;OAEG;IACI,eAAe,IAAI,MAAM,GAAG,SAAS;IAI5C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,cAAc,GAAG,cAAc;IAI3E;;OAEG;IACH,8BAA8B,CAC5B,iBAAiB,CAAC,EAAE,cAAc,GACjC,cAAc;IAuBjB;;;OAGG;IACG,eAAe,CACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -230,31 +230,24 @@ export class PermissionManager {
|
|
|
230
230
|
if (targetPath) {
|
|
231
231
|
const { isInside, resolvedPath } = this.isInsideSafeZone(targetPath, workdir);
|
|
232
232
|
if (!isInside) {
|
|
233
|
-
this.logger?.
|
|
233
|
+
this.logger?.info("File operation outside the Safe Zone in acceptEdits mode, falling back to manual confirmation", {
|
|
234
234
|
toolName: context.toolName,
|
|
235
235
|
targetPath,
|
|
236
236
|
resolvedPath,
|
|
237
237
|
});
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
238
|
+
// Fall through to normal permission check flow to trigger confirmation prompt
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
this.logger?.debug("Permission automatically accepted for tool in acceptEdits mode", {
|
|
242
|
+
toolName: context.toolName,
|
|
243
|
+
});
|
|
244
|
+
return { behavior: "allow" };
|
|
242
245
|
}
|
|
243
246
|
}
|
|
244
|
-
this.logger?.debug("Permission automatically accepted for tool in acceptEdits mode", {
|
|
245
|
-
toolName: context.toolName,
|
|
246
|
-
});
|
|
247
|
-
return { behavior: "allow" };
|
|
248
247
|
}
|
|
249
248
|
}
|
|
250
249
|
// 1.3 If plan mode, allow Read-only tools and Edit/Write for plan file
|
|
251
250
|
if (context.permissionMode === "plan") {
|
|
252
|
-
if (context.toolName === BASH_TOOL_NAME) {
|
|
253
|
-
return {
|
|
254
|
-
behavior: "deny",
|
|
255
|
-
message: "Bash commands are not allowed in plan mode.",
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
251
|
const writeTools = [
|
|
259
252
|
EDIT_TOOL_NAME,
|
|
260
253
|
MULTI_EDIT_TOOL_NAME,
|
|
@@ -368,6 +361,23 @@ export class PermissionManager {
|
|
|
368
361
|
toolInput,
|
|
369
362
|
suggestedPrefix,
|
|
370
363
|
};
|
|
364
|
+
// Set hidePersistentOption for out-of-bounds file operations
|
|
365
|
+
const fileTools = [
|
|
366
|
+
EDIT_TOOL_NAME,
|
|
367
|
+
MULTI_EDIT_TOOL_NAME,
|
|
368
|
+
DELETE_FILE_TOOL_NAME,
|
|
369
|
+
WRITE_TOOL_NAME,
|
|
370
|
+
];
|
|
371
|
+
if (fileTools.includes(toolName)) {
|
|
372
|
+
const targetPath = (toolInput?.file_path || toolInput?.target_file);
|
|
373
|
+
const workdir = toolInput?.workdir;
|
|
374
|
+
if (targetPath) {
|
|
375
|
+
const { isInside } = this.isInsideSafeZone(targetPath, workdir);
|
|
376
|
+
if (!isInside) {
|
|
377
|
+
context.hidePersistentOption = true;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
371
381
|
// Set hidePersistentOption for dangerous or out-of-bounds bash commands
|
|
372
382
|
if (toolName === BASH_TOOL_NAME && toolInput?.command) {
|
|
373
383
|
const command = String(toolInput.command);
|
|
@@ -9,7 +9,7 @@ export declare class PlanManager {
|
|
|
9
9
|
/**
|
|
10
10
|
* Ensures the plan directory exists and generates a new plan file path with a random name
|
|
11
11
|
*/
|
|
12
|
-
getOrGeneratePlanFilePath(): Promise<{
|
|
12
|
+
getOrGeneratePlanFilePath(seed?: string): Promise<{
|
|
13
13
|
path: string;
|
|
14
14
|
name: string;
|
|
15
15
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planManager.d.ts","sourceRoot":"","sources":["../../src/managers/planManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,MAAM,CAAC;IAF3B,OAAO,CAAC,OAAO,CAAS;gBAEJ,MAAM,CAAC,EAAE,MAAM,YAAA;IAInC;;OAEG;IACU,yBAAyB,IAAI,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"planManager.d.ts","sourceRoot":"","sources":["../../src/managers/planManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,MAAM,CAAC;IAF3B,OAAO,CAAC,OAAO,CAAS;gBAEJ,MAAM,CAAC,EAAE,MAAM,YAAA;IAInC;;OAEG;IACU,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7D,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAgBF;;OAEG;IACI,UAAU,IAAI,MAAM;CAG5B"}
|
|
@@ -13,7 +13,7 @@ export class PlanManager {
|
|
|
13
13
|
/**
|
|
14
14
|
* Ensures the plan directory exists and generates a new plan file path with a random name
|
|
15
15
|
*/
|
|
16
|
-
async getOrGeneratePlanFilePath() {
|
|
16
|
+
async getOrGeneratePlanFilePath(seed) {
|
|
17
17
|
try {
|
|
18
18
|
await fs.mkdir(this.planDir, { recursive: true });
|
|
19
19
|
}
|
|
@@ -21,7 +21,7 @@ export class PlanManager {
|
|
|
21
21
|
this.logger?.error(`Failed to create plan directory: ${this.planDir}`, error);
|
|
22
22
|
throw error;
|
|
23
23
|
}
|
|
24
|
-
const name = generateRandomName();
|
|
24
|
+
const name = generateRandomName(seed);
|
|
25
25
|
const filePath = path.join(this.planDir, `${name}.md`);
|
|
26
26
|
this.logger?.info(`Generated plan file path: ${filePath}`);
|
|
27
27
|
return { path: filePath, name };
|
|
@@ -21,6 +21,8 @@ export interface SubagentManagerCallbacks {
|
|
|
21
21
|
onSubagentToolBlockUpdated?: (subagentId: string, params: AgentToolBlockUpdateParams) => void;
|
|
22
22
|
/** Triggered when subagent messages change */
|
|
23
23
|
onSubagentMessagesChange?: (subagentId: string, messages: Message[]) => void;
|
|
24
|
+
/** Triggered when subagent latest total tokens change */
|
|
25
|
+
onSubagentLatestTotalTokensChange?: (subagentId: string, tokens: number) => void;
|
|
24
26
|
}
|
|
25
27
|
export interface SubagentInstance {
|
|
26
28
|
subagentId: string;
|
|
@@ -37,6 +39,7 @@ export interface SubagentManagerOptions {
|
|
|
37
39
|
workdir: string;
|
|
38
40
|
parentToolManager: ToolManager;
|
|
39
41
|
parentMessageManager: MessageManager;
|
|
42
|
+
taskManager: import("../services/taskManager.js").TaskManager;
|
|
40
43
|
callbacks?: SubagentManagerCallbacks;
|
|
41
44
|
logger?: Logger;
|
|
42
45
|
getGatewayConfig: () => GatewayConfig;
|
|
@@ -54,6 +57,7 @@ export declare class SubagentManager {
|
|
|
54
57
|
private workdir;
|
|
55
58
|
private parentToolManager;
|
|
56
59
|
private parentMessageManager;
|
|
60
|
+
private taskManager;
|
|
57
61
|
private callbacks?;
|
|
58
62
|
private logger?;
|
|
59
63
|
private getGatewayConfig;
|
|
@@ -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,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,iBAAiB,EACjB,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,wBAAwB;IAEvC,gDAAgD;IAChD,0BAA0B,CAAC,EAAE,CAC3B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,iBAAiB,KACtB,IAAI,CAAC;IACV,wDAAwD;IACxD,+BAA+B,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,0DAA0D;IAC1D,iCAAiC,CAAC,EAAE,CAClC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;IACV,4DAA4D;IAC5D,mCAAmC,CAAC,EAAE,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;IACV,oDAAoD;IACpD,0BAA0B,CAAC,EAAE,CAC3B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,0BAA0B,KAC/B,IAAI,CAAC;IACV,8CAA8C;IAC9C,wBAAwB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export class SubagentManager {
|
|
|
9
9
|
this.workdir = options.workdir;
|
|
10
10
|
this.parentToolManager = options.parentToolManager;
|
|
11
11
|
this.parentMessageManager = options.parentMessageManager;
|
|
12
|
+
this.taskManager = options.taskManager;
|
|
12
13
|
this.callbacks = options.callbacks; // Store SubagentManagerCallbacks
|
|
13
14
|
this.logger = options.logger;
|
|
14
15
|
this.getGatewayConfig = options.getGatewayConfig;
|
|
@@ -76,6 +77,7 @@ export class SubagentManager {
|
|
|
76
77
|
const aiManager = new AIManager({
|
|
77
78
|
messageManager,
|
|
78
79
|
toolManager,
|
|
80
|
+
taskManager: this.taskManager,
|
|
79
81
|
logger: this.logger,
|
|
80
82
|
workdir: this.workdir,
|
|
81
83
|
systemPrompt: configuration.systemPrompt,
|
|
@@ -153,6 +155,7 @@ export class SubagentManager {
|
|
|
153
155
|
description: instance.configuration.description,
|
|
154
156
|
stdout: "",
|
|
155
157
|
stderr: "",
|
|
158
|
+
onStop: () => instance.aiManager.abortAIMessage(),
|
|
156
159
|
});
|
|
157
160
|
instance.backgroundTaskId = taskId;
|
|
158
161
|
// Execute in background
|
|
@@ -208,6 +211,7 @@ export class SubagentManager {
|
|
|
208
211
|
description: instance.configuration.description,
|
|
209
212
|
stdout: "",
|
|
210
213
|
stderr: "",
|
|
214
|
+
onStop: () => instance.aiManager.abortAIMessage(),
|
|
211
215
|
});
|
|
212
216
|
instance.backgroundTaskId = taskId;
|
|
213
217
|
// Update parent message manager to reflect background status
|
|
@@ -219,24 +223,19 @@ export class SubagentManager {
|
|
|
219
223
|
async internalExecute(instance, prompt, abortSignal) {
|
|
220
224
|
// Set up consolidated abort handler to prevent listener accumulation
|
|
221
225
|
let abortCleanup;
|
|
222
|
-
if
|
|
226
|
+
// Only link to parent abort signal if NOT running in background
|
|
227
|
+
if (abortSignal && !instance.backgroundTaskId) {
|
|
223
228
|
abortCleanup = addConsolidatedAbortListener(abortSignal, [
|
|
224
229
|
() => {
|
|
225
230
|
// Update status to aborted
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
status: "aborted",
|
|
231
|
-
});
|
|
232
|
-
}
|
|
231
|
+
this.updateInstanceStatus(instance.subagentId, "aborted");
|
|
232
|
+
this.parentMessageManager.updateSubagentBlock(instance.subagentId, {
|
|
233
|
+
status: "aborted",
|
|
234
|
+
});
|
|
233
235
|
},
|
|
234
236
|
() => {
|
|
235
237
|
// Abort the AI execution
|
|
236
|
-
|
|
237
|
-
if (!instance.backgroundTaskId) {
|
|
238
|
-
instance.aiManager.abortAIMessage();
|
|
239
|
-
}
|
|
238
|
+
instance.aiManager.abortAIMessage();
|
|
240
239
|
},
|
|
241
240
|
]);
|
|
242
241
|
}
|
|
@@ -276,8 +275,6 @@ export class SubagentManager {
|
|
|
276
275
|
model: resolvedModel,
|
|
277
276
|
});
|
|
278
277
|
// If we have an abort signal, race against it using utilities to prevent listener accumulation
|
|
279
|
-
// BUT: If this is a background task, we DON'T want to race against the abort signal
|
|
280
|
-
// because the abort signal (Esc) should only stop the tool watching the task, not the task itself.
|
|
281
278
|
if (abortSignal && !instance.backgroundTaskId) {
|
|
282
279
|
await Promise.race([
|
|
283
280
|
executeAI,
|
|
@@ -424,6 +421,7 @@ export class SubagentManager {
|
|
|
424
421
|
const aiManager = new AIManager({
|
|
425
422
|
messageManager,
|
|
426
423
|
toolManager,
|
|
424
|
+
taskManager: this.taskManager,
|
|
427
425
|
logger: this.logger,
|
|
428
426
|
workdir: this.workdir,
|
|
429
427
|
systemPrompt: configuration.systemPrompt,
|
|
@@ -516,6 +514,16 @@ export class SubagentManager {
|
|
|
516
514
|
sessionId: newSessionId,
|
|
517
515
|
});
|
|
518
516
|
},
|
|
517
|
+
onLatestTotalTokensChange: (tokens) => {
|
|
518
|
+
// Forward latest total tokens to parent via SubagentManager callbacks
|
|
519
|
+
if (this.callbacks?.onSubagentLatestTotalTokensChange) {
|
|
520
|
+
this.callbacks.onSubagentLatestTotalTokensChange(subagentId, tokens);
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
onFileHistoryBlockAdded: (snapshots) => {
|
|
524
|
+
// Forward file history blocks to parent MessageManager
|
|
525
|
+
this.parentMessageManager.addFileHistoryBlock(snapshots);
|
|
526
|
+
},
|
|
519
527
|
};
|
|
520
528
|
}
|
|
521
529
|
}
|
|
@@ -14,6 +14,8 @@ export interface ToolManagerOptions {
|
|
|
14
14
|
permissionManager?: PermissionManager;
|
|
15
15
|
/** Foreground task manager for backgrounding tasks */
|
|
16
16
|
foregroundTaskManager?: import("../types/processes.js").IForegroundTaskManager;
|
|
17
|
+
/** Task manager for task management */
|
|
18
|
+
taskManager?: import("../services/taskManager.js").TaskManager;
|
|
17
19
|
/** Reversion manager for file snapshots */
|
|
18
20
|
reversionManager?: ReversionManager;
|
|
19
21
|
/** Background task manager for background execution */
|
|
@@ -37,6 +39,7 @@ declare class ToolManager {
|
|
|
37
39
|
private permissionManager?;
|
|
38
40
|
private foregroundTaskManager?;
|
|
39
41
|
private reversionManager?;
|
|
42
|
+
private taskManager?;
|
|
40
43
|
private backgroundTaskManager?;
|
|
41
44
|
private permissionMode?;
|
|
42
45
|
private canUseToolCallback?;
|
|
@@ -88,6 +91,10 @@ declare class ToolManager {
|
|
|
88
91
|
execute(name: string, args: Record<string, unknown>, context: ToolContext): Promise<ToolResult>;
|
|
89
92
|
list(): ToolPlugin[];
|
|
90
93
|
getToolsConfig(): ChatCompletionFunctionTool[];
|
|
94
|
+
/**
|
|
95
|
+
* Get the list of registered tool plugins
|
|
96
|
+
*/
|
|
97
|
+
getTools(): ToolPlugin[];
|
|
91
98
|
/**
|
|
92
99
|
* Get the current permission mode
|
|
93
100
|
*/
|
|
@@ -101,6 +108,10 @@ declare class ToolManager {
|
|
|
101
108
|
* Get the permission manager
|
|
102
109
|
*/
|
|
103
110
|
getPermissionManager(): PermissionManager | undefined;
|
|
111
|
+
/**
|
|
112
|
+
* Get the task manager
|
|
113
|
+
*/
|
|
114
|
+
getTaskManager(): import("../services/taskManager.js").TaskManager | undefined;
|
|
104
115
|
}
|
|
105
116
|
export { ToolManager };
|
|
106
117
|
//# sourceMappingURL=toolManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolManager.d.ts","sourceRoot":"","sources":["../../src/managers/toolManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"toolManager.d.ts","sourceRoot":"","sources":["../../src/managers/toolManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAwB7E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,sDAAsD;IACtD,qBAAqB,CAAC,EAAE,OAAO,uBAAuB,EAAE,sBAAsB,CAAC;IAC/E,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,4BAA4B,EAAE,WAAW,CAAC;IAC/D,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,uDAAuD;IACvD,qBAAqB,CAAC,EAAE,OAAO,4BAA4B,EAAE,qBAAqB,CAAC;IACnF,iEAAiE;IACjE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED;;;;;GAKG;AACH,cAAM,WAAW;IACf,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,qBAAqB,CAAC,CAAyD;IACvF,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,WAAW,CAAC,CAAmD;IACvE,OAAO,CAAC,qBAAqB,CAAC,CAA6D;IAC3F,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,kBAAkB,CAAC,CAAqB;gBAEpC,OAAO,EAAE,kBAAkB;IAcvC;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAIvC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,sBAAsB,CAAC,IAAI,CAAC,EAAE;QACnC,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B,GAAG,IAAI;IAsCR;;;;;;;;;;;;OAYG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAgEtB,IAAI,IAAI,UAAU,EAAE;IAMpB,cAAc,IAAI,0BAA0B,EAAE;IAmB9C;;OAEG;IACI,QAAQ,IAAI,UAAU,EAAE;IAI/B;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAS1C;;;OAGG;IACI,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAIpD;;OAEG;IACI,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;IAI5D;;OAEG;IACI,cAAc,IACjB,OAAO,4BAA4B,EAAE,WAAW,GAChD,SAAS;CAGd;AAGD,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -12,10 +12,10 @@ import { globTool } from "../tools/globTool.js";
|
|
|
12
12
|
import { grepTool } from "../tools/grepTool.js";
|
|
13
13
|
import { lsTool } from "../tools/lsTool.js";
|
|
14
14
|
import { readTool } from "../tools/readTool.js";
|
|
15
|
-
import { todoWriteTool } from "../tools/todoWriteTool.js";
|
|
16
15
|
import { lspTool } from "../tools/lspTool.js";
|
|
17
16
|
import { createTaskTool } from "../tools/taskTool.js";
|
|
18
17
|
import { createSkillTool } from "../tools/skillTool.js";
|
|
18
|
+
import { taskCreateTool, taskGetTool, taskUpdateTool, taskListTool, } from "../tools/taskManagementTools.js";
|
|
19
19
|
/**
|
|
20
20
|
* Tool Manager
|
|
21
21
|
*
|
|
@@ -29,6 +29,7 @@ class ToolManager {
|
|
|
29
29
|
this.lspManager = options.lspManager;
|
|
30
30
|
this.logger = options.logger;
|
|
31
31
|
this.permissionManager = options.permissionManager;
|
|
32
|
+
this.taskManager = options.taskManager;
|
|
32
33
|
this.foregroundTaskManager = options.foregroundTaskManager;
|
|
33
34
|
this.reversionManager = options.reversionManager;
|
|
34
35
|
this.backgroundTaskManager = options.backgroundTaskManager;
|
|
@@ -80,8 +81,11 @@ class ToolManager {
|
|
|
80
81
|
grepTool,
|
|
81
82
|
lsTool,
|
|
82
83
|
readTool,
|
|
83
|
-
todoWriteTool,
|
|
84
84
|
lspTool,
|
|
85
|
+
taskCreateTool,
|
|
86
|
+
taskGetTool,
|
|
87
|
+
taskUpdateTool,
|
|
88
|
+
taskListTool,
|
|
85
89
|
];
|
|
86
90
|
for (const tool of builtInTools) {
|
|
87
91
|
this.tools.set(tool.name, tool);
|
|
@@ -120,11 +124,13 @@ class ToolManager {
|
|
|
120
124
|
permissionMode: effectivePermissionMode,
|
|
121
125
|
canUseToolCallback: this.canUseToolCallback,
|
|
122
126
|
permissionManager: this.permissionManager,
|
|
127
|
+
taskManager: this.taskManager,
|
|
123
128
|
reversionManager: this.reversionManager,
|
|
124
129
|
backgroundTaskManager: this.backgroundTaskManager,
|
|
125
130
|
foregroundTaskManager: this.foregroundTaskManager,
|
|
126
131
|
mcpManager: this.mcpManager,
|
|
127
132
|
lspManager: this.lspManager,
|
|
133
|
+
sessionId: context.sessionId,
|
|
128
134
|
};
|
|
129
135
|
this.logger?.debug("Executing tool with enhanced context", {
|
|
130
136
|
toolName: name,
|
|
@@ -185,6 +191,12 @@ class ToolManager {
|
|
|
185
191
|
const mcpToolsConfig = this.mcpManager.getMcpToolsConfig();
|
|
186
192
|
return [...builtInToolsConfig, ...mcpToolsConfig];
|
|
187
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* Get the list of registered tool plugins
|
|
196
|
+
*/
|
|
197
|
+
getTools() {
|
|
198
|
+
return Array.from(this.tools.values());
|
|
199
|
+
}
|
|
188
200
|
/**
|
|
189
201
|
* Get the current permission mode
|
|
190
202
|
*/
|
|
@@ -207,6 +219,12 @@ class ToolManager {
|
|
|
207
219
|
getPermissionManager() {
|
|
208
220
|
return this.permissionManager;
|
|
209
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Get the task manager
|
|
224
|
+
*/
|
|
225
|
+
getTaskManager() {
|
|
226
|
+
return this.taskManager;
|
|
227
|
+
}
|
|
210
228
|
}
|
|
211
229
|
// Export tool registry class and types
|
|
212
230
|
export { ToolManager };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiService.d.ts","sourceRoot":"","sources":["../../src/services/aiService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAGL,0BAA0B,EAC1B,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"aiService.d.ts","sourceRoot":"","sources":["../../src/services/aiService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAGL,0BAA0B,EAC1B,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AA+FvC,MAAM,WAAW,gBAAgB;IAE/B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAGzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;QACxB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;KACnD,KAAK,IAAI,CAAC;IACX,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EACV,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,eAAe,GACf,IAAI,CAAC;IACT,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CA+S1B;AA4OD,MAAM,WAAW,uBAAuB;IAEtC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAGzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAmEjC"}
|