@kenkaiiii/gg-agent 0.0.2 → 1.0.4
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-loop.d.ts +6 -0
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +127 -37
- package/dist/agent-loop.js.map +1 -1
- package/dist/agent-loop.test.d.ts +2 -0
- package/dist/agent-loop.test.d.ts.map +1 -0
- package/dist/agent-loop.test.js +229 -0
- package/dist/agent-loop.test.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +34 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -10
package/dist/agent-loop.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { type Message } from "@kenkaiiii/gg-ai";
|
|
2
2
|
import type { AgentEvent, AgentOptions, AgentResult } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Detect context window overflow errors from LLM providers.
|
|
5
|
+
* Anthropic: "prompt is too long: N tokens > M maximum"
|
|
6
|
+
* OpenAI: "context_length_exceeded" / "maximum context length"
|
|
7
|
+
*/
|
|
8
|
+
export declare function isContextOverflow(err: unknown): boolean;
|
|
3
9
|
export declare function agentLoop(messages: Message[], options: AgentOptions): AsyncGenerator<AgentEvent, AgentResult>;
|
|
4
10
|
//# sourceMappingURL=agent-loop.d.ts.map
|
package/dist/agent-loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EAMb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EAKZ,MAAM,YAAY,CAAC;AAIpB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CASvD;AAED,wBAAuB,SAAS,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,YAAY,GACpB,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,CAuNzC"}
|
package/dist/agent-loop.js
CHANGED
|
@@ -1,38 +1,98 @@
|
|
|
1
|
-
import { stream, } from "@kenkaiiii/gg-ai";
|
|
1
|
+
import { stream, EventStream, } from "@kenkaiiii/gg-ai";
|
|
2
2
|
const DEFAULT_MAX_TURNS = 40;
|
|
3
|
+
/**
|
|
4
|
+
* Detect context window overflow errors from LLM providers.
|
|
5
|
+
* Anthropic: "prompt is too long: N tokens > M maximum"
|
|
6
|
+
* OpenAI: "context_length_exceeded" / "maximum context length"
|
|
7
|
+
*/
|
|
8
|
+
export function isContextOverflow(err) {
|
|
9
|
+
if (!(err instanceof Error))
|
|
10
|
+
return false;
|
|
11
|
+
const msg = err.message.toLowerCase();
|
|
12
|
+
return (msg.includes("prompt is too long") ||
|
|
13
|
+
msg.includes("context_length_exceeded") ||
|
|
14
|
+
msg.includes("maximum context length") ||
|
|
15
|
+
(msg.includes("token") && msg.includes("exceed")));
|
|
16
|
+
}
|
|
3
17
|
export async function* agentLoop(messages, options) {
|
|
4
18
|
const maxTurns = options.maxTurns ?? DEFAULT_MAX_TURNS;
|
|
5
19
|
const toolMap = new Map((options.tools ?? []).map((t) => [t.name, t]));
|
|
6
20
|
const totalUsage = { inputTokens: 0, outputTokens: 0 };
|
|
7
21
|
let turn = 0;
|
|
22
|
+
let overflowRetried = false;
|
|
8
23
|
while (turn < maxTurns) {
|
|
9
24
|
options.signal?.throwIfAborted();
|
|
10
25
|
turn++;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
messages
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
// ── Mid-loop context transform (compaction / truncation) ──
|
|
27
|
+
if (options.transformContext) {
|
|
28
|
+
const transformed = await options.transformContext(messages);
|
|
29
|
+
if (transformed !== messages) {
|
|
30
|
+
messages.length = 0;
|
|
31
|
+
messages.push(...transformed);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// ── Call LLM with overflow recovery ──
|
|
35
|
+
let response;
|
|
36
|
+
try {
|
|
37
|
+
const result = stream({
|
|
38
|
+
provider: options.provider,
|
|
39
|
+
model: options.model,
|
|
40
|
+
messages,
|
|
41
|
+
tools: options.tools,
|
|
42
|
+
serverTools: options.serverTools,
|
|
43
|
+
maxTokens: options.maxTokens,
|
|
44
|
+
temperature: options.temperature,
|
|
45
|
+
thinking: options.thinking,
|
|
46
|
+
apiKey: options.apiKey,
|
|
47
|
+
baseUrl: options.baseUrl,
|
|
48
|
+
signal: options.signal,
|
|
49
|
+
accountId: options.accountId,
|
|
50
|
+
});
|
|
51
|
+
// Suppress unhandled rejection if the iterator path throws first
|
|
52
|
+
result.response.catch(() => { });
|
|
53
|
+
// Forward streaming deltas
|
|
54
|
+
for await (const event of result) {
|
|
55
|
+
if (event.type === "text_delta") {
|
|
56
|
+
yield { type: "text_delta", text: event.text };
|
|
57
|
+
}
|
|
58
|
+
else if (event.type === "thinking_delta") {
|
|
59
|
+
yield { type: "thinking_delta", text: event.text };
|
|
60
|
+
}
|
|
61
|
+
else if (event.type === "server_toolcall") {
|
|
62
|
+
yield {
|
|
63
|
+
type: "server_tool_call",
|
|
64
|
+
id: event.id,
|
|
65
|
+
name: event.name,
|
|
66
|
+
input: event.input,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
else if (event.type === "server_toolresult") {
|
|
70
|
+
yield {
|
|
71
|
+
type: "server_tool_result",
|
|
72
|
+
toolUseId: event.toolUseId,
|
|
73
|
+
resultType: event.resultType,
|
|
74
|
+
data: event.data,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
30
77
|
}
|
|
31
|
-
|
|
32
|
-
|
|
78
|
+
response = await result.response;
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
// Context overflow: compact via transformContext and retry once
|
|
82
|
+
if (!overflowRetried && isContextOverflow(err) && options.transformContext) {
|
|
83
|
+
overflowRetried = true;
|
|
84
|
+
const transformed = await options.transformContext(messages);
|
|
85
|
+
if (transformed !== messages) {
|
|
86
|
+
messages.length = 0;
|
|
87
|
+
messages.push(...transformed);
|
|
88
|
+
}
|
|
89
|
+
turn--; // Don't count the failed turn
|
|
90
|
+
continue;
|
|
33
91
|
}
|
|
92
|
+
throw err;
|
|
34
93
|
}
|
|
35
|
-
|
|
94
|
+
// Reset overflow flag after successful call
|
|
95
|
+
overflowRetried = false;
|
|
36
96
|
// Accumulate usage
|
|
37
97
|
totalUsage.inputTokens += response.usage.inputTokens;
|
|
38
98
|
totalUsage.outputTokens += response.usage.outputTokens;
|
|
@@ -57,19 +117,21 @@ export async function* agentLoop(messages, options) {
|
|
|
57
117
|
totalUsage: { ...totalUsage },
|
|
58
118
|
};
|
|
59
119
|
}
|
|
60
|
-
// Extract and execute tool calls
|
|
120
|
+
// Extract and execute tool calls in parallel
|
|
61
121
|
const toolCalls = extractToolCalls(response.message.content);
|
|
62
122
|
const toolResults = [];
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
123
|
+
const eventStream = new EventStream();
|
|
124
|
+
// Launch all tool calls in parallel
|
|
125
|
+
const executions = toolCalls.map(async (toolCall) => {
|
|
126
|
+
const startTime = Date.now();
|
|
127
|
+
eventStream.push({
|
|
66
128
|
type: "tool_call_start",
|
|
67
129
|
toolCallId: toolCall.id,
|
|
68
130
|
name: toolCall.name,
|
|
69
131
|
args: toolCall.args,
|
|
70
|
-
};
|
|
71
|
-
const startTime = Date.now();
|
|
132
|
+
});
|
|
72
133
|
let resultContent;
|
|
134
|
+
let details;
|
|
73
135
|
let isError = false;
|
|
74
136
|
const tool = toolMap.get(toolCall.name);
|
|
75
137
|
if (!tool) {
|
|
@@ -82,8 +144,18 @@ export async function* agentLoop(messages, options) {
|
|
|
82
144
|
const ctx = {
|
|
83
145
|
signal: options.signal ?? AbortSignal.timeout(300_000),
|
|
84
146
|
toolCallId: toolCall.id,
|
|
147
|
+
onUpdate: (update) => {
|
|
148
|
+
eventStream.push({
|
|
149
|
+
type: "tool_call_update",
|
|
150
|
+
toolCallId: toolCall.id,
|
|
151
|
+
update,
|
|
152
|
+
});
|
|
153
|
+
},
|
|
85
154
|
};
|
|
86
|
-
|
|
155
|
+
const raw = await tool.execute(parsed, ctx);
|
|
156
|
+
const normalized = normalizeToolResult(raw);
|
|
157
|
+
resultContent = normalized.content;
|
|
158
|
+
details = normalized.details;
|
|
87
159
|
}
|
|
88
160
|
catch (err) {
|
|
89
161
|
isError = true;
|
|
@@ -91,19 +163,34 @@ export async function* agentLoop(messages, options) {
|
|
|
91
163
|
}
|
|
92
164
|
}
|
|
93
165
|
const durationMs = Date.now() - startTime;
|
|
94
|
-
|
|
166
|
+
eventStream.push({
|
|
95
167
|
type: "tool_call_end",
|
|
96
168
|
toolCallId: toolCall.id,
|
|
97
169
|
result: resultContent,
|
|
170
|
+
details,
|
|
98
171
|
isError,
|
|
99
172
|
durationMs,
|
|
100
|
-
};
|
|
101
|
-
toolResults.push({
|
|
102
|
-
type: "tool_result",
|
|
103
|
-
toolCallId: toolCall.id,
|
|
104
|
-
content: resultContent,
|
|
105
|
-
isError: isError || undefined,
|
|
106
173
|
});
|
|
174
|
+
return { toolCallId: toolCall.id, content: resultContent, isError };
|
|
175
|
+
});
|
|
176
|
+
// Close event stream when all tools complete
|
|
177
|
+
Promise.all(executions)
|
|
178
|
+
.then((results) => {
|
|
179
|
+
for (const tc of toolCalls) {
|
|
180
|
+
const r = results.find((x) => x.toolCallId === tc.id);
|
|
181
|
+
toolResults.push({
|
|
182
|
+
type: "tool_result",
|
|
183
|
+
toolCallId: tc.id,
|
|
184
|
+
content: r.content,
|
|
185
|
+
isError: r.isError || undefined,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
eventStream.close();
|
|
189
|
+
})
|
|
190
|
+
.catch((err) => eventStream.abort(err instanceof Error ? err : new Error(String(err))));
|
|
191
|
+
// Yield events as they arrive from parallel tools
|
|
192
|
+
for await (const event of eventStream) {
|
|
193
|
+
yield event;
|
|
107
194
|
}
|
|
108
195
|
// Push tool results back into conversation
|
|
109
196
|
messages.push({ role: "tool", content: toolResults });
|
|
@@ -123,6 +210,9 @@ export async function* agentLoop(messages, options) {
|
|
|
123
210
|
totalUsage: { ...totalUsage },
|
|
124
211
|
};
|
|
125
212
|
}
|
|
213
|
+
function normalizeToolResult(raw) {
|
|
214
|
+
return typeof raw === "string" ? { content: raw } : raw;
|
|
215
|
+
}
|
|
126
216
|
function extractToolCalls(content) {
|
|
127
217
|
if (typeof content === "string")
|
|
128
218
|
return [];
|
package/dist/agent-loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-loop.test.d.ts","sourceRoot":"","sources":["../src/agent-loop.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { isContextOverflow, agentLoop } from "./agent-loop.js";
|
|
3
|
+
// ── Mock stream ────────────────────────────────────────────
|
|
4
|
+
vi.mock("@kenkaiiii/gg-ai", async (importOriginal) => {
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
|
|
6
|
+
const mod = await importOriginal();
|
|
7
|
+
return { ...mod, stream: vi.fn() };
|
|
8
|
+
});
|
|
9
|
+
import { stream } from "@kenkaiiii/gg-ai";
|
|
10
|
+
const mockStream = vi.mocked(stream);
|
|
11
|
+
function makeResponse(text, stopReason = "end_turn") {
|
|
12
|
+
return {
|
|
13
|
+
message: {
|
|
14
|
+
role: "assistant",
|
|
15
|
+
content: text ? [{ type: "text", text }] : "",
|
|
16
|
+
},
|
|
17
|
+
stopReason,
|
|
18
|
+
usage: { inputTokens: 100, outputTokens: 50 },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function mockOkResult(text) {
|
|
22
|
+
const resp = makeResponse(text);
|
|
23
|
+
const events = text ? [{ type: "text_delta", text }] : [];
|
|
24
|
+
return {
|
|
25
|
+
[Symbol.asyncIterator]: async function* () {
|
|
26
|
+
for (const e of events)
|
|
27
|
+
yield e;
|
|
28
|
+
},
|
|
29
|
+
response: Promise.resolve(resp),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function mockErrorResult(error) {
|
|
33
|
+
const p = Promise.reject(error);
|
|
34
|
+
p.catch(() => { }); // prevent unhandled rejection
|
|
35
|
+
return {
|
|
36
|
+
[Symbol.asyncIterator]: async function* () {
|
|
37
|
+
yield* []; // satisfy require-yield
|
|
38
|
+
throw error;
|
|
39
|
+
},
|
|
40
|
+
response: p,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async function collectLoop(messages, opts) {
|
|
44
|
+
const gen = agentLoop(messages, opts);
|
|
45
|
+
const events = [];
|
|
46
|
+
let result;
|
|
47
|
+
while (true) {
|
|
48
|
+
const next = await gen.next();
|
|
49
|
+
if (next.done) {
|
|
50
|
+
result = next.value;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
events.push(next.value);
|
|
54
|
+
}
|
|
55
|
+
return { events, result: result };
|
|
56
|
+
}
|
|
57
|
+
// ── Tests ──────────────────────────────────────────────────
|
|
58
|
+
describe("isContextOverflow", () => {
|
|
59
|
+
it("detects Anthropic overflow error", () => {
|
|
60
|
+
const err = new Error("[anthropic] prompt is too long: 203456 tokens > 200000 maximum");
|
|
61
|
+
expect(isContextOverflow(err)).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
it("detects OpenAI overflow error", () => {
|
|
64
|
+
const err = new Error("[openai] This model's maximum context length is 128000 tokens. " +
|
|
65
|
+
"However, your messages resulted in 130000 tokens.");
|
|
66
|
+
expect(isContextOverflow(err)).toBe(true);
|
|
67
|
+
});
|
|
68
|
+
it("detects context_length_exceeded code", () => {
|
|
69
|
+
const err = new Error("context_length_exceeded");
|
|
70
|
+
expect(isContextOverflow(err)).toBe(true);
|
|
71
|
+
});
|
|
72
|
+
it("detects token exceed pattern", () => {
|
|
73
|
+
const err = new Error("Request token count exceeds the limit");
|
|
74
|
+
expect(isContextOverflow(err)).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
it("returns false for unrelated errors", () => {
|
|
77
|
+
expect(isContextOverflow(new Error("network timeout"))).toBe(false);
|
|
78
|
+
expect(isContextOverflow(new Error("authentication failed"))).toBe(false);
|
|
79
|
+
expect(isContextOverflow(new Error("rate limit exceeded"))).toBe(false);
|
|
80
|
+
});
|
|
81
|
+
it("returns false for non-Error values", () => {
|
|
82
|
+
expect(isContextOverflow("some string")).toBe(false);
|
|
83
|
+
expect(isContextOverflow(null)).toBe(false);
|
|
84
|
+
expect(isContextOverflow(undefined)).toBe(false);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe("agentLoop", () => {
|
|
88
|
+
beforeEach(() => {
|
|
89
|
+
vi.resetAllMocks();
|
|
90
|
+
});
|
|
91
|
+
it("yields text_delta, turn_end, and agent_done for a simple response", async () => {
|
|
92
|
+
mockStream.mockReturnValueOnce(mockOkResult("Hello!"));
|
|
93
|
+
const messages = [
|
|
94
|
+
{ role: "system", content: "You are helpful." },
|
|
95
|
+
{ role: "user", content: "Hi" },
|
|
96
|
+
];
|
|
97
|
+
const { events, result } = await collectLoop(messages, {
|
|
98
|
+
provider: "anthropic",
|
|
99
|
+
model: "test",
|
|
100
|
+
});
|
|
101
|
+
const types = events.map((e) => e.type);
|
|
102
|
+
expect(types).toContain("text_delta");
|
|
103
|
+
expect(types).toContain("turn_end");
|
|
104
|
+
expect(types).toContain("agent_done");
|
|
105
|
+
expect(result.totalTurns).toBe(1);
|
|
106
|
+
expect(result.totalUsage.inputTokens).toBe(100);
|
|
107
|
+
expect(result.totalUsage.outputTokens).toBe(50);
|
|
108
|
+
});
|
|
109
|
+
it("calls transformContext before each LLM call", async () => {
|
|
110
|
+
mockStream.mockReturnValueOnce(mockOkResult("Done"));
|
|
111
|
+
const messages = [
|
|
112
|
+
{ role: "system", content: "sys" },
|
|
113
|
+
{ role: "user", content: "test" },
|
|
114
|
+
];
|
|
115
|
+
const transformContext = vi.fn().mockImplementation((msgs) => msgs);
|
|
116
|
+
await collectLoop(messages, {
|
|
117
|
+
provider: "anthropic",
|
|
118
|
+
model: "test",
|
|
119
|
+
transformContext,
|
|
120
|
+
});
|
|
121
|
+
expect(transformContext).toHaveBeenCalledTimes(1);
|
|
122
|
+
expect(transformContext).toHaveBeenCalledWith(messages);
|
|
123
|
+
});
|
|
124
|
+
it("replaces messages when transformContext returns a new array", async () => {
|
|
125
|
+
mockStream.mockReturnValueOnce(mockOkResult("Ok"));
|
|
126
|
+
const original = [
|
|
127
|
+
{ role: "system", content: "sys" },
|
|
128
|
+
{ role: "user", content: "lots of old context" },
|
|
129
|
+
{ role: "assistant", content: "old reply" },
|
|
130
|
+
{ role: "user", content: "new question" },
|
|
131
|
+
];
|
|
132
|
+
const compacted = [
|
|
133
|
+
{ role: "system", content: "sys" },
|
|
134
|
+
{ role: "user", content: "new question" },
|
|
135
|
+
];
|
|
136
|
+
const transformContext = vi.fn().mockReturnValueOnce(compacted);
|
|
137
|
+
await collectLoop(original, {
|
|
138
|
+
provider: "anthropic",
|
|
139
|
+
model: "test",
|
|
140
|
+
transformContext,
|
|
141
|
+
});
|
|
142
|
+
// Original array should have been replaced in-place
|
|
143
|
+
expect(original.length).toBe(compacted.length + 1); // +1 for pushed assistant message
|
|
144
|
+
expect(original[0]).toEqual(compacted[0]);
|
|
145
|
+
expect(original[1]).toEqual(compacted[1]);
|
|
146
|
+
});
|
|
147
|
+
it("retries once on context overflow when transformContext is provided", async () => {
|
|
148
|
+
const overflowErr = new Error("prompt is too long: 250000 tokens > 200000 maximum");
|
|
149
|
+
mockStream
|
|
150
|
+
.mockReturnValueOnce(mockErrorResult(overflowErr))
|
|
151
|
+
.mockReturnValueOnce(mockOkResult("Recovered"));
|
|
152
|
+
const messages = [
|
|
153
|
+
{ role: "system", content: "sys" },
|
|
154
|
+
{ role: "user", content: "test" },
|
|
155
|
+
];
|
|
156
|
+
const compacted = [
|
|
157
|
+
{ role: "system", content: "sys" },
|
|
158
|
+
{ role: "user", content: "test" },
|
|
159
|
+
];
|
|
160
|
+
const transformContext = vi.fn().mockImplementation(() => compacted);
|
|
161
|
+
const { events, result } = await collectLoop(messages, {
|
|
162
|
+
provider: "anthropic",
|
|
163
|
+
model: "test",
|
|
164
|
+
transformContext,
|
|
165
|
+
});
|
|
166
|
+
// transformContext called 3 times: pre-call, on overflow, pre-retry
|
|
167
|
+
expect(transformContext).toHaveBeenCalledTimes(3);
|
|
168
|
+
expect(mockStream).toHaveBeenCalledTimes(2);
|
|
169
|
+
expect(result.totalTurns).toBe(1);
|
|
170
|
+
const textEvents = events.filter((e) => e.type === "text_delta");
|
|
171
|
+
expect(textEvents).toHaveLength(1);
|
|
172
|
+
});
|
|
173
|
+
it("throws on context overflow when no transformContext is provided", async () => {
|
|
174
|
+
const overflowErr = new Error("prompt is too long: 250000 tokens > 200000 maximum");
|
|
175
|
+
mockStream.mockReturnValueOnce(mockErrorResult(overflowErr));
|
|
176
|
+
const messages = [
|
|
177
|
+
{ role: "system", content: "sys" },
|
|
178
|
+
{ role: "user", content: "test" },
|
|
179
|
+
];
|
|
180
|
+
await expect(collectLoop(messages, { provider: "anthropic", model: "test" })).rejects.toThrow("prompt is too long");
|
|
181
|
+
});
|
|
182
|
+
it("throws on non-overflow errors even with transformContext", async () => {
|
|
183
|
+
const otherErr = new Error("authentication failed");
|
|
184
|
+
mockStream.mockReturnValueOnce(mockErrorResult(otherErr));
|
|
185
|
+
const messages = [
|
|
186
|
+
{ role: "system", content: "sys" },
|
|
187
|
+
{ role: "user", content: "test" },
|
|
188
|
+
];
|
|
189
|
+
const transformContext = vi.fn().mockImplementation((msgs) => msgs);
|
|
190
|
+
await expect(collectLoop(messages, { provider: "anthropic", model: "test", transformContext })).rejects.toThrow("authentication failed");
|
|
191
|
+
});
|
|
192
|
+
it("respects maxTurns", async () => {
|
|
193
|
+
// Return tool_use to force looping, but cap at 2 turns
|
|
194
|
+
const toolResponse = {
|
|
195
|
+
message: {
|
|
196
|
+
role: "assistant",
|
|
197
|
+
content: [{ type: "tool_call", id: "t1", name: "test_tool", args: {} }],
|
|
198
|
+
},
|
|
199
|
+
stopReason: "tool_use",
|
|
200
|
+
usage: { inputTokens: 50, outputTokens: 25 },
|
|
201
|
+
};
|
|
202
|
+
// Keep returning tool_use — loop should stop at maxTurns
|
|
203
|
+
mockStream.mockReturnValue({
|
|
204
|
+
[Symbol.asyncIterator]: async function* () {
|
|
205
|
+
// no text events
|
|
206
|
+
},
|
|
207
|
+
response: Promise.resolve(toolResponse),
|
|
208
|
+
});
|
|
209
|
+
const messages = [
|
|
210
|
+
{ role: "system", content: "sys" },
|
|
211
|
+
{ role: "user", content: "test" },
|
|
212
|
+
];
|
|
213
|
+
const { result } = await collectLoop(messages, {
|
|
214
|
+
provider: "anthropic",
|
|
215
|
+
model: "test",
|
|
216
|
+
maxTurns: 2,
|
|
217
|
+
tools: [
|
|
218
|
+
{
|
|
219
|
+
name: "test_tool",
|
|
220
|
+
description: "test",
|
|
221
|
+
parameters: { parse: () => ({}) },
|
|
222
|
+
execute: () => "result",
|
|
223
|
+
},
|
|
224
|
+
],
|
|
225
|
+
});
|
|
226
|
+
expect(result.totalTurns).toBe(2);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
//# sourceMappingURL=agent-loop.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-loop.test.js","sourceRoot":"","sources":["../src/agent-loop.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { Agent, AgentStream } from "./agent.js";
|
|
2
|
-
export { agentLoop } from "./agent-loop.js";
|
|
3
|
-
export type { ToolContext, AgentTool, AgentTextDeltaEvent, AgentThinkingDeltaEvent, AgentToolCallStartEvent, AgentToolCallEndEvent, AgentTurnEndEvent, AgentDoneEvent, AgentErrorEvent, AgentEvent, AgentOptions, AgentResult, } from "./types.js";
|
|
2
|
+
export { agentLoop, isContextOverflow } from "./agent-loop.js";
|
|
3
|
+
export type { StructuredToolResult, ToolExecuteResult, ToolContext, AgentTool, AgentTextDeltaEvent, AgentThinkingDeltaEvent, AgentToolCallStartEvent, AgentToolCallUpdateEvent, AgentToolCallEndEvent, AgentServerToolCallEvent, AgentServerToolResultEvent, AgentTurnEndEvent, AgentDoneEvent, AgentErrorEvent, AgentEvent, AgentOptions, AgentResult, } from "./types.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG/D,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
|
-
import type { Tool, AssistantMessage, StopReason, Usage, StreamOptions } from "@kenkaiiii/gg-ai";
|
|
2
|
+
import type { Tool, AssistantMessage, Message, ServerToolDefinition, StopReason, Usage, StreamOptions } from "@kenkaiiii/gg-ai";
|
|
3
|
+
export interface StructuredToolResult {
|
|
4
|
+
content: string;
|
|
5
|
+
details?: unknown;
|
|
6
|
+
}
|
|
7
|
+
export type ToolExecuteResult = string | StructuredToolResult;
|
|
3
8
|
export interface ToolContext {
|
|
4
9
|
signal: AbortSignal;
|
|
5
10
|
toolCallId: string;
|
|
11
|
+
onUpdate?: (update: unknown) => void;
|
|
6
12
|
}
|
|
7
13
|
export interface AgentTool<T extends z.ZodType = z.ZodType> extends Tool {
|
|
8
14
|
parameters: T;
|
|
9
|
-
execute: (args: z.infer<T>, context: ToolContext) =>
|
|
15
|
+
execute: (args: z.infer<T>, context: ToolContext) => ToolExecuteResult | Promise<ToolExecuteResult>;
|
|
10
16
|
}
|
|
11
17
|
export interface AgentTextDeltaEvent {
|
|
12
18
|
type: "text_delta";
|
|
@@ -22,10 +28,16 @@ export interface AgentToolCallStartEvent {
|
|
|
22
28
|
name: string;
|
|
23
29
|
args: Record<string, unknown>;
|
|
24
30
|
}
|
|
31
|
+
export interface AgentToolCallUpdateEvent {
|
|
32
|
+
type: "tool_call_update";
|
|
33
|
+
toolCallId: string;
|
|
34
|
+
update: unknown;
|
|
35
|
+
}
|
|
25
36
|
export interface AgentToolCallEndEvent {
|
|
26
37
|
type: "tool_call_end";
|
|
27
38
|
toolCallId: string;
|
|
28
39
|
result: string;
|
|
40
|
+
details?: unknown;
|
|
29
41
|
isError: boolean;
|
|
30
42
|
durationMs: number;
|
|
31
43
|
}
|
|
@@ -44,12 +56,25 @@ export interface AgentErrorEvent {
|
|
|
44
56
|
type: "error";
|
|
45
57
|
error: Error;
|
|
46
58
|
}
|
|
47
|
-
export
|
|
59
|
+
export interface AgentServerToolCallEvent {
|
|
60
|
+
type: "server_tool_call";
|
|
61
|
+
id: string;
|
|
62
|
+
name: string;
|
|
63
|
+
input: unknown;
|
|
64
|
+
}
|
|
65
|
+
export interface AgentServerToolResultEvent {
|
|
66
|
+
type: "server_tool_result";
|
|
67
|
+
toolUseId: string;
|
|
68
|
+
resultType: string;
|
|
69
|
+
data: unknown;
|
|
70
|
+
}
|
|
71
|
+
export type AgentEvent = AgentTextDeltaEvent | AgentThinkingDeltaEvent | AgentToolCallStartEvent | AgentToolCallUpdateEvent | AgentToolCallEndEvent | AgentServerToolCallEvent | AgentServerToolResultEvent | AgentTurnEndEvent | AgentDoneEvent | AgentErrorEvent;
|
|
48
72
|
export interface AgentOptions {
|
|
49
73
|
provider: StreamOptions["provider"];
|
|
50
74
|
model: string;
|
|
51
75
|
system?: string;
|
|
52
76
|
tools?: AgentTool[];
|
|
77
|
+
serverTools?: ServerToolDefinition[];
|
|
53
78
|
maxTurns?: number;
|
|
54
79
|
maxTokens?: number;
|
|
55
80
|
temperature?: number;
|
|
@@ -58,6 +83,12 @@ export interface AgentOptions {
|
|
|
58
83
|
baseUrl?: string;
|
|
59
84
|
signal?: AbortSignal;
|
|
60
85
|
accountId?: string;
|
|
86
|
+
/**
|
|
87
|
+
* Called before each LLM call. Allows the caller to inspect and transform
|
|
88
|
+
* the messages array (e.g. compaction, truncation). Return the same array
|
|
89
|
+
* for no-op, or a new array to replace the conversation context.
|
|
90
|
+
*/
|
|
91
|
+
transformContext?: (messages: Message[]) => Message[] | Promise<Message[]>;
|
|
61
92
|
}
|
|
62
93
|
export interface AgentResult {
|
|
63
94
|
message: AssistantMessage;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,KAAK,EACL,aAAa,EACd,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,oBAAoB,CAAC;AAI9D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAID,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAE,SAAQ,IAAI;IACtE,UAAU,EAAE,CAAC,CAAC;IACd,OAAO,EAAE,CACP,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAChB,OAAO,EAAE,WAAW,KACjB,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,kBAAkB,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,uBAAuB,GACvB,uBAAuB,GACvB,wBAAwB,GACxB,qBAAqB,GACrB,wBAAwB,GACxB,0BAA0B,GAC1B,iBAAiB,GACjB,cAAc,GACd,eAAe,CAAC;AAIpB,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC5E;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC;CACnB"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenkaiiii/gg-agent",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Agentic loop system with tool execution for LLMs",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/kenkaiiii/gg-coder",
|
|
9
|
+
"url": "git+https://github.com/kenkaiiii/gg-coder.git",
|
|
10
10
|
"directory": "packages/gg-agent"
|
|
11
11
|
},
|
|
12
12
|
"exports": {
|
|
@@ -15,14 +15,12 @@
|
|
|
15
15
|
"types": "./dist/index.d.ts"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
|
-
"files": [
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"check": "tsc --noEmit"
|
|
22
|
-
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
23
21
|
"dependencies": {
|
|
24
|
-
"
|
|
25
|
-
"
|
|
22
|
+
"zod": "^4.3.6",
|
|
23
|
+
"@kenkaiiii/gg-ai": "1.0.4"
|
|
26
24
|
},
|
|
27
25
|
"devDependencies": {
|
|
28
26
|
"typescript": "^5.9.3",
|
|
@@ -30,5 +28,9 @@
|
|
|
30
28
|
},
|
|
31
29
|
"publishConfig": {
|
|
32
30
|
"access": "public"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc",
|
|
34
|
+
"check": "tsc --noEmit"
|
|
33
35
|
}
|
|
34
|
-
}
|
|
36
|
+
}
|