@workglow/ai 0.0.71 → 0.0.72
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 +779 -218
- package/dist/browser.js.map +15 -8
- package/dist/bun.js +779 -218
- package/dist/bun.js.map +15 -8
- package/dist/node.js +779 -218
- package/dist/node.js.map +15 -8
- package/dist/task/BackgroundRemovalTask.d.ts +351 -0
- package/dist/task/BackgroundRemovalTask.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/{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 +7 -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/browser.js
CHANGED
|
@@ -446,6 +446,249 @@ class DocumentConverterText extends DocumentConverter {
|
|
|
446
446
|
return new Document(this.text, this.metadata);
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
|
+
// src/task/BackgroundRemovalTask.ts
|
|
450
|
+
import { CreateWorkflow, TaskRegistry, Workflow } from "@workglow/task-graph";
|
|
451
|
+
|
|
452
|
+
// src/task/base/AiTaskSchemas.ts
|
|
453
|
+
import {
|
|
454
|
+
FromSchemaDefaultOptions
|
|
455
|
+
} from "@workglow/util";
|
|
456
|
+
var TypedArrayType = null;
|
|
457
|
+
var TypedArraySchemaOptions = {
|
|
458
|
+
...FromSchemaDefaultOptions,
|
|
459
|
+
deserialize: [
|
|
460
|
+
{
|
|
461
|
+
pattern: { format: "TypedArray" },
|
|
462
|
+
output: TypedArrayType
|
|
463
|
+
}
|
|
464
|
+
]
|
|
465
|
+
};
|
|
466
|
+
var TypedArraySchema = (annotations = {}) => ({
|
|
467
|
+
oneOf: [
|
|
468
|
+
{
|
|
469
|
+
type: "array",
|
|
470
|
+
items: { type: "number", format: "Float64" },
|
|
471
|
+
title: "Float64Array",
|
|
472
|
+
description: "A 64-bit floating point array",
|
|
473
|
+
format: "Float64Array"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
type: "array",
|
|
477
|
+
items: { type: "number", format: "Float32" },
|
|
478
|
+
title: "Float32Array",
|
|
479
|
+
description: "A 32-bit floating point array",
|
|
480
|
+
format: "Float32Array"
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
type: "array",
|
|
484
|
+
items: { type: "number", format: "Int32" },
|
|
485
|
+
title: "Int32Array",
|
|
486
|
+
description: "A 32-bit integer array",
|
|
487
|
+
format: "Int32Array"
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
type: "array",
|
|
491
|
+
items: { type: "number", format: "Int16" },
|
|
492
|
+
title: "Int16Array",
|
|
493
|
+
description: "A 16-bit integer array",
|
|
494
|
+
format: "Int16Array"
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
type: "array",
|
|
498
|
+
items: { type: "number", format: "Int8" },
|
|
499
|
+
title: "Int8Array"
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
type: "array",
|
|
503
|
+
items: { type: "number", format: "Uint8" },
|
|
504
|
+
title: "Uint8Array",
|
|
505
|
+
description: "A 8-bit unsigned integer array",
|
|
506
|
+
format: "Uint8Array"
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
type: "array",
|
|
510
|
+
items: { type: "number", format: "Uint16" },
|
|
511
|
+
title: "Uint16Array",
|
|
512
|
+
description: "A 16-bit unsigned integer array",
|
|
513
|
+
format: "Uint16Array"
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
type: "array",
|
|
517
|
+
items: { type: "number", format: "Uint32" },
|
|
518
|
+
title: "Uint32Array",
|
|
519
|
+
description: "A 32-bit unsigned integer array",
|
|
520
|
+
format: "Uint32Array"
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
type: "array",
|
|
524
|
+
items: { type: "number", format: "Uint8Clamped" },
|
|
525
|
+
title: "Uint8ClampedArray",
|
|
526
|
+
description: "A 8-bit unsigned integer array with values clamped to 0-255",
|
|
527
|
+
format: "Uint8ClampedArray"
|
|
528
|
+
}
|
|
529
|
+
],
|
|
530
|
+
format: "TypedArray",
|
|
531
|
+
...annotations
|
|
532
|
+
});
|
|
533
|
+
var TypeLanguage = (annotations = {}) => ({
|
|
534
|
+
type: "string",
|
|
535
|
+
title: "Language",
|
|
536
|
+
description: "The language to use",
|
|
537
|
+
maxLength: 2,
|
|
538
|
+
minLength: 2,
|
|
539
|
+
...annotations
|
|
540
|
+
});
|
|
541
|
+
function TypeModelAsString(semantic = "model", options = {}) {
|
|
542
|
+
if (semantic !== "model" && !semantic.startsWith("model:")) {
|
|
543
|
+
throw new Error("Invalid semantic value");
|
|
544
|
+
}
|
|
545
|
+
const taskName = semantic.startsWith("model:") ? semantic.slice(6).replace(/Task$/, "").replaceAll(/[A-Z]/g, (char) => " " + char.toLowerCase()).trim() : null;
|
|
546
|
+
return {
|
|
547
|
+
title: "Model",
|
|
548
|
+
description: `The model ${taskName ? `for ${taskName} ` : "to use"}`,
|
|
549
|
+
...options,
|
|
550
|
+
format: semantic,
|
|
551
|
+
type: "string"
|
|
552
|
+
};
|
|
553
|
+
}
|
|
554
|
+
function TypeModelByDetail(semantic = "model", options = {}) {
|
|
555
|
+
if (semantic !== "model" && !semantic.startsWith("model:")) {
|
|
556
|
+
throw new Error("Invalid semantic value");
|
|
557
|
+
}
|
|
558
|
+
return {
|
|
559
|
+
...ModelSchema,
|
|
560
|
+
...options,
|
|
561
|
+
format: semantic
|
|
562
|
+
};
|
|
563
|
+
}
|
|
564
|
+
function TypeModel(semantic = "model", options = {}) {
|
|
565
|
+
return {
|
|
566
|
+
oneOf: [TypeModelAsString(semantic, options), TypeModelByDetail(semantic, options)],
|
|
567
|
+
...options,
|
|
568
|
+
format: semantic
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
var TypeReplicateArray = (type, annotations = {}) => ({
|
|
572
|
+
oneOf: [type, { type: "array", items: type }],
|
|
573
|
+
title: type.title,
|
|
574
|
+
description: type.description,
|
|
575
|
+
...type.format ? { format: type.format } : {},
|
|
576
|
+
...annotations,
|
|
577
|
+
"x-replicate": true
|
|
578
|
+
});
|
|
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
|
+
|
|
449
692
|
// src/task/base/AiTask.ts
|
|
450
693
|
import {
|
|
451
694
|
JobQueueTask,
|
|
@@ -565,139 +808,84 @@ class AiTask extends JobQueueTask {
|
|
|
565
808
|
return input;
|
|
566
809
|
}
|
|
567
810
|
}
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
title: "Float64Array",
|
|
588
|
-
description: "A 64-bit floating point array",
|
|
589
|
-
format: "Float64Array"
|
|
590
|
-
},
|
|
591
|
-
{
|
|
592
|
-
type: "array",
|
|
593
|
-
items: { type: "number", format: "Float32" },
|
|
594
|
-
title: "Float32Array",
|
|
595
|
-
description: "A 32-bit floating point array",
|
|
596
|
-
format: "Float32Array"
|
|
597
|
-
},
|
|
598
|
-
{
|
|
599
|
-
type: "array",
|
|
600
|
-
items: { type: "number", format: "Int32" },
|
|
601
|
-
title: "Int32Array",
|
|
602
|
-
description: "A 32-bit integer array",
|
|
603
|
-
format: "Int32Array"
|
|
604
|
-
},
|
|
605
|
-
{
|
|
606
|
-
type: "array",
|
|
607
|
-
items: { type: "number", format: "Int16" },
|
|
608
|
-
title: "Int16Array",
|
|
609
|
-
description: "A 16-bit integer array",
|
|
610
|
-
format: "Int16Array"
|
|
611
|
-
},
|
|
612
|
-
{
|
|
613
|
-
type: "array",
|
|
614
|
-
items: { type: "number", format: "Int8" },
|
|
615
|
-
title: "Int8Array"
|
|
616
|
-
},
|
|
617
|
-
{
|
|
618
|
-
type: "array",
|
|
619
|
-
items: { type: "number", format: "Uint8" },
|
|
620
|
-
title: "Uint8Array",
|
|
621
|
-
description: "A 8-bit unsigned integer array",
|
|
622
|
-
format: "Uint8Array"
|
|
623
|
-
},
|
|
624
|
-
{
|
|
625
|
-
type: "array",
|
|
626
|
-
items: { type: "number", format: "Uint16" },
|
|
627
|
-
title: "Uint16Array",
|
|
628
|
-
description: "A 16-bit unsigned integer array",
|
|
629
|
-
format: "Uint16Array"
|
|
630
|
-
},
|
|
631
|
-
{
|
|
632
|
-
type: "array",
|
|
633
|
-
items: { type: "number", format: "Uint32" },
|
|
634
|
-
title: "Uint32Array",
|
|
635
|
-
description: "A 32-bit unsigned integer array",
|
|
636
|
-
format: "Uint32Array"
|
|
637
|
-
},
|
|
638
|
-
{
|
|
639
|
-
type: "array",
|
|
640
|
-
items: { type: "number", format: "Uint8Clamped" },
|
|
641
|
-
title: "Uint8ClampedArray",
|
|
642
|
-
description: "A 8-bit unsigned integer array with values clamped to 0-255",
|
|
643
|
-
format: "Uint8ClampedArray"
|
|
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;
|
|
644
830
|
}
|
|
645
|
-
|
|
646
|
-
format: "TypedArray",
|
|
647
|
-
...annotations
|
|
648
|
-
});
|
|
649
|
-
var TypeLanguage = (annotations = {}) => ({
|
|
650
|
-
type: "string",
|
|
651
|
-
title: "Language",
|
|
652
|
-
description: "The language to use",
|
|
653
|
-
maxLength: 2,
|
|
654
|
-
minLength: 2,
|
|
655
|
-
...annotations
|
|
656
|
-
});
|
|
657
|
-
function TypeModelAsString(semantic = "model", options = {}) {
|
|
658
|
-
if (semantic !== "model" && !semantic.startsWith("model:")) {
|
|
659
|
-
throw new Error("Invalid semantic value");
|
|
831
|
+
return jobInput;
|
|
660
832
|
}
|
|
661
|
-
const taskName = semantic.startsWith("model:") ? semantic.slice(6).replace(/Task$/, "").replaceAll(/[A-Z]/g, (char) => " " + char.toLowerCase()).trim() : null;
|
|
662
|
-
return {
|
|
663
|
-
title: "Model",
|
|
664
|
-
description: `The model ${taskName ? `for ${taskName} ` : "to use"}`,
|
|
665
|
-
...options,
|
|
666
|
-
format: semantic,
|
|
667
|
-
type: "string"
|
|
668
|
-
};
|
|
669
833
|
}
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
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;
|
|
673
876
|
}
|
|
674
|
-
return {
|
|
675
|
-
...ModelSchema,
|
|
676
|
-
...options,
|
|
677
|
-
format: semantic
|
|
678
|
-
};
|
|
679
|
-
}
|
|
680
|
-
function TypeModel(semantic = "model", options = {}) {
|
|
681
|
-
return {
|
|
682
|
-
oneOf: [TypeModelAsString(semantic, options), TypeModelByDetail(semantic, options)],
|
|
683
|
-
...options,
|
|
684
|
-
format: semantic
|
|
685
|
-
};
|
|
686
877
|
}
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
...annotations,
|
|
693
|
-
"x-replicate": true
|
|
694
|
-
});
|
|
878
|
+
TaskRegistry.registerTask(BackgroundRemovalTask);
|
|
879
|
+
var BackgroundRemoval = (input, config) => {
|
|
880
|
+
return new BackgroundRemovalTask(input, config).run();
|
|
881
|
+
};
|
|
882
|
+
Workflow.prototype.BackgroundRemoval = CreateWorkflow(BackgroundRemovalTask);
|
|
695
883
|
// src/task/DocumentSplitterTask.ts
|
|
696
884
|
import {
|
|
697
|
-
CreateWorkflow,
|
|
885
|
+
CreateWorkflow as CreateWorkflow2,
|
|
698
886
|
Task,
|
|
699
|
-
TaskRegistry,
|
|
700
|
-
Workflow
|
|
887
|
+
TaskRegistry as TaskRegistry2,
|
|
888
|
+
Workflow as Workflow2
|
|
701
889
|
} from "@workglow/task-graph";
|
|
702
890
|
var inputSchema = {
|
|
703
891
|
type: "object",
|
|
@@ -752,18 +940,18 @@ class DocumentSplitterTask extends Task {
|
|
|
752
940
|
return { texts: this.flattenFragmentsToTexts(this.runInputData.file) };
|
|
753
941
|
}
|
|
754
942
|
}
|
|
755
|
-
|
|
943
|
+
TaskRegistry2.registerTask(DocumentSplitterTask);
|
|
756
944
|
var DocumentSplitter = (input) => {
|
|
757
945
|
return new DocumentSplitterTask(input).run();
|
|
758
946
|
};
|
|
759
|
-
|
|
947
|
+
Workflow2.prototype.DocumentSplitter = CreateWorkflow2(DocumentSplitterTask);
|
|
760
948
|
// src/task/DownloadModelTask.ts
|
|
761
|
-
import { CreateWorkflow as
|
|
762
|
-
var
|
|
949
|
+
import { CreateWorkflow as CreateWorkflow3, TaskRegistry as TaskRegistry3, Workflow as Workflow3 } from "@workglow/task-graph";
|
|
950
|
+
var modelSchema2 = TypeReplicateArray(TypeModel("model"));
|
|
763
951
|
var DownloadModelInputSchema = {
|
|
764
952
|
type: "object",
|
|
765
953
|
properties: {
|
|
766
|
-
model:
|
|
954
|
+
model: modelSchema2
|
|
767
955
|
},
|
|
768
956
|
required: ["model"],
|
|
769
957
|
additionalProperties: false
|
|
@@ -771,7 +959,7 @@ var DownloadModelInputSchema = {
|
|
|
771
959
|
var DownloadModelOutputSchema = {
|
|
772
960
|
type: "object",
|
|
773
961
|
properties: {
|
|
774
|
-
model:
|
|
962
|
+
model: modelSchema2
|
|
775
963
|
},
|
|
776
964
|
required: ["model"],
|
|
777
965
|
additionalProperties: false
|
|
@@ -811,15 +999,350 @@ class DownloadModelTask extends AiTask {
|
|
|
811
999
|
}
|
|
812
1000
|
}
|
|
813
1001
|
}
|
|
814
|
-
|
|
1002
|
+
TaskRegistry3.registerTask(DownloadModelTask);
|
|
815
1003
|
var DownloadModel = (input, config) => {
|
|
816
1004
|
return new DownloadModelTask(input, config).run();
|
|
817
1005
|
};
|
|
818
|
-
|
|
819
|
-
// src/task/
|
|
820
|
-
import { CreateWorkflow as
|
|
821
|
-
var
|
|
822
|
-
var
|
|
1006
|
+
Workflow3.prototype.DownloadModel = CreateWorkflow3(DownloadModelTask);
|
|
1007
|
+
// src/task/ImageClassificationTask.ts
|
|
1008
|
+
import { CreateWorkflow as CreateWorkflow4, TaskRegistry as TaskRegistry4, Workflow as Workflow4 } from "@workglow/task-graph";
|
|
1009
|
+
var modelSchema3 = TypeReplicateArray(TypeModel("model:ImageClassificationTask"));
|
|
1010
|
+
var ImageClassificationInputSchema = {
|
|
1011
|
+
type: "object",
|
|
1012
|
+
properties: {
|
|
1013
|
+
image: TypeReplicateArray(TypeImageInput),
|
|
1014
|
+
model: modelSchema3,
|
|
1015
|
+
categories: {
|
|
1016
|
+
type: "array",
|
|
1017
|
+
items: {
|
|
1018
|
+
type: "string"
|
|
1019
|
+
},
|
|
1020
|
+
title: "Categories",
|
|
1021
|
+
description: "List of candidate categories (optional, if provided uses zero-shot classification)",
|
|
1022
|
+
"x-ui-group": "Configuration"
|
|
1023
|
+
},
|
|
1024
|
+
maxCategories: {
|
|
1025
|
+
type: "number",
|
|
1026
|
+
minimum: 1,
|
|
1027
|
+
maximum: 1000,
|
|
1028
|
+
default: 5,
|
|
1029
|
+
title: "Max Categories",
|
|
1030
|
+
description: "The maximum number of categories to return",
|
|
1031
|
+
"x-ui-group": "Configuration"
|
|
1032
|
+
}
|
|
1033
|
+
},
|
|
1034
|
+
required: ["image", "model"],
|
|
1035
|
+
additionalProperties: false
|
|
1036
|
+
};
|
|
1037
|
+
var ImageClassificationOutputSchema = {
|
|
1038
|
+
type: "object",
|
|
1039
|
+
properties: {
|
|
1040
|
+
categories: {
|
|
1041
|
+
oneOf: [
|
|
1042
|
+
{ type: "array", items: TypeCategory },
|
|
1043
|
+
{ type: "array", items: { type: "array", items: TypeCategory } }
|
|
1044
|
+
],
|
|
1045
|
+
title: "Categories",
|
|
1046
|
+
description: "The classification categories with their scores"
|
|
1047
|
+
}
|
|
1048
|
+
},
|
|
1049
|
+
required: ["categories"],
|
|
1050
|
+
additionalProperties: false
|
|
1051
|
+
};
|
|
1052
|
+
|
|
1053
|
+
class ImageClassificationTask extends AiVisionTask {
|
|
1054
|
+
static type = "ImageClassificationTask";
|
|
1055
|
+
static category = "AI Vision Model";
|
|
1056
|
+
static title = "Image Classification";
|
|
1057
|
+
static description = "Classifies images into categories using vision models. Supports zero-shot classification when categories are provided.";
|
|
1058
|
+
static inputSchema() {
|
|
1059
|
+
return ImageClassificationInputSchema;
|
|
1060
|
+
}
|
|
1061
|
+
static outputSchema() {
|
|
1062
|
+
return ImageClassificationOutputSchema;
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
TaskRegistry4.registerTask(ImageClassificationTask);
|
|
1066
|
+
var ImageClassification = (input, config) => {
|
|
1067
|
+
return new ImageClassificationTask(input, config).run();
|
|
1068
|
+
};
|
|
1069
|
+
Workflow4.prototype.ImageClassification = CreateWorkflow4(ImageClassificationTask);
|
|
1070
|
+
// src/task/ImageEmbeddingTask.ts
|
|
1071
|
+
import { CreateWorkflow as CreateWorkflow5, TaskRegistry as TaskRegistry5, Workflow as Workflow5 } from "@workglow/task-graph";
|
|
1072
|
+
var modelSchema4 = TypeReplicateArray(TypeModel("model:ImageEmbeddingTask"));
|
|
1073
|
+
var embeddingSchema = TypedArraySchema({
|
|
1074
|
+
title: "Embedding",
|
|
1075
|
+
description: "The image embedding vector"
|
|
1076
|
+
});
|
|
1077
|
+
var ImageEmbeddingInputSchema = {
|
|
1078
|
+
type: "object",
|
|
1079
|
+
properties: {
|
|
1080
|
+
image: TypeReplicateArray(TypeImageInput),
|
|
1081
|
+
model: modelSchema4
|
|
1082
|
+
},
|
|
1083
|
+
required: ["image", "model"],
|
|
1084
|
+
additionalProperties: false
|
|
1085
|
+
};
|
|
1086
|
+
var ImageEmbeddingOutputSchema = {
|
|
1087
|
+
type: "object",
|
|
1088
|
+
properties: {
|
|
1089
|
+
vector: {
|
|
1090
|
+
oneOf: [embeddingSchema, { type: "array", items: embeddingSchema }],
|
|
1091
|
+
title: "Embedding",
|
|
1092
|
+
description: "The image embedding vector"
|
|
1093
|
+
}
|
|
1094
|
+
},
|
|
1095
|
+
required: ["vector"],
|
|
1096
|
+
additionalProperties: false
|
|
1097
|
+
};
|
|
1098
|
+
|
|
1099
|
+
class ImageEmbeddingTask extends AiVisionTask {
|
|
1100
|
+
static type = "ImageEmbeddingTask";
|
|
1101
|
+
static category = "AI Vision Model";
|
|
1102
|
+
static title = "Image Embedding";
|
|
1103
|
+
static description = "Generates embeddings from images using vision models";
|
|
1104
|
+
static inputSchema() {
|
|
1105
|
+
return ImageEmbeddingInputSchema;
|
|
1106
|
+
}
|
|
1107
|
+
static outputSchema() {
|
|
1108
|
+
return ImageEmbeddingOutputSchema;
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
TaskRegistry5.registerTask(ImageEmbeddingTask);
|
|
1112
|
+
var ImageEmbedding = (input, config) => {
|
|
1113
|
+
return new ImageEmbeddingTask(input, config).run();
|
|
1114
|
+
};
|
|
1115
|
+
Workflow5.prototype.ImageEmbedding = CreateWorkflow5(ImageEmbeddingTask);
|
|
1116
|
+
// src/task/ImageSegmentationTask.ts
|
|
1117
|
+
import { CreateWorkflow as CreateWorkflow6, TaskRegistry as TaskRegistry6, Workflow as Workflow6 } from "@workglow/task-graph";
|
|
1118
|
+
var modelSchema5 = TypeReplicateArray(TypeModel("model:ImageSegmentationTask"));
|
|
1119
|
+
var ImageSegmentationInputSchema = {
|
|
1120
|
+
type: "object",
|
|
1121
|
+
properties: {
|
|
1122
|
+
image: TypeReplicateArray(TypeImageInput),
|
|
1123
|
+
model: modelSchema5,
|
|
1124
|
+
threshold: {
|
|
1125
|
+
type: "number",
|
|
1126
|
+
title: "Threshold",
|
|
1127
|
+
description: "The threshold for filtering masks by score",
|
|
1128
|
+
minimum: 0,
|
|
1129
|
+
maximum: 1,
|
|
1130
|
+
default: 0.5,
|
|
1131
|
+
"x-ui-group": "Configuration"
|
|
1132
|
+
},
|
|
1133
|
+
maskThreshold: {
|
|
1134
|
+
type: "number",
|
|
1135
|
+
title: "Mask Threshold",
|
|
1136
|
+
description: "Threshold to use when turning predicted masks into binary values",
|
|
1137
|
+
minimum: 0,
|
|
1138
|
+
maximum: 1,
|
|
1139
|
+
default: 0.5,
|
|
1140
|
+
"x-ui-group": "Configuration"
|
|
1141
|
+
}
|
|
1142
|
+
},
|
|
1143
|
+
required: ["image", "model"],
|
|
1144
|
+
additionalProperties: false
|
|
1145
|
+
};
|
|
1146
|
+
var segmentationMaskSchema = {
|
|
1147
|
+
type: "object",
|
|
1148
|
+
properties: {
|
|
1149
|
+
label: {
|
|
1150
|
+
type: "string",
|
|
1151
|
+
title: "Label",
|
|
1152
|
+
description: "The label of the segmented region"
|
|
1153
|
+
},
|
|
1154
|
+
score: {
|
|
1155
|
+
type: "number",
|
|
1156
|
+
title: "Score",
|
|
1157
|
+
description: "The confidence score for this segmentation",
|
|
1158
|
+
minimum: 0,
|
|
1159
|
+
maximum: 1
|
|
1160
|
+
},
|
|
1161
|
+
mask: {
|
|
1162
|
+
type: "object",
|
|
1163
|
+
format: "image",
|
|
1164
|
+
title: "Mask",
|
|
1165
|
+
description: "Mask image"
|
|
1166
|
+
}
|
|
1167
|
+
},
|
|
1168
|
+
required: ["label", "score", "mask"],
|
|
1169
|
+
additionalProperties: false
|
|
1170
|
+
};
|
|
1171
|
+
var ImageSegmentationOutputSchema = {
|
|
1172
|
+
type: "object",
|
|
1173
|
+
properties: {
|
|
1174
|
+
masks: {
|
|
1175
|
+
oneOf: [
|
|
1176
|
+
{ type: "array", items: segmentationMaskSchema },
|
|
1177
|
+
{ type: "array", items: { type: "array", items: segmentationMaskSchema } }
|
|
1178
|
+
],
|
|
1179
|
+
title: "Segmentation Masks",
|
|
1180
|
+
description: "The segmented regions with their labels, scores, and masks"
|
|
1181
|
+
}
|
|
1182
|
+
},
|
|
1183
|
+
required: ["masks"],
|
|
1184
|
+
additionalProperties: false
|
|
1185
|
+
};
|
|
1186
|
+
|
|
1187
|
+
class ImageSegmentationTask extends AiVisionTask {
|
|
1188
|
+
static type = "ImageSegmentationTask";
|
|
1189
|
+
static category = "AI Vision Model";
|
|
1190
|
+
static title = "Image Segmentation";
|
|
1191
|
+
static description = "Segments images into regions with labels using computer vision models";
|
|
1192
|
+
static inputSchema() {
|
|
1193
|
+
return ImageSegmentationInputSchema;
|
|
1194
|
+
}
|
|
1195
|
+
static outputSchema() {
|
|
1196
|
+
return ImageSegmentationOutputSchema;
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
TaskRegistry6.registerTask(ImageSegmentationTask);
|
|
1200
|
+
var ImageSegmentation = (input, config) => {
|
|
1201
|
+
return new ImageSegmentationTask(input, config).run();
|
|
1202
|
+
};
|
|
1203
|
+
Workflow6.prototype.ImageSegmentation = CreateWorkflow6(ImageSegmentationTask);
|
|
1204
|
+
// src/task/ImageToTextTask.ts
|
|
1205
|
+
import { CreateWorkflow as CreateWorkflow7, TaskRegistry as TaskRegistry7, Workflow as Workflow7 } from "@workglow/task-graph";
|
|
1206
|
+
var modelSchema6 = TypeReplicateArray(TypeModel("model:ImageToTextTask"));
|
|
1207
|
+
var generatedTextSchema = {
|
|
1208
|
+
type: "string",
|
|
1209
|
+
title: "Text",
|
|
1210
|
+
description: "The generated text description"
|
|
1211
|
+
};
|
|
1212
|
+
var ImageToTextInputSchema = {
|
|
1213
|
+
type: "object",
|
|
1214
|
+
properties: {
|
|
1215
|
+
image: TypeReplicateArray(TypeImageInput),
|
|
1216
|
+
model: modelSchema6,
|
|
1217
|
+
maxTokens: {
|
|
1218
|
+
type: "number",
|
|
1219
|
+
title: "Max Tokens",
|
|
1220
|
+
description: "The maximum number of tokens to generate",
|
|
1221
|
+
minimum: 1,
|
|
1222
|
+
maximum: 4096,
|
|
1223
|
+
"x-ui-group": "Configuration"
|
|
1224
|
+
}
|
|
1225
|
+
},
|
|
1226
|
+
required: ["image", "model"],
|
|
1227
|
+
additionalProperties: false
|
|
1228
|
+
};
|
|
1229
|
+
var ImageToTextOutputSchema = {
|
|
1230
|
+
type: "object",
|
|
1231
|
+
properties: {
|
|
1232
|
+
text: {
|
|
1233
|
+
oneOf: [generatedTextSchema, { type: "array", items: generatedTextSchema }],
|
|
1234
|
+
title: generatedTextSchema.title,
|
|
1235
|
+
description: generatedTextSchema.description
|
|
1236
|
+
}
|
|
1237
|
+
},
|
|
1238
|
+
required: ["text"],
|
|
1239
|
+
additionalProperties: false
|
|
1240
|
+
};
|
|
1241
|
+
|
|
1242
|
+
class ImageToTextTask extends AiVisionTask {
|
|
1243
|
+
static type = "ImageToTextTask";
|
|
1244
|
+
static category = "AI Vision Model";
|
|
1245
|
+
static title = "Image to Text";
|
|
1246
|
+
static description = "Generates text descriptions from images using vision-language models";
|
|
1247
|
+
static inputSchema() {
|
|
1248
|
+
return ImageToTextInputSchema;
|
|
1249
|
+
}
|
|
1250
|
+
static outputSchema() {
|
|
1251
|
+
return ImageToTextOutputSchema;
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1254
|
+
TaskRegistry7.registerTask(ImageToTextTask);
|
|
1255
|
+
var ImageToText = (input, config) => {
|
|
1256
|
+
return new ImageToTextTask(input, config).run();
|
|
1257
|
+
};
|
|
1258
|
+
Workflow7.prototype.ImageToText = CreateWorkflow7(ImageToTextTask);
|
|
1259
|
+
// src/task/ObjectDetectionTask.ts
|
|
1260
|
+
import { CreateWorkflow as CreateWorkflow8, TaskRegistry as TaskRegistry8, Workflow as Workflow8 } from "@workglow/task-graph";
|
|
1261
|
+
var modelSchema7 = TypeReplicateArray(TypeModel("model:ObjectDetectionTask"));
|
|
1262
|
+
var detectionSchema = {
|
|
1263
|
+
type: "object",
|
|
1264
|
+
properties: {
|
|
1265
|
+
label: {
|
|
1266
|
+
type: "string",
|
|
1267
|
+
title: "Label",
|
|
1268
|
+
description: "The label of the detected object"
|
|
1269
|
+
},
|
|
1270
|
+
score: {
|
|
1271
|
+
type: "number",
|
|
1272
|
+
title: "Confidence Score",
|
|
1273
|
+
description: "The confidence score for this detection",
|
|
1274
|
+
minimum: 0,
|
|
1275
|
+
maximum: 1
|
|
1276
|
+
},
|
|
1277
|
+
box: TypeBoundingBox
|
|
1278
|
+
},
|
|
1279
|
+
required: ["label", "score", "box"],
|
|
1280
|
+
additionalProperties: false
|
|
1281
|
+
};
|
|
1282
|
+
var ObjectDetectionInputSchema = {
|
|
1283
|
+
type: "object",
|
|
1284
|
+
properties: {
|
|
1285
|
+
image: TypeReplicateArray(TypeImageInput),
|
|
1286
|
+
model: modelSchema7,
|
|
1287
|
+
labels: {
|
|
1288
|
+
type: "array",
|
|
1289
|
+
items: {
|
|
1290
|
+
type: "string"
|
|
1291
|
+
},
|
|
1292
|
+
title: "Labels",
|
|
1293
|
+
description: "List of object labels to detect (optional, if provided uses zero-shot detection)",
|
|
1294
|
+
"x-ui-group": "Configuration"
|
|
1295
|
+
},
|
|
1296
|
+
threshold: {
|
|
1297
|
+
type: "number",
|
|
1298
|
+
title: "Threshold",
|
|
1299
|
+
description: "The threshold for filtering detections by score",
|
|
1300
|
+
minimum: 0,
|
|
1301
|
+
maximum: 1,
|
|
1302
|
+
default: 0.5,
|
|
1303
|
+
"x-ui-group": "Configuration"
|
|
1304
|
+
}
|
|
1305
|
+
},
|
|
1306
|
+
required: ["image", "model"],
|
|
1307
|
+
additionalProperties: false
|
|
1308
|
+
};
|
|
1309
|
+
var ObjectDetectionOutputSchema = {
|
|
1310
|
+
type: "object",
|
|
1311
|
+
properties: {
|
|
1312
|
+
detections: {
|
|
1313
|
+
oneOf: [
|
|
1314
|
+
{ type: "array", items: detectionSchema },
|
|
1315
|
+
{ type: "array", items: { type: "array", items: detectionSchema } }
|
|
1316
|
+
],
|
|
1317
|
+
title: "Detections",
|
|
1318
|
+
description: "The detected objects with their labels, scores, and bounding boxes"
|
|
1319
|
+
}
|
|
1320
|
+
},
|
|
1321
|
+
required: ["detections"],
|
|
1322
|
+
additionalProperties: false
|
|
1323
|
+
};
|
|
1324
|
+
|
|
1325
|
+
class ObjectDetectionTask extends AiVisionTask {
|
|
1326
|
+
static type = "ObjectDetectionTask";
|
|
1327
|
+
static category = "AI Vision Model";
|
|
1328
|
+
static title = "Object Detection";
|
|
1329
|
+
static description = "Detects objects in images using vision models. Supports zero-shot detection when labels are provided.";
|
|
1330
|
+
static inputSchema() {
|
|
1331
|
+
return ObjectDetectionInputSchema;
|
|
1332
|
+
}
|
|
1333
|
+
static outputSchema() {
|
|
1334
|
+
return ObjectDetectionOutputSchema;
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1337
|
+
TaskRegistry8.registerTask(ObjectDetectionTask);
|
|
1338
|
+
var ObjectDetection = (input, config) => {
|
|
1339
|
+
return new ObjectDetectionTask(input, config).run();
|
|
1340
|
+
};
|
|
1341
|
+
Workflow8.prototype.ObjectDetection = CreateWorkflow8(ObjectDetectionTask);
|
|
1342
|
+
// src/task/TextClassificationTask.ts
|
|
1343
|
+
import { CreateWorkflow as CreateWorkflow9, TaskRegistry as TaskRegistry9, Workflow as Workflow9 } from "@workglow/task-graph";
|
|
1344
|
+
var modelSchema8 = TypeReplicateArray(TypeModel("model:TextClassificationTask"));
|
|
1345
|
+
var TextClassificationInputSchema = {
|
|
823
1346
|
type: "object",
|
|
824
1347
|
properties: {
|
|
825
1348
|
text: TypeReplicateArray({
|
|
@@ -827,20 +1350,30 @@ var TextClassifierInputSchema = {
|
|
|
827
1350
|
title: "Text",
|
|
828
1351
|
description: "The text to classify"
|
|
829
1352
|
}),
|
|
1353
|
+
candidateLabels: {
|
|
1354
|
+
type: "array",
|
|
1355
|
+
items: {
|
|
1356
|
+
type: "string"
|
|
1357
|
+
},
|
|
1358
|
+
title: "Candidate Labels",
|
|
1359
|
+
description: "List of candidate labels (optional, if provided uses zero-shot classification)",
|
|
1360
|
+
"x-ui-group": "Configuration"
|
|
1361
|
+
},
|
|
830
1362
|
maxCategories: {
|
|
831
1363
|
type: "number",
|
|
832
1364
|
minimum: 1,
|
|
833
1365
|
maximum: 1000,
|
|
834
1366
|
default: 5,
|
|
835
1367
|
title: "Max Categories",
|
|
836
|
-
description: "The maximum number of categories to return"
|
|
1368
|
+
description: "The maximum number of categories to return",
|
|
1369
|
+
"x-ui-group": "Configuration"
|
|
837
1370
|
},
|
|
838
|
-
model:
|
|
1371
|
+
model: modelSchema8
|
|
839
1372
|
},
|
|
840
1373
|
required: ["text", "model"],
|
|
841
1374
|
additionalProperties: false
|
|
842
1375
|
};
|
|
843
|
-
var
|
|
1376
|
+
var TextClassificationOutputSchema = {
|
|
844
1377
|
type: "object",
|
|
845
1378
|
properties: {
|
|
846
1379
|
categories: {
|
|
@@ -870,26 +1403,26 @@ var TextClassifierOutputSchema = {
|
|
|
870
1403
|
additionalProperties: false
|
|
871
1404
|
};
|
|
872
1405
|
|
|
873
|
-
class
|
|
874
|
-
static type = "
|
|
1406
|
+
class TextClassificationTask extends AiTask {
|
|
1407
|
+
static type = "TextClassificationTask";
|
|
875
1408
|
static category = "AI Text Model";
|
|
876
1409
|
static title = "Text Classifier";
|
|
877
|
-
static description = "Classifies text into
|
|
1410
|
+
static description = "Classifies text into categories using language models. Supports zero-shot classification when candidate labels are provided.";
|
|
878
1411
|
static inputSchema() {
|
|
879
|
-
return
|
|
1412
|
+
return TextClassificationInputSchema;
|
|
880
1413
|
}
|
|
881
1414
|
static outputSchema() {
|
|
882
|
-
return
|
|
1415
|
+
return TextClassificationOutputSchema;
|
|
883
1416
|
}
|
|
884
1417
|
}
|
|
885
|
-
|
|
886
|
-
var
|
|
887
|
-
return new
|
|
1418
|
+
TaskRegistry9.registerTask(TextClassificationTask);
|
|
1419
|
+
var TextClassification = (input, config) => {
|
|
1420
|
+
return new TextClassificationTask(input, config).run();
|
|
888
1421
|
};
|
|
889
|
-
|
|
1422
|
+
Workflow9.prototype.TextClassification = CreateWorkflow9(TextClassificationTask);
|
|
890
1423
|
// src/task/TextEmbeddingTask.ts
|
|
891
|
-
import { CreateWorkflow as
|
|
892
|
-
var
|
|
1424
|
+
import { CreateWorkflow as CreateWorkflow10, TaskRegistry as TaskRegistry10, Workflow as Workflow10 } from "@workglow/task-graph";
|
|
1425
|
+
var modelSchema9 = TypeReplicateArray(TypeModel("model:TextEmbeddingTask"));
|
|
893
1426
|
var TextEmbeddingInputSchema = {
|
|
894
1427
|
type: "object",
|
|
895
1428
|
properties: {
|
|
@@ -898,7 +1431,7 @@ var TextEmbeddingInputSchema = {
|
|
|
898
1431
|
title: "Text",
|
|
899
1432
|
description: "The text to embed"
|
|
900
1433
|
}),
|
|
901
|
-
model:
|
|
1434
|
+
model: modelSchema9
|
|
902
1435
|
},
|
|
903
1436
|
required: ["text", "model"],
|
|
904
1437
|
additionalProperties: false
|
|
@@ -927,14 +1460,14 @@ class TextEmbeddingTask extends AiTask {
|
|
|
927
1460
|
return TextEmbeddingOutputSchema;
|
|
928
1461
|
}
|
|
929
1462
|
}
|
|
930
|
-
|
|
1463
|
+
TaskRegistry10.registerTask(TextEmbeddingTask);
|
|
931
1464
|
var TextEmbedding = async (input, config) => {
|
|
932
1465
|
return new TextEmbeddingTask(input, config).run();
|
|
933
1466
|
};
|
|
934
|
-
|
|
1467
|
+
Workflow10.prototype.TextEmbedding = CreateWorkflow10(TextEmbeddingTask);
|
|
935
1468
|
// src/task/TextFillMaskTask.ts
|
|
936
|
-
import { CreateWorkflow as
|
|
937
|
-
var
|
|
1469
|
+
import { CreateWorkflow as CreateWorkflow11, TaskRegistry as TaskRegistry11, Workflow as Workflow11 } from "@workglow/task-graph";
|
|
1470
|
+
var modelSchema10 = TypeReplicateArray(TypeModel("model:TextFillMaskTask"));
|
|
938
1471
|
var TextFillMaskInputSchema = {
|
|
939
1472
|
type: "object",
|
|
940
1473
|
properties: {
|
|
@@ -943,7 +1476,7 @@ var TextFillMaskInputSchema = {
|
|
|
943
1476
|
title: "Text",
|
|
944
1477
|
description: "The text with a mask token to fill"
|
|
945
1478
|
}),
|
|
946
|
-
model:
|
|
1479
|
+
model: modelSchema10
|
|
947
1480
|
},
|
|
948
1481
|
required: ["text", "model"],
|
|
949
1482
|
additionalProperties: false
|
|
@@ -986,8 +1519,8 @@ var TextFillMaskOutputSchema = {
|
|
|
986
1519
|
class TextFillMaskTask extends AiTask {
|
|
987
1520
|
static type = "TextFillMaskTask";
|
|
988
1521
|
static category = "AI Text Model";
|
|
989
|
-
static title = "
|
|
990
|
-
static description = "Fills masked tokens in text
|
|
1522
|
+
static title = "Fill Mask";
|
|
1523
|
+
static description = "Fills masked tokens in text";
|
|
991
1524
|
static inputSchema() {
|
|
992
1525
|
return TextFillMaskInputSchema;
|
|
993
1526
|
}
|
|
@@ -995,23 +1528,23 @@ class TextFillMaskTask extends AiTask {
|
|
|
995
1528
|
return TextFillMaskOutputSchema;
|
|
996
1529
|
}
|
|
997
1530
|
}
|
|
998
|
-
|
|
1531
|
+
TaskRegistry11.registerTask(TextFillMaskTask);
|
|
999
1532
|
var TextFillMask = (input, config) => {
|
|
1000
1533
|
return new TextFillMaskTask(input, config).run();
|
|
1001
1534
|
};
|
|
1002
|
-
|
|
1535
|
+
Workflow11.prototype.TextFillMask = CreateWorkflow11(TextFillMaskTask);
|
|
1003
1536
|
// src/task/TextGenerationTask.ts
|
|
1004
|
-
import { CreateWorkflow as
|
|
1005
|
-
var
|
|
1537
|
+
import { CreateWorkflow as CreateWorkflow12, TaskRegistry as TaskRegistry12, Workflow as Workflow12 } from "@workglow/task-graph";
|
|
1538
|
+
var generatedTextSchema2 = {
|
|
1006
1539
|
type: "string",
|
|
1007
1540
|
title: "Text",
|
|
1008
1541
|
description: "The generated text"
|
|
1009
1542
|
};
|
|
1010
|
-
var
|
|
1543
|
+
var modelSchema11 = TypeReplicateArray(TypeModel("model:TextGenerationTask"));
|
|
1011
1544
|
var TextGenerationInputSchema = {
|
|
1012
1545
|
type: "object",
|
|
1013
1546
|
properties: {
|
|
1014
|
-
model:
|
|
1547
|
+
model: modelSchema11,
|
|
1015
1548
|
prompt: TypeReplicateArray({
|
|
1016
1549
|
type: "string",
|
|
1017
1550
|
title: "Prompt",
|
|
@@ -1065,9 +1598,9 @@ var TextGenerationOutputSchema = {
|
|
|
1065
1598
|
type: "object",
|
|
1066
1599
|
properties: {
|
|
1067
1600
|
text: {
|
|
1068
|
-
oneOf: [
|
|
1069
|
-
title:
|
|
1070
|
-
description:
|
|
1601
|
+
oneOf: [generatedTextSchema2, { type: "array", items: generatedTextSchema2 }],
|
|
1602
|
+
title: generatedTextSchema2.title,
|
|
1603
|
+
description: generatedTextSchema2.description
|
|
1071
1604
|
}
|
|
1072
1605
|
},
|
|
1073
1606
|
required: ["text"],
|
|
@@ -1086,14 +1619,14 @@ class TextGenerationTask extends AiTask {
|
|
|
1086
1619
|
return TextGenerationOutputSchema;
|
|
1087
1620
|
}
|
|
1088
1621
|
}
|
|
1089
|
-
|
|
1622
|
+
TaskRegistry12.registerTask(TextGenerationTask);
|
|
1090
1623
|
var TextGeneration = (input, config) => {
|
|
1091
1624
|
return new TextGenerationTask(input, config).run();
|
|
1092
1625
|
};
|
|
1093
|
-
|
|
1626
|
+
Workflow12.prototype.TextGeneration = CreateWorkflow12(TextGenerationTask);
|
|
1094
1627
|
// src/task/TextLanguageDetectionTask.ts
|
|
1095
|
-
import { CreateWorkflow as
|
|
1096
|
-
var
|
|
1628
|
+
import { CreateWorkflow as CreateWorkflow13, TaskRegistry as TaskRegistry13, Workflow as Workflow13 } from "@workglow/task-graph";
|
|
1629
|
+
var modelSchema12 = TypeReplicateArray(TypeModel("model:TextLanguageDetectionTask"));
|
|
1097
1630
|
var TextLanguageDetectionInputSchema = {
|
|
1098
1631
|
type: "object",
|
|
1099
1632
|
properties: {
|
|
@@ -1110,7 +1643,7 @@ var TextLanguageDetectionInputSchema = {
|
|
|
1110
1643
|
title: "Max Languages",
|
|
1111
1644
|
description: "The maximum number of languages to return"
|
|
1112
1645
|
},
|
|
1113
|
-
model:
|
|
1646
|
+
model: modelSchema12
|
|
1114
1647
|
},
|
|
1115
1648
|
required: ["text", "model"],
|
|
1116
1649
|
additionalProperties: false
|
|
@@ -1157,14 +1690,14 @@ class TextLanguageDetectionTask extends AiTask {
|
|
|
1157
1690
|
return TextLanguageDetectionOutputSchema;
|
|
1158
1691
|
}
|
|
1159
1692
|
}
|
|
1160
|
-
|
|
1693
|
+
TaskRegistry13.registerTask(TextLanguageDetectionTask);
|
|
1161
1694
|
var TextLanguageDetection = (input, config) => {
|
|
1162
1695
|
return new TextLanguageDetectionTask(input, config).run();
|
|
1163
1696
|
};
|
|
1164
|
-
|
|
1697
|
+
Workflow13.prototype.TextLanguageDetection = CreateWorkflow13(TextLanguageDetectionTask);
|
|
1165
1698
|
// src/task/TextNamedEntityRecognitionTask.ts
|
|
1166
|
-
import { CreateWorkflow as
|
|
1167
|
-
var
|
|
1699
|
+
import { CreateWorkflow as CreateWorkflow14, TaskRegistry as TaskRegistry14, Workflow as Workflow14 } from "@workglow/task-graph";
|
|
1700
|
+
var modelSchema13 = TypeReplicateArray(TypeModel("model:NamedEntityRecognitionTask"));
|
|
1168
1701
|
var TextNamedEntityRecognitionInputSchema = {
|
|
1169
1702
|
type: "object",
|
|
1170
1703
|
properties: {
|
|
@@ -1183,7 +1716,7 @@ var TextNamedEntityRecognitionInputSchema = {
|
|
|
1183
1716
|
"x-ui-group": "Configuration",
|
|
1184
1717
|
"x-ui-group-open": false
|
|
1185
1718
|
},
|
|
1186
|
-
model:
|
|
1719
|
+
model: modelSchema13
|
|
1187
1720
|
},
|
|
1188
1721
|
required: ["text", "model"],
|
|
1189
1722
|
additionalProperties: false
|
|
@@ -1226,8 +1759,8 @@ var TextNamedEntityRecognitionOutputSchema = {
|
|
|
1226
1759
|
class TextNamedEntityRecognitionTask extends AiTask {
|
|
1227
1760
|
static type = "TextNamedEntityRecognitionTask";
|
|
1228
1761
|
static category = "AI Text Model";
|
|
1229
|
-
static title = "
|
|
1230
|
-
static description = "Extracts named entities from text
|
|
1762
|
+
static title = "Named Entity Recognition";
|
|
1763
|
+
static description = "Extracts named entities from text";
|
|
1231
1764
|
static inputSchema() {
|
|
1232
1765
|
return TextNamedEntityRecognitionInputSchema;
|
|
1233
1766
|
}
|
|
@@ -1235,13 +1768,13 @@ class TextNamedEntityRecognitionTask extends AiTask {
|
|
|
1235
1768
|
return TextNamedEntityRecognitionOutputSchema;
|
|
1236
1769
|
}
|
|
1237
1770
|
}
|
|
1238
|
-
|
|
1771
|
+
TaskRegistry14.registerTask(TextNamedEntityRecognitionTask);
|
|
1239
1772
|
var TextNamedEntityRecognition = (input, config) => {
|
|
1240
1773
|
return new TextNamedEntityRecognitionTask(input, config).run();
|
|
1241
1774
|
};
|
|
1242
|
-
|
|
1775
|
+
Workflow14.prototype.TextNamedEntityRecognition = CreateWorkflow14(TextNamedEntityRecognitionTask);
|
|
1243
1776
|
// src/task/TextQuestionAnswerTask.ts
|
|
1244
|
-
import { CreateWorkflow as
|
|
1777
|
+
import { CreateWorkflow as CreateWorkflow15, TaskRegistry as TaskRegistry15, Workflow as Workflow15 } from "@workglow/task-graph";
|
|
1245
1778
|
var contextSchema = {
|
|
1246
1779
|
type: "string",
|
|
1247
1780
|
title: "Context",
|
|
@@ -1257,13 +1790,13 @@ var textSchema = {
|
|
|
1257
1790
|
title: "Text",
|
|
1258
1791
|
description: "The generated text"
|
|
1259
1792
|
};
|
|
1260
|
-
var
|
|
1793
|
+
var modelSchema14 = TypeReplicateArray(TypeModel("model:TextQuestionAnswerTask"));
|
|
1261
1794
|
var TextQuestionAnswerInputSchema = {
|
|
1262
1795
|
type: "object",
|
|
1263
1796
|
properties: {
|
|
1264
1797
|
context: TypeReplicateArray(contextSchema),
|
|
1265
1798
|
question: TypeReplicateArray(questionSchema),
|
|
1266
|
-
model:
|
|
1799
|
+
model: modelSchema14
|
|
1267
1800
|
},
|
|
1268
1801
|
required: ["context", "question", "model"],
|
|
1269
1802
|
additionalProperties: false
|
|
@@ -1293,14 +1826,14 @@ class TextQuestionAnswerTask extends AiTask {
|
|
|
1293
1826
|
return TextQuestionAnswerOutputSchema;
|
|
1294
1827
|
}
|
|
1295
1828
|
}
|
|
1296
|
-
|
|
1829
|
+
TaskRegistry15.registerTask(TextQuestionAnswerTask);
|
|
1297
1830
|
var TextQuestionAnswer = (input, config) => {
|
|
1298
1831
|
return new TextQuestionAnswerTask(input, config).run();
|
|
1299
1832
|
};
|
|
1300
|
-
|
|
1833
|
+
Workflow15.prototype.TextQuestionAnswer = CreateWorkflow15(TextQuestionAnswerTask);
|
|
1301
1834
|
// src/task/TextRewriterTask.ts
|
|
1302
|
-
import { CreateWorkflow as
|
|
1303
|
-
var
|
|
1835
|
+
import { CreateWorkflow as CreateWorkflow16, TaskRegistry as TaskRegistry16, Workflow as Workflow16 } from "@workglow/task-graph";
|
|
1836
|
+
var modelSchema15 = TypeReplicateArray(TypeModel("model:TextRewriterTask"));
|
|
1304
1837
|
var TextRewriterInputSchema = {
|
|
1305
1838
|
type: "object",
|
|
1306
1839
|
properties: {
|
|
@@ -1314,7 +1847,7 @@ var TextRewriterInputSchema = {
|
|
|
1314
1847
|
title: "Prompt",
|
|
1315
1848
|
description: "The prompt to direct the rewriting"
|
|
1316
1849
|
}),
|
|
1317
|
-
model:
|
|
1850
|
+
model: modelSchema15
|
|
1318
1851
|
},
|
|
1319
1852
|
required: ["text", "prompt", "model"],
|
|
1320
1853
|
additionalProperties: false
|
|
@@ -1344,14 +1877,14 @@ class TextRewriterTask extends AiTask {
|
|
|
1344
1877
|
return TextRewriterOutputSchema;
|
|
1345
1878
|
}
|
|
1346
1879
|
}
|
|
1347
|
-
|
|
1880
|
+
TaskRegistry16.registerTask(TextRewriterTask);
|
|
1348
1881
|
var TextRewriter = (input, config) => {
|
|
1349
1882
|
return new TextRewriterTask(input, config).run();
|
|
1350
1883
|
};
|
|
1351
|
-
|
|
1884
|
+
Workflow16.prototype.TextRewriter = CreateWorkflow16(TextRewriterTask);
|
|
1352
1885
|
// src/task/TextSummaryTask.ts
|
|
1353
|
-
import { CreateWorkflow as
|
|
1354
|
-
var
|
|
1886
|
+
import { CreateWorkflow as CreateWorkflow17, TaskRegistry as TaskRegistry17, Workflow as Workflow17 } from "@workglow/task-graph";
|
|
1887
|
+
var modelSchema16 = TypeReplicateArray(TypeModel("model:TextSummaryTask"));
|
|
1355
1888
|
var TextSummaryInputSchema = {
|
|
1356
1889
|
type: "object",
|
|
1357
1890
|
properties: {
|
|
@@ -1360,7 +1893,7 @@ var TextSummaryInputSchema = {
|
|
|
1360
1893
|
title: "Text",
|
|
1361
1894
|
description: "The text to summarize"
|
|
1362
1895
|
}),
|
|
1363
|
-
model:
|
|
1896
|
+
model: modelSchema16
|
|
1364
1897
|
},
|
|
1365
1898
|
required: ["text", "model"],
|
|
1366
1899
|
additionalProperties: false
|
|
@@ -1390,14 +1923,14 @@ class TextSummaryTask extends AiTask {
|
|
|
1390
1923
|
return TextSummaryOutputSchema;
|
|
1391
1924
|
}
|
|
1392
1925
|
}
|
|
1393
|
-
|
|
1926
|
+
TaskRegistry17.registerTask(TextSummaryTask);
|
|
1394
1927
|
var TextSummary = async (input, config) => {
|
|
1395
1928
|
return new TextSummaryTask(input, config).run();
|
|
1396
1929
|
};
|
|
1397
|
-
|
|
1930
|
+
Workflow17.prototype.TextSummary = CreateWorkflow17(TextSummaryTask);
|
|
1398
1931
|
// src/task/TextTranslationTask.ts
|
|
1399
|
-
import { CreateWorkflow as
|
|
1400
|
-
var
|
|
1932
|
+
import { CreateWorkflow as CreateWorkflow18, TaskRegistry as TaskRegistry18, Workflow as Workflow18 } from "@workglow/task-graph";
|
|
1933
|
+
var modelSchema17 = TypeReplicateArray(TypeModel("model:TextTranslationTask"));
|
|
1401
1934
|
var translationTextSchema = {
|
|
1402
1935
|
type: "string",
|
|
1403
1936
|
title: "Text",
|
|
@@ -1423,7 +1956,7 @@ var TextTranslationInputSchema = {
|
|
|
1423
1956
|
minLength: 2,
|
|
1424
1957
|
maxLength: 2
|
|
1425
1958
|
})),
|
|
1426
|
-
model:
|
|
1959
|
+
model: modelSchema17
|
|
1427
1960
|
},
|
|
1428
1961
|
required: ["text", "source_lang", "target_lang", "model"],
|
|
1429
1962
|
additionalProperties: false
|
|
@@ -1459,18 +1992,18 @@ class TextTranslationTask extends AiTask {
|
|
|
1459
1992
|
return TextTranslationOutputSchema;
|
|
1460
1993
|
}
|
|
1461
1994
|
}
|
|
1462
|
-
|
|
1995
|
+
TaskRegistry18.registerTask(TextTranslationTask);
|
|
1463
1996
|
var TextTranslation = (input, config) => {
|
|
1464
1997
|
return new TextTranslationTask(input, config).run();
|
|
1465
1998
|
};
|
|
1466
|
-
|
|
1999
|
+
Workflow18.prototype.TextTranslation = CreateWorkflow18(TextTranslationTask);
|
|
1467
2000
|
// src/task/UnloadModelTask.ts
|
|
1468
|
-
import { CreateWorkflow as
|
|
1469
|
-
var
|
|
2001
|
+
import { CreateWorkflow as CreateWorkflow19, TaskRegistry as TaskRegistry19, Workflow as Workflow19 } from "@workglow/task-graph";
|
|
2002
|
+
var modelSchema18 = TypeReplicateArray(TypeModel("model"));
|
|
1470
2003
|
var UnloadModelInputSchema = {
|
|
1471
2004
|
type: "object",
|
|
1472
2005
|
properties: {
|
|
1473
|
-
model:
|
|
2006
|
+
model: modelSchema18
|
|
1474
2007
|
},
|
|
1475
2008
|
required: ["model"],
|
|
1476
2009
|
additionalProperties: false
|
|
@@ -1478,7 +2011,7 @@ var UnloadModelInputSchema = {
|
|
|
1478
2011
|
var UnloadModelOutputSchema = {
|
|
1479
2012
|
type: "object",
|
|
1480
2013
|
properties: {
|
|
1481
|
-
model:
|
|
2014
|
+
model: modelSchema18
|
|
1482
2015
|
},
|
|
1483
2016
|
required: ["model"],
|
|
1484
2017
|
additionalProperties: false
|
|
@@ -1497,18 +2030,18 @@ class UnloadModelTask extends AiTask {
|
|
|
1497
2030
|
}
|
|
1498
2031
|
static cacheable = false;
|
|
1499
2032
|
}
|
|
1500
|
-
|
|
2033
|
+
TaskRegistry19.registerTask(UnloadModelTask);
|
|
1501
2034
|
var UnloadModel = (input, config) => {
|
|
1502
2035
|
return new UnloadModelTask(input, config).run();
|
|
1503
2036
|
};
|
|
1504
|
-
|
|
2037
|
+
Workflow19.prototype.UnloadModel = CreateWorkflow19(UnloadModelTask);
|
|
1505
2038
|
// src/task/VectorSimilarityTask.ts
|
|
1506
2039
|
import {
|
|
1507
2040
|
ArrayTask,
|
|
1508
|
-
CreateWorkflow as
|
|
2041
|
+
CreateWorkflow as CreateWorkflow20,
|
|
1509
2042
|
TaskError,
|
|
1510
|
-
TaskRegistry as
|
|
1511
|
-
Workflow as
|
|
2043
|
+
TaskRegistry as TaskRegistry20,
|
|
2044
|
+
Workflow as Workflow20
|
|
1512
2045
|
} from "@workglow/task-graph";
|
|
1513
2046
|
var SimilarityFn = {
|
|
1514
2047
|
COSINE: "cosine",
|
|
@@ -1602,11 +2135,11 @@ class VectorSimilarityTask extends ArrayTask {
|
|
|
1602
2135
|
};
|
|
1603
2136
|
}
|
|
1604
2137
|
}
|
|
1605
|
-
|
|
2138
|
+
TaskRegistry20.registerTask(VectorSimilarityTask);
|
|
1606
2139
|
var Similarity = (input, config) => {
|
|
1607
2140
|
return new VectorSimilarityTask(input, config).run();
|
|
1608
2141
|
};
|
|
1609
|
-
|
|
2142
|
+
Workflow20.prototype.Similarity = CreateWorkflow20(VectorSimilarityTask);
|
|
1610
2143
|
function inner(arr1, arr2) {
|
|
1611
2144
|
return 1 - arr1.reduce((acc, val, i) => acc + val * arr2[i], 0);
|
|
1612
2145
|
}
|
|
@@ -1650,6 +2183,10 @@ export {
|
|
|
1650
2183
|
TypeModelAsString,
|
|
1651
2184
|
TypeModel,
|
|
1652
2185
|
TypeLanguage,
|
|
2186
|
+
TypeImageInput,
|
|
2187
|
+
TypeCategory,
|
|
2188
|
+
TypeBoundingBox,
|
|
2189
|
+
TypeAudioInput,
|
|
1653
2190
|
TextTranslationTask,
|
|
1654
2191
|
TextTranslationOutputSchema,
|
|
1655
2192
|
TextTranslationInputSchema,
|
|
@@ -1687,19 +2224,39 @@ export {
|
|
|
1687
2224
|
TextEmbeddingOutputSchema,
|
|
1688
2225
|
TextEmbeddingInputSchema,
|
|
1689
2226
|
TextEmbedding,
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
2227
|
+
TextClassificationTask,
|
|
2228
|
+
TextClassificationOutputSchema,
|
|
2229
|
+
TextClassificationInputSchema,
|
|
2230
|
+
TextClassification,
|
|
1694
2231
|
TableFragment,
|
|
1695
2232
|
SimilarityFn,
|
|
1696
2233
|
Similarity,
|
|
2234
|
+
ObjectDetectionTask,
|
|
2235
|
+
ObjectDetectionOutputSchema,
|
|
2236
|
+
ObjectDetectionInputSchema,
|
|
2237
|
+
ObjectDetection,
|
|
1697
2238
|
ModelSchema,
|
|
1698
2239
|
ModelRepository,
|
|
1699
2240
|
ModelPrimaryKeyNames,
|
|
1700
2241
|
MODEL_REPOSITORY,
|
|
1701
2242
|
InMemoryModelRepository,
|
|
2243
|
+
ImageToTextTask,
|
|
2244
|
+
ImageToTextOutputSchema,
|
|
2245
|
+
ImageToTextInputSchema,
|
|
2246
|
+
ImageToText,
|
|
2247
|
+
ImageSegmentationTask,
|
|
2248
|
+
ImageSegmentationOutputSchema,
|
|
2249
|
+
ImageSegmentationInputSchema,
|
|
2250
|
+
ImageSegmentation,
|
|
1702
2251
|
ImageFragment,
|
|
2252
|
+
ImageEmbeddingTask,
|
|
2253
|
+
ImageEmbeddingOutputSchema,
|
|
2254
|
+
ImageEmbeddingInputSchema,
|
|
2255
|
+
ImageEmbedding,
|
|
2256
|
+
ImageClassificationTask,
|
|
2257
|
+
ImageClassificationOutputSchema,
|
|
2258
|
+
ImageClassificationInputSchema,
|
|
2259
|
+
ImageClassification,
|
|
1703
2260
|
DownloadModelTask,
|
|
1704
2261
|
DownloadModel,
|
|
1705
2262
|
DocumentSplitterTask,
|
|
@@ -1709,9 +2266,13 @@ export {
|
|
|
1709
2266
|
DocumentConverterMarkdown,
|
|
1710
2267
|
DocumentBaseFragment,
|
|
1711
2268
|
Document,
|
|
2269
|
+
BackgroundRemovalTask,
|
|
2270
|
+
BackgroundRemovalOutputSchema,
|
|
2271
|
+
BackgroundRemovalInputSchema,
|
|
2272
|
+
BackgroundRemoval,
|
|
1712
2273
|
AiTask,
|
|
1713
2274
|
AiProviderRegistry,
|
|
1714
2275
|
AiJob
|
|
1715
2276
|
};
|
|
1716
2277
|
|
|
1717
|
-
//# debugId=
|
|
2278
|
+
//# debugId=7B9E2A3103106B9D64756E2164756E21
|