@node-llm/core 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/README.md +14 -12
  2. package/dist/agent/Agent.d.ts +17 -3
  3. package/dist/agent/Agent.d.ts.map +1 -1
  4. package/dist/agent/Agent.js +11 -0
  5. package/dist/aliases.d.ts +341 -316
  6. package/dist/aliases.d.ts.map +1 -1
  7. package/dist/aliases.js +467 -442
  8. package/dist/chat/Chat.d.ts +12 -5
  9. package/dist/chat/Chat.d.ts.map +1 -1
  10. package/dist/chat/Chat.js +45 -13
  11. package/dist/chat/ChatOptions.d.ts +17 -0
  12. package/dist/chat/ChatOptions.d.ts.map +1 -1
  13. package/dist/chat/ChatResponse.d.ts +5 -0
  14. package/dist/chat/ChatResponse.d.ts.map +1 -1
  15. package/dist/chat/ChatResponse.js +12 -4
  16. package/dist/chat/ChatStream.d.ts.map +1 -1
  17. package/dist/chat/ChatStream.js +20 -10
  18. package/dist/chat/PromptCache.d.ts +7 -0
  19. package/dist/chat/PromptCache.d.ts.map +1 -0
  20. package/dist/chat/PromptCache.js +7 -0
  21. package/dist/chat/Temperature.d.ts +7 -0
  22. package/dist/chat/Temperature.d.ts.map +1 -0
  23. package/dist/chat/Temperature.js +17 -0
  24. package/dist/chat/Tool.d.ts +26 -3
  25. package/dist/chat/Tool.d.ts.map +1 -1
  26. package/dist/chat/Tool.js +28 -2
  27. package/dist/chat/ToolCallOutcome.d.ts +12 -0
  28. package/dist/chat/ToolCallOutcome.d.ts.map +1 -1
  29. package/dist/chat/ToolCallOutcome.js +14 -0
  30. package/dist/chat/ToolResultWindow.d.ts +16 -0
  31. package/dist/chat/ToolResultWindow.d.ts.map +1 -0
  32. package/dist/chat/ToolResultWindow.js +25 -0
  33. package/dist/config.d.ts +30 -0
  34. package/dist/config.d.ts.map +1 -1
  35. package/dist/config.js +66 -30
  36. package/dist/errors/billing.d.ts +7 -0
  37. package/dist/errors/billing.d.ts.map +1 -0
  38. package/dist/errors/billing.js +24 -0
  39. package/dist/errors/index.d.ts +28 -0
  40. package/dist/errors/index.d.ts.map +1 -1
  41. package/dist/errors/index.js +32 -0
  42. package/dist/executor/Executor.d.ts.map +1 -1
  43. package/dist/executor/Executor.js +5 -3
  44. package/dist/index.d.ts +4 -2
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +1 -1
  47. package/dist/llm.d.ts +2 -1
  48. package/dist/llm.d.ts.map +1 -1
  49. package/dist/llm.js +8 -2
  50. package/dist/models/ModelRegistry.d.ts +12 -1
  51. package/dist/models/ModelRegistry.d.ts.map +1 -1
  52. package/dist/models/ModelRegistry.js +22 -2
  53. package/dist/models/models.json +11900 -4568
  54. package/dist/models/types.d.ts +14 -1
  55. package/dist/models/types.d.ts.map +1 -1
  56. package/dist/providers/Provider.d.ts +23 -1
  57. package/dist/providers/Provider.d.ts.map +1 -1
  58. package/dist/providers/anthropic/AnthropicProvider.d.ts +2 -0
  59. package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
  60. package/dist/providers/anthropic/AnthropicProvider.js +2 -0
  61. package/dist/providers/anthropic/Capabilities.d.ts +1 -0
  62. package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
  63. package/dist/providers/anthropic/Capabilities.js +3 -0
  64. package/dist/providers/anthropic/Chat.d.ts.map +1 -1
  65. package/dist/providers/anthropic/Chat.js +7 -75
  66. package/dist/providers/anthropic/Errors.d.ts.map +1 -1
  67. package/dist/providers/anthropic/Errors.js +4 -3
  68. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  69. package/dist/providers/anthropic/Streaming.js +4 -66
  70. package/dist/providers/anthropic/Utils.d.ts +33 -1
  71. package/dist/providers/anthropic/Utils.d.ts.map +1 -1
  72. package/dist/providers/anthropic/Utils.js +114 -0
  73. package/dist/providers/anthropic/types.d.ts +17 -3
  74. package/dist/providers/anthropic/types.d.ts.map +1 -1
  75. package/dist/providers/azure/AzureProvider.d.ts +54 -0
  76. package/dist/providers/azure/AzureProvider.d.ts.map +1 -0
  77. package/dist/providers/azure/AzureProvider.js +110 -0
  78. package/dist/providers/azure/Capabilities.d.ts +16 -0
  79. package/dist/providers/azure/Capabilities.d.ts.map +1 -0
  80. package/dist/providers/azure/Capabilities.js +36 -0
  81. package/dist/providers/azure/Embedding.d.ts +11 -0
  82. package/dist/providers/azure/Embedding.d.ts.map +1 -0
  83. package/dist/providers/azure/Embedding.js +23 -0
  84. package/dist/providers/azure/Models.d.ts +18 -0
  85. package/dist/providers/azure/Models.d.ts.map +1 -0
  86. package/dist/providers/azure/Models.js +29 -0
  87. package/dist/providers/azure/index.d.ts +5 -0
  88. package/dist/providers/azure/index.d.ts.map +1 -0
  89. package/dist/providers/azure/index.js +28 -0
  90. package/dist/providers/bedrock/BedrockProvider.d.ts.map +1 -1
  91. package/dist/providers/bedrock/BedrockProvider.js +1 -0
  92. package/dist/providers/bedrock/Capabilities.d.ts +1 -0
  93. package/dist/providers/bedrock/Capabilities.d.ts.map +1 -1
  94. package/dist/providers/bedrock/Capabilities.js +3 -0
  95. package/dist/providers/bedrock/Chat.d.ts.map +1 -1
  96. package/dist/providers/bedrock/Chat.js +6 -2
  97. package/dist/providers/bedrock/Errors.d.ts.map +1 -1
  98. package/dist/providers/bedrock/Errors.js +4 -0
  99. package/dist/providers/bedrock/Streaming.d.ts.map +1 -1
  100. package/dist/providers/bedrock/Streaming.js +4 -1
  101. package/dist/providers/deepseek/Capabilities.d.ts +1 -0
  102. package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
  103. package/dist/providers/deepseek/Capabilities.js +3 -0
  104. package/dist/providers/deepseek/Chat.d.ts.map +1 -1
  105. package/dist/providers/deepseek/Chat.js +3 -2
  106. package/dist/providers/deepseek/DeepSeekProvider.d.ts +1 -0
  107. package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
  108. package/dist/providers/deepseek/DeepSeekProvider.js +1 -0
  109. package/dist/providers/deepseek/Errors.d.ts.map +1 -1
  110. package/dist/providers/deepseek/Errors.js +5 -4
  111. package/dist/providers/gemini/Capabilities.d.ts +1 -0
  112. package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
  113. package/dist/providers/gemini/Capabilities.js +3 -0
  114. package/dist/providers/gemini/Chat.d.ts.map +1 -1
  115. package/dist/providers/gemini/Chat.js +3 -2
  116. package/dist/providers/gemini/Errors.d.ts.map +1 -1
  117. package/dist/providers/gemini/Errors.js +4 -3
  118. package/dist/providers/gemini/GeminiProvider.d.ts +1 -0
  119. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  120. package/dist/providers/gemini/GeminiProvider.js +1 -0
  121. package/dist/providers/mistral/Capabilities.d.ts +1 -0
  122. package/dist/providers/mistral/Capabilities.d.ts.map +1 -1
  123. package/dist/providers/mistral/Capabilities.js +3 -0
  124. package/dist/providers/mistral/Chat.d.ts.map +1 -1
  125. package/dist/providers/mistral/Chat.js +3 -2
  126. package/dist/providers/mistral/Errors.d.ts.map +1 -1
  127. package/dist/providers/mistral/Errors.js +4 -3
  128. package/dist/providers/mistral/MistralProvider.d.ts +1 -0
  129. package/dist/providers/mistral/MistralProvider.d.ts.map +1 -1
  130. package/dist/providers/mistral/MistralProvider.js +1 -0
  131. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
  132. package/dist/providers/ollama/OllamaProvider.js +1 -0
  133. package/dist/providers/openai/Capabilities.d.ts +6 -0
  134. package/dist/providers/openai/Capabilities.d.ts.map +1 -1
  135. package/dist/providers/openai/Capabilities.js +10 -0
  136. package/dist/providers/openai/Chat.d.ts +3 -0
  137. package/dist/providers/openai/Chat.d.ts.map +1 -1
  138. package/dist/providers/openai/Chat.js +26 -7
  139. package/dist/providers/openai/Embedding.d.ts +2 -0
  140. package/dist/providers/openai/Embedding.d.ts.map +1 -1
  141. package/dist/providers/openai/Embedding.js +8 -5
  142. package/dist/providers/openai/Errors.d.ts.map +1 -1
  143. package/dist/providers/openai/Errors.js +4 -3
  144. package/dist/providers/openai/Models.d.ts +10 -0
  145. package/dist/providers/openai/Models.d.ts.map +1 -1
  146. package/dist/providers/openai/Models.js +12 -8
  147. package/dist/providers/openai/OpenAIProvider.d.ts +11 -1
  148. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  149. package/dist/providers/openai/OpenAIProvider.js +36 -0
  150. package/dist/providers/openai/Responses.d.ts +30 -0
  151. package/dist/providers/openai/Responses.d.ts.map +1 -0
  152. package/dist/providers/openai/Responses.js +176 -0
  153. package/dist/providers/openai/Streaming.d.ts +2 -0
  154. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  155. package/dist/providers/openai/Streaming.js +19 -5
  156. package/dist/providers/openrouter/Capabilities.d.ts +1 -0
  157. package/dist/providers/openrouter/Capabilities.d.ts.map +1 -1
  158. package/dist/providers/openrouter/Capabilities.js +3 -0
  159. package/dist/providers/openrouter/OpenRouterProvider.d.ts +1 -0
  160. package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
  161. package/dist/providers/openrouter/OpenRouterProvider.js +1 -0
  162. package/dist/providers/registry.d.ts +2 -1
  163. package/dist/providers/registry.d.ts.map +1 -1
  164. package/dist/providers/registry.js +2 -1
  165. package/dist/providers/xai/Capabilities.d.ts +1 -0
  166. package/dist/providers/xai/Capabilities.d.ts.map +1 -1
  167. package/dist/providers/xai/Capabilities.js +3 -0
  168. package/dist/providers/xai/Chat.d.ts.map +1 -1
  169. package/dist/providers/xai/Chat.js +3 -2
  170. package/dist/providers/xai/Errors.d.ts.map +1 -1
  171. package/dist/providers/xai/Errors.js +5 -2
  172. package/dist/providers/xai/XAIProvider.d.ts +1 -0
  173. package/dist/providers/xai/XAIProvider.d.ts.map +1 -1
  174. package/dist/providers/xai/XAIProvider.js +1 -0
  175. package/dist/schema/Schema.d.ts +3 -3
  176. package/dist/schema/Schema.d.ts.map +1 -1
  177. package/dist/schema/to-json-schema.d.ts +2 -2
  178. package/dist/schema/to-json-schema.d.ts.map +1 -1
  179. package/dist/schema/to-json-schema.js +3 -8
  180. package/dist/schema/zod.d.ts +32 -0
  181. package/dist/schema/zod.d.ts.map +1 -0
  182. package/dist/schema/zod.js +31 -0
  183. package/package.json +14 -15
@@ -39,11 +39,25 @@ export interface AnthropicMessageRequest {
39
39
  type: string;
40
40
  name?: string;
41
41
  };
42
- thinking?: {
43
- type: "enabled" | "disabled";
44
- budget_tokens: number;
42
+ cache_control?: {
43
+ type: "ephemeral";
44
+ };
45
+ thinking?: AnthropicThinking;
46
+ output_config?: {
47
+ effort?: string;
48
+ [key: string]: unknown;
45
49
  };
46
50
  }
51
+ export type AnthropicThinking = {
52
+ type: "enabled";
53
+ budget_tokens: number;
54
+ display?: "summarized" | "omitted";
55
+ } | {
56
+ type: "adaptive";
57
+ display?: "summarized" | "omitted";
58
+ } | {
59
+ type: "disabled";
60
+ };
47
61
  export interface AnthropicUsage {
48
62
  input_tokens: number;
49
63
  output_tokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EACA,MAAM,GACN,OAAO,GACP,UAAU,GACV,aAAa,GACb,UAAU,GACV,UAAU,GACV,mBAAmB,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACxC,CAAC,CAAC;IACH,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;QAC7B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { OpenAIProvider } from "../openai/OpenAIProvider.js";
2
+ import { ChatRequest, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, ModerationRequest, ModerationResponse } from "../Provider.js";
3
+ export interface AzureProviderOptions {
4
+ /** The resource's key. Leave it out to sign with authToken instead. */
5
+ apiKey?: string;
6
+ /** A Microsoft Entra ID access token, for resources that sign in without keys */
7
+ authToken?: string;
8
+ /**
9
+ * The address the Azure portal shows for a deployment or resource:
10
+ * - a deployment's, https://my-resource.openai.azure.com/openai/deployments/my-gpt?api-version=…
11
+ * - a model endpoint's, https://my-resource.services.ai.azure.com/models/chat/completions?api-version=…
12
+ * - the resource's v1 address, https://my-resource.services.ai.azure.com/openai/v1
13
+ * - the resource itself, https://my-resource.services.ai.azure.com
14
+ */
15
+ baseUrl: string;
16
+ /** Deployment names mapped to the models they run, so capabilities and pricing are known */
17
+ deployments?: Record<string, string>;
18
+ }
19
+ /**
20
+ * Azure AI Foundry: the models deployed on an Azure resource, OpenAI's and others' such as Llama,
21
+ * DeepSeek, Mistral and Grok, through its OpenAI-compatible APIs. The model is the deployment's
22
+ * name; `deployments` says which model each one runs when the names differ.
23
+ */
24
+ export declare class AzureProvider extends OpenAIProvider {
25
+ private readonly azure;
26
+ private readonly address;
27
+ private readonly deployments;
28
+ capabilities: {
29
+ supportsVision: (model: string) => boolean;
30
+ supportsTools: (model: string) => boolean;
31
+ supportsStructuredOutput: (model: string) => boolean;
32
+ supportsEmbeddings: (model: string) => boolean;
33
+ supportsImageGeneration: (_model: string) => boolean;
34
+ supportsTranscription: (_model: string) => boolean;
35
+ supportsModeration: (_model: string) => boolean;
36
+ supportsReasoning: (model: string) => boolean;
37
+ supportsDeveloperRole: (_model: string) => boolean;
38
+ supportsPrediction: (_model: string) => boolean;
39
+ supportsTemperature: (model: string) => boolean;
40
+ getContextWindow: (model: string) => number | null;
41
+ };
42
+ constructor(azure: AzureProviderOptions);
43
+ headers(): Record<string, string>;
44
+ url(path: string): string;
45
+ registryModel(model: string): string;
46
+ responsesBase(): string;
47
+ responsesModel(model: string): string;
48
+ protected usesResponsesApi(request: ChatRequest): boolean;
49
+ protected providerName(): string;
50
+ paint(_request: ImageRequest): Promise<ImageResponse>;
51
+ transcribe(_request: TranscriptionRequest): Promise<TranscriptionResponse>;
52
+ moderate(_request: ModerationRequest): Promise<ModerationResponse>;
53
+ }
54
+ //# sourceMappingURL=AzureProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/azure/AzureProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAKxB,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAgCD;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAwBnC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAvBlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAE9C,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCAEZ,MAAM;0CAEA,MAAM;wCACR,MAAM;qCACT,MAAM;mCACR,MAAM;wCAED,MAAM;qCACT,MAAM;qCACN,MAAM;kCAET,MAAM;MAEhC;gBAE2B,KAAK,EAAE,oBAAoB;IASxC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgBzB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKpC,aAAa,IAAI,MAAM;IAKvB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;cAKlC,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;cAO/C,YAAY,IAAI,MAAM;IAI1B,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrD,UAAU,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI1E,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAGlF"}
@@ -0,0 +1,110 @@
1
+ import { OpenAIProvider } from "../openai/OpenAIProvider.js";
2
+ import { Capabilities } from "../openai/Capabilities.js";
3
+ import { AzureCapabilities } from "./Capabilities.js";
4
+ import { AzureEmbedding } from "./Embedding.js";
5
+ import { AzureModels } from "./Models.js";
6
+ // The versions Azure documents, for addresses that don't name one.
7
+ const CHAT_API_VERSION = "2024-05-01-preview";
8
+ const MODELS_API_VERSION = "preview";
9
+ const parseAddress = (baseUrl) => {
10
+ const url = new URL(baseUrl);
11
+ const path = `${url.origin}${url.pathname}`.replace(/\/+$/, "");
12
+ const shape = path.endsWith("/chat/completions")
13
+ ? "endpoint"
14
+ : path.includes("/openai/deployments/")
15
+ ? "deployment"
16
+ : path.endsWith("/openai/v1")
17
+ ? "v1"
18
+ : "resource";
19
+ const root = path.replace(/\/chat\/completions$/, "").replace(/\/(models|openai)(\/.*)?$/, "");
20
+ return { path, root, version: url.searchParams.get("api-version") ?? undefined, shape };
21
+ };
22
+ const withVersion = (url, version) => version ? `${url}?api-version=${version}` : url;
23
+ /**
24
+ * Azure AI Foundry: the models deployed on an Azure resource, OpenAI's and others' such as Llama,
25
+ * DeepSeek, Mistral and Grok, through its OpenAI-compatible APIs. The model is the deployment's
26
+ * name; `deployments` says which model each one runs when the names differ.
27
+ */
28
+ export class AzureProvider extends OpenAIProvider {
29
+ azure;
30
+ address;
31
+ deployments;
32
+ capabilities = {
33
+ supportsVision: (model) => AzureCapabilities.supportsVision(this.registryModel(model)),
34
+ supportsTools: (model) => AzureCapabilities.supportsTools(this.registryModel(model)),
35
+ supportsStructuredOutput: (model) => AzureCapabilities.supportsStructuredOutput(this.registryModel(model)),
36
+ supportsEmbeddings: (model) => AzureCapabilities.supportsEmbeddings(this.registryModel(model)),
37
+ supportsImageGeneration: (_model) => false,
38
+ supportsTranscription: (_model) => false,
39
+ supportsModeration: (_model) => false,
40
+ supportsReasoning: (model) => AzureCapabilities.supportsReasoning(this.registryModel(model)),
41
+ supportsDeveloperRole: (_model) => false,
42
+ supportsPrediction: (_model) => false,
43
+ supportsTemperature: (model) => AzureCapabilities.supportsTemperature(this.registryModel(model)),
44
+ getContextWindow: (model) => AzureCapabilities.getContextWindow(this.registryModel(model))
45
+ };
46
+ constructor(azure) {
47
+ super({ apiKey: azure.apiKey ?? "", baseUrl: azure.baseUrl });
48
+ this.azure = azure;
49
+ this.address = parseAddress(azure.baseUrl);
50
+ this.deployments = azure.deployments ?? {};
51
+ this.embeddingHandler = new AzureEmbedding(this);
52
+ this.modelsHandler = new AzureModels(this);
53
+ }
54
+ // Serverless endpoints take the key as a bearer token; resources take it as api-key.
55
+ headers() {
56
+ const serverless = new URL(this.address.root).hostname.endsWith(".models.ai.azure.com");
57
+ const auth = !this.azure.apiKey
58
+ ? { Authorization: `Bearer ${this.azure.authToken}` }
59
+ : serverless
60
+ ? { Authorization: `Bearer ${this.azure.apiKey}` }
61
+ : { "api-key": this.azure.apiKey };
62
+ return { ...auth, "Content-Type": "application/json" };
63
+ }
64
+ url(path) {
65
+ const { shape, path: base, root, version } = this.address;
66
+ if (path === "/chat/completions") {
67
+ if (shape === "endpoint")
68
+ return this.azure.baseUrl;
69
+ if (shape === "deployment")
70
+ return withVersion(`${base}${path}`, version ?? CHAT_API_VERSION);
71
+ if (shape === "v1")
72
+ return withVersion(`${base}${path}`, version);
73
+ return withVersion(`${root}/models${path}`, version ?? CHAT_API_VERSION);
74
+ }
75
+ if (path === "/embeddings" && shape === "deployment") {
76
+ return withVersion(`${base}${path}`, version ?? CHAT_API_VERSION);
77
+ }
78
+ if (path === "/models")
79
+ return withVersion(`${this.responsesBase()}${path}`, MODELS_API_VERSION);
80
+ return withVersion(`${this.responsesBase()}${path}`, shape === "v1" ? version : undefined);
81
+ }
82
+ registryModel(model) {
83
+ return this.deployments[model] ?? model;
84
+ }
85
+ // The Responses API is served from the resource's v1 address, never under a deployment.
86
+ responsesBase() {
87
+ const { shape, path, root } = this.address;
88
+ return shape === "v1" ? path : `${root}/openai/v1`;
89
+ }
90
+ responsesModel(model) {
91
+ return this.address.path.match(/\/openai\/deployments\/([^/]+)/)?.[1] ?? model;
92
+ }
93
+ // Unlike OpenAI's own API, the address says nothing about the model, so only the model decides.
94
+ usesResponsesApi(request) {
95
+ return (!!request.tools?.length &&
96
+ Capabilities.needsResponsesForTools(this.registryModel(request.model)));
97
+ }
98
+ providerName() {
99
+ return "Azure";
100
+ }
101
+ async paint(_request) {
102
+ return this.throwUnsupportedError("paint");
103
+ }
104
+ async transcribe(_request) {
105
+ return this.throwUnsupportedError("transcribe");
106
+ }
107
+ async moderate(_request) {
108
+ return this.throwUnsupportedError("moderate");
109
+ }
110
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * What a model can do on Azure, from the registry. A deployment the registry doesn't know, such
3
+ * as one with its own name and no entry in `deployments`, is assumed able: Azure decides.
4
+ */
5
+ export declare class AzureCapabilities {
6
+ static findModel(modelId: string): import("../../models/types.js").Model | undefined;
7
+ private static supports;
8
+ static supportsVision(modelId: string): boolean;
9
+ static supportsTools(modelId: string): boolean;
10
+ static supportsStructuredOutput(modelId: string): boolean;
11
+ static supportsEmbeddings(modelId: string): boolean;
12
+ static supportsReasoning(modelId: string): boolean;
13
+ static supportsTemperature(modelId: string): boolean;
14
+ static getContextWindow(modelId: string): number | null;
15
+ }
16
+ //# sourceMappingURL=Capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/azure/Capabilities.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM;IAIhC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAKvB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAInD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAGxD"}
@@ -0,0 +1,36 @@
1
+ import { ModelRegistry } from "../../models/ModelRegistry.js";
2
+ /**
3
+ * What a model can do on Azure, from the registry. A deployment the registry doesn't know, such
4
+ * as one with its own name and no entry in `deployments`, is assumed able: Azure decides.
5
+ */
6
+ export class AzureCapabilities {
7
+ static findModel(modelId) {
8
+ return ModelRegistry.find(modelId, "azure");
9
+ }
10
+ static supports(modelId, ...capabilities) {
11
+ if (!this.findModel(modelId))
12
+ return true;
13
+ return capabilities.some((capability) => ModelRegistry.supports(modelId, capability, "azure"));
14
+ }
15
+ static supportsVision(modelId) {
16
+ return this.supports(modelId, "vision");
17
+ }
18
+ static supportsTools(modelId) {
19
+ return this.supports(modelId, "tools", "function_calling");
20
+ }
21
+ static supportsStructuredOutput(modelId) {
22
+ return this.supports(modelId, "structured_output", "json_mode");
23
+ }
24
+ static supportsEmbeddings(modelId) {
25
+ return this.supports(modelId, "embeddings");
26
+ }
27
+ static supportsReasoning(modelId) {
28
+ return !!this.findModel(modelId) && ModelRegistry.supports(modelId, "reasoning", "azure");
29
+ }
30
+ static supportsTemperature(modelId) {
31
+ return ModelRegistry.supportsTemperature(modelId, "azure");
32
+ }
33
+ static getContextWindow(modelId) {
34
+ return ModelRegistry.getContextWindow(modelId, "azure") ?? null;
35
+ }
36
+ }
@@ -0,0 +1,11 @@
1
+ import { OpenAIEmbedding } from "../openai/Embedding.js";
2
+ import type { AzureProvider } from "./AzureProvider.js";
3
+ export declare class AzureEmbedding extends OpenAIEmbedding {
4
+ private readonly provider;
5
+ constructor(provider: AzureProvider);
6
+ protected getProviderName(): string;
7
+ protected validateModel(model: string): void;
8
+ protected endpoint(): string;
9
+ protected requestHeaders(): Record<string, string>;
10
+ }
11
+ //# sourceMappingURL=Embedding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Embedding.d.ts","sourceRoot":"","sources":["../../../src/providers/azure/Embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,qBAAa,cAAe,SAAQ,eAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,aAAa;cAIjC,eAAe,IAAI,MAAM;cAIzB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;cAMlC,QAAQ,IAAI,MAAM;cAIlB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAG5D"}
@@ -0,0 +1,23 @@
1
+ import { OpenAIEmbedding } from "../openai/Embedding.js";
2
+ import { AzureCapabilities } from "./Capabilities.js";
3
+ export class AzureEmbedding extends OpenAIEmbedding {
4
+ provider;
5
+ constructor(provider) {
6
+ super(provider.apiBase(), "");
7
+ this.provider = provider;
8
+ }
9
+ getProviderName() {
10
+ return "azure";
11
+ }
12
+ validateModel(model) {
13
+ if (!AzureCapabilities.supportsEmbeddings(this.provider.registryModel(model))) {
14
+ throw new Error(`Model ${model} does not support embeddings.`);
15
+ }
16
+ }
17
+ endpoint() {
18
+ return this.provider.url("/embeddings");
19
+ }
20
+ requestHeaders() {
21
+ return this.provider.headers();
22
+ }
23
+ }
@@ -0,0 +1,18 @@
1
+ import { type ListedModel, OpenAIModels } from "../openai/Models.js";
2
+ import type { AzureProvider } from "./AzureProvider.js";
3
+ type AzureListedModel = ListedModel & {
4
+ deprecation?: {
5
+ inference?: number;
6
+ };
7
+ };
8
+ /** The models the resource's region offers, which can be deployed; not the deployments. */
9
+ export declare class AzureModels extends OpenAIModels {
10
+ private readonly provider;
11
+ constructor(provider: AzureProvider);
12
+ protected getProviderName(): string;
13
+ protected endpoint(): string;
14
+ protected requestHeaders(): Record<string, string>;
15
+ protected listed(data: AzureListedModel[]): AzureListedModel[];
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=Models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["../../../src/providers/azure/Models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,KAAK,gBAAgB,GAAG,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE/E,2FAA2F;AAC3F,qBAAa,WAAY,SAAQ,YAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,aAAa;cAIjC,eAAe,IAAI,MAAM;cAIzB,QAAQ,IAAI,MAAM;cAIlB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;cAKxC,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE;CASxE"}
@@ -0,0 +1,29 @@
1
+ import { OpenAIModels } from "../openai/Models.js";
2
+ /** The models the resource's region offers, which can be deployed; not the deployments. */
3
+ export class AzureModels extends OpenAIModels {
4
+ provider;
5
+ constructor(provider) {
6
+ super(provider.apiBase(), "");
7
+ this.provider = provider;
8
+ }
9
+ getProviderName() {
10
+ return "azure";
11
+ }
12
+ endpoint() {
13
+ return this.provider.url("/models");
14
+ }
15
+ requestHeaders() {
16
+ return this.provider.headers();
17
+ }
18
+ // Azure lists a model once for each region it is offered in, and keeps listing retired ones.
19
+ listed(data) {
20
+ const seen = new Set();
21
+ return data.filter((model) => {
22
+ if (seen.has(model.id))
23
+ return false;
24
+ seen.add(model.id);
25
+ const retiresAt = model.deprecation?.inference;
26
+ return !(typeof retiresAt === "number" && retiresAt * 1000 < Date.now());
27
+ });
28
+ }
29
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./AzureProvider.js";
2
+ export * from "./Capabilities.js";
3
+ export declare function registerAzureProvider(): void;
4
+ export declare const ensureAzureRegistered: typeof registerAzureProvider;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/azure/index.ts"],"names":[],"mappings":"AAIA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAIlC,wBAAgB,qBAAqB,SA2BpC;AAED,eAAO,MAAM,qBAAqB,8BAAwB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { config as globalConfig } from "../../config.js";
2
+ import { providerRegistry } from "../registry.js";
3
+ import { AzureProvider } from "./AzureProvider.js";
4
+ export * from "./AzureProvider.js";
5
+ export * from "./Capabilities.js";
6
+ let registered = false;
7
+ export function registerAzureProvider() {
8
+ if (registered)
9
+ return;
10
+ providerRegistry.register("azure", (config) => {
11
+ const cfg = config || globalConfig;
12
+ const baseUrl = cfg.azureApiBase;
13
+ if (!baseUrl) {
14
+ throw new Error("azureApiBase is not set in config or AZURE_API_BASE environment variable: give the address the Azure portal shows for your deployment or resource");
15
+ }
16
+ if (!cfg.azureApiKey && !cfg.azureAuthToken) {
17
+ throw new Error("azureApiKey or azureAuthToken is not set in config or AZURE_API_KEY / AZURE_AUTH_TOKEN environment variables");
18
+ }
19
+ return new AzureProvider({
20
+ apiKey: cfg.azureApiKey,
21
+ authToken: cfg.azureAuthToken,
22
+ baseUrl,
23
+ deployments: cfg.azureDeployments
24
+ });
25
+ });
26
+ registered = true;
27
+ }
28
+ export const ensureAzureRegistered = registerAzureProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"BedrockProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/BedrockProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAC;AAShE,qBAAa,eAAgB,SAAQ,YAAa,YAAW,QAAQ;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAE/C,YAAY,EAAE,oBAAoB,CAYvC;gBAEU,MAAM,EAAE,aAAa;IAW1B,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAI1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIlC,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI5D,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIvD,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;CAOvD;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"BedrockProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/BedrockProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAC;AAShE,qBAAa,eAAgB,SAAQ,YAAa,YAAW,QAAQ;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAE/C,YAAY,EAAE,oBAAoB,CAavC;gBAEU,MAAM,EAAE,aAAa;IAW1B,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAI1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIlC,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI5D,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIvD,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;CAOvD;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -52,6 +52,7 @@ export class BedrockProvider extends BaseProvider {
52
52
  supportsModeration: (_model) => !!(this.config.guardrailIdentifier && this.config.guardrailVersion),
53
53
  supportsReasoning: (model) => Capabilities.supportsExtendedThinking(model),
54
54
  supportsDeveloperRole: (_model) => true,
55
+ supportsTemperature: (model) => Capabilities.supportsTemperature(model),
55
56
  getContextWindow: (model) => Capabilities.getContextWindow(model)
56
57
  };
57
58
  constructor(config) {
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { ModelPricing } from "../../models/types.js";
5
5
  export declare class Capabilities {
6
+ static supportsTemperature(modelId: string): boolean;
6
7
  static getContextWindow(modelId: string): number | null;
7
8
  static getMaxOutputTokens(modelId: string): number | null;
8
9
  static supportsChat(modelId: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Capabilities.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAMrD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMlD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQxD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAWpD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKrD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAejD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAa9C,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAWjD,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
1
+ {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Capabilities.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAMrD,qBAAa,YAAY;IACvB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMlD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQxD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAWpD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKrD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAejD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAa9C,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAWjD,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
@@ -7,6 +7,9 @@ import { PricingRegistry } from "../../models/PricingRegistry.js";
7
7
  // Model Family Patterns
8
8
  // ─────────────────────────────────────────────────────────────────────────────
9
9
  export class Capabilities {
10
+ static supportsTemperature(modelId) {
11
+ return ModelRegistry.supportsTemperature(modelId, "bedrock");
12
+ }
10
13
  static getContextWindow(modelId) {
11
14
  return ModelRegistry.getContextWindow(modelId, "bedrock") ?? 128_000;
12
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAS,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,aAAa,EAA6C,MAAM,aAAa,CAAC;AAavF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa;IAMjC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAyD1D;;OAEG;IACH,OAAO,CAAC,YAAY;IA6CpB;;OAEG;IACH,OAAO,CAAC,aAAa;CAiDtB"}
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAS,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,aAAa,EAA6C,MAAM,aAAa,CAAC;AAavF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa;IAMjC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA0D1D;;OAEG;IACH,OAAO,CAAC,YAAY;IA6CpB;;OAEG;IACH,OAAO,CAAC,aAAa;CAqDtB"}
@@ -51,7 +51,8 @@ export class BedrockChat {
51
51
  const response = await fetchWithTimeout(url, {
52
52
  method: "POST",
53
53
  headers,
54
- body: bodyJson
54
+ body: bodyJson,
55
+ signal: request.signal
55
56
  }, request.requestTimeout ?? this.config.requestTimeout);
56
57
  if (!response.ok) {
57
58
  await handleBedrockError(response, modelId);
@@ -134,7 +135,10 @@ export class BedrockChat {
134
135
  }
135
136
  // Build usage info
136
137
  const usage = {
137
- input_tokens: response.usage.inputTokens,
138
+ // Bedrock's inputTokens leave out cache reads and writes; NodeLLM's count them.
139
+ input_tokens: response.usage.inputTokens +
140
+ (response.usage.cacheReadInputTokens || 0) +
141
+ (response.usage.cacheWriteInputTokens || 0),
138
142
  output_tokens: response.usage.outputTokens,
139
143
  total_tokens: response.usage.totalTokens,
140
144
  cached_tokens: response.usage.cacheReadInputTokens,
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Errors.ts"],"names":[],"mappings":"AAcA,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAmE5F"}
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Errors.ts"],"names":[],"mappings":"AAeA,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAuE5F"}
@@ -1,4 +1,5 @@
1
1
  import { BadRequestError, ContextWindowExceededError, InsufficientQuotaError, InvalidModelError, AuthenticationError, RateLimitError, ServerError, ServiceUnavailableError, APIError, ForbiddenError } from "../../errors/index.js";
2
+ import { isBillingProblem } from "../../errors/billing.js";
2
3
  export async function handleBedrockError(response, modelId) {
3
4
  const status = response.status;
4
5
  const errorText = await response.text();
@@ -12,6 +13,9 @@ export async function handleBedrockError(response, modelId) {
12
13
  body = errorText;
13
14
  }
14
15
  const provider = "bedrock";
16
+ if (isBillingProblem(status, message)) {
17
+ throw new InsufficientQuotaError(message, body, provider, modelId);
18
+ }
15
19
  // Throttling
16
20
  if (status === 429 || message.includes("ThrottlingException")) {
17
21
  throw new RateLimitError(message, body, provider, modelId);
@@ -1 +1 @@
1
- {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Streaming.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAS,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAA6C,MAAM,aAAa,CAAC;AAQvF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa;IAM1B,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC;IA6H7F;;OAEG;IACH,OAAO,CAAC,UAAU;IAyGlB,OAAO,CAAC,YAAY;CAsCrB"}
1
+ {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Streaming.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAS,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAA6C,MAAM,aAAa,CAAC;AAQvF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa;IAM1B,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC;IA6H7F;;OAEG;IACH,OAAO,CAAC,UAAU;IA6GlB,OAAO,CAAC,YAAY;CAsCrB"}
@@ -193,7 +193,10 @@ export class BedrockStreaming {
193
193
  // 5. Metadata (Usage)
194
194
  if (event.metadata && event.metadata.usage) {
195
195
  const rawUsage = {
196
- input_tokens: event.metadata.usage.inputTokens,
196
+ // Bedrock's inputTokens leave out cache reads and writes; NodeLLM's count them.
197
+ input_tokens: event.metadata.usage.inputTokens +
198
+ (event.metadata.usage.cacheReadInputTokens || 0) +
199
+ (event.metadata.usage.cacheWriteInputTokens || 0),
197
200
  output_tokens: event.metadata.usage.outputTokens,
198
201
  total_tokens: event.metadata.usage.totalTokens,
199
202
  cached_tokens: event.metadata.usage.cacheReadInputTokens,
@@ -1,6 +1,7 @@
1
1
  import { ModelPricing } from "../../models/types.js";
2
2
  export declare class Capabilities {
3
3
  static getCapabilities(modelId: string): string[];
4
+ static supportsTemperature(modelId: string): boolean;
4
5
  static getContextWindow(modelId: string): number;
5
6
  static getMaxOutputTokens(modelId: string): number | null;
6
7
  static supportsVision(modelId: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAejD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIhD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKnD,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIvD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
1
+ {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAejD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIhD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKnD,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIvD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
@@ -16,6 +16,9 @@ export class Capabilities {
16
16
  caps.push("reasoning");
17
17
  return caps;
18
18
  }
19
+ static supportsTemperature(modelId) {
20
+ return ModelRegistry.supportsTemperature(modelId, "deepseek");
21
+ }
19
22
  static getContextWindow(modelId) {
20
23
  return ModelRegistry.getContextWindow(modelId, "deepseek") ?? 32_768;
21
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAS,MAAM,gBAAgB,CAAC;AAiClE,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAmH3D"}
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAS,MAAM,gBAAgB,CAAC;AAiClE,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAqH3D"}
@@ -11,7 +11,7 @@ export class DeepSeekChat {
11
11
  this.apiKey = apiKey;
12
12
  }
13
13
  async execute(request) {
14
- const { model, messages, tools, max_tokens, response_format, thinking: _thinking, headers: _headers, requestTimeout, ...rest } = request;
14
+ const { model, messages, tools, max_tokens, response_format, thinking: _thinking, headers: _headers, requestTimeout, signal, ...rest } = request;
15
15
  const mappedMessages = mapSystemMessages(messages, false);
16
16
  const body = {
17
17
  model,
@@ -61,7 +61,8 @@ export class DeepSeekChat {
61
61
  "Content-Type": "application/json",
62
62
  ...request.headers
63
63
  },
64
- body: JSON.stringify(body)
64
+ body: JSON.stringify(body),
65
+ signal
65
66
  }, requestTimeout);
66
67
  if (!response.ok) {
67
68
  await handleDeepSeekError(response, model);
@@ -20,6 +20,7 @@ export declare class DeepSeekProvider extends BaseProvider implements Provider {
20
20
  supportsModeration: (model: string) => boolean;
21
21
  supportsReasoning: (model: string) => boolean;
22
22
  supportsDeveloperRole: (_model: string) => boolean;
23
+ supportsTemperature: (model: string) => boolean;
23
24
  getContextWindow: (model: string) => number;
24
25
  };
25
26
  constructor(options: DeepSeekProviderOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IAmBxD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAExC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCACZ,MAAM;yCACD,MAAM;uCACR,MAAM;oCACT,MAAM;mCACP,MAAM;wCACD,MAAM;kCACZ,MAAM;MAChC;gBAE2B,OAAO,EAAE,uBAAuB;IAQtD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjD,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAKzC"}
1
+ {"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IAoBxD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAnBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAExC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCACZ,MAAM;yCACD,MAAM;uCACR,MAAM;oCACT,MAAM;mCACP,MAAM;wCACD,MAAM;qCACT,MAAM;kCACT,MAAM;MAChC;gBAE2B,OAAO,EAAE,uBAAuB;IAQtD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjD,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAKzC"}
@@ -20,6 +20,7 @@ export class DeepSeekProvider extends BaseProvider {
20
20
  supportsModeration: (model) => Capabilities.supportsModeration(model),
21
21
  supportsReasoning: (model) => Capabilities.supportsReasoning(model),
22
22
  supportsDeveloperRole: (_model) => false,
23
+ supportsTemperature: (model) => Capabilities.supportsTemperature(model),
23
24
  getContextWindow: (model) => Capabilities.getContextWindow(model)
24
25
  };
25
26
  constructor(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Errors.ts"],"names":[],"mappings":"AAaA,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAkD5F"}
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Errors.ts"],"names":[],"mappings":"AAcA,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAmD5F"}