@jaypie/llm 1.3.8 → 1.3.10

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 (187) hide show
  1. package/dist/cjs/{src/constants.d.ts → constants.d.ts} +56 -7
  2. package/dist/cjs/index.cjs +404 -124
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/index.d.cts +69 -10
  5. package/dist/{esm/src → cjs}/index.d.ts +1 -0
  6. package/dist/cjs/{src/operate → operate}/adapters/AnthropicAdapter.d.ts +3 -2
  7. package/dist/{esm/src → cjs}/operate/adapters/BedrockAdapter.d.ts +1 -1
  8. package/dist/cjs/{src/operate → operate}/adapters/GoogleAdapter.d.ts +1 -1
  9. package/dist/{esm/src → cjs}/operate/adapters/OpenAiAdapter.d.ts +7 -1
  10. package/dist/{esm/src → cjs}/operate/adapters/OpenRouterAdapter.d.ts +5 -1
  11. package/dist/cjs/operate/adapters/XaiAdapter.d.ts +24 -0
  12. package/dist/cjs/{src/operate → operate}/types.d.ts +5 -0
  13. package/dist/cjs/{src/providers → providers}/google/types.d.ts +5 -0
  14. package/dist/{esm/src → cjs}/types/LlmProvider.interface.d.ts +9 -0
  15. package/dist/cjs/util/effort.d.ts +42 -0
  16. package/dist/cjs/{src/util → util}/index.d.ts +1 -0
  17. package/dist/cjs/util/tallyOperate.d.ts +14 -0
  18. package/dist/esm/{src/constants.d.ts → constants.d.ts} +56 -7
  19. package/dist/esm/index.d.ts +69 -10
  20. package/dist/esm/index.js +404 -124
  21. package/dist/esm/index.js.map +1 -1
  22. package/dist/esm/{src/operate → operate}/adapters/AnthropicAdapter.d.ts +3 -2
  23. package/dist/{cjs/src → esm}/operate/adapters/BedrockAdapter.d.ts +1 -1
  24. package/dist/esm/{src/operate → operate}/adapters/GoogleAdapter.d.ts +1 -1
  25. package/dist/{cjs/src → esm}/operate/adapters/OpenAiAdapter.d.ts +7 -1
  26. package/dist/{cjs/src → esm}/operate/adapters/OpenRouterAdapter.d.ts +5 -1
  27. package/dist/esm/operate/adapters/XaiAdapter.d.ts +24 -0
  28. package/dist/esm/{src/operate → operate}/types.d.ts +5 -0
  29. package/dist/esm/{src/providers → providers}/google/types.d.ts +5 -0
  30. package/dist/{cjs/src → esm}/types/LlmProvider.interface.d.ts +9 -0
  31. package/dist/esm/util/effort.d.ts +42 -0
  32. package/dist/esm/{src/util → util}/index.d.ts +1 -0
  33. package/dist/esm/util/tallyOperate.d.ts +14 -0
  34. package/package.json +1 -1
  35. package/dist/cjs/src/index.d.ts +0 -17
  36. package/dist/cjs/src/operate/adapters/XaiAdapter.d.ts +0 -14
  37. package/dist/esm/src/operate/adapters/XaiAdapter.d.ts +0 -14
  38. /package/dist/cjs/{src/Llm.d.ts → Llm.d.ts} +0 -0
  39. /package/dist/cjs/{src/observability → observability}/llmobs.d.ts +0 -0
  40. /package/dist/cjs/{src/operate → operate}/OperateLoop.d.ts +0 -0
  41. /package/dist/cjs/{src/operate → operate}/StreamLoop.d.ts +0 -0
  42. /package/dist/cjs/{src/operate → operate}/adapters/ProviderAdapter.interface.d.ts +0 -0
  43. /package/dist/cjs/{src/operate → operate}/adapters/index.d.ts +0 -0
  44. /package/dist/cjs/{src/operate → operate}/hooks/HookRunner.d.ts +0 -0
  45. /package/dist/cjs/{src/operate → operate}/hooks/index.d.ts +0 -0
  46. /package/dist/cjs/{src/operate → operate}/index.d.ts +0 -0
  47. /package/dist/cjs/{src/operate → operate}/input/InputProcessor.d.ts +0 -0
  48. /package/dist/cjs/{src/operate → operate}/input/index.d.ts +0 -0
  49. /package/dist/cjs/{src/operate → operate}/progress/emitProgress.d.ts +0 -0
  50. /package/dist/cjs/{src/operate → operate}/progress/index.d.ts +0 -0
  51. /package/dist/cjs/{src/operate → operate}/response/ResponseBuilder.d.ts +0 -0
  52. /package/dist/cjs/{src/operate → operate}/response/index.d.ts +0 -0
  53. /package/dist/cjs/{src/operate → operate}/retry/RetryExecutor.d.ts +0 -0
  54. /package/dist/cjs/{src/operate → operate}/retry/RetryPolicy.d.ts +0 -0
  55. /package/dist/cjs/{src/operate → operate}/retry/createStaleRejectionGuard.d.ts +0 -0
  56. /package/dist/cjs/{src/operate → operate}/retry/index.d.ts +0 -0
  57. /package/dist/cjs/{src/operate → operate}/retry/isTransientNetworkError.d.ts +0 -0
  58. /package/dist/cjs/{src/providers → providers}/anthropic/AnthropicProvider.class.d.ts +0 -0
  59. /package/dist/cjs/{src/providers → providers}/anthropic/client.d.ts +0 -0
  60. /package/dist/cjs/{src/providers → providers}/anthropic/index.d.ts +0 -0
  61. /package/dist/cjs/{src/providers → providers}/anthropic/types.d.ts +0 -0
  62. /package/dist/cjs/{src/providers → providers}/anthropic/utils.d.ts +0 -0
  63. /package/dist/cjs/{src/providers → providers}/bedrock/BedrockProvider.class.d.ts +0 -0
  64. /package/dist/cjs/{src/providers → providers}/bedrock/index.d.ts +0 -0
  65. /package/dist/cjs/{src/providers → providers}/bedrock/utils.d.ts +0 -0
  66. /package/dist/cjs/{src/providers → providers}/google/GoogleProvider.class.d.ts +0 -0
  67. /package/dist/cjs/{src/providers → providers}/google/client.d.ts +0 -0
  68. /package/dist/cjs/{src/providers → providers}/google/index.d.ts +0 -0
  69. /package/dist/cjs/{src/providers → providers}/google/utils.d.ts +0 -0
  70. /package/dist/cjs/{src/providers → providers}/openai/OpenAiProvider.class.d.ts +0 -0
  71. /package/dist/cjs/{src/providers → providers}/openai/client.d.ts +0 -0
  72. /package/dist/cjs/{src/providers → providers}/openai/index.d.ts +0 -0
  73. /package/dist/cjs/{src/providers → providers}/openai/responseFormat.d.ts +0 -0
  74. /package/dist/cjs/{src/providers → providers}/openai/types.d.ts +0 -0
  75. /package/dist/cjs/{src/providers → providers}/openai/utils.d.ts +0 -0
  76. /package/dist/cjs/{src/providers → providers}/openrouter/OpenRouterProvider.class.d.ts +0 -0
  77. /package/dist/cjs/{src/providers → providers}/openrouter/client.d.ts +0 -0
  78. /package/dist/cjs/{src/providers → providers}/openrouter/index.d.ts +0 -0
  79. /package/dist/cjs/{src/providers → providers}/openrouter/utils.d.ts +0 -0
  80. /package/dist/cjs/{src/providers → providers}/xai/XaiProvider.class.d.ts +0 -0
  81. /package/dist/cjs/{src/providers → providers}/xai/index.d.ts +0 -0
  82. /package/dist/cjs/{src/providers → providers}/xai/utils.d.ts +0 -0
  83. /package/dist/cjs/{src/tools → tools}/Toolkit.class.d.ts +0 -0
  84. /package/dist/cjs/{src/tools → tools}/index.d.ts +0 -0
  85. /package/dist/cjs/{src/tools → tools}/random.d.ts +0 -0
  86. /package/dist/cjs/{src/tools → tools}/roll.d.ts +0 -0
  87. /package/dist/cjs/{src/tools → tools}/time.d.ts +0 -0
  88. /package/dist/cjs/{src/tools → tools}/weather.d.ts +0 -0
  89. /package/dist/cjs/{src/types → types}/LlmOperateInput.guards.d.ts +0 -0
  90. /package/dist/cjs/{src/types → types}/LlmStreamChunk.interface.d.ts +0 -0
  91. /package/dist/cjs/{src/types → types}/LlmTool.interface.d.ts +0 -0
  92. /package/dist/cjs/{src/upload → upload}/detectMimeType.d.ts +0 -0
  93. /package/dist/cjs/{src/upload → upload}/extractPdfPages.d.ts +0 -0
  94. /package/dist/cjs/{src/upload → upload}/index.d.ts +0 -0
  95. /package/dist/cjs/{src/upload → upload}/loadLocalFile.d.ts +0 -0
  96. /package/dist/cjs/{src/upload → upload}/loadS3File.d.ts +0 -0
  97. /package/dist/cjs/{src/upload → upload}/resolveOperateInput.d.ts +0 -0
  98. /package/dist/cjs/{src/util → util}/determineModelProvider.d.ts +0 -0
  99. /package/dist/cjs/{src/util → util}/extractReasoning.d.ts +0 -0
  100. /package/dist/cjs/{src/util → util}/fillFormatArrays.d.ts +0 -0
  101. /package/dist/cjs/{src/util → util}/formatOperateInput.d.ts +0 -0
  102. /package/dist/cjs/{src/util → util}/formatOperateMessage.d.ts +0 -0
  103. /package/dist/cjs/{src/util → util}/jsonSchema.d.ts +0 -0
  104. /package/dist/cjs/{src/util → util}/jsonSchemaToOpenApi3.d.ts +0 -0
  105. /package/dist/cjs/{src/util → util}/logger.d.ts +0 -0
  106. /package/dist/cjs/{src/util → util}/maxOutputTokens.d.ts +0 -0
  107. /package/dist/cjs/{src/util → util}/maxTurnsFromOptions.d.ts +0 -0
  108. /package/dist/cjs/{src/util → util}/naturalZodSchema.d.ts +0 -0
  109. /package/dist/cjs/{src/util → util}/random.d.ts +0 -0
  110. /package/dist/cjs/{src/util → util}/repairFormatKeys.d.ts +0 -0
  111. /package/dist/cjs/{src/util → util}/sse.d.ts +0 -0
  112. /package/dist/cjs/{src/util → util}/tryParseNumber.d.ts +0 -0
  113. /package/dist/esm/{src/Llm.d.ts → Llm.d.ts} +0 -0
  114. /package/dist/esm/{src/observability → observability}/llmobs.d.ts +0 -0
  115. /package/dist/esm/{src/operate → operate}/OperateLoop.d.ts +0 -0
  116. /package/dist/esm/{src/operate → operate}/StreamLoop.d.ts +0 -0
  117. /package/dist/esm/{src/operate → operate}/adapters/ProviderAdapter.interface.d.ts +0 -0
  118. /package/dist/esm/{src/operate → operate}/adapters/index.d.ts +0 -0
  119. /package/dist/esm/{src/operate → operate}/hooks/HookRunner.d.ts +0 -0
  120. /package/dist/esm/{src/operate → operate}/hooks/index.d.ts +0 -0
  121. /package/dist/esm/{src/operate → operate}/index.d.ts +0 -0
  122. /package/dist/esm/{src/operate → operate}/input/InputProcessor.d.ts +0 -0
  123. /package/dist/esm/{src/operate → operate}/input/index.d.ts +0 -0
  124. /package/dist/esm/{src/operate → operate}/progress/emitProgress.d.ts +0 -0
  125. /package/dist/esm/{src/operate → operate}/progress/index.d.ts +0 -0
  126. /package/dist/esm/{src/operate → operate}/response/ResponseBuilder.d.ts +0 -0
  127. /package/dist/esm/{src/operate → operate}/response/index.d.ts +0 -0
  128. /package/dist/esm/{src/operate → operate}/retry/RetryExecutor.d.ts +0 -0
  129. /package/dist/esm/{src/operate → operate}/retry/RetryPolicy.d.ts +0 -0
  130. /package/dist/esm/{src/operate → operate}/retry/createStaleRejectionGuard.d.ts +0 -0
  131. /package/dist/esm/{src/operate → operate}/retry/index.d.ts +0 -0
  132. /package/dist/esm/{src/operate → operate}/retry/isTransientNetworkError.d.ts +0 -0
  133. /package/dist/esm/{src/providers → providers}/anthropic/AnthropicProvider.class.d.ts +0 -0
  134. /package/dist/esm/{src/providers → providers}/anthropic/client.d.ts +0 -0
  135. /package/dist/esm/{src/providers → providers}/anthropic/index.d.ts +0 -0
  136. /package/dist/esm/{src/providers → providers}/anthropic/types.d.ts +0 -0
  137. /package/dist/esm/{src/providers → providers}/anthropic/utils.d.ts +0 -0
  138. /package/dist/esm/{src/providers → providers}/bedrock/BedrockProvider.class.d.ts +0 -0
  139. /package/dist/esm/{src/providers → providers}/bedrock/index.d.ts +0 -0
  140. /package/dist/esm/{src/providers → providers}/bedrock/utils.d.ts +0 -0
  141. /package/dist/esm/{src/providers → providers}/google/GoogleProvider.class.d.ts +0 -0
  142. /package/dist/esm/{src/providers → providers}/google/client.d.ts +0 -0
  143. /package/dist/esm/{src/providers → providers}/google/index.d.ts +0 -0
  144. /package/dist/esm/{src/providers → providers}/google/utils.d.ts +0 -0
  145. /package/dist/esm/{src/providers → providers}/openai/OpenAiProvider.class.d.ts +0 -0
  146. /package/dist/esm/{src/providers → providers}/openai/client.d.ts +0 -0
  147. /package/dist/esm/{src/providers → providers}/openai/index.d.ts +0 -0
  148. /package/dist/esm/{src/providers → providers}/openai/responseFormat.d.ts +0 -0
  149. /package/dist/esm/{src/providers → providers}/openai/types.d.ts +0 -0
  150. /package/dist/esm/{src/providers → providers}/openai/utils.d.ts +0 -0
  151. /package/dist/esm/{src/providers → providers}/openrouter/OpenRouterProvider.class.d.ts +0 -0
  152. /package/dist/esm/{src/providers → providers}/openrouter/client.d.ts +0 -0
  153. /package/dist/esm/{src/providers → providers}/openrouter/index.d.ts +0 -0
  154. /package/dist/esm/{src/providers → providers}/openrouter/utils.d.ts +0 -0
  155. /package/dist/esm/{src/providers → providers}/xai/XaiProvider.class.d.ts +0 -0
  156. /package/dist/esm/{src/providers → providers}/xai/index.d.ts +0 -0
  157. /package/dist/esm/{src/providers → providers}/xai/utils.d.ts +0 -0
  158. /package/dist/esm/{src/tools → tools}/Toolkit.class.d.ts +0 -0
  159. /package/dist/esm/{src/tools → tools}/index.d.ts +0 -0
  160. /package/dist/esm/{src/tools → tools}/random.d.ts +0 -0
  161. /package/dist/esm/{src/tools → tools}/roll.d.ts +0 -0
  162. /package/dist/esm/{src/tools → tools}/time.d.ts +0 -0
  163. /package/dist/esm/{src/tools → tools}/weather.d.ts +0 -0
  164. /package/dist/esm/{src/types → types}/LlmOperateInput.guards.d.ts +0 -0
  165. /package/dist/esm/{src/types → types}/LlmStreamChunk.interface.d.ts +0 -0
  166. /package/dist/esm/{src/types → types}/LlmTool.interface.d.ts +0 -0
  167. /package/dist/esm/{src/upload → upload}/detectMimeType.d.ts +0 -0
  168. /package/dist/esm/{src/upload → upload}/extractPdfPages.d.ts +0 -0
  169. /package/dist/esm/{src/upload → upload}/index.d.ts +0 -0
  170. /package/dist/esm/{src/upload → upload}/loadLocalFile.d.ts +0 -0
  171. /package/dist/esm/{src/upload → upload}/loadS3File.d.ts +0 -0
  172. /package/dist/esm/{src/upload → upload}/resolveOperateInput.d.ts +0 -0
  173. /package/dist/esm/{src/util → util}/determineModelProvider.d.ts +0 -0
  174. /package/dist/esm/{src/util → util}/extractReasoning.d.ts +0 -0
  175. /package/dist/esm/{src/util → util}/fillFormatArrays.d.ts +0 -0
  176. /package/dist/esm/{src/util → util}/formatOperateInput.d.ts +0 -0
  177. /package/dist/esm/{src/util → util}/formatOperateMessage.d.ts +0 -0
  178. /package/dist/esm/{src/util → util}/jsonSchema.d.ts +0 -0
  179. /package/dist/esm/{src/util → util}/jsonSchemaToOpenApi3.d.ts +0 -0
  180. /package/dist/esm/{src/util → util}/logger.d.ts +0 -0
  181. /package/dist/esm/{src/util → util}/maxOutputTokens.d.ts +0 -0
  182. /package/dist/esm/{src/util → util}/maxTurnsFromOptions.d.ts +0 -0
  183. /package/dist/esm/{src/util → util}/naturalZodSchema.d.ts +0 -0
  184. /package/dist/esm/{src/util → util}/random.d.ts +0 -0
  185. /package/dist/esm/{src/util → util}/repairFormatKeys.d.ts +0 -0
  186. /package/dist/esm/{src/util → util}/sse.d.ts +0 -0
  187. /package/dist/esm/{src/util → util}/tryParseNumber.d.ts +0 -0
@@ -16,7 +16,8 @@ import { BaseProviderAdapter } from "./ProviderAdapter.interface.js";
16
16
  */
17
17
  type AnthropicRequestParams = Anthropic.MessageCreateParams & {
18
18
  output_config?: {
19
- format: {
19
+ effort?: string;
20
+ format?: {
20
21
  type: "json_schema";
21
22
  schema: JsonObject;
22
23
  };
@@ -29,7 +30,7 @@ type AnthropicRequestParams = Anthropic.MessageCreateParams & {
29
30
  */
30
31
  export declare class AnthropicAdapter extends BaseProviderAdapter {
31
32
  readonly name: "anthropic";
32
- readonly defaultModel: "claude-sonnet-4-6";
33
+ readonly defaultModel: string;
33
34
  private runtimeNoTemperatureModels;
34
35
  private runtimeNoStructuredOutputModels;
35
36
  rememberModelRejectsTemperature(model: string): void;
@@ -49,7 +49,7 @@ type AnnotatedBedrockResponse = ConverseCommandOutput & {
49
49
  };
50
50
  export declare class BedrockAdapter extends BaseProviderAdapter {
51
51
  readonly name: "bedrock";
52
- readonly defaultModel: "amazon.nova-lite-v1:0";
52
+ readonly defaultModel: "amazon.nova-pro-v1:0";
53
53
  private _modelsFallbackToStructuredOutputTool;
54
54
  private _modelsWithoutTemperature;
55
55
  private rememberModelRejectsOutputConfig;
@@ -13,7 +13,7 @@ import { GeminiPart, GeminiRawResponse, GeminiRequest } from "../../providers/go
13
13
  */
14
14
  export declare class GoogleAdapter extends BaseProviderAdapter {
15
15
  readonly name: "google";
16
- readonly defaultModel: "gemini-3.1-pro-preview";
16
+ readonly defaultModel: string;
17
17
  private runtimeNoStructuredOutputComboModels;
18
18
  rememberModelRejectsStructuredOutputCombo(model: string): void;
19
19
  clearRuntimeNoStructuredOutputComboModels(): void;
@@ -1,5 +1,7 @@
1
1
  import { JsonObject, NaturalSchema } from "@jaypie/types";
2
2
  import { z } from "zod/v4";
3
+ import { type LlmEffort } from "../../constants.js";
4
+ import { type LlmEffortMapping } from "../../util/effort.js";
3
5
  import { Toolkit } from "../../tools/Toolkit.class.js";
4
6
  import { LlmHistory, LlmOperateOptions, LlmToolResult, LlmUsageItem } from "../../types/LlmProvider.interface.js";
5
7
  import { LlmStreamChunk } from "../../types/LlmStreamChunk.interface.js";
@@ -12,11 +14,15 @@ import { BaseProviderAdapter } from "./ProviderAdapter.interface.js";
12
14
  */
13
15
  export declare class OpenAiAdapter extends BaseProviderAdapter {
14
16
  readonly name: "openai";
15
- readonly defaultModel: "gpt-5.4";
17
+ readonly defaultModel: string;
16
18
  private runtimeNoTemperatureModels;
17
19
  rememberModelRejectsTemperature(model: string): void;
18
20
  clearRuntimeNoTemperatureModels(): void;
19
21
  private supportsTemperature;
22
+ /** Whether `reasoning.effort` may be sent for this model. Overridden by xAI. */
23
+ protected supportsReasoningEffort(model: string): boolean;
24
+ /** Translate a normalized effort to this provider's `reasoning.effort` value. */
25
+ protected mapReasoningEffort(effort: LlmEffort, model: string): LlmEffortMapping;
20
26
  buildRequest(request: OperateRequest): unknown;
21
27
  formatTools(toolkit: Toolkit, _outputSchema?: JsonObject): ProviderToolDefinition[];
22
28
  formatOutputSchema(schema: JsonObject | NaturalSchema | z.ZodType): JsonObject;
@@ -79,6 +79,10 @@ interface OpenRouterRequest {
79
79
  tools?: OpenRouterTool[];
80
80
  tool_choice?: "auto" | "none" | "required";
81
81
  response_format?: OpenRouterResponseFormat;
82
+ reasoning?: {
83
+ effort?: string;
84
+ max_tokens?: number;
85
+ };
82
86
  user?: string;
83
87
  }
84
88
  /**
@@ -111,7 +115,7 @@ type OpenRouterContentPart = {
111
115
  */
112
116
  export declare class OpenRouterAdapter extends BaseProviderAdapter {
113
117
  readonly name: "openrouter";
114
- readonly defaultModel: "anthropic/claude-sonnet-4-6";
118
+ readonly defaultModel: string;
115
119
  private runtimeNoStructuredOutputModels;
116
120
  rememberModelRejectsStructuredOutput(model: string): void;
117
121
  clearRuntimeNoStructuredOutputModels(): void;
@@ -0,0 +1,24 @@
1
+ import { type LlmEffort } from "../../constants.js";
2
+ import { type LlmEffortMapping } from "../../util/effort.js";
3
+ import { ClassifiedError } from "../types.js";
4
+ import { OpenAiAdapter } from "./OpenAiAdapter.js";
5
+ /**
6
+ * XaiAdapter extends OpenAiAdapter since xAI (Grok) uses an OpenAI-compatible API.
7
+ * Name, default model, and transient-ingest-error detection are overridden;
8
+ * all request building, response parsing, tool handling, and streaming are
9
+ * inherited.
10
+ */
11
+ export declare class XaiAdapter extends OpenAiAdapter {
12
+ readonly name: "xai";
13
+ readonly defaultModel: string;
14
+ /**
15
+ * Grok gates reasoning effort by model, not by the OpenAI `gpt-*`/`o*`
16
+ * patterns. Only explicit `*-reasoning` models accept `reasoning_effort`;
17
+ * bare grok-4 reasons implicitly and rejects it, so we stay conservative and
18
+ * only opt in models whose name advertises reasoning.
19
+ */
20
+ protected supportsReasoningEffort(model: string): boolean;
21
+ protected mapReasoningEffort(effort: LlmEffort): LlmEffortMapping;
22
+ classifyError(error: unknown): ClassifiedError;
23
+ }
24
+ export declare const xaiAdapter: XaiAdapter;
@@ -1,4 +1,5 @@
1
1
  import { JsonObject } from "@jaypie/types";
2
+ import { type LlmEffort } from "../constants.js";
2
3
  import { LlmHistory, LlmMessageType, LlmOperateOptions, LlmUsageItem } from "../types/LlmProvider.interface.js";
3
4
  import { Toolkit } from "../tools/Toolkit.class.js";
4
5
  /**
@@ -68,6 +69,8 @@ export interface OperateRequest {
68
69
  tools?: ProviderToolDefinition[];
69
70
  /** Structured output format */
70
71
  format?: JsonObject;
72
+ /** Normalized reasoning effort; adapters translate to provider-native control */
73
+ effort?: LlmEffort;
71
74
  /** Provider-specific options */
72
75
  providerOptions?: JsonObject;
73
76
  /** Whether the request will execute over a streaming transport */
@@ -133,6 +136,8 @@ export interface OperateLoopState {
133
136
  maxTurns: number;
134
137
  /** Response builder instance */
135
138
  responseBuilder: ResponseBuilder;
139
+ /** Names of tool calls executed across all turns (report tally) */
140
+ toolCallNames: string[];
136
141
  /** The toolkit for tool calls */
137
142
  toolkit?: Toolkit;
138
143
  }
@@ -73,6 +73,11 @@ export interface GeminiGenerateContentConfig {
73
73
  responseMimeType?: string;
74
74
  responseJsonSchema?: JsonObject;
75
75
  responseSchema?: JsonObject;
76
+ thinkingConfig?: {
77
+ thinkingLevel?: string;
78
+ thinkingBudget?: number;
79
+ includeThoughts?: boolean;
80
+ };
76
81
  temperature?: number;
77
82
  topP?: number;
78
83
  topK?: number;
@@ -1,5 +1,6 @@
1
1
  import { AnyValue, JsonObject, JsonReturn, NaturalMap, NaturalSchema } from "@jaypie/types";
2
2
  import { z } from "zod/v4";
3
+ import { type LlmEffort } from "../constants.js";
3
4
  import { LlmTool } from "./LlmTool.interface.js";
4
5
  import { LlmStreamChunk } from "./LlmStreamChunk.interface.js";
5
6
  import { Toolkit } from "../tools/Toolkit.class.js";
@@ -213,6 +214,14 @@ export interface LlmProgressEvent {
213
214
  export type LlmProgressCallback = (event: LlmProgressEvent) => unknown | Promise<unknown>;
214
215
  export interface LlmOperateOptions {
215
216
  data?: NaturalMap;
217
+ /**
218
+ * Provider-neutral reasoning effort (lowest | low | medium | high | highest).
219
+ * Each provider translates it to its native control, spreading the scale
220
+ * across the provider's range; omitting it leaves the provider default
221
+ * untouched, so it is safe across a fallback chain. Providers without
222
+ * reasoning control ignore it.
223
+ */
224
+ effort?: LlmEffort;
216
225
  explain?: boolean;
217
226
  /** Chain of fallback providers to try if primary fails. Set to false to disable instance-level fallback. */
218
227
  fallback?: LlmFallbackConfig[] | false;
@@ -0,0 +1,42 @@
1
+ import { type LlmEffort } from "../constants.js";
2
+ /**
3
+ * Result of translating the provider-neutral {@link LlmEffort} scale to a
4
+ * provider's native reasoning control.
5
+ */
6
+ export interface LlmEffortMapping<T extends string | number = string> {
7
+ /**
8
+ * True when the requested neutral level had no distinct native rung and was
9
+ * collapsed or clamped onto a neighbor (e.g. `highest` -> Grok `high`, or
10
+ * `highest` -> OpenAI `high` on a model predating `xhigh`). Adapters log
11
+ * these at debug so a papered-over request stays on the record.
12
+ */
13
+ papered: boolean;
14
+ /** Native effort value for the target provider. */
15
+ value: T;
16
+ }
17
+ /**
18
+ * Per-provider translation of the provider-neutral {@link LlmEffort} scale.
19
+ *
20
+ * The neutral enum (lowest → low → medium → high → highest) is a relative
21
+ * five-point scale. Each table below maps it onto the target provider's native
22
+ * effort control, keeping `medium`/`high` semantically aligned across providers
23
+ * and using each provider's extra bottom (`minimal`) or top (`xhigh`/`max`)
24
+ * rung where one exists. Providers with fewer levels collapse the ends and mark
25
+ * the result `papered`. A single `effort` value is therefore safe to reuse
26
+ * across providers and fallback chains.
27
+ */
28
+ /** Consistent debug message for a papered-over effort level. */
29
+ export declare function paperedEffortMessage({ model, provider, requested, value, }: {
30
+ model: string;
31
+ provider: string;
32
+ requested: LlmEffort;
33
+ value: string | number;
34
+ }): string;
35
+ export declare function toOpenAiEffort(effort: LlmEffort, { model }: {
36
+ model: string;
37
+ }): LlmEffortMapping;
38
+ export declare function toXaiEffort(effort: LlmEffort): LlmEffortMapping;
39
+ export declare function toAnthropicEffort(effort: LlmEffort): LlmEffortMapping;
40
+ export declare function toGeminiThinkingLevel(effort: LlmEffort): LlmEffortMapping;
41
+ export declare function toGeminiThinkingBudget(effort: LlmEffort): LlmEffortMapping<number>;
42
+ export declare function toOpenRouterEffort(effort: LlmEffort): LlmEffortMapping;
@@ -12,4 +12,5 @@ export * from "./naturalZodSchema.js";
12
12
  export * from "./random.js";
13
13
  export * from "./repairFormatKeys.js";
14
14
  export * from "./sse.js";
15
+ export * from "./tallyOperate.js";
15
16
  export * from "./tryParseNumber.js";
@@ -0,0 +1,14 @@
1
+ import { LlmUsageItem } from "../types/LlmProvider.interface.js";
2
+ interface TallyOperateOptions {
3
+ toolCallNames?: string[];
4
+ turns: number;
5
+ usage?: LlmUsageItem[];
6
+ }
7
+ /**
8
+ * Tally loop totals onto the root logger's report session so handlers
9
+ * (express, lambda) include llm activity in the report emitted at teardown.
10
+ * Silently no-ops outside an active session or when the logger predates
11
+ * tally support.
12
+ */
13
+ export declare function tallyOperate({ toolCallNames, turns, usage, }: TallyOperateOptions): void;
14
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaypie/llm",
3
- "version": "1.3.8",
3
+ "version": "1.3.10",
4
4
  "description": "Large language model utilities",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,17 +0,0 @@
1
- export { default as Llm } from "./Llm.js";
2
- export * as LLM from "./constants.js";
3
- export type { LlmFallbackConfig, LlmHistory, LlmInputContent, LlmInputContentFile, LlmInputContentImage, LlmInputContentText, LlmInputMessage, LlmMessageOptions, LlmOperateInput, LlmOperateInputContent, LlmOperateInputFile, LlmOperateInputImage, LlmOperateOptions, LlmOperateResponse, LlmOptions, LlmProgressCallback, LlmProgressEvent, LlmProgressToolCall, LlmProvider, } from "./types/LlmProvider.interface.js";
4
- export { LlmMessageRole, LlmMessageType, LlmProgressEventType, } from "./types/LlmProvider.interface.js";
5
- export { isLlmOperateInput, isLlmOperateInputContent, isLlmOperateInputFile, isLlmOperateInputImage, } from "./types/LlmOperateInput.guards.js";
6
- export type { LlmTool } from "./types/LlmTool.interface.js";
7
- export type { LlmStreamChunk, LlmStreamChunkDone, LlmStreamChunkError, LlmStreamChunkText, LlmStreamChunkToolCall, LlmStreamChunkToolResult, } from "./types/LlmStreamChunk.interface.js";
8
- export { LlmStreamChunkType } from "./types/LlmStreamChunk.interface.js";
9
- export { JaypieToolkit, toolkit, Toolkit, tools } from "./tools/index.js";
10
- export { extractReasoning } from "./util/extractReasoning.js";
11
- export { jsonSchemaToNaturalSchema, naturalSchemaToJsonSchema, } from "./util/jsonSchema.js";
12
- export { BedrockProvider } from "./providers/bedrock/index.js";
13
- /** @deprecated Use GoogleProvider — "Google" is the provider; Gemini is the model family */
14
- export { GoogleProvider as GeminiProvider } from "./providers/google/index.js";
15
- export { GoogleProvider } from "./providers/google/index.js";
16
- export { OpenRouterProvider } from "./providers/openrouter/index.js";
17
- export { XaiProvider } from "./providers/xai/index.js";
@@ -1,14 +0,0 @@
1
- import { ClassifiedError } from "../types.js";
2
- import { OpenAiAdapter } from "./OpenAiAdapter.js";
3
- /**
4
- * XaiAdapter extends OpenAiAdapter since xAI (Grok) uses an OpenAI-compatible API.
5
- * Name, default model, and transient-ingest-error detection are overridden;
6
- * all request building, response parsing, tool handling, and streaming are
7
- * inherited.
8
- */
9
- export declare class XaiAdapter extends OpenAiAdapter {
10
- readonly name: "xai";
11
- readonly defaultModel: "grok-latest";
12
- classifyError(error: unknown): ClassifiedError;
13
- }
14
- export declare const xaiAdapter: XaiAdapter;
@@ -1,14 +0,0 @@
1
- import { ClassifiedError } from "../types.js";
2
- import { OpenAiAdapter } from "./OpenAiAdapter.js";
3
- /**
4
- * XaiAdapter extends OpenAiAdapter since xAI (Grok) uses an OpenAI-compatible API.
5
- * Name, default model, and transient-ingest-error detection are overridden;
6
- * all request building, response parsing, tool handling, and streaming are
7
- * inherited.
8
- */
9
- export declare class XaiAdapter extends OpenAiAdapter {
10
- readonly name: "xai";
11
- readonly defaultModel: "grok-latest";
12
- classifyError(error: unknown): ClassifiedError;
13
- }
14
- export declare const xaiAdapter: XaiAdapter;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes