@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.
- package/dist/browser.js +1632 -283
- package/dist/browser.js.map +20 -8
- package/dist/bun.js +1632 -283
- package/dist/bun.js.map +20 -8
- package/dist/node.js +1632 -283
- package/dist/node.js.map +20 -8
- package/dist/task/BackgroundRemovalTask.d.ts +351 -0
- package/dist/task/BackgroundRemovalTask.d.ts.map +1 -0
- package/dist/task/FaceDetectorTask.d.ts +520 -0
- package/dist/task/FaceDetectorTask.d.ts.map +1 -0
- package/dist/task/FaceLandmarkerTask.d.ts +549 -0
- package/dist/task/FaceLandmarkerTask.d.ts.map +1 -0
- package/dist/task/GestureRecognizerTask.d.ts +629 -0
- package/dist/task/GestureRecognizerTask.d.ts.map +1 -0
- package/dist/task/HandLandmarkerTask.d.ts +576 -0
- package/dist/task/HandLandmarkerTask.d.ts.map +1 -0
- package/dist/task/ImageClassificationTask.d.ts +410 -0
- package/dist/task/ImageClassificationTask.d.ts.map +1 -0
- package/dist/task/ImageEmbeddingTask.d.ts +503 -0
- package/dist/task/ImageEmbeddingTask.d.ts.map +1 -0
- package/dist/task/ImageSegmentationTask.d.ts +423 -0
- package/dist/task/ImageSegmentationTask.d.ts.map +1 -0
- package/dist/task/ImageToTextTask.d.ts +355 -0
- package/dist/task/ImageToTextTask.d.ts.map +1 -0
- package/dist/task/ObjectDetectionTask.d.ts +476 -0
- package/dist/task/ObjectDetectionTask.d.ts.map +1 -0
- package/dist/task/PoseLandmarkerTask.d.ts +637 -0
- package/dist/task/PoseLandmarkerTask.d.ts.map +1 -0
- package/dist/task/{TextClassifierTask.d.ts → TextClassificationTask.d.ts} +23 -12
- package/dist/task/TextClassificationTask.d.ts.map +1 -0
- package/dist/task/TextFillMaskTask.d.ts.map +1 -1
- package/dist/task/TextNamedEntityRecognitionTask.d.ts.map +1 -1
- package/dist/task/base/AiTask.d.ts.map +1 -1
- package/dist/task/base/AiTaskSchemas.d.ts +153 -0
- package/dist/task/base/AiTaskSchemas.d.ts.map +1 -1
- package/dist/task/base/AiVisionTask.d.ts +33 -0
- package/dist/task/base/AiVisionTask.d.ts.map +1 -0
- package/dist/task/index.d.ts +12 -1
- package/dist/task/index.d.ts.map +1 -1
- package/package.json +9 -9
- 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/
|
|
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
|
-
|
|
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
|
-
|
|
698
|
-
|
|
699
|
-
TaskRegistry,
|
|
700
|
-
Workflow
|
|
694
|
+
JobQueueTask,
|
|
695
|
+
TaskConfigurationError
|
|
701
696
|
} from "@workglow/task-graph";
|
|
702
|
-
|
|
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
|
-
|
|
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
|
-
|
|
708
|
-
|
|
709
|
-
|
|
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: ["
|
|
1774
|
+
required: ["label", "score", "mask"],
|
|
713
1775
|
additionalProperties: false
|
|
714
1776
|
};
|
|
715
|
-
var
|
|
1777
|
+
var ImageSegmentationOutputSchema = {
|
|
716
1778
|
type: "object",
|
|
717
1779
|
properties: {
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
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: ["
|
|
1789
|
+
required: ["masks"],
|
|
726
1790
|
additionalProperties: false
|
|
727
1791
|
};
|
|
728
1792
|
|
|
729
|
-
class
|
|
730
|
-
static type = "
|
|
731
|
-
static category = "
|
|
732
|
-
static title = "
|
|
733
|
-
static description = "
|
|
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
|
|
1799
|
+
return ImageSegmentationInputSchema;
|
|
736
1800
|
}
|
|
737
1801
|
static outputSchema() {
|
|
738
|
-
return
|
|
1802
|
+
return ImageSegmentationOutputSchema;
|
|
739
1803
|
}
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
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
|
-
|
|
752
|
-
return
|
|
1856
|
+
static outputSchema() {
|
|
1857
|
+
return ImageToTextOutputSchema;
|
|
753
1858
|
}
|
|
754
1859
|
}
|
|
755
|
-
|
|
756
|
-
var
|
|
757
|
-
return new
|
|
1860
|
+
TaskRegistry11.registerTask(ImageToTextTask);
|
|
1861
|
+
var ImageToText = (input, config) => {
|
|
1862
|
+
return new ImageToTextTask(input, config).run();
|
|
758
1863
|
};
|
|
759
|
-
|
|
760
|
-
// src/task/
|
|
761
|
-
import { CreateWorkflow as
|
|
762
|
-
var
|
|
763
|
-
var
|
|
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
|
-
|
|
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: ["
|
|
1885
|
+
required: ["label", "score", "box"],
|
|
769
1886
|
additionalProperties: false
|
|
770
1887
|
};
|
|
771
|
-
var
|
|
1888
|
+
var ObjectDetectionInputSchema = {
|
|
772
1889
|
type: "object",
|
|
773
1890
|
properties: {
|
|
774
|
-
|
|
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
|
|
781
|
-
static type = "
|
|
782
|
-
static category = "AI
|
|
783
|
-
static title = "
|
|
784
|
-
static description = "
|
|
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
|
|
1937
|
+
return ObjectDetectionInputSchema;
|
|
787
1938
|
}
|
|
788
1939
|
static outputSchema() {
|
|
789
|
-
return
|
|
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
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
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
|
-
|
|
815
|
-
var
|
|
816
|
-
return new
|
|
2105
|
+
TaskRegistry13.registerTask(PoseLandmarkerTask);
|
|
2106
|
+
var PoseLandmarker = (input, config) => {
|
|
2107
|
+
return new PoseLandmarkerTask(input, config).run();
|
|
817
2108
|
};
|
|
818
|
-
|
|
819
|
-
// src/task/
|
|
820
|
-
import { CreateWorkflow as
|
|
821
|
-
var
|
|
822
|
-
var
|
|
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:
|
|
2139
|
+
model: modelSchema13
|
|
839
2140
|
},
|
|
840
2141
|
required: ["text", "model"],
|
|
841
2142
|
additionalProperties: false
|
|
842
2143
|
};
|
|
843
|
-
var
|
|
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
|
|
874
|
-
static type = "
|
|
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
|
|
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
|
|
2180
|
+
return TextClassificationInputSchema;
|
|
880
2181
|
}
|
|
881
2182
|
static outputSchema() {
|
|
882
|
-
return
|
|
2183
|
+
return TextClassificationOutputSchema;
|
|
883
2184
|
}
|
|
884
2185
|
}
|
|
885
|
-
|
|
886
|
-
var
|
|
887
|
-
return new
|
|
2186
|
+
TaskRegistry14.registerTask(TextClassificationTask);
|
|
2187
|
+
var TextClassification = (input, config) => {
|
|
2188
|
+
return new TextClassificationTask(input, config).run();
|
|
888
2189
|
};
|
|
889
|
-
|
|
2190
|
+
Workflow14.prototype.TextClassification = CreateWorkflow14(TextClassificationTask);
|
|
890
2191
|
// src/task/TextEmbeddingTask.ts
|
|
891
|
-
import { CreateWorkflow as
|
|
892
|
-
var
|
|
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:
|
|
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
|
-
|
|
2231
|
+
TaskRegistry15.registerTask(TextEmbeddingTask);
|
|
931
2232
|
var TextEmbedding = async (input, config) => {
|
|
932
2233
|
return new TextEmbeddingTask(input, config).run();
|
|
933
2234
|
};
|
|
934
|
-
|
|
2235
|
+
Workflow15.prototype.TextEmbedding = CreateWorkflow15(TextEmbeddingTask);
|
|
935
2236
|
// src/task/TextFillMaskTask.ts
|
|
936
|
-
import { CreateWorkflow as
|
|
937
|
-
var
|
|
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:
|
|
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 = "
|
|
990
|
-
static description = "Fills masked tokens in text
|
|
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
|
-
|
|
2299
|
+
TaskRegistry16.registerTask(TextFillMaskTask);
|
|
999
2300
|
var TextFillMask = (input, config) => {
|
|
1000
2301
|
return new TextFillMaskTask(input, config).run();
|
|
1001
2302
|
};
|
|
1002
|
-
|
|
2303
|
+
Workflow16.prototype.TextFillMask = CreateWorkflow16(TextFillMaskTask);
|
|
1003
2304
|
// src/task/TextGenerationTask.ts
|
|
1004
|
-
import { CreateWorkflow as
|
|
1005
|
-
var
|
|
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
|
|
2311
|
+
var modelSchema16 = TypeReplicateArray(TypeModel("model:TextGenerationTask"));
|
|
1011
2312
|
var TextGenerationInputSchema = {
|
|
1012
2313
|
type: "object",
|
|
1013
2314
|
properties: {
|
|
1014
|
-
model:
|
|
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: [
|
|
1069
|
-
title:
|
|
1070
|
-
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
|
-
|
|
2390
|
+
TaskRegistry17.registerTask(TextGenerationTask);
|
|
1090
2391
|
var TextGeneration = (input, config) => {
|
|
1091
2392
|
return new TextGenerationTask(input, config).run();
|
|
1092
2393
|
};
|
|
1093
|
-
|
|
2394
|
+
Workflow17.prototype.TextGeneration = CreateWorkflow17(TextGenerationTask);
|
|
1094
2395
|
// src/task/TextLanguageDetectionTask.ts
|
|
1095
|
-
import { CreateWorkflow as
|
|
1096
|
-
var
|
|
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:
|
|
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
|
-
|
|
2461
|
+
TaskRegistry18.registerTask(TextLanguageDetectionTask);
|
|
1161
2462
|
var TextLanguageDetection = (input, config) => {
|
|
1162
2463
|
return new TextLanguageDetectionTask(input, config).run();
|
|
1163
2464
|
};
|
|
1164
|
-
|
|
2465
|
+
Workflow18.prototype.TextLanguageDetection = CreateWorkflow18(TextLanguageDetectionTask);
|
|
1165
2466
|
// src/task/TextNamedEntityRecognitionTask.ts
|
|
1166
|
-
import { CreateWorkflow as
|
|
1167
|
-
var
|
|
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:
|
|
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 = "
|
|
1230
|
-
static description = "Extracts named entities from text
|
|
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
|
-
|
|
2539
|
+
TaskRegistry19.registerTask(TextNamedEntityRecognitionTask);
|
|
1239
2540
|
var TextNamedEntityRecognition = (input, config) => {
|
|
1240
2541
|
return new TextNamedEntityRecognitionTask(input, config).run();
|
|
1241
2542
|
};
|
|
1242
|
-
|
|
2543
|
+
Workflow19.prototype.TextNamedEntityRecognition = CreateWorkflow19(TextNamedEntityRecognitionTask);
|
|
1243
2544
|
// src/task/TextQuestionAnswerTask.ts
|
|
1244
|
-
import { CreateWorkflow as
|
|
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
|
|
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:
|
|
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
|
-
|
|
2597
|
+
TaskRegistry20.registerTask(TextQuestionAnswerTask);
|
|
1297
2598
|
var TextQuestionAnswer = (input, config) => {
|
|
1298
2599
|
return new TextQuestionAnswerTask(input, config).run();
|
|
1299
2600
|
};
|
|
1300
|
-
|
|
2601
|
+
Workflow20.prototype.TextQuestionAnswer = CreateWorkflow20(TextQuestionAnswerTask);
|
|
1301
2602
|
// src/task/TextRewriterTask.ts
|
|
1302
|
-
import { CreateWorkflow as
|
|
1303
|
-
var
|
|
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:
|
|
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
|
-
|
|
2648
|
+
TaskRegistry21.registerTask(TextRewriterTask);
|
|
1348
2649
|
var TextRewriter = (input, config) => {
|
|
1349
2650
|
return new TextRewriterTask(input, config).run();
|
|
1350
2651
|
};
|
|
1351
|
-
|
|
2652
|
+
Workflow21.prototype.TextRewriter = CreateWorkflow21(TextRewriterTask);
|
|
1352
2653
|
// src/task/TextSummaryTask.ts
|
|
1353
|
-
import { CreateWorkflow as
|
|
1354
|
-
var
|
|
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:
|
|
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
|
-
|
|
2694
|
+
TaskRegistry22.registerTask(TextSummaryTask);
|
|
1394
2695
|
var TextSummary = async (input, config) => {
|
|
1395
2696
|
return new TextSummaryTask(input, config).run();
|
|
1396
2697
|
};
|
|
1397
|
-
|
|
2698
|
+
Workflow22.prototype.TextSummary = CreateWorkflow22(TextSummaryTask);
|
|
1398
2699
|
// src/task/TextTranslationTask.ts
|
|
1399
|
-
import { CreateWorkflow as
|
|
1400
|
-
var
|
|
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:
|
|
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
|
-
|
|
2763
|
+
TaskRegistry23.registerTask(TextTranslationTask);
|
|
1463
2764
|
var TextTranslation = (input, config) => {
|
|
1464
2765
|
return new TextTranslationTask(input, config).run();
|
|
1465
2766
|
};
|
|
1466
|
-
|
|
2767
|
+
Workflow23.prototype.TextTranslation = CreateWorkflow23(TextTranslationTask);
|
|
1467
2768
|
// src/task/UnloadModelTask.ts
|
|
1468
|
-
import { CreateWorkflow as
|
|
1469
|
-
var
|
|
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:
|
|
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:
|
|
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
|
-
|
|
2801
|
+
TaskRegistry24.registerTask(UnloadModelTask);
|
|
1501
2802
|
var UnloadModel = (input, config) => {
|
|
1502
2803
|
return new UnloadModelTask(input, config).run();
|
|
1503
2804
|
};
|
|
1504
|
-
|
|
2805
|
+
Workflow24.prototype.UnloadModel = CreateWorkflow24(UnloadModelTask);
|
|
1505
2806
|
// src/task/VectorSimilarityTask.ts
|
|
1506
2807
|
import {
|
|
1507
2808
|
ArrayTask,
|
|
1508
|
-
CreateWorkflow as
|
|
2809
|
+
CreateWorkflow as CreateWorkflow25,
|
|
1509
2810
|
TaskError,
|
|
1510
|
-
TaskRegistry as
|
|
1511
|
-
Workflow as
|
|
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
|
-
|
|
2906
|
+
TaskRegistry25.registerTask(VectorSimilarityTask);
|
|
1606
2907
|
var Similarity = (input, config) => {
|
|
1607
2908
|
return new VectorSimilarityTask(input, config).run();
|
|
1608
2909
|
};
|
|
1609
|
-
|
|
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
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
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=
|
|
3066
|
+
//# debugId=64CEDA66BE50C92264756E2164756E21
|