@node-llm/core 1.17.0 → 1.18.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 +1 -0
- package/dist/agent/Agent.d.ts +24 -11
- package/dist/agent/Agent.d.ts.map +1 -1
- package/dist/agent/Agent.js +1 -3
- package/dist/aliases.d.ts +826 -467
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +881 -522
- package/dist/chat/Chat.d.ts +14 -10
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +20 -5
- package/dist/chat/ChatOptions.d.ts +12 -11
- package/dist/chat/ChatOptions.d.ts.map +1 -1
- package/dist/chat/Tool.d.ts +26 -5
- package/dist/chat/Tool.d.ts.map +1 -1
- package/dist/chat/Tool.js +25 -3
- package/dist/chat/ToolCallOutcome.d.ts +6 -6
- package/dist/chat/ToolCallOutcome.d.ts.map +1 -1
- package/dist/chat/ToolHandler.d.ts +2 -2
- package/dist/chat/ToolHandler.d.ts.map +1 -1
- package/dist/chat/ToolHandler.js +15 -1
- package/dist/config.d.ts +12 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +18 -1
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -1
- package/dist/errors/index.d.ts +3 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +4 -1
- package/dist/executor/Executor.d.ts +6 -0
- package/dist/executor/Executor.d.ts.map +1 -1
- package/dist/executor/Executor.js +19 -2
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/judge/Judge.d.ts +107 -0
- package/dist/judge/Judge.d.ts.map +1 -0
- package/dist/judge/Judge.js +104 -0
- package/dist/judge/Judgment.d.ts +116 -0
- package/dist/judge/Judgment.d.ts.map +1 -0
- package/dist/judge/Judgment.js +159 -0
- package/dist/judge/Question.d.ts +91 -0
- package/dist/judge/Question.d.ts.map +1 -0
- package/dist/judge/Question.js +180 -0
- package/dist/llm.d.ts +46 -0
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +105 -5
- package/dist/models/ModelRegistry.d.ts +11 -18
- package/dist/models/ModelRegistry.d.ts.map +1 -1
- package/dist/models/ModelRegistry.js +6 -0
- package/dist/models/models.json +16534 -10534
- package/dist/providers/BaseProvider.d.ts +2 -1
- package/dist/providers/BaseProvider.d.ts.map +1 -1
- package/dist/providers/BaseProvider.js +3 -0
- package/dist/providers/Provider.d.ts +37 -0
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/Models.d.ts.map +1 -1
- package/dist/providers/anthropic/Models.js +4 -2
- package/dist/providers/deepseek/Models.d.ts.map +1 -1
- package/dist/providers/deepseek/Models.js +4 -2
- package/dist/providers/gemini/Embeddings.d.ts.map +1 -1
- package/dist/providers/gemini/Embeddings.js +4 -2
- package/dist/providers/gemini/Image.d.ts.map +1 -1
- package/dist/providers/gemini/Image.js +4 -2
- package/dist/providers/gemini/Models.d.ts.map +1 -1
- package/dist/providers/gemini/Models.js +4 -2
- package/dist/providers/gemini/Transcription.d.ts.map +1 -1
- package/dist/providers/gemini/Transcription.js +4 -2
- package/dist/providers/mistral/Embedding.d.ts.map +1 -1
- package/dist/providers/mistral/Embedding.js +4 -2
- package/dist/providers/mistral/Models.d.ts.map +1 -1
- package/dist/providers/mistral/Models.js +4 -2
- package/dist/providers/openai/Models.d.ts.map +1 -1
- package/dist/providers/openai/Models.js +4 -2
- package/dist/providers/openrouter/Models.d.ts.map +1 -1
- package/dist/providers/openrouter/Models.js +4 -2
- package/dist/providers/registry.d.ts +2 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -1
- package/dist/providers/typesafe/SystemOne.d.ts +11 -0
- package/dist/providers/typesafe/SystemOne.d.ts.map +1 -0
- package/dist/providers/typesafe/SystemOne.js +171 -0
- package/dist/providers/typesafe/TypeSafeProvider.d.ts +27 -0
- package/dist/providers/typesafe/TypeSafeProvider.d.ts.map +1 -0
- package/dist/providers/typesafe/TypeSafeProvider.js +76 -0
- package/dist/providers/typesafe/index.d.ts +4 -0
- package/dist/providers/typesafe/index.d.ts.map +1 -0
- package/dist/providers/typesafe/index.js +19 -0
- package/dist/types/Middleware.d.ts +9 -0
- package/dist/types/Middleware.d.ts.map +1 -1
- package/dist/utils/Binary.d.ts.map +1 -1
- package/dist/utils/Binary.js +11 -0
- package/dist/utils/FileLoader.d.ts.map +1 -1
- package/dist/utils/FileLoader.js +21 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +8 -1
- package/package.json +1 -1
package/dist/chat/Chat.d.ts
CHANGED
|
@@ -3,10 +3,10 @@ import { ContentPart, MessageContent } from "./Content.js";
|
|
|
3
3
|
import { ChatOptions } from "./ChatOptions.js";
|
|
4
4
|
import { Provider, Usage, ChatChunk, ThinkingConfig, ToolChoice } from "../providers/Provider.js";
|
|
5
5
|
import { Stream } from "../streaming/Stream.js";
|
|
6
|
-
import { ToolResolvable } from "./Tool.js";
|
|
6
|
+
import { ToolResolvable, ToolCall } from "./Tool.js";
|
|
7
7
|
import { Schema } from "../schema/Schema.js";
|
|
8
8
|
import { z } from "zod";
|
|
9
|
-
import {
|
|
9
|
+
import { ToolExecutionModeInput } from "../constants.js";
|
|
10
10
|
export interface AskOptions {
|
|
11
11
|
images?: string[];
|
|
12
12
|
files?: string[];
|
|
@@ -14,6 +14,7 @@ export interface AskOptions {
|
|
|
14
14
|
maxTokens?: number;
|
|
15
15
|
headers?: Record<string, string>;
|
|
16
16
|
maxToolCalls?: number;
|
|
17
|
+
maxCorrections?: number;
|
|
17
18
|
requestTimeout?: number;
|
|
18
19
|
thinking?: ThinkingConfig;
|
|
19
20
|
prediction?: string | ContentPart[];
|
|
@@ -133,7 +134,8 @@ export declare class Chat<S = unknown> {
|
|
|
133
134
|
* Enforce a specific schema for the output.
|
|
134
135
|
* Can accept a Schema object or a Zod schema/JSON Schema directly.
|
|
135
136
|
*/
|
|
136
|
-
withSchema<T>(schema:
|
|
137
|
+
withSchema<T>(schema: z.ZodType<T>): Chat<T>;
|
|
138
|
+
withSchema<T = unknown>(schema: Schema | z.ZodType<T> | Record<string, unknown> | null): Chat<T>;
|
|
137
139
|
/**
|
|
138
140
|
* Provide a prediction of the expected output to reduce latency.
|
|
139
141
|
* Particularly useful for code-editing agents modifying existing text.
|
|
@@ -149,26 +151,26 @@ export declare class Chat<S = unknown> {
|
|
|
149
151
|
withEffort(effort: "low" | "medium" | "high" | "none"): this;
|
|
150
152
|
onNewMessage(handler: () => void): this;
|
|
151
153
|
onEndMessage(handler: (message: ChatResponseString) => void): this;
|
|
152
|
-
onToolCall(handler: (toolCall:
|
|
154
|
+
onToolCall(handler: (toolCall: ToolCall) => void): this;
|
|
153
155
|
onToolResult(handler: (result: unknown) => void): this;
|
|
154
156
|
/**
|
|
155
157
|
* Called when a tool call starts. Calling this more than once registers
|
|
156
158
|
* additional handlers rather than replacing the previous one.
|
|
157
159
|
*/
|
|
158
|
-
onToolCallStart(handler: (toolCall:
|
|
160
|
+
onToolCallStart(handler: (toolCall: ToolCall) => void): this;
|
|
159
161
|
/**
|
|
160
162
|
* Called when a tool call ends successfully. Calling this more than once
|
|
161
163
|
* registers additional handlers rather than replacing the previous one.
|
|
162
164
|
*/
|
|
163
|
-
onToolCallEnd(handler: (toolCall:
|
|
164
|
-
onToolCallError(handler: (toolCall:
|
|
165
|
+
onToolCallEnd(handler: (toolCall: ToolCall, result: unknown) => void): this;
|
|
166
|
+
onToolCallError(handler: (toolCall: ToolCall, error: Error) => "STOP" | "CONTINUE" | "RETRY" | void | Promise<"STOP" | "CONTINUE" | "RETRY" | void>): this;
|
|
165
167
|
/**
|
|
166
168
|
* Set the tool execution mode.
|
|
167
169
|
* - "auto": (Default) Automatically execute all tool calls.
|
|
168
170
|
* - "confirm": Call onConfirmToolCall before executing each tool.
|
|
169
171
|
* - "dry-run": Propose tool calls but do not execute them.
|
|
170
172
|
*/
|
|
171
|
-
withToolExecution(mode:
|
|
173
|
+
withToolExecution(mode: ToolExecutionModeInput): this;
|
|
172
174
|
/**
|
|
173
175
|
* Enable or disable concurrent execution of independent tool calls
|
|
174
176
|
* returned in the same turn. Disabled ("confirm" mode always runs
|
|
@@ -180,7 +182,7 @@ export declare class Chat<S = unknown> {
|
|
|
180
182
|
* Return true to proceed, false to cancel the specific call. When multiple
|
|
181
183
|
* handlers are registered, every one of them must approve.
|
|
182
184
|
*/
|
|
183
|
-
onConfirmToolCall(handler: (toolCall:
|
|
185
|
+
onConfirmToolCall(handler: (toolCall: ToolCall) => Promise<boolean> | boolean): this;
|
|
184
186
|
/**
|
|
185
187
|
* Add a hook to process messages before sending to the LLM.
|
|
186
188
|
* Useful for PII detection, redaction, and input moderation. Multiple
|
|
@@ -196,7 +198,9 @@ export declare class Chat<S = unknown> {
|
|
|
196
198
|
/**
|
|
197
199
|
* Ask the model a question
|
|
198
200
|
*/
|
|
199
|
-
ask(content: string | ContentPart[], options?: AskOptions): Promise<ChatResponseString
|
|
201
|
+
ask(content: string | ContentPart[], options?: AskOptions): Promise<ChatResponseString & {
|
|
202
|
+
data: S;
|
|
203
|
+
}>;
|
|
200
204
|
/**
|
|
201
205
|
* Streams the model's response to a user question.
|
|
202
206
|
*/
|
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;
|
|
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
|
@@ -8,7 +8,7 @@ import { toJsonSchema } from "../schema/to-json-schema.js";
|
|
|
8
8
|
import { randomUUID } from "node:crypto";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
import { config } from "../config.js";
|
|
11
|
-
import { ToolExecutionMode } from "../constants.js";
|
|
11
|
+
import { ToolExecutionMode, DEFAULT_MAX_CORRECTIONS } 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";
|
|
@@ -31,6 +31,19 @@ export class Chat {
|
|
|
31
31
|
this.options = options;
|
|
32
32
|
this.middlewares = options.middlewares || [];
|
|
33
33
|
this.executor = new Executor(provider, retryConfig);
|
|
34
|
+
// A Zod object or plain JSON Schema passed as the `schema` option was stored
|
|
35
|
+
// as-is, and the request builders then read `.definition` off it and
|
|
36
|
+
// crashed. Convert those the way withSchema() does. Anything already shaped
|
|
37
|
+
// like a Schema - an instance, or an object carrying `definition` - is left
|
|
38
|
+
// exactly as it was.
|
|
39
|
+
const rawSchema = options.schema;
|
|
40
|
+
if (rawSchema instanceof z.ZodType ||
|
|
41
|
+
(rawSchema &&
|
|
42
|
+
typeof rawSchema === "object" &&
|
|
43
|
+
!(rawSchema instanceof Schema) &&
|
|
44
|
+
!("definition" in rawSchema))) {
|
|
45
|
+
this.withSchema(rawSchema);
|
|
46
|
+
}
|
|
34
47
|
if (options.systemPrompt) {
|
|
35
48
|
this.withInstructions(options.systemPrompt);
|
|
36
49
|
}
|
|
@@ -242,10 +255,6 @@ export class Chat {
|
|
|
242
255
|
this.options.params = { ...this.options.params, ...params };
|
|
243
256
|
return this;
|
|
244
257
|
}
|
|
245
|
-
/**
|
|
246
|
-
* Enforce a specific schema for the output.
|
|
247
|
-
* Can accept a Schema object or a Zod schema/JSON Schema directly.
|
|
248
|
-
*/
|
|
249
258
|
withSchema(schema) {
|
|
250
259
|
if (schema === null) {
|
|
251
260
|
this.options.schema = undefined;
|
|
@@ -387,6 +396,8 @@ export class Chat {
|
|
|
387
396
|
/**
|
|
388
397
|
* Ask the model a question
|
|
389
398
|
*/
|
|
399
|
+
// Typed by the chat's schema: response.data is the schema's type after
|
|
400
|
+
// withSchema(), and unknown (as before) when no schema is set.
|
|
390
401
|
async ask(content, options) {
|
|
391
402
|
const requestId = randomUUID();
|
|
392
403
|
const state = {};
|
|
@@ -618,6 +629,10 @@ export class Chat {
|
|
|
618
629
|
const requestDirective = await runMiddleware(this.middlewares, "onResponse", context, finalResponse);
|
|
619
630
|
if (requestDirective && typeof requestDirective === "object") {
|
|
620
631
|
if (requestDirective.action === "RETRY") {
|
|
632
|
+
const maxCorrections = options?.maxCorrections ?? this.options.maxCorrections ?? DEFAULT_MAX_CORRECTIONS;
|
|
633
|
+
if (correctionAttempt >= maxCorrections) {
|
|
634
|
+
throw new Error(`[NodeLLM] Maximum self-correction retries (${maxCorrections}) exceeded.`);
|
|
635
|
+
}
|
|
621
636
|
// Push feedback to history and try again
|
|
622
637
|
this.messages.push({
|
|
623
638
|
role: "user",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Middleware } from "../types/Middleware.js";
|
|
2
2
|
import { Message } from "./Message.js";
|
|
3
|
-
import { ToolResolvable } from "./Tool.js";
|
|
3
|
+
import { ToolResolvable, ToolCall } from "./Tool.js";
|
|
4
4
|
import { ContentPart } from "./Content.js";
|
|
5
5
|
import { Schema } from "../schema/Schema.js";
|
|
6
6
|
import { ChatResponseString } from "./ChatResponse.js";
|
|
7
|
-
import {
|
|
7
|
+
import { ToolExecutionModeInput } from "../constants.js";
|
|
8
8
|
import { ResponseFormat, ThinkingConfig, ToolChoice } from "../providers/Provider.js";
|
|
9
9
|
export interface ChatOptions {
|
|
10
10
|
systemPrompt?: string;
|
|
@@ -15,9 +15,9 @@ export interface ChatOptions {
|
|
|
15
15
|
maxTokens?: number;
|
|
16
16
|
onNewMessage?: () => void;
|
|
17
17
|
onEndMessage?: (message: ChatResponseString) => void;
|
|
18
|
-
onToolCallStart?: (toolCall:
|
|
19
|
-
onToolCallEnd?: (toolCall:
|
|
20
|
-
onToolCallError?: (toolCall:
|
|
18
|
+
onToolCallStart?: (toolCall: ToolCall) => void;
|
|
19
|
+
onToolCallEnd?: (toolCall: ToolCall, result: unknown) => void;
|
|
20
|
+
onToolCallError?: (toolCall: ToolCall, error: Error) => "STOP" | "CONTINUE" | "RETRY" | void | Promise<"STOP" | "CONTINUE" | "RETRY" | void>;
|
|
21
21
|
/**
|
|
22
22
|
* Additional handlers registered via the fluent on*() methods. Each on*()
|
|
23
23
|
* call appends here instead of overwriting the single onX field above, so
|
|
@@ -26,9 +26,9 @@ export interface ChatOptions {
|
|
|
26
26
|
*/
|
|
27
27
|
onNewMessageHandlers?: Array<() => void>;
|
|
28
28
|
onEndMessageHandlers?: Array<(message: ChatResponseString) => void>;
|
|
29
|
-
onToolCallStartHandlers?: Array<(toolCall:
|
|
30
|
-
onToolCallEndHandlers?: Array<(toolCall:
|
|
31
|
-
onToolCallErrorHandlers?: Array<(toolCall:
|
|
29
|
+
onToolCallStartHandlers?: Array<(toolCall: ToolCall) => void>;
|
|
30
|
+
onToolCallEndHandlers?: Array<(toolCall: ToolCall, result: unknown) => void>;
|
|
31
|
+
onToolCallErrorHandlers?: Array<(toolCall: ToolCall, error: Error) => "STOP" | "CONTINUE" | "RETRY" | void | Promise<"STOP" | "CONTINUE" | "RETRY" | void>>;
|
|
32
32
|
headers?: Record<string, string>;
|
|
33
33
|
responseFormat?: ResponseFormat;
|
|
34
34
|
thinking?: ThinkingConfig;
|
|
@@ -38,8 +38,9 @@ export interface ChatOptions {
|
|
|
38
38
|
assumeModelExists?: boolean;
|
|
39
39
|
provider?: string;
|
|
40
40
|
maxToolCalls?: number;
|
|
41
|
+
maxCorrections?: number;
|
|
41
42
|
requestTimeout?: number;
|
|
42
|
-
toolExecution?:
|
|
43
|
+
toolExecution?: ToolExecutionModeInput;
|
|
43
44
|
/**
|
|
44
45
|
* When true, independent tool calls returned in the same turn are executed
|
|
45
46
|
* concurrently instead of one at a time. Defaults to `config.toolConcurrency`.
|
|
@@ -47,10 +48,10 @@ export interface ChatOptions {
|
|
|
47
48
|
toolConcurrency?: boolean;
|
|
48
49
|
toolChoice?: ToolChoice;
|
|
49
50
|
toolCalls?: "one" | "many" | number;
|
|
50
|
-
onConfirmToolCall?: (toolCall:
|
|
51
|
+
onConfirmToolCall?: (toolCall: ToolCall) => Promise<boolean> | boolean;
|
|
51
52
|
onBeforeRequest?: (messages: Message[]) => Promise<Message[] | void>;
|
|
52
53
|
onAfterResponse?: (response: ChatResponseString) => Promise<ChatResponseString | void>;
|
|
53
|
-
onConfirmToolCallHandlers?: Array<(toolCall:
|
|
54
|
+
onConfirmToolCallHandlers?: Array<(toolCall: ToolCall) => Promise<boolean> | boolean>;
|
|
54
55
|
onBeforeRequestHandlers?: Array<(messages: Message[]) => Promise<Message[] | void>>;
|
|
55
56
|
onAfterResponseHandlers?: Array<(response: ChatResponseString) => Promise<ChatResponseString | void>>;
|
|
56
57
|
}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"ChatOptions.d.ts","sourceRoot":"","sources":["../../src/chat/ChatOptions.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/Tool.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface ToolDefinition {
|
|
|
15
15
|
strict?: boolean;
|
|
16
16
|
parameters: Record<string, unknown>;
|
|
17
17
|
};
|
|
18
|
-
handler?: (args:
|
|
18
|
+
handler?: (args: any) => Promise<string | ToolHalt>;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Stops the agentic tool execution loop and returns the content as the final response.
|
|
@@ -23,8 +23,8 @@ export interface ToolDefinition {
|
|
|
23
23
|
*
|
|
24
24
|
* @example
|
|
25
25
|
* ```typescript
|
|
26
|
-
* class PaymentTool extends Tool {
|
|
27
|
-
* async execute({ amount }) {
|
|
26
|
+
* class PaymentTool extends Tool<{ amount: number }> {
|
|
27
|
+
* async execute({ amount }: { amount: number }) {
|
|
28
28
|
* if (amount > 10000) {
|
|
29
29
|
* return this.halt("Payment requires manager approval. Please contact support.");
|
|
30
30
|
* }
|
|
@@ -50,8 +50,29 @@ export type ToolResolvable = Tool | {
|
|
|
50
50
|
} | ToolDefinition;
|
|
51
51
|
/**
|
|
52
52
|
* Subclass this to create tools with auto-generated schemas and type safety.
|
|
53
|
+
*
|
|
54
|
+
* Pass the argument type for a fully typed `execute`:
|
|
55
|
+
*
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const schema = z.object({ location: z.string() });
|
|
58
|
+
*
|
|
59
|
+
* class WeatherTool extends Tool<z.infer<typeof schema>> {
|
|
60
|
+
* name = "get_weather";
|
|
61
|
+
* description = "Get the current weather for a location";
|
|
62
|
+
* schema = schema;
|
|
63
|
+
*
|
|
64
|
+
* async execute({ location }: z.infer<typeof schema>) {
|
|
65
|
+
* return `Sunny in ${location}`;
|
|
66
|
+
* }
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* Without it, the arguments default to `Record<string, any>`, so a subclass can
|
|
71
|
+
* declare `execute` with its own argument shape. (With `Record<string, unknown>`
|
|
72
|
+
* an `execute({ location })` override was not assignable to the base method,
|
|
73
|
+
* and the class was then rejected by `withTool`.)
|
|
53
74
|
*/
|
|
54
|
-
export declare abstract class Tool<T = Record<string,
|
|
75
|
+
export declare abstract class Tool<T = Record<string, any>> {
|
|
55
76
|
/**
|
|
56
77
|
* The name of the tool (must match [a-zA-Z0-9_-]+).
|
|
57
78
|
*/
|
|
@@ -81,7 +102,7 @@ export declare abstract class Tool<T = Record<string, unknown>> {
|
|
|
81
102
|
*
|
|
82
103
|
* @example
|
|
83
104
|
* ```typescript
|
|
84
|
-
* async execute({ amount }) {
|
|
105
|
+
* async execute({ amount }: { amount: number }) {
|
|
85
106
|
* if (amount > 10000) {
|
|
86
107
|
* return this.halt("Payment requires manager approval.");
|
|
87
108
|
* }
|
package/dist/chat/Tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../../src/chat/Tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;
|
|
1
|
+
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../../src/chat/Tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,CAAC;IAIF,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;CACrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,QAAQ;aACS,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAE3C,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAG1C;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG;IAAE,QAAQ,IAAI,CAAA;CAAE,GAAG,cAAc,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,8BAAsB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAChD;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,WAAW,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,SAAgB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7E;;;OAGG;IACI,MAAM,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;aACa,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAElD;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAIzC;;;;OAIG;IACU,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;IA0BzD;;;OAGG;IACI,SAAS,IAAI,cAAc;CAwBnC"}
|
package/dist/chat/Tool.js
CHANGED
|
@@ -6,8 +6,8 @@ import { toJsonSchema } from "../schema/to-json-schema.js";
|
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```typescript
|
|
9
|
-
* class PaymentTool extends Tool {
|
|
10
|
-
* async execute({ amount }) {
|
|
9
|
+
* class PaymentTool extends Tool<{ amount: number }> {
|
|
10
|
+
* async execute({ amount }: { amount: number }) {
|
|
11
11
|
* if (amount > 10000) {
|
|
12
12
|
* return this.halt("Payment requires manager approval. Please contact support.");
|
|
13
13
|
* }
|
|
@@ -30,7 +30,29 @@ export class ToolHalt {
|
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Subclass this to create tools with auto-generated schemas and type safety.
|
|
33
|
+
*
|
|
34
|
+
* Pass the argument type for a fully typed `execute`:
|
|
35
|
+
*
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const schema = z.object({ location: z.string() });
|
|
38
|
+
*
|
|
39
|
+
* class WeatherTool extends Tool<z.infer<typeof schema>> {
|
|
40
|
+
* name = "get_weather";
|
|
41
|
+
* description = "Get the current weather for a location";
|
|
42
|
+
* schema = schema;
|
|
43
|
+
*
|
|
44
|
+
* async execute({ location }: z.infer<typeof schema>) {
|
|
45
|
+
* return `Sunny in ${location}`;
|
|
46
|
+
* }
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* Without it, the arguments default to `Record<string, any>`, so a subclass can
|
|
51
|
+
* declare `execute` with its own argument shape. (With `Record<string, unknown>`
|
|
52
|
+
* an `execute({ location })` override was not assignable to the base method,
|
|
53
|
+
* and the class was then rejected by `withTool`.)
|
|
33
54
|
*/
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- see the note above
|
|
34
56
|
export class Tool {
|
|
35
57
|
/**
|
|
36
58
|
* Whether to enforce strict JSON schema constraints for OpenAI and similar providers.
|
|
@@ -43,7 +65,7 @@ export class Tool {
|
|
|
43
65
|
*
|
|
44
66
|
* @example
|
|
45
67
|
* ```typescript
|
|
46
|
-
* async execute({ amount }) {
|
|
68
|
+
* async execute({ amount }: { amount: number }) {
|
|
47
69
|
* if (amount > 10000) {
|
|
48
70
|
* return this.halt("Payment requires manager approval.");
|
|
49
71
|
* }
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ToolCall, ToolDefinition } from "./Tool.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ToolExecutionModeInput } from "../constants.js";
|
|
3
3
|
import { ToolExecutionResult } from "./ToolHandler.js";
|
|
4
4
|
import { Middleware, MiddlewareContext } from "../types/Middleware.js";
|
|
5
5
|
export type ToolCallOutcome = {
|
|
@@ -16,15 +16,15 @@ export type ToolCallOutcome = {
|
|
|
16
16
|
};
|
|
17
17
|
export interface ToolCallExecutionOptions {
|
|
18
18
|
tools?: ToolDefinition[];
|
|
19
|
-
toolExecution?:
|
|
20
|
-
onConfirmToolCall?: (toolCall:
|
|
21
|
-
onToolCallStart?: (toolCall:
|
|
22
|
-
onToolCallEnd?: (toolCall:
|
|
19
|
+
toolExecution?: ToolExecutionModeInput;
|
|
20
|
+
onConfirmToolCall?: (toolCall: ToolCall) => Promise<boolean> | boolean;
|
|
21
|
+
onToolCallStart?: (toolCall: ToolCall) => void;
|
|
22
|
+
onToolCallEnd?: (toolCall: ToolCall, result: unknown) => void;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Confirm mode stays sequential since approval is interactive; concurrency
|
|
26
26
|
* only kicks in for AUTO/DRY_RUN turns with more than one independent call.
|
|
27
27
|
*/
|
|
28
|
-
export declare function shouldRunToolCallsConcurrently(toolConcurrency: boolean | undefined, toolExecution:
|
|
28
|
+
export declare function shouldRunToolCallsConcurrently(toolConcurrency: boolean | undefined, toolExecution: ToolExecutionModeInput | undefined, callCount: number): boolean;
|
|
29
29
|
export declare function executeToolCallOutcomes(toolCalls: ToolCall[], options: ToolCallExecutionOptions, middlewares: Middleware[], context: MiddlewareContext, concurrent: boolean): Promise<ToolCallOutcome[]>;
|
|
30
30
|
//# sourceMappingURL=ToolCallOutcome.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallOutcome.d.ts","sourceRoot":"","sources":["../../src/chat/ToolCallOutcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"ToolCallOutcome.d.ts","sourceRoot":"","sources":["../../src/chat/ToolCallOutcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAqB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAe,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGvE,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,mBAAmB,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACvE,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/D;AAuCD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,OAAO,GAAG,SAAS,EACpC,aAAa,EAAE,sBAAsB,GAAG,SAAS,EACjD,SAAS,EAAE,MAAM,GAChB,OAAO,CAET;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,EAAE,wBAAwB,EACjC,WAAW,EAAE,UAAU,EAAE,EACzB,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,eAAe,EAAE,CAAC,CAY5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ToolExecutionModeInput } from "../constants.js";
|
|
2
2
|
import { ToolCall, ToolDefinition } from "./Tool.js";
|
|
3
3
|
/**
|
|
4
4
|
* Result of a tool execution, including halt status
|
|
@@ -10,7 +10,7 @@ export interface ToolExecutionResult {
|
|
|
10
10
|
halted: boolean;
|
|
11
11
|
}
|
|
12
12
|
export declare class ToolHandler {
|
|
13
|
-
static shouldExecuteTools(toolCalls: ToolCall[] | undefined, mode?:
|
|
13
|
+
static shouldExecuteTools(toolCalls: ToolCall[] | undefined, mode?: ToolExecutionModeInput): boolean;
|
|
14
14
|
static requestToolConfirmation(toolCall: ToolCall, onConfirm?: (call: ToolCall) => Promise<boolean> | boolean): Promise<boolean>;
|
|
15
15
|
static execute(toolCall: ToolCall, tools: ToolDefinition[] | undefined, onStart?: (call: ToolCall) => void, onEnd?: (call: ToolCall, result: unknown) => void): Promise<ToolExecutionResult>;
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolHandler.d.ts","sourceRoot":"","sources":["../../src/chat/ToolHandler.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ToolHandler.d.ts","sourceRoot":"","sources":["../../src/chat/ToolHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAY,MAAM,WAAW,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB,MAAM,CAAC,kBAAkB,CACvB,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,EACjC,IAAI,CAAC,EAAE,sBAAsB,GAC5B,OAAO;WAMG,uBAAuB,CAClC,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GACzD,OAAO,CAAC,OAAO,CAAC;WAMN,OAAO,CAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,EAAE,GAAG,SAAS,EACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,EAClC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAChD,OAAO,CAAC,mBAAmB,CAAC;CAmDhC"}
|
package/dist/chat/ToolHandler.js
CHANGED
|
@@ -19,7 +19,21 @@ export class ToolHandler {
|
|
|
19
19
|
onStart(toolCall);
|
|
20
20
|
const tool = tools?.find((t) => t.function.name === toolCall.function.name);
|
|
21
21
|
if (tool?.handler) {
|
|
22
|
-
|
|
22
|
+
let args;
|
|
23
|
+
try {
|
|
24
|
+
args = JSON.parse(toolCall.function.arguments);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// The model produced malformed JSON for the tool arguments. Return a
|
|
28
|
+
// recoverable error the model can correct on the next turn instead of
|
|
29
|
+
// throwing and aborting the whole agentic loop.
|
|
30
|
+
return {
|
|
31
|
+
role: "tool",
|
|
32
|
+
tool_call_id: toolCall.id,
|
|
33
|
+
content: `Error: arguments for tool '${toolCall.function.name}' were not valid JSON. Please call the tool again with a valid JSON arguments object.`,
|
|
34
|
+
halted: false
|
|
35
|
+
};
|
|
36
|
+
}
|
|
23
37
|
const result = await tool.handler(args);
|
|
24
38
|
// Check if this is a halt signal
|
|
25
39
|
const isHalt = typeof result === "object" && result !== null && result instanceof ToolHalt;
|
package/dist/config.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export interface NodeLLMConfig {
|
|
|
18
18
|
xaiApiBase?: string;
|
|
19
19
|
mistralApiKey?: string;
|
|
20
20
|
mistralApiBase?: string;
|
|
21
|
+
/** TypeSafe (System One / Jev) key for judgments. */
|
|
22
|
+
typesafeApiKey?: string;
|
|
23
|
+
/** System One endpoint; point it at any Jev-compatible server. */
|
|
24
|
+
typesafeApiBase?: string;
|
|
21
25
|
bedrockApiKey?: string;
|
|
22
26
|
bedrockAccessKeyId?: string;
|
|
23
27
|
bedrockSecretAccessKey?: string;
|
|
@@ -31,7 +35,7 @@ export interface NodeLLMConfig {
|
|
|
31
35
|
maxRetries?: number;
|
|
32
36
|
requestTimeout?: number;
|
|
33
37
|
maxTokens?: number;
|
|
34
|
-
toolExecution?:
|
|
38
|
+
toolExecution?: ToolExecutionModeInput;
|
|
35
39
|
/**
|
|
36
40
|
* When true, independent tool calls returned in the same turn are executed
|
|
37
41
|
* concurrently instead of one at a time. Opt-in, overridable per-chat via
|
|
@@ -40,7 +44,7 @@ export interface NodeLLMConfig {
|
|
|
40
44
|
toolConcurrency?: boolean;
|
|
41
45
|
provider?: string;
|
|
42
46
|
}
|
|
43
|
-
import { ToolExecutionMode } from "./constants.js";
|
|
47
|
+
import { ToolExecutionMode, ToolExecutionModeInput } from "./constants.js";
|
|
44
48
|
export declare class Configuration implements NodeLLMConfig {
|
|
45
49
|
private _openaiApiKey?;
|
|
46
50
|
private _openaiApiBase?;
|
|
@@ -57,6 +61,8 @@ export declare class Configuration implements NodeLLMConfig {
|
|
|
57
61
|
private _xaiApiBase?;
|
|
58
62
|
private _mistralApiKey?;
|
|
59
63
|
private _mistralApiBase?;
|
|
64
|
+
private _typesafeApiKey?;
|
|
65
|
+
private _typesafeApiBase?;
|
|
60
66
|
private _bedrockApiKey?;
|
|
61
67
|
private _bedrockAccessKeyId?;
|
|
62
68
|
private _bedrockSecretAccessKey?;
|
|
@@ -97,6 +103,10 @@ export declare class Configuration implements NodeLLMConfig {
|
|
|
97
103
|
set mistralApiKey(v: string | undefined);
|
|
98
104
|
get mistralApiBase(): string | undefined;
|
|
99
105
|
set mistralApiBase(v: string | undefined);
|
|
106
|
+
get typesafeApiKey(): string | undefined;
|
|
107
|
+
set typesafeApiKey(v: string | undefined);
|
|
108
|
+
get typesafeApiBase(): string | undefined;
|
|
109
|
+
set typesafeApiBase(v: string | undefined);
|
|
100
110
|
get bedrockApiKey(): string | undefined;
|
|
101
111
|
set bedrockApiKey(v: string | undefined);
|
|
102
112
|
get bedrockAccessKeyId(): string | undefined;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_MAX_TOKENS, DEFAULT_TOOL_EXECUTION, DEFAULT_TOOL_CONCURRENCY, DEFAULT_OPENAI_BASE_URL, DEFAULT_ANTHROPIC_BASE_URL, DEFAULT_GEMINI_BASE_URL, DEFAULT_DEEPSEEK_BASE_URL, DEFAULT_OPENROUTER_BASE_URL, DEFAULT_OLLAMA_BASE_URL, DEFAULT_XAI_BASE_URL, DEFAULT_MISTRAL_BASE_URL, DEFAULT_BEDROCK_REGION } from "./constants.js";
|
|
1
|
+
import { DEFAULT_MAX_TOOL_CALLS, DEFAULT_MAX_RETRIES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_MAX_TOKENS, DEFAULT_TOOL_EXECUTION, DEFAULT_TOOL_CONCURRENCY, DEFAULT_OPENAI_BASE_URL, DEFAULT_ANTHROPIC_BASE_URL, DEFAULT_GEMINI_BASE_URL, DEFAULT_DEEPSEEK_BASE_URL, DEFAULT_OPENROUTER_BASE_URL, DEFAULT_OLLAMA_BASE_URL, DEFAULT_XAI_BASE_URL, DEFAULT_MISTRAL_BASE_URL, DEFAULT_TYPESAFE_BASE_URL, DEFAULT_BEDROCK_REGION } from "./constants.js";
|
|
2
2
|
export class Configuration {
|
|
3
3
|
_openaiApiKey;
|
|
4
4
|
_openaiApiBase;
|
|
@@ -15,6 +15,8 @@ export class Configuration {
|
|
|
15
15
|
_xaiApiBase;
|
|
16
16
|
_mistralApiKey;
|
|
17
17
|
_mistralApiBase;
|
|
18
|
+
_typesafeApiKey;
|
|
19
|
+
_typesafeApiBase;
|
|
18
20
|
_bedrockApiKey;
|
|
19
21
|
_bedrockAccessKeyId;
|
|
20
22
|
_bedrockSecretAccessKey;
|
|
@@ -117,6 +119,21 @@ export class Configuration {
|
|
|
117
119
|
set mistralApiBase(v) {
|
|
118
120
|
this._mistralApiBase = v;
|
|
119
121
|
}
|
|
122
|
+
get typesafeApiKey() {
|
|
123
|
+
// TYPESAFE_API_KEY matches the provider's name; JEV_API_KEY is accepted too.
|
|
124
|
+
return (this._typesafeApiKey ??
|
|
125
|
+
process.env.TYPESAFE_API_KEY?.trim() ??
|
|
126
|
+
process.env.JEV_API_KEY?.trim());
|
|
127
|
+
}
|
|
128
|
+
set typesafeApiKey(v) {
|
|
129
|
+
this._typesafeApiKey = v;
|
|
130
|
+
}
|
|
131
|
+
get typesafeApiBase() {
|
|
132
|
+
return (this._typesafeApiBase ?? process.env.TYPESAFE_API_BASE?.trim() ?? DEFAULT_TYPESAFE_BASE_URL);
|
|
133
|
+
}
|
|
134
|
+
set typesafeApiBase(v) {
|
|
135
|
+
this._typesafeApiBase = v;
|
|
136
|
+
}
|
|
120
137
|
// AWS Bedrock configuration
|
|
121
138
|
get bedrockApiKey() {
|
|
122
139
|
return this._bedrockApiKey ?? process.env.AWS_BEARER_TOKEN_BEDROCK?.trim();
|
package/dist/constants.d.ts
CHANGED
|
@@ -4,7 +4,13 @@ export declare enum ToolExecutionMode {
|
|
|
4
4
|
DRY_RUN = "dry-run"
|
|
5
5
|
}
|
|
6
6
|
export declare const DEFAULT_MAX_TOOL_CALLS = 5;
|
|
7
|
+
export declare const DEFAULT_MAX_CORRECTIONS = 5;
|
|
7
8
|
export declare const DEFAULT_MAX_RETRIES = 2;
|
|
9
|
+
/**
|
|
10
|
+
* A tool execution mode as callers may pass it: the enum member or its string
|
|
11
|
+
* value, so `withToolExecution("confirm")` compiles as the docs write it.
|
|
12
|
+
*/
|
|
13
|
+
export type ToolExecutionModeInput = ToolExecutionMode | `${ToolExecutionMode}`;
|
|
8
14
|
export declare const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
|
|
9
15
|
export declare const DEFAULT_TOOL_CONCURRENCY = false;
|
|
10
16
|
export declare const DEFAULT_REQUEST_TIMEOUT = 30000;
|
|
@@ -17,11 +23,13 @@ export declare const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1
|
|
|
17
23
|
export declare const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
|
|
18
24
|
export declare const DEFAULT_XAI_BASE_URL = "https://api.x.ai/v1";
|
|
19
25
|
export declare const DEFAULT_MISTRAL_BASE_URL = "https://api.mistral.ai/v1";
|
|
26
|
+
export declare const DEFAULT_TYPESAFE_BASE_URL = "https://api.typesafe.ai";
|
|
20
27
|
export declare const DEFAULT_MODELS: {
|
|
21
28
|
readonly TRANSCRIPTION: "whisper-1";
|
|
22
29
|
readonly MODERATION: "omni-moderation-latest";
|
|
23
30
|
readonly EMBEDDING: "text-embedding-3-small";
|
|
24
31
|
readonly IMAGE: "dall-e-3";
|
|
32
|
+
readonly JUDGMENT: "jev-latest";
|
|
25
33
|
};
|
|
26
34
|
export declare const DEFAULT_BEDROCK_REGION = "us-east-1";
|
|
27
35
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,sBAAsB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAGxC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,GAAG,iBAAiB,EAAE,CAAC;AAEhF,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AACzE,eAAO,MAAM,uBAAuB,qDAAqD,CAAC;AAC1F,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AACpE,eAAO,MAAM,2BAA2B,iCAAiC,CAAC;AAC1E,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAC1D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AAEX,eAAO,MAAM,sBAAsB,cAAc,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -5,6 +5,9 @@ export var ToolExecutionMode;
|
|
|
5
5
|
ToolExecutionMode["DRY_RUN"] = "dry-run";
|
|
6
6
|
})(ToolExecutionMode || (ToolExecutionMode = {}));
|
|
7
7
|
export const DEFAULT_MAX_TOOL_CALLS = 5;
|
|
8
|
+
// Caps how many times a middleware may drive a self-correction RETRY before
|
|
9
|
+
// the loop gives up, preventing an unbounded (and billable) request loop.
|
|
10
|
+
export const DEFAULT_MAX_CORRECTIONS = 5;
|
|
8
11
|
export const DEFAULT_MAX_RETRIES = 2;
|
|
9
12
|
export const DEFAULT_TOOL_EXECUTION = ToolExecutionMode.AUTO;
|
|
10
13
|
export const DEFAULT_TOOL_CONCURRENCY = false;
|
|
@@ -18,10 +21,12 @@ export const DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
|
18
21
|
export const DEFAULT_OLLAMA_BASE_URL = "http://localhost:11434/v1";
|
|
19
22
|
export const DEFAULT_XAI_BASE_URL = "https://api.x.ai/v1";
|
|
20
23
|
export const DEFAULT_MISTRAL_BASE_URL = "https://api.mistral.ai/v1";
|
|
24
|
+
export const DEFAULT_TYPESAFE_BASE_URL = "https://api.typesafe.ai";
|
|
21
25
|
export const DEFAULT_MODELS = {
|
|
22
26
|
TRANSCRIPTION: "whisper-1",
|
|
23
27
|
MODERATION: "omni-moderation-latest",
|
|
24
28
|
EMBEDDING: "text-embedding-3-small",
|
|
25
|
-
IMAGE: "dall-e-3"
|
|
29
|
+
IMAGE: "dall-e-3",
|
|
30
|
+
JUDGMENT: "jev-latest"
|
|
26
31
|
};
|
|
27
32
|
export const DEFAULT_BEDROCK_REGION = "us-east-1";
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -70,7 +70,9 @@ export declare class AuthenticationError extends APIError {
|
|
|
70
70
|
* 429 - Rate limit exceeded
|
|
71
71
|
*/
|
|
72
72
|
export declare class RateLimitError extends APIError {
|
|
73
|
-
|
|
73
|
+
/** Seconds to wait before retrying, parsed from a `Retry-After` response header when present. */
|
|
74
|
+
retryAfter?: number;
|
|
75
|
+
constructor(message: string, body: unknown, provider?: string, model?: string, retryAfter?: number);
|
|
74
76
|
}
|
|
75
77
|
/**
|
|
76
78
|
* 429 - Out of credits or monthly quota exceeded
|