@jaypie/llm 1.3.4 → 1.3.5
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/cjs/index.cjs +166 -27
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +13 -1
- package/dist/cjs/{index.d.ts → src/index.d.ts} +1 -0
- package/dist/cjs/{util → src/util}/index.d.ts +1 -0
- package/dist/cjs/src/util/jsonSchema.d.ts +17 -0
- package/dist/esm/index.d.ts +13 -1
- package/dist/esm/index.js +191 -54
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/src/index.d.ts +17 -0
- package/dist/esm/{util → src/util}/index.d.ts +1 -0
- package/dist/esm/src/util/jsonSchema.d.ts +17 -0
- package/package.json +3 -2
- /package/dist/cjs/{Llm.d.ts → src/Llm.d.ts} +0 -0
- /package/dist/cjs/{constants.d.ts → src/constants.d.ts} +0 -0
- /package/dist/cjs/{observability → src/observability}/llmobs.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/OperateLoop.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/StreamLoop.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/adapters/AnthropicAdapter.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/adapters/BedrockAdapter.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/adapters/GoogleAdapter.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/adapters/OpenAiAdapter.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/adapters/OpenRouterAdapter.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/adapters/ProviderAdapter.interface.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/adapters/XaiAdapter.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/adapters/index.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/hooks/HookRunner.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/hooks/index.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/index.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/input/InputProcessor.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/input/index.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/response/ResponseBuilder.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/response/index.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/retry/RetryExecutor.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/retry/RetryPolicy.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/retry/createStaleRejectionGuard.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/retry/index.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/retry/isTransientNetworkError.d.ts +0 -0
- /package/dist/cjs/{operate → src/operate}/types.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/anthropic/AnthropicProvider.class.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/anthropic/client.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/anthropic/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/anthropic/types.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/anthropic/utils.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/bedrock/BedrockProvider.class.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/bedrock/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/bedrock/utils.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/google/GoogleProvider.class.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/google/client.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/google/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/google/types.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/google/utils.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openai/OpenAiProvider.class.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openai/client.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openai/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openai/responseFormat.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openai/types.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openai/utils.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openrouter/OpenRouterProvider.class.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openrouter/client.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openrouter/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/openrouter/utils.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/xai/XaiProvider.class.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/xai/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/xai/utils.d.ts +0 -0
- /package/dist/cjs/{tools → src/tools}/Toolkit.class.d.ts +0 -0
- /package/dist/cjs/{tools → src/tools}/index.d.ts +0 -0
- /package/dist/cjs/{tools → src/tools}/random.d.ts +0 -0
- /package/dist/cjs/{tools → src/tools}/roll.d.ts +0 -0
- /package/dist/cjs/{tools → src/tools}/time.d.ts +0 -0
- /package/dist/cjs/{tools → src/tools}/weather.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/LlmOperateInput.guards.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/LlmProvider.interface.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/LlmStreamChunk.interface.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/LlmTool.interface.d.ts +0 -0
- /package/dist/cjs/{upload → src/upload}/detectMimeType.d.ts +0 -0
- /package/dist/cjs/{upload → src/upload}/extractPdfPages.d.ts +0 -0
- /package/dist/cjs/{upload → src/upload}/index.d.ts +0 -0
- /package/dist/cjs/{upload → src/upload}/loadLocalFile.d.ts +0 -0
- /package/dist/cjs/{upload → src/upload}/loadS3File.d.ts +0 -0
- /package/dist/cjs/{upload → src/upload}/resolveOperateInput.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/determineModelProvider.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/extractReasoning.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/fillFormatArrays.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/formatOperateInput.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/formatOperateMessage.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/jsonSchemaToOpenApi3.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/logger.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/maxTurnsFromOptions.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/naturalZodSchema.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/random.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/repairFormatKeys.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/sse.d.ts +0 -0
- /package/dist/cjs/{util → src/util}/tryParseNumber.d.ts +0 -0
- /package/dist/esm/{Llm.d.ts → src/Llm.d.ts} +0 -0
- /package/dist/esm/{constants.d.ts → src/constants.d.ts} +0 -0
- /package/dist/esm/{observability → src/observability}/llmobs.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/OperateLoop.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/StreamLoop.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/adapters/AnthropicAdapter.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/adapters/BedrockAdapter.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/adapters/GoogleAdapter.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/adapters/OpenAiAdapter.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/adapters/OpenRouterAdapter.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/adapters/ProviderAdapter.interface.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/adapters/XaiAdapter.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/adapters/index.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/hooks/HookRunner.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/hooks/index.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/index.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/input/InputProcessor.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/input/index.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/response/ResponseBuilder.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/response/index.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/retry/RetryExecutor.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/retry/RetryPolicy.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/retry/createStaleRejectionGuard.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/retry/index.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/retry/isTransientNetworkError.d.ts +0 -0
- /package/dist/esm/{operate → src/operate}/types.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/anthropic/AnthropicProvider.class.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/anthropic/client.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/anthropic/index.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/anthropic/types.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/anthropic/utils.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/bedrock/BedrockProvider.class.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/bedrock/index.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/bedrock/utils.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/google/GoogleProvider.class.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/google/client.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/google/index.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/google/types.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/google/utils.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openai/OpenAiProvider.class.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openai/client.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openai/index.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openai/responseFormat.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openai/types.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openai/utils.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openrouter/OpenRouterProvider.class.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openrouter/client.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openrouter/index.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/openrouter/utils.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/xai/XaiProvider.class.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/xai/index.d.ts +0 -0
- /package/dist/esm/{providers → src/providers}/xai/utils.d.ts +0 -0
- /package/dist/esm/{tools → src/tools}/Toolkit.class.d.ts +0 -0
- /package/dist/esm/{tools → src/tools}/index.d.ts +0 -0
- /package/dist/esm/{tools → src/tools}/random.d.ts +0 -0
- /package/dist/esm/{tools → src/tools}/roll.d.ts +0 -0
- /package/dist/esm/{tools → src/tools}/time.d.ts +0 -0
- /package/dist/esm/{tools → src/tools}/weather.d.ts +0 -0
- /package/dist/esm/{types → src/types}/LlmOperateInput.guards.d.ts +0 -0
- /package/dist/esm/{types → src/types}/LlmProvider.interface.d.ts +0 -0
- /package/dist/esm/{types → src/types}/LlmStreamChunk.interface.d.ts +0 -0
- /package/dist/esm/{types → src/types}/LlmTool.interface.d.ts +0 -0
- /package/dist/esm/{upload → src/upload}/detectMimeType.d.ts +0 -0
- /package/dist/esm/{upload → src/upload}/extractPdfPages.d.ts +0 -0
- /package/dist/esm/{upload → src/upload}/index.d.ts +0 -0
- /package/dist/esm/{upload → src/upload}/loadLocalFile.d.ts +0 -0
- /package/dist/esm/{upload → src/upload}/loadS3File.d.ts +0 -0
- /package/dist/esm/{upload → src/upload}/resolveOperateInput.d.ts +0 -0
- /package/dist/esm/{util → src/util}/determineModelProvider.d.ts +0 -0
- /package/dist/esm/{util → src/util}/extractReasoning.d.ts +0 -0
- /package/dist/esm/{util → src/util}/fillFormatArrays.d.ts +0 -0
- /package/dist/esm/{util → src/util}/formatOperateInput.d.ts +0 -0
- /package/dist/esm/{util → src/util}/formatOperateMessage.d.ts +0 -0
- /package/dist/esm/{util → src/util}/jsonSchemaToOpenApi3.d.ts +0 -0
- /package/dist/esm/{util → src/util}/logger.d.ts +0 -0
- /package/dist/esm/{util → src/util}/maxTurnsFromOptions.d.ts +0 -0
- /package/dist/esm/{util → src/util}/naturalZodSchema.d.ts +0 -0
- /package/dist/esm/{util → src/util}/random.d.ts +0 -0
- /package/dist/esm/{util → src/util}/repairFormatKeys.d.ts +0 -0
- /package/dist/esm/{util → src/util}/sse.d.ts +0 -0
- /package/dist/esm/{util → src/util}/tryParseNumber.d.ts +0 -0
package/dist/cjs/index.d.cts
CHANGED
|
@@ -581,6 +581,18 @@ declare const toolkit: JaypieToolkit;
|
|
|
581
581
|
*/
|
|
582
582
|
declare function extractReasoning(history: LlmHistory): string[];
|
|
583
583
|
|
|
584
|
+
/**
|
|
585
|
+
* Convert a Natural Schema to JSON Schema. Lossless: Natural Schema is a
|
|
586
|
+
* strict subset of what JSON Schema can express.
|
|
587
|
+
*/
|
|
588
|
+
declare function naturalSchemaToJsonSchema(schema: NaturalSchema): JsonObject;
|
|
589
|
+
/**
|
|
590
|
+
* Convert a JSON Schema object node to Natural Schema. Lossy: constraints,
|
|
591
|
+
* descriptions, defaults, unions, and optionality have no Natural Schema
|
|
592
|
+
* representation. Dropped keywords are logged at debug level, never thrown.
|
|
593
|
+
*/
|
|
594
|
+
declare function jsonSchemaToNaturalSchema(schema: JsonObject): NaturalSchema;
|
|
595
|
+
|
|
584
596
|
declare class BedrockProvider implements LlmProvider {
|
|
585
597
|
private model;
|
|
586
598
|
private region?;
|
|
@@ -657,5 +669,5 @@ declare class XaiProvider implements LlmProvider {
|
|
|
657
669
|
stream(input: string | LlmHistory | LlmInputMessage, options?: LlmOperateOptions): AsyncIterable<LlmStreamChunk>;
|
|
658
670
|
}
|
|
659
671
|
|
|
660
|
-
export { BedrockProvider, GoogleProvider as GeminiProvider, GoogleProvider, JaypieToolkit, constants as LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, OpenRouterProvider, Toolkit, XaiProvider, extractReasoning, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, toolkit, tools };
|
|
672
|
+
export { BedrockProvider, GoogleProvider as GeminiProvider, GoogleProvider, JaypieToolkit, constants as LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, OpenRouterProvider, Toolkit, XaiProvider, extractReasoning, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, jsonSchemaToNaturalSchema, naturalSchemaToJsonSchema, toolkit, tools };
|
|
661
673
|
export type { LlmFallbackConfig, LlmHistory, LlmInputContent, LlmInputContentFile, LlmInputContentImage, LlmInputContentText, LlmInputMessage, LlmMessageOptions, LlmOperateInput, LlmOperateInputContent, LlmOperateInputFile, LlmOperateInputImage, LlmOperateOptions, LlmOperateResponse, LlmOptions, LlmProvider, LlmStreamChunk, LlmStreamChunkDone, LlmStreamChunkError, LlmStreamChunkText, LlmStreamChunkToolCall, LlmStreamChunkToolResult, LlmTool };
|
|
@@ -8,6 +8,7 @@ export type { LlmStreamChunk, LlmStreamChunkDone, LlmStreamChunkError, LlmStream
|
|
|
8
8
|
export { LlmStreamChunkType } from "./types/LlmStreamChunk.interface.js";
|
|
9
9
|
export { JaypieToolkit, toolkit, Toolkit, tools } from "./tools/index.js";
|
|
10
10
|
export { extractReasoning } from "./util/extractReasoning.js";
|
|
11
|
+
export { jsonSchemaToNaturalSchema, naturalSchemaToJsonSchema, } from "./util/jsonSchema.js";
|
|
11
12
|
export { BedrockProvider } from "./providers/bedrock/index.js";
|
|
12
13
|
/** @deprecated Use GoogleProvider — "Google" is the provider; Gemini is the model family */
|
|
13
14
|
export { GoogleProvider as GeminiProvider } from "./providers/google/index.js";
|
|
@@ -3,6 +3,7 @@ export * from "./extractReasoning.js";
|
|
|
3
3
|
export * from "./fillFormatArrays.js";
|
|
4
4
|
export * from "./formatOperateInput.js";
|
|
5
5
|
export * from "./formatOperateMessage.js";
|
|
6
|
+
export * from "./jsonSchema.js";
|
|
6
7
|
export * from "./jsonSchemaToOpenApi3.js";
|
|
7
8
|
export * from "./logger.js";
|
|
8
9
|
export * from "./maxTurnsFromOptions.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { JsonObject, NaturalSchema } from "@jaypie/types";
|
|
2
|
+
/**
|
|
3
|
+
* Duck-type check for a bare JSON Schema object node: `{ type: "object", properties: {...} }`.
|
|
4
|
+
* Does not require the OpenAI-style `{ type: "json_schema", ... }` envelope.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isJsonSchema(value: unknown): value is JsonObject;
|
|
7
|
+
/**
|
|
8
|
+
* Convert a Natural Schema to JSON Schema. Lossless: Natural Schema is a
|
|
9
|
+
* strict subset of what JSON Schema can express.
|
|
10
|
+
*/
|
|
11
|
+
export declare function naturalSchemaToJsonSchema(schema: NaturalSchema): JsonObject;
|
|
12
|
+
/**
|
|
13
|
+
* Convert a JSON Schema object node to Natural Schema. Lossy: constraints,
|
|
14
|
+
* descriptions, defaults, unions, and optionality have no Natural Schema
|
|
15
|
+
* representation. Dropped keywords are logged at debug level, never thrown.
|
|
16
|
+
*/
|
|
17
|
+
export declare function jsonSchemaToNaturalSchema(schema: JsonObject): NaturalSchema;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -581,6 +581,18 @@ declare const toolkit: JaypieToolkit;
|
|
|
581
581
|
*/
|
|
582
582
|
declare function extractReasoning(history: LlmHistory): string[];
|
|
583
583
|
|
|
584
|
+
/**
|
|
585
|
+
* Convert a Natural Schema to JSON Schema. Lossless: Natural Schema is a
|
|
586
|
+
* strict subset of what JSON Schema can express.
|
|
587
|
+
*/
|
|
588
|
+
declare function naturalSchemaToJsonSchema(schema: NaturalSchema): JsonObject;
|
|
589
|
+
/**
|
|
590
|
+
* Convert a JSON Schema object node to Natural Schema. Lossy: constraints,
|
|
591
|
+
* descriptions, defaults, unions, and optionality have no Natural Schema
|
|
592
|
+
* representation. Dropped keywords are logged at debug level, never thrown.
|
|
593
|
+
*/
|
|
594
|
+
declare function jsonSchemaToNaturalSchema(schema: JsonObject): NaturalSchema;
|
|
595
|
+
|
|
584
596
|
declare class BedrockProvider implements LlmProvider {
|
|
585
597
|
private model;
|
|
586
598
|
private region?;
|
|
@@ -657,5 +669,5 @@ declare class XaiProvider implements LlmProvider {
|
|
|
657
669
|
stream(input: string | LlmHistory | LlmInputMessage, options?: LlmOperateOptions): AsyncIterable<LlmStreamChunk>;
|
|
658
670
|
}
|
|
659
671
|
|
|
660
|
-
export { BedrockProvider, GoogleProvider as GeminiProvider, GoogleProvider, JaypieToolkit, constants as LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, OpenRouterProvider, Toolkit, XaiProvider, extractReasoning, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, toolkit, tools };
|
|
672
|
+
export { BedrockProvider, GoogleProvider as GeminiProvider, GoogleProvider, JaypieToolkit, constants as LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, OpenRouterProvider, Toolkit, XaiProvider, extractReasoning, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, jsonSchemaToNaturalSchema, naturalSchemaToJsonSchema, toolkit, tools };
|
|
661
673
|
export type { LlmFallbackConfig, LlmHistory, LlmInputContent, LlmInputContentFile, LlmInputContentImage, LlmInputContentText, LlmInputMessage, LlmMessageOptions, LlmOperateInput, LlmOperateInputContent, LlmOperateInputFile, LlmOperateInputImage, LlmOperateOptions, LlmOperateResponse, LlmOptions, LlmProvider, LlmStreamChunk, LlmStreamChunkDone, LlmStreamChunkError, LlmStreamChunkText, LlmStreamChunkToolCall, LlmStreamChunkToolResult, LlmTool };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConfigurationError, BadGatewayError, TooManyRequestsError, NotImplementedError } from '@jaypie/errors';
|
|
2
|
-
import log$
|
|
2
|
+
import log$1, { log as log$2 } from '@jaypie/logger';
|
|
3
3
|
import { z } from 'zod/v4';
|
|
4
4
|
import { placeholders, JAYPIE, resolveValue, sleep } from '@jaypie/kit';
|
|
5
5
|
import RandomLib from 'random';
|
|
@@ -765,6 +765,119 @@ function formatOperateInput(input, options) {
|
|
|
765
765
|
return [input];
|
|
766
766
|
}
|
|
767
767
|
|
|
768
|
+
// Keywords a JSON Schema object node can carry that Natural Schema has no
|
|
769
|
+
// representation for. Anything present here (or any other unrecognized key)
|
|
770
|
+
// is dropped silently and logged, never thrown.
|
|
771
|
+
const LOSSY_OBJECT_KEYWORDS = [
|
|
772
|
+
"$defs",
|
|
773
|
+
"$id",
|
|
774
|
+
"$ref",
|
|
775
|
+
"$schema",
|
|
776
|
+
"additionalProperties",
|
|
777
|
+
"const",
|
|
778
|
+
"default",
|
|
779
|
+
"description",
|
|
780
|
+
"format",
|
|
781
|
+
"maxLength",
|
|
782
|
+
"maximum",
|
|
783
|
+
"minLength",
|
|
784
|
+
"minimum",
|
|
785
|
+
"multipleOf",
|
|
786
|
+
"nullable",
|
|
787
|
+
"allOf",
|
|
788
|
+
"anyOf",
|
|
789
|
+
"oneOf",
|
|
790
|
+
"pattern",
|
|
791
|
+
];
|
|
792
|
+
const KNOWN_KEYWORDS = new Set([
|
|
793
|
+
"type",
|
|
794
|
+
"properties",
|
|
795
|
+
"required",
|
|
796
|
+
"items",
|
|
797
|
+
"enum",
|
|
798
|
+
...LOSSY_OBJECT_KEYWORDS,
|
|
799
|
+
]);
|
|
800
|
+
/**
|
|
801
|
+
* Duck-type check for a bare JSON Schema object node: `{ type: "object", properties: {...} }`.
|
|
802
|
+
* Does not require the OpenAI-style `{ type: "json_schema", ... }` envelope.
|
|
803
|
+
*/
|
|
804
|
+
function isJsonSchema$1(value) {
|
|
805
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
806
|
+
return false;
|
|
807
|
+
}
|
|
808
|
+
const schema = value;
|
|
809
|
+
return (schema.type === "object" &&
|
|
810
|
+
typeof schema.properties === "object" &&
|
|
811
|
+
schema.properties !== null &&
|
|
812
|
+
!Array.isArray(schema.properties));
|
|
813
|
+
}
|
|
814
|
+
/**
|
|
815
|
+
* Convert a Natural Schema to JSON Schema. Lossless: Natural Schema is a
|
|
816
|
+
* strict subset of what JSON Schema can express.
|
|
817
|
+
*/
|
|
818
|
+
function naturalSchemaToJsonSchema(schema) {
|
|
819
|
+
return z.toJSONSchema(naturalZodSchema(schema));
|
|
820
|
+
}
|
|
821
|
+
function logDroppedKeywords(schema, path) {
|
|
822
|
+
for (const key of Object.keys(schema)) {
|
|
823
|
+
if (!KNOWN_KEYWORDS.has(key)) {
|
|
824
|
+
log$1.debug(`[jsonSchemaToNaturalSchema] Dropping unrecognized keyword "${key}" at "${path}"`);
|
|
825
|
+
}
|
|
826
|
+
else if (LOSSY_OBJECT_KEYWORDS.includes(key) &&
|
|
827
|
+
schema[key] !== undefined) {
|
|
828
|
+
log$1.debug(`[jsonSchemaToNaturalSchema] Dropping unsupported keyword "${key}" at "${path}"`);
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
function convertNode(schema, path) {
|
|
833
|
+
logDroppedKeywords(schema, path);
|
|
834
|
+
if (Array.isArray(schema.enum)) {
|
|
835
|
+
return schema.enum;
|
|
836
|
+
}
|
|
837
|
+
switch (schema.type) {
|
|
838
|
+
case "string":
|
|
839
|
+
return String;
|
|
840
|
+
case "number":
|
|
841
|
+
case "integer":
|
|
842
|
+
return Number;
|
|
843
|
+
case "boolean":
|
|
844
|
+
return Boolean;
|
|
845
|
+
case "array": {
|
|
846
|
+
const items = schema.items;
|
|
847
|
+
if (typeof items !== "object" || items === null || Array.isArray(items)) {
|
|
848
|
+
return Array;
|
|
849
|
+
}
|
|
850
|
+
return [convertNode(items, `${path}[]`)];
|
|
851
|
+
}
|
|
852
|
+
case "object": {
|
|
853
|
+
const properties = schema.properties;
|
|
854
|
+
if (!properties || Object.keys(properties).length === 0) {
|
|
855
|
+
return Object;
|
|
856
|
+
}
|
|
857
|
+
const required = new Set(Array.isArray(schema.required) ? schema.required : []);
|
|
858
|
+
const result = {};
|
|
859
|
+
for (const [key, value] of Object.entries(properties)) {
|
|
860
|
+
if (!required.has(key)) {
|
|
861
|
+
log$1.debug(`[jsonSchemaToNaturalSchema] Field "${path}.${key}" is optional; Natural Schema has no optional marker — treating as required`);
|
|
862
|
+
}
|
|
863
|
+
result[key] = convertNode(value, `${path}.${key}`);
|
|
864
|
+
}
|
|
865
|
+
return result;
|
|
866
|
+
}
|
|
867
|
+
default:
|
|
868
|
+
log$1.debug(`[jsonSchemaToNaturalSchema] Unsupported type "${String(schema.type)}" at "${path}"; defaulting to Object`);
|
|
869
|
+
return Object;
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
/**
|
|
873
|
+
* Convert a JSON Schema object node to Natural Schema. Lossy: constraints,
|
|
874
|
+
* descriptions, defaults, unions, and optionality have no Natural Schema
|
|
875
|
+
* representation. Dropped keywords are logged at debug level, never thrown.
|
|
876
|
+
*/
|
|
877
|
+
function jsonSchemaToNaturalSchema(schema) {
|
|
878
|
+
return convertNode(schema, "$");
|
|
879
|
+
}
|
|
880
|
+
|
|
768
881
|
/**
|
|
769
882
|
* Converts a JSON Schema (Draft 2020-12) object to the OpenAPI 3.0 schema subset
|
|
770
883
|
* that Gemini's `responseSchema` accepts. This constrains generation (not just validation)
|
|
@@ -807,7 +920,7 @@ function jsonSchemaToOpenApi3(schema) {
|
|
|
807
920
|
return result;
|
|
808
921
|
}
|
|
809
922
|
|
|
810
|
-
const getLogger$6 = () => log$
|
|
923
|
+
const getLogger$6 = () => log$2.lib({ lib: JAYPIE.LIB.LLM });
|
|
811
924
|
|
|
812
925
|
// Turn policy constants
|
|
813
926
|
const MAX_TURNS_ABSOLUTE_LIMIT = 72;
|
|
@@ -1649,7 +1762,7 @@ class AnthropicAdapter extends BaseProviderAdapter {
|
|
|
1649
1762
|
? [...request.tools]
|
|
1650
1763
|
: [];
|
|
1651
1764
|
if (useFallbackStructuredOutput && request.format) {
|
|
1652
|
-
log$
|
|
1765
|
+
log$2.warn(`[AnthropicAdapter] Using legacy structured_output tool fallback for model ${anthropicRequest.model}; native output_config previously rejected for this model.`);
|
|
1653
1766
|
allTools.push({
|
|
1654
1767
|
name: STRUCTURED_OUTPUT_TOOL_NAME$3,
|
|
1655
1768
|
description: "Output a structured JSON object, " +
|
|
@@ -1713,11 +1826,13 @@ class AnthropicAdapter extends BaseProviderAdapter {
|
|
|
1713
1826
|
}
|
|
1714
1827
|
formatOutputSchema(schema) {
|
|
1715
1828
|
let jsonSchema;
|
|
1716
|
-
// Check if schema is already a JsonObject
|
|
1717
|
-
|
|
1829
|
+
// Check if schema is already a JsonObject — either the OpenAI-style
|
|
1830
|
+
// `{ type: "json_schema", ... }` envelope or a bare `{ type: "object", properties }` node
|
|
1831
|
+
if ((typeof schema === "object" &&
|
|
1718
1832
|
schema !== null &&
|
|
1719
1833
|
!Array.isArray(schema) &&
|
|
1720
|
-
schema.type === "json_schema")
|
|
1834
|
+
schema.type === "json_schema") ||
|
|
1835
|
+
isJsonSchema$1(schema)) {
|
|
1721
1836
|
jsonSchema = structuredClone(schema);
|
|
1722
1837
|
jsonSchema.type = "object"; // Validator does not recognize "json_schema"
|
|
1723
1838
|
}
|
|
@@ -1764,7 +1879,7 @@ class AnthropicAdapter extends BaseProviderAdapter {
|
|
|
1764
1879
|
if (wantsStructuredOutput && isStructuredOutputUnsupportedError$1(error)) {
|
|
1765
1880
|
const model = anthropicRequest.model;
|
|
1766
1881
|
this.rememberModelRejectsStructuredOutput(model);
|
|
1767
|
-
log$
|
|
1882
|
+
log$2.warn(`[AnthropicAdapter] Model ${model} rejected native output_config; falling back to legacy structured_output tool emulation.`);
|
|
1768
1883
|
const fallbackRequest = this.toFallbackStructuredOutputRequest(anthropicRequest);
|
|
1769
1884
|
return (await anthropic.messages.create(fallbackRequest, signal ? { signal } : undefined));
|
|
1770
1885
|
}
|
|
@@ -2379,6 +2494,10 @@ class BedrockAdapter extends BaseProviderAdapter {
|
|
|
2379
2494
|
}));
|
|
2380
2495
|
}
|
|
2381
2496
|
formatOutputSchema(schema) {
|
|
2497
|
+
// Bare JSON Schema node: `{ type: "object", properties: {...} }`
|
|
2498
|
+
if (isJsonSchema$1(schema)) {
|
|
2499
|
+
return structuredClone(schema);
|
|
2500
|
+
}
|
|
2382
2501
|
const zodSchema = schema instanceof z.ZodType
|
|
2383
2502
|
? schema
|
|
2384
2503
|
: naturalZodSchema(schema);
|
|
@@ -2827,7 +2946,7 @@ class GoogleAdapter extends BaseProviderAdapter {
|
|
|
2827
2946
|
? [...request.tools]
|
|
2828
2947
|
: [];
|
|
2829
2948
|
if (request.format && hasUserTools && !useNativeCombo) {
|
|
2830
|
-
log$
|
|
2949
|
+
log$2.warn(`[GoogleAdapter] Using legacy structured_output tool fallback for model ${geminiRequest.model}; native responseJsonSchema + tools combo is only available on Gemini 3.`);
|
|
2831
2950
|
allTools.push({
|
|
2832
2951
|
name: STRUCTURED_OUTPUT_TOOL_NAME$1,
|
|
2833
2952
|
description: "Output a structured JSON object, " +
|
|
@@ -2915,11 +3034,13 @@ class GoogleAdapter extends BaseProviderAdapter {
|
|
|
2915
3034
|
}
|
|
2916
3035
|
formatOutputSchema(schema) {
|
|
2917
3036
|
let jsonSchema;
|
|
2918
|
-
// Check if schema is already a JsonObject
|
|
2919
|
-
|
|
3037
|
+
// Check if schema is already a JsonObject — either the OpenAI-style
|
|
3038
|
+
// `{ type: "json_schema", ... }` envelope or a bare `{ type: "object", properties }` node
|
|
3039
|
+
if ((typeof schema === "object" &&
|
|
2920
3040
|
schema !== null &&
|
|
2921
3041
|
!Array.isArray(schema) &&
|
|
2922
|
-
schema.type === "json_schema")
|
|
3042
|
+
schema.type === "json_schema") ||
|
|
3043
|
+
isJsonSchema$1(schema)) {
|
|
2923
3044
|
jsonSchema = structuredClone(schema);
|
|
2924
3045
|
jsonSchema.type = "object";
|
|
2925
3046
|
}
|
|
@@ -2958,7 +3079,7 @@ class GoogleAdapter extends BaseProviderAdapter {
|
|
|
2958
3079
|
if (wantsNativeCombo && isStructuredOutputComboUnsupportedError(error)) {
|
|
2959
3080
|
const model = geminiRequest.model;
|
|
2960
3081
|
this.rememberModelRejectsStructuredOutputCombo(model);
|
|
2961
|
-
log$
|
|
3082
|
+
log$2.warn(`[GoogleAdapter] Model ${model} rejected native responseJsonSchema + tools combo; falling back to legacy structured_output tool emulation.`);
|
|
2962
3083
|
const fallbackRequest = this.toFallbackStructuredOutputRequest(geminiRequest);
|
|
2963
3084
|
const response = await genAI.models.generateContent({
|
|
2964
3085
|
model: fallbackRequest.model,
|
|
@@ -3886,21 +4007,35 @@ class OpenAiAdapter extends BaseProviderAdapter {
|
|
|
3886
4007
|
schema.type === "json_schema") {
|
|
3887
4008
|
return schema;
|
|
3888
4009
|
}
|
|
3889
|
-
//
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3901
|
-
|
|
3902
|
-
|
|
3903
|
-
|
|
4010
|
+
// Bare JSON Schema node: `{ type: "object", properties: {...} }`
|
|
4011
|
+
// Skip the zod round-trip and use it directly (still needs the
|
|
4012
|
+
// additionalProperties + envelope treatment below).
|
|
4013
|
+
let jsonSchema;
|
|
4014
|
+
let name = "response";
|
|
4015
|
+
let strict = true;
|
|
4016
|
+
if (isJsonSchema$1(schema)) {
|
|
4017
|
+
jsonSchema = { ...structuredClone(schema) };
|
|
4018
|
+
delete jsonSchema.$schema;
|
|
4019
|
+
}
|
|
4020
|
+
else {
|
|
4021
|
+
// Convert NaturalSchema to Zod schema if needed
|
|
4022
|
+
const zodSchema = schema instanceof z.ZodType
|
|
4023
|
+
? schema
|
|
4024
|
+
: naturalZodSchema(schema);
|
|
4025
|
+
const responseFormat = zodResponseFormat(zodSchema, "response");
|
|
4026
|
+
// Re-spread to drop zod v4's non-enumerable `~standard` Standard-Schema
|
|
4027
|
+
// interop marker, then strip `$schema`: OpenAI's strict json_schema subset
|
|
4028
|
+
// does not recognize the draft-2020-12 `$schema` keyword, and shipping it
|
|
4029
|
+
// can leave strict structured-output enforcement silently disabled (the
|
|
4030
|
+
// model then free-forms, omitting required fields and corrupting keys).
|
|
4031
|
+
// Mirrors the OpenRouter adapter's sanitization.
|
|
4032
|
+
jsonSchema = {
|
|
4033
|
+
...z.toJSONSchema(zodSchema),
|
|
4034
|
+
};
|
|
4035
|
+
delete jsonSchema.$schema;
|
|
4036
|
+
name = responseFormat.json_schema.name;
|
|
4037
|
+
strict = responseFormat.json_schema.strict;
|
|
4038
|
+
}
|
|
3904
4039
|
// OpenAI requires additionalProperties to be false on all objects
|
|
3905
4040
|
const checks = [jsonSchema];
|
|
3906
4041
|
while (checks.length > 0) {
|
|
@@ -3916,10 +4051,10 @@ class OpenAiAdapter extends BaseProviderAdapter {
|
|
|
3916
4051
|
checks.shift();
|
|
3917
4052
|
}
|
|
3918
4053
|
return {
|
|
3919
|
-
name
|
|
4054
|
+
name,
|
|
3920
4055
|
schema: jsonSchema,
|
|
3921
|
-
strict
|
|
3922
|
-
type:
|
|
4056
|
+
strict,
|
|
4057
|
+
type: "json_schema",
|
|
3923
4058
|
};
|
|
3924
4059
|
}
|
|
3925
4060
|
//
|
|
@@ -4325,7 +4460,7 @@ function convertContentToOpenRouter(content) {
|
|
|
4325
4460
|
if (item.type === LlmMessageType.InputImage) {
|
|
4326
4461
|
const url = item.image_url ?? "";
|
|
4327
4462
|
if (!url) {
|
|
4328
|
-
log$
|
|
4463
|
+
log$2.warn("OpenRouter image content missing image_url; image discarded");
|
|
4329
4464
|
continue;
|
|
4330
4465
|
}
|
|
4331
4466
|
parts.push({ type: "image_url", imageUrl: { url } });
|
|
@@ -4334,7 +4469,7 @@ function convertContentToOpenRouter(content) {
|
|
|
4334
4469
|
if (item.type === LlmMessageType.InputFile) {
|
|
4335
4470
|
const fileData = typeof item.file_data === "string" ? item.file_data : "";
|
|
4336
4471
|
if (!fileData) {
|
|
4337
|
-
log$
|
|
4472
|
+
log$2.warn({ filename: item.filename }, "OpenRouter file content missing file_data; file discarded");
|
|
4338
4473
|
continue;
|
|
4339
4474
|
}
|
|
4340
4475
|
parts.push({
|
|
@@ -4347,7 +4482,7 @@ function convertContentToOpenRouter(content) {
|
|
|
4347
4482
|
continue;
|
|
4348
4483
|
}
|
|
4349
4484
|
// Unknown type - warn and skip
|
|
4350
|
-
log$
|
|
4485
|
+
log$2.warn({ item }, "Unknown content type for OpenRouter; discarded");
|
|
4351
4486
|
}
|
|
4352
4487
|
// If no parts remain, return empty string to avoid empty array
|
|
4353
4488
|
if (parts.length === 0) {
|
|
@@ -4495,7 +4630,7 @@ class OpenRouterAdapter extends BaseProviderAdapter {
|
|
|
4495
4630
|
? [...request.tools]
|
|
4496
4631
|
: [];
|
|
4497
4632
|
if (useFallbackStructuredOutput && request.format) {
|
|
4498
|
-
log$
|
|
4633
|
+
log$2.warn(`[OpenRouterAdapter] Using legacy structured_output tool fallback for model ${openRouterRequest.model}; native response_format previously rejected for this model.`);
|
|
4499
4634
|
allTools.push({
|
|
4500
4635
|
name: STRUCTURED_OUTPUT_TOOL_NAME,
|
|
4501
4636
|
description: "REQUIRED: You MUST call this tool to provide your final response. " +
|
|
@@ -4561,11 +4696,13 @@ class OpenRouterAdapter extends BaseProviderAdapter {
|
|
|
4561
4696
|
}
|
|
4562
4697
|
formatOutputSchema(schema) {
|
|
4563
4698
|
let jsonSchema;
|
|
4564
|
-
// Check if schema is already a JsonObject
|
|
4565
|
-
|
|
4699
|
+
// Check if schema is already a JsonObject — either the OpenAI-style
|
|
4700
|
+
// `{ type: "json_schema", ... }` envelope or a bare `{ type: "object", properties }` node
|
|
4701
|
+
if ((typeof schema === "object" &&
|
|
4566
4702
|
schema !== null &&
|
|
4567
4703
|
!Array.isArray(schema) &&
|
|
4568
|
-
schema.type === "json_schema")
|
|
4704
|
+
schema.type === "json_schema") ||
|
|
4705
|
+
isJsonSchema$1(schema)) {
|
|
4569
4706
|
jsonSchema = structuredClone(schema);
|
|
4570
4707
|
jsonSchema.type = "object"; // Normalize type
|
|
4571
4708
|
}
|
|
@@ -4628,7 +4765,7 @@ class OpenRouterAdapter extends BaseProviderAdapter {
|
|
|
4628
4765
|
if (wantsStructuredOutput && isStructuredOutputUnsupportedError(error)) {
|
|
4629
4766
|
const model = openRouterRequest.model;
|
|
4630
4767
|
this.rememberModelRejectsStructuredOutput(model);
|
|
4631
|
-
log$
|
|
4768
|
+
log$2.warn(`[OpenRouterAdapter] Model ${model} rejected native response_format; falling back to legacy structured_output tool emulation.`);
|
|
4632
4769
|
const fallbackRequest = this.toFallbackStructuredOutputRequest(openRouterRequest);
|
|
4633
4770
|
return (await openRouter.chatCompletion(this.toWireBody(fallbackRequest), signal ? { signal } : undefined));
|
|
4634
4771
|
}
|
|
@@ -5168,7 +5305,7 @@ class XaiAdapter extends OpenAiAdapter {
|
|
|
5168
5305
|
const xaiAdapter = new XaiAdapter();
|
|
5169
5306
|
|
|
5170
5307
|
const DEFAULT_TOOL_TYPE = "function";
|
|
5171
|
-
const log = log$
|
|
5308
|
+
const log = log$2.lib({ lib: JAYPIE.LIB.LLM });
|
|
5172
5309
|
function logToolMessage(message, context) {
|
|
5173
5310
|
log.trace.var({ [context.name]: message });
|
|
5174
5311
|
}
|
|
@@ -7384,7 +7521,7 @@ class AnthropicClient {
|
|
|
7384
7521
|
}
|
|
7385
7522
|
|
|
7386
7523
|
// Logger
|
|
7387
|
-
const getLogger$5 = () => log$
|
|
7524
|
+
const getLogger$5 = () => log$2.lib({ lib: JAYPIE.LIB.LLM });
|
|
7388
7525
|
// Client initialization
|
|
7389
7526
|
async function initializeClient$5({ apiKey, } = {}) {
|
|
7390
7527
|
const logger = getLogger$5();
|
|
@@ -7422,7 +7559,7 @@ function prepareMessages$3(message, { data, placeholders } = {}) {
|
|
|
7422
7559
|
}
|
|
7423
7560
|
// Basic text completion
|
|
7424
7561
|
async function createTextCompletion$1(client, messages, model, systemMessage) {
|
|
7425
|
-
log$
|
|
7562
|
+
log$2.trace("Using text output (unstructured)");
|
|
7426
7563
|
const params = {
|
|
7427
7564
|
model,
|
|
7428
7565
|
messages,
|
|
@@ -7431,19 +7568,19 @@ async function createTextCompletion$1(client, messages, model, systemMessage) {
|
|
|
7431
7568
|
// Add system instruction if provided
|
|
7432
7569
|
if (systemMessage) {
|
|
7433
7570
|
params.system = systemMessage;
|
|
7434
|
-
log$
|
|
7571
|
+
log$2.trace(`System message: ${systemMessage.length} characters`);
|
|
7435
7572
|
}
|
|
7436
7573
|
const response = await client.messages.create(params);
|
|
7437
7574
|
const firstContent = response.content[0];
|
|
7438
7575
|
const text = firstContent && "text" in firstContent ? firstContent.text : "";
|
|
7439
|
-
log$
|
|
7576
|
+
log$2.trace(`Assistant reply: ${text.length} characters`);
|
|
7440
7577
|
return text;
|
|
7441
7578
|
}
|
|
7442
7579
|
// Structured output completion using Anthropic's native `output_config.format`
|
|
7443
7580
|
// field. Returns a JsonObject parsed and validated against the caller's
|
|
7444
7581
|
// Zod schema.
|
|
7445
7582
|
async function createStructuredCompletion$1(client, messages, model, responseSchema, systemMessage) {
|
|
7446
|
-
log$
|
|
7583
|
+
log$2.trace("Using native structured output");
|
|
7447
7584
|
const schema = responseSchema instanceof z.ZodType
|
|
7448
7585
|
? responseSchema
|
|
7449
7586
|
: naturalZodSchema(responseSchema);
|
|
@@ -7481,7 +7618,7 @@ async function createStructuredCompletion$1(client, messages, model, responseSch
|
|
|
7481
7618
|
if (!validation.success) {
|
|
7482
7619
|
throw new Error(`JSON response from Anthropic does not match schema: ${textBlock.text}`);
|
|
7483
7620
|
}
|
|
7484
|
-
log$
|
|
7621
|
+
log$2.trace("Received structured response", { result: validation.data });
|
|
7485
7622
|
return validation.data;
|
|
7486
7623
|
}
|
|
7487
7624
|
|
|
@@ -7593,7 +7730,7 @@ async function loadSdk() {
|
|
|
7593
7730
|
throw new ConfigurationError("@aws-sdk/client-bedrock-runtime is required but not installed. Run: npm install @aws-sdk/client-bedrock-runtime");
|
|
7594
7731
|
}
|
|
7595
7732
|
}
|
|
7596
|
-
const getLogger$4 = () => log$
|
|
7733
|
+
const getLogger$4 = () => log$2.lib({ lib: JAYPIE.LIB.LLM });
|
|
7597
7734
|
async function initializeClient$4({ region, } = {}) {
|
|
7598
7735
|
const logger = getLogger$4();
|
|
7599
7736
|
const resolvedRegion = region || process.env.AWS_REGION || "us-east-1";
|
|
@@ -7813,7 +7950,7 @@ class GoogleClient {
|
|
|
7813
7950
|
}
|
|
7814
7951
|
|
|
7815
7952
|
// Logger
|
|
7816
|
-
const getLogger$3 = () => log$
|
|
7953
|
+
const getLogger$3 = () => log$2.lib({ lib: JAYPIE.LIB.LLM });
|
|
7817
7954
|
// Client initialization
|
|
7818
7955
|
async function initializeClient$3({ apiKey, } = {}) {
|
|
7819
7956
|
const logger = getLogger$3();
|
|
@@ -7962,7 +8099,7 @@ class GoogleProvider {
|
|
|
7962
8099
|
}
|
|
7963
8100
|
|
|
7964
8101
|
// Logger
|
|
7965
|
-
const getLogger$2 = () => log$
|
|
8102
|
+
const getLogger$2 = () => log$2.lib({ lib: JAYPIE.LIB.LLM });
|
|
7966
8103
|
// Client initialization
|
|
7967
8104
|
async function initializeClient$2({ apiKey, } = {}) {
|
|
7968
8105
|
const logger = getLogger$2();
|
|
@@ -8266,7 +8403,7 @@ class OpenRouterClient {
|
|
|
8266
8403
|
}
|
|
8267
8404
|
|
|
8268
8405
|
// Logger
|
|
8269
|
-
const getLogger$1 = () => log$
|
|
8406
|
+
const getLogger$1 = () => log$2.lib({ lib: JAYPIE.LIB.LLM });
|
|
8270
8407
|
// Client initialization
|
|
8271
8408
|
async function initializeClient$1({ apiKey, } = {}) {
|
|
8272
8409
|
const logger = getLogger$1();
|
|
@@ -8415,7 +8552,7 @@ class OpenRouterProvider {
|
|
|
8415
8552
|
}
|
|
8416
8553
|
|
|
8417
8554
|
// Logger
|
|
8418
|
-
const getLogger = () => log$
|
|
8555
|
+
const getLogger = () => log$2.lib({ lib: JAYPIE.LIB.LLM });
|
|
8419
8556
|
// Client initialization
|
|
8420
8557
|
async function initializeClient({ apiKey, } = {}) {
|
|
8421
8558
|
const logger = getLogger();
|
|
@@ -8522,7 +8659,7 @@ class Llm {
|
|
|
8522
8659
|
let finalModel = model;
|
|
8523
8660
|
// Legacy: accept "gemini" but warn
|
|
8524
8661
|
if (providerName === "gemini") {
|
|
8525
|
-
log$
|
|
8662
|
+
log$1.warn(`Provider "gemini" is deprecated, use "${PROVIDER.GOOGLE.NAME}" instead`);
|
|
8526
8663
|
}
|
|
8527
8664
|
if (model) {
|
|
8528
8665
|
const modelDetermined = determineModelProvider(model);
|
|
@@ -8636,7 +8773,7 @@ class Llm {
|
|
|
8636
8773
|
}
|
|
8637
8774
|
catch (error) {
|
|
8638
8775
|
lastError = error;
|
|
8639
|
-
log$
|
|
8776
|
+
log$1.warn(`Provider ${this._provider} failed`, {
|
|
8640
8777
|
error: lastError.message,
|
|
8641
8778
|
fallbacksRemaining: fallbackChain.length,
|
|
8642
8779
|
});
|
|
@@ -8656,7 +8793,7 @@ class Llm {
|
|
|
8656
8793
|
}
|
|
8657
8794
|
catch (error) {
|
|
8658
8795
|
lastError = error;
|
|
8659
|
-
log$
|
|
8796
|
+
log$1.warn(`Fallback provider ${fallbackConfig.provider} failed`, {
|
|
8660
8797
|
error: lastError.message,
|
|
8661
8798
|
fallbacksRemaining: fallbackChain.length - attempts + 1,
|
|
8662
8799
|
});
|
|
@@ -9023,5 +9160,5 @@ const toolkit = new JaypieToolkit(tools);
|
|
|
9023
9160
|
[LlmMessageRole.Developer]: "user",
|
|
9024
9161
|
});
|
|
9025
9162
|
|
|
9026
|
-
export { BedrockProvider, GoogleProvider as GeminiProvider, GoogleProvider, JaypieToolkit, constants as LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, OpenRouterProvider, Toolkit, XaiProvider, extractReasoning, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, toolkit, tools };
|
|
9163
|
+
export { BedrockProvider, GoogleProvider as GeminiProvider, GoogleProvider, JaypieToolkit, constants as LLM, Llm, LlmMessageRole, LlmMessageType, LlmStreamChunkType, OpenRouterProvider, Toolkit, XaiProvider, extractReasoning, isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, jsonSchemaToNaturalSchema, naturalSchemaToJsonSchema, toolkit, tools };
|
|
9027
9164
|
//# sourceMappingURL=index.js.map
|