@workglow/ai-provider 0.1.1 → 0.2.0

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 (149) hide show
  1. package/dist/common/ToolCallParsers.d.ts +253 -0
  2. package/dist/common/ToolCallParsers.d.ts.map +1 -0
  3. package/dist/provider-anthropic/AnthropicProvider.d.ts +3 -2
  4. package/dist/provider-anthropic/AnthropicProvider.d.ts.map +1 -1
  5. package/dist/provider-anthropic/AnthropicQueuedProvider.d.ts +3 -2
  6. package/dist/provider-anthropic/AnthropicQueuedProvider.d.ts.map +1 -1
  7. package/dist/provider-anthropic/common/Anthropic_Client.d.ts.map +1 -1
  8. package/dist/provider-anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -1
  9. package/dist/provider-anthropic/common/Anthropic_ModelSchema.d.ts.map +1 -1
  10. package/dist/provider-anthropic/common/Anthropic_ToolCalling.d.ts +10 -0
  11. package/dist/provider-anthropic/common/Anthropic_ToolCalling.d.ts.map +1 -0
  12. package/dist/provider-anthropic/index.js +3 -4
  13. package/dist/provider-anthropic/index.js.map +3 -3
  14. package/dist/provider-anthropic/runtime.js +225 -8
  15. package/dist/provider-anthropic/runtime.js.map +9 -8
  16. package/dist/provider-chrome/WebBrowserProvider.d.ts +2 -1
  17. package/dist/provider-chrome/WebBrowserProvider.d.ts.map +1 -1
  18. package/dist/provider-chrome/WebBrowserQueuedProvider.d.ts +2 -1
  19. package/dist/provider-chrome/WebBrowserQueuedProvider.d.ts.map +1 -1
  20. package/dist/provider-chrome/common/WebBrowser_Constants.d.ts.map +1 -1
  21. package/dist/provider-chrome/common/WebBrowser_ModelSchema.d.ts.map +1 -1
  22. package/dist/provider-chrome/index.js +2 -4
  23. package/dist/provider-chrome/index.js.map +3 -3
  24. package/dist/provider-chrome/runtime.js +3 -7
  25. package/dist/provider-chrome/runtime.js.map +4 -4
  26. package/dist/provider-gemini/GoogleGeminiProvider.d.ts +3 -2
  27. package/dist/provider-gemini/GoogleGeminiProvider.d.ts.map +1 -1
  28. package/dist/provider-gemini/GoogleGeminiQueuedProvider.d.ts +3 -2
  29. package/dist/provider-gemini/GoogleGeminiQueuedProvider.d.ts.map +1 -1
  30. package/dist/provider-gemini/common/Gemini_JobRunFns.d.ts.map +1 -1
  31. package/dist/provider-gemini/common/Gemini_ModelSchema.d.ts.map +1 -1
  32. package/dist/provider-gemini/common/Gemini_ToolCalling.d.ts +10 -0
  33. package/dist/provider-gemini/common/Gemini_ToolCalling.d.ts.map +1 -0
  34. package/dist/provider-gemini/index.js +3 -4
  35. package/dist/provider-gemini/index.js.map +3 -3
  36. package/dist/provider-gemini/runtime.js +188 -8
  37. package/dist/provider-gemini/runtime.js.map +7 -6
  38. package/dist/provider-hf-inference/HfInferenceProvider.d.ts +3 -2
  39. package/dist/provider-hf-inference/HfInferenceProvider.d.ts.map +1 -1
  40. package/dist/provider-hf-inference/HfInferenceQueuedProvider.d.ts +3 -2
  41. package/dist/provider-hf-inference/HfInferenceQueuedProvider.d.ts.map +1 -1
  42. package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts.map +1 -1
  43. package/dist/provider-hf-inference/common/HFI_ModelSchema.d.ts.map +1 -1
  44. package/dist/provider-hf-inference/common/HFI_ToolCalling.d.ts +10 -0
  45. package/dist/provider-hf-inference/common/HFI_ToolCalling.d.ts.map +1 -0
  46. package/dist/provider-hf-inference/index.js +3 -4
  47. package/dist/provider-hf-inference/index.js.map +3 -3
  48. package/dist/provider-hf-inference/runtime.js +157 -8
  49. package/dist/provider-hf-inference/runtime.js.map +7 -6
  50. package/dist/provider-hf-transformers/HuggingFaceTransformersProvider.d.ts +3 -2
  51. package/dist/provider-hf-transformers/HuggingFaceTransformersProvider.d.ts.map +1 -1
  52. package/dist/provider-hf-transformers/HuggingFaceTransformersQueuedProvider.d.ts +3 -3
  53. package/dist/provider-hf-transformers/HuggingFaceTransformersQueuedProvider.d.ts.map +1 -1
  54. package/dist/provider-hf-transformers/common/HFT_Constants.d.ts.map +1 -1
  55. package/dist/provider-hf-transformers/common/HFT_JobRunFns.d.ts +52 -0
  56. package/dist/provider-hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
  57. package/dist/provider-hf-transformers/common/HFT_ModelSchema.d.ts.map +1 -1
  58. package/dist/provider-hf-transformers/common/HFT_OnnxDtypes.d.ts.map +1 -1
  59. package/dist/provider-hf-transformers/common/HFT_Pipeline.d.ts +1 -1
  60. package/dist/provider-hf-transformers/common/HFT_Pipeline.d.ts.map +1 -1
  61. package/dist/provider-hf-transformers/common/HFT_StructuredGeneration.d.ts.map +1 -1
  62. package/dist/provider-hf-transformers/common/HFT_TextClassification.d.ts.map +1 -1
  63. package/dist/provider-hf-transformers/common/HFT_TextQuestionAnswer.d.ts.map +1 -1
  64. package/dist/provider-hf-transformers/common/HFT_TextSummary.d.ts.map +1 -1
  65. package/dist/provider-hf-transformers/common/HFT_TextTranslation.d.ts.map +1 -1
  66. package/dist/provider-hf-transformers/common/HFT_ToolCalling.d.ts +10 -0
  67. package/dist/provider-hf-transformers/common/HFT_ToolCalling.d.ts.map +1 -0
  68. package/dist/provider-hf-transformers/common/HFT_ToolMarkup.d.ts +20 -0
  69. package/dist/provider-hf-transformers/common/HFT_ToolMarkup.d.ts.map +1 -0
  70. package/dist/provider-hf-transformers/common/HFT_ToolParser.d.ts +67 -0
  71. package/dist/provider-hf-transformers/common/HFT_ToolParser.d.ts.map +1 -0
  72. package/dist/provider-hf-transformers/index.d.ts +1 -0
  73. package/dist/provider-hf-transformers/index.d.ts.map +1 -1
  74. package/dist/provider-hf-transformers/index.js +71 -7
  75. package/dist/provider-hf-transformers/index.js.map +7 -6
  76. package/dist/provider-hf-transformers/runtime.d.ts +1 -0
  77. package/dist/provider-hf-transformers/runtime.d.ts.map +1 -1
  78. package/dist/provider-hf-transformers/runtime.js +1244 -13
  79. package/dist/provider-hf-transformers/runtime.js.map +18 -15
  80. package/dist/provider-llamacpp/LlamaCppProvider.d.ts +3 -2
  81. package/dist/provider-llamacpp/LlamaCppProvider.d.ts.map +1 -1
  82. package/dist/provider-llamacpp/LlamaCppQueuedProvider.d.ts +3 -2
  83. package/dist/provider-llamacpp/LlamaCppQueuedProvider.d.ts.map +1 -1
  84. package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts.map +1 -1
  85. package/dist/provider-llamacpp/common/LlamaCpp_ModelSchema.d.ts.map +1 -1
  86. package/dist/provider-llamacpp/common/LlamaCpp_ToolCalling.d.ts +10 -0
  87. package/dist/provider-llamacpp/common/LlamaCpp_ToolCalling.d.ts.map +1 -0
  88. package/dist/provider-llamacpp/common/LlamaCpp_ToolParser.d.ts +35 -0
  89. package/dist/provider-llamacpp/common/LlamaCpp_ToolParser.d.ts.map +1 -0
  90. package/dist/provider-llamacpp/index.js +3 -4
  91. package/dist/provider-llamacpp/index.js.map +3 -3
  92. package/dist/provider-llamacpp/runtime.js +1394 -9
  93. package/dist/provider-llamacpp/runtime.js.map +11 -8
  94. package/dist/provider-ollama/OllamaProvider.d.ts +3 -2
  95. package/dist/provider-ollama/OllamaProvider.d.ts.map +1 -1
  96. package/dist/provider-ollama/OllamaQueuedProvider.d.ts +3 -2
  97. package/dist/provider-ollama/OllamaQueuedProvider.d.ts.map +1 -1
  98. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts +47 -1
  99. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts.map +1 -1
  100. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts +46 -0
  101. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -1
  102. package/dist/provider-ollama/common/Ollama_ModelSchema.d.ts.map +1 -1
  103. package/dist/provider-ollama/common/Ollama_ToolCalling.d.ts +16 -0
  104. package/dist/provider-ollama/common/Ollama_ToolCalling.d.ts.map +1 -0
  105. package/dist/provider-ollama/index.browser.js +3 -4
  106. package/dist/provider-ollama/index.browser.js.map +3 -3
  107. package/dist/provider-ollama/index.js +3 -4
  108. package/dist/provider-ollama/index.js.map +3 -3
  109. package/dist/provider-ollama/runtime.browser.js +130 -8
  110. package/dist/provider-ollama/runtime.browser.js.map +8 -7
  111. package/dist/provider-ollama/runtime.js +125 -8
  112. package/dist/provider-ollama/runtime.js.map +8 -7
  113. package/dist/provider-openai/OpenAiProvider.d.ts +3 -2
  114. package/dist/provider-openai/OpenAiProvider.d.ts.map +1 -1
  115. package/dist/provider-openai/OpenAiQueuedProvider.d.ts +3 -2
  116. package/dist/provider-openai/OpenAiQueuedProvider.d.ts.map +1 -1
  117. package/dist/provider-openai/common/OpenAI_Client.d.ts.map +1 -1
  118. package/dist/provider-openai/common/OpenAI_JobRunFns.browser.d.ts.map +1 -1
  119. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -1
  120. package/dist/provider-openai/common/OpenAI_ModelSchema.d.ts.map +1 -1
  121. package/dist/provider-openai/common/OpenAI_ToolCalling.d.ts +10 -0
  122. package/dist/provider-openai/common/OpenAI_ToolCalling.d.ts.map +1 -0
  123. package/dist/provider-openai/index.browser.js +3 -4
  124. package/dist/provider-openai/index.browser.js.map +3 -3
  125. package/dist/provider-openai/index.js +3 -4
  126. package/dist/provider-openai/index.js.map +3 -3
  127. package/dist/provider-openai/runtime.browser.js +138 -8
  128. package/dist/provider-openai/runtime.browser.js.map +8 -7
  129. package/dist/provider-openai/runtime.js +138 -8
  130. package/dist/provider-openai/runtime.js.map +8 -7
  131. package/dist/provider-tf-mediapipe/TensorFlowMediaPipeProvider.d.ts +2 -1
  132. package/dist/provider-tf-mediapipe/TensorFlowMediaPipeProvider.d.ts.map +1 -1
  133. package/dist/provider-tf-mediapipe/TensorFlowMediaPipeQueuedProvider.d.ts +2 -1
  134. package/dist/provider-tf-mediapipe/TensorFlowMediaPipeQueuedProvider.d.ts.map +1 -1
  135. package/dist/provider-tf-mediapipe/common/TFMP_Constants.d.ts.map +1 -1
  136. package/dist/provider-tf-mediapipe/common/TFMP_Download.d.ts.map +1 -1
  137. package/dist/provider-tf-mediapipe/common/TFMP_ImageClassification.d.ts.map +1 -1
  138. package/dist/provider-tf-mediapipe/common/TFMP_JobRunFns.d.ts.map +1 -1
  139. package/dist/provider-tf-mediapipe/common/TFMP_ModelSchema.d.ts.map +1 -1
  140. package/dist/provider-tf-mediapipe/common/TFMP_Runtime.d.ts +3 -16
  141. package/dist/provider-tf-mediapipe/common/TFMP_Runtime.d.ts.map +1 -1
  142. package/dist/provider-tf-mediapipe/index.js.map +2 -2
  143. package/dist/provider-tf-mediapipe/runtime.js +2 -4
  144. package/dist/provider-tf-mediapipe/runtime.js.map +13 -13
  145. package/dist/test.d.ts +7 -0
  146. package/dist/test.d.ts.map +1 -0
  147. package/dist/test.js +913 -0
  148. package/dist/test.js.map +10 -0
  149. package/package.json +24 -17
@@ -6,29 +6,29 @@
6
6
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ModelSearchResultItem } from \"@workglow/ai\";\n\n/**\n * Normalized search string for model search, or undefined when absent or whitespace-only.\n */\nexport function normalizedModelSearchQuery(query: string | undefined): string | undefined {\n const t = query?.trim();\n return t ? t.toLowerCase() : undefined;\n}\n\n/**\n * Filter static/SDK model rows by optional query (substring match on label and id).\n */\nexport function filterLabeledModelsByQuery(\n models: ReadonlyArray<{ label: string; value: string }>,\n query: string | undefined\n): Array<{ label: string; value: string }> {\n const q = normalizedModelSearchQuery(query);\n if (!q) return [...models];\n return models.filter(\n (m) => m.value.toLowerCase().includes(q) || m.label.toLowerCase().includes(q)\n );\n}\n\n/**\n * Filter {@link ModelSearchResultItem} rows by optional query.\n */\nexport function filterModelSearchResultsByQuery(\n results: ModelSearchResultItem[],\n query: string | undefined\n): ModelSearchResultItem[] {\n const q = normalizedModelSearchQuery(query);\n if (!q) return results;\n return results.filter(\n (m) =>\n m.id.toLowerCase().includes(q) ||\n m.label.toLowerCase().includes(q) ||\n m.description.toLowerCase().includes(q)\n );\n}\n",
7
7
  "/**\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 const TFMP_DEFAULT_TASK_TYPES = [\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 \"ModelSearchTask\",\n] as const;\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",
8
8
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport { filterLabeledModelsByQuery } from \"../../common/modelSearchQuery\";\nimport { TENSORFLOW_MEDIAPIPE } from \"./TFMP_Constants\";\n\nconst TFMP_MODELS: Array<{ label: string; value: string }> = [\n { label: \"text-embedder Universal Sentence Encoder\", value: \"text-embedder\" },\n];\n\nexport function createTFMPModelSearch(\n providerId: string\n): AiProviderRunFn<ModelSearchTaskInput, ModelSearchTaskOutput> {\n return async (input) => {\n const models = filterLabeledModelsByQuery(TFMP_MODELS, input.query);\n const results: ModelSearchResultItem[] = models.map((m) => ({\n id: m.value,\n label: m.label,\n description: \"\",\n record: {\n model_id: m.value,\n provider: providerId,\n title: m.value,\n description: \"\",\n tasks: [],\n provider_config: { model_path: m.value },\n metadata: {},\n },\n raw: m,\n }));\n return { results };\n };\n}\n\nexport const TFMP_ModelSearch: AiProviderRunFn<ModelSearchTaskInput, ModelSearchTaskOutput> =\n createTFMPModelSearch(TENSORFLOW_MEDIAPIPE);\n",
9
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksTextSDK, loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask, type TaskInstance, wasm_reference_counts } from \"./TFMP_Runtime\";\n\nexport const TFMP_Download: AiProviderRunFn<\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n let task: TaskInstance;\n switch (model?.provider_config.pipeline) {\n case \"text-embedder\": {\n const { TextEmbedder } = await loadTfmpTasksTextSDK();\n task = await getModelTask(model, {}, onProgress, signal, TextEmbedder);\n break;\n }\n case \"text-classifier\": {\n const { TextClassifier } = await loadTfmpTasksTextSDK();\n task = await getModelTask(model, {}, onProgress, signal, TextClassifier);\n break;\n }\n case \"text-language-detector\": {\n const { LanguageDetector } = await loadTfmpTasksTextSDK();\n task = await getModelTask(model, {}, onProgress, signal, LanguageDetector);\n break;\n }\n case \"vision-image-classifier\": {\n const { ImageClassifier } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, ImageClassifier);\n break;\n }\n case \"vision-image-embedder\": {\n const { ImageEmbedder } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, ImageEmbedder);\n break;\n }\n case \"vision-image-segmenter\": {\n const { ImageSegmenter } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, ImageSegmenter);\n break;\n }\n case \"vision-object-detector\": {\n const { ObjectDetector } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, ObjectDetector);\n break;\n }\n case \"vision-face-detector\": {\n const { FaceDetector } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, FaceDetector);\n break;\n }\n case \"vision-face-landmarker\": {\n const { FaceLandmarker } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, FaceLandmarker);\n break;\n }\n case \"vision-gesture-recognizer\": {\n const { GestureRecognizer } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, GestureRecognizer);\n break;\n }\n case \"vision-hand-landmarker\": {\n const { HandLandmarker } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, HandLandmarker);\n break;\n }\n case \"vision-pose-landmarker\": {\n const { PoseLandmarker } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, PoseLandmarker);\n break;\n }\n default:\n throw new PermanentJobError(\n `Invalid pipeline: ${model?.provider_config.pipeline}. Supported pipelines: text-embedder, text-classifier, text-language-detector, vision-image-classifier, vision-image-embedder, vision-image-segmenter, vision-object-detector, vision-face-detector, vision-face-landmarker, vision-gesture-recognizer, vision-hand-landmarker, vision-pose-landmarker`\n );\n }\n onProgress(0.9, \"Pipeline loaded\");\n task.close();\n const task_engine = model?.provider_config.task_engine;\n wasm_reference_counts.set(task_engine, wasm_reference_counts.get(task_engine)! - 1);\n\n return {\n model: input.model,\n };\n};\n",
10
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksTextSDK, loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\n\nexport interface TFMPWasmFileset {\n readonly wasmLoaderPath: string;\n readonly wasmBinaryPath: string;\n readonly assetLoaderPath?: string;\n readonly assetBinaryPath?: string;\n}\n\nexport const wasm_tasks = new Map<string, TFMPWasmFileset>();\nexport const wasm_reference_counts = new Map<string, number>();\n\ntype TaskConstructor = {\n createFromOptions(wasmFileset: TFMPWasmFileset, options: Record<string, unknown>): Promise<any>;\n};\n\nexport type TaskInstance = {\n close(): void;\n [key: string]: any;\n};\n\nexport interface CachedModelTask {\n readonly task: TaskInstance;\n readonly options: Record<string, unknown>;\n readonly task_engine: string;\n}\n\nexport const modelTaskCache = new Map<string, CachedModelTask[]>();\n\nconst optionsMatch = (opts1: Record<string, unknown>, opts2: Record<string, unknown>): boolean => {\n const keys1 = Object.keys(opts1).sort();\n const keys2 = Object.keys(opts2).sort();\n\n if (keys1.length !== keys2.length) return false;\n\n return keys1.every((key) => {\n const val1 = opts1[key];\n const val2 = opts2[key];\n\n if (Array.isArray(val1) && Array.isArray(val2)) {\n return JSON.stringify(val1) === JSON.stringify(val2);\n }\n\n return val1 === val2;\n });\n};\n\nconst getWasmTask = async (\n model: TFMPModelConfig,\n onProgress: (progress: number, message?: string, details?: any) => void,\n signal: AbortSignal\n): Promise<TFMPWasmFileset> => {\n const task_engine = model.provider_config.task_engine;\n\n if (wasm_tasks.has(task_engine)) {\n return wasm_tasks.get(task_engine)!;\n }\n\n if (signal.aborted) {\n throw new PermanentJobError(\"Aborted job\");\n }\n\n onProgress(0.1, \"Loading WASM task\");\n\n let wasmFileset: TFMPWasmFileset;\n\n switch (task_engine) {\n case \"vision\": {\n const { FilesetResolver } = await loadTfmpTasksVisionSDK();\n wasmFileset = await FilesetResolver.forVisionTasks(\n \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm\"\n );\n break;\n }\n case \"text\": {\n const { FilesetResolver } = await loadTfmpTasksTextSDK();\n wasmFileset = await FilesetResolver.forTextTasks(\n \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm\"\n );\n break;\n }\n case \"audio\": {\n const { FilesetResolver } = await loadTfmpTasksTextSDK();\n wasmFileset = await FilesetResolver.forAudioTasks(\n \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-audio@latest/wasm\"\n );\n break;\n }\n case \"genai\": {\n const { FilesetResolver } = await loadTfmpTasksTextSDK();\n wasmFileset = await FilesetResolver.forGenAiTasks(\n \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm\"\n );\n break;\n }\n default:\n throw new PermanentJobError(\"Invalid task engine\");\n }\n\n wasm_tasks.set(task_engine, wasmFileset);\n return wasmFileset;\n};\n\nexport const getModelTask = async (\n model: TFMPModelConfig,\n options: Record<string, unknown>,\n onProgress: (progress: number, message?: string, details?: any) => void,\n signal: AbortSignal,\n TaskType: TaskConstructor\n): Promise<any> => {\n const model_path = model.provider_config.model_path;\n const task_engine = model.provider_config.task_engine;\n\n const cachedTasks = modelTaskCache.get(model_path);\n if (cachedTasks) {\n const matchedTask = cachedTasks.find((cached) => optionsMatch(cached.options, options));\n if (matchedTask) {\n return matchedTask.task;\n }\n }\n\n const wasmFileset = await getWasmTask(model, onProgress, signal);\n\n onProgress(0.2, \"Creating model task\");\n\n const task = await (TaskType as any).createFromOptions(wasmFileset, {\n baseOptions: {\n modelAssetPath: model_path,\n },\n ...options,\n });\n\n const cachedTask: CachedModelTask = { task, options, task_engine };\n if (!modelTaskCache.has(model_path)) {\n modelTaskCache.set(model_path, []);\n }\n modelTaskCache.get(model_path)!.push(cachedTask);\n\n wasm_reference_counts.set(task_engine, (wasm_reference_counts.get(task_engine) || 0) + 1);\n\n return task;\n};\n",
11
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, FaceDetectorTaskInput, FaceDetectorTaskOutput } from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_FaceDetector: AiProviderRunFn<\n FaceDetectorTaskInput,\n FaceDetectorTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { FaceDetector } = await loadTfmpTasksVisionSDK();\n const faceDetector = await getModelTask(\n model!,\n {\n minDetectionConfidence: (input as any).minDetectionConfidence,\n minSuppressionThreshold: (input as any).minSuppressionThreshold,\n },\n onProgress,\n signal,\n FaceDetector\n );\n const result = faceDetector.detect(input.image as any);\n\n if (!result.detections) {\n throw new PermanentJobError(\"Failed to detect faces: Empty result\");\n }\n\n const faces = result.detections.map((detection: any) => ({\n box: {\n x: detection.boundingBox?.originX || 0,\n y: detection.boundingBox?.originY || 0,\n width: detection.boundingBox?.width || 0,\n height: detection.boundingBox?.height || 0,\n },\n keypoints:\n detection.keypoints?.map((kp: any) => ({\n x: kp.x,\n y: kp.y,\n label: kp.label,\n })) || [],\n score: detection.categories?.[0]?.score || 0,\n }));\n\n return {\n faces,\n };\n};\n",
12
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n FaceLandmarkerTaskInput,\n FaceLandmarkerTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_FaceLandmarker: AiProviderRunFn<\n FaceLandmarkerTaskInput,\n FaceLandmarkerTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { FaceLandmarker } = await loadTfmpTasksVisionSDK();\n const faceLandmarker = await getModelTask(\n model!,\n {\n numFaces: (input as any).numFaces,\n minFaceDetectionConfidence: (input as any).minFaceDetectionConfidence,\n minFacePresenceConfidence: (input as any).minFacePresenceConfidence,\n minTrackingConfidence: (input as any).minTrackingConfidence,\n outputFaceBlendshapes: (input as any).outputFaceBlendshapes,\n outputFacialTransformationMatrixes: (input as any).outputFacialTransformationMatrixes,\n },\n onProgress,\n signal,\n FaceLandmarker\n );\n const result = faceLandmarker.detect(input.image as any);\n\n if (!result.faceLandmarks) {\n throw new PermanentJobError(\"Failed to detect face landmarks: Empty result\");\n }\n\n const faces = result.faceLandmarks.map((landmarks: any, index: number) => {\n const face: any = {\n landmarks: landmarks.map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n };\n\n if (result.faceBlendshapes && result.faceBlendshapes[index]) {\n face.blendshapes = result.faceBlendshapes[index].categories.map((b: any) => ({\n label: b.categoryName,\n score: b.score,\n }));\n }\n\n if (result.facialTransformationMatrixes && result.facialTransformationMatrixes[index]) {\n face.transformationMatrix = Array.from(result.facialTransformationMatrixes[index].data);\n }\n\n return face;\n });\n\n return {\n faces,\n };\n};\n",
13
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n GestureRecognizerTaskInput,\n GestureRecognizerTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_GestureRecognizer: AiProviderRunFn<\n GestureRecognizerTaskInput,\n GestureRecognizerTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { GestureRecognizer } = await loadTfmpTasksVisionSDK();\n const gestureRecognizer = await getModelTask(\n model!,\n {\n numHands: (input as any).numHands,\n minHandDetectionConfidence: (input as any).minHandDetectionConfidence,\n minHandPresenceConfidence: (input as any).minHandPresenceConfidence,\n minTrackingConfidence: (input as any).minTrackingConfidence,\n },\n onProgress,\n signal,\n GestureRecognizer\n );\n const result = gestureRecognizer.recognize(input.image as any);\n\n if (!result.gestures || !result.landmarks) {\n throw new PermanentJobError(\"Failed to recognize gestures: Empty result\");\n }\n\n const hands = result.gestures.map((gestures: any, index: number) => ({\n gestures: gestures.map((g: any) => ({\n label: g.categoryName,\n score: g.score,\n })),\n handedness: result.handedness[index].map((h: any) => ({\n label: h.categoryName,\n score: h.score,\n })),\n landmarks: result.landmarks[index].map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n worldLandmarks: result.worldLandmarks[index].map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n }));\n\n return {\n hands,\n };\n};\n",
14
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n HandLandmarkerTaskInput,\n HandLandmarkerTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_HandLandmarker: AiProviderRunFn<\n HandLandmarkerTaskInput,\n HandLandmarkerTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { HandLandmarker } = await loadTfmpTasksVisionSDK();\n const handLandmarker = await getModelTask(\n model!,\n {\n numHands: (input as any).numHands,\n minHandDetectionConfidence: (input as any).minHandDetectionConfidence,\n minHandPresenceConfidence: (input as any).minHandPresenceConfidence,\n minTrackingConfidence: (input as any).minTrackingConfidence,\n },\n onProgress,\n signal,\n HandLandmarker\n );\n const result = handLandmarker.detect(input.image as any);\n\n if (!result.landmarks) {\n throw new PermanentJobError(\"Failed to detect hand landmarks: Empty result\");\n }\n\n const hands = result.landmarks.map((landmarks: any, index: number) => ({\n handedness: result.handedness[index].map((h: any) => ({\n label: h.categoryName,\n score: h.score,\n })),\n landmarks: landmarks.map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n worldLandmarks: result.worldLandmarks[index].map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n }));\n\n return {\n hands,\n };\n};\n",
15
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageClassificationTaskInput,\n ImageClassificationTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_ImageClassification: AiProviderRunFn<\n ImageClassificationTaskInput,\n ImageClassificationTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { ImageClassifier } = await loadTfmpTasksVisionSDK();\n const imageClassifier = await getModelTask(\n model!,\n {\n maxResults: (input as any).maxCategories,\n },\n onProgress,\n signal,\n ImageClassifier\n );\n const result = imageClassifier.classify(input.image as any);\n\n if (!result.classifications?.[0]?.categories) {\n throw new PermanentJobError(\"Failed to classify image: Empty result\");\n }\n\n const categories = result.classifications[0].categories.map((category: any) => ({\n label: category.categoryName,\n score: category.score,\n }));\n\n return {\n categories,\n };\n};\n",
9
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksTextSDK, loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask, wasm_reference_counts } from \"./TFMP_Runtime\";\nimport type { TaskInstance } from \"./TFMP_Runtime\";\n\nexport const TFMP_Download: AiProviderRunFn<\n DownloadModelTaskRunInput,\n DownloadModelTaskRunOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n let task: TaskInstance;\n switch (model?.provider_config.pipeline) {\n case \"text-embedder\": {\n const { TextEmbedder } = await loadTfmpTasksTextSDK();\n task = await getModelTask(model, {}, onProgress, signal, TextEmbedder);\n break;\n }\n case \"text-classifier\": {\n const { TextClassifier } = await loadTfmpTasksTextSDK();\n task = await getModelTask(model, {}, onProgress, signal, TextClassifier);\n break;\n }\n case \"text-language-detector\": {\n const { LanguageDetector } = await loadTfmpTasksTextSDK();\n task = await getModelTask(model, {}, onProgress, signal, LanguageDetector);\n break;\n }\n case \"vision-image-classifier\": {\n const { ImageClassifier } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, ImageClassifier);\n break;\n }\n case \"vision-image-embedder\": {\n const { ImageEmbedder } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, ImageEmbedder);\n break;\n }\n case \"vision-image-segmenter\": {\n const { ImageSegmenter } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, ImageSegmenter);\n break;\n }\n case \"vision-object-detector\": {\n const { ObjectDetector } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, ObjectDetector);\n break;\n }\n case \"vision-face-detector\": {\n const { FaceDetector } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, FaceDetector);\n break;\n }\n case \"vision-face-landmarker\": {\n const { FaceLandmarker } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, FaceLandmarker);\n break;\n }\n case \"vision-gesture-recognizer\": {\n const { GestureRecognizer } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, GestureRecognizer);\n break;\n }\n case \"vision-hand-landmarker\": {\n const { HandLandmarker } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, HandLandmarker);\n break;\n }\n case \"vision-pose-landmarker\": {\n const { PoseLandmarker } = await loadTfmpTasksVisionSDK();\n task = await getModelTask(model, {}, onProgress, signal, PoseLandmarker);\n break;\n }\n default:\n throw new PermanentJobError(\n `Invalid pipeline: ${model?.provider_config.pipeline}. Supported pipelines: text-embedder, text-classifier, text-language-detector, vision-image-classifier, vision-image-embedder, vision-image-segmenter, vision-object-detector, vision-face-detector, vision-face-landmarker, vision-gesture-recognizer, vision-hand-landmarker, vision-pose-landmarker`\n );\n }\n onProgress(0.9, \"Pipeline loaded\");\n task.close();\n const task_engine = model?.provider_config.task_engine;\n wasm_reference_counts.set(task_engine, wasm_reference_counts.get(task_engine)! - 1);\n\n return {\n model: input.model,\n };\n};\n",
10
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksTextSDK, loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\n\nexport interface TFMPWasmFileset {\n readonly wasmLoaderPath: string;\n readonly wasmBinaryPath: string;\n readonly assetLoaderPath?: string;\n readonly assetBinaryPath?: string;\n}\n\nexport const wasm_tasks = new Map<string, TFMPWasmFileset>();\nexport const wasm_reference_counts = new Map<string, number>();\n\ntype TaskConstructor = {\n createFromOptions(\n wasmFileset: TFMPWasmFileset,\n options: Record<string, unknown>\n ): Promise<TaskInstance>;\n};\n\nexport type TaskInstance = {\n close(): void;\n [key: string]: any;\n};\n\nexport interface CachedModelTask {\n readonly task: TaskInstance;\n readonly options: Record<string, unknown>;\n readonly task_engine: string;\n}\n\nexport const modelTaskCache = new Map<string, CachedModelTask[]>();\n\nconst optionsMatch = (opts1: Record<string, unknown>, opts2: Record<string, unknown>): boolean => {\n const keys1 = Object.keys(opts1).sort();\n const keys2 = Object.keys(opts2).sort();\n\n if (keys1.length !== keys2.length) return false;\n\n return keys1.every((key) => {\n const val1 = opts1[key];\n const val2 = opts2[key];\n\n if (Array.isArray(val1) && Array.isArray(val2)) {\n return JSON.stringify(val1) === JSON.stringify(val2);\n }\n\n return val1 === val2;\n });\n};\n\nconst getWasmTask = async (\n model: TFMPModelConfig,\n onProgress: (progress: number, message?: string, details?: any) => void,\n signal: AbortSignal\n): Promise<TFMPWasmFileset> => {\n const task_engine = model.provider_config.task_engine;\n\n if (wasm_tasks.has(task_engine)) {\n return wasm_tasks.get(task_engine)!;\n }\n\n if (signal.aborted) {\n throw new PermanentJobError(\"Aborted job\");\n }\n\n onProgress(0.1, \"Loading WASM task\");\n\n let wasmFileset: TFMPWasmFileset;\n\n switch (task_engine) {\n case \"vision\": {\n const { FilesetResolver } = await loadTfmpTasksVisionSDK();\n wasmFileset = await FilesetResolver.forVisionTasks(\n \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm\"\n );\n break;\n }\n case \"text\": {\n const { FilesetResolver } = await loadTfmpTasksTextSDK();\n wasmFileset = await FilesetResolver.forTextTasks(\n \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm\"\n );\n break;\n }\n case \"audio\": {\n const { FilesetResolver } = await loadTfmpTasksTextSDK();\n wasmFileset = await FilesetResolver.forAudioTasks(\n \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-audio@latest/wasm\"\n );\n break;\n }\n case \"genai\": {\n const { FilesetResolver } = await loadTfmpTasksTextSDK();\n wasmFileset = await FilesetResolver.forGenAiTasks(\n \"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm\"\n );\n break;\n }\n default:\n throw new PermanentJobError(\"Invalid task engine\");\n }\n\n wasm_tasks.set(task_engine, wasmFileset);\n return wasmFileset;\n};\n\nexport const getModelTask = async (\n model: TFMPModelConfig,\n options: Record<string, unknown>,\n onProgress: (progress: number, message?: string, details?: any) => void,\n signal: AbortSignal,\n TaskType: TaskConstructor\n): Promise<any> => {\n const model_path = model.provider_config.model_path;\n const task_engine = model.provider_config.task_engine;\n\n const cachedTasks = modelTaskCache.get(model_path);\n if (cachedTasks) {\n const matchedTask = cachedTasks.find((cached) => optionsMatch(cached.options, options));\n if (matchedTask) {\n return matchedTask.task;\n }\n }\n\n const wasmFileset = await getWasmTask(model, onProgress, signal);\n\n onProgress(0.2, \"Creating model task\");\n\n const task = await TaskType.createFromOptions(wasmFileset, {\n baseOptions: {\n modelAssetPath: model_path,\n },\n ...options,\n });\n\n const cachedTask: CachedModelTask = { task, options, task_engine };\n if (!modelTaskCache.has(model_path)) {\n modelTaskCache.set(model_path, []);\n }\n modelTaskCache.get(model_path)!.push(cachedTask);\n\n wasm_reference_counts.set(task_engine, (wasm_reference_counts.get(task_engine) || 0) + 1);\n\n return task;\n};\n",
11
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, FaceDetectorTaskInput, FaceDetectorTaskOutput } from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_FaceDetector: AiProviderRunFn<\n FaceDetectorTaskInput,\n FaceDetectorTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { FaceDetector } = await loadTfmpTasksVisionSDK();\n const faceDetector = await getModelTask(\n model!,\n {\n minDetectionConfidence: input.minDetectionConfidence,\n minSuppressionThreshold: input.minSuppressionThreshold,\n },\n onProgress,\n signal,\n FaceDetector\n );\n const result = faceDetector.detect(input.image as any);\n\n if (!result.detections) {\n throw new PermanentJobError(\"Failed to detect faces: Empty result\");\n }\n\n const faces = result.detections.map((detection: any) => ({\n box: {\n x: detection.boundingBox?.originX || 0,\n y: detection.boundingBox?.originY || 0,\n width: detection.boundingBox?.width || 0,\n height: detection.boundingBox?.height || 0,\n },\n keypoints:\n detection.keypoints?.map((kp: any) => ({\n x: kp.x,\n y: kp.y,\n label: kp.label,\n })) || [],\n score: detection.categories?.[0]?.score || 0,\n }));\n\n return {\n faces,\n };\n};\n",
12
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n FaceLandmarkerTaskInput,\n FaceLandmarkerTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_FaceLandmarker: AiProviderRunFn<\n FaceLandmarkerTaskInput,\n FaceLandmarkerTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { FaceLandmarker } = await loadTfmpTasksVisionSDK();\n const faceLandmarker = await getModelTask(\n model!,\n {\n numFaces: input.numFaces,\n minFaceDetectionConfidence: input.minFaceDetectionConfidence,\n minFacePresenceConfidence: input.minFacePresenceConfidence,\n minTrackingConfidence: input.minTrackingConfidence,\n outputFaceBlendshapes: input.outputFaceBlendshapes,\n outputFacialTransformationMatrixes: input.outputFacialTransformationMatrixes,\n },\n onProgress,\n signal,\n FaceLandmarker\n );\n const result = faceLandmarker.detect(input.image as any);\n\n if (!result.faceLandmarks) {\n throw new PermanentJobError(\"Failed to detect face landmarks: Empty result\");\n }\n\n const faces = result.faceLandmarks.map((landmarks: any, index: number) => {\n const face: any = {\n landmarks: landmarks.map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n };\n\n if (result.faceBlendshapes && result.faceBlendshapes[index]) {\n face.blendshapes = result.faceBlendshapes[index].categories.map((b: any) => ({\n label: b.categoryName,\n score: b.score,\n }));\n }\n\n if (result.facialTransformationMatrixes && result.facialTransformationMatrixes[index]) {\n face.transformationMatrix = Array.from(result.facialTransformationMatrixes[index].data);\n }\n\n return face;\n });\n\n return {\n faces,\n };\n};\n",
13
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n GestureRecognizerTaskInput,\n GestureRecognizerTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_GestureRecognizer: AiProviderRunFn<\n GestureRecognizerTaskInput,\n GestureRecognizerTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { GestureRecognizer } = await loadTfmpTasksVisionSDK();\n const gestureRecognizer = await getModelTask(\n model!,\n {\n numHands: input.numHands,\n minHandDetectionConfidence: input.minHandDetectionConfidence,\n minHandPresenceConfidence: input.minHandPresenceConfidence,\n minTrackingConfidence: input.minTrackingConfidence,\n },\n onProgress,\n signal,\n GestureRecognizer\n );\n const result = gestureRecognizer.recognize(input.image);\n\n if (!result.gestures || !result.landmarks) {\n throw new PermanentJobError(\"Failed to recognize gestures: Empty result\");\n }\n\n const hands = result.gestures.map((gestures: any, index: number) => ({\n gestures: gestures.map((g: any) => ({\n label: g.categoryName,\n score: g.score,\n })),\n handedness: result.handedness[index].map((h: any) => ({\n label: h.categoryName,\n score: h.score,\n })),\n landmarks: result.landmarks[index].map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n worldLandmarks: result.worldLandmarks[index].map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n }));\n\n return {\n hands,\n };\n};\n",
14
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n HandLandmarkerTaskInput,\n HandLandmarkerTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_HandLandmarker: AiProviderRunFn<\n HandLandmarkerTaskInput,\n HandLandmarkerTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { HandLandmarker } = await loadTfmpTasksVisionSDK();\n const handLandmarker = await getModelTask(\n model!,\n {\n numHands: input.numHands,\n minHandDetectionConfidence: input.minHandDetectionConfidence,\n minHandPresenceConfidence: input.minHandPresenceConfidence,\n minTrackingConfidence: input.minTrackingConfidence,\n },\n onProgress,\n signal,\n HandLandmarker\n );\n const result = handLandmarker.detect(input.image);\n\n if (!result.landmarks) {\n throw new PermanentJobError(\"Failed to detect hand landmarks: Empty result\");\n }\n\n const hands = result.landmarks.map((landmarks: any, index: number) => ({\n handedness: result.handedness[index].map((h: any) => ({\n label: h.categoryName,\n score: h.score,\n })),\n landmarks: landmarks.map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n worldLandmarks: result.worldLandmarks[index].map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n })),\n }));\n\n return {\n hands,\n };\n};\n",
15
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageClassificationTaskInput,\n ImageClassificationTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_ImageClassification: AiProviderRunFn<\n ImageClassificationTaskInput,\n ImageClassificationTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { ImageClassifier } = await loadTfmpTasksVisionSDK();\n const imageClassifier = await getModelTask(\n model!,\n {\n maxResults: input.maxCategories,\n },\n onProgress,\n signal,\n ImageClassifier\n );\n const result = imageClassifier.classify(input.image);\n\n if (!result.classifications?.[0]?.categories) {\n throw new PermanentJobError(\"Failed to classify image: Empty result\");\n }\n\n const categories = result.classifications[0].categories.map(\n (category: { categoryName: string; score: number }) => ({\n label: category.categoryName,\n score: category.score,\n })\n );\n\n return {\n categories,\n };\n};\n",
16
16
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageEmbeddingTaskInput,\n ImageEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_ImageEmbedding: AiProviderRunFn<\n ImageEmbeddingTaskInput,\n ImageEmbeddingTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { ImageEmbedder } = await loadTfmpTasksVisionSDK();\n const imageEmbedder = await getModelTask(model!, {}, onProgress, signal, ImageEmbedder);\n\n if (Array.isArray(input.image)) {\n const vectors: Float32Array[] = [];\n for (const image of input.image) {\n const result = imageEmbedder.embed(image as any);\n if (!result.embeddings?.[0]?.floatEmbedding) {\n throw new PermanentJobError(\"Failed to generate embedding: Empty result\");\n }\n vectors.push(Float32Array.from(result.embeddings[0].floatEmbedding));\n }\n return { vector: vectors } as ImageEmbeddingTaskOutput;\n }\n\n const result = imageEmbedder.embed(input.image as any);\n\n if (!result.embeddings?.[0]?.floatEmbedding) {\n throw new PermanentJobError(\"Failed to generate embedding: Empty result\");\n }\n\n const embedding = Float32Array.from(result.embeddings[0].floatEmbedding);\n\n return {\n vector: embedding,\n } as ImageEmbeddingTaskOutput;\n};\n",
17
17
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageSegmentationTaskInput,\n ImageSegmentationTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_ImageSegmentation: AiProviderRunFn<\n ImageSegmentationTaskInput,\n ImageSegmentationTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { ImageSegmenter } = await loadTfmpTasksVisionSDK();\n const imageSegmenter = await getModelTask(model!, {}, onProgress, signal, ImageSegmenter);\n const result = imageSegmenter.segment(input.image as any);\n\n if (!result.categoryMask) {\n throw new PermanentJobError(\"Failed to segment image: Empty result\");\n }\n\n const masks = [\n {\n label: \"segment\",\n score: 1.0,\n mask: {\n data: result.categoryMask.canvas,\n width: result.categoryMask.width,\n height: result.categoryMask.height,\n },\n },\n ];\n\n return {\n masks,\n };\n};\n",
18
18
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, ModelInfoTaskInput, ModelInfoTaskOutput } from \"@workglow/ai\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { modelTaskCache } from \"./TFMP_Runtime\";\n\nexport const TFMP_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n TFMPModelConfig\n> = async (input, model) => {\n const model_path = model!.provider_config.model_path;\n const is_loaded = modelTaskCache.has(model_path);\n\n return {\n model: input.model,\n is_local: true,\n is_remote: false,\n supports_browser: true,\n supports_node: false,\n is_cached: is_loaded,\n is_loaded,\n file_sizes: null,\n };\n};\n",
19
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ObjectDetectionTaskInput,\n ObjectDetectionTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_ObjectDetection: AiProviderRunFn<\n ObjectDetectionTaskInput,\n ObjectDetectionTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { ObjectDetector } = await loadTfmpTasksVisionSDK();\n const objectDetector = await getModelTask(\n model!,\n {\n scoreThreshold: (input as any).threshold,\n },\n onProgress,\n signal,\n ObjectDetector\n );\n const result = objectDetector.detect(input.image as any);\n\n if (!result.detections) {\n throw new PermanentJobError(\"Failed to detect objects: Empty result\");\n }\n\n const detections = result.detections.map((detection: any) => ({\n label: detection.categories?.[0]?.categoryName || \"unknown\",\n score: detection.categories?.[0]?.score || 0,\n box: {\n x: detection.boundingBox?.originX || 0,\n y: detection.boundingBox?.originY || 0,\n width: detection.boundingBox?.width || 0,\n height: detection.boundingBox?.height || 0,\n },\n }));\n\n return {\n detections,\n };\n};\n",
20
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n PoseLandmarkerTaskInput,\n PoseLandmarkerTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_PoseLandmarker: AiProviderRunFn<\n PoseLandmarkerTaskInput,\n PoseLandmarkerTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { PoseLandmarker } = await loadTfmpTasksVisionSDK();\n const poseLandmarker = await getModelTask(\n model!,\n {\n numPoses: (input as any).numPoses,\n minPoseDetectionConfidence: (input as any).minPoseDetectionConfidence,\n minPosePresenceConfidence: (input as any).minPosePresenceConfidence,\n minTrackingConfidence: (input as any).minTrackingConfidence,\n outputSegmentationMasks: (input as any).outputSegmentationMasks,\n },\n onProgress,\n signal,\n PoseLandmarker\n );\n const result = poseLandmarker.detect(input.image as any);\n\n if (!result.landmarks) {\n throw new PermanentJobError(\"Failed to detect pose landmarks: Empty result\");\n }\n\n const poses = result.landmarks.map((landmarks: any, index: number) => {\n const pose: any = {\n landmarks: landmarks.map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n visibility: l.visibility,\n presence: l.presence,\n })),\n worldLandmarks: result.worldLandmarks[index].map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n visibility: l.visibility,\n presence: l.presence,\n })),\n };\n\n if (result.segmentationMasks && result.segmentationMasks[index]) {\n const mask = result.segmentationMasks[index];\n pose.segmentationMask = {\n data: mask.canvas || mask,\n width: mask.width,\n height: mask.height,\n };\n }\n\n return pose;\n });\n\n return {\n poses,\n };\n};\n",
19
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ObjectDetectionTaskInput,\n ObjectDetectionTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_ObjectDetection: AiProviderRunFn<\n ObjectDetectionTaskInput,\n ObjectDetectionTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { ObjectDetector } = await loadTfmpTasksVisionSDK();\n const objectDetector = await getModelTask(\n model!,\n {\n scoreThreshold: input.threshold,\n },\n onProgress,\n signal,\n ObjectDetector\n );\n const result = objectDetector.detect(input.image);\n\n if (!result.detections) {\n throw new PermanentJobError(\"Failed to detect objects: Empty result\");\n }\n\n const detections = result.detections.map((detection: any) => ({\n label: detection.categories?.[0]?.categoryName || \"unknown\",\n score: detection.categories?.[0]?.score || 0,\n box: {\n x: detection.boundingBox?.originX || 0,\n y: detection.boundingBox?.originY || 0,\n width: detection.boundingBox?.width || 0,\n height: detection.boundingBox?.height || 0,\n },\n }));\n\n return {\n detections,\n };\n};\n",
20
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n PoseLandmarkerTaskInput,\n PoseLandmarkerTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_PoseLandmarker: AiProviderRunFn<\n PoseLandmarkerTaskInput,\n PoseLandmarkerTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { PoseLandmarker } = await loadTfmpTasksVisionSDK();\n const poseLandmarker = await getModelTask(\n model!,\n {\n numPoses: input.numPoses,\n minPoseDetectionConfidence: input.minPoseDetectionConfidence,\n minPosePresenceConfidence: input.minPosePresenceConfidence,\n minTrackingConfidence: input.minTrackingConfidence,\n outputSegmentationMasks: input.outputSegmentationMasks,\n },\n onProgress,\n signal,\n PoseLandmarker\n );\n const result = poseLandmarker.detect(input.image);\n\n if (!result.landmarks) {\n throw new PermanentJobError(\"Failed to detect pose landmarks: Empty result\");\n }\n\n const poses = result.landmarks.map((landmarks: any, index: number) => {\n const pose: any = {\n landmarks: landmarks.map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n visibility: l.visibility,\n presence: l.presence,\n })),\n worldLandmarks: result.worldLandmarks[index].map((l: any) => ({\n x: l.x,\n y: l.y,\n z: l.z,\n visibility: l.visibility,\n presence: l.presence,\n })),\n };\n\n if (result.segmentationMasks && result.segmentationMasks[index]) {\n const mask = result.segmentationMasks[index];\n pose.segmentationMask = {\n data: mask.canvas || mask,\n width: mask.width,\n height: mask.height,\n };\n }\n\n return pose;\n });\n\n return {\n poses,\n };\n};\n",
21
21
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextClassificationTaskInput,\n TextClassificationTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksTextSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_TextClassification: AiProviderRunFn<\n TextClassificationTaskInput,\n TextClassificationTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { TextClassifier } = await loadTfmpTasksTextSDK();\n const TextClassification = await getModelTask(\n model!,\n {\n maxCategories: input.maxCategories,\n },\n onProgress,\n signal,\n TextClassifier\n );\n const result = TextClassification.classify(input.text);\n\n if (!result.classifications?.[0]?.categories) {\n throw new PermanentJobError(\"Failed to classify text: Empty result\");\n }\n\n const categories = result.classifications[0].categories.map((category: any) => ({\n label: category.categoryName,\n score: category.score,\n }));\n\n return {\n categories,\n };\n};\n",
22
22
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksTextSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const { TextEmbedder } = await loadTfmpTasksTextSDK();\n const textEmbedder = await getModelTask(model!, {}, onProgress, signal, TextEmbedder);\n\n if (Array.isArray(input.text)) {\n const embeddings = input.text.map((text) => {\n const result = textEmbedder.embed(text);\n\n if (!result.embeddings?.[0]?.floatEmbedding) {\n throw new PermanentJobError(\"Failed to generate embedding: Empty result\");\n }\n\n return Float32Array.from(result.embeddings[0].floatEmbedding);\n });\n\n return {\n vector: embeddings,\n };\n }\n\n const result = textEmbedder.embed(input.text);\n\n if (!result.embeddings?.[0]?.floatEmbedding) {\n throw new PermanentJobError(\"Failed to generate embedding: Empty result\");\n }\n\n const embedding = Float32Array.from(result.embeddings[0].floatEmbedding);\n\n return {\n vector: embedding,\n };\n};\n",
23
23
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextLanguageDetectionTaskInput,\n TextLanguageDetectionTaskOutput,\n} from \"@workglow/ai\";\nimport { PermanentJobError } from \"@workglow/job-queue\";\nimport { loadTfmpTasksTextSDK } from \"./TFMP_Client\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { getModelTask } from \"./TFMP_Runtime\";\n\nexport const TFMP_TextLanguageDetection: AiProviderRunFn<\n TextLanguageDetectionTaskInput,\n TextLanguageDetectionTaskOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, signal) => {\n const maxLanguages = input.maxLanguages === 0 ? -1 : input.maxLanguages;\n\n const { LanguageDetector } = await loadTfmpTasksTextSDK();\n const textLanguageDetector = await getModelTask(\n model!,\n {\n maxLanguages,\n },\n onProgress,\n signal,\n LanguageDetector\n );\n const result = textLanguageDetector.detect(input.text);\n\n if (!result.languages?.[0]?.languageCode) {\n throw new PermanentJobError(\"Failed to detect language: Empty result\");\n }\n\n const languages = result.languages.map((language: any) => ({\n language: language.languageCode,\n score: language.probability,\n }));\n\n return {\n languages,\n };\n};\n",
24
24
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n UnloadModelTaskRunInput,\n UnloadModelTaskRunOutput,\n} from \"@workglow/ai\";\nimport { TFMPModelConfig } from \"./TFMP_ModelSchema\";\nimport { modelTaskCache, wasm_reference_counts, wasm_tasks } from \"./TFMP_Runtime\";\n\nexport const TFMP_Unload: AiProviderRunFn<\n UnloadModelTaskRunInput,\n UnloadModelTaskRunOutput,\n TFMPModelConfig\n> = async (input, model, onProgress, _signal) => {\n const model_path = model!.provider_config.model_path;\n onProgress(10, \"Unloading model\");\n if (modelTaskCache.has(model_path)) {\n const cachedTasks = modelTaskCache.get(model_path)!;\n\n for (const cachedTask of cachedTasks) {\n const task = cachedTask.task;\n if (\"close\" in task && typeof task.close === \"function\") task.close();\n\n const task_engine = cachedTask.task_engine;\n const currentCount = wasm_reference_counts.get(task_engine) || 0;\n const newCount = currentCount - 1;\n\n if (newCount <= 0) {\n wasm_tasks.delete(task_engine);\n wasm_reference_counts.delete(task_engine);\n } else {\n wasm_reference_counts.set(task_engine, newCount);\n }\n }\n\n modelTaskCache.delete(model_path);\n }\n\n return {\n model: input.model,\n };\n};\n",
25
25
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TFMP_ModelSearch } from \"./TFMP_ModelSearch\";\n\nimport { TFMP_Download } from \"./TFMP_Download\";\nimport { TFMP_FaceDetector } from \"./TFMP_FaceDetector\";\nimport { TFMP_FaceLandmarker } from \"./TFMP_FaceLandmarker\";\nimport { TFMP_GestureRecognizer } from \"./TFMP_GestureRecognizer\";\nimport { TFMP_HandLandmarker } from \"./TFMP_HandLandmarker\";\nimport { TFMP_ImageClassification } from \"./TFMP_ImageClassification\";\nimport { TFMP_ImageEmbedding } from \"./TFMP_ImageEmbedding\";\nimport { TFMP_ImageSegmentation } from \"./TFMP_ImageSegmentation\";\nimport { TFMP_ModelInfo } from \"./TFMP_ModelInfo\";\nimport { TFMP_ObjectDetection } from \"./TFMP_ObjectDetection\";\nimport { TFMP_PoseLandmarker } from \"./TFMP_PoseLandmarker\";\nimport { TFMP_TextClassification } from \"./TFMP_TextClassification\";\nimport { TFMP_TextEmbedding } from \"./TFMP_TextEmbedding\";\nimport { TFMP_TextLanguageDetection } from \"./TFMP_TextLanguageDetection\";\nimport { TFMP_Unload } from \"./TFMP_Unload\";\n\nexport { loadTfmpTasksTextSDK, loadTfmpTasksVisionSDK } from \"./TFMP_Client\";\n\nexport const TFMP_TASKS = {\n DownloadModelTask: TFMP_Download,\n UnloadModelTask: TFMP_Unload,\n ModelInfoTask: TFMP_ModelInfo,\n TextEmbeddingTask: TFMP_TextEmbedding,\n TextLanguageDetectionTask: TFMP_TextLanguageDetection,\n TextClassificationTask: TFMP_TextClassification,\n ImageSegmentationTask: TFMP_ImageSegmentation,\n ImageEmbeddingTask: TFMP_ImageEmbedding,\n ImageClassificationTask: TFMP_ImageClassification,\n ObjectDetectionTask: TFMP_ObjectDetection,\n GestureRecognizerTask: TFMP_GestureRecognizer,\n HandLandmarkerTask: TFMP_HandLandmarker,\n FaceDetectorTask: TFMP_FaceDetector,\n FaceLandmarkerTask: TFMP_FaceLandmarker,\n PoseLandmarkerTask: TFMP_PoseLandmarker,\n ModelSearchTask: TFMP_ModelSearch,\n} as const;\n",
26
- "/**\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, TFMP_DEFAULT_TASK_TYPES } from \"./common/TFMP_Constants\";\nimport type { TFMPModelConfig } from \"./common/TFMP_ModelSchema\";\n\n/** Main-thread registration (inline or worker-backed). WASM-only — uses direct execution. */\nexport class TensorFlowMediaPipeQueuedProvider extends AiProvider<TFMPModelConfig> {\n readonly name = TENSORFLOW_MEDIAPIPE;\n readonly displayName = \"TensorFlow MediaPipe\";\n readonly isLocal = true;\n readonly supportsBrowser = true;\n\n readonly taskTypes: readonly string[] = TFMP_DEFAULT_TASK_TYPES;\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",
26
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider } from \"@workglow/ai\";\nimport type { AiProviderReactiveRunFn, AiProviderRunFn } from \"@workglow/ai\";\nimport { TENSORFLOW_MEDIAPIPE, TFMP_DEFAULT_TASK_TYPES } from \"./common/TFMP_Constants\";\nimport type { TFMPModelConfig } from \"./common/TFMP_ModelSchema\";\n\n/** Main-thread registration (inline or worker-backed). WASM-only — uses direct execution. */\nexport class TensorFlowMediaPipeQueuedProvider extends AiProvider<TFMPModelConfig> {\n readonly name = TENSORFLOW_MEDIAPIPE;\n readonly displayName = \"TensorFlow MediaPipe\";\n readonly isLocal = true;\n readonly supportsBrowser = true;\n\n readonly taskTypes: readonly string[] = TFMP_DEFAULT_TASK_TYPES;\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",
27
27
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRegisterOptions } from \"@workglow/ai\";\nimport { TFMP_TASKS } from \"./common/TFMP_JobRunFns\";\nimport { TensorFlowMediaPipeQueuedProvider } from \"./TensorFlowMediaPipeQueuedProvider\";\n\nexport async function registerTensorFlowMediaPipeInline(\n options?: AiProviderRegisterOptions\n): Promise<void> {\n await new TensorFlowMediaPipeQueuedProvider(TFMP_TASKS).register(options ?? {});\n}\n",
28
28
  "/**\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/worker\";\nimport { TFMP_TASKS } from \"./common/TFMP_JobRunFns\";\nimport { TensorFlowMediaPipeProvider } from \"./TensorFlowMediaPipeProvider\";\n\nexport async function registerTensorFlowMediaPipeWorker(): Promise<void> {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new TensorFlowMediaPipeProvider(TFMP_TASKS).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n getLogger().info(\"TensorFlow MediaPipe worker job run functions registered\");\n}\n",
29
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n} from \"@workglow/ai/worker\";\nimport { TENSORFLOW_MEDIAPIPE, TFMP_DEFAULT_TASK_TYPES } from \"./common/TFMP_Constants\";\nimport type { TFMPModelConfig } from \"./common/TFMP_ModelSchema\";\n\n/**\n * AI provider for TensorFlow MediaPipe models.\n *\n * Task run functions are injected via the constructor so that the heavy\n * `@mediapipe/*` libraries are only pulled in where actually needed\n * (inline mode, worker server), not on the main thread in worker mode.\n * Use `loadTfmpTasksTextSDK` / `loadTfmpTasksVisionSDK` for cached dynamic imports.\n\n */\nexport class TensorFlowMediaPipeProvider extends AiProvider<TFMPModelConfig> {\n readonly name = TENSORFLOW_MEDIAPIPE;\n readonly displayName = \"TensorFlow MediaPipe\";\n readonly isLocal = true;\n readonly supportsBrowser = true;\n\n readonly taskTypes: readonly string[] = TFMP_DEFAULT_TASK_TYPES;\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"
29
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider } from \"@workglow/ai/worker\";\nimport type { AiProviderReactiveRunFn, AiProviderRunFn } from \"@workglow/ai/worker\";\nimport { TENSORFLOW_MEDIAPIPE, TFMP_DEFAULT_TASK_TYPES } from \"./common/TFMP_Constants\";\nimport type { TFMPModelConfig } from \"./common/TFMP_ModelSchema\";\n\n/**\n * AI provider for TensorFlow MediaPipe models.\n *\n * Task run functions are injected via the constructor so that the heavy\n * `@mediapipe/*` libraries are only pulled in where actually needed\n * (inline mode, worker server), not on the main thread in worker mode.\n * Use `loadTfmpTasksTextSDK` / `loadTfmpTasksVisionSDK` for cached dynamic imports.\n\n */\nexport class TensorFlowMediaPipeProvider extends AiProvider<TFMPModelConfig> {\n readonly name = TENSORFLOW_MEDIAPIPE;\n readonly displayName = \"TensorFlow MediaPipe\";\n readonly isLocal = true;\n readonly supportsBrowser = true;\n\n readonly taskTypes: readonly string[] = TFMP_DEFAULT_TASK_TYPES;\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"
30
30
  ],
31
- "mappings": "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",
32
- "debugId": "720AC875976D335264756E2164756E21",
31
+ "mappings": "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",
32
+ "debugId": "13FD27230A8472E564756E2164756E21",
33
33
  "names": []
34
34
  }
package/dist/test.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./common/ToolCallParsers";
7
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC"}