@jaypie/llm 1.3.0 → 1.3.1
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 +9 -0
- package/dist/cjs/constants.d.ts +82 -30
- package/dist/cjs/index.cjs +3081 -578
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.ts +5 -1
- package/dist/cjs/observability/llmobs.d.ts +72 -0
- package/dist/cjs/operate/OperateLoop.d.ts +7 -0
- package/dist/cjs/operate/StreamLoop.d.ts +3 -0
- package/dist/cjs/operate/adapters/AnthropicAdapter.d.ts +36 -5
- package/dist/cjs/operate/adapters/BedrockAdapter.d.ts +78 -0
- package/dist/cjs/operate/adapters/{GeminiAdapter.d.ts → GoogleAdapter.d.ts} +19 -9
- package/dist/cjs/operate/adapters/OpenAiAdapter.d.ts +13 -3
- package/dist/cjs/operate/adapters/OpenRouterAdapter.d.ts +55 -8
- package/dist/cjs/operate/adapters/ProviderAdapter.interface.d.ts +5 -3
- package/dist/cjs/operate/adapters/XaiAdapter.d.ts +14 -0
- package/dist/cjs/operate/adapters/index.d.ts +3 -1
- package/dist/cjs/operate/index.d.ts +1 -1
- package/dist/cjs/operate/retry/RetryExecutor.d.ts +6 -3
- package/dist/cjs/operate/retry/createStaleRejectionGuard.d.ts +19 -0
- package/dist/cjs/operate/retry/index.d.ts +1 -0
- package/dist/cjs/operate/retry/isTransientNetworkError.d.ts +18 -0
- package/dist/cjs/operate/types.d.ts +2 -0
- package/dist/cjs/providers/anthropic/utils.d.ts +1 -1
- package/dist/cjs/providers/bedrock/BedrockProvider.class.d.ts +21 -0
- package/dist/cjs/providers/bedrock/index.d.ts +1 -0
- package/dist/cjs/providers/bedrock/utils.d.ts +6 -0
- package/dist/cjs/providers/{gemini/GeminiProvider.class.d.ts → google/GoogleProvider.class.d.ts} +1 -1
- package/dist/cjs/providers/google/index.d.ts +3 -0
- package/dist/{esm/providers/gemini → cjs/providers/google}/types.d.ts +1 -0
- package/dist/cjs/providers/{gemini → google}/utils.d.ts +1 -1
- package/dist/cjs/providers/openai/utils.d.ts +1 -1
- package/dist/cjs/providers/openrouter/utils.d.ts +1 -1
- package/dist/{esm/providers/gemini/GeminiProvider.class.d.ts → cjs/providers/xai/XaiProvider.class.d.ts} +1 -1
- package/dist/cjs/providers/xai/index.d.ts +1 -0
- package/dist/cjs/providers/xai/utils.d.ts +5 -0
- package/dist/cjs/types/LlmProvider.interface.d.ts +1 -1
- package/dist/cjs/types/LlmStreamChunk.interface.d.ts +2 -0
- package/dist/cjs/util/fillFormatArrays.d.ts +17 -0
- package/dist/cjs/util/index.d.ts +2 -0
- package/dist/cjs/util/jsonSchemaToOpenApi3.d.ts +10 -0
- package/dist/cjs/util/logger.d.ts +1 -2
- package/dist/cjs/util/maxTurnsFromOptions.d.ts +1 -1
- package/dist/esm/constants.d.ts +82 -30
- package/dist/esm/index.d.ts +5 -1
- package/dist/esm/index.js +3077 -578
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/observability/llmobs.d.ts +72 -0
- package/dist/esm/operate/OperateLoop.d.ts +7 -0
- package/dist/esm/operate/StreamLoop.d.ts +3 -0
- package/dist/esm/operate/adapters/AnthropicAdapter.d.ts +36 -5
- package/dist/esm/operate/adapters/BedrockAdapter.d.ts +78 -0
- package/dist/esm/operate/adapters/{GeminiAdapter.d.ts → GoogleAdapter.d.ts} +19 -9
- package/dist/esm/operate/adapters/OpenAiAdapter.d.ts +13 -3
- package/dist/esm/operate/adapters/OpenRouterAdapter.d.ts +55 -8
- package/dist/esm/operate/adapters/ProviderAdapter.interface.d.ts +5 -3
- package/dist/esm/operate/adapters/XaiAdapter.d.ts +14 -0
- package/dist/esm/operate/adapters/index.d.ts +3 -1
- package/dist/esm/operate/index.d.ts +1 -1
- package/dist/esm/operate/retry/RetryExecutor.d.ts +6 -3
- package/dist/esm/operate/retry/createStaleRejectionGuard.d.ts +19 -0
- package/dist/esm/operate/retry/index.d.ts +1 -0
- package/dist/esm/operate/retry/isTransientNetworkError.d.ts +18 -0
- package/dist/esm/operate/types.d.ts +2 -0
- package/dist/esm/providers/anthropic/utils.d.ts +1 -1
- package/dist/esm/providers/bedrock/BedrockProvider.class.d.ts +21 -0
- package/dist/esm/providers/bedrock/index.d.ts +1 -0
- package/dist/esm/providers/bedrock/utils.d.ts +6 -0
- package/dist/esm/providers/google/GoogleProvider.class.d.ts +21 -0
- package/dist/esm/providers/google/index.d.ts +3 -0
- package/dist/{cjs/providers/gemini → esm/providers/google}/types.d.ts +1 -0
- package/dist/esm/providers/{gemini → google}/utils.d.ts +1 -1
- package/dist/esm/providers/openai/utils.d.ts +1 -1
- package/dist/esm/providers/openrouter/utils.d.ts +1 -1
- package/dist/esm/providers/xai/XaiProvider.class.d.ts +21 -0
- package/dist/esm/providers/xai/index.d.ts +1 -0
- package/dist/esm/providers/xai/utils.d.ts +5 -0
- package/dist/esm/types/LlmProvider.interface.d.ts +1 -1
- package/dist/esm/types/LlmStreamChunk.interface.d.ts +2 -0
- package/dist/esm/util/fillFormatArrays.d.ts +17 -0
- package/dist/esm/util/index.d.ts +2 -0
- package/dist/esm/util/jsonSchemaToOpenApi3.d.ts +10 -0
- package/dist/esm/util/logger.d.ts +1 -2
- package/dist/esm/util/maxTurnsFromOptions.d.ts +1 -1
- package/package.json +8 -1
- package/dist/cjs/providers/gemini/index.d.ts +0 -3
- package/dist/esm/providers/gemini/index.d.ts +0 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { GoogleGenAI } from "@google/genai";
|
|
2
2
|
import { LlmMessageOptions } from "../../types/LlmProvider.interface.js";
|
|
3
3
|
export declare function loadSdk(): Promise<typeof import("@google/genai")>;
|
|
4
|
-
export declare const getLogger: () =>
|
|
4
|
+
export declare const getLogger: () => import("@jaypie/logger/dist/esm/JaypieLogger.js").default;
|
|
5
5
|
export declare function initializeClient({ apiKey, }?: {
|
|
6
6
|
apiKey?: string;
|
|
7
7
|
}): Promise<GoogleGenAI>;
|
|
@@ -2,7 +2,7 @@ import { JsonObject, NaturalSchema } from "@jaypie/types";
|
|
|
2
2
|
import { OpenAI } from "openai";
|
|
3
3
|
import { z } from "zod/v4";
|
|
4
4
|
import { LlmMessageOptions } from "../../types/LlmProvider.interface.js";
|
|
5
|
-
export declare const getLogger: () =>
|
|
5
|
+
export declare const getLogger: () => import("@jaypie/logger/dist/esm/JaypieLogger.js").default;
|
|
6
6
|
export declare function initializeClient({ apiKey, }?: {
|
|
7
7
|
apiKey?: string;
|
|
8
8
|
}): Promise<OpenAI>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { OpenRouter } from "@openrouter/sdk";
|
|
2
2
|
import { LlmMessageOptions } from "../../types/LlmProvider.interface.js";
|
|
3
3
|
export declare function loadSdk(): Promise<typeof import("@openrouter/sdk")>;
|
|
4
|
-
export declare const getLogger: () =>
|
|
4
|
+
export declare const getLogger: () => import("@jaypie/logger/dist/esm/JaypieLogger.js").default;
|
|
5
5
|
export declare function initializeClient({ apiKey, }?: {
|
|
6
6
|
apiKey?: string;
|
|
7
7
|
}): Promise<OpenRouter>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { JsonObject } from "@jaypie/types";
|
|
2
|
+
import { LlmHistory, LlmInputMessage, LlmMessageOptions, LlmOperateOptions, LlmOperateResponse, LlmProvider } from "../../types/LlmProvider.interface.js";
|
|
3
|
+
import { LlmStreamChunk } from "../../types/LlmStreamChunk.interface.js";
|
|
4
|
+
export declare class XaiProvider implements LlmProvider {
|
|
5
|
+
private model;
|
|
6
|
+
private _client?;
|
|
7
|
+
private _operateLoop?;
|
|
8
|
+
private _streamLoop?;
|
|
9
|
+
private apiKey?;
|
|
10
|
+
private log;
|
|
11
|
+
private conversationHistory;
|
|
12
|
+
constructor(model?: string, { apiKey }?: {
|
|
13
|
+
apiKey?: string;
|
|
14
|
+
});
|
|
15
|
+
private getClient;
|
|
16
|
+
private getOperateLoop;
|
|
17
|
+
private getStreamLoop;
|
|
18
|
+
send(message: string, options?: LlmMessageOptions): Promise<string | JsonObject>;
|
|
19
|
+
operate(input: string | LlmHistory | LlmInputMessage, options?: LlmOperateOptions): Promise<LlmOperateResponse>;
|
|
20
|
+
stream(input: string | LlmHistory | LlmInputMessage, options?: LlmOperateOptions): AsyncIterable<LlmStreamChunk>;
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { XaiProvider } from "./XaiProvider.class.js";
|
|
@@ -149,7 +149,7 @@ export type LlmHistory = LlmHistoryItem[];
|
|
|
149
149
|
* Used when the primary provider fails with an unrecoverable error.
|
|
150
150
|
*/
|
|
151
151
|
export interface LlmFallbackConfig {
|
|
152
|
-
/** Provider name (e.g., "openai", "anthropic", "
|
|
152
|
+
/** Provider name (e.g., "openai", "anthropic", "google") */
|
|
153
153
|
provider: string;
|
|
154
154
|
/** Model to use with this provider (optional, uses provider default if not specified) */
|
|
155
155
|
model?: string;
|
|
@@ -16,6 +16,8 @@ export interface LlmStreamChunkToolCall {
|
|
|
16
16
|
id: string;
|
|
17
17
|
name: string;
|
|
18
18
|
arguments: string;
|
|
19
|
+
/** Provider-specific metadata preserved through tool-call roundtrip */
|
|
20
|
+
metadata?: Record<string, unknown>;
|
|
19
21
|
};
|
|
20
22
|
}
|
|
21
23
|
export interface LlmStreamChunkToolResult {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
import { JsonObject, NaturalSchema } from "@jaypie/types";
|
|
3
|
+
type Format = JsonObject | NaturalSchema | z.ZodType;
|
|
4
|
+
/**
|
|
5
|
+
* Ensure every array field declared in `format` is present in `content` as an
|
|
6
|
+
* array. A declared `format` is a schema contract: an empty list should surface
|
|
7
|
+
* as `[]`, not be dropped from the response. Some providers/models omit empty
|
|
8
|
+
* array fields entirely, leaving consumers to read `.length` on `undefined`.
|
|
9
|
+
*
|
|
10
|
+
* Only mutates a (cloned) structured object; strings and non-objects pass
|
|
11
|
+
* through untouched.
|
|
12
|
+
*/
|
|
13
|
+
export declare function fillFormatArrays({ content, format, }: {
|
|
14
|
+
content: JsonObject;
|
|
15
|
+
format: Format;
|
|
16
|
+
}): JsonObject;
|
|
17
|
+
export {};
|
package/dist/esm/util/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from "./determineModelProvider.js";
|
|
2
2
|
export * from "./extractReasoning.js";
|
|
3
|
+
export * from "./fillFormatArrays.js";
|
|
3
4
|
export * from "./formatOperateInput.js";
|
|
4
5
|
export * from "./formatOperateMessage.js";
|
|
6
|
+
export * from "./jsonSchemaToOpenApi3.js";
|
|
5
7
|
export * from "./logger.js";
|
|
6
8
|
export * from "./maxTurnsFromOptions.js";
|
|
7
9
|
export * from "./naturalZodSchema.js";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { JsonObject } from "@jaypie/types";
|
|
2
|
+
/**
|
|
3
|
+
* Converts a JSON Schema (Draft 2020-12) object to the OpenAPI 3.0 schema subset
|
|
4
|
+
* that Gemini's `responseSchema` accepts. This constrains generation (not just validation)
|
|
5
|
+
* and avoids the `items`-keyword leakage bug in `responseJsonSchema`.
|
|
6
|
+
*
|
|
7
|
+
* Strips: $schema, additionalProperties, $defs, $ref (inlines where possible), const
|
|
8
|
+
* Preserves: type, properties, required, items, enum, description, nullable
|
|
9
|
+
*/
|
|
10
|
+
export declare function jsonSchemaToOpenApi3(schema: JsonObject): JsonObject;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export declare const getLogger: () =>
|
|
2
|
-
export declare const log: any;
|
|
1
|
+
export declare const getLogger: () => import("@jaypie/logger/dist/esm/JaypieLogger").default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LlmOperateOptions } from "../types/LlmProvider.interface.js";
|
|
2
2
|
export declare const MAX_TURNS_ABSOLUTE_LIMIT = 72;
|
|
3
|
-
export declare const MAX_TURNS_DEFAULT_LIMIT =
|
|
3
|
+
export declare const MAX_TURNS_DEFAULT_LIMIT = 24;
|
|
4
4
|
/**
|
|
5
5
|
* Determines the maximum number of turns based on the provided options
|
|
6
6
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jaypie/llm",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Large language model utilities",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
"format": "eslint . --fix",
|
|
29
29
|
"lint": "eslint .",
|
|
30
30
|
"test": "vitest run .",
|
|
31
|
+
"test:matrix": "tsx test/matrix.ts",
|
|
32
|
+
"test:matrix:bedrock": "APP_MODELS=\"us.anthropic.claude-opus-4-7,us.anthropic.claude-sonnet-4-6,us.anthropic.claude-haiku-4-5-20251001-v1:0,amazon.nova-pro-v1:0,us.amazon.nova-2-lite-v1:0,amazon.nova-micro-v1:0,deepseek.v3.2,google.gemma-3-27b-it,moonshotai.kimi-k2.5,openai.gpt-oss-120b-1:0\" tsx test/matrix.ts",
|
|
31
33
|
"test:watch": "vitest",
|
|
32
34
|
"typecheck": "tsc --noEmit"
|
|
33
35
|
},
|
|
@@ -43,12 +45,14 @@
|
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|
|
45
47
|
"@anthropic-ai/sdk": "^0.71.0",
|
|
48
|
+
"@aws-sdk/client-bedrock-runtime": "^3.1045.0",
|
|
46
49
|
"@google/genai": "^1.30.0",
|
|
47
50
|
"@jaypie/types": "*",
|
|
48
51
|
"@openrouter/sdk": "^0.1.27"
|
|
49
52
|
},
|
|
50
53
|
"peerDependencies": {
|
|
51
54
|
"@anthropic-ai/sdk": "^0.71.0",
|
|
55
|
+
"@aws-sdk/client-bedrock-runtime": "^3.1045.0",
|
|
52
56
|
"@google/genai": "^1.30.0",
|
|
53
57
|
"@jaypie/kit": "*",
|
|
54
58
|
"@jaypie/logger": "*",
|
|
@@ -58,6 +62,9 @@
|
|
|
58
62
|
"@anthropic-ai/sdk": {
|
|
59
63
|
"optional": true
|
|
60
64
|
},
|
|
65
|
+
"@aws-sdk/client-bedrock-runtime": {
|
|
66
|
+
"optional": true
|
|
67
|
+
},
|
|
61
68
|
"@google/genai": {
|
|
62
69
|
"optional": true
|
|
63
70
|
},
|