@node-llm/core 1.16.1 → 1.17.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/dist/agent/Agent.d.ts +3 -0
- package/dist/agent/Agent.d.ts.map +1 -1
- package/dist/agent/Agent.js +3 -0
- package/dist/aliases.d.ts +220 -218
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +290 -288
- package/dist/chat/Chat.d.ts +16 -5
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +113 -78
- package/dist/chat/ChatOptions.d.ts +19 -0
- package/dist/chat/ChatOptions.d.ts.map +1 -1
- package/dist/chat/ChatStream.d.ts.map +1 -1
- package/dist/chat/ChatStream.js +69 -58
- package/dist/chat/ToolCallOutcome.d.ts +30 -0
- package/dist/chat/ToolCallOutcome.d.ts.map +1 -0
- package/dist/chat/ToolCallOutcome.js +43 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/llm.d.ts +1 -1
- package/dist/llm.d.ts.map +1 -1
- package/dist/models/models.json +4752 -10560
- package/dist/providers/bedrock/BedrockProvider.js +1 -1
- package/dist/providers/bedrock/Chat.js +1 -1
- package/dist/providers/bedrock/Embeddings.js +1 -1
- package/dist/providers/bedrock/Image.js +1 -1
- package/dist/providers/bedrock/Moderation.js +1 -1
- package/dist/providers/bedrock/Streaming.js +1 -1
- package/dist/providers/bedrock/config.d.ts +9 -1
- package/dist/providers/bedrock/config.d.ts.map +1 -1
- package/dist/providers/bedrock/config.js +4 -2
- package/dist/providers/bedrock/index.d.ts.map +1 -1
- package/dist/providers/bedrock/index.js +1 -0
- package/dist/providers/gemini/Chat.d.ts.map +1 -1
- package/dist/providers/gemini/Chat.js +1 -1
- package/dist/providers/gemini/Streaming.js +1 -1
- package/dist/providers/gemini/types.d.ts +1 -1
- package/dist/providers/gemini/types.d.ts.map +1 -1
- package/dist/transcription/Transcription.d.ts.map +1 -1
- package/dist/utils/handler-stacking.d.ts +31 -0
- package/dist/utils/handler-stacking.d.ts.map +1 -0
- package/dist/utils/handler-stacking.js +66 -0
- package/package.json +1 -1
- package/dist/aliases.json +0 -132
- package/dist/interceptors/InterceptorChain.d.ts +0 -47
- package/dist/interceptors/InterceptorChain.d.ts.map +0 -1
- package/dist/interceptors/InterceptorChain.js +0 -63
- package/dist/interceptors/examples.d.ts +0 -19
- package/dist/interceptors/examples.d.ts.map +0 -1
- package/dist/interceptors/examples.js +0 -38
- package/dist/models/models.d.ts +0 -572
- package/dist/models/models.d.ts.map +0 -1
- package/dist/models/models.js +0 -15963
- package/dist/models/pricing.json +0 -87
- package/dist/utils/ThinkingNormalizer.d.ts +0 -16
- package/dist/utils/ThinkingNormalizer.d.ts.map +0 -1
- package/dist/utils/ThinkingNormalizer.js +0 -30
- package/dist/utils/sanitize.d.ts +0 -21
- package/dist/utils/sanitize.d.ts.map +0 -1
- package/dist/utils/sanitize.js +0 -76
package/dist/chat/Chat.d.ts
CHANGED
|
@@ -152,11 +152,13 @@ export declare class Chat<S = unknown> {
|
|
|
152
152
|
onToolCall(handler: (toolCall: unknown) => void): this;
|
|
153
153
|
onToolResult(handler: (result: unknown) => void): this;
|
|
154
154
|
/**
|
|
155
|
-
* Called when a tool call starts.
|
|
155
|
+
* Called when a tool call starts. Calling this more than once registers
|
|
156
|
+
* additional handlers rather than replacing the previous one.
|
|
156
157
|
*/
|
|
157
158
|
onToolCallStart(handler: (toolCall: unknown) => void): this;
|
|
158
159
|
/**
|
|
159
|
-
* Called when a tool call ends successfully.
|
|
160
|
+
* Called when a tool call ends successfully. Calling this more than once
|
|
161
|
+
* registers additional handlers rather than replacing the previous one.
|
|
160
162
|
*/
|
|
161
163
|
onToolCallEnd(handler: (toolCall: unknown, result: unknown) => void): this;
|
|
162
164
|
onToolCallError(handler: (toolCall: unknown, error: Error) => "STOP" | "CONTINUE" | "RETRY" | void | Promise<"STOP" | "CONTINUE" | "RETRY" | void>): this;
|
|
@@ -167,19 +169,28 @@ export declare class Chat<S = unknown> {
|
|
|
167
169
|
* - "dry-run": Propose tool calls but do not execute them.
|
|
168
170
|
*/
|
|
169
171
|
withToolExecution(mode: ToolExecutionMode): this;
|
|
172
|
+
/**
|
|
173
|
+
* Enable or disable concurrent execution of independent tool calls
|
|
174
|
+
* returned in the same turn. Disabled ("confirm" mode always runs
|
|
175
|
+
* sequentially since approval is interactive).
|
|
176
|
+
*/
|
|
177
|
+
withToolConcurrency(enabled: boolean): this;
|
|
170
178
|
/**
|
|
171
179
|
* Hook for confirming tool execution in "confirm" mode.
|
|
172
|
-
* Return true to proceed, false to cancel the specific call.
|
|
180
|
+
* Return true to proceed, false to cancel the specific call. When multiple
|
|
181
|
+
* handlers are registered, every one of them must approve.
|
|
173
182
|
*/
|
|
174
183
|
onConfirmToolCall(handler: (toolCall: unknown) => Promise<boolean> | boolean): this;
|
|
175
184
|
/**
|
|
176
185
|
* Add a hook to process messages before sending to the LLM.
|
|
177
|
-
* Useful for PII detection, redaction, and input moderation.
|
|
186
|
+
* Useful for PII detection, redaction, and input moderation. Multiple
|
|
187
|
+
* hooks chain: each one's output feeds the next.
|
|
178
188
|
*/
|
|
179
189
|
beforeRequest(handler: (messages: Message[]) => Promise<Message[] | void>): this;
|
|
180
190
|
/**
|
|
181
191
|
* Add a hook to process the response before returning it.
|
|
182
|
-
* Useful for output redaction, compliance, and post-moderation.
|
|
192
|
+
* Useful for output redaction, compliance, and post-moderation. Multiple
|
|
193
|
+
* hooks chain: each one's output feeds the next.
|
|
183
194
|
*/
|
|
184
195
|
afterResponse(handler: (response: ChatResponseString) => Promise<ChatResponseString | void>): this;
|
|
185
196
|
/**
|
package/dist/chat/Chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/chat/Chat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,WAAW,EAGX,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EAET,cAAc,EACd,UAAU,EACX,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAkB,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/chat/Chat.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/Chat.js
CHANGED
|
@@ -12,8 +12,10 @@ import { ToolExecutionMode } from "../constants.js";
|
|
|
12
12
|
import { ConfigurationError } from "../errors/index.js";
|
|
13
13
|
import { ChatValidator } from "./Validation.js";
|
|
14
14
|
import { ToolHandler } from "./ToolHandler.js";
|
|
15
|
+
import { shouldRunToolCallsConcurrently, executeToolCallOutcomes } from "./ToolCallOutcome.js";
|
|
15
16
|
import { logger } from "../utils/logger.js";
|
|
16
17
|
import { runMiddleware } from "../utils/middleware-runner.js";
|
|
18
|
+
import { collectHandlers, runAllHandlers, runDirectiveHandlers, runConfirmHandlers, runChainHandlers } from "../utils/handler-stacking.js";
|
|
17
19
|
import { ChatResponseString } from "./ChatResponse.js";
|
|
18
20
|
export class Chat {
|
|
19
21
|
provider;
|
|
@@ -45,6 +47,9 @@ export class Chat {
|
|
|
45
47
|
if (!this.options.toolExecution) {
|
|
46
48
|
this.options.toolExecution = config.toolExecution || ToolExecutionMode.AUTO;
|
|
47
49
|
}
|
|
50
|
+
if (this.options.toolConcurrency === undefined) {
|
|
51
|
+
this.options.toolConcurrency = config.toolConcurrency;
|
|
52
|
+
}
|
|
48
53
|
if (options.tools) {
|
|
49
54
|
const toolList = options.tools;
|
|
50
55
|
this.options.tools = []; // Clear and re-add via normalized method
|
|
@@ -285,11 +290,11 @@ export class Chat {
|
|
|
285
290
|
}
|
|
286
291
|
// --- Event Handlers ---
|
|
287
292
|
onNewMessage(handler) {
|
|
288
|
-
this.options.
|
|
293
|
+
this.options.onNewMessageHandlers = [...(this.options.onNewMessageHandlers ?? []), handler];
|
|
289
294
|
return this;
|
|
290
295
|
}
|
|
291
296
|
onEndMessage(handler) {
|
|
292
|
-
this.options.
|
|
297
|
+
this.options.onEndMessageHandlers = [...(this.options.onEndMessageHandlers ?? []), handler];
|
|
293
298
|
return this;
|
|
294
299
|
}
|
|
295
300
|
onToolCall(handler) {
|
|
@@ -299,21 +304,29 @@ export class Chat {
|
|
|
299
304
|
return this.onToolCallEnd((_call, result) => handler(result));
|
|
300
305
|
}
|
|
301
306
|
/**
|
|
302
|
-
* Called when a tool call starts.
|
|
307
|
+
* Called when a tool call starts. Calling this more than once registers
|
|
308
|
+
* additional handlers rather than replacing the previous one.
|
|
303
309
|
*/
|
|
304
310
|
onToolCallStart(handler) {
|
|
305
|
-
this.options.
|
|
311
|
+
this.options.onToolCallStartHandlers = [
|
|
312
|
+
...(this.options.onToolCallStartHandlers ?? []),
|
|
313
|
+
handler
|
|
314
|
+
];
|
|
306
315
|
return this;
|
|
307
316
|
}
|
|
308
317
|
/**
|
|
309
|
-
* Called when a tool call ends successfully.
|
|
318
|
+
* Called when a tool call ends successfully. Calling this more than once
|
|
319
|
+
* registers additional handlers rather than replacing the previous one.
|
|
310
320
|
*/
|
|
311
321
|
onToolCallEnd(handler) {
|
|
312
|
-
this.options.
|
|
322
|
+
this.options.onToolCallEndHandlers = [...(this.options.onToolCallEndHandlers ?? []), handler];
|
|
313
323
|
return this;
|
|
314
324
|
}
|
|
315
325
|
onToolCallError(handler) {
|
|
316
|
-
this.options.
|
|
326
|
+
this.options.onToolCallErrorHandlers = [
|
|
327
|
+
...(this.options.onToolCallErrorHandlers ?? []),
|
|
328
|
+
handler
|
|
329
|
+
];
|
|
317
330
|
return this;
|
|
318
331
|
}
|
|
319
332
|
/**
|
|
@@ -326,28 +339,49 @@ export class Chat {
|
|
|
326
339
|
this.options.toolExecution = mode;
|
|
327
340
|
return this;
|
|
328
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Enable or disable concurrent execution of independent tool calls
|
|
344
|
+
* returned in the same turn. Disabled ("confirm" mode always runs
|
|
345
|
+
* sequentially since approval is interactive).
|
|
346
|
+
*/
|
|
347
|
+
withToolConcurrency(enabled) {
|
|
348
|
+
this.options.toolConcurrency = enabled;
|
|
349
|
+
return this;
|
|
350
|
+
}
|
|
329
351
|
/**
|
|
330
352
|
* Hook for confirming tool execution in "confirm" mode.
|
|
331
|
-
* Return true to proceed, false to cancel the specific call.
|
|
353
|
+
* Return true to proceed, false to cancel the specific call. When multiple
|
|
354
|
+
* handlers are registered, every one of them must approve.
|
|
332
355
|
*/
|
|
333
356
|
onConfirmToolCall(handler) {
|
|
334
|
-
this.options.
|
|
357
|
+
this.options.onConfirmToolCallHandlers = [
|
|
358
|
+
...(this.options.onConfirmToolCallHandlers ?? []),
|
|
359
|
+
handler
|
|
360
|
+
];
|
|
335
361
|
return this;
|
|
336
362
|
}
|
|
337
363
|
/**
|
|
338
364
|
* Add a hook to process messages before sending to the LLM.
|
|
339
|
-
* Useful for PII detection, redaction, and input moderation.
|
|
365
|
+
* Useful for PII detection, redaction, and input moderation. Multiple
|
|
366
|
+
* hooks chain: each one's output feeds the next.
|
|
340
367
|
*/
|
|
341
368
|
beforeRequest(handler) {
|
|
342
|
-
this.options.
|
|
369
|
+
this.options.onBeforeRequestHandlers = [
|
|
370
|
+
...(this.options.onBeforeRequestHandlers ?? []),
|
|
371
|
+
handler
|
|
372
|
+
];
|
|
343
373
|
return this;
|
|
344
374
|
}
|
|
345
375
|
/**
|
|
346
376
|
* Add a hook to process the response before returning it.
|
|
347
|
-
* Useful for output redaction, compliance, and post-moderation.
|
|
377
|
+
* Useful for output redaction, compliance, and post-moderation. Multiple
|
|
378
|
+
* hooks chain: each one's output feeds the next.
|
|
348
379
|
*/
|
|
349
380
|
afterResponse(handler) {
|
|
350
|
-
this.options.
|
|
381
|
+
this.options.onAfterResponseHandlers = [
|
|
382
|
+
...(this.options.onAfterResponseHandlers ?? []),
|
|
383
|
+
handler
|
|
384
|
+
];
|
|
351
385
|
return this;
|
|
352
386
|
}
|
|
353
387
|
/**
|
|
@@ -398,6 +432,23 @@ export class Chat {
|
|
|
398
432
|
options: this.options,
|
|
399
433
|
state
|
|
400
434
|
};
|
|
435
|
+
const newMessageHandlers = collectHandlers(this.options.onNewMessage, this.options.onNewMessageHandlers);
|
|
436
|
+
const endMessageHandlers = collectHandlers(this.options.onEndMessage, this.options.onEndMessageHandlers);
|
|
437
|
+
const beforeRequestHandlers = collectHandlers(this.options.onBeforeRequest, this.options.onBeforeRequestHandlers);
|
|
438
|
+
const afterResponseHandlers = collectHandlers(this.options.onAfterResponse, this.options.onAfterResponseHandlers);
|
|
439
|
+
const toolCallStartHandlers = collectHandlers(this.options.onToolCallStart, this.options.onToolCallStartHandlers);
|
|
440
|
+
const toolCallEndHandlers = collectHandlers(this.options.onToolCallEnd, this.options.onToolCallEndHandlers);
|
|
441
|
+
const toolCallErrorHandlers = collectHandlers(this.options.onToolCallError, this.options.onToolCallErrorHandlers);
|
|
442
|
+
const confirmToolCallHandlers = collectHandlers(this.options.onConfirmToolCall, this.options.onConfirmToolCallHandlers);
|
|
443
|
+
const combinedToolCallStart = toolCallStartHandlers.length
|
|
444
|
+
? (call) => toolCallStartHandlers.forEach((handler) => handler(call))
|
|
445
|
+
: undefined;
|
|
446
|
+
const combinedToolCallEnd = toolCallEndHandlers.length
|
|
447
|
+
? (call, result) => toolCallEndHandlers.forEach((handler) => handler(call, result))
|
|
448
|
+
: undefined;
|
|
449
|
+
const combinedConfirmToolCall = confirmToolCallHandlers.length
|
|
450
|
+
? (call) => runConfirmHandlers(confirmToolCallHandlers, call)
|
|
451
|
+
: undefined;
|
|
401
452
|
try {
|
|
402
453
|
// 1. onRequest Hook
|
|
403
454
|
await runMiddleware(this.middlewares, "onRequest", context);
|
|
@@ -426,12 +477,7 @@ export class Chat {
|
|
|
426
477
|
...this.options.params
|
|
427
478
|
};
|
|
428
479
|
// --- Content Policy Hooks (Input) ---
|
|
429
|
-
|
|
430
|
-
const result = await this.options.onBeforeRequest(executeOptions.messages);
|
|
431
|
-
if (result) {
|
|
432
|
-
executeOptions.messages = result;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
480
|
+
executeOptions.messages = await runChainHandlers(beforeRequestHandlers, executeOptions.messages);
|
|
435
481
|
const trackUsage = (u) => {
|
|
436
482
|
if (u) {
|
|
437
483
|
if (u.cost === undefined) {
|
|
@@ -458,18 +504,12 @@ export class Chat {
|
|
|
458
504
|
}
|
|
459
505
|
};
|
|
460
506
|
// Start generation
|
|
461
|
-
|
|
462
|
-
this.options.onNewMessage();
|
|
507
|
+
await runAllHandlers(newMessageHandlers);
|
|
463
508
|
let response = await this.executor.executeChat(executeOptions);
|
|
464
509
|
trackUsage(response.usage);
|
|
465
510
|
assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.thinking, response.reasoning, response.tool_calls, response.finish_reason, this.options.schema, response.metadata, response.attachments);
|
|
466
511
|
// --- Content Policy Hooks (Output - Turn 1) ---
|
|
467
|
-
|
|
468
|
-
const result = await this.options.onAfterResponse(assistantMessage);
|
|
469
|
-
if (result) {
|
|
470
|
-
assistantMessage = result;
|
|
471
|
-
}
|
|
472
|
-
}
|
|
512
|
+
assistantMessage = await runChainHandlers(afterResponseHandlers, assistantMessage);
|
|
473
513
|
// Add to history (temporary, might be rolled back on retry)
|
|
474
514
|
this.messages.push({
|
|
475
515
|
role: "assistant",
|
|
@@ -477,9 +517,8 @@ export class Chat {
|
|
|
477
517
|
tool_calls: response.tool_calls,
|
|
478
518
|
usage: response.usage
|
|
479
519
|
});
|
|
480
|
-
if (
|
|
481
|
-
(
|
|
482
|
-
this.options.onEndMessage(assistantMessage);
|
|
520
|
+
if (!response.tool_calls || response.tool_calls.length === 0) {
|
|
521
|
+
await runAllHandlers(endMessageHandlers, assistantMessage);
|
|
483
522
|
}
|
|
484
523
|
const maxToolCalls = options?.maxToolCalls ?? this.options.maxToolCalls ?? 5;
|
|
485
524
|
let stepCount = 0;
|
|
@@ -493,55 +532,56 @@ export class Chat {
|
|
|
493
532
|
if (stepCount > maxToolCalls) {
|
|
494
533
|
throw new Error(`[NodeLLM] Maximum tool execution calls (${maxToolCalls}) exceeded.`);
|
|
495
534
|
}
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
535
|
+
const runConcurrently = shouldRunToolCallsConcurrently(this.options.toolConcurrency, this.options.toolExecution, response.tool_calls.length);
|
|
536
|
+
const outcomes = await executeToolCallOutcomes(response.tool_calls, {
|
|
537
|
+
...this.options,
|
|
538
|
+
tools: this.options.tools,
|
|
539
|
+
onToolCallStart: combinedToolCallStart,
|
|
540
|
+
onToolCallEnd: combinedToolCallEnd,
|
|
541
|
+
onConfirmToolCall: combinedConfirmToolCall
|
|
542
|
+
}, this.middlewares, context, runConcurrently);
|
|
543
|
+
for (const outcome of outcomes) {
|
|
544
|
+
const toolCall = outcome.toolCall;
|
|
545
|
+
if (outcome.kind === "cancelled") {
|
|
546
|
+
this.messages.push(this.provider.formatToolResultMessage(toolCall.id, "Action cancelled by user."));
|
|
547
|
+
continue;
|
|
503
548
|
}
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
const toolResult = await ToolHandler.execute(toolCall, this.options.tools, this.options.onToolCallStart, this.options.onToolCallEnd);
|
|
507
|
-
await runMiddleware(this.middlewares, "onToolCallEnd", context, toolCall, toolResult.content);
|
|
549
|
+
if (outcome.kind === "success") {
|
|
550
|
+
const { toolResult } = outcome;
|
|
508
551
|
this.messages.push(this.provider.formatToolResultMessage(toolResult.tool_call_id, toolResult.content));
|
|
509
552
|
if (toolResult.halted) {
|
|
510
553
|
haltTriggered = true;
|
|
511
554
|
assistantMessage = new ChatResponseString(toolResult.content, totalUsage, this.model, this.provider.id, undefined, undefined, undefined, "tool_halt");
|
|
512
|
-
|
|
513
|
-
this.options.onEndMessage(assistantMessage);
|
|
514
|
-
}
|
|
555
|
+
await runAllHandlers(endMessageHandlers, assistantMessage);
|
|
515
556
|
break;
|
|
516
557
|
}
|
|
558
|
+
continue;
|
|
517
559
|
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
this.messages.push(this.provider.formatToolResultMessage(toolResult.tool_call_id, toolResult.content));
|
|
530
|
-
continue;
|
|
531
|
-
}
|
|
532
|
-
catch (retryError) {
|
|
533
|
-
currentError = retryError;
|
|
534
|
-
await runMiddleware(this.middlewares, "onToolCallError", context, toolCall, currentError);
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
this.messages.push(this.provider.formatToolResultMessage(toolCall.id, `Fatal error executing tool '${toolCall.function.name}': ${currentError.message}`, { isError: true }));
|
|
538
|
-
if (directive === "CONTINUE")
|
|
560
|
+
let currentError = outcome.error;
|
|
561
|
+
const middlewareDirective = await runMiddleware(this.middlewares, "onToolCallError", context, toolCall, currentError);
|
|
562
|
+
const directive = middlewareDirective ||
|
|
563
|
+
(await runDirectiveHandlers(toolCallErrorHandlers, toolCall, currentError));
|
|
564
|
+
if (directive === "STOP")
|
|
565
|
+
throw currentError;
|
|
566
|
+
if (directive === "RETRY") {
|
|
567
|
+
try {
|
|
568
|
+
const toolResult = await ToolHandler.execute(toolCall, this.options.tools, combinedToolCallStart, combinedToolCallEnd);
|
|
569
|
+
await runMiddleware(this.middlewares, "onToolCallEnd", context, toolCall, toolResult.content);
|
|
570
|
+
this.messages.push(this.provider.formatToolResultMessage(toolResult.tool_call_id, toolResult.content));
|
|
539
571
|
continue;
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
572
|
+
}
|
|
573
|
+
catch (retryError) {
|
|
574
|
+
currentError = retryError;
|
|
575
|
+
await runMiddleware(this.middlewares, "onToolCallError", context, toolCall, currentError);
|
|
576
|
+
}
|
|
544
577
|
}
|
|
578
|
+
this.messages.push(this.provider.formatToolResultMessage(toolCall.id, `Fatal error executing tool '${toolCall.function.name}': ${currentError.message}`, { isError: true }));
|
|
579
|
+
if (directive === "CONTINUE")
|
|
580
|
+
continue;
|
|
581
|
+
const errorObj = currentError;
|
|
582
|
+
if (errorObj.fatal || errorObj.status === 401 || errorObj.status === 403)
|
|
583
|
+
throw currentError;
|
|
584
|
+
logger.error(`Tool execution failed:`, currentError);
|
|
545
585
|
}
|
|
546
586
|
if (haltTriggered)
|
|
547
587
|
break;
|
|
@@ -562,23 +602,18 @@ export class Chat {
|
|
|
562
602
|
});
|
|
563
603
|
trackUsage(response.usage);
|
|
564
604
|
assistantMessage = new ChatResponseString(response.content ?? "", response.usage ?? { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, this.provider.id, response.thinking, response.reasoning, response.tool_calls, response.finish_reason, this.options.schema, response.metadata, response.attachments);
|
|
565
|
-
|
|
566
|
-
const result = await this.options.onAfterResponse(assistantMessage);
|
|
567
|
-
if (result)
|
|
568
|
-
assistantMessage = result;
|
|
569
|
-
}
|
|
605
|
+
assistantMessage = await runChainHandlers(afterResponseHandlers, assistantMessage);
|
|
570
606
|
this.messages.push({
|
|
571
607
|
role: "assistant",
|
|
572
608
|
content: assistantMessage?.toString() || null,
|
|
573
609
|
tool_calls: response.tool_calls,
|
|
574
610
|
usage: response.usage
|
|
575
611
|
});
|
|
576
|
-
if (
|
|
577
|
-
(
|
|
578
|
-
this.options.onEndMessage(assistantMessage);
|
|
612
|
+
if (!response.tool_calls || response.tool_calls.length === 0) {
|
|
613
|
+
await runAllHandlers(endMessageHandlers, assistantMessage);
|
|
579
614
|
}
|
|
580
615
|
}
|
|
581
|
-
finalResponse = new ChatResponseString(assistantMessage.toString() || "", totalUsage, this.model, this.provider.id, assistantMessage.thinking, assistantMessage.reasoning, response.tool_calls, assistantMessage.finish_reason, this.options.schema);
|
|
616
|
+
finalResponse = new ChatResponseString(assistantMessage.toString() || "", totalUsage, this.model, this.provider.id, assistantMessage.thinking, assistantMessage.reasoning, response.tool_calls, assistantMessage.finish_reason, this.options.schema, assistantMessage.metadata, assistantMessage.attachments);
|
|
582
617
|
// 5. onResponse Hook
|
|
583
618
|
const requestDirective = await runMiddleware(this.middlewares, "onResponse", context, finalResponse);
|
|
584
619
|
if (requestDirective && typeof requestDirective === "object") {
|
|
@@ -18,6 +18,17 @@ export interface ChatOptions {
|
|
|
18
18
|
onToolCallStart?: (toolCall: unknown) => void;
|
|
19
19
|
onToolCallEnd?: (toolCall: unknown, result: unknown) => void;
|
|
20
20
|
onToolCallError?: (toolCall: unknown, error: Error) => "STOP" | "CONTINUE" | "RETRY" | void | Promise<"STOP" | "CONTINUE" | "RETRY" | void>;
|
|
21
|
+
/**
|
|
22
|
+
* Additional handlers registered via the fluent on*() methods. Each on*()
|
|
23
|
+
* call appends here instead of overwriting the single onX field above, so
|
|
24
|
+
* e.g. calling chat.onToolCallStart() twice runs both handlers instead of
|
|
25
|
+
* silently dropping the first.
|
|
26
|
+
*/
|
|
27
|
+
onNewMessageHandlers?: Array<() => void>;
|
|
28
|
+
onEndMessageHandlers?: Array<(message: ChatResponseString) => void>;
|
|
29
|
+
onToolCallStartHandlers?: Array<(toolCall: unknown) => void>;
|
|
30
|
+
onToolCallEndHandlers?: Array<(toolCall: unknown, result: unknown) => void>;
|
|
31
|
+
onToolCallErrorHandlers?: Array<(toolCall: unknown, error: Error) => "STOP" | "CONTINUE" | "RETRY" | void | Promise<"STOP" | "CONTINUE" | "RETRY" | void>>;
|
|
21
32
|
headers?: Record<string, string>;
|
|
22
33
|
responseFormat?: ResponseFormat;
|
|
23
34
|
thinking?: ThinkingConfig;
|
|
@@ -29,10 +40,18 @@ export interface ChatOptions {
|
|
|
29
40
|
maxToolCalls?: number;
|
|
30
41
|
requestTimeout?: number;
|
|
31
42
|
toolExecution?: ToolExecutionMode;
|
|
43
|
+
/**
|
|
44
|
+
* When true, independent tool calls returned in the same turn are executed
|
|
45
|
+
* concurrently instead of one at a time. Defaults to `config.toolConcurrency`.
|
|
46
|
+
*/
|
|
47
|
+
toolConcurrency?: boolean;
|
|
32
48
|
toolChoice?: ToolChoice;
|
|
33
49
|
toolCalls?: "one" | "many" | number;
|
|
34
50
|
onConfirmToolCall?: (toolCall: unknown) => Promise<boolean> | boolean;
|
|
35
51
|
onBeforeRequest?: (messages: Message[]) => Promise<Message[] | void>;
|
|
36
52
|
onAfterResponse?: (response: ChatResponseString) => Promise<ChatResponseString | void>;
|
|
53
|
+
onConfirmToolCallHandlers?: Array<(toolCall: unknown) => Promise<boolean> | boolean>;
|
|
54
|
+
onBeforeRequestHandlers?: Array<(messages: Message[]) => Promise<Message[] | void>>;
|
|
55
|
+
onAfterResponseHandlers?: Array<(response: ChatResponseString) => Promise<ChatResponseString | void>>;
|
|
37
56
|
}
|
|
38
57
|
//# sourceMappingURL=ChatOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatOptions.d.ts","sourceRoot":"","sources":["../../src/chat/ChatOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtF,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,KAAK,KACT,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACtE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACrE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatOptions.d.ts","sourceRoot":"","sources":["../../src/chat/ChatOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatStream.d.ts","sourceRoot":"","sources":["../../src/chat/ChatStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,WAAW,EAIZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAyB,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatStream.d.ts","sourceRoot":"","sources":["../../src/chat/ChatStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,WAAW,EAIZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAyB,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAqBvC;;;GAGG;AACH,qBAAa,UAAU;IAKnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,cAAc,CAAY;gBAGf,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,EAC1C,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,cAAc,CAAC,EAAE,OAAO,EAAE;IAiC5B,IAAI,OAAO,IAAI,SAAS,OAAO,EAAE,CAEhC;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,EAAE,OAAO,GAAE,UAAe,GAAG,MAAM,CAAC,SAAS,CAAC;CAuZrF"}
|