@workglow/ai 0.0.125 → 0.1.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 (143) hide show
  1. package/README.md +218 -47
  2. package/dist/browser.d.ts +7 -0
  3. package/dist/browser.d.ts.map +1 -0
  4. package/dist/browser.js +565 -1277
  5. package/dist/browser.js.map +56 -61
  6. package/dist/{types.d.ts → bun.d.ts} +1 -1
  7. package/dist/bun.d.ts.map +1 -0
  8. package/dist/bun.js +565 -1277
  9. package/dist/bun.js.map +56 -61
  10. package/dist/common.d.ts +3 -1
  11. package/dist/common.d.ts.map +1 -1
  12. package/dist/execution/DirectExecutionStrategy.d.ts +20 -0
  13. package/dist/execution/DirectExecutionStrategy.d.ts.map +1 -0
  14. package/dist/execution/IAiExecutionStrategy.d.ts +33 -0
  15. package/dist/execution/IAiExecutionStrategy.d.ts.map +1 -0
  16. package/dist/execution/QueuedExecutionStrategy.d.ts +50 -0
  17. package/dist/execution/QueuedExecutionStrategy.d.ts.map +1 -0
  18. package/dist/job/AiJob.d.ts +6 -0
  19. package/dist/job/AiJob.d.ts.map +1 -1
  20. package/dist/node.d.ts +7 -0
  21. package/dist/node.d.ts.map +1 -0
  22. package/dist/node.js +565 -1277
  23. package/dist/node.js.map +56 -61
  24. package/dist/provider/AiProvider.d.ts +16 -2
  25. package/dist/provider/AiProvider.d.ts.map +1 -1
  26. package/dist/provider/AiProviderRegistry.d.ts +20 -0
  27. package/dist/provider/AiProviderRegistry.d.ts.map +1 -1
  28. package/dist/provider/QueuedAiProvider.d.ts +23 -2
  29. package/dist/provider/QueuedAiProvider.d.ts.map +1 -1
  30. package/dist/task/BackgroundRemovalTask.d.ts +3 -3
  31. package/dist/task/BackgroundRemovalTask.d.ts.map +1 -1
  32. package/dist/task/ChunkRetrievalTask.d.ts +4 -4
  33. package/dist/task/ChunkRetrievalTask.d.ts.map +1 -1
  34. package/dist/task/ChunkToVectorTask.d.ts +4 -4
  35. package/dist/task/ChunkToVectorTask.d.ts.map +1 -1
  36. package/dist/task/ChunkVectorHybridSearchTask.d.ts +4 -4
  37. package/dist/task/ChunkVectorHybridSearchTask.d.ts.map +1 -1
  38. package/dist/task/ChunkVectorSearchTask.d.ts +4 -4
  39. package/dist/task/ChunkVectorSearchTask.d.ts.map +1 -1
  40. package/dist/task/ChunkVectorUpsertTask.d.ts +4 -4
  41. package/dist/task/ChunkVectorUpsertTask.d.ts.map +1 -1
  42. package/dist/task/ContextBuilderTask.d.ts +4 -4
  43. package/dist/task/ContextBuilderTask.d.ts.map +1 -1
  44. package/dist/task/CountTokensTask.d.ts +11 -29
  45. package/dist/task/CountTokensTask.d.ts.map +1 -1
  46. package/dist/task/DocumentEnricherTask.d.ts +4 -4
  47. package/dist/task/DocumentEnricherTask.d.ts.map +1 -1
  48. package/dist/task/DownloadModelTask.d.ts +5 -5
  49. package/dist/task/DownloadModelTask.d.ts.map +1 -1
  50. package/dist/task/FaceDetectorTask.d.ts +4 -4
  51. package/dist/task/FaceDetectorTask.d.ts.map +1 -1
  52. package/dist/task/FaceLandmarkerTask.d.ts +4 -4
  53. package/dist/task/FaceLandmarkerTask.d.ts.map +1 -1
  54. package/dist/task/GestureRecognizerTask.d.ts +4 -4
  55. package/dist/task/GestureRecognizerTask.d.ts.map +1 -1
  56. package/dist/task/HandLandmarkerTask.d.ts +4 -4
  57. package/dist/task/HandLandmarkerTask.d.ts.map +1 -1
  58. package/dist/task/HierarchicalChunkerTask.d.ts +4 -4
  59. package/dist/task/HierarchicalChunkerTask.d.ts.map +1 -1
  60. package/dist/task/HierarchyJoinTask.d.ts +4 -4
  61. package/dist/task/HierarchyJoinTask.d.ts.map +1 -1
  62. package/dist/task/ImageClassificationTask.d.ts +4 -4
  63. package/dist/task/ImageClassificationTask.d.ts.map +1 -1
  64. package/dist/task/ImageEmbeddingTask.d.ts +203 -89
  65. package/dist/task/ImageEmbeddingTask.d.ts.map +1 -1
  66. package/dist/task/ImageSegmentationTask.d.ts +4 -4
  67. package/dist/task/ImageSegmentationTask.d.ts.map +1 -1
  68. package/dist/task/ImageToTextTask.d.ts +4 -4
  69. package/dist/task/ImageToTextTask.d.ts.map +1 -1
  70. package/dist/task/ModelInfoTask.d.ts +5 -5
  71. package/dist/task/ModelInfoTask.d.ts.map +1 -1
  72. package/dist/task/ModelSearchTask.d.ts +3 -3
  73. package/dist/task/ModelSearchTask.d.ts.map +1 -1
  74. package/dist/task/ObjectDetectionTask.d.ts +4 -4
  75. package/dist/task/ObjectDetectionTask.d.ts.map +1 -1
  76. package/dist/task/PoseLandmarkerTask.d.ts +4 -4
  77. package/dist/task/PoseLandmarkerTask.d.ts.map +1 -1
  78. package/dist/task/QueryExpanderTask.d.ts +4 -4
  79. package/dist/task/QueryExpanderTask.d.ts.map +1 -1
  80. package/dist/task/RerankerTask.d.ts +4 -4
  81. package/dist/task/RerankerTask.d.ts.map +1 -1
  82. package/dist/task/StructuralParserTask.d.ts +4 -4
  83. package/dist/task/StructuralParserTask.d.ts.map +1 -1
  84. package/dist/task/StructuredGenerationTask.d.ts +4 -4
  85. package/dist/task/StructuredGenerationTask.d.ts.map +1 -1
  86. package/dist/task/TextChunkerTask.d.ts +4 -4
  87. package/dist/task/TextChunkerTask.d.ts.map +1 -1
  88. package/dist/task/TextClassificationTask.d.ts +24 -62
  89. package/dist/task/TextClassificationTask.d.ts.map +1 -1
  90. package/dist/task/TextEmbeddingTask.d.ts +3 -3
  91. package/dist/task/TextEmbeddingTask.d.ts.map +1 -1
  92. package/dist/task/TextFillMaskTask.d.ts +29 -73
  93. package/dist/task/TextFillMaskTask.d.ts.map +1 -1
  94. package/dist/task/TextGenerationTask.d.ts +13 -32
  95. package/dist/task/TextGenerationTask.d.ts.map +1 -1
  96. package/dist/task/TextLanguageDetectionTask.d.ts +24 -62
  97. package/dist/task/TextLanguageDetectionTask.d.ts.map +1 -1
  98. package/dist/task/TextNamedEntityRecognitionTask.d.ts +29 -73
  99. package/dist/task/TextNamedEntityRecognitionTask.d.ts.map +1 -1
  100. package/dist/task/TextQuestionAnswerTask.d.ts +17 -45
  101. package/dist/task/TextQuestionAnswerTask.d.ts.map +1 -1
  102. package/dist/task/TextRewriterTask.d.ts +12 -31
  103. package/dist/task/TextRewriterTask.d.ts.map +1 -1
  104. package/dist/task/TextSummaryTask.d.ts +12 -31
  105. package/dist/task/TextSummaryTask.d.ts.map +1 -1
  106. package/dist/task/TextTranslationTask.d.ts +12 -31
  107. package/dist/task/TextTranslationTask.d.ts.map +1 -1
  108. package/dist/task/TopicSegmenterTask.d.ts +4 -4
  109. package/dist/task/TopicSegmenterTask.d.ts.map +1 -1
  110. package/dist/task/UnloadModelTask.d.ts +4 -4
  111. package/dist/task/UnloadModelTask.d.ts.map +1 -1
  112. package/dist/task/VectorQuantizeTask.d.ts +4 -4
  113. package/dist/task/VectorQuantizeTask.d.ts.map +1 -1
  114. package/dist/task/VectorSimilarityTask.d.ts +4 -4
  115. package/dist/task/VectorSimilarityTask.d.ts.map +1 -1
  116. package/dist/task/base/AiTask.d.ts +12 -31
  117. package/dist/task/base/AiTask.d.ts.map +1 -1
  118. package/dist/task/base/AiVisionTask.d.ts +7 -12
  119. package/dist/task/base/AiVisionTask.d.ts.map +1 -1
  120. package/dist/task/base/StreamingAiTask.d.ts +7 -4
  121. package/dist/task/base/StreamingAiTask.d.ts.map +1 -1
  122. package/dist/task/index.d.ts +1 -13
  123. package/dist/task/index.d.ts.map +1 -1
  124. package/dist/worker.d.ts +0 -2
  125. package/dist/worker.d.ts.map +1 -1
  126. package/dist/worker.js +217 -233
  127. package/dist/worker.js.map +7 -7
  128. package/package.json +24 -15
  129. package/dist/queue/createDefaultQueue.d.ts +0 -17
  130. package/dist/queue/createDefaultQueue.d.ts.map +0 -1
  131. package/dist/task/AgentTask.d.ts +0 -524
  132. package/dist/task/AgentTask.d.ts.map +0 -1
  133. package/dist/task/AgentTypes.d.ts +0 -181
  134. package/dist/task/AgentTypes.d.ts.map +0 -1
  135. package/dist/task/AgentUtils.d.ts +0 -50
  136. package/dist/task/AgentUtils.d.ts.map +0 -1
  137. package/dist/task/MessageConversion.d.ts +0 -52
  138. package/dist/task/MessageConversion.d.ts.map +0 -1
  139. package/dist/task/ToolCallingTask.d.ts +0 -385
  140. package/dist/task/ToolCallingTask.d.ts.map +0 -1
  141. package/dist/task/ToolCallingUtils.d.ts +0 -65
  142. package/dist/task/ToolCallingUtils.d.ts.map +0 -1
  143. package/dist/types.d.ts.map +0 -1
package/README.md CHANGED
@@ -45,15 +45,19 @@ const modelRepo = new InMemoryModelRepository();
45
45
  setGlobalModelRepository(modelRepo);
46
46
 
47
47
  // 2. Add a local ONNX model (Hugging Face Transformers)
48
+
48
49
  await modelRepo.addModel({
49
50
  model_id: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
50
- tasks: ["TextGenerationTask","TextRewriterTask"],
51
- title: "LaMini-Flan-T5-783M",
52
- description: "LaMini-Flan-T5-783M quantized to 8bit",
53
51
  provider: HF_TRANSFORMERS_ONNX,
54
52
  provider_config: {
55
53
  pipeline: "text2text-generation",
56
- model_path: "Xenova/LaMini-Flan-T5-783M"
54
+ model_path: "Xenova/LaMini-Flan-T5-783M",
55
+ dtype: "q8",
56
+ },
57
+ tasks: ["TextGenerationTask", "TextRewriterTask"],
58
+ title: "LaMini-Flan-T5-783M",
59
+ description: "LaMini-Flan-T5-783M quantized to 8bit",
60
+ metadata: {},
57
61
  });
58
62
 
59
63
  // 3. Register provider (inline: full ONNX stack in this bundle; creates queue automatically)
@@ -103,9 +107,19 @@ Generates text based on prompts using language models.
103
107
 
104
108
  ```typescript
105
109
  import { TextGenerationTask } from "@workglow/ai";
110
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
111
+
112
+ const gpt2ModelConfig = {
113
+ provider: HF_TRANSFORMERS_ONNX,
114
+ provider_config: {
115
+ pipeline: "text-generation",
116
+ model_path: "Xenova/gpt2",
117
+ dtype: "q8",
118
+ },
119
+ } as const;
106
120
 
107
121
  const task = new TextGenerationTask({
108
- model: "onnx:Xenova/gpt2:q8",
122
+ model: gpt2ModelConfig,
109
123
  prompt: "Explain quantum computing in simple terms",
110
124
  });
111
125
 
@@ -119,9 +133,20 @@ Generates vector embeddings for text using embedding models.
119
133
 
120
134
  ```typescript
121
135
  import { TextEmbeddingTask } from "@workglow/ai";
136
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
137
+
138
+ const embeddingModelConfig = {
139
+ provider: HF_TRANSFORMERS_ONNX,
140
+ provider_config: {
141
+ pipeline: "feature-extraction",
142
+ model_path: "Xenova/LaMini-Flan-T5-783M",
143
+ dtype: "q8",
144
+ native_dimensions: 384,
145
+ },
146
+ } as const;
122
147
 
123
148
  const task = new TextEmbeddingTask({
124
- model: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
149
+ model: embeddingModelConfig,
125
150
  text: "This is a sample text for embedding",
126
151
  });
127
152
 
@@ -153,9 +178,19 @@ Generates summaries of longer text content.
153
178
 
154
179
  ```typescript
155
180
  import { TextSummaryTask } from "@workglow/ai";
181
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
182
+
183
+ const summarizationModelConfig = {
184
+ provider: HF_TRANSFORMERS_ONNX,
185
+ provider_config: {
186
+ pipeline: "summarization",
187
+ model_path: "Falconsai/text_summarization",
188
+ dtype: "fp32",
189
+ },
190
+ } as const;
156
191
 
157
192
  const task = new TextSummaryTask({
158
- model: "onnx:Falconsai/text_summarization:fp32",
193
+ model: summarizationModelConfig,
159
194
  text: "Long article content here...",
160
195
  maxLength: 100,
161
196
  });
@@ -170,9 +205,19 @@ Rewrites text in different styles or tones.
170
205
 
171
206
  ```typescript
172
207
  import { TextRewriterTask } from "@workglow/ai";
208
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
209
+
210
+ const laMiniModelConfig = {
211
+ provider: HF_TRANSFORMERS_ONNX,
212
+ provider_config: {
213
+ pipeline: "text2text-generation",
214
+ model_path: "Xenova/LaMini-Flan-T5-783M",
215
+ dtype: "q8",
216
+ },
217
+ } as const;
173
218
 
174
219
  const task = new TextRewriterTask({
175
- model: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
220
+ model: laMiniModelConfig,
176
221
  text: "This is a formal business proposal.",
177
222
  style: "casual",
178
223
  });
@@ -187,9 +232,19 @@ Answers questions based on provided context.
187
232
 
188
233
  ```typescript
189
234
  import { TextQuestionAnswerTask } from "@workglow/ai";
235
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
236
+
237
+ const squadModelConfig = {
238
+ provider: HF_TRANSFORMERS_ONNX,
239
+ provider_config: {
240
+ pipeline: "question-answering",
241
+ model_path: "Xenova/distilbert-base-uncased-distilled-squad",
242
+ dtype: "q8",
243
+ },
244
+ } as const;
190
245
 
191
246
  const task = new TextQuestionAnswerTask({
192
- model: "onnx:Xenova/distilbert-base-uncased-distilled-squad:q8",
247
+ model: squadModelConfig,
193
248
  context: "The capital of France is Paris. It has a population of about 2.1 million.",
194
249
  question: "What is the population of Paris?",
195
250
  });
@@ -206,9 +261,20 @@ Computes similarity between texts or embeddings.
206
261
 
207
262
  ```typescript
208
263
  import { VectorSimilarityTask } from "@workglow/ai";
264
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
265
+
266
+ const gteSmallConfig = {
267
+ provider: HF_TRANSFORMERS_ONNX,
268
+ provider_config: {
269
+ pipeline: "feature-extraction",
270
+ model_path: "Supabase/gte-small",
271
+ dtype: "q8",
272
+ native_dimensions: 384,
273
+ },
274
+ } as const;
209
275
 
210
276
  const task = new VectorSimilarityTask({
211
- model: "onnx:Supabase/gte-small:q8",
277
+ model: gteSmallConfig,
212
278
  text1: "I love programming",
213
279
  text2: "Coding is my passion",
214
280
  });
@@ -225,17 +291,21 @@ Downloads and prepares AI models for use.
225
291
 
226
292
  ```typescript
227
293
  import { DownloadModelTask } from "@workglow/ai";
228
-
229
294
  import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
230
295
 
231
296
  const task = new DownloadModelTask({
232
- modelName: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
233
- modelUrl: "Xenova/LaMini-Flan-T5-783M",
234
- provider: HF_TRANSFORMERS_ONNX,
297
+ model: {
298
+ provider: HF_TRANSFORMERS_ONNX,
299
+ provider_config: {
300
+ pipeline: "text2text-generation",
301
+ model_path: "Xenova/LaMini-Flan-T5-783M",
302
+ dtype: "q8",
303
+ },
304
+ },
235
305
  });
236
306
 
237
307
  const result = await task.run();
238
- // Output: { status: "downloaded", path: "/models/..." }
308
+ // Output includes resolved model config after download
239
309
  ```
240
310
 
241
311
  ## Model Management
@@ -266,7 +336,9 @@ setGlobalModelRepository(modelRepo);
266
336
 
267
337
  ```typescript
268
338
  import { SqliteModelRepository, setGlobalModelRepository } from "@workglow/ai";
339
+ import { Sqlite } from "@workglow/storage/sqlite";
269
340
 
341
+ await Sqlite.init();
270
342
  const modelRepo = new SqliteModelRepository("./models.db");
271
343
  setGlobalModelRepository(modelRepo);
272
344
  ```
@@ -297,18 +369,27 @@ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
297
369
 
298
370
  const modelRepo = getGlobalModelRepository();
299
371
 
372
+ const gpt2ModelRecord = {
373
+ model_id: "onnx:Xenova/gpt2:q8",
374
+ provider: HF_TRANSFORMERS_ONNX,
375
+ provider_config: {
376
+ pipeline: "text-generation",
377
+ model_path: "Xenova/gpt2",
378
+ dtype: "q8",
379
+ },
380
+ } as const;
381
+
300
382
  // Add an ONNX model from Hugging Face
301
383
  await modelRepo.addModel({
302
- name: "onnx:Xenova/gpt2:q8",
303
- url: "Xenova/gpt2",
304
- provider: HF_TRANSFORMERS_ONNX,
305
- availableOnBrowser: true,
306
- availableOnServer: true,
307
- contextWindow: 8192,
384
+ ...gpt2ModelRecord,
385
+ tasks: ["TextGenerationTask"],
386
+ title: "GPT-2",
387
+ description: "GPT-2 ONNX",
388
+ metadata: {},
308
389
  });
309
390
 
310
391
  // Connect model to specific tasks
311
- await modelRepo.connectTaskToModel("TextGenerationTask", "onnx:Xenova/gpt2:q8");
392
+ await modelRepo.connectTaskToModel("TextGenerationTask", gpt2ModelRecord.model_id);
312
393
 
313
394
  // Find models for a specific task
314
395
  const textGenModels = await modelRepo.findModelsByTask("TextGenerationTask");
@@ -376,22 +457,41 @@ AI tasks integrate seamlessly with Workglow workflows:
376
457
 
377
458
  ```typescript
378
459
  import { Workflow } from "@workglow/task-graph";
379
- import { TextGenerationTask, TextEmbeddingTask, VectorSimilarityTask } from "@workglow/ai";
460
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
461
+
462
+ const gpt2ModelConfig = {
463
+ provider: HF_TRANSFORMERS_ONNX,
464
+ provider_config: {
465
+ pipeline: "text-generation",
466
+ model_path: "Xenova/gpt2",
467
+ dtype: "q8",
468
+ },
469
+ } as const;
470
+
471
+ const gteSmallConfig = {
472
+ provider: HF_TRANSFORMERS_ONNX,
473
+ provider_config: {
474
+ pipeline: "feature-extraction",
475
+ model_path: "Supabase/gte-small",
476
+ dtype: "q8",
477
+ native_dimensions: 384,
478
+ },
479
+ } as const;
380
480
 
381
481
  const workflow = new Workflow();
382
482
 
383
483
  // Chain AI tasks together
384
484
  const result = await workflow
385
485
  .textGeneration({
386
- model: "onnx:Xenova/gpt2:q8",
486
+ model: gpt2ModelConfig,
387
487
  prompt: "Write about artificial intelligence",
388
488
  })
389
489
  .textEmbedding({
390
- model: "onnx:Supabase/gte-small:q8",
490
+ model: gteSmallConfig,
391
491
  text: workflow.previous().text, // Use previous task output
392
492
  })
393
493
  .similarity({
394
- model: "onnx:Supabase/gte-small:q8",
494
+ model: gteSmallConfig,
395
495
  text1: "artificial intelligence",
396
496
  embedding2: workflow.previous().vector, // Use embedding from previous task
397
497
  })
@@ -439,6 +539,41 @@ The AI package provides a comprehensive set of tasks for building RAG pipelines.
439
539
  ```typescript
440
540
  import { Workflow } from "@workglow/task-graph";
441
541
  import { createKnowledgeBase } from "@workglow/knowledge-base";
542
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
543
+
544
+ // 1. Set up a model repository
545
+ const modelRepo = new InMemoryModelRepository();
546
+ setGlobalModelRepository(modelRepo);
547
+
548
+ // 2. Add a local ONNX model (Hugging Face Transformers)
549
+ await modelRepo.addModel({
550
+ model_id: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
551
+ provider: HF_TRANSFORMERS_ONNX,
552
+ provider_config: {
553
+ pipeline: "text2text-generation",
554
+ model_path: "Xenova/LaMini-Flan-T5-783M",
555
+ dtype: "q8",
556
+ },
557
+ tasks: ["TextGenerationTask", "TextRewriterTask"],
558
+ title: "LaMini-Flan-T5-783M",
559
+ description: "LaMini-Flan-T5-783M quantized to 8bit",
560
+ metadata: {},
561
+ });
562
+
563
+ await modelRepo.addModel({
564
+ model_id: "onnx:Xenova/all-MiniLM-L6-v2:q8",
565
+ provider: HF_TRANSFORMERS_ONNX,
566
+ provider_config: {
567
+ pipeline: "feature-extraction",
568
+ model_path: "Xenova/all-MiniLM-L6-v2",
569
+ dtype: "q8",
570
+ native_dimensions: 384,
571
+ },
572
+ tasks: ["TextEmbeddingTask"],
573
+ title: "All MiniLM L6 V2 384D",
574
+ description: "Xenova/all-MiniLM-L6-v2",
575
+ metadata: {},
576
+ });
442
577
 
443
578
  // Create a KnowledgeBase (auto-registers globally as "my-kb")
444
579
  const kb = await createKnowledgeBase({
@@ -463,7 +598,7 @@ await new Workflow()
463
598
  strategy: "hierarchical",
464
599
  })
465
600
  .textEmbedding({
466
- model: "Xenova/all-MiniLM-L6-v2",
601
+ model: "onnx:Xenova/all-MiniLM-L6-v2:q8",
467
602
  })
468
603
  .chunkToVector()
469
604
  .chunkVectorUpsert({
@@ -476,7 +611,7 @@ const result = await new Workflow()
476
611
  .chunkRetrieval({
477
612
  knowledgeBase: "my-kb",
478
613
  query: "What is transfer learning?",
479
- model: "Xenova/all-MiniLM-L6-v2",
614
+ model: "onnx:Xenova/all-MiniLM-L6-v2:q8",
480
615
  topK: 10,
481
616
  })
482
617
  .reranker({
@@ -489,7 +624,7 @@ const result = await new Workflow()
489
624
  })
490
625
  .textQuestionAnswer({
491
626
  question: "What is transfer learning?",
492
- model: "Xenova/LaMini-Flan-T5-783M",
627
+ model: "onnx:Xenova/LaMini-Flan-T5-783M:q8",
493
628
  })
494
629
  .run();
495
630
  ```
@@ -563,26 +698,24 @@ AI tasks accept model inputs as either string identifiers or direct `ModelConfig
563
698
 
564
699
  ```typescript
565
700
  import { TextGenerationTask } from "@workglow/ai";
701
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
566
702
 
567
- // Using a model ID (resolved from ModelRepository)
568
- const task1 = new TextGenerationTask({
569
- model: "onnx:Xenova/gpt2:q8",
570
- prompt: "Generate text",
571
- });
572
-
573
- // Using a direct ModelConfig object
574
- const task2 = new TextGenerationTask({
575
- model: {
576
- model_id: "onnx:Xenova/gpt2:q8",
577
- provider: "hf-transformers-onnx",
578
- tasks: ["TextGenerationTask"],
579
- title: "GPT-2",
580
- provider_config: { pipeline: "text-generation" },
703
+ const gpt2ModelConfig = {
704
+ provider: HF_TRANSFORMERS_ONNX,
705
+ provider_config: {
706
+ pipeline: "text-generation",
707
+ model_path: "Xenova/gpt2",
708
+ dtype: "q8",
581
709
  },
710
+ } as const;
711
+
712
+ // Inline ModelConfig (provider + provider_config)
713
+ const task = new TextGenerationTask({
714
+ model: gpt2ModelConfig,
582
715
  prompt: "Generate text",
583
716
  });
584
717
 
585
- // Both approaches work identically
718
+ // Registered model_id strings (e.g. onnx:org/model:q8) are still resolved via ModelRepository when you pass a string instead
586
719
  ```
587
720
 
588
721
  This resolution is handled by the input resolver system, which inspects schema `format` annotations (like `"model"` or `"model:TextGenerationTask"`) to determine how string values should be resolved.
@@ -602,9 +735,21 @@ This resolution is handled by the input resolver system, which inspects schema `
602
735
  Tasks automatically validate that specified models exist and are compatible:
603
736
 
604
737
  ```typescript
738
+ import { TextGenerationTask } from "@workglow/ai";
739
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
740
+
741
+ const gpt2ModelConfig = {
742
+ provider: HF_TRANSFORMERS_ONNX,
743
+ provider_config: {
744
+ pipeline: "text-generation",
745
+ model_path: "Xenova/gpt2",
746
+ dtype: "q8",
747
+ },
748
+ } as const;
749
+
605
750
  // Models are validated before task execution
606
751
  const task = new TextGenerationTask({
607
- model: "onnx:Xenova/gpt2:q8", // Must exist in ModelRepository and be connected to TextGenerationTask
752
+ model: gpt2ModelConfig,
608
753
  prompt: "Generate text",
609
754
  });
610
755
 
@@ -616,8 +761,20 @@ const task = new TextGenerationTask({
616
761
  Monitor AI task progress:
617
762
 
618
763
  ```typescript
764
+ import { TextGenerationTask } from "@workglow/ai";
765
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
766
+
767
+ const gpt2ModelConfig = {
768
+ provider: HF_TRANSFORMERS_ONNX,
769
+ provider_config: {
770
+ pipeline: "text-generation",
771
+ model_path: "Xenova/gpt2",
772
+ dtype: "q8",
773
+ },
774
+ } as const;
775
+
619
776
  const task = new TextGenerationTask({
620
- model: "onnx:Xenova/gpt2:q8",
777
+ model: gpt2ModelConfig,
621
778
  prompt: "Long generation task...",
622
779
  });
623
780
 
@@ -633,10 +790,22 @@ const result = await task.run();
633
790
  All AI tasks support cancellation via AbortSignal:
634
791
 
635
792
  ```typescript
793
+ import { TextGenerationTask } from "@workglow/ai";
794
+ import { HF_TRANSFORMERS_ONNX } from "@workglow/ai-provider/hf-transformers";
795
+
796
+ const gpt2ModelConfig = {
797
+ provider: HF_TRANSFORMERS_ONNX,
798
+ provider_config: {
799
+ pipeline: "text-generation",
800
+ model_path: "Xenova/gpt2",
801
+ dtype: "q8",
802
+ },
803
+ } as const;
804
+
636
805
  const controller = new AbortController();
637
806
 
638
807
  const task = new TextGenerationTask({
639
- model: "onnx:Xenova/gpt2:q8",
808
+ model: gpt2ModelConfig,
640
809
  prompt: "Generate text...",
641
810
  });
642
811
 
@@ -667,7 +836,9 @@ const modelRepo = new IndexedDbModelRepository();
667
836
 
668
837
  ```typescript
669
838
  import { SqliteModelRepository } from "@workglow/ai";
839
+ import { Sqlite } from "@workglow/storage/sqlite";
670
840
 
841
+ await Sqlite.init();
671
842
  // Use SQLite for server-side storage
672
843
  const modelRepo = new SqliteModelRepository("./models.db");
673
844
  ```
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./common";
7
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,UAAU,CAAC"}