@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,484 @@
1
+ import Replicate from "replicate";
2
+ import { createLogger } from "@nodetool-ai/config";
3
+ import { BaseProvider } from "./base-provider.js";
4
+ import { loadImageModels, loadVideoModels } from "./manifest-models.js";
5
+ const log = createLogger("nodetool.runtime.providers.replicate");
6
+ /**
7
+ * Provider for Replicate's LLM, image, video, and audio models.
8
+ *
9
+ * Uses the official Replicate TypeScript SDK (`replicate` package).
10
+ * - Chat / LLM: `replicate.run()` and `replicate.stream()` with SSE
11
+ * - Image / Video / TTS: `replicate.run()` with file output
12
+ */
13
+ export class ReplicateProvider extends BaseProvider {
14
+ static requiredSecrets() {
15
+ return ["REPLICATE_API_TOKEN"];
16
+ }
17
+ apiKey;
18
+ _client;
19
+ constructor(secrets, options = {}) {
20
+ super("replicate");
21
+ const apiKey = secrets.REPLICATE_API_TOKEN;
22
+ if (!apiKey) {
23
+ throw new Error("REPLICATE_API_TOKEN is required");
24
+ }
25
+ this.apiKey = apiKey;
26
+ this._client =
27
+ options.client ??
28
+ new Replicate({
29
+ auth: apiKey,
30
+ ...(options.fetchFn ? { fetch: options.fetchFn } : {})
31
+ });
32
+ }
33
+ getContainerEnv() {
34
+ return { REPLICATE_API_TOKEN: this.apiKey };
35
+ }
36
+ async hasToolSupport(_model) {
37
+ // Replicate predictions API does not support OpenAI-style tool calling
38
+ return false;
39
+ }
40
+ // ---------------------------------------------------------------------------
41
+ // Chat completions via Replicate SDK
42
+ // ---------------------------------------------------------------------------
43
+ /**
44
+ * Convert our Message[] into the prompt/system_prompt format
45
+ * that most Replicate LLMs expect.
46
+ */
47
+ _formatChatInput(messages, maxTokens) {
48
+ let systemPrompt = "";
49
+ const parts = [];
50
+ for (const msg of messages) {
51
+ const text = typeof msg.content === "string"
52
+ ? msg.content
53
+ : Array.isArray(msg.content)
54
+ ? msg.content
55
+ .filter((c) => c.type === "text")
56
+ .map((c) => c.text)
57
+ .join("\n")
58
+ : "";
59
+ if (msg.role === "system") {
60
+ systemPrompt += (systemPrompt ? "\n" : "") + text;
61
+ }
62
+ else if (msg.role === "user" || msg.role === "assistant") {
63
+ parts.push(text);
64
+ }
65
+ }
66
+ const input = {
67
+ prompt: parts.join("\n")
68
+ };
69
+ if (systemPrompt)
70
+ input.system_prompt = systemPrompt;
71
+ if (maxTokens != null)
72
+ input.max_tokens = maxTokens;
73
+ return input;
74
+ }
75
+ async generateMessage(args) {
76
+ const input = this._formatChatInput(args.messages, args.maxTokens);
77
+ if (args.temperature != null)
78
+ input.temperature = args.temperature;
79
+ if (args.topP != null)
80
+ input.top_p = args.topP;
81
+ log.debug("generateMessage", { model: args.model });
82
+ const output = await this._client.run(args.model, {
83
+ input
84
+ });
85
+ // Replicate LLMs return output as a string, array of token strings,
86
+ // or a ReadableStream/FileOutput.
87
+ let text;
88
+ if (typeof output === "string") {
89
+ text = output;
90
+ }
91
+ else if (Array.isArray(output)) {
92
+ text = output.join("");
93
+ }
94
+ else {
95
+ text = String(output ?? "");
96
+ }
97
+ return { role: "assistant", content: text };
98
+ }
99
+ async *generateMessages(args) {
100
+ const input = this._formatChatInput(args.messages, args.maxTokens);
101
+ if (args.temperature != null)
102
+ input.temperature = args.temperature;
103
+ if (args.topP != null)
104
+ input.top_p = args.topP;
105
+ log.debug("generateMessages (streaming)", { model: args.model });
106
+ const stream = this._client.stream(args.model, {
107
+ input
108
+ });
109
+ for await (const event of stream) {
110
+ if (event.event === "output") {
111
+ yield {
112
+ type: "chunk",
113
+ content: String(event.data),
114
+ done: false,
115
+ content_type: "text"
116
+ };
117
+ }
118
+ else if (event.event === "error") {
119
+ throw new Error(`Replicate stream error: ${String(event.data)}`);
120
+ }
121
+ else if (event.event === "done") {
122
+ yield {
123
+ type: "chunk",
124
+ content: "",
125
+ done: true,
126
+ content_type: "text"
127
+ };
128
+ return;
129
+ }
130
+ }
131
+ // End of stream without explicit done event
132
+ yield {
133
+ type: "chunk",
134
+ content: "",
135
+ done: true,
136
+ content_type: "text"
137
+ };
138
+ }
139
+ // ---------------------------------------------------------------------------
140
+ // Available models
141
+ // ---------------------------------------------------------------------------
142
+ async getAvailableLanguageModels() {
143
+ return [
144
+ {
145
+ id: "meta/meta-llama-3-8b-instruct",
146
+ name: "Llama 3 8B Instruct",
147
+ provider: "replicate"
148
+ },
149
+ {
150
+ id: "meta/meta-llama-3-70b-instruct",
151
+ name: "Llama 3 70B Instruct",
152
+ provider: "replicate"
153
+ },
154
+ {
155
+ id: "meta/meta-llama-3.1-405b-instruct",
156
+ name: "Llama 3.1 405B Instruct",
157
+ provider: "replicate"
158
+ },
159
+ {
160
+ id: "deepseek-ai/deepseek-r1",
161
+ name: "DeepSeek R1",
162
+ provider: "replicate"
163
+ },
164
+ {
165
+ id: "deepseek-ai/deepseek-v3",
166
+ name: "DeepSeek V3",
167
+ provider: "replicate"
168
+ },
169
+ {
170
+ id: "deepseek-ai/deepseek-v3.1",
171
+ name: "DeepSeek V3.1",
172
+ provider: "replicate"
173
+ },
174
+ {
175
+ id: "google/gemini-2.5-flash",
176
+ name: "Gemini 2.5 Flash",
177
+ provider: "replicate"
178
+ },
179
+ {
180
+ id: "google/gemini-3-pro",
181
+ name: "Gemini 3 Pro",
182
+ provider: "replicate"
183
+ },
184
+ {
185
+ id: "google/gemini-3.1-pro",
186
+ name: "Gemini 3.1 Pro",
187
+ provider: "replicate"
188
+ },
189
+ {
190
+ id: "anthropic/claude-3.7-sonnet",
191
+ name: "Claude 3.7 Sonnet",
192
+ provider: "replicate"
193
+ },
194
+ {
195
+ id: "anthropic/claude-4-sonnet",
196
+ name: "Claude 4 Sonnet",
197
+ provider: "replicate"
198
+ },
199
+ {
200
+ id: "anthropic/claude-4.5-sonnet",
201
+ name: "Claude 4.5 Sonnet",
202
+ provider: "replicate"
203
+ },
204
+ {
205
+ id: "anthropic/claude-4.5-haiku",
206
+ name: "Claude 4.5 Haiku",
207
+ provider: "replicate"
208
+ },
209
+ {
210
+ id: "anthropic/claude-opus-4.6",
211
+ name: "Claude Opus 4.6",
212
+ provider: "replicate"
213
+ },
214
+ { id: "openai/gpt-4o", name: "GPT-4o", provider: "replicate" },
215
+ { id: "openai/gpt-4o-mini", name: "GPT-4o Mini", provider: "replicate" },
216
+ { id: "openai/gpt-4.1", name: "GPT-4.1", provider: "replicate" },
217
+ {
218
+ id: "openai/gpt-4.1-mini",
219
+ name: "GPT-4.1 Mini",
220
+ provider: "replicate"
221
+ },
222
+ { id: "openai/gpt-5", name: "GPT-5", provider: "replicate" },
223
+ { id: "openai/gpt-5-mini", name: "GPT-5 Mini", provider: "replicate" },
224
+ { id: "openai/gpt-5.2", name: "GPT-5.2", provider: "replicate" },
225
+ { id: "openai/o1", name: "O1", provider: "replicate" },
226
+ { id: "openai/o4-mini", name: "O4 Mini", provider: "replicate" },
227
+ { id: "xai/grok-4", name: "Grok 4", provider: "replicate" },
228
+ {
229
+ id: "qwen/qwen3-235b-a22b-instruct-2507",
230
+ name: "Qwen3 235B",
231
+ provider: "replicate"
232
+ },
233
+ { id: "moonshotai/kimi-k2.5", name: "Kimi K2.5", provider: "replicate" },
234
+ {
235
+ id: "snowflake/snowflake-arctic-instruct",
236
+ name: "Snowflake Arctic Instruct",
237
+ provider: "replicate"
238
+ }
239
+ ];
240
+ }
241
+ async getAvailableImageModels() {
242
+ return loadImageModels("@nodetool-ai/replicate-nodes", "replicate-manifest.json", "replicate");
243
+ }
244
+ async getAvailableVideoModels() {
245
+ return loadVideoModels("@nodetool-ai/replicate-nodes", "replicate-manifest.json", "replicate");
246
+ }
247
+ async getAvailableTTSModels() {
248
+ return [
249
+ { id: "elevenlabs/v3", name: "ElevenLabs V3", provider: "replicate" },
250
+ {
251
+ id: "minimax/speech-2.8-hd",
252
+ name: "MiniMax Speech 2.8 HD",
253
+ provider: "replicate"
254
+ },
255
+ { id: "jaaari/kokoro-82m", name: "Kokoro 82M", provider: "replicate" },
256
+ {
257
+ id: "resemble-ai/chatterbox-pro",
258
+ name: "Chatterbox Pro",
259
+ provider: "replicate"
260
+ },
261
+ { id: "x-lance/f5-tts", name: "F5 TTS", provider: "replicate" }
262
+ ];
263
+ }
264
+ async getAvailableASRModels() {
265
+ return [
266
+ {
267
+ id: "openai/gpt-4o-transcribe",
268
+ name: "GPT-4o Transcribe",
269
+ provider: "replicate"
270
+ },
271
+ {
272
+ id: "vaibhavs10/incredibly-fast-whisper",
273
+ name: "Incredibly Fast Whisper",
274
+ provider: "replicate"
275
+ },
276
+ { id: "openai/whisper", name: "Whisper", provider: "replicate" },
277
+ { id: "daanelson/whisperx", name: "WhisperX", provider: "replicate" },
278
+ {
279
+ id: "thomasmol/whisper-diarization",
280
+ name: "Whisper Diarization",
281
+ provider: "replicate"
282
+ }
283
+ ];
284
+ }
285
+ async getAvailableEmbeddingModels() {
286
+ return [
287
+ {
288
+ id: "replicate/all-mpnet-base-v2",
289
+ name: "All MPNet Base V2",
290
+ provider: "replicate",
291
+ dimensions: 768
292
+ },
293
+ {
294
+ id: "lucataco/snowflake-arctic-embed-l",
295
+ name: "Snowflake Arctic Embed L",
296
+ provider: "replicate",
297
+ dimensions: 1024
298
+ },
299
+ {
300
+ id: "lucataco/nomic-embed-text-v1",
301
+ name: "Nomic Embed Text V1",
302
+ provider: "replicate",
303
+ dimensions: 768
304
+ },
305
+ {
306
+ id: "nateraw/bge-large-en-v1.5",
307
+ name: "BGE Large EN v1.5",
308
+ provider: "replicate",
309
+ dimensions: 1024
310
+ },
311
+ {
312
+ id: "ibm-granite/granite-embedding-278m-multilingual",
313
+ name: "Granite Embedding 278M Multilingual",
314
+ provider: "replicate",
315
+ dimensions: 768
316
+ },
317
+ {
318
+ id: "beautyyuyanli/multilingual-e5-large",
319
+ name: "Multilingual E5 Large",
320
+ provider: "replicate",
321
+ dimensions: 1024
322
+ },
323
+ {
324
+ id: "zsxkib/jina-clip-v2",
325
+ name: "Jina CLIP V2",
326
+ provider: "replicate",
327
+ dimensions: 1024
328
+ },
329
+ {
330
+ id: "cuuupid/gte-qwen2-7b-instruct",
331
+ name: "GTE Qwen2 7B Instruct",
332
+ provider: "replicate",
333
+ dimensions: 3584
334
+ },
335
+ {
336
+ id: "andreasjansson/clip-features",
337
+ name: "CLIP Features",
338
+ provider: "replicate",
339
+ dimensions: 512
340
+ },
341
+ {
342
+ id: "daanelson/imagebind",
343
+ name: "ImageBind",
344
+ provider: "replicate",
345
+ dimensions: 1024
346
+ }
347
+ ];
348
+ }
349
+ // ---------------------------------------------------------------------------
350
+ // Image / Video / Audio capabilities
351
+ // ---------------------------------------------------------------------------
352
+ async _fetchOutputBytes(output) {
353
+ // replicate.run() returns FileOutput (ReadableStream) for file models,
354
+ // or a string URL, or an array of URLs/FileOutputs.
355
+ let target = output;
356
+ if (Array.isArray(output)) {
357
+ target = output[0];
358
+ }
359
+ // FileOutput is a ReadableStream — read it to bytes
360
+ if (target && typeof target === "object" && "getReader" in target) {
361
+ const reader = target.getReader();
362
+ const chunks = [];
363
+ while (true) {
364
+ const { done, value } = await reader.read();
365
+ if (done)
366
+ break;
367
+ chunks.push(value);
368
+ }
369
+ const totalLength = chunks.reduce((sum, c) => sum + c.length, 0);
370
+ const result = new Uint8Array(totalLength);
371
+ let offset = 0;
372
+ for (const chunk of chunks) {
373
+ result.set(chunk, offset);
374
+ offset += chunk.length;
375
+ }
376
+ return result;
377
+ }
378
+ // String URL — fetch the bytes
379
+ if (typeof target === "string") {
380
+ const res = await fetch(target);
381
+ if (!res.ok)
382
+ throw new Error(`Failed to fetch output: ${res.status}`);
383
+ return new Uint8Array(await res.arrayBuffer());
384
+ }
385
+ throw new Error("Replicate prediction returned no usable output");
386
+ }
387
+ async textToImage(params) {
388
+ if (!params.prompt)
389
+ throw new Error("Prompt is required");
390
+ const input = { prompt: params.prompt };
391
+ if (params.negativePrompt)
392
+ input.negative_prompt = params.negativePrompt;
393
+ if (params.width)
394
+ input.width = params.width;
395
+ if (params.height)
396
+ input.height = params.height;
397
+ if (params.guidanceScale != null)
398
+ input.guidance_scale = params.guidanceScale;
399
+ if (params.numInferenceSteps != null)
400
+ input.num_inference_steps = params.numInferenceSteps;
401
+ if (params.seed != null)
402
+ input.seed = params.seed;
403
+ if (params.scheduler)
404
+ input.scheduler = params.scheduler;
405
+ log.debug("textToImage", { model: params.model.id });
406
+ const output = await this._client.run(params.model.id, { input });
407
+ return this._fetchOutputBytes(output);
408
+ }
409
+ async imageToImage(image, params) {
410
+ const base64 = Buffer.from(image).toString("base64");
411
+ const dataUri = `data:image/png;base64,${base64}`;
412
+ const input = { image: dataUri };
413
+ if (params.prompt)
414
+ input.prompt = params.prompt;
415
+ if (params.negativePrompt)
416
+ input.negative_prompt = params.negativePrompt;
417
+ if (params.guidanceScale != null)
418
+ input.guidance_scale = params.guidanceScale;
419
+ if (params.numInferenceSteps != null)
420
+ input.num_inference_steps = params.numInferenceSteps;
421
+ if (params.strength != null)
422
+ input.strength = params.strength;
423
+ if (params.seed != null)
424
+ input.seed = params.seed;
425
+ log.debug("imageToImage", { model: params.model.id });
426
+ const output = await this._client.run(params.model.id, { input });
427
+ return this._fetchOutputBytes(output);
428
+ }
429
+ async textToVideo(params) {
430
+ if (!params.prompt)
431
+ throw new Error("Prompt is required");
432
+ const input = { prompt: params.prompt };
433
+ if (params.negativePrompt)
434
+ input.negative_prompt = params.negativePrompt;
435
+ if (params.aspectRatio)
436
+ input.aspect_ratio = params.aspectRatio;
437
+ if (params.numFrames)
438
+ input.num_frames = params.numFrames;
439
+ if (params.guidanceScale != null)
440
+ input.guidance_scale = params.guidanceScale;
441
+ if (params.seed != null)
442
+ input.seed = params.seed;
443
+ log.debug("textToVideo", { model: params.model.id });
444
+ const output = await this._client.run(params.model.id, { input });
445
+ return this._fetchOutputBytes(output);
446
+ }
447
+ async imageToVideo(image, params) {
448
+ const base64 = Buffer.from(image).toString("base64");
449
+ const dataUri = `data:image/png;base64,${base64}`;
450
+ const input = { image: dataUri };
451
+ if (params.prompt)
452
+ input.prompt = params.prompt;
453
+ if (params.negativePrompt)
454
+ input.negative_prompt = params.negativePrompt;
455
+ if (params.aspectRatio)
456
+ input.aspect_ratio = params.aspectRatio;
457
+ if (params.numFrames)
458
+ input.num_frames = params.numFrames;
459
+ if (params.guidanceScale != null)
460
+ input.guidance_scale = params.guidanceScale;
461
+ if (params.seed != null)
462
+ input.seed = params.seed;
463
+ log.debug("imageToVideo", { model: params.model.id });
464
+ const output = await this._client.run(params.model.id, { input });
465
+ return this._fetchOutputBytes(output);
466
+ }
467
+ async *textToSpeech(args) {
468
+ const input = { text: args.text };
469
+ if (args.voice)
470
+ input.voice = args.voice;
471
+ if (args.speed != null)
472
+ input.speed = args.speed;
473
+ log.debug("textToSpeech", { model: args.model });
474
+ const output = await this._client.run(args.model, {
475
+ input
476
+ });
477
+ const bytes = await this._fetchOutputBytes(output);
478
+ // Convert to Int16Array (assume raw PCM or WAV)
479
+ yield {
480
+ samples: new Int16Array(bytes.buffer, bytes.byteOffset, bytes.byteLength / 2)
481
+ };
482
+ }
483
+ }
484
+ //# sourceMappingURL=replicate-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replicate-provider.js","sourceRoot":"","sources":["../../src/providers/replicate-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Rodin AI Provider — wraps the Rodin AI (Hyperhuman) 3D generation API to
3
+ * expose `textTo3D` and `imageTo3D` through the standard {@link BaseProvider}
4
+ * interface.
5
+ *
6
+ * Rodin's primary capability is image-to-3D, but the same `/v2/rodin`
7
+ * endpoint accepts a text prompt for text-to-3D generation.
8
+ *
9
+ * API docs: https://hyperhuman.deemos.com/api
10
+ *
11
+ * Ported from the historical Python implementation at
12
+ * `nodetool-core@25e60910:src/nodetool/providers/rodin_provider.py`. The
13
+ * Python `image_to_3d` accidentally submitted the task twice to fetch the
14
+ * subscription key — fixed here by reading both `uuids` and
15
+ * `subscription_key` from a single submit response.
16
+ */
17
+ import { BaseProvider } from "./base-provider.js";
18
+ import type { ImageTo3DParams, Message, Model3D, ProviderStreamItem, TextTo3DParams } from "./types.js";
19
+ export declare const RODIN_3D_MODELS: Model3D[];
20
+ export interface RodinProviderOptions {
21
+ pollIntervalMs?: number;
22
+ maxPollAttempts?: number;
23
+ }
24
+ export declare class RodinProvider extends BaseProvider {
25
+ private readonly apiKey;
26
+ private readonly pollIntervalMs;
27
+ private readonly maxPollAttempts;
28
+ constructor(secrets?: Record<string, unknown>, options?: RodinProviderOptions);
29
+ static requiredSecrets(): string[];
30
+ generateMessage(_args: Parameters<BaseProvider["generateMessage"]>[0]): Promise<Message>;
31
+ generateMessages(_args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
32
+ getAvailable3DModels(): Promise<Model3D[]>;
33
+ textTo3D(params: TextTo3DParams): Promise<Uint8Array>;
34
+ imageTo3D(image: Uint8Array, params: ImageTo3DParams): Promise<Uint8Array>;
35
+ private headers;
36
+ private computeMaxAttempts;
37
+ private submitTask;
38
+ private pollTaskStatus;
39
+ private downloadResult;
40
+ }
41
+ //# sourceMappingURL=rodin-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rodin-provider.d.ts","sourceRoot":"","sources":["../../src/providers/rodin-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EACV,eAAe,EACf,OAAO,EACP,OAAO,EACP,kBAAkB,EAClB,cAAc,EACf,MAAM,YAAY,CAAC;AAWpB,eAAO,MAAM,eAAe,EAAE,OAAO,EAsBpC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4CD,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAGvC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,OAAO,GAAE,oBAAyB;WAWpB,eAAe,IAAI,MAAM,EAAE;IAIrC,eAAe,CACnB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,OAAO,CAAC;IAIZ,gBAAgB,CACrB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GACrD,cAAc,CAAC,kBAAkB,CAAC;IAItB,oBAAoB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAQ1C,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBrD,SAAS,CACtB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,UAAU,CAAC;IAyBtB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,kBAAkB;YAOZ,UAAU;YA8BV,cAAc;YA6Cd,cAAc;CA+B7B"}