@gaunt-sloth/core 0.1.7 → 2.0.0-alpha.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/.gsloth.exec.md +26 -0
- package/dist/config.d.ts +81 -1
- package/dist/config.js +118 -3
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +73 -0
- package/dist/core/GthAbstractAgent.js +448 -0
- package/dist/core/GthAbstractAgent.js.map +1 -0
- package/dist/core/GthAgentRunner.d.ts +21 -2
- package/dist/core/GthAgentRunner.js +30 -2
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.d.ts +9 -75
- package/dist/core/GthLangChainAgent.js +13 -433
- package/dist/core/GthLangChainAgent.js.map +1 -1
- package/dist/core/types.d.ts +63 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.js +2 -2
- package/dist/providers/deepseek.js +2 -2
- package/dist/providers/deepseek.js.map +1 -1
- package/dist/providers/google-genai.js +2 -2
- package/dist/providers/google-genai.js.map +1 -1
- package/dist/providers/modelDiscovery.d.ts +196 -0
- package/dist/providers/modelDiscovery.js +362 -0
- package/dist/providers/modelDiscovery.js.map +1 -0
- package/dist/providers/ollama.d.ts +5 -0
- package/dist/providers/ollama.js +79 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.js +28 -2
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/vertexai.js +2 -2
- package/dist/providers/vertexai.js.map +1 -1
- package/dist/providers/xai.js +2 -2
- package/dist/providers/xai.js.map +1 -1
- package/dist/runtime/singleShot.d.ts +19 -0
- package/dist/runtime/singleShot.js +62 -0
- package/dist/runtime/singleShot.js.map +1 -0
- package/dist/utils/fileUtils.d.ts +6 -0
- package/dist/utils/fileUtils.js +17 -0
- package/dist/utils/fileUtils.js.map +1 -1
- package/dist/utils/globalConfigUtils.d.ts +21 -0
- package/dist/utils/globalConfigUtils.js +25 -0
- package/dist/utils/globalConfigUtils.js.map +1 -1
- package/dist/utils/llmUtils.d.ts +1 -0
- package/dist/utils/llmUtils.js +4 -1
- package/dist/utils/llmUtils.js.map +1 -1
- package/dist/utils/systemUtils.d.ts +10 -0
- package/dist/utils/systemUtils.js +18 -1
- package/dist/utils/systemUtils.js.map +1 -1
- package/package.json +17 -14
|
@@ -1,79 +1,13 @@
|
|
|
1
1
|
import { GthConfig } from '#src/config.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { RunnableConfig } from '@langchain/core/runnables';
|
|
5
|
-
import { IterableReadableStream } from '@langchain/core/utils/stream';
|
|
2
|
+
import { GthCommand } from '#src/core/types.js';
|
|
3
|
+
import { GthAbstractAgent } from '#src/core/GthAbstractAgent.js';
|
|
6
4
|
import { BaseCheckpointSaver } from '@langchain/langgraph';
|
|
7
|
-
export type AgentStreamEvent
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
delta: string;
|
|
15
|
-
} | {
|
|
16
|
-
type: 'reasoning_end';
|
|
17
|
-
} | {
|
|
18
|
-
type: 'tool_start';
|
|
19
|
-
id: string;
|
|
20
|
-
name: string;
|
|
21
|
-
} | {
|
|
22
|
-
type: 'tool_args';
|
|
23
|
-
id: string;
|
|
24
|
-
delta: string;
|
|
25
|
-
} | {
|
|
26
|
-
type: 'tool_end';
|
|
27
|
-
id: string;
|
|
28
|
-
} | {
|
|
29
|
-
type: 'tool_result';
|
|
30
|
-
id: string;
|
|
31
|
-
content: string;
|
|
32
|
-
};
|
|
33
|
-
export declare class GthLangChainAgent implements GthAgentInterface {
|
|
34
|
-
private statusUpdate;
|
|
35
|
-
private resolvers;
|
|
36
|
-
private agent;
|
|
37
|
-
private config;
|
|
38
|
-
private command;
|
|
39
|
-
constructor(statusUpdate: StatusUpdateCallback, resolvers?: AgentResolvers);
|
|
5
|
+
export type { AgentStreamEvent } from '#src/core/types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Lean agent: builds a standard `createAgent` (ReAct) graph. All run/stream/event
|
|
8
|
+
* plumbing lives in {@link GthAbstractAgent}; this class only knows how to construct
|
|
9
|
+
* the graph in {@link init}.
|
|
10
|
+
*/
|
|
11
|
+
export declare class GthLangChainAgent extends GthAbstractAgent {
|
|
40
12
|
init(command: GthCommand | undefined, configIn: GthConfig, checkpointer?: BaseCheckpointSaver | undefined): Promise<void>;
|
|
41
|
-
/**
|
|
42
|
-
* Invoke LLM with a message and runnable config.
|
|
43
|
-
* For streaming use {@link #stream} method, streaming is preferred if model API supports it.
|
|
44
|
-
* Please note that this when tools are involved, this method will anyway do multiple LLM
|
|
45
|
-
* calls within LangChain dependency.
|
|
46
|
-
*/
|
|
47
|
-
invoke(messages: Message[], runConfig: RunnableConfig): Promise<string>;
|
|
48
|
-
/**
|
|
49
|
-
* Induce LLM to stream AI messages with a user message and runnable config.
|
|
50
|
-
* When stream is not appropriate use {@link invoke}.
|
|
51
|
-
*/
|
|
52
|
-
stream(messages: Message[], runConfig: RunnableConfig): Promise<IterableReadableStream<string>>;
|
|
53
|
-
/**
|
|
54
|
-
* Stream agent events as typed AgentStreamEvent objects.
|
|
55
|
-
* Yields text deltas, tool call lifecycle events, and tool results.
|
|
56
|
-
*
|
|
57
|
-
* If a tool with `metadata.client === true` triggers `interrupt()`, the underlying
|
|
58
|
-
* graph throws `GraphInterrupt`; this generator catches it and ends cleanly so the
|
|
59
|
-
* caller's transport (e.g. AG-UI SSE) can finish the run with the tool call hanging.
|
|
60
|
-
* Resume the suspended graph via {@link streamWithEventsResume} on the same thread id.
|
|
61
|
-
*/
|
|
62
|
-
streamWithEvents(messages: Message[], runConfig: RunnableConfig, signal?: AbortSignal): AsyncGenerator<AgentStreamEvent>;
|
|
63
|
-
/**
|
|
64
|
-
* Resume a graph that was suspended via `interrupt()` with the supplied value.
|
|
65
|
-
*
|
|
66
|
-
* The runnable config must carry the same `thread_id` used when the graph was
|
|
67
|
-
* suspended (the checkpointer keys state by thread). The resume value is whatever
|
|
68
|
-
* the suspending tool needs back — for frontend-fulfilled tools this is the value
|
|
69
|
-
* the client sends in `forwardedProps.command.resume`.
|
|
70
|
-
*/
|
|
71
|
-
streamWithEventsResume(resumeValue: unknown, runConfig: RunnableConfig, queuedMessages?: BaseMessage[], signal?: AbortSignal): AsyncGenerator<AgentStreamEvent>;
|
|
72
|
-
private processEventStream;
|
|
73
|
-
cleanup(): Promise<void>;
|
|
74
|
-
getEffectiveConfig(config: GthConfig, command: GthCommand | undefined): GthConfig;
|
|
75
|
-
/**
|
|
76
|
-
* Extract and flatten tools from toolkits
|
|
77
|
-
*/
|
|
78
|
-
private extractAndFlattenTools;
|
|
79
13
|
}
|
|
@@ -1,25 +1,16 @@
|
|
|
1
|
-
import { StatusLevel
|
|
2
|
-
import {
|
|
1
|
+
import { StatusLevel } from '#src/core/types.js';
|
|
2
|
+
import { GthAbstractAgent } from '#src/core/GthAbstractAgent.js';
|
|
3
|
+
import { debugLog, debugLogObject } from '#src/utils/debugUtils.js';
|
|
3
4
|
import { formatToolCalls } from '#src/utils/llmUtils.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { AIMessage, AIMessageChunk, ToolMessage } from '@langchain/core/messages';
|
|
7
|
-
import { IterableReadableStream } from '@langchain/core/utils/stream';
|
|
8
|
-
import { interrupt, Command, GraphInterrupt } from '@langchain/langgraph';
|
|
5
|
+
import { getCurrentWorkDir } from '#src/utils/systemUtils.js';
|
|
6
|
+
import { AIMessage } from '@langchain/core/messages';
|
|
9
7
|
import { createAgent, createMiddleware } from 'langchain';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
command = undefined;
|
|
17
|
-
constructor(statusUpdate, resolvers) {
|
|
18
|
-
this.statusUpdate = (level, message) => {
|
|
19
|
-
statusUpdate(level, message);
|
|
20
|
-
};
|
|
21
|
-
this.resolvers = resolvers;
|
|
22
|
-
}
|
|
8
|
+
/**
|
|
9
|
+
* Lean agent: builds a standard `createAgent` (ReAct) graph. All run/stream/event
|
|
10
|
+
* plumbing lives in {@link GthAbstractAgent}; this class only knows how to construct
|
|
11
|
+
* the graph in {@link init}.
|
|
12
|
+
*/
|
|
13
|
+
export class GthLangChainAgent extends GthAbstractAgent {
|
|
23
14
|
async init(command, configIn, checkpointer) {
|
|
24
15
|
this.command = command;
|
|
25
16
|
debugLog(`GthLangChainAgent.init called with command: ${command || 'default'}`);
|
|
@@ -81,6 +72,7 @@ export class GthLangChainAgent {
|
|
|
81
72
|
this.config.middleware, this.config)
|
|
82
73
|
: [];
|
|
83
74
|
// Add tool call status update middleware
|
|
75
|
+
const statusUpdate = this.statusUpdate;
|
|
84
76
|
const toolCallStatusMiddleware = createMiddleware({
|
|
85
77
|
name: 'GthMiddlewareToolCallStatusUpdate',
|
|
86
78
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -90,7 +82,7 @@ export class GthLangChainAgent {
|
|
|
90
82
|
if (AIMessage.isInstance(lastMessage) &&
|
|
91
83
|
lastMessage.tool_calls &&
|
|
92
84
|
lastMessage.tool_calls?.length > 0) {
|
|
93
|
-
|
|
85
|
+
statusUpdate(StatusLevel.INFO, `\nRequested tools: ${formatToolCalls(lastMessage.tool_calls)}\n`);
|
|
94
86
|
}
|
|
95
87
|
return state;
|
|
96
88
|
},
|
|
@@ -107,417 +99,5 @@ export class GthLangChainAgent {
|
|
|
107
99
|
});
|
|
108
100
|
debugLog('React agent created successfully');
|
|
109
101
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Invoke LLM with a message and runnable config.
|
|
112
|
-
* For streaming use {@link #stream} method, streaming is preferred if model API supports it.
|
|
113
|
-
* Please note that this when tools are involved, this method will anyway do multiple LLM
|
|
114
|
-
* calls within LangChain dependency.
|
|
115
|
-
*/
|
|
116
|
-
async invoke(messages, runConfig) {
|
|
117
|
-
if (!this.agent || !this.config) {
|
|
118
|
-
throw new Error('Agent not initialized. Call init() first.');
|
|
119
|
-
}
|
|
120
|
-
debugLog('=== Starting non-streaming invoke ===');
|
|
121
|
-
debugLogObject('LLM Input Messages', messages);
|
|
122
|
-
debugLogObject('Invoke RunConfig', runConfig);
|
|
123
|
-
try {
|
|
124
|
-
const progress = new ProgressIndicator('Thinking.');
|
|
125
|
-
try {
|
|
126
|
-
debugLog('Calling agent.invoke...');
|
|
127
|
-
const response = await this.agent.invoke({ messages }, runConfig);
|
|
128
|
-
const finalMessage = response.messages[response.messages.length - 1];
|
|
129
|
-
const finalContent = finalMessage?.content;
|
|
130
|
-
const processedContent = !this.config.writeBinaryOutputsToFile
|
|
131
|
-
? {
|
|
132
|
-
renderedContent: renderAssistantContent(finalContent),
|
|
133
|
-
successMessages: [],
|
|
134
|
-
}
|
|
135
|
-
: materializeBinaryOutputs(finalContent, this.command);
|
|
136
|
-
if (processedContent.renderedContent.trim().length > 0) {
|
|
137
|
-
this.statusUpdate(StatusLevel.DISPLAY, processedContent.renderedContent);
|
|
138
|
-
}
|
|
139
|
-
for (const successMessage of processedContent.successMessages) {
|
|
140
|
-
this.statusUpdate(StatusLevel.SUCCESS, successMessage);
|
|
141
|
-
}
|
|
142
|
-
return [processedContent.renderedContent, ...processedContent.successMessages]
|
|
143
|
-
.filter((part) => part.trim().length > 0)
|
|
144
|
-
.join('\n');
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
debugLogError('invoke inner', e);
|
|
148
|
-
if (e instanceof Error && e?.name === 'ToolException') {
|
|
149
|
-
throw e; // Re-throw ToolException to be handled by outer catch
|
|
150
|
-
}
|
|
151
|
-
const message = e instanceof Error ? e.message : String(e);
|
|
152
|
-
this.statusUpdate(StatusLevel.ERROR, `LLM invocation failed: ${message}`);
|
|
153
|
-
throw e;
|
|
154
|
-
}
|
|
155
|
-
finally {
|
|
156
|
-
progress.stop();
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
catch (error) {
|
|
160
|
-
debugLogError('invoke outer', error);
|
|
161
|
-
if (error instanceof Error) {
|
|
162
|
-
if (error?.name === 'ToolException') {
|
|
163
|
-
this.statusUpdate(StatusLevel.ERROR, `Tool execution failed: ${error?.message}`);
|
|
164
|
-
return `Tool execution failed: ${error?.message}`;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
throw error;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Induce LLM to stream AI messages with a user message and runnable config.
|
|
172
|
-
* When stream is not appropriate use {@link invoke}.
|
|
173
|
-
*/
|
|
174
|
-
async stream(messages, runConfig) {
|
|
175
|
-
if (!this.agent || !this.config) {
|
|
176
|
-
throw new Error('Agent not initialized. Call init() first.');
|
|
177
|
-
}
|
|
178
|
-
debugLog('=== Starting streaming invoke ===');
|
|
179
|
-
debugLogObject('LLM Input Messages', messages);
|
|
180
|
-
debugLogObject('Stream RunConfig', runConfig);
|
|
181
|
-
this.statusUpdate(StatusLevel.INFO, '\nThinking...\n');
|
|
182
|
-
const statusUpdate = this.statusUpdate;
|
|
183
|
-
const config = this.config;
|
|
184
|
-
const command = this.command;
|
|
185
|
-
const interruptState = { escape: false, messageShown: false };
|
|
186
|
-
const abortController = new AbortController();
|
|
187
|
-
const showInterruptMessage = () => {
|
|
188
|
-
if (!interruptState.messageShown) {
|
|
189
|
-
interruptState.messageShown = true;
|
|
190
|
-
statusUpdate(StatusLevel.WARNING, '\n\nInterrupted by user, exiting\n\n');
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
waitForEscape(() => {
|
|
194
|
-
interruptState.escape = true;
|
|
195
|
-
showInterruptMessage();
|
|
196
|
-
if (!abortController.signal.aborted) {
|
|
197
|
-
abortController.abort();
|
|
198
|
-
}
|
|
199
|
-
}, this.config.canInterruptInferenceWithEsc);
|
|
200
|
-
let stream;
|
|
201
|
-
try {
|
|
202
|
-
stream = await this.agent.stream({ messages }, { ...runConfig, streamMode: 'messages', signal: abortController.signal });
|
|
203
|
-
}
|
|
204
|
-
catch (error) {
|
|
205
|
-
// If stream creation fails (e.g. an auth error), the IterableReadableStream below -
|
|
206
|
-
// whose finally/cancel are what normally unregister the Escape listener - is never
|
|
207
|
-
// constructed. Without this cleanup the raw-mode keypress listener keeps stdin ref'd,
|
|
208
|
-
// the process hangs after the error, and Esc/Ctrl+C only print "Interrupting..."
|
|
209
|
-
// (raw mode swallows SIGINT, so Ctrl+C cannot kill the process either).
|
|
210
|
-
stopWaitingForEscape();
|
|
211
|
-
throw error;
|
|
212
|
-
}
|
|
213
|
-
return new IterableReadableStream({
|
|
214
|
-
async start(controller) {
|
|
215
|
-
try {
|
|
216
|
-
debugLog('Starting stream processing...');
|
|
217
|
-
let totalChunks = 0;
|
|
218
|
-
const seenBinaryBlocks = new Set();
|
|
219
|
-
const binaryBlocks = [];
|
|
220
|
-
for await (const [chunk, _metadata] of stream) {
|
|
221
|
-
debugLogObject('Stream chunk', { chunk, _metadata });
|
|
222
|
-
if (AIMessage.isInstance(chunk)) {
|
|
223
|
-
const text = chunk.text ?? '';
|
|
224
|
-
totalChunks++;
|
|
225
|
-
if (text.length > 0) {
|
|
226
|
-
statusUpdate(StatusLevel.STREAM, text);
|
|
227
|
-
controller.enqueue(text);
|
|
228
|
-
}
|
|
229
|
-
if (config?.writeBinaryOutputsToFile) {
|
|
230
|
-
for (const block of extractInlineBinaryBlocks(chunk.content)) {
|
|
231
|
-
const binaryKey = `${block.mimeType}:${block.data.length}:${block.data}`;
|
|
232
|
-
if (seenBinaryBlocks.has(binaryKey)) {
|
|
233
|
-
continue;
|
|
234
|
-
}
|
|
235
|
-
seenBinaryBlocks.add(binaryKey);
|
|
236
|
-
binaryBlocks.push({ mimeType: block.mimeType, data: block.data });
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
if (interruptState.escape) {
|
|
241
|
-
if (typeof stream.cancel === 'function') {
|
|
242
|
-
await stream.cancel();
|
|
243
|
-
}
|
|
244
|
-
break;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
if (config?.writeBinaryOutputsToFile && binaryBlocks.length > 0) {
|
|
248
|
-
const processedContent = materializeBinaryOutputs(binaryBlocks.map((block) => ({
|
|
249
|
-
type: 'inlineData',
|
|
250
|
-
inlineData: block,
|
|
251
|
-
})), command);
|
|
252
|
-
for (const successMessage of processedContent.successMessages) {
|
|
253
|
-
statusUpdate(StatusLevel.SUCCESS, successMessage);
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
debugLog(`Stream completed. Total chunks: ${totalChunks}`);
|
|
257
|
-
controller.close();
|
|
258
|
-
}
|
|
259
|
-
catch (error) {
|
|
260
|
-
if (interruptState.escape || (error instanceof Error && error.name === 'AbortError')) {
|
|
261
|
-
showInterruptMessage();
|
|
262
|
-
controller.close();
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
debugLogError('stream processing', error);
|
|
266
|
-
if (error instanceof Error) {
|
|
267
|
-
if (error?.name === 'ToolException') {
|
|
268
|
-
statusUpdate(StatusLevel.ERROR, `Tool execution failed: ${error?.message}`);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
controller.error(error);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
finally {
|
|
275
|
-
stopWaitingForEscape();
|
|
276
|
-
}
|
|
277
|
-
},
|
|
278
|
-
async cancel() {
|
|
279
|
-
stopWaitingForEscape();
|
|
280
|
-
if (!abortController.signal.aborted) {
|
|
281
|
-
abortController.abort();
|
|
282
|
-
}
|
|
283
|
-
// Clean up the underlying stream if it has a cancel method
|
|
284
|
-
if (stream && typeof stream.cancel === 'function') {
|
|
285
|
-
await stream.cancel();
|
|
286
|
-
}
|
|
287
|
-
},
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Stream agent events as typed AgentStreamEvent objects.
|
|
292
|
-
* Yields text deltas, tool call lifecycle events, and tool results.
|
|
293
|
-
*
|
|
294
|
-
* If a tool with `metadata.client === true` triggers `interrupt()`, the underlying
|
|
295
|
-
* graph throws `GraphInterrupt`; this generator catches it and ends cleanly so the
|
|
296
|
-
* caller's transport (e.g. AG-UI SSE) can finish the run with the tool call hanging.
|
|
297
|
-
* Resume the suspended graph via {@link streamWithEventsResume} on the same thread id.
|
|
298
|
-
*/
|
|
299
|
-
async *streamWithEvents(messages, runConfig, signal) {
|
|
300
|
-
if (!this.agent || !this.config) {
|
|
301
|
-
throw new Error('Agent not initialized. Call init() first.');
|
|
302
|
-
}
|
|
303
|
-
debugLog('=== Starting streamWithEvents ===');
|
|
304
|
-
debugLogObject('LLM Input Messages', messages);
|
|
305
|
-
try {
|
|
306
|
-
// `signal` lets the transport (e.g. the AG-UI server on client disconnect)
|
|
307
|
-
// cancel the in-flight LLM generation, not just stop reading from it.
|
|
308
|
-
const stream = await this.agent.stream({ messages }, { ...runConfig, streamMode: 'messages', signal });
|
|
309
|
-
yield* this.processEventStream(stream);
|
|
310
|
-
}
|
|
311
|
-
catch (e) {
|
|
312
|
-
if (e instanceof GraphInterrupt ||
|
|
313
|
-
e.name === 'GraphInterrupt' ||
|
|
314
|
-
e.name === 'AbortError') {
|
|
315
|
-
debugLog('Graph suspended (GraphInterrupt) or aborted by caller');
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
throw e;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Resume a graph that was suspended via `interrupt()` with the supplied value.
|
|
323
|
-
*
|
|
324
|
-
* The runnable config must carry the same `thread_id` used when the graph was
|
|
325
|
-
* suspended (the checkpointer keys state by thread). The resume value is whatever
|
|
326
|
-
* the suspending tool needs back — for frontend-fulfilled tools this is the value
|
|
327
|
-
* the client sends in `forwardedProps.command.resume`.
|
|
328
|
-
*/
|
|
329
|
-
async *streamWithEventsResume(resumeValue, runConfig, queuedMessages, signal) {
|
|
330
|
-
if (!this.agent || !this.config) {
|
|
331
|
-
throw new Error('Agent not initialized. Call init() first.');
|
|
332
|
-
}
|
|
333
|
-
debugLog('=== Starting streamWithEventsResume ===');
|
|
334
|
-
try {
|
|
335
|
-
// Queued follow-up messages: when the client sends mid-task input
|
|
336
|
-
// alongside the resume, append it to the graph's `messages` state via
|
|
337
|
-
// Command.update so the agent sees it on its next decision turn — no
|
|
338
|
-
// separate run, no dangling tool calls. (Ordering note: the update lands
|
|
339
|
-
// around the resumed tool result; lenient local models tolerate this,
|
|
340
|
-
// strict tool-call/result adjacency providers may not.)
|
|
341
|
-
const command = queuedMessages && queuedMessages.length > 0
|
|
342
|
-
? new Command({ resume: resumeValue, update: { messages: queuedMessages } })
|
|
343
|
-
: new Command({ resume: resumeValue });
|
|
344
|
-
const stream = await this.agent.stream(command, {
|
|
345
|
-
...runConfig,
|
|
346
|
-
streamMode: 'messages',
|
|
347
|
-
signal,
|
|
348
|
-
});
|
|
349
|
-
yield* this.processEventStream(stream);
|
|
350
|
-
}
|
|
351
|
-
catch (e) {
|
|
352
|
-
if (e instanceof GraphInterrupt ||
|
|
353
|
-
e.name === 'GraphInterrupt' ||
|
|
354
|
-
e.name === 'AbortError') {
|
|
355
|
-
debugLog('Graph suspended (GraphInterrupt) or aborted by caller');
|
|
356
|
-
return;
|
|
357
|
-
}
|
|
358
|
-
throw e;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
async *processEventStream(stream) {
|
|
362
|
-
// Aggregate AIMessageChunks via concat so tool_call_chunks collapse into
|
|
363
|
-
// tool_calls with complete args (per-chunk tool_calls only ever sees that
|
|
364
|
-
// chunk's slice of the args JSON, which is rarely valid on its own).
|
|
365
|
-
let aggregatedAIChunk = null;
|
|
366
|
-
let reasoningOpen = false;
|
|
367
|
-
const flushed = new Set();
|
|
368
|
-
function* flushAggregated() {
|
|
369
|
-
if (!aggregatedAIChunk)
|
|
370
|
-
return;
|
|
371
|
-
const toolCalls = aggregatedAIChunk.tool_calls ?? [];
|
|
372
|
-
const invalidToolCalls = aggregatedAIChunk.invalid_tool_calls ?? [];
|
|
373
|
-
for (const tc of toolCalls) {
|
|
374
|
-
const id = tc.id;
|
|
375
|
-
if (!id || flushed.has(id))
|
|
376
|
-
continue;
|
|
377
|
-
flushed.add(id);
|
|
378
|
-
yield { type: 'tool_start', id, name: tc.name };
|
|
379
|
-
yield { type: 'tool_args', id, delta: JSON.stringify(tc.args ?? {}) };
|
|
380
|
-
yield { type: 'tool_end', id };
|
|
381
|
-
}
|
|
382
|
-
// Surface invalid tool calls too so the client at least sees the raw args
|
|
383
|
-
// string the model produced, instead of silently dropping them.
|
|
384
|
-
for (const tc of invalidToolCalls) {
|
|
385
|
-
const id = tc.id;
|
|
386
|
-
if (!id || flushed.has(id))
|
|
387
|
-
continue;
|
|
388
|
-
flushed.add(id);
|
|
389
|
-
yield { type: 'tool_start', id, name: tc.name ?? '' };
|
|
390
|
-
yield { type: 'tool_args', id, delta: tc.args ?? '' };
|
|
391
|
-
yield { type: 'tool_end', id };
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
for await (const [chunk, _metadata] of stream) {
|
|
395
|
-
debugLogObject('streamWithEvents chunk', { chunk, _metadata });
|
|
396
|
-
if (AIMessageChunk.isInstance(chunk)) {
|
|
397
|
-
aggregatedAIChunk = aggregatedAIChunk ? aggregatedAIChunk.concat(chunk) : chunk;
|
|
398
|
-
// Reasoning deltas — Ollama (Qwen3, deepseek-r1) and Anthropic surface
|
|
399
|
-
// thinking text in additional_kwargs.reasoning_content. Stream it as a
|
|
400
|
-
// separate event series so clients can render it apart from the answer.
|
|
401
|
-
const reasoningDelta = chunk.additional_kwargs?.reasoning_content;
|
|
402
|
-
if (typeof reasoningDelta === 'string' && reasoningDelta.length > 0) {
|
|
403
|
-
if (!reasoningOpen) {
|
|
404
|
-
reasoningOpen = true;
|
|
405
|
-
yield { type: 'reasoning_start' };
|
|
406
|
-
}
|
|
407
|
-
yield { type: 'reasoning_delta', delta: reasoningDelta };
|
|
408
|
-
}
|
|
409
|
-
// Yield text incrementally — use this chunk's text (delta), not the
|
|
410
|
-
// aggregated content which is cumulative.
|
|
411
|
-
if (chunk.text) {
|
|
412
|
-
if (reasoningOpen) {
|
|
413
|
-
reasoningOpen = false;
|
|
414
|
-
yield { type: 'reasoning_end' };
|
|
415
|
-
}
|
|
416
|
-
yield { type: 'text', delta: chunk.text };
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
else if (AIMessage.isInstance(chunk)) {
|
|
420
|
-
// Non-chunk AIMessage (e.g. on resumed runs) carries final tool_calls
|
|
421
|
-
// directly; merge them into the aggregate so flushAggregated emits them.
|
|
422
|
-
if (chunk.tool_calls && chunk.tool_calls.length > 0) {
|
|
423
|
-
const synthetic = new AIMessageChunk({
|
|
424
|
-
content: '',
|
|
425
|
-
tool_calls: chunk.tool_calls,
|
|
426
|
-
});
|
|
427
|
-
aggregatedAIChunk = aggregatedAIChunk ? aggregatedAIChunk.concat(synthetic) : synthetic;
|
|
428
|
-
}
|
|
429
|
-
if (chunk.text) {
|
|
430
|
-
if (reasoningOpen) {
|
|
431
|
-
reasoningOpen = false;
|
|
432
|
-
yield { type: 'reasoning_end' };
|
|
433
|
-
}
|
|
434
|
-
yield { type: 'text', delta: chunk.text };
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
if (chunk instanceof ToolMessage) {
|
|
438
|
-
if (reasoningOpen) {
|
|
439
|
-
reasoningOpen = false;
|
|
440
|
-
yield { type: 'reasoning_end' };
|
|
441
|
-
}
|
|
442
|
-
yield* flushAggregated();
|
|
443
|
-
// Reset between rounds. OpenAI restarts tool_call_chunks.index at 0
|
|
444
|
-
// for each new LLM round; without this reset the next round's chunks
|
|
445
|
-
// collide with the previous round's groups in collapseToolCallChunks
|
|
446
|
-
// and end up with empty args.
|
|
447
|
-
aggregatedAIChunk = null;
|
|
448
|
-
const content = typeof chunk.content === 'string' ? chunk.content : JSON.stringify(chunk.content);
|
|
449
|
-
yield { type: 'tool_result', id: chunk.tool_call_id, content };
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
// Close any still-open reasoning block before flushing tool calls.
|
|
453
|
-
if (reasoningOpen) {
|
|
454
|
-
reasoningOpen = false;
|
|
455
|
-
yield { type: 'reasoning_end' };
|
|
456
|
-
}
|
|
457
|
-
// Flush any tool calls not followed by a ToolMessage (e.g. terminal tool calls).
|
|
458
|
-
yield* flushAggregated();
|
|
459
|
-
}
|
|
460
|
-
async cleanup() {
|
|
461
|
-
debugLog('Cleaning up GthLangChainAgent...');
|
|
462
|
-
if (this.resolvers?.cleanupTools) {
|
|
463
|
-
await this.resolvers.cleanupTools();
|
|
464
|
-
}
|
|
465
|
-
if (this.resolvers?.cleanupMiddleware) {
|
|
466
|
-
await this.resolvers.cleanupMiddleware();
|
|
467
|
-
}
|
|
468
|
-
this.agent = null;
|
|
469
|
-
this.config = null;
|
|
470
|
-
this.command = undefined;
|
|
471
|
-
debugLog('GthLangChainAgent cleanup complete');
|
|
472
|
-
}
|
|
473
|
-
getEffectiveConfig(config, command) {
|
|
474
|
-
debugLog(`Getting effective config for command: ${command || 'default'}`);
|
|
475
|
-
const supportsTools = !!config.llm.bindTools;
|
|
476
|
-
if (!supportsTools) {
|
|
477
|
-
this.statusUpdate(StatusLevel.WARNING, 'Model does not seem to support tools.');
|
|
478
|
-
debugLog('Warning: Model does not support tools');
|
|
479
|
-
}
|
|
480
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
481
|
-
const cmdConfig = (command && config.commands?.[command]);
|
|
482
|
-
return {
|
|
483
|
-
...config,
|
|
484
|
-
filesystem: cmdConfig?.filesystem !== undefined ? cmdConfig.filesystem : config.filesystem,
|
|
485
|
-
builtInTools: cmdConfig?.builtInTools !== undefined ? cmdConfig.builtInTools : config.builtInTools,
|
|
486
|
-
allowedTools: cmdConfig?.allowedTools !== undefined ? cmdConfig.allowedTools : config.allowedTools,
|
|
487
|
-
binaryFormats: cmdConfig?.binaryFormats !== undefined ? cmdConfig.binaryFormats : config.binaryFormats,
|
|
488
|
-
};
|
|
489
|
-
}
|
|
490
|
-
/**
|
|
491
|
-
* Extract and flatten tools from toolkits
|
|
492
|
-
*/
|
|
493
|
-
extractAndFlattenTools(tools) {
|
|
494
|
-
const flattenedTools = [];
|
|
495
|
-
for (const toolOrToolkit of tools) {
|
|
496
|
-
// eslint-disable-next-line
|
|
497
|
-
if (toolOrToolkit['getTools'] instanceof Function) {
|
|
498
|
-
// This is a toolkit
|
|
499
|
-
flattenedTools.push(...toolOrToolkit.getTools());
|
|
500
|
-
}
|
|
501
|
-
else {
|
|
502
|
-
// This is a regular tool
|
|
503
|
-
let singleTool = toolOrToolkit;
|
|
504
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
505
|
-
if (singleTool.metadata?.client === true) {
|
|
506
|
-
// Clone the tool to avoid mutating the original
|
|
507
|
-
singleTool = Object.assign(Object.create(Object.getPrototypeOf(singleTool)), singleTool);
|
|
508
|
-
const stubFunc = async (_input, _config) => {
|
|
509
|
-
const value = await interrupt({ name: singleTool.name });
|
|
510
|
-
return typeof value === 'string' ? value : JSON.stringify(value);
|
|
511
|
-
};
|
|
512
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
513
|
-
singleTool.invoke = stubFunc;
|
|
514
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
515
|
-
singleTool.call = stubFunc;
|
|
516
|
-
}
|
|
517
|
-
flattenedTools.push(singleTool);
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
return flattenedTools;
|
|
521
|
-
}
|
|
522
102
|
}
|
|
523
103
|
//# sourceMappingURL=GthLangChainAgent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GthLangChainAgent.js","sourceRoot":"","sources":["../../src/core/GthLangChainAgent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GthLangChainAgent.js","sourceRoot":"","sources":["../../src/core/GthLangChainAgent.ts"],"names":[],"mappings":"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"}
|