wave-agent-sdk 0.13.1 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +7 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +37 -0
- 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.map +1 -1
- package/dist/managers/aiManager.js +65 -33
- package/dist/managers/backgroundTaskManager.d.ts +1 -0
- package/dist/managers/backgroundTaskManager.d.ts.map +1 -1
- package/dist/managers/backgroundTaskManager.js +49 -0
- package/dist/managers/forkedAgentManager.d.ts +49 -0
- package/dist/managers/forkedAgentManager.d.ts.map +1 -0
- package/dist/managers/forkedAgentManager.js +111 -0
- package/dist/managers/messageManager.d.ts +8 -1
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +14 -1
- package/dist/managers/notificationQueue.d.ts +8 -0
- package/dist/managers/notificationQueue.d.ts.map +1 -0
- package/dist/managers/notificationQueue.js +17 -0
- package/dist/managers/permissionManager.d.ts.map +1 -1
- package/dist/managers/permissionManager.js +2 -0
- package/dist/managers/subagentManager.d.ts +7 -9
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +101 -21
- package/dist/services/autoMemoryService.d.ts +1 -1
- package/dist/services/autoMemoryService.d.ts.map +1 -1
- package/dist/services/autoMemoryService.js +7 -8
- package/dist/services/interactionService.d.ts.map +1 -1
- package/dist/services/interactionService.js +12 -0
- package/dist/types/agent.d.ts +1 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/messaging.d.ts +9 -1
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/utils/containerSetup.d.ts.map +1 -1
- package/dist/utils/containerSetup.js +6 -0
- package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
- package/dist/utils/convertMessagesForAPI.js +8 -0
- package/dist/utils/messageOperations.d.ts +9 -0
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/messageOperations.js +17 -0
- package/dist/utils/notificationXml.d.ts +4 -0
- package/dist/utils/notificationXml.d.ts.map +1 -0
- package/dist/utils/notificationXml.js +40 -0
- package/dist/utils/pathEncoder.d.ts +0 -1
- package/dist/utils/pathEncoder.d.ts.map +1 -1
- package/dist/utils/pathEncoder.js +1 -5
- package/package.json +1 -1
- package/src/agent.ts +44 -0
- package/src/index.ts +1 -0
- package/src/managers/aiManager.ts +76 -41
- package/src/managers/backgroundTaskManager.ts +72 -1
- package/src/managers/forkedAgentManager.ts +193 -0
- package/src/managers/messageManager.ts +25 -0
- package/src/managers/notificationQueue.ts +19 -0
- package/src/managers/permissionManager.ts +2 -0
- package/src/managers/subagentManager.ts +135 -41
- package/src/services/autoMemoryService.ts +11 -17
- package/src/services/interactionService.ts +18 -0
- package/src/types/agent.ts +1 -0
- package/src/types/messaging.ts +11 -1
- package/src/utils/containerSetup.ts +8 -0
- package/src/utils/convertMessagesForAPI.ts +9 -0
- package/src/utils/messageOperations.ts +42 -1
- package/src/utils/notificationXml.ts +52 -0
- package/src/utils/pathEncoder.ts +1 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addAssistantMessageToMessages, updateToolBlockInMessage, addErrorBlockToMessage, addUserMessageToMessages, updateUserMessageInMessages, addBangMessage, updateBangInMessage, completeBangInMessage, removeLastUserMessage, addToolBlockToMessageInMessages, generateMessageId, } from "../utils/messageOperations.js";
|
|
1
|
+
import { addAssistantMessageToMessages, updateToolBlockInMessage, addErrorBlockToMessage, addUserMessageToMessages, updateUserMessageInMessages, addBangMessage, updateBangInMessage, completeBangInMessage, removeLastUserMessage, addToolBlockToMessageInMessages, addNotificationMessageToMessages, generateMessageId, } from "../utils/messageOperations.js";
|
|
2
2
|
import { join, isAbsolute, relative } from "path";
|
|
3
3
|
import { appendMessages, createSession, generateSessionId, SESSION_DIR, } from "../services/session.js";
|
|
4
4
|
import { pathEncoder } from "../utils/pathEncoder.js";
|
|
@@ -398,6 +398,19 @@ export class MessageManager {
|
|
|
398
398
|
this.setMessages(updatedMessages);
|
|
399
399
|
this.callbacks.onCompleteBangMessage?.(command, exitCode);
|
|
400
400
|
}
|
|
401
|
+
addNotificationMessage(params) {
|
|
402
|
+
const newMessages = addNotificationMessageToMessages({
|
|
403
|
+
messages: this.messages,
|
|
404
|
+
...params,
|
|
405
|
+
});
|
|
406
|
+
this.setMessages(newMessages);
|
|
407
|
+
this.callbacks.onNotificationMessageAdded?.({
|
|
408
|
+
taskId: params.taskId,
|
|
409
|
+
taskType: params.taskType,
|
|
410
|
+
status: params.status,
|
|
411
|
+
summary: params.summary,
|
|
412
|
+
});
|
|
413
|
+
}
|
|
401
414
|
/**
|
|
402
415
|
* Rebuild usage array from messages containing usage metadata
|
|
403
416
|
* Called during session restoration to reconstruct usage tracking
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationQueue.d.ts","sourceRoot":"","sources":["../../src/managers/notificationQueue.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAgB;IAC7B,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IAErC,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAKnC,UAAU,IAAI,MAAM,EAAE;IAMtB,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class NotificationQueue {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.queue = [];
|
|
4
|
+
}
|
|
5
|
+
enqueue(notification) {
|
|
6
|
+
this.queue.push(notification);
|
|
7
|
+
this.onNotificationsEnqueued?.();
|
|
8
|
+
}
|
|
9
|
+
dequeueAll() {
|
|
10
|
+
const items = [...this.queue];
|
|
11
|
+
this.queue = [];
|
|
12
|
+
return items;
|
|
13
|
+
}
|
|
14
|
+
hasPending() {
|
|
15
|
+
return this.queue.length > 0;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -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;AAkBhD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ const SAFE_COMMANDS = [
|
|
|
25
25
|
"wc",
|
|
26
26
|
"sleep",
|
|
27
27
|
"find",
|
|
28
|
+
"sort",
|
|
28
29
|
];
|
|
29
30
|
const DEFAULT_ALLOWED_RULES = [
|
|
30
31
|
"Bash(git status*)",
|
|
@@ -670,6 +671,7 @@ export class PermissionManager {
|
|
|
670
671
|
cmd === "tail" ||
|
|
671
672
|
cmd === "wc" ||
|
|
672
673
|
cmd === "sleep" ||
|
|
674
|
+
cmd === "sort" ||
|
|
673
675
|
(cmd === "find" && !isDangerousFind(part))) {
|
|
674
676
|
return true;
|
|
675
677
|
}
|
|
@@ -6,6 +6,7 @@ import { MessageManager } from "./messageManager.js";
|
|
|
6
6
|
import { ToolManager } from "./toolManager.js";
|
|
7
7
|
import { UserMessageParams, type AgentToolBlockUpdateParams } from "../utils/messageOperations.js";
|
|
8
8
|
import { Container } from "../utils/container.js";
|
|
9
|
+
import type { PermissionMode } from "../types/permissions.js";
|
|
9
10
|
export interface SubagentManagerCallbacks {
|
|
10
11
|
/** Triggered when subagent adds user message */
|
|
11
12
|
onSubagentUserMessageAdded?: (subagentId: string, params: UserMessageParams) => void;
|
|
@@ -47,6 +48,7 @@ export interface SubagentManagerOptions {
|
|
|
47
48
|
}
|
|
48
49
|
export declare class SubagentManager {
|
|
49
50
|
private instances;
|
|
51
|
+
private subagentPermissionManagers;
|
|
50
52
|
private cachedConfigurations;
|
|
51
53
|
private workdir;
|
|
52
54
|
private callbacks?;
|
|
@@ -59,6 +61,10 @@ export declare class SubagentManager {
|
|
|
59
61
|
* Initialize the SubagentManager by loading and caching configurations
|
|
60
62
|
*/
|
|
61
63
|
initialize(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Sync parent permission rules to all running subagents
|
|
66
|
+
*/
|
|
67
|
+
private syncPermissionRulesToSubagents;
|
|
62
68
|
/**
|
|
63
69
|
* Load all available subagent configurations and cache them
|
|
64
70
|
*/
|
|
@@ -81,16 +87,8 @@ export declare class SubagentManager {
|
|
|
81
87
|
allowedTools?: string[];
|
|
82
88
|
model?: string;
|
|
83
89
|
stream?: boolean;
|
|
90
|
+
permissionModeOverride?: PermissionMode;
|
|
84
91
|
}, runInBackground?: boolean, onUpdate?: () => void): Promise<SubagentInstance>;
|
|
85
|
-
/**
|
|
86
|
-
* Create a new subagent instance initialized with a copy of the current message history.
|
|
87
|
-
* This is used for background tasks like auto-memory extraction.
|
|
88
|
-
*/
|
|
89
|
-
forkAgent(subagentType: string, messages: Message[], parameters: {
|
|
90
|
-
description: string;
|
|
91
|
-
allowedTools?: string[];
|
|
92
|
-
model?: string;
|
|
93
|
-
}, onUpdate?: () => void): Promise<SubagentInstance>;
|
|
94
92
|
/**
|
|
95
93
|
* Execute agent using subagent instance
|
|
96
94
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,13 @@ import { MessageManager } from "./messageManager.js";
|
|
|
7
7
|
import { ToolManager } from "./toolManager.js";
|
|
8
8
|
import { AGENT_TOOL_NAME } from "../constants/tools.js";
|
|
9
9
|
import { addConsolidatedAbortListener, createAbortPromise, } from "../utils/abortUtils.js";
|
|
10
|
+
import { BackgroundTaskManager } from "./backgroundTaskManager.js";
|
|
11
|
+
import { NotificationQueue } from "./notificationQueue.js";
|
|
10
12
|
import { logger } from "../utils/globalLogger.js";
|
|
11
13
|
export class SubagentManager {
|
|
12
14
|
constructor(container, options) {
|
|
13
15
|
this.instances = new Map();
|
|
16
|
+
this.subagentPermissionManagers = new Map();
|
|
14
17
|
this.cachedConfigurations = null;
|
|
15
18
|
this.container = container;
|
|
16
19
|
this.workdir = options.workdir;
|
|
@@ -26,6 +29,41 @@ export class SubagentManager {
|
|
|
26
29
|
*/
|
|
27
30
|
async initialize() {
|
|
28
31
|
await this.loadConfigurations();
|
|
32
|
+
// Hook into parent PermissionManager's update methods to propagate rules to subagents
|
|
33
|
+
const parentPm = this.container.get("PermissionManager");
|
|
34
|
+
if (parentPm &&
|
|
35
|
+
typeof parentPm.updateAllowedRules === "function" &&
|
|
36
|
+
typeof parentPm.updateDeniedRules === "function" &&
|
|
37
|
+
typeof parentPm.updateAdditionalDirectories === "function") {
|
|
38
|
+
const origUpdateAllowed = parentPm.updateAllowedRules.bind(parentPm);
|
|
39
|
+
const origUpdateDenied = parentPm.updateDeniedRules.bind(parentPm);
|
|
40
|
+
const origUpdateDirs = parentPm.updateAdditionalDirectories.bind(parentPm);
|
|
41
|
+
parentPm.updateAllowedRules = (rules) => {
|
|
42
|
+
origUpdateAllowed(rules);
|
|
43
|
+
this.syncPermissionRulesToSubagents();
|
|
44
|
+
};
|
|
45
|
+
parentPm.updateDeniedRules = (rules) => {
|
|
46
|
+
origUpdateDenied(rules);
|
|
47
|
+
this.syncPermissionRulesToSubagents();
|
|
48
|
+
};
|
|
49
|
+
parentPm.updateAdditionalDirectories = (directories) => {
|
|
50
|
+
origUpdateDirs(directories);
|
|
51
|
+
this.syncPermissionRulesToSubagents();
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Sync parent permission rules to all running subagents
|
|
57
|
+
*/
|
|
58
|
+
syncPermissionRulesToSubagents() {
|
|
59
|
+
const parentPm = this.container.get("PermissionManager");
|
|
60
|
+
if (!parentPm)
|
|
61
|
+
return;
|
|
62
|
+
for (const [, pm] of this.subagentPermissionManagers) {
|
|
63
|
+
pm.updateAllowedRules(parentPm.getAllowedRules());
|
|
64
|
+
pm.updateDeniedRules(parentPm.getDeniedRules());
|
|
65
|
+
pm.updateAdditionalDirectories(parentPm.getAdditionalDirectories());
|
|
66
|
+
}
|
|
29
67
|
}
|
|
30
68
|
/**
|
|
31
69
|
* Load all available subagent configurations and cache them
|
|
@@ -64,12 +102,26 @@ export class SubagentManager {
|
|
|
64
102
|
const subagentId = randomUUID();
|
|
65
103
|
// Create a child container for the subagent to isolate its managers
|
|
66
104
|
const subagentContainer = this.container.createChild();
|
|
105
|
+
// Register a modified AgentOptions without onLoadingChange to prevent subagent loading
|
|
106
|
+
// from affecting the parent agent's loading state
|
|
107
|
+
const parentOptions = this.container.get("AgentOptions");
|
|
108
|
+
if (parentOptions) {
|
|
109
|
+
const subagentOptions = {
|
|
110
|
+
...parentOptions,
|
|
111
|
+
callbacks: {
|
|
112
|
+
...parentOptions.callbacks,
|
|
113
|
+
onLoadingChange: undefined,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
subagentContainer.register("AgentOptions", subagentOptions);
|
|
117
|
+
}
|
|
67
118
|
// Create isolated PermissionManager for the subagent
|
|
68
119
|
const { PermissionManager } = await import("./permissionManager.js");
|
|
69
120
|
const parentPermissionManager = this.container.get("PermissionManager");
|
|
70
121
|
const subagentPermissionManager = new PermissionManager(subagentContainer, {
|
|
71
122
|
workdir: this.workdir,
|
|
72
|
-
configuredPermissionMode:
|
|
123
|
+
configuredPermissionMode: parameters.permissionModeOverride ??
|
|
124
|
+
parentPermissionManager?.getConfiguredPermissionMode(),
|
|
73
125
|
allowedRules: parentPermissionManager?.getAllowedRules(),
|
|
74
126
|
deniedRules: parentPermissionManager?.getDeniedRules(),
|
|
75
127
|
instanceAllowedRules: parentPermissionManager?.getInstanceAllowedRules?.(),
|
|
@@ -82,6 +134,8 @@ export class SubagentManager {
|
|
|
82
134
|
planFilePath: parentPermissionManager?.getPlanFilePath(),
|
|
83
135
|
});
|
|
84
136
|
subagentContainer.register("PermissionManager", subagentPermissionManager);
|
|
137
|
+
// Track this subagent's PermissionManager for rule sync
|
|
138
|
+
this.subagentPermissionManagers.set(subagentId, subagentPermissionManager);
|
|
85
139
|
// Add temporary permission rules if provided
|
|
86
140
|
if (parameters.allowedTools) {
|
|
87
141
|
logger.debug(`Adding ${parameters.allowedTools.length} temporary permission rules to subagent ${subagentId}`, { rules: parameters.allowedTools });
|
|
@@ -115,6 +169,14 @@ export class SubagentManager {
|
|
|
115
169
|
},
|
|
116
170
|
});
|
|
117
171
|
subagentContainer.register("AIManager", aiManager);
|
|
172
|
+
// Create isolated NotificationQueue for the subagent/forked agent
|
|
173
|
+
const subagentNotificationQueue = new NotificationQueue();
|
|
174
|
+
subagentContainer.register("NotificationQueue", subagentNotificationQueue);
|
|
175
|
+
// Create isolated BackgroundTaskManager for the subagent/forked agent
|
|
176
|
+
const subagentBackgroundTaskManager = new BackgroundTaskManager(subagentContainer, {
|
|
177
|
+
workdir: this.workdir,
|
|
178
|
+
});
|
|
179
|
+
subagentContainer.register("BackgroundTaskManager", subagentBackgroundTaskManager);
|
|
118
180
|
const instance = {
|
|
119
181
|
subagentId,
|
|
120
182
|
configuration,
|
|
@@ -133,24 +195,6 @@ export class SubagentManager {
|
|
|
133
195
|
this.instances.set(subagentId, instance);
|
|
134
196
|
return instance;
|
|
135
197
|
}
|
|
136
|
-
/**
|
|
137
|
-
* Create a new subagent instance initialized with a copy of the current message history.
|
|
138
|
-
* This is used for background tasks like auto-memory extraction.
|
|
139
|
-
*/
|
|
140
|
-
async forkAgent(subagentType, messages, parameters, onUpdate) {
|
|
141
|
-
const configuration = await this.findSubagent(subagentType);
|
|
142
|
-
if (!configuration) {
|
|
143
|
-
throw new Error(`Subagent type ${subagentType} not found`);
|
|
144
|
-
}
|
|
145
|
-
const instance = await this.createInstance(configuration, {
|
|
146
|
-
...parameters,
|
|
147
|
-
subagent_type: subagentType,
|
|
148
|
-
prompt: "", // Forked agents start with history
|
|
149
|
-
}, false, onUpdate);
|
|
150
|
-
// Initialize the message manager with provided messages
|
|
151
|
-
instance.messageManager.setMessages(messages);
|
|
152
|
-
return instance;
|
|
153
|
-
}
|
|
154
198
|
/**
|
|
155
199
|
* Execute agent using subagent instance
|
|
156
200
|
*
|
|
@@ -204,6 +248,14 @@ export class SubagentManager {
|
|
|
204
248
|
task.endTime = Date.now();
|
|
205
249
|
task.runtime = task.endTime - startTime;
|
|
206
250
|
}
|
|
251
|
+
// Enqueue completion notification
|
|
252
|
+
const notificationQueue = this.container.has("NotificationQueue")
|
|
253
|
+
? this.container.get("NotificationQueue")
|
|
254
|
+
: undefined;
|
|
255
|
+
if (notificationQueue) {
|
|
256
|
+
const summary = `Agent task "${instance.description}" completed`;
|
|
257
|
+
notificationQueue.enqueue(`<task-notification>\n<task-id>${taskId}</task-id>\n<task-type>agent</task-type>\n<status>completed</status>\n<summary>${summary}</summary>\n</task-notification>`);
|
|
258
|
+
}
|
|
207
259
|
}
|
|
208
260
|
catch (error) {
|
|
209
261
|
const task = backgroundTaskManager?.getTask(taskId);
|
|
@@ -214,6 +266,15 @@ export class SubagentManager {
|
|
|
214
266
|
task.endTime = Date.now();
|
|
215
267
|
task.runtime = task.endTime - startTime;
|
|
216
268
|
}
|
|
269
|
+
// Enqueue error notification
|
|
270
|
+
const notificationQueue = this.container.has("NotificationQueue")
|
|
271
|
+
? this.container.get("NotificationQueue")
|
|
272
|
+
: undefined;
|
|
273
|
+
if (notificationQueue) {
|
|
274
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
275
|
+
const summary = `Agent task "${instance.description}" failed: ${errorMsg}`;
|
|
276
|
+
notificationQueue.enqueue(`<task-notification>\n<task-id>${taskId}</task-id>\n<task-type>agent</task-type>\n<status>failed</status>\n<summary>${summary}</summary>\n</task-notification>`);
|
|
277
|
+
}
|
|
217
278
|
}
|
|
218
279
|
})();
|
|
219
280
|
return taskId;
|
|
@@ -329,6 +390,14 @@ export class SubagentManager {
|
|
|
329
390
|
task.runtime = task.endTime - task.startTime;
|
|
330
391
|
}
|
|
331
392
|
}
|
|
393
|
+
// Enqueue completion notification
|
|
394
|
+
const notificationQueue = this.container.has("NotificationQueue")
|
|
395
|
+
? this.container.get("NotificationQueue")
|
|
396
|
+
: undefined;
|
|
397
|
+
if (notificationQueue) {
|
|
398
|
+
const summary = `Agent task "${instance.description}" completed`;
|
|
399
|
+
notificationQueue.enqueue(`<task-notification>\n<task-id>${instance.backgroundTaskId}</task-id>\n<task-type>agent</task-type>\n<status>completed</status>\n<summary>${summary}</summary>\n</task-notification>`);
|
|
400
|
+
}
|
|
332
401
|
}
|
|
333
402
|
return response || "Agent completed with no text response";
|
|
334
403
|
}
|
|
@@ -350,6 +419,15 @@ export class SubagentManager {
|
|
|
350
419
|
task.runtime = task.endTime - task.startTime;
|
|
351
420
|
}
|
|
352
421
|
}
|
|
422
|
+
// Enqueue error notification
|
|
423
|
+
const notificationQueue = this.container.has("NotificationQueue")
|
|
424
|
+
? this.container.get("NotificationQueue")
|
|
425
|
+
: undefined;
|
|
426
|
+
if (notificationQueue) {
|
|
427
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
428
|
+
const summary = `Agent task "${instance.description}" failed: ${errorMsg}`;
|
|
429
|
+
notificationQueue.enqueue(`<task-notification>\n<task-id>${instance.backgroundTaskId}</task-id>\n<task-type>agent</task-type>\n<status>failed</status>\n<summary>${summary}</summary>\n</task-notification>`);
|
|
430
|
+
}
|
|
353
431
|
}
|
|
354
432
|
throw error;
|
|
355
433
|
}
|
|
@@ -394,6 +472,7 @@ export class SubagentManager {
|
|
|
394
472
|
instance.status === "error" ||
|
|
395
473
|
instance.status === "aborted")) {
|
|
396
474
|
this.instances.delete(subagentId);
|
|
475
|
+
this.subagentPermissionManagers.delete(subagentId);
|
|
397
476
|
}
|
|
398
477
|
}
|
|
399
478
|
/**
|
|
@@ -452,8 +531,9 @@ export class SubagentManager {
|
|
|
452
531
|
instance.onUpdate?.();
|
|
453
532
|
// Log tool execution to file
|
|
454
533
|
if (instance.logStream) {
|
|
455
|
-
const
|
|
456
|
-
|
|
534
|
+
const displayParams = params.compactParams ||
|
|
535
|
+
(params.parameters || "{}").substring(0, 100);
|
|
536
|
+
instance.logStream.write(`[${new Date().toISOString()}] ${params.name}${displayParams ? ` ${displayParams}` : ""}\n`);
|
|
457
537
|
}
|
|
458
538
|
}
|
|
459
539
|
}
|
|
@@ -9,7 +9,7 @@ export declare class AutoMemoryService {
|
|
|
9
9
|
private turnsSinceLastExtraction;
|
|
10
10
|
constructor(container: Container);
|
|
11
11
|
private get messageManager();
|
|
12
|
-
private get
|
|
12
|
+
private get forkedAgentManager();
|
|
13
13
|
private get memoryService();
|
|
14
14
|
private get configurationService();
|
|
15
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoMemoryService.d.ts","sourceRoot":"","sources":["../../src/services/autoMemoryService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAUlD;;;GAGG;AACH,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,wBAAwB,CAAa;gBAEzB,SAAS,EAAE,SAAS;IAExC,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"autoMemoryService.d.ts","sourceRoot":"","sources":["../../src/services/autoMemoryService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAUlD;;;GAGG;AACH,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,wBAAwB,CAAa;gBAEzB,SAAS,EAAE,SAAS;IAExC,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqE/C;;OAEG;YACW,aAAa;CA0D5B"}
|
|
@@ -16,8 +16,8 @@ export class AutoMemoryService {
|
|
|
16
16
|
get messageManager() {
|
|
17
17
|
return this.container.get("MessageManager");
|
|
18
18
|
}
|
|
19
|
-
get
|
|
20
|
-
return this.container.get("
|
|
19
|
+
get forkedAgentManager() {
|
|
20
|
+
return this.container.get("ForkedAgentManager");
|
|
21
21
|
}
|
|
22
22
|
get memoryService() {
|
|
23
23
|
return this.container.get("MemoryService");
|
|
@@ -114,8 +114,9 @@ export class AutoMemoryService {
|
|
|
114
114
|
newMessageCount = messages.length - 1 - lastIndex;
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
const prompt = buildAutoMemoryExtractionPrompt(newMessageCount, existingMemoriesManifest);
|
|
118
|
+
// Execute the forked agent in background (fire-and-forget, decoupled from BackgroundTaskManager)
|
|
119
|
+
await this.forkedAgentManager.forkAndExecute("general-purpose", messages, {
|
|
119
120
|
description: "Auto-memory extraction background agent",
|
|
120
121
|
allowedTools: [
|
|
121
122
|
"Read",
|
|
@@ -125,10 +126,8 @@ export class AutoMemoryService {
|
|
|
125
126
|
`Edit(${memoryDir}/**/*)`,
|
|
126
127
|
],
|
|
127
128
|
model: "fastModel", // Use fast model for background tasks to reduce latency and cost
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
// Execute in background so it doesn't block the main conversation flow
|
|
131
|
-
await this.subagentManager.executeAgent(instance, `${prompt}\n\nThe memory directory for this project is: ${memoryDir}`, undefined, true);
|
|
129
|
+
permissionModeOverride: "dontAsk", // Auto-deny out-of-scope writes without prompting user
|
|
130
|
+
}, `${prompt}\n\nThe memory directory for this project is: ${memoryDir}`);
|
|
132
131
|
logger.debug("Auto-memory extraction started in background.");
|
|
133
132
|
}
|
|
134
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionService.d.ts","sourceRoot":"","sources":["../../src/services/interactionService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"interactionService.d.ts","sourceRoot":"","sources":["../../src/services/interactionService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,qBAAa,kBAAkB;WACT,WAAW,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GACjD,OAAO,CAAC,IAAI,CAAC;WA2GI,cAAc,CAChC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAiDjB"}
|
|
@@ -18,6 +18,18 @@ export class InteractionService {
|
|
|
18
18
|
// If command doesn't exist, continue as normal message processing
|
|
19
19
|
// Don't add to history, let normal message processing logic below handle it
|
|
20
20
|
}
|
|
21
|
+
// Inject pending notifications from background tasks
|
|
22
|
+
const notificationQueue = context.aiManager["container"].has("NotificationQueue")
|
|
23
|
+
? context.aiManager["container"].get("NotificationQueue")
|
|
24
|
+
: undefined;
|
|
25
|
+
if (notificationQueue && notificationQueue.hasPending()) {
|
|
26
|
+
const notifications = notificationQueue.dequeueAll();
|
|
27
|
+
for (const notification of notifications) {
|
|
28
|
+
messageManager.addUserMessage({
|
|
29
|
+
content: notification,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
21
33
|
// Handle normal AI message
|
|
22
34
|
// Add user message first, will automatically sync to UI
|
|
23
35
|
messageManager.addUserMessage({
|
package/dist/types/agent.d.ts
CHANGED
|
@@ -75,5 +75,6 @@ export interface AgentCallbacks extends MessageManagerCallbacks, BackgroundTaskM
|
|
|
75
75
|
onBackgroundCurrentTask?: () => void;
|
|
76
76
|
onModelChange?: (model: string) => void;
|
|
77
77
|
onConfiguredModelsChange?: (models: string[]) => void;
|
|
78
|
+
onLoadingChange?: (loading: boolean) => void;
|
|
78
79
|
}
|
|
79
80
|
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export interface Message {
|
|
|
15
15
|
additionalFields?: Record<string, unknown>;
|
|
16
16
|
isMeta?: boolean;
|
|
17
17
|
}
|
|
18
|
-
export type MessageBlock = TextBlock | ErrorBlock | ToolBlock | ImageBlock | BangBlock | CompressBlock | ReasoningBlock | FileHistoryBlock;
|
|
18
|
+
export type MessageBlock = TextBlock | ErrorBlock | ToolBlock | ImageBlock | BangBlock | CompressBlock | ReasoningBlock | FileHistoryBlock | TaskNotificationBlock;
|
|
19
19
|
export interface TextBlock {
|
|
20
20
|
type: "text";
|
|
21
21
|
content: string;
|
|
@@ -78,4 +78,12 @@ export interface FileHistoryBlock {
|
|
|
78
78
|
type: "file_history";
|
|
79
79
|
snapshots: import("./reversion.js").FileSnapshot[];
|
|
80
80
|
}
|
|
81
|
+
export interface TaskNotificationBlock {
|
|
82
|
+
type: "task_notification";
|
|
83
|
+
taskId: string;
|
|
84
|
+
taskType: "shell" | "agent";
|
|
85
|
+
status: "completed" | "failed" | "killed";
|
|
86
|
+
summary: string;
|
|
87
|
+
outputFile?: string;
|
|
88
|
+
}
|
|
81
89
|
//# sourceMappingURL=messaging.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/types/messaging.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,aAAa,GACb,cAAc,GACd,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/types/messaging.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerSetup.d.ts","sourceRoot":"","sources":["../../src/utils/containerSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"containerSetup.d.ts","sourceRoot":"","sources":["../../src/utils/containerSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAuB3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAM3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,IAAI,EACJ,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAGhB,uBAAuB,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAC3D,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACvC,sBAAsB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACvD,wBAAwB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzD,iBAAiB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,0BAA0B,GACvC,SAAS,CAoQX"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Container } from "./container.js";
|
|
2
2
|
import { ForegroundTaskManager } from "../managers/foregroundTaskManager.js";
|
|
3
3
|
import { BackgroundTaskManager } from "../managers/backgroundTaskManager.js";
|
|
4
|
+
import { NotificationQueue } from "../managers/notificationQueue.js";
|
|
4
5
|
import { TaskManager } from "../services/taskManager.js";
|
|
5
6
|
import { MessageManager } from "../managers/messageManager.js";
|
|
6
7
|
import { AIManager } from "../managers/aiManager.js";
|
|
@@ -18,6 +19,7 @@ import { CronManager } from "../managers/cronManager.js";
|
|
|
18
19
|
import { MemoryRuleManager } from "../managers/MemoryRuleManager.js";
|
|
19
20
|
import { ReversionManager } from "../managers/reversionManager.js";
|
|
20
21
|
import { SubagentManager } from "../managers/subagentManager.js";
|
|
22
|
+
import { ForkedAgentManager } from "../managers/forkedAgentManager.js";
|
|
21
23
|
import { LiveConfigManager } from "../managers/liveConfigManager.js";
|
|
22
24
|
import { ReversionService } from "../services/reversionService.js";
|
|
23
25
|
import { MemoryService } from "../services/memory.js";
|
|
@@ -30,6 +32,8 @@ export function setupAgentContainer(setupOptions) {
|
|
|
30
32
|
const callbacks = options.callbacks || {};
|
|
31
33
|
const container = new Container();
|
|
32
34
|
container.register("AgentOptions", options);
|
|
35
|
+
const notificationQueue = new NotificationQueue();
|
|
36
|
+
container.register("NotificationQueue", notificationQueue);
|
|
33
37
|
const foregroundTaskManager = new ForegroundTaskManager(container);
|
|
34
38
|
container.register("ForegroundTaskManager", foregroundTaskManager);
|
|
35
39
|
container.register("ConfigurationService", configurationService);
|
|
@@ -197,6 +201,8 @@ export function setupAgentContainer(setupOptions) {
|
|
|
197
201
|
stream,
|
|
198
202
|
});
|
|
199
203
|
container.register("SubagentManager", subagentManager);
|
|
204
|
+
const forkedAgentManager = new ForkedAgentManager(container);
|
|
205
|
+
container.register("ForkedAgentManager", forkedAgentManager);
|
|
200
206
|
const aiManager = new AIManager(container, {
|
|
201
207
|
callbacks: {
|
|
202
208
|
...callbacks,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertMessagesForAPI.d.ts","sourceRoot":"","sources":["../../src/utils/convertMessagesForAPI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"convertMessagesForAPI.d.ts","sourceRoot":"","sources":["../../src/utils/convertMessagesForAPI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAEL,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AA0B7B;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,OAAO,EAAE,GAClB,0BAA0B,EAAE,CAuO9B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { convertImageToBase64 } from "./messageOperations.js";
|
|
2
|
+
import { taskNotificationToXml } from "./notificationXml.js";
|
|
2
3
|
import { stripAnsiColors } from "./stringUtils.js";
|
|
3
4
|
import { logger } from "./globalLogger.js";
|
|
4
5
|
/**
|
|
@@ -190,6 +191,13 @@ export function convertMessagesForAPI(messages) {
|
|
|
190
191
|
text: `<local-command-stdout>\n${stripAnsiColors(block.result)}\n</local-command-stdout>`,
|
|
191
192
|
});
|
|
192
193
|
}
|
|
194
|
+
// If there is a task notification block, convert it back to XML
|
|
195
|
+
if (block.type === "task_notification") {
|
|
196
|
+
contentParts.push({
|
|
197
|
+
type: "text",
|
|
198
|
+
text: taskNotificationToXml(block),
|
|
199
|
+
});
|
|
200
|
+
}
|
|
193
201
|
});
|
|
194
202
|
// Only add user message if there is meaningful content
|
|
195
203
|
if (contentParts.length > 0) {
|
|
@@ -110,4 +110,13 @@ export declare function formatToolTokenSummary(toolCount: number, tokens: number
|
|
|
110
110
|
* Returns the first available content block.
|
|
111
111
|
*/
|
|
112
112
|
export declare function getMessageContent(message: Message): string;
|
|
113
|
+
export interface AddNotificationMessageParams {
|
|
114
|
+
messages: Message[];
|
|
115
|
+
taskId: string;
|
|
116
|
+
taskType: "shell" | "agent";
|
|
117
|
+
status: "completed" | "failed" | "killed";
|
|
118
|
+
summary: string;
|
|
119
|
+
outputFile?: string;
|
|
120
|
+
}
|
|
121
|
+
export declare const addNotificationMessageToMessages: ({ messages, taskId, taskType, status, summary, outputFile, }: AddNotificationMessageParams) => Message[];
|
|
113
122
|
//# sourceMappingURL=messageOperations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/utils/messageOperations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/utils/messageOperations.ts"],"names":[],"mappings":"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"}
|