klaus-agent 0.4.0 → 0.4.1
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/approval/approval.d.ts +8 -3
- package/dist/approval/approval.js +23 -23
- package/dist/approval/approval.js.map +1 -1
- package/dist/approval/types.d.ts +1 -0
- package/dist/background/task-manager.d.ts +2 -0
- package/dist/background/task-manager.js +14 -0
- package/dist/background/task-manager.js.map +1 -1
- package/dist/compaction/compaction.d.ts +0 -1
- package/dist/compaction/compaction.js +21 -35
- package/dist/compaction/compaction.js.map +1 -1
- package/dist/compaction/summarizer.js +2 -7
- package/dist/compaction/summarizer.js.map +1 -1
- package/dist/core/agent-loop.d.ts +2 -1
- package/dist/core/agent-loop.js +14 -9
- package/dist/core/agent-loop.js.map +1 -1
- package/dist/core/agent.d.ts +1 -0
- package/dist/core/agent.js +11 -3
- package/dist/core/agent.js.map +1 -1
- package/dist/injection/history-normalizer.js +20 -10
- package/dist/injection/history-normalizer.js.map +1 -1
- package/dist/llm/types.d.ts +2 -0
- package/dist/multi-agent/task-executor.d.ts +2 -1
- package/dist/multi-agent/types.d.ts +3 -0
- package/dist/planning/planning-manager.d.ts +2 -0
- package/dist/planning/planning-manager.js +6 -0
- package/dist/planning/planning-manager.js.map +1 -1
- package/dist/providers/anthropic.js +14 -6
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/openai-codex.js +5 -8
- package/dist/providers/openai-codex.js.map +1 -1
- package/dist/providers/openai.js +3 -2
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/shared.d.ts +2 -2
- package/dist/providers/shared.js +11 -6
- package/dist/providers/shared.js.map +1 -1
- package/dist/session/session-manager.d.ts +1 -0
- package/dist/session/session-manager.js +11 -1
- package/dist/session/session-manager.js.map +1 -1
- package/dist/task-graph/task-graph.d.ts +3 -0
- package/dist/task-graph/task-graph.js +38 -13
- package/dist/task-graph/task-graph.js.map +1 -1
- package/dist/tools/executor.d.ts +3 -2
- package/dist/tools/mcp-adapter.js +22 -5
- package/dist/tools/mcp-adapter.js.map +1 -1
- package/dist/utils/id.js +2 -6
- package/dist/utils/id.js.map +1 -1
- package/dist/wire/wire.d.ts +2 -1
- package/package.json +1 -1
- package/src/approval/approval.ts +29 -23
- package/src/approval/types.ts +1 -0
- package/src/background/task-manager.ts +17 -0
- package/src/compaction/compaction.ts +23 -36
- package/src/compaction/summarizer.ts +2 -7
- package/src/core/agent-loop.ts +17 -10
- package/src/core/agent.ts +12 -3
- package/src/injection/history-normalizer.ts +22 -12
- package/src/llm/types.ts +2 -0
- package/src/multi-agent/task-executor.ts +1 -1
- package/src/multi-agent/types.ts +3 -0
- package/src/planning/planning-manager.ts +8 -0
- package/src/providers/anthropic.ts +70 -57
- package/src/providers/google.ts +1 -1
- package/src/providers/openai-codex.ts +7 -2
- package/src/providers/openai.ts +8 -3
- package/src/providers/shared.ts +11 -6
- package/src/session/session-manager.ts +15 -4
- package/src/task-graph/task-graph.ts +41 -13
- package/src/tools/executor.ts +2 -2
- package/src/tools/mcp-adapter.ts +23 -7
- package/src/utils/id.ts +3 -6
- package/src/wire/wire.ts +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Task graph — dependency-aware DAG with background execution and auto-unlock
|
|
2
|
-
import { readFileSync,
|
|
2
|
+
import { readFileSync, mkdirSync, existsSync } from "fs";
|
|
3
|
+
import { writeFile, rename } from "fs/promises";
|
|
3
4
|
import { join } from "path";
|
|
4
5
|
import { generateId } from "../utils/id.js";
|
|
5
6
|
export class TaskGraph {
|
|
@@ -16,10 +17,14 @@ export class TaskGraph {
|
|
|
16
17
|
}
|
|
17
18
|
get(id) {
|
|
18
19
|
const task = this._tasks.get(id);
|
|
19
|
-
return task ? { ...task } : undefined;
|
|
20
|
+
return task ? { ...task, blockedBy: [...task.blockedBy], blocks: [...task.blocks] } : undefined;
|
|
20
21
|
}
|
|
21
22
|
listAll() {
|
|
22
|
-
return [...this._tasks.values()]
|
|
23
|
+
return [...this._tasks.values()].map((t) => ({
|
|
24
|
+
...t,
|
|
25
|
+
blockedBy: [...t.blockedBy],
|
|
26
|
+
blocks: [...t.blocks],
|
|
27
|
+
}));
|
|
23
28
|
}
|
|
24
29
|
/** Tasks that are pending with no unfinished blockers. */
|
|
25
30
|
listReady() {
|
|
@@ -47,7 +52,7 @@ export class TaskGraph {
|
|
|
47
52
|
};
|
|
48
53
|
this._tasks.set(node.id, node);
|
|
49
54
|
this._persist();
|
|
50
|
-
return { ...node };
|
|
55
|
+
return { ...node, blockedBy: [...node.blockedBy], blocks: [...node.blocks] };
|
|
51
56
|
}
|
|
52
57
|
/** Add a dependency: `taskId` is blocked by `blockedById`. */
|
|
53
58
|
addDependency(taskId, blockedById) {
|
|
@@ -92,7 +97,7 @@ export class TaskGraph {
|
|
|
92
97
|
}
|
|
93
98
|
task.updatedAt = Date.now();
|
|
94
99
|
this._persist();
|
|
95
|
-
return { ...task };
|
|
100
|
+
return { ...task, blockedBy: [...task.blockedBy], blocks: [...task.blocks] };
|
|
96
101
|
}
|
|
97
102
|
/**
|
|
98
103
|
* Run an async function in the background for a task.
|
|
@@ -208,14 +213,20 @@ export class TaskGraph {
|
|
|
208
213
|
}
|
|
209
214
|
return false;
|
|
210
215
|
}
|
|
216
|
+
_persistPromise = Promise.resolve();
|
|
211
217
|
_persist() {
|
|
212
218
|
if (!this._config.persistDir)
|
|
213
219
|
return;
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
220
|
+
const dir = this._config.persistDir;
|
|
221
|
+
const tasks = [...this._tasks.values()];
|
|
222
|
+
this._persistPromise = this._persistPromise
|
|
223
|
+
.then(() => {
|
|
224
|
+
const data = JSON.stringify(tasks, null, 2);
|
|
225
|
+
const target = join(dir, "tasks.json");
|
|
226
|
+
const tmp = target + ".tmp";
|
|
227
|
+
return writeFile(tmp, data, "utf-8").then(() => rename(tmp, target));
|
|
228
|
+
})
|
|
229
|
+
.catch(() => { });
|
|
219
230
|
}
|
|
220
231
|
_loadFromDisk() {
|
|
221
232
|
if (!this._config.persistDir)
|
|
@@ -228,14 +239,28 @@ export class TaskGraph {
|
|
|
228
239
|
if (!Array.isArray(raw))
|
|
229
240
|
return;
|
|
230
241
|
for (const entry of raw) {
|
|
231
|
-
if (
|
|
232
|
-
|
|
233
|
-
|
|
242
|
+
if (!this._isValidTaskNode(entry))
|
|
243
|
+
continue;
|
|
244
|
+
this._tasks.set(entry.id, entry);
|
|
234
245
|
}
|
|
235
246
|
}
|
|
236
247
|
catch {
|
|
237
248
|
// Corrupted file — start fresh
|
|
238
249
|
}
|
|
239
250
|
}
|
|
251
|
+
static _validStatuses = new Set(["pending", "in_progress", "completed", "failed"]);
|
|
252
|
+
_isValidTaskNode(entry) {
|
|
253
|
+
if (!entry || typeof entry !== "object")
|
|
254
|
+
return false;
|
|
255
|
+
const e = entry;
|
|
256
|
+
return (typeof e.id === "string" &&
|
|
257
|
+
typeof e.subject === "string" &&
|
|
258
|
+
typeof e.status === "string" &&
|
|
259
|
+
TaskGraph._validStatuses.has(e.status) &&
|
|
260
|
+
Array.isArray(e.blockedBy) &&
|
|
261
|
+
Array.isArray(e.blocks) &&
|
|
262
|
+
typeof e.createdAt === "number" &&
|
|
263
|
+
typeof e.updatedAt === "number");
|
|
264
|
+
}
|
|
240
265
|
}
|
|
241
266
|
//# sourceMappingURL=task-graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-graph.js","sourceRoot":"","sources":["../../src/task-graph/task-graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-graph.js","sourceRoot":"","sources":["../../src/task-graph/task-graph.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/executor.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AgentTool, AgentToolResult, BeforeToolCallContext, BeforeToolCallResult, AfterToolCallContext, AfterToolCallResult } from "./types.js";
|
|
2
2
|
import type { ToolCallBlock } from "../llm/types.js";
|
|
3
3
|
import type { Approval } from "../approval/types.js";
|
|
4
|
-
|
|
4
|
+
interface ToolExecutorConfig {
|
|
5
5
|
tools: AgentTool[];
|
|
6
6
|
mode: "sequential" | "parallel";
|
|
7
7
|
approval: Approval;
|
|
@@ -11,7 +11,7 @@ export interface ToolExecutorConfig {
|
|
|
11
11
|
afterToolCall?: (ctx: AfterToolCallContext) => Promise<AfterToolCallResult | void>;
|
|
12
12
|
onEvent: (event: ToolExecutorEvent) => void;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
type ToolExecutorEvent = {
|
|
15
15
|
type: "tool_execution_start";
|
|
16
16
|
toolCallId: string;
|
|
17
17
|
toolName: string;
|
|
@@ -35,3 +35,4 @@ export interface ToolCallResult {
|
|
|
35
35
|
isError: boolean;
|
|
36
36
|
}
|
|
37
37
|
export declare function executeToolCalls(toolCalls: ToolCallBlock[], config: ToolExecutorConfig): Promise<ToolCallResult[]>;
|
|
38
|
+
export {};
|
|
@@ -88,15 +88,32 @@ export class MCPAdapter {
|
|
|
88
88
|
async execute(toolCallId, params, context) {
|
|
89
89
|
// Approval is handled by the executor via approvalAction field
|
|
90
90
|
// No need to request approval here
|
|
91
|
-
// Call with timeout
|
|
91
|
+
// Call with timeout and abort signal support
|
|
92
92
|
const callPromise = client.callTool(def.name, params);
|
|
93
93
|
let result;
|
|
94
|
+
let timer;
|
|
95
|
+
let abortHandler;
|
|
96
|
+
const racers = [callPromise];
|
|
94
97
|
if (timeout) {
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
racers.push(new Promise((_, reject) => {
|
|
99
|
+
timer = setTimeout(() => reject(new Error(`MCP tool ${def.name} timed out after ${timeout}ms`)), timeout);
|
|
100
|
+
}));
|
|
97
101
|
}
|
|
98
|
-
|
|
99
|
-
|
|
102
|
+
if (context.signal.aborted)
|
|
103
|
+
throw new Error("Aborted");
|
|
104
|
+
racers.push(new Promise((_, reject) => {
|
|
105
|
+
abortHandler = () => reject(new Error("Aborted"));
|
|
106
|
+
context.signal.addEventListener("abort", abortHandler, { once: true });
|
|
107
|
+
}));
|
|
108
|
+
try {
|
|
109
|
+
result = await Promise.race(racers);
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
if (timer !== undefined)
|
|
113
|
+
clearTimeout(timer);
|
|
114
|
+
if (abortHandler) {
|
|
115
|
+
context.signal.removeEventListener("abort", abortHandler);
|
|
116
|
+
}
|
|
100
117
|
}
|
|
101
118
|
// Convert MCP result to AgentToolResult
|
|
102
119
|
const content = result.content
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../src/tools/mcp-adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../src/tools/mcp-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/id.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
1
2
|
export function generateId() {
|
|
2
|
-
|
|
3
|
-
let id = "";
|
|
4
|
-
for (let i = 0; i < 12; i++) {
|
|
5
|
-
id += chars[Math.floor(Math.random() * chars.length)];
|
|
6
|
-
}
|
|
7
|
-
return id;
|
|
3
|
+
return randomBytes(9).toString("base64url").slice(0, 12);
|
|
8
4
|
}
|
|
9
5
|
//# sourceMappingURL=id.js.map
|
package/dist/utils/id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/wire/wire.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WireMessage, WireSubscriber, WireSubscription } from "./types.js";
|
|
2
|
-
|
|
2
|
+
interface WireOptions {
|
|
3
3
|
/** Max messages to buffer for replay to late subscribers. 0 = no buffering. */
|
|
4
4
|
bufferSize?: number;
|
|
5
5
|
}
|
|
@@ -18,3 +18,4 @@ export declare class Wire {
|
|
|
18
18
|
getBuffer(): readonly WireMessage[];
|
|
19
19
|
dispose(): void;
|
|
20
20
|
}
|
|
21
|
+
export {};
|
package/package.json
CHANGED
package/src/approval/approval.ts
CHANGED
|
@@ -8,21 +8,27 @@ interface PendingRequest {
|
|
|
8
8
|
resolve: (approved: boolean) => void;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
interface SharedApprovalState {
|
|
12
|
+
yolo: boolean;
|
|
13
|
+
autoApproveActions: Set<string>;
|
|
14
|
+
}
|
|
15
|
+
|
|
11
16
|
export class ApprovalImpl implements Approval {
|
|
12
|
-
private
|
|
13
|
-
private _autoApproveActions: Set<string>;
|
|
17
|
+
private _shared: SharedApprovalState;
|
|
14
18
|
private _pending = new Map<string, PendingRequest>();
|
|
15
19
|
private _queue: ApprovalRequest[] = [];
|
|
16
20
|
private _waiters: ((req: ApprovalRequest) => void)[] = [];
|
|
17
21
|
|
|
18
|
-
constructor(config?: ApprovalConfig) {
|
|
19
|
-
this.
|
|
20
|
-
|
|
22
|
+
constructor(config?: ApprovalConfig, sharedState?: SharedApprovalState) {
|
|
23
|
+
this._shared = sharedState ?? {
|
|
24
|
+
yolo: config?.yolo ?? false,
|
|
25
|
+
autoApproveActions: new Set(config?.autoApproveActions ?? []),
|
|
26
|
+
};
|
|
21
27
|
}
|
|
22
28
|
|
|
23
29
|
async request(sender: string, action: string, description: string, toolCallId: string): Promise<boolean> {
|
|
24
|
-
if (this.
|
|
25
|
-
if (this.
|
|
30
|
+
if (this._shared.yolo) return true;
|
|
31
|
+
if (this._shared.autoApproveActions.has(action)) return true;
|
|
26
32
|
|
|
27
33
|
const req: ApprovalRequest = {
|
|
28
34
|
id: generateId(),
|
|
@@ -72,7 +78,7 @@ export class ApprovalImpl implements Approval {
|
|
|
72
78
|
this._pending.delete(requestId);
|
|
73
79
|
|
|
74
80
|
if (response === "approve_for_session") {
|
|
75
|
-
this.
|
|
81
|
+
this._shared.autoApproveActions.add(pending.request.action);
|
|
76
82
|
pending.resolve(true);
|
|
77
83
|
} else {
|
|
78
84
|
pending.resolve(response === "approve");
|
|
@@ -80,29 +86,29 @@ export class ApprovalImpl implements Approval {
|
|
|
80
86
|
}
|
|
81
87
|
|
|
82
88
|
setYolo(yolo: boolean): void {
|
|
83
|
-
this.
|
|
89
|
+
this._shared.yolo = yolo;
|
|
84
90
|
}
|
|
85
91
|
|
|
86
92
|
isYolo(): boolean {
|
|
87
|
-
return this.
|
|
93
|
+
return this._shared.yolo;
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
get autoApproveActions(): Set<string> {
|
|
91
|
-
return this.
|
|
97
|
+
return this._shared.autoApproveActions;
|
|
92
98
|
}
|
|
93
99
|
|
|
94
100
|
share(): Approval {
|
|
95
|
-
// Shared state (yolo, autoApproveActions), independent queue
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
101
|
+
// Shared state (yolo, autoApproveActions) via same reference, independent queue
|
|
102
|
+
return new ApprovalImpl(undefined, this._shared);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
dispose(): void {
|
|
106
|
+
this.cancelPendingWaiters();
|
|
107
|
+
// Reject all pending approval requests so blocked tools don't hang forever
|
|
108
|
+
for (const [id, pending] of this._pending) {
|
|
109
|
+
pending.resolve(false);
|
|
110
|
+
}
|
|
111
|
+
this._pending.clear();
|
|
112
|
+
this._queue = [];
|
|
107
113
|
}
|
|
108
114
|
}
|
package/src/approval/types.ts
CHANGED
|
@@ -82,6 +82,23 @@ export class BackgroundTaskManager {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
/** Remove completed/failed tasks older than `maxAgeMs` (default: 5 minutes). */
|
|
86
|
+
prune(maxAgeMs = 5 * 60 * 1000): number {
|
|
87
|
+
const now = Date.now();
|
|
88
|
+
let removed = 0;
|
|
89
|
+
for (const [id, task] of this._tasks) {
|
|
90
|
+
if (
|
|
91
|
+
(task.status === "completed" || task.status === "failed") &&
|
|
92
|
+
task.completedAt &&
|
|
93
|
+
now - task.completedAt > maxAgeMs
|
|
94
|
+
) {
|
|
95
|
+
this._tasks.delete(id);
|
|
96
|
+
removed++;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return removed;
|
|
100
|
+
}
|
|
101
|
+
|
|
85
102
|
dispose(): void {
|
|
86
103
|
this.abortAll();
|
|
87
104
|
this._tasks.clear();
|
|
@@ -75,6 +75,14 @@ export function findCutPoint(
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
// If all messages fit within keepRecentTokens, nothing can be discarded.
|
|
79
|
+
// Return firstKeptIndex: 0 so callers know there's nothing to cut —
|
|
80
|
+
// this prevents infinite compaction loops when context exceeds max but
|
|
81
|
+
// all messages fall within the keep window.
|
|
82
|
+
if (cutIndex >= messages.length) {
|
|
83
|
+
return { firstKeptIndex: 0, isSplitTurn: false };
|
|
84
|
+
}
|
|
85
|
+
|
|
78
86
|
// Ensure we don't cut at a tool_result (must follow its tool_call)
|
|
79
87
|
while (cutIndex < messages.length) {
|
|
80
88
|
const msg = messages[cutIndex];
|
|
@@ -85,8 +93,8 @@ export function findCutPoint(
|
|
|
85
93
|
}
|
|
86
94
|
}
|
|
87
95
|
|
|
88
|
-
//
|
|
89
|
-
if (cutIndex <= 1) {
|
|
96
|
+
// After adjusting for tool_results, check if we've pushed past all messages
|
|
97
|
+
if (cutIndex >= messages.length || cutIndex <= 1) {
|
|
90
98
|
return { firstKeptIndex: 0, isSplitTurn: false };
|
|
91
99
|
}
|
|
92
100
|
|
|
@@ -108,25 +116,24 @@ export function microCompact(messages: Message[], keepRecent: number): Message[]
|
|
|
108
116
|
|
|
109
117
|
if (toolResultIndices.length <= keepRecent) return messages;
|
|
110
118
|
|
|
119
|
+
// Build toolCallId → toolName map in one pass
|
|
120
|
+
const toolCallNames = new Map<string, string>();
|
|
121
|
+
for (const msg of messages) {
|
|
122
|
+
if (msg.role === "assistant") {
|
|
123
|
+
for (const b of msg.content) {
|
|
124
|
+
if (b.type === "tool_call") {
|
|
125
|
+
toolCallNames.set(b.id, b.name);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
111
131
|
const toReplace = toolResultIndices.slice(0, -keepRecent);
|
|
112
132
|
const result = [...messages];
|
|
113
133
|
|
|
114
134
|
for (const idx of toReplace) {
|
|
115
135
|
const msg = result[idx] as ToolResultMessage;
|
|
116
|
-
|
|
117
|
-
let toolName = "tool";
|
|
118
|
-
for (let j = idx - 1; j >= 0; j--) {
|
|
119
|
-
const prev = result[j];
|
|
120
|
-
if (prev.role === "assistant") {
|
|
121
|
-
const call = prev.content.find(
|
|
122
|
-
(b): b is ToolCallBlock => b.type === "tool_call" && b.id === msg.toolCallId,
|
|
123
|
-
);
|
|
124
|
-
if (call) {
|
|
125
|
-
toolName = call.name;
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
136
|
+
const toolName = toolCallNames.get(msg.toolCallId) ?? "tool";
|
|
130
137
|
|
|
131
138
|
result[idx] = {
|
|
132
139
|
role: "tool_result",
|
|
@@ -139,23 +146,3 @@ export function microCompact(messages: Message[], keepRecent: number): Message[]
|
|
|
139
146
|
return result;
|
|
140
147
|
}
|
|
141
148
|
|
|
142
|
-
export function messagesToText(messages: AgentMessage[]): string {
|
|
143
|
-
const parts: string[] = [];
|
|
144
|
-
for (const msg of messages) {
|
|
145
|
-
if (!msg || typeof msg !== "object" || !("role" in msg)) continue;
|
|
146
|
-
const m = msg as Message;
|
|
147
|
-
|
|
148
|
-
if (m.role === "user") {
|
|
149
|
-
const text = typeof m.content === "string" ? m.content : m.content.filter((b) => b.type === "text").map((b) => (b as { text: string }).text).join("\n");
|
|
150
|
-
parts.push(`User: ${text}`);
|
|
151
|
-
} else if (m.role === "assistant") {
|
|
152
|
-
const text = m.content.filter((b) => b.type === "text").map((b) => (b as { text: string }).text).join("\n");
|
|
153
|
-
const toolCalls = m.content.filter((b) => b.type === "tool_call").map((b) => (b as { name: string }).name);
|
|
154
|
-
parts.push(`Assistant: ${text}${toolCalls.length ? ` [tools: ${toolCalls.join(", ")}]` : ""}`);
|
|
155
|
-
} else if (m.role === "tool_result") {
|
|
156
|
-
const text = typeof m.content === "string" ? m.content : m.content.filter((b) => b.type === "text").map((b) => (b as { text: string }).text).join("\n");
|
|
157
|
-
parts.push(`Tool result: ${text.slice(0, 500)}`);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return parts.join("\n");
|
|
161
|
-
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import type { LLMProvider, LLMRequestOptions, AssistantMessage } from "../llm/types.js";
|
|
4
4
|
import type { AgentMessage } from "../types.js";
|
|
5
5
|
import type { CompactionSummarizer, CompactionInput } from "./types.js";
|
|
6
|
-
import { messagesToText } from "./compaction.js";
|
|
7
6
|
|
|
8
7
|
const SUMMARIZE_PROMPT = `You are a conversation summarizer. Summarize the following conversation history concisely, preserving:
|
|
9
8
|
- Key decisions and outcomes
|
|
@@ -42,13 +41,9 @@ export class LLMSummarizer implements CompactionSummarizer {
|
|
|
42
41
|
|
|
43
42
|
let result = "";
|
|
44
43
|
for await (const event of this.provider.stream(options)) {
|
|
45
|
-
if (event.type === "
|
|
46
|
-
result += event.text;
|
|
47
|
-
} else if (event.type === "done") {
|
|
44
|
+
if (event.type === "done") {
|
|
48
45
|
const textBlocks = event.message.content.filter((b) => b.type === "text");
|
|
49
|
-
|
|
50
|
-
result = textBlocks.map((b) => (b as { text: string }).text).join("");
|
|
51
|
-
}
|
|
46
|
+
result = textBlocks.map((b) => (b as { text: string }).text).join("");
|
|
52
47
|
}
|
|
53
48
|
}
|
|
54
49
|
|
package/src/core/agent-loop.ts
CHANGED
|
@@ -29,7 +29,7 @@ import { estimateTokens, shouldCompact, findCutPoint, microCompact } from "../co
|
|
|
29
29
|
import { normalizeHistory } from "../injection/history-normalizer.js";
|
|
30
30
|
import { calculateCost } from "../providers/shared.js";
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
interface AgentLoopConfig {
|
|
33
33
|
provider: LLMProvider;
|
|
34
34
|
modelId: string;
|
|
35
35
|
systemPrompt: string;
|
|
@@ -91,7 +91,7 @@ function toolResultsToMessages(results: ToolCallResult[]): ToolResultMessage[] {
|
|
|
91
91
|
role: "tool_result" as const,
|
|
92
92
|
toolCallId: r.toolCallId,
|
|
93
93
|
content: r.result.content,
|
|
94
|
-
isError: r.isError
|
|
94
|
+
isError: r.isError,
|
|
95
95
|
}));
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -185,14 +185,10 @@ export async function runAgentLoop(
|
|
|
185
185
|
}
|
|
186
186
|
allMessages.push(...toKeep);
|
|
187
187
|
|
|
188
|
-
// Persist compaction to session
|
|
189
|
-
//
|
|
190
|
-
// kept messages after it so buildSessionContext picks them up
|
|
188
|
+
// Persist compaction boundary marker to session.
|
|
189
|
+
// Kept messages are already in the session tree — only append the compaction entry.
|
|
191
190
|
if (sessionManager) {
|
|
192
191
|
await sessionManager.appendCompaction(summary, sessionManager.getLeafId() ?? "", tokens);
|
|
193
|
-
for (const msg of toKeep) {
|
|
194
|
-
await sessionManager.appendMessage(msg);
|
|
195
|
-
}
|
|
196
192
|
}
|
|
197
193
|
|
|
198
194
|
onEvent({ type: "compaction_end", summary });
|
|
@@ -257,7 +253,7 @@ export async function runAgentLoop(
|
|
|
257
253
|
|
|
258
254
|
// --- Phase-aware tool filtering ---
|
|
259
255
|
let visibleTools = allTools;
|
|
260
|
-
if (config.planningManager?.phase === "planning" && config.planningManager.
|
|
256
|
+
if (config.planningManager?.phase === "planning" && config.planningManager.hasConfiguredReadOnlyTools) {
|
|
261
257
|
visibleTools = allTools.filter((t) => config.planningManager!.allowedInPlanning.has(t.name));
|
|
262
258
|
}
|
|
263
259
|
|
|
@@ -442,9 +438,20 @@ export async function runAgentLoop(
|
|
|
442
438
|
}
|
|
443
439
|
}
|
|
444
440
|
} catch (err) {
|
|
445
|
-
|
|
441
|
+
const isAbort = err instanceof Error && err.name === "AbortError";
|
|
442
|
+
if (!isAbort) {
|
|
446
443
|
onEvent({ type: "error", error: err instanceof Error ? err : new Error(String(err)) });
|
|
447
444
|
}
|
|
445
|
+
|
|
446
|
+
onEvent({ type: "agent_end", messages: allMessages });
|
|
447
|
+
await extensionRunner?.emitSimple("agent_end", { messages: allMessages });
|
|
448
|
+
|
|
449
|
+
// Re-throw non-abort errors so the caller (Agent._runLoop) can set error state.
|
|
450
|
+
// AbortError is intentional (user called agent.abort()), not an error condition.
|
|
451
|
+
if (!isAbort) {
|
|
452
|
+
throw err;
|
|
453
|
+
}
|
|
454
|
+
return allMessages;
|
|
448
455
|
}
|
|
449
456
|
|
|
450
457
|
onEvent({ type: "agent_end", messages: allMessages });
|
package/src/core/agent.ts
CHANGED
|
@@ -43,6 +43,7 @@ import { PlanningNagProvider } from "../planning/nag-injection.js";
|
|
|
43
43
|
import { TaskGraph } from "../task-graph/task-graph.js";
|
|
44
44
|
import { createTaskGraphTools } from "../task-graph/tools.js";
|
|
45
45
|
import { TaskResultInjectionProvider } from "../task-graph/result-injection.js";
|
|
46
|
+
import { resolveProvider } from "../llm/provider.js";
|
|
46
47
|
import { runAgentLoop } from "./agent-loop.js";
|
|
47
48
|
|
|
48
49
|
export interface AgentConfig {
|
|
@@ -95,6 +96,7 @@ export class Agent {
|
|
|
95
96
|
private _backgroundTaskManager: BackgroundTaskManager | undefined;
|
|
96
97
|
private _planningManager: PlanningManager | undefined;
|
|
97
98
|
private _taskGraph: TaskGraph;
|
|
99
|
+
private _createdSubagents: Agent[] = [];
|
|
98
100
|
private _initialized = false;
|
|
99
101
|
|
|
100
102
|
constructor(config: AgentConfig) {
|
|
@@ -293,6 +295,9 @@ export class Agent {
|
|
|
293
295
|
this._listeners.clear();
|
|
294
296
|
this._steeringQueue = [];
|
|
295
297
|
this._followUpQueue = [];
|
|
298
|
+
await Promise.allSettled(this._createdSubagents.map((sub) => sub.dispose()));
|
|
299
|
+
this._createdSubagents = [];
|
|
300
|
+
this._approval.dispose();
|
|
296
301
|
await this._mcpAdapter?.dispose();
|
|
297
302
|
this._backgroundTaskManager?.dispose();
|
|
298
303
|
this._taskGraph.dispose();
|
|
@@ -303,7 +308,6 @@ export class Agent {
|
|
|
303
308
|
|
|
304
309
|
private async _ensureInitialized(): Promise<void> {
|
|
305
310
|
if (this._initialized) return;
|
|
306
|
-
this._initialized = true;
|
|
307
311
|
|
|
308
312
|
// Init session and restore messages
|
|
309
313
|
if (this._sessionManager) {
|
|
@@ -362,14 +366,17 @@ export class Agent {
|
|
|
362
366
|
// Init fixed subagents and create TaskTool
|
|
363
367
|
if (this._config.subagents && this._laborMarket && this._taskExecutor) {
|
|
364
368
|
for (const [name, subConfig] of Object.entries(this._config.subagents)) {
|
|
369
|
+
const subModel = subConfig.model ?? this._config.model;
|
|
370
|
+
const subProvider = subConfig.model ? resolveProvider(subConfig.model) : this._provider;
|
|
365
371
|
const subAgent = new Agent({
|
|
366
|
-
model:
|
|
372
|
+
model: subModel,
|
|
367
373
|
systemPrompt: subConfig.systemPrompt,
|
|
368
374
|
tools: subConfig.tools ?? [],
|
|
369
|
-
provider:
|
|
375
|
+
provider: subProvider,
|
|
370
376
|
approval: this._approval.share(),
|
|
371
377
|
name,
|
|
372
378
|
});
|
|
379
|
+
this._createdSubagents.push(subAgent);
|
|
373
380
|
this._laborMarket.addFixed(name, subAgent, subConfig.description);
|
|
374
381
|
}
|
|
375
382
|
// Add built-in TaskTool so LLM can delegate to subagents
|
|
@@ -395,6 +402,8 @@ export class Agent {
|
|
|
395
402
|
if (this._config.taskGraph?.autoInjectResults !== false) {
|
|
396
403
|
this._addInjectionProvider(new TaskResultInjectionProvider(this._taskGraph));
|
|
397
404
|
}
|
|
405
|
+
|
|
406
|
+
this._initialized = true;
|
|
398
407
|
}
|
|
399
408
|
|
|
400
409
|
private _addInjectionProvider(provider: DynamicInjectionProvider): void {
|