@workglow/ai-provider 0.0.116 → 0.0.118

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 (53) hide show
  1. package/dist/{HFT_JobRunFns-847nv145.js → HFT_JobRunFns-yx418d60.js} +6 -2
  2. package/dist/{HFT_JobRunFns-847nv145.js.map → HFT_JobRunFns-yx418d60.js.map} +1 -1
  3. package/dist/anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -1
  4. package/dist/anthropic/index.js +97 -17
  5. package/dist/anthropic/index.js.map +3 -3
  6. package/dist/google-gemini/common/Gemini_JobRunFns.d.ts.map +1 -1
  7. package/dist/google-gemini/index.js +106 -16
  8. package/dist/google-gemini/index.js.map +3 -3
  9. package/dist/hf-transformers/common/HFT_JobRunFns.d.ts +78 -3
  10. package/dist/hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
  11. package/dist/hf-transformers/index.js +7 -3
  12. package/dist/hf-transformers/index.js.map +2 -2
  13. package/dist/{index-94pc6ggt.js → index-qett8dfp.js} +1 -1
  14. package/dist/{index-h0jxhgvf.js → index-tvb9nd5b.js} +125 -55
  15. package/dist/index-tvb9nd5b.js.map +10 -0
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +101 -2
  19. package/dist/index.js.map +7 -4
  20. package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts.map +1 -1
  21. package/dist/provider-hf-inference/index.js +15 -25
  22. package/dist/provider-hf-inference/index.js.map +3 -3
  23. package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts +3 -1
  24. package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts.map +1 -1
  25. package/dist/provider-llamacpp/index.js +150 -12
  26. package/dist/provider-llamacpp/index.js.map +3 -3
  27. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts.map +1 -1
  28. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -1
  29. package/dist/provider-ollama/index.browser.js +6 -6
  30. package/dist/provider-ollama/index.browser.js.map +3 -3
  31. package/dist/provider-ollama/index.js +9 -17
  32. package/dist/provider-ollama/index.js.map +3 -3
  33. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts +0 -6
  34. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -1
  35. package/dist/provider-openai/index.js +15 -30
  36. package/dist/provider-openai/index.js.map +3 -3
  37. package/dist/web-browser/WebBrowserProvider.d.ts +40 -0
  38. package/dist/web-browser/WebBrowserProvider.d.ts.map +1 -0
  39. package/dist/web-browser/WebBrowser_Worker.d.ts +7 -0
  40. package/dist/web-browser/WebBrowser_Worker.d.ts.map +1 -0
  41. package/dist/web-browser/common/WebBrowser_Constants.d.ts +15 -0
  42. package/dist/web-browser/common/WebBrowser_Constants.d.ts.map +1 -0
  43. package/dist/web-browser/common/WebBrowser_JobRunFns.d.ts +20 -0
  44. package/dist/web-browser/common/WebBrowser_JobRunFns.d.ts.map +1 -0
  45. package/dist/web-browser/common/WebBrowser_ModelSchema.d.ts +185 -0
  46. package/dist/web-browser/common/WebBrowser_ModelSchema.d.ts.map +1 -0
  47. package/dist/web-browser/index.d.ts +11 -0
  48. package/dist/web-browser/index.d.ts.map +1 -0
  49. package/dist/web-browser/index.js +457 -0
  50. package/dist/web-browser/index.js.map +14 -0
  51. package/package.json +19 -15
  52. package/dist/index-h0jxhgvf.js.map +0 -10
  53. /package/dist/{index-94pc6ggt.js.map → index-qett8dfp.js.map} +0 -0
@@ -37,6 +37,19 @@ function getModelName(model) {
37
37
  }
38
38
  return name;
39
39
  }
40
+ function sanitizeSchemaForGemini(schema) {
41
+ const result = {};
42
+ for (const [key, value] of Object.entries(schema)) {
43
+ if (key === "additionalProperties")
44
+ continue;
45
+ if (value && typeof value === "object" && !Array.isArray(value)) {
46
+ result[key] = sanitizeSchemaForGemini(value);
47
+ } else {
48
+ result[key] = value;
49
+ }
50
+ }
51
+ return result;
52
+ }
40
53
  var Gemini_TextGeneration = async (input, model, update_progress, signal) => {
41
54
  if (Array.isArray(input.prompt)) {
42
55
  getLogger().warn("Gemini_TextGeneration: array input received; processing sequentially (no native batch support)");
@@ -222,6 +235,9 @@ var Gemini_CountTokens = async (input, model, onProgress, signal) => {
222
235
  return { count: result.totalTokens };
223
236
  };
224
237
  var Gemini_CountTokens_Reactive = async (input, _output, _model) => {
238
+ if (Array.isArray(input.text)) {
239
+ return { count: input.text.map((t) => Math.ceil(t.length / 4)) };
240
+ }
225
241
  return { count: Math.ceil(input.text.length / 4) };
226
242
  };
227
243
  var Gemini_StructuredGeneration = async (input, model, update_progress, signal, outputSchema) => {
@@ -229,11 +245,12 @@ var Gemini_StructuredGeneration = async (input, model, update_progress, signal,
229
245
  const GoogleGenerativeAI = await loadGeminiSDK();
230
246
  const genAI = new GoogleGenerativeAI(getApiKey(model));
231
247
  const schema = input.outputSchema ?? outputSchema;
248
+ const sanitizedSchema = sanitizeSchemaForGemini(schema);
232
249
  const genModel = genAI.getGenerativeModel({
233
250
  model: getModelName(model),
234
251
  generationConfig: {
235
252
  responseMimeType: "application/json",
236
- responseSchema: schema,
253
+ responseSchema: sanitizedSchema,
237
254
  maxOutputTokens: input.maxTokens,
238
255
  temperature: input.temperature
239
256
  }
@@ -249,11 +266,12 @@ var Gemini_StructuredGeneration_Stream = async function* (input, model, signal,
249
266
  const GoogleGenerativeAI = await loadGeminiSDK();
250
267
  const genAI = new GoogleGenerativeAI(getApiKey(model));
251
268
  const schema = input.outputSchema ?? outputSchema;
269
+ const sanitizedSchema = sanitizeSchemaForGemini(schema);
252
270
  const genModel = genAI.getGenerativeModel({
253
271
  model: getModelName(model),
254
272
  generationConfig: {
255
273
  responseMimeType: "application/json",
256
- responseSchema: schema,
274
+ responseSchema: sanitizedSchema,
257
275
  maxOutputTokens: input.maxTokens,
258
276
  temperature: input.temperature
259
277
  }
@@ -278,6 +296,78 @@ var Gemini_StructuredGeneration_Stream = async function* (input, model, signal,
278
296
  }
279
297
  yield { type: "finish", data: { object: finalObject } };
280
298
  };
299
+ function buildGeminiContents(input) {
300
+ const inputMessages = input.messages;
301
+ if (!inputMessages || inputMessages.length === 0) {
302
+ return [{ role: "user", parts: [{ text: input.prompt }] }];
303
+ }
304
+ const toolUseNames = new Map;
305
+ for (const msg of inputMessages) {
306
+ if (msg.role === "assistant" && Array.isArray(msg.content)) {
307
+ for (const block of msg.content) {
308
+ if (block.type === "tool_use") {
309
+ toolUseNames.set(block.id, block.name);
310
+ }
311
+ }
312
+ }
313
+ }
314
+ const contents = [];
315
+ for (const msg of inputMessages) {
316
+ if (msg.role === "user") {
317
+ if (typeof msg.content === "string") {
318
+ contents.push({ role: "user", parts: [{ text: msg.content }] });
319
+ } else if (Array.isArray(msg.content)) {
320
+ const parts = [];
321
+ for (const block of msg.content) {
322
+ if (block.type === "text") {
323
+ parts.push({ text: block.text });
324
+ } else if (block.type === "image" || block.type === "audio") {
325
+ parts.push({ inlineData: { mimeType: block.mimeType, data: block.data } });
326
+ }
327
+ }
328
+ contents.push({ role: "user", parts });
329
+ } else {
330
+ contents.push({ role: "user", parts: [{ text: msg.content }] });
331
+ }
332
+ } else if (msg.role === "assistant" && Array.isArray(msg.content)) {
333
+ const parts = [];
334
+ for (const block of msg.content) {
335
+ if (block.type === "text" && block.text) {
336
+ parts.push({ text: block.text });
337
+ } else if (block.type === "tool_use") {
338
+ parts.push({ functionCall: { name: block.name, args: block.input } });
339
+ }
340
+ }
341
+ if (parts.length > 0) {
342
+ contents.push({ role: "model", parts });
343
+ }
344
+ } else if (msg.role === "tool" && Array.isArray(msg.content)) {
345
+ const parts = msg.content.map((block) => {
346
+ const name = toolUseNames.get(block.tool_use_id) ?? "unknown";
347
+ let response;
348
+ if (typeof block.content === "string") {
349
+ try {
350
+ response = JSON.parse(block.content);
351
+ } catch {
352
+ response = { result: block.content };
353
+ }
354
+ } else if (Array.isArray(block.content)) {
355
+ const textParts = block.content.filter((b) => b.type === "text").map((b) => b.text);
356
+ try {
357
+ response = JSON.parse(textParts.join(""));
358
+ } catch {
359
+ response = { result: textParts.join("") };
360
+ }
361
+ } else {
362
+ response = {};
363
+ }
364
+ return { functionResponse: { name, response } };
365
+ });
366
+ contents.push({ role: "user", parts });
367
+ }
368
+ }
369
+ return contents;
370
+ }
281
371
  function mapGeminiToolConfig(toolChoice) {
282
372
  if (!toolChoice || toolChoice === "auto") {
283
373
  return { functionCallingConfig: { mode: "AUTO" } };
@@ -314,7 +404,7 @@ var Gemini_ToolCalling = async (input, model, update_progress, signal) => {
314
404
  const functionDeclarations = input.tools.map((t) => ({
315
405
  name: t.name,
316
406
  description: buildToolDescription(t),
317
- parameters: t.inputSchema
407
+ parameters: sanitizeSchemaForGemini(t.inputSchema)
318
408
  }));
319
409
  const toolConfig = mapGeminiToolConfig(input.toolChoice);
320
410
  const genModel = genAI.getGenerativeModel({
@@ -327,12 +417,11 @@ var Gemini_ToolCalling = async (input, model, update_progress, signal) => {
327
417
  temperature: input.temperature
328
418
  }
329
419
  });
330
- const result = await genModel.generateContent({
331
- contents: [{ role: "user", parts: [{ text: input.prompt }] }]
332
- });
420
+ const contents = buildGeminiContents(input);
421
+ const result = await genModel.generateContent({ contents });
333
422
  const parts = result.response.candidates?.[0]?.content?.parts ?? [];
334
423
  const textParts = [];
335
- const toolCalls = {};
424
+ const toolCalls = [];
336
425
  let callIndex = 0;
337
426
  for (const part of parts) {
338
427
  if ("text" in part && part.text) {
@@ -340,11 +429,11 @@ var Gemini_ToolCalling = async (input, model, update_progress, signal) => {
340
429
  }
341
430
  if ("functionCall" in part && part.functionCall) {
342
431
  const id = `call_${callIndex++}`;
343
- toolCalls[id] = {
432
+ toolCalls.push({
344
433
  id,
345
434
  name: part.functionCall.name,
346
435
  input: part.functionCall.args ?? {}
347
- };
436
+ });
348
437
  }
349
438
  }
350
439
  update_progress(100, "Completed Gemini tool calling");
@@ -356,7 +445,7 @@ var Gemini_ToolCalling_Stream = async function* (input, model, signal) {
356
445
  const functionDeclarations = input.tools.map((t) => ({
357
446
  name: t.name,
358
447
  description: buildToolDescription(t),
359
- parameters: t.inputSchema
448
+ parameters: sanitizeSchemaForGemini(t.inputSchema)
360
449
  }));
361
450
  const toolConfig = mapGeminiToolConfig(input.toolChoice);
362
451
  const genModel = genAI.getGenerativeModel({
@@ -369,9 +458,10 @@ var Gemini_ToolCalling_Stream = async function* (input, model, signal) {
369
458
  temperature: input.temperature
370
459
  }
371
460
  });
372
- const result = await genModel.generateContentStream({ contents: [{ role: "user", parts: [{ text: input.prompt }] }] }, { signal });
461
+ const contents = buildGeminiContents(input);
462
+ const result = await genModel.generateContentStream({ contents }, { signal });
373
463
  let accumulatedText = "";
374
- const toolCalls = {};
464
+ const toolCalls = [];
375
465
  let callIndex = 0;
376
466
  for await (const chunk of result.stream) {
377
467
  const parts = chunk.candidates?.[0]?.content?.parts ?? [];
@@ -382,12 +472,12 @@ var Gemini_ToolCalling_Stream = async function* (input, model, signal) {
382
472
  }
383
473
  if ("functionCall" in part && part.functionCall) {
384
474
  const id = `call_${callIndex++}`;
385
- toolCalls[id] = {
475
+ toolCalls.push({
386
476
  id,
387
477
  name: part.functionCall.name,
388
478
  input: part.functionCall.args ?? {}
389
- };
390
- yield { type: "object-delta", port: "toolCalls", objectDelta: { ...toolCalls } };
479
+ });
480
+ yield { type: "object-delta", port: "toolCalls", objectDelta: [...toolCalls] };
391
481
  }
392
482
  }
393
483
  }
@@ -463,4 +553,4 @@ export {
463
553
  GEMINI_REACTIVE_TASKS
464
554
  };
465
555
 
466
- //# debugId=DF4F1FD41CF3889F64756E2164756E21
556
+ //# debugId=951B337FD24F757C64756E2164756E21
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/google-gemini/common/Gemini_JobRunFns.ts", "../src/google-gemini/Gemini_Worker.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { FunctionCallingMode, TaskType } from \"@google/generative-ai\";\nimport { buildToolDescription, filterValidToolCalls } from \"@workglow/ai\";\nimport type {\n AiProviderReactiveRunFn,\n AiProviderRunFn,\n AiProviderStreamFn,\n CountTokensTaskInput,\n CountTokensTaskOutput,\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger, parsePartialJson } from \"@workglow/util\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nlet _sdk: typeof import(\"@google/generative-ai\") | undefined;\nasync function loadGeminiSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"@google/generative-ai\");\n } catch {\n throw new Error(\n \"@google/generative-ai is required for Gemini tasks. Install it with: bun add @google/generative-ai\"\n );\n }\n }\n return _sdk.GoogleGenerativeAI;\n}\n\ninterface ResolvedProviderConfig {\n readonly credential_key?: string;\n readonly api_key?: string;\n readonly model_name?: string;\n readonly embedding_task_type?: string | null;\n}\n\nfunction getApiKey(model: GeminiModelConfig | undefined): string {\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n const apiKey =\n config?.credential_key ||\n config?.api_key ||\n (typeof process !== \"undefined\"\n ? process.env?.GOOGLE_API_KEY || process.env?.GEMINI_API_KEY\n : undefined);\n if (!apiKey) {\n throw new Error(\n \"Missing Google API key: set provider_config.credential_key or the GOOGLE_API_KEY / GEMINI_API_KEY environment variable.\"\n );\n }\n return apiKey;\n}\n\nfunction getModelName(model: GeminiModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nexport const Gemini_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.prompt)) {\n getLogger().warn(\n \"Gemini_TextGeneration: array input received; processing sequentially (no native batch support)\"\n );\n const prompts = input.prompt as string[];\n const results: string[] = [];\n for (const item of prompts) {\n const r = await Gemini_TextGeneration(\n { ...input, prompt: item },\n model,\n update_progress,\n signal\n );\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n const logger = getLogger();\n const timerLabel = `gemini:TextGeneration:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting Gemini text generation\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n topP: input.topP,\n },\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }],\n });\n\n const text = result.response.text();\n update_progress(100, \"Completed Gemini text generation\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { text };\n};\n\nexport const Gemini_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `gemini:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting Gemini text embedding\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const embeddingModel = genAI.getGenerativeModel({\n model: getModelName(model),\n });\n\n const taskType =\n (model?.provider_config?.embedding_task_type as TaskType) || (\"RETRIEVAL_DOCUMENT\" as TaskType);\n\n if (Array.isArray(input.text)) {\n const result = await embeddingModel.batchEmbedContents({\n requests: input.text.map((t) => ({\n content: { role: \"user\", parts: [{ text: t }] },\n taskType,\n })),\n });\n update_progress(100, \"Completed Gemini text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n return {\n vector: result.embeddings.map((e) => new Float32Array(e.values)),\n };\n }\n\n const result = await embeddingModel.embedContent({\n content: { role: \"user\", parts: [{ text: input.text as string }] },\n taskType,\n });\n\n update_progress(100, \"Completed Gemini text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { vector: new Float32Array(result.embedding.values) };\n};\n\nexport const Gemini_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.text)) {\n getLogger().warn(\n \"Gemini_TextRewriter: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const results: string[] = [];\n for (const item of texts) {\n const r = await Gemini_TextRewriter({ ...input, text: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n update_progress(0, \"Starting Gemini text rewriting\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: input.prompt as string,\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.text as string }] }],\n });\n\n const text = result.response.text();\n update_progress(100, \"Completed Gemini text rewriting\");\n return { text };\n};\n\nexport const Gemini_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.text)) {\n getLogger().warn(\n \"Gemini_TextSummary: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const results: string[] = [];\n for (const item of texts) {\n const r = await Gemini_TextSummary({ ...input, text: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n update_progress(0, \"Starting Gemini text summarization\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: \"Summarize the following text concisely.\",\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.text as string }] }],\n });\n\n const text = result.response.text();\n update_progress(100, \"Completed Gemini text summarization\");\n return { text };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const Gemini_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n GeminiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n topP: input.topP,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n yield { type: \"text-delta\", port: \"text\", textDelta: text };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n\nexport const Gemini_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n GeminiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: input.prompt as string,\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.text as string }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n yield { type: \"text-delta\", port: \"text\", textDelta: text };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n\nexport const Gemini_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n GeminiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: \"Summarize the following text concisely.\",\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.text as string }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n yield { type: \"text-delta\", port: \"text\", textDelta: text };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n\nexport const Gemini_CountTokens: AiProviderRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n GeminiModelConfig\n> = async (input, model, onProgress, signal) => {\n if (Array.isArray(input.text)) {\n getLogger().warn(\n \"Gemini_CountTokens: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const counts: number[] = [];\n for (const item of texts) {\n const r = await Gemini_CountTokens({ ...input, text: item }, model, onProgress, signal);\n counts.push(r.count as number);\n }\n return { count: counts };\n }\n\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({ model: getModelName(model) });\n const result = await genModel.countTokens(input.text as string);\n return { count: result.totalTokens };\n};\n\nexport const Gemini_CountTokens_Reactive: AiProviderReactiveRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n GeminiModelConfig\n> = async (input, _output, _model) => {\n return { count: Math.ceil((input.text as string).length / 4) };\n};\n\n// ========================================================================\n// Structured output implementations (object mode)\n// ========================================================================\n\nexport const Gemini_StructuredGeneration: AiProviderRunFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal, outputSchema) => {\n update_progress(0, \"Starting Gemini structured generation\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const schema = input.outputSchema ?? outputSchema;\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n responseMimeType: \"application/json\",\n responseSchema: schema as any,\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }],\n });\n\n const text = result.response.text();\n update_progress(100, \"Completed Gemini structured generation\");\n return { object: JSON.parse(text) };\n};\n\nexport const Gemini_StructuredGeneration_Stream: AiProviderStreamFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n GeminiModelConfig\n> = async function* (\n input,\n model,\n signal,\n outputSchema\n): AsyncIterable<StreamEvent<StructuredGenerationTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const schema = input.outputSchema ?? outputSchema;\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n responseMimeType: \"application/json\",\n responseSchema: schema as any,\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }] },\n { signal }\n );\n\n let accumulatedJson = \"\";\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n accumulatedJson += text;\n const partial = parsePartialJson(accumulatedJson);\n if (partial !== undefined) {\n yield { type: \"object-delta\", port: \"object\", objectDelta: partial };\n }\n }\n }\n\n let finalObject: Record<string, unknown>;\n try {\n finalObject = JSON.parse(accumulatedJson);\n } catch {\n finalObject = parsePartialJson(accumulatedJson) ?? {};\n }\n yield { type: \"finish\", data: { object: finalObject } as StructuredGenerationTaskOutput };\n};\n\n// ========================================================================\n// Tool calling implementations\n// ========================================================================\n\nfunction mapGeminiToolConfig(\n toolChoice: string | undefined\n):\n | { functionCallingConfig: { mode: FunctionCallingMode; allowedFunctionNames?: string[] } }\n | undefined {\n if (!toolChoice || toolChoice === \"auto\") {\n return { functionCallingConfig: { mode: \"AUTO\" as FunctionCallingMode } };\n }\n if (toolChoice === \"none\") {\n return { functionCallingConfig: { mode: \"NONE\" as FunctionCallingMode } };\n }\n if (toolChoice === \"required\") {\n return { functionCallingConfig: { mode: \"ANY\" as FunctionCallingMode } };\n }\n // Specific tool name\n return {\n functionCallingConfig: {\n mode: \"ANY\" as FunctionCallingMode,\n allowedFunctionNames: [toolChoice],\n },\n };\n}\n\nexport const Gemini_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.prompt)) {\n getLogger().warn(\n \"Gemini_ToolCalling: array input received; processing sequentially (no native batch support)\"\n );\n const prompts = input.prompt as string[];\n const texts: string[] = [];\n const toolCallsList: Record<string, unknown>[] = [];\n for (const item of prompts) {\n const r = await Gemini_ToolCalling(\n { ...input, prompt: item },\n model,\n update_progress,\n signal\n );\n texts.push(r.text as string);\n toolCallsList.push(r.toolCalls as Record<string, unknown>);\n }\n return { text: texts, toolCalls: toolCallsList };\n }\n\n update_progress(0, \"Starting Gemini tool calling\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const functionDeclarations = input.tools.map((t: ToolDefinition) => ({\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n }));\n\n const toolConfig = mapGeminiToolConfig(input.toolChoice);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n tools: [{ functionDeclarations }],\n toolConfig: toolConfig as any,\n systemInstruction: input.systemPrompt || undefined,\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }],\n });\n\n const parts = result.response.candidates?.[0]?.content?.parts ?? [];\n\n const textParts: string[] = [];\n const toolCalls: Record<string, unknown> = {};\n let callIndex = 0;\n\n for (const part of parts) {\n if (\"text\" in part && part.text) {\n textParts.push(part.text);\n }\n if (\"functionCall\" in part && part.functionCall) {\n const id = `call_${callIndex++}`;\n toolCalls[id] = {\n id,\n name: part.functionCall.name,\n input: (part.functionCall.args as Record<string, unknown>) ?? {},\n };\n }\n }\n\n update_progress(100, \"Completed Gemini tool calling\");\n return { text: textParts.join(\"\"), toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const Gemini_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n GeminiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const functionDeclarations = input.tools.map((t: ToolDefinition) => ({\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n }));\n\n const toolConfig = mapGeminiToolConfig(input.toolChoice);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n tools: [{ functionDeclarations }],\n toolConfig: toolConfig as any,\n systemInstruction: input.systemPrompt || undefined,\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }] },\n { signal }\n );\n\n let accumulatedText = \"\";\n const toolCalls: Record<string, unknown> = {};\n let callIndex = 0;\n\n for await (const chunk of result.stream) {\n const parts = chunk.candidates?.[0]?.content?.parts ?? [];\n for (const part of parts) {\n if (\"text\" in part && part.text) {\n accumulatedText += part.text;\n yield { type: \"text-delta\", port: \"text\", textDelta: part.text };\n }\n if (\"functionCall\" in part && part.functionCall) {\n const id = `call_${callIndex++}`;\n toolCalls[id] = {\n id,\n name: part.functionCall.name,\n input: (part.functionCall.args as Record<string, unknown>) ?? {},\n };\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: { ...toolCalls } };\n }\n }\n }\n\n const validToolCalls = filterValidToolCalls(toolCalls, input.tools);\n yield {\n type: \"finish\",\n data: { text: accumulatedText, toolCalls: validToolCalls } as ToolCallingTaskOutput,\n };\n};\n\n// ========================================================================\n// Model info\n// ========================================================================\n\nexport const Gemini_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n GeminiModelConfig\n> = async (input) => {\n return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n };\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const GEMINI_TASKS: Record<string, AiProviderRunFn<any, any, GeminiModelConfig>> = {\n CountTokensTask: Gemini_CountTokens,\n ModelInfoTask: Gemini_ModelInfo,\n TextGenerationTask: Gemini_TextGeneration,\n TextEmbeddingTask: Gemini_TextEmbedding,\n TextRewriterTask: Gemini_TextRewriter,\n TextSummaryTask: Gemini_TextSummary,\n StructuredGenerationTask: Gemini_StructuredGeneration,\n ToolCallingTask: Gemini_ToolCalling,\n};\n\nexport const GEMINI_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, GeminiModelConfig>\n> = {\n TextGenerationTask: Gemini_TextGeneration_Stream,\n TextRewriterTask: Gemini_TextRewriter_Stream,\n TextSummaryTask: Gemini_TextSummary_Stream,\n StructuredGenerationTask: Gemini_StructuredGeneration_Stream,\n ToolCallingTask: Gemini_ToolCalling_Stream,\n};\n\nexport const GEMINI_REACTIVE_TASKS: Record<\n string,\n AiProviderReactiveRunFn<any, any, GeminiModelConfig>\n> = {\n CountTokensTask: Gemini_CountTokens_Reactive,\n};\n",
5
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { FunctionCallingMode, TaskType } from \"@google/generative-ai\";\nimport { buildToolDescription, filterValidToolCalls } from \"@workglow/ai\";\nimport type {\n AiProviderReactiveRunFn,\n AiProviderRunFn,\n AiProviderStreamFn,\n CountTokensTaskInput,\n CountTokensTaskOutput,\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolCalls,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger, parsePartialJson } from \"@workglow/util\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nlet _sdk: typeof import(\"@google/generative-ai\") | undefined;\nasync function loadGeminiSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"@google/generative-ai\");\n } catch {\n throw new Error(\n \"@google/generative-ai is required for Gemini tasks. Install it with: bun add @google/generative-ai\"\n );\n }\n }\n return _sdk.GoogleGenerativeAI;\n}\n\ninterface ResolvedProviderConfig {\n readonly credential_key?: string;\n readonly api_key?: string;\n readonly model_name?: string;\n readonly embedding_task_type?: string | null;\n}\n\nfunction getApiKey(model: GeminiModelConfig | undefined): string {\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n const apiKey =\n config?.credential_key ||\n config?.api_key ||\n (typeof process !== \"undefined\"\n ? process.env?.GOOGLE_API_KEY || process.env?.GEMINI_API_KEY\n : undefined);\n if (!apiKey) {\n throw new Error(\n \"Missing Google API key: set provider_config.credential_key or the GOOGLE_API_KEY / GEMINI_API_KEY environment variable.\"\n );\n }\n return apiKey;\n}\n\nfunction getModelName(model: GeminiModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\n/**\n * Recursively strip JSON Schema properties that the Gemini API does not support\n * (e.g. `additionalProperties`). Returns a shallow-cloned schema without mutating the original.\n */\nfunction sanitizeSchemaForGemini(schema: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(schema)) {\n if (key === \"additionalProperties\") continue;\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n result[key] = sanitizeSchemaForGemini(value as Record<string, unknown>);\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n\nexport const Gemini_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.prompt)) {\n getLogger().warn(\n \"Gemini_TextGeneration: array input received; processing sequentially (no native batch support)\"\n );\n const prompts = input.prompt as string[];\n const results: string[] = [];\n for (const item of prompts) {\n const r = await Gemini_TextGeneration(\n { ...input, prompt: item },\n model,\n update_progress,\n signal\n );\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n const logger = getLogger();\n const timerLabel = `gemini:TextGeneration:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting Gemini text generation\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n topP: input.topP,\n },\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }],\n });\n\n const text = result.response.text();\n update_progress(100, \"Completed Gemini text generation\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { text };\n};\n\nexport const Gemini_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `gemini:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting Gemini text embedding\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const embeddingModel = genAI.getGenerativeModel({\n model: getModelName(model),\n });\n\n const taskType =\n (model?.provider_config?.embedding_task_type as TaskType) || (\"RETRIEVAL_DOCUMENT\" as TaskType);\n\n if (Array.isArray(input.text)) {\n const result = await embeddingModel.batchEmbedContents({\n requests: input.text.map((t) => ({\n content: { role: \"user\", parts: [{ text: t }] },\n taskType,\n })),\n });\n update_progress(100, \"Completed Gemini text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n return {\n vector: result.embeddings.map((e) => new Float32Array(e.values)),\n };\n }\n\n const result = await embeddingModel.embedContent({\n content: { role: \"user\", parts: [{ text: input.text as string }] },\n taskType,\n });\n\n update_progress(100, \"Completed Gemini text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { vector: new Float32Array(result.embedding.values) };\n};\n\nexport const Gemini_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.text)) {\n getLogger().warn(\n \"Gemini_TextRewriter: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const results: string[] = [];\n for (const item of texts) {\n const r = await Gemini_TextRewriter({ ...input, text: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n update_progress(0, \"Starting Gemini text rewriting\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: input.prompt as string,\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.text as string }] }],\n });\n\n const text = result.response.text();\n update_progress(100, \"Completed Gemini text rewriting\");\n return { text };\n};\n\nexport const Gemini_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.text)) {\n getLogger().warn(\n \"Gemini_TextSummary: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const results: string[] = [];\n for (const item of texts) {\n const r = await Gemini_TextSummary({ ...input, text: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n update_progress(0, \"Starting Gemini text summarization\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: \"Summarize the following text concisely.\",\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.text as string }] }],\n });\n\n const text = result.response.text();\n update_progress(100, \"Completed Gemini text summarization\");\n return { text };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const Gemini_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n GeminiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n topP: input.topP,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n yield { type: \"text-delta\", port: \"text\", textDelta: text };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n\nexport const Gemini_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n GeminiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: input.prompt as string,\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.text as string }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n yield { type: \"text-delta\", port: \"text\", textDelta: text };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n\nexport const Gemini_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n GeminiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: \"Summarize the following text concisely.\",\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.text as string }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n yield { type: \"text-delta\", port: \"text\", textDelta: text };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n\nexport const Gemini_CountTokens: AiProviderRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n GeminiModelConfig\n> = async (input, model, onProgress, signal) => {\n if (Array.isArray(input.text)) {\n getLogger().warn(\n \"Gemini_CountTokens: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const counts: number[] = [];\n for (const item of texts) {\n const r = await Gemini_CountTokens({ ...input, text: item }, model, onProgress, signal);\n counts.push(r.count as number);\n }\n return { count: counts };\n }\n\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({ model: getModelName(model) });\n const result = await genModel.countTokens(input.text as string);\n return { count: result.totalTokens };\n};\n\nexport const Gemini_CountTokens_Reactive: AiProviderReactiveRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n GeminiModelConfig\n> = async (input, _output, _model) => {\n if (Array.isArray(input.text)) {\n return { count: (input.text as string[]).map((t) => Math.ceil(t.length / 4)) };\n }\n return { count: Math.ceil((input.text as string).length / 4) };\n};\n\n// ========================================================================\n// Structured output implementations (object mode)\n// ========================================================================\n\nexport const Gemini_StructuredGeneration: AiProviderRunFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal, outputSchema) => {\n update_progress(0, \"Starting Gemini structured generation\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const schema = input.outputSchema ?? outputSchema;\n\n const sanitizedSchema = sanitizeSchemaForGemini(schema as Record<string, unknown>);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n responseMimeType: \"application/json\",\n responseSchema: sanitizedSchema as any,\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const result = await genModel.generateContent({\n contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }],\n });\n\n const text = result.response.text();\n update_progress(100, \"Completed Gemini structured generation\");\n return { object: JSON.parse(text) };\n};\n\nexport const Gemini_StructuredGeneration_Stream: AiProviderStreamFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n GeminiModelConfig\n> = async function* (\n input,\n model,\n signal,\n outputSchema\n): AsyncIterable<StreamEvent<StructuredGenerationTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const schema = input.outputSchema ?? outputSchema;\n\n const sanitizedSchema = sanitizeSchemaForGemini(schema as Record<string, unknown>);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n responseMimeType: \"application/json\",\n responseSchema: sanitizedSchema as any,\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }] },\n { signal }\n );\n\n let accumulatedJson = \"\";\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n accumulatedJson += text;\n const partial = parsePartialJson(accumulatedJson);\n if (partial !== undefined) {\n yield { type: \"object-delta\", port: \"object\", objectDelta: partial };\n }\n }\n }\n\n let finalObject: Record<string, unknown>;\n try {\n finalObject = JSON.parse(accumulatedJson);\n } catch {\n finalObject = parsePartialJson(accumulatedJson) ?? {};\n }\n yield { type: \"finish\", data: { object: finalObject } as StructuredGenerationTaskOutput };\n};\n\n// ========================================================================\n// Tool calling implementations\n// ========================================================================\n\n/**\n * Build Gemini-format contents from the task input.\n * When `input.messages` is present (multi-turn agent loop), converts the\n * provider-agnostic ChatMessage format to Gemini's Content format.\n * Otherwise falls back to a single user content from `input.prompt`.\n */\nfunction buildGeminiContents(input: ToolCallingTaskInput): any[] {\n const inputMessages = input.messages;\n if (!inputMessages || inputMessages.length === 0) {\n return [{ role: \"user\", parts: [{ text: input.prompt }] }];\n }\n\n // Build a lookup from tool_use_id -> tool name for functionResponse mapping\n const toolUseNames = new Map<string, string>();\n for (const msg of inputMessages) {\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n toolUseNames.set(block.id, block.name);\n }\n }\n }\n }\n\n const contents: any[] = [];\n for (const msg of inputMessages) {\n if (msg.role === \"user\") {\n if (typeof msg.content === \"string\") {\n contents.push({ role: \"user\", parts: [{ text: msg.content }] });\n } else if (Array.isArray(msg.content)) {\n const parts: any[] = [];\n for (const block of msg.content) {\n if (block.type === \"text\") {\n parts.push({ text: block.text });\n } else if (block.type === \"image\" || block.type === \"audio\") {\n parts.push({ inlineData: { mimeType: block.mimeType, data: block.data } });\n }\n }\n contents.push({ role: \"user\", parts });\n } else {\n contents.push({ role: \"user\", parts: [{ text: msg.content }] });\n }\n } else if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n const parts: any[] = [];\n for (const block of msg.content) {\n if (block.type === \"text\" && block.text) {\n parts.push({ text: block.text });\n } else if (block.type === \"tool_use\") {\n parts.push({ functionCall: { name: block.name, args: block.input } });\n }\n }\n if (parts.length > 0) {\n contents.push({ role: \"model\", parts });\n }\n } else if (msg.role === \"tool\" && Array.isArray(msg.content)) {\n const parts = msg.content.map((block: any) => {\n const name = toolUseNames.get(block.tool_use_id) ?? \"unknown\";\n let response: Record<string, unknown>;\n if (typeof block.content === \"string\") {\n try {\n response = JSON.parse(block.content);\n } catch {\n response = { result: block.content };\n }\n } else if (Array.isArray(block.content)) {\n // Extract text from multi-part content; Gemini functionResponse only supports JSON\n const textParts = (block.content as Array<Record<string, unknown>>)\n .filter((b) => b.type === \"text\")\n .map((b) => b.text as string);\n try {\n response = JSON.parse(textParts.join(\"\"));\n } catch {\n response = { result: textParts.join(\"\") };\n }\n } else {\n response = {};\n }\n return { functionResponse: { name, response } };\n });\n contents.push({ role: \"user\", parts });\n }\n }\n return contents;\n}\n\nfunction mapGeminiToolConfig(\n toolChoice: string | undefined\n):\n | { functionCallingConfig: { mode: FunctionCallingMode; allowedFunctionNames?: string[] } }\n | undefined {\n if (!toolChoice || toolChoice === \"auto\") {\n return { functionCallingConfig: { mode: \"AUTO\" as FunctionCallingMode } };\n }\n if (toolChoice === \"none\") {\n return { functionCallingConfig: { mode: \"NONE\" as FunctionCallingMode } };\n }\n if (toolChoice === \"required\") {\n return { functionCallingConfig: { mode: \"ANY\" as FunctionCallingMode } };\n }\n // Specific tool name\n return {\n functionCallingConfig: {\n mode: \"ANY\" as FunctionCallingMode,\n allowedFunctionNames: [toolChoice],\n },\n };\n}\n\nexport const Gemini_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n GeminiModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.prompt)) {\n getLogger().warn(\n \"Gemini_ToolCalling: array input received; processing sequentially (no native batch support)\"\n );\n const prompts = input.prompt as string[];\n const texts: string[] = [];\n const toolCallsList: ToolCalls[] = [];\n for (const item of prompts) {\n const r = await Gemini_ToolCalling(\n { ...input, prompt: item },\n model,\n update_progress,\n signal\n );\n texts.push(r.text as string);\n toolCallsList.push(r.toolCalls as ToolCalls);\n }\n return { text: texts, toolCalls: toolCallsList } as unknown as ToolCallingTaskOutput;\n }\n\n update_progress(0, \"Starting Gemini tool calling\");\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const functionDeclarations = input.tools.map((t: ToolDefinition) => ({\n name: t.name,\n description: buildToolDescription(t),\n parameters: sanitizeSchemaForGemini(t.inputSchema as Record<string, unknown>) as any,\n }));\n\n const toolConfig = mapGeminiToolConfig(input.toolChoice);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n tools: [{ functionDeclarations }],\n toolConfig: toolConfig as any,\n systemInstruction: input.systemPrompt || undefined,\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const contents = buildGeminiContents(input);\n\n const result = await genModel.generateContent({ contents });\n\n const parts = result.response.candidates?.[0]?.content?.parts ?? [];\n\n const textParts: string[] = [];\n const toolCalls: ToolCalls = [];\n let callIndex = 0;\n\n for (const part of parts) {\n if (\"text\" in part && part.text) {\n textParts.push(part.text);\n }\n if (\"functionCall\" in part && part.functionCall) {\n const id = `call_${callIndex++}`;\n toolCalls.push({\n id,\n name: part.functionCall.name,\n input: (part.functionCall.args as Record<string, unknown>) ?? {},\n });\n }\n }\n\n update_progress(100, \"Completed Gemini tool calling\");\n return { text: textParts.join(\"\"), toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const Gemini_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n GeminiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const functionDeclarations = input.tools.map((t: ToolDefinition) => ({\n name: t.name,\n description: buildToolDescription(t),\n parameters: sanitizeSchemaForGemini(t.inputSchema as Record<string, unknown>) as any,\n }));\n\n const toolConfig = mapGeminiToolConfig(input.toolChoice);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n tools: [{ functionDeclarations }],\n toolConfig: toolConfig as any,\n systemInstruction: input.systemPrompt || undefined,\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const contents = buildGeminiContents(input);\n\n const result = await genModel.generateContentStream({ contents }, { signal });\n\n let accumulatedText = \"\";\n const toolCalls: ToolCalls = [];\n let callIndex = 0;\n\n for await (const chunk of result.stream) {\n const parts = chunk.candidates?.[0]?.content?.parts ?? [];\n for (const part of parts) {\n if (\"text\" in part && part.text) {\n accumulatedText += part.text;\n yield { type: \"text-delta\", port: \"text\", textDelta: part.text };\n }\n if (\"functionCall\" in part && part.functionCall) {\n const id = `call_${callIndex++}`;\n toolCalls.push({\n id,\n name: part.functionCall.name,\n input: (part.functionCall.args as Record<string, unknown>) ?? {},\n });\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: [...toolCalls] };\n }\n }\n }\n\n const validToolCalls = filterValidToolCalls(toolCalls, input.tools);\n yield {\n type: \"finish\",\n data: { text: accumulatedText, toolCalls: validToolCalls } as ToolCallingTaskOutput,\n };\n};\n\n// ========================================================================\n// Model info\n// ========================================================================\n\nexport const Gemini_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n GeminiModelConfig\n> = async (input) => {\n return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n };\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const GEMINI_TASKS: Record<string, AiProviderRunFn<any, any, GeminiModelConfig>> = {\n CountTokensTask: Gemini_CountTokens,\n ModelInfoTask: Gemini_ModelInfo,\n TextGenerationTask: Gemini_TextGeneration,\n TextEmbeddingTask: Gemini_TextEmbedding,\n TextRewriterTask: Gemini_TextRewriter,\n TextSummaryTask: Gemini_TextSummary,\n StructuredGenerationTask: Gemini_StructuredGeneration,\n ToolCallingTask: Gemini_ToolCalling,\n};\n\nexport const GEMINI_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, GeminiModelConfig>\n> = {\n TextGenerationTask: Gemini_TextGeneration_Stream,\n TextRewriterTask: Gemini_TextRewriter_Stream,\n TextSummaryTask: Gemini_TextSummary_Stream,\n StructuredGenerationTask: Gemini_StructuredGeneration_Stream,\n ToolCallingTask: Gemini_ToolCalling_Stream,\n};\n\nexport const GEMINI_REACTIVE_TASKS: Record<\n string,\n AiProviderReactiveRunFn<any, any, GeminiModelConfig>\n> = {\n CountTokensTask: Gemini_CountTokens_Reactive,\n};\n",
6
6
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getLogger, globalServiceRegistry, WORKER_SERVER } from \"@workglow/util\";\nimport {\n GEMINI_REACTIVE_TASKS,\n GEMINI_STREAM_TASKS,\n GEMINI_TASKS,\n} from \"./common/Gemini_JobRunFns\";\nimport { GoogleGeminiProvider } from \"./GoogleGeminiProvider\";\n\nexport function GEMINI_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new GoogleGeminiProvider(\n GEMINI_TASKS,\n GEMINI_STREAM_TASKS,\n GEMINI_REACTIVE_TASKS\n ).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n getLogger().info(\"GEMINI_WORKER_JOBRUN registered\");\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "DF4F1FD41CF3889F64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "951B337FD24F757C64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { AiProviderReactiveRunFn, AiProviderRunFn, AiProviderStreamFn, BackgroundRemovalTaskInput, BackgroundRemovalTaskOutput, CountTokensTaskInput, CountTokensTaskOutput, DownloadModelTaskRunInput, DownloadModelTaskRunOutput, ImageClassificationTaskInput, ImageClassificationTaskOutput, ImageEmbeddingTaskInput, ImageEmbeddingTaskOutput, ImageSegmentationTaskInput, ImageSegmentationTaskOutput, ImageToTextTaskInput, ImageToTextTaskOutput, ModelInfoTaskInput, ModelInfoTaskOutput, ObjectDetectionTaskInput, ObjectDetectionTaskOutput, TextClassificationTaskInput, TextClassificationTaskOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextFillMaskTaskInput, TextFillMaskTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextLanguageDetectionTaskInput, TextLanguageDetectionTaskOutput, TextNamedEntityRecognitionTaskInput, TextNamedEntityRecognitionTaskOutput, TextQuestionAnswerTaskInput, TextQuestionAnswerTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, TextTranslationTaskInput, TextTranslationTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput, UnloadModelTaskRunInput, UnloadModelTaskRunOutput } from "@workglow/ai";
6
+ import type { AiProviderReactiveRunFn, AiProviderRunFn, AiProviderStreamFn, BackgroundRemovalTaskInput, BackgroundRemovalTaskOutput, CountTokensTaskInput, CountTokensTaskOutput, DownloadModelTaskRunInput, DownloadModelTaskRunOutput, ImageClassificationTaskInput, ImageClassificationTaskOutput, ImageEmbeddingTaskInput, ImageEmbeddingTaskOutput, ImageSegmentationTaskInput, ImageSegmentationTaskOutput, ImageToTextTaskInput, ImageToTextTaskOutput, ModelInfoTaskInput, ModelInfoTaskOutput, ObjectDetectionTaskInput, ObjectDetectionTaskOutput, StructuredGenerationTaskInput, StructuredGenerationTaskOutput, TextClassificationTaskInput, TextClassificationTaskOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextFillMaskTaskInput, TextFillMaskTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextLanguageDetectionTaskInput, TextLanguageDetectionTaskOutput, TextNamedEntityRecognitionTaskInput, TextNamedEntityRecognitionTaskOutput, TextQuestionAnswerTaskInput, TextQuestionAnswerTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, TextTranslationTaskInput, TextTranslationTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput, ToolCalls, UnloadModelTaskRunInput, UnloadModelTaskRunOutput } from "@workglow/ai";
7
7
  import { TypedArray } from "@workglow/util";
8
8
  import { HfTransformersOnnxModelConfig } from "./HFT_ModelSchema";
9
9
  /**
@@ -118,11 +118,13 @@ export declare const HFT_CountTokens_Reactive: AiProviderReactiveRunFn<CountToke
118
118
  */
119
119
  export declare function parseToolCallsFromText(responseText: string): {
120
120
  text: string;
121
- toolCalls: Record<string, unknown>;
121
+ toolCalls: ToolCalls;
122
122
  };
123
123
  export declare const HFT_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, HfTransformersOnnxModelConfig>;
124
124
  export declare const HFT_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, HfTransformersOnnxModelConfig>;
125
125
  export declare const HFT_ModelInfo: AiProviderRunFn<ModelInfoTaskInput, ModelInfoTaskOutput, HfTransformersOnnxModelConfig>;
126
+ export declare const HFT_StructuredGeneration: AiProviderRunFn<StructuredGenerationTaskInput, StructuredGenerationTaskOutput, HfTransformersOnnxModelConfig>;
127
+ export declare const HFT_StructuredGeneration_Stream: AiProviderStreamFn<StructuredGenerationTaskInput, StructuredGenerationTaskOutput, HfTransformersOnnxModelConfig>;
126
128
  /**
127
129
  * All HuggingFace Transformers task run functions, keyed by task type name.
128
130
  * Pass this to `new HuggingFaceTransformersProvider(HFT_TASKS, HFT_STREAM_TASKS, HFT_REACTIVE_TASKS)` when the
@@ -1502,10 +1504,83 @@ export declare const HFT_TASKS: {
1502
1504
  readonly ToolCallingTask: AiProviderRunFn<ToolCallingTaskInput, {
1503
1505
  text: string | string[];
1504
1506
  toolCalls: {
1507
+ name: string;
1508
+ id: string;
1509
+ input: {
1510
+ [x: string]: unknown;
1511
+ };
1512
+ } | {
1513
+ name: string;
1514
+ id: string;
1515
+ input: {
1516
+ [x: string]: unknown;
1517
+ };
1518
+ }[];
1519
+ }, {
1520
+ title?: string | undefined;
1521
+ description?: string | undefined;
1522
+ model_id?: string | undefined;
1523
+ tasks?: string[] | undefined;
1524
+ metadata?: {
1505
1525
  [x: string]: unknown;
1526
+ } | undefined;
1527
+ provider: "HF_TRANSFORMERS_ONNX";
1528
+ provider_config: {
1529
+ normalize?: boolean | undefined;
1530
+ dtype?: "auto" | "fp32" | "fp16" | "q8" | "int8" | "uint8" | "q4" | "bnb4" | "q4f16" | undefined;
1531
+ device?: "cpu" | "gpu" | "webgpu" | "wasm" | "metal" | undefined;
1532
+ execution_providers?: string[] | undefined;
1533
+ intra_op_num_threads?: number | undefined;
1534
+ inter_op_num_threads?: number | undefined;
1535
+ use_external_data_format?: boolean | undefined;
1536
+ pooling?: "mean" | "last_token" | "cls" | undefined;
1537
+ language_style?: string | undefined;
1538
+ mrl?: boolean | undefined;
1539
+ pipeline: "feature-extraction";
1540
+ model_path: string;
1541
+ native_dimensions: number;
1506
1542
  } | {
1543
+ normalize?: boolean | undefined;
1544
+ dtype?: "auto" | "fp32" | "fp16" | "q8" | "int8" | "uint8" | "q4" | "bnb4" | "q4f16" | undefined;
1545
+ device?: "cpu" | "gpu" | "webgpu" | "wasm" | "metal" | undefined;
1546
+ execution_providers?: string[] | undefined;
1547
+ intra_op_num_threads?: number | undefined;
1548
+ inter_op_num_threads?: number | undefined;
1549
+ use_external_data_format?: boolean | undefined;
1550
+ native_dimensions?: number | undefined;
1551
+ pooling?: "mean" | "last_token" | "cls" | undefined;
1552
+ language_style?: string | undefined;
1553
+ mrl?: boolean | undefined;
1554
+ pipeline: "fill-mask" | "token-classification" | "text-generation" | "text2text-generation" | "text-classification" | "summarization" | "translation" | "zero-shot-classification" | "question-answering" | "background-removal" | "image-segmentation" | "depth-estimation" | "image-classification" | "image-to-image" | "object-detection" | "image-feature-extraction" | "audio-classification" | "automatic-speech-recognition" | "text-to-speech" | "document-question-answering" | "image-to-text" | "zero-shot-audio-classification" | "zero-shot-image-classification" | "zero-shot-object-detection";
1555
+ model_path: string;
1556
+ };
1557
+ }>;
1558
+ readonly StructuredGenerationTask: AiProviderRunFn<{
1559
+ maxTokens?: number | undefined;
1560
+ temperature?: number | undefined;
1561
+ model: string | {
1507
1562
  [x: string]: unknown;
1508
- }[];
1563
+ title?: string | undefined;
1564
+ description?: string | undefined;
1565
+ model_id?: string | undefined;
1566
+ tasks?: string[] | undefined;
1567
+ metadata?: {
1568
+ [x: string]: unknown;
1569
+ } | undefined;
1570
+ provider: string;
1571
+ provider_config: {
1572
+ [x: string]: unknown;
1573
+ credential_key?: string | undefined;
1574
+ };
1575
+ };
1576
+ prompt: string;
1577
+ outputSchema: {
1578
+ [x: string]: unknown;
1579
+ };
1580
+ }, {
1581
+ object: {
1582
+ [x: string]: unknown;
1583
+ };
1509
1584
  }, {
1510
1585
  title?: string | undefined;
1511
1586
  description?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"HFT_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/hf-transformers/common/HFT_JobRunFns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HFT_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/hf-transformers/common/HFT_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,mCAAmC,EACnC,oCAAoC,EACpC,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EAET,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAkBtB,OAAO,EAA+B,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AA0BlE;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAoOD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,eAAe,CACxC,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,CAc9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,eAAe,CACtC,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,CAiB9B,CAAC;AAwCF;;;GAGG;AAEH,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,CA2E9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,CAoF9B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,eAAe,CACrD,8BAA8B,EAC9B,+BAA+B,EAC/B,6BAA6B,CAyC9B,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,eAAe,CAC1D,mCAAmC,EACnC,oCAAoC,EACpC,6BAA6B,CAwC9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,CAiC9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,CA0C9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,CAgC9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,CAgD9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAiC9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,CAwD9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,0BAA0B,EAC1B,2BAA2B,EAC3B,6BAA6B,CAsB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAa9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,0BAA0B,EAC1B,2BAA2B,EAC3B,6BAA6B,CAW9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,CAuB9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,eAAe,CACnD,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,CA0C9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,CAyC9B,CAAC;AAoIF;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;kBAShD,MAAM;;EA6E5B;AAMD,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,CAkB9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CACtD,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,CAoB9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CA0B9B,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAC5D,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,CA+C9B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,CAuB9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAkB9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,uBAAuB,CAC5D,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAG9B,CAAC;AAiBF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;CACtB,CA2HA;AAwCD,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAuF9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAiF9B,CAAC;AAMF,eAAO,MAAM,aAAa,EAAE,eAAe,CACzC,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,CAgE9B,CAAC;AAiCF,eAAO,MAAM,wBAAwB,EAAE,eAAe,CACpD,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,CAgC9B,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,kBAAkB,CAC9D,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,CA2D9B,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBZ,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAS5D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC,MAAM,EACN,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAGjE,CAAC"}
@@ -11,6 +11,8 @@ import {
11
11
  HFT_ObjectDetection,
12
12
  HFT_REACTIVE_TASKS,
13
13
  HFT_STREAM_TASKS,
14
+ HFT_StructuredGeneration,
15
+ HFT_StructuredGeneration_Stream,
14
16
  HFT_TASKS,
15
17
  HFT_TextClassification,
16
18
  HFT_TextEmbedding,
@@ -33,13 +35,13 @@ import {
33
35
  clearPipelineCache,
34
36
  createToolCallMarkupFilter,
35
37
  parseToolCallsFromText
36
- } from "../index-h0jxhgvf.js";
38
+ } from "../index-tvb9nd5b.js";
37
39
  import {
38
40
  HfTransformersOnnxModelConfigSchema,
39
41
  HfTransformersOnnxModelRecordSchema,
40
42
  HfTransformersOnnxModelSchema,
41
43
  HuggingFaceTransformersProvider
42
- } from "../index-94pc6ggt.js";
44
+ } from "../index-qett8dfp.js";
43
45
  import {
44
46
  AudioPipelineUseCase,
45
47
  HF_TRANSFORMERS_ONNX,
@@ -94,6 +96,8 @@ export {
94
96
  HFT_TextEmbedding,
95
97
  HFT_TextClassification,
96
98
  HFT_TASKS,
99
+ HFT_StructuredGeneration_Stream,
100
+ HFT_StructuredGeneration,
97
101
  HFT_STREAM_TASKS,
98
102
  HFT_REACTIVE_TASKS,
99
103
  HFT_ObjectDetection,
@@ -109,4 +113,4 @@ export {
109
113
  AudioPipelineUseCase
110
114
  };
111
115
 
112
- //# debugId=F4A47A1E4C74B85964756E2164756E21
116
+ //# debugId=9271A781CE2A6F1C64756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getLogger, globalServiceRegistry, WORKER_SERVER } from \"@workglow/util\";\nimport { HFT_REACTIVE_TASKS, HFT_STREAM_TASKS, HFT_TASKS } from \"./common/HFT_JobRunFns\";\nimport { HuggingFaceTransformersProvider } from \"./HuggingFaceTransformersProvider\";\n\nexport function HFT_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new HuggingFaceTransformersProvider(\n HFT_TASKS,\n HFT_STREAM_TASKS,\n HFT_REACTIVE_TASKS\n ).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n getLogger().info(\"HFT_WORKER_JOBRUN registered\");\n}\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AAIO,SAAS,0BAA0B,GAAG;AAAA,EAC3C,MAAM,eAAe,sBAAsB,IAAI,aAAa;AAAA,EAC5D,IAAI,gCACF,WACA,kBACA,kBACF,EAAE,uBAAuB,YAAY;AAAA,EACrC,aAAa,UAAU;AAAA,EACvB,UAAU,EAAE,KAAK,8BAA8B;AAAA;",
8
- "debugId": "F4A47A1E4C74B85964756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AAIO,SAAS,0BAA0B,GAAG;AAAA,EAC3C,MAAM,eAAe,sBAAsB,IAAI,aAAa;AAAA,EAC5D,IAAI,gCACF,WACA,kBACA,kBACF,EAAE,uBAAuB,YAAY;AAAA,EACrC,aAAa,UAAU;AAAA,EACvB,UAAU,EAAE,KAAK,8BAA8B;AAAA;",
8
+ "debugId": "9271A781CE2A6F1C64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -163,7 +163,7 @@ class HuggingFaceTransformersProvider extends AiProvider {
163
163
  }
164
164
  async dispose() {
165
165
  if (this.tasks) {
166
- const { clearPipelineCache } = await import("./HFT_JobRunFns-847nv145.js");
166
+ const { clearPipelineCache } = await import("./HFT_JobRunFns-yx418d60.js");
167
167
  clearPipelineCache();
168
168
  }
169
169
  }