@node-llm/core 1.5.4 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +76 -43
  2. package/dist/aliases.d.ts +4 -0
  3. package/dist/aliases.d.ts.map +1 -1
  4. package/dist/aliases.js +4 -0
  5. package/dist/chat/Chat.d.ts +28 -17
  6. package/dist/chat/Chat.d.ts.map +1 -1
  7. package/dist/chat/Chat.js +75 -42
  8. package/dist/chat/ChatOptions.d.ts +8 -9
  9. package/dist/chat/ChatOptions.d.ts.map +1 -1
  10. package/dist/chat/ChatResponse.d.ts +26 -1
  11. package/dist/chat/ChatResponse.d.ts.map +1 -1
  12. package/dist/chat/ChatResponse.js +54 -8
  13. package/dist/chat/ChatStream.d.ts.map +1 -1
  14. package/dist/chat/ChatStream.js +14 -21
  15. package/dist/chat/Content.d.ts +3 -3
  16. package/dist/chat/Content.d.ts.map +1 -1
  17. package/dist/chat/Content.js +3 -6
  18. package/dist/chat/Message.d.ts +3 -1
  19. package/dist/chat/Message.d.ts.map +1 -1
  20. package/dist/chat/Role.d.ts.map +1 -1
  21. package/dist/chat/Tool.d.ts +8 -8
  22. package/dist/chat/Tool.d.ts.map +1 -1
  23. package/dist/chat/Tool.js +9 -7
  24. package/dist/chat/ToolHandler.d.ts +4 -3
  25. package/dist/chat/ToolHandler.d.ts.map +1 -1
  26. package/dist/chat/ToolHandler.js +10 -15
  27. package/dist/chat/Validation.d.ts.map +1 -1
  28. package/dist/chat/Validation.js +9 -3
  29. package/dist/config.d.ts +4 -0
  30. package/dist/config.d.ts.map +1 -1
  31. package/dist/config.js +80 -25
  32. package/dist/constants.js +1 -1
  33. package/dist/errors/index.d.ts +21 -7
  34. package/dist/errors/index.d.ts.map +1 -1
  35. package/dist/errors/index.js +14 -0
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +1 -1
  39. package/dist/llm.d.ts +44 -46
  40. package/dist/llm.d.ts.map +1 -1
  41. package/dist/llm.js +201 -130
  42. package/dist/model_aliases.d.ts.map +1 -1
  43. package/dist/models/ModelRegistry.d.ts.map +1 -1
  44. package/dist/models/ModelRegistry.js +13 -10
  45. package/dist/models/PricingRegistry.d.ts +31 -0
  46. package/dist/models/PricingRegistry.d.ts.map +1 -0
  47. package/dist/models/PricingRegistry.js +109 -0
  48. package/dist/models/models.d.ts.map +1 -1
  49. package/dist/models/models.js +230 -138
  50. package/dist/models/types.d.ts +37 -34
  51. package/dist/models/types.d.ts.map +1 -1
  52. package/dist/moderation/Moderation.d.ts.map +1 -1
  53. package/dist/moderation/Moderation.js +15 -5
  54. package/dist/providers/BaseProvider.d.ts +12 -8
  55. package/dist/providers/BaseProvider.d.ts.map +1 -1
  56. package/dist/providers/BaseProvider.js +17 -7
  57. package/dist/providers/Provider.d.ts +20 -5
  58. package/dist/providers/Provider.d.ts.map +1 -1
  59. package/dist/providers/anthropic/AnthropicProvider.d.ts +1 -1
  60. package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
  61. package/dist/providers/anthropic/AnthropicProvider.js +3 -3
  62. package/dist/providers/anthropic/Capabilities.d.ts +2 -1
  63. package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
  64. package/dist/providers/anthropic/Capabilities.js +3 -20
  65. package/dist/providers/anthropic/Chat.d.ts.map +1 -1
  66. package/dist/providers/anthropic/Chat.js +27 -17
  67. package/dist/providers/anthropic/Errors.d.ts.map +1 -1
  68. package/dist/providers/anthropic/Errors.js +5 -2
  69. package/dist/providers/anthropic/Models.d.ts.map +1 -1
  70. package/dist/providers/anthropic/Models.js +6 -6
  71. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  72. package/dist/providers/anthropic/Streaming.js +17 -12
  73. package/dist/providers/anthropic/Utils.js +8 -5
  74. package/dist/providers/anthropic/index.d.ts.map +1 -1
  75. package/dist/providers/anthropic/index.js +4 -3
  76. package/dist/providers/anthropic/types.d.ts +11 -4
  77. package/dist/providers/anthropic/types.d.ts.map +1 -1
  78. package/dist/providers/deepseek/Capabilities.d.ts +7 -5
  79. package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
  80. package/dist/providers/deepseek/Capabilities.js +9 -5
  81. package/dist/providers/deepseek/Chat.d.ts.map +1 -1
  82. package/dist/providers/deepseek/Chat.js +10 -9
  83. package/dist/providers/deepseek/DeepSeekProvider.d.ts +1 -1
  84. package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
  85. package/dist/providers/deepseek/DeepSeekProvider.js +4 -4
  86. package/dist/providers/deepseek/Models.d.ts.map +1 -1
  87. package/dist/providers/deepseek/Models.js +7 -7
  88. package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
  89. package/dist/providers/deepseek/Streaming.js +11 -8
  90. package/dist/providers/deepseek/index.d.ts.map +1 -1
  91. package/dist/providers/deepseek/index.js +5 -4
  92. package/dist/providers/gemini/Capabilities.d.ts +5 -33
  93. package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
  94. package/dist/providers/gemini/Capabilities.js +7 -30
  95. package/dist/providers/gemini/Chat.d.ts.map +1 -1
  96. package/dist/providers/gemini/Chat.js +24 -19
  97. package/dist/providers/gemini/ChatUtils.d.ts.map +1 -1
  98. package/dist/providers/gemini/ChatUtils.js +10 -10
  99. package/dist/providers/gemini/Embeddings.d.ts.map +1 -1
  100. package/dist/providers/gemini/Embeddings.js +2 -2
  101. package/dist/providers/gemini/Errors.d.ts.map +1 -1
  102. package/dist/providers/gemini/Errors.js +5 -2
  103. package/dist/providers/gemini/GeminiProvider.d.ts +1 -1
  104. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  105. package/dist/providers/gemini/GeminiProvider.js +3 -3
  106. package/dist/providers/gemini/Image.d.ts.map +1 -1
  107. package/dist/providers/gemini/Image.js +7 -7
  108. package/dist/providers/gemini/Models.d.ts.map +1 -1
  109. package/dist/providers/gemini/Models.js +6 -6
  110. package/dist/providers/gemini/Streaming.d.ts.map +1 -1
  111. package/dist/providers/gemini/Streaming.js +18 -14
  112. package/dist/providers/gemini/Transcription.d.ts.map +1 -1
  113. package/dist/providers/gemini/Transcription.js +11 -11
  114. package/dist/providers/gemini/index.d.ts +1 -1
  115. package/dist/providers/gemini/index.d.ts.map +1 -1
  116. package/dist/providers/gemini/index.js +5 -4
  117. package/dist/providers/gemini/types.d.ts +4 -4
  118. package/dist/providers/gemini/types.d.ts.map +1 -1
  119. package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
  120. package/dist/providers/ollama/Capabilities.js +6 -2
  121. package/dist/providers/ollama/Models.d.ts.map +1 -1
  122. package/dist/providers/ollama/Models.js +1 -1
  123. package/dist/providers/ollama/OllamaProvider.d.ts +1 -1
  124. package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
  125. package/dist/providers/ollama/OllamaProvider.js +2 -2
  126. package/dist/providers/ollama/index.d.ts +1 -1
  127. package/dist/providers/ollama/index.d.ts.map +1 -1
  128. package/dist/providers/ollama/index.js +7 -3
  129. package/dist/providers/openai/Capabilities.d.ts +2 -1
  130. package/dist/providers/openai/Capabilities.d.ts.map +1 -1
  131. package/dist/providers/openai/Capabilities.js +9 -21
  132. package/dist/providers/openai/Chat.d.ts.map +1 -1
  133. package/dist/providers/openai/Chat.js +18 -15
  134. package/dist/providers/openai/Embedding.d.ts.map +1 -1
  135. package/dist/providers/openai/Embedding.js +11 -7
  136. package/dist/providers/openai/Errors.d.ts.map +1 -1
  137. package/dist/providers/openai/Errors.js +5 -2
  138. package/dist/providers/openai/Image.d.ts.map +1 -1
  139. package/dist/providers/openai/Image.js +6 -6
  140. package/dist/providers/openai/Models.d.ts +1 -1
  141. package/dist/providers/openai/Models.d.ts.map +1 -1
  142. package/dist/providers/openai/Models.js +12 -8
  143. package/dist/providers/openai/Moderation.d.ts.map +1 -1
  144. package/dist/providers/openai/Moderation.js +6 -6
  145. package/dist/providers/openai/OpenAIProvider.d.ts +2 -3
  146. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  147. package/dist/providers/openai/OpenAIProvider.js +4 -4
  148. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  149. package/dist/providers/openai/Streaming.js +18 -13
  150. package/dist/providers/openai/Transcription.d.ts.map +1 -1
  151. package/dist/providers/openai/Transcription.js +15 -12
  152. package/dist/providers/openai/index.d.ts +1 -1
  153. package/dist/providers/openai/index.d.ts.map +1 -1
  154. package/dist/providers/openai/index.js +6 -5
  155. package/dist/providers/openai/types.d.ts +1 -1
  156. package/dist/providers/openai/utils.js +2 -2
  157. package/dist/providers/openrouter/Capabilities.d.ts +3 -3
  158. package/dist/providers/openrouter/Capabilities.d.ts.map +1 -1
  159. package/dist/providers/openrouter/Capabilities.js +21 -24
  160. package/dist/providers/openrouter/Models.d.ts.map +1 -1
  161. package/dist/providers/openrouter/Models.js +20 -16
  162. package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
  163. package/dist/providers/openrouter/OpenRouterProvider.js +1 -1
  164. package/dist/providers/openrouter/index.d.ts +1 -1
  165. package/dist/providers/openrouter/index.d.ts.map +1 -1
  166. package/dist/providers/openrouter/index.js +6 -5
  167. package/dist/providers/registry.d.ts +18 -2
  168. package/dist/providers/registry.d.ts.map +1 -1
  169. package/dist/providers/registry.js +17 -2
  170. package/dist/providers/utils.js +1 -1
  171. package/dist/schema/Schema.d.ts +3 -3
  172. package/dist/schema/Schema.d.ts.map +1 -1
  173. package/dist/schema/Schema.js +2 -2
  174. package/dist/schema/to-json-schema.d.ts +1 -1
  175. package/dist/schema/to-json-schema.d.ts.map +1 -1
  176. package/dist/streaming/Stream.d.ts.map +1 -1
  177. package/dist/streaming/Stream.js +3 -3
  178. package/dist/utils/Binary.d.ts.map +1 -1
  179. package/dist/utils/Binary.js +23 -13
  180. package/dist/utils/FileLoader.d.ts.map +1 -1
  181. package/dist/utils/FileLoader.js +25 -4
  182. package/dist/utils/audio.js +1 -1
  183. package/dist/utils/fetch.d.ts.map +1 -1
  184. package/dist/utils/fetch.js +3 -2
  185. package/dist/utils/logger.d.ts +3 -3
  186. package/dist/utils/logger.d.ts.map +1 -1
  187. package/dist/utils/logger.js +2 -2
  188. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import { ModelRegistry } from "../../models/ModelRegistry.js";
2
+ import { PricingRegistry } from "../../models/PricingRegistry.js";
2
3
  export class Capabilities {
3
4
  static getContextWindow(modelId) {
4
5
  const val = ModelRegistry.getContextWindow(modelId, "gemini");
@@ -71,7 +72,7 @@ export class Capabilities {
71
72
  }
72
73
  return true;
73
74
  }
74
- static supportsSystemInstructions(modelId) {
75
+ static supportsSystemInstructions(_modelId) {
75
76
  return true;
76
77
  }
77
78
  static supportsJsonMode(modelId) {
@@ -86,7 +87,8 @@ export class Capabilities {
86
87
  }
87
88
  static supportsImageGeneration(modelId) {
88
89
  const model = ModelRegistry.find(modelId, "gemini");
89
- if (model?.capabilities?.includes("image_generation") || model?.modalities?.output?.includes("image"))
90
+ if (model?.capabilities?.includes("image_generation") ||
91
+ model?.modalities?.output?.includes("image"))
90
92
  return true;
91
93
  const id = this.normalizeModelId(modelId);
92
94
  return !!id.match(/imagen/);
@@ -98,10 +100,10 @@ export class Capabilities {
98
100
  const id = this.normalizeModelId(modelId);
99
101
  return !!id.match(/gemini|flash|pro/);
100
102
  }
101
- static supportsModeration(modelId) {
103
+ static supportsModeration(_modelId) {
102
104
  return false;
103
105
  }
104
- static normalizeTemperature(temperature, model) {
106
+ static normalizeTemperature(temperature, _model) {
105
107
  return temperature;
106
108
  }
107
109
  static getModalities(modelId) {
@@ -130,32 +132,7 @@ export class Capabilities {
130
132
  return caps;
131
133
  }
132
134
  static getPricing(modelId) {
133
- const model = ModelRegistry.find(modelId, "gemini");
134
- if (model?.pricing)
135
- return model.pricing;
136
- const id = this.normalizeModelId(modelId);
137
- let input = 0;
138
- let output = 0;
139
- if (id.match(/gemini-1\.5-flash/)) {
140
- input = 0.075;
141
- output = 0.3;
142
- }
143
- else if (id.match(/gemini-1\.5-pro/)) {
144
- input = 3.5;
145
- output = 10.5;
146
- }
147
- else if (id.match(/gemini-2\.0-flash/)) {
148
- input = 0.10;
149
- output = 0.40;
150
- }
151
- return {
152
- text_tokens: {
153
- standard: {
154
- input_per_million: input,
155
- output_per_million: output
156
- }
157
- }
158
- };
135
+ return PricingRegistry.getPricing(modelId, "gemini");
159
136
  }
160
137
  static normalizeModelId(modelId) {
161
138
  return modelId.replace("models/", "");
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAS,MAAM,gBAAgB,CAAC;AASlE,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEvE,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4F1D,OAAO,CAAC,cAAc;CAwBvB"}
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS3D,qBAAa,UAAU;IAEnB,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;IAmH1D,OAAO,CAAC,cAAc;CAyBvB"}
@@ -17,7 +17,7 @@ export class GeminiChat {
17
17
  const { contents, systemInstructionParts } = await GeminiChatUtils.convertMessages(request.messages);
18
18
  const generationConfig = {
19
19
  temperature: temperature ?? undefined,
20
- maxOutputTokens: request.max_tokens,
20
+ maxOutputTokens: request.max_tokens
21
21
  };
22
22
  if (request.response_format?.type === "json_object") {
23
23
  generationConfig.responseMimeType = "application/json";
@@ -46,18 +46,18 @@ export class GeminiChat {
46
46
  functionDeclarations: request.tools.map((t) => ({
47
47
  name: t.function.name,
48
48
  description: t.function.description,
49
- parameters: t.function.parameters,
50
- })),
51
- },
49
+ parameters: this.sanitizeSchema(t.function.parameters)
50
+ }))
51
+ }
52
52
  ];
53
53
  }
54
54
  logger.logRequest("Gemini", "POST", url, payload);
55
55
  const response = await fetchWithTimeout(url, {
56
56
  method: "POST",
57
57
  headers: {
58
- "Content-Type": "application/json",
58
+ "Content-Type": "application/json"
59
59
  },
60
- body: JSON.stringify(payload),
60
+ body: JSON.stringify(payload)
61
61
  }, requestTimeout);
62
62
  if (!response.ok) {
63
63
  await handleGeminiError(response, request.model);
@@ -66,8 +66,8 @@ export class GeminiChat {
66
66
  logger.logResponse("Gemini", response.status, response.statusText, json);
67
67
  const candidate = json.candidates?.[0];
68
68
  const content = candidate?.content?.parts
69
- ?.filter(p => p.text)
70
- .map(p => p.text)
69
+ ?.filter((p) => p.text)
70
+ .map((p) => p.text)
71
71
  .join("\n") || null;
72
72
  const tool_calls = candidate?.content?.parts
73
73
  ?.filter((p) => p.functionCall)
@@ -76,15 +76,19 @@ export class GeminiChat {
76
76
  type: "function",
77
77
  function: {
78
78
  name: p.functionCall.name,
79
- arguments: JSON.stringify(p.functionCall.args),
80
- },
79
+ arguments: JSON.stringify(p.functionCall.args)
80
+ }
81
81
  }));
82
- const usage = json.usageMetadata ? {
83
- input_tokens: json.usageMetadata.promptTokenCount,
84
- output_tokens: json.usageMetadata.candidatesTokenCount,
85
- total_tokens: json.usageMetadata.totalTokenCount,
86
- } : undefined;
87
- const calculatedUsage = usage ? ModelRegistry.calculateCost(usage, request.model, "gemini") : undefined;
82
+ const usage = json.usageMetadata
83
+ ? {
84
+ input_tokens: json.usageMetadata.promptTokenCount,
85
+ output_tokens: json.usageMetadata.candidatesTokenCount,
86
+ total_tokens: json.usageMetadata.totalTokenCount
87
+ }
88
+ : undefined;
89
+ const calculatedUsage = usage
90
+ ? ModelRegistry.calculateCost(usage, request.model, "gemini")
91
+ : undefined;
88
92
  return { content, tool_calls, usage: calculatedUsage };
89
93
  }
90
94
  sanitizeSchema(schema) {
@@ -97,9 +101,10 @@ export class GeminiChat {
97
101
  delete sanitized.$id;
98
102
  delete sanitized.definitions;
99
103
  // Recursively sanitize
100
- if (sanitized.properties) {
101
- for (const key in sanitized.properties) {
102
- sanitized.properties[key] = this.sanitizeSchema(sanitized.properties[key]);
104
+ if (sanitized.properties && typeof sanitized.properties === "object") {
105
+ const props = sanitized.properties;
106
+ for (const key in props) {
107
+ props[key] = this.sanitizeSchema(props[key]);
103
108
  }
104
109
  }
105
110
  if (sanitized.items) {
@@ -1 +1 @@
1
- {"version":3,"file":"ChatUtils.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/ChatUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGvD,qBAAa,eAAe;WACb,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QAAC,sBAAsB,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;CAgFhI"}
1
+ {"version":3,"file":"ChatUtils.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/ChatUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGvD,qBAAa,eAAe;WACb,eAAe,CAC1B,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QAAC,sBAAsB,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;CAgFhF"}
@@ -15,8 +15,8 @@ export class GeminiChatUtils {
15
15
  parts.push({
16
16
  functionResponse: {
17
17
  name: msg.tool_call_id || "unknown",
18
- response: { result: msg.content },
19
- },
18
+ response: { result: msg.content }
19
+ }
20
20
  });
21
21
  contents.push({ role: "user", parts });
22
22
  }
@@ -36,8 +36,8 @@ export class GeminiChatUtils {
36
36
  parts.push({
37
37
  inlineData: {
38
38
  mimeType: binary.mimeType,
39
- data: binary.data,
40
- },
39
+ data: binary.data
40
+ }
41
41
  });
42
42
  }
43
43
  }
@@ -45,8 +45,8 @@ export class GeminiChatUtils {
45
45
  parts.push({
46
46
  inlineData: {
47
47
  mimeType: `audio/${part.input_audio.format}`,
48
- data: part.input_audio.data,
49
- },
48
+ data: part.input_audio.data
49
+ }
50
50
  });
51
51
  }
52
52
  else if (part.type === "video_url") {
@@ -55,8 +55,8 @@ export class GeminiChatUtils {
55
55
  parts.push({
56
56
  inlineData: {
57
57
  mimeType: binary.mimeType,
58
- data: binary.data,
59
- },
58
+ data: binary.data
59
+ }
60
60
  });
61
61
  }
62
62
  }
@@ -67,8 +67,8 @@ export class GeminiChatUtils {
67
67
  parts.push({
68
68
  functionCall: {
69
69
  name: call.function.name,
70
- args: JSON.parse(call.function.arguments),
71
- },
70
+ args: JSON.parse(call.function.arguments)
71
+ }
72
72
  });
73
73
  }
74
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Embeddings.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Embeddings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKrE,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEvE,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA2CrE"}
1
+ {"version":3,"file":"Embeddings.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Embeddings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKrE,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA2CrE"}
@@ -12,7 +12,7 @@ export class GeminiEmbeddings {
12
12
  const url = `${this.baseUrl}/models/${modelId}:batchEmbedContents?key=${this.apiKey}`;
13
13
  const inputs = Array.isArray(request.input) ? request.input : [request.input];
14
14
  const payload = {
15
- requests: inputs.map(text => {
15
+ requests: inputs.map((text) => {
16
16
  const item = {
17
17
  model: `models/${modelId}`,
18
18
  content: {
@@ -36,7 +36,7 @@ export class GeminiEmbeddings {
36
36
  }
37
37
  const json = (await response.json());
38
38
  logger.logResponse("Gemini", response.status, response.statusText, json);
39
- const vectors = json.embeddings?.map(e => e.values) || [];
39
+ const vectors = json.embeddings?.map((e) => e.values) || [];
40
40
  return {
41
41
  model: modelId,
42
42
  vectors: vectors,
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Errors.ts"],"names":[],"mappings":"AASA,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAuC1F"}
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Errors.ts"],"names":[],"mappings":"AASA,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CA0C1F"}
@@ -5,8 +5,11 @@ export async function handleGeminiError(response, model) {
5
5
  let message = `Gemini error (${status})`;
6
6
  try {
7
7
  body = await response.json();
8
- if (body?.error?.message) {
9
- message = body.error.message;
8
+ if (body && typeof body === "object" && "error" in body) {
9
+ const err = body.error;
10
+ if (err && err.message) {
11
+ message = err.message;
12
+ }
10
13
  }
11
14
  }
12
15
  catch {
@@ -29,7 +29,7 @@ export declare class GeminiProvider extends BaseProvider implements Provider {
29
29
  apiBase(): string;
30
30
  headers(): Record<string, string>;
31
31
  protected providerName(): string;
32
- defaultModel(feature?: string): string;
32
+ defaultModel(_feature?: string): string;
33
33
  chat(request: ChatRequest): Promise<ChatResponse>;
34
34
  stream(request: ChatRequest): AsyncGenerator<ChatChunk>;
35
35
  listModels(): Promise<ModelInfo[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"GeminiProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/GeminiProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EAGrB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAe,SAAQ,YAAa,YAAW,QAAQ;IAsBtD,OAAO,CAAC,QAAQ,CAAC,OAAO;IArBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsB;IAEpD,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCACZ,MAAM;yCACD,MAAM;uCACR,MAAM;oCACT,MAAM;oCACN,MAAM;wCACF,MAAM;kCACZ,MAAM;MAChC;gBAE2B,OAAO,EAAE,qBAAqB;IAWpD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAIhD,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,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpD,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI5D,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAKhF"}
1
+ {"version":3,"file":"GeminiProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/GeminiProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAe,SAAQ,YAAa,YAAW,QAAQ;IAsBtD,OAAO,CAAC,QAAQ,CAAC,OAAO;IArBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsB;IAEpD,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCACZ,MAAM;yCACD,MAAM;uCACR,MAAM;oCACT,MAAM;oCACN,MAAM;wCACF,MAAM;kCACZ,MAAM;MAChC;gBAE2B,OAAO,EAAE,qBAAqB;IAWpD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMxC,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;IAIlC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpD,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI5D,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAKhF"}
@@ -25,7 +25,7 @@ export class GeminiProvider extends BaseProvider {
25
25
  supportsModeration: (model) => Capabilities.supportsModeration(model),
26
26
  supportsReasoning: (_model) => false,
27
27
  supportsDeveloperRole: (_model) => true,
28
- getContextWindow: (model) => Capabilities.getContextWindow(model),
28
+ getContextWindow: (model) => Capabilities.getContextWindow(model)
29
29
  };
30
30
  constructor(options) {
31
31
  super();
@@ -43,13 +43,13 @@ export class GeminiProvider extends BaseProvider {
43
43
  }
44
44
  headers() {
45
45
  return {
46
- "Content-Type": "application/json",
46
+ "Content-Type": "application/json"
47
47
  };
48
48
  }
49
49
  providerName() {
50
50
  return "Gemini";
51
51
  }
52
- defaultModel(feature) {
52
+ defaultModel(_feature) {
53
53
  return "gemini-2.0-flash-exp";
54
54
  }
55
55
  async chat(request) {
@@ -1 +1 @@
1
- {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI7D,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEvE,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAiD7D"}
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI7D,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAmD7D"}
@@ -16,20 +16,20 @@ export class GeminiImage {
16
16
  const body = {
17
17
  instances: [
18
18
  {
19
- prompt: request.prompt,
20
- },
19
+ prompt: request.prompt
20
+ }
21
21
  ],
22
22
  parameters: {
23
- sampleCount: 1,
24
- },
23
+ sampleCount: 1
24
+ }
25
25
  };
26
26
  logger.logRequest("Gemini", "POST", url, body);
27
27
  const response = await fetch(url, {
28
28
  method: "POST",
29
29
  headers: {
30
- "Content-Type": "application/json",
30
+ "Content-Type": "application/json"
31
31
  },
32
- body: JSON.stringify(body),
32
+ body: JSON.stringify(body)
33
33
  });
34
34
  if (!response.ok) {
35
35
  await handleGeminiError(response, modelId);
@@ -44,7 +44,7 @@ export class GeminiImage {
44
44
  const base64Data = imageData.bytesBase64Encoded;
45
45
  return {
46
46
  data: base64Data,
47
- mime_type: mimeType,
47
+ mime_type: mimeType
48
48
  };
49
49
  }
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEvE,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAkDrC,IAAI,CAAC,OAAO,EAAE,MAAM;CAGrB"}
1
+ {"version":3,"file":"Models.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAmDrC,IAAI,CAAC,OAAO,EAAE,MAAM;CAGrB"}
@@ -12,12 +12,12 @@ export class GeminiModels {
12
12
  const response = await fetch(`${this.baseUrl}/models?key=${this.apiKey}`, {
13
13
  method: "GET",
14
14
  headers: {
15
- "Content-Type": "application/json",
16
- },
15
+ "Content-Type": "application/json"
16
+ }
17
17
  });
18
18
  if (response.ok) {
19
- const { models } = await response.json();
20
- return models.map(m => {
19
+ const { models } = (await response.json());
20
+ return models.map((m) => {
21
21
  const modelId = m.name.replace("models/", "");
22
22
  const registryModel = ModelRegistry.find(modelId, "gemini");
23
23
  const info = {
@@ -46,8 +46,8 @@ export class GeminiModels {
46
46
  // Fallback
47
47
  }
48
48
  return ModelRegistry.all()
49
- .filter(m => m.provider === "gemini")
50
- .map(m => ({
49
+ .filter((m) => m.provider === "gemini")
50
+ .map((m) => ({
51
51
  ...m,
52
52
  capabilities: Capabilities.getCapabilities(m.id)
53
53
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQxD,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,CACZ,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,eAAe,GAC3B,cAAc,CAAC,SAAS,CAAC;IAyI5B,OAAO,CAAC,cAAc;CAwBvB"}
1
+ {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AASxD,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG1B,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC;IAoJ7F,OAAO,CAAC,cAAc;CAyBvB"}
@@ -17,7 +17,7 @@ export class GeminiStreaming {
17
17
  const { contents, systemInstructionParts } = await GeminiChatUtils.convertMessages(request.messages);
18
18
  const generationConfig = {
19
19
  temperature: temperature ?? undefined,
20
- maxOutputTokens: request.max_tokens,
20
+ maxOutputTokens: request.max_tokens
21
21
  };
22
22
  if (request.response_format?.type === "json_object") {
23
23
  generationConfig.responseMimeType = "application/json";
@@ -30,7 +30,7 @@ export class GeminiStreaming {
30
30
  }
31
31
  const payload = {
32
32
  contents,
33
- generationConfig,
33
+ generationConfig
34
34
  };
35
35
  if (systemInstructionParts.length > 0) {
36
36
  payload.systemInstruction = { parts: systemInstructionParts };
@@ -41,9 +41,9 @@ export class GeminiStreaming {
41
41
  functionDeclarations: request.tools.map((t) => ({
42
42
  name: t.function.name,
43
43
  description: t.function.description,
44
- parameters: t.function.parameters,
45
- })),
46
- },
44
+ parameters: t.function.parameters
45
+ }))
46
+ }
47
47
  ];
48
48
  }
49
49
  let done = false;
@@ -53,15 +53,18 @@ export class GeminiStreaming {
53
53
  const response = await fetchWithTimeout(url, {
54
54
  method: "POST",
55
55
  headers: {
56
- "Content-Type": "application/json",
56
+ "Content-Type": "application/json"
57
57
  },
58
58
  body: JSON.stringify(payload),
59
- signal: abortController.signal,
59
+ signal: abortController.signal
60
60
  }, request.requestTimeout);
61
61
  if (!response.ok) {
62
62
  await handleGeminiError(response, request.model);
63
63
  }
64
- logger.debug("Gemini streaming started", { status: response.status, statusText: response.statusText });
64
+ logger.debug("Gemini streaming started", {
65
+ status: response.status,
66
+ statusText: response.statusText
67
+ });
65
68
  if (!response.body) {
66
69
  throw new Error("No response body for streaming");
67
70
  }
@@ -83,7 +86,7 @@ export class GeminiStreaming {
83
86
  let line = buffer.substring(0, lineEnd).trim();
84
87
  buffer = buffer.substring(lineEnd + 1);
85
88
  // Handle carriage returns
86
- if (line.endsWith('\r')) {
89
+ if (line.endsWith("\r")) {
87
90
  line = line.substring(0, line.length - 1);
88
91
  }
89
92
  if (line.startsWith("data: ")) {
@@ -110,7 +113,7 @@ export class GeminiStreaming {
110
113
  }
111
114
  }
112
115
  }
113
- catch (e) {
116
+ catch {
114
117
  // Ignore parse errors
115
118
  }
116
119
  }
@@ -120,7 +123,7 @@ export class GeminiStreaming {
120
123
  }
121
124
  catch (e) {
122
125
  // Graceful exit on abort
123
- if (e instanceof Error && e.name === 'AbortError') {
126
+ if (e instanceof Error && e.name === "AbortError") {
124
127
  return;
125
128
  }
126
129
  throw e;
@@ -142,9 +145,10 @@ export class GeminiStreaming {
142
145
  delete sanitized.$id;
143
146
  delete sanitized.definitions;
144
147
  // Recursively sanitize
145
- if (sanitized.properties) {
146
- for (const key in sanitized.properties) {
147
- sanitized.properties[key] = this.sanitizeSchema(sanitized.properties[key]);
148
+ if (sanitized.properties && typeof sanitized.properties === "object") {
149
+ const props = sanitized.properties;
150
+ for (const key in props) {
151
+ props[key] = this.sanitizeSchema(props[key]);
148
152
  }
149
153
  }
150
154
  if (sanitized.items) {
@@ -1 +1 @@
1
- {"version":3,"file":"Transcription.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAM7E,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAA8E;gBAEvF,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEvE,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA8D7E"}
1
+ {"version":3,"file":"Transcription.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAM7E,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CACuC;gBAG1D,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA8D7E"}
@@ -33,34 +33,34 @@ export class GeminiTranscription {
33
33
  {
34
34
  inlineData: {
35
35
  mimeType,
36
- data: base64Data,
37
- },
38
- },
39
- ],
40
- },
36
+ data: base64Data
37
+ }
38
+ }
39
+ ]
40
+ }
41
41
  ],
42
42
  generationConfig: {
43
- responseMimeType: "text/plain",
44
- },
43
+ responseMimeType: "text/plain"
44
+ }
45
45
  };
46
46
  logger.logRequest("Gemini", "POST", url, payload);
47
47
  const response = await fetch(url, {
48
48
  method: "POST",
49
49
  headers: {
50
- "Content-Type": "application/json",
50
+ "Content-Type": "application/json"
51
51
  },
52
- body: JSON.stringify(payload),
52
+ body: JSON.stringify(payload)
53
53
  });
54
54
  if (!response.ok) {
55
55
  await handleGeminiError(response, model);
56
56
  }
57
57
  const json = (await response.json());
58
58
  logger.logResponse("Gemini", response.status, response.statusText, json);
59
- const text = json.candidates?.[0]?.content?.parts?.map(p => p.text).join("") || "";
59
+ const text = json.candidates?.[0]?.content?.parts?.map((p) => p.text).join("") || "";
60
60
  return {
61
61
  text,
62
62
  model,
63
- segments: [], // Gemini's generateContent doesn't return segments by default
63
+ segments: [] // Gemini's generateContent doesn't return segments by default
64
64
  };
65
65
  }
66
66
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Idempotent registration of the Gemini provider.
3
- * Automatically called by NodeLLM.configure({ provider: 'gemini' })
3
+ * Automatically called when using createLLM({ provider: 'gemini' })
4
4
  */
5
5
  export declare function registerGeminiProvider(): void;
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,sBAAsB,SAcrC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,+BAAyB,CAAC;AAE7D,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,sBAAsB,SAerC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,+BAAyB,CAAC;AAE7D,cAAc,qBAAqB,CAAC"}
@@ -1,16 +1,17 @@
1
- import { config } from "../../config.js";
1
+ import { config as globalConfig } from "../../config.js";
2
2
  import { providerRegistry } from "../registry.js";
3
3
  import { GeminiProvider } from "./GeminiProvider.js";
4
4
  let registered = false;
5
5
  /**
6
6
  * Idempotent registration of the Gemini provider.
7
- * Automatically called by NodeLLM.configure({ provider: 'gemini' })
7
+ * Automatically called when using createLLM({ provider: 'gemini' })
8
8
  */
9
9
  export function registerGeminiProvider() {
10
10
  if (registered)
11
11
  return;
12
- providerRegistry.register("gemini", () => {
13
- const apiKey = config.geminiApiKey;
12
+ providerRegistry.register("gemini", (config) => {
13
+ const cfg = config || globalConfig;
14
+ const apiKey = cfg.geminiApiKey;
14
15
  if (!apiKey) {
15
16
  throw new Error("geminiApiKey is not set in config or GEMINI_API_KEY environment variable");
16
17
  }
@@ -6,11 +6,11 @@ export interface GeminiPart {
6
6
  };
7
7
  functionCall?: {
8
8
  name: string;
9
- args: Record<string, any>;
9
+ args: Record<string, unknown>;
10
10
  };
11
11
  functionResponse?: {
12
12
  name: string;
13
- response: Record<string, any>;
13
+ response: Record<string, unknown>;
14
14
  };
15
15
  }
16
16
  export interface GeminiContent {
@@ -26,7 +26,7 @@ export interface GeminiGenerateContentRequest {
26
26
  functionDeclarations: Array<{
27
27
  name: string;
28
28
  description?: string;
29
- parameters?: Record<string, any>;
29
+ parameters?: Record<string, unknown>;
30
30
  }>;
31
31
  }[];
32
32
  generationConfig?: {
@@ -36,7 +36,7 @@ export interface GeminiGenerateContentRequest {
36
36
  topP?: number;
37
37
  topK?: number;
38
38
  responseMimeType?: string;
39
- responseSchema?: Record<string, any>;
39
+ responseSchema?: Record<string, unknown>;
40
40
  };
41
41
  safetySettings?: Array<{
42
42
  category: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/ollama/Capabilities.ts"],"names":[],"mappings":"AAEA,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM;IAYhC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAU/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKlD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKtD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAIpD"}
1
+ {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/ollama/Capabilities.ts"],"names":[],"mappings":"AAEA,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM;IAYhC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAc/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IASnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKlD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKtD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAIpD"}