@workglow/ai 0.0.71 → 0.0.73

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 (41) hide show
  1. package/dist/browser.js +1632 -283
  2. package/dist/browser.js.map +20 -8
  3. package/dist/bun.js +1632 -283
  4. package/dist/bun.js.map +20 -8
  5. package/dist/node.js +1632 -283
  6. package/dist/node.js.map +20 -8
  7. package/dist/task/BackgroundRemovalTask.d.ts +351 -0
  8. package/dist/task/BackgroundRemovalTask.d.ts.map +1 -0
  9. package/dist/task/FaceDetectorTask.d.ts +520 -0
  10. package/dist/task/FaceDetectorTask.d.ts.map +1 -0
  11. package/dist/task/FaceLandmarkerTask.d.ts +549 -0
  12. package/dist/task/FaceLandmarkerTask.d.ts.map +1 -0
  13. package/dist/task/GestureRecognizerTask.d.ts +629 -0
  14. package/dist/task/GestureRecognizerTask.d.ts.map +1 -0
  15. package/dist/task/HandLandmarkerTask.d.ts +576 -0
  16. package/dist/task/HandLandmarkerTask.d.ts.map +1 -0
  17. package/dist/task/ImageClassificationTask.d.ts +410 -0
  18. package/dist/task/ImageClassificationTask.d.ts.map +1 -0
  19. package/dist/task/ImageEmbeddingTask.d.ts +503 -0
  20. package/dist/task/ImageEmbeddingTask.d.ts.map +1 -0
  21. package/dist/task/ImageSegmentationTask.d.ts +423 -0
  22. package/dist/task/ImageSegmentationTask.d.ts.map +1 -0
  23. package/dist/task/ImageToTextTask.d.ts +355 -0
  24. package/dist/task/ImageToTextTask.d.ts.map +1 -0
  25. package/dist/task/ObjectDetectionTask.d.ts +476 -0
  26. package/dist/task/ObjectDetectionTask.d.ts.map +1 -0
  27. package/dist/task/PoseLandmarkerTask.d.ts +637 -0
  28. package/dist/task/PoseLandmarkerTask.d.ts.map +1 -0
  29. package/dist/task/{TextClassifierTask.d.ts → TextClassificationTask.d.ts} +23 -12
  30. package/dist/task/TextClassificationTask.d.ts.map +1 -0
  31. package/dist/task/TextFillMaskTask.d.ts.map +1 -1
  32. package/dist/task/TextNamedEntityRecognitionTask.d.ts.map +1 -1
  33. package/dist/task/base/AiTask.d.ts.map +1 -1
  34. package/dist/task/base/AiTaskSchemas.d.ts +153 -0
  35. package/dist/task/base/AiTaskSchemas.d.ts.map +1 -1
  36. package/dist/task/base/AiVisionTask.d.ts +33 -0
  37. package/dist/task/base/AiVisionTask.d.ts.map +1 -0
  38. package/dist/task/index.d.ts +12 -1
  39. package/dist/task/index.d.ts.map +1 -1
  40. package/package.json +9 -9
  41. package/dist/task/TextClassifierTask.d.ts.map +0 -1
package/dist/node.js CHANGED
@@ -446,125 +446,9 @@ class DocumentConverterText extends DocumentConverter {
446
446
  return new Document(this.text, this.metadata);
447
447
  }
448
448
  }
449
- // src/task/base/AiTask.ts
450
- import {
451
- JobQueueTask,
452
- TaskConfigurationError
453
- } from "@workglow/task-graph";
454
- function schemaFormat(schema) {
455
- return typeof schema === "object" && schema !== null && "format" in schema ? schema.format : undefined;
456
- }
449
+ // src/task/BackgroundRemovalTask.ts
450
+ import { CreateWorkflow, TaskRegistry, Workflow } from "@workglow/task-graph";
457
451
 
458
- class AiTask extends JobQueueTask {
459
- static type = "AiTask";
460
- modelCache;
461
- constructor(input = {}, config = {}) {
462
- config.name ||= `${new.target.type || new.target.name}${input.model ? " with model " + input.model : ""}`;
463
- super(input, config);
464
- }
465
- async getJobInput(input) {
466
- if (typeof input.model !== "string") {
467
- console.error("AiTask: Model is not a string", input);
468
- throw new TaskConfigurationError("AiTask: Model is not a string, only create job for single model tasks");
469
- }
470
- const runtype = this.constructor.runtype ?? this.constructor.type;
471
- const model = await this.getModelForInput(input);
472
- return {
473
- taskType: runtype,
474
- aiProvider: model.provider,
475
- taskInput: input
476
- };
477
- }
478
- async createJob(input, queueName) {
479
- const jobInput = await this.getJobInput(input);
480
- const resolvedQueueName = queueName ?? await this.getDefaultQueueName(input);
481
- if (!resolvedQueueName) {
482
- throw new TaskConfigurationError("JobQueueTask: Unable to determine queue for AI provider");
483
- }
484
- const job = new AiJob({
485
- queueName: resolvedQueueName,
486
- jobRunId: this.config.runnerId,
487
- input: jobInput
488
- });
489
- return job;
490
- }
491
- async getModelForInput(input) {
492
- const modelname = input.model;
493
- if (!modelname)
494
- throw new TaskConfigurationError("AiTask: No model name found");
495
- if (this.modelCache && this.modelCache.name === modelname) {
496
- return this.modelCache.model;
497
- }
498
- const model = await getGlobalModelRepository().findByName(modelname);
499
- if (!model) {
500
- throw new TaskConfigurationError(`JobQueueTask: No model ${modelname} found`);
501
- }
502
- this.modelCache = { name: modelname, model };
503
- return model;
504
- }
505
- async getDefaultQueueName(input) {
506
- if (typeof input.model === "string") {
507
- const model = await this.getModelForInput(input);
508
- return model.provider;
509
- }
510
- return;
511
- }
512
- async validateInput(input) {
513
- const inputSchema = this.inputSchema();
514
- if (typeof inputSchema === "boolean") {
515
- if (inputSchema === false) {
516
- throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);
517
- }
518
- return true;
519
- }
520
- const modelTaskProperties = Object.entries(inputSchema.properties || {}).filter(([key, schema]) => schemaFormat(schema)?.startsWith("model:"));
521
- if (modelTaskProperties.length > 0) {
522
- const taskModels = await getGlobalModelRepository().findModelsByTask(this.type);
523
- for (const [key, propSchema] of modelTaskProperties) {
524
- let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];
525
- for (const model of requestedModels) {
526
- const foundModel = taskModels?.find((m) => m.model_id === model);
527
- if (!foundModel) {
528
- throw new TaskConfigurationError(`AiTask: Missing model for '${key}' named '${model}' for task '${this.type}'`);
529
- }
530
- }
531
- }
532
- }
533
- const modelPlainProperties = Object.entries(inputSchema.properties || {}).filter(([key, schema]) => schemaFormat(schema) === "model");
534
- if (modelPlainProperties.length > 0) {
535
- for (const [key, propSchema] of modelPlainProperties) {
536
- let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];
537
- for (const model of requestedModels) {
538
- const foundModel = await getGlobalModelRepository().findByName(model);
539
- if (!foundModel) {
540
- throw new TaskConfigurationError(`AiTask: Missing model for "${key}" named "${model}"`);
541
- }
542
- }
543
- }
544
- }
545
- return super.validateInput(input);
546
- }
547
- async narrowInput(input) {
548
- const inputSchema = this.inputSchema();
549
- if (typeof inputSchema === "boolean") {
550
- if (inputSchema === false) {
551
- throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);
552
- }
553
- return input;
554
- }
555
- const modelTaskProperties = Object.entries(inputSchema.properties || {}).filter(([key, schema]) => schemaFormat(schema)?.startsWith("model:"));
556
- if (modelTaskProperties.length > 0) {
557
- const taskModels = await getGlobalModelRepository().findModelsByTask(this.type);
558
- for (const [key, propSchema] of modelTaskProperties) {
559
- let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];
560
- let usingModels = requestedModels.filter((model) => taskModels?.find((m) => m.model_id === model));
561
- usingModels = usingModels.length > 1 ? usingModels : usingModels[0];
562
- input[key] = usingModels;
563
- }
564
- }
565
- return input;
566
- }
567
- }
568
452
  // src/task/base/AiTaskSchemas.ts
569
453
  import {
570
454
  FromSchemaDefaultOptions
@@ -692,134 +576,1541 @@ var TypeReplicateArray = (type, annotations = {}) => ({
692
576
  ...annotations,
693
577
  "x-replicate": true
694
578
  });
695
- // src/task/DocumentSplitterTask.ts
579
+ var TypeImageInput = {
580
+ oneOf: [
581
+ {
582
+ type: "string",
583
+ title: "Image Data",
584
+ description: "Image as data-uri"
585
+ },
586
+ {
587
+ type: "object",
588
+ additionalProperties: false,
589
+ properties: {
590
+ data: {
591
+ oneOf: [
592
+ {
593
+ type: "object",
594
+ format: "image:ImageBitmap",
595
+ title: "ImageBitmap"
596
+ },
597
+ {
598
+ type: "object",
599
+ format: "image:OffscreenCanvas",
600
+ title: "OffscreenCanvas"
601
+ },
602
+ {
603
+ type: "object",
604
+ format: "image:VideoFrame",
605
+ title: "VideoFrame"
606
+ },
607
+ {
608
+ type: "object",
609
+ properties: {
610
+ data: {
611
+ type: "array",
612
+ items: { type: "number", format: "Uint8Clamped" },
613
+ format: "Uint8ClampedArray",
614
+ title: "Data",
615
+ description: "Data of the image"
616
+ },
617
+ width: { type: "number", title: "Width", description: "Width of the image" },
618
+ height: { type: "number", title: "Height", description: "Height of the image" },
619
+ channels: {
620
+ type: "number",
621
+ title: "Channels",
622
+ description: "Channels of the image"
623
+ },
624
+ rawChannels: {
625
+ type: "number",
626
+ title: "Raw Channels",
627
+ description: "Raw channels of the image"
628
+ }
629
+ },
630
+ additionalProperties: false,
631
+ required: ["data", "width", "height", "channels"],
632
+ format: "image:ImageBinary",
633
+ title: "ImageBinary"
634
+ }
635
+ ]
636
+ },
637
+ width: { type: "number", title: "Width", description: "Width of the image" },
638
+ height: { type: "number", title: "Height", description: "Height of the image" },
639
+ channels: {
640
+ type: "number",
641
+ title: "Channels",
642
+ description: "Channels of the image",
643
+ minimum: 1,
644
+ maximum: 4
645
+ }
646
+ },
647
+ required: ["data", "width", "height", "channels"]
648
+ }
649
+ ],
650
+ title: "Image",
651
+ description: "Image as URL or base64-encoded data"
652
+ };
653
+ var TypeAudioInput = {
654
+ type: "string",
655
+ title: "Audio",
656
+ description: "Audio as data-uri, or Blob"
657
+ };
658
+ var TypeBoundingBox = {
659
+ type: "object",
660
+ properties: {
661
+ x: { type: "number", title: "X coordinate", description: "Left edge of the bounding box" },
662
+ y: { type: "number", title: "Y coordinate", description: "Top edge of the bounding box" },
663
+ width: { type: "number", title: "Width", description: "Width of the bounding box" },
664
+ height: { type: "number", title: "Height", description: "Height of the bounding box" }
665
+ },
666
+ required: ["x", "y", "width", "height"],
667
+ additionalProperties: false,
668
+ title: "Bounding Box",
669
+ description: "Bounding box coordinates"
670
+ };
671
+ var TypeCategory = {
672
+ type: "object",
673
+ properties: {
674
+ label: { type: "string", title: "Label", description: "Category label" },
675
+ score: {
676
+ type: "number",
677
+ title: "Confidence Score",
678
+ description: "Confidence score between 0 and 1",
679
+ minimum: 0,
680
+ maximum: 1
681
+ }
682
+ },
683
+ required: ["label", "score"],
684
+ additionalProperties: false,
685
+ title: "Category",
686
+ description: "Classification category with label and score"
687
+ };
688
+
689
+ // src/task/base/AiVisionTask.ts
690
+ import { convertImageDataToUseableForm } from "@workglow/util";
691
+
692
+ // src/task/base/AiTask.ts
696
693
  import {
697
- CreateWorkflow,
698
- Task,
699
- TaskRegistry,
700
- Workflow
694
+ JobQueueTask,
695
+ TaskConfigurationError
701
696
  } from "@workglow/task-graph";
702
- var inputSchema = {
697
+ function schemaFormat(schema) {
698
+ return typeof schema === "object" && schema !== null && "format" in schema ? schema.format : undefined;
699
+ }
700
+
701
+ class AiTask extends JobQueueTask {
702
+ static type = "AiTask";
703
+ modelCache;
704
+ constructor(input = {}, config = {}) {
705
+ config.name ||= `${new.target.type || new.target.name}${input.model ? " with model " + input.model : ""}`;
706
+ super(input, config);
707
+ }
708
+ async getJobInput(input) {
709
+ if (typeof input.model !== "string") {
710
+ console.error("AiTask: Model is not a string", input);
711
+ throw new TaskConfigurationError("AiTask: Model is not a string, only create job for single model tasks");
712
+ }
713
+ const runtype = this.constructor.runtype ?? this.constructor.type;
714
+ const model = await this.getModelForInput(input);
715
+ return {
716
+ taskType: runtype,
717
+ aiProvider: model.provider,
718
+ taskInput: input
719
+ };
720
+ }
721
+ async createJob(input, queueName) {
722
+ const jobInput = await this.getJobInput(input);
723
+ const resolvedQueueName = queueName ?? await this.getDefaultQueueName(input);
724
+ if (!resolvedQueueName) {
725
+ throw new TaskConfigurationError("JobQueueTask: Unable to determine queue for AI provider");
726
+ }
727
+ const job = new AiJob({
728
+ queueName: resolvedQueueName,
729
+ jobRunId: this.config.runnerId,
730
+ input: jobInput
731
+ });
732
+ return job;
733
+ }
734
+ async getModelForInput(input) {
735
+ const modelname = input.model;
736
+ if (!modelname)
737
+ throw new TaskConfigurationError("AiTask: No model name found");
738
+ if (this.modelCache && this.modelCache.name === modelname) {
739
+ return this.modelCache.model;
740
+ }
741
+ const model = await getGlobalModelRepository().findByName(modelname);
742
+ if (!model) {
743
+ throw new TaskConfigurationError(`JobQueueTask: No model ${modelname} found`);
744
+ }
745
+ this.modelCache = { name: modelname, model };
746
+ return model;
747
+ }
748
+ async getDefaultQueueName(input) {
749
+ if (typeof input.model === "string") {
750
+ const model = await this.getModelForInput(input);
751
+ return model.provider;
752
+ }
753
+ return;
754
+ }
755
+ async validateInput(input) {
756
+ const inputSchema = this.inputSchema();
757
+ if (typeof inputSchema === "boolean") {
758
+ if (inputSchema === false) {
759
+ throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);
760
+ }
761
+ return true;
762
+ }
763
+ const modelTaskProperties = Object.entries(inputSchema.properties || {}).filter(([key, schema]) => schemaFormat(schema)?.startsWith("model:"));
764
+ if (modelTaskProperties.length > 0) {
765
+ const taskModels = await getGlobalModelRepository().findModelsByTask(this.type);
766
+ for (const [key, propSchema] of modelTaskProperties) {
767
+ let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];
768
+ for (const model of requestedModels) {
769
+ const foundModel = taskModels?.find((m) => m.model_id === model);
770
+ if (!foundModel) {
771
+ throw new TaskConfigurationError(`AiTask: Missing model for '${key}' named '${model}' for task '${this.type}'`);
772
+ }
773
+ }
774
+ }
775
+ }
776
+ const modelPlainProperties = Object.entries(inputSchema.properties || {}).filter(([key, schema]) => schemaFormat(schema) === "model");
777
+ if (modelPlainProperties.length > 0) {
778
+ for (const [key, propSchema] of modelPlainProperties) {
779
+ let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];
780
+ for (const model of requestedModels) {
781
+ const foundModel = await getGlobalModelRepository().findByName(model);
782
+ if (!foundModel) {
783
+ throw new TaskConfigurationError(`AiTask: Missing model for "${key}" named "${model}"`);
784
+ }
785
+ }
786
+ }
787
+ }
788
+ return super.validateInput(input);
789
+ }
790
+ async narrowInput(input) {
791
+ const inputSchema = this.inputSchema();
792
+ if (typeof inputSchema === "boolean") {
793
+ if (inputSchema === false) {
794
+ throw new TaskConfigurationError(`AiTask: Input schema is 'false' and accepts no inputs`);
795
+ }
796
+ return input;
797
+ }
798
+ const modelTaskProperties = Object.entries(inputSchema.properties || {}).filter(([key, schema]) => schemaFormat(schema)?.startsWith("model:"));
799
+ if (modelTaskProperties.length > 0) {
800
+ const taskModels = await getGlobalModelRepository().findModelsByTask(this.type);
801
+ for (const [key, propSchema] of modelTaskProperties) {
802
+ let requestedModels = Array.isArray(input[key]) ? input[key] : [input[key]];
803
+ let usingModels = requestedModels.filter((model) => taskModels?.find((m) => m.model_id === model));
804
+ usingModels = usingModels.length > 1 ? usingModels : usingModels[0];
805
+ input[key] = usingModels;
806
+ }
807
+ }
808
+ return input;
809
+ }
810
+ }
811
+
812
+ // src/task/base/AiVisionTask.ts
813
+ class AiVisionTask extends AiTask {
814
+ static type = "AiVisionTask";
815
+ async getJobInput(input) {
816
+ const jobInput = await super.getJobInput(input);
817
+ const registeredQueue = await this.resolveQueue(input);
818
+ const queueName = registeredQueue?.server.queueName;
819
+ const supports = ["Blob"];
820
+ if (input.image) {
821
+ if ("OffscreenCanvas" in globalThis) {
822
+ supports.push("OffscreenCanvas");
823
+ } else if (queueName === "TENSORFLOW_MEDIAPIPE" && "ImageBitmap" in globalThis) {
824
+ supports.push("ImageBitmap");
825
+ } else if (queueName === "TENSORFLOW_MEDIAPIPE" && "VideoFrame" in globalThis) {
826
+ supports.push("VideoFrame");
827
+ }
828
+ const image = await convertImageDataToUseableForm(input.image, supports);
829
+ jobInput.taskInput.image = image;
830
+ }
831
+ return jobInput;
832
+ }
833
+ }
834
+
835
+ // src/task/BackgroundRemovalTask.ts
836
+ var modelSchema = TypeReplicateArray(TypeModel("model:BackgroundRemovalTask"));
837
+ var processedImageSchema = {
838
+ type: "string",
839
+ contentEncoding: "base64",
840
+ contentMediaType: "image/png",
841
+ title: "Image",
842
+ description: "Base64-encoded PNG image with transparent background"
843
+ };
844
+ var BackgroundRemovalInputSchema = {
845
+ type: "object",
846
+ properties: {
847
+ image: TypeReplicateArray(TypeImageInput),
848
+ model: modelSchema
849
+ },
850
+ required: ["image", "model"],
851
+ additionalProperties: false
852
+ };
853
+ var BackgroundRemovalOutputSchema = {
854
+ type: "object",
855
+ properties: {
856
+ image: {
857
+ oneOf: [processedImageSchema, { type: "array", items: processedImageSchema }],
858
+ title: processedImageSchema.title,
859
+ description: processedImageSchema.description
860
+ }
861
+ },
862
+ required: ["image"],
863
+ additionalProperties: false
864
+ };
865
+
866
+ class BackgroundRemovalTask extends AiVisionTask {
867
+ static type = "BackgroundRemovalTask";
868
+ static category = "AI Vision Model";
869
+ static title = "Background Removal";
870
+ static description = "Removes backgrounds from images, producing images with transparent backgrounds";
871
+ static inputSchema() {
872
+ return BackgroundRemovalInputSchema;
873
+ }
874
+ static outputSchema() {
875
+ return BackgroundRemovalOutputSchema;
876
+ }
877
+ }
878
+ TaskRegistry.registerTask(BackgroundRemovalTask);
879
+ var BackgroundRemoval = (input, config) => {
880
+ return new BackgroundRemovalTask(input, config).run();
881
+ };
882
+ Workflow.prototype.BackgroundRemoval = CreateWorkflow(BackgroundRemovalTask);
883
+ // src/task/DocumentSplitterTask.ts
884
+ import {
885
+ CreateWorkflow as CreateWorkflow2,
886
+ Task,
887
+ TaskRegistry as TaskRegistry2,
888
+ Workflow as Workflow2
889
+ } from "@workglow/task-graph";
890
+ var inputSchema = {
891
+ type: "object",
892
+ properties: {
893
+ parser: {
894
+ type: "string",
895
+ enum: ["txt", "md"],
896
+ title: "Document Kind",
897
+ description: "The kind of document (txt or md)"
898
+ }
899
+ },
900
+ required: ["parser"],
901
+ additionalProperties: false
902
+ };
903
+ var outputSchema = {
904
+ type: "object",
905
+ properties: {
906
+ texts: {
907
+ type: "array",
908
+ items: { type: "string" },
909
+ title: "Text Chunks",
910
+ description: "The text chunks of the document"
911
+ }
912
+ },
913
+ required: ["texts"],
914
+ additionalProperties: false
915
+ };
916
+
917
+ class DocumentSplitterTask extends Task {
918
+ static type = "DocumentSplitterTask";
919
+ static category = "Document";
920
+ static title = "Document Splitter";
921
+ static description = "Splits documents into text chunks for processing";
922
+ static inputSchema() {
923
+ return inputSchema;
924
+ }
925
+ static outputSchema() {
926
+ return outputSchema;
927
+ }
928
+ flattenFragmentsToTexts(item) {
929
+ if (item instanceof Document) {
930
+ const texts = [];
931
+ item.fragments.forEach((fragment) => {
932
+ texts.push(...this.flattenFragmentsToTexts(fragment));
933
+ });
934
+ return texts;
935
+ } else {
936
+ return [item.content];
937
+ }
938
+ }
939
+ async executeReactive() {
940
+ return { texts: this.flattenFragmentsToTexts(this.runInputData.file) };
941
+ }
942
+ }
943
+ TaskRegistry2.registerTask(DocumentSplitterTask);
944
+ var DocumentSplitter = (input) => {
945
+ return new DocumentSplitterTask(input).run();
946
+ };
947
+ Workflow2.prototype.DocumentSplitter = CreateWorkflow2(DocumentSplitterTask);
948
+ // src/task/DownloadModelTask.ts
949
+ import { CreateWorkflow as CreateWorkflow3, TaskRegistry as TaskRegistry3, Workflow as Workflow3 } from "@workglow/task-graph";
950
+ var modelSchema2 = TypeReplicateArray(TypeModel("model"));
951
+ var DownloadModelInputSchema = {
952
+ type: "object",
953
+ properties: {
954
+ model: modelSchema2
955
+ },
956
+ required: ["model"],
957
+ additionalProperties: false
958
+ };
959
+ var DownloadModelOutputSchema = {
960
+ type: "object",
961
+ properties: {
962
+ model: modelSchema2
963
+ },
964
+ required: ["model"],
965
+ additionalProperties: false
966
+ };
967
+
968
+ class DownloadModelTask extends AiTask {
969
+ static type = "DownloadModelTask";
970
+ static category = "AI Text Model";
971
+ static title = "Download Model";
972
+ static description = "Downloads and caches AI models locally with progress tracking";
973
+ static inputSchema() {
974
+ return DownloadModelInputSchema;
975
+ }
976
+ static outputSchema() {
977
+ return DownloadModelOutputSchema;
978
+ }
979
+ static cacheable = false;
980
+ files = [];
981
+ constructor(input, config = {}) {
982
+ super(input, config);
983
+ this.on("progress", this.processProgress.bind(this));
984
+ this.on("start", () => {
985
+ this.files = [];
986
+ });
987
+ }
988
+ processProgress(progress, message = "", details) {
989
+ if (details?.file) {
990
+ const file = this.files.find((f) => f.file === details.file);
991
+ if (file) {
992
+ file.progress = details.progress;
993
+ } else {
994
+ this.files.push({ file: details.file, progress: details.progress });
995
+ }
996
+ this.progress = this.files.reduce((acc, f) => acc + f.progress, 0) / this.files.length;
997
+ } else {
998
+ this.progress = progress;
999
+ }
1000
+ }
1001
+ }
1002
+ TaskRegistry3.registerTask(DownloadModelTask);
1003
+ var DownloadModel = (input, config) => {
1004
+ return new DownloadModelTask(input, config).run();
1005
+ };
1006
+ Workflow3.prototype.DownloadModel = CreateWorkflow3(DownloadModelTask);
1007
+ // src/task/FaceDetectorTask.ts
1008
+ import { CreateWorkflow as CreateWorkflow4, TaskRegistry as TaskRegistry4, Workflow as Workflow4 } from "@workglow/task-graph";
1009
+ var modelSchema3 = TypeReplicateArray(TypeModel("model:FaceDetectorTask"));
1010
+ var TypeBoundingBox2 = {
1011
+ type: "object",
1012
+ properties: {
1013
+ x: {
1014
+ type: "number",
1015
+ title: "X Coordinate",
1016
+ description: "X coordinate of the top-left corner"
1017
+ },
1018
+ y: {
1019
+ type: "number",
1020
+ title: "Y Coordinate",
1021
+ description: "Y coordinate of the top-left corner"
1022
+ },
1023
+ width: {
1024
+ type: "number",
1025
+ title: "Width",
1026
+ description: "Width of the bounding box"
1027
+ },
1028
+ height: {
1029
+ type: "number",
1030
+ title: "Height",
1031
+ description: "Height of the bounding box"
1032
+ }
1033
+ },
1034
+ required: ["x", "y", "width", "height"],
1035
+ additionalProperties: false
1036
+ };
1037
+ var TypeKeypoint = {
1038
+ type: "object",
1039
+ properties: {
1040
+ x: {
1041
+ type: "number",
1042
+ title: "X Coordinate",
1043
+ description: "X coordinate normalized to [0.0, 1.0]"
1044
+ },
1045
+ y: {
1046
+ type: "number",
1047
+ title: "Y Coordinate",
1048
+ description: "Y coordinate normalized to [0.0, 1.0]"
1049
+ },
1050
+ label: {
1051
+ type: "string",
1052
+ title: "Keypoint Label",
1053
+ description: "Label for the keypoint (e.g., 'leftEye', 'rightEye', 'noseTip', etc.)"
1054
+ }
1055
+ },
1056
+ required: ["x", "y"],
1057
+ additionalProperties: false
1058
+ };
1059
+ var TypeFaceDetection = {
1060
+ type: "object",
1061
+ properties: {
1062
+ box: TypeBoundingBox2,
1063
+ keypoints: {
1064
+ type: "array",
1065
+ items: TypeKeypoint,
1066
+ title: "Keypoints",
1067
+ description: "Facial keypoints (left eye, right eye, nose tip, mouth, left/right tragion)"
1068
+ },
1069
+ score: {
1070
+ type: "number",
1071
+ title: "Confidence Score",
1072
+ description: "Confidence score for the face detection"
1073
+ }
1074
+ },
1075
+ required: ["box", "keypoints", "score"],
1076
+ additionalProperties: false
1077
+ };
1078
+ var FaceDetectorInputSchema = {
1079
+ type: "object",
1080
+ properties: {
1081
+ image: TypeReplicateArray(TypeImageInput),
1082
+ model: modelSchema3,
1083
+ minDetectionConfidence: {
1084
+ type: "number",
1085
+ minimum: 0,
1086
+ maximum: 1,
1087
+ default: 0.5,
1088
+ title: "Min Detection Confidence",
1089
+ description: "Minimum confidence score for face detection",
1090
+ "x-ui-group": "Configuration"
1091
+ },
1092
+ minSuppressionThreshold: {
1093
+ type: "number",
1094
+ minimum: 0,
1095
+ maximum: 1,
1096
+ default: 0.3,
1097
+ title: "Min Suppression Threshold",
1098
+ description: "Minimum non-maximum-suppression threshold for overlapping detections",
1099
+ "x-ui-group": "Configuration"
1100
+ }
1101
+ },
1102
+ required: ["image", "model"],
1103
+ additionalProperties: false
1104
+ };
1105
+ var FaceDetectorOutputSchema = {
1106
+ type: "object",
1107
+ properties: {
1108
+ faces: {
1109
+ oneOf: [
1110
+ { type: "array", items: TypeFaceDetection },
1111
+ { type: "array", items: { type: "array", items: TypeFaceDetection } }
1112
+ ],
1113
+ title: "Face Detections",
1114
+ description: "Detected faces with bounding boxes, keypoints, and confidence scores"
1115
+ }
1116
+ },
1117
+ required: ["faces"],
1118
+ additionalProperties: false
1119
+ };
1120
+
1121
+ class FaceDetectorTask extends AiVisionTask {
1122
+ static type = "FaceDetectorTask";
1123
+ static category = "AI Vision Model";
1124
+ static title = "Face Detector";
1125
+ static description = "Detects faces in images. Locates faces and identifies facial keypoints like eyes, nose, and mouth.";
1126
+ static inputSchema() {
1127
+ return FaceDetectorInputSchema;
1128
+ }
1129
+ static outputSchema() {
1130
+ return FaceDetectorOutputSchema;
1131
+ }
1132
+ }
1133
+ TaskRegistry4.registerTask(FaceDetectorTask);
1134
+ var FaceDetector = (input, config) => {
1135
+ return new FaceDetectorTask(input, config).run();
1136
+ };
1137
+ Workflow4.prototype.FaceDetector = CreateWorkflow4(FaceDetectorTask);
1138
+ // src/task/FaceLandmarkerTask.ts
1139
+ import { CreateWorkflow as CreateWorkflow5, TaskRegistry as TaskRegistry5, Workflow as Workflow5 } from "@workglow/task-graph";
1140
+ var modelSchema4 = TypeReplicateArray(TypeModel("model:FaceLandmarkerTask"));
1141
+ var TypeLandmark = {
1142
+ type: "object",
1143
+ properties: {
1144
+ x: {
1145
+ type: "number",
1146
+ title: "X Coordinate",
1147
+ description: "X coordinate normalized to [0.0, 1.0]"
1148
+ },
1149
+ y: {
1150
+ type: "number",
1151
+ title: "Y Coordinate",
1152
+ description: "Y coordinate normalized to [0.0, 1.0]"
1153
+ },
1154
+ z: {
1155
+ type: "number",
1156
+ title: "Z Coordinate",
1157
+ description: "Z coordinate (depth)"
1158
+ }
1159
+ },
1160
+ required: ["x", "y", "z"],
1161
+ additionalProperties: false
1162
+ };
1163
+ var TypeBlendshape = {
1164
+ type: "object",
1165
+ properties: {
1166
+ label: {
1167
+ type: "string",
1168
+ title: "Blendshape Label",
1169
+ description: "Name of the blendshape (e.g., 'browDownLeft', 'eyeBlinkRight', etc.)"
1170
+ },
1171
+ score: {
1172
+ type: "number",
1173
+ title: "Coefficient Value",
1174
+ description: "Coefficient value for this blendshape"
1175
+ }
1176
+ },
1177
+ required: ["label", "score"],
1178
+ additionalProperties: false
1179
+ };
1180
+ var TypeTransformationMatrix = {
1181
+ type: "array",
1182
+ items: { type: "number" },
1183
+ minItems: 16,
1184
+ maxItems: 16,
1185
+ title: "Transformation Matrix",
1186
+ description: "4x4 transformation matrix for face effects rendering"
1187
+ };
1188
+ var TypeFaceLandmarkerDetection = {
1189
+ type: "object",
1190
+ properties: {
1191
+ landmarks: {
1192
+ type: "array",
1193
+ items: TypeLandmark,
1194
+ title: "Landmarks",
1195
+ description: "478 facial landmarks in image coordinates"
1196
+ },
1197
+ blendshapes: {
1198
+ type: "array",
1199
+ items: TypeBlendshape,
1200
+ title: "Blendshapes",
1201
+ description: "52 blendshape coefficients representing facial expressions"
1202
+ },
1203
+ transformationMatrix: TypeTransformationMatrix
1204
+ },
1205
+ required: ["landmarks"],
1206
+ additionalProperties: false
1207
+ };
1208
+ var FaceLandmarkerInputSchema = {
1209
+ type: "object",
1210
+ properties: {
1211
+ image: TypeReplicateArray(TypeImageInput),
1212
+ model: modelSchema4,
1213
+ numFaces: {
1214
+ type: "number",
1215
+ minimum: 1,
1216
+ maximum: 10,
1217
+ default: 1,
1218
+ title: "Number of Faces",
1219
+ description: "The maximum number of faces to detect",
1220
+ "x-ui-group": "Configuration"
1221
+ },
1222
+ minFaceDetectionConfidence: {
1223
+ type: "number",
1224
+ minimum: 0,
1225
+ maximum: 1,
1226
+ default: 0.5,
1227
+ title: "Min Face Detection Confidence",
1228
+ description: "Minimum confidence score for face detection",
1229
+ "x-ui-group": "Configuration"
1230
+ },
1231
+ minFacePresenceConfidence: {
1232
+ type: "number",
1233
+ minimum: 0,
1234
+ maximum: 1,
1235
+ default: 0.5,
1236
+ title: "Min Face Presence Confidence",
1237
+ description: "Minimum confidence score for face presence",
1238
+ "x-ui-group": "Configuration"
1239
+ },
1240
+ minTrackingConfidence: {
1241
+ type: "number",
1242
+ minimum: 0,
1243
+ maximum: 1,
1244
+ default: 0.5,
1245
+ title: "Min Tracking Confidence",
1246
+ description: "Minimum confidence score for face tracking",
1247
+ "x-ui-group": "Configuration"
1248
+ },
1249
+ outputFaceBlendshapes: {
1250
+ type: "boolean",
1251
+ default: false,
1252
+ title: "Output Face Blendshapes",
1253
+ description: "Whether to output blendshape coefficients for facial expressions",
1254
+ "x-ui-group": "Configuration"
1255
+ },
1256
+ outputFacialTransformationMatrixes: {
1257
+ type: "boolean",
1258
+ default: false,
1259
+ title: "Output Facial Transformation Matrix",
1260
+ description: "Whether to output transformation matrix for effects rendering",
1261
+ "x-ui-group": "Configuration"
1262
+ }
1263
+ },
1264
+ required: ["image", "model"],
1265
+ additionalProperties: false
1266
+ };
1267
+ var FaceLandmarkerOutputSchema = {
1268
+ type: "object",
1269
+ properties: {
1270
+ faces: {
1271
+ oneOf: [
1272
+ { type: "array", items: TypeFaceLandmarkerDetection },
1273
+ { type: "array", items: { type: "array", items: TypeFaceLandmarkerDetection } }
1274
+ ],
1275
+ title: "Face Detections",
1276
+ description: "Detected faces with landmarks, blendshapes, and transformation matrices"
1277
+ }
1278
+ },
1279
+ required: ["faces"],
1280
+ additionalProperties: false
1281
+ };
1282
+
1283
+ class FaceLandmarkerTask extends AiVisionTask {
1284
+ static type = "FaceLandmarkerTask";
1285
+ static category = "AI Vision Model";
1286
+ static title = "Face Landmarker";
1287
+ static description = "Detects facial landmarks and expressions in images. Identifies 478 facial landmarks, blendshapes for expressions, and transformation matrices for AR effects.";
1288
+ static inputSchema() {
1289
+ return FaceLandmarkerInputSchema;
1290
+ }
1291
+ static outputSchema() {
1292
+ return FaceLandmarkerOutputSchema;
1293
+ }
1294
+ }
1295
+ TaskRegistry5.registerTask(FaceLandmarkerTask);
1296
+ var FaceLandmarker = (input, config) => {
1297
+ return new FaceLandmarkerTask(input, config).run();
1298
+ };
1299
+ Workflow5.prototype.FaceLandmarker = CreateWorkflow5(FaceLandmarkerTask);
1300
+ // src/task/GestureRecognizerTask.ts
1301
+ import { CreateWorkflow as CreateWorkflow6, TaskRegistry as TaskRegistry6, Workflow as Workflow6 } from "@workglow/task-graph";
1302
+ var modelSchema5 = TypeReplicateArray(TypeModel("model:GestureRecognizerTask"));
1303
+ var TypeLandmark2 = {
1304
+ type: "object",
1305
+ properties: {
1306
+ x: {
1307
+ type: "number",
1308
+ title: "X Coordinate",
1309
+ description: "X coordinate normalized to [0.0, 1.0]"
1310
+ },
1311
+ y: {
1312
+ type: "number",
1313
+ title: "Y Coordinate",
1314
+ description: "Y coordinate normalized to [0.0, 1.0]"
1315
+ },
1316
+ z: {
1317
+ type: "number",
1318
+ title: "Z Coordinate",
1319
+ description: "Z coordinate (depth)"
1320
+ }
1321
+ },
1322
+ required: ["x", "y", "z"],
1323
+ additionalProperties: false
1324
+ };
1325
+ var TypeGesture = {
1326
+ type: "object",
1327
+ properties: {
1328
+ label: {
1329
+ type: "string",
1330
+ title: "Gesture Label",
1331
+ description: "The recognized gesture (e.g., 'Thumb_Up', 'Victory', etc.)"
1332
+ },
1333
+ score: {
1334
+ type: "number",
1335
+ title: "Confidence Score",
1336
+ description: "Confidence score for the gesture"
1337
+ }
1338
+ },
1339
+ required: ["label", "score"],
1340
+ additionalProperties: false
1341
+ };
1342
+ var TypeHandedness = {
1343
+ type: "object",
1344
+ properties: {
1345
+ label: {
1346
+ type: "string",
1347
+ title: "Hand Label",
1348
+ description: "Whether the hand is 'Left' or 'Right'"
1349
+ },
1350
+ score: {
1351
+ type: "number",
1352
+ title: "Confidence Score",
1353
+ description: "Confidence score for the handedness classification"
1354
+ }
1355
+ },
1356
+ required: ["label", "score"],
1357
+ additionalProperties: false
1358
+ };
1359
+ var TypeHandGestureDetection = {
1360
+ type: "object",
1361
+ properties: {
1362
+ gestures: {
1363
+ type: "array",
1364
+ items: TypeGesture,
1365
+ title: "Gestures",
1366
+ description: "Recognized gestures for this hand"
1367
+ },
1368
+ handedness: {
1369
+ type: "array",
1370
+ items: TypeHandedness,
1371
+ title: "Handedness",
1372
+ description: "Handedness classification (left/right)"
1373
+ },
1374
+ landmarks: {
1375
+ type: "array",
1376
+ items: TypeLandmark2,
1377
+ title: "Landmarks",
1378
+ description: "21 hand landmarks in image coordinates"
1379
+ },
1380
+ worldLandmarks: {
1381
+ type: "array",
1382
+ items: TypeLandmark2,
1383
+ title: "World Landmarks",
1384
+ description: "21 hand landmarks in 3D world coordinates (meters)"
1385
+ }
1386
+ },
1387
+ required: ["gestures", "handedness", "landmarks", "worldLandmarks"],
1388
+ additionalProperties: false
1389
+ };
1390
+ var GestureRecognizerInputSchema = {
1391
+ type: "object",
1392
+ properties: {
1393
+ image: TypeReplicateArray(TypeImageInput),
1394
+ model: modelSchema5,
1395
+ numHands: {
1396
+ type: "number",
1397
+ minimum: 1,
1398
+ maximum: 10,
1399
+ default: 1,
1400
+ title: "Number of Hands",
1401
+ description: "The maximum number of hands to detect",
1402
+ "x-ui-group": "Configuration"
1403
+ },
1404
+ minHandDetectionConfidence: {
1405
+ type: "number",
1406
+ minimum: 0,
1407
+ maximum: 1,
1408
+ default: 0.5,
1409
+ title: "Min Hand Detection Confidence",
1410
+ description: "Minimum confidence score for hand detection",
1411
+ "x-ui-group": "Configuration"
1412
+ },
1413
+ minHandPresenceConfidence: {
1414
+ type: "number",
1415
+ minimum: 0,
1416
+ maximum: 1,
1417
+ default: 0.5,
1418
+ title: "Min Hand Presence Confidence",
1419
+ description: "Minimum confidence score for hand presence",
1420
+ "x-ui-group": "Configuration"
1421
+ },
1422
+ minTrackingConfidence: {
1423
+ type: "number",
1424
+ minimum: 0,
1425
+ maximum: 1,
1426
+ default: 0.5,
1427
+ title: "Min Tracking Confidence",
1428
+ description: "Minimum confidence score for hand tracking",
1429
+ "x-ui-group": "Configuration"
1430
+ }
1431
+ },
1432
+ required: ["image", "model"],
1433
+ additionalProperties: false
1434
+ };
1435
+ var GestureRecognizerOutputSchema = {
1436
+ type: "object",
1437
+ properties: {
1438
+ hands: {
1439
+ oneOf: [
1440
+ { type: "array", items: TypeHandGestureDetection },
1441
+ { type: "array", items: { type: "array", items: TypeHandGestureDetection } }
1442
+ ],
1443
+ title: "Hand Detections",
1444
+ description: "Detected hands with gestures, handedness, and landmarks"
1445
+ }
1446
+ },
1447
+ required: ["hands"],
1448
+ additionalProperties: false
1449
+ };
1450
+
1451
+ class GestureRecognizerTask extends AiVisionTask {
1452
+ static type = "GestureRecognizerTask";
1453
+ static category = "AI Vision Model";
1454
+ static title = "Gesture Recognizer";
1455
+ static description = "Recognizes hand gestures in images. Detects hand landmarks, identifies gestures (thumbs up, victory, etc.), and classifies handedness.";
1456
+ static inputSchema() {
1457
+ return GestureRecognizerInputSchema;
1458
+ }
1459
+ static outputSchema() {
1460
+ return GestureRecognizerOutputSchema;
1461
+ }
1462
+ }
1463
+ TaskRegistry6.registerTask(GestureRecognizerTask);
1464
+ var GestureRecognizer = (input, config) => {
1465
+ return new GestureRecognizerTask(input, config).run();
1466
+ };
1467
+ Workflow6.prototype.GestureRecognizer = CreateWorkflow6(GestureRecognizerTask);
1468
+ // src/task/HandLandmarkerTask.ts
1469
+ import { CreateWorkflow as CreateWorkflow7, TaskRegistry as TaskRegistry7, Workflow as Workflow7 } from "@workglow/task-graph";
1470
+ var modelSchema6 = TypeReplicateArray(TypeModel("model:HandLandmarkerTask"));
1471
+ var TypeLandmark3 = {
1472
+ type: "object",
1473
+ properties: {
1474
+ x: {
1475
+ type: "number",
1476
+ title: "X Coordinate",
1477
+ description: "X coordinate normalized to [0.0, 1.0]"
1478
+ },
1479
+ y: {
1480
+ type: "number",
1481
+ title: "Y Coordinate",
1482
+ description: "Y coordinate normalized to [0.0, 1.0]"
1483
+ },
1484
+ z: {
1485
+ type: "number",
1486
+ title: "Z Coordinate",
1487
+ description: "Z coordinate (depth)"
1488
+ }
1489
+ },
1490
+ required: ["x", "y", "z"],
1491
+ additionalProperties: false
1492
+ };
1493
+ var TypeHandedness2 = {
1494
+ type: "object",
1495
+ properties: {
1496
+ label: {
1497
+ type: "string",
1498
+ title: "Hand Label",
1499
+ description: "Whether the hand is 'Left' or 'Right'"
1500
+ },
1501
+ score: {
1502
+ type: "number",
1503
+ title: "Confidence Score",
1504
+ description: "Confidence score for the handedness classification"
1505
+ }
1506
+ },
1507
+ required: ["label", "score"],
1508
+ additionalProperties: false
1509
+ };
1510
+ var TypeHandDetection = {
1511
+ type: "object",
1512
+ properties: {
1513
+ handedness: {
1514
+ type: "array",
1515
+ items: TypeHandedness2,
1516
+ title: "Handedness",
1517
+ description: "Handedness classification (left/right)"
1518
+ },
1519
+ landmarks: {
1520
+ type: "array",
1521
+ items: TypeLandmark3,
1522
+ title: "Landmarks",
1523
+ description: "21 hand landmarks in image coordinates"
1524
+ },
1525
+ worldLandmarks: {
1526
+ type: "array",
1527
+ items: TypeLandmark3,
1528
+ title: "World Landmarks",
1529
+ description: "21 hand landmarks in 3D world coordinates (meters)"
1530
+ }
1531
+ },
1532
+ required: ["handedness", "landmarks", "worldLandmarks"],
1533
+ additionalProperties: false
1534
+ };
1535
+ var HandLandmarkerInputSchema = {
1536
+ type: "object",
1537
+ properties: {
1538
+ image: TypeReplicateArray(TypeImageInput),
1539
+ model: modelSchema6,
1540
+ numHands: {
1541
+ type: "number",
1542
+ minimum: 1,
1543
+ maximum: 10,
1544
+ default: 1,
1545
+ title: "Number of Hands",
1546
+ description: "The maximum number of hands to detect",
1547
+ "x-ui-group": "Configuration"
1548
+ },
1549
+ minHandDetectionConfidence: {
1550
+ type: "number",
1551
+ minimum: 0,
1552
+ maximum: 1,
1553
+ default: 0.5,
1554
+ title: "Min Hand Detection Confidence",
1555
+ description: "Minimum confidence score for hand detection",
1556
+ "x-ui-group": "Configuration"
1557
+ },
1558
+ minHandPresenceConfidence: {
1559
+ type: "number",
1560
+ minimum: 0,
1561
+ maximum: 1,
1562
+ default: 0.5,
1563
+ title: "Min Hand Presence Confidence",
1564
+ description: "Minimum confidence score for hand presence",
1565
+ "x-ui-group": "Configuration"
1566
+ },
1567
+ minTrackingConfidence: {
1568
+ type: "number",
1569
+ minimum: 0,
1570
+ maximum: 1,
1571
+ default: 0.5,
1572
+ title: "Min Tracking Confidence",
1573
+ description: "Minimum confidence score for hand tracking",
1574
+ "x-ui-group": "Configuration"
1575
+ }
1576
+ },
1577
+ required: ["image", "model"],
1578
+ additionalProperties: false
1579
+ };
1580
+ var HandLandmarkerOutputSchema = {
1581
+ type: "object",
1582
+ properties: {
1583
+ hands: {
1584
+ oneOf: [
1585
+ { type: "array", items: TypeHandDetection },
1586
+ { type: "array", items: { type: "array", items: TypeHandDetection } }
1587
+ ],
1588
+ title: "Hand Detections",
1589
+ description: "Detected hands with handedness and landmarks"
1590
+ }
1591
+ },
1592
+ required: ["hands"],
1593
+ additionalProperties: false
1594
+ };
1595
+
1596
+ class HandLandmarkerTask extends AiVisionTask {
1597
+ static type = "HandLandmarkerTask";
1598
+ static category = "AI Vision Model";
1599
+ static title = "Hand Landmarker";
1600
+ static description = "Detects hand landmarks in images. Identifies 21 hand landmarks and classifies left vs. right hands.";
1601
+ static inputSchema() {
1602
+ return HandLandmarkerInputSchema;
1603
+ }
1604
+ static outputSchema() {
1605
+ return HandLandmarkerOutputSchema;
1606
+ }
1607
+ }
1608
+ TaskRegistry7.registerTask(HandLandmarkerTask);
1609
+ var HandLandmarker = (input, config) => {
1610
+ return new HandLandmarkerTask(input, config).run();
1611
+ };
1612
+ Workflow7.prototype.HandLandmarker = CreateWorkflow7(HandLandmarkerTask);
1613
+ // src/task/ImageClassificationTask.ts
1614
+ import { CreateWorkflow as CreateWorkflow8, TaskRegistry as TaskRegistry8, Workflow as Workflow8 } from "@workglow/task-graph";
1615
+ var modelSchema7 = TypeReplicateArray(TypeModel("model:ImageClassificationTask"));
1616
+ var ImageClassificationInputSchema = {
1617
+ type: "object",
1618
+ properties: {
1619
+ image: TypeReplicateArray(TypeImageInput),
1620
+ model: modelSchema7,
1621
+ categories: {
1622
+ type: "array",
1623
+ items: {
1624
+ type: "string"
1625
+ },
1626
+ title: "Categories",
1627
+ description: "List of candidate categories (optional, if provided uses zero-shot classification)",
1628
+ "x-ui-group": "Configuration"
1629
+ },
1630
+ maxCategories: {
1631
+ type: "number",
1632
+ minimum: 1,
1633
+ maximum: 1000,
1634
+ default: 5,
1635
+ title: "Max Categories",
1636
+ description: "The maximum number of categories to return",
1637
+ "x-ui-group": "Configuration"
1638
+ }
1639
+ },
1640
+ required: ["image", "model"],
1641
+ additionalProperties: false
1642
+ };
1643
+ var ImageClassificationOutputSchema = {
1644
+ type: "object",
1645
+ properties: {
1646
+ categories: {
1647
+ oneOf: [
1648
+ { type: "array", items: TypeCategory },
1649
+ { type: "array", items: { type: "array", items: TypeCategory } }
1650
+ ],
1651
+ title: "Categories",
1652
+ description: "The classification categories with their scores"
1653
+ }
1654
+ },
1655
+ required: ["categories"],
1656
+ additionalProperties: false
1657
+ };
1658
+
1659
+ class ImageClassificationTask extends AiVisionTask {
1660
+ static type = "ImageClassificationTask";
1661
+ static category = "AI Vision Model";
1662
+ static title = "Image Classification";
1663
+ static description = "Classifies images into categories using vision models. Supports zero-shot classification when categories are provided.";
1664
+ static inputSchema() {
1665
+ return ImageClassificationInputSchema;
1666
+ }
1667
+ static outputSchema() {
1668
+ return ImageClassificationOutputSchema;
1669
+ }
1670
+ }
1671
+ TaskRegistry8.registerTask(ImageClassificationTask);
1672
+ var ImageClassification = (input, config) => {
1673
+ return new ImageClassificationTask(input, config).run();
1674
+ };
1675
+ Workflow8.prototype.ImageClassification = CreateWorkflow8(ImageClassificationTask);
1676
+ // src/task/ImageEmbeddingTask.ts
1677
+ import { CreateWorkflow as CreateWorkflow9, TaskRegistry as TaskRegistry9, Workflow as Workflow9 } from "@workglow/task-graph";
1678
+ var modelSchema8 = TypeReplicateArray(TypeModel("model:ImageEmbeddingTask"));
1679
+ var embeddingSchema = TypedArraySchema({
1680
+ title: "Embedding",
1681
+ description: "The image embedding vector"
1682
+ });
1683
+ var ImageEmbeddingInputSchema = {
1684
+ type: "object",
1685
+ properties: {
1686
+ image: TypeReplicateArray(TypeImageInput),
1687
+ model: modelSchema8
1688
+ },
1689
+ required: ["image", "model"],
1690
+ additionalProperties: false
1691
+ };
1692
+ var ImageEmbeddingOutputSchema = {
1693
+ type: "object",
1694
+ properties: {
1695
+ vector: {
1696
+ oneOf: [embeddingSchema, { type: "array", items: embeddingSchema }],
1697
+ title: "Embedding",
1698
+ description: "The image embedding vector"
1699
+ }
1700
+ },
1701
+ required: ["vector"],
1702
+ additionalProperties: false
1703
+ };
1704
+
1705
+ class ImageEmbeddingTask extends AiVisionTask {
1706
+ static type = "ImageEmbeddingTask";
1707
+ static category = "AI Vision Model";
1708
+ static title = "Image Embedding";
1709
+ static description = "Generates embeddings from images using vision models";
1710
+ static inputSchema() {
1711
+ return ImageEmbeddingInputSchema;
1712
+ }
1713
+ static outputSchema() {
1714
+ return ImageEmbeddingOutputSchema;
1715
+ }
1716
+ }
1717
+ TaskRegistry9.registerTask(ImageEmbeddingTask);
1718
+ var ImageEmbedding = (input, config) => {
1719
+ return new ImageEmbeddingTask(input, config).run();
1720
+ };
1721
+ Workflow9.prototype.ImageEmbedding = CreateWorkflow9(ImageEmbeddingTask);
1722
+ // src/task/ImageSegmentationTask.ts
1723
+ import { CreateWorkflow as CreateWorkflow10, TaskRegistry as TaskRegistry10, Workflow as Workflow10 } from "@workglow/task-graph";
1724
+ var modelSchema9 = TypeReplicateArray(TypeModel("model:ImageSegmentationTask"));
1725
+ var ImageSegmentationInputSchema = {
703
1726
  type: "object",
704
1727
  properties: {
705
- parser: {
1728
+ image: TypeReplicateArray(TypeImageInput),
1729
+ model: modelSchema9,
1730
+ threshold: {
1731
+ type: "number",
1732
+ title: "Threshold",
1733
+ description: "The threshold for filtering masks by score",
1734
+ minimum: 0,
1735
+ maximum: 1,
1736
+ default: 0.5,
1737
+ "x-ui-group": "Configuration"
1738
+ },
1739
+ maskThreshold: {
1740
+ type: "number",
1741
+ title: "Mask Threshold",
1742
+ description: "Threshold to use when turning predicted masks into binary values",
1743
+ minimum: 0,
1744
+ maximum: 1,
1745
+ default: 0.5,
1746
+ "x-ui-group": "Configuration"
1747
+ }
1748
+ },
1749
+ required: ["image", "model"],
1750
+ additionalProperties: false
1751
+ };
1752
+ var segmentationMaskSchema = {
1753
+ type: "object",
1754
+ properties: {
1755
+ label: {
706
1756
  type: "string",
707
- enum: ["txt", "md"],
708
- title: "Document Kind",
709
- description: "The kind of document (txt or md)"
1757
+ title: "Label",
1758
+ description: "The label of the segmented region"
1759
+ },
1760
+ score: {
1761
+ type: "number",
1762
+ title: "Score",
1763
+ description: "The confidence score for this segmentation",
1764
+ minimum: 0,
1765
+ maximum: 1
1766
+ },
1767
+ mask: {
1768
+ type: "object",
1769
+ format: "image",
1770
+ title: "Mask",
1771
+ description: "Mask image"
710
1772
  }
711
1773
  },
712
- required: ["parser"],
1774
+ required: ["label", "score", "mask"],
713
1775
  additionalProperties: false
714
1776
  };
715
- var outputSchema = {
1777
+ var ImageSegmentationOutputSchema = {
716
1778
  type: "object",
717
1779
  properties: {
718
- texts: {
719
- type: "array",
720
- items: { type: "string" },
721
- title: "Text Chunks",
722
- description: "The text chunks of the document"
1780
+ masks: {
1781
+ oneOf: [
1782
+ { type: "array", items: segmentationMaskSchema },
1783
+ { type: "array", items: { type: "array", items: segmentationMaskSchema } }
1784
+ ],
1785
+ title: "Segmentation Masks",
1786
+ description: "The segmented regions with their labels, scores, and masks"
723
1787
  }
724
1788
  },
725
- required: ["texts"],
1789
+ required: ["masks"],
726
1790
  additionalProperties: false
727
1791
  };
728
1792
 
729
- class DocumentSplitterTask extends Task {
730
- static type = "DocumentSplitterTask";
731
- static category = "Document";
732
- static title = "Document Splitter";
733
- static description = "Splits documents into text chunks for processing";
1793
+ class ImageSegmentationTask extends AiVisionTask {
1794
+ static type = "ImageSegmentationTask";
1795
+ static category = "AI Vision Model";
1796
+ static title = "Image Segmentation";
1797
+ static description = "Segments images into regions with labels using computer vision models";
734
1798
  static inputSchema() {
735
- return inputSchema;
1799
+ return ImageSegmentationInputSchema;
736
1800
  }
737
1801
  static outputSchema() {
738
- return outputSchema;
1802
+ return ImageSegmentationOutputSchema;
739
1803
  }
740
- flattenFragmentsToTexts(item) {
741
- if (item instanceof Document) {
742
- const texts = [];
743
- item.fragments.forEach((fragment) => {
744
- texts.push(...this.flattenFragmentsToTexts(fragment));
745
- });
746
- return texts;
747
- } else {
748
- return [item.content];
1804
+ }
1805
+ TaskRegistry10.registerTask(ImageSegmentationTask);
1806
+ var ImageSegmentation = (input, config) => {
1807
+ return new ImageSegmentationTask(input, config).run();
1808
+ };
1809
+ Workflow10.prototype.ImageSegmentation = CreateWorkflow10(ImageSegmentationTask);
1810
+ // src/task/ImageToTextTask.ts
1811
+ import { CreateWorkflow as CreateWorkflow11, TaskRegistry as TaskRegistry11, Workflow as Workflow11 } from "@workglow/task-graph";
1812
+ var modelSchema10 = TypeReplicateArray(TypeModel("model:ImageToTextTask"));
1813
+ var generatedTextSchema = {
1814
+ type: "string",
1815
+ title: "Text",
1816
+ description: "The generated text description"
1817
+ };
1818
+ var ImageToTextInputSchema = {
1819
+ type: "object",
1820
+ properties: {
1821
+ image: TypeReplicateArray(TypeImageInput),
1822
+ model: modelSchema10,
1823
+ maxTokens: {
1824
+ type: "number",
1825
+ title: "Max Tokens",
1826
+ description: "The maximum number of tokens to generate",
1827
+ minimum: 1,
1828
+ maximum: 4096,
1829
+ "x-ui-group": "Configuration"
1830
+ }
1831
+ },
1832
+ required: ["image", "model"],
1833
+ additionalProperties: false
1834
+ };
1835
+ var ImageToTextOutputSchema = {
1836
+ type: "object",
1837
+ properties: {
1838
+ text: {
1839
+ oneOf: [generatedTextSchema, { type: "array", items: generatedTextSchema }],
1840
+ title: generatedTextSchema.title,
1841
+ description: generatedTextSchema.description
749
1842
  }
1843
+ },
1844
+ required: ["text"],
1845
+ additionalProperties: false
1846
+ };
1847
+
1848
+ class ImageToTextTask extends AiVisionTask {
1849
+ static type = "ImageToTextTask";
1850
+ static category = "AI Vision Model";
1851
+ static title = "Image to Text";
1852
+ static description = "Generates text descriptions from images using vision-language models";
1853
+ static inputSchema() {
1854
+ return ImageToTextInputSchema;
750
1855
  }
751
- async executeReactive() {
752
- return { texts: this.flattenFragmentsToTexts(this.runInputData.file) };
1856
+ static outputSchema() {
1857
+ return ImageToTextOutputSchema;
753
1858
  }
754
1859
  }
755
- TaskRegistry.registerTask(DocumentSplitterTask);
756
- var DocumentSplitter = (input) => {
757
- return new DocumentSplitterTask(input).run();
1860
+ TaskRegistry11.registerTask(ImageToTextTask);
1861
+ var ImageToText = (input, config) => {
1862
+ return new ImageToTextTask(input, config).run();
758
1863
  };
759
- Workflow.prototype.DocumentSplitter = CreateWorkflow(DocumentSplitterTask);
760
- // src/task/DownloadModelTask.ts
761
- import { CreateWorkflow as CreateWorkflow2, TaskRegistry as TaskRegistry2, Workflow as Workflow2 } from "@workglow/task-graph";
762
- var modelSchema = TypeReplicateArray(TypeModel("model"));
763
- var DownloadModelInputSchema = {
1864
+ Workflow11.prototype.ImageToText = CreateWorkflow11(ImageToTextTask);
1865
+ // src/task/ObjectDetectionTask.ts
1866
+ import { CreateWorkflow as CreateWorkflow12, TaskRegistry as TaskRegistry12, Workflow as Workflow12 } from "@workglow/task-graph";
1867
+ var modelSchema11 = TypeReplicateArray(TypeModel("model:ObjectDetectionTask"));
1868
+ var detectionSchema = {
764
1869
  type: "object",
765
1870
  properties: {
766
- model: modelSchema
1871
+ label: {
1872
+ type: "string",
1873
+ title: "Label",
1874
+ description: "The label of the detected object"
1875
+ },
1876
+ score: {
1877
+ type: "number",
1878
+ title: "Confidence Score",
1879
+ description: "The confidence score for this detection",
1880
+ minimum: 0,
1881
+ maximum: 1
1882
+ },
1883
+ box: TypeBoundingBox
767
1884
  },
768
- required: ["model"],
1885
+ required: ["label", "score", "box"],
769
1886
  additionalProperties: false
770
1887
  };
771
- var DownloadModelOutputSchema = {
1888
+ var ObjectDetectionInputSchema = {
772
1889
  type: "object",
773
1890
  properties: {
774
- model: modelSchema
1891
+ image: TypeReplicateArray(TypeImageInput),
1892
+ model: modelSchema11,
1893
+ labels: {
1894
+ type: "array",
1895
+ items: {
1896
+ type: "string"
1897
+ },
1898
+ title: "Labels",
1899
+ description: "List of object labels to detect (optional, if provided uses zero-shot detection)",
1900
+ "x-ui-group": "Configuration"
1901
+ },
1902
+ threshold: {
1903
+ type: "number",
1904
+ title: "Threshold",
1905
+ description: "The threshold for filtering detections by score",
1906
+ minimum: 0,
1907
+ maximum: 1,
1908
+ default: 0.5,
1909
+ "x-ui-group": "Configuration"
1910
+ }
775
1911
  },
776
- required: ["model"],
1912
+ required: ["image", "model"],
1913
+ additionalProperties: false
1914
+ };
1915
+ var ObjectDetectionOutputSchema = {
1916
+ type: "object",
1917
+ properties: {
1918
+ detections: {
1919
+ oneOf: [
1920
+ { type: "array", items: detectionSchema },
1921
+ { type: "array", items: { type: "array", items: detectionSchema } }
1922
+ ],
1923
+ title: "Detections",
1924
+ description: "The detected objects with their labels, scores, and bounding boxes"
1925
+ }
1926
+ },
1927
+ required: ["detections"],
777
1928
  additionalProperties: false
778
1929
  };
779
1930
 
780
- class DownloadModelTask extends AiTask {
781
- static type = "DownloadModelTask";
782
- static category = "AI Text Model";
783
- static title = "Download Model";
784
- static description = "Downloads and caches AI models locally with progress tracking";
1931
+ class ObjectDetectionTask extends AiVisionTask {
1932
+ static type = "ObjectDetectionTask";
1933
+ static category = "AI Vision Model";
1934
+ static title = "Object Detection";
1935
+ static description = "Detects objects in images using vision models. Supports zero-shot detection when labels are provided.";
785
1936
  static inputSchema() {
786
- return DownloadModelInputSchema;
1937
+ return ObjectDetectionInputSchema;
787
1938
  }
788
1939
  static outputSchema() {
789
- return DownloadModelOutputSchema;
790
- }
791
- static cacheable = false;
792
- files = [];
793
- constructor(input, config = {}) {
794
- super(input, config);
795
- this.on("progress", this.processProgress.bind(this));
796
- this.on("start", () => {
797
- this.files = [];
798
- });
1940
+ return ObjectDetectionOutputSchema;
799
1941
  }
800
- processProgress(progress, message = "", details) {
801
- if (details?.file) {
802
- const file = this.files.find((f) => f.file === details.file);
803
- if (file) {
804
- file.progress = details.progress;
805
- } else {
806
- this.files.push({ file: details.file, progress: details.progress });
807
- }
808
- this.progress = this.files.reduce((acc, f) => acc + f.progress, 0) / this.files.length;
809
- } else {
810
- this.progress = progress;
1942
+ }
1943
+ TaskRegistry12.registerTask(ObjectDetectionTask);
1944
+ var ObjectDetection = (input, config) => {
1945
+ return new ObjectDetectionTask(input, config).run();
1946
+ };
1947
+ Workflow12.prototype.ObjectDetection = CreateWorkflow12(ObjectDetectionTask);
1948
+ // src/task/PoseLandmarkerTask.ts
1949
+ import { CreateWorkflow as CreateWorkflow13, TaskRegistry as TaskRegistry13, Workflow as Workflow13 } from "@workglow/task-graph";
1950
+ var modelSchema12 = TypeReplicateArray(TypeModel("model:PoseLandmarkerTask"));
1951
+ var TypePoseLandmark = {
1952
+ type: "object",
1953
+ properties: {
1954
+ x: {
1955
+ type: "number",
1956
+ title: "X Coordinate",
1957
+ description: "X coordinate normalized to [0.0, 1.0]"
1958
+ },
1959
+ y: {
1960
+ type: "number",
1961
+ title: "Y Coordinate",
1962
+ description: "Y coordinate normalized to [0.0, 1.0]"
1963
+ },
1964
+ z: {
1965
+ type: "number",
1966
+ title: "Z Coordinate",
1967
+ description: "Z coordinate (depth)"
1968
+ },
1969
+ visibility: {
1970
+ type: "number",
1971
+ title: "Visibility",
1972
+ description: "Likelihood of the landmark being visible within the image"
1973
+ },
1974
+ presence: {
1975
+ type: "number",
1976
+ title: "Presence",
1977
+ description: "Likelihood of the landmark being present in the image"
1978
+ }
1979
+ },
1980
+ required: ["x", "y", "z"],
1981
+ additionalProperties: false
1982
+ };
1983
+ var TypeSegmentationMask = {
1984
+ type: "object",
1985
+ properties: {
1986
+ data: {
1987
+ type: "object",
1988
+ title: "Mask Data",
1989
+ description: "Canvas or image data containing the segmentation mask"
1990
+ },
1991
+ width: {
1992
+ type: "number",
1993
+ title: "Width",
1994
+ description: "Width of the segmentation mask"
1995
+ },
1996
+ height: {
1997
+ type: "number",
1998
+ title: "Height",
1999
+ description: "Height of the segmentation mask"
2000
+ }
2001
+ },
2002
+ required: ["data", "width", "height"],
2003
+ additionalProperties: false
2004
+ };
2005
+ var TypePoseDetection = {
2006
+ type: "object",
2007
+ properties: {
2008
+ landmarks: {
2009
+ type: "array",
2010
+ items: TypePoseLandmark,
2011
+ title: "Landmarks",
2012
+ description: "33 pose landmarks in image coordinates"
2013
+ },
2014
+ worldLandmarks: {
2015
+ type: "array",
2016
+ items: TypePoseLandmark,
2017
+ title: "World Landmarks",
2018
+ description: "33 pose landmarks in 3D world coordinates (meters)"
2019
+ },
2020
+ segmentationMask: TypeSegmentationMask
2021
+ },
2022
+ required: ["landmarks", "worldLandmarks"],
2023
+ additionalProperties: false
2024
+ };
2025
+ var PoseLandmarkerInputSchema = {
2026
+ type: "object",
2027
+ properties: {
2028
+ image: TypeReplicateArray(TypeImageInput),
2029
+ model: modelSchema12,
2030
+ numPoses: {
2031
+ type: "number",
2032
+ minimum: 1,
2033
+ maximum: 10,
2034
+ default: 1,
2035
+ title: "Number of Poses",
2036
+ description: "The maximum number of poses to detect",
2037
+ "x-ui-group": "Configuration"
2038
+ },
2039
+ minPoseDetectionConfidence: {
2040
+ type: "number",
2041
+ minimum: 0,
2042
+ maximum: 1,
2043
+ default: 0.5,
2044
+ title: "Min Pose Detection Confidence",
2045
+ description: "Minimum confidence score for pose detection",
2046
+ "x-ui-group": "Configuration"
2047
+ },
2048
+ minPosePresenceConfidence: {
2049
+ type: "number",
2050
+ minimum: 0,
2051
+ maximum: 1,
2052
+ default: 0.5,
2053
+ title: "Min Pose Presence Confidence",
2054
+ description: "Minimum confidence score for pose presence",
2055
+ "x-ui-group": "Configuration"
2056
+ },
2057
+ minTrackingConfidence: {
2058
+ type: "number",
2059
+ minimum: 0,
2060
+ maximum: 1,
2061
+ default: 0.5,
2062
+ title: "Min Tracking Confidence",
2063
+ description: "Minimum confidence score for pose tracking",
2064
+ "x-ui-group": "Configuration"
2065
+ },
2066
+ outputSegmentationMasks: {
2067
+ type: "boolean",
2068
+ default: false,
2069
+ title: "Output Segmentation Masks",
2070
+ description: "Whether to output segmentation masks for detected poses",
2071
+ "x-ui-group": "Configuration"
811
2072
  }
2073
+ },
2074
+ required: ["image", "model"],
2075
+ additionalProperties: false
2076
+ };
2077
+ var PoseLandmarkerOutputSchema = {
2078
+ type: "object",
2079
+ properties: {
2080
+ poses: {
2081
+ oneOf: [
2082
+ { type: "array", items: TypePoseDetection },
2083
+ { type: "array", items: { type: "array", items: TypePoseDetection } }
2084
+ ],
2085
+ title: "Pose Detections",
2086
+ description: "Detected poses with landmarks and optional segmentation masks"
2087
+ }
2088
+ },
2089
+ required: ["poses"],
2090
+ additionalProperties: false
2091
+ };
2092
+
2093
+ class PoseLandmarkerTask extends AiVisionTask {
2094
+ static type = "PoseLandmarkerTask";
2095
+ static category = "AI Vision Model";
2096
+ static title = "Pose Landmarker";
2097
+ static description = "Detects pose landmarks in images. Identifies 33 body landmarks for pose estimation and optional segmentation.";
2098
+ static inputSchema() {
2099
+ return PoseLandmarkerInputSchema;
2100
+ }
2101
+ static outputSchema() {
2102
+ return PoseLandmarkerOutputSchema;
812
2103
  }
813
2104
  }
814
- TaskRegistry2.registerTask(DownloadModelTask);
815
- var DownloadModel = (input, config) => {
816
- return new DownloadModelTask(input, config).run();
2105
+ TaskRegistry13.registerTask(PoseLandmarkerTask);
2106
+ var PoseLandmarker = (input, config) => {
2107
+ return new PoseLandmarkerTask(input, config).run();
817
2108
  };
818
- Workflow2.prototype.DownloadModel = CreateWorkflow2(DownloadModelTask);
819
- // src/task/TextClassifierTask.ts
820
- import { CreateWorkflow as CreateWorkflow3, TaskRegistry as TaskRegistry3, Workflow as Workflow3 } from "@workglow/task-graph";
821
- var modelSchema2 = TypeReplicateArray(TypeModel("model:TextClassifierTask"));
822
- var TextClassifierInputSchema = {
2109
+ Workflow13.prototype.PoseLandmarker = CreateWorkflow13(PoseLandmarkerTask);
2110
+ // src/task/TextClassificationTask.ts
2111
+ import { CreateWorkflow as CreateWorkflow14, TaskRegistry as TaskRegistry14, Workflow as Workflow14 } from "@workglow/task-graph";
2112
+ var modelSchema13 = TypeReplicateArray(TypeModel("model:TextClassificationTask"));
2113
+ var TextClassificationInputSchema = {
823
2114
  type: "object",
824
2115
  properties: {
825
2116
  text: TypeReplicateArray({
@@ -827,20 +2118,30 @@ var TextClassifierInputSchema = {
827
2118
  title: "Text",
828
2119
  description: "The text to classify"
829
2120
  }),
2121
+ candidateLabels: {
2122
+ type: "array",
2123
+ items: {
2124
+ type: "string"
2125
+ },
2126
+ title: "Candidate Labels",
2127
+ description: "List of candidate labels (optional, if provided uses zero-shot classification)",
2128
+ "x-ui-group": "Configuration"
2129
+ },
830
2130
  maxCategories: {
831
2131
  type: "number",
832
2132
  minimum: 1,
833
2133
  maximum: 1000,
834
2134
  default: 5,
835
2135
  title: "Max Categories",
836
- description: "The maximum number of categories to return"
2136
+ description: "The maximum number of categories to return",
2137
+ "x-ui-group": "Configuration"
837
2138
  },
838
- model: modelSchema2
2139
+ model: modelSchema13
839
2140
  },
840
2141
  required: ["text", "model"],
841
2142
  additionalProperties: false
842
2143
  };
843
- var TextClassifierOutputSchema = {
2144
+ var TextClassificationOutputSchema = {
844
2145
  type: "object",
845
2146
  properties: {
846
2147
  categories: {
@@ -870,26 +2171,26 @@ var TextClassifierOutputSchema = {
870
2171
  additionalProperties: false
871
2172
  };
872
2173
 
873
- class TextClassifierTask extends AiTask {
874
- static type = "TextClassifierTask";
2174
+ class TextClassificationTask extends AiTask {
2175
+ static type = "TextClassificationTask";
875
2176
  static category = "AI Text Model";
876
2177
  static title = "Text Classifier";
877
- static description = "Classifies text into predefined categories using language models";
2178
+ static description = "Classifies text into categories using language models. Supports zero-shot classification when candidate labels are provided.";
878
2179
  static inputSchema() {
879
- return TextClassifierInputSchema;
2180
+ return TextClassificationInputSchema;
880
2181
  }
881
2182
  static outputSchema() {
882
- return TextClassifierOutputSchema;
2183
+ return TextClassificationOutputSchema;
883
2184
  }
884
2185
  }
885
- TaskRegistry3.registerTask(TextClassifierTask);
886
- var TextClassifier = (input, config) => {
887
- return new TextClassifierTask(input, config).run();
2186
+ TaskRegistry14.registerTask(TextClassificationTask);
2187
+ var TextClassification = (input, config) => {
2188
+ return new TextClassificationTask(input, config).run();
888
2189
  };
889
- Workflow3.prototype.TextClassifier = CreateWorkflow3(TextClassifierTask);
2190
+ Workflow14.prototype.TextClassification = CreateWorkflow14(TextClassificationTask);
890
2191
  // src/task/TextEmbeddingTask.ts
891
- import { CreateWorkflow as CreateWorkflow4, TaskRegistry as TaskRegistry4, Workflow as Workflow4 } from "@workglow/task-graph";
892
- var modelSchema3 = TypeReplicateArray(TypeModel("model:TextEmbeddingTask"));
2192
+ import { CreateWorkflow as CreateWorkflow15, TaskRegistry as TaskRegistry15, Workflow as Workflow15 } from "@workglow/task-graph";
2193
+ var modelSchema14 = TypeReplicateArray(TypeModel("model:TextEmbeddingTask"));
893
2194
  var TextEmbeddingInputSchema = {
894
2195
  type: "object",
895
2196
  properties: {
@@ -898,7 +2199,7 @@ var TextEmbeddingInputSchema = {
898
2199
  title: "Text",
899
2200
  description: "The text to embed"
900
2201
  }),
901
- model: modelSchema3
2202
+ model: modelSchema14
902
2203
  },
903
2204
  required: ["text", "model"],
904
2205
  additionalProperties: false
@@ -927,14 +2228,14 @@ class TextEmbeddingTask extends AiTask {
927
2228
  return TextEmbeddingOutputSchema;
928
2229
  }
929
2230
  }
930
- TaskRegistry4.registerTask(TextEmbeddingTask);
2231
+ TaskRegistry15.registerTask(TextEmbeddingTask);
931
2232
  var TextEmbedding = async (input, config) => {
932
2233
  return new TextEmbeddingTask(input, config).run();
933
2234
  };
934
- Workflow4.prototype.TextEmbedding = CreateWorkflow4(TextEmbeddingTask);
2235
+ Workflow15.prototype.TextEmbedding = CreateWorkflow15(TextEmbeddingTask);
935
2236
  // src/task/TextFillMaskTask.ts
936
- import { CreateWorkflow as CreateWorkflow5, TaskRegistry as TaskRegistry5, Workflow as Workflow5 } from "@workglow/task-graph";
937
- var modelSchema4 = TypeReplicateArray(TypeModel("model:TextFillMaskTask"));
2237
+ import { CreateWorkflow as CreateWorkflow16, TaskRegistry as TaskRegistry16, Workflow as Workflow16 } from "@workglow/task-graph";
2238
+ var modelSchema15 = TypeReplicateArray(TypeModel("model:TextFillMaskTask"));
938
2239
  var TextFillMaskInputSchema = {
939
2240
  type: "object",
940
2241
  properties: {
@@ -943,7 +2244,7 @@ var TextFillMaskInputSchema = {
943
2244
  title: "Text",
944
2245
  description: "The text with a mask token to fill"
945
2246
  }),
946
- model: modelSchema4
2247
+ model: modelSchema15
947
2248
  },
948
2249
  required: ["text", "model"],
949
2250
  additionalProperties: false
@@ -986,8 +2287,8 @@ var TextFillMaskOutputSchema = {
986
2287
  class TextFillMaskTask extends AiTask {
987
2288
  static type = "TextFillMaskTask";
988
2289
  static category = "AI Text Model";
989
- static title = "Text Fill Mask";
990
- static description = "Fills masked tokens in text using language models";
2290
+ static title = "Fill Mask";
2291
+ static description = "Fills masked tokens in text";
991
2292
  static inputSchema() {
992
2293
  return TextFillMaskInputSchema;
993
2294
  }
@@ -995,23 +2296,23 @@ class TextFillMaskTask extends AiTask {
995
2296
  return TextFillMaskOutputSchema;
996
2297
  }
997
2298
  }
998
- TaskRegistry5.registerTask(TextFillMaskTask);
2299
+ TaskRegistry16.registerTask(TextFillMaskTask);
999
2300
  var TextFillMask = (input, config) => {
1000
2301
  return new TextFillMaskTask(input, config).run();
1001
2302
  };
1002
- Workflow5.prototype.TextFillMask = CreateWorkflow5(TextFillMaskTask);
2303
+ Workflow16.prototype.TextFillMask = CreateWorkflow16(TextFillMaskTask);
1003
2304
  // src/task/TextGenerationTask.ts
1004
- import { CreateWorkflow as CreateWorkflow6, TaskRegistry as TaskRegistry6, Workflow as Workflow6 } from "@workglow/task-graph";
1005
- var generatedTextSchema = {
2305
+ import { CreateWorkflow as CreateWorkflow17, TaskRegistry as TaskRegistry17, Workflow as Workflow17 } from "@workglow/task-graph";
2306
+ var generatedTextSchema2 = {
1006
2307
  type: "string",
1007
2308
  title: "Text",
1008
2309
  description: "The generated text"
1009
2310
  };
1010
- var modelSchema5 = TypeReplicateArray(TypeModel("model:TextGenerationTask"));
2311
+ var modelSchema16 = TypeReplicateArray(TypeModel("model:TextGenerationTask"));
1011
2312
  var TextGenerationInputSchema = {
1012
2313
  type: "object",
1013
2314
  properties: {
1014
- model: modelSchema5,
2315
+ model: modelSchema16,
1015
2316
  prompt: TypeReplicateArray({
1016
2317
  type: "string",
1017
2318
  title: "Prompt",
@@ -1065,9 +2366,9 @@ var TextGenerationOutputSchema = {
1065
2366
  type: "object",
1066
2367
  properties: {
1067
2368
  text: {
1068
- oneOf: [generatedTextSchema, { type: "array", items: generatedTextSchema }],
1069
- title: generatedTextSchema.title,
1070
- description: generatedTextSchema.description
2369
+ oneOf: [generatedTextSchema2, { type: "array", items: generatedTextSchema2 }],
2370
+ title: generatedTextSchema2.title,
2371
+ description: generatedTextSchema2.description
1071
2372
  }
1072
2373
  },
1073
2374
  required: ["text"],
@@ -1086,14 +2387,14 @@ class TextGenerationTask extends AiTask {
1086
2387
  return TextGenerationOutputSchema;
1087
2388
  }
1088
2389
  }
1089
- TaskRegistry6.registerTask(TextGenerationTask);
2390
+ TaskRegistry17.registerTask(TextGenerationTask);
1090
2391
  var TextGeneration = (input, config) => {
1091
2392
  return new TextGenerationTask(input, config).run();
1092
2393
  };
1093
- Workflow6.prototype.TextGeneration = CreateWorkflow6(TextGenerationTask);
2394
+ Workflow17.prototype.TextGeneration = CreateWorkflow17(TextGenerationTask);
1094
2395
  // src/task/TextLanguageDetectionTask.ts
1095
- import { CreateWorkflow as CreateWorkflow7, TaskRegistry as TaskRegistry7, Workflow as Workflow7 } from "@workglow/task-graph";
1096
- var modelSchema6 = TypeReplicateArray(TypeModel("model:TextLanguageDetectionTask"));
2396
+ import { CreateWorkflow as CreateWorkflow18, TaskRegistry as TaskRegistry18, Workflow as Workflow18 } from "@workglow/task-graph";
2397
+ var modelSchema17 = TypeReplicateArray(TypeModel("model:TextLanguageDetectionTask"));
1097
2398
  var TextLanguageDetectionInputSchema = {
1098
2399
  type: "object",
1099
2400
  properties: {
@@ -1110,7 +2411,7 @@ var TextLanguageDetectionInputSchema = {
1110
2411
  title: "Max Languages",
1111
2412
  description: "The maximum number of languages to return"
1112
2413
  },
1113
- model: modelSchema6
2414
+ model: modelSchema17
1114
2415
  },
1115
2416
  required: ["text", "model"],
1116
2417
  additionalProperties: false
@@ -1157,14 +2458,14 @@ class TextLanguageDetectionTask extends AiTask {
1157
2458
  return TextLanguageDetectionOutputSchema;
1158
2459
  }
1159
2460
  }
1160
- TaskRegistry7.registerTask(TextLanguageDetectionTask);
2461
+ TaskRegistry18.registerTask(TextLanguageDetectionTask);
1161
2462
  var TextLanguageDetection = (input, config) => {
1162
2463
  return new TextLanguageDetectionTask(input, config).run();
1163
2464
  };
1164
- Workflow7.prototype.TextLanguageDetection = CreateWorkflow7(TextLanguageDetectionTask);
2465
+ Workflow18.prototype.TextLanguageDetection = CreateWorkflow18(TextLanguageDetectionTask);
1165
2466
  // src/task/TextNamedEntityRecognitionTask.ts
1166
- import { CreateWorkflow as CreateWorkflow8, TaskRegistry as TaskRegistry8, Workflow as Workflow8 } from "@workglow/task-graph";
1167
- var modelSchema7 = TypeReplicateArray(TypeModel("model:NamedEntityRecognitionTask"));
2467
+ import { CreateWorkflow as CreateWorkflow19, TaskRegistry as TaskRegistry19, Workflow as Workflow19 } from "@workglow/task-graph";
2468
+ var modelSchema18 = TypeReplicateArray(TypeModel("model:NamedEntityRecognitionTask"));
1168
2469
  var TextNamedEntityRecognitionInputSchema = {
1169
2470
  type: "object",
1170
2471
  properties: {
@@ -1183,7 +2484,7 @@ var TextNamedEntityRecognitionInputSchema = {
1183
2484
  "x-ui-group": "Configuration",
1184
2485
  "x-ui-group-open": false
1185
2486
  },
1186
- model: modelSchema7
2487
+ model: modelSchema18
1187
2488
  },
1188
2489
  required: ["text", "model"],
1189
2490
  additionalProperties: false
@@ -1226,8 +2527,8 @@ var TextNamedEntityRecognitionOutputSchema = {
1226
2527
  class TextNamedEntityRecognitionTask extends AiTask {
1227
2528
  static type = "TextNamedEntityRecognitionTask";
1228
2529
  static category = "AI Text Model";
1229
- static title = "Text Named Entity Recognition";
1230
- static description = "Extracts named entities from text using language models";
2530
+ static title = "Named Entity Recognition";
2531
+ static description = "Extracts named entities from text";
1231
2532
  static inputSchema() {
1232
2533
  return TextNamedEntityRecognitionInputSchema;
1233
2534
  }
@@ -1235,13 +2536,13 @@ class TextNamedEntityRecognitionTask extends AiTask {
1235
2536
  return TextNamedEntityRecognitionOutputSchema;
1236
2537
  }
1237
2538
  }
1238
- TaskRegistry8.registerTask(TextNamedEntityRecognitionTask);
2539
+ TaskRegistry19.registerTask(TextNamedEntityRecognitionTask);
1239
2540
  var TextNamedEntityRecognition = (input, config) => {
1240
2541
  return new TextNamedEntityRecognitionTask(input, config).run();
1241
2542
  };
1242
- Workflow8.prototype.TextNamedEntityRecognition = CreateWorkflow8(TextNamedEntityRecognitionTask);
2543
+ Workflow19.prototype.TextNamedEntityRecognition = CreateWorkflow19(TextNamedEntityRecognitionTask);
1243
2544
  // src/task/TextQuestionAnswerTask.ts
1244
- import { CreateWorkflow as CreateWorkflow9, TaskRegistry as TaskRegistry9, Workflow as Workflow9 } from "@workglow/task-graph";
2545
+ import { CreateWorkflow as CreateWorkflow20, TaskRegistry as TaskRegistry20, Workflow as Workflow20 } from "@workglow/task-graph";
1245
2546
  var contextSchema = {
1246
2547
  type: "string",
1247
2548
  title: "Context",
@@ -1257,13 +2558,13 @@ var textSchema = {
1257
2558
  title: "Text",
1258
2559
  description: "The generated text"
1259
2560
  };
1260
- var modelSchema8 = TypeReplicateArray(TypeModel("model:TextQuestionAnswerTask"));
2561
+ var modelSchema19 = TypeReplicateArray(TypeModel("model:TextQuestionAnswerTask"));
1261
2562
  var TextQuestionAnswerInputSchema = {
1262
2563
  type: "object",
1263
2564
  properties: {
1264
2565
  context: TypeReplicateArray(contextSchema),
1265
2566
  question: TypeReplicateArray(questionSchema),
1266
- model: modelSchema8
2567
+ model: modelSchema19
1267
2568
  },
1268
2569
  required: ["context", "question", "model"],
1269
2570
  additionalProperties: false
@@ -1293,14 +2594,14 @@ class TextQuestionAnswerTask extends AiTask {
1293
2594
  return TextQuestionAnswerOutputSchema;
1294
2595
  }
1295
2596
  }
1296
- TaskRegistry9.registerTask(TextQuestionAnswerTask);
2597
+ TaskRegistry20.registerTask(TextQuestionAnswerTask);
1297
2598
  var TextQuestionAnswer = (input, config) => {
1298
2599
  return new TextQuestionAnswerTask(input, config).run();
1299
2600
  };
1300
- Workflow9.prototype.TextQuestionAnswer = CreateWorkflow9(TextQuestionAnswerTask);
2601
+ Workflow20.prototype.TextQuestionAnswer = CreateWorkflow20(TextQuestionAnswerTask);
1301
2602
  // src/task/TextRewriterTask.ts
1302
- import { CreateWorkflow as CreateWorkflow10, TaskRegistry as TaskRegistry10, Workflow as Workflow10 } from "@workglow/task-graph";
1303
- var modelSchema9 = TypeReplicateArray(TypeModel("model:TextRewriterTask"));
2603
+ import { CreateWorkflow as CreateWorkflow21, TaskRegistry as TaskRegistry21, Workflow as Workflow21 } from "@workglow/task-graph";
2604
+ var modelSchema20 = TypeReplicateArray(TypeModel("model:TextRewriterTask"));
1304
2605
  var TextRewriterInputSchema = {
1305
2606
  type: "object",
1306
2607
  properties: {
@@ -1314,7 +2615,7 @@ var TextRewriterInputSchema = {
1314
2615
  title: "Prompt",
1315
2616
  description: "The prompt to direct the rewriting"
1316
2617
  }),
1317
- model: modelSchema9
2618
+ model: modelSchema20
1318
2619
  },
1319
2620
  required: ["text", "prompt", "model"],
1320
2621
  additionalProperties: false
@@ -1344,14 +2645,14 @@ class TextRewriterTask extends AiTask {
1344
2645
  return TextRewriterOutputSchema;
1345
2646
  }
1346
2647
  }
1347
- TaskRegistry10.registerTask(TextRewriterTask);
2648
+ TaskRegistry21.registerTask(TextRewriterTask);
1348
2649
  var TextRewriter = (input, config) => {
1349
2650
  return new TextRewriterTask(input, config).run();
1350
2651
  };
1351
- Workflow10.prototype.TextRewriter = CreateWorkflow10(TextRewriterTask);
2652
+ Workflow21.prototype.TextRewriter = CreateWorkflow21(TextRewriterTask);
1352
2653
  // src/task/TextSummaryTask.ts
1353
- import { CreateWorkflow as CreateWorkflow11, TaskRegistry as TaskRegistry11, Workflow as Workflow11 } from "@workglow/task-graph";
1354
- var modelSchema10 = TypeReplicateArray(TypeModel("model:TextSummaryTask"));
2654
+ import { CreateWorkflow as CreateWorkflow22, TaskRegistry as TaskRegistry22, Workflow as Workflow22 } from "@workglow/task-graph";
2655
+ var modelSchema21 = TypeReplicateArray(TypeModel("model:TextSummaryTask"));
1355
2656
  var TextSummaryInputSchema = {
1356
2657
  type: "object",
1357
2658
  properties: {
@@ -1360,7 +2661,7 @@ var TextSummaryInputSchema = {
1360
2661
  title: "Text",
1361
2662
  description: "The text to summarize"
1362
2663
  }),
1363
- model: modelSchema10
2664
+ model: modelSchema21
1364
2665
  },
1365
2666
  required: ["text", "model"],
1366
2667
  additionalProperties: false
@@ -1390,14 +2691,14 @@ class TextSummaryTask extends AiTask {
1390
2691
  return TextSummaryOutputSchema;
1391
2692
  }
1392
2693
  }
1393
- TaskRegistry11.registerTask(TextSummaryTask);
2694
+ TaskRegistry22.registerTask(TextSummaryTask);
1394
2695
  var TextSummary = async (input, config) => {
1395
2696
  return new TextSummaryTask(input, config).run();
1396
2697
  };
1397
- Workflow11.prototype.TextSummary = CreateWorkflow11(TextSummaryTask);
2698
+ Workflow22.prototype.TextSummary = CreateWorkflow22(TextSummaryTask);
1398
2699
  // src/task/TextTranslationTask.ts
1399
- import { CreateWorkflow as CreateWorkflow12, TaskRegistry as TaskRegistry12, Workflow as Workflow12 } from "@workglow/task-graph";
1400
- var modelSchema11 = TypeReplicateArray(TypeModel("model:TextTranslationTask"));
2700
+ import { CreateWorkflow as CreateWorkflow23, TaskRegistry as TaskRegistry23, Workflow as Workflow23 } from "@workglow/task-graph";
2701
+ var modelSchema22 = TypeReplicateArray(TypeModel("model:TextTranslationTask"));
1401
2702
  var translationTextSchema = {
1402
2703
  type: "string",
1403
2704
  title: "Text",
@@ -1423,7 +2724,7 @@ var TextTranslationInputSchema = {
1423
2724
  minLength: 2,
1424
2725
  maxLength: 2
1425
2726
  })),
1426
- model: modelSchema11
2727
+ model: modelSchema22
1427
2728
  },
1428
2729
  required: ["text", "source_lang", "target_lang", "model"],
1429
2730
  additionalProperties: false
@@ -1459,18 +2760,18 @@ class TextTranslationTask extends AiTask {
1459
2760
  return TextTranslationOutputSchema;
1460
2761
  }
1461
2762
  }
1462
- TaskRegistry12.registerTask(TextTranslationTask);
2763
+ TaskRegistry23.registerTask(TextTranslationTask);
1463
2764
  var TextTranslation = (input, config) => {
1464
2765
  return new TextTranslationTask(input, config).run();
1465
2766
  };
1466
- Workflow12.prototype.TextTranslation = CreateWorkflow12(TextTranslationTask);
2767
+ Workflow23.prototype.TextTranslation = CreateWorkflow23(TextTranslationTask);
1467
2768
  // src/task/UnloadModelTask.ts
1468
- import { CreateWorkflow as CreateWorkflow13, TaskRegistry as TaskRegistry13, Workflow as Workflow13 } from "@workglow/task-graph";
1469
- var modelSchema12 = TypeReplicateArray(TypeModel("model"));
2769
+ import { CreateWorkflow as CreateWorkflow24, TaskRegistry as TaskRegistry24, Workflow as Workflow24 } from "@workglow/task-graph";
2770
+ var modelSchema23 = TypeReplicateArray(TypeModel("model"));
1470
2771
  var UnloadModelInputSchema = {
1471
2772
  type: "object",
1472
2773
  properties: {
1473
- model: modelSchema12
2774
+ model: modelSchema23
1474
2775
  },
1475
2776
  required: ["model"],
1476
2777
  additionalProperties: false
@@ -1478,7 +2779,7 @@ var UnloadModelInputSchema = {
1478
2779
  var UnloadModelOutputSchema = {
1479
2780
  type: "object",
1480
2781
  properties: {
1481
- model: modelSchema12
2782
+ model: modelSchema23
1482
2783
  },
1483
2784
  required: ["model"],
1484
2785
  additionalProperties: false
@@ -1497,18 +2798,18 @@ class UnloadModelTask extends AiTask {
1497
2798
  }
1498
2799
  static cacheable = false;
1499
2800
  }
1500
- TaskRegistry13.registerTask(UnloadModelTask);
2801
+ TaskRegistry24.registerTask(UnloadModelTask);
1501
2802
  var UnloadModel = (input, config) => {
1502
2803
  return new UnloadModelTask(input, config).run();
1503
2804
  };
1504
- Workflow13.prototype.UnloadModel = CreateWorkflow13(UnloadModelTask);
2805
+ Workflow24.prototype.UnloadModel = CreateWorkflow24(UnloadModelTask);
1505
2806
  // src/task/VectorSimilarityTask.ts
1506
2807
  import {
1507
2808
  ArrayTask,
1508
- CreateWorkflow as CreateWorkflow14,
2809
+ CreateWorkflow as CreateWorkflow25,
1509
2810
  TaskError,
1510
- TaskRegistry as TaskRegistry14,
1511
- Workflow as Workflow14
2811
+ TaskRegistry as TaskRegistry25,
2812
+ Workflow as Workflow25
1512
2813
  } from "@workglow/task-graph";
1513
2814
  var SimilarityFn = {
1514
2815
  COSINE: "cosine",
@@ -1602,11 +2903,11 @@ class VectorSimilarityTask extends ArrayTask {
1602
2903
  };
1603
2904
  }
1604
2905
  }
1605
- TaskRegistry14.registerTask(VectorSimilarityTask);
2906
+ TaskRegistry25.registerTask(VectorSimilarityTask);
1606
2907
  var Similarity = (input, config) => {
1607
2908
  return new VectorSimilarityTask(input, config).run();
1608
2909
  };
1609
- Workflow14.prototype.Similarity = CreateWorkflow14(VectorSimilarityTask);
2910
+ Workflow25.prototype.Similarity = CreateWorkflow25(VectorSimilarityTask);
1610
2911
  function inner(arr1, arr2) {
1611
2912
  return 1 - arr1.reduce((acc, val, i) => acc + val * arr2[i], 0);
1612
2913
  }
@@ -1650,6 +2951,10 @@ export {
1650
2951
  TypeModelAsString,
1651
2952
  TypeModel,
1652
2953
  TypeLanguage,
2954
+ TypeImageInput,
2955
+ TypeCategory,
2956
+ TypeBoundingBox,
2957
+ TypeAudioInput,
1653
2958
  TextTranslationTask,
1654
2959
  TextTranslationOutputSchema,
1655
2960
  TextTranslationInputSchema,
@@ -1687,19 +2992,59 @@ export {
1687
2992
  TextEmbeddingOutputSchema,
1688
2993
  TextEmbeddingInputSchema,
1689
2994
  TextEmbedding,
1690
- TextClassifierTask,
1691
- TextClassifierOutputSchema,
1692
- TextClassifierInputSchema,
1693
- TextClassifier,
2995
+ TextClassificationTask,
2996
+ TextClassificationOutputSchema,
2997
+ TextClassificationInputSchema,
2998
+ TextClassification,
1694
2999
  TableFragment,
1695
3000
  SimilarityFn,
1696
3001
  Similarity,
3002
+ PoseLandmarkerTask,
3003
+ PoseLandmarkerOutputSchema,
3004
+ PoseLandmarkerInputSchema,
3005
+ PoseLandmarker,
3006
+ ObjectDetectionTask,
3007
+ ObjectDetectionOutputSchema,
3008
+ ObjectDetectionInputSchema,
3009
+ ObjectDetection,
1697
3010
  ModelSchema,
1698
3011
  ModelRepository,
1699
3012
  ModelPrimaryKeyNames,
1700
3013
  MODEL_REPOSITORY,
1701
3014
  InMemoryModelRepository,
3015
+ ImageToTextTask,
3016
+ ImageToTextOutputSchema,
3017
+ ImageToTextInputSchema,
3018
+ ImageToText,
3019
+ ImageSegmentationTask,
3020
+ ImageSegmentationOutputSchema,
3021
+ ImageSegmentationInputSchema,
3022
+ ImageSegmentation,
1702
3023
  ImageFragment,
3024
+ ImageEmbeddingTask,
3025
+ ImageEmbeddingOutputSchema,
3026
+ ImageEmbeddingInputSchema,
3027
+ ImageEmbedding,
3028
+ ImageClassificationTask,
3029
+ ImageClassificationOutputSchema,
3030
+ ImageClassificationInputSchema,
3031
+ ImageClassification,
3032
+ HandLandmarkerTask,
3033
+ HandLandmarkerOutputSchema,
3034
+ HandLandmarkerInputSchema,
3035
+ HandLandmarker,
3036
+ GestureRecognizerTask,
3037
+ GestureRecognizerOutputSchema,
3038
+ GestureRecognizerInputSchema,
3039
+ GestureRecognizer,
3040
+ FaceLandmarkerTask,
3041
+ FaceLandmarkerOutputSchema,
3042
+ FaceLandmarkerInputSchema,
3043
+ FaceLandmarker,
3044
+ FaceDetectorTask,
3045
+ FaceDetectorOutputSchema,
3046
+ FaceDetectorInputSchema,
3047
+ FaceDetector,
1703
3048
  DownloadModelTask,
1704
3049
  DownloadModel,
1705
3050
  DocumentSplitterTask,
@@ -1709,9 +3054,13 @@ export {
1709
3054
  DocumentConverterMarkdown,
1710
3055
  DocumentBaseFragment,
1711
3056
  Document,
3057
+ BackgroundRemovalTask,
3058
+ BackgroundRemovalOutputSchema,
3059
+ BackgroundRemovalInputSchema,
3060
+ BackgroundRemoval,
1712
3061
  AiTask,
1713
3062
  AiProviderRegistry,
1714
3063
  AiJob
1715
3064
  };
1716
3065
 
1717
- //# debugId=4EF87B775AAC634764756E2164756E21
3066
+ //# debugId=64CEDA66BE50C92264756E2164756E21