@workglow/ai-provider 0.0.108 → 0.0.110
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.
- package/README.md +1 -1
- package/dist/{HFT_JobRunFns-c40ex37f.js → HFT_JobRunFns-0bwh5cmx.js} +4 -2
- package/dist/{HFT_JobRunFns-c40ex37f.js.map → HFT_JobRunFns-0bwh5cmx.js.map} +1 -1
- package/dist/anthropic/AnthropicProvider.d.ts +3 -1
- package/dist/anthropic/AnthropicProvider.d.ts.map +1 -1
- package/dist/anthropic/common/Anthropic_JobRunFns.d.ts +2 -1
- package/dist/anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -1
- package/dist/anthropic/index.js +68 -2
- package/dist/anthropic/index.js.map +3 -3
- package/dist/google-gemini/GoogleGeminiProvider.d.ts +3 -1
- package/dist/google-gemini/GoogleGeminiProvider.d.ts.map +1 -1
- package/dist/google-gemini/common/Gemini_JobRunFns.d.ts +2 -1
- package/dist/google-gemini/common/Gemini_JobRunFns.d.ts.map +1 -1
- package/dist/google-gemini/index.js +68 -2
- package/dist/google-gemini/index.js.map +3 -3
- package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts +5 -3
- package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts.map +1 -1
- package/dist/hf-transformers/common/HFT_JobRunFns.d.ts +121 -25
- package/dist/hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
- package/dist/hf-transformers/index.js +5 -3
- package/dist/hf-transformers/index.js.map +2 -2
- package/dist/{index-5qjdc78z.js → index-60ev6k93.js} +4 -1
- package/dist/{index-5qjdc78z.js.map → index-60ev6k93.js.map} +3 -3
- package/dist/{index-5hjgs1z7.js → index-8651nz8y.js} +4 -1
- package/dist/{index-5hjgs1z7.js.map → index-8651nz8y.js.map} +3 -3
- package/dist/{index-4fr8p4gy.js → index-dmrxc6ek.js} +302 -175
- package/dist/index-dmrxc6ek.js.map +10 -0
- package/dist/{index-drcnh4z5.js → index-q2t627d5.js} +4 -1
- package/dist/{index-drcnh4z5.js.map → index-q2t627d5.js.map} +3 -3
- package/dist/{index-14pbwsc9.js → index-tp5s7355.js} +4 -1
- package/dist/{index-14pbwsc9.js.map → index-tp5s7355.js.map} +3 -3
- package/dist/{index-aef54vq3.js → index-v72vr07f.js} +4 -1
- package/dist/{index-aef54vq3.js.map → index-v72vr07f.js.map} +3 -3
- package/dist/{index-cejxxqcz.js → index-weaycaap.js} +6 -3
- package/dist/index-weaycaap.js.map +10 -0
- package/dist/{index-xc6m9mcp.js → index-wr57rwyx.js} +4 -1
- package/dist/{index-xc6m9mcp.js.map → index-wr57rwyx.js.map} +3 -3
- package/dist/index.js +11 -8
- package/dist/index.js.map +3 -3
- package/dist/provider-hf-inference/HfInferenceProvider.d.ts +3 -1
- package/dist/provider-hf-inference/HfInferenceProvider.d.ts.map +1 -1
- package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts +2 -1
- package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts.map +1 -1
- package/dist/provider-hf-inference/index.js +59 -3
- package/dist/provider-hf-inference/index.js.map +3 -3
- package/dist/provider-llamacpp/LlamaCppProvider.d.ts +3 -1
- package/dist/provider-llamacpp/LlamaCppProvider.d.ts.map +1 -1
- package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts +2 -1
- package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts.map +1 -1
- package/dist/provider-llamacpp/index.js +87 -4
- package/dist/provider-llamacpp/index.js.map +3 -3
- package/dist/provider-ollama/OllamaProvider.d.ts +3 -1
- package/dist/provider-ollama/OllamaProvider.d.ts.map +1 -1
- package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts +2 -1
- package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts.map +1 -1
- package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts +2 -1
- package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -1
- package/dist/provider-ollama/index.browser.js +78 -2
- package/dist/provider-ollama/index.browser.js.map +4 -4
- package/dist/provider-ollama/index.js +78 -5
- package/dist/provider-ollama/index.js.map +3 -3
- package/dist/provider-openai/OpenAiProvider.d.ts +3 -1
- package/dist/provider-openai/OpenAiProvider.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts +2 -1
- package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -1
- package/dist/provider-openai/index.js +68 -2
- package/dist/provider-openai/index.js.map +3 -3
- package/dist/tf-mediapipe/TensorFlowMediaPipeProvider.d.ts +3 -1
- package/dist/tf-mediapipe/TensorFlowMediaPipeProvider.d.ts.map +1 -1
- package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts +67 -5
- package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts.map +1 -1
- package/dist/tf-mediapipe/index.js +20 -1
- package/dist/tf-mediapipe/index.js.map +4 -4
- package/package.json +20 -19
- package/dist/hf-transformers/common/HFT_CallbackStatus.d.ts +0 -36
- package/dist/hf-transformers/common/HFT_CallbackStatus.d.ts.map +0 -1
- package/dist/index-4fr8p4gy.js.map +0 -10
- package/dist/index-cejxxqcz.js.map +0 -10
package/dist/index.js.map
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const TENSORFLOW_MEDIAPIPE = \"TENSORFLOW_MEDIAPIPE\";\n\nexport type TextPipelineTask =\n | \"text-embedder\"\n | \"text-classifier\"\n | \"text-language-detector\"\n | \"genai-text\"\n | \"audio-classifier\"\n | \"audio-embedder\"\n | \"vision-face-detector\"\n | \"vision-face-landmarker\"\n | \"vision-face-stylizer\"\n | \"vision-gesture-recognizer\"\n | \"vision-hand-landmarker\"\n | \"vision-holistic-landmarker\"\n | \"vision-image-classifier\"\n | \"vision-image-embedder\"\n | \"vision-image-segmenter\"\n | \"vision-image-interactive-segmenter\"\n | \"vision-object-detector\"\n | \"vision-pose-landmarker\";\n\nexport const TextPipelineTask = {\n \"text-embedder\": \"text-embedder\",\n \"text-classifier\": \"text-classifier\",\n \"text-language-detector\": \"text-language-detector\",\n \"genai-text\": \"genai-text\",\n \"audio-classifier\": \"audio-classifier\",\n \"audio-embedder\": \"audio-embedder\",\n \"vision-face-detector\": \"vision-face-detector\",\n \"vision-face-landmarker\": \"vision-face-landmarker\",\n \"vision-face-stylizer\": \"vision-face-stylizer\",\n \"vision-gesture-recognizer\": \"vision-gesture-recognizer\",\n \"vision-hand-landmarker\": \"vision-hand-landmarker\",\n \"vision-holistic-landmarker\": \"vision-holistic-landmarker\",\n \"vision-image-classifier\": \"vision-image-classifier\",\n \"vision-image-embedder\": \"vision-image-embedder\",\n \"vision-image-segmenter\": \"vision-image-segmenter\",\n \"vision-image-interactive-segmenter\": \"vision-image-interactive-segmenter\",\n \"vision-object-detector\": \"vision-object-detector\",\n \"vision-pose-landmarker\": \"vision-pose-landmarker\",\n} as const satisfies Record<TextPipelineTask, TextPipelineTask>;\n",
|
|
6
6
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { TENSORFLOW_MEDIAPIPE, TextPipelineTask } from \"../common/TFMP_Constants\";\n\nexport const TFMPModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: TENSORFLOW_MEDIAPIPE,\n description: \"Discriminator: TensorFlow MediaPipe backend.\",\n },\n provider_config: {\n type: \"object\",\n description: \"TensorFlow MediaPipe-specific options.\",\n properties: {\n model_path: {\n type: \"string\",\n description: \"Filesystem path or URI for the ONNX model.\",\n },\n task_engine: {\n type: \"string\",\n enum: [\"text\", \"audio\", \"vision\", \"genai\"],\n description: \"Task engine for the MediaPipe model.\",\n },\n pipeline: {\n type: \"string\",\n enum: Object.values(TextPipelineTask),\n description: \"Pipeline task type for the MediaPipe model.\",\n },\n },\n required: [\"model_path\", \"task_engine\", \"pipeline\"],\n additionalProperties: false,\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const TFMPModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...TFMPModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...TFMPModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type TFMPModelRecord = FromSchema<typeof TFMPModelRecordSchema>;\n\nexport const TFMPModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...TFMPModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...TFMPModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type TFMPModelConfig = FromSchema<typeof TFMPModelConfigSchema>;\n",
|
|
7
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider, type AiProviderReactiveRunFn, type AiProviderRunFn } from \"@workglow/ai\";\nimport { TENSORFLOW_MEDIAPIPE } from \"./common/TFMP_Constants\";\nimport type { TFMPModelConfig } from \"./common/TFMP_ModelSchema\";\n\n/**\n * AI provider for TensorFlow MediaPipe models.\n *\n * Supports text, vision, and gesture recognition tasks via @mediapipe packages.\n *\n * Task run functions are injected via the constructor so that the heavy\n * `@mediapipe/*` libraries are only imported where actually needed\n * (inline mode, worker server), not on the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no heavy imports:\n * await new TensorFlowMediaPipeProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_tfmp.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { TFMP_TASKS } from \"@workglow/ai-provider/tf-mediapipe\";\n * await new TensorFlowMediaPipeProvider(TFMP_TASKS).register({ mode: \"inline\" });\n *\n * // Worker side -- caller provides the tasks:\n * import { TFMP_TASKS } from \"@workglow/ai-provider/tf-mediapipe\";\n * new TensorFlowMediaPipeProvider(TFMP_TASKS).registerOnWorkerServer(workerServer);\n * ```\n */\nexport class TensorFlowMediaPipeProvider extends AiProvider<TFMPModelConfig> {\n readonly name = TENSORFLOW_MEDIAPIPE;\n\n readonly taskTypes = [\n \"DownloadModelTask\",\n \"UnloadModelTask\",\n \"TextEmbeddingTask\",\n \"TextLanguageDetectionTask\",\n \"TextClassificationTask\",\n \"ImageSegmentationTask\",\n \"ImageEmbeddingTask\",\n \"ImageClassificationTask\",\n \"ObjectDetectionTask\",\n \"GestureRecognizerTask\",\n \"HandLandmarkerTask\",\n \"FaceDetectorTask\",\n \"FaceLandmarkerTask\",\n \"PoseLandmarkerTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, TFMPModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, TFMPModelConfig>>\n ) {\n super(tasks, undefined, reactiveTasks);\n }\n}\n"
|
|
7
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider, type AiProviderReactiveRunFn, type AiProviderRunFn } from \"@workglow/ai\";\nimport { TENSORFLOW_MEDIAPIPE } from \"./common/TFMP_Constants\";\nimport type { TFMPModelConfig } from \"./common/TFMP_ModelSchema\";\n\n/**\n * AI provider for TensorFlow MediaPipe models.\n *\n * Supports text, vision, and gesture recognition tasks via @mediapipe packages.\n *\n * Task run functions are injected via the constructor so that the heavy\n * `@mediapipe/*` libraries are only imported where actually needed\n * (inline mode, worker server), not on the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no heavy imports:\n * await new TensorFlowMediaPipeProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_tfmp.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { TFMP_TASKS } from \"@workglow/ai-provider/tf-mediapipe\";\n * await new TensorFlowMediaPipeProvider(TFMP_TASKS).register({ mode: \"inline\" });\n *\n * // Worker side -- caller provides the tasks:\n * import { TFMP_TASKS } from \"@workglow/ai-provider/tf-mediapipe\";\n * new TensorFlowMediaPipeProvider(TFMP_TASKS).registerOnWorkerServer(workerServer);\n * ```\n */\nexport class TensorFlowMediaPipeProvider extends AiProvider<TFMPModelConfig> {\n readonly name = TENSORFLOW_MEDIAPIPE;\n readonly isLocal = true;\n readonly supportsBrowser = true;\n\n readonly taskTypes = [\n \"DownloadModelTask\",\n \"UnloadModelTask\",\n \"ModelInfoTask\",\n \"TextEmbeddingTask\",\n \"TextLanguageDetectionTask\",\n \"TextClassificationTask\",\n \"ImageSegmentationTask\",\n \"ImageEmbeddingTask\",\n \"ImageClassificationTask\",\n \"ObjectDetectionTask\",\n \"GestureRecognizerTask\",\n \"HandLandmarkerTask\",\n \"FaceDetectorTask\",\n \"FaceLandmarkerTask\",\n \"PoseLandmarkerTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, TFMPModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, TFMPModelConfig>>\n ) {\n super(tasks, undefined, reactiveTasks);\n }\n}\n"
|
|
8
8
|
],
|
|
9
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAM,uBAAuB;AAsB7B,IAAM,mBAAmB;AAAA,EAC9B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,EAC1B,wBAAwB;AAAA,EACxB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,sCAAsC;AAAA,EACtC,0BAA0B;AAAA,EAC1B,0BAA0B;AAC5B;;ACzCA;AAIO,IAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,aAAa;AAAA,UACX,MAAM;AAAA,UACN,MAAM,CAAC,QAAQ,SAAS,UAAU,OAAO;AAAA,UACzC,aAAa;AAAA,QACf;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM,OAAO,OAAO,gBAAgB;AAAA,UACpC,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,UAAU,CAAC,cAAc,eAAe,UAAU;AAAA,MAClD,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,wBAAwB;AAAA,EACnC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,gBAAgB;AAAA,EACrB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,gBAAgB,QAAQ;AAAA,EACrE,sBAAsB;AACxB;AAIO,IAAM,wBAAwB;AAAA,EACnC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,gBAAgB;AAAA,EACrB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,gBAAgB,QAAQ;AAAA,EACrE,sBAAsB;AACxB;;AC1DA;AA8BO,MAAM,oCAAoC,WAA4B;AAAA,EAClE,OAAO;AAAA,
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAM,uBAAuB;AAsB7B,IAAM,mBAAmB;AAAA,EAC9B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,EAC1B,wBAAwB;AAAA,EACxB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,sCAAsC;AAAA,EACtC,0BAA0B;AAAA,EAC1B,0BAA0B;AAC5B;;ACzCA;AAIO,IAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,aAAa;AAAA,UACX,MAAM;AAAA,UACN,MAAM,CAAC,QAAQ,SAAS,UAAU,OAAO;AAAA,UACzC,aAAa;AAAA,QACf;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM,OAAO,OAAO,gBAAgB;AAAA,UACpC,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,UAAU,CAAC,cAAc,eAAe,UAAU;AAAA,MAClD,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,wBAAwB;AAAA,EACnC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,gBAAgB;AAAA,EACrB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,gBAAgB,QAAQ;AAAA,EACrE,sBAAsB;AACxB;AAIO,IAAM,wBAAwB;AAAA,EACnC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,gBAAgB;AAAA,EACrB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,gBAAgB,QAAQ;AAAA,EACrE,sBAAsB;AACxB;;AC1DA;AA8BO,MAAM,oCAAoC,WAA4B;AAAA,EAClE,OAAO;AAAA,EACP,UAAU;AAAA,EACV,kBAAkB;AAAA,EAElB,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,eACA;AAAA,IACA,MAAM,OAAO,WAAW,aAAa;AAAA;AAEzC;",
|
|
10
|
+
"debugId": "E609318101983ADB64756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
|
@@ -34,7 +34,9 @@ import type { HfInferenceModelConfig } from "./common/HFI_ModelSchema";
|
|
|
34
34
|
*/
|
|
35
35
|
export declare class HfInferenceProvider extends AiProvider<HfInferenceModelConfig> {
|
|
36
36
|
readonly name = "HF_INFERENCE";
|
|
37
|
-
readonly
|
|
37
|
+
readonly isLocal = false;
|
|
38
|
+
readonly supportsBrowser = true;
|
|
39
|
+
readonly taskTypes: readonly ["ModelInfoTask", "TextGenerationTask", "TextEmbeddingTask", "TextRewriterTask", "TextSummaryTask", "ToolCallingTask"];
|
|
38
40
|
constructor(tasks?: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>>, streamTasks?: Record<string, AiProviderStreamFn<any, any, HfInferenceModelConfig>>, reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfInferenceModelConfig>>);
|
|
39
41
|
}
|
|
40
42
|
//# sourceMappingURL=HfInferenceProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HfInferenceProvider.d.ts","sourceRoot":"","sources":["../../src/provider-hf-inference/HfInferenceProvider.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,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,mBAAoB,SAAQ,UAAU,CAAC,sBAAsB,CAAC;IACzE,QAAQ,CAAC,IAAI,kBAAgB;
|
|
1
|
+
{"version":3,"file":"HfInferenceProvider.d.ts","sourceRoot":"","sources":["../../src/provider-hf-inference/HfInferenceProvider.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,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,mBAAoB,SAAQ,UAAU,CAAC,sBAAsB,CAAC;IACzE,QAAQ,CAAC,IAAI,kBAAgB;IAC7B,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,eAAe,QAAQ;IAEhC,QAAQ,CAAC,SAAS,kIAOP;gBAGT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC,EACzE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC,EAClF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;CAI5F"}
|
|
@@ -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, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
|
|
6
|
+
import type { AiProviderRunFn, AiProviderStreamFn, ModelInfoTaskInput, ModelInfoTaskOutput, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput, ToolCallingTaskInput, ToolCallingTaskOutput } from "@workglow/ai";
|
|
7
7
|
import type { HfInferenceModelConfig } from "./HFI_ModelSchema";
|
|
8
8
|
export declare const HFI_TextGeneration: AiProviderRunFn<TextGenerationTaskInput, TextGenerationTaskOutput, HfInferenceModelConfig>;
|
|
9
9
|
export declare const HFI_TextEmbedding: AiProviderRunFn<TextEmbeddingTaskInput, TextEmbeddingTaskOutput, HfInferenceModelConfig>;
|
|
@@ -14,6 +14,7 @@ export declare const HFI_TextRewriter_Stream: AiProviderStreamFn<TextRewriterTas
|
|
|
14
14
|
export declare const HFI_TextSummary_Stream: AiProviderStreamFn<TextSummaryTaskInput, TextSummaryTaskOutput, HfInferenceModelConfig>;
|
|
15
15
|
export declare const HFI_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, HfInferenceModelConfig>;
|
|
16
16
|
export declare const HFI_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, HfInferenceModelConfig>;
|
|
17
|
+
export declare const HFI_ModelInfo: AiProviderRunFn<ModelInfoTaskInput, ModelInfoTaskOutput, HfInferenceModelConfig>;
|
|
17
18
|
export declare const HFI_TASKS: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>>;
|
|
18
19
|
export declare const HFI_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, HfInferenceModelConfig>>;
|
|
19
20
|
//# sourceMappingURL=HFI_JobRunFns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HFI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-inference/common/HFI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,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;AAItB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAoDhE,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"HFI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-inference/common/HFI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAoDhE,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,CAwCvB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CAyCvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CAkCvB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAkCvB,CAAC;AAMF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,CA0BvB,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CACtD,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CAyBvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAyBvB,CAAC;AAgBF,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CA6EvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAqGvB,CAAC;AAMF,eAAO,MAAM,aAAa,EAAE,eAAe,CACzC,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,CAYvB,CAAC;AAMF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAOvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAMrD,CAAC"}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
HfInferenceModelRecordSchema,
|
|
5
5
|
HfInferenceModelSchema,
|
|
6
6
|
HfInferenceProvider
|
|
7
|
-
} from "../index-
|
|
7
|
+
} from "../index-v72vr07f.js";
|
|
8
8
|
import {
|
|
9
9
|
__require
|
|
10
10
|
} from "../index-6j5pq722.js";
|
|
@@ -42,6 +42,16 @@ function getProvider(model) {
|
|
|
42
42
|
return model?.provider_config?.provider;
|
|
43
43
|
}
|
|
44
44
|
var HFI_TextGeneration = async (input, model, update_progress, signal) => {
|
|
45
|
+
if (Array.isArray(input.prompt)) {
|
|
46
|
+
getLogger().warn("HFI_TextGeneration: array input received; processing sequentially (no native batch support)");
|
|
47
|
+
const prompts = input.prompt;
|
|
48
|
+
const results = [];
|
|
49
|
+
for (const item of prompts) {
|
|
50
|
+
const r = await HFI_TextGeneration({ ...input, prompt: item }, model, update_progress, signal);
|
|
51
|
+
results.push(r.text);
|
|
52
|
+
}
|
|
53
|
+
return { text: results };
|
|
54
|
+
}
|
|
45
55
|
const logger = getLogger();
|
|
46
56
|
const timerLabel = `hfi:TextGeneration:${model?.provider_config?.model_name}`;
|
|
47
57
|
logger.time(timerLabel, { model: model?.provider_config?.model_name });
|
|
@@ -89,6 +99,16 @@ var HFI_TextEmbedding = async (input, model, update_progress, signal) => {
|
|
|
89
99
|
return { vector: new Float32Array(embedding) };
|
|
90
100
|
};
|
|
91
101
|
var HFI_TextRewriter = async (input, model, update_progress, signal) => {
|
|
102
|
+
if (Array.isArray(input.text)) {
|
|
103
|
+
getLogger().warn("HFI_TextRewriter: array input received; processing sequentially (no native batch support)");
|
|
104
|
+
const texts = input.text;
|
|
105
|
+
const results = [];
|
|
106
|
+
for (const item of texts) {
|
|
107
|
+
const r = await HFI_TextRewriter({ ...input, text: item }, model, update_progress, signal);
|
|
108
|
+
results.push(r.text);
|
|
109
|
+
}
|
|
110
|
+
return { text: results };
|
|
111
|
+
}
|
|
92
112
|
update_progress(0, "Starting HF Inference text rewriting");
|
|
93
113
|
const client = await getClient(model);
|
|
94
114
|
const modelName = getModelName(model);
|
|
@@ -105,6 +125,16 @@ var HFI_TextRewriter = async (input, model, update_progress, signal) => {
|
|
|
105
125
|
return { text: response.choices[0]?.message?.content ?? "" };
|
|
106
126
|
};
|
|
107
127
|
var HFI_TextSummary = async (input, model, update_progress, signal) => {
|
|
128
|
+
if (Array.isArray(input.text)) {
|
|
129
|
+
getLogger().warn("HFI_TextSummary: array input received; processing sequentially (no native batch support)");
|
|
130
|
+
const texts = input.text;
|
|
131
|
+
const results = [];
|
|
132
|
+
for (const item of texts) {
|
|
133
|
+
const r = await HFI_TextSummary({ ...input, text: item }, model, update_progress, signal);
|
|
134
|
+
results.push(r.text);
|
|
135
|
+
}
|
|
136
|
+
return { text: results };
|
|
137
|
+
}
|
|
108
138
|
update_progress(0, "Starting HF Inference text summarization");
|
|
109
139
|
const client = await getClient(model);
|
|
110
140
|
const modelName = getModelName(model);
|
|
@@ -191,6 +221,18 @@ function mapHFIToolChoice(toolChoice) {
|
|
|
191
221
|
return "auto";
|
|
192
222
|
}
|
|
193
223
|
var HFI_ToolCalling = async (input, model, update_progress, signal) => {
|
|
224
|
+
if (Array.isArray(input.prompt)) {
|
|
225
|
+
getLogger().warn("HFI_ToolCalling: array input received; processing sequentially (no native batch support)");
|
|
226
|
+
const prompts = input.prompt;
|
|
227
|
+
const texts = [];
|
|
228
|
+
const toolCallsList = [];
|
|
229
|
+
for (const item of prompts) {
|
|
230
|
+
const r = await HFI_ToolCalling({ ...input, prompt: item }, model, update_progress, signal);
|
|
231
|
+
texts.push(r.text);
|
|
232
|
+
toolCallsList.push(r.toolCalls);
|
|
233
|
+
}
|
|
234
|
+
return { text: texts, toolCalls: toolCallsList };
|
|
235
|
+
}
|
|
194
236
|
update_progress(0, "Starting HF Inference tool calling");
|
|
195
237
|
const client = await getClient(model);
|
|
196
238
|
const modelName = getModelName(model);
|
|
@@ -336,7 +378,20 @@ var HFI_ToolCalling_Stream = async function* (input, model, signal) {
|
|
|
336
378
|
data: { text: accumulatedText, toolCalls: validToolCalls }
|
|
337
379
|
};
|
|
338
380
|
};
|
|
381
|
+
var HFI_ModelInfo = async (input) => {
|
|
382
|
+
return {
|
|
383
|
+
model: input.model,
|
|
384
|
+
is_local: false,
|
|
385
|
+
is_remote: true,
|
|
386
|
+
supports_browser: true,
|
|
387
|
+
supports_node: true,
|
|
388
|
+
is_cached: false,
|
|
389
|
+
is_loaded: false,
|
|
390
|
+
file_sizes: null
|
|
391
|
+
};
|
|
392
|
+
};
|
|
339
393
|
var HFI_TASKS = {
|
|
394
|
+
ModelInfoTask: HFI_ModelInfo,
|
|
340
395
|
TextGenerationTask: HFI_TextGeneration,
|
|
341
396
|
TextEmbeddingTask: HFI_TextEmbedding,
|
|
342
397
|
TextRewriterTask: HFI_TextRewriter,
|
|
@@ -374,7 +429,8 @@ export {
|
|
|
374
429
|
HFI_TextGeneration,
|
|
375
430
|
HFI_TextEmbedding,
|
|
376
431
|
HFI_TASKS,
|
|
377
|
-
HFI_STREAM_TASKS
|
|
432
|
+
HFI_STREAM_TASKS,
|
|
433
|
+
HFI_ModelInfo
|
|
378
434
|
};
|
|
379
435
|
|
|
380
|
-
//# debugId=
|
|
436
|
+
//# debugId=1F594D11E4044E7A64756E2164756E21
|
|
@@ -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 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",
|
|
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 ModelInfoTaskInput,\n ModelInfoTaskOutput,\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 if (Array.isArray(input.prompt)) {\n getLogger().warn(\n \"HFI_TextGeneration: array input received; processing sequentially (no native batch support)\"\n );\n const prompts = input.prompt as string[];\n const results: string[] = [];\n for (const item of prompts) {\n const r = await HFI_TextGeneration({ ...input, prompt: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\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 as string }],\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 if (Array.isArray(input.text)) {\n getLogger().warn(\n \"HFI_TextRewriter: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const results: string[] = [];\n for (const item of texts) {\n const r = await HFI_TextRewriter({ ...input, text: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n update_progress(0, \"Starting 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 as string },\n { role: \"user\", content: input.text as string },\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 if (Array.isArray(input.text)) {\n getLogger().warn(\n \"HFI_TextSummary: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const results: string[] = [];\n for (const item of texts) {\n const r = await HFI_TextSummary({ ...input, text: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n update_progress(0, \"Starting 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 as string },\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 as string }],\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 as string },\n { role: \"user\", content: input.text as string },\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 as string },\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 if (Array.isArray(input.prompt)) {\n getLogger().warn(\n \"HFI_ToolCalling: array input received; processing sequentially (no native batch support)\"\n );\n const prompts = input.prompt as string[];\n const texts: string[] = [];\n const toolCallsList: Record<string, unknown>[] = [];\n for (const item of prompts) {\n const r = await HFI_ToolCalling({ ...input, prompt: item }, model, update_progress, signal);\n texts.push(r.text as string);\n toolCallsList.push(r.toolCalls as Record<string, unknown>);\n }\n return { text: texts, toolCalls: toolCallsList };\n }\n\n update_progress(0, \"Starting 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 as string });\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 as string });\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// Model info\n// ========================================================================\n\nexport const HFI_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n HfInferenceModelConfig\n> = async (input) => {\n return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n };\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const HFI_TASKS: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>> = {\n ModelInfoTask: HFI_ModelInfo,\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": "
|
|
8
|
+
"mappings": ";;;;;;;;;;;AAwBA;AAEA;AAGA,IAAI;AACJ,eAAe,kBAAkB,GAAG;AAAA,EAClC,IAAI,CAAC,MAAM;AAAA,IACT,IAAI;AAAA,MACF,OAAO,MAAa;AAAA,MACpB,MAAM;AAAA,MACN,MAAM,IAAI,MACR,sHACF;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO;AAAA;AAUT,eAAe,SAAS,CAAC,OAA2C;AAAA,EAClE,MAAM,MAAM,MAAM,mBAAmB;AAAA,EACrC,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,SACJ,QAAQ,kBACR,QAAQ,YACP,OAAO,YAAY,cAAc,QAAQ,KAAK,WAAW;AAAA,EAC5D,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,MACR,wGACF;AAAA,EACF;AAAA,EACA,OAAO,IAAI,IAAI,gBAAgB,MAAM;AAAA;AAGvC,SAAS,YAAY,CAAC,OAAmD;AAAA,EACvE,MAAM,OAAO,OAAO,iBAAiB;AAAA,EACrC,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,WAAW,CAClB,OACuC;AAAA,EACvC,OAAO,OAAO,iBAAiB;AAAA;AAG1B,IAAM,qBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,IAAI,MAAM,QAAQ,MAAM,MAAM,GAAG;AAAA,IAC/B,UAAU,EAAE,KACV,6FACF;AAAA,IACA,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,UAAoB,CAAC;AAAA,IAC3B,WAAW,QAAQ,SAAS;AAAA,MAC1B,MAAM,IAAI,MAAM,mBAAmB,KAAK,OAAO,QAAQ,KAAK,GAAG,OAAO,iBAAiB,MAAM;AAAA,MAC7F,QAAQ,KAAK,EAAE,IAAc;AAAA,IAC/B;AAAA,IACA,OAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AAAA,EAEA,MAAM,SAAS,UAAU;AAAA,EACzB,MAAM,aAAa,sBAAsB,OAAO,iBAAiB;AAAA,EACjE,OAAO,KAAK,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EAErE,gBAAgB,GAAG,uCAAuC;AAAA,EAC1D,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,WAAW,MAAM,OAAO,eAC5B;AAAA,IACE,OAAO;AAAA,IACP,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAiB,CAAC;AAAA,IAC5D,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB,OAAO,MAAM;AAAA,IACb,mBAAmB,MAAM;AAAA,IACzB;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,gBAAgB,KAAK,wCAAwC;AAAA,EAC7D,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EACxE,OAAO,EAAE,MAAM,SAAS,QAAQ,IAAI,SAAS,WAAW,GAAG;AAAA;AAGtD,IAAM,oBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,MAAM,SAAS,UAAU;AAAA,EACzB,MAAM,aAAa,qBAAqB,OAAO,iBAAiB;AAAA,EAChE,OAAO,KAAK,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EAErE,gBAAgB,GAAG,sCAAsC;AAAA,EACzD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,IAC7B,MAAM,aAAa,MAAM,QAAQ,IAC/B,MAAM,KAAK,IAAI,CAAC,SACd,OAAO,kBACL;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,GACA,EAAE,OAAO,CACX,CACF,CACF;AAAA,IAEA,gBAAgB,KAAK,uCAAuC;AAAA,IAC5D,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,YAAY,OAAO,KAAK,CAAC;AAAA,IACrF,OAAO;AAAA,MACL,QAAQ,WAAW,IAAI,CAAC,eAAc,IAAI,aAAa,UAAgC,CAAC;AAAA,IAC1F;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,MAAM,OAAO,kBAC7B;AAAA,IACE,OAAO;AAAA,IACP,QAAQ,MAAM;AAAA,EAChB,GACA,EAAE,OAAO,CACX;AAAA,EAEA,gBAAgB,KAAK,uCAAuC;AAAA,EAC5D,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EACxE,OAAO,EAAE,QAAQ,IAAI,aAAa,SAAgC,EAAE;AAAA;AAG/D,IAAM,mBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,IAC7B,UAAU,EAAE,KACV,2FACF;AAAA,IACA,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,UAAoB,CAAC;AAAA,IAC3B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,IAAI,MAAM,iBAAiB,KAAK,OAAO,MAAM,KAAK,GAAG,OAAO,iBAAiB,MAAM;AAAA,MACzF,QAAQ,KAAK,EAAE,IAAc;AAAA,IAC/B;AAAA,IACA,OAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AAAA,EAEA,gBAAgB,GAAG,sCAAsC;AAAA,EACzD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,WAAW,MAAM,OAAO,eAC5B;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,MAAM,OAAiB;AAAA,MAClD,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAe;AAAA,IAChD;AAAA,IACA;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,gBAAgB,KAAK,uCAAuC;AAAA,EAC5D,OAAO,EAAE,MAAM,SAAS,QAAQ,IAAI,SAAS,WAAW,GAAG;AAAA;AAGtD,IAAM,kBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,IAC7B,UAAU,EAAE,KACV,0FACF;AAAA,IACA,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,UAAoB,CAAC;AAAA,IAC3B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,IAAI,MAAM,gBAAgB,KAAK,OAAO,MAAM,KAAK,GAAG,OAAO,iBAAiB,MAAM;AAAA,MACxF,QAAQ,KAAK,EAAE,IAAc;AAAA,IAC/B;AAAA,IACA,OAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AAAA,EAEA,gBAAgB,GAAG,0CAA0C;AAAA,EAC7D,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,WAAW,MAAM,OAAO,eAC5B;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,0CAA0C;AAAA,MACrE,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAe;AAAA,IAChD;AAAA,IACA;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,gBAAgB,KAAK,2CAA2C;AAAA,EAChE,OAAO,EAAE,MAAM,SAAS,QAAQ,IAAI,SAAS,WAAW,GAAG;AAAA;AAOtD,IAAM,4BAIT,gBAAgB,CAAC,OAAO,OAAO,QAA8D;AAAA,EAC/F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,SAAS,OAAO,qBACpB;AAAA,IACE,OAAO;AAAA,IACP,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAiB,CAAC;AAAA,IAC5D,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB,OAAO,MAAM;AAAA,IACb,mBAAmB,MAAM;AAAA,IACzB;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,iBAAiB,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,WAAW;AAAA,IAClD,IAAI,OAAO;AAAA,MACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA8B;AAAA;AAGxD,IAAM,0BAIT,gBAAgB,CAAC,OAAO,OAAO,QAA4D;AAAA,EAC7F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,SAAS,OAAO,qBACpB;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,MAAM,OAAiB;AAAA,MAClD,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAe;AAAA,IAChD;AAAA,IACA;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,iBAAiB,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,WAAW;AAAA,IAClD,IAAI,OAAO;AAAA,MACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA4B;AAAA;AAGtD,IAAM,yBAIT,gBAAgB,CAAC,OAAO,OAAO,QAA2D;AAAA,EAC5F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,SAAS,OAAO,qBACpB;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,0CAA0C;AAAA,MACrE,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAe;AAAA,IAChD;AAAA,IACA;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,iBAAiB,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,WAAW;AAAA,IAClD,IAAI,OAAO;AAAA,MACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA2B;AAAA;AAO5D,SAAS,gBAAgB,CACvB,YAC0C;AAAA,EAC1C,IAAI,CAAC,cAAc,eAAe;AAAA,IAAQ,OAAO;AAAA,EACjD,IAAI,eAAe;AAAA,IAAQ,OAAO;AAAA,EAClC,IAAI,eAAe;AAAA,IAAY,OAAO;AAAA,EAEtC,OAAO;AAAA;AAGF,IAAM,kBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,IAAI,MAAM,QAAQ,MAAM,MAAM,GAAG;AAAA,IAC/B,UAAU,EAAE,KACV,0FACF;AAAA,IACA,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,gBAA2C,CAAC;AAAA,IAClD,WAAW,QAAQ,SAAS;AAAA,MAC1B,MAAM,IAAI,MAAM,gBAAgB,KAAK,OAAO,QAAQ,KAAK,GAAG,OAAO,iBAAiB,MAAM;AAAA,MAC1F,MAAM,KAAK,EAAE,IAAc;AAAA,MAC3B,cAAc,KAAK,EAAE,SAAoC;AAAA,IAC3D;AAAA,IACA,OAAO,EAAE,MAAM,OAAO,WAAW,cAAc;AAAA,EACjD;AAAA,EAEA,gBAAgB,GAAG,oCAAoC;AAAA,EACvD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,OAAuB;AAAA,IACpD,MAAM;AAAA,IACN,UAAU;AAAA,MACR,MAAM,EAAE;AAAA,MACR,aAAa,qBAAqB,CAAC;AAAA,MACnC,YAAY,EAAE;AAAA,IAChB;AAAA,EACF,EAAE;AAAA,EAEF,MAAM,WAAgE,CAAC;AAAA,EACvE,IAAI,MAAM,cAAc;AAAA,IACtB,SAAS,KAAK,EAAE,MAAM,UAAU,SAAS,MAAM,aAAa,CAAC;AAAA,EAC/D;AAAA,EACA,SAAS,KAAK,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAiB,CAAC;AAAA,EAE/D,MAAM,aAAa,iBAAiB,MAAM,UAAU;AAAA,EAEpD,MAAM,SAAc;AAAA,IAClB,OAAO;AAAA,IACP;AAAA,IACA,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,IAAI,eAAe,QAAQ;AAAA,IACzB,OAAO,QAAQ;AAAA,IACf,OAAO,cAAc;AAAA,EACvB;AAAA,EAEA,MAAM,WAAW,MAAM,OAAO,eAAe,QAAQ,EAAE,OAAO,CAAC;AAAA,EAE/D,MAAM,OAAO,SAAS,QAAQ,IAAI,SAAS,WAAW;AAAA,EACtD,MAAM,YAAqC,CAAC;AAAA,EAC5C,IAAI,YAAY;AAAA,GACd,SAAS,QAAQ,IAAI,SAAiB,cAAc,CAAC,GAAG,QAAQ,CAAC,OAAY;AAAA,IAC7E,IAAI,cAAuC,CAAC;AAAA,IAC5C,MAAM,UAAU,GAAG,UAAU;AAAA,IAC7B,IAAI,OAAO,YAAY,UAAU;AAAA,MAC/B,IAAI;AAAA,QACF,cAAc,KAAK,MAAM,OAAO;AAAA,QAChC,MAAM;AAAA,QACN,MAAM,UAAU,iBAAiB,OAAO;AAAA,QACxC,cAAe,WAAuC,CAAC;AAAA;AAAA,IAE3D,EAAO,SAAI,WAAW,MAAM;AAAA,MAC1B,cAAc;AAAA,IAChB;AAAA,IACA,MAAM,KAAM,GAAG,MAAiB,QAAQ;AAAA,IACxC;AAAA,IACA,UAAU,MAAM,EAAE,IAAI,MAAM,GAAG,SAAS,MAAgB,OAAO,YAAY;AAAA,GAC5E;AAAA,EAED,gBAAgB,KAAK,qCAAqC;AAAA,EAC1D,OAAO,EAAE,MAAM,WAAW,qBAAqB,WAAW,MAAM,KAAK,EAAE;AAAA;AAGlE,IAAM,yBAIT,gBAAgB,CAAC,OAAO,OAAO,QAA2D;AAAA,EAC5F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,OAAuB;AAAA,IACpD,MAAM;AAAA,IACN,UAAU;AAAA,MACR,MAAM,EAAE;AAAA,MACR,aAAa,qBAAqB,CAAC;AAAA,MACnC,YAAY,EAAE;AAAA,IAChB;AAAA,EACF,EAAE;AAAA,EAEF,MAAM,WAAgE,CAAC;AAAA,EACvE,IAAI,MAAM,cAAc;AAAA,IACtB,SAAS,KAAK,EAAE,MAAM,UAAU,SAAS,MAAM,aAAa,CAAC;AAAA,EAC/D;AAAA,EACA,SAAS,KAAK,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAiB,CAAC;AAAA,EAE/D,MAAM,aAAa,iBAAiB,MAAM,UAAU;AAAA,EAEpD,MAAM,SAAc;AAAA,IAClB,OAAO;AAAA,IACP;AAAA,IACA,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,IAAI,eAAe,QAAQ;AAAA,IACzB,OAAO,QAAQ;AAAA,IACf,OAAO,cAAc;AAAA,EACvB;AAAA,EAEA,MAAM,SAAS,OAAO,qBAAqB,QAAQ,EAAE,OAAO,CAAC;AAAA,EAE7D,IAAI,kBAAkB;AAAA,EACtB,MAAM,sBAAsB,IAAI;AAAA,EAEhC,iBAAiB,SAAS,QAAQ;AAAA,IAChC,MAAM,SAAS,MAAM,QAAQ;AAAA,IAC7B,IAAI,CAAC;AAAA,MAAQ;AAAA,IAEb,MAAM,eAAe,OAAO,OAAO,WAAW;AAAA,IAC9C,IAAI,cAAc;AAAA,MAChB,mBAAmB;AAAA,MACnB,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,aAAa;AAAA,IACpE;AAAA,IAEA,MAAM,WAAY,OAAO,OAAe;AAAA,IACxC,IAAI,MAAM,QAAQ,QAAQ,GAAG;AAAA,MAC3B,WAAW,WAAW,UAAU;AAAA,QAC9B,MAAM,MAAM,QAAQ;AAAA,QACpB,IAAI,CAAC,oBAAoB,IAAI,GAAG,GAAG;AAAA,UACjC,oBAAoB,IAAI,KAAK;AAAA,YAC3B,IAAI,QAAQ,MAAM;AAAA,YAClB,MAAM,QAAQ,UAAU,QAAQ;AAAA,YAChC,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA,MAAM,MAAM,oBAAoB,IAAI,GAAG;AAAA,QACvC,IAAI,QAAQ;AAAA,UAAI,IAAI,KAAK,QAAQ;AAAA,QACjC,IAAI,QAAQ,UAAU;AAAA,UAAM,IAAI,OAAO,QAAQ,SAAS;AAAA,QACxD,IAAI,QAAQ,UAAU;AAAA,UAAW,IAAI,aAAa,QAAQ,SAAS;AAAA,MACrE;AAAA,MAEA,MAAM,iBAA0C,CAAC;AAAA,MACjD,MAAM,KAAK,oBAAoB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,QAAQ;AAAA,QAC/D,IAAI;AAAA,QACJ,IAAI;AAAA,UACF,cAAc,KAAK,MAAM,GAAG,SAAS;AAAA,UACrC,MAAM;AAAA,UACN,MAAM,UAAU,iBAAiB,GAAG,SAAS;AAAA,UAC7C,cAAe,WAAuC,CAAC;AAAA;AAAA,QAEzD,MAAM,MAAM,GAAG,MAAM,OAAO,GAAG;AAAA,QAC/B,eAAe,OAAO,EAAE,IAAI,GAAG,IAAI,MAAM,GAAG,MAAM,OAAO,YAAY;AAAA,OACtE;AAAA,MACD,MAAM,EAAE,MAAM,gBAAgB,MAAM,aAAa,aAAa,eAAe;AAAA,IAC/E;AAAA,EACF;AAAA,EAEA,MAAM,YAAqC,CAAC;AAAA,EAC5C,MAAM,KAAK,oBAAoB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,QAAQ;AAAA,IAC/D,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,aAAa,KAAK,MAAM,GAAG,SAAS;AAAA,MACpC,MAAM;AAAA,MACN,aAAc,iBAAiB,GAAG,SAAS,KAAiC,CAAC;AAAA;AAAA,IAE/E,MAAM,MAAM,GAAG,MAAM,OAAO,GAAG;AAAA,IAC/B,UAAU,OAAO,EAAE,IAAI,GAAG,IAAI,MAAM,GAAG,MAAM,OAAO,WAAW;AAAA,GAChE;AAAA,EAED,MAAM,iBAAiB,qBAAqB,WAAW,MAAM,KAAK;AAAA,EAClE,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM,EAAE,MAAM,iBAAiB,WAAW,eAAe;AAAA,EAC3D;AAAA;AAOK,IAAM,gBAIT,OAAO,UAAU;AAAA,EACnB,OAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AAAA;AAOK,IAAM,YAA+E;AAAA,EAC1F,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;AAEO,IAAM,mBAGT;AAAA,EACF,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;;ACrkBA;AAIO,SAAS,0BAA0B,GAAG;AAAA,EAC3C,MAAM,eAAe,sBAAsB,IAAI,aAAa;AAAA,EAC5D,IAAI,oBAAoB,WAAW,gBAAgB,EAAE,uBAAuB,YAAY;AAAA,EACxF,aAAa,UAAU;AAAA,EACvB,QAAQ,IAAI,8BAA8B;AAAA;",
|
|
9
|
+
"debugId": "1F594D11E4044E7A64756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -32,7 +32,9 @@ 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
|
|
35
|
+
readonly isLocal = true;
|
|
36
|
+
readonly supportsBrowser = false;
|
|
37
|
+
readonly taskTypes: readonly ["DownloadModelTask", "UnloadModelTask", "ModelInfoTask", "CountTokensTask", "TextGenerationTask", "TextEmbeddingTask", "TextRewriterTask", "TextSummaryTask", "ToolCallingTask"];
|
|
36
38
|
constructor(tasks?: Record<string, AiProviderRunFn<any, any, LlamaCppModelConfig>>, streamTasks?: Record<string, AiProviderStreamFn<any, any, LlamaCppModelConfig>>, reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, LlamaCppModelConfig>>);
|
|
37
39
|
}
|
|
38
40
|
//# 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;
|
|
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;IAC/B,QAAQ,CAAC,OAAO,QAAQ;IACxB,QAAQ,CAAC,eAAe,SAAS;IAEjC,QAAQ,CAAC,SAAS,6LAUP;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, ToolCallingTaskInput, ToolCallingTaskOutput, 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, ModelInfoTaskInput, ModelInfoTaskOutput, 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>;
|
|
@@ -19,6 +19,7 @@ export declare const LlamaCpp_CountTokens: AiProviderRunFn<CountTokensTaskInput,
|
|
|
19
19
|
export declare const LlamaCpp_CountTokens_Reactive: AiProviderReactiveRunFn<CountTokensTaskInput, CountTokensTaskOutput, LlamaCppModelConfig>;
|
|
20
20
|
export declare const LlamaCpp_ToolCalling: AiProviderRunFn<ToolCallingTaskInput, ToolCallingTaskOutput, LlamaCppModelConfig>;
|
|
21
21
|
export declare const LlamaCpp_ToolCalling_Stream: AiProviderStreamFn<ToolCallingTaskInput, ToolCallingTaskOutput, LlamaCppModelConfig>;
|
|
22
|
+
export declare const LlamaCpp_ModelInfo: AiProviderRunFn<ModelInfoTaskInput, ModelInfoTaskOutput, LlamaCppModelConfig>;
|
|
22
23
|
export declare const LLAMACPP_TASKS: Record<string, AiProviderRunFn<any, any, LlamaCppModelConfig>>;
|
|
23
24
|
export declare const LLAMACPP_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, LlamaCppModelConfig>>;
|
|
24
25
|
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,oBAAoB,EACpB,qBAAqB,EAErB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,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,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAKtB,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,CAqCpB,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,CAgCpB,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,CAmCpB,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,CAmBpB,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,CAuDpB,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,kBAAkB,CAC1D,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,CA8FpB,CAAC;AAMF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,CAkCpB,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAUzF,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,12 +5,13 @@ import {
|
|
|
5
5
|
LlamaCppModelRecordSchema,
|
|
6
6
|
LlamaCppModelSchema,
|
|
7
7
|
LlamaCppProvider
|
|
8
|
-
} from "../index-
|
|
8
|
+
} from "../index-wr57rwyx.js";
|
|
9
9
|
import {
|
|
10
10
|
__require
|
|
11
11
|
} from "../index-6j5pq722.js";
|
|
12
12
|
// src/provider-llamacpp/common/LlamaCpp_JobRunFns.ts
|
|
13
13
|
import { filterValidToolCalls } from "@workglow/ai";
|
|
14
|
+
import { getLogger } from "@workglow/util";
|
|
14
15
|
var _sdk;
|
|
15
16
|
async function loadSdk() {
|
|
16
17
|
if (!_sdk) {
|
|
@@ -178,6 +179,16 @@ var LlamaCpp_Unload = async (input, model, update_progress, _signal) => {
|
|
|
178
179
|
return { model: input.model };
|
|
179
180
|
};
|
|
180
181
|
var LlamaCpp_TextGeneration = async (input, model, update_progress, signal) => {
|
|
182
|
+
if (Array.isArray(input.prompt)) {
|
|
183
|
+
getLogger().warn("LlamaCpp_TextGeneration: array input received; processing sequentially (no native batch support)");
|
|
184
|
+
const prompts = input.prompt;
|
|
185
|
+
const results = [];
|
|
186
|
+
for (const item of prompts) {
|
|
187
|
+
const r = await LlamaCpp_TextGeneration({ ...input, prompt: item }, model, update_progress, signal);
|
|
188
|
+
results.push(r.text);
|
|
189
|
+
}
|
|
190
|
+
return { text: results };
|
|
191
|
+
}
|
|
181
192
|
if (!model)
|
|
182
193
|
throw new Error("Model config is required for TextGenerationTask.");
|
|
183
194
|
const { LlamaChatSession } = await loadSdk();
|
|
@@ -235,6 +246,16 @@ var LlamaCpp_TextEmbedding = async (input, model, update_progress, _signal) => {
|
|
|
235
246
|
return { vector: embeddings[0] };
|
|
236
247
|
};
|
|
237
248
|
var LlamaCpp_TextRewriter = async (input, model, update_progress, signal) => {
|
|
249
|
+
if (Array.isArray(input.text)) {
|
|
250
|
+
getLogger().warn("LlamaCpp_TextRewriter: array input received; processing sequentially (no native batch support)");
|
|
251
|
+
const texts = input.text;
|
|
252
|
+
const results = [];
|
|
253
|
+
for (const item of texts) {
|
|
254
|
+
const r = await LlamaCpp_TextRewriter({ ...input, text: item }, model, update_progress, signal);
|
|
255
|
+
results.push(r.text);
|
|
256
|
+
}
|
|
257
|
+
return { text: results };
|
|
258
|
+
}
|
|
238
259
|
if (!model)
|
|
239
260
|
throw new Error("Model config is required for TextRewriterTask.");
|
|
240
261
|
const { LlamaChatSession } = await loadSdk();
|
|
@@ -267,6 +288,16 @@ var LlamaCpp_TextRewriter_Stream = async function* (input, model, signal) {
|
|
|
267
288
|
}
|
|
268
289
|
};
|
|
269
290
|
var LlamaCpp_TextSummary = async (input, model, update_progress, signal) => {
|
|
291
|
+
if (Array.isArray(input.text)) {
|
|
292
|
+
getLogger().warn("LlamaCpp_TextSummary: array input received; processing sequentially (no native batch support)");
|
|
293
|
+
const texts = input.text;
|
|
294
|
+
const results = [];
|
|
295
|
+
for (const item of texts) {
|
|
296
|
+
const r = await LlamaCpp_TextSummary({ ...input, text: item }, model, update_progress, signal);
|
|
297
|
+
results.push(r.text);
|
|
298
|
+
}
|
|
299
|
+
return { text: results };
|
|
300
|
+
}
|
|
270
301
|
if (!model)
|
|
271
302
|
throw new Error("Model config is required for TextSummaryTask.");
|
|
272
303
|
const { LlamaChatSession } = await loadSdk();
|
|
@@ -321,6 +352,16 @@ async function disposeLlamaCppResources() {
|
|
|
321
352
|
resolvedPaths.clear();
|
|
322
353
|
}
|
|
323
354
|
var LlamaCpp_CountTokens = async (input, model, onProgress, signal) => {
|
|
355
|
+
if (Array.isArray(input.text)) {
|
|
356
|
+
getLogger().warn("LlamaCpp_CountTokens: array input received; processing sequentially (no native batch support)");
|
|
357
|
+
const texts = input.text;
|
|
358
|
+
const counts = [];
|
|
359
|
+
for (const item of texts) {
|
|
360
|
+
const r = await LlamaCpp_CountTokens({ ...input, text: item }, model, onProgress, signal);
|
|
361
|
+
counts.push(r.count);
|
|
362
|
+
}
|
|
363
|
+
return { count: counts };
|
|
364
|
+
}
|
|
324
365
|
const loadedModel = await getOrLoadModel(model);
|
|
325
366
|
const tokens = loadedModel.tokenizer(input.text);
|
|
326
367
|
return { count: tokens.length };
|
|
@@ -345,6 +386,18 @@ function buildLlamaCppFunctions(tools, capturedCalls) {
|
|
|
345
386
|
return functions;
|
|
346
387
|
}
|
|
347
388
|
var LlamaCpp_ToolCalling = async (input, model, update_progress, signal) => {
|
|
389
|
+
if (Array.isArray(input.prompt)) {
|
|
390
|
+
getLogger().warn("LlamaCpp_ToolCalling: array input received; processing sequentially (no native batch support)");
|
|
391
|
+
const prompts = input.prompt;
|
|
392
|
+
const texts = [];
|
|
393
|
+
const toolCallsList = [];
|
|
394
|
+
for (const item of prompts) {
|
|
395
|
+
const r = await LlamaCpp_ToolCalling({ ...input, prompt: item }, model, update_progress, signal);
|
|
396
|
+
texts.push(r.text);
|
|
397
|
+
toolCallsList.push(r.toolCalls);
|
|
398
|
+
}
|
|
399
|
+
return { text: texts, toolCalls: toolCallsList };
|
|
400
|
+
}
|
|
348
401
|
if (!model)
|
|
349
402
|
throw new Error("Model config is required for ToolCallingTask.");
|
|
350
403
|
await loadSdk();
|
|
@@ -457,9 +510,38 @@ var LlamaCpp_ToolCalling_Stream = async function* (input, model, signal) {
|
|
|
457
510
|
data: { text: accumulatedText, toolCalls: validToolCalls }
|
|
458
511
|
};
|
|
459
512
|
};
|
|
513
|
+
var LlamaCpp_ModelInfo = async (input, model) => {
|
|
514
|
+
if (!model)
|
|
515
|
+
throw new Error("Model config is required for ModelInfoTask.");
|
|
516
|
+
const modelPath = getActualModelPath(model);
|
|
517
|
+
const is_loaded = models.has(modelPath);
|
|
518
|
+
let is_cached = is_loaded;
|
|
519
|
+
let file_sizes = null;
|
|
520
|
+
try {
|
|
521
|
+
const fs = await import("node:fs/promises");
|
|
522
|
+
const stat = await fs.stat(modelPath);
|
|
523
|
+
is_cached = true;
|
|
524
|
+
file_sizes = { model: stat.size };
|
|
525
|
+
} catch {
|
|
526
|
+
if (resolvedPaths.has(getConfigKey(model))) {
|
|
527
|
+
is_cached = true;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
return {
|
|
531
|
+
model: input.model,
|
|
532
|
+
is_local: true,
|
|
533
|
+
is_remote: false,
|
|
534
|
+
supports_browser: false,
|
|
535
|
+
supports_node: true,
|
|
536
|
+
is_cached,
|
|
537
|
+
is_loaded,
|
|
538
|
+
file_sizes
|
|
539
|
+
};
|
|
540
|
+
};
|
|
460
541
|
var LLAMACPP_TASKS = {
|
|
461
542
|
DownloadModelTask: LlamaCpp_Download,
|
|
462
543
|
UnloadModelTask: LlamaCpp_Unload,
|
|
544
|
+
ModelInfoTask: LlamaCpp_ModelInfo,
|
|
463
545
|
CountTokensTask: LlamaCpp_CountTokens,
|
|
464
546
|
TextGenerationTask: LlamaCpp_TextGeneration,
|
|
465
547
|
TextEmbeddingTask: LlamaCpp_TextEmbedding,
|
|
@@ -477,12 +559,12 @@ var LLAMACPP_REACTIVE_TASKS = {
|
|
|
477
559
|
CountTokensTask: LlamaCpp_CountTokens_Reactive
|
|
478
560
|
};
|
|
479
561
|
// src/provider-llamacpp/LlamaCpp_Worker.ts
|
|
480
|
-
import { getLogger, globalServiceRegistry, WORKER_SERVER } from "@workglow/util";
|
|
562
|
+
import { getLogger as getLogger2, globalServiceRegistry, WORKER_SERVER } from "@workglow/util";
|
|
481
563
|
function LLAMACPP_WORKER_JOBRUN_REGISTER() {
|
|
482
564
|
const workerServer = globalServiceRegistry.get(WORKER_SERVER);
|
|
483
565
|
new LlamaCppProvider(LLAMACPP_TASKS, LLAMACPP_STREAM_TASKS, LLAMACPP_REACTIVE_TASKS).registerOnWorkerServer(workerServer);
|
|
484
566
|
workerServer.sendReady();
|
|
485
|
-
|
|
567
|
+
getLogger2().info("LLAMACPP_WORKER_JOBRUN registered");
|
|
486
568
|
}
|
|
487
569
|
export {
|
|
488
570
|
disposeLlamaCppResources,
|
|
@@ -496,6 +578,7 @@ export {
|
|
|
496
578
|
LlamaCpp_TextGeneration_Stream,
|
|
497
579
|
LlamaCpp_TextGeneration,
|
|
498
580
|
LlamaCpp_TextEmbedding,
|
|
581
|
+
LlamaCpp_ModelInfo,
|
|
499
582
|
LlamaCpp_Download,
|
|
500
583
|
LlamaCpp_CountTokens_Reactive,
|
|
501
584
|
LlamaCpp_CountTokens,
|
|
@@ -511,4 +594,4 @@ export {
|
|
|
511
594
|
LLAMACPP_DEFAULT_MODELS_DIR
|
|
512
595
|
};
|
|
513
596
|
|
|
514
|
-
//# debugId=
|
|
597
|
+
//# debugId=3B2BE18FF6F105A164756E2164756E21
|