@nodetool-ai/runtime 0.7.0-rc.11

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 (198) hide show
  1. package/dist/bridge-protocol.d.ts +39 -0
  2. package/dist/bridge-protocol.d.ts.map +1 -0
  3. package/dist/bridge-protocol.js +39 -0
  4. package/dist/bridge-protocol.js.map +1 -0
  5. package/dist/comfy-executor.d.ts +41 -0
  6. package/dist/comfy-executor.d.ts.map +1 -0
  7. package/dist/comfy-executor.js +305 -0
  8. package/dist/comfy-executor.js.map +1 -0
  9. package/dist/context-packer.d.ts +22 -0
  10. package/dist/context-packer.d.ts.map +1 -0
  11. package/dist/context-packer.js +66 -0
  12. package/dist/context-packer.js.map +1 -0
  13. package/dist/context.d.ts +405 -0
  14. package/dist/context.d.ts.map +1 -0
  15. package/dist/context.js +1455 -0
  16. package/dist/context.js.map +1 -0
  17. package/dist/index.d.ts +18 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +15 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/node-executor.d.ts +53 -0
  22. package/dist/node-executor.d.ts.map +1 -0
  23. package/dist/node-executor.js +9 -0
  24. package/dist/node-executor.js.map +1 -0
  25. package/dist/providers/aki-manifest.json +34 -0
  26. package/dist/providers/aki-provider.d.ts +65 -0
  27. package/dist/providers/aki-provider.d.ts.map +1 -0
  28. package/dist/providers/aki-provider.js +517 -0
  29. package/dist/providers/aki-provider.js.map +1 -0
  30. package/dist/providers/anthropic-provider.d.ts +55 -0
  31. package/dist/providers/anthropic-provider.d.ts.map +1 -0
  32. package/dist/providers/anthropic-provider.js +563 -0
  33. package/dist/providers/anthropic-provider.js.map +1 -0
  34. package/dist/providers/base-provider.d.ts +194 -0
  35. package/dist/providers/base-provider.d.ts.map +1 -0
  36. package/dist/providers/base-provider.js +515 -0
  37. package/dist/providers/base-provider.js.map +1 -0
  38. package/dist/providers/cerebras-provider.d.ts +20 -0
  39. package/dist/providers/cerebras-provider.d.ts.map +1 -0
  40. package/dist/providers/cerebras-provider.js +52 -0
  41. package/dist/providers/cerebras-provider.js.map +1 -0
  42. package/dist/providers/claude-agent-provider.d.ts +107 -0
  43. package/dist/providers/claude-agent-provider.d.ts.map +1 -0
  44. package/dist/providers/claude-agent-provider.js +586 -0
  45. package/dist/providers/claude-agent-provider.js.map +1 -0
  46. package/dist/providers/cohere-provider.d.ts +36 -0
  47. package/dist/providers/cohere-provider.d.ts.map +1 -0
  48. package/dist/providers/cohere-provider.js +116 -0
  49. package/dist/providers/cohere-provider.js.map +1 -0
  50. package/dist/providers/cost-calculator.d.ts +109 -0
  51. package/dist/providers/cost-calculator.d.ts.map +1 -0
  52. package/dist/providers/cost-calculator.js +475 -0
  53. package/dist/providers/cost-calculator.js.map +1 -0
  54. package/dist/providers/deepseek-provider.d.ts +25 -0
  55. package/dist/providers/deepseek-provider.d.ts.map +1 -0
  56. package/dist/providers/deepseek-provider.js +58 -0
  57. package/dist/providers/deepseek-provider.js.map +1 -0
  58. package/dist/providers/fake-provider.d.ts +52 -0
  59. package/dist/providers/fake-provider.d.ts.map +1 -0
  60. package/dist/providers/fake-provider.js +107 -0
  61. package/dist/providers/fake-provider.js.map +1 -0
  62. package/dist/providers/fal-provider.d.ts +32 -0
  63. package/dist/providers/fal-provider.d.ts.map +1 -0
  64. package/dist/providers/fal-provider.js +445 -0
  65. package/dist/providers/fal-provider.js.map +1 -0
  66. package/dist/providers/gemini-provider.d.ts +109 -0
  67. package/dist/providers/gemini-provider.d.ts.map +1 -0
  68. package/dist/providers/gemini-provider.js +943 -0
  69. package/dist/providers/gemini-provider.js.map +1 -0
  70. package/dist/providers/groq-provider.d.ts +20 -0
  71. package/dist/providers/groq-provider.d.ts.map +1 -0
  72. package/dist/providers/groq-provider.js +52 -0
  73. package/dist/providers/groq-provider.js.map +1 -0
  74. package/dist/providers/huggingface-provider.d.ts +59 -0
  75. package/dist/providers/huggingface-provider.d.ts.map +1 -0
  76. package/dist/providers/huggingface-provider.js +305 -0
  77. package/dist/providers/huggingface-provider.js.map +1 -0
  78. package/dist/providers/index.d.ts +69 -0
  79. package/dist/providers/index.d.ts.map +1 -0
  80. package/dist/providers/index.js +137 -0
  81. package/dist/providers/index.js.map +1 -0
  82. package/dist/providers/jina-provider.d.ts +37 -0
  83. package/dist/providers/jina-provider.d.ts.map +1 -0
  84. package/dist/providers/jina-provider.js +118 -0
  85. package/dist/providers/jina-provider.js.map +1 -0
  86. package/dist/providers/kie-provider.d.ts +19 -0
  87. package/dist/providers/kie-provider.d.ts.map +1 -0
  88. package/dist/providers/kie-provider.js +118 -0
  89. package/dist/providers/kie-provider.js.map +1 -0
  90. package/dist/providers/llama-provider.d.ts +49 -0
  91. package/dist/providers/llama-provider.d.ts.map +1 -0
  92. package/dist/providers/llama-provider.js +381 -0
  93. package/dist/providers/llama-provider.js.map +1 -0
  94. package/dist/providers/lmstudio-provider.d.ts +22 -0
  95. package/dist/providers/lmstudio-provider.d.ts.map +1 -0
  96. package/dist/providers/lmstudio-provider.js +63 -0
  97. package/dist/providers/lmstudio-provider.js.map +1 -0
  98. package/dist/providers/manifest-models.d.ts +12 -0
  99. package/dist/providers/manifest-models.d.ts.map +1 -0
  100. package/dist/providers/manifest-models.js +96 -0
  101. package/dist/providers/manifest-models.js.map +1 -0
  102. package/dist/providers/meshy-provider.d.ts +53 -0
  103. package/dist/providers/meshy-provider.d.ts.map +1 -0
  104. package/dist/providers/meshy-provider.js +230 -0
  105. package/dist/providers/meshy-provider.js.map +1 -0
  106. package/dist/providers/minimax-provider.d.ts +66 -0
  107. package/dist/providers/minimax-provider.d.ts.map +1 -0
  108. package/dist/providers/minimax-provider.js +531 -0
  109. package/dist/providers/minimax-provider.js.map +1 -0
  110. package/dist/providers/mistral-provider.d.ts +26 -0
  111. package/dist/providers/mistral-provider.d.ts.map +1 -0
  112. package/dist/providers/mistral-provider.js +74 -0
  113. package/dist/providers/mistral-provider.js.map +1 -0
  114. package/dist/providers/moonshot-provider.d.ts +24 -0
  115. package/dist/providers/moonshot-provider.d.ts.map +1 -0
  116. package/dist/providers/moonshot-provider.js +43 -0
  117. package/dist/providers/moonshot-provider.js.map +1 -0
  118. package/dist/providers/ollama-provider.d.ts +71 -0
  119. package/dist/providers/ollama-provider.d.ts.map +1 -0
  120. package/dist/providers/ollama-provider.js +480 -0
  121. package/dist/providers/ollama-provider.js.map +1 -0
  122. package/dist/providers/openai-provider.d.ts +103 -0
  123. package/dist/providers/openai-provider.d.ts.map +1 -0
  124. package/dist/providers/openai-provider.js +917 -0
  125. package/dist/providers/openai-provider.js.map +1 -0
  126. package/dist/providers/openrouter-provider.d.ts +49 -0
  127. package/dist/providers/openrouter-provider.d.ts.map +1 -0
  128. package/dist/providers/openrouter-provider.js +147 -0
  129. package/dist/providers/openrouter-provider.js.map +1 -0
  130. package/dist/providers/provider-registry.d.ts +24 -0
  131. package/dist/providers/provider-registry.d.ts.map +1 -0
  132. package/dist/providers/provider-registry.js +124 -0
  133. package/dist/providers/provider-registry.js.map +1 -0
  134. package/dist/providers/python-provider.d.ts +75 -0
  135. package/dist/providers/python-provider.d.ts.map +1 -0
  136. package/dist/providers/python-provider.js +157 -0
  137. package/dist/providers/python-provider.js.map +1 -0
  138. package/dist/providers/replicate-provider.d.ts +73 -0
  139. package/dist/providers/replicate-provider.d.ts.map +1 -0
  140. package/dist/providers/replicate-provider.js +484 -0
  141. package/dist/providers/replicate-provider.js.map +1 -0
  142. package/dist/providers/rodin-provider.d.ts +41 -0
  143. package/dist/providers/rodin-provider.d.ts.map +1 -0
  144. package/dist/providers/rodin-provider.js +236 -0
  145. package/dist/providers/rodin-provider.js.map +1 -0
  146. package/dist/providers/scripted-provider.d.ts +141 -0
  147. package/dist/providers/scripted-provider.d.ts.map +1 -0
  148. package/dist/providers/scripted-provider.js +246 -0
  149. package/dist/providers/scripted-provider.js.map +1 -0
  150. package/dist/providers/together-provider.d.ts +20 -0
  151. package/dist/providers/together-provider.d.ts.map +1 -0
  152. package/dist/providers/together-provider.js +56 -0
  153. package/dist/providers/together-provider.js.map +1 -0
  154. package/dist/providers/types.d.ts +202 -0
  155. package/dist/providers/types.d.ts.map +1 -0
  156. package/dist/providers/types.js +2 -0
  157. package/dist/providers/types.js.map +1 -0
  158. package/dist/providers/vllm-provider.d.ts +22 -0
  159. package/dist/providers/vllm-provider.d.ts.map +1 -0
  160. package/dist/providers/vllm-provider.js +66 -0
  161. package/dist/providers/vllm-provider.js.map +1 -0
  162. package/dist/providers/voyage-provider.d.ts +37 -0
  163. package/dist/providers/voyage-provider.d.ts.map +1 -0
  164. package/dist/providers/voyage-provider.js +124 -0
  165. package/dist/providers/voyage-provider.js.map +1 -0
  166. package/dist/providers/xai-provider.d.ts +24 -0
  167. package/dist/providers/xai-provider.d.ts.map +1 -0
  168. package/dist/providers/xai-provider.js +57 -0
  169. package/dist/providers/xai-provider.js.map +1 -0
  170. package/dist/python-bridge-types.d.ts +70 -0
  171. package/dist/python-bridge-types.d.ts.map +1 -0
  172. package/dist/python-bridge-types.js +2 -0
  173. package/dist/python-bridge-types.js.map +1 -0
  174. package/dist/python-node-executor.d.ts +20 -0
  175. package/dist/python-node-executor.d.ts.map +1 -0
  176. package/dist/python-node-executor.js +219 -0
  177. package/dist/python-node-executor.js.map +1 -0
  178. package/dist/python-stdio-bridge.d.ts +67 -0
  179. package/dist/python-stdio-bridge.d.ts.map +1 -0
  180. package/dist/python-stdio-bridge.js +704 -0
  181. package/dist/python-stdio-bridge.js.map +1 -0
  182. package/dist/recommended-models.d.ts +17 -0
  183. package/dist/recommended-models.d.ts.map +1 -0
  184. package/dist/recommended-models.js +139 -0
  185. package/dist/recommended-models.js.map +1 -0
  186. package/dist/telemetry.d.ts +61 -0
  187. package/dist/telemetry.d.ts.map +1 -0
  188. package/dist/telemetry.js +128 -0
  189. package/dist/telemetry.js.map +1 -0
  190. package/dist/trace-exporters.d.ts +72 -0
  191. package/dist/trace-exporters.d.ts.map +1 -0
  192. package/dist/trace-exporters.js +216 -0
  193. package/dist/trace-exporters.js.map +1 -0
  194. package/dist/tracing-helpers.d.ts +99 -0
  195. package/dist/tracing-helpers.d.ts.map +1 -0
  196. package/dist/tracing-helpers.js +217 -0
  197. package/dist/tracing-helpers.js.map +1 -0
  198. package/package.json +64 -0
@@ -0,0 +1,531 @@
1
+ /**
2
+ * MiniMax provider — exposes MiniMax's full multimodal stack through the
3
+ * standard BaseProvider interface.
4
+ *
5
+ * Chat inherits the OpenAI-compatible path (MiniMax-M2.x models), while image,
6
+ * video, and speech generation go through MiniMax's own REST endpoints. Video
7
+ * uses the async task + File API download pattern.
8
+ *
9
+ * Docs: https://platform.minimax.io/docs/api-reference/api-overview
10
+ */
11
+ import OpenAI from "openai";
12
+ import { OpenAIProvider } from "./openai-provider.js";
13
+ import { createLogger } from "@nodetool-ai/config";
14
+ const log = createLogger("nodetool.runtime.providers.minimax");
15
+ const MINIMAX_BASE_URL = "https://api.minimax.io";
16
+ const MINIMAX_OPENAI_BASE_URL = `${MINIMAX_BASE_URL}/v1`;
17
+ /**
18
+ * Known voice IDs shipped with MiniMax speech models. This is a curated subset
19
+ * of the 300+ system voices — sufficient for UI voice pickers. Users can still
20
+ * pass any MiniMax voice_id (including cloned voices) through the API.
21
+ */
22
+ const MINIMAX_VOICES = [
23
+ "English_Trustworth_Man",
24
+ "English_CalmWoman",
25
+ "English_UpsetGirl",
26
+ "English_Gentle-voiced_man",
27
+ "English_Whispering_girl_v3",
28
+ "English_Diligent_Man",
29
+ "English_Graceful_Lady",
30
+ "English_ReservedYoungMan",
31
+ "English_PlayfulGirl",
32
+ "English_ManWithDeepVoice",
33
+ "English_GentleTeacher",
34
+ "English_MaturePartner",
35
+ "English_FriendlyPerson",
36
+ "English_MatureBoss",
37
+ "English_Debator",
38
+ "English_LovelyGirl",
39
+ "English_Steadymentor",
40
+ "English_Deep-VoicedGentleman",
41
+ "English_DecentYoungMan",
42
+ "English_SentimentalLady",
43
+ "English_ImposingManner",
44
+ "English_SadTeen",
45
+ "English_Wiselady",
46
+ "English_CaptivatingStoryteller",
47
+ "English_AttractiveGirl",
48
+ "English_DescendPriest",
49
+ "English_ConfidentWoman",
50
+ "English_CuteElf",
51
+ "English_radiant_girl",
52
+ "English_Insightful_Speaker",
53
+ "Chinese (Mandarin)_Warm_Bestie",
54
+ "Chinese (Mandarin)_Gentleman",
55
+ "Chinese (Mandarin)_Kind-hearted_Antie",
56
+ "Chinese (Mandarin)_Lyrical_Voice",
57
+ "Chinese (Mandarin)_Straightforward_Boy",
58
+ "Chinese (Mandarin)_Stubborn_Friend",
59
+ "Chinese (Mandarin)_Sweet_Girl_2",
60
+ "Chinese (Mandarin)_Gentle_Youth",
61
+ "Chinese (Mandarin)_Warm_Girl",
62
+ "Chinese (Mandarin)_Male_Announcer"
63
+ ];
64
+ const SUPPORTED_IMAGE_ASPECTS = [
65
+ "1:1",
66
+ "16:9",
67
+ "4:3",
68
+ "3:2",
69
+ "2:3",
70
+ "3:4",
71
+ "9:16",
72
+ "21:9"
73
+ ];
74
+ function chooseAspectRatio(width, height) {
75
+ if (!width || !height || width <= 0 || height <= 0)
76
+ return null;
77
+ const target = width / height;
78
+ let best = null;
79
+ let bestDiff = Number.POSITIVE_INFINITY;
80
+ for (const aspect of SUPPORTED_IMAGE_ASPECTS) {
81
+ const [a, b] = aspect.split(":").map(Number);
82
+ if (!a || !b)
83
+ continue;
84
+ const diff = Math.abs(a / b - target);
85
+ if (diff < bestDiff) {
86
+ bestDiff = diff;
87
+ best = aspect;
88
+ }
89
+ }
90
+ return best;
91
+ }
92
+ function b64(data) {
93
+ return Buffer.from(data).toString("base64");
94
+ }
95
+ function hexToUint8(hex) {
96
+ const clean = hex.startsWith("0x") ? hex.slice(2) : hex;
97
+ const len = Math.floor(clean.length / 2);
98
+ const out = new Uint8Array(len);
99
+ for (let i = 0; i < len; i++) {
100
+ out[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
101
+ }
102
+ return out;
103
+ }
104
+ function toInt16Samples(bytes) {
105
+ const aligned = bytes.length % 2 === 0 ? bytes : bytes.slice(0, bytes.length - 1);
106
+ return new Int16Array(aligned.buffer, aligned.byteOffset, aligned.byteLength / 2);
107
+ }
108
+ /** MiniMax embeds a `base_resp` on most responses; surface failures as errors. */
109
+ function assertBaseResp(data, context) {
110
+ const baseResp = data.base_resp;
111
+ if (baseResp && baseResp.status_code && baseResp.status_code !== 0) {
112
+ throw new Error(`MiniMax ${context} failed: ${baseResp.status_msg ?? "unknown error"} (code ${baseResp.status_code})`);
113
+ }
114
+ }
115
+ export class MinimaxProvider extends OpenAIProvider {
116
+ static requiredSecrets() {
117
+ return ["MINIMAX_API_KEY"];
118
+ }
119
+ _minimaxFetch;
120
+ constructor(secrets, options = {}) {
121
+ const apiKey = secrets.MINIMAX_API_KEY;
122
+ if (!apiKey) {
123
+ throw new Error("MINIMAX_API_KEY is required");
124
+ }
125
+ const fetchFn = options.fetchFn ?? globalThis.fetch.bind(globalThis);
126
+ super({ OPENAI_API_KEY: apiKey }, {
127
+ client: options.client,
128
+ clientFactory: options.clientFactory ??
129
+ ((key) => new OpenAI({
130
+ apiKey: key,
131
+ baseURL: MINIMAX_OPENAI_BASE_URL
132
+ })),
133
+ fetchFn
134
+ });
135
+ this.provider = "minimax";
136
+ this._minimaxFetch = fetchFn;
137
+ }
138
+ getContainerEnv() {
139
+ return { MINIMAX_API_KEY: this.apiKey };
140
+ }
141
+ async hasToolSupport(_model) {
142
+ return true;
143
+ }
144
+ headers() {
145
+ return {
146
+ Authorization: `Bearer ${this.apiKey}`,
147
+ "Content-Type": "application/json"
148
+ };
149
+ }
150
+ // ---------------------------------------------------------------------------
151
+ // Model catalogues
152
+ // ---------------------------------------------------------------------------
153
+ async getAvailableLanguageModels() {
154
+ return [
155
+ { id: "MiniMax-M2.7", name: "MiniMax M2.7", provider: "minimax" },
156
+ {
157
+ id: "MiniMax-M2.7-highspeed",
158
+ name: "MiniMax M2.7 Highspeed",
159
+ provider: "minimax"
160
+ },
161
+ { id: "MiniMax-M2.5", name: "MiniMax M2.5", provider: "minimax" },
162
+ {
163
+ id: "MiniMax-M2.5-highspeed",
164
+ name: "MiniMax M2.5 Highspeed",
165
+ provider: "minimax"
166
+ },
167
+ { id: "MiniMax-M2.1", name: "MiniMax M2.1", provider: "minimax" },
168
+ {
169
+ id: "MiniMax-M2.1-highspeed",
170
+ name: "MiniMax M2.1 Highspeed",
171
+ provider: "minimax"
172
+ },
173
+ { id: "MiniMax-M2", name: "MiniMax M2", provider: "minimax" }
174
+ ];
175
+ }
176
+ async getAvailableImageModels() {
177
+ return [
178
+ {
179
+ id: "image-01",
180
+ name: "MiniMax Image-01",
181
+ provider: "minimax",
182
+ supportedTasks: ["text_to_image", "image_to_image"]
183
+ }
184
+ ];
185
+ }
186
+ async getAvailableVideoModels() {
187
+ const both = ["text_to_video", "image_to_video"];
188
+ return [
189
+ {
190
+ id: "MiniMax-Hailuo-2.3",
191
+ name: "MiniMax Hailuo 2.3",
192
+ provider: "minimax",
193
+ supportedTasks: both
194
+ },
195
+ {
196
+ id: "MiniMax-Hailuo-2.3-Fast",
197
+ name: "MiniMax Hailuo 2.3 Fast",
198
+ provider: "minimax",
199
+ supportedTasks: both
200
+ },
201
+ {
202
+ id: "MiniMax-Hailuo-02",
203
+ name: "MiniMax Hailuo 02",
204
+ provider: "minimax",
205
+ supportedTasks: both
206
+ },
207
+ {
208
+ id: "T2V-01-Director",
209
+ name: "MiniMax Video-01 Director",
210
+ provider: "minimax",
211
+ supportedTasks: ["text_to_video"]
212
+ },
213
+ {
214
+ id: "I2V-01-Director",
215
+ name: "MiniMax Video-01 Director (I2V)",
216
+ provider: "minimax",
217
+ supportedTasks: ["image_to_video"]
218
+ },
219
+ {
220
+ id: "S2V-01",
221
+ name: "MiniMax Video-01 Subject",
222
+ provider: "minimax",
223
+ supportedTasks: ["image_to_video"]
224
+ }
225
+ ];
226
+ }
227
+ async getAvailableTTSModels() {
228
+ return [
229
+ {
230
+ id: "speech-2.8-hd",
231
+ name: "MiniMax Speech 2.8 HD",
232
+ provider: "minimax",
233
+ voices: MINIMAX_VOICES
234
+ },
235
+ {
236
+ id: "speech-2.8-turbo",
237
+ name: "MiniMax Speech 2.8 Turbo",
238
+ provider: "minimax",
239
+ voices: MINIMAX_VOICES
240
+ },
241
+ {
242
+ id: "speech-2.6-hd",
243
+ name: "MiniMax Speech 2.6 HD",
244
+ provider: "minimax",
245
+ voices: MINIMAX_VOICES
246
+ },
247
+ {
248
+ id: "speech-2.6-turbo",
249
+ name: "MiniMax Speech 2.6 Turbo",
250
+ provider: "minimax",
251
+ voices: MINIMAX_VOICES
252
+ },
253
+ {
254
+ id: "speech-02-hd",
255
+ name: "MiniMax Speech 02 HD",
256
+ provider: "minimax",
257
+ voices: MINIMAX_VOICES
258
+ },
259
+ {
260
+ id: "speech-02-turbo",
261
+ name: "MiniMax Speech 02 Turbo",
262
+ provider: "minimax",
263
+ voices: MINIMAX_VOICES
264
+ }
265
+ ];
266
+ }
267
+ /** MiniMax does not expose a public ASR endpoint we support here. */
268
+ async getAvailableASRModels() {
269
+ return [];
270
+ }
271
+ /** Embeddings require a MiniMax GroupId we don't manage; leave disabled. */
272
+ async getAvailableEmbeddingModels() {
273
+ return [];
274
+ }
275
+ async automaticSpeechRecognition(_args) {
276
+ throw new Error("minimax does not support automaticSpeechRecognition");
277
+ }
278
+ async generateEmbedding(_args) {
279
+ throw new Error("minimax does not support generateEmbedding");
280
+ }
281
+ // ---------------------------------------------------------------------------
282
+ // Image generation — POST /v1/image_generation
283
+ // ---------------------------------------------------------------------------
284
+ async textToImage(params) {
285
+ const images = await this._generateImages(params, null, 1);
286
+ return images[0];
287
+ }
288
+ async textToImages(params, numImages) {
289
+ return this._generateImages(params, null, numImages);
290
+ }
291
+ async imageToImage(image, params) {
292
+ const [first] = await this._generateImages(this._imageToImageAsTextParams(params), image, 1);
293
+ return first;
294
+ }
295
+ async imageToImages(image, params, numImages) {
296
+ return this._generateImages(this._imageToImageAsTextParams(params), image, numImages);
297
+ }
298
+ _imageToImageAsTextParams(params) {
299
+ return {
300
+ model: params.model,
301
+ prompt: params.prompt,
302
+ negativePrompt: params.negativePrompt,
303
+ width: params.targetWidth ?? undefined,
304
+ height: params.targetHeight ?? undefined,
305
+ quality: params.quality,
306
+ guidanceScale: params.guidanceScale,
307
+ numInferenceSteps: params.numInferenceSteps,
308
+ seed: params.seed,
309
+ scheduler: params.scheduler
310
+ };
311
+ }
312
+ async _generateImages(params, referenceImage, numImages) {
313
+ if (!params.prompt) {
314
+ throw new Error("The input prompt cannot be empty.");
315
+ }
316
+ const prompt = params.negativePrompt
317
+ ? `${params.prompt.trim()}\n\nDo not include: ${params.negativePrompt.trim()}`
318
+ : params.prompt;
319
+ const body = {
320
+ model: params.model.id || "image-01",
321
+ prompt,
322
+ n: Math.max(1, Math.min(9, numImages)),
323
+ response_format: "base64",
324
+ prompt_optimizer: true
325
+ };
326
+ const aspect = chooseAspectRatio(params.width ?? undefined, params.height ?? undefined);
327
+ if (aspect)
328
+ body.aspect_ratio = aspect;
329
+ if (params.seed != null)
330
+ body.seed = params.seed;
331
+ if (referenceImage) {
332
+ body.subject_reference = [
333
+ {
334
+ type: "character",
335
+ image_file: `data:image/png;base64,${b64(referenceImage)}`
336
+ }
337
+ ];
338
+ }
339
+ log.debug("MiniMax textToImage", { model: body.model, n: body.n });
340
+ const res = await this._minimaxFetch(`${MINIMAX_BASE_URL}/v1/image_generation`, {
341
+ method: "POST",
342
+ headers: this.headers(),
343
+ body: JSON.stringify(body)
344
+ });
345
+ if (!res.ok) {
346
+ throw new Error(`MiniMax image_generation failed: ${res.status} ${await res.text()}`);
347
+ }
348
+ const data = (await res.json());
349
+ assertBaseResp(data, "image_generation");
350
+ const payload = data.data;
351
+ const b64List = payload?.image_base64;
352
+ if (b64List && b64List.length > 0) {
353
+ return b64List.map((encoded) => new Uint8Array(Buffer.from(encoded, "base64")));
354
+ }
355
+ const urls = payload?.image_urls;
356
+ if (urls && urls.length > 0) {
357
+ const results = [];
358
+ for (const url of urls) {
359
+ const dl = await this._minimaxFetch(url);
360
+ if (!dl.ok) {
361
+ throw new Error(`Failed to download MiniMax image from ${url}`);
362
+ }
363
+ results.push(new Uint8Array(await dl.arrayBuffer()));
364
+ }
365
+ return results;
366
+ }
367
+ throw new Error("MiniMax image_generation returned no image data");
368
+ }
369
+ // ---------------------------------------------------------------------------
370
+ // Video generation — POST /v1/video_generation + async polling
371
+ // ---------------------------------------------------------------------------
372
+ async textToVideo(params) {
373
+ return this._generateVideo(params.model.id, {
374
+ prompt: params.prompt,
375
+ durationSeconds: params.durationSeconds,
376
+ resolution: params.resolution
377
+ });
378
+ }
379
+ async imageToVideo(image, params) {
380
+ return this._generateVideo(params.model.id, {
381
+ prompt: params.prompt ?? undefined,
382
+ durationSeconds: params.durationSeconds,
383
+ resolution: params.resolution,
384
+ firstFrame: image
385
+ });
386
+ }
387
+ async _generateVideo(modelId, opts) {
388
+ const body = { model: modelId };
389
+ if (opts.prompt)
390
+ body.prompt = opts.prompt;
391
+ if (opts.durationSeconds) {
392
+ body.duration = opts.durationSeconds >= 9 ? 10 : 6;
393
+ }
394
+ if (opts.resolution) {
395
+ const r = opts.resolution.toLowerCase();
396
+ if (r.includes("1080"))
397
+ body.resolution = "1080P";
398
+ else if (r.includes("768") || r.includes("720"))
399
+ body.resolution = "768P";
400
+ else if (r.includes("512"))
401
+ body.resolution = "512P";
402
+ }
403
+ if (opts.firstFrame) {
404
+ body.first_frame_image = `data:image/png;base64,${b64(opts.firstFrame)}`;
405
+ }
406
+ log.debug("MiniMax textToVideo submit", { model: modelId });
407
+ const submit = await this._minimaxFetch(`${MINIMAX_BASE_URL}/v1/video_generation`, {
408
+ method: "POST",
409
+ headers: this.headers(),
410
+ body: JSON.stringify(body)
411
+ });
412
+ if (!submit.ok) {
413
+ throw new Error(`MiniMax video_generation submit failed: ${submit.status} ${await submit.text()}`);
414
+ }
415
+ const submitData = (await submit.json());
416
+ assertBaseResp(submitData, "video_generation submit");
417
+ const taskId = submitData.task_id;
418
+ if (!taskId) {
419
+ throw new Error(`MiniMax video_generation returned no task_id: ${JSON.stringify(submitData)}`);
420
+ }
421
+ const fileId = await this._pollVideoTask(taskId);
422
+ return this._downloadFile(fileId);
423
+ }
424
+ async _pollVideoTask(taskId, pollIntervalMs = 5000, maxAttempts = 360) {
425
+ const url = `${MINIMAX_BASE_URL}/v1/query/video_generation?task_id=${encodeURIComponent(taskId)}`;
426
+ for (let i = 0; i < maxAttempts; i++) {
427
+ const res = await this._minimaxFetch(url, { headers: this.headers() });
428
+ if (!res.ok) {
429
+ throw new Error(`MiniMax video status failed: ${res.status} ${await res.text()}`);
430
+ }
431
+ const data = (await res.json());
432
+ const status = String(data.status ?? "").toLowerCase();
433
+ if (status === "success") {
434
+ const fileId = data.file_id;
435
+ if (!fileId) {
436
+ throw new Error("MiniMax video task succeeded but returned no file_id");
437
+ }
438
+ return fileId;
439
+ }
440
+ if (status === "fail" || status === "failed") {
441
+ throw new Error(`MiniMax video task failed: ${JSON.stringify(data.base_resp ?? data)}`);
442
+ }
443
+ await new Promise((r) => setTimeout(r, pollIntervalMs));
444
+ }
445
+ throw new Error(`MiniMax video task timed out after ${maxAttempts * pollIntervalMs}ms`);
446
+ }
447
+ async _downloadFile(fileId) {
448
+ const url = `${MINIMAX_BASE_URL}/v1/files/retrieve?file_id=${encodeURIComponent(fileId)}`;
449
+ const res = await this._minimaxFetch(url, { headers: this.headers() });
450
+ if (!res.ok) {
451
+ throw new Error(`MiniMax files/retrieve failed: ${res.status} ${await res.text()}`);
452
+ }
453
+ const data = (await res.json());
454
+ assertBaseResp(data, "files/retrieve");
455
+ const file = data.file;
456
+ const downloadUrl = (file?.download_url ?? file?.downloadURL);
457
+ if (!downloadUrl) {
458
+ throw new Error(`MiniMax files/retrieve returned no download_url: ${JSON.stringify(data)}`);
459
+ }
460
+ const dl = await this._minimaxFetch(downloadUrl);
461
+ if (!dl.ok) {
462
+ throw new Error(`Failed to download MiniMax file from ${downloadUrl}`);
463
+ }
464
+ return new Uint8Array(await dl.arrayBuffer());
465
+ }
466
+ // ---------------------------------------------------------------------------
467
+ // Text-to-Speech — POST /v1/t2a_v2
468
+ // ---------------------------------------------------------------------------
469
+ async textToSpeechEncoded(args) {
470
+ if (!args.text) {
471
+ throw new Error("text must not be empty");
472
+ }
473
+ const fmt = (args.audioFormat ?? "mp3").toLowerCase();
474
+ const formatToMime = {
475
+ mp3: "audio/mpeg",
476
+ wav: "audio/wav",
477
+ flac: "audio/flac",
478
+ pcm: "audio/pcm"
479
+ };
480
+ if (!(fmt in formatToMime) || fmt === "pcm") {
481
+ // Defer to streaming PCM path for raw samples / unknown formats
482
+ return null;
483
+ }
484
+ const bytes = await this._synthesize(args, fmt);
485
+ return { data: bytes, mimeType: formatToMime[fmt] };
486
+ }
487
+ async *textToSpeech(args) {
488
+ if (!args.text) {
489
+ throw new Error("text must not be empty");
490
+ }
491
+ const bytes = await this._synthesize(args, "pcm");
492
+ yield { samples: toInt16Samples(bytes), sampleRate: 32000 };
493
+ }
494
+ async _synthesize(args, format) {
495
+ const body = {
496
+ model: args.model || "speech-2.6-hd",
497
+ text: args.text,
498
+ stream: false,
499
+ voice_setting: {
500
+ voice_id: args.voice ?? "English_Trustworth_Man",
501
+ speed: Math.max(0.5, Math.min(2.0, args.speed ?? 1.0)),
502
+ vol: 1.0,
503
+ pitch: 0
504
+ },
505
+ audio_setting: {
506
+ sample_rate: 32000,
507
+ bitrate: 128000,
508
+ format,
509
+ channel: 1
510
+ }
511
+ };
512
+ log.debug("MiniMax textToSpeech", { model: body.model, format });
513
+ const res = await this._minimaxFetch(`${MINIMAX_BASE_URL}/v1/t2a_v2`, {
514
+ method: "POST",
515
+ headers: this.headers(),
516
+ body: JSON.stringify(body)
517
+ });
518
+ if (!res.ok) {
519
+ throw new Error(`MiniMax t2a_v2 failed: ${res.status} ${await res.text()}`);
520
+ }
521
+ const data = (await res.json());
522
+ assertBaseResp(data, "t2a_v2");
523
+ const payload = data.data;
524
+ const audioHex = payload?.audio;
525
+ if (!audioHex) {
526
+ throw new Error(`MiniMax t2a_v2 returned no audio data: ${JSON.stringify(data)}`);
527
+ }
528
+ return hexToUint8(audioHex);
529
+ }
530
+ }
531
+ //# sourceMappingURL=minimax-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimax-provider.js","sourceRoot":"","sources":["../../src/providers/minimax-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import OpenAI from "openai";
2
+ import { OpenAIProvider } from "./openai-provider.js";
3
+ import type { EmbeddingModel, LanguageModel } from "./types.js";
4
+ interface MistralProviderOptions {
5
+ client?: OpenAI;
6
+ clientFactory?: (apiKey: string) => OpenAI;
7
+ fetchFn?: typeof fetch;
8
+ }
9
+ export declare class MistralProvider extends OpenAIProvider {
10
+ static requiredSecrets(): string[];
11
+ private _mistralFetch;
12
+ constructor(secrets: {
13
+ MISTRAL_API_KEY?: string;
14
+ }, options?: MistralProviderOptions);
15
+ getContainerEnv(): Record<string, string>;
16
+ hasToolSupport(_model: string): Promise<boolean>;
17
+ getAvailableLanguageModels(): Promise<LanguageModel[]>;
18
+ getAvailableEmbeddingModels(): Promise<EmbeddingModel[]>;
19
+ generateEmbedding(args: {
20
+ text: string | string[];
21
+ model: string;
22
+ dimensions?: number;
23
+ }): Promise<number[][]>;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=mistral-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mistral-provider.d.ts","sourceRoot":"","sources":["../../src/providers/mistral-provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,qBAAa,eAAgB,SAAQ,cAAc;WACjC,eAAe,IAAI,MAAM,EAAE;IAI3C,OAAO,CAAC,aAAa,CAAe;gBAGlC,OAAO,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,EACrC,OAAO,GAAE,sBAA2B;IA4B7B,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAInC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD,0BAA0B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA8BtD,2BAA2B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAWxD,iBAAiB,CAAC,IAAI,EAAE;QACrC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAcxB"}
@@ -0,0 +1,74 @@
1
+ import OpenAI from "openai";
2
+ import { OpenAIProvider } from "./openai-provider.js";
3
+ export class MistralProvider extends OpenAIProvider {
4
+ static requiredSecrets() {
5
+ return ["MISTRAL_API_KEY"];
6
+ }
7
+ _mistralFetch;
8
+ constructor(secrets, options = {}) {
9
+ const apiKey = secrets.MISTRAL_API_KEY;
10
+ if (!apiKey) {
11
+ throw new Error("MISTRAL_API_KEY is required");
12
+ }
13
+ const fetchFn = options.fetchFn ?? globalThis.fetch.bind(globalThis);
14
+ super({ OPENAI_API_KEY: apiKey }, {
15
+ client: options.client,
16
+ clientFactory: options.clientFactory ??
17
+ ((key) => new OpenAI({
18
+ apiKey: key,
19
+ baseURL: "https://api.mistral.ai/v1"
20
+ })),
21
+ fetchFn
22
+ });
23
+ this.provider = "mistral";
24
+ this._mistralFetch = fetchFn;
25
+ }
26
+ getContainerEnv() {
27
+ return { MISTRAL_API_KEY: this.apiKey };
28
+ }
29
+ async hasToolSupport(_model) {
30
+ return true;
31
+ }
32
+ async getAvailableLanguageModels() {
33
+ const response = await this._mistralFetch("https://api.mistral.ai/v1/models", {
34
+ headers: {
35
+ Authorization: `Bearer ${this.apiKey}`
36
+ }
37
+ });
38
+ if (!response.ok) {
39
+ return [];
40
+ }
41
+ const payload = (await response.json());
42
+ const rows = payload.data ?? [];
43
+ return rows
44
+ .filter((row) => typeof row.id === "string" && row.id.length > 0)
45
+ .map((row) => ({
46
+ id: row.id,
47
+ name: row.name ?? row.id,
48
+ provider: "mistral"
49
+ }));
50
+ }
51
+ async getAvailableEmbeddingModels() {
52
+ return [
53
+ {
54
+ id: "mistral-embed",
55
+ name: "Mistral Embed",
56
+ provider: "mistral",
57
+ dimensions: 1024
58
+ }
59
+ ];
60
+ }
61
+ async generateEmbedding(args) {
62
+ const input = Array.isArray(args.text) ? args.text : [args.text];
63
+ if (input.length === 0 || input.every((v) => !v)) {
64
+ throw new Error("text must not be empty");
65
+ }
66
+ const model = args.model || "mistral-embed";
67
+ const response = await this.getClient().embeddings.create({
68
+ model,
69
+ input
70
+ });
71
+ return response.data.map((row) => row.embedding);
72
+ }
73
+ }
74
+ //# sourceMappingURL=mistral-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mistral-provider.js","sourceRoot":"","sources":["../../src/providers/mistral-provider.ts"],"names":[],"mappings":"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"}