@workglow/ai-provider 0.0.90 → 0.0.91

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 (96) hide show
  1. package/README.md +45 -45
  2. package/dist/anthropic/AnthropicProvider.d.ts +39 -0
  3. package/dist/anthropic/AnthropicProvider.d.ts.map +1 -0
  4. package/dist/anthropic/Anthropic_Worker.d.ts +7 -0
  5. package/dist/anthropic/Anthropic_Worker.d.ts.map +1 -0
  6. package/dist/anthropic/common/Anthropic_Constants.d.ts +7 -0
  7. package/dist/anthropic/common/Anthropic_Constants.d.ts.map +1 -0
  8. package/dist/anthropic/common/Anthropic_JobRunFns.d.ts +16 -0
  9. package/dist/anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -0
  10. package/dist/anthropic/common/Anthropic_ModelSchema.d.ts +167 -0
  11. package/dist/anthropic/common/Anthropic_ModelSchema.d.ts.map +1 -0
  12. package/dist/anthropic/index.d.ts +11 -0
  13. package/dist/anthropic/index.d.ts.map +1 -0
  14. package/dist/anthropic/index.js +257 -0
  15. package/dist/anthropic/index.js.map +14 -0
  16. package/dist/google-gemini/Gemini_Worker.d.ts +7 -0
  17. package/dist/google-gemini/Gemini_Worker.d.ts.map +1 -0
  18. package/dist/google-gemini/GoogleGeminiProvider.d.ts +36 -0
  19. package/dist/google-gemini/GoogleGeminiProvider.d.ts.map +1 -0
  20. package/dist/google-gemini/common/Gemini_Constants.d.ts +7 -0
  21. package/dist/google-gemini/common/Gemini_Constants.d.ts.map +1 -0
  22. package/dist/google-gemini/common/Gemini_JobRunFns.d.ts +17 -0
  23. package/dist/google-gemini/common/Gemini_JobRunFns.d.ts.map +1 -0
  24. package/dist/google-gemini/common/Gemini_ModelSchema.d.ts +164 -0
  25. package/dist/google-gemini/common/Gemini_ModelSchema.d.ts.map +1 -0
  26. package/dist/google-gemini/index.d.ts +11 -0
  27. package/dist/google-gemini/index.d.ts.map +1 -0
  28. package/dist/google-gemini/index.js +300 -0
  29. package/dist/google-gemini/index.js.map +14 -0
  30. package/dist/hf-transformers/HFT_Worker.d.ts +7 -0
  31. package/dist/hf-transformers/HFT_Worker.d.ts.map +1 -0
  32. package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts +41 -0
  33. package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts.map +1 -0
  34. package/dist/hf-transformers/common/HFT_JobRunFns.d.ts +1218 -1
  35. package/dist/hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
  36. package/dist/hf-transformers/index.d.ts +2 -3
  37. package/dist/hf-transformers/index.d.ts.map +1 -1
  38. package/dist/hf-transformers/index.js +1130 -0
  39. package/dist/hf-transformers/index.js.map +15 -0
  40. package/dist/index.d.ts +23 -2
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +729 -865
  43. package/dist/index.js.map +20 -12
  44. package/dist/provider-ollama/OllamaProvider.d.ts +39 -0
  45. package/dist/provider-ollama/OllamaProvider.d.ts.map +1 -0
  46. package/dist/provider-ollama/Ollama_Worker.d.ts +7 -0
  47. package/dist/provider-ollama/Ollama_Worker.d.ts.map +1 -0
  48. package/dist/provider-ollama/common/Ollama_Constants.d.ts +8 -0
  49. package/dist/provider-ollama/common/Ollama_Constants.d.ts.map +1 -0
  50. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts +17 -0
  51. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -0
  52. package/dist/provider-ollama/common/Ollama_ModelSchema.d.ts +137 -0
  53. package/dist/provider-ollama/common/Ollama_ModelSchema.d.ts.map +1 -0
  54. package/dist/provider-ollama/index.d.ts +11 -0
  55. package/dist/provider-ollama/index.d.ts.map +1 -0
  56. package/dist/provider-ollama/index.js +274 -0
  57. package/dist/provider-ollama/index.js.map +14 -0
  58. package/dist/provider-openai/OpenAI_Worker.d.ts +7 -0
  59. package/dist/provider-openai/OpenAI_Worker.d.ts.map +1 -0
  60. package/dist/provider-openai/OpenAiProvider.d.ts +40 -0
  61. package/dist/provider-openai/OpenAiProvider.d.ts.map +1 -0
  62. package/dist/provider-openai/common/OpenAI_Constants.d.ts +7 -0
  63. package/dist/provider-openai/common/OpenAI_Constants.d.ts.map +1 -0
  64. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts +17 -0
  65. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -0
  66. package/dist/provider-openai/common/OpenAI_ModelSchema.d.ts +161 -0
  67. package/dist/provider-openai/common/OpenAI_ModelSchema.d.ts.map +1 -0
  68. package/dist/provider-openai/index.d.ts +11 -0
  69. package/dist/provider-openai/index.d.ts.map +1 -0
  70. package/dist/provider-openai/index.js +283 -0
  71. package/dist/provider-openai/index.js.map +14 -0
  72. package/dist/tf-mediapipe/TFMP_Worker.d.ts +7 -0
  73. package/dist/tf-mediapipe/TFMP_Worker.d.ts.map +1 -0
  74. package/dist/tf-mediapipe/TensorFlowMediaPipeProvider.d.ts +39 -0
  75. package/dist/tf-mediapipe/TensorFlowMediaPipeProvider.d.ts.map +1 -0
  76. package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts +842 -0
  77. package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts.map +1 -1
  78. package/dist/tf-mediapipe/index.d.ts +2 -3
  79. package/dist/tf-mediapipe/index.d.ts.map +1 -1
  80. package/dist/tf-mediapipe/index.js +674 -0
  81. package/dist/tf-mediapipe/index.js.map +14 -0
  82. package/package.json +83 -18
  83. package/dist/hf-transformers/registry/HFT_Client_RegisterJobFns.d.ts +0 -17
  84. package/dist/hf-transformers/registry/HFT_Client_RegisterJobFns.d.ts.map +0 -1
  85. package/dist/hf-transformers/registry/HFT_Inline_RegisterJobFns.d.ts +0 -16
  86. package/dist/hf-transformers/registry/HFT_Inline_RegisterJobFns.d.ts.map +0 -1
  87. package/dist/hf-transformers/registry/HFT_Worker_RegisterJobFns.d.ts +0 -8
  88. package/dist/hf-transformers/registry/HFT_Worker_RegisterJobFns.d.ts.map +0 -1
  89. package/dist/openai/provider/OpenAI_TaskRun.d.ts +0 -2
  90. package/dist/openai/provider/OpenAI_TaskRun.d.ts.map +0 -1
  91. package/dist/tf-mediapipe/registry/TFMP_Client_RegisterJobFns.d.ts +0 -17
  92. package/dist/tf-mediapipe/registry/TFMP_Client_RegisterJobFns.d.ts.map +0 -1
  93. package/dist/tf-mediapipe/registry/TFMP_Inline_RegisterJobFns.d.ts +0 -16
  94. package/dist/tf-mediapipe/registry/TFMP_Inline_RegisterJobFns.d.ts.map +0 -1
  95. package/dist/tf-mediapipe/registry/TFMP_Worker_RegisterJobFns.d.ts +0 -8
  96. package/dist/tf-mediapipe/registry/TFMP_Worker_RegisterJobFns.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TFMP_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/tf-mediapipe/common/TFMP_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA4MrD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,eAAe,CACzC,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,CAwDhB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,CAiChB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,eAAe,CACnD,2BAA2B,EAC3B,4BAA4B,EAC5B,eAAe,CA4BhB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,eAAe,CACtD,8BAA8B,EAC9B,+BAA+B,EAC/B,eAAe,CA8BhB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,eAAe,CACvC,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,CAgChB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,0BAA0B,EAC1B,2BAA2B,EAC3B,eAAe,CAyBhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,CAchB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAAe,CACpD,4BAA4B,EAC5B,6BAA6B,EAC7B,eAAe,CAyBhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,CA+BhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,0BAA0B,EAC1B,2BAA2B,EAC3B,eAAe,CA4ChB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,CAwChB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,CAqChB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,CAgDhB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,CAsDhB,CAAC"}
1
+ {"version":3,"file":"TFMP_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/tf-mediapipe/common/TFMP_JobRunFns.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@
6
6
  export * from "./common/TFMP_Constants";
7
7
  export * from "./common/TFMP_JobRunFns";
8
8
  export * from "./common/TFMP_ModelSchema";
9
- export * from "./registry/TFMP_Client_RegisterJobFns";
10
- export * from "./registry/TFMP_Inline_RegisterJobFns";
11
- export * from "./registry/TFMP_Worker_RegisterJobFns";
9
+ export * from "./TensorFlowMediaPipeProvider";
10
+ export * from "./TFMP_Worker";
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tf-mediapipe/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tf-mediapipe/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC"}
@@ -0,0 +1,674 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, {
5
+ get: all[name],
6
+ enumerable: true,
7
+ configurable: true,
8
+ set: (newValue) => all[name] = () => newValue
9
+ });
10
+ };
11
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
12
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
13
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
14
+ }) : x)(function(x) {
15
+ if (typeof require !== "undefined")
16
+ return require.apply(this, arguments);
17
+ throw Error('Dynamic require of "' + x + '" is not supported');
18
+ });
19
+
20
+ // src/tf-mediapipe/common/TFMP_Constants.ts
21
+ var TENSORFLOW_MEDIAPIPE = "TENSORFLOW_MEDIAPIPE";
22
+ var TextPipelineTask = {
23
+ "text-embedder": "text-embedder",
24
+ "text-classifier": "text-classifier",
25
+ "text-language-detector": "text-language-detector",
26
+ "genai-text": "genai-text",
27
+ "audio-classifier": "audio-classifier",
28
+ "audio-embedder": "audio-embedder",
29
+ "vision-face-detector": "vision-face-detector",
30
+ "vision-face-landmarker": "vision-face-landmarker",
31
+ "vision-face-stylizer": "vision-face-stylizer",
32
+ "vision-gesture-recognizer": "vision-gesture-recognizer",
33
+ "vision-hand-landmarker": "vision-hand-landmarker",
34
+ "vision-holistic-landmarker": "vision-holistic-landmarker",
35
+ "vision-image-classifier": "vision-image-classifier",
36
+ "vision-image-embedder": "vision-image-embedder",
37
+ "vision-image-segmenter": "vision-image-segmenter",
38
+ "vision-image-interactive-segmenter": "vision-image-interactive-segmenter",
39
+ "vision-object-detector": "vision-object-detector",
40
+ "vision-pose-landmarker": "vision-pose-landmarker"
41
+ };
42
+ // src/tf-mediapipe/common/TFMP_JobRunFns.ts
43
+ import { PermanentJobError } from "@workglow/job-queue";
44
+ var _textSdk;
45
+ async function loadMediaPipeTextSDK() {
46
+ if (!_textSdk) {
47
+ try {
48
+ _textSdk = await import("@mediapipe/tasks-text");
49
+ } catch {
50
+ throw new Error("@mediapipe/tasks-text is required for MediaPipe text tasks. Install it with: bun add @mediapipe/tasks-text");
51
+ }
52
+ }
53
+ return _textSdk;
54
+ }
55
+ var _visionSdk;
56
+ async function loadMediaPipeVisionSDK() {
57
+ if (!_visionSdk) {
58
+ try {
59
+ _visionSdk = await import("@mediapipe/tasks-vision");
60
+ } catch {
61
+ throw new Error("@mediapipe/tasks-vision is required for MediaPipe vision tasks. Install it with: bun add @mediapipe/tasks-vision");
62
+ }
63
+ }
64
+ return _visionSdk;
65
+ }
66
+ var wasm_tasks = new Map;
67
+ var wasm_reference_counts = new Map;
68
+ var getWasmTask = async (model, onProgress, signal) => {
69
+ const task_engine = model.provider_config.task_engine;
70
+ if (wasm_tasks.has(task_engine)) {
71
+ return wasm_tasks.get(task_engine);
72
+ }
73
+ if (signal.aborted) {
74
+ throw new PermanentJobError("Aborted job");
75
+ }
76
+ onProgress(0.1, "Loading WASM task");
77
+ const { FilesetResolver } = await loadMediaPipeTextSDK();
78
+ let wasmFileset;
79
+ switch (task_engine) {
80
+ case "text":
81
+ wasmFileset = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm");
82
+ break;
83
+ case "audio":
84
+ wasmFileset = await FilesetResolver.forAudioTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-audio@latest/wasm");
85
+ break;
86
+ case "vision":
87
+ wasmFileset = await FilesetResolver.forVisionTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm");
88
+ break;
89
+ case "genai":
90
+ wasmFileset = await FilesetResolver.forGenAiTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@latest/wasm");
91
+ break;
92
+ default:
93
+ throw new PermanentJobError("Invalid task engine");
94
+ }
95
+ wasm_tasks.set(task_engine, wasmFileset);
96
+ return wasmFileset;
97
+ };
98
+ var modelTaskCache = new Map;
99
+ var optionsMatch = (opts1, opts2) => {
100
+ const keys1 = Object.keys(opts1).sort();
101
+ const keys2 = Object.keys(opts2).sort();
102
+ if (keys1.length !== keys2.length)
103
+ return false;
104
+ return keys1.every((key) => {
105
+ const val1 = opts1[key];
106
+ const val2 = opts2[key];
107
+ if (Array.isArray(val1) && Array.isArray(val2)) {
108
+ return JSON.stringify(val1) === JSON.stringify(val2);
109
+ }
110
+ return val1 === val2;
111
+ });
112
+ };
113
+ var getModelTask = async (model, options, onProgress, signal, TaskType) => {
114
+ const model_path = model.provider_config.model_path;
115
+ const task_engine = model.provider_config.task_engine;
116
+ const cachedTasks = modelTaskCache.get(model_path);
117
+ if (cachedTasks) {
118
+ const matchedTask = cachedTasks.find((cached) => optionsMatch(cached.options, options));
119
+ if (matchedTask) {
120
+ return matchedTask.task;
121
+ }
122
+ }
123
+ const wasmFileset = await getWasmTask(model, onProgress, signal);
124
+ onProgress(0.2, "Creating model task");
125
+ const task = await TaskType.createFromOptions(wasmFileset, {
126
+ baseOptions: {
127
+ modelAssetPath: model_path
128
+ },
129
+ ...options
130
+ });
131
+ const cachedTask = { task, options, task_engine };
132
+ if (!modelTaskCache.has(model_path)) {
133
+ modelTaskCache.set(model_path, []);
134
+ }
135
+ modelTaskCache.get(model_path).push(cachedTask);
136
+ wasm_reference_counts.set(task_engine, (wasm_reference_counts.get(task_engine) || 0) + 1);
137
+ return task;
138
+ };
139
+ var TFMP_Download = async (input, model, onProgress, signal) => {
140
+ let task;
141
+ switch (model?.provider_config.pipeline) {
142
+ case "text-embedder": {
143
+ const { TextEmbedder } = await loadMediaPipeTextSDK();
144
+ task = await getModelTask(model, {}, onProgress, signal, TextEmbedder);
145
+ break;
146
+ }
147
+ case "text-classifier": {
148
+ const { TextClassifier } = await loadMediaPipeTextSDK();
149
+ task = await getModelTask(model, {}, onProgress, signal, TextClassifier);
150
+ break;
151
+ }
152
+ case "text-language-detector": {
153
+ const { LanguageDetector } = await loadMediaPipeTextSDK();
154
+ task = await getModelTask(model, {}, onProgress, signal, LanguageDetector);
155
+ break;
156
+ }
157
+ case "vision-image-classifier": {
158
+ const { ImageClassifier } = await loadMediaPipeVisionSDK();
159
+ task = await getModelTask(model, {}, onProgress, signal, ImageClassifier);
160
+ break;
161
+ }
162
+ case "vision-image-embedder": {
163
+ const { ImageEmbedder } = await loadMediaPipeVisionSDK();
164
+ task = await getModelTask(model, {}, onProgress, signal, ImageEmbedder);
165
+ break;
166
+ }
167
+ case "vision-image-segmenter": {
168
+ const { ImageSegmenter } = await loadMediaPipeVisionSDK();
169
+ task = await getModelTask(model, {}, onProgress, signal, ImageSegmenter);
170
+ break;
171
+ }
172
+ case "vision-object-detector": {
173
+ const { ObjectDetector } = await loadMediaPipeVisionSDK();
174
+ task = await getModelTask(model, {}, onProgress, signal, ObjectDetector);
175
+ break;
176
+ }
177
+ case "vision-face-detector": {
178
+ const { FaceDetector } = await loadMediaPipeVisionSDK();
179
+ task = await getModelTask(model, {}, onProgress, signal, FaceDetector);
180
+ break;
181
+ }
182
+ case "vision-face-landmarker": {
183
+ const { FaceLandmarker } = await loadMediaPipeVisionSDK();
184
+ task = await getModelTask(model, {}, onProgress, signal, FaceLandmarker);
185
+ break;
186
+ }
187
+ case "vision-gesture-recognizer": {
188
+ const { GestureRecognizer } = await loadMediaPipeVisionSDK();
189
+ task = await getModelTask(model, {}, onProgress, signal, GestureRecognizer);
190
+ break;
191
+ }
192
+ case "vision-hand-landmarker": {
193
+ const { HandLandmarker } = await loadMediaPipeVisionSDK();
194
+ task = await getModelTask(model, {}, onProgress, signal, HandLandmarker);
195
+ break;
196
+ }
197
+ case "vision-pose-landmarker": {
198
+ const { PoseLandmarker } = await loadMediaPipeVisionSDK();
199
+ task = await getModelTask(model, {}, onProgress, signal, PoseLandmarker);
200
+ break;
201
+ }
202
+ default:
203
+ throw new PermanentJobError(`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`);
204
+ }
205
+ onProgress(0.9, "Pipeline loaded");
206
+ task.close();
207
+ const task_engine = model?.provider_config.task_engine;
208
+ wasm_reference_counts.set(task_engine, wasm_reference_counts.get(task_engine) - 1);
209
+ return {
210
+ model: input.model
211
+ };
212
+ };
213
+ var TFMP_TextEmbedding = async (input, model, onProgress, signal) => {
214
+ const { TextEmbedder } = await loadMediaPipeTextSDK();
215
+ const textEmbedder = await getModelTask(model, {}, onProgress, signal, TextEmbedder);
216
+ if (Array.isArray(input.text)) {
217
+ const embeddings = input.text.map((text) => {
218
+ const result2 = textEmbedder.embed(text);
219
+ if (!result2.embeddings?.[0]?.floatEmbedding) {
220
+ throw new PermanentJobError("Failed to generate embedding: Empty result");
221
+ }
222
+ return Float32Array.from(result2.embeddings[0].floatEmbedding);
223
+ });
224
+ return {
225
+ vector: embeddings
226
+ };
227
+ }
228
+ const result = textEmbedder.embed(input.text);
229
+ if (!result.embeddings?.[0]?.floatEmbedding) {
230
+ throw new PermanentJobError("Failed to generate embedding: Empty result");
231
+ }
232
+ const embedding = Float32Array.from(result.embeddings[0].floatEmbedding);
233
+ return {
234
+ vector: embedding
235
+ };
236
+ };
237
+ var TFMP_TextClassification = async (input, model, onProgress, signal) => {
238
+ const { TextClassifier } = await loadMediaPipeTextSDK();
239
+ const TextClassification = await getModelTask(model, {
240
+ maxCategories: input.maxCategories
241
+ }, onProgress, signal, TextClassifier);
242
+ const result = TextClassification.classify(input.text);
243
+ if (!result.classifications?.[0]?.categories) {
244
+ throw new PermanentJobError("Failed to classify text: Empty result");
245
+ }
246
+ const categories = result.classifications[0].categories.map((category) => ({
247
+ label: category.categoryName,
248
+ score: category.score
249
+ }));
250
+ return {
251
+ categories
252
+ };
253
+ };
254
+ var TFMP_TextLanguageDetection = async (input, model, onProgress, signal) => {
255
+ const maxLanguages = input.maxLanguages === 0 ? -1 : input.maxLanguages;
256
+ const { LanguageDetector } = await loadMediaPipeTextSDK();
257
+ const textLanguageDetector = await getModelTask(model, {
258
+ maxLanguages
259
+ }, onProgress, signal, LanguageDetector);
260
+ const result = textLanguageDetector.detect(input.text);
261
+ if (!result.languages?.[0]?.languageCode) {
262
+ throw new PermanentJobError("Failed to detect language: Empty result");
263
+ }
264
+ const languages = result.languages.map((language) => ({
265
+ language: language.languageCode,
266
+ score: language.probability
267
+ }));
268
+ return {
269
+ languages
270
+ };
271
+ };
272
+ var TFMP_Unload = async (input, model, onProgress, signal) => {
273
+ const model_path = model.provider_config.model_path;
274
+ onProgress(10, "Unloading model");
275
+ if (modelTaskCache.has(model_path)) {
276
+ const cachedTasks = modelTaskCache.get(model_path);
277
+ for (const cachedTask of cachedTasks) {
278
+ const task = cachedTask.task;
279
+ if ("close" in task && typeof task.close === "function")
280
+ task.close();
281
+ const task_engine = cachedTask.task_engine;
282
+ const currentCount = wasm_reference_counts.get(task_engine) || 0;
283
+ const newCount = currentCount - 1;
284
+ if (newCount <= 0) {
285
+ wasm_tasks.delete(task_engine);
286
+ wasm_reference_counts.delete(task_engine);
287
+ } else {
288
+ wasm_reference_counts.set(task_engine, newCount);
289
+ }
290
+ }
291
+ modelTaskCache.delete(model_path);
292
+ }
293
+ return {
294
+ model: input.model
295
+ };
296
+ };
297
+ var TFMP_ImageSegmentation = async (input, model, onProgress, signal) => {
298
+ const { ImageSegmenter } = await loadMediaPipeVisionSDK();
299
+ const imageSegmenter = await getModelTask(model, {}, onProgress, signal, ImageSegmenter);
300
+ const result = imageSegmenter.segment(input.image);
301
+ if (!result.categoryMask) {
302
+ throw new PermanentJobError("Failed to segment image: Empty result");
303
+ }
304
+ const masks = [
305
+ {
306
+ label: "segment",
307
+ score: 1,
308
+ mask: {
309
+ data: result.categoryMask.canvas,
310
+ width: result.categoryMask.width,
311
+ height: result.categoryMask.height
312
+ }
313
+ }
314
+ ];
315
+ return {
316
+ masks
317
+ };
318
+ };
319
+ var TFMP_ImageEmbedding = async (input, model, onProgress, signal) => {
320
+ const { ImageEmbedder } = await loadMediaPipeVisionSDK();
321
+ const imageEmbedder = await getModelTask(model, {}, onProgress, signal, ImageEmbedder);
322
+ const result = imageEmbedder.embed(input.image);
323
+ if (!result.embeddings?.[0]?.floatEmbedding) {
324
+ throw new PermanentJobError("Failed to generate embedding: Empty result");
325
+ }
326
+ const embedding = Float32Array.from(result.embeddings[0].floatEmbedding);
327
+ return {
328
+ vector: embedding
329
+ };
330
+ };
331
+ var TFMP_ImageClassification = async (input, model, onProgress, signal) => {
332
+ const { ImageClassifier } = await loadMediaPipeVisionSDK();
333
+ const imageClassifier = await getModelTask(model, {
334
+ maxResults: input.maxCategories
335
+ }, onProgress, signal, ImageClassifier);
336
+ const result = imageClassifier.classify(input.image);
337
+ if (!result.classifications?.[0]?.categories) {
338
+ throw new PermanentJobError("Failed to classify image: Empty result");
339
+ }
340
+ const categories = result.classifications[0].categories.map((category) => ({
341
+ label: category.categoryName,
342
+ score: category.score
343
+ }));
344
+ return {
345
+ categories
346
+ };
347
+ };
348
+ var TFMP_ObjectDetection = async (input, model, onProgress, signal) => {
349
+ const { ObjectDetector } = await loadMediaPipeVisionSDK();
350
+ const objectDetector = await getModelTask(model, {
351
+ scoreThreshold: input.threshold
352
+ }, onProgress, signal, ObjectDetector);
353
+ const result = objectDetector.detect(input.image);
354
+ if (!result.detections) {
355
+ throw new PermanentJobError("Failed to detect objects: Empty result");
356
+ }
357
+ const detections = result.detections.map((detection) => ({
358
+ label: detection.categories?.[0]?.categoryName || "unknown",
359
+ score: detection.categories?.[0]?.score || 0,
360
+ box: {
361
+ x: detection.boundingBox?.originX || 0,
362
+ y: detection.boundingBox?.originY || 0,
363
+ width: detection.boundingBox?.width || 0,
364
+ height: detection.boundingBox?.height || 0
365
+ }
366
+ }));
367
+ return {
368
+ detections
369
+ };
370
+ };
371
+ var TFMP_GestureRecognizer = async (input, model, onProgress, signal) => {
372
+ const { GestureRecognizer } = await loadMediaPipeVisionSDK();
373
+ const gestureRecognizer = await getModelTask(model, {
374
+ numHands: input.numHands,
375
+ minHandDetectionConfidence: input.minHandDetectionConfidence,
376
+ minHandPresenceConfidence: input.minHandPresenceConfidence,
377
+ minTrackingConfidence: input.minTrackingConfidence
378
+ }, onProgress, signal, GestureRecognizer);
379
+ const result = gestureRecognizer.recognize(input.image);
380
+ if (!result.gestures || !result.landmarks) {
381
+ throw new PermanentJobError("Failed to recognize gestures: Empty result");
382
+ }
383
+ const hands = result.gestures.map((gestures, index) => ({
384
+ gestures: gestures.map((g) => ({
385
+ label: g.categoryName,
386
+ score: g.score
387
+ })),
388
+ handedness: result.handedness[index].map((h) => ({
389
+ label: h.categoryName,
390
+ score: h.score
391
+ })),
392
+ landmarks: result.landmarks[index].map((l) => ({
393
+ x: l.x,
394
+ y: l.y,
395
+ z: l.z
396
+ })),
397
+ worldLandmarks: result.worldLandmarks[index].map((l) => ({
398
+ x: l.x,
399
+ y: l.y,
400
+ z: l.z
401
+ }))
402
+ }));
403
+ return {
404
+ hands
405
+ };
406
+ };
407
+ var TFMP_HandLandmarker = async (input, model, onProgress, signal) => {
408
+ const { HandLandmarker } = await loadMediaPipeVisionSDK();
409
+ const handLandmarker = await getModelTask(model, {
410
+ numHands: input.numHands,
411
+ minHandDetectionConfidence: input.minHandDetectionConfidence,
412
+ minHandPresenceConfidence: input.minHandPresenceConfidence,
413
+ minTrackingConfidence: input.minTrackingConfidence
414
+ }, onProgress, signal, HandLandmarker);
415
+ const result = handLandmarker.detect(input.image);
416
+ if (!result.landmarks) {
417
+ throw new PermanentJobError("Failed to detect hand landmarks: Empty result");
418
+ }
419
+ const hands = result.landmarks.map((landmarks, index) => ({
420
+ handedness: result.handedness[index].map((h) => ({
421
+ label: h.categoryName,
422
+ score: h.score
423
+ })),
424
+ landmarks: landmarks.map((l) => ({
425
+ x: l.x,
426
+ y: l.y,
427
+ z: l.z
428
+ })),
429
+ worldLandmarks: result.worldLandmarks[index].map((l) => ({
430
+ x: l.x,
431
+ y: l.y,
432
+ z: l.z
433
+ }))
434
+ }));
435
+ return {
436
+ hands
437
+ };
438
+ };
439
+ var TFMP_FaceDetector = async (input, model, onProgress, signal) => {
440
+ const { FaceDetector } = await loadMediaPipeVisionSDK();
441
+ const faceDetector = await getModelTask(model, {
442
+ minDetectionConfidence: input.minDetectionConfidence,
443
+ minSuppressionThreshold: input.minSuppressionThreshold
444
+ }, onProgress, signal, FaceDetector);
445
+ const result = faceDetector.detect(input.image);
446
+ if (!result.detections) {
447
+ throw new PermanentJobError("Failed to detect faces: Empty result");
448
+ }
449
+ const faces = result.detections.map((detection) => ({
450
+ box: {
451
+ x: detection.boundingBox?.originX || 0,
452
+ y: detection.boundingBox?.originY || 0,
453
+ width: detection.boundingBox?.width || 0,
454
+ height: detection.boundingBox?.height || 0
455
+ },
456
+ keypoints: detection.keypoints?.map((kp) => ({
457
+ x: kp.x,
458
+ y: kp.y,
459
+ label: kp.label
460
+ })) || [],
461
+ score: detection.categories?.[0]?.score || 0
462
+ }));
463
+ return {
464
+ faces
465
+ };
466
+ };
467
+ var TFMP_FaceLandmarker = async (input, model, onProgress, signal) => {
468
+ const { FaceLandmarker } = await loadMediaPipeVisionSDK();
469
+ const faceLandmarker = await getModelTask(model, {
470
+ numFaces: input.numFaces,
471
+ minFaceDetectionConfidence: input.minFaceDetectionConfidence,
472
+ minFacePresenceConfidence: input.minFacePresenceConfidence,
473
+ minTrackingConfidence: input.minTrackingConfidence,
474
+ outputFaceBlendshapes: input.outputFaceBlendshapes,
475
+ outputFacialTransformationMatrixes: input.outputFacialTransformationMatrixes
476
+ }, onProgress, signal, FaceLandmarker);
477
+ const result = faceLandmarker.detect(input.image);
478
+ if (!result.faceLandmarks) {
479
+ throw new PermanentJobError("Failed to detect face landmarks: Empty result");
480
+ }
481
+ const faces = result.faceLandmarks.map((landmarks, index) => {
482
+ const face = {
483
+ landmarks: landmarks.map((l) => ({
484
+ x: l.x,
485
+ y: l.y,
486
+ z: l.z
487
+ }))
488
+ };
489
+ if (result.faceBlendshapes && result.faceBlendshapes[index]) {
490
+ face.blendshapes = result.faceBlendshapes[index].categories.map((b) => ({
491
+ label: b.categoryName,
492
+ score: b.score
493
+ }));
494
+ }
495
+ if (result.facialTransformationMatrixes && result.facialTransformationMatrixes[index]) {
496
+ face.transformationMatrix = Array.from(result.facialTransformationMatrixes[index].data);
497
+ }
498
+ return face;
499
+ });
500
+ return {
501
+ faces
502
+ };
503
+ };
504
+ var TFMP_PoseLandmarker = async (input, model, onProgress, signal) => {
505
+ const { PoseLandmarker } = await loadMediaPipeVisionSDK();
506
+ const poseLandmarker = await getModelTask(model, {
507
+ numPoses: input.numPoses,
508
+ minPoseDetectionConfidence: input.minPoseDetectionConfidence,
509
+ minPosePresenceConfidence: input.minPosePresenceConfidence,
510
+ minTrackingConfidence: input.minTrackingConfidence,
511
+ outputSegmentationMasks: input.outputSegmentationMasks
512
+ }, onProgress, signal, PoseLandmarker);
513
+ const result = poseLandmarker.detect(input.image);
514
+ if (!result.landmarks) {
515
+ throw new PermanentJobError("Failed to detect pose landmarks: Empty result");
516
+ }
517
+ const poses = result.landmarks.map((landmarks, index) => {
518
+ const pose = {
519
+ landmarks: landmarks.map((l) => ({
520
+ x: l.x,
521
+ y: l.y,
522
+ z: l.z,
523
+ visibility: l.visibility,
524
+ presence: l.presence
525
+ })),
526
+ worldLandmarks: result.worldLandmarks[index].map((l) => ({
527
+ x: l.x,
528
+ y: l.y,
529
+ z: l.z,
530
+ visibility: l.visibility,
531
+ presence: l.presence
532
+ }))
533
+ };
534
+ if (result.segmentationMasks && result.segmentationMasks[index]) {
535
+ const mask = result.segmentationMasks[index];
536
+ pose.segmentationMask = {
537
+ data: mask.canvas || mask,
538
+ width: mask.width,
539
+ height: mask.height
540
+ };
541
+ }
542
+ return pose;
543
+ });
544
+ return {
545
+ poses
546
+ };
547
+ };
548
+ var TFMP_TASKS = {
549
+ DownloadModelTask: TFMP_Download,
550
+ UnloadModelTask: TFMP_Unload,
551
+ TextEmbeddingTask: TFMP_TextEmbedding,
552
+ TextLanguageDetectionTask: TFMP_TextLanguageDetection,
553
+ TextClassificationTask: TFMP_TextClassification,
554
+ ImageSegmentationTask: TFMP_ImageSegmentation,
555
+ ImageEmbeddingTask: TFMP_ImageEmbedding,
556
+ ImageClassificationTask: TFMP_ImageClassification,
557
+ ObjectDetectionTask: TFMP_ObjectDetection,
558
+ GestureRecognizerTask: TFMP_GestureRecognizer,
559
+ HandLandmarkerTask: TFMP_HandLandmarker,
560
+ FaceDetectorTask: TFMP_FaceDetector,
561
+ FaceLandmarkerTask: TFMP_FaceLandmarker,
562
+ PoseLandmarkerTask: TFMP_PoseLandmarker
563
+ };
564
+ // src/tf-mediapipe/common/TFMP_ModelSchema.ts
565
+ import { ModelConfigSchema, ModelRecordSchema } from "@workglow/ai";
566
+ var TFMPModelSchema = {
567
+ type: "object",
568
+ properties: {
569
+ provider: {
570
+ const: TENSORFLOW_MEDIAPIPE,
571
+ description: "Discriminator: TensorFlow MediaPipe backend."
572
+ },
573
+ provider_config: {
574
+ type: "object",
575
+ description: "TensorFlow MediaPipe-specific options.",
576
+ properties: {
577
+ model_path: {
578
+ type: "string",
579
+ description: "Filesystem path or URI for the ONNX model."
580
+ },
581
+ task_engine: {
582
+ type: "string",
583
+ enum: ["text", "audio", "vision", "genai"],
584
+ description: "Task engine for the MediaPipe model."
585
+ },
586
+ pipeline: {
587
+ type: "string",
588
+ enum: Object.values(TextPipelineTask),
589
+ description: "Pipeline task type for the MediaPipe model."
590
+ }
591
+ },
592
+ required: ["model_path", "task_engine", "pipeline"],
593
+ additionalProperties: false
594
+ }
595
+ },
596
+ required: ["provider", "provider_config"],
597
+ additionalProperties: true
598
+ };
599
+ var TFMPModelRecordSchema = {
600
+ type: "object",
601
+ properties: {
602
+ ...ModelRecordSchema.properties,
603
+ ...TFMPModelSchema.properties
604
+ },
605
+ required: [...ModelRecordSchema.required, ...TFMPModelSchema.required],
606
+ additionalProperties: false
607
+ };
608
+ var TFMPModelConfigSchema = {
609
+ type: "object",
610
+ properties: {
611
+ ...ModelConfigSchema.properties,
612
+ ...TFMPModelSchema.properties
613
+ },
614
+ required: [...ModelConfigSchema.required, ...TFMPModelSchema.required],
615
+ additionalProperties: false
616
+ };
617
+ // src/tf-mediapipe/TensorFlowMediaPipeProvider.ts
618
+ import { AiProvider } from "@workglow/ai";
619
+ class TensorFlowMediaPipeProvider extends AiProvider {
620
+ name = TENSORFLOW_MEDIAPIPE;
621
+ taskTypes = [
622
+ "DownloadModelTask",
623
+ "UnloadModelTask",
624
+ "TextEmbeddingTask",
625
+ "TextLanguageDetectionTask",
626
+ "TextClassificationTask",
627
+ "ImageSegmentationTask",
628
+ "ImageEmbeddingTask",
629
+ "ImageClassificationTask",
630
+ "ObjectDetectionTask",
631
+ "GestureRecognizerTask",
632
+ "HandLandmarkerTask",
633
+ "FaceDetectorTask",
634
+ "FaceLandmarkerTask",
635
+ "PoseLandmarkerTask"
636
+ ];
637
+ constructor(tasks) {
638
+ super(tasks);
639
+ }
640
+ }
641
+ // src/tf-mediapipe/TFMP_Worker.ts
642
+ import { globalServiceRegistry, parentPort, WORKER_SERVER } from "@workglow/util";
643
+ function TFMP_WORKER_JOBRUN_REGISTER() {
644
+ const workerServer = globalServiceRegistry.get(WORKER_SERVER);
645
+ new TensorFlowMediaPipeProvider(TFMP_TASKS).registerOnWorkerServer(workerServer);
646
+ parentPort.postMessage({ type: "ready" });
647
+ console.log("TFMP_WORKER_JOBRUN registered");
648
+ }
649
+ export {
650
+ TextPipelineTask,
651
+ TensorFlowMediaPipeProvider,
652
+ TFMP_WORKER_JOBRUN_REGISTER,
653
+ TFMP_Unload,
654
+ TFMP_TextLanguageDetection,
655
+ TFMP_TextEmbedding,
656
+ TFMP_TextClassification,
657
+ TFMP_TASKS,
658
+ TFMP_PoseLandmarker,
659
+ TFMP_ObjectDetection,
660
+ TFMP_ImageSegmentation,
661
+ TFMP_ImageEmbedding,
662
+ TFMP_ImageClassification,
663
+ TFMP_HandLandmarker,
664
+ TFMP_GestureRecognizer,
665
+ TFMP_FaceLandmarker,
666
+ TFMP_FaceDetector,
667
+ TFMP_Download,
668
+ TFMPModelSchema,
669
+ TFMPModelRecordSchema,
670
+ TFMPModelConfigSchema,
671
+ TENSORFLOW_MEDIAPIPE
672
+ };
673
+
674
+ //# debugId=0AF5B3FEF7B1A64464756E2164756E21