@workglow/ai-provider 0.0.104 → 0.0.106

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 (73) hide show
  1. package/dist/{HFT_JobRunFns-66fave8m.js → HFT_JobRunFns-c40ex37f.js} +11 -3
  2. package/dist/{HFT_JobRunFns-66fave8m.js.map → HFT_JobRunFns-c40ex37f.js.map} +1 -1
  3. package/dist/anthropic/AnthropicProvider.d.ts +1 -1
  4. package/dist/anthropic/AnthropicProvider.d.ts.map +1 -1
  5. package/dist/anthropic/common/Anthropic_JobRunFns.d.ts +3 -1
  6. package/dist/anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -1
  7. package/dist/anthropic/common/Anthropic_ModelSchema.d.ts.map +1 -1
  8. package/dist/anthropic/index.js +144 -6
  9. package/dist/anthropic/index.js.map +4 -4
  10. package/dist/google-gemini/GoogleGeminiProvider.d.ts +1 -1
  11. package/dist/google-gemini/GoogleGeminiProvider.d.ts.map +1 -1
  12. package/dist/google-gemini/common/Gemini_JobRunFns.d.ts +3 -1
  13. package/dist/google-gemini/common/Gemini_JobRunFns.d.ts.map +1 -1
  14. package/dist/google-gemini/common/Gemini_ModelSchema.d.ts.map +1 -1
  15. package/dist/google-gemini/index.js +116 -4
  16. package/dist/google-gemini/index.js.map +3 -3
  17. package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts +1 -1
  18. package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts.map +1 -1
  19. package/dist/hf-transformers/common/HFT_JobRunFns.d.ts +111 -1
  20. package/dist/hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
  21. package/dist/hf-transformers/index.js +14 -6
  22. package/dist/hf-transformers/index.js.map +3 -3
  23. package/dist/{index-w496eeda.js → index-14pbwsc9.js} +3 -2
  24. package/dist/{index-w496eeda.js.map → index-14pbwsc9.js.map} +3 -3
  25. package/dist/{index-7et44e16.js → index-4fr8p4gy.js} +302 -4
  26. package/dist/index-4fr8p4gy.js.map +10 -0
  27. package/dist/{index-gjc388y4.js → index-5hjgs1z7.js} +3 -2
  28. package/dist/{index-gjc388y4.js.map → index-5hjgs1z7.js.map} +4 -4
  29. package/dist/{index-c5z3v9gn.js → index-5qjdc78z.js} +3 -2
  30. package/dist/{index-c5z3v9gn.js.map → index-5qjdc78z.js.map} +4 -4
  31. package/dist/{index-t54dgrfj.js → index-aef54vq3.js} +3 -2
  32. package/dist/{index-t54dgrfj.js.map → index-aef54vq3.js.map} +4 -4
  33. package/dist/{index-795ethaq.js → index-cejxxqcz.js} +4 -3
  34. package/dist/{index-795ethaq.js.map → index-cejxxqcz.js.map} +3 -3
  35. package/dist/{index-79rqre58.js → index-drcnh4z5.js} +3 -2
  36. package/dist/{index-79rqre58.js.map → index-drcnh4z5.js.map} +4 -4
  37. package/dist/{index-cfd8ne0j.js → index-xc6m9mcp.js} +3 -2
  38. package/dist/{index-cfd8ne0j.js.map → index-xc6m9mcp.js.map} +3 -3
  39. package/dist/index.js +7 -7
  40. package/dist/provider-hf-inference/HfInferenceProvider.d.ts +1 -1
  41. package/dist/provider-hf-inference/HfInferenceProvider.d.ts.map +1 -1
  42. package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts +3 -1
  43. package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts.map +1 -1
  44. package/dist/provider-hf-inference/common/HFI_ModelSchema.d.ts.map +1 -1
  45. package/dist/provider-hf-inference/index.js +165 -5
  46. package/dist/provider-hf-inference/index.js.map +3 -3
  47. package/dist/provider-llamacpp/LlamaCppProvider.d.ts +1 -1
  48. package/dist/provider-llamacpp/LlamaCppProvider.d.ts.map +1 -1
  49. package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts +3 -1
  50. package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts.map +1 -1
  51. package/dist/provider-llamacpp/index.js +140 -6
  52. package/dist/provider-llamacpp/index.js.map +4 -4
  53. package/dist/provider-ollama/OllamaProvider.d.ts +1 -1
  54. package/dist/provider-ollama/OllamaProvider.d.ts.map +1 -1
  55. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts +3 -1
  56. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts.map +1 -1
  57. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts +3 -1
  58. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -1
  59. package/dist/provider-ollama/index.browser.js +122 -4
  60. package/dist/provider-ollama/index.browser.js.map +4 -4
  61. package/dist/provider-ollama/index.js +123 -6
  62. package/dist/provider-ollama/index.js.map +4 -4
  63. package/dist/provider-openai/OpenAiProvider.d.ts +1 -1
  64. package/dist/provider-openai/OpenAiProvider.d.ts.map +1 -1
  65. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts +3 -1
  66. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -1
  67. package/dist/provider-openai/common/OpenAI_ModelSchema.d.ts.map +1 -1
  68. package/dist/provider-openai/index.js +164 -6
  69. package/dist/provider-openai/index.js.map +4 -4
  70. package/dist/tf-mediapipe/index.js +3 -3
  71. package/dist/tf-mediapipe/index.js.map +3 -3
  72. package/package.json +11 -11
  73. package/dist/index-7et44e16.js.map +0 -10
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/provider-hf-inference/common/HFI_JobRunFns.ts", "../src/provider-hf-inference/HFI_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 { InferenceProviderOrPolicy } from \"@huggingface/inference\";\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger } from \"@workglow/util\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nlet _sdk: typeof import(\"@huggingface/inference\") | undefined;\nasync function loadHfInferenceSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"@huggingface/inference\");\n } catch {\n throw new Error(\n \"@huggingface/inference is required for Hugging Face Inference tasks. Install it with: bun add @huggingface/inference\"\n );\n }\n }\n return _sdk;\n}\n\ninterface ResolvedProviderConfig {\n readonly credential_key?: string;\n readonly api_key?: string;\n readonly model_name?: string;\n readonly provider?: string;\n}\n\nasync function getClient(model: HfInferenceModelConfig | undefined) {\n const sdk = await loadHfInferenceSDK();\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n const apiKey =\n config?.credential_key ||\n config?.api_key ||\n (typeof process !== \"undefined\" ? process.env?.HF_TOKEN : undefined);\n if (!apiKey) {\n throw new Error(\n \"Missing Hugging Face API key: set provider_config.credential_key or the HF_TOKEN environment variable.\"\n );\n }\n return new sdk.InferenceClient(apiKey);\n}\n\nfunction getModelName(model: HfInferenceModelConfig | 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\nfunction getProvider(\n model: HfInferenceModelConfig | undefined\n): InferenceProviderOrPolicy | undefined {\n return model?.provider_config?.provider as InferenceProviderOrPolicy | undefined;\n}\n\nexport const HFI_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextGeneration:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text generation\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n if (Array.isArray(input.text)) {\n const embeddings = await Promise.all(\n input.text.map((text) =>\n client.featureExtraction(\n {\n model: modelName,\n inputs: text,\n },\n { signal }\n )\n )\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n return {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n };\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { vector: new Float32Array(embedding as unknown as number[]) };\n};\n\nexport const HFI_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text rewriting\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text summarization\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const HFI_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n\nexport const HFI_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n\nexport const HFI_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const HFI_TASKS: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>> = {\n TextGenerationTask: HFI_TextGeneration,\n TextEmbeddingTask: HFI_TextEmbedding,\n TextRewriterTask: HFI_TextRewriter,\n TextSummaryTask: HFI_TextSummary,\n};\n\nexport const HFI_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, HfInferenceModelConfig>\n> = {\n TextGenerationTask: HFI_TextGeneration_Stream,\n TextRewriterTask: HFI_TextRewriter_Stream,\n TextSummaryTask: HFI_TextSummary_Stream,\n};\n",
5
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { InferenceProviderOrPolicy } from \"@huggingface/inference\";\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\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 { buildToolDescription, filterValidToolCalls } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger, parsePartialJson } from \"@workglow/util\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nlet _sdk: typeof import(\"@huggingface/inference\") | undefined;\nasync function loadHfInferenceSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"@huggingface/inference\");\n } catch {\n throw new Error(\n \"@huggingface/inference is required for Hugging Face Inference tasks. Install it with: bun add @huggingface/inference\"\n );\n }\n }\n return _sdk;\n}\n\ninterface ResolvedProviderConfig {\n readonly credential_key?: string;\n readonly api_key?: string;\n readonly model_name?: string;\n readonly provider?: string;\n}\n\nasync function getClient(model: HfInferenceModelConfig | undefined) {\n const sdk = await loadHfInferenceSDK();\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n const apiKey =\n config?.credential_key ||\n config?.api_key ||\n (typeof process !== \"undefined\" ? process.env?.HF_TOKEN : undefined);\n if (!apiKey) {\n throw new Error(\n \"Missing Hugging Face API key: set provider_config.credential_key or the HF_TOKEN environment variable.\"\n );\n }\n return new sdk.InferenceClient(apiKey);\n}\n\nfunction getModelName(model: HfInferenceModelConfig | 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\nfunction getProvider(\n model: HfInferenceModelConfig | undefined\n): InferenceProviderOrPolicy | undefined {\n return model?.provider_config?.provider as InferenceProviderOrPolicy | undefined;\n}\n\nexport const HFI_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextGeneration:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text generation\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n if (Array.isArray(input.text)) {\n const embeddings = await Promise.all(\n input.text.map((text) =>\n client.featureExtraction(\n {\n model: modelName,\n inputs: text,\n },\n { signal }\n )\n )\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n return {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n };\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { vector: new Float32Array(embedding as unknown as number[]) };\n};\n\nexport const HFI_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text rewriting\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text summarization\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const HFI_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n\nexport const HFI_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n\nexport const HFI_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n\n// ========================================================================\n// Tool calling implementations\n// ========================================================================\n\nfunction mapHFIToolChoice(\n toolChoice: string | undefined\n): \"auto\" | \"none\" | \"required\" | undefined {\n if (!toolChoice || toolChoice === \"auto\") return \"auto\";\n if (toolChoice === \"none\") return \"none\";\n if (toolChoice === \"required\") return \"required\";\n // Specific tool names are not supported by HF Inference; fall back to \"auto\"\n return \"auto\";\n}\n\nexport const HFI_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference tool calling\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = input.tools.map((t: ToolDefinition) => ({\n type: \"function\" as const,\n function: {\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n },\n }));\n\n const messages: Array<{ role: \"system\" | \"user\"; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const toolChoice = mapHFIToolChoice(input.toolChoice);\n\n const params: any = {\n model: modelName,\n messages,\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n provider,\n };\n\n if (toolChoice !== \"none\") {\n params.tools = tools;\n params.tool_choice = toolChoice;\n }\n\n const response = await client.chatCompletion(params, { signal });\n\n const text = response.choices[0]?.message?.content ?? \"\";\n const toolCalls: Record<string, unknown> = {};\n let callIndex = 0;\n ((response.choices[0]?.message as any)?.tool_calls ?? []).forEach((tc: any) => {\n let parsedInput: Record<string, unknown> = {};\n const rawArgs = tc.function?.arguments;\n if (typeof rawArgs === \"string\") {\n try {\n parsedInput = JSON.parse(rawArgs);\n } catch {\n const partial = parsePartialJson(rawArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (rawArgs != null) {\n parsedInput = rawArgs as Record<string, unknown>;\n }\n const id = (tc.id as string) ?? `call_${callIndex}`;\n callIndex++;\n toolCalls[id] = { id, name: tc.function.name as string, input: parsedInput };\n });\n\n update_progress(100, \"Completed HF Inference tool calling\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const HFI_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = input.tools.map((t: ToolDefinition) => ({\n type: \"function\" as const,\n function: {\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n },\n }));\n\n const messages: Array<{ role: \"system\" | \"user\"; content: string }> = [];\n if (input.systemPrompt) {\n messages.push({ role: \"system\", content: input.systemPrompt });\n }\n messages.push({ role: \"user\", content: input.prompt });\n\n const toolChoice = mapHFIToolChoice(input.toolChoice);\n\n const params: any = {\n model: modelName,\n messages,\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n provider,\n };\n\n if (toolChoice !== \"none\") {\n params.tools = tools;\n params.tool_choice = toolChoice;\n }\n\n const stream = client.chatCompletionStream(params, { signal });\n\n let accumulatedText = \"\";\n const toolCallAccumulator = new Map<number, { id: string; name: string; arguments: string }>();\n\n for await (const chunk of stream) {\n const choice = chunk.choices[0];\n if (!choice) continue;\n\n const contentDelta = choice.delta?.content ?? \"\";\n if (contentDelta) {\n accumulatedText += contentDelta;\n yield { type: \"text-delta\", port: \"text\", textDelta: contentDelta };\n }\n\n const tcDeltas = (choice.delta as any)?.tool_calls;\n if (Array.isArray(tcDeltas)) {\n for (const tcDelta of tcDeltas) {\n const idx = tcDelta.index as number;\n if (!toolCallAccumulator.has(idx)) {\n toolCallAccumulator.set(idx, {\n id: tcDelta.id ?? \"\",\n name: tcDelta.function?.name ?? \"\",\n arguments: \"\",\n });\n }\n const acc = toolCallAccumulator.get(idx)!;\n if (tcDelta.id) acc.id = tcDelta.id;\n if (tcDelta.function?.name) acc.name = tcDelta.function.name;\n if (tcDelta.function?.arguments) acc.arguments += tcDelta.function.arguments;\n }\n\n const snapshotObject: Record<string, unknown> = {};\n Array.from(toolCallAccumulator.entries()).forEach(([idx, tc]) => {\n let parsedInput: Record<string, unknown>;\n try {\n parsedInput = JSON.parse(tc.arguments);\n } catch {\n const partial = parsePartialJson(tc.arguments);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n const key = tc.id || String(idx);\n snapshotObject[key] = { id: tc.id, name: tc.name, input: parsedInput };\n });\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: snapshotObject };\n }\n }\n\n const toolCalls: Record<string, unknown> = {};\n Array.from(toolCallAccumulator.entries()).forEach(([idx, tc]) => {\n let finalInput: Record<string, unknown>;\n try {\n finalInput = JSON.parse(tc.arguments);\n } catch {\n finalInput = (parsePartialJson(tc.arguments) as Record<string, unknown>) ?? {};\n }\n const key = tc.id || String(idx);\n toolCalls[key] = { id: tc.id, name: tc.name, input: finalInput };\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// Task registries\n// ========================================================================\n\nexport const HFI_TASKS: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>> = {\n TextGenerationTask: HFI_TextGeneration,\n TextEmbeddingTask: HFI_TextEmbedding,\n TextRewriterTask: HFI_TextRewriter,\n TextSummaryTask: HFI_TextSummary,\n ToolCallingTask: HFI_ToolCalling,\n};\n\nexport const HFI_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, HfInferenceModelConfig>\n> = {\n TextGenerationTask: HFI_TextGeneration_Stream,\n TextRewriterTask: HFI_TextRewriter_Stream,\n TextSummaryTask: HFI_TextSummary_Stream,\n ToolCallingTask: HFI_ToolCalling_Stream,\n};\n",
6
6
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { globalServiceRegistry, WORKER_SERVER } from \"@workglow/util\";\nimport { HFI_STREAM_TASKS, HFI_TASKS } from \"./common/HFI_JobRunFns\";\nimport { HfInferenceProvider } from \"./HfInferenceProvider\";\n\nexport function HFI_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new HfInferenceProvider(HFI_TASKS, HFI_STREAM_TASKS).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n console.log(\"HFI_WORKER_JOBRUN registered\");\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "D7AEC113CA81907264756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "ED879DD8B5C5316464756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -32,7 +32,7 @@ import type { LlamaCppModelConfig } from "./common/LlamaCpp_ModelSchema";
32
32
  */
33
33
  export declare class LlamaCppProvider extends AiProvider<LlamaCppModelConfig> {
34
34
  readonly name = "LOCAL_LLAMACPP";
35
- readonly taskTypes: readonly ["DownloadModelTask", "UnloadModelTask", "CountTokensTask", "TextGenerationTask", "TextEmbeddingTask", "TextRewriterTask", "TextSummaryTask"];
35
+ readonly taskTypes: readonly ["DownloadModelTask", "UnloadModelTask", "CountTokensTask", "TextGenerationTask", "TextEmbeddingTask", "TextRewriterTask", "TextSummaryTask", "ToolCallingTask"];
36
36
  constructor(tasks?: Record<string, AiProviderRunFn<any, any, LlamaCppModelConfig>>, streamTasks?: Record<string, AiProviderStreamFn<any, any, LlamaCppModelConfig>>, reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, LlamaCppModelConfig>>);
37
37
  }
38
38
  //# sourceMappingURL=LlamaCppProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LlamaCppProvider.d.ts","sourceRoot":"","sources":["../../src/provider-llamacpp/LlamaCppProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,mBAAmB,CAAC;IACnE,QAAQ,CAAC,IAAI,oBAAkB;IAE/B,QAAQ,CAAC,SAAS,yJAQP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC,EACtE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC,EAC/E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;CAIzF"}
1
+ {"version":3,"file":"LlamaCppProvider.d.ts","sourceRoot":"","sources":["../../src/provider-llamacpp/LlamaCppProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,mBAAmB,CAAC;IACnE,QAAQ,CAAC,IAAI,oBAAkB;IAE/B,QAAQ,CAAC,SAAS,4KASP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC,EACtE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC,EAC/E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;CAIzF"}
@@ -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, CountTokensTaskInput, CountTokensTaskOutput, DownloadModelTaskRunInput, DownloadModelTaskRunOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, UnloadModelTaskRunInput, UnloadModelTaskRunOutput } from "@workglow/ai";
6
+ import type { AiProviderReactiveRunFn, AiProviderRunFn, AiProviderStreamFn, CountTokensTaskInput, CountTokensTaskOutput, DownloadModelTaskRunInput, DownloadModelTaskRunOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput, UnloadModelTaskRunInput, UnloadModelTaskRunOutput } from "@workglow/ai";
7
7
  import type { LlamaCppModelConfig } from "./LlamaCpp_ModelSchema";
8
8
  export declare const LlamaCpp_Download: AiProviderRunFn<DownloadModelTaskRunInput, DownloadModelTaskRunOutput, LlamaCppModelConfig>;
9
9
  export declare const LlamaCpp_Unload: AiProviderRunFn<UnloadModelTaskRunInput, UnloadModelTaskRunOutput, LlamaCppModelConfig>;
@@ -17,6 +17,8 @@ export declare const LlamaCpp_TextSummary_Stream: AiProviderStreamFn<TextSummary
17
17
  export declare function disposeLlamaCppResources(): Promise<void>;
18
18
  export declare const LlamaCpp_CountTokens: AiProviderRunFn<CountTokensTaskInput, CountTokensTaskOutput, LlamaCppModelConfig>;
19
19
  export declare const LlamaCpp_CountTokens_Reactive: AiProviderReactiveRunFn<CountTokensTaskInput, CountTokensTaskOutput, LlamaCppModelConfig>;
20
+ export declare const LlamaCpp_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, LlamaCppModelConfig>;
21
+ export declare const LlamaCpp_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, LlamaCppModelConfig>;
20
22
  export declare const LLAMACPP_TASKS: Record<string, AiProviderRunFn<any, any, LlamaCppModelConfig>>;
21
23
  export declare const LLAMACPP_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, LlamaCppModelConfig>>;
22
24
  export declare const LLAMACPP_REACTIVE_TASKS: Record<string, AiProviderReactiveRunFn<any, any, LlamaCppModelConfig>>;
@@ -1 +1 @@
1
- {"version":3,"file":"LlamaCpp_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-llamacpp/common/LlamaCpp_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AA2KlE,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,CAoCpB,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,CAiCpB,CAAC;AAMF,eAAO,MAAM,uBAAuB,EAAE,eAAe,CACnD,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,CAwBpB,CAAC;AAMF,eAAO,MAAM,8BAA8B,EAAE,kBAAkB,CAC7D,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,CAsBpB,CAAC;AAMF,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,CAoBpB,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,CAmBpB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,CAgBpB,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAsBpB,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,kBAAkB,CAC1D,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAmBpB,CAAC;AAMF,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB9D;AAED,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAMpB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,uBAAuB,CACjE,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAGpB,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAQzF,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAKlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,MAAM,EACN,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAGvD,CAAC"}
1
+ {"version":3,"file":"LlamaCpp_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-llamacpp/common/LlamaCpp_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAErB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AA2KlE,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,CAoCpB,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,CAiCpB,CAAC;AAMF,eAAO,MAAM,uBAAuB,EAAE,eAAe,CACnD,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,CAwBpB,CAAC;AAMF,eAAO,MAAM,8BAA8B,EAAE,kBAAkB,CAC7D,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,CAsBpB,CAAC;AAMF,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,CAoBpB,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,CAmBpB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,CAgBpB,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAsBpB,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,kBAAkB,CAC1D,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAmBpB,CAAC;AAMF,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB9D;AAED,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAMpB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,uBAAuB,CACjE,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAGpB,CAAC;AA+BF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CAwCpB,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,kBAAkB,CAC1D,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CA8FpB,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CASzF,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAMlD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,MAAM,EACN,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAGvD,CAAC"}
@@ -5,11 +5,12 @@ import {
5
5
  LlamaCppModelRecordSchema,
6
6
  LlamaCppModelSchema,
7
7
  LlamaCppProvider
8
- } from "../index-cfd8ne0j.js";
8
+ } from "../index-xc6m9mcp.js";
9
9
  import {
10
10
  __require
11
11
  } from "../index-6j5pq722.js";
12
12
  // src/provider-llamacpp/common/LlamaCpp_JobRunFns.ts
13
+ import { filterValidToolCalls } from "@workglow/ai";
13
14
  var _sdk;
14
15
  async function loadSdk() {
15
16
  if (!_sdk) {
@@ -327,6 +328,135 @@ var LlamaCpp_CountTokens = async (input, model, onProgress, signal) => {
327
328
  var LlamaCpp_CountTokens_Reactive = async (input, _output, model) => {
328
329
  return LlamaCpp_CountTokens(input, model, () => {}, new AbortController().signal);
329
330
  };
331
+ function buildLlamaCppFunctions(tools, capturedCalls) {
332
+ const { defineChatSessionFunction } = _sdk;
333
+ const functions = {};
334
+ for (const tool of tools) {
335
+ const toolName = tool.name;
336
+ functions[toolName] = defineChatSessionFunction({
337
+ description: tool.description,
338
+ params: tool.inputSchema,
339
+ handler(params) {
340
+ capturedCalls.push({ name: toolName, input: params ?? {} });
341
+ return "OK";
342
+ }
343
+ });
344
+ }
345
+ return functions;
346
+ }
347
+ var LlamaCpp_ToolCalling = async (input, model, update_progress, signal) => {
348
+ if (!model)
349
+ throw new Error("Model config is required for ToolCallingTask.");
350
+ await loadSdk();
351
+ update_progress(0, "Loading model");
352
+ const context = await getOrCreateTextContext(model);
353
+ const capturedCalls = [];
354
+ const functions = input.toolChoice === "none" ? undefined : buildLlamaCppFunctions(input.tools, capturedCalls);
355
+ update_progress(10, "Running tool calling");
356
+ const sequence = context.getSequence();
357
+ const { LlamaChatSession } = _sdk;
358
+ const session = new LlamaChatSession({
359
+ contextSequence: sequence,
360
+ ...input.systemPrompt && { systemPrompt: input.systemPrompt }
361
+ });
362
+ try {
363
+ const text = await session.prompt(input.prompt, {
364
+ signal,
365
+ ...functions && { functions },
366
+ ...input.temperature !== undefined && { temperature: input.temperature },
367
+ ...input.maxTokens !== undefined && { maxTokens: input.maxTokens }
368
+ });
369
+ const toolCalls = {};
370
+ capturedCalls.forEach((call, index) => {
371
+ const id = `call_${index}`;
372
+ toolCalls[id] = { id, name: call.name, input: call.input };
373
+ });
374
+ update_progress(100, "Tool calling complete");
375
+ return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };
376
+ } finally {
377
+ sequence.dispose();
378
+ }
379
+ };
380
+ var LlamaCpp_ToolCalling_Stream = async function* (input, model, signal) {
381
+ if (!model)
382
+ throw new Error("Model config is required for ToolCallingTask.");
383
+ await loadSdk();
384
+ const context = await getOrCreateTextContext(model);
385
+ const capturedCalls = [];
386
+ const functions = input.toolChoice === "none" ? undefined : buildLlamaCppFunctions(input.tools, capturedCalls);
387
+ const sequence = context.getSequence();
388
+ const { LlamaChatSession } = _sdk;
389
+ const session = new LlamaChatSession({
390
+ contextSequence: sequence,
391
+ ...input.systemPrompt && { systemPrompt: input.systemPrompt }
392
+ });
393
+ const queue = [];
394
+ let isComplete = false;
395
+ let completionError;
396
+ let resolveWait = null;
397
+ const notifyWaiter = () => {
398
+ resolveWait?.();
399
+ resolveWait = null;
400
+ };
401
+ let accumulatedText = "";
402
+ const promptPromise = session.prompt(input.prompt, {
403
+ signal,
404
+ ...functions && { functions },
405
+ onTextChunk: (chunk) => {
406
+ queue.push(chunk);
407
+ notifyWaiter();
408
+ },
409
+ ...input.temperature !== undefined && { temperature: input.temperature },
410
+ ...input.maxTokens !== undefined && { maxTokens: input.maxTokens }
411
+ }).then(() => {
412
+ isComplete = true;
413
+ notifyWaiter();
414
+ }).catch((err) => {
415
+ completionError = err;
416
+ isComplete = true;
417
+ notifyWaiter();
418
+ });
419
+ try {
420
+ while (true) {
421
+ while (queue.length > 0) {
422
+ const chunk = queue.shift();
423
+ accumulatedText += chunk;
424
+ yield { type: "text-delta", port: "text", textDelta: chunk };
425
+ }
426
+ if (isComplete)
427
+ break;
428
+ await new Promise((r) => {
429
+ resolveWait = r;
430
+ });
431
+ }
432
+ while (queue.length > 0) {
433
+ const chunk = queue.shift();
434
+ accumulatedText += chunk;
435
+ yield { type: "text-delta", port: "text", textDelta: chunk };
436
+ }
437
+ } finally {
438
+ await promptPromise.catch(() => {});
439
+ sequence.dispose();
440
+ }
441
+ if (completionError) {
442
+ if (!signal.aborted)
443
+ throw completionError;
444
+ return;
445
+ }
446
+ const toolCalls = {};
447
+ capturedCalls.forEach((call, index) => {
448
+ const id = `call_${index}`;
449
+ toolCalls[id] = { id, name: call.name, input: call.input };
450
+ });
451
+ const validToolCalls = filterValidToolCalls(toolCalls, input.tools);
452
+ if (Object.keys(validToolCalls).length > 0) {
453
+ yield { type: "object-delta", port: "toolCalls", objectDelta: { ...validToolCalls } };
454
+ }
455
+ yield {
456
+ type: "finish",
457
+ data: { text: accumulatedText, toolCalls: validToolCalls }
458
+ };
459
+ };
330
460
  var LLAMACPP_TASKS = {
331
461
  DownloadModelTask: LlamaCpp_Download,
332
462
  UnloadModelTask: LlamaCpp_Unload,
@@ -334,27 +464,31 @@ var LLAMACPP_TASKS = {
334
464
  TextGenerationTask: LlamaCpp_TextGeneration,
335
465
  TextEmbeddingTask: LlamaCpp_TextEmbedding,
336
466
  TextRewriterTask: LlamaCpp_TextRewriter,
337
- TextSummaryTask: LlamaCpp_TextSummary
467
+ TextSummaryTask: LlamaCpp_TextSummary,
468
+ ToolCallingTask: LlamaCpp_ToolCalling
338
469
  };
339
470
  var LLAMACPP_STREAM_TASKS = {
340
471
  TextGenerationTask: LlamaCpp_TextGeneration_Stream,
341
472
  TextRewriterTask: LlamaCpp_TextRewriter_Stream,
342
- TextSummaryTask: LlamaCpp_TextSummary_Stream
473
+ TextSummaryTask: LlamaCpp_TextSummary_Stream,
474
+ ToolCallingTask: LlamaCpp_ToolCalling_Stream
343
475
  };
344
476
  var LLAMACPP_REACTIVE_TASKS = {
345
477
  CountTokensTask: LlamaCpp_CountTokens_Reactive
346
478
  };
347
479
  // src/provider-llamacpp/LlamaCpp_Worker.ts
348
- import { globalServiceRegistry, WORKER_SERVER } from "@workglow/util";
480
+ import { getLogger, globalServiceRegistry, WORKER_SERVER } from "@workglow/util";
349
481
  function LLAMACPP_WORKER_JOBRUN_REGISTER() {
350
482
  const workerServer = globalServiceRegistry.get(WORKER_SERVER);
351
483
  new LlamaCppProvider(LLAMACPP_TASKS, LLAMACPP_STREAM_TASKS, LLAMACPP_REACTIVE_TASKS).registerOnWorkerServer(workerServer);
352
484
  workerServer.sendReady();
353
- console.log("LLAMACPP_WORKER_JOBRUN registered");
485
+ getLogger().info("LLAMACPP_WORKER_JOBRUN registered");
354
486
  }
355
487
  export {
356
488
  disposeLlamaCppResources,
357
489
  LlamaCpp_Unload,
490
+ LlamaCpp_ToolCalling_Stream,
491
+ LlamaCpp_ToolCalling,
358
492
  LlamaCpp_TextSummary_Stream,
359
493
  LlamaCpp_TextSummary,
360
494
  LlamaCpp_TextRewriter_Stream,
@@ -377,4 +511,4 @@ export {
377
511
  LLAMACPP_DEFAULT_MODELS_DIR
378
512
  };
379
513
 
380
- //# debugId=4558BCC11EF9CE3C64756E2164756E21
514
+ //# debugId=4EF99828E101695D64756E2164756E21
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/provider-llamacpp/common/LlamaCpp_JobRunFns.ts", "../src/provider-llamacpp/LlamaCpp_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 {\n AiProviderReactiveRunFn,\n AiProviderRunFn,\n AiProviderStreamFn,\n CountTokensTaskInput,\n CountTokensTaskOutput,\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n UnloadModelTaskRunInput,\n UnloadModelTaskRunOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { LLAMACPP_DEFAULT_MODELS_DIR } from \"./LlamaCpp_Constants\";\nimport type { LlamaCppModelConfig } from \"./LlamaCpp_ModelSchema\";\n\n// ========================================================================\n// Lazy SDK loading\n// ========================================================================\n\nlet _sdk: typeof import(\"node-llama-cpp\") | undefined;\n\nasync function loadSdk() {\n if (!_sdk) {\n try {\n _sdk = await import(\"node-llama-cpp\");\n } catch (err) {\n throw new Error(\n \"node-llama-cpp is required for LOCAL_LLAMACPP tasks. Install it with: bun add node-llama-cpp\"\n );\n }\n }\n return _sdk;\n}\n\n// ========================================================================\n// Module-level caches (shared across all task invocations)\n// ========================================================================\n\ntype LlamaInstance = Awaited<ReturnType<(typeof import(\"node-llama-cpp\"))[\"getLlama\"]>>;\ntype LlamaModel = Awaited<ReturnType<LlamaInstance[\"loadModel\"]>>;\ntype LlamaContext = Awaited<ReturnType<LlamaModel[\"createContext\"]>>;\ntype LlamaEmbeddingContext = Awaited<ReturnType<LlamaModel[\"createEmbeddingContext\"]>>;\n\nlet llamaInstance: LlamaInstance | undefined;\nconst models = new Map<string, LlamaModel>();\nconst textContexts = new Map<string, LlamaContext>();\nconst embeddingContexts = new Map<string, LlamaEmbeddingContext>();\n\n/** Maps model_url (or model_path when used as URI) to the actual downloaded filesystem path. */\nconst resolvedPaths = new Map<string, string>();\n\n// ========================================================================\n// Helpers\n// ========================================================================\n\nasync function getLlamaInstance(): Promise<LlamaInstance> {\n if (!llamaInstance) {\n const { getLlama } = await loadSdk();\n llamaInstance = await getLlama();\n }\n return llamaInstance;\n}\n\nfunction getConfigKey(model: LlamaCppModelConfig): string {\n return model.provider_config.model_url ?? model.provider_config.model_path;\n}\n\nfunction getActualModelPath(model: LlamaCppModelConfig): string {\n const key = getConfigKey(model);\n const resolved = resolvedPaths.get(key);\n return resolved ?? model.provider_config.model_path;\n}\n\nasync function getOrLoadModel(model: LlamaCppModelConfig): Promise<LlamaModel> {\n const modelPath = getActualModelPath(model);\n const cached = models.get(modelPath);\n if (cached) return cached;\n\n const llama = await getLlamaInstance();\n const config = model.provider_config;\n\n const loadedModel = await llama.loadModel({\n modelPath,\n ...(config.gpu_layers !== undefined && { gpuLayers: config.gpu_layers }),\n });\n\n models.set(modelPath, loadedModel);\n return loadedModel;\n}\n\nasync function getOrCreateTextContext(model: LlamaCppModelConfig): Promise<LlamaContext> {\n const modelPath = getActualModelPath(model);\n const cached = textContexts.get(modelPath);\n if (cached) return cached;\n\n const loadedModel = await getOrLoadModel(model);\n const config = model.provider_config;\n\n const context = await loadedModel.createContext({\n ...(config.context_size && { contextSize: config.context_size }),\n ...(config.flash_attention !== undefined && { flashAttention: config.flash_attention }),\n });\n\n textContexts.set(modelPath, context);\n return context;\n}\n\nasync function getOrCreateEmbeddingContext(\n model: LlamaCppModelConfig\n): Promise<LlamaEmbeddingContext> {\n const modelPath = getActualModelPath(model);\n const cached = embeddingContexts.get(modelPath);\n if (cached) return cached;\n\n const loadedModel = await getOrLoadModel(model);\n\n const context = await loadedModel.createEmbeddingContext();\n\n embeddingContexts.set(modelPath, context);\n return context;\n}\n\n/**\n * Bridges a node-llama-cpp session.prompt() call (callback-based) to an AsyncGenerator\n * of StreamEvents. Handles abort signals and errors cleanly.\n */\nasync function* streamFromSession<T extends Record<string, unknown>>(\n promptFn: (onTextChunk: (chunk: string) => void) => Promise<string>,\n signal: AbortSignal\n): AsyncGenerator<StreamEvent<T>> {\n const queue: string[] = [];\n let isComplete = false;\n let completionError: unknown;\n let resolveWait: (() => void) | null = null;\n\n const notifyWaiter = () => {\n resolveWait?.();\n resolveWait = null;\n };\n\n const promptPromise = promptFn((chunk: string) => {\n queue.push(chunk);\n notifyWaiter();\n })\n .then(() => {\n isComplete = true;\n notifyWaiter();\n })\n .catch((err: unknown) => {\n completionError = err;\n isComplete = true;\n notifyWaiter();\n });\n\n try {\n while (true) {\n while (queue.length > 0) {\n yield { type: \"text-delta\", port: \"text\", textDelta: queue.shift()! };\n }\n if (isComplete) break;\n await new Promise<void>((r) => {\n resolveWait = r;\n });\n }\n // Drain any remaining chunks after completion signal\n while (queue.length > 0) {\n yield { type: \"text-delta\", port: \"text\", textDelta: queue.shift()! };\n }\n } finally {\n await promptPromise.catch(() => {});\n }\n\n if (completionError) {\n if (signal.aborted) return;\n throw completionError;\n }\n\n yield { type: \"finish\", data: {} as T };\n}\n\n// ========================================================================\n// DownloadModelTask\n// ========================================================================\n\nexport const LlamaCpp_Download: AiProviderRunFn<\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for DownloadModelTask.\");\n\n const { createModelDownloader } = await loadSdk();\n const config = model.provider_config;\n const modelUri = config.model_url ?? config.model_path;\n const dirPath = config.models_dir ?? LLAMACPP_DEFAULT_MODELS_DIR;\n\n update_progress(0, \"Creating model downloader\");\n\n const downloader = await createModelDownloader({ modelUri, dirPath });\n\n // Poll download progress via interval (ModelDownloader exposes downloadedSize / totalSize)\n const progressInterval = setInterval(() => {\n const total = (downloader as any).totalSize as number | undefined;\n const downloaded = (downloader as any).downloadedSize as number | undefined;\n if (total && total > 0 && downloaded !== undefined) {\n const pct = Math.min(99, Math.round((downloaded / total) * 100));\n update_progress(pct, \"Downloading model\", { file: modelUri, progress: pct / 100 });\n }\n }, 500);\n\n let modelPath: string;\n try {\n modelPath = await downloader.download();\n } finally {\n clearInterval(progressInterval);\n }\n\n // Store the resolved filesystem path for subsequent inference tasks\n resolvedPaths.set(getConfigKey(model), modelPath);\n\n update_progress(100, \"Model downloaded\", { file: modelUri, progress: 1 });\n\n return { model: input.model! };\n};\n\n// ========================================================================\n// UnloadModelTask\n// ========================================================================\n\nexport const LlamaCpp_Unload: AiProviderRunFn<\n UnloadModelTaskRunInput,\n UnloadModelTaskRunOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, _signal) => {\n if (!model) throw new Error(\"Model config is required for UnloadModelTask.\");\n\n const modelPath = getActualModelPath(model);\n\n // Dispose and remove the text context\n const ctx = textContexts.get(modelPath);\n if (ctx) {\n await ctx.dispose();\n textContexts.delete(modelPath);\n update_progress(33, \"Text context disposed\");\n }\n\n // Dispose and remove the embedding context\n const embCtx = embeddingContexts.get(modelPath);\n if (embCtx) {\n await embCtx.dispose();\n embeddingContexts.delete(modelPath);\n update_progress(66, \"Embedding context disposed\");\n }\n\n // Dispose and remove the model\n const cachedModel = models.get(modelPath);\n if (cachedModel) {\n await cachedModel.dispose();\n models.delete(modelPath);\n update_progress(100, \"Model unloaded from memory\");\n } else {\n update_progress(100, \"Model was not loaded\");\n }\n\n return { model: input.model! };\n};\n\n// ========================================================================\n// TextGenerationTask (non-streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for TextGenerationTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n update_progress(0, \"Loading model\");\n const context = await getOrCreateTextContext(model);\n\n update_progress(10, \"Generating text\");\n const sequence = context.getSequence();\n const session = new LlamaChatSession({ contextSequence: sequence });\n try {\n const text = await session.prompt(input.prompt, {\n signal,\n ...(input.temperature !== undefined && { temperature: input.temperature }),\n ...(input.maxTokens !== undefined && { maxTokens: input.maxTokens }),\n ...(input.topP !== undefined && { topP: input.topP }),\n });\n update_progress(100, \"Text generation complete\");\n return { text };\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextGenerationTask (streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n LlamaCppModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n if (!model) throw new Error(\"Model config is required for TextGenerationTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n const context = await getOrCreateTextContext(model);\n const sequence = context.getSequence();\n const session = new LlamaChatSession({ contextSequence: sequence });\n try {\n yield* streamFromSession<TextGenerationTaskOutput>((onTextChunk) => {\n return session.prompt(input.prompt, {\n signal,\n onTextChunk,\n ...(input.temperature !== undefined && { temperature: input.temperature }),\n ...(input.maxTokens !== undefined && { maxTokens: input.maxTokens }),\n ...(input.topP !== undefined && { topP: input.topP }),\n });\n }, signal);\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextEmbeddingTask\n// ========================================================================\n\nexport const LlamaCpp_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, _signal) => {\n if (!model) throw new Error(\"Model config is required for TextEmbeddingTask.\");\n\n update_progress(0, \"Loading embedding model\");\n const context = await getOrCreateEmbeddingContext(model);\n\n const texts = Array.isArray(input.text) ? input.text : [input.text];\n update_progress(10, \"Computing embeddings\");\n\n const embeddings = await Promise.all(\n texts.map((text) => context.getEmbeddingFor(text).then((e) => new Float32Array(e.vector)))\n );\n\n update_progress(100, \"Embeddings complete\");\n\n if (Array.isArray(input.text)) {\n return { vector: embeddings };\n }\n return { vector: embeddings[0] };\n};\n\n// ========================================================================\n// TextRewriterTask (non-streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for TextRewriterTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n update_progress(0, \"Loading model\");\n const context = await getOrCreateTextContext(model);\n\n update_progress(10, \"Rewriting text\");\n const sequence = context.getSequence();\n const session = new LlamaChatSession({ contextSequence: sequence, systemPrompt: input.prompt });\n try {\n const text = await session.prompt(input.text, { signal });\n update_progress(100, \"Text rewriting complete\");\n return { text };\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextRewriterTask (streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n LlamaCppModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n if (!model) throw new Error(\"Model config is required for TextRewriterTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n const context = await getOrCreateTextContext(model);\n const sequence = context.getSequence();\n const session = new LlamaChatSession({ contextSequence: sequence, systemPrompt: input.prompt });\n try {\n yield* streamFromSession<TextRewriterTaskOutput>((onTextChunk) => {\n return session.prompt(input.text, { signal, onTextChunk });\n }, signal);\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextSummaryTask (non-streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for TextSummaryTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n update_progress(0, \"Loading model\");\n const context = await getOrCreateTextContext(model);\n\n update_progress(10, \"Summarizing text\");\n const sequence = context.getSequence();\n const session = new LlamaChatSession({\n contextSequence: sequence,\n systemPrompt: \"Summarize the following text concisely, preserving the key points.\",\n });\n try {\n const text = await session.prompt(input.text, { signal });\n update_progress(100, \"Summarization complete\");\n return { text };\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextSummaryTask (streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n LlamaCppModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n if (!model) throw new Error(\"Model config is required for TextSummaryTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n const context = await getOrCreateTextContext(model);\n const sequence = context.getSequence();\n const session = new LlamaChatSession({\n contextSequence: sequence,\n systemPrompt: \"Summarize the following text concisely, preserving the key points.\",\n });\n try {\n yield* streamFromSession<TextSummaryTaskOutput>((onTextChunk) => {\n return session.prompt(input.text, { signal, onTextChunk });\n }, signal);\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// Dispose helper (called from LlamaCppProvider.dispose())\n// ========================================================================\n\nexport async function disposeLlamaCppResources(): Promise<void> {\n const disposeAll = async (map: Map<string, { dispose(): Promise<void> }>) => {\n for (const resource of map.values()) {\n await resource.dispose().catch(() => {});\n }\n map.clear();\n };\n\n await disposeAll(textContexts as Map<string, { dispose(): Promise<void> }>);\n await disposeAll(embeddingContexts as Map<string, { dispose(): Promise<void> }>);\n await disposeAll(models as Map<string, { dispose(): Promise<void> }>);\n\n if (llamaInstance) {\n await (llamaInstance as any).dispose?.().catch(() => {});\n llamaInstance = undefined;\n }\n\n resolvedPaths.clear();\n}\n\nexport const LlamaCpp_CountTokens: AiProviderRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, onProgress, signal) => {\n const loadedModel = await getOrLoadModel(model!);\n // model.tokenizer is itself the tokenize function (Tokenizer = tokenize[\"tokenize\"])\n const tokens = loadedModel.tokenizer(input.text);\n return { count: tokens.length };\n};\n\nexport const LlamaCpp_CountTokens_Reactive: AiProviderReactiveRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n LlamaCppModelConfig\n> = async (input, _output, model) => {\n return LlamaCpp_CountTokens(input, model, () => {}, new AbortController().signal);\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const LLAMACPP_TASKS: Record<string, AiProviderRunFn<any, any, LlamaCppModelConfig>> = {\n DownloadModelTask: LlamaCpp_Download,\n UnloadModelTask: LlamaCpp_Unload,\n CountTokensTask: LlamaCpp_CountTokens,\n TextGenerationTask: LlamaCpp_TextGeneration,\n TextEmbeddingTask: LlamaCpp_TextEmbedding,\n TextRewriterTask: LlamaCpp_TextRewriter,\n TextSummaryTask: LlamaCpp_TextSummary,\n};\n\nexport const LLAMACPP_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, LlamaCppModelConfig>\n> = {\n TextGenerationTask: LlamaCpp_TextGeneration_Stream,\n TextRewriterTask: LlamaCpp_TextRewriter_Stream,\n TextSummaryTask: LlamaCpp_TextSummary_Stream,\n};\n\nexport const LLAMACPP_REACTIVE_TASKS: Record<\n string,\n AiProviderReactiveRunFn<any, any, LlamaCppModelConfig>\n> = {\n CountTokensTask: LlamaCpp_CountTokens_Reactive,\n};\n",
6
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { globalServiceRegistry, WORKER_SERVER } from \"@workglow/util\";\nimport {\n LLAMACPP_REACTIVE_TASKS,\n LLAMACPP_STREAM_TASKS,\n LLAMACPP_TASKS,\n} from \"./common/LlamaCpp_JobRunFns\";\nimport { LlamaCppProvider } from \"./LlamaCppProvider\";\n\nexport function LLAMACPP_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new LlamaCppProvider(\n LLAMACPP_TASKS,\n LLAMACPP_STREAM_TASKS,\n LLAMACPP_REACTIVE_TASKS\n ).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n console.log(\"LLAMACPP_WORKER_JOBRUN registered\");\n}\n"
5
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderReactiveRunFn,\n AiProviderRunFn,\n AiProviderStreamFn,\n CountTokensTaskInput,\n CountTokensTaskOutput,\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolDefinition,\n UnloadModelTaskRunInput,\n UnloadModelTaskRunOutput,\n} from \"@workglow/ai\";\nimport { filterValidToolCalls } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { LLAMACPP_DEFAULT_MODELS_DIR } from \"./LlamaCpp_Constants\";\nimport type { LlamaCppModelConfig } from \"./LlamaCpp_ModelSchema\";\n\n// ========================================================================\n// Lazy SDK loading\n// ========================================================================\n\nlet _sdk: typeof import(\"node-llama-cpp\") | undefined;\n\nasync function loadSdk() {\n if (!_sdk) {\n try {\n _sdk = await import(\"node-llama-cpp\");\n } catch (err) {\n throw new Error(\n \"node-llama-cpp is required for LOCAL_LLAMACPP tasks. Install it with: bun add node-llama-cpp\"\n );\n }\n }\n return _sdk;\n}\n\n// ========================================================================\n// Module-level caches (shared across all task invocations)\n// ========================================================================\n\ntype LlamaInstance = Awaited<ReturnType<(typeof import(\"node-llama-cpp\"))[\"getLlama\"]>>;\ntype LlamaModel = Awaited<ReturnType<LlamaInstance[\"loadModel\"]>>;\ntype LlamaContext = Awaited<ReturnType<LlamaModel[\"createContext\"]>>;\ntype LlamaEmbeddingContext = Awaited<ReturnType<LlamaModel[\"createEmbeddingContext\"]>>;\n\nlet llamaInstance: LlamaInstance | undefined;\nconst models = new Map<string, LlamaModel>();\nconst textContexts = new Map<string, LlamaContext>();\nconst embeddingContexts = new Map<string, LlamaEmbeddingContext>();\n\n/** Maps model_url (or model_path when used as URI) to the actual downloaded filesystem path. */\nconst resolvedPaths = new Map<string, string>();\n\n// ========================================================================\n// Helpers\n// ========================================================================\n\nasync function getLlamaInstance(): Promise<LlamaInstance> {\n if (!llamaInstance) {\n const { getLlama } = await loadSdk();\n llamaInstance = await getLlama();\n }\n return llamaInstance;\n}\n\nfunction getConfigKey(model: LlamaCppModelConfig): string {\n return model.provider_config.model_url ?? model.provider_config.model_path;\n}\n\nfunction getActualModelPath(model: LlamaCppModelConfig): string {\n const key = getConfigKey(model);\n const resolved = resolvedPaths.get(key);\n return resolved ?? model.provider_config.model_path;\n}\n\nasync function getOrLoadModel(model: LlamaCppModelConfig): Promise<LlamaModel> {\n const modelPath = getActualModelPath(model);\n const cached = models.get(modelPath);\n if (cached) return cached;\n\n const llama = await getLlamaInstance();\n const config = model.provider_config;\n\n const loadedModel = await llama.loadModel({\n modelPath,\n ...(config.gpu_layers !== undefined && { gpuLayers: config.gpu_layers }),\n });\n\n models.set(modelPath, loadedModel);\n return loadedModel;\n}\n\nasync function getOrCreateTextContext(model: LlamaCppModelConfig): Promise<LlamaContext> {\n const modelPath = getActualModelPath(model);\n const cached = textContexts.get(modelPath);\n if (cached) return cached;\n\n const loadedModel = await getOrLoadModel(model);\n const config = model.provider_config;\n\n const context = await loadedModel.createContext({\n ...(config.context_size && { contextSize: config.context_size }),\n ...(config.flash_attention !== undefined && { flashAttention: config.flash_attention }),\n });\n\n textContexts.set(modelPath, context);\n return context;\n}\n\nasync function getOrCreateEmbeddingContext(\n model: LlamaCppModelConfig\n): Promise<LlamaEmbeddingContext> {\n const modelPath = getActualModelPath(model);\n const cached = embeddingContexts.get(modelPath);\n if (cached) return cached;\n\n const loadedModel = await getOrLoadModel(model);\n\n const context = await loadedModel.createEmbeddingContext();\n\n embeddingContexts.set(modelPath, context);\n return context;\n}\n\n/**\n * Bridges a node-llama-cpp session.prompt() call (callback-based) to an AsyncGenerator\n * of StreamEvents. Handles abort signals and errors cleanly.\n */\nasync function* streamFromSession<T extends Record<string, unknown>>(\n promptFn: (onTextChunk: (chunk: string) => void) => Promise<string>,\n signal: AbortSignal\n): AsyncGenerator<StreamEvent<T>> {\n const queue: string[] = [];\n let isComplete = false;\n let completionError: unknown;\n let resolveWait: (() => void) | null = null;\n\n const notifyWaiter = () => {\n resolveWait?.();\n resolveWait = null;\n };\n\n const promptPromise = promptFn((chunk: string) => {\n queue.push(chunk);\n notifyWaiter();\n })\n .then(() => {\n isComplete = true;\n notifyWaiter();\n })\n .catch((err: unknown) => {\n completionError = err;\n isComplete = true;\n notifyWaiter();\n });\n\n try {\n while (true) {\n while (queue.length > 0) {\n yield { type: \"text-delta\", port: \"text\", textDelta: queue.shift()! };\n }\n if (isComplete) break;\n await new Promise<void>((r) => {\n resolveWait = r;\n });\n }\n // Drain any remaining chunks after completion signal\n while (queue.length > 0) {\n yield { type: \"text-delta\", port: \"text\", textDelta: queue.shift()! };\n }\n } finally {\n await promptPromise.catch(() => {});\n }\n\n if (completionError) {\n if (signal.aborted) return;\n throw completionError;\n }\n\n yield { type: \"finish\", data: {} as T };\n}\n\n// ========================================================================\n// DownloadModelTask\n// ========================================================================\n\nexport const LlamaCpp_Download: AiProviderRunFn<\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for DownloadModelTask.\");\n\n const { createModelDownloader } = await loadSdk();\n const config = model.provider_config;\n const modelUri = config.model_url ?? config.model_path;\n const dirPath = config.models_dir ?? LLAMACPP_DEFAULT_MODELS_DIR;\n\n update_progress(0, \"Creating model downloader\");\n\n const downloader = await createModelDownloader({ modelUri, dirPath });\n\n // Poll download progress via interval (ModelDownloader exposes downloadedSize / totalSize)\n const progressInterval = setInterval(() => {\n const total = (downloader as any).totalSize as number | undefined;\n const downloaded = (downloader as any).downloadedSize as number | undefined;\n if (total && total > 0 && downloaded !== undefined) {\n const pct = Math.min(99, Math.round((downloaded / total) * 100));\n update_progress(pct, \"Downloading model\", { file: modelUri, progress: pct / 100 });\n }\n }, 500);\n\n let modelPath: string;\n try {\n modelPath = await downloader.download();\n } finally {\n clearInterval(progressInterval);\n }\n\n // Store the resolved filesystem path for subsequent inference tasks\n resolvedPaths.set(getConfigKey(model), modelPath);\n\n update_progress(100, \"Model downloaded\", { file: modelUri, progress: 1 });\n\n return { model: input.model! };\n};\n\n// ========================================================================\n// UnloadModelTask\n// ========================================================================\n\nexport const LlamaCpp_Unload: AiProviderRunFn<\n UnloadModelTaskRunInput,\n UnloadModelTaskRunOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, _signal) => {\n if (!model) throw new Error(\"Model config is required for UnloadModelTask.\");\n\n const modelPath = getActualModelPath(model);\n\n // Dispose and remove the text context\n const ctx = textContexts.get(modelPath);\n if (ctx) {\n await ctx.dispose();\n textContexts.delete(modelPath);\n update_progress(33, \"Text context disposed\");\n }\n\n // Dispose and remove the embedding context\n const embCtx = embeddingContexts.get(modelPath);\n if (embCtx) {\n await embCtx.dispose();\n embeddingContexts.delete(modelPath);\n update_progress(66, \"Embedding context disposed\");\n }\n\n // Dispose and remove the model\n const cachedModel = models.get(modelPath);\n if (cachedModel) {\n await cachedModel.dispose();\n models.delete(modelPath);\n update_progress(100, \"Model unloaded from memory\");\n } else {\n update_progress(100, \"Model was not loaded\");\n }\n\n return { model: input.model! };\n};\n\n// ========================================================================\n// TextGenerationTask (non-streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for TextGenerationTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n update_progress(0, \"Loading model\");\n const context = await getOrCreateTextContext(model);\n\n update_progress(10, \"Generating text\");\n const sequence = context.getSequence();\n const session = new LlamaChatSession({ contextSequence: sequence });\n try {\n const text = await session.prompt(input.prompt, {\n signal,\n ...(input.temperature !== undefined && { temperature: input.temperature }),\n ...(input.maxTokens !== undefined && { maxTokens: input.maxTokens }),\n ...(input.topP !== undefined && { topP: input.topP }),\n });\n update_progress(100, \"Text generation complete\");\n return { text };\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextGenerationTask (streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n LlamaCppModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n if (!model) throw new Error(\"Model config is required for TextGenerationTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n const context = await getOrCreateTextContext(model);\n const sequence = context.getSequence();\n const session = new LlamaChatSession({ contextSequence: sequence });\n try {\n yield* streamFromSession<TextGenerationTaskOutput>((onTextChunk) => {\n return session.prompt(input.prompt, {\n signal,\n onTextChunk,\n ...(input.temperature !== undefined && { temperature: input.temperature }),\n ...(input.maxTokens !== undefined && { maxTokens: input.maxTokens }),\n ...(input.topP !== undefined && { topP: input.topP }),\n });\n }, signal);\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextEmbeddingTask\n// ========================================================================\n\nexport const LlamaCpp_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, _signal) => {\n if (!model) throw new Error(\"Model config is required for TextEmbeddingTask.\");\n\n update_progress(0, \"Loading embedding model\");\n const context = await getOrCreateEmbeddingContext(model);\n\n const texts = Array.isArray(input.text) ? input.text : [input.text];\n update_progress(10, \"Computing embeddings\");\n\n const embeddings = await Promise.all(\n texts.map((text) => context.getEmbeddingFor(text).then((e) => new Float32Array(e.vector)))\n );\n\n update_progress(100, \"Embeddings complete\");\n\n if (Array.isArray(input.text)) {\n return { vector: embeddings };\n }\n return { vector: embeddings[0] };\n};\n\n// ========================================================================\n// TextRewriterTask (non-streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for TextRewriterTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n update_progress(0, \"Loading model\");\n const context = await getOrCreateTextContext(model);\n\n update_progress(10, \"Rewriting text\");\n const sequence = context.getSequence();\n const session = new LlamaChatSession({ contextSequence: sequence, systemPrompt: input.prompt });\n try {\n const text = await session.prompt(input.text, { signal });\n update_progress(100, \"Text rewriting complete\");\n return { text };\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextRewriterTask (streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n LlamaCppModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n if (!model) throw new Error(\"Model config is required for TextRewriterTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n const context = await getOrCreateTextContext(model);\n const sequence = context.getSequence();\n const session = new LlamaChatSession({ contextSequence: sequence, systemPrompt: input.prompt });\n try {\n yield* streamFromSession<TextRewriterTaskOutput>((onTextChunk) => {\n return session.prompt(input.text, { signal, onTextChunk });\n }, signal);\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextSummaryTask (non-streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for TextSummaryTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n update_progress(0, \"Loading model\");\n const context = await getOrCreateTextContext(model);\n\n update_progress(10, \"Summarizing text\");\n const sequence = context.getSequence();\n const session = new LlamaChatSession({\n contextSequence: sequence,\n systemPrompt: \"Summarize the following text concisely, preserving the key points.\",\n });\n try {\n const text = await session.prompt(input.text, { signal });\n update_progress(100, \"Summarization complete\");\n return { text };\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// TextSummaryTask (streaming)\n// ========================================================================\n\nexport const LlamaCpp_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n LlamaCppModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n if (!model) throw new Error(\"Model config is required for TextSummaryTask.\");\n\n const { LlamaChatSession } = await loadSdk();\n\n const context = await getOrCreateTextContext(model);\n const sequence = context.getSequence();\n const session = new LlamaChatSession({\n contextSequence: sequence,\n systemPrompt: \"Summarize the following text concisely, preserving the key points.\",\n });\n try {\n yield* streamFromSession<TextSummaryTaskOutput>((onTextChunk) => {\n return session.prompt(input.text, { signal, onTextChunk });\n }, signal);\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// Dispose helper (called from LlamaCppProvider.dispose())\n// ========================================================================\n\nexport async function disposeLlamaCppResources(): Promise<void> {\n const disposeAll = async (map: Map<string, { dispose(): Promise<void> }>) => {\n for (const resource of map.values()) {\n await resource.dispose().catch(() => {});\n }\n map.clear();\n };\n\n await disposeAll(textContexts as Map<string, { dispose(): Promise<void> }>);\n await disposeAll(embeddingContexts as Map<string, { dispose(): Promise<void> }>);\n await disposeAll(models as Map<string, { dispose(): Promise<void> }>);\n\n if (llamaInstance) {\n await (llamaInstance as any).dispose?.().catch(() => {});\n llamaInstance = undefined;\n }\n\n resolvedPaths.clear();\n}\n\nexport const LlamaCpp_CountTokens: AiProviderRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, onProgress, signal) => {\n const loadedModel = await getOrLoadModel(model!);\n // model.tokenizer is itself the tokenize function (Tokenizer = tokenize[\"tokenize\"])\n const tokens = loadedModel.tokenizer(input.text);\n return { count: tokens.length };\n};\n\nexport const LlamaCpp_CountTokens_Reactive: AiProviderReactiveRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n LlamaCppModelConfig\n> = async (input, _output, model) => {\n return LlamaCpp_CountTokens(input, model, () => {}, new AbortController().signal);\n};\n\n// ========================================================================\n// ToolCallingTask (non-streaming)\n// ========================================================================\n\n/**\n * Builds function definitions for node-llama-cpp from ToolDefinition inputs.\n * Each function handler captures the call arguments and returns a simple\n * acknowledgment, allowing us to collect tool calls without side-effects.\n */\nfunction buildLlamaCppFunctions(\n tools: ReadonlyArray<ToolDefinition>,\n capturedCalls: Array<{ name: string; input: Record<string, unknown> }>\n) {\n const { defineChatSessionFunction } = _sdk!;\n const functions: Record<string, any> = {};\n for (const tool of tools) {\n const toolName = tool.name;\n functions[toolName] = defineChatSessionFunction({\n description: tool.description,\n params: tool.inputSchema as any,\n handler(params: any) {\n capturedCalls.push({ name: toolName, input: (params ?? {}) as Record<string, unknown> });\n return \"OK\";\n },\n } as any);\n }\n return functions;\n}\n\nexport const LlamaCpp_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n LlamaCppModelConfig\n> = async (input, model, update_progress, signal) => {\n if (!model) throw new Error(\"Model config is required for ToolCallingTask.\");\n\n await loadSdk();\n\n update_progress(0, \"Loading model\");\n const context = await getOrCreateTextContext(model);\n\n const capturedCalls: Array<{ name: string; input: Record<string, unknown> }> = [];\n const functions =\n input.toolChoice === \"none\" ? undefined : buildLlamaCppFunctions(input.tools, capturedCalls);\n\n update_progress(10, \"Running tool calling\");\n const sequence = context.getSequence();\n const { LlamaChatSession } = _sdk!;\n const session = new LlamaChatSession({\n contextSequence: sequence,\n ...(input.systemPrompt && { systemPrompt: input.systemPrompt }),\n });\n\n try {\n const text = await session.prompt(input.prompt, {\n signal,\n ...(functions && { functions }),\n ...(input.temperature !== undefined && { temperature: input.temperature }),\n ...(input.maxTokens !== undefined && { maxTokens: input.maxTokens }),\n });\n\n const toolCalls: Record<string, unknown> = {};\n capturedCalls.forEach((call, index) => {\n const id = `call_${index}`;\n toolCalls[id] = { id, name: call.name, input: call.input };\n });\n\n update_progress(100, \"Tool calling complete\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n } finally {\n sequence.dispose();\n }\n};\n\n// ========================================================================\n// ToolCallingTask (streaming)\n// ========================================================================\n\nexport const LlamaCpp_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n LlamaCppModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n if (!model) throw new Error(\"Model config is required for ToolCallingTask.\");\n\n await loadSdk();\n\n const context = await getOrCreateTextContext(model);\n\n const capturedCalls: Array<{ name: string; input: Record<string, unknown> }> = [];\n const functions =\n input.toolChoice === \"none\" ? undefined : buildLlamaCppFunctions(input.tools, capturedCalls);\n\n const sequence = context.getSequence();\n const { LlamaChatSession } = _sdk!;\n const session = new LlamaChatSession({\n contextSequence: sequence,\n ...(input.systemPrompt && { systemPrompt: input.systemPrompt }),\n });\n\n const queue: string[] = [];\n let isComplete = false;\n let completionError: unknown;\n let resolveWait: (() => void) | null = null;\n\n const notifyWaiter = () => {\n resolveWait?.();\n resolveWait = null;\n };\n\n let accumulatedText = \"\";\n const promptPromise = session\n .prompt(input.prompt, {\n signal,\n ...(functions && { functions }),\n onTextChunk: (chunk: string) => {\n queue.push(chunk);\n notifyWaiter();\n },\n ...(input.temperature !== undefined && { temperature: input.temperature }),\n ...(input.maxTokens !== undefined && { maxTokens: input.maxTokens }),\n })\n .then(() => {\n isComplete = true;\n notifyWaiter();\n })\n .catch((err: unknown) => {\n completionError = err;\n isComplete = true;\n notifyWaiter();\n });\n\n try {\n while (true) {\n while (queue.length > 0) {\n const chunk = queue.shift()!;\n accumulatedText += chunk;\n yield { type: \"text-delta\", port: \"text\", textDelta: chunk };\n }\n if (isComplete) break;\n await new Promise<void>((r) => {\n resolveWait = r;\n });\n }\n // Drain any remaining chunks after completion signal\n while (queue.length > 0) {\n const chunk = queue.shift()!;\n accumulatedText += chunk;\n yield { type: \"text-delta\", port: \"text\", textDelta: chunk };\n }\n } finally {\n await promptPromise.catch(() => {});\n sequence.dispose();\n }\n\n if (completionError) {\n if (!signal.aborted) throw completionError;\n return;\n }\n\n const toolCalls: Record<string, unknown> = {};\n capturedCalls.forEach((call, index) => {\n const id = `call_${index}`;\n toolCalls[id] = { id, name: call.name, input: call.input };\n });\n const validToolCalls = filterValidToolCalls(toolCalls, input.tools);\n\n if (Object.keys(validToolCalls).length > 0) {\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: { ...validToolCalls } };\n }\n\n yield {\n type: \"finish\",\n data: { text: accumulatedText, toolCalls: validToolCalls } as ToolCallingTaskOutput,\n };\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const LLAMACPP_TASKS: Record<string, AiProviderRunFn<any, any, LlamaCppModelConfig>> = {\n DownloadModelTask: LlamaCpp_Download,\n UnloadModelTask: LlamaCpp_Unload,\n CountTokensTask: LlamaCpp_CountTokens,\n TextGenerationTask: LlamaCpp_TextGeneration,\n TextEmbeddingTask: LlamaCpp_TextEmbedding,\n TextRewriterTask: LlamaCpp_TextRewriter,\n TextSummaryTask: LlamaCpp_TextSummary,\n ToolCallingTask: LlamaCpp_ToolCalling,\n};\n\nexport const LLAMACPP_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, LlamaCppModelConfig>\n> = {\n TextGenerationTask: LlamaCpp_TextGeneration_Stream,\n TextRewriterTask: LlamaCpp_TextRewriter_Stream,\n TextSummaryTask: LlamaCpp_TextSummary_Stream,\n ToolCallingTask: LlamaCpp_ToolCalling_Stream,\n};\n\nexport const LLAMACPP_REACTIVE_TASKS: Record<\n string,\n AiProviderReactiveRunFn<any, any, LlamaCppModelConfig>\n> = {\n CountTokensTask: LlamaCpp_CountTokens_Reactive,\n};\n",
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 LLAMACPP_REACTIVE_TASKS,\n LLAMACPP_STREAM_TASKS,\n LLAMACPP_TASKS,\n} from \"./common/LlamaCpp_JobRunFns\";\nimport { LlamaCppProvider } from \"./LlamaCppProvider\";\n\nexport function LLAMACPP_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new LlamaCppProvider(\n LLAMACPP_TASKS,\n LLAMACPP_STREAM_TASKS,\n LLAMACPP_REACTIVE_TASKS\n ).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n getLogger().info(\"LLAMACPP_WORKER_JOBRUN registered\");\n}\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "4558BCC11EF9CE3C64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "4EF99828E101695D64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -33,7 +33,7 @@ import type { OllamaModelConfig } from "./common/Ollama_ModelSchema";
33
33
  */
34
34
  export declare class OllamaProvider extends AiProvider<OllamaModelConfig> {
35
35
  readonly name = "OLLAMA";
36
- readonly taskTypes: readonly ["TextGenerationTask", "TextEmbeddingTask", "TextRewriterTask", "TextSummaryTask"];
36
+ readonly taskTypes: readonly ["TextGenerationTask", "TextEmbeddingTask", "TextRewriterTask", "TextSummaryTask", "ToolCallingTask"];
37
37
  constructor(tasks?: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>>, streamTasks?: Record<string, AiProviderStreamFn<any, any, OllamaModelConfig>>, reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, OllamaModelConfig>>);
38
38
  }
39
39
  //# sourceMappingURL=OllamaProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OllamaProvider.d.ts","sourceRoot":"","sources":["../../src/provider-ollama/OllamaProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAC/D,QAAQ,CAAC,IAAI,YAAU;IAEvB,QAAQ,CAAC,SAAS,8FAKP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EACpE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAC7E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;CAIvF"}
1
+ {"version":3,"file":"OllamaProvider.d.ts","sourceRoot":"","sources":["../../src/provider-ollama/OllamaProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAe,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IAC/D,QAAQ,CAAC,IAAI,YAAU;IAEvB,QAAQ,CAAC,SAAS,iHAMP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EACpE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAC7E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;CAIvF"}
@@ -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 { AiProviderRunFn, AiProviderStreamFn, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput } from "@workglow/ai";
6
+ import type { AiProviderRunFn, AiProviderStreamFn, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
7
7
  import type { OllamaModelConfig } from "./Ollama_ModelSchema";
8
8
  export declare const Ollama_TextGeneration: AiProviderRunFn<TextGenerationTaskInput, TextGenerationTaskOutput, OllamaModelConfig>;
9
9
  export declare const Ollama_TextEmbedding: AiProviderRunFn<TextEmbeddingTaskInput, TextEmbeddingTaskOutput, OllamaModelConfig>;
@@ -12,6 +12,8 @@ export declare const Ollama_TextSummary: AiProviderRunFn<TextSummaryTaskInput, T
12
12
  export declare const Ollama_TextGeneration_Stream: AiProviderStreamFn<TextGenerationTaskInput, TextGenerationTaskOutput, OllamaModelConfig>;
13
13
  export declare const Ollama_TextRewriter_Stream: AiProviderStreamFn<TextRewriterTaskInput, TextRewriterTaskOutput, OllamaModelConfig>;
14
14
  export declare const Ollama_TextSummary_Stream: AiProviderStreamFn<TextSummaryTaskInput, TextSummaryTaskOutput, OllamaModelConfig>;
15
+ export declare const Ollama_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, OllamaModelConfig>;
16
+ export declare const Ollama_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, OllamaModelConfig>;
15
17
  export declare const OLLAMA_TASKS: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>>;
16
18
  export declare const OLLAMA_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, OllamaModelConfig>>;
17
19
  //# sourceMappingURL=Ollama_JobRunFns.browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ollama_JobRunFns.browser.d.ts","sourceRoot":"","sources":["../../../src/provider-ollama/common/Ollama_JobRunFns.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4B9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAoBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAgBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA+BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAKrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAKhD,CAAC"}
1
+ {"version":3,"file":"Ollama_JobRunFns.browser.d.ts","sourceRoot":"","sources":["../../../src/provider-ollama/common/Ollama_JobRunFns.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4B9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAoBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAgBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA+BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAiBF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA6ClB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAqElB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMhD,CAAC"}
@@ -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 { AiProviderRunFn, AiProviderStreamFn, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput } from "@workglow/ai";
6
+ import type { AiProviderRunFn, AiProviderStreamFn, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
7
7
  import type { OllamaModelConfig } from "./Ollama_ModelSchema";
8
8
  export declare const Ollama_TextGeneration: AiProviderRunFn<TextGenerationTaskInput, TextGenerationTaskOutput, OllamaModelConfig>;
9
9
  export declare const Ollama_TextEmbedding: AiProviderRunFn<TextEmbeddingTaskInput, TextEmbeddingTaskOutput, OllamaModelConfig>;
@@ -12,6 +12,8 @@ export declare const Ollama_TextSummary: AiProviderRunFn<TextSummaryTaskInput, T
12
12
  export declare const Ollama_TextGeneration_Stream: AiProviderStreamFn<TextGenerationTaskInput, TextGenerationTaskOutput, OllamaModelConfig>;
13
13
  export declare const Ollama_TextRewriter_Stream: AiProviderStreamFn<TextRewriterTaskInput, TextRewriterTaskOutput, OllamaModelConfig>;
14
14
  export declare const Ollama_TextSummary_Stream: AiProviderStreamFn<TextSummaryTaskInput, TextSummaryTaskOutput, OllamaModelConfig>;
15
+ export declare const Ollama_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, OllamaModelConfig>;
16
+ export declare const Ollama_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, OllamaModelConfig>;
15
17
  export declare const OLLAMA_TASKS: Record<string, AiProviderRunFn<any, any, OllamaModelConfig>>;
16
18
  export declare const OLLAMA_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, OllamaModelConfig>>;
17
19
  //# sourceMappingURL=Ollama_JobRunFns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ollama_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-ollama/common/Ollama_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4B9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAoBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAgBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA+BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAKrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAKhD,CAAC"}
1
+ {"version":3,"file":"Ollama_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-ollama/common/Ollama_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA4B9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAoBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAgBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA+BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAiBF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA6ClB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAqElB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAMhD,CAAC"}