@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.
Files changed (175) hide show
  1. package/dist/cjs/index.cjs +166 -27
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.d.cts +13 -1
  4. package/dist/cjs/{index.d.ts → src/index.d.ts} +1 -0
  5. package/dist/cjs/{util → src/util}/index.d.ts +1 -0
  6. package/dist/cjs/src/util/jsonSchema.d.ts +17 -0
  7. package/dist/esm/index.d.ts +13 -1
  8. package/dist/esm/index.js +191 -54
  9. package/dist/esm/index.js.map +1 -1
  10. package/dist/esm/src/index.d.ts +17 -0
  11. package/dist/esm/{util → src/util}/index.d.ts +1 -0
  12. package/dist/esm/src/util/jsonSchema.d.ts +17 -0
  13. package/package.json +3 -2
  14. /package/dist/cjs/{Llm.d.ts → src/Llm.d.ts} +0 -0
  15. /package/dist/cjs/{constants.d.ts → src/constants.d.ts} +0 -0
  16. /package/dist/cjs/{observability → src/observability}/llmobs.d.ts +0 -0
  17. /package/dist/cjs/{operate → src/operate}/OperateLoop.d.ts +0 -0
  18. /package/dist/cjs/{operate → src/operate}/StreamLoop.d.ts +0 -0
  19. /package/dist/cjs/{operate → src/operate}/adapters/AnthropicAdapter.d.ts +0 -0
  20. /package/dist/cjs/{operate → src/operate}/adapters/BedrockAdapter.d.ts +0 -0
  21. /package/dist/cjs/{operate → src/operate}/adapters/GoogleAdapter.d.ts +0 -0
  22. /package/dist/cjs/{operate → src/operate}/adapters/OpenAiAdapter.d.ts +0 -0
  23. /package/dist/cjs/{operate → src/operate}/adapters/OpenRouterAdapter.d.ts +0 -0
  24. /package/dist/cjs/{operate → src/operate}/adapters/ProviderAdapter.interface.d.ts +0 -0
  25. /package/dist/cjs/{operate → src/operate}/adapters/XaiAdapter.d.ts +0 -0
  26. /package/dist/cjs/{operate → src/operate}/adapters/index.d.ts +0 -0
  27. /package/dist/cjs/{operate → src/operate}/hooks/HookRunner.d.ts +0 -0
  28. /package/dist/cjs/{operate → src/operate}/hooks/index.d.ts +0 -0
  29. /package/dist/cjs/{operate → src/operate}/index.d.ts +0 -0
  30. /package/dist/cjs/{operate → src/operate}/input/InputProcessor.d.ts +0 -0
  31. /package/dist/cjs/{operate → src/operate}/input/index.d.ts +0 -0
  32. /package/dist/cjs/{operate → src/operate}/response/ResponseBuilder.d.ts +0 -0
  33. /package/dist/cjs/{operate → src/operate}/response/index.d.ts +0 -0
  34. /package/dist/cjs/{operate → src/operate}/retry/RetryExecutor.d.ts +0 -0
  35. /package/dist/cjs/{operate → src/operate}/retry/RetryPolicy.d.ts +0 -0
  36. /package/dist/cjs/{operate → src/operate}/retry/createStaleRejectionGuard.d.ts +0 -0
  37. /package/dist/cjs/{operate → src/operate}/retry/index.d.ts +0 -0
  38. /package/dist/cjs/{operate → src/operate}/retry/isTransientNetworkError.d.ts +0 -0
  39. /package/dist/cjs/{operate → src/operate}/types.d.ts +0 -0
  40. /package/dist/cjs/{providers → src/providers}/anthropic/AnthropicProvider.class.d.ts +0 -0
  41. /package/dist/cjs/{providers → src/providers}/anthropic/client.d.ts +0 -0
  42. /package/dist/cjs/{providers → src/providers}/anthropic/index.d.ts +0 -0
  43. /package/dist/cjs/{providers → src/providers}/anthropic/types.d.ts +0 -0
  44. /package/dist/cjs/{providers → src/providers}/anthropic/utils.d.ts +0 -0
  45. /package/dist/cjs/{providers → src/providers}/bedrock/BedrockProvider.class.d.ts +0 -0
  46. /package/dist/cjs/{providers → src/providers}/bedrock/index.d.ts +0 -0
  47. /package/dist/cjs/{providers → src/providers}/bedrock/utils.d.ts +0 -0
  48. /package/dist/cjs/{providers → src/providers}/google/GoogleProvider.class.d.ts +0 -0
  49. /package/dist/cjs/{providers → src/providers}/google/client.d.ts +0 -0
  50. /package/dist/cjs/{providers → src/providers}/google/index.d.ts +0 -0
  51. /package/dist/cjs/{providers → src/providers}/google/types.d.ts +0 -0
  52. /package/dist/cjs/{providers → src/providers}/google/utils.d.ts +0 -0
  53. /package/dist/cjs/{providers → src/providers}/openai/OpenAiProvider.class.d.ts +0 -0
  54. /package/dist/cjs/{providers → src/providers}/openai/client.d.ts +0 -0
  55. /package/dist/cjs/{providers → src/providers}/openai/index.d.ts +0 -0
  56. /package/dist/cjs/{providers → src/providers}/openai/responseFormat.d.ts +0 -0
  57. /package/dist/cjs/{providers → src/providers}/openai/types.d.ts +0 -0
  58. /package/dist/cjs/{providers → src/providers}/openai/utils.d.ts +0 -0
  59. /package/dist/cjs/{providers → src/providers}/openrouter/OpenRouterProvider.class.d.ts +0 -0
  60. /package/dist/cjs/{providers → src/providers}/openrouter/client.d.ts +0 -0
  61. /package/dist/cjs/{providers → src/providers}/openrouter/index.d.ts +0 -0
  62. /package/dist/cjs/{providers → src/providers}/openrouter/utils.d.ts +0 -0
  63. /package/dist/cjs/{providers → src/providers}/xai/XaiProvider.class.d.ts +0 -0
  64. /package/dist/cjs/{providers → src/providers}/xai/index.d.ts +0 -0
  65. /package/dist/cjs/{providers → src/providers}/xai/utils.d.ts +0 -0
  66. /package/dist/cjs/{tools → src/tools}/Toolkit.class.d.ts +0 -0
  67. /package/dist/cjs/{tools → src/tools}/index.d.ts +0 -0
  68. /package/dist/cjs/{tools → src/tools}/random.d.ts +0 -0
  69. /package/dist/cjs/{tools → src/tools}/roll.d.ts +0 -0
  70. /package/dist/cjs/{tools → src/tools}/time.d.ts +0 -0
  71. /package/dist/cjs/{tools → src/tools}/weather.d.ts +0 -0
  72. /package/dist/cjs/{types → src/types}/LlmOperateInput.guards.d.ts +0 -0
  73. /package/dist/cjs/{types → src/types}/LlmProvider.interface.d.ts +0 -0
  74. /package/dist/cjs/{types → src/types}/LlmStreamChunk.interface.d.ts +0 -0
  75. /package/dist/cjs/{types → src/types}/LlmTool.interface.d.ts +0 -0
  76. /package/dist/cjs/{upload → src/upload}/detectMimeType.d.ts +0 -0
  77. /package/dist/cjs/{upload → src/upload}/extractPdfPages.d.ts +0 -0
  78. /package/dist/cjs/{upload → src/upload}/index.d.ts +0 -0
  79. /package/dist/cjs/{upload → src/upload}/loadLocalFile.d.ts +0 -0
  80. /package/dist/cjs/{upload → src/upload}/loadS3File.d.ts +0 -0
  81. /package/dist/cjs/{upload → src/upload}/resolveOperateInput.d.ts +0 -0
  82. /package/dist/cjs/{util → src/util}/determineModelProvider.d.ts +0 -0
  83. /package/dist/cjs/{util → src/util}/extractReasoning.d.ts +0 -0
  84. /package/dist/cjs/{util → src/util}/fillFormatArrays.d.ts +0 -0
  85. /package/dist/cjs/{util → src/util}/formatOperateInput.d.ts +0 -0
  86. /package/dist/cjs/{util → src/util}/formatOperateMessage.d.ts +0 -0
  87. /package/dist/cjs/{util → src/util}/jsonSchemaToOpenApi3.d.ts +0 -0
  88. /package/dist/cjs/{util → src/util}/logger.d.ts +0 -0
  89. /package/dist/cjs/{util → src/util}/maxTurnsFromOptions.d.ts +0 -0
  90. /package/dist/cjs/{util → src/util}/naturalZodSchema.d.ts +0 -0
  91. /package/dist/cjs/{util → src/util}/random.d.ts +0 -0
  92. /package/dist/cjs/{util → src/util}/repairFormatKeys.d.ts +0 -0
  93. /package/dist/cjs/{util → src/util}/sse.d.ts +0 -0
  94. /package/dist/cjs/{util → src/util}/tryParseNumber.d.ts +0 -0
  95. /package/dist/esm/{Llm.d.ts → src/Llm.d.ts} +0 -0
  96. /package/dist/esm/{constants.d.ts → src/constants.d.ts} +0 -0
  97. /package/dist/esm/{observability → src/observability}/llmobs.d.ts +0 -0
  98. /package/dist/esm/{operate → src/operate}/OperateLoop.d.ts +0 -0
  99. /package/dist/esm/{operate → src/operate}/StreamLoop.d.ts +0 -0
  100. /package/dist/esm/{operate → src/operate}/adapters/AnthropicAdapter.d.ts +0 -0
  101. /package/dist/esm/{operate → src/operate}/adapters/BedrockAdapter.d.ts +0 -0
  102. /package/dist/esm/{operate → src/operate}/adapters/GoogleAdapter.d.ts +0 -0
  103. /package/dist/esm/{operate → src/operate}/adapters/OpenAiAdapter.d.ts +0 -0
  104. /package/dist/esm/{operate → src/operate}/adapters/OpenRouterAdapter.d.ts +0 -0
  105. /package/dist/esm/{operate → src/operate}/adapters/ProviderAdapter.interface.d.ts +0 -0
  106. /package/dist/esm/{operate → src/operate}/adapters/XaiAdapter.d.ts +0 -0
  107. /package/dist/esm/{operate → src/operate}/adapters/index.d.ts +0 -0
  108. /package/dist/esm/{operate → src/operate}/hooks/HookRunner.d.ts +0 -0
  109. /package/dist/esm/{operate → src/operate}/hooks/index.d.ts +0 -0
  110. /package/dist/esm/{operate → src/operate}/index.d.ts +0 -0
  111. /package/dist/esm/{operate → src/operate}/input/InputProcessor.d.ts +0 -0
  112. /package/dist/esm/{operate → src/operate}/input/index.d.ts +0 -0
  113. /package/dist/esm/{operate → src/operate}/response/ResponseBuilder.d.ts +0 -0
  114. /package/dist/esm/{operate → src/operate}/response/index.d.ts +0 -0
  115. /package/dist/esm/{operate → src/operate}/retry/RetryExecutor.d.ts +0 -0
  116. /package/dist/esm/{operate → src/operate}/retry/RetryPolicy.d.ts +0 -0
  117. /package/dist/esm/{operate → src/operate}/retry/createStaleRejectionGuard.d.ts +0 -0
  118. /package/dist/esm/{operate → src/operate}/retry/index.d.ts +0 -0
  119. /package/dist/esm/{operate → src/operate}/retry/isTransientNetworkError.d.ts +0 -0
  120. /package/dist/esm/{operate → src/operate}/types.d.ts +0 -0
  121. /package/dist/esm/{providers → src/providers}/anthropic/AnthropicProvider.class.d.ts +0 -0
  122. /package/dist/esm/{providers → src/providers}/anthropic/client.d.ts +0 -0
  123. /package/dist/esm/{providers → src/providers}/anthropic/index.d.ts +0 -0
  124. /package/dist/esm/{providers → src/providers}/anthropic/types.d.ts +0 -0
  125. /package/dist/esm/{providers → src/providers}/anthropic/utils.d.ts +0 -0
  126. /package/dist/esm/{providers → src/providers}/bedrock/BedrockProvider.class.d.ts +0 -0
  127. /package/dist/esm/{providers → src/providers}/bedrock/index.d.ts +0 -0
  128. /package/dist/esm/{providers → src/providers}/bedrock/utils.d.ts +0 -0
  129. /package/dist/esm/{providers → src/providers}/google/GoogleProvider.class.d.ts +0 -0
  130. /package/dist/esm/{providers → src/providers}/google/client.d.ts +0 -0
  131. /package/dist/esm/{providers → src/providers}/google/index.d.ts +0 -0
  132. /package/dist/esm/{providers → src/providers}/google/types.d.ts +0 -0
  133. /package/dist/esm/{providers → src/providers}/google/utils.d.ts +0 -0
  134. /package/dist/esm/{providers → src/providers}/openai/OpenAiProvider.class.d.ts +0 -0
  135. /package/dist/esm/{providers → src/providers}/openai/client.d.ts +0 -0
  136. /package/dist/esm/{providers → src/providers}/openai/index.d.ts +0 -0
  137. /package/dist/esm/{providers → src/providers}/openai/responseFormat.d.ts +0 -0
  138. /package/dist/esm/{providers → src/providers}/openai/types.d.ts +0 -0
  139. /package/dist/esm/{providers → src/providers}/openai/utils.d.ts +0 -0
  140. /package/dist/esm/{providers → src/providers}/openrouter/OpenRouterProvider.class.d.ts +0 -0
  141. /package/dist/esm/{providers → src/providers}/openrouter/client.d.ts +0 -0
  142. /package/dist/esm/{providers → src/providers}/openrouter/index.d.ts +0 -0
  143. /package/dist/esm/{providers → src/providers}/openrouter/utils.d.ts +0 -0
  144. /package/dist/esm/{providers → src/providers}/xai/XaiProvider.class.d.ts +0 -0
  145. /package/dist/esm/{providers → src/providers}/xai/index.d.ts +0 -0
  146. /package/dist/esm/{providers → src/providers}/xai/utils.d.ts +0 -0
  147. /package/dist/esm/{tools → src/tools}/Toolkit.class.d.ts +0 -0
  148. /package/dist/esm/{tools → src/tools}/index.d.ts +0 -0
  149. /package/dist/esm/{tools → src/tools}/random.d.ts +0 -0
  150. /package/dist/esm/{tools → src/tools}/roll.d.ts +0 -0
  151. /package/dist/esm/{tools → src/tools}/time.d.ts +0 -0
  152. /package/dist/esm/{tools → src/tools}/weather.d.ts +0 -0
  153. /package/dist/esm/{types → src/types}/LlmOperateInput.guards.d.ts +0 -0
  154. /package/dist/esm/{types → src/types}/LlmProvider.interface.d.ts +0 -0
  155. /package/dist/esm/{types → src/types}/LlmStreamChunk.interface.d.ts +0 -0
  156. /package/dist/esm/{types → src/types}/LlmTool.interface.d.ts +0 -0
  157. /package/dist/esm/{upload → src/upload}/detectMimeType.d.ts +0 -0
  158. /package/dist/esm/{upload → src/upload}/extractPdfPages.d.ts +0 -0
  159. /package/dist/esm/{upload → src/upload}/index.d.ts +0 -0
  160. /package/dist/esm/{upload → src/upload}/loadLocalFile.d.ts +0 -0
  161. /package/dist/esm/{upload → src/upload}/loadS3File.d.ts +0 -0
  162. /package/dist/esm/{upload → src/upload}/resolveOperateInput.d.ts +0 -0
  163. /package/dist/esm/{util → src/util}/determineModelProvider.d.ts +0 -0
  164. /package/dist/esm/{util → src/util}/extractReasoning.d.ts +0 -0
  165. /package/dist/esm/{util → src/util}/fillFormatArrays.d.ts +0 -0
  166. /package/dist/esm/{util → src/util}/formatOperateInput.d.ts +0 -0
  167. /package/dist/esm/{util → src/util}/formatOperateMessage.d.ts +0 -0
  168. /package/dist/esm/{util → src/util}/jsonSchemaToOpenApi3.d.ts +0 -0
  169. /package/dist/esm/{util → src/util}/logger.d.ts +0 -0
  170. /package/dist/esm/{util → src/util}/maxTurnsFromOptions.d.ts +0 -0
  171. /package/dist/esm/{util → src/util}/naturalZodSchema.d.ts +0 -0
  172. /package/dist/esm/{util → src/util}/random.d.ts +0 -0
  173. /package/dist/esm/{util → src/util}/repairFormatKeys.d.ts +0 -0
  174. /package/dist/esm/{util → src/util}/sse.d.ts +0 -0
  175. /package/dist/esm/{util → src/util}/tryParseNumber.d.ts +0 -0
@@ -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;
@@ -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, { log as log$1 } from '@jaypie/logger';
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$1.lib({ lib: JAYPIE.LIB.LLM });
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$1.warn(`[AnthropicAdapter] Using legacy structured_output tool fallback for model ${anthropicRequest.model}; native output_config previously rejected for this model.`);
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 with type "json_schema"
1717
- if (typeof schema === "object" &&
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$1.warn(`[AnthropicAdapter] Model ${model} rejected native output_config; falling back to legacy structured_output tool emulation.`);
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$1.warn(`[GoogleAdapter] Using legacy structured_output tool fallback for model ${geminiRequest.model}; native responseJsonSchema + tools combo is only available on Gemini 3.`);
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 with type "json_schema"
2919
- if (typeof schema === "object" &&
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$1.warn(`[GoogleAdapter] Model ${model} rejected native responseJsonSchema + tools combo; falling back to legacy structured_output tool emulation.`);
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
- // Convert NaturalSchema to Zod schema if needed
3890
- const zodSchema = schema instanceof z.ZodType
3891
- ? schema
3892
- : naturalZodSchema(schema);
3893
- const responseFormat = zodResponseFormat(zodSchema, "response");
3894
- // Re-spread to drop zod v4's non-enumerable `~standard` Standard-Schema
3895
- // interop marker, then strip `$schema`: OpenAI's strict json_schema subset
3896
- // does not recognize the draft-2020-12 `$schema` keyword, and shipping it
3897
- // can leave strict structured-output enforcement silently disabled (the
3898
- // model then free-forms, omitting required fields and corrupting keys).
3899
- // Mirrors the OpenRouter adapter's sanitization.
3900
- const jsonSchema = {
3901
- ...z.toJSONSchema(zodSchema),
3902
- };
3903
- delete jsonSchema.$schema;
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: responseFormat.json_schema.name,
4054
+ name,
3920
4055
  schema: jsonSchema,
3921
- strict: responseFormat.json_schema.strict,
3922
- type: responseFormat.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$1.warn("OpenRouter image content missing image_url; image discarded");
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$1.warn({ filename: item.filename }, "OpenRouter file content missing file_data; file discarded");
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$1.warn({ item }, "Unknown content type for OpenRouter; discarded");
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$1.warn(`[OpenRouterAdapter] Using legacy structured_output tool fallback for model ${openRouterRequest.model}; native response_format previously rejected for this model.`);
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 with type "json_schema"
4565
- if (typeof schema === "object" &&
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$1.warn(`[OpenRouterAdapter] Model ${model} rejected native response_format; falling back to legacy structured_output tool emulation.`);
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$1.lib({ lib: JAYPIE.LIB.LLM });
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$1.lib({ lib: JAYPIE.LIB.LLM });
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$1.trace("Using text output (unstructured)");
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$1.trace(`System message: ${systemMessage.length} characters`);
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$1.trace(`Assistant reply: ${text.length} characters`);
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$1.trace("Using native structured output");
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$1.trace("Received structured response", { result: validation.data });
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$1.lib({ lib: JAYPIE.LIB.LLM });
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$1.lib({ lib: JAYPIE.LIB.LLM });
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$1.lib({ lib: JAYPIE.LIB.LLM });
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$1.lib({ lib: JAYPIE.LIB.LLM });
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$1.lib({ lib: JAYPIE.LIB.LLM });
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$2.warn(`Provider "gemini" is deprecated, use "${PROVIDER.GOOGLE.NAME}" instead`);
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$2.warn(`Provider ${this._provider} failed`, {
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$2.warn(`Fallback provider ${fallbackConfig.provider} failed`, {
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