@workglow/ai-provider 0.0.103 → 0.0.105
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/{HFT_JobRunFns-66fave8m.js → HFT_JobRunFns-bpedvh0r.js} +2 -2
- package/dist/anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -1
- package/dist/anthropic/common/Anthropic_ModelSchema.d.ts +9 -6
- package/dist/anthropic/common/Anthropic_ModelSchema.d.ts.map +1 -1
- package/dist/anthropic/index.js +8 -7
- package/dist/anthropic/index.js.map +4 -4
- package/dist/google-gemini/common/Gemini_JobRunFns.d.ts.map +1 -1
- package/dist/google-gemini/common/Gemini_ModelSchema.d.ts +12 -6
- package/dist/google-gemini/common/Gemini_ModelSchema.d.ts.map +1 -1
- package/dist/google-gemini/index.js +5 -4
- package/dist/google-gemini/index.js.map +3 -3
- package/dist/hf-transformers/common/HFT_JobRunFns.d.ts +21 -0
- package/dist/hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
- package/dist/hf-transformers/index.js +9 -9
- package/dist/hf-transformers/index.js.map +3 -3
- package/dist/{index-7et44e16.js → index-3345vk2h.js} +1 -1
- package/dist/{index-zqq3kw0n.js → index-5e3yw7mb.js} +54 -55
- package/dist/index-5e3yw7mb.js.map +11 -0
- package/dist/{index-p88ezt14.js → index-79rqre58.js} +5 -3
- package/dist/{index-p88ezt14.js.map → index-79rqre58.js.map} +3 -3
- package/dist/{index-edjqamf9.js → index-c5z3v9gn.js} +4 -3
- package/dist/{index-edjqamf9.js.map → index-c5z3v9gn.js.map} +3 -3
- package/dist/{index-qy5ksm4w.js → index-gjc388y4.js} +5 -3
- package/dist/{index-qy5ksm4w.js.map → index-gjc388y4.js.map} +3 -3
- package/dist/index-m0r2hvfz.js +57 -0
- package/dist/index-m0r2hvfz.js.map +10 -0
- package/dist/{index-3tvpdt0s.js → index-t54dgrfj.js} +5 -3
- package/dist/{index-3tvpdt0s.js.map → index-t54dgrfj.js.map} +3 -3
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts.map +1 -1
- package/dist/provider-hf-inference/common/HFI_ModelSchema.d.ts +12 -6
- package/dist/provider-hf-inference/common/HFI_ModelSchema.d.ts.map +1 -1
- package/dist/provider-hf-inference/index.js +5 -4
- package/dist/provider-hf-inference/index.js.map +3 -3
- package/dist/provider-llamacpp/index.js +3 -3
- package/dist/provider-llamacpp/index.js.map +3 -3
- package/dist/provider-ollama/index.js +3 -3
- package/dist/provider-ollama/index.js.map +3 -3
- package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -1
- package/dist/provider-openai/common/OpenAI_ModelSchema.d.ts +12 -6
- package/dist/provider-openai/common/OpenAI_ModelSchema.d.ts.map +1 -1
- package/dist/provider-openai/index.js +9 -8
- package/dist/provider-openai/index.js.map +4 -4
- package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts +16 -0
- package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts.map +1 -1
- package/dist/tf-mediapipe/index.js +3 -3
- package/dist/tf-mediapipe/index.js.map +3 -3
- package/package.json +13 -13
- package/dist/index-795ethaq.js +0 -54
- package/dist/index-795ethaq.js.map +0 -10
- package/dist/index-zqq3kw0n.js.map +0 -11
- /package/dist/{HFT_JobRunFns-66fave8m.js.map → HFT_JobRunFns-bpedvh0r.js.map} +0 -0
- /package/dist/{index-7et44e16.js.map → index-3345vk2h.js.map} +0 -0
|
@@ -28,31 +28,31 @@ import {
|
|
|
28
28
|
HFT_TextTranslation_Stream,
|
|
29
29
|
HFT_Unload,
|
|
30
30
|
clearPipelineCache
|
|
31
|
-
} from "../index-
|
|
31
|
+
} from "../index-3345vk2h.js";
|
|
32
32
|
import {
|
|
33
|
+
HfTransformersOnnxModelConfigSchema,
|
|
34
|
+
HfTransformersOnnxModelRecordSchema,
|
|
35
|
+
HfTransformersOnnxModelSchema,
|
|
33
36
|
HuggingFaceTransformersProvider
|
|
34
|
-
} from "../index-
|
|
37
|
+
} from "../index-5e3yw7mb.js";
|
|
35
38
|
import {
|
|
36
39
|
AudioPipelineUseCase,
|
|
37
40
|
HF_TRANSFORMERS_ONNX,
|
|
38
41
|
HTF_CACHE_NAME,
|
|
39
|
-
HfTransformersOnnxModelConfigSchema,
|
|
40
|
-
HfTransformersOnnxModelRecordSchema,
|
|
41
|
-
HfTransformersOnnxModelSchema,
|
|
42
42
|
MultimodalPipelineUseCase,
|
|
43
43
|
PipelineUseCase,
|
|
44
44
|
QuantizationDataType,
|
|
45
45
|
TextPipelineUseCase,
|
|
46
46
|
VisionPipelineUseCase
|
|
47
|
-
} from "../index-
|
|
47
|
+
} from "../index-m0r2hvfz.js";
|
|
48
48
|
import"../index-6j5pq722.js";
|
|
49
49
|
// src/hf-transformers/HFT_Worker.ts
|
|
50
|
-
import { globalServiceRegistry, WORKER_SERVER } from "@workglow/util";
|
|
50
|
+
import { getLogger, globalServiceRegistry, WORKER_SERVER } from "@workglow/util";
|
|
51
51
|
function HFT_WORKER_JOBRUN_REGISTER() {
|
|
52
52
|
const workerServer = globalServiceRegistry.get(WORKER_SERVER);
|
|
53
53
|
new HuggingFaceTransformersProvider(HFT_TASKS, HFT_STREAM_TASKS, HFT_REACTIVE_TASKS).registerOnWorkerServer(workerServer);
|
|
54
54
|
workerServer.sendReady();
|
|
55
|
-
|
|
55
|
+
getLogger().info("HFT_WORKER_JOBRUN registered");
|
|
56
56
|
}
|
|
57
57
|
export {
|
|
58
58
|
clearPipelineCache,
|
|
@@ -99,4 +99,4 @@ export {
|
|
|
99
99
|
AudioPipelineUseCase
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
//# debugId=
|
|
102
|
+
//# debugId=71B5865A6F6737EC64756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/hf-transformers/HFT_Worker.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { globalServiceRegistry, WORKER_SERVER } from \"@workglow/util\";\nimport { HFT_REACTIVE_TASKS, HFT_STREAM_TASKS, HFT_TASKS } from \"./common/HFT_JobRunFns\";\nimport { HuggingFaceTransformersProvider } from \"./HuggingFaceTransformersProvider\";\n\nexport function HFT_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new HuggingFaceTransformersProvider(\n HFT_TASKS,\n HFT_STREAM_TASKS,\n HFT_REACTIVE_TASKS\n ).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n
|
|
5
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getLogger, globalServiceRegistry, WORKER_SERVER } from \"@workglow/util\";\nimport { HFT_REACTIVE_TASKS, HFT_STREAM_TASKS, HFT_TASKS } from \"./common/HFT_JobRunFns\";\nimport { HuggingFaceTransformersProvider } from \"./HuggingFaceTransformersProvider\";\n\nexport function HFT_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new HuggingFaceTransformersProvider(\n HFT_TASKS,\n HFT_STREAM_TASKS,\n HFT_REACTIVE_TASKS\n ).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n getLogger().info(\"HFT_WORKER_JOBRUN registered\");\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AAIO,SAAS,0BAA0B,GAAG;AAAA,EAC3C,MAAM,eAAe,sBAAsB,IAAI,aAAa;AAAA,EAC5D,IAAI,gCACF,WACA,kBACA,kBACF,EAAE,uBAAuB,YAAY;AAAA,EACrC,aAAa,UAAU;AAAA,EACvB,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AAIO,SAAS,0BAA0B,GAAG;AAAA,EAC3C,MAAM,eAAe,sBAAsB,IAAI,aAAa;AAAA,EAC5D,IAAI,gCACF,WACA,kBACA,kBACF,EAAE,uBAAuB,YAAY;AAAA,EACrC,aAAa,UAAU;AAAA,EACvB,UAAU,EAAE,KAAK,8BAA8B;AAAA;",
|
|
8
|
+
"debugId": "71B5865A6F6737EC64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,56 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
int8: "int8",
|
|
10
|
-
uint8: "uint8",
|
|
11
|
-
q4: "q4",
|
|
12
|
-
bnb4: "bnb4",
|
|
13
|
-
q4f16: "q4f16"
|
|
14
|
-
};
|
|
15
|
-
var TextPipelineUseCase = {
|
|
16
|
-
"fill-mask": "fill-mask",
|
|
17
|
-
"token-classification": "token-classification",
|
|
18
|
-
"text-generation": "text-generation",
|
|
19
|
-
"text2text-generation": "text2text-generation",
|
|
20
|
-
"text-classification": "text-classification",
|
|
21
|
-
summarization: "summarization",
|
|
22
|
-
translation: "translation",
|
|
23
|
-
"feature-extraction": "feature-extraction",
|
|
24
|
-
"zero-shot-classification": "zero-shot-classification",
|
|
25
|
-
"question-answering": "question-answering"
|
|
26
|
-
};
|
|
27
|
-
var VisionPipelineUseCase = {
|
|
28
|
-
"background-removal": "background-removal",
|
|
29
|
-
"image-segmentation": "image-segmentation",
|
|
30
|
-
"depth-estimation": "depth-estimation",
|
|
31
|
-
"image-classification": "image-classification",
|
|
32
|
-
"image-to-image": "image-to-image",
|
|
33
|
-
"object-detection": "object-detection",
|
|
34
|
-
"image-feature-extraction": "image-feature-extraction"
|
|
35
|
-
};
|
|
36
|
-
var AudioPipelineUseCase = {
|
|
37
|
-
"audio-classification": "audio-classification",
|
|
38
|
-
"automatic-speech-recognition": "automatic-speech-recognition",
|
|
39
|
-
"text-to-speech": "text-to-speech"
|
|
40
|
-
};
|
|
41
|
-
var MultimodalPipelineUseCase = {
|
|
42
|
-
"document-question-answering": "document-question-answering",
|
|
43
|
-
"image-to-text": "image-to-text",
|
|
44
|
-
"zero-shot-audio-classification": "zero-shot-audio-classification",
|
|
45
|
-
"zero-shot-image-classification": "zero-shot-image-classification",
|
|
46
|
-
"zero-shot-object-detection": "zero-shot-object-detection"
|
|
47
|
-
};
|
|
48
|
-
var PipelineUseCase = {
|
|
49
|
-
...TextPipelineUseCase,
|
|
50
|
-
...VisionPipelineUseCase,
|
|
51
|
-
...AudioPipelineUseCase,
|
|
52
|
-
...MultimodalPipelineUseCase
|
|
53
|
-
};
|
|
1
|
+
import {
|
|
2
|
+
HF_TRANSFORMERS_ONNX,
|
|
3
|
+
PipelineUseCase,
|
|
4
|
+
QuantizationDataType
|
|
5
|
+
} from "./index-m0r2hvfz.js";
|
|
6
|
+
import {
|
|
7
|
+
__require
|
|
8
|
+
} from "./index-6j5pq722.js";
|
|
54
9
|
|
|
55
10
|
// src/hf-transformers/common/HFT_ModelSchema.ts
|
|
56
11
|
import { ModelConfigSchema, ModelRecordSchema } from "@workglow/ai";
|
|
@@ -166,6 +121,50 @@ var HfTransformersOnnxModelConfigSchema = {
|
|
|
166
121
|
additionalProperties: false
|
|
167
122
|
};
|
|
168
123
|
|
|
169
|
-
|
|
124
|
+
// src/hf-transformers/HuggingFaceTransformersProvider.ts
|
|
125
|
+
import {
|
|
126
|
+
AiProvider
|
|
127
|
+
} from "@workglow/ai";
|
|
128
|
+
class HuggingFaceTransformersProvider extends AiProvider {
|
|
129
|
+
name = HF_TRANSFORMERS_ONNX;
|
|
130
|
+
taskTypes = [
|
|
131
|
+
"DownloadModelTask",
|
|
132
|
+
"UnloadModelTask",
|
|
133
|
+
"CountTokensTask",
|
|
134
|
+
"TextEmbeddingTask",
|
|
135
|
+
"TextGenerationTask",
|
|
136
|
+
"TextQuestionAnswerTask",
|
|
137
|
+
"TextLanguageDetectionTask",
|
|
138
|
+
"TextClassificationTask",
|
|
139
|
+
"TextFillMaskTask",
|
|
140
|
+
"TextNamedEntityRecognitionTask",
|
|
141
|
+
"TextRewriterTask",
|
|
142
|
+
"TextSummaryTask",
|
|
143
|
+
"TextTranslationTask",
|
|
144
|
+
"ImageSegmentationTask",
|
|
145
|
+
"ImageToTextTask",
|
|
146
|
+
"BackgroundRemovalTask",
|
|
147
|
+
"ImageEmbeddingTask",
|
|
148
|
+
"ImageClassificationTask",
|
|
149
|
+
"ObjectDetectionTask"
|
|
150
|
+
];
|
|
151
|
+
constructor(tasks, streamTasks, reactiveTasks) {
|
|
152
|
+
super(tasks, streamTasks, reactiveTasks);
|
|
153
|
+
}
|
|
154
|
+
async onInitialize(options) {
|
|
155
|
+
if (options.mode === "inline") {
|
|
156
|
+
const { env } = await import("@sroussey/transformers");
|
|
157
|
+
env.backends.onnx.wasm.proxy = true;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async dispose() {
|
|
161
|
+
if (this.tasks) {
|
|
162
|
+
const { clearPipelineCache } = await import("./HFT_JobRunFns-bpedvh0r.js");
|
|
163
|
+
clearPipelineCache();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export { HfTransformersOnnxModelSchema, HfTransformersOnnxModelRecordSchema, HfTransformersOnnxModelConfigSchema, HuggingFaceTransformersProvider };
|
|
170
169
|
|
|
171
|
-
//# debugId=
|
|
170
|
+
//# debugId=792985EEFD43B74064756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/hf-transformers/common/HFT_ModelSchema.ts", "../src/hf-transformers/HuggingFaceTransformersProvider.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { HF_TRANSFORMERS_ONNX, PipelineUseCase, QuantizationDataType } from \"./HFT_Constants\";\n\nexport const HfTransformersOnnxModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: HF_TRANSFORMERS_ONNX,\n description: \"Discriminator: ONNX runtime backend.\",\n },\n provider_config: {\n type: \"object\",\n description: \"ONNX runtime-specific options.\",\n properties: {\n pipeline: {\n type: \"string\",\n enum: Object.values(PipelineUseCase),\n description: \"Pipeline type for the ONNX model.\",\n default: \"text-generation\",\n },\n model_path: {\n type: \"string\",\n description: \"Filesystem path or URI for the ONNX model.\",\n },\n dtype: {\n type: \"string\",\n enum: Object.values(QuantizationDataType),\n description: \"Data type for the ONNX model.\",\n default: \"auto\",\n },\n device: {\n type: \"string\",\n enum: [\"cpu\", \"gpu\", \"webgpu\", \"wasm\", \"metal\"],\n description: \"High-level device selection.\",\n default: \"webgpu\",\n },\n execution_providers: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Raw ONNX Runtime execution provider identifiers.\",\n \"x-ui-hidden\": true,\n },\n intra_op_num_threads: {\n type: \"integer\",\n minimum: 1,\n },\n inter_op_num_threads: {\n type: \"integer\",\n minimum: 1,\n },\n use_external_data_format: {\n type: \"boolean\",\n description: \"Whether the model uses external data format.\",\n },\n native_dimensions: {\n type: \"integer\",\n description: \"The native dimensions of the model.\",\n },\n pooling: {\n type: \"string\",\n enum: [\"mean\", \"last_token\", \"cls\"],\n description: \"The pooling strategy to use for the model.\",\n default: \"mean\",\n },\n normalize: {\n type: \"boolean\",\n description: \"Whether the model uses normalization.\",\n default: true,\n },\n language_style: {\n type: \"string\",\n description: \"The language style of the model.\",\n },\n mrl: {\n type: \"boolean\",\n description: \"Whether the model uses matryoshka.\",\n default: false,\n },\n },\n required: [\"model_path\", \"pipeline\"],\n additionalProperties: false,\n if: {\n properties: {\n pipeline: {\n const: \"feature-extraction\",\n },\n },\n },\n then: {\n required: [\"native_dimensions\"],\n },\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const HfTransformersOnnxModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...HfTransformersOnnxModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...HfTransformersOnnxModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type HfTransformersOnnxModelRecord = FromSchema<typeof HfTransformersOnnxModelRecordSchema>;\n\nexport const HfTransformersOnnxModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...HfTransformersOnnxModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...HfTransformersOnnxModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type HfTransformersOnnxModelConfig = FromSchema<typeof HfTransformersOnnxModelConfigSchema>;\n",
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRegisterOptions,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { HF_TRANSFORMERS_ONNX } from \"./common/HFT_Constants\";\nimport type { HfTransformersOnnxModelConfig } from \"./common/HFT_ModelSchema\";\n\n/**\n * AI provider for HuggingFace Transformers ONNX models.\n *\n * Supports text, vision, and multimodal tasks via the @sroussey/transformers library.\n *\n * Task run functions are injected via the constructor so that the heavy\n * `@sroussey/transformers` library is only imported where actually needed\n * (inline mode, worker server), not on the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no heavy imports:\n * await new HuggingFaceTransformersProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_hft.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { HFT_TASKS } from \"@workglow/ai-provider/hf-transformers\";\n * await new HuggingFaceTransformersProvider(HFT_TASKS).register({ mode: \"inline\" });\n *\n * // Worker side -- caller provides the tasks:\n * import { HFT_TASKS } from \"@workglow/ai-provider/hf-transformers\";\n * new HuggingFaceTransformersProvider(HFT_TASKS).registerOnWorkerServer(workerServer);\n * ```\n */\nexport class HuggingFaceTransformersProvider extends AiProvider<HfTransformersOnnxModelConfig> {\n readonly name = HF_TRANSFORMERS_ONNX;\n\n readonly taskTypes = [\n \"DownloadModelTask\",\n \"UnloadModelTask\",\n \"CountTokensTask\",\n \"TextEmbeddingTask\",\n \"TextGenerationTask\",\n \"TextQuestionAnswerTask\",\n \"TextLanguageDetectionTask\",\n \"TextClassificationTask\",\n \"TextFillMaskTask\",\n \"TextNamedEntityRecognitionTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"TextTranslationTask\",\n \"ImageSegmentationTask\",\n \"ImageToTextTask\",\n \"BackgroundRemovalTask\",\n \"ImageEmbeddingTask\",\n \"ImageClassificationTask\",\n \"ObjectDetectionTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, HfTransformersOnnxModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, HfTransformersOnnxModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfTransformersOnnxModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n\n protected override async onInitialize(options: AiProviderRegisterOptions): Promise<void> {\n if (options.mode === \"inline\") {\n const { env } = await import(\"@sroussey/transformers\");\n // @ts-ignore -- backends.onnx.wasm.proxy is not fully typed\n env.backends.onnx.wasm.proxy = true;\n }\n }\n\n override async dispose(): Promise<void> {\n if (this.tasks) {\n const { clearPipelineCache } = await import(\"./common/HFT_JobRunFns\");\n clearPipelineCache();\n }\n }\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": ";;;;;;;;;;AAMA;AAIO,IAAM,gCAAgC;AAAA,EAC3C,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM,OAAO,OAAO,eAAe;AAAA,UACnC,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,QACA,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM,OAAO,OAAO,oBAAoB;AAAA,UACxC,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,MAAM,CAAC,OAAO,OAAO,UAAU,QAAQ,OAAO;AAAA,UAC9C,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,QACA,qBAAqB;AAAA,UACnB,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,SAAS;AAAA,UACxB,aAAa;AAAA,UACb,eAAe;AAAA,QACjB;AAAA,QACA,sBAAsB;AAAA,UACpB,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,QACA,sBAAsB;AAAA,UACpB,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,QACA,0BAA0B;AAAA,UACxB,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,SAAS;AAAA,UACP,MAAM;AAAA,UACN,MAAM,CAAC,QAAQ,cAAc,KAAK;AAAA,UAClC,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,QACA,WAAW;AAAA,UACT,MAAM;AAAA,UACN,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,QACA,gBAAgB;AAAA,UACd,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,KAAK;AAAA,UACH,MAAM;AAAA,UACN,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAU,CAAC,cAAc,UAAU;AAAA,MACnC,sBAAsB;AAAA,MACtB,IAAI;AAAA,QACF,YAAY;AAAA,UACV,UAAU;AAAA,YACR,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,UAAU,CAAC,mBAAmB;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,sCAAsC;AAAA,EACjD,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,8BAA8B;AAAA,EACnC;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,8BAA8B,QAAQ;AAAA,EACnF,sBAAsB;AACxB;AAIO,IAAM,sCAAsC;AAAA,EACjD,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,8BAA8B;AAAA,EACnC;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,8BAA8B,QAAQ;AAAA,EACnF,sBAAsB;AACxB;;;ACtHA;AAAA;AAAA;AAoCO,MAAM,wCAAwC,WAA0C;AAAA,EACpF,OAAO;AAAA,EAEP,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,aACA,eACA;AAAA,IACA,MAAM,OAAO,aAAa,aAAa;AAAA;AAAA,OAGhB,aAAY,CAAC,SAAmD;AAAA,IACvF,IAAI,QAAQ,SAAS,UAAU;AAAA,MAC7B,QAAQ,QAAQ,MAAa;AAAA,MAE7B,IAAI,SAAS,KAAK,KAAK,QAAQ;AAAA,IACjC;AAAA;AAAA,OAGa,QAAO,GAAkB;AAAA,IACtC,IAAI,KAAK,OAAO;AAAA,MACd,QAAQ,uBAAuB,MAAa;AAAA,MAC5C,mBAAmB;AAAA,IACrB;AAAA;AAEJ;",
|
|
9
|
+
"debugId": "792985EEFD43B74064756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -18,9 +18,11 @@ var OpenAiModelSchema = {
|
|
|
18
18
|
type: "string",
|
|
19
19
|
description: "The OpenAI model identifier (e.g., 'gpt-4o', 'text-embedding-3-small')."
|
|
20
20
|
},
|
|
21
|
-
|
|
21
|
+
credential_key: {
|
|
22
22
|
type: "string",
|
|
23
|
-
|
|
23
|
+
format: "credential",
|
|
24
|
+
description: "Key to look up in the credential store for the API key.",
|
|
25
|
+
"x-ui-hidden": true
|
|
24
26
|
},
|
|
25
27
|
base_url: {
|
|
26
28
|
type: "string",
|
|
@@ -79,4 +81,4 @@ class OpenAiProvider extends AiProvider {
|
|
|
79
81
|
|
|
80
82
|
export { OPENAI, OpenAiModelSchema, OpenAiModelRecordSchema, OpenAiModelConfigSchema, OpenAiProvider };
|
|
81
83
|
|
|
82
|
-
//# debugId=
|
|
84
|
+
//# debugId=34B030CB7BA9410C64756E2164756E21
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"sources": ["../src/provider-openai/common/OpenAI_Constants.ts", "../src/provider-openai/common/OpenAI_ModelSchema.ts", "../src/provider-openai/OpenAiProvider.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const OPENAI = \"OPENAI\";\n",
|
|
6
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { OPENAI } from \"./OpenAI_Constants\";\n\nexport const OpenAiModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: OPENAI,\n description: \"Discriminator: OpenAI cloud provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"OpenAI-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description: \"The OpenAI model identifier (e.g., 'gpt-4o', 'text-embedding-3-small').\",\n },\n
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { OPENAI } from \"./OpenAI_Constants\";\n\nexport const OpenAiModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: OPENAI,\n description: \"Discriminator: OpenAI cloud provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"OpenAI-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description: \"The OpenAI model identifier (e.g., 'gpt-4o', 'text-embedding-3-small').\",\n },\n credential_key: {\n type: \"string\",\n format: \"credential\",\n description:\n \"Key to look up in the credential store for the API key.\",\n \"x-ui-hidden\": true,\n },\n base_url: {\n type: \"string\",\n description: \"Base URL for the OpenAI API. Useful for Azure OpenAI or proxy servers.\",\n default: \"https://api.openai.com/v1\",\n },\n organization: {\n type: \"string\",\n description: \"OpenAI organization ID (optional).\",\n },\n },\n required: [\"model_name\"],\n additionalProperties: false,\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const OpenAiModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...OpenAiModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...OpenAiModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type OpenAiModelRecord = FromSchema<typeof OpenAiModelRecordSchema>;\n\nexport const OpenAiModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...OpenAiModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...OpenAiModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type OpenAiModelConfig = FromSchema<typeof OpenAiModelConfigSchema>;\n",
|
|
7
7
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { OPENAI } from \"./common/OpenAI_Constants\";\nimport type { OpenAiModelConfig } from \"./common/OpenAI_ModelSchema\";\n\n/**\n * AI provider for OpenAI cloud models.\n *\n * Supports text generation, text embedding, text rewriting, and text summarization\n * via the OpenAI API using the `openai` SDK.\n *\n * Task run functions are injected via the constructor so that the `openai` SDK\n * is only imported where actually needed (inline mode, worker server), not on\n * the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no SDK import:\n * await new OpenAiProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_openai.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { OPENAI_TASKS } from \"@workglow/ai-provider/openai\";\n * await new OpenAiProvider(OPENAI_TASKS).register({ mode: \"inline\" });\n *\n * // Worker side -- caller provides the tasks:\n * import { OPENAI_TASKS } from \"@workglow/ai-provider/openai\";\n * new OpenAiProvider(OPENAI_TASKS).registerOnWorkerServer(workerServer);\n * ```\n */\nexport class OpenAiProvider extends AiProvider<OpenAiModelConfig> {\n readonly name = OPENAI;\n\n readonly taskTypes = [\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"CountTokensTask\",\n \"StructuredGenerationTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, OpenAiModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, OpenAiModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, OpenAiModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n"
|
|
8
8
|
],
|
|
9
|
-
"mappings": ";AAMO,IAAM,SAAS;;;ACAtB;AAIO,IAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": ";AAMO,IAAM,SAAS;;;ACAtB;AAIO,IAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,gBAAgB;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,aACE;AAAA,UACF,eAAe;AAAA,QACjB;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,QACA,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,UAAU,CAAC,YAAY;AAAA,MACvB,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,kBAAkB;AAAA,EACvB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,kBAAkB,QAAQ;AAAA,EACvE,sBAAsB;AACxB;AAIO,IAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,kBAAkB;AAAA,EACvB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,kBAAkB,QAAQ;AAAA,EACvE,sBAAsB;AACxB;;;AChEA;AAAA;AAAA;AAoCO,MAAM,uBAAuB,WAA8B;AAAA,EACvD,OAAO;AAAA,EAEP,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,aACA,eACA;AAAA,IACA,MAAM,OAAO,aAAa,aAAa;AAAA;AAE3C;",
|
|
10
|
+
"debugId": "34B030CB7BA9410C64756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
|
@@ -18,9 +18,10 @@ var AnthropicModelSchema = {
|
|
|
18
18
|
type: "string",
|
|
19
19
|
description: "The Anthropic model identifier (e.g., 'claude-sonnet-4-20250514', 'claude-3-5-haiku-20241022')."
|
|
20
20
|
},
|
|
21
|
-
|
|
21
|
+
credential_key: {
|
|
22
22
|
type: "string",
|
|
23
|
-
|
|
23
|
+
format: "credential",
|
|
24
|
+
description: "Key to look up in the credential store for the API key.",
|
|
24
25
|
"x-ui-hidden": true
|
|
25
26
|
},
|
|
26
27
|
base_url: {
|
|
@@ -80,4 +81,4 @@ class AnthropicProvider extends AiProvider {
|
|
|
80
81
|
|
|
81
82
|
export { ANTHROPIC, AnthropicModelSchema, AnthropicModelRecordSchema, AnthropicModelConfigSchema, AnthropicProvider };
|
|
82
83
|
|
|
83
|
-
//# debugId=
|
|
84
|
+
//# debugId=11334428D1B4D66F64756E2164756E21
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"sources": ["../src/anthropic/common/Anthropic_Constants.ts", "../src/anthropic/common/Anthropic_ModelSchema.ts", "../src/anthropic/AnthropicProvider.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const ANTHROPIC = \"ANTHROPIC\";\n",
|
|
6
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { ANTHROPIC } from \"./Anthropic_Constants\";\n\nexport const AnthropicModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: ANTHROPIC,\n description: \"Discriminator: Anthropic cloud provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Anthropic-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description:\n \"The Anthropic model identifier (e.g., 'claude-sonnet-4-20250514', 'claude-3-5-haiku-20241022').\",\n },\n
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { ANTHROPIC } from \"./Anthropic_Constants\";\n\nexport const AnthropicModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: ANTHROPIC,\n description: \"Discriminator: Anthropic cloud provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Anthropic-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description:\n \"The Anthropic model identifier (e.g., 'claude-sonnet-4-20250514', 'claude-3-5-haiku-20241022').\",\n },\n credential_key: {\n type: \"string\",\n format: \"credential\",\n description:\n \"Key to look up in the credential store for the API key.\",\n \"x-ui-hidden\": true,\n },\n base_url: {\n type: \"string\",\n description: \"Base URL for the Anthropic API (optional).\",\n },\n max_tokens: {\n type: \"integer\",\n description: \"Default max tokens for responses. Anthropic requires this parameter.\",\n default: 1024,\n minimum: 1,\n },\n },\n required: [\"model_name\"],\n additionalProperties: false,\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const AnthropicModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...AnthropicModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...AnthropicModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type AnthropicModelRecord = FromSchema<typeof AnthropicModelRecordSchema>;\n\nexport const AnthropicModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...AnthropicModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...AnthropicModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type AnthropicModelConfig = FromSchema<typeof AnthropicModelConfigSchema>;\n",
|
|
7
7
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { ANTHROPIC } from \"./common/Anthropic_Constants\";\nimport type { AnthropicModelConfig } from \"./common/Anthropic_ModelSchema\";\n\n/**\n * AI provider for Anthropic cloud models.\n *\n * Supports text generation, text rewriting, and text summarization via the\n * Anthropic Messages API using the `@anthropic-ai/sdk` SDK.\n *\n * Note: Anthropic does not offer an embeddings API, so TextEmbeddingTask\n * is not supported by this provider.\n *\n * Task run functions are injected via the constructor so that the SDK\n * is only imported where actually needed (inline mode, worker server), not on\n * the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no SDK import:\n * await new AnthropicProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_anthropic.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { ANTHROPIC_TASKS } from \"@workglow/ai-provider/anthropic\";\n * await new AnthropicProvider(ANTHROPIC_TASKS, ANTHROPIC_STREAM_TASKS, ANTHROPIC_REACTIVE_TASKS).register({ mode: \"inline\" });\n * ```\n */\nexport class AnthropicProvider extends AiProvider<AnthropicModelConfig> {\n readonly name = ANTHROPIC;\n\n readonly taskTypes = [\n \"CountTokensTask\",\n \"TextGenerationTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"StructuredGenerationTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, AnthropicModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, AnthropicModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, AnthropicModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n"
|
|
8
8
|
],
|
|
9
|
-
"mappings": ";AAMO,IAAM,YAAY;;;ACAzB;AAIO,IAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,QACA,
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": ";AAMO,IAAM,YAAY;;;ACAzB;AAIO,IAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,QACA,gBAAgB;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,aACE;AAAA,UACF,eAAe;AAAA,QACjB;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aAAa;AAAA,UACb,SAAS;AAAA,UACT,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAU,CAAC,YAAY;AAAA,MACvB,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,6BAA6B;AAAA,EACxC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,qBAAqB;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,qBAAqB,QAAQ;AAAA,EAC1E,sBAAsB;AACxB;AAIO,IAAM,6BAA6B;AAAA,EACxC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,qBAAqB;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,qBAAqB,QAAQ;AAAA,EAC1E,sBAAsB;AACxB;;;AClEA;AAAA;AAAA;AAmCO,MAAM,0BAA0B,WAAiC;AAAA,EAC7D,OAAO;AAAA,EAEP,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,aACA,eACA;AAAA,IACA,MAAM,OAAO,aAAa,aAAa;AAAA;AAE3C;",
|
|
10
|
+
"debugId": "11334428D1B4D66F64756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
|
@@ -18,9 +18,11 @@ var GeminiModelSchema = {
|
|
|
18
18
|
type: "string",
|
|
19
19
|
description: "The Gemini model identifier (e.g., 'gemini-2.0-flash', 'text-embedding-004')."
|
|
20
20
|
},
|
|
21
|
-
|
|
21
|
+
credential_key: {
|
|
22
22
|
type: "string",
|
|
23
|
-
|
|
23
|
+
format: "credential",
|
|
24
|
+
description: "Key to look up in the credential store for the API key.",
|
|
25
|
+
"x-ui-hidden": true
|
|
24
26
|
},
|
|
25
27
|
embedding_task_type: {
|
|
26
28
|
oneOf: [
|
|
@@ -87,4 +89,4 @@ class GoogleGeminiProvider extends AiProvider {
|
|
|
87
89
|
|
|
88
90
|
export { GOOGLE_GEMINI, GeminiModelSchema, GeminiModelRecordSchema, GeminiModelConfigSchema, GoogleGeminiProvider };
|
|
89
91
|
|
|
90
|
-
//# debugId=
|
|
92
|
+
//# debugId=1DD20092AEAA8D5F64756E2164756E21
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"sources": ["../src/google-gemini/common/Gemini_Constants.ts", "../src/google-gemini/common/Gemini_ModelSchema.ts", "../src/google-gemini/GoogleGeminiProvider.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const GOOGLE_GEMINI = \"GOOGLE_GEMINI\";\n",
|
|
6
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { GOOGLE_GEMINI } from \"./Gemini_Constants\";\n\nexport const GeminiModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: GOOGLE_GEMINI,\n description: \"Discriminator: Google Gemini cloud provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Google Gemini-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description:\n \"The Gemini model identifier (e.g., 'gemini-2.0-flash', 'text-embedding-004').\",\n },\n
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { GOOGLE_GEMINI } from \"./Gemini_Constants\";\n\nexport const GeminiModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: GOOGLE_GEMINI,\n description: \"Discriminator: Google Gemini cloud provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Google Gemini-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description:\n \"The Gemini model identifier (e.g., 'gemini-2.0-flash', 'text-embedding-004').\",\n },\n credential_key: {\n type: \"string\",\n format: \"credential\",\n description:\n \"Key to look up in the credential store for the API key.\",\n \"x-ui-hidden\": true,\n },\n embedding_task_type: {\n oneOf: [\n { type: \"null\" },\n {\n type: \"string\",\n enum: [\n \"RETRIEVAL_QUERY\",\n \"RETRIEVAL_DOCUMENT\",\n \"SEMANTIC_SIMILARITY\",\n \"CLASSIFICATION\",\n \"CLUSTERING\",\n ],\n },\n ],\n description: \"Task type hint for embedding models.\",\n default: null,\n },\n },\n required: [\"model_name\"],\n additionalProperties: false,\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const GeminiModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...GeminiModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...GeminiModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type GeminiModelRecord = FromSchema<typeof GeminiModelRecordSchema>;\n\nexport const GeminiModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...GeminiModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...GeminiModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type GeminiModelConfig = FromSchema<typeof GeminiModelConfigSchema>;\n",
|
|
7
7
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { GOOGLE_GEMINI } from \"./common/Gemini_Constants\";\nimport type { GeminiModelConfig } from \"./common/Gemini_ModelSchema\";\n\n/**\n * AI provider for Google Gemini cloud models.\n *\n * Supports text generation, text embedding, text rewriting, and text summarization\n * via the Google Generative AI API using the `@google/generative-ai` SDK.\n *\n * Task run functions are injected via the constructor so that the SDK\n * is only imported where actually needed (inline mode, worker server), not on\n * the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no SDK import:\n * await new GoogleGeminiProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_gemini.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { GEMINI_TASKS } from \"@workglow/ai-provider/google-gemini\";\n * await new GoogleGeminiProvider(GEMINI_TASKS).register({ mode: \"inline\" });\n * ```\n */\nexport class GoogleGeminiProvider extends AiProvider<GeminiModelConfig> {\n readonly name = GOOGLE_GEMINI;\n\n readonly taskTypes = [\n \"CountTokensTask\",\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"StructuredGenerationTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, GeminiModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, GeminiModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, GeminiModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n"
|
|
8
8
|
],
|
|
9
|
-
"mappings": ";AAMO,IAAM,gBAAgB;;;ACA7B;AAIO,IAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,QACA,
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": ";AAMO,IAAM,gBAAgB;;;ACA7B;AAIO,IAAM,oBAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,QACA,gBAAgB;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,aACE;AAAA,UACF,eAAe;AAAA,QACjB;AAAA,QACA,qBAAqB;AAAA,UACnB,OAAO;AAAA,YACL,EAAE,MAAM,OAAO;AAAA,YACf;AAAA,cACE,MAAM;AAAA,cACN,MAAM;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,UAAU,CAAC,YAAY;AAAA,MACvB,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,kBAAkB;AAAA,EACvB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,kBAAkB,QAAQ;AAAA,EACvE,sBAAsB;AACxB;AAIO,IAAM,0BAA0B;AAAA,EACrC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,kBAAkB;AAAA,EACvB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,kBAAkB,QAAQ;AAAA,EACvE,sBAAsB;AACxB;;;ACzEA;AAAA;AAAA;AAgCO,MAAM,6BAA6B,WAA8B;AAAA,EAC7D,OAAO;AAAA,EAEP,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,aACA,eACA;AAAA,IACA,MAAM,OAAO,aAAa,aAAa;AAAA;AAE3C;",
|
|
10
|
+
"debugId": "1DD20092AEAA8D5F64756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// src/hf-transformers/common/HFT_Constants.ts
|
|
2
|
+
var HF_TRANSFORMERS_ONNX = "HF_TRANSFORMERS_ONNX";
|
|
3
|
+
var HTF_CACHE_NAME = "transformers-cache";
|
|
4
|
+
var QuantizationDataType = {
|
|
5
|
+
auto: "auto",
|
|
6
|
+
fp32: "fp32",
|
|
7
|
+
fp16: "fp16",
|
|
8
|
+
q8: "q8",
|
|
9
|
+
int8: "int8",
|
|
10
|
+
uint8: "uint8",
|
|
11
|
+
q4: "q4",
|
|
12
|
+
bnb4: "bnb4",
|
|
13
|
+
q4f16: "q4f16"
|
|
14
|
+
};
|
|
15
|
+
var TextPipelineUseCase = {
|
|
16
|
+
"fill-mask": "fill-mask",
|
|
17
|
+
"token-classification": "token-classification",
|
|
18
|
+
"text-generation": "text-generation",
|
|
19
|
+
"text2text-generation": "text2text-generation",
|
|
20
|
+
"text-classification": "text-classification",
|
|
21
|
+
summarization: "summarization",
|
|
22
|
+
translation: "translation",
|
|
23
|
+
"feature-extraction": "feature-extraction",
|
|
24
|
+
"zero-shot-classification": "zero-shot-classification",
|
|
25
|
+
"question-answering": "question-answering"
|
|
26
|
+
};
|
|
27
|
+
var VisionPipelineUseCase = {
|
|
28
|
+
"background-removal": "background-removal",
|
|
29
|
+
"image-segmentation": "image-segmentation",
|
|
30
|
+
"depth-estimation": "depth-estimation",
|
|
31
|
+
"image-classification": "image-classification",
|
|
32
|
+
"image-to-image": "image-to-image",
|
|
33
|
+
"object-detection": "object-detection",
|
|
34
|
+
"image-feature-extraction": "image-feature-extraction"
|
|
35
|
+
};
|
|
36
|
+
var AudioPipelineUseCase = {
|
|
37
|
+
"audio-classification": "audio-classification",
|
|
38
|
+
"automatic-speech-recognition": "automatic-speech-recognition",
|
|
39
|
+
"text-to-speech": "text-to-speech"
|
|
40
|
+
};
|
|
41
|
+
var MultimodalPipelineUseCase = {
|
|
42
|
+
"document-question-answering": "document-question-answering",
|
|
43
|
+
"image-to-text": "image-to-text",
|
|
44
|
+
"zero-shot-audio-classification": "zero-shot-audio-classification",
|
|
45
|
+
"zero-shot-image-classification": "zero-shot-image-classification",
|
|
46
|
+
"zero-shot-object-detection": "zero-shot-object-detection"
|
|
47
|
+
};
|
|
48
|
+
var PipelineUseCase = {
|
|
49
|
+
...TextPipelineUseCase,
|
|
50
|
+
...VisionPipelineUseCase,
|
|
51
|
+
...AudioPipelineUseCase,
|
|
52
|
+
...MultimodalPipelineUseCase
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export { HF_TRANSFORMERS_ONNX, HTF_CACHE_NAME, QuantizationDataType, TextPipelineUseCase, VisionPipelineUseCase, AudioPipelineUseCase, MultimodalPipelineUseCase, PipelineUseCase };
|
|
56
|
+
|
|
57
|
+
//# debugId=297B2C0A21F958E264756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/hf-transformers/common/HFT_Constants.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const HF_TRANSFORMERS_ONNX = \"HF_TRANSFORMERS_ONNX\";\nexport const HTF_CACHE_NAME = \"transformers-cache\";\n\nexport type QuantizationDataType =\n | \"auto\" // Auto-detect based on environment\n | \"fp32\"\n | \"fp16\"\n | \"q8\"\n | \"int8\"\n | \"uint8\"\n | \"q4\"\n | \"bnb4\"\n | \"q4f16\"; // fp16 model with int4 block weight quantization\n\nexport const QuantizationDataType = {\n auto: \"auto\",\n fp32: \"fp32\",\n fp16: \"fp16\",\n q8: \"q8\",\n int8: \"int8\",\n uint8: \"uint8\",\n q4: \"q4\",\n bnb4: \"bnb4\",\n q4f16: \"q4f16\",\n} as const satisfies Record<QuantizationDataType, QuantizationDataType>;\n\nexport type TextPipelineUseCase =\n | \"fill-mask\" // https://huggingface.co/tasks/fill-mask\n | \"token-classification\" // https://huggingface.co/tasks/token-classification\n | \"text-generation\" // https://huggingface.co/tasks/text-generation#completion-generation-models\n | \"text2text-generation\" // https://huggingface.co/tasks/text-generation#text-to-text-generation-models\n | \"text-classification\" // https://huggingface.co/tasks/text-classification\n | \"summarization\" // https://huggingface.co/tasks/sentence-similarity\n | \"translation\" // https://huggingface.co/tasks/translation\n | \"feature-extraction\" // https://huggingface.co/tasks/feature-extraction\n | \"zero-shot-classification\" // https://huggingface.co/tasks/zero-shot-classification\n | \"question-answering\"; // https://huggingface.co/tasks/question-answering\n\nexport const TextPipelineUseCase = {\n \"fill-mask\": \"fill-mask\",\n \"token-classification\": \"token-classification\",\n \"text-generation\": \"text-generation\",\n \"text2text-generation\": \"text2text-generation\",\n \"text-classification\": \"text-classification\",\n summarization: \"summarization\",\n translation: \"translation\",\n \"feature-extraction\": \"feature-extraction\",\n \"zero-shot-classification\": \"zero-shot-classification\",\n \"question-answering\": \"question-answering\",\n} as const satisfies Record<TextPipelineUseCase, TextPipelineUseCase>;\n\nexport type VisionPipelineUseCase =\n | \"background-removal\" // https://huggingface.co/tasks/image-segmentation#background-removal\n | \"image-segmentation\" // https://huggingface.co/tasks/image-segmentation\n | \"depth-estimation\" // https://huggingface.co/tasks/depth-estimation\n | \"image-classification\" // https://huggingface.co/tasks/image-classification\n | \"image-to-image\" // https://huggingface.co/tasks/image-to-image\n | \"object-detection\" // https://huggingface.co/tasks/object-detection\n | \"image-feature-extraction\"; // https://huggingface.co/tasks/image-feature-extraction\n\nexport const VisionPipelineUseCase = {\n \"background-removal\": \"background-removal\",\n \"image-segmentation\": \"image-segmentation\",\n \"depth-estimation\": \"depth-estimation\",\n \"image-classification\": \"image-classification\",\n \"image-to-image\": \"image-to-image\",\n \"object-detection\": \"object-detection\",\n \"image-feature-extraction\": \"image-feature-extraction\",\n} as const satisfies Record<VisionPipelineUseCase, VisionPipelineUseCase>;\n\nexport type AudioPipelineUseCase =\n | \"audio-classification\" // https://huggingface.co/tasks/audio-classification\n | \"automatic-speech-recognition\" // https://huggingface.co/tasks/automatic-speech-recognition\n | \"text-to-speech\"; // https://huggingface.co/tasks/text-to-speech\n\nexport const AudioPipelineUseCase = {\n \"audio-classification\": \"audio-classification\",\n \"automatic-speech-recognition\": \"automatic-speech-recognition\",\n \"text-to-speech\": \"text-to-speech\",\n} as const satisfies Record<AudioPipelineUseCase, AudioPipelineUseCase>;\n\nexport type MultimodalPipelineUseCase =\n | \"document-question-answering\" // https://huggingface.co/tasks/document-question-answering\n | \"image-to-text\" // https://huggingface.co/tasks/image-to-text\n | \"zero-shot-audio-classification\" // https://huggingface.co/tasks/zero-shot-audio-classification\n | \"zero-shot-image-classification\" // https://huggingface.co/tasks/zero-shot-image-classification\n | \"zero-shot-object-detection\"; // https://huggingface.co/tasks/zero-shot-object-detection\n\nexport const MultimodalPipelineUseCase = {\n \"document-question-answering\": \"document-question-answering\",\n \"image-to-text\": \"image-to-text\",\n \"zero-shot-audio-classification\": \"zero-shot-audio-classification\",\n \"zero-shot-image-classification\": \"zero-shot-image-classification\",\n \"zero-shot-object-detection\": \"zero-shot-object-detection\",\n} as const satisfies Record<MultimodalPipelineUseCase, MultimodalPipelineUseCase>;\n\nexport type PipelineUseCase =\n | TextPipelineUseCase\n | VisionPipelineUseCase\n | AudioPipelineUseCase\n | MultimodalPipelineUseCase;\n\nexport const PipelineUseCase = {\n ...TextPipelineUseCase,\n ...VisionPipelineUseCase,\n ...AudioPipelineUseCase,\n ...MultimodalPipelineUseCase,\n} as const satisfies Record<PipelineUseCase, PipelineUseCase>;\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";AAMO,IAAM,uBAAuB;AAC7B,IAAM,iBAAiB;AAavB,IAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AACT;AAcO,IAAM,sBAAsB;AAAA,EACjC,aAAa;AAAA,EACb,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,4BAA4B;AAAA,EAC5B,sBAAsB;AACxB;AAWO,IAAM,wBAAwB;AAAA,EACnC,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,4BAA4B;AAC9B;AAOO,IAAM,uBAAuB;AAAA,EAClC,wBAAwB;AAAA,EACxB,gCAAgC;AAAA,EAChC,kBAAkB;AACpB;AASO,IAAM,4BAA4B;AAAA,EACvC,+BAA+B;AAAA,EAC/B,iBAAiB;AAAA,EACjB,kCAAkC;AAAA,EAClC,kCAAkC;AAAA,EAClC,8BAA8B;AAChC;AAQO,IAAM,kBAAkB;AAAA,KAC1B;AAAA,KACA;AAAA,KACA;AAAA,KACA;AACL;",
|
|
8
|
+
"debugId": "297B2C0A21F958E264756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -18,9 +18,11 @@ var HfInferenceModelSchema = {
|
|
|
18
18
|
type: "string",
|
|
19
19
|
description: "The Hugging Face model identifier (e.g., 'meta-llama/Llama-3.3-70B-Instruct')."
|
|
20
20
|
},
|
|
21
|
-
|
|
21
|
+
credential_key: {
|
|
22
22
|
type: "string",
|
|
23
|
-
|
|
23
|
+
format: "credential",
|
|
24
|
+
description: "Key to look up in the credential store for the API key.",
|
|
25
|
+
"x-ui-hidden": true
|
|
24
26
|
},
|
|
25
27
|
provider: {
|
|
26
28
|
type: "string",
|
|
@@ -72,4 +74,4 @@ class HfInferenceProvider extends AiProvider {
|
|
|
72
74
|
|
|
73
75
|
export { HF_INFERENCE, HfInferenceModelSchema, HfInferenceModelRecordSchema, HfInferenceModelConfigSchema, HfInferenceProvider };
|
|
74
76
|
|
|
75
|
-
//# debugId=
|
|
77
|
+
//# debugId=3211789BD54616A564756E2164756E21
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"sources": ["../src/provider-hf-inference/common/HFI_Constants.ts", "../src/provider-hf-inference/common/HFI_ModelSchema.ts", "../src/provider-hf-inference/HfInferenceProvider.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const HF_INFERENCE = \"HF_INFERENCE\";\n",
|
|
6
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\nexport const HfInferenceModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: HF_INFERENCE,\n description: \"Discriminator: Hugging Face Inference API provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Hugging Face Inference-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description:\n \"The Hugging Face model identifier (e.g., 'meta-llama/Llama-3.3-70B-Instruct').\",\n },\n
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\nexport const HfInferenceModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: HF_INFERENCE,\n description: \"Discriminator: Hugging Face Inference API provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Hugging Face Inference-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description:\n \"The Hugging Face model identifier (e.g., 'meta-llama/Llama-3.3-70B-Instruct').\",\n },\n credential_key: {\n type: \"string\",\n format: \"credential\",\n description:\n \"Key to look up in the credential store for the API key.\",\n \"x-ui-hidden\": true,\n },\n provider: {\n type: \"string\",\n description:\n \"Optional provider to route to specific HF inference providers (e.g., 'fal-ai', 'fireworks-ai').\",\n },\n },\n required: [\"model_name\"],\n additionalProperties: false,\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const HfInferenceModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...HfInferenceModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...HfInferenceModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type HfInferenceModelRecord = FromSchema<typeof HfInferenceModelRecordSchema>;\n\nexport const HfInferenceModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...HfInferenceModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...HfInferenceModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type HfInferenceModelConfig = FromSchema<typeof HfInferenceModelConfigSchema>;\n",
|
|
7
7
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\n/**\n * AI provider for Hugging Face Inference API.\n *\n * Supports text generation, text embedding, text rewriting, and text summarization\n * via the Hugging Face Inference API using the `@huggingface/inference` SDK.\n *\n * Task run functions are injected via the constructor so that the `@huggingface/inference` SDK\n * is only imported where actually needed (inline mode, worker server), not on\n * the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no SDK import:\n * await new HfInferenceProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_hfi.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { HFI_TASKS } from \"@workglow/ai-provider/hf-inference\";\n * await new HfInferenceProvider(HFI_TASKS).register({ mode: \"inline\" });\n *\n * // Worker side -- caller provides the tasks:\n * import { HFI_TASKS } from \"@workglow/ai-provider/hf-inference\";\n * new HfInferenceProvider(HFI_TASKS).registerOnWorkerServer(workerServer);\n * ```\n */\nexport class HfInferenceProvider extends AiProvider<HfInferenceModelConfig> {\n readonly name = HF_INFERENCE;\n\n readonly taskTypes = [\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, HfInferenceModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfInferenceModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n"
|
|
8
8
|
],
|
|
9
|
-
"mappings": ";AAMO,IAAM,eAAe;;;ACA5B;AAIO,IAAM,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,QACA,
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": ";AAMO,IAAM,eAAe;;;ACA5B;AAIO,IAAM,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,QACA,gBAAgB;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,aACE;AAAA,UACF,eAAe;AAAA,QACjB;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC,YAAY;AAAA,MACvB,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,+BAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,uBAAuB;AAAA,EAC5B;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,uBAAuB,QAAQ;AAAA,EAC5E,sBAAsB;AACxB;AAIO,IAAM,+BAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,uBAAuB;AAAA,EAC5B;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,uBAAuB,QAAQ;AAAA,EAC5E,sBAAsB;AACxB;;;AC7DA;AAAA;AAAA;AAoCO,MAAM,4BAA4B,WAAmC;AAAA,EACjE,OAAO;AAAA,EAEP,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,aACA,eACA;AAAA,IACA,MAAM,OAAO,aAAa,aAAa;AAAA;AAE3C;",
|
|
10
|
+
"debugId": "3211789BD54616A564756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
package/dist/index.js
CHANGED
|
@@ -4,30 +4,30 @@ import {
|
|
|
4
4
|
AnthropicModelRecordSchema,
|
|
5
5
|
AnthropicModelSchema,
|
|
6
6
|
AnthropicProvider
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-c5z3v9gn.js";
|
|
8
8
|
import {
|
|
9
9
|
GOOGLE_GEMINI,
|
|
10
10
|
GeminiModelConfigSchema,
|
|
11
11
|
GeminiModelRecordSchema,
|
|
12
12
|
GeminiModelSchema,
|
|
13
13
|
GoogleGeminiProvider
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-gjc388y4.js";
|
|
15
15
|
import {
|
|
16
|
+
HfTransformersOnnxModelConfigSchema,
|
|
17
|
+
HfTransformersOnnxModelRecordSchema,
|
|
18
|
+
HfTransformersOnnxModelSchema,
|
|
16
19
|
HuggingFaceTransformersProvider
|
|
17
|
-
} from "./index-
|
|
20
|
+
} from "./index-5e3yw7mb.js";
|
|
18
21
|
import {
|
|
19
22
|
AudioPipelineUseCase,
|
|
20
23
|
HF_TRANSFORMERS_ONNX,
|
|
21
24
|
HTF_CACHE_NAME,
|
|
22
|
-
HfTransformersOnnxModelConfigSchema,
|
|
23
|
-
HfTransformersOnnxModelRecordSchema,
|
|
24
|
-
HfTransformersOnnxModelSchema,
|
|
25
25
|
MultimodalPipelineUseCase,
|
|
26
26
|
PipelineUseCase,
|
|
27
27
|
QuantizationDataType,
|
|
28
28
|
TextPipelineUseCase,
|
|
29
29
|
VisionPipelineUseCase
|
|
30
|
-
} from "./index-
|
|
30
|
+
} from "./index-m0r2hvfz.js";
|
|
31
31
|
import {
|
|
32
32
|
LLAMACPP_DEFAULT_MODELS_DIR,
|
|
33
33
|
LOCAL_LLAMACPP,
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
HfInferenceModelRecordSchema,
|
|
43
43
|
HfInferenceModelSchema,
|
|
44
44
|
HfInferenceProvider
|
|
45
|
-
} from "./index-
|
|
45
|
+
} from "./index-t54dgrfj.js";
|
|
46
46
|
import {
|
|
47
47
|
OLLAMA,
|
|
48
48
|
OLLAMA_DEFAULT_BASE_URL,
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
OpenAiModelRecordSchema,
|
|
58
58
|
OpenAiModelSchema,
|
|
59
59
|
OpenAiProvider
|
|
60
|
-
} from "./index-
|
|
60
|
+
} from "./index-79rqre58.js";
|
|
61
61
|
import"./index-6j5pq722.js";
|
|
62
62
|
// src/tf-mediapipe/common/TFMP_Constants.ts
|
|
63
63
|
var TENSORFLOW_MEDIAPIPE = "TENSORFLOW_MEDIAPIPE";
|
|
@@ -211,4 +211,4 @@ export {
|
|
|
211
211
|
ANTHROPIC
|
|
212
212
|
};
|
|
213
213
|
|
|
214
|
-
//# debugId=
|
|
214
|
+
//# debugId=ED3F21558725C4FE64756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider, type AiProviderReactiveRunFn, type AiProviderRunFn } from \"@workglow/ai\";\nimport { TENSORFLOW_MEDIAPIPE } from \"./common/TFMP_Constants\";\nimport type { TFMPModelConfig } from \"./common/TFMP_ModelSchema\";\n\n/**\n * AI provider for TensorFlow MediaPipe models.\n *\n * Supports text, vision, and gesture recognition tasks via @mediapipe packages.\n *\n * Task run functions are injected via the constructor so that the heavy\n * `@mediapipe/*` libraries are only imported where actually needed\n * (inline mode, worker server), not on the main thread in worker mode.\n *\n * @example\n * ```typescript\n * // Worker mode (main thread) -- lightweight, no heavy imports:\n * await new TensorFlowMediaPipeProvider().register({\n * mode: \"worker\",\n * worker: new Worker(new URL(\"./worker_tfmp.ts\", import.meta.url), { type: \"module\" }),\n * });\n *\n * // Inline mode -- caller provides the tasks:\n * import { TFMP_TASKS } from \"@workglow/ai-provider/tf-mediapipe\";\n * await new TensorFlowMediaPipeProvider(TFMP_TASKS).register({ mode: \"inline\" });\n *\n * // Worker side -- caller provides the tasks:\n * import { TFMP_TASKS } from \"@workglow/ai-provider/tf-mediapipe\";\n * new TensorFlowMediaPipeProvider(TFMP_TASKS).registerOnWorkerServer(workerServer);\n * ```\n */\nexport class TensorFlowMediaPipeProvider extends AiProvider<TFMPModelConfig> {\n readonly name = TENSORFLOW_MEDIAPIPE;\n\n readonly taskTypes = [\n \"DownloadModelTask\",\n \"UnloadModelTask\",\n \"TextEmbeddingTask\",\n \"TextLanguageDetectionTask\",\n \"TextClassificationTask\",\n \"ImageSegmentationTask\",\n \"ImageEmbeddingTask\",\n \"ImageClassificationTask\",\n \"ObjectDetectionTask\",\n \"GestureRecognizerTask\",\n \"HandLandmarkerTask\",\n \"FaceDetectorTask\",\n \"FaceLandmarkerTask\",\n \"PoseLandmarkerTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, TFMPModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, TFMPModelConfig>>\n ) {\n super(tasks, undefined, reactiveTasks);\n }\n}\n"
|
|
8
8
|
],
|
|
9
9
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAM,uBAAuB;AAsB7B,IAAM,mBAAmB;AAAA,EAC9B,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,EAC1B,wBAAwB;AAAA,EACxB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,sCAAsC;AAAA,EACtC,0BAA0B;AAAA,EAC1B,0BAA0B;AAC5B;;ACzCA;AAIO,IAAM,kBAAkB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,aAAa;AAAA,UACX,MAAM;AAAA,UACN,MAAM,CAAC,QAAQ,SAAS,UAAU,OAAO;AAAA,UACzC,aAAa;AAAA,QACf;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM,OAAO,OAAO,gBAAgB;AAAA,UACpC,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,UAAU,CAAC,cAAc,eAAe,UAAU;AAAA,MAClD,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,wBAAwB;AAAA,EACnC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,gBAAgB;AAAA,EACrB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,gBAAgB,QAAQ;AAAA,EACrE,sBAAsB;AACxB;AAIO,IAAM,wBAAwB;AAAA,EACnC,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,gBAAgB;AAAA,EACrB;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,gBAAgB,QAAQ;AAAA,EACrE,sBAAsB;AACxB;;AC1DA;AA8BO,MAAM,oCAAoC,WAA4B;AAAA,EAClE,OAAO;AAAA,EAEP,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,eACA;AAAA,IACA,MAAM,OAAO,WAAW,aAAa;AAAA;AAEzC;",
|
|
10
|
-
"debugId": "
|
|
10
|
+
"debugId": "ED3F21558725C4FE64756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HFI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-inference/common/HFI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"HFI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-inference/common/HFI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAoDhE,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,CA2BvB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CAyCvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CAqBvB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAqBvB,CAAC;AAMF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,CA0BvB,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CACtD,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CAyBvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAyBvB,CAAC;AAMF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAKvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAKrD,CAAC"}
|