klaus-agent 0.1.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/README.md +685 -0
- package/dist/approval/approval.d.ts +18 -0
- package/dist/approval/approval.js +93 -0
- package/dist/approval/approval.js.map +1 -0
- package/dist/approval/types.d.ts +21 -0
- package/dist/approval/types.js +3 -0
- package/dist/approval/types.js.map +1 -0
- package/dist/background/task-manager.d.ts +14 -0
- package/dist/background/task-manager.js +89 -0
- package/dist/background/task-manager.js.map +1 -0
- package/dist/background/tools.d.ts +4 -0
- package/dist/background/tools.js +74 -0
- package/dist/background/tools.js.map +1 -0
- package/dist/background/types.d.ts +31 -0
- package/dist/background/types.js +3 -0
- package/dist/background/types.js.map +1 -0
- package/dist/checkpoint/checkpoint-manager.d.ts +19 -0
- package/dist/checkpoint/checkpoint-manager.js +49 -0
- package/dist/checkpoint/checkpoint-manager.js.map +1 -0
- package/dist/checkpoint/dmail.d.ts +10 -0
- package/dist/checkpoint/dmail.js +26 -0
- package/dist/checkpoint/dmail.js.map +1 -0
- package/dist/checkpoint/types.d.ts +12 -0
- package/dist/checkpoint/types.js +3 -0
- package/dist/checkpoint/types.js.map +1 -0
- package/dist/compaction/compaction.d.ts +6 -0
- package/dist/compaction/compaction.js +104 -0
- package/dist/compaction/compaction.js.map +1 -0
- package/dist/compaction/summarizer.d.ts +10 -0
- package/dist/compaction/summarizer.js +75 -0
- package/dist/compaction/summarizer.js.map +1 -0
- package/dist/compaction/types.d.ts +23 -0
- package/dist/compaction/types.js +3 -0
- package/dist/compaction/types.js.map +1 -0
- package/dist/core/agent-loop.d.ts +37 -0
- package/dist/core/agent-loop.js +337 -0
- package/dist/core/agent-loop.js.map +1 -0
- package/dist/core/agent.d.ts +97 -0
- package/dist/core/agent.js +335 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/extensions/runner.d.ts +19 -0
- package/dist/extensions/runner.js +88 -0
- package/dist/extensions/runner.js.map +1 -0
- package/dist/extensions/types.d.ts +179 -0
- package/dist/extensions/types.js +3 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/injection/history-normalizer.d.ts +2 -0
- package/dist/injection/history-normalizer.js +34 -0
- package/dist/injection/history-normalizer.js.map +1 -0
- package/dist/injection/injection-manager.d.ts +8 -0
- package/dist/injection/injection-manager.js +28 -0
- package/dist/injection/injection-manager.js.map +1 -0
- package/dist/injection/types.d.ts +8 -0
- package/dist/injection/types.js +3 -0
- package/dist/injection/types.js.map +1 -0
- package/dist/llm/provider.d.ts +16 -0
- package/dist/llm/provider.js +233 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/llm/types.d.ts +110 -0
- package/dist/llm/types.js +3 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/multi-agent/labor-market.d.ts +16 -0
- package/dist/multi-agent/labor-market.js +40 -0
- package/dist/multi-agent/labor-market.js.map +1 -0
- package/dist/multi-agent/task-executor.d.ts +12 -0
- package/dist/multi-agent/task-executor.js +38 -0
- package/dist/multi-agent/task-executor.js.map +1 -0
- package/dist/multi-agent/task-tool.d.ts +4 -0
- package/dist/multi-agent/task-tool.js +46 -0
- package/dist/multi-agent/task-tool.js.map +1 -0
- package/dist/multi-agent/types.d.ts +7 -0
- package/dist/multi-agent/types.js +3 -0
- package/dist/multi-agent/types.js.map +1 -0
- package/dist/session/session-context-builder.d.ts +2 -0
- package/dist/session/session-context-builder.js +52 -0
- package/dist/session/session-context-builder.js.map +1 -0
- package/dist/session/session-manager.d.ts +30 -0
- package/dist/session/session-manager.js +209 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/types.d.ts +61 -0
- package/dist/session/types.js +3 -0
- package/dist/session/types.js.map +1 -0
- package/dist/skills/discovery.d.ts +2 -0
- package/dist/skills/discovery.js +29 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/loader.d.ts +3 -0
- package/dist/skills/loader.js +46 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/skill-tool.d.ts +3 -0
- package/dist/skills/skill-tool.js +38 -0
- package/dist/skills/skill-tool.js.map +1 -0
- package/dist/skills/types.d.ts +14 -0
- package/dist/skills/types.js +3 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tools/executor.d.ts +37 -0
- package/dist/tools/executor.js +131 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/mcp-adapter.d.ts +57 -0
- package/dist/tools/mcp-adapter.js +113 -0
- package/dist/tools/mcp-adapter.js.map +1 -0
- package/dist/tools/types.d.ts +43 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types.d.ts +96 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/id.d.ts +1 -0
- package/dist/utils/id.js +9 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/jsonl.d.ts +3 -0
- package/dist/utils/jsonl.js +17 -0
- package/dist/utils/jsonl.js.map +1 -0
- package/dist/wire/types.d.ts +10 -0
- package/dist/wire/types.js +3 -0
- package/dist/wire/types.js.map +1 -0
- package/dist/wire/wire.d.ts +20 -0
- package/dist/wire/wire.js +71 -0
- package/dist/wire/wire.js.map +1 -0
- package/package.json +26 -0
- package/src/approval/approval.ts +108 -0
- package/src/approval/types.ts +26 -0
- package/src/background/task-manager.ts +112 -0
- package/src/background/tools.ts +84 -0
- package/src/background/types.ts +29 -0
- package/src/checkpoint/checkpoint-manager.ts +60 -0
- package/src/checkpoint/dmail.ts +35 -0
- package/src/checkpoint/types.ts +16 -0
- package/src/compaction/compaction.ts +119 -0
- package/src/compaction/summarizer.ts +83 -0
- package/src/compaction/types.ts +29 -0
- package/src/core/agent-loop.ts +427 -0
- package/src/core/agent.ts +430 -0
- package/src/extensions/runner.ts +138 -0
- package/src/extensions/types.ts +177 -0
- package/src/index.ts +221 -0
- package/src/injection/history-normalizer.ts +44 -0
- package/src/injection/injection-manager.ts +34 -0
- package/src/injection/types.ts +12 -0
- package/src/llm/provider.ts +254 -0
- package/src/llm/types.ts +146 -0
- package/src/multi-agent/labor-market.ts +54 -0
- package/src/multi-agent/task-executor.ts +49 -0
- package/src/multi-agent/task-tool.ts +58 -0
- package/src/multi-agent/types.ts +10 -0
- package/src/session/session-context-builder.ts +65 -0
- package/src/session/session-manager.ts +258 -0
- package/src/session/types.ts +93 -0
- package/src/skills/discovery.ts +32 -0
- package/src/skills/loader.ts +54 -0
- package/src/skills/skill-tool.ts +50 -0
- package/src/skills/types.ts +18 -0
- package/src/tools/executor.ts +196 -0
- package/src/tools/mcp-adapter.ts +185 -0
- package/src/tools/types.ts +64 -0
- package/src/types.ts +96 -0
- package/src/utils/id.ts +8 -0
- package/src/utils/jsonl.ts +19 -0
- package/src/wire/types.ts +14 -0
- package/src/wire/wire.ts +79 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// LLM-based summarization for compaction
|
|
2
|
+
const SUMMARIZE_PROMPT = `You are a conversation summarizer. Summarize the following conversation history concisely, preserving:
|
|
3
|
+
- Key decisions and outcomes
|
|
4
|
+
- Important context and facts established
|
|
5
|
+
- Current state of any ongoing tasks
|
|
6
|
+
- Tool calls made and their results (briefly)
|
|
7
|
+
|
|
8
|
+
Be concise but thorough. Use bullet points. Do not include greetings or filler.`;
|
|
9
|
+
const UPDATE_PROMPT = `You are a conversation summarizer. You have a previous summary and new conversation to incorporate.
|
|
10
|
+
|
|
11
|
+
Previous summary:
|
|
12
|
+
{previous_summary}
|
|
13
|
+
|
|
14
|
+
Merge the new conversation into the summary, preserving all important context. Remove outdated information that has been superseded.`;
|
|
15
|
+
export class LLMSummarizer {
|
|
16
|
+
provider;
|
|
17
|
+
modelId;
|
|
18
|
+
constructor(provider, modelId) {
|
|
19
|
+
this.provider = provider;
|
|
20
|
+
this.modelId = modelId;
|
|
21
|
+
}
|
|
22
|
+
async summarize(messages, previousSummary) {
|
|
23
|
+
const conversationText = messages.map((m) => `${m.role}: ${m.content}`).join("\n");
|
|
24
|
+
const systemPrompt = previousSummary
|
|
25
|
+
? UPDATE_PROMPT.replace("{previous_summary}", previousSummary)
|
|
26
|
+
: SUMMARIZE_PROMPT;
|
|
27
|
+
const options = {
|
|
28
|
+
model: this.modelId,
|
|
29
|
+
systemPrompt,
|
|
30
|
+
messages: [{ role: "user", content: `Summarize this conversation:\n\n${conversationText}` }],
|
|
31
|
+
maxTokens: 2048,
|
|
32
|
+
};
|
|
33
|
+
let result = "";
|
|
34
|
+
for await (const event of this.provider.stream(options)) {
|
|
35
|
+
if (event.type === "text") {
|
|
36
|
+
result += event.text;
|
|
37
|
+
}
|
|
38
|
+
else if (event.type === "done") {
|
|
39
|
+
const textBlocks = event.message.content.filter((b) => b.type === "text");
|
|
40
|
+
if (textBlocks.length > 0) {
|
|
41
|
+
result = textBlocks.map((b) => b.text).join("");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function agentMessagesToCompactionInput(messages) {
|
|
49
|
+
const results = [];
|
|
50
|
+
for (const msg of messages) {
|
|
51
|
+
if (!msg || typeof msg !== "object" || !("role" in msg))
|
|
52
|
+
continue;
|
|
53
|
+
const m = msg;
|
|
54
|
+
if (m.role === "user") {
|
|
55
|
+
const text = typeof m.content === "string"
|
|
56
|
+
? m.content
|
|
57
|
+
: (m.content ?? []).filter((b) => b.type === "text").map((b) => b.text).join("\n");
|
|
58
|
+
results.push({ role: "user", content: text });
|
|
59
|
+
}
|
|
60
|
+
else if (m.role === "assistant") {
|
|
61
|
+
const text = (m.content ?? []).filter((b) => b.type === "text").map((b) => b.text).join("\n");
|
|
62
|
+
const toolCalls = (m.content ?? []).filter((b) => b.type === "tool_call").map((b) => b.name);
|
|
63
|
+
const suffix = toolCalls.length ? ` [tools: ${toolCalls.join(", ")}]` : "";
|
|
64
|
+
results.push({ role: "assistant", content: text + suffix });
|
|
65
|
+
}
|
|
66
|
+
else if (m.role === "tool_result") {
|
|
67
|
+
const text = typeof m.content === "string"
|
|
68
|
+
? m.content
|
|
69
|
+
: (m.content ?? []).filter((b) => b.type === "text").map((b) => b.text).join("\n");
|
|
70
|
+
results.push({ role: "tool_result", content: text.slice(0, 500) });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return results;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=summarizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarizer.js","sourceRoot":"","sources":["../../src/compaction/summarizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface CompactionConfig {
|
|
2
|
+
enabled?: boolean;
|
|
3
|
+
reserveTokens?: number;
|
|
4
|
+
keepRecentTokens?: number;
|
|
5
|
+
maxContextTokens?: number;
|
|
6
|
+
customSummarizer?: CompactionSummarizer;
|
|
7
|
+
}
|
|
8
|
+
export interface CompactionSummarizer {
|
|
9
|
+
summarize(messages: CompactionInput[], previousSummary?: string): Promise<string>;
|
|
10
|
+
}
|
|
11
|
+
export interface CompactionInput {
|
|
12
|
+
role: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
export interface CompactionResult {
|
|
16
|
+
summary: string;
|
|
17
|
+
firstKeptEntryId: string;
|
|
18
|
+
tokensBefore: number;
|
|
19
|
+
}
|
|
20
|
+
export interface CutPointResult {
|
|
21
|
+
firstKeptIndex: number;
|
|
22
|
+
isSplitTurn: boolean;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/compaction/types.ts"],"names":[],"mappings":"AAAA,mBAAmB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { AgentMessage, AgentEvent, AgentHooks, ThinkingLevel } from "../types.js";
|
|
2
|
+
import type { AgentTool } from "../tools/types.js";
|
|
3
|
+
import type { LLMProvider } from "../llm/types.js";
|
|
4
|
+
import type { Approval } from "../approval/types.js";
|
|
5
|
+
import type { SessionManager } from "../session/session-manager.js";
|
|
6
|
+
import type { CheckpointManager } from "../checkpoint/checkpoint-manager.js";
|
|
7
|
+
import type { InjectionManager } from "../injection/injection-manager.js";
|
|
8
|
+
import type { ExtensionRunner } from "../extensions/runner.js";
|
|
9
|
+
import type { CompactionConfig } from "../compaction/types.js";
|
|
10
|
+
export interface AgentLoopConfig {
|
|
11
|
+
provider: LLMProvider;
|
|
12
|
+
modelId: string;
|
|
13
|
+
systemPrompt: string;
|
|
14
|
+
tools: AgentTool[];
|
|
15
|
+
approval: Approval;
|
|
16
|
+
agentName: string;
|
|
17
|
+
toolExecution: "sequential" | "parallel";
|
|
18
|
+
maxStepsPerTurn: number;
|
|
19
|
+
thinkingLevel?: ThinkingLevel;
|
|
20
|
+
capabilities?: {
|
|
21
|
+
vision?: boolean;
|
|
22
|
+
thinking?: boolean;
|
|
23
|
+
};
|
|
24
|
+
hooks?: AgentHooks;
|
|
25
|
+
getSteeringMessages?: () => AgentMessage[];
|
|
26
|
+
getFollowUpMessages?: () => AgentMessage[];
|
|
27
|
+
onEvent: (event: AgentEvent) => void;
|
|
28
|
+
signal: AbortSignal;
|
|
29
|
+
sessionManager?: SessionManager;
|
|
30
|
+
checkpointManager?: CheckpointManager;
|
|
31
|
+
injectionManager?: InjectionManager;
|
|
32
|
+
extensionRunner?: ExtensionRunner;
|
|
33
|
+
compaction?: CompactionConfig & {
|
|
34
|
+
summarize?: (messages: AgentMessage[]) => Promise<string>;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export declare function runAgentLoop(initialMessages: AgentMessage[], config: AgentLoopConfig): Promise<AgentMessage[]>;
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
// Agent loop — nested while loop with full integration
|
|
2
|
+
// session, compaction, checkpoint, injection, extension all wired in
|
|
3
|
+
import { executeToolCalls } from "../tools/executor.js";
|
|
4
|
+
import { estimateTokens, shouldCompact, findCutPoint } from "../compaction/compaction.js";
|
|
5
|
+
import { normalizeHistory } from "../injection/history-normalizer.js";
|
|
6
|
+
function defaultConvertToLlm(messages) {
|
|
7
|
+
return messages.filter((m) => typeof m === "object" && m !== null && "role" in m &&
|
|
8
|
+
(m.role === "user" || m.role === "assistant" || m.role === "tool_result"));
|
|
9
|
+
}
|
|
10
|
+
/** Strip image content blocks from messages when the model lacks vision. */
|
|
11
|
+
function stripImages(messages) {
|
|
12
|
+
return messages.map((m) => {
|
|
13
|
+
if ((m.role === "user" || m.role === "tool_result") && Array.isArray(m.content)) {
|
|
14
|
+
const filtered = m.content.filter((b) => b.type !== "image");
|
|
15
|
+
return { ...m, content: filtered.length > 0 ? filtered : "[image removed — model does not support vision]" };
|
|
16
|
+
}
|
|
17
|
+
return m;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function toolsToDefinitions(tools) {
|
|
21
|
+
return tools.map((t) => ({
|
|
22
|
+
name: t.name,
|
|
23
|
+
description: t.description,
|
|
24
|
+
inputSchema: t.parameters,
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
function extractToolCalls(message) {
|
|
28
|
+
return message.content.filter((b) => b.type === "tool_call");
|
|
29
|
+
}
|
|
30
|
+
function toolResultsToMessages(results) {
|
|
31
|
+
return results.map((r) => ({
|
|
32
|
+
role: "tool_result",
|
|
33
|
+
toolCallId: r.toolCallId,
|
|
34
|
+
content: r.result.content,
|
|
35
|
+
isError: r.isError || undefined,
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
export async function runAgentLoop(initialMessages, config) {
|
|
39
|
+
const allMessages = [...initialMessages];
|
|
40
|
+
const { onEvent, sessionManager, checkpointManager, injectionManager, extensionRunner, compaction } = config;
|
|
41
|
+
// Merge extension-registered tools with config tools
|
|
42
|
+
let allTools = extensionRunner
|
|
43
|
+
? [...config.tools, ...extensionRunner.getRegisteredTools()]
|
|
44
|
+
: config.tools;
|
|
45
|
+
// Mutable copies of config values that before_agent_start can override
|
|
46
|
+
let { modelId, systemPrompt, thinkingLevel } = config;
|
|
47
|
+
// --- before_agent_start: let extensions modify agent config ---
|
|
48
|
+
if (extensionRunner) {
|
|
49
|
+
const result = await extensionRunner.emitBeforeAgentStart({
|
|
50
|
+
systemPrompt,
|
|
51
|
+
tools: allTools,
|
|
52
|
+
modelId,
|
|
53
|
+
thinkingLevel,
|
|
54
|
+
});
|
|
55
|
+
if (result) {
|
|
56
|
+
if (result.systemPrompt !== undefined)
|
|
57
|
+
systemPrompt = result.systemPrompt;
|
|
58
|
+
if (result.tools !== undefined)
|
|
59
|
+
allTools = result.tools;
|
|
60
|
+
if (result.modelId !== undefined)
|
|
61
|
+
modelId = result.modelId;
|
|
62
|
+
if (result.thinkingLevel !== undefined)
|
|
63
|
+
thinkingLevel = result.thinkingLevel;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
onEvent({ type: "agent_start" });
|
|
67
|
+
await extensionRunner?.emitSimple("agent_start");
|
|
68
|
+
try {
|
|
69
|
+
// Outer loop: follow-up messages
|
|
70
|
+
let hasFollowUp = true;
|
|
71
|
+
while (hasFollowUp && !config.signal.aborted) {
|
|
72
|
+
hasFollowUp = false;
|
|
73
|
+
// Inner loop: tool calls + steering
|
|
74
|
+
let hasMoreWork = true;
|
|
75
|
+
let stepCount = 0;
|
|
76
|
+
while (hasMoreWork && !config.signal.aborted) {
|
|
77
|
+
hasMoreWork = false;
|
|
78
|
+
if (stepCount >= config.maxStepsPerTurn)
|
|
79
|
+
break;
|
|
80
|
+
stepCount++;
|
|
81
|
+
// --- Checkpoint (before each step) ---
|
|
82
|
+
if (checkpointManager) {
|
|
83
|
+
const cp = await checkpointManager.checkpoint();
|
|
84
|
+
onEvent({ type: "checkpoint", id: cp.checkpointId });
|
|
85
|
+
}
|
|
86
|
+
// --- Compaction check ---
|
|
87
|
+
if (compaction?.enabled !== false && compaction?.maxContextTokens) {
|
|
88
|
+
const tokens = estimateTokens(allMessages);
|
|
89
|
+
const reserve = compaction.reserveTokens ?? 16384;
|
|
90
|
+
if (shouldCompact(tokens, compaction.maxContextTokens, reserve)) {
|
|
91
|
+
onEvent({ type: "compaction_start" });
|
|
92
|
+
// Let extensions intercept
|
|
93
|
+
const extResult = await extensionRunner?.emitBeforeCompact({ messages: allMessages });
|
|
94
|
+
if (!extResult?.skip) {
|
|
95
|
+
const keepTokens = compaction.keepRecentTokens ?? 20000;
|
|
96
|
+
const cutPoint = findCutPoint(allMessages, keepTokens);
|
|
97
|
+
if (cutPoint.firstKeptIndex > 0) {
|
|
98
|
+
const toDiscard = allMessages.slice(0, cutPoint.firstKeptIndex);
|
|
99
|
+
const toKeep = allMessages.slice(cutPoint.firstKeptIndex);
|
|
100
|
+
let summary = extResult?.summary ?? "";
|
|
101
|
+
if (!summary && compaction.summarize) {
|
|
102
|
+
summary = await compaction.summarize(toDiscard);
|
|
103
|
+
}
|
|
104
|
+
// Replace messages: summary + kept
|
|
105
|
+
allMessages.length = 0;
|
|
106
|
+
if (summary) {
|
|
107
|
+
const summaryMsg = {
|
|
108
|
+
role: "user",
|
|
109
|
+
content: `<compaction-summary>${summary}</compaction-summary>`,
|
|
110
|
+
};
|
|
111
|
+
allMessages.push(summaryMsg);
|
|
112
|
+
}
|
|
113
|
+
allMessages.push(...toKeep);
|
|
114
|
+
// Persist compaction to session
|
|
115
|
+
// Append compaction entry as boundary marker, then re-append
|
|
116
|
+
// kept messages after it so buildSessionContext picks them up
|
|
117
|
+
if (sessionManager) {
|
|
118
|
+
await sessionManager.appendCompaction(summary, sessionManager.getLeafId() ?? "", tokens);
|
|
119
|
+
for (const msg of toKeep) {
|
|
120
|
+
await sessionManager.appendMessage(msg);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
onEvent({ type: "compaction_end", summary });
|
|
124
|
+
await extensionRunner?.emitSimple("after_compact", {
|
|
125
|
+
summary,
|
|
126
|
+
tokensBefore: tokens,
|
|
127
|
+
tokensAfter: estimateTokens(allMessages),
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// --- Dynamic injections ---
|
|
134
|
+
let contextMessages = [...allMessages];
|
|
135
|
+
if (injectionManager) {
|
|
136
|
+
const injections = await injectionManager.collectInjections(allMessages);
|
|
137
|
+
if (injections.length > 0) {
|
|
138
|
+
contextMessages.push(...injections);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// --- History normalization ---
|
|
142
|
+
contextMessages = normalizeHistory(contextMessages);
|
|
143
|
+
// --- Extension context hook ---
|
|
144
|
+
if (extensionRunner) {
|
|
145
|
+
const ctxResult = await extensionRunner.emitContext({ messages: contextMessages });
|
|
146
|
+
if (ctxResult?.messages) {
|
|
147
|
+
contextMessages = ctxResult.messages;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// --- Extension pending messages ---
|
|
151
|
+
if (extensionRunner) {
|
|
152
|
+
const extMsgs = extensionRunner.drainPendingMessages();
|
|
153
|
+
if (extMsgs.length > 0) {
|
|
154
|
+
allMessages.push(...extMsgs);
|
|
155
|
+
contextMessages.push(...extMsgs);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
onEvent({ type: "turn_start" });
|
|
159
|
+
await extensionRunner?.emitSimple("turn_start");
|
|
160
|
+
// --- Transform context (user hook) ---
|
|
161
|
+
if (config.hooks?.transformContext) {
|
|
162
|
+
contextMessages = await config.hooks.transformContext(contextMessages);
|
|
163
|
+
}
|
|
164
|
+
// --- Convert to LLM messages ---
|
|
165
|
+
const convertToLlm = config.hooks?.convertToLlm ?? defaultConvertToLlm;
|
|
166
|
+
let llmMessages = convertToLlm(contextMessages);
|
|
167
|
+
// --- Strip images if model lacks vision ---
|
|
168
|
+
if (config.capabilities?.vision === false) {
|
|
169
|
+
llmMessages = stripImages(llmMessages);
|
|
170
|
+
}
|
|
171
|
+
// --- Stream LLM response ---
|
|
172
|
+
const toolDefs = toolsToDefinitions(allTools);
|
|
173
|
+
let requestOptions = {
|
|
174
|
+
model: modelId,
|
|
175
|
+
systemPrompt,
|
|
176
|
+
messages: llmMessages,
|
|
177
|
+
tools: toolDefs.length > 0 ? toolDefs : undefined,
|
|
178
|
+
thinkingLevel: config.capabilities?.thinking !== false ? thinkingLevel : undefined,
|
|
179
|
+
signal: config.signal,
|
|
180
|
+
};
|
|
181
|
+
// --- before_provider_request: let extensions modify LLM request ---
|
|
182
|
+
if (extensionRunner) {
|
|
183
|
+
const reqResult = await extensionRunner.emitBeforeProviderRequest({
|
|
184
|
+
model: requestOptions.model,
|
|
185
|
+
systemPrompt: requestOptions.systemPrompt,
|
|
186
|
+
messages: requestOptions.messages,
|
|
187
|
+
tools: requestOptions.tools,
|
|
188
|
+
thinkingLevel: requestOptions.thinkingLevel,
|
|
189
|
+
});
|
|
190
|
+
if (reqResult) {
|
|
191
|
+
requestOptions = {
|
|
192
|
+
...requestOptions,
|
|
193
|
+
...(reqResult.systemPrompt !== undefined && { systemPrompt: reqResult.systemPrompt }),
|
|
194
|
+
...(reqResult.messages !== undefined && { messages: reqResult.messages }),
|
|
195
|
+
...(reqResult.tools !== undefined && { tools: reqResult.tools }),
|
|
196
|
+
...(reqResult.thinkingLevel !== undefined && { thinkingLevel: reqResult.thinkingLevel }),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
let assistantMessage = null;
|
|
201
|
+
let usage;
|
|
202
|
+
let messageStartEmitted = false;
|
|
203
|
+
for await (const event of config.provider.stream(requestOptions)) {
|
|
204
|
+
if (event.type === "done") {
|
|
205
|
+
assistantMessage = event.message;
|
|
206
|
+
usage = event.usage;
|
|
207
|
+
onEvent({ type: "message_end", message: event.message, usage: event.usage });
|
|
208
|
+
await extensionRunner?.emitSimple("message_end", { message: event.message });
|
|
209
|
+
}
|
|
210
|
+
else if (event.type === "error") {
|
|
211
|
+
onEvent({ type: "error", error: event.error });
|
|
212
|
+
throw event.error;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
if (!messageStartEmitted && (event.type === "text" || event.type === "tool_call_start" || event.type === "thinking")) {
|
|
216
|
+
const partial = { role: "assistant", content: [] };
|
|
217
|
+
onEvent({ type: "message_start", message: partial });
|
|
218
|
+
await extensionRunner?.emitSimple("message_start", { message: partial });
|
|
219
|
+
messageStartEmitted = true;
|
|
220
|
+
}
|
|
221
|
+
const partial = { role: "assistant", content: [] };
|
|
222
|
+
onEvent({ type: "message_update", message: partial, event });
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (!assistantMessage) {
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
allMessages.push(assistantMessage);
|
|
229
|
+
await sessionManager?.appendMessage(assistantMessage);
|
|
230
|
+
// --- Tool calls ---
|
|
231
|
+
const toolCalls = extractToolCalls(assistantMessage);
|
|
232
|
+
const toolResults = [];
|
|
233
|
+
if (toolCalls.length > 0) {
|
|
234
|
+
const results = await executeToolCalls(toolCalls, {
|
|
235
|
+
tools: allTools,
|
|
236
|
+
mode: config.toolExecution,
|
|
237
|
+
approval: config.approval,
|
|
238
|
+
agentName: config.agentName,
|
|
239
|
+
signal: config.signal,
|
|
240
|
+
beforeToolCall: async (ctx) => {
|
|
241
|
+
// Extension hook first
|
|
242
|
+
const extResult = await extensionRunner?.emitToolCall({
|
|
243
|
+
toolName: ctx.toolName,
|
|
244
|
+
toolCallId: ctx.toolCallId,
|
|
245
|
+
args: ctx.args,
|
|
246
|
+
});
|
|
247
|
+
if (extResult?.block)
|
|
248
|
+
return extResult;
|
|
249
|
+
// Then user hook
|
|
250
|
+
return config.hooks?.beforeToolCall?.(ctx);
|
|
251
|
+
},
|
|
252
|
+
afterToolCall: async (ctx) => {
|
|
253
|
+
// Extension hook first
|
|
254
|
+
const extResult = await extensionRunner?.emitToolResult({
|
|
255
|
+
toolName: ctx.toolName,
|
|
256
|
+
toolCallId: ctx.toolCallId,
|
|
257
|
+
args: ctx.args,
|
|
258
|
+
result: ctx.result,
|
|
259
|
+
isError: ctx.isError,
|
|
260
|
+
});
|
|
261
|
+
// Then user hook
|
|
262
|
+
const hookResult = await config.hooks?.afterToolCall?.(ctx);
|
|
263
|
+
return hookResult ?? extResult ?? undefined;
|
|
264
|
+
},
|
|
265
|
+
onEvent: (e) => onEvent(e),
|
|
266
|
+
});
|
|
267
|
+
const resultMessages = toolResultsToMessages(results);
|
|
268
|
+
toolResults.push(...resultMessages);
|
|
269
|
+
allMessages.push(...resultMessages);
|
|
270
|
+
// Persist tool results to session
|
|
271
|
+
for (const rm of resultMessages) {
|
|
272
|
+
await sessionManager?.appendMessage(rm);
|
|
273
|
+
}
|
|
274
|
+
hasMoreWork = true;
|
|
275
|
+
}
|
|
276
|
+
onEvent({ type: "turn_end", message: assistantMessage, toolResults });
|
|
277
|
+
await extensionRunner?.emitSimple("turn_end", { message: assistantMessage });
|
|
278
|
+
// --- D-Mail check (after tool execution) ---
|
|
279
|
+
if (checkpointManager) {
|
|
280
|
+
const dmailContent = await checkpointManager.handleDMail();
|
|
281
|
+
if (dmailContent) {
|
|
282
|
+
// Get the checkpoint ID the D-Mail targeted
|
|
283
|
+
const lastCheckpoint = checkpointManager.getAllCheckpoints();
|
|
284
|
+
const targetCheckpointId = lastCheckpoint.length > 0 ? lastCheckpoint[lastCheckpoint.length - 1].checkpointId : 0;
|
|
285
|
+
onEvent({ type: "dmail_received", checkpoint: targetCheckpointId, content: dmailContent });
|
|
286
|
+
// Rebuild allMessages from session context after branch
|
|
287
|
+
if (sessionManager) {
|
|
288
|
+
const ctx = sessionManager.buildSessionContext();
|
|
289
|
+
allMessages.length = 0;
|
|
290
|
+
allMessages.push(...ctx.messages);
|
|
291
|
+
}
|
|
292
|
+
// Inject D-Mail as system message
|
|
293
|
+
const dmailMsg = {
|
|
294
|
+
role: "user",
|
|
295
|
+
content: `<dmail>${dmailContent}</dmail>`,
|
|
296
|
+
};
|
|
297
|
+
allMessages.push(dmailMsg);
|
|
298
|
+
await sessionManager?.appendMessage(dmailMsg);
|
|
299
|
+
hasMoreWork = true;
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// --- Steering messages ---
|
|
304
|
+
if (config.getSteeringMessages) {
|
|
305
|
+
const steering = config.getSteeringMessages();
|
|
306
|
+
if (steering.length > 0) {
|
|
307
|
+
allMessages.push(...steering);
|
|
308
|
+
for (const sm of steering) {
|
|
309
|
+
await sessionManager?.appendMessage(sm);
|
|
310
|
+
}
|
|
311
|
+
hasMoreWork = true;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// --- Follow-up messages ---
|
|
316
|
+
if (config.getFollowUpMessages) {
|
|
317
|
+
const followUps = config.getFollowUpMessages();
|
|
318
|
+
if (followUps.length > 0) {
|
|
319
|
+
allMessages.push(...followUps);
|
|
320
|
+
for (const fm of followUps) {
|
|
321
|
+
await sessionManager?.appendMessage(fm);
|
|
322
|
+
}
|
|
323
|
+
hasFollowUp = true;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
if (!(err instanceof Error && err.name === "AbortError")) {
|
|
330
|
+
onEvent({ type: "error", error: err instanceof Error ? err : new Error(String(err)) });
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
onEvent({ type: "agent_end", messages: allMessages });
|
|
334
|
+
await extensionRunner?.emitSimple("agent_end", { messages: allMessages });
|
|
335
|
+
return allMessages;
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=agent-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../src/core/agent-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { AgentMessage, AgentEvent, AgentState, AgentHooks, ModelConfig, ThinkingLevel } from "../types.js";
|
|
2
|
+
import type { AgentTool } from "../tools/types.js";
|
|
3
|
+
import type { Approval } from "../approval/types.js";
|
|
4
|
+
import type { LLMProvider } from "../llm/types.js";
|
|
5
|
+
import type { SessionConfig } from "../session/types.js";
|
|
6
|
+
import type { CompactionConfig } from "../compaction/types.js";
|
|
7
|
+
import type { CheckpointConfig } from "../checkpoint/types.js";
|
|
8
|
+
import type { DynamicInjectionProvider } from "../injection/types.js";
|
|
9
|
+
import type { ExtensionFactory } from "../extensions/types.js";
|
|
10
|
+
import type { SubagentConfig } from "../multi-agent/types.js";
|
|
11
|
+
import type { SkillSource } from "../skills/types.js";
|
|
12
|
+
import type { MCPServerConfig, MCPClient } from "../tools/mcp-adapter.js";
|
|
13
|
+
import type { TaskFactory } from "../background/types.js";
|
|
14
|
+
import { SessionManager } from "../session/session-manager.js";
|
|
15
|
+
import { CheckpointManager } from "../checkpoint/checkpoint-manager.js";
|
|
16
|
+
import { InjectionManager } from "../injection/injection-manager.js";
|
|
17
|
+
import { ExtensionRunner } from "../extensions/runner.js";
|
|
18
|
+
import { LaborMarket } from "../multi-agent/labor-market.js";
|
|
19
|
+
import { MCPAdapter } from "../tools/mcp-adapter.js";
|
|
20
|
+
import { Wire } from "../wire/wire.js";
|
|
21
|
+
import { BackgroundTaskManager } from "../background/task-manager.js";
|
|
22
|
+
export interface AgentConfig {
|
|
23
|
+
model: ModelConfig;
|
|
24
|
+
systemPrompt: string | (() => string | Promise<string>);
|
|
25
|
+
tools: AgentTool[];
|
|
26
|
+
provider: LLMProvider;
|
|
27
|
+
approval: Approval;
|
|
28
|
+
name?: string;
|
|
29
|
+
toolExecution?: "sequential" | "parallel";
|
|
30
|
+
maxStepsPerTurn?: number;
|
|
31
|
+
thinkingLevel?: ThinkingLevel;
|
|
32
|
+
hooks?: AgentHooks;
|
|
33
|
+
session?: SessionConfig;
|
|
34
|
+
compaction?: CompactionConfig;
|
|
35
|
+
checkpoint?: CheckpointConfig;
|
|
36
|
+
injection?: DynamicInjectionProvider[];
|
|
37
|
+
extensions?: ExtensionFactory[];
|
|
38
|
+
subagents?: Record<string, SubagentConfig>;
|
|
39
|
+
skills?: SkillSource[];
|
|
40
|
+
mcp?: {
|
|
41
|
+
servers: MCPServerConfig[];
|
|
42
|
+
clientFactory: (config: MCPServerConfig) => MCPClient;
|
|
43
|
+
};
|
|
44
|
+
wire?: {
|
|
45
|
+
bufferSize?: number;
|
|
46
|
+
};
|
|
47
|
+
backgroundTasks?: {
|
|
48
|
+
factories?: Record<string, TaskFactory>;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export declare class Agent {
|
|
52
|
+
private _state;
|
|
53
|
+
private _provider;
|
|
54
|
+
private _approval;
|
|
55
|
+
private _listeners;
|
|
56
|
+
private _steeringQueue;
|
|
57
|
+
private _followUpQueue;
|
|
58
|
+
private _abortController;
|
|
59
|
+
private _config;
|
|
60
|
+
private _name;
|
|
61
|
+
private _sessionManager;
|
|
62
|
+
private _checkpointManager;
|
|
63
|
+
private _injectionManager;
|
|
64
|
+
private _extensionRunner;
|
|
65
|
+
private _laborMarket;
|
|
66
|
+
private _taskExecutor;
|
|
67
|
+
private _mcpAdapter;
|
|
68
|
+
private _wire;
|
|
69
|
+
private _backgroundTaskManager;
|
|
70
|
+
private _initialized;
|
|
71
|
+
constructor(config: AgentConfig);
|
|
72
|
+
prompt(input: string | AgentMessage | AgentMessage[]): Promise<AgentMessage[]>;
|
|
73
|
+
continue(): Promise<AgentMessage[]>;
|
|
74
|
+
steer(message: AgentMessage): void;
|
|
75
|
+
followUp(message: AgentMessage): void;
|
|
76
|
+
abort(): void;
|
|
77
|
+
subscribe(fn: (event: AgentEvent) => void): () => void;
|
|
78
|
+
get state(): AgentState;
|
|
79
|
+
get approval(): Approval;
|
|
80
|
+
get session(): SessionManager | undefined;
|
|
81
|
+
get checkpoints(): CheckpointManager | undefined;
|
|
82
|
+
get extensions(): ExtensionRunner | undefined;
|
|
83
|
+
get injections(): InjectionManager | undefined;
|
|
84
|
+
get laborMarket(): LaborMarket | undefined;
|
|
85
|
+
get mcpAdapter(): MCPAdapter | undefined;
|
|
86
|
+
get wire(): Wire;
|
|
87
|
+
get backgroundTasks(): BackgroundTaskManager | undefined;
|
|
88
|
+
setSystemPrompt(prompt: string): void;
|
|
89
|
+
setModel(model: ModelConfig): void;
|
|
90
|
+
setTools(tools: AgentTool[]): void;
|
|
91
|
+
setThinkingLevel(level: ThinkingLevel): void;
|
|
92
|
+
dispose(): Promise<void>;
|
|
93
|
+
private _ensureInitialized;
|
|
94
|
+
private _normalizeInput;
|
|
95
|
+
private _emit;
|
|
96
|
+
private _runLoop;
|
|
97
|
+
}
|