@node-llm/core 1.6.2 → 1.8.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 (105) hide show
  1. package/README.md +9 -8
  2. package/dist/aliases.d.ts +215 -0
  3. package/dist/aliases.d.ts.map +1 -1
  4. package/dist/aliases.js +241 -26
  5. package/dist/chat/Chat.d.ts +12 -3
  6. package/dist/chat/Chat.d.ts.map +1 -1
  7. package/dist/chat/Chat.js +35 -5
  8. package/dist/chat/ChatOptions.d.ts +2 -1
  9. package/dist/chat/ChatOptions.d.ts.map +1 -1
  10. package/dist/chat/ChatResponse.d.ts +9 -2
  11. package/dist/chat/ChatResponse.d.ts.map +1 -1
  12. package/dist/chat/ChatResponse.js +12 -3
  13. package/dist/chat/ChatStream.d.ts.map +1 -1
  14. package/dist/chat/ChatStream.js +15 -1
  15. package/dist/chat/Content.d.ts +7 -0
  16. package/dist/chat/Content.d.ts.map +1 -1
  17. package/dist/config.d.ts +28 -0
  18. package/dist/config.d.ts.map +1 -1
  19. package/dist/config.js +50 -0
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/llm.d.ts.map +1 -1
  23. package/dist/llm.js +3 -2
  24. package/dist/models/models.d.ts +321 -76
  25. package/dist/models/models.d.ts.map +1 -1
  26. package/dist/models/models.js +7804 -2885
  27. package/dist/providers/Provider.d.ts +37 -0
  28. package/dist/providers/Provider.d.ts.map +1 -1
  29. package/dist/providers/anthropic/Capabilities.d.ts +1 -0
  30. package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
  31. package/dist/providers/anthropic/Capabilities.js +8 -5
  32. package/dist/providers/anthropic/Chat.d.ts.map +1 -1
  33. package/dist/providers/anthropic/Chat.js +23 -1
  34. package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
  35. package/dist/providers/anthropic/Streaming.js +15 -0
  36. package/dist/providers/anthropic/types.d.ts +7 -1
  37. package/dist/providers/anthropic/types.d.ts.map +1 -1
  38. package/dist/providers/bedrock/BedrockProvider.d.ts +53 -0
  39. package/dist/providers/bedrock/BedrockProvider.d.ts.map +1 -0
  40. package/dist/providers/bedrock/BedrockProvider.js +107 -0
  41. package/dist/providers/bedrock/Capabilities.d.ts +50 -0
  42. package/dist/providers/bedrock/Capabilities.d.ts.map +1 -0
  43. package/dist/providers/bedrock/Capabilities.js +233 -0
  44. package/dist/providers/bedrock/Chat.d.ts +26 -0
  45. package/dist/providers/bedrock/Chat.d.ts.map +1 -0
  46. package/dist/providers/bedrock/Chat.js +170 -0
  47. package/dist/providers/bedrock/Embeddings.d.ts +22 -0
  48. package/dist/providers/bedrock/Embeddings.d.ts.map +1 -0
  49. package/dist/providers/bedrock/Embeddings.js +100 -0
  50. package/dist/providers/bedrock/Image.d.ts +33 -0
  51. package/dist/providers/bedrock/Image.d.ts.map +1 -0
  52. package/dist/providers/bedrock/Image.js +154 -0
  53. package/dist/providers/bedrock/Models.d.ts +34 -0
  54. package/dist/providers/bedrock/Models.d.ts.map +1 -0
  55. package/dist/providers/bedrock/Models.js +131 -0
  56. package/dist/providers/bedrock/Moderation.d.ts +23 -0
  57. package/dist/providers/bedrock/Moderation.d.ts.map +1 -0
  58. package/dist/providers/bedrock/Moderation.js +138 -0
  59. package/dist/providers/bedrock/Streaming.d.ts +21 -0
  60. package/dist/providers/bedrock/Streaming.d.ts.map +1 -0
  61. package/dist/providers/bedrock/Streaming.js +240 -0
  62. package/dist/providers/bedrock/config.d.ts +57 -0
  63. package/dist/providers/bedrock/config.d.ts.map +1 -0
  64. package/dist/providers/bedrock/config.js +33 -0
  65. package/dist/providers/bedrock/index.d.ts +8 -0
  66. package/dist/providers/bedrock/index.d.ts.map +1 -0
  67. package/dist/providers/bedrock/index.js +30 -0
  68. package/dist/providers/bedrock/mapper.d.ts +37 -0
  69. package/dist/providers/bedrock/mapper.d.ts.map +1 -0
  70. package/dist/providers/bedrock/mapper.js +204 -0
  71. package/dist/providers/bedrock/types.d.ts +179 -0
  72. package/dist/providers/bedrock/types.d.ts.map +1 -0
  73. package/dist/providers/bedrock/types.js +7 -0
  74. package/dist/providers/deepseek/Capabilities.d.ts +3 -2
  75. package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
  76. package/dist/providers/deepseek/Capabilities.js +19 -5
  77. package/dist/providers/deepseek/Chat.d.ts.map +1 -1
  78. package/dist/providers/deepseek/Chat.js +9 -2
  79. package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
  80. package/dist/providers/deepseek/Streaming.js +3 -2
  81. package/dist/providers/gemini/Capabilities.d.ts +1 -0
  82. package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
  83. package/dist/providers/gemini/Capabilities.js +9 -6
  84. package/dist/providers/gemini/Chat.d.ts.map +1 -1
  85. package/dist/providers/gemini/Chat.js +4 -5
  86. package/dist/providers/gemini/Streaming.d.ts.map +1 -1
  87. package/dist/providers/gemini/Streaming.js +17 -2
  88. package/dist/providers/gemini/types.d.ts +4 -0
  89. package/dist/providers/gemini/types.d.ts.map +1 -1
  90. package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
  91. package/dist/providers/ollama/Capabilities.js +4 -1
  92. package/dist/providers/openai/Capabilities.d.ts +1 -0
  93. package/dist/providers/openai/Capabilities.d.ts.map +1 -1
  94. package/dist/providers/openai/Capabilities.js +14 -11
  95. package/dist/providers/openai/Chat.d.ts.map +1 -1
  96. package/dist/providers/openai/Chat.js +18 -3
  97. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  98. package/dist/providers/openai/Streaming.js +11 -3
  99. package/dist/providers/registry.d.ts +2 -1
  100. package/dist/providers/registry.d.ts.map +1 -1
  101. package/dist/providers/registry.js +2 -1
  102. package/dist/utils/AwsSigV4.d.ts +51 -0
  103. package/dist/utils/AwsSigV4.d.ts.map +1 -0
  104. package/dist/utils/AwsSigV4.js +209 -0
  105. package/package.json +1 -1
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Bedrock Converse API Types
3
+ *
4
+ * These types match the AWS Bedrock Converse API schema.
5
+ * Reference: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html
6
+ */
7
+ export interface BedrockContentBlock {
8
+ text?: string;
9
+ image?: {
10
+ format: "png" | "jpeg" | "gif" | "webp";
11
+ source: {
12
+ bytes: string;
13
+ };
14
+ };
15
+ document?: {
16
+ format: "pdf" | "csv" | "doc" | "docx" | "xls" | "xlsx" | "html" | "txt" | "md";
17
+ name: string;
18
+ source: {
19
+ bytes: string;
20
+ };
21
+ };
22
+ reasoningContent?: {
23
+ text?: string;
24
+ redactedContent?: string;
25
+ };
26
+ toolUse?: {
27
+ toolUseId: string;
28
+ name: string;
29
+ input: Record<string, unknown>;
30
+ };
31
+ toolResult?: {
32
+ toolUseId: string;
33
+ content: BedrockContentBlock[];
34
+ status?: "success" | "error";
35
+ };
36
+ guardContent?: {
37
+ text: {
38
+ text: string;
39
+ };
40
+ };
41
+ cachePoint?: {
42
+ type: "default";
43
+ };
44
+ }
45
+ export interface BedrockMessage {
46
+ role: "user" | "assistant";
47
+ content: BedrockContentBlock[];
48
+ }
49
+ export interface BedrockToolSpec {
50
+ name: string;
51
+ description?: string;
52
+ inputSchema: {
53
+ json: Record<string, unknown>;
54
+ };
55
+ }
56
+ export interface BedrockToolConfig {
57
+ tools: Array<{
58
+ toolSpec: BedrockToolSpec;
59
+ }>;
60
+ toolChoice?: {
61
+ auto?: Record<string, never>;
62
+ any?: Record<string, never>;
63
+ tool?: {
64
+ name: string;
65
+ };
66
+ };
67
+ }
68
+ export interface BedrockInferenceConfig {
69
+ maxTokens?: number;
70
+ temperature?: number;
71
+ topP?: number;
72
+ stopSequences?: string[];
73
+ }
74
+ export interface BedrockGuardrailConfig {
75
+ guardrailIdentifier: string;
76
+ guardrailVersion: string;
77
+ trace?: "enabled" | "disabled";
78
+ }
79
+ export interface BedrockConverseRequest {
80
+ messages: BedrockMessage[];
81
+ system?: BedrockContentBlock[];
82
+ toolConfig?: BedrockToolConfig;
83
+ guardrailConfig?: BedrockGuardrailConfig;
84
+ inferenceConfig?: BedrockInferenceConfig;
85
+ additionalModelRequestFields?: Record<string, any>;
86
+ }
87
+ export interface BedrockConverseResponse {
88
+ output: {
89
+ message: BedrockMessage;
90
+ };
91
+ stopReason: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence" | "content_filtered" | "guardrail_intervening" | "guardrail_intervened";
92
+ usage: {
93
+ inputTokens: number;
94
+ outputTokens: number;
95
+ totalTokens: number;
96
+ cacheReadInputTokens?: number;
97
+ cacheWriteInputTokens?: number;
98
+ };
99
+ trace?: {
100
+ guardrail?: {
101
+ modelOutput?: string[];
102
+ inputAssessment?: Record<string, any>;
103
+ outputAssessments?: Record<string, any>;
104
+ };
105
+ };
106
+ metrics?: {
107
+ latencyMs: number;
108
+ };
109
+ }
110
+ export interface BedrockStreamEvent {
111
+ messageStart?: {
112
+ role: "assistant";
113
+ };
114
+ contentBlockStart?: {
115
+ contentBlockIndex: number;
116
+ start: {
117
+ text?: string;
118
+ reasoningContent?: {
119
+ text?: string;
120
+ };
121
+ toolUse?: {
122
+ toolUseId: string;
123
+ name: string;
124
+ };
125
+ };
126
+ };
127
+ contentBlockDelta?: {
128
+ contentBlockIndex: number;
129
+ delta: {
130
+ text?: string;
131
+ reasoningContent?: {
132
+ text?: string;
133
+ };
134
+ toolUse?: {
135
+ input: string;
136
+ };
137
+ };
138
+ };
139
+ contentBlockStop?: {
140
+ contentBlockIndex: number;
141
+ };
142
+ messageStop?: {
143
+ stopReason: string;
144
+ };
145
+ metadata?: {
146
+ usage: {
147
+ inputTokens: number;
148
+ outputTokens: number;
149
+ totalTokens: number;
150
+ };
151
+ metrics?: {
152
+ latencyMs: number;
153
+ };
154
+ trace?: {
155
+ guardrail?: {
156
+ modelOutput?: string[];
157
+ inputAssessment?: Record<string, any>;
158
+ outputAssessments?: Record<string, any>;
159
+ };
160
+ };
161
+ };
162
+ }
163
+ export interface BedrockModelSummary {
164
+ modelId: string;
165
+ modelArn: string;
166
+ modelName?: string;
167
+ providerName?: string;
168
+ inputModalities?: string[];
169
+ outputModalities?: string[];
170
+ responseStreamingSupported?: boolean;
171
+ inferenceTypesSupported?: Array<"ON_DEMAND" | "PROVISIONED" | "INFERENCE_PROFILE">;
172
+ modelLifecycle?: {
173
+ status: "ACTIVE" | "LEGACY";
174
+ };
175
+ }
176
+ export interface BedrockListModelsResponse {
177
+ modelSummaries: BedrockModelSummary[];
178
+ }
179
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Bedrock Converse API Types
3
+ *
4
+ * These types match the AWS Bedrock Converse API schema.
5
+ * Reference: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html
6
+ */
7
+ export {};
@@ -3,14 +3,15 @@ export declare class Capabilities {
3
3
  static getCapabilities(modelId: string): string[];
4
4
  static getContextWindow(modelId: string): number | null;
5
5
  static getMaxOutputTokens(modelId: string): number | null;
6
- static supportsVision(_modelId: string): boolean;
6
+ static supportsVision(modelId: string): boolean;
7
7
  static supportsTools(modelId: string): boolean;
8
8
  static supportsStructuredOutput(modelId: string): boolean;
9
- static supportsEmbeddings(_modelId: string): boolean;
9
+ static supportsEmbeddings(modelId: string): boolean;
10
10
  static supportsImageGeneration(_modelId: string): boolean;
11
11
  static supportsTranscription(_modelId: string): boolean;
12
12
  static supportsModeration(_modelId: string): boolean;
13
13
  static supportsReasoning(modelId: string): boolean;
14
14
  static getPricing(modelId: string): ModelPricing | undefined;
15
+ private static findModel;
15
16
  }
16
17
  //# sourceMappingURL=Capabilities.d.ts.map
@@ -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;IAcjD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOzD,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIhD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,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,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAG7D"}
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;IAcjD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,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;IAOlD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
@@ -26,17 +26,25 @@ export class Capabilities {
26
26
  }
27
27
  return 4_096;
28
28
  }
29
- static supportsVision(_modelId) {
30
- return false;
29
+ static supportsVision(modelId) {
30
+ const model = this.findModel(modelId);
31
+ return model?.modalities?.input?.includes("image") || false;
31
32
  }
32
33
  static supportsTools(modelId) {
34
+ const model = this.findModel(modelId);
35
+ if (model?.capabilities?.includes("function_calling") || model?.capabilities?.includes("tools"))
36
+ return true;
33
37
  return /deepseek-chat/.test(modelId);
34
38
  }
35
39
  static supportsStructuredOutput(modelId) {
36
- return /deepseek-(?:chat|reasoner)/.test(modelId);
40
+ const model = this.findModel(modelId);
41
+ if (model?.capabilities?.includes("structured_output"))
42
+ return true;
43
+ return /deepseek-chat/.test(modelId);
37
44
  }
38
- static supportsEmbeddings(_modelId) {
39
- return false;
45
+ static supportsEmbeddings(modelId) {
46
+ const model = this.findModel(modelId);
47
+ return model?.modalities?.output?.includes("embeddings") || false;
40
48
  }
41
49
  static supportsImageGeneration(_modelId) {
42
50
  return false;
@@ -48,9 +56,15 @@ export class Capabilities {
48
56
  return false;
49
57
  }
50
58
  static supportsReasoning(modelId) {
59
+ const model = this.findModel(modelId);
60
+ if (model?.capabilities?.includes("reasoning"))
61
+ return true;
51
62
  return /deepseek-reasoner/.test(modelId);
52
63
  }
53
64
  static getPricing(modelId) {
54
65
  return PricingRegistry.getPricing(modelId, "deepseek");
55
66
  }
67
+ static findModel(modelId) {
68
+ return ModelRegistry.find(modelId, "deepseek");
69
+ }
56
70
  }
@@ -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;AAgClE,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;CA2G3D"}
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;AAgClE,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;CAoH3D"}
@@ -10,7 +10,7 @@ export class DeepSeekChat {
10
10
  this.apiKey = apiKey;
11
11
  }
12
12
  async execute(request) {
13
- const { model, messages, tools, max_tokens, response_format, headers: _headers, requestTimeout, ...rest } = request;
13
+ const { model, messages, tools, max_tokens, response_format, thinking: _thinking, headers: _headers, requestTimeout, ...rest } = request;
14
14
  const mappedMessages = mapSystemMessages(messages, false);
15
15
  const body = {
16
16
  model,
@@ -89,6 +89,13 @@ export class DeepSeekChat {
89
89
  }
90
90
  // deepseek cost calculation if needed, otherwise just return usage
91
91
  const calculatedUsage = ModelRegistry.calculateCost(usage, model, "deepseek");
92
- return { content, reasoning, usage: calculatedUsage, tool_calls: toolCalls };
92
+ const thinkingResult = reasoning ? { text: reasoning } : undefined;
93
+ return {
94
+ content,
95
+ reasoning,
96
+ usage: calculatedUsage,
97
+ thinking: thinkingResult,
98
+ tool_calls: toolCalls
99
+ };
93
100
  }
94
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMxD,qBAAa,iBAAiB;IAE1B,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;CAgL9F"}
1
+ {"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMxD,qBAAa,iBAAiB;IAE1B,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;CAkL9F"}
@@ -11,7 +11,7 @@ export class DeepSeekStreaming {
11
11
  }
12
12
  async *execute(request, controller) {
13
13
  const abortController = controller || new AbortController();
14
- const { model, messages, tools, max_tokens, response_format, headers: _headers, requestTimeout, ...rest } = request;
14
+ const { model, messages, tools, max_tokens, response_format, thinking: _thinking, headers: _headers, requestTimeout, ...rest } = request;
15
15
  const mappedMessages = mapSystemMessages(messages, false);
16
16
  const body = {
17
17
  model,
@@ -100,7 +100,8 @@ export class DeepSeekStreaming {
100
100
  if (deltaContent || deltaReasoning) {
101
101
  yield {
102
102
  content: deltaContent || "",
103
- reasoning: deltaReasoning || ""
103
+ reasoning: deltaReasoning || "",
104
+ thinking: deltaReasoning ? { text: deltaReasoning } : undefined
104
105
  };
105
106
  }
106
107
  // Handle tool calls delta
@@ -19,5 +19,6 @@ export declare class Capabilities {
19
19
  static getCapabilities(modelId: string): string[];
20
20
  static getPricing(modelId: string): ModelPricing | undefined;
21
21
  private static normalizeModelId;
22
+ private static findModel;
22
23
  }
23
24
  //# sourceMappingURL=Capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA2BvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAwBzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWzD,MAAM,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI5D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQtD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhG,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAY5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAUjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAGhC"}
1
+ {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA2BvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAwBzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWzD,MAAM,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI5D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQtD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhG,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAY5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAUjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
@@ -43,7 +43,7 @@ export class Capabilities {
43
43
  return 4_096;
44
44
  }
45
45
  static supportsVision(modelId) {
46
- const model = ModelRegistry.find(modelId, "gemini");
46
+ const model = this.findModel(modelId);
47
47
  if (model?.modalities?.input?.includes("image"))
48
48
  return true;
49
49
  const id = this.normalizeModelId(modelId);
@@ -53,7 +53,7 @@ export class Capabilities {
53
53
  return !!id.match(/gemini|flash|pro|imagen/);
54
54
  }
55
55
  static supportsTools(modelId) {
56
- const model = ModelRegistry.find(modelId, "gemini");
56
+ const model = this.findModel(modelId);
57
57
  if (model?.capabilities?.includes("function_calling"))
58
58
  return true;
59
59
  const id = this.normalizeModelId(modelId);
@@ -63,7 +63,7 @@ export class Capabilities {
63
63
  return !!id.match(/gemini|pro|flash/);
64
64
  }
65
65
  static supportsStructuredOutput(modelId) {
66
- const model = ModelRegistry.find(modelId, "gemini");
66
+ const model = this.findModel(modelId);
67
67
  if (model?.capabilities?.includes("structured_output"))
68
68
  return true;
69
69
  const id = this.normalizeModelId(modelId);
@@ -79,14 +79,14 @@ export class Capabilities {
79
79
  return this.supportsStructuredOutput(modelId);
80
80
  }
81
81
  static supportsEmbeddings(modelId) {
82
- const model = ModelRegistry.find(modelId, "gemini");
82
+ const model = this.findModel(modelId);
83
83
  if (model?.modalities?.output?.includes("embeddings"))
84
84
  return true;
85
85
  const id = this.normalizeModelId(modelId);
86
86
  return !!id.match(/text-embedding|embedding|gemini-embedding/);
87
87
  }
88
88
  static supportsImageGeneration(modelId) {
89
- const model = ModelRegistry.find(modelId, "gemini");
89
+ const model = this.findModel(modelId);
90
90
  if (model?.capabilities?.includes("image_generation") ||
91
91
  model?.modalities?.output?.includes("image"))
92
92
  return true;
@@ -94,7 +94,7 @@ export class Capabilities {
94
94
  return !!id.match(/imagen/);
95
95
  }
96
96
  static supportsTranscription(modelId) {
97
- const model = ModelRegistry.find(modelId, "gemini");
97
+ const model = this.findModel(modelId);
98
98
  if (model?.modalities?.input?.includes("audio"))
99
99
  return true;
100
100
  const id = this.normalizeModelId(modelId);
@@ -137,4 +137,7 @@ export class Capabilities {
137
137
  static normalizeModelId(modelId) {
138
138
  return modelId.replace("models/", "");
139
139
  }
140
+ static findModel(modelId) {
141
+ return ModelRegistry.find(modelId, "gemini");
142
+ }
140
143
  }
@@ -1 +1 @@
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"}
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;CAwBvB"}
@@ -46,7 +46,7 @@ export class GeminiChat {
46
46
  functionDeclarations: request.tools.map((t) => ({
47
47
  name: t.function.name,
48
48
  description: t.function.description,
49
- parameters: this.sanitizeSchema(t.function.parameters)
49
+ parameters: t.function.parameters
50
50
  }))
51
51
  }
52
52
  ];
@@ -101,10 +101,9 @@ export class GeminiChat {
101
101
  delete sanitized.$id;
102
102
  delete sanitized.definitions;
103
103
  // Recursively sanitize
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]);
104
+ if (sanitized.properties) {
105
+ for (const key in sanitized.properties) {
106
+ sanitized.properties[key] = this.sanitizeSchema(sanitized.properties[key]);
108
107
  }
109
108
  }
110
109
  if (sanitized.items) {
@@ -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;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"}
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;IA+K7F,OAAO,CAAC,cAAc;CAyBvB"}
@@ -28,10 +28,20 @@ export class GeminiStreaming {
28
28
  generationConfig.responseSchema = this.sanitizeSchema(request.response_format.json_schema.schema);
29
29
  }
30
30
  }
31
+ const { model: _model, messages: _messages, tools: _tools, temperature: _temp, max_tokens: _max, response_format: _format, headers: _headers, requestTimeout: _requestTimeout, thinking: _thinking, ...rest } = request;
31
32
  const payload = {
32
33
  contents,
33
- generationConfig
34
+ generationConfig: {
35
+ ...generationConfig,
36
+ ...(rest.generationConfig || {})
37
+ },
38
+ ...rest
34
39
  };
40
+ if (_thinking) {
41
+ payload.thinkingConfig = {
42
+ includeThoughts: true
43
+ };
44
+ }
35
45
  if (systemInstructionParts.length > 0) {
36
46
  payload.systemInstruction = { parts: systemInstructionParts };
37
47
  }
@@ -98,7 +108,12 @@ export class GeminiStreaming {
98
108
  const parts = json.candidates?.[0]?.content?.parts || [];
99
109
  for (const part of parts) {
100
110
  if (part.text) {
101
- yield { content: part.text };
111
+ if (part.thought) {
112
+ yield { content: "", thinking: { text: part.text } };
113
+ }
114
+ else {
115
+ yield { content: part.text };
116
+ }
102
117
  }
103
118
  // Handle function calls
104
119
  if (part.functionCall) {
@@ -12,6 +12,7 @@ export interface GeminiPart {
12
12
  name: string;
13
13
  response: Record<string, unknown>;
14
14
  };
15
+ thought?: boolean;
15
16
  }
16
17
  export interface GeminiContent {
17
18
  role?: "user" | "model";
@@ -42,6 +43,9 @@ export interface GeminiGenerateContentRequest {
42
43
  category: string;
43
44
  threshold: string;
44
45
  }>;
46
+ thinkingConfig?: {
47
+ includeThoughts: boolean;
48
+ };
45
49
  }
46
50
  export interface GeminiGenerateContentResponse {
47
51
  candidates?: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE;QAClB,KAAK,EAAE,UAAU,EAAE,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,oBAAoB,EAAE,KAAK,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACtC,CAAC,CAAC;KACJ,EAAE,CAAC;IACJ,gBAAgB,CAAC,EAAE;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1C,CAAC;IACF,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,OAAO,EAAE,aAAa,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,KAAK,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,aAAa,CAAC,EAAE;QACd,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,0BAA0B,EAAE,MAAM,EAAE,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE;YACL,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChC,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE;QACT,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,KAAK,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;CACJ"}
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;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"}
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;IAQ9C,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"}
@@ -27,7 +27,10 @@ export class OllamaCapabilities {
27
27
  }
28
28
  static supportsTools(modelId) {
29
29
  const model = this.findModel(modelId);
30
- return model?.capabilities?.includes("tools") || false;
30
+ if (model?.capabilities?.includes("tools"))
31
+ return true;
32
+ // Fallback heuristics for models not in registry
33
+ return /gpt-|claude|gemini|deepseek|llama/.test(modelId.toLowerCase());
31
34
  }
32
35
  static supportsStructuredOutput(modelId) {
33
36
  const model = this.findModel(modelId);
@@ -22,5 +22,6 @@ export declare class Capabilities {
22
22
  static normalizeTemperature(temperature: number | undefined, modelId: string): number | undefined | null;
23
23
  static formatDisplayName(modelId: string): string;
24
24
  static getPricing(modelId: string): ModelPricing | undefined;
25
+ private static findModel;
25
26
  }
26
27
  //# sourceMappingURL=Capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOtD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOlD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,YAAY,CACjB,OAAO,EAAE,MAAM,GAEb,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,OAAO,GACP,MAAM,GACN,qBAAqB,GACrB,cAAc;IAWlB,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAiB5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBjD,MAAM,CAAC,oBAAoB,CACzB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,GAAG,IAAI;IAM5B,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAG7D"}
1
+ {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOtD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOlD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,YAAY,CACjB,OAAO,EAAE,MAAM,GAEb,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,OAAO,GACP,MAAM,GACN,qBAAqB,GACrB,cAAc;IAWlB,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAiB5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBjD,MAAM,CAAC,oBAAoB,CACzB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,GAAG,IAAI;IAM5B,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
@@ -24,19 +24,19 @@ export class Capabilities {
24
24
  return 4_096;
25
25
  }
26
26
  static supportsVision(modelId) {
27
- const model = ModelRegistry.find(modelId, "openai");
27
+ const model = this.findModel(modelId);
28
28
  if (model?.modalities?.input?.includes("image"))
29
29
  return true;
30
30
  return /gpt-4(?!-3)|o1/.test(modelId) && !/audio|realtime|voice/.test(modelId);
31
31
  }
32
32
  static supportsTools(modelId) {
33
- const model = ModelRegistry.find(modelId, "openai");
33
+ const model = this.findModel(modelId);
34
34
  if (model?.capabilities?.includes("function_calling") || model?.capabilities?.includes("tools"))
35
35
  return true;
36
36
  return !/embedding|moderation|dall-e|tts|whisper/.test(modelId);
37
37
  }
38
38
  static supportsStructuredOutput(modelId) {
39
- const model = ModelRegistry.find(modelId, "openai");
39
+ const model = this.findModel(modelId);
40
40
  if (model?.capabilities?.includes("structured_output"))
41
41
  return true;
42
42
  return /gpt-4|o1|o3/.test(modelId);
@@ -45,32 +45,32 @@ export class Capabilities {
45
45
  return this.supportsStructuredOutput(modelId);
46
46
  }
47
47
  static supportsEmbeddings(modelId) {
48
- const model = ModelRegistry.find(modelId, "openai");
48
+ const model = this.findModel(modelId);
49
49
  if (model?.modalities?.output?.includes("embeddings"))
50
50
  return true;
51
51
  return /embedding/.test(modelId);
52
52
  }
53
53
  static supportsImageGeneration(modelId) {
54
- const model = ModelRegistry.find(modelId, "openai");
54
+ const model = this.findModel(modelId);
55
55
  if (model?.capabilities?.includes("image_generation") ||
56
56
  model?.modalities?.output?.includes("image"))
57
57
  return true;
58
58
  return /dall-e|image/.test(modelId);
59
59
  }
60
60
  static supportsTranscription(modelId) {
61
- const model = ModelRegistry.find(modelId, "openai");
61
+ const model = this.findModel(modelId);
62
62
  if (model?.modalities?.input?.includes("audio"))
63
63
  return true;
64
64
  return /whisper|audio|transcribe/.test(modelId);
65
65
  }
66
66
  static supportsModeration(modelId) {
67
- const model = ModelRegistry.find(modelId, "openai");
67
+ const model = this.findModel(modelId);
68
68
  if (model?.modalities?.output?.includes("moderation"))
69
69
  return true;
70
70
  return /moderation/.test(modelId);
71
71
  }
72
72
  static supportsReasoning(modelId) {
73
- const model = ModelRegistry.find(modelId, "openai");
73
+ const model = this.findModel(modelId);
74
74
  if (model?.capabilities?.includes("reasoning"))
75
75
  return true;
76
76
  return /o\d|gpt-5/.test(modelId);
@@ -101,7 +101,7 @@ export class Capabilities {
101
101
  static getModalities(modelId) {
102
102
  const input = ["text"];
103
103
  const output = ["text"];
104
- const model = ModelRegistry.find(modelId, "openai");
104
+ const model = this.findModel(modelId);
105
105
  if (model?.modalities)
106
106
  return model.modalities;
107
107
  if (this.supportsVision(modelId))
@@ -118,7 +118,7 @@ export class Capabilities {
118
118
  }
119
119
  static getCapabilities(modelId) {
120
120
  const caps = ["streaming"];
121
- const model = ModelRegistry.find(modelId, "openai");
121
+ const model = this.findModel(modelId);
122
122
  if (model) {
123
123
  model.capabilities.forEach((c) => {
124
124
  if (!caps.includes(c))
@@ -148,7 +148,7 @@ export class Capabilities {
148
148
  return temperature;
149
149
  }
150
150
  static formatDisplayName(modelId) {
151
- const model = ModelRegistry.find(modelId, "openai");
151
+ const model = this.findModel(modelId);
152
152
  if (model?.name && model.name !== modelId)
153
153
  return model.name;
154
154
  return modelId.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
@@ -156,4 +156,7 @@ export class Capabilities {
156
156
  static getPricing(modelId) {
157
157
  return PricingRegistry.getPricing(modelId, "openai");
158
158
  }
159
+ static findModel(modelId) {
160
+ return ModelRegistry.find(modelId, "openai");
161
+ }
159
162
  }