@workglow/ai-provider 0.0.90 → 0.0.91
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/README.md +45 -45
- package/dist/anthropic/AnthropicProvider.d.ts +39 -0
- package/dist/anthropic/AnthropicProvider.d.ts.map +1 -0
- package/dist/anthropic/Anthropic_Worker.d.ts +7 -0
- package/dist/anthropic/Anthropic_Worker.d.ts.map +1 -0
- package/dist/anthropic/common/Anthropic_Constants.d.ts +7 -0
- package/dist/anthropic/common/Anthropic_Constants.d.ts.map +1 -0
- package/dist/anthropic/common/Anthropic_JobRunFns.d.ts +16 -0
- package/dist/anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -0
- package/dist/anthropic/common/Anthropic_ModelSchema.d.ts +167 -0
- package/dist/anthropic/common/Anthropic_ModelSchema.d.ts.map +1 -0
- package/dist/anthropic/index.d.ts +11 -0
- package/dist/anthropic/index.d.ts.map +1 -0
- package/dist/anthropic/index.js +257 -0
- package/dist/anthropic/index.js.map +14 -0
- package/dist/google-gemini/Gemini_Worker.d.ts +7 -0
- package/dist/google-gemini/Gemini_Worker.d.ts.map +1 -0
- package/dist/google-gemini/GoogleGeminiProvider.d.ts +36 -0
- package/dist/google-gemini/GoogleGeminiProvider.d.ts.map +1 -0
- package/dist/google-gemini/common/Gemini_Constants.d.ts +7 -0
- package/dist/google-gemini/common/Gemini_Constants.d.ts.map +1 -0
- package/dist/google-gemini/common/Gemini_JobRunFns.d.ts +17 -0
- package/dist/google-gemini/common/Gemini_JobRunFns.d.ts.map +1 -0
- package/dist/google-gemini/common/Gemini_ModelSchema.d.ts +164 -0
- package/dist/google-gemini/common/Gemini_ModelSchema.d.ts.map +1 -0
- package/dist/google-gemini/index.d.ts +11 -0
- package/dist/google-gemini/index.d.ts.map +1 -0
- package/dist/google-gemini/index.js +300 -0
- package/dist/google-gemini/index.js.map +14 -0
- package/dist/hf-transformers/HFT_Worker.d.ts +7 -0
- package/dist/hf-transformers/HFT_Worker.d.ts.map +1 -0
- package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts +41 -0
- package/dist/hf-transformers/HuggingFaceTransformersProvider.d.ts.map +1 -0
- package/dist/hf-transformers/common/HFT_JobRunFns.d.ts +1218 -1
- package/dist/hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
- package/dist/hf-transformers/index.d.ts +2 -3
- package/dist/hf-transformers/index.d.ts.map +1 -1
- package/dist/hf-transformers/index.js +1130 -0
- package/dist/hf-transformers/index.js.map +15 -0
- package/dist/index.d.ts +23 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +729 -865
- package/dist/index.js.map +20 -12
- package/dist/provider-ollama/OllamaProvider.d.ts +39 -0
- package/dist/provider-ollama/OllamaProvider.d.ts.map +1 -0
- package/dist/provider-ollama/Ollama_Worker.d.ts +7 -0
- package/dist/provider-ollama/Ollama_Worker.d.ts.map +1 -0
- package/dist/provider-ollama/common/Ollama_Constants.d.ts +8 -0
- package/dist/provider-ollama/common/Ollama_Constants.d.ts.map +1 -0
- package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts +17 -0
- package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -0
- package/dist/provider-ollama/common/Ollama_ModelSchema.d.ts +137 -0
- package/dist/provider-ollama/common/Ollama_ModelSchema.d.ts.map +1 -0
- package/dist/provider-ollama/index.d.ts +11 -0
- package/dist/provider-ollama/index.d.ts.map +1 -0
- package/dist/provider-ollama/index.js +274 -0
- package/dist/provider-ollama/index.js.map +14 -0
- package/dist/provider-openai/OpenAI_Worker.d.ts +7 -0
- package/dist/provider-openai/OpenAI_Worker.d.ts.map +1 -0
- package/dist/provider-openai/OpenAiProvider.d.ts +40 -0
- package/dist/provider-openai/OpenAiProvider.d.ts.map +1 -0
- package/dist/provider-openai/common/OpenAI_Constants.d.ts +7 -0
- package/dist/provider-openai/common/OpenAI_Constants.d.ts.map +1 -0
- package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts +17 -0
- package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -0
- package/dist/provider-openai/common/OpenAI_ModelSchema.d.ts +161 -0
- package/dist/provider-openai/common/OpenAI_ModelSchema.d.ts.map +1 -0
- package/dist/provider-openai/index.d.ts +11 -0
- package/dist/provider-openai/index.d.ts.map +1 -0
- package/dist/provider-openai/index.js +283 -0
- package/dist/provider-openai/index.js.map +14 -0
- package/dist/tf-mediapipe/TFMP_Worker.d.ts +7 -0
- package/dist/tf-mediapipe/TFMP_Worker.d.ts.map +1 -0
- package/dist/tf-mediapipe/TensorFlowMediaPipeProvider.d.ts +39 -0
- package/dist/tf-mediapipe/TensorFlowMediaPipeProvider.d.ts.map +1 -0
- package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts +842 -0
- package/dist/tf-mediapipe/common/TFMP_JobRunFns.d.ts.map +1 -1
- package/dist/tf-mediapipe/index.d.ts +2 -3
- package/dist/tf-mediapipe/index.d.ts.map +1 -1
- package/dist/tf-mediapipe/index.js +674 -0
- package/dist/tf-mediapipe/index.js.map +14 -0
- package/package.json +83 -18
- package/dist/hf-transformers/registry/HFT_Client_RegisterJobFns.d.ts +0 -17
- package/dist/hf-transformers/registry/HFT_Client_RegisterJobFns.d.ts.map +0 -1
- package/dist/hf-transformers/registry/HFT_Inline_RegisterJobFns.d.ts +0 -16
- package/dist/hf-transformers/registry/HFT_Inline_RegisterJobFns.d.ts.map +0 -1
- package/dist/hf-transformers/registry/HFT_Worker_RegisterJobFns.d.ts +0 -8
- package/dist/hf-transformers/registry/HFT_Worker_RegisterJobFns.d.ts.map +0 -1
- package/dist/openai/provider/OpenAI_TaskRun.d.ts +0 -2
- package/dist/openai/provider/OpenAI_TaskRun.d.ts.map +0 -1
- package/dist/tf-mediapipe/registry/TFMP_Client_RegisterJobFns.d.ts +0 -17
- package/dist/tf-mediapipe/registry/TFMP_Client_RegisterJobFns.d.ts.map +0 -1
- package/dist/tf-mediapipe/registry/TFMP_Inline_RegisterJobFns.d.ts +0 -16
- package/dist/tf-mediapipe/registry/TFMP_Inline_RegisterJobFns.d.ts.map +0 -1
- package/dist/tf-mediapipe/registry/TFMP_Worker_RegisterJobFns.d.ts +0 -8
- package/dist/tf-mediapipe/registry/TFMP_Worker_RegisterJobFns.d.ts.map +0 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { AiProviderRunFn, AiProviderStreamFn, TextEmbeddingTaskInput, TextEmbeddingTaskOutput, TextGenerationTaskInput, TextGenerationTaskOutput, TextRewriterTaskInput, TextRewriterTaskOutput, TextSummaryTaskInput, TextSummaryTaskOutput } from "@workglow/ai";
|
|
7
|
+
import type { OpenAiModelConfig } from "./OpenAI_ModelSchema";
|
|
8
|
+
export declare const OpenAI_TextGeneration: AiProviderRunFn<TextGenerationTaskInput, TextGenerationTaskOutput, OpenAiModelConfig>;
|
|
9
|
+
export declare const OpenAI_TextEmbedding: AiProviderRunFn<TextEmbeddingTaskInput, TextEmbeddingTaskOutput, OpenAiModelConfig>;
|
|
10
|
+
export declare const OpenAI_TextRewriter: AiProviderRunFn<TextRewriterTaskInput, TextRewriterTaskOutput, OpenAiModelConfig>;
|
|
11
|
+
export declare const OpenAI_TextSummary: AiProviderRunFn<TextSummaryTaskInput, TextSummaryTaskOutput, OpenAiModelConfig>;
|
|
12
|
+
export declare const OpenAI_TextGeneration_Stream: AiProviderStreamFn<TextGenerationTaskInput, TextGenerationTaskOutput, OpenAiModelConfig>;
|
|
13
|
+
export declare const OpenAI_TextRewriter_Stream: AiProviderStreamFn<TextRewriterTaskInput, TextRewriterTaskOutput, OpenAiModelConfig>;
|
|
14
|
+
export declare const OpenAI_TextSummary_Stream: AiProviderStreamFn<TextSummaryTaskInput, TextSummaryTaskOutput, OpenAiModelConfig>;
|
|
15
|
+
export declare const OPENAI_TASKS: Record<string, AiProviderRunFn<any, any, OpenAiModelConfig>>;
|
|
16
|
+
export declare const OPENAI_STREAM_TASKS: Record<string, AiProviderStreamFn<any, any, OpenAiModelConfig>>;
|
|
17
|
+
//# sourceMappingURL=OpenAI_JobRunFns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/provider-openai/common/OpenAI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,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;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAwC9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAqBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAwBlB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAmBlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAmBlB,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA0BlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAwBlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAwBlB,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAKrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAKhD,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { FromSchema } from "@workglow/util";
|
|
7
|
+
export declare const OpenAiModelSchema: {
|
|
8
|
+
readonly type: "object";
|
|
9
|
+
readonly properties: {
|
|
10
|
+
readonly provider: {
|
|
11
|
+
readonly const: "OPENAI";
|
|
12
|
+
readonly description: "Discriminator: OpenAI cloud provider.";
|
|
13
|
+
};
|
|
14
|
+
readonly provider_config: {
|
|
15
|
+
readonly type: "object";
|
|
16
|
+
readonly description: "OpenAI-specific configuration.";
|
|
17
|
+
readonly properties: {
|
|
18
|
+
readonly model_name: {
|
|
19
|
+
readonly type: "string";
|
|
20
|
+
readonly description: "The OpenAI model identifier (e.g., 'gpt-4o', 'text-embedding-3-small').";
|
|
21
|
+
};
|
|
22
|
+
readonly api_key: {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly description: "OpenAI API key. Falls back to default API key if not set.";
|
|
25
|
+
};
|
|
26
|
+
readonly base_url: {
|
|
27
|
+
readonly type: "string";
|
|
28
|
+
readonly description: "Base URL for the OpenAI API. Useful for Azure OpenAI or proxy servers.";
|
|
29
|
+
readonly default: "https://api.openai.com/v1";
|
|
30
|
+
};
|
|
31
|
+
readonly organization: {
|
|
32
|
+
readonly type: "string";
|
|
33
|
+
readonly description: "OpenAI organization ID (optional).";
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
readonly required: readonly ["model_name"];
|
|
37
|
+
readonly additionalProperties: false;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
readonly required: readonly ["provider", "provider_config"];
|
|
41
|
+
readonly additionalProperties: true;
|
|
42
|
+
};
|
|
43
|
+
export declare const OpenAiModelRecordSchema: {
|
|
44
|
+
readonly type: "object";
|
|
45
|
+
readonly properties: {
|
|
46
|
+
readonly provider: {
|
|
47
|
+
readonly const: "OPENAI";
|
|
48
|
+
readonly description: "Discriminator: OpenAI cloud provider.";
|
|
49
|
+
};
|
|
50
|
+
readonly provider_config: {
|
|
51
|
+
readonly type: "object";
|
|
52
|
+
readonly description: "OpenAI-specific configuration.";
|
|
53
|
+
readonly properties: {
|
|
54
|
+
readonly model_name: {
|
|
55
|
+
readonly type: "string";
|
|
56
|
+
readonly description: "The OpenAI model identifier (e.g., 'gpt-4o', 'text-embedding-3-small').";
|
|
57
|
+
};
|
|
58
|
+
readonly api_key: {
|
|
59
|
+
readonly type: "string";
|
|
60
|
+
readonly description: "OpenAI API key. Falls back to default API key if not set.";
|
|
61
|
+
};
|
|
62
|
+
readonly base_url: {
|
|
63
|
+
readonly type: "string";
|
|
64
|
+
readonly description: "Base URL for the OpenAI API. Useful for Azure OpenAI or proxy servers.";
|
|
65
|
+
readonly default: "https://api.openai.com/v1";
|
|
66
|
+
};
|
|
67
|
+
readonly organization: {
|
|
68
|
+
readonly type: "string";
|
|
69
|
+
readonly description: "OpenAI organization ID (optional).";
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
readonly required: readonly ["model_name"];
|
|
73
|
+
readonly additionalProperties: false;
|
|
74
|
+
};
|
|
75
|
+
readonly model_id: {
|
|
76
|
+
readonly type: "string";
|
|
77
|
+
};
|
|
78
|
+
readonly tasks: {
|
|
79
|
+
readonly type: "array";
|
|
80
|
+
readonly items: {
|
|
81
|
+
readonly type: "string";
|
|
82
|
+
};
|
|
83
|
+
readonly "x-ui-editor": "multiselect";
|
|
84
|
+
};
|
|
85
|
+
readonly title: {
|
|
86
|
+
readonly type: "string";
|
|
87
|
+
};
|
|
88
|
+
readonly description: {
|
|
89
|
+
readonly type: "string";
|
|
90
|
+
readonly "x-ui-editor": "textarea";
|
|
91
|
+
};
|
|
92
|
+
readonly metadata: {
|
|
93
|
+
readonly type: "object";
|
|
94
|
+
readonly default: {};
|
|
95
|
+
readonly "x-ui-hidden": true;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
readonly required: readonly ["model_id", "tasks", "provider", "title", "description", "provider_config", "metadata", "provider", "provider_config"];
|
|
99
|
+
readonly additionalProperties: false;
|
|
100
|
+
};
|
|
101
|
+
export type OpenAiModelRecord = FromSchema<typeof OpenAiModelRecordSchema>;
|
|
102
|
+
export declare const OpenAiModelConfigSchema: {
|
|
103
|
+
readonly type: "object";
|
|
104
|
+
readonly properties: {
|
|
105
|
+
readonly provider: {
|
|
106
|
+
readonly const: "OPENAI";
|
|
107
|
+
readonly description: "Discriminator: OpenAI cloud provider.";
|
|
108
|
+
};
|
|
109
|
+
readonly provider_config: {
|
|
110
|
+
readonly type: "object";
|
|
111
|
+
readonly description: "OpenAI-specific configuration.";
|
|
112
|
+
readonly properties: {
|
|
113
|
+
readonly model_name: {
|
|
114
|
+
readonly type: "string";
|
|
115
|
+
readonly description: "The OpenAI model identifier (e.g., 'gpt-4o', 'text-embedding-3-small').";
|
|
116
|
+
};
|
|
117
|
+
readonly api_key: {
|
|
118
|
+
readonly type: "string";
|
|
119
|
+
readonly description: "OpenAI API key. Falls back to default API key if not set.";
|
|
120
|
+
};
|
|
121
|
+
readonly base_url: {
|
|
122
|
+
readonly type: "string";
|
|
123
|
+
readonly description: "Base URL for the OpenAI API. Useful for Azure OpenAI or proxy servers.";
|
|
124
|
+
readonly default: "https://api.openai.com/v1";
|
|
125
|
+
};
|
|
126
|
+
readonly organization: {
|
|
127
|
+
readonly type: "string";
|
|
128
|
+
readonly description: "OpenAI organization ID (optional).";
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
readonly required: readonly ["model_name"];
|
|
132
|
+
readonly additionalProperties: false;
|
|
133
|
+
};
|
|
134
|
+
readonly model_id: {
|
|
135
|
+
readonly type: "string";
|
|
136
|
+
};
|
|
137
|
+
readonly tasks: {
|
|
138
|
+
readonly type: "array";
|
|
139
|
+
readonly items: {
|
|
140
|
+
readonly type: "string";
|
|
141
|
+
};
|
|
142
|
+
readonly "x-ui-editor": "multiselect";
|
|
143
|
+
};
|
|
144
|
+
readonly title: {
|
|
145
|
+
readonly type: "string";
|
|
146
|
+
};
|
|
147
|
+
readonly description: {
|
|
148
|
+
readonly type: "string";
|
|
149
|
+
readonly "x-ui-editor": "textarea";
|
|
150
|
+
};
|
|
151
|
+
readonly metadata: {
|
|
152
|
+
readonly type: "object";
|
|
153
|
+
readonly default: {};
|
|
154
|
+
readonly "x-ui-hidden": true;
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
readonly required: readonly ["provider", "provider_config", "provider", "provider_config"];
|
|
158
|
+
readonly additionalProperties: false;
|
|
159
|
+
};
|
|
160
|
+
export type OpenAiModelConfig = FromSchema<typeof OpenAiModelConfigSchema>;
|
|
161
|
+
//# sourceMappingURL=OpenAI_ModelSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_ModelSchema.d.ts","sourceRoot":"","sources":["../../../src/provider-openai/common/OpenAI_ModelSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAwB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGlE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCW,CAAC;AAE1C,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQK,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQK,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export * from "./common/OpenAI_Constants";
|
|
7
|
+
export * from "./common/OpenAI_JobRunFns";
|
|
8
|
+
export * from "./common/OpenAI_ModelSchema";
|
|
9
|
+
export * from "./OpenAI_Worker";
|
|
10
|
+
export * from "./OpenAiProvider";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider-openai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, {
|
|
5
|
+
get: all[name],
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
set: (newValue) => all[name] = () => newValue
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
12
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
13
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
14
|
+
}) : x)(function(x) {
|
|
15
|
+
if (typeof require !== "undefined")
|
|
16
|
+
return require.apply(this, arguments);
|
|
17
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// src/provider-openai/common/OpenAI_Constants.ts
|
|
21
|
+
var OPENAI = "OPENAI";
|
|
22
|
+
// src/provider-openai/common/OpenAI_JobRunFns.ts
|
|
23
|
+
var _sdk;
|
|
24
|
+
async function loadOpenAISDK() {
|
|
25
|
+
if (!_sdk) {
|
|
26
|
+
try {
|
|
27
|
+
_sdk = await import("openai");
|
|
28
|
+
} catch {
|
|
29
|
+
throw new Error("openai is required for OpenAI tasks. Install it with: bun add openai");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return _sdk.default;
|
|
33
|
+
}
|
|
34
|
+
async function getClient(model) {
|
|
35
|
+
const OpenAI = await loadOpenAISDK();
|
|
36
|
+
const apiKey = model?.provider_config?.api_key || (typeof process !== "undefined" ? process.env?.OPENAI_API_KEY : undefined);
|
|
37
|
+
if (!apiKey) {
|
|
38
|
+
throw new Error("Missing OpenAI API key: set provider_config.api_key or the OPENAI_API_KEY environment variable.");
|
|
39
|
+
}
|
|
40
|
+
return new OpenAI({
|
|
41
|
+
apiKey,
|
|
42
|
+
baseURL: model?.provider_config?.base_url || undefined,
|
|
43
|
+
organization: model?.provider_config?.organization || undefined,
|
|
44
|
+
dangerouslyAllowBrowser: true
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function getModelName(model) {
|
|
48
|
+
const name = model?.provider_config?.model_name;
|
|
49
|
+
if (!name) {
|
|
50
|
+
throw new Error("Missing model name in provider_config.model_name.");
|
|
51
|
+
}
|
|
52
|
+
return name;
|
|
53
|
+
}
|
|
54
|
+
var OpenAI_TextGeneration = async (input, model, update_progress, signal) => {
|
|
55
|
+
update_progress(0, "Starting OpenAI text generation");
|
|
56
|
+
const client = await getClient(model);
|
|
57
|
+
const modelName = getModelName(model);
|
|
58
|
+
const response = await client.chat.completions.create({
|
|
59
|
+
model: modelName,
|
|
60
|
+
messages: [{ role: "user", content: input.prompt }],
|
|
61
|
+
max_tokens: input.maxTokens,
|
|
62
|
+
temperature: input.temperature,
|
|
63
|
+
top_p: input.topP,
|
|
64
|
+
frequency_penalty: input.frequencyPenalty,
|
|
65
|
+
presence_penalty: input.presencePenalty
|
|
66
|
+
}, { signal });
|
|
67
|
+
update_progress(100, "Completed OpenAI text generation");
|
|
68
|
+
return { text: response.choices[0]?.message?.content ?? "" };
|
|
69
|
+
};
|
|
70
|
+
var OpenAI_TextEmbedding = async (input, model, update_progress, signal) => {
|
|
71
|
+
update_progress(0, "Starting OpenAI text embedding");
|
|
72
|
+
const client = await getClient(model);
|
|
73
|
+
const modelName = getModelName(model);
|
|
74
|
+
const response = await client.embeddings.create({
|
|
75
|
+
model: modelName,
|
|
76
|
+
input: input.text
|
|
77
|
+
}, { signal });
|
|
78
|
+
update_progress(100, "Completed OpenAI text embedding");
|
|
79
|
+
if (Array.isArray(input.text)) {
|
|
80
|
+
return {
|
|
81
|
+
vector: response.data.map((item) => new Float32Array(item.embedding))
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return { vector: new Float32Array(response.data[0].embedding) };
|
|
85
|
+
};
|
|
86
|
+
var OpenAI_TextRewriter = async (input, model, update_progress, signal) => {
|
|
87
|
+
update_progress(0, "Starting OpenAI text rewriting");
|
|
88
|
+
const client = await getClient(model);
|
|
89
|
+
const modelName = getModelName(model);
|
|
90
|
+
const response = await client.chat.completions.create({
|
|
91
|
+
model: modelName,
|
|
92
|
+
messages: [
|
|
93
|
+
{ role: "system", content: input.prompt },
|
|
94
|
+
{ role: "user", content: input.text }
|
|
95
|
+
]
|
|
96
|
+
}, { signal });
|
|
97
|
+
update_progress(100, "Completed OpenAI text rewriting");
|
|
98
|
+
return { text: response.choices[0]?.message?.content ?? "" };
|
|
99
|
+
};
|
|
100
|
+
var OpenAI_TextSummary = async (input, model, update_progress, signal) => {
|
|
101
|
+
update_progress(0, "Starting OpenAI text summarization");
|
|
102
|
+
const client = await getClient(model);
|
|
103
|
+
const modelName = getModelName(model);
|
|
104
|
+
const response = await client.chat.completions.create({
|
|
105
|
+
model: modelName,
|
|
106
|
+
messages: [
|
|
107
|
+
{ role: "system", content: "Summarize the following text concisely." },
|
|
108
|
+
{ role: "user", content: input.text }
|
|
109
|
+
]
|
|
110
|
+
}, { signal });
|
|
111
|
+
update_progress(100, "Completed OpenAI text summarization");
|
|
112
|
+
return { text: response.choices[0]?.message?.content ?? "" };
|
|
113
|
+
};
|
|
114
|
+
var OpenAI_TextGeneration_Stream = async function* (input, model, signal) {
|
|
115
|
+
const client = await getClient(model);
|
|
116
|
+
const modelName = getModelName(model);
|
|
117
|
+
const stream = await client.chat.completions.create({
|
|
118
|
+
model: modelName,
|
|
119
|
+
messages: [{ role: "user", content: input.prompt }],
|
|
120
|
+
max_tokens: input.maxTokens,
|
|
121
|
+
temperature: input.temperature,
|
|
122
|
+
top_p: input.topP,
|
|
123
|
+
frequency_penalty: input.frequencyPenalty,
|
|
124
|
+
presence_penalty: input.presencePenalty,
|
|
125
|
+
stream: true
|
|
126
|
+
}, { signal });
|
|
127
|
+
for await (const chunk of stream) {
|
|
128
|
+
const delta = chunk.choices[0]?.delta?.content ?? "";
|
|
129
|
+
if (delta) {
|
|
130
|
+
yield { type: "text-delta", textDelta: delta };
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
yield { type: "finish", data: {} };
|
|
134
|
+
};
|
|
135
|
+
var OpenAI_TextRewriter_Stream = async function* (input, model, signal) {
|
|
136
|
+
const client = await getClient(model);
|
|
137
|
+
const modelName = getModelName(model);
|
|
138
|
+
const stream = await client.chat.completions.create({
|
|
139
|
+
model: modelName,
|
|
140
|
+
messages: [
|
|
141
|
+
{ role: "system", content: input.prompt },
|
|
142
|
+
{ role: "user", content: input.text }
|
|
143
|
+
],
|
|
144
|
+
stream: true
|
|
145
|
+
}, { signal });
|
|
146
|
+
for await (const chunk of stream) {
|
|
147
|
+
const delta = chunk.choices[0]?.delta?.content ?? "";
|
|
148
|
+
if (delta) {
|
|
149
|
+
yield { type: "text-delta", textDelta: delta };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
yield { type: "finish", data: {} };
|
|
153
|
+
};
|
|
154
|
+
var OpenAI_TextSummary_Stream = async function* (input, model, signal) {
|
|
155
|
+
const client = await getClient(model);
|
|
156
|
+
const modelName = getModelName(model);
|
|
157
|
+
const stream = await client.chat.completions.create({
|
|
158
|
+
model: modelName,
|
|
159
|
+
messages: [
|
|
160
|
+
{ role: "system", content: "Summarize the following text concisely." },
|
|
161
|
+
{ role: "user", content: input.text }
|
|
162
|
+
],
|
|
163
|
+
stream: true
|
|
164
|
+
}, { signal });
|
|
165
|
+
for await (const chunk of stream) {
|
|
166
|
+
const delta = chunk.choices[0]?.delta?.content ?? "";
|
|
167
|
+
if (delta) {
|
|
168
|
+
yield { type: "text-delta", textDelta: delta };
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
yield { type: "finish", data: {} };
|
|
172
|
+
};
|
|
173
|
+
var OPENAI_TASKS = {
|
|
174
|
+
TextGenerationTask: OpenAI_TextGeneration,
|
|
175
|
+
TextEmbeddingTask: OpenAI_TextEmbedding,
|
|
176
|
+
TextRewriterTask: OpenAI_TextRewriter,
|
|
177
|
+
TextSummaryTask: OpenAI_TextSummary
|
|
178
|
+
};
|
|
179
|
+
var OPENAI_STREAM_TASKS = {
|
|
180
|
+
TextGenerationTask: OpenAI_TextGeneration_Stream,
|
|
181
|
+
TextRewriterTask: OpenAI_TextRewriter_Stream,
|
|
182
|
+
TextSummaryTask: OpenAI_TextSummary_Stream
|
|
183
|
+
};
|
|
184
|
+
// src/provider-openai/common/OpenAI_ModelSchema.ts
|
|
185
|
+
import { ModelConfigSchema, ModelRecordSchema } from "@workglow/ai";
|
|
186
|
+
var OpenAiModelSchema = {
|
|
187
|
+
type: "object",
|
|
188
|
+
properties: {
|
|
189
|
+
provider: {
|
|
190
|
+
const: OPENAI,
|
|
191
|
+
description: "Discriminator: OpenAI cloud provider."
|
|
192
|
+
},
|
|
193
|
+
provider_config: {
|
|
194
|
+
type: "object",
|
|
195
|
+
description: "OpenAI-specific configuration.",
|
|
196
|
+
properties: {
|
|
197
|
+
model_name: {
|
|
198
|
+
type: "string",
|
|
199
|
+
description: "The OpenAI model identifier (e.g., 'gpt-4o', 'text-embedding-3-small')."
|
|
200
|
+
},
|
|
201
|
+
api_key: {
|
|
202
|
+
type: "string",
|
|
203
|
+
description: "OpenAI API key. Falls back to default API key if not set."
|
|
204
|
+
},
|
|
205
|
+
base_url: {
|
|
206
|
+
type: "string",
|
|
207
|
+
description: "Base URL for the OpenAI API. Useful for Azure OpenAI or proxy servers.",
|
|
208
|
+
default: "https://api.openai.com/v1"
|
|
209
|
+
},
|
|
210
|
+
organization: {
|
|
211
|
+
type: "string",
|
|
212
|
+
description: "OpenAI organization ID (optional)."
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
required: ["model_name"],
|
|
216
|
+
additionalProperties: false
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
required: ["provider", "provider_config"],
|
|
220
|
+
additionalProperties: true
|
|
221
|
+
};
|
|
222
|
+
var OpenAiModelRecordSchema = {
|
|
223
|
+
type: "object",
|
|
224
|
+
properties: {
|
|
225
|
+
...ModelRecordSchema.properties,
|
|
226
|
+
...OpenAiModelSchema.properties
|
|
227
|
+
},
|
|
228
|
+
required: [...ModelRecordSchema.required, ...OpenAiModelSchema.required],
|
|
229
|
+
additionalProperties: false
|
|
230
|
+
};
|
|
231
|
+
var OpenAiModelConfigSchema = {
|
|
232
|
+
type: "object",
|
|
233
|
+
properties: {
|
|
234
|
+
...ModelConfigSchema.properties,
|
|
235
|
+
...OpenAiModelSchema.properties
|
|
236
|
+
},
|
|
237
|
+
required: [...ModelConfigSchema.required, ...OpenAiModelSchema.required],
|
|
238
|
+
additionalProperties: false
|
|
239
|
+
};
|
|
240
|
+
// src/provider-openai/OpenAI_Worker.ts
|
|
241
|
+
import { globalServiceRegistry, parentPort, WORKER_SERVER } from "@workglow/util";
|
|
242
|
+
|
|
243
|
+
// src/provider-openai/OpenAiProvider.ts
|
|
244
|
+
import { AiProvider } from "@workglow/ai";
|
|
245
|
+
class OpenAiProvider extends AiProvider {
|
|
246
|
+
name = OPENAI;
|
|
247
|
+
taskTypes = [
|
|
248
|
+
"TextGenerationTask",
|
|
249
|
+
"TextEmbeddingTask",
|
|
250
|
+
"TextRewriterTask",
|
|
251
|
+
"TextSummaryTask"
|
|
252
|
+
];
|
|
253
|
+
constructor(tasks, streamTasks) {
|
|
254
|
+
super(tasks, streamTasks);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// src/provider-openai/OpenAI_Worker.ts
|
|
259
|
+
function OPENAI_WORKER_JOBRUN_REGISTER() {
|
|
260
|
+
const workerServer = globalServiceRegistry.get(WORKER_SERVER);
|
|
261
|
+
new OpenAiProvider(OPENAI_TASKS, OPENAI_STREAM_TASKS).registerOnWorkerServer(workerServer);
|
|
262
|
+
parentPort.postMessage({ type: "ready" });
|
|
263
|
+
console.log("OPENAI_WORKER_JOBRUN registered");
|
|
264
|
+
}
|
|
265
|
+
export {
|
|
266
|
+
OpenAiProvider,
|
|
267
|
+
OpenAiModelSchema,
|
|
268
|
+
OpenAiModelRecordSchema,
|
|
269
|
+
OpenAiModelConfigSchema,
|
|
270
|
+
OpenAI_TextSummary_Stream,
|
|
271
|
+
OpenAI_TextSummary,
|
|
272
|
+
OpenAI_TextRewriter_Stream,
|
|
273
|
+
OpenAI_TextRewriter,
|
|
274
|
+
OpenAI_TextGeneration_Stream,
|
|
275
|
+
OpenAI_TextGeneration,
|
|
276
|
+
OpenAI_TextEmbedding,
|
|
277
|
+
OPENAI_WORKER_JOBRUN_REGISTER,
|
|
278
|
+
OPENAI_TASKS,
|
|
279
|
+
OPENAI_STREAM_TASKS,
|
|
280
|
+
OPENAI
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
//# debugId=2EFE7BE4FFA114EF64756E2164756E21
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/provider-openai/common/OpenAI_Constants.ts", "../src/provider-openai/common/OpenAI_JobRunFns.ts", "../src/provider-openai/common/OpenAI_ModelSchema.ts", "../src/provider-openai/OpenAI_Worker.ts", "../src/provider-openai/OpenAiProvider.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 OPENAI = \"OPENAI\";\n",
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\nlet _sdk: typeof import(\"openai\") | undefined;\nasync function loadOpenAISDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"openai\");\n } catch {\n throw new Error(\"openai is required for OpenAI tasks. Install it with: bun add openai\");\n }\n }\n return _sdk.default;\n}\n\nasync function getClient(model: OpenAiModelConfig | undefined) {\n const OpenAI = await loadOpenAISDK();\n const apiKey =\n model?.provider_config?.api_key ||\n (typeof process !== \"undefined\" ? process.env?.OPENAI_API_KEY : undefined);\n if (!apiKey) {\n throw new Error(\n \"Missing OpenAI API key: set provider_config.api_key or the OPENAI_API_KEY environment variable.\"\n );\n }\n return new OpenAI({\n apiKey,\n baseURL: model?.provider_config?.base_url || undefined,\n organization: model?.provider_config?.organization || undefined,\n dangerouslyAllowBrowser: true,\n });\n}\n\nfunction getModelName(model: OpenAiModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nexport const OpenAI_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting OpenAI text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat.completions.create(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n },\n { signal }\n );\n\n update_progress(100, \"Completed OpenAI text generation\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const OpenAI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting OpenAI text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.embeddings.create(\n {\n model: modelName,\n input: input.text,\n },\n { signal }\n );\n\n update_progress(100, \"Completed OpenAI text embedding\");\n\n if (Array.isArray(input.text)) {\n return {\n vector: response.data.map(\n (item: { embedding: number[] }) => new Float32Array(item.embedding)\n ),\n };\n }\n return { vector: new Float32Array(response.data[0].embedding) };\n};\n\nexport const OpenAI_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting OpenAI text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat.completions.create(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n },\n { signal }\n );\n\n update_progress(100, \"Completed OpenAI text rewriting\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const OpenAI_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting OpenAI text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const response = await client.chat.completions.create(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n },\n { signal }\n );\n\n update_progress(100, \"Completed OpenAI text summarization\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\n// ========================================================================\n// Streaming implementations (append mode)\n// ========================================================================\n\nexport const OpenAI_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OpenAiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat.completions.create(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n presence_penalty: input.presencePenalty,\n stream: true,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n\nexport const OpenAI_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n OpenAiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat.completions.create(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n\nexport const OpenAI_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n OpenAiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const stream = await client.chat.completions.create(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n stream: true,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n\n// ========================================================================\n// Task registries\n// ========================================================================\n\nexport const OPENAI_TASKS: Record<string, AiProviderRunFn<any, any, OpenAiModelConfig>> = {\n TextGenerationTask: OpenAI_TextGeneration,\n TextEmbeddingTask: OpenAI_TextEmbedding,\n TextRewriterTask: OpenAI_TextRewriter,\n TextSummaryTask: OpenAI_TextSummary,\n};\n\nexport const OPENAI_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, OpenAiModelConfig>\n> = {\n TextGenerationTask: OpenAI_TextGeneration_Stream,\n TextRewriterTask: OpenAI_TextRewriter_Stream,\n TextSummaryTask: OpenAI_TextSummary_Stream,\n};\n",
|
|
7
|
+
"/**\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 api_key: {\n type: \"string\",\n description: \"OpenAI API key. Falls back to default API key if not set.\",\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",
|
|
8
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { globalServiceRegistry, parentPort, WORKER_SERVER } from \"@workglow/util\";\nimport { OPENAI_STREAM_TASKS, OPENAI_TASKS } from \"./common/OpenAI_JobRunFns\";\nimport { OpenAiProvider } from \"./OpenAiProvider\";\n\nexport function OPENAI_WORKER_JOBRUN_REGISTER() {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new OpenAiProvider(OPENAI_TASKS, OPENAI_STREAM_TASKS).registerOnWorkerServer(workerServer);\n parentPort.postMessage({ type: \"ready\" });\n console.log(\"OPENAI_WORKER_JOBRUN registered\");\n}\n",
|
|
9
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider, type AiProviderRunFn, type AiProviderStreamFn } 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 ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, OpenAiModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, OpenAiModelConfig>>\n ) {\n super(tasks, streamTasks);\n }\n}\n"
|
|
10
|
+
],
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "2EFE7BE4FFA114EF64756E2164756E21",
|
|
13
|
+
"names": []
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TFMP_Worker.d.ts","sourceRoot":"","sources":["../../src/tf-mediapipe/TFMP_Worker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,wBAAgB,2BAA2B,SAK1C"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { AiProvider, type AiProviderRunFn } from "@workglow/ai";
|
|
7
|
+
import type { TFMPModelConfig } from "./common/TFMP_ModelSchema";
|
|
8
|
+
/**
|
|
9
|
+
* AI provider for TensorFlow MediaPipe models.
|
|
10
|
+
*
|
|
11
|
+
* Supports text, vision, and gesture recognition tasks via @mediapipe packages.
|
|
12
|
+
*
|
|
13
|
+
* Task run functions are injected via the constructor so that the heavy
|
|
14
|
+
* `@mediapipe/*` libraries are only imported where actually needed
|
|
15
|
+
* (inline mode, worker server), not on the main thread in worker mode.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Worker mode (main thread) -- lightweight, no heavy imports:
|
|
20
|
+
* await new TensorFlowMediaPipeProvider().register({
|
|
21
|
+
* mode: "worker",
|
|
22
|
+
* worker: new Worker(new URL("./worker_tfmp.ts", import.meta.url), { type: "module" }),
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Inline mode -- caller provides the tasks:
|
|
26
|
+
* import { TFMP_TASKS } from "@workglow/ai-provider/tf-mediapipe";
|
|
27
|
+
* await new TensorFlowMediaPipeProvider(TFMP_TASKS).register({ mode: "inline" });
|
|
28
|
+
*
|
|
29
|
+
* // Worker side -- caller provides the tasks:
|
|
30
|
+
* import { TFMP_TASKS } from "@workglow/ai-provider/tf-mediapipe";
|
|
31
|
+
* new TensorFlowMediaPipeProvider(TFMP_TASKS).registerOnWorkerServer(workerServer);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare class TensorFlowMediaPipeProvider extends AiProvider<TFMPModelConfig> {
|
|
35
|
+
readonly name = "TENSORFLOW_MEDIAPIPE";
|
|
36
|
+
readonly taskTypes: readonly ["DownloadModelTask", "UnloadModelTask", "TextEmbeddingTask", "TextLanguageDetectionTask", "TextClassificationTask", "ImageSegmentationTask", "ImageEmbeddingTask", "ImageClassificationTask", "ObjectDetectionTask", "GestureRecognizerTask", "HandLandmarkerTask", "FaceDetectorTask", "FaceLandmarkerTask", "PoseLandmarkerTask"];
|
|
37
|
+
constructor(tasks?: Record<string, AiProviderRunFn<any, any, TFMPModelConfig>>);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=TensorFlowMediaPipeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TensorFlowMediaPipeProvider.d.ts","sourceRoot":"","sources":["../../src/tf-mediapipe/TensorFlowMediaPipeProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,2BAA4B,SAAQ,UAAU,CAAC,eAAe,CAAC;IAC1E,QAAQ,CAAC,IAAI,0BAAwB;IAErC,QAAQ,CAAC,SAAS,gVAeP;gBAEC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;CAG/E"}
|