@workglow/openai 0.2.31 → 0.2.33
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 +44 -0
- package/dist/ai/OpenAiProvider.d.ts.map +1 -0
- package/dist/ai/OpenAiQueuedProvider.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_Chat.d.ts.map +1 -0
- package/dist/{ai-provider → ai}/common/OpenAI_Client.d.ts +3 -1
- package/dist/ai/common/OpenAI_Client.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_Constants.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_CountTokens.browser.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_CountTokens.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_ImageEdit.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_ImageGenerate.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_ImageValidation.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_JobRunFns.browser.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_JobRunFns.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_ModelInfo.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_ModelSchema.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_ModelSearch.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_StructuredGeneration.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_TextEmbedding.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_TextGeneration.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_TextRewriter.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_TextSummary.d.ts.map +1 -0
- package/dist/ai/common/OpenAI_ToolCalling.d.ts.map +1 -0
- package/dist/ai/index.browser.d.ts.map +1 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/registerOpenAi.d.ts.map +1 -0
- package/dist/ai/registerOpenAiInline.browser.d.ts.map +1 -0
- package/dist/ai/registerOpenAiInline.d.ts.map +1 -0
- package/dist/ai/registerOpenAiWorker.browser.d.ts.map +1 -0
- package/dist/ai/registerOpenAiWorker.d.ts.map +1 -0
- package/dist/{ai-provider → ai}/runtime.browser.d.ts +1 -1
- package/dist/ai/runtime.browser.d.ts.map +1 -0
- package/dist/{ai-provider → ai}/runtime.d.ts +1 -1
- package/dist/ai/runtime.d.ts.map +1 -0
- package/dist/{ai-provider-runtime.d.ts → ai-runtime.browser.d.ts} +2 -2
- package/dist/ai-runtime.browser.d.ts.map +1 -0
- package/dist/{ai-provider-runtime.browser.js → ai-runtime.browser.js} +37 -37
- package/dist/ai-runtime.browser.js.map +27 -0
- package/dist/{ai-provider.d.ts → ai-runtime.d.ts} +2 -2
- package/dist/ai-runtime.d.ts.map +1 -0
- package/dist/{ai-provider-runtime.js → ai-runtime.js} +39 -39
- package/dist/ai-runtime.js.map +29 -0
- package/dist/{ai-provider.browser.d.ts → ai.browser.d.ts} +2 -2
- package/dist/ai.browser.d.ts.map +1 -0
- package/dist/{ai-provider.browser.js → ai.browser.js} +9 -9
- package/dist/{ai-provider.browser.js.map → ai.browser.js.map} +4 -4
- package/dist/ai.d.ts +7 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/{ai-provider.js → ai.js} +20 -20
- package/dist/ai.js.map +16 -0
- package/package.json +28 -33
- package/dist/ai-provider/OpenAiProvider.d.ts.map +0 -1
- package/dist/ai-provider/OpenAiQueuedProvider.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_Chat.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_Client.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_Constants.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_CountTokens.browser.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_CountTokens.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_ImageEdit.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_ImageGenerate.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_ImageValidation.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_JobRunFns.browser.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_JobRunFns.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_ModelInfo.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_ModelSchema.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_ModelSearch.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_StructuredGeneration.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_TextEmbedding.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_TextGeneration.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_TextRewriter.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_TextSummary.d.ts.map +0 -1
- package/dist/ai-provider/common/OpenAI_ToolCalling.d.ts.map +0 -1
- package/dist/ai-provider/index.browser.d.ts.map +0 -1
- package/dist/ai-provider/index.d.ts.map +0 -1
- package/dist/ai-provider/registerOpenAi.d.ts.map +0 -1
- package/dist/ai-provider/registerOpenAiInline.browser.d.ts.map +0 -1
- package/dist/ai-provider/registerOpenAiInline.d.ts.map +0 -1
- package/dist/ai-provider/registerOpenAiWorker.browser.d.ts.map +0 -1
- package/dist/ai-provider/registerOpenAiWorker.d.ts.map +0 -1
- package/dist/ai-provider/runtime.browser.d.ts.map +0 -1
- package/dist/ai-provider/runtime.d.ts.map +0 -1
- package/dist/ai-provider-runtime.browser.d.ts +0 -7
- package/dist/ai-provider-runtime.browser.d.ts.map +0 -1
- package/dist/ai-provider-runtime.browser.js.map +0 -27
- package/dist/ai-provider-runtime.d.ts.map +0 -1
- package/dist/ai-provider-runtime.js.map +0 -29
- package/dist/ai-provider.browser.d.ts.map +0 -1
- package/dist/ai-provider.d.ts.map +0 -1
- package/dist/ai-provider.js.map +0 -16
- /package/dist/{ai-provider → ai}/OpenAiProvider.d.ts +0 -0
- /package/dist/{ai-provider → ai}/OpenAiQueuedProvider.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_Chat.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_Constants.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_CountTokens.browser.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_CountTokens.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_ImageEdit.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_ImageGenerate.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_ImageValidation.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_JobRunFns.browser.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_JobRunFns.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_ModelInfo.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_ModelSchema.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_ModelSearch.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_StructuredGeneration.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_TextEmbedding.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_TextGeneration.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_TextRewriter.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_TextSummary.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/OpenAI_ToolCalling.d.ts +0 -0
- /package/dist/{ai-provider → ai}/index.browser.d.ts +0 -0
- /package/dist/{ai-provider → ai}/index.d.ts +0 -0
- /package/dist/{ai-provider → ai}/registerOpenAi.d.ts +0 -0
- /package/dist/{ai-provider → ai}/registerOpenAiInline.browser.d.ts +0 -0
- /package/dist/{ai-provider → ai}/registerOpenAiInline.d.ts +0 -0
- /package/dist/{ai-provider → ai}/registerOpenAiWorker.browser.d.ts +0 -0
- /package/dist/{ai-provider → ai}/registerOpenAiWorker.d.ts +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# @workglow/openai
|
|
2
|
+
|
|
3
|
+
OpenAI provider for @workglow/ai.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Integration with openai for Workglow AI tasks
|
|
8
|
+
- Supports standard Workglow AI task interfaces
|
|
9
|
+
- Works seamlessly with `@workglow/task-graph` and `@workglow/ai`
|
|
10
|
+
- Built-in job queue support for rate limiting and concurrency
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install @workglow/openai
|
|
16
|
+
# or
|
|
17
|
+
bun add @workglow/openai
|
|
18
|
+
# or
|
|
19
|
+
yarn add @workglow/openai
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { registerOpenai } from "@workglow/openai/ai-runtime";
|
|
26
|
+
import { TextGenerationTask } from "@workglow/ai";
|
|
27
|
+
import { Workflow } from "@workglow/task-graph";
|
|
28
|
+
|
|
29
|
+
// 1. Register the provider
|
|
30
|
+
await registerOpenai();
|
|
31
|
+
|
|
32
|
+
// 2. Use it in a workflow
|
|
33
|
+
const workflow = new Workflow();
|
|
34
|
+
workflow.add(new TextGenerationTask({
|
|
35
|
+
model: "default-model",
|
|
36
|
+
prompt: "Hello world!"
|
|
37
|
+
}));
|
|
38
|
+
|
|
39
|
+
const result = await workflow.run();
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## License
|
|
43
|
+
|
|
44
|
+
Apache 2.0 - See [LICENSE](../../LICENSE) for details.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAiProvider.d.ts","sourceRoot":"","sources":["../../src/ai/OpenAiProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBjD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAOlC;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAiQueuedProvider.d.ts","sourceRoot":"","sources":["../../src/ai/OpenAiQueuedProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmB1C,4FAA4F;AAC5F,qBAAa,oBAAqB,SAAQ,yBAOxC;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_Chat.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_Chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAuB9D,eAAO,MAAM,WAAW,EAAE,eAAe,CACvC,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,CAUlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CACjD,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,CAYlB,CAAC"}
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { OpenAiModelConfig } from "./OpenAI_ModelSchema";
|
|
7
|
-
|
|
7
|
+
type OpenAIClientClass = new (config: any) => any;
|
|
8
|
+
export declare function loadOpenAISDK(): Promise<OpenAIClientClass>;
|
|
8
9
|
export declare function getClient(model: OpenAiModelConfig | undefined): Promise<any>;
|
|
9
10
|
export declare function getModelName(model: OpenAiModelConfig | undefined): string;
|
|
11
|
+
export {};
|
|
10
12
|
//# sourceMappingURL=OpenAI_Client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_Client.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,KAAK,iBAAiB,GAAG,KAAK,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC;AAKlD,wBAAsB,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAShE;AAUD,wBAAsB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,gBAoBnE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAMzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_Constants.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_Constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_CountTokens.browser.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_CountTokens.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAqC9D,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAKlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,CAC7D,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAGlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_CountTokens.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_CountTokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAqC9D,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAKlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,CAC7D,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAGlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_ImageEdit.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_ImageEdit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA6F9D,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,CAmClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CACtD,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,CAgClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_ImageGenerate.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_ImageGenerate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgC9D,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAqDlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,kBAAkB,CAC1D,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAiFlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_ImageValidation.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_ImageValidation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAiBnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_JobRunFns.browser.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_JobRunFns.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAgBzE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAYrF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAShD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,MAAM,EACN,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAGpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiBzE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAarF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CACtC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAUhD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,MAAM,EACN,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAGpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_ModelInfo.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_ModelInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAS9D,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,CA0ClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_ModelSchema.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_ModelSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAwB,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGzE,eAAO,MAAM,iBAAiB;mBACtB,QAAQ;;iBAEZ,QAAQ;qBACN,KAAK;qBACL,WAAW,EAAE,uCAAuC;;iBAEtD,eAAe;qBACb,IAAI,EAAE,QAAQ;qBACd,WAAW,EAAE,gCAAgC;qBAC7C,UAAU;yBACR,UAAU;6BACR,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,yEAAyE;;yBAExF,cAAc;6BACZ,IAAI,EAAE,QAAQ;6BACd,MAAM,EAAE,YAAY;6BACpB,WAAW,EAAE,yDAAyD;6BACtE,aAAa;;yBAEf,QAAQ;6BACN,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,wEAAwE;6BACrF,OAAO,EAAE,2BAA2B;;yBAEtC,YAAY;6BACV,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,oCAAoC;;;qBAGrD,QAAQ;qBACR,oBAAoB;;;;;CAKe,CAAC;AAE1C,eAAO,MAAM,uBAAuB;mBAC5B,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;qBApCV,KAAK;qBACL,WAAW,EAAE,uCAAuC;;;qBAGpD,IAAI,EAAE,QAAQ;qBACd,WAAW,EAAE,gCAAgC;qBAC7C,UAAU;yBACR,UAAU;6BACR,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,yEAAyE;;yBAExF,cAAc;6BACZ,IAAI,EAAE,QAAQ;6BACd,MAAM,EAAE,YAAY;6BACpB,WAAW,EAAE,yDAAyD;6BACtE,aAAa;;yBAEf,QAAQ;6BACN,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,wEAAwE;6BACrF,OAAO,EAAE,2BAA2B;;yBAEtC,YAAY;6BACV,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,oCAAoC;;;qBAGrD,QAAQ;qBACR,oBAAoB;;;;;CAee,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E,eAAO,MAAM,uBAAuB;mBAC5B,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;qBAhDV,KAAK;qBACL,WAAW,EAAE,uCAAuC;;;qBAGpD,IAAI,EAAE,QAAQ;qBACd,WAAW,EAAE,gCAAgC;qBAC7C,UAAU;yBACR,UAAU;6BACR,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,yEAAyE;;yBAExF,cAAc;6BACZ,IAAI,EAAE,QAAQ;6BACd,MAAM,EAAE,YAAY;6BACpB,WAAW,EAAE,yDAAyD;6BACtE,aAAa;;yBAEf,QAAQ;6BACN,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,wEAAwE;6BACrF,OAAO,EAAE,2BAA2B;;yBAEtC,YAAY;6BACV,IAAI,EAAE,QAAQ;6BACd,WAAW,EAAE,oCAAoC;;;qBAGrD,QAAQ;qBACR,oBAAoB;;;;;CA2Be,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_ModelSearch.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_ModelSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAuEtB,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,CAUtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_StructuredGeneration.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_StructuredGeneration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,eAAO,MAAM,2BAA2B,EAAE,eAAe,CACvD,6BAA6B,EAC7B,8BAA8B,EAC9B,iBAAiB,CA6BlB,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,kBAAkB,CACjE,6BAA6B,EAC7B,8BAA8B,EAC9B,iBAAiB,CAkDlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_TextEmbedding.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_TextEmbedding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CA6BlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_TextGeneration.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_TextGeneration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,eAAO,MAAM,qBAAqB,EAAE,eAAe,CACjD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA0BlB,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CA0BlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_TextRewriter.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_TextRewriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,eAAO,MAAM,mBAAmB,EAAE,eAAe,CAC/C,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAmBlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAwBlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_TextSummary.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_TextSummary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAmBlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAwBlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI_ToolCalling.d.ts","sourceRoot":"","sources":["../../../src/ai/common/OpenAI_ToolCalling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CA2BlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAuBlB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/ai/index.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerOpenAi.d.ts","sourceRoot":"","sources":["../../src/ai/registerOpenAi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAK9D,wBAAsB,cAAc,CAClC,OAAO,EAAE,yBAAyB,GAAG;IACnC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerOpenAiInline.browser.d.ts","sourceRoot":"","sources":["../../src/ai/registerOpenAiInline.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAS9D,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerOpenAiInline.d.ts","sourceRoot":"","sources":["../../src/ai/registerOpenAiInline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAM9D,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerOpenAiWorker.browser.d.ts","sourceRoot":"","sources":["../../src/ai/registerOpenAiWorker.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAU1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerOpenAiWorker.d.ts","sourceRoot":"","sources":["../../src/ai/registerOpenAiWorker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAU1D"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Browser build for OpenAI runtime registration (uses `js-tiktoken` instead of WASM `tiktoken`).
|
|
8
|
-
* Import from `@workglow/openai/ai-
|
|
8
|
+
* Import from `@workglow/openai/ai-runtime` — not from the main `openai` barrel.
|
|
9
9
|
*
|
|
10
10
|
* Use `export *` (not `export { … } from "…"`) so the Bun bundler keeps the module graph.
|
|
11
11
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.browser.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Worker server and main-thread inline OpenAI registration (pulls in `OpenAI_JobRunFns`),
|
|
8
8
|
* plus SDK client helpers (`OpenAI_Client`).
|
|
9
|
-
* Import from `@workglow/openai/ai-
|
|
9
|
+
* Import from `@workglow/openai/ai-runtime` — not from the main `openai` barrel.
|
|
10
10
|
*
|
|
11
11
|
* Use `export *` (not `export { … } from "…"`) so the Bun bundler keeps the module graph.
|
|
12
12
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export * from "./ai
|
|
7
|
-
//# sourceMappingURL=ai-
|
|
6
|
+
export * from "./ai/runtime.browser";
|
|
7
|
+
//# sourceMappingURL=ai-runtime.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-runtime.browser.d.ts","sourceRoot":"","sources":["../src/ai-runtime.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,sBAAsB,CAAC"}
|
|
@@ -6,15 +6,15 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
6
6
|
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
-
// src/ai
|
|
10
|
-
import { isBrowserLike,
|
|
11
|
-
var
|
|
9
|
+
// src/ai/common/OpenAI_Client.ts
|
|
10
|
+
import { isBrowserLike, resolveApiKey } from "@workglow/ai/provider-utils";
|
|
11
|
+
var _loadPromise;
|
|
12
12
|
async function loadOpenAISDK() {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
return
|
|
13
|
+
_loadPromise ??= import("openai").then((mod) => mod.default).catch(() => {
|
|
14
|
+
_loadPromise = undefined;
|
|
15
|
+
throw new Error("openai is required for OpenAI tasks. Install it with: bun add openai");
|
|
16
|
+
});
|
|
17
|
+
return _loadPromise;
|
|
18
18
|
}
|
|
19
19
|
async function getClient(model) {
|
|
20
20
|
const OpenAI = await loadOpenAISDK();
|
|
@@ -43,16 +43,16 @@ function getModelName(model) {
|
|
|
43
43
|
return name;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
// src/ai
|
|
47
|
-
import { registerProviderInline } from "@workglow/ai-
|
|
46
|
+
// src/ai/registerOpenAiInline.browser.ts
|
|
47
|
+
import { registerProviderInline } from "@workglow/ai/provider-utils";
|
|
48
48
|
|
|
49
|
-
// src/ai
|
|
50
|
-
import { filterLabeledModelsByQuery } from "@workglow/ai-
|
|
49
|
+
// src/ai/common/OpenAI_ModelSearch.ts
|
|
50
|
+
import { filterLabeledModelsByQuery } from "@workglow/ai/provider-utils";
|
|
51
51
|
|
|
52
|
-
// src/ai
|
|
52
|
+
// src/ai/common/OpenAI_Constants.ts
|
|
53
53
|
var OPENAI = "OPENAI";
|
|
54
54
|
|
|
55
|
-
// src/ai
|
|
55
|
+
// src/ai/common/OpenAI_ModelSearch.ts
|
|
56
56
|
var OPENAI_FALLBACK = [
|
|
57
57
|
{ label: "gpt-image-2", value: "gpt-image-2" },
|
|
58
58
|
{ label: "dall-e-3", value: "dall-e-3" },
|
|
@@ -121,7 +121,7 @@ var OpenAI_ModelSearch = async (input) => {
|
|
|
121
121
|
return { results: mapModelList(models) };
|
|
122
122
|
};
|
|
123
123
|
|
|
124
|
-
// src/ai
|
|
124
|
+
// src/ai/common/OpenAI_CountTokens.browser.ts
|
|
125
125
|
var _tiktoken;
|
|
126
126
|
async function loadTiktoken() {
|
|
127
127
|
if (!_tiktoken) {
|
|
@@ -158,7 +158,7 @@ var OpenAI_CountTokens_Preview = async (input, model) => {
|
|
|
158
158
|
return OpenAI_CountTokens(input, model, () => {}, new AbortController().signal);
|
|
159
159
|
};
|
|
160
160
|
|
|
161
|
-
// src/ai
|
|
161
|
+
// src/ai/common/OpenAI_ModelInfo.ts
|
|
162
162
|
var OPENAI_EMBEDDING_DIMENSIONS = {
|
|
163
163
|
"text-embedding-3-small": { native_dimensions: 1536, mrl: true },
|
|
164
164
|
"text-embedding-3-large": { native_dimensions: 3072, mrl: true },
|
|
@@ -202,7 +202,7 @@ var OpenAI_ModelInfo = async (input, model) => {
|
|
|
202
202
|
};
|
|
203
203
|
};
|
|
204
204
|
|
|
205
|
-
// src/ai
|
|
205
|
+
// src/ai/common/OpenAI_StructuredGeneration.ts
|
|
206
206
|
import { parsePartialJson } from "@workglow/util/worker";
|
|
207
207
|
var OpenAI_StructuredGeneration = async (input, model, update_progress, signal, outputSchema) => {
|
|
208
208
|
update_progress(0, "Starting OpenAI structured generation");
|
|
@@ -266,7 +266,7 @@ var OpenAI_StructuredGeneration_Stream = async function* (input, model, signal,
|
|
|
266
266
|
yield { type: "finish", data: { object: finalObject } };
|
|
267
267
|
};
|
|
268
268
|
|
|
269
|
-
// src/ai
|
|
269
|
+
// src/ai/common/OpenAI_TextEmbedding.ts
|
|
270
270
|
import { getLogger } from "@workglow/util/worker";
|
|
271
271
|
var OpenAI_TextEmbedding = async (input, model, update_progress, signal) => {
|
|
272
272
|
const logger = getLogger();
|
|
@@ -289,7 +289,7 @@ var OpenAI_TextEmbedding = async (input, model, update_progress, signal) => {
|
|
|
289
289
|
return { vector: new Float32Array(response.data[0].embedding) };
|
|
290
290
|
};
|
|
291
291
|
|
|
292
|
-
// src/ai
|
|
292
|
+
// src/ai/common/OpenAI_TextGeneration.ts
|
|
293
293
|
import { getLogger as getLogger2 } from "@workglow/util/worker";
|
|
294
294
|
var OpenAI_TextGeneration = async (input, model, update_progress, signal) => {
|
|
295
295
|
const logger = getLogger2();
|
|
@@ -333,7 +333,7 @@ var OpenAI_TextGeneration_Stream = async function* (input, model, signal) {
|
|
|
333
333
|
yield { type: "finish", data: {} };
|
|
334
334
|
};
|
|
335
335
|
|
|
336
|
-
// src/ai
|
|
336
|
+
// src/ai/common/OpenAI_TextRewriter.ts
|
|
337
337
|
var OpenAI_TextRewriter = async (input, model, update_progress, signal) => {
|
|
338
338
|
update_progress(0, "Starting OpenAI text rewriting");
|
|
339
339
|
const client = await getClient(model);
|
|
@@ -368,7 +368,7 @@ var OpenAI_TextRewriter_Stream = async function* (input, model, signal) {
|
|
|
368
368
|
yield { type: "finish", data: {} };
|
|
369
369
|
};
|
|
370
370
|
|
|
371
|
-
// src/ai
|
|
371
|
+
// src/ai/common/OpenAI_TextSummary.ts
|
|
372
372
|
var OpenAI_TextSummary = async (input, model, update_progress, signal) => {
|
|
373
373
|
update_progress(0, "Starting OpenAI text summarization");
|
|
374
374
|
const client = await getClient(model);
|
|
@@ -403,14 +403,14 @@ var OpenAI_TextSummary_Stream = async function* (input, model, signal) {
|
|
|
403
403
|
yield { type: "finish", data: {} };
|
|
404
404
|
};
|
|
405
405
|
|
|
406
|
-
// src/ai
|
|
406
|
+
// src/ai/common/OpenAI_ToolCalling.ts
|
|
407
407
|
import { filterValidToolCalls, toOpenAIMessages } from "@workglow/ai/worker";
|
|
408
408
|
import {
|
|
409
409
|
accumulateOpenAIStream,
|
|
410
410
|
buildOpenAITools,
|
|
411
411
|
mapOpenAIToolChoice,
|
|
412
412
|
parseOpenAIToolCallMessage
|
|
413
|
-
} from "@workglow/ai-
|
|
413
|
+
} from "@workglow/ai/provider-utils";
|
|
414
414
|
var OpenAI_ToolCalling = async (input, model, update_progress, signal) => {
|
|
415
415
|
update_progress(0, "Starting OpenAI tool calling");
|
|
416
416
|
const client = await getClient(model);
|
|
@@ -449,10 +449,10 @@ var OpenAI_ToolCalling_Stream = async function* (input, model, signal) {
|
|
|
449
449
|
yield* accumulateOpenAIStream(stream);
|
|
450
450
|
};
|
|
451
451
|
|
|
452
|
-
// src/ai
|
|
452
|
+
// src/ai/common/OpenAI_ImageGenerate.ts
|
|
453
453
|
import { ImageGenerationContentPolicyError, ImageGenerationProviderError } from "@workglow/ai";
|
|
454
454
|
import { getLogger as getLogger3 } from "@workglow/util/worker";
|
|
455
|
-
import { dataUriToImageValue } from "@workglow/ai-
|
|
455
|
+
import { dataUriToImageValue } from "@workglow/ai/provider-utils";
|
|
456
456
|
function aspectRatioToSize(aspectRatio) {
|
|
457
457
|
switch (aspectRatio) {
|
|
458
458
|
case "16:9":
|
|
@@ -576,10 +576,10 @@ var OpenAI_ImageGenerate_Stream = async function* (input, model, signal) {
|
|
|
576
576
|
}
|
|
577
577
|
};
|
|
578
578
|
|
|
579
|
-
// src/ai
|
|
579
|
+
// src/ai/common/OpenAI_ImageEdit.ts
|
|
580
580
|
import { ImageGenerationContentPolicyError as ImageGenerationContentPolicyError2, ImageGenerationProviderError as ImageGenerationProviderError2 } from "@workglow/ai";
|
|
581
581
|
import { getLogger as getLogger4 } from "@workglow/util/worker";
|
|
582
|
-
import { dataUriToImageValue as dataUriToImageValue2, imageValueToPngBytes } from "@workglow/ai-
|
|
582
|
+
import { dataUriToImageValue as dataUriToImageValue2, imageValueToPngBytes } from "@workglow/ai/provider-utils";
|
|
583
583
|
function aspectRatioToSize2(aspectRatio) {
|
|
584
584
|
switch (aspectRatio) {
|
|
585
585
|
case "16:9":
|
|
@@ -682,7 +682,7 @@ var OpenAI_ImageEdit_Stream = async function* (input, model, signal) {
|
|
|
682
682
|
}
|
|
683
683
|
};
|
|
684
684
|
|
|
685
|
-
// src/ai
|
|
685
|
+
// src/ai/common/OpenAI_JobRunFns.browser.ts
|
|
686
686
|
var OPENAI_TASKS = {
|
|
687
687
|
TextGenerationTask: OpenAI_TextGeneration,
|
|
688
688
|
ModelInfoTask: OpenAI_ModelInfo,
|
|
@@ -709,9 +709,9 @@ var OPENAI_PREVIEW_TASKS = {
|
|
|
709
709
|
CountTokensTask: OpenAI_CountTokens_Preview
|
|
710
710
|
};
|
|
711
711
|
|
|
712
|
-
// src/ai
|
|
712
|
+
// src/ai/OpenAiQueuedProvider.ts
|
|
713
713
|
import { AiProvider } from "@workglow/ai";
|
|
714
|
-
import { createCloudProviderClass } from "@workglow/ai-
|
|
714
|
+
import { createCloudProviderClass } from "@workglow/ai/provider-utils";
|
|
715
715
|
var OPENAI_QUEUED_TASK_TYPES = [
|
|
716
716
|
"TextGenerationTask",
|
|
717
717
|
"TextEmbeddingTask",
|
|
@@ -733,17 +733,17 @@ class OpenAiQueuedProvider extends createCloudProviderClass(AiProvider, {
|
|
|
733
733
|
}) {
|
|
734
734
|
}
|
|
735
735
|
|
|
736
|
-
// src/ai
|
|
736
|
+
// src/ai/registerOpenAiInline.browser.ts
|
|
737
737
|
async function registerOpenAiInline(options) {
|
|
738
738
|
await registerProviderInline(new OpenAiQueuedProvider(OPENAI_TASKS, OPENAI_STREAM_TASKS, OPENAI_PREVIEW_TASKS), "OpenAI", options);
|
|
739
739
|
}
|
|
740
740
|
|
|
741
|
-
// src/ai
|
|
742
|
-
import { registerProviderWorker } from "@workglow/ai-
|
|
741
|
+
// src/ai/registerOpenAiWorker.browser.ts
|
|
742
|
+
import { registerProviderWorker } from "@workglow/ai/provider-utils";
|
|
743
743
|
|
|
744
|
-
// src/ai
|
|
744
|
+
// src/ai/OpenAiProvider.ts
|
|
745
745
|
import { AiProvider as AiProvider2 } from "@workglow/ai/worker";
|
|
746
|
-
import { createCloudProviderClass as createCloudProviderClass2 } from "@workglow/ai-
|
|
746
|
+
import { createCloudProviderClass as createCloudProviderClass2 } from "@workglow/ai/provider-utils";
|
|
747
747
|
var OPENAI_WORKER_TASK_TYPES = [
|
|
748
748
|
"TextGenerationTask",
|
|
749
749
|
"TextEmbeddingTask",
|
|
@@ -763,7 +763,7 @@ class OpenAiProvider extends createCloudProviderClass2(AiProvider2, {
|
|
|
763
763
|
}) {
|
|
764
764
|
}
|
|
765
765
|
|
|
766
|
-
// src/ai
|
|
766
|
+
// src/ai/registerOpenAiWorker.browser.ts
|
|
767
767
|
async function registerOpenAiWorker() {
|
|
768
768
|
await registerProviderWorker((ws) => new OpenAiProvider(OPENAI_TASKS, OPENAI_STREAM_TASKS, OPENAI_PREVIEW_TASKS).registerOnWorkerServer(ws), "OpenAI");
|
|
769
769
|
}
|
|
@@ -775,4 +775,4 @@ export {
|
|
|
775
775
|
getClient
|
|
776
776
|
};
|
|
777
777
|
|
|
778
|
-
//# debugId=
|
|
778
|
+
//# debugId=0886E9199E9CDB5F64756E2164756E21
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/ai/common/OpenAI_Client.ts", "../src/ai/registerOpenAiInline.browser.ts", "../src/ai/common/OpenAI_ModelSearch.ts", "../src/ai/common/OpenAI_Constants.ts", "../src/ai/common/OpenAI_CountTokens.browser.ts", "../src/ai/common/OpenAI_ModelInfo.ts", "../src/ai/common/OpenAI_StructuredGeneration.ts", "../src/ai/common/OpenAI_TextEmbedding.ts", "../src/ai/common/OpenAI_TextGeneration.ts", "../src/ai/common/OpenAI_TextRewriter.ts", "../src/ai/common/OpenAI_TextSummary.ts", "../src/ai/common/OpenAI_ToolCalling.ts", "../src/ai/common/OpenAI_ImageGenerate.ts", "../src/ai/common/OpenAI_ImageEdit.ts", "../src/ai/common/OpenAI_JobRunFns.browser.ts", "../src/ai/OpenAiQueuedProvider.ts", "../src/ai/registerOpenAiWorker.browser.ts", "../src/ai/OpenAiProvider.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { isBrowserLike, resolveApiKey } from \"@workglow/ai/provider-utils\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype OpenAIClientClass = new (config: any) => any;\n\nlet _loadPromise: Promise<OpenAIClientClass> | undefined;\n\n// NOTE: we do not want to de-dup this in the provider-utils, vite wants direct import with string literals.\nexport async function loadOpenAISDK(): Promise<OpenAIClientClass> {\n _loadPromise ??= import(/* @vite-ignore */ \"openai\")\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .then((mod) => mod.default as OpenAIClientClass)\n .catch(() => {\n _loadPromise = undefined;\n throw new Error(\"openai is required for OpenAI tasks. Install it with: bun add openai\");\n });\n return _loadPromise;\n}\n\ninterface ResolvedProviderConfig {\n readonly credential_key?: string;\n readonly api_key?: string;\n readonly model_name?: string;\n readonly base_url?: string;\n readonly organization?: string;\n}\n\nexport async function getClient(model: OpenAiModelConfig | undefined) {\n const OpenAI = await loadOpenAISDK();\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n const apiKey = resolveApiKey({\n config,\n envVar: \"OPENAI_API_KEY\",\n providerLabel: \"OpenAI\",\n });\n try {\n return new OpenAI({\n apiKey,\n baseURL: config?.base_url || undefined,\n organization: config?.organization || undefined,\n dangerouslyAllowBrowser: isBrowserLike(),\n });\n } catch (err) {\n throw new Error(\n `Failed to create OpenAI client: ${err instanceof Error ? err.message : \"unknown error\"}`\n );\n }\n}\n\nexport function 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",
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRegisterOptions } from \"@workglow/ai\";\nimport { registerProviderInline } from \"@workglow/ai/provider-utils\";\nimport {\n OPENAI_PREVIEW_TASKS,\n OPENAI_STREAM_TASKS,\n OPENAI_TASKS,\n} from \"./common/OpenAI_JobRunFns.browser\";\nimport { OpenAiQueuedProvider } from \"./OpenAiQueuedProvider\";\n\nexport async function registerOpenAiInline(options?: AiProviderRegisterOptions): Promise<void> {\n await registerProviderInline(\n new OpenAiQueuedProvider(OPENAI_TASKS, OPENAI_STREAM_TASKS, OPENAI_PREVIEW_TASKS),\n \"OpenAI\",\n options\n );\n}\n",
|
|
7
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport { filterLabeledModelsByQuery } from \"@workglow/ai/provider-utils\";\nimport { getClient } from \"./OpenAI_Client\";\nimport { OPENAI } from \"./OpenAI_Constants\";\n\ninterface OpenAiModelListItem {\n readonly label: string;\n readonly value: string;\n readonly description?: string;\n}\n\nconst OPENAI_FALLBACK: Array<{ label: string; value: string }> = [\n { label: \"gpt-image-2\", value: \"gpt-image-2\" },\n { label: \"dall-e-3\", value: \"dall-e-3\" },\n { label: \"gpt-5.5\", value: \"gpt-5.5\" },\n { label: \"gpt-5.4-mini\", value: \"gpt-5.4-mini\" },\n { label: \"gpt-5.4-nano\", value: \"gpt-5.4-nano\" },\n { label: \"gpt-5\", value: \"gpt-5\" },\n { label: \"gpt-5-mini\", value: \"gpt-5-mini\" },\n { label: \"gpt-4o-mini\", value: \"gpt-4o-mini\" },\n { label: \"gpt-4-turbo\", value: \"gpt-4-turbo\" },\n { label: \"o3\", value: \"o3\" },\n { label: \"o3-mini\", value: \"o3-mini\" },\n { label: \"o1\", value: \"o1\" },\n { label: \"o1-mini\", value: \"o1-mini\" },\n];\n\nconst OPENAI_IMAGE_MODELS: Array<{ value: string; tasks: string[] }> = [\n { value: \"gpt-image-2\", tasks: [\"ImageGenerateTask\", \"ImageEditTask\"] },\n { value: \"dall-e-3\", tasks: [\"ImageGenerateTask\"] },\n];\n\nasync function listOpenAiModels(credentialKey: string): Promise<OpenAiModelListItem[]> {\n const client = await getClient({\n provider: OPENAI,\n provider_config: { model_name: \"\", credential_key: credentialKey },\n });\n const models: OpenAiModelListItem[] = [];\n for await (const m of client.models.list()) {\n models.push({ label: m.id, value: m.id, description: m.owned_by });\n }\n models.sort((a, b) => {\n const aGpt = a.value.startsWith(\"gpt\") || a.value.startsWith(\"o1\") ? 0 : 1;\n const bGpt = b.value.startsWith(\"gpt\") || b.value.startsWith(\"o1\") ? 0 : 1;\n if (aGpt !== bGpt) return aGpt - bGpt;\n return a.value.localeCompare(b.value);\n });\n return models;\n}\n\nfunction mapModelList(models: OpenAiModelListItem[]): ModelSearchResultItem[] {\n return models.map((m) => {\n const imageEntry = OPENAI_IMAGE_MODELS.find((i) => i.value === m.value);\n return {\n id: m.value,\n label: m.label,\n description: m.description ?? \"\",\n record: {\n model_id: m.value,\n provider: OPENAI,\n title: m.value,\n description: \"\",\n tasks: imageEntry?.tasks ?? [],\n provider_config: { model_name: m.value },\n metadata: {},\n },\n raw: m,\n };\n });\n}\n\nexport const OpenAI_ModelSearch: AiProviderRunFn<\n ModelSearchTaskInput,\n ModelSearchTaskOutput\n> = async (input) => {\n let models: OpenAiModelListItem[];\n if (!input.credential_key) {\n models = OPENAI_FALLBACK;\n } else {\n models = await listOpenAiModels(input.credential_key);\n }\n models = filterLabeledModelsByQuery(models, input.query);\n return { results: mapModelList(models) };\n};\n",
|
|
8
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const OPENAI = \"OPENAI\";\n",
|
|
9
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderPreviewRunFn,\n AiProviderRunFn,\n CountTokensTaskInput,\n CountTokensTaskOutput,\n} from \"@workglow/ai\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { getModelName } from \"./OpenAI_Client\";\nimport type { Tiktoken, TiktokenModel } from \"js-tiktoken\";\n\nlet _tiktoken: typeof import(\"js-tiktoken\") | undefined;\n\nasync function loadTiktoken() {\n if (!_tiktoken) {\n try {\n _tiktoken = await import(\"js-tiktoken\");\n } catch {\n throw new Error(\n \"js-tiktoken is required for OpenAI token counting in the browser. Install it with: bun add js-tiktoken\"\n );\n }\n }\n return _tiktoken;\n}\n\nconst _encoderCache = new Map<string, Tiktoken>();\n\nasync function getEncoder(modelName: string) {\n const tiktoken = await loadTiktoken();\n if (!_encoderCache.has(modelName)) {\n try {\n _encoderCache.set(modelName, tiktoken.encodingForModel(modelName as TiktokenModel));\n } catch {\n const fallback = \"cl100k_base\";\n if (!_encoderCache.has(fallback)) {\n _encoderCache.set(fallback, tiktoken.getEncoding(fallback));\n }\n _encoderCache.set(modelName, _encoderCache.get(fallback)!);\n }\n }\n return _encoderCache.get(modelName)!;\n}\n\nexport const OpenAI_CountTokens: AiProviderRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n OpenAiModelConfig\n> = async (input, model) => {\n const enc = await getEncoder(getModelName(model));\n const tokens = enc.encode(input.text);\n return { count: tokens.length };\n};\n\nexport const OpenAI_CountTokens_Preview: AiProviderPreviewRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n OpenAiModelConfig\n> = async (input, model) => {\n return OpenAI_CountTokens(input, model, () => {}, new AbortController().signal);\n};\n",
|
|
10
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, ModelInfoTaskInput, ModelInfoTaskOutput } from \"@workglow/ai\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\n/** Known OpenAI embedding model dimensions. */\nconst OPENAI_EMBEDDING_DIMENSIONS: Record<string, { native_dimensions: number; mrl: boolean }> = {\n \"text-embedding-3-small\": { native_dimensions: 1536, mrl: true },\n \"text-embedding-3-large\": { native_dimensions: 3072, mrl: true },\n \"text-embedding-ada-002\": { native_dimensions: 1536, mrl: false },\n};\n\nexport const OpenAI_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n OpenAiModelConfig\n> = async (input, model) => {\n if (input.detail === \"dimensions\") {\n const pc = model?.provider_config as Record<string, unknown>;\n let native_dimensions =\n typeof pc?.native_dimensions === \"number\" ? pc.native_dimensions : undefined;\n let mrl = typeof pc?.mrl === \"boolean\" ? pc.mrl : undefined;\n\n // Lookup table fallback\n if (native_dimensions === undefined) {\n const modelName = (pc?.model_name as string) ?? \"\";\n const known = OPENAI_EMBEDDING_DIMENSIONS[modelName];\n if (known) {\n native_dimensions = known.native_dimensions;\n mrl = mrl ?? known.mrl;\n }\n }\n\n return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n ...(native_dimensions !== undefined ? { native_dimensions } : {}),\n ...(mrl !== undefined ? { mrl } : {}),\n };\n }\n\n return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n };\n};\n",
|
|
11
|
+
"/**\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 StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { parsePartialJson } from \"@workglow/util/worker\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\n\nexport const OpenAI_StructuredGeneration: AiProviderRunFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal, outputSchema) => {\n update_progress(0, \"Starting OpenAI structured generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const schema = input.outputSchema ?? outputSchema;\n\n const response = await client.chat.completions.create(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n response_format: {\n type: \"json_schema\" as any,\n json_schema: {\n name: \"structured_output\",\n schema: schema,\n strict: true,\n },\n } as any,\n max_completion_tokens: input.maxTokens,\n temperature: input.temperature,\n },\n { signal }\n );\n\n const content = response.choices[0]?.message?.content ?? \"{}\";\n update_progress(100, \"Completed OpenAI structured generation\");\n return { object: JSON.parse(content) };\n};\n\nexport const OpenAI_StructuredGeneration_Stream: AiProviderStreamFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n OpenAiModelConfig\n> = async function* (\n input,\n model,\n signal,\n outputSchema\n): AsyncIterable<StreamEvent<StructuredGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const schema = input.outputSchema ?? outputSchema;\n\n const stream = await client.chat.completions.create(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n response_format: {\n type: \"json_schema\" as any,\n json_schema: {\n name: \"structured_output\",\n schema: schema,\n strict: true,\n },\n } as any,\n max_completion_tokens: input.maxTokens,\n temperature: input.temperature,\n stream: true,\n },\n { signal }\n );\n\n let accumulatedJson = \"\";\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n accumulatedJson += delta;\n const partial = parsePartialJson(accumulatedJson);\n if (partial !== undefined) {\n yield { type: \"object-delta\", port: \"object\", objectDelta: partial };\n }\n }\n }\n\n let finalObject: Record<string, unknown>;\n try {\n finalObject = JSON.parse(accumulatedJson);\n } catch {\n finalObject = parsePartialJson(accumulatedJson) ?? {};\n }\n yield { type: \"finish\", data: { object: finalObject } as StructuredGenerationTaskOutput };\n};\n",
|
|
12
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\n\nexport const OpenAI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `openai:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\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 logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\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",
|
|
13
|
+
"/**\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 TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\n\nexport const OpenAI_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `openai:TextGeneration:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\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_completion_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 logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { text: response.choices[0]?.message?.content ?? \"\" };\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_completion_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\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n",
|
|
14
|
+
"/**\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 TextRewriterTaskInput,\n TextRewriterTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\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_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\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n",
|
|
15
|
+
"/**\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 TextSummaryTaskInput,\n TextSummaryTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\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\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\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n",
|
|
16
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { filterValidToolCalls, toOpenAIMessages } from \"@workglow/ai/worker\";\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport {\n accumulateOpenAIStream,\n buildOpenAITools,\n mapOpenAIToolChoice,\n parseOpenAIToolCallMessage,\n} from \"@workglow/ai/provider-utils\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\n\nexport const OpenAI_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting OpenAI tool calling\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const tools = buildOpenAITools(input.tools);\n const messages = toOpenAIMessages(input);\n const toolChoice = mapOpenAIToolChoice(input.toolChoice, true);\n\n const response = await client.chat.completions.create(\n {\n model: modelName,\n messages,\n max_completion_tokens: input.maxTokens,\n temperature: input.temperature,\n tools,\n tool_choice: toolChoice,\n },\n { signal }\n );\n\n const text = response.choices[0]?.message?.content ?? \"\";\n const toolCalls = parseOpenAIToolCallMessage(response.choices[0]?.message?.tool_calls);\n\n update_progress(100, \"Completed OpenAI tool calling\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const OpenAI_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n OpenAiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n const tools = buildOpenAITools(input.tools);\n const messages = toOpenAIMessages(input);\n const toolChoice = mapOpenAIToolChoice(input.toolChoice, true);\n\n const stream = await client.chat.completions.create(\n {\n model: modelName,\n messages,\n max_completion_tokens: input.maxTokens,\n temperature: input.temperature,\n stream: true,\n tools,\n tool_choice: toolChoice,\n },\n { signal }\n );\n\n yield* accumulateOpenAIStream(stream);\n};\n",
|
|
17
|
+
"/**\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 ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { dataUriToImageValue } from \"@workglow/ai/provider-utils\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\n\n/** Maps the normalized aspect ratio to gpt-image-2 / DALL-E supported sizes. */\nfunction aspectRatioToSize(\n aspectRatio: string | undefined\n): \"1024x1024\" | \"1024x1536\" | \"1536x1024\" {\n switch (aspectRatio) {\n case \"16:9\":\n case \"4:3\":\n return \"1536x1024\";\n case \"9:16\":\n case \"3:4\":\n return \"1024x1536\";\n case \"1:1\":\n default:\n return \"1024x1024\";\n }\n}\n\nasync function decodeB64Png(b64: string): Promise<ImageValue> {\n return dataUriToImageValue(`data:image/png;base64,${b64}`);\n}\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"openai\"\n );\n}\n\n/** Non-streaming path. Used for DALL-E or when streaming is not requested. */\nexport const OpenAI_ImageGenerate: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timer = `openai:ImageGenerate:${getModelName(model)}`;\n logger.time(timer);\n update_progress(0, \"Starting OpenAI image generation\");\n\n const client = await getClient(model);\n const modelName = getModelName(model);\n const size = aspectRatioToSize(input.aspectRatio);\n\n try {\n const resp = await client.images.generate(\n {\n model: modelName,\n prompt: input.prompt,\n size,\n quality: input.quality as\n | \"standard\"\n | \"hd\"\n | \"low\"\n | \"medium\"\n | \"high\"\n | \"auto\"\n | undefined,\n n: 1,\n response_format: \"b64_json\",\n ...(input.providerOptions ?? {}),\n } as Parameters<typeof client.images.generate>[0],\n { signal }\n );\n\n const b64 = resp.data?.[0]?.b64_json;\n if (!b64) {\n throw new ImageGenerationProviderError(modelIdOf(model), \"Empty response (no b64_json)\");\n }\n const image = await decodeB64Png(b64);\n update_progress(100, \"Completed OpenAI image generation\");\n logger.timeEnd(timer);\n return { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n ) {\n throw err;\n }\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/safety|policy|moderation/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n};\n\n/**\n * Streaming path. Yields snapshot events for each partial + final image, then finish.\n * Uses SDK v6+ streaming support: `stream: true` + `partial_images: 3` on GPT image models.\n * DALL-E 3 does not support streaming (the SDK overload for stream=true is not valid for it),\n * so this function falls back to the non-streaming path for DALL-E models.\n */\nexport const OpenAI_ImageGenerate_Stream: AiProviderStreamFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n OpenAiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ImageGenerateTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const size = aspectRatioToSize(input.aspectRatio);\n\n // DALL-E 2 and DALL-E 3 do not support streaming — fall back to non-streaming.\n if (modelName.startsWith(\"dall-e\")) {\n try {\n const resp = await (client.images.generate as Function)(\n {\n model: modelName,\n prompt: input.prompt,\n size,\n quality: input.quality,\n n: 1,\n response_format: \"b64_json\",\n ...(input.providerOptions ?? {}),\n },\n { signal }\n );\n const b64 = resp.data?.[0]?.b64_json;\n if (!b64) {\n throw new ImageGenerationProviderError(modelIdOf(model), \"Empty response (no b64_json)\");\n }\n const image = await decodeB64Png(b64);\n yield { type: \"snapshot\", data: { image } } as StreamEvent<ImageGenerateTaskOutput>;\n yield { type: \"finish\", data: {} as ImageGenerateTaskOutput };\n return;\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n ) {\n throw err;\n }\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/safety|policy|moderation/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n }\n\n // GPT image models support streaming.\n try {\n const stream = await client.images.generate(\n {\n model: modelName,\n prompt: input.prompt,\n size,\n quality: input.quality as \"low\" | \"medium\" | \"high\" | \"auto\" | undefined,\n n: 1,\n stream: true,\n partial_images: 3,\n ...(input.providerOptions ?? {}),\n },\n { signal }\n );\n\n for await (const event of stream) {\n if (signal.aborted) return;\n const b64 = event.b64_json;\n if (!b64) continue;\n const image = await decodeB64Png(b64);\n yield { type: \"snapshot\", data: { image } } as StreamEvent<ImageGenerateTaskOutput>;\n }\n yield { type: \"finish\", data: {} as ImageGenerateTaskOutput };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n ) {\n throw err;\n }\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/safety|policy|moderation/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n};\n",
|
|
18
|
+
"/**\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 ImageEditTaskInput,\n ImageEditTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { dataUriToImageValue, imageValueToPngBytes } from \"@workglow/ai/provider-utils\";\nimport { getClient, getModelName } from \"./OpenAI_Client\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\n\ntype OpenAiImageInput = ImageValue | string;\n\nfunction aspectRatioToSize(\n aspectRatio: string | undefined\n): \"1024x1024\" | \"1024x1536\" | \"1536x1024\" {\n switch (aspectRatio) {\n case \"16:9\":\n case \"4:3\":\n return \"1536x1024\";\n case \"9:16\":\n case \"3:4\":\n return \"1024x1536\";\n case \"1:1\":\n default:\n return \"1024x1024\";\n }\n}\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"openai\"\n );\n}\n\n/**\n * Encode an inbound `ImageValue` (or a serialized data URI from the worker\n * boundary) to PNG bytes wrapped in a File suitable for the OpenAI multipart\n * upload. Uses `OpenAI.toFile` when available (SDK v4+), otherwise falls\n * back to `new File(...)`.\n */\nasync function gpuImageToOpenAiFile(image: OpenAiImageInput, name: string): Promise<unknown> {\n const bytes = await imageValueToPngBytes(image);\n // Copy to a plain ArrayBuffer to avoid SharedArrayBuffer typing issues with BlobPart.\n const buffer: ArrayBuffer =\n bytes.buffer instanceof ArrayBuffer\n ? bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength)\n : new Uint8Array(bytes).buffer;\n const sdk = (await import(\"openai\")) as unknown as {\n toFile?: (input: unknown, name?: string, options?: { type?: string }) => Promise<unknown>;\n };\n if (typeof sdk.toFile === \"function\") {\n return sdk.toFile(new Blob([buffer], { type: \"image/png\" }), name, { type: \"image/png\" });\n }\n return new File([buffer], name, { type: \"image/png\" });\n}\n\nasync function decodeB64Png(b64: string): Promise<ImageValue> {\n return dataUriToImageValue(`data:image/png;base64,${b64}`);\n}\n\nasync function buildEditPayload(\n input: ImageEditTaskInput,\n model: OpenAiModelConfig | undefined\n): Promise<Record<string, unknown>> {\n const modelName = getModelName(model);\n // image/mask/additionalImages may be data URI strings when the input crossed\n // the worker boundary via AiImageOutputTask.getJobInput materialization.\n const primary = await gpuImageToOpenAiFile(\n input.image as unknown as OpenAiImageInput,\n \"image.png\"\n );\n const additionalFiles =\n input.additionalImages && (input.additionalImages as OpenAiImageInput[]).length > 0\n ? await Promise.all(\n (input.additionalImages as OpenAiImageInput[]).map((g, i) =>\n gpuImageToOpenAiFile(g, `image-${i + 1}.png`)\n )\n )\n : [];\n const imageField = additionalFiles.length === 0 ? primary : [primary, ...additionalFiles];\n\n const payload: Record<string, unknown> = {\n model: modelName,\n prompt: input.prompt,\n image: imageField,\n size: aspectRatioToSize(input.aspectRatio),\n quality: input.quality,\n n: 1,\n ...(input.providerOptions ?? {}),\n };\n if (input.mask) {\n payload.mask = await gpuImageToOpenAiFile(\n input.mask as unknown as OpenAiImageInput,\n \"mask.png\"\n );\n }\n return payload;\n}\n\nexport const OpenAI_ImageEdit: AiProviderRunFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n OpenAiModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timer = `openai:ImageEdit:${getModelName(model)}`;\n logger.time(timer);\n update_progress(0, \"Starting OpenAI image edit\");\n\n const client = await getClient(model);\n\n try {\n const payload = await buildEditPayload(input, model);\n const resp = (await (client.images.edit as Function)(payload, { signal })) as {\n data?: Array<{ b64_json?: string }>;\n };\n const b64 = resp.data?.[0]?.b64_json;\n if (!b64) {\n throw new ImageGenerationProviderError(modelIdOf(model), \"Empty response (no b64_json)\");\n }\n const image = await decodeB64Png(b64);\n update_progress(100, \"Completed OpenAI image edit\");\n logger.timeEnd(timer);\n return { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n ) {\n throw err;\n }\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/safety|policy|moderation/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n};\n\n/**\n * Streaming edit path. Yields snapshot events for each partial + final image, then finish.\n * SDK v6.35+ supports `stream: true` on `images.edit` for GPT image models.\n */\nexport const OpenAI_ImageEdit_Stream: AiProviderStreamFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n OpenAiModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ImageEditTaskOutput>> {\n const client = await getClient(model);\n\n try {\n const payload = await buildEditPayload(input, model);\n const stream = (await (client.images.edit as Function)(\n { ...payload, stream: true, partial_images: 3 },\n { signal }\n )) as AsyncIterable<{ b64_json?: string }>;\n\n for await (const event of stream) {\n if (signal.aborted) return;\n const b64 = event.b64_json;\n if (!b64) continue;\n const image = await decodeB64Png(b64);\n yield { type: \"snapshot\", data: { image } } as StreamEvent<ImageEditTaskOutput>;\n }\n yield { type: \"finish\", data: {} as ImageEditTaskOutput };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n ) {\n throw err;\n }\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/safety|policy|moderation/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n};\n",
|
|
19
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderPreviewRunFn, AiProviderRunFn, AiProviderStreamFn } from \"@workglow/ai\";\nimport type { OpenAiModelConfig } from \"./OpenAI_ModelSchema\";\nimport { OpenAI_ModelSearch } from \"./OpenAI_ModelSearch\";\n\nexport { loadOpenAISDK, getClient, getModelName } from \"./OpenAI_Client\";\n\nimport { OpenAI_CountTokens, OpenAI_CountTokens_Preview } from \"./OpenAI_CountTokens.browser\";\nimport { OpenAI_ModelInfo } from \"./OpenAI_ModelInfo\";\nimport {\n OpenAI_StructuredGeneration,\n OpenAI_StructuredGeneration_Stream,\n} from \"./OpenAI_StructuredGeneration\";\nimport { OpenAI_TextEmbedding } from \"./OpenAI_TextEmbedding\";\nimport { OpenAI_TextGeneration, OpenAI_TextGeneration_Stream } from \"./OpenAI_TextGeneration\";\nimport { OpenAI_TextRewriter, OpenAI_TextRewriter_Stream } from \"./OpenAI_TextRewriter\";\nimport { OpenAI_TextSummary, OpenAI_TextSummary_Stream } from \"./OpenAI_TextSummary\";\nimport { OpenAI_ToolCalling, OpenAI_ToolCalling_Stream } from \"./OpenAI_ToolCalling\";\nimport { OpenAI_ImageGenerate, OpenAI_ImageGenerate_Stream } from \"./OpenAI_ImageGenerate\";\nimport { OpenAI_ImageEdit, OpenAI_ImageEdit_Stream } from \"./OpenAI_ImageEdit\";\n\nexport const OPENAI_TASKS: Record<string, AiProviderRunFn<any, any, OpenAiModelConfig>> = {\n TextGenerationTask: OpenAI_TextGeneration,\n ModelInfoTask: OpenAI_ModelInfo,\n TextEmbeddingTask: OpenAI_TextEmbedding,\n TextRewriterTask: OpenAI_TextRewriter,\n TextSummaryTask: OpenAI_TextSummary,\n CountTokensTask: OpenAI_CountTokens,\n StructuredGenerationTask: OpenAI_StructuredGeneration,\n ToolCallingTask: OpenAI_ToolCalling,\n ModelSearchTask: OpenAI_ModelSearch,\n ImageGenerateTask: OpenAI_ImageGenerate,\n ImageEditTask: OpenAI_ImageEdit,\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 StructuredGenerationTask: OpenAI_StructuredGeneration_Stream,\n ToolCallingTask: OpenAI_ToolCalling_Stream,\n ImageGenerateTask: OpenAI_ImageGenerate_Stream,\n ImageEditTask: OpenAI_ImageEdit_Stream,\n};\n\nexport const OPENAI_PREVIEW_TASKS: Record<\n string,\n AiProviderPreviewRunFn<any, any, OpenAiModelConfig>\n> = {\n CountTokensTask: OpenAI_CountTokens_Preview,\n};\n",
|
|
20
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { OPENAI } from \"./common/OpenAI_Constants\";\nimport type { OpenAiModelConfig } from \"./common/OpenAI_ModelSchema\";\n\nconst OPENAI_QUEUED_TASK_TYPES = [\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"CountTokensTask\",\n \"ModelInfoTask\",\n \"StructuredGenerationTask\",\n \"ToolCallingTask\",\n \"ModelSearchTask\",\n \"ImageGenerateTask\",\n \"ImageEditTask\",\n] as const;\n\n/** Main-thread registration (inline or worker-backed). No queue — uses direct execution. */\nexport class OpenAiQueuedProvider extends createCloudProviderClass<\n OpenAiModelConfig,\n typeof OPENAI_QUEUED_TASK_TYPES\n>(AiProvider, {\n name: OPENAI,\n displayName: \"OpenAI\",\n taskTypes: OPENAI_QUEUED_TASK_TYPES,\n}) {}\n",
|
|
21
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { registerProviderWorker } from \"@workglow/ai/provider-utils\";\nimport {\n OPENAI_PREVIEW_TASKS,\n OPENAI_STREAM_TASKS,\n OPENAI_TASKS,\n} from \"./common/OpenAI_JobRunFns.browser\";\nimport { OpenAiProvider } from \"./OpenAiProvider\";\n\nexport async function registerOpenAiWorker(): Promise<void> {\n await registerProviderWorker(\n (ws) =>\n new OpenAiProvider(\n OPENAI_TASKS,\n OPENAI_STREAM_TASKS,\n OPENAI_PREVIEW_TASKS\n ).registerOnWorkerServer(ws),\n \"OpenAI\"\n );\n}\n",
|
|
22
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider } from \"@workglow/ai/worker\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { OPENAI } from \"./common/OpenAI_Constants\";\nimport type { OpenAiModelConfig } from \"./common/OpenAI_ModelSchema\";\n\nconst OPENAI_WORKER_TASK_TYPES = [\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"CountTokensTask\",\n \"ModelInfoTask\",\n \"StructuredGenerationTask\",\n \"ToolCallingTask\",\n \"ModelSearchTask\",\n] as const;\n\n/**\n * Worker-server registration for OpenAI cloud models. Imports `AiProvider`\n * from `@workglow/ai/worker` so the SDK is only loaded in the worker.\n */\nexport class OpenAiProvider extends createCloudProviderClass<\n OpenAiModelConfig,\n typeof OPENAI_WORKER_TASK_TYPES\n>(AiProvider, {\n name: OPENAI,\n displayName: \"OpenAI\",\n taskTypes: OPENAI_WORKER_TASK_TYPES,\n}) {}\n"
|
|
23
|
+
],
|
|
24
|
+
"mappings": "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",
|
|
25
|
+
"debugId": "0886E9199E9CDB5F64756E2164756E21",
|
|
26
|
+
"names": []
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-runtime.d.ts","sourceRoot":"","sources":["../src/ai-runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC"}
|