@workglow/google-gemini 0.2.36 → 0.2.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/GoogleGeminiProvider.d.ts +1 -1
- package/dist/ai/GoogleGeminiProvider.d.ts.map +1 -1
- package/dist/ai/GoogleGeminiQueuedProvider.d.ts +1 -1
- package/dist/ai/GoogleGeminiQueuedProvider.d.ts.map +1 -1
- package/dist/ai/common/Gemini_CountTokens.d.ts.map +1 -1
- package/dist/ai/common/Gemini_ImageGenerate.d.ts.map +1 -1
- package/dist/ai/common/Gemini_JobRunFns.d.ts +2 -2
- package/dist/ai/common/Gemini_JobRunFns.d.ts.map +1 -1
- package/dist/ai/common/Gemini_StructuredGeneration.d.ts.map +1 -1
- package/dist/ai/common/Gemini_TextEmbedding.d.ts.map +1 -1
- package/dist/ai/common/Gemini_TextGeneration.d.ts.map +1 -1
- package/dist/ai/common/Gemini_TextRewriter.d.ts.map +1 -1
- package/dist/ai/common/Gemini_TextSummary.d.ts.map +1 -1
- package/dist/ai/common/Gemini_ToolCalling.d.ts.map +1 -1
- package/dist/ai-runtime.js +19 -19
- package/dist/ai-runtime.js.map +17 -17
- package/dist/ai.js.map +12 -12
- package/package.json +11 -11
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { AiProvider } from "@workglow/ai/worker";
|
|
7
6
|
import type { Capability, ModelRecord } from "@workglow/ai/worker";
|
|
7
|
+
import { AiProvider } from "@workglow/ai/worker";
|
|
8
8
|
declare const GoogleGeminiProvider_base: new (promiseRunFns?: readonly import("@workglow/ai").AiProviderRunFnRegistration<any, any, {
|
|
9
9
|
capabilities?: string[] | undefined;
|
|
10
10
|
description?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleGeminiProvider.d.ts","sourceRoot":"","sources":["../../src/ai/GoogleGeminiProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"GoogleGeminiProvider.d.ts","sourceRoot":"","sources":["../../src/ai/GoogleGeminiProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKjD;;;;;;;;;GASG;AACH,qBAAa,oBAAqB,SAAQ,yBAGxC;IACS,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,UAAU,EAAE,CAEpE;IAED,UAAmB,gBAAgB,IAAI,SAAS;QAAE,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE,EAAE,CAElF;CACF"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { AiProvider } from "@workglow/ai";
|
|
7
6
|
import type { Capability, ModelRecord } from "@workglow/ai";
|
|
7
|
+
import { AiProvider } from "@workglow/ai";
|
|
8
8
|
declare const GoogleGeminiQueuedProvider_base: new (promiseRunFns?: readonly import("@workglow/ai").AiProviderRunFnRegistration<any, any, {
|
|
9
9
|
capabilities?: string[] | undefined;
|
|
10
10
|
description?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleGeminiQueuedProvider.d.ts","sourceRoot":"","sources":["../../src/ai/GoogleGeminiQueuedProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"GoogleGeminiQueuedProvider.d.ts","sourceRoot":"","sources":["../../src/ai/GoogleGeminiQueuedProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAM1C;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,+BAM/C;IACU,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,UAAU,EAAE,CAEpE;IAED,UAAmB,gBAAgB,IAAI,SAAS;QAAE,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE,EAAE,CAElF;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_CountTokens.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_CountTokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Gemini_CountTokens.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_CountTokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,yBAAyB,EAAE,eAAe,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAOlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,CAC7D,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAGlB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_ImageGenerate.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_ImageGenerate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EAExB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Gemini_ImageGenerate.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_ImageGenerate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAe9D;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,eAAe,CACvD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CAiElB,CAAC"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Copyright 2025 Steven Roussey <sroussey@gmail.com>
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { AiProviderPreviewRunFn, AiProviderRunFnRegistration } from "@workglow/ai";
|
|
7
7
|
import type { GeminiModelConfig } from "./Gemini_ModelSchema";
|
|
8
|
-
export {
|
|
8
|
+
export { getApiKey, getModelName, loadGeminiSDK } from "./Gemini_Client";
|
|
9
9
|
export { sanitizeSchemaForGemini } from "./Gemini_Schema";
|
|
10
10
|
/**
|
|
11
11
|
* Capability-set run-fn registrations for the Google Gemini provider. Order is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Gemini_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAcxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAc1D;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,2BAA2B,CAE/D,GAAG,EAEH,GAAG,EACH,iBAAiB,CAClB,EAYA,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,MAAM,EAEN,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAGpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_StructuredGeneration.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_StructuredGeneration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Gemini_StructuredGeneration.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_StructuredGeneration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,EAAE,eAAe,CAC9D,6BAA6B,EAC7B,8BAA8B,EAC9B,iBAAiB,CA4ClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_TextEmbedding.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_TextEmbedding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Gemini_TextEmbedding.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_TextEmbedding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,2BAA2B,EAAE,eAAe,CACvD,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,CA4ClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_TextGeneration.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_TextGeneration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Gemini_TextGeneration.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_TextGeneration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAe9D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,EAAE,eAAe,CACxD,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,CAiElB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_TextRewriter.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_TextRewriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Gemini_TextRewriter.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_TextRewriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEnG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,0BAA0B,EAAE,eAAe,CACtD,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,CAqBlB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_TextSummary.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_TextSummary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Gemini_TextSummary.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_TextSummary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,yBAAyB,EAAE,eAAe,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAqBlB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gemini_ToolCalling.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_ToolCalling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"Gemini_ToolCalling.d.ts","sourceRoot":"","sources":["../../../src/ai/common/Gemini_ToolCalling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,SAAS,EAChD,MAAM,EAAE,OAAO,GACd,GAAG,EAAE,CA4DP;AAwBD,eAAO,MAAM,yBAAyB,EAAE,eAAe,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,CAgElB,CAAC"}
|
package/dist/ai-runtime.js
CHANGED
|
@@ -35,6 +35,23 @@ function getModelName(model) {
|
|
|
35
35
|
// src/ai/registerGeminiInline.ts
|
|
36
36
|
import { registerProviderInline } from "@workglow/ai/provider-utils";
|
|
37
37
|
|
|
38
|
+
// src/ai/common/Gemini_ImageValidation.ts
|
|
39
|
+
import { AiImageOutputTask, ProviderUnsupportedFeatureError } from "@workglow/ai";
|
|
40
|
+
|
|
41
|
+
// src/ai/common/Gemini_Constants.ts
|
|
42
|
+
var GOOGLE_GEMINI = "GOOGLE_GEMINI";
|
|
43
|
+
|
|
44
|
+
// src/ai/common/Gemini_ImageValidation.ts
|
|
45
|
+
function registerGeminiImageValidator() {
|
|
46
|
+
AiImageOutputTask.registerProviderImageValidator(GOOGLE_GEMINI, (taskType, input, model) => {
|
|
47
|
+
if (taskType !== "ImageEditTask")
|
|
48
|
+
return;
|
|
49
|
+
if (input["mask"] !== undefined && input["mask"] !== null) {
|
|
50
|
+
throw new ProviderUnsupportedFeatureError("mask", model.model_id ?? "gemini", "Gemini does not support mask-based inpainting; remove the mask or use OpenAI gpt-image-2");
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
38
55
|
// src/ai/common/Gemini_CapabilitySets.ts
|
|
39
56
|
var GEMINI_TEXT_GENERATION = ["text.generation"];
|
|
40
57
|
var GEMINI_TOOL_USE = ["text.generation", "tool-use"];
|
|
@@ -264,11 +281,6 @@ var Gemini_ModelInfo_Stream = async (input, model, _signal, emit) => {
|
|
|
264
281
|
|
|
265
282
|
// src/ai/common/Gemini_ModelSearch.ts
|
|
266
283
|
import { normalizedModelSearchQuery } from "@workglow/ai/provider-utils";
|
|
267
|
-
|
|
268
|
-
// src/ai/common/Gemini_Constants.ts
|
|
269
|
-
var GOOGLE_GEMINI = "GOOGLE_GEMINI";
|
|
270
|
-
|
|
271
|
-
// src/ai/common/Gemini_ModelSearch.ts
|
|
272
284
|
var GEMINI_FALLBACK_MODELS = [
|
|
273
285
|
{ label: "gemini-3.1-pro-preview", value: "gemini-3.1-pro-preview" },
|
|
274
286
|
{ label: "gemini-3-flash-preview", value: "gemini-3-flash-preview" },
|
|
@@ -766,18 +778,6 @@ class GoogleGeminiQueuedProvider extends createCloudProviderClass(AiProvider, {
|
|
|
766
778
|
}
|
|
767
779
|
}
|
|
768
780
|
|
|
769
|
-
// src/ai/common/Gemini_ImageValidation.ts
|
|
770
|
-
import { AiImageOutputTask, ProviderUnsupportedFeatureError } from "@workglow/ai";
|
|
771
|
-
function registerGeminiImageValidator() {
|
|
772
|
-
AiImageOutputTask.registerProviderImageValidator(GOOGLE_GEMINI, (taskType, input, model) => {
|
|
773
|
-
if (taskType !== "ImageEditTask")
|
|
774
|
-
return;
|
|
775
|
-
if (input["mask"] !== undefined && input["mask"] !== null) {
|
|
776
|
-
throw new ProviderUnsupportedFeatureError("mask", model.model_id ?? "gemini", "Gemini does not support mask-based inpainting; remove the mask or use OpenAI gpt-image-2");
|
|
777
|
-
}
|
|
778
|
-
});
|
|
779
|
-
}
|
|
780
|
-
|
|
781
781
|
// src/ai/registerGeminiInline.ts
|
|
782
782
|
async function registerGeminiInline(options) {
|
|
783
783
|
registerGeminiImageValidator();
|
|
@@ -788,8 +788,8 @@ async function registerGeminiInline(options) {
|
|
|
788
788
|
import { registerProviderWorker } from "@workglow/ai/provider-utils";
|
|
789
789
|
|
|
790
790
|
// src/ai/GoogleGeminiProvider.ts
|
|
791
|
-
import { AiProvider as AiProvider2 } from "@workglow/ai/worker";
|
|
792
791
|
import { createCloudProviderClass as createCloudProviderClass2 } from "@workglow/ai/provider-utils";
|
|
792
|
+
import { AiProvider as AiProvider2 } from "@workglow/ai/worker";
|
|
793
793
|
class GoogleGeminiProvider extends createCloudProviderClass2(AiProvider2, {
|
|
794
794
|
name: GOOGLE_GEMINI,
|
|
795
795
|
displayName: "Google Gemini"
|
|
@@ -814,4 +814,4 @@ export {
|
|
|
814
814
|
getApiKey
|
|
815
815
|
};
|
|
816
816
|
|
|
817
|
-
//# debugId=
|
|
817
|
+
//# debugId=994365438E014D5B64756E2164756E21
|
package/dist/ai-runtime.js.map
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/ai/common/Gemini_Client.ts", "../src/ai/registerGeminiInline.ts", "../src/ai/common/
|
|
3
|
+
"sources": ["../src/ai/common/Gemini_Client.ts", "../src/ai/registerGeminiInline.ts", "../src/ai/common/Gemini_ImageValidation.ts", "../src/ai/common/Gemini_Constants.ts", "../src/ai/common/Gemini_CapabilitySets.ts", "../src/ai/common/Gemini_Schema.ts", "../src/ai/common/Gemini_CountTokens.ts", "../src/ai/common/Gemini_ImageEdit.ts", "../src/ai/common/Gemini_ImageGenerate.ts", "../src/ai/common/Gemini_ModelInfo.ts", "../src/ai/common/Gemini_ModelSearch.ts", "../src/ai/common/Gemini_StructuredGeneration.ts", "../src/ai/common/Gemini_TextEmbedding.ts", "../src/ai/common/Gemini_TextGeneration.ts", "../src/ai/common/Gemini_ToolCalling.ts", "../src/ai/common/Gemini_TextRewriter.ts", "../src/ai/common/Gemini_TextSummary.ts", "../src/ai/common/Gemini_JobRunFns.ts", "../src/ai/GoogleGeminiQueuedProvider.ts", "../src/ai/common/Gemini_Capabilities.ts", "../src/ai/registerGeminiWorker.ts", "../src/ai/GoogleGeminiProvider.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { resolveApiKey } from \"@workglow/ai/provider-utils\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\ntype GeminiSDKModule = typeof import(\"@google/generative-ai\");\ntype GoogleGenerativeAIConstructor = GeminiSDKModule[\"GoogleGenerativeAI\"];\n\nlet _loadPromise: Promise<GoogleGenerativeAIConstructor> | 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 loadGeminiSDK(): Promise<GoogleGenerativeAIConstructor> {\n _loadPromise ??= import(\"@google/generative-ai\")\n .then((mod) => mod.GoogleGenerativeAI)\n .catch(() => {\n _loadPromise = undefined;\n throw new Error(\n \"@google/generative-ai is required for Gemini tasks. Install it with: bun add @google/generative-ai\"\n );\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 embedding_task_type?: string | null;\n}\n\nexport function getApiKey(model: GeminiModelConfig | undefined): string {\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n return resolveApiKey({\n config,\n envVar: [\"GOOGLE_API_KEY\", \"GEMINI_API_KEY\"],\n providerLabel: \"Google\",\n });\n}\n\nexport function getModelName(model: GeminiModelConfig | 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 {
|
|
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 { registerGeminiImageValidator } from \"./common/Gemini_ImageValidation\";\nimport { GEMINI_PREVIEW_TASKS, GEMINI_RUN_FNS } from \"./common/Gemini_JobRunFns\";\nimport { GoogleGeminiQueuedProvider } from \"./GoogleGeminiQueuedProvider\";\n\nexport async function registerGeminiInline(options?: AiProviderRegisterOptions): Promise<void> {\n registerGeminiImageValidator();\n await registerProviderInline(\n new GoogleGeminiQueuedProvider(GEMINI_RUN_FNS, GEMINI_PREVIEW_TASKS),\n \"Google Gemini\",\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 { ModelConfig } from \"@workglow/ai\";\nimport { AiImageOutputTask, ProviderUnsupportedFeatureError } from \"@workglow/ai\";\n\nimport { GOOGLE_GEMINI } from \"./Gemini_Constants\";\n\n/**\n * Registers the Gemini per-provider image validator. Called at provider registration time\n * (both inline and worker-backed paths) so it runs on the main thread before any dispatch.\n *\n * Currently validates:\n * - ImageEditTask + non-null mask → throws (Gemini does not support mask-based inpainting).\n */\nexport function registerGeminiImageValidator(): void {\n AiImageOutputTask.registerProviderImageValidator(\n GOOGLE_GEMINI,\n (taskType, input, model: ModelConfig) => {\n if (taskType !== \"ImageEditTask\") return;\n if (input[\"mask\"] !== undefined && input[\"mask\"] !== null) {\n throw new ProviderUnsupportedFeatureError(\n \"mask\",\n model.model_id ?? \"gemini\",\n \"Gemini does not support mask-based inpainting; remove the mask or use OpenAI gpt-image-2\"\n );\n }\n }\n );\n}\n",
|
|
8
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const GOOGLE_GEMINI = \"GOOGLE_GEMINI\";\n",
|
|
7
9
|
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability } from \"@workglow/ai/worker\";\n\n/**\n * Single source of truth for Google Gemini's capability sets.\n *\n * Both `GEMINI_RUN_FNS` (the worker-side registration list) and\n * `workerRunFnSpecs()` (the main-thread proxy declaration) derive their\n * `serves` arrays from these named exports. SDK-free so the main thread\n * can import without paying the Gemini client cost.\n *\n * To add a new capability set: declare a new `as const` constant here,\n * then reference it from both `GEMINI_RUN_FNS` and `GEMINI_RUN_FN_SPECS`.\n */\nexport const GEMINI_TEXT_GENERATION = [\"text.generation\"] as const satisfies Capability[];\nexport const GEMINI_TOOL_USE = [\"text.generation\", \"tool-use\"] as const satisfies Capability[];\nexport const GEMINI_JSON_MODE = [\"text.generation\", \"json-mode\"] as const satisfies Capability[];\nexport const GEMINI_TEXT_REWRITER = [\"text.rewriter\"] as const satisfies Capability[];\nexport const GEMINI_TEXT_SUMMARY = [\"text.summary\"] as const satisfies Capability[];\nexport const GEMINI_TEXT_EMBEDDING = [\"text.embedding\"] as const satisfies Capability[];\nexport const GEMINI_IMAGE_GENERATION = [\"image.generation\"] as const satisfies Capability[];\nexport const GEMINI_IMAGE_EDITING = [\"image.editing\"] as const satisfies Capability[];\nexport const GEMINI_COUNT_TOKENS = [\"model.count-tokens\"] as const satisfies Capability[];\nexport const GEMINI_MODEL_SEARCH = [\"model.search\"] as const satisfies Capability[];\nexport const GEMINI_MODEL_INFO = [\"model.info\"] as const satisfies Capability[];\n\n/** Aggregated list — for `workerRunFnSpecs()` derivation. Order MUST match `GEMINI_RUN_FNS`. */\nexport const GEMINI_CAPABILITY_SETS = [\n GEMINI_TEXT_GENERATION,\n GEMINI_TOOL_USE,\n GEMINI_JSON_MODE,\n GEMINI_TEXT_REWRITER,\n GEMINI_TEXT_SUMMARY,\n GEMINI_TEXT_EMBEDDING,\n GEMINI_IMAGE_GENERATION,\n GEMINI_IMAGE_EDITING,\n GEMINI_COUNT_TOKENS,\n GEMINI_MODEL_SEARCH,\n GEMINI_MODEL_INFO,\n] as const;\n",
|
|
8
10
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Recursively strip JSON Schema properties that the Gemini API does not support\n * (e.g. `additionalProperties`). Returns a shallow-cloned schema without mutating the original.\n */\nexport function sanitizeSchemaForGemini(schema: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(schema)) {\n if (key === \"additionalProperties\") continue;\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n result[key] = sanitizeSchemaForGemini(value as Record<string, unknown>);\n } else {\n result[key] = value;\n }\n }\n return result;\n}\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
|
|
11
|
+
"/**\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 { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport const Gemini_CountTokens_Stream: AiProviderRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({ model: getModelName(model) });\n const result = await genModel.countTokens(input.text);\n emit({ type: \"finish\", data: { count: result.totalTokens } });\n};\n\nexport const Gemini_CountTokens_Preview: AiProviderPreviewRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n GeminiModelConfig\n> = async (input, _model) => {\n return { count: Math.ceil(input.text.length / 4) };\n};\n",
|
|
10
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 ImageEditTaskInput,\n ImageEditTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { dataUriToImageValue, imageValueToPngBytes } from \"@workglow/ai/provider-utils\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\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 \"gemini\"\n );\n}\n\n/** Decode a base64 inline image part into an ImageValue. */\nasync function decodeInlineImage(mimeType: string, data: string): Promise<ImageValue> {\n return dataUriToImageValue(`data:${mimeType};base64,${data}`);\n}\n\n/**\n * Encode an inbound `ImageValue` (or a legacy data URI string) as base64 PNG\n * for use in an inlineData Part.\n */\nasync function gpuImageToInlinePart(\n image: ImageValue | string\n): Promise<{ inlineData: { mimeType: string; data: string } }> {\n if (typeof image === \"string\" && image.startsWith(\"data:\")) {\n // Data URI materialized at an earlier worker boundary — extract base64 directly.\n const base64 = image.replace(/^data:[^;]+;base64,/, \"\");\n return { inlineData: { mimeType: \"image/png\", data: base64 } };\n }\n const bytes = await imageValueToPngBytes(image);\n // Convert raw bytes to base64 for the inlineData part. Buffer.toString\n // is used in node; fall back to btoa over chunks in browser-like runtimes.\n let base64: string;\n if (typeof Buffer !== \"undefined\") {\n base64 = Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString(\"base64\");\n } else {\n let binary = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n base64 = btoa(binary);\n }\n return { inlineData: { mimeType: \"image/png\", data: base64 } };\n}\n\n/**\n * Run-fn for `[\"image.editing\"]`. Gemini does not support partial\n * image streaming, so we execute the full edit, emit one snapshot, then\n * a finish event.\n */\nexport const Gemini_ImageEdit_Stream: AiProviderRunFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `gemini:ImageEdit:${modelIdOf(model)}`;\n logger.time(timer, { model: modelIdOf(model) });\n try {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const modelName = getModelName(model);\n const genModel = genAI.getGenerativeModel({ model: modelName });\n\n // image/additionalImages may be data URI strings if the input crossed\n // an earlier worker boundary in legacy form; otherwise they are ImageValue\n // POJOs from the standard image hydration resolver.\n const primaryPart = await gpuImageToInlinePart(input.image as unknown as ImageValue | string);\n\n const additionalParts: Array<{ inlineData: { mimeType: string; data: string } }> =\n input.additionalImages && (input.additionalImages as Array<ImageValue | string>).length > 0\n ? await Promise.all(\n (input.additionalImages as Array<ImageValue | string>).map((g) =>\n gpuImageToInlinePart(g)\n )\n )\n : [];\n\n const parts: Array<any> = [{ text: input.prompt }, primaryPart, ...additionalParts];\n\n try {\n const result = await genModel.generateContent({ contents: [{ role: \"user\", parts }] }, {\n signal,\n } as any);\n\n const response = result.response;\n\n // Check for safety blocks\n if (\n !response.candidates ||\n response.candidates.length === 0 ||\n response.promptFeedback?.blockReason\n ) {\n const reason = response.promptFeedback?.blockReason ?? \"SAFETY\";\n throw new ImageGenerationContentPolicyError(modelIdOf(model), `Blocked: ${reason}`);\n }\n\n // Find the inline image part\n const candidateParts = response.candidates[0]?.content?.parts ?? [];\n const imagePart = candidateParts.find(\n (p: any) => p.inlineData && p.inlineData.mimeType && p.inlineData.data\n ) as { inlineData: { mimeType: string; data: string } } | undefined;\n\n if (!imagePart) {\n throw new ImageGenerationProviderError(\n modelIdOf(model),\n \"No image part in response (Gemini did not return an inline image)\"\n );\n }\n\n const image = await decodeInlineImage(\n imagePart.inlineData.mimeType,\n imagePart.inlineData.data\n );\n emit({ type: \"snapshot\", data: { image } } as any);\n emit({ 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|blocked|SAFETY|PROHIBITED/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n } finally {\n logger.timeEnd(timer, { model: modelIdOf(model) });\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 ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { dataUriToImageValue } from \"@workglow/ai/provider-utils\";\nimport
|
|
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 ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { dataUriToImageValue } from \"@workglow/ai/provider-utils\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\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 \"gemini\"\n );\n}\n\n/** Decode a base64 string with an explicit mime type into an ImageValue. */\nasync function decodeInlineImage(mimeType: string, data: string): Promise<ImageValue> {\n return dataUriToImageValue(`data:${mimeType};base64,${data}`);\n}\n\n/**\n * Run-fn for `[\"image.generation\"]`. Gemini does not support partial\n * image streaming, so we execute the full generation, emit one snapshot, then\n * a finish event per the one-shot convention.\n */\nexport const Gemini_ImageGenerate_Stream: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `gemini:ImageGenerate:${modelIdOf(model)}`;\n logger.time(timer, { model: modelIdOf(model) });\n try {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const modelName = getModelName(model);\n const genModel = genAI.getGenerativeModel({ model: modelName });\n\n const parts: Array<{ text: string }> = [{ text: input.prompt }];\n\n try {\n const result = await genModel.generateContent({ contents: [{ role: \"user\", parts }] }, {\n signal,\n } as any);\n\n const response = result.response;\n\n // Check for safety blocks\n if (\n !response.candidates ||\n response.candidates.length === 0 ||\n response.promptFeedback?.blockReason\n ) {\n const reason = response.promptFeedback?.blockReason ?? \"SAFETY\";\n throw new ImageGenerationContentPolicyError(modelIdOf(model), `Blocked: ${reason}`);\n }\n\n // Find the inline image part\n const candidateParts = response.candidates[0]?.content?.parts ?? [];\n const imagePart = candidateParts.find(\n (p: any) => p.inlineData && p.inlineData.mimeType && p.inlineData.data\n ) as { inlineData: { mimeType: string; data: string } } | undefined;\n\n if (!imagePart) {\n throw new ImageGenerationProviderError(\n modelIdOf(model),\n \"No image part in response (Gemini did not return an inline image)\"\n );\n }\n\n const image = await decodeInlineImage(\n imagePart.inlineData.mimeType,\n imagePart.inlineData.data\n );\n emit({ type: \"snapshot\", data: { image } } as any);\n emit({ 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|blocked|SAFETY|PROHIBITED/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n } finally {\n logger.timeEnd(timer, { model: modelIdOf(model) });\n }\n};\n",
|
|
12
14
|
"/**\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 { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\n/** Known Gemini embedding model dimensions. */\nconst GEMINI_EMBEDDING_DIMENSIONS: Record<string, { native_dimensions: number; mrl: boolean }> = {\n \"text-embedding-004\": { native_dimensions: 768, mrl: true },\n \"embedding-001\": { native_dimensions: 768, mrl: false },\n};\n\nexport const Gemini_ModelInfo_Stream: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n GeminiModelConfig\n> = async (input, model, _signal, emit) => {\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 if (native_dimensions === undefined) {\n const modelName = (pc?.model_name as string) ?? \"\";\n const known = GEMINI_EMBEDDING_DIMENSIONS[modelName];\n if (known) {\n native_dimensions = known.native_dimensions;\n mrl = mrl ?? known.mrl;\n }\n }\n emit({\n type: \"finish\",\n data: {\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 return;\n }\n emit({\n type: \"finish\",\n data: {\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};\n",
|
|
13
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 ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport { normalizedModelSearchQuery } from \"@workglow/ai/provider-utils\";\nimport { GOOGLE_GEMINI } from \"./Gemini_Constants\";\n\ninterface GeminiModelEntry {\n readonly label: string;\n readonly value: string;\n readonly capabilities?: readonly string[];\n}\n\nexport const GEMINI_FALLBACK_MODELS: readonly GeminiModelEntry[] = [\n { label: \"gemini-3.1-pro-preview\", value: \"gemini-3.1-pro-preview\" },\n { label: \"gemini-3-flash-preview\", value: \"gemini-3-flash-preview\" },\n { label: \"gemini-3.1-flash-lite-preview\", value: \"gemini-3.1-flash-lite-preview\" },\n { label: \"gemini-2.5-flash\", value: \"gemini-2.5-flash\" },\n { label: \"gemini-2.5-pro\", value: \"gemini-2.5-pro\" },\n // Embedding models\n {\n label: \"gemini-embedding-2\",\n value: \"gemini-embedding-2\",\n capabilities: [\"text.embedding\"],\n },\n {\n label: \"gemini-embedding-001\",\n value: \"gemini-embedding-001\",\n capabilities: [\"text.embedding\"],\n },\n // Image-output models\n {\n label: \"gemini-3.1-flash-image-preview\",\n value: \"gemini-3.1-flash-image-preview\",\n capabilities: [\"image.generation\", \"image.editing\"],\n },\n {\n label: \"gemini-3-pro-image-preview\",\n value: \"gemini-3-pro-image-preview\",\n capabilities: [\"image.generation\", \"image.editing\"],\n },\n {\n label: \"imagen-4.0-generate-001\",\n value: \"imagen-4.0-generate-001\",\n capabilities: [\"image.generation\"],\n },\n];\n\ninterface GeminiApiModel {\n readonly name: string;\n readonly displayName?: string;\n readonly description?: string;\n readonly supportedGenerationMethods?: readonly string[];\n}\n\nfunction capabilitiesForGeminiApiModel(model: GeminiApiModel, id: string): string[] {\n const staticEntry = GEMINI_FALLBACK_MODELS.find((m) => m.value === id);\n if (staticEntry?.capabilities) return [...staticEntry.capabilities];\n\n const methods = model.supportedGenerationMethods ?? [];\n if (methods.some((method) => method.toLowerCase().includes(\"embed\"))) {\n return [\"text.embedding\"];\n }\n return [];\n}\n\nfunction mapGeminiModel(model: GeminiApiModel): ModelSearchResultItem {\n const id = model.name.startsWith(\"models/\") ? model.name.slice(\"models/\".length) : model.name;\n const title = model.displayName || id;\n return {\n id,\n label: title,\n description: model.displayName ? id : (model.description ?? \"\"),\n record: {\n model_id: id,\n provider: GOOGLE_GEMINI,\n title,\n description: model.description ?? \"\",\n capabilities: capabilitiesForGeminiApiModel(model, id),\n provider_config: { model_name: id },\n metadata: {},\n },\n raw: model,\n };\n}\n\nasync function listGeminiModels(\n credentialKey: string,\n signal?: AbortSignal\n): Promise<ModelSearchResultItem[]> {\n const params = new URLSearchParams({ key: credentialKey });\n const response = await fetch(\n `https://generativelanguage.googleapis.com/v1beta/models?${params}`,\n {\n signal,\n }\n );\n if (!response.ok) throw new Error(`Gemini API returned ${response.status}`);\n const body = (await response.json()) as { models?: GeminiApiModel[] };\n return (body.models ?? []).map(mapGeminiModel);\n}\n\nexport const Gemini_ModelSearch_Stream: AiProviderRunFn<\n ModelSearchTaskInput,\n ModelSearchTaskOutput\n> = async (input, _model, signal, emit) => {\n const q = normalizedModelSearchQuery(input.query);\n if (input.credential_key) {\n const models = await listGeminiModels(input.credential_key, signal);\n const results = q\n ? models.filter((m) => m.id.toLowerCase().includes(q) || m.label.toLowerCase().includes(q))\n : models;\n emit({ type: \"finish\", data: { results } });\n return;\n }\n\n const filtered = q\n ? GEMINI_FALLBACK_MODELS.filter(\n (m) => m.value.toLowerCase().includes(q) || m.label.toLowerCase().includes(q)\n )\n : GEMINI_FALLBACK_MODELS;\n const results: ModelSearchResultItem[] = filtered.map((m) => ({\n id: m.value,\n label: m.label,\n description: \"\",\n record: {\n model_id: m.value,\n provider: GOOGLE_GEMINI,\n title: m.value,\n description: \"\",\n capabilities: m.capabilities ? [...m.capabilities] : [],\n provider_config: { model_name: m.value },\n metadata: {},\n },\n raw: m,\n }));\n emit({ type: \"finish\", data: { results } });\n};\n",
|
|
14
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const
|
|
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
|
|
16
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {
|
|
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
|
|
18
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {
|
|
19
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {
|
|
20
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n
|
|
21
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {
|
|
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\";\nimport type { Capability, ModelRecord } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { GOOGLE_GEMINI } from \"./common/Gemini_Constants\";\nimport { inferGeminiCapabilities, geminiWorkerRunFnSpecs } from \"./common/Gemini_Capabilities\";\nimport type { GeminiModelConfig } from \"./common/Gemini_ModelSchema\";\n\n/**\n * Main-thread registration shell for Google Gemini. Used both for inline mode\n * (constructed with the run-fn registrations array) and worker-backed mode\n * (constructed empty so the base class registers worker proxies). No queue\n * is created — Google Gemini uses {@link DirectExecutionStrategy}.\n */\nexport class GoogleGeminiQueuedProvider extends createCloudProviderClass<GeminiModelConfig>(\n AiProvider,\n {\n name: GOOGLE_GEMINI,\n displayName: \"Google Gemini\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferGeminiCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return geminiWorkerRunFnSpecs();\n }\n}\n",
|
|
16
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport { parsePartialJson } from \"@workglow/util/worker\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\nimport { sanitizeSchemaForGemini } from \"./Gemini_Schema\";\n\n/**\n * Streaming run-fn for `[\"text.generation\", \"json-mode\"]`. Gemini uses\n * `responseSchema` + `responseMimeType: \"application/json\"` to produce\n * structured output. Per the streaming convention exception for json-mode,\n * the `finish` event MUST include the parsed `object` so that\n * `StructuredGenerationTask` can read it without a JSON streaming parser.\n */\nexport const Gemini_StructuredGeneration_Stream: AiProviderRunFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit, outputSchema) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const schema = input.outputSchema ?? outputSchema;\n\n const sanitizedSchema = sanitizeSchemaForGemini(schema as Record<string, unknown>);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n responseMimeType: \"application/json\",\n responseSchema: sanitizedSchema as any,\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }] },\n { signal }\n );\n\n let accumulatedJson = \"\";\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n accumulatedJson += text;\n const partial = parsePartialJson(accumulatedJson);\n if (partial !== undefined) {\n emit({ 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 // json-mode finish exception: populate finish.data.object with parsed result.\n emit({ type: \"finish\", data: { object: finalObject } as StructuredGenerationTaskOutput });\n};\n",
|
|
17
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskType } from \"@google/generative-ai\";\nimport type {\n AiProviderRunFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport const Gemini_TextEmbedding_Stream: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n GeminiModelConfig\n> = async (input, model, _signal, emit) => {\n const logger = getLogger();\n const timerLabel = `gemini:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n try {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const embeddingModel = genAI.getGenerativeModel({\n model: getModelName(model),\n });\n\n const taskType =\n (model?.provider_config?.embedding_task_type as TaskType) ||\n (\"RETRIEVAL_DOCUMENT\" as TaskType);\n\n if (Array.isArray(input.text)) {\n const result = await embeddingModel.batchEmbedContents({\n requests: input.text.map((t) => ({\n content: { role: \"user\", parts: [{ text: t }] },\n taskType,\n })),\n });\n emit({\n type: \"finish\",\n data: {\n vector: result.embeddings.map((e) => new Float32Array(e.values)),\n },\n });\n return;\n }\n\n const result = await embeddingModel.embedContent({\n content: { role: \"user\", parts: [{ text: input.text as string }] },\n taskType,\n });\n\n emit({\n type: \"finish\",\n data: { vector: new Float32Array(result.embedding.values) },\n });\n } finally {\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\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 TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\nimport { buildGeminiContents } from \"./Gemini_ToolCalling\";\n\n/**\n * Inputs that the unified `[\"text.generation\"]` runFn handles. Both\n * {@link TextGenerationTask} and {@link AiChatTask} declare\n * `requires: [\"text.generation\"]`, so the capability dispatcher routes both\n * here. AiChatTask supplies a populated `messages` array; TextGenerationTask\n * (and other simple prompt callers) supply a `prompt` string only.\n */\ninterface UnifiedTextGenerationInput extends TextGenerationTaskInput {\n readonly messages?: readonly unknown[];\n readonly systemPrompt?: string;\n}\n\n/**\n * Streaming run-fn for the `[\"text.generation\"]` capability. Used by both\n * {@link TextGenerationTask} (prompt-only input) and {@link AiChatTask}\n * (full conversation history). Yields `text-delta` events on the `text` port\n * and a final empty `finish` event per the streaming convention (consumer\n * accumulates).\n *\n * Discriminates on `Array.isArray(input.messages) && input.messages.length > 0`\n * to choose the chat vs. prompt path — safe because AiChatTask always provides\n * `messages` and TextGenerationTask never does.\n */\nexport const Gemini_TextGeneration_Stream: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timerLabel = `gemini:TextGeneration:${getModelName(model)}`;\n logger.time(timerLabel, { model: getModelName(model) });\n try {\n signal?.throwIfAborted?.();\n const unified = input as UnifiedTextGenerationInput;\n const hasMessages = Array.isArray(unified.messages) && unified.messages.length > 0;\n\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n if (hasMessages) {\n // Chat path — use buildGeminiContents to map the messages array.\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: unified.systemPrompt || undefined,\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const contents = buildGeminiContents(\n unified.messages as Parameters<typeof buildGeminiContents>[0],\n unified.prompt ?? \"\"\n );\n\n const result = await genModel.generateContentStream({ contents }, { signal });\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: text });\n }\n }\n } else {\n // Prompt path — simple single-user-message generation.\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n topP: input.topP,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: text });\n }\n }\n }\n\n emit({ type: \"finish\", data: {} as TextGenerationTaskOutput });\n } finally {\n logger.timeEnd(timerLabel, { model: getModelName(model) });\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 { FunctionCallingMode } from \"@google/generative-ai\";\nimport type {\n AiProviderRunFn,\n ChatMessage,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport { buildToolDescription, filterValidToolCalls } from \"@workglow/ai/worker\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\nimport { sanitizeSchemaForGemini } from \"./Gemini_Schema\";\n\nexport function buildGeminiContents(\n messages: ReadonlyArray<ChatMessage> | undefined,\n prompt: unknown\n): any[] {\n if (!messages || messages.length === 0) {\n return [{ role: \"user\", parts: [{ text: prompt }] }];\n }\n\n // Index tool_use ids → names from any prior assistant turn (Gemini wants\n // the function name on the functionResponse, not just the id).\n const toolUseNames = new Map<string, string>();\n for (const msg of messages) {\n if (msg.role !== \"assistant\") continue;\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n toolUseNames.set(block.id, block.name);\n }\n }\n }\n\n const contents: any[] = [];\n for (const msg of messages) {\n if (msg.role === \"user\") {\n const parts: any[] = [];\n for (const block of msg.content) {\n if (block.type === \"text\") {\n parts.push({ text: block.text });\n } else if (block.type === \"image\") {\n parts.push({ inlineData: { mimeType: block.mimeType, data: block.data } });\n }\n }\n contents.push({ role: \"user\", parts });\n } else if (msg.role === \"assistant\") {\n const parts: any[] = [];\n for (const block of msg.content) {\n if (block.type === \"text\" && block.text) {\n parts.push({ text: block.text });\n } else if (block.type === \"tool_use\") {\n parts.push({ functionCall: { name: block.name, args: block.input } });\n }\n }\n if (parts.length > 0) contents.push({ role: \"model\", parts });\n } else if (msg.role === \"tool\") {\n const parts: any[] = [];\n for (const block of msg.content) {\n if (block.type !== \"tool_result\") continue;\n const name = toolUseNames.get(block.tool_use_id) ?? \"unknown\";\n const textContent = block.content\n .filter((b) => b.type === \"text\")\n .map((b) => (b as { type: \"text\"; text: string }).text)\n .join(\"\");\n let response: Record<string, unknown>;\n try {\n response = JSON.parse(textContent);\n } catch {\n response = { result: textContent };\n }\n parts.push({ functionResponse: { name, response } });\n }\n if (parts.length > 0) contents.push({ role: \"user\", parts });\n }\n }\n return contents;\n}\n\nfunction mapGeminiToolConfig(\n toolChoice: string | undefined\n):\n | { functionCallingConfig: { mode: FunctionCallingMode; allowedFunctionNames?: string[] } }\n | undefined {\n if (!toolChoice || toolChoice === \"auto\") {\n return { functionCallingConfig: { mode: \"AUTO\" as FunctionCallingMode } };\n }\n if (toolChoice === \"none\") {\n return { functionCallingConfig: { mode: \"NONE\" as FunctionCallingMode } };\n }\n if (toolChoice === \"required\") {\n return { functionCallingConfig: { mode: \"ANY\" as FunctionCallingMode } };\n }\n return {\n functionCallingConfig: {\n mode: \"ANY\" as FunctionCallingMode,\n allowedFunctionNames: [toolChoice],\n },\n };\n}\n\nexport const Gemini_ToolCalling_Stream: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const functionDeclarations = input.tools.map((t: ToolDefinition) => ({\n name: t.name,\n description: buildToolDescription(t),\n parameters: sanitizeSchemaForGemini(t.inputSchema as Record<string, unknown>) as any,\n }));\n\n const toolConfig = mapGeminiToolConfig(input.toolChoice);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n tools: [{ functionDeclarations }],\n toolConfig: toolConfig as any,\n systemInstruction: input.systemPrompt || undefined,\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const contents = buildGeminiContents(input.messages, input.prompt);\n\n const result = await genModel.generateContentStream({ contents }, { signal });\n\n let callIndex = 0;\n\n for await (const chunk of result.stream) {\n const parts = chunk.candidates?.[0]?.content?.parts ?? [];\n for (const part of parts) {\n if (\"text\" in part && part.text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: part.text });\n }\n if (\"functionCall\" in part && part.functionCall) {\n const id = `call_${callIndex++}`;\n // Defence-in-depth: drop tool calls whose name isn't in the\n // declared tool set before emitting. Gemini's tool API respects\n // `input.tools` but a stray response that hallucinates a function\n // name would otherwise propagate to dispatch.\n const validated = filterValidToolCalls(\n [\n {\n id,\n name: part.functionCall.name,\n input: (part.functionCall.args as Record<string, unknown>) ?? {},\n },\n ],\n input.tools\n );\n if (validated.length > 0) {\n emit({\n type: \"object-delta\",\n port: \"toolCalls\",\n objectDelta: validated,\n });\n }\n }\n }\n }\n\n emit({ type: \"finish\", data: { text: \"\", toolCalls: [] } as ToolCallingTaskOutput });\n};\n",
|
|
20
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextRewriterTaskInput, TextRewriterTaskOutput } from \"@workglow/ai\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport const Gemini_TextRewriter_Stream: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: input.prompt,\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.text }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: text });\n }\n }\n emit({ type: \"finish\", data: {} as TextRewriterTaskOutput });\n};\n",
|
|
21
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextSummaryTaskInput, TextSummaryTaskOutput } from \"@workglow/ai\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport const Gemini_TextSummary_Stream: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: \"Summarize the following text concisely.\",\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.text }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: text });\n }\n }\n emit({ type: \"finish\", data: {} as TextSummaryTaskOutput });\n};\n",
|
|
22
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderPreviewRunFn, AiProviderRunFnRegistration } from \"@workglow/ai\";\nimport {\n GEMINI_COUNT_TOKENS,\n GEMINI_IMAGE_EDITING,\n GEMINI_IMAGE_GENERATION,\n GEMINI_JSON_MODE,\n GEMINI_MODEL_INFO,\n GEMINI_MODEL_SEARCH,\n GEMINI_TEXT_EMBEDDING,\n GEMINI_TEXT_GENERATION,\n GEMINI_TEXT_REWRITER,\n GEMINI_TEXT_SUMMARY,\n GEMINI_TOOL_USE,\n} from \"./Gemini_CapabilitySets\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nexport { sanitizeSchemaForGemini } from \"./Gemini_Schema\";\n\nimport { Gemini_CountTokens_Preview, Gemini_CountTokens_Stream } from \"./Gemini_CountTokens\";\nimport { Gemini_ImageEdit_Stream } from \"./Gemini_ImageEdit\";\nimport { Gemini_ImageGenerate_Stream } from \"./Gemini_ImageGenerate\";\nimport { Gemini_ModelInfo_Stream } from \"./Gemini_ModelInfo\";\nimport { Gemini_ModelSearch_Stream } from \"./Gemini_ModelSearch\";\nimport { Gemini_StructuredGeneration_Stream } from \"./Gemini_StructuredGeneration\";\nimport { Gemini_TextEmbedding_Stream } from \"./Gemini_TextEmbedding\";\nimport { Gemini_TextGeneration_Stream } from \"./Gemini_TextGeneration\";\nimport { Gemini_TextRewriter_Stream } from \"./Gemini_TextRewriter\";\nimport { Gemini_TextSummary_Stream } from \"./Gemini_TextSummary\";\nimport { Gemini_ToolCalling_Stream } from \"./Gemini_ToolCalling\";\n\n/**\n * Capability-set run-fn registrations for the Google Gemini provider. Order is\n * significant only as a tiebreaker — the dispatcher prefers the smallest\n * `serves` set that is a superset of the task's `requires`, so the bare\n * `[\"text.generation\"]` entry wins for a plain {@link TextGenerationTask} or\n * {@link AiChatTask} while the `[\"text.generation\", \"tool-use\"]` entry wins\n * for {@link ToolCallingTask}.\n */\nexport const GEMINI_RUN_FNS: readonly AiProviderRunFnRegistration<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n GeminiModelConfig\n>[] = [\n { serves: GEMINI_TEXT_GENERATION, runFn: Gemini_TextGeneration_Stream },\n { serves: GEMINI_TOOL_USE, runFn: Gemini_ToolCalling_Stream },\n { serves: GEMINI_JSON_MODE, runFn: Gemini_StructuredGeneration_Stream },\n { serves: GEMINI_TEXT_REWRITER, runFn: Gemini_TextRewriter_Stream },\n { serves: GEMINI_TEXT_SUMMARY, runFn: Gemini_TextSummary_Stream },\n { serves: GEMINI_TEXT_EMBEDDING, runFn: Gemini_TextEmbedding_Stream },\n { serves: GEMINI_IMAGE_GENERATION, runFn: Gemini_ImageGenerate_Stream },\n { serves: GEMINI_IMAGE_EDITING, runFn: Gemini_ImageEdit_Stream },\n { serves: GEMINI_COUNT_TOKENS, runFn: Gemini_CountTokens_Stream },\n { serves: GEMINI_MODEL_SEARCH, runFn: Gemini_ModelSearch_Stream },\n { serves: GEMINI_MODEL_INFO, runFn: Gemini_ModelInfo_Stream },\n];\n\nexport const GEMINI_PREVIEW_TASKS: Record<\n string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n AiProviderPreviewRunFn<any, any, GeminiModelConfig>\n> = {\n CountTokensTask: Gemini_CountTokens_Preview,\n};\n",
|
|
23
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai\";\nimport { AiProvider } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { geminiWorkerRunFnSpecs, inferGeminiCapabilities } from \"./common/Gemini_Capabilities\";\nimport { GOOGLE_GEMINI } from \"./common/Gemini_Constants\";\nimport type { GeminiModelConfig } from \"./common/Gemini_ModelSchema\";\n\n/**\n * Main-thread registration shell for Google Gemini. Used both for inline mode\n * (constructed with the run-fn registrations array) and worker-backed mode\n * (constructed empty so the base class registers worker proxies). No queue\n * is created — Google Gemini uses {@link DirectExecutionStrategy}.\n */\nexport class GoogleGeminiQueuedProvider extends createCloudProviderClass<GeminiModelConfig>(\n AiProvider,\n {\n name: GOOGLE_GEMINI,\n displayName: \"Google Gemini\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferGeminiCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return geminiWorkerRunFnSpecs();\n }\n}\n",
|
|
23
24
|
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { GEMINI_CAPABILITY_SETS } from \"./Gemini_CapabilitySets\";\n\n// ---------------------------------------------------------------------------\n// Worker-proxy spec list (derived from the single source of truth)\n// ---------------------------------------------------------------------------\n\n/**\n * Closed list of capability-set specs the Google Gemini provider serves. Derived\n * from {@link GEMINI_CAPABILITY_SETS} — do not edit here. Used by the\n * main-thread provider shells when registering worker-mode proxies (the\n * actual runFns live in {@link GEMINI_RUN_FNS} on the worker side, but the\n * main thread still needs to know which `serves` sets to register so the\n * dispatcher can route requests to the worker proxy).\n */\nexport const GEMINI_RUN_FN_SPECS = GEMINI_CAPABILITY_SETS.map((serves) => ({ serves }));\n\nexport function geminiWorkerRunFnSpecs(): readonly { readonly serves: readonly Capability[] }[] {\n return GEMINI_RUN_FN_SPECS;\n}\n\n/**\n * Shape used by the model-name regexes — `model_id` is required, the rest\n * is loosely-typed metadata only used to opportunistically widen the\n * inferred capability set.\n */\ntype CapabilityHints = Pick<ModelRecord, \"model_id\" | \"provider_config\" | \"capabilities\">;\n\n/**\n * Heuristic capability inference for a Google Gemini {@link ModelRecord}. Pattern-\n * matches the canonical Gemini model id strings (and the `provider_config.\n * model_name` if present) to a closed set of {@link Capability}s. Falls back\n * to the model's stored `capabilities` array (or a baseline of search +\n * info) when no pattern matches.\n *\n * Main-thread method only — workers do not run capability inference.\n *\n * Coverage map (cross-referenced against `Gemini_ModelSearch.ts` fallback list):\n * - text-embedding-*, embedding-001, gemini-embedding-* → text.embedding + meta-ops\n * - imagen-* → image.generation + meta-ops (Imagen models, no chat)\n * - gemini-*-image-* → image.generation + image.editing + meta-ops\n * - gemini-pro-vision → text.generation + tool-use + json-mode + vision-input + meta-ops\n * - gemini-1.0-pro (no vision suffix) → text.generation + tool-use + json-mode + meta-ops\n * - gemini-pro (legacy) → text.generation + tool-use + json-mode + meta-ops\n * - gemini-1.5-*, gemini-2.0-*, gemini-2.5-*, gemini-3-*, gemini-3.1-* → full set\n * - Unknown id with declared capabilities → return as-is\n * - Unknown id with no caps → baseline meta-ops\n */\nexport function inferGeminiCapabilities(model: CapabilityHints): readonly Capability[] {\n const id = String(\n model.model_id ??\n (model.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"\"\n );\n\n // Embedding models — text-embedding-004, embedding-001, gemini-embedding-*.\n if (/^text-embedding/i.test(id) || /^embedding-\\d/i.test(id) || /^gemini-embedding/i.test(id)) {\n return [\"text.embedding\", \"model.info\", \"model.search\"];\n }\n\n // Imagen models — imagen-* (image generation only, no chat).\n if (/^imagen-/i.test(id)) {\n return [\"image.generation\", \"model.info\", \"model.search\"];\n }\n\n // Gemini image-output model variants — e.g. gemini-3.1-flash-image-preview,\n // gemini-3-pro-image-preview. These come from the fallback list with explicit\n // capabilities and also need to be covered by inference.\n if (/^gemini-.*-image-/i.test(id)) {\n return [\"image.generation\", \"image.editing\", \"model.info\", \"model.search\"];\n }\n\n // gemini-pro-vision — older vision model, no count-tokens API.\n if (/^gemini-pro-vision$/i.test(id)) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"vision-input\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n // gemini-1.0-pro (without -vision suffix) — no vision, no count-tokens.\n if (/^gemini-1\\.0-pro($|-(?!vision))/i.test(id)) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n // gemini-pro (legacy, without version suffix) — no vision, no count-tokens.\n if (/^gemini-pro$/i.test(id)) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n // Modern Gemini families — 1.5, 2.0, 2.5, 3, 3.1 — full capability set with\n // vision-input and count-tokens. This covers:\n // gemini-1.5-pro, gemini-1.5-flash\n // gemini-2.0-flash, gemini-2.0-flash-exp, gemini-2.0-pro\n // gemini-2.5-flash, gemini-2.5-pro\n // gemini-3-flash-preview, gemini-3-pro-image-preview (image handled above)\n // gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview, gemini-3.1-flash-image-preview (image above)\n if (/^gemini-(?:1\\.5|2\\.[05]|2\\.5|3(?:\\.\\d+)?-)/i.test(id)) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"vision-input\",\n \"model.count-tokens\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n // Unknown model — fall back to whatever the record declared, or just\n // expose the meta-ops so the model can still be searched / inspected.\n const declared = (model.capabilities as readonly Capability[] | undefined) ?? [];\n if (declared.length > 0) return declared;\n return [\"model.search\", \"model.info\"];\n}\n",
|
|
24
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiImageOutputTask, ProviderUnsupportedFeatureError } from \"@workglow/ai\";\nimport type { ModelConfig } from \"@workglow/ai\";\n\nimport { GOOGLE_GEMINI } from \"./Gemini_Constants\";\n\n/**\n * Registers the Gemini per-provider image validator. Called at provider registration time\n * (both inline and worker-backed paths) so it runs on the main thread before any dispatch.\n *\n * Currently validates:\n * - ImageEditTask + non-null mask → throws (Gemini does not support mask-based inpainting).\n */\nexport function registerGeminiImageValidator(): void {\n AiImageOutputTask.registerProviderImageValidator(\n GOOGLE_GEMINI,\n (taskType, input, model: ModelConfig) => {\n if (taskType !== \"ImageEditTask\") return;\n if (input[\"mask\"] !== undefined && input[\"mask\"] !== null) {\n throw new ProviderUnsupportedFeatureError(\n \"mask\",\n model.model_id ?? \"gemini\",\n \"Gemini does not support mask-based inpainting; remove the mask or use OpenAI gpt-image-2\"\n );\n }\n }\n );\n}\n",
|
|
25
25
|
"/**\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 { GEMINI_PREVIEW_TASKS, GEMINI_RUN_FNS } from \"./common/Gemini_JobRunFns\";\nimport { GoogleGeminiProvider } from \"./GoogleGeminiProvider\";\n\nexport async function registerGeminiWorker(): Promise<void> {\n await registerProviderWorker(\n (ws) =>\n new GoogleGeminiProvider(GEMINI_RUN_FNS, GEMINI_PREVIEW_TASKS).registerOnWorkerServer(ws),\n \"Google Gemini\"\n );\n}\n",
|
|
26
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {
|
|
26
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { AiProvider } from \"@workglow/ai/worker\";\nimport { geminiWorkerRunFnSpecs, inferGeminiCapabilities } from \"./common/Gemini_Capabilities\";\nimport { GOOGLE_GEMINI } from \"./common/Gemini_Constants\";\nimport type { GeminiModelConfig } from \"./common/Gemini_ModelSchema\";\n\n/**\n * Worker-server registration for Google Gemini cloud models. Imports\n * `AiProvider` from `@workglow/ai/worker` so the SDK is only loaded in the\n * worker.\n *\n * The class extends the {@link createCloudProviderClass} mixin (which\n * supplies `name` / `displayName` / `isLocal` / `supportsBrowser`) and adds\n * the Gemini-specific {@link AiProvider.inferCapabilities} and\n * {@link AiProvider.workerRunFnSpecs} overrides.\n */\nexport class GoogleGeminiProvider extends createCloudProviderClass<GeminiModelConfig>(AiProvider, {\n name: GOOGLE_GEMINI,\n displayName: \"Google Gemini\",\n}) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferGeminiCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return geminiWorkerRunFnSpecs();\n }\n}\n"
|
|
27
27
|
],
|
|
28
|
-
"mappings": ";;;;;;;;;AAMA;AAMA,IAAI;AAGJ,eAAsB,aAAa,GAA2C;AAAA,EAC5E,iBAAwB,gCACrB,KAAK,CAAC,QAAQ,IAAI,kBAAkB,EACpC,MAAM,MAAM;AAAA,IACX,eAAe;AAAA,IACf,MAAM,IAAI,MACR,oGACF;AAAA,GACD;AAAA,EACH,OAAO;AAAA;AAUF,SAAS,SAAS,CAAC,OAA8C;AAAA,EACtE,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO,cAAc;AAAA,IACnB;AAAA,IACA,QAAQ,CAAC,kBAAkB,gBAAgB;AAAA,IAC3C,eAAe;AAAA,EACjB,CAAC;AAAA;AAGI,SAAS,YAAY,CAAC,OAA8C;AAAA,EACzE,MAAM,OAAO,OAAO,iBAAiB;AAAA,EACrC,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA,EACA,OAAO;AAAA;;;ACzCT;;;ACYO,IAAM,yBAAyB,CAAC,iBAAiB;AACjD,IAAM,kBAAkB,CAAC,mBAAmB,UAAU;AACtD,IAAM,mBAAmB,CAAC,mBAAmB,WAAW;AACxD,IAAM,uBAAuB,CAAC,eAAe;AAC7C,IAAM,sBAAsB,CAAC,cAAc;AAC3C,IAAM,wBAAwB,CAAC,gBAAgB;AAC/C,IAAM,0BAA0B,CAAC,kBAAkB;AACnD,IAAM,uBAAuB,CAAC,eAAe;AAC7C,IAAM,sBAAsB,CAAC,oBAAoB;AACjD,IAAM,sBAAsB,CAAC,cAAc;AAC3C,IAAM,oBAAoB,CAAC,YAAY;AAGvC,IAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AClCO,SAAS,uBAAuB,CAAC,QAA0D;AAAA,EAChG,MAAM,SAAkC,CAAC;AAAA,EACzC,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IACjD,IAAI,QAAQ;AAAA,MAAwB;AAAA,IACpC,IAAI,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC/D,OAAO,OAAO,wBAAwB,KAAgC;AAAA,IACxE,EAAO;AAAA,MACL,OAAO,OAAO;AAAA;AAAA,EAElB;AAAA,EACA,OAAO;AAAA;;;ACLF,IAAM,4BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,qBAAqB,MAAM,cAAc;AAAA,EAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,EACrD,MAAM,WAAW,MAAM,mBAAmB,EAAE,OAAO,aAAa,KAAK,EAAE,CAAC;AAAA,EACxE,MAAM,SAAS,MAAM,SAAS,YAAY,MAAM,IAAI;AAAA,EACpD,KAAK,EAAE,MAAM,UAAU,MAAM,EAAE,OAAO,OAAO,YAAY,EAAE,CAAC;AAAA;AAGvD,IAAM,6BAIT,OAAO,OAAO,WAAW;AAAA,EAC3B,OAAO,EAAE,OAAO,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,EAAE;AAAA;;;ACpBnD;AAEA;AAEA;AAIA,SAAS,SAAS,CAAC,OAAwC;AAAA,EACzD,OACE,OAAO,YACN,OAAO,iBAAyD,cACjE;AAAA;AAKJ,eAAe,iBAAiB,CAAC,UAAkB,MAAmC;AAAA,EACpF,OAAO,oBAAoB,QAAQ,mBAAmB,MAAM;AAAA;AAO9D,eAAe,oBAAoB,CACjC,OAC6D;AAAA,EAC7D,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW,OAAO,GAAG;AAAA,IAE1D,MAAM,UAAS,MAAM,QAAQ,uBAAuB,EAAE;AAAA,IACtD,OAAO,EAAE,YAAY,EAAE,UAAU,aAAa,MAAM,QAAO,EAAE;AAAA,EAC/D;AAAA,EACA,MAAM,QAAQ,MAAM,qBAAqB,KAAK;AAAA,EAG9C,IAAI;AAAA,EACJ,IAAI,OAAO,WAAW,aAAa;AAAA,IACjC,SAAS,OAAO,KAAK,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,EAAE,SAAS,QAAQ;AAAA,EAC1F,EAAO;AAAA,IACL,IAAI,SAAS;AAAA,IACb,SAAS,IAAI,EAAG,IAAI,MAAM,YAAY,KAAK;AAAA,MACzC,UAAU,OAAO,aAAa,MAAM,EAAE;AAAA,IACxC;AAAA,IACA,SAAS,KAAK,MAAM;AAAA;AAAA,EAEtB,OAAO,EAAE,YAAY,EAAE,UAAU,aAAa,MAAM,OAAO,EAAE;AAAA;AAQxD,IAAM,0BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,SAAS,UAAU;AAAA,EACzB,MAAM,QAAQ,oBAAoB,UAAU,KAAK;AAAA,EACjD,OAAO,KAAK,OAAO,EAAE,OAAO,UAAU,KAAK,EAAE,CAAC;AAAA,EAC9C,IAAI;AAAA,IACF,MAAM,qBAAqB,MAAM,cAAc;AAAA,IAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,IACrD,MAAM,YAAY,aAAa,KAAK;AAAA,IACpC,MAAM,WAAW,MAAM,mBAAmB,EAAE,OAAO,UAAU,CAAC;AAAA,IAK9D,MAAM,cAAc,MAAM,qBAAqB,MAAM,KAAuC;AAAA,IAE5F,MAAM,kBACJ,MAAM,oBAAqB,MAAM,iBAAgD,SAAS,IACtF,MAAM,QAAQ,IACX,MAAM,iBAAgD,IAAI,CAAC,MAC1D,qBAAqB,CAAC,CACxB,CACF,IACA,CAAC;AAAA,IAEP,MAAM,QAAoB,CAAC,EAAE,MAAM,MAAM,OAAO,GAAG,aAAa,GAAG,eAAe;AAAA,IAElF,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,SAAS,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,QAAQ,MAAM,CAAC,EAAE,GAAG;AAAA,QACrF;AAAA,MACF,CAAQ;AAAA,MAER,MAAM,WAAW,OAAO;AAAA,MAGxB,IACE,CAAC,SAAS,cACV,SAAS,WAAW,WAAW,KAC/B,SAAS,gBAAgB,aACzB;AAAA,QACA,MAAM,SAAS,SAAS,gBAAgB,eAAe;AAAA,QACvD,MAAM,IAAI,kCAAkC,UAAU,KAAK,GAAG,YAAY,QAAQ;AAAA,MACpF;AAAA,MAGA,MAAM,iBAAiB,SAAS,WAAW,IAAI,SAAS,SAAS,CAAC;AAAA,MAClE,MAAM,YAAY,eAAe,KAC/B,CAAC,MAAW,EAAE,cAAc,EAAE,WAAW,YAAY,EAAE,WAAW,IACpE;AAAA,MAEA,IAAI,CAAC,WAAW;AAAA,QACd,MAAM,IAAI,6BACR,UAAU,KAAK,GACf,mEACF;AAAA,MACF;AAAA,MAEA,MAAM,QAAQ,MAAM,kBAClB,UAAU,WAAW,UACrB,UAAU,WAAW,IACvB;AAAA,MACA,KAAK,EAAE,MAAM,YAAY,MAAM,EAAE,MAAM,EAAE,CAAQ;AAAA,MACjD,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC,EAAyB,CAAC;AAAA,MACxD,OAAO,KAAK;AAAA,MACZ,IACE,eAAe,gCACf,eAAe,mCACf;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU;AAAA,MACjD,IAAI,sDAAsD,KAAK,GAAG,GAAG;AAAA,QACnE,MAAM,IAAI,kCAAkC,UAAU,KAAK,GAAG,GAAG;AAAA,MACnE;AAAA,MACA,MAAM,IAAI,6BAA6B,UAAU,KAAK,GAAG,KAAK,EAAE,OAAO,IAAa,CAAC;AAAA;AAAA,YAEvF;AAAA,IACA,OAAO,QAAQ,OAAO,EAAE,OAAO,UAAU,KAAK,EAAE,CAAC;AAAA;AAAA;;;ACtIrD,8CAAS,oEAAmC;AAE5C,sBAAS;AAET,gCAAS;AAIT,SAAS,UAAS,CAAC,OAAwC;AAAA,EACzD,OACE,OAAO,YACN,OAAO,iBAAyD,cACjE;AAAA;AAKJ,eAAe,kBAAiB,CAAC,UAAkB,MAAmC;AAAA,EACpF,OAAO,qBAAoB,QAAQ,mBAAmB,MAAM;AAAA;AAQvD,IAAM,8BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,SAAS,WAAU;AAAA,EACzB,MAAM,QAAQ,wBAAwB,WAAU,KAAK;AAAA,EACrD,OAAO,KAAK,OAAO,EAAE,OAAO,WAAU,KAAK,EAAE,CAAC;AAAA,EAC9C,IAAI;AAAA,IACF,MAAM,qBAAqB,MAAM,cAAc;AAAA,IAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,IACrD,MAAM,YAAY,aAAa,KAAK;AAAA,IACpC,MAAM,WAAW,MAAM,mBAAmB,EAAE,OAAO,UAAU,CAAC;AAAA,IAE9D,MAAM,QAAiC,CAAC,EAAE,MAAM,MAAM,OAAO,CAAC;AAAA,IAE9D,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,SAAS,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,QAAQ,MAAM,CAAC,EAAE,GAAG;AAAA,QACrF;AAAA,MACF,CAAQ;AAAA,MAER,MAAM,WAAW,OAAO;AAAA,MAGxB,IACE,CAAC,SAAS,cACV,SAAS,WAAW,WAAW,KAC/B,SAAS,gBAAgB,aACzB;AAAA,QACA,MAAM,SAAS,SAAS,gBAAgB,eAAe;AAAA,QACvD,MAAM,IAAI,mCAAkC,WAAU,KAAK,GAAG,YAAY,QAAQ;AAAA,MACpF;AAAA,MAGA,MAAM,iBAAiB,SAAS,WAAW,IAAI,SAAS,SAAS,CAAC;AAAA,MAClE,MAAM,YAAY,eAAe,KAC/B,CAAC,MAAW,EAAE,cAAc,EAAE,WAAW,YAAY,EAAE,WAAW,IACpE;AAAA,MAEA,IAAI,CAAC,WAAW;AAAA,QACd,MAAM,IAAI,8BACR,WAAU,KAAK,GACf,mEACF;AAAA,MACF;AAAA,MAEA,MAAM,QAAQ,MAAM,mBAClB,UAAU,WAAW,UACrB,UAAU,WAAW,IACvB;AAAA,MACA,KAAK,EAAE,MAAM,YAAY,MAAM,EAAE,MAAM,EAAE,CAAQ;AAAA,MACjD,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC,EAA6B,CAAC;AAAA,MAC5D,OAAO,KAAK;AAAA,MACZ,IACE,eAAe,iCACf,eAAe,oCACf;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU;AAAA,MACjD,IAAI,sDAAsD,KAAK,GAAG,GAAG;AAAA,QACnE,MAAM,IAAI,mCAAkC,WAAU,KAAK,GAAG,GAAG;AAAA,MACnE;AAAA,MACA,MAAM,IAAI,8BAA6B,WAAU,KAAK,GAAG,KAAK,EAAE,OAAO,IAAa,CAAC;AAAA;AAAA,YAEvF;AAAA,IACA,OAAO,QAAQ,OAAO,EAAE,OAAO,WAAU,KAAK,EAAE,CAAC;AAAA;AAAA;;;AC9FrD,IAAM,8BAA2F;AAAA,EAC/F,sBAAsB,EAAE,mBAAmB,KAAK,KAAK,KAAK;AAAA,EAC1D,iBAAiB,EAAE,mBAAmB,KAAK,KAAK,MAAM;AACxD;AAEO,IAAM,0BAIT,OAAO,OAAO,OAAO,SAAS,SAAS;AAAA,EACzC,IAAI,MAAM,WAAW,cAAc;AAAA,IACjC,MAAM,KAAK,OAAO;AAAA,IAClB,IAAI,oBACF,OAAO,IAAI,sBAAsB,WAAW,GAAG,oBAAoB;AAAA,IACrE,IAAI,MAAM,OAAO,IAAI,QAAQ,YAAY,GAAG,MAAM;AAAA,IAClD,IAAI,sBAAsB,WAAW;AAAA,MACnC,MAAM,YAAa,IAAI,cAAyB;AAAA,MAChD,MAAM,QAAQ,4BAA4B;AAAA,MAC1C,IAAI,OAAO;AAAA,QACT,oBAAoB,MAAM;AAAA,QAC1B,MAAM,OAAO,MAAM;AAAA,MACrB;AAAA,IACF;AAAA,IACA,KAAK;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,OAAO,MAAM;AAAA,QACb,UAAU;AAAA,QACV,WAAW;AAAA,QACX,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,QACX,YAAY;AAAA,WACR,sBAAsB,YAAY,EAAE,kBAAkB,IAAI,CAAC;AAAA,WAC3D,QAAQ,YAAY,EAAE,IAAI,IAAI,CAAC;AAAA,MACrC;AAAA,IACF,CAAC;AAAA,IACD;AAAA,EACF;AAAA,EACA,KAAK;AAAA,IACH,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO,MAAM;AAAA,MACb,UAAU;AAAA,MACV,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF,CAAC;AAAA;;;AClDH;;;ACNO,IAAM,gBAAgB;;;ADetB,IAAM,yBAAsD;AAAA,EACjE,EAAE,OAAO,0BAA0B,OAAO,yBAAyB;AAAA,EACnE,EAAE,OAAO,0BAA0B,OAAO,yBAAyB;AAAA,EACnE,EAAE,OAAO,iCAAiC,OAAO,gCAAgC;AAAA,EACjF,EAAE,OAAO,oBAAoB,OAAO,mBAAmB;AAAA,EACvD,EAAE,OAAO,kBAAkB,OAAO,iBAAiB;AAAA,EAEnD;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc,CAAC,gBAAgB;AAAA,EACjC;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc,CAAC,gBAAgB;AAAA,EACjC;AAAA,EAEA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc,CAAC,oBAAoB,eAAe;AAAA,EACpD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc,CAAC,oBAAoB,eAAe;AAAA,EACpD;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc,CAAC,kBAAkB;AAAA,EACnC;AACF;AASA,SAAS,6BAA6B,CAAC,OAAuB,IAAsB;AAAA,EAClF,MAAM,cAAc,uBAAuB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE;AAAA,EACrE,IAAI,aAAa;AAAA,IAAc,OAAO,CAAC,GAAG,YAAY,YAAY;AAAA,EAElE,MAAM,UAAU,MAAM,8BAA8B,CAAC;AAAA,EACrD,IAAI,QAAQ,KAAK,CAAC,WAAW,OAAO,YAAY,EAAE,SAAS,OAAO,CAAC,GAAG;AAAA,IACpE,OAAO,CAAC,gBAAgB;AAAA,EAC1B;AAAA,EACA,OAAO,CAAC;AAAA;AAGV,SAAS,cAAc,CAAC,OAA8C;AAAA,EACpE,MAAM,KAAK,MAAM,KAAK,WAAW,SAAS,IAAI,MAAM,KAAK,MAAM,UAAU,MAAM,IAAI,MAAM;AAAA,EACzF,MAAM,QAAQ,MAAM,eAAe;AAAA,EACnC,OAAO;AAAA,IACL;AAAA,IACA,OAAO;AAAA,IACP,aAAa,MAAM,cAAc,KAAM,MAAM,eAAe;AAAA,IAC5D,QAAQ;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,MACV;AAAA,MACA,aAAa,MAAM,eAAe;AAAA,MAClC,cAAc,8BAA8B,OAAO,EAAE;AAAA,MACrD,iBAAiB,EAAE,YAAY,GAAG;AAAA,MAClC,UAAU,CAAC;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP;AAAA;AAGF,eAAe,gBAAgB,CAC7B,eACA,QACkC;AAAA,EAClC,MAAM,SAAS,IAAI,gBAAgB,EAAE,KAAK,cAAc,CAAC;AAAA,EACzD,MAAM,WAAW,MAAM,MACrB,2DAA2D,UAC3D;AAAA,IACE;AAAA,EACF,CACF;AAAA,EACA,IAAI,CAAC,SAAS;AAAA,IAAI,MAAM,IAAI,MAAM,uBAAuB,SAAS,QAAQ;AAAA,EAC1E,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,EAClC,QAAQ,KAAK,UAAU,CAAC,GAAG,IAAI,cAAc;AAAA;AAGxC,IAAM,4BAGT,OAAO,OAAO,QAAQ,QAAQ,SAAS;AAAA,EACzC,MAAM,IAAI,2BAA2B,MAAM,KAAK;AAAA,EAChD,IAAI,MAAM,gBAAgB;AAAA,IACxB,MAAM,SAAS,MAAM,iBAAiB,MAAM,gBAAgB,MAAM;AAAA,IAClE,MAAM,WAAU,IACZ,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,YAAY,EAAE,SAAS,CAAC,CAAC,IACxF;AAAA,IACJ,KAAK,EAAE,MAAM,UAAU,MAAM,EAAE,kBAAQ,EAAE,CAAC;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,IACb,uBAAuB,OACrB,CAAC,MAAM,EAAE,MAAM,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,YAAY,EAAE,SAAS,CAAC,CAC9E,IACA;AAAA,EACJ,MAAM,UAAmC,SAAS,IAAI,CAAC,OAAO;AAAA,IAC5D,IAAI,EAAE;AAAA,IACN,OAAO,EAAE;AAAA,IACT,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,UAAU,EAAE;AAAA,MACZ,UAAU;AAAA,MACV,OAAO,EAAE;AAAA,MACT,aAAa;AAAA,MACb,cAAc,EAAE,eAAe,CAAC,GAAG,EAAE,YAAY,IAAI,CAAC;AAAA,MACtD,iBAAiB,EAAE,YAAY,EAAE,MAAM;AAAA,MACvC,UAAU,CAAC;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP,EAAE;AAAA,EACF,KAAK,EAAE,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,CAAC;AAAA;;;AErI5C;AAYO,IAAM,qCAIT,OAAO,OAAO,OAAO,QAAQ,MAAM,iBAAiB;AAAA,EACtD,MAAM,qBAAqB,MAAM,cAAc;AAAA,EAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,EAErD,MAAM,SAAS,MAAM,gBAAgB;AAAA,EAErC,MAAM,kBAAkB,wBAAwB,MAAiC;AAAA,EAEjF,MAAM,WAAW,MAAM,mBAAmB;AAAA,IACxC,OAAO,aAAa,KAAK;AAAA,IACzB,kBAAkB;AAAA,MAChB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,iBAAiB,MAAM;AAAA,MACvB,aAAa,MAAM;AAAA,IACrB;AAAA,EACF,CAAC;AAAA,EAED,MAAM,SAAS,MAAM,SAAS,sBAC5B,EAAE,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO,CAAC,EAAE,MAAM,MAAM,OAAiB,CAAC,EAAE,CAAC,EAAE,GAC1E,EAAE,OAAO,CACX;AAAA,EAEA,IAAI,kBAAkB;AAAA,EACtB,iBAAiB,SAAS,OAAO,QAAQ;AAAA,IACvC,MAAM,OAAO,MAAM,KAAK;AAAA,IACxB,IAAI,MAAM;AAAA,MACR,mBAAmB;AAAA,MACnB,MAAM,UAAU,iBAAiB,eAAe;AAAA,MAChD,IAAI,YAAY,WAAW;AAAA,QACzB,KAAK,EAAE,MAAM,gBAAgB,MAAM,UAAU,aAAa,QAAQ,CAAC;AAAA,MACrE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,cAAc,KAAK,MAAM,eAAe;AAAA,IACxC,MAAM;AAAA,IACN,cAAc,iBAAiB,eAAe,KAAK,CAAC;AAAA;AAAA,EAGtD,KAAK,EAAE,MAAM,UAAU,MAAM,EAAE,QAAQ,YAAY,EAAoC,CAAC;AAAA;;;ACzD1F,sBAAS;AAIF,IAAM,8BAIT,OAAO,OAAO,OAAO,SAAS,SAAS;AAAA,EACzC,MAAM,SAAS,WAAU;AAAA,EACzB,MAAM,aAAa,wBAAwB,OAAO,iBAAiB;AAAA,EACnE,OAAO,KAAK,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EACrE,IAAI;AAAA,IACF,MAAM,qBAAqB,MAAM,cAAc;AAAA,IAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,IACrD,MAAM,iBAAiB,MAAM,mBAAmB;AAAA,MAC9C,OAAO,aAAa,KAAK;AAAA,IAC3B,CAAC;AAAA,IAED,MAAM,WACH,OAAO,iBAAiB,uBACxB;AAAA,IAEH,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,MAC7B,MAAM,UAAS,MAAM,eAAe,mBAAmB;AAAA,QACrD,UAAU,MAAM,KAAK,IAAI,CAAC,OAAO;AAAA,UAC/B,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AAAA,UAC9C;AAAA,QACF,EAAE;AAAA,MACJ,CAAC;AAAA,MACD,KAAK;AAAA,QACH,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,QAAQ,QAAO,WAAW,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,MAAM,CAAC;AAAA,QACjE;AAAA,MACF,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,MAAM,eAAe,aAAa;AAAA,MAC/C,SAAS,EAAE,MAAM,QAAQ,OAAO,CAAC,EAAE,MAAM,MAAM,KAAe,CAAC,EAAE;AAAA,MACjE;AAAA,IACF,CAAC;AAAA,IAED,KAAK;AAAA,MACH,MAAM;AAAA,MACN,MAAM,EAAE,QAAQ,IAAI,aAAa,OAAO,UAAU,MAAM,EAAE;AAAA,IAC5D,CAAC;AAAA,YACD;AAAA,IACA,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA;AAAA;;;AClD5E,sBAAS;;;ACJT;AAYO,SAAS,mBAAmB,CACjC,UACA,QACO;AAAA,EACP,IAAI,CAAC,YAAY,SAAS,WAAW,GAAG;AAAA,IACtC,OAAO,CAAC,EAAE,MAAM,QAAQ,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,EAAE,CAAC;AAAA,EACrD;AAAA,EAIA,MAAM,eAAe,IAAI;AAAA,EACzB,WAAW,OAAO,UAAU;AAAA,IAC1B,IAAI,IAAI,SAAS;AAAA,MAAa;AAAA,IAC9B,WAAW,SAAS,IAAI,SAAS;AAAA,MAC/B,IAAI,MAAM,SAAS,YAAY;AAAA,QAC7B,aAAa,IAAI,MAAM,IAAI,MAAM,IAAI;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WAAkB,CAAC;AAAA,EACzB,WAAW,OAAO,UAAU;AAAA,IAC1B,IAAI,IAAI,SAAS,QAAQ;AAAA,MACvB,MAAM,QAAe,CAAC;AAAA,MACtB,WAAW,SAAS,IAAI,SAAS;AAAA,QAC/B,IAAI,MAAM,SAAS,QAAQ;AAAA,UACzB,MAAM,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC;AAAA,QACjC,EAAO,SAAI,MAAM,SAAS,SAAS;AAAA,UACjC,MAAM,KAAK,EAAE,YAAY,EAAE,UAAU,MAAM,UAAU,MAAM,MAAM,KAAK,EAAE,CAAC;AAAA,QAC3E;AAAA,MACF;AAAA,MACA,SAAS,KAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAAA,IACvC,EAAO,SAAI,IAAI,SAAS,aAAa;AAAA,MACnC,MAAM,QAAe,CAAC;AAAA,MACtB,WAAW,SAAS,IAAI,SAAS;AAAA,QAC/B,IAAI,MAAM,SAAS,UAAU,MAAM,MAAM;AAAA,UACvC,MAAM,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC;AAAA,QACjC,EAAO,SAAI,MAAM,SAAS,YAAY;AAAA,UACpC,MAAM,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,CAAC;AAAA,QACtE;AAAA,MACF;AAAA,MACA,IAAI,MAAM,SAAS;AAAA,QAAG,SAAS,KAAK,EAAE,MAAM,SAAS,MAAM,CAAC;AAAA,IAC9D,EAAO,SAAI,IAAI,SAAS,QAAQ;AAAA,MAC9B,MAAM,QAAe,CAAC;AAAA,MACtB,WAAW,SAAS,IAAI,SAAS;AAAA,QAC/B,IAAI,MAAM,SAAS;AAAA,UAAe;AAAA,QAClC,MAAM,OAAO,aAAa,IAAI,MAAM,WAAW,KAAK;AAAA,QACpD,MAAM,cAAc,MAAM,QACvB,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,EAC/B,IAAI,CAAC,MAAO,EAAqC,IAAI,EACrD,KAAK,EAAE;AAAA,QACV,IAAI;AAAA,QACJ,IAAI;AAAA,UACF,WAAW,KAAK,MAAM,WAAW;AAAA,UACjC,MAAM;AAAA,UACN,WAAW,EAAE,QAAQ,YAAY;AAAA;AAAA,QAEnC,MAAM,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,EAAE,CAAC;AAAA,MACrD;AAAA,MACA,IAAI,MAAM,SAAS;AAAA,QAAG,SAAS,KAAK,EAAE,MAAM,QAAQ,MAAM,CAAC;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,mBAAmB,CAC1B,YAGY;AAAA,EACZ,IAAI,CAAC,cAAc,eAAe,QAAQ;AAAA,IACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,OAA8B,EAAE;AAAA,EAC1E;AAAA,EACA,IAAI,eAAe,QAAQ;AAAA,IACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,OAA8B,EAAE;AAAA,EAC1E;AAAA,EACA,IAAI,eAAe,YAAY;AAAA,IAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,MAA6B,EAAE;AAAA,EACzE;AAAA,EACA,OAAO;AAAA,IACL,uBAAuB;AAAA,MACrB,MAAM;AAAA,MACN,sBAAsB,CAAC,UAAU;AAAA,IACnC;AAAA,EACF;AAAA;AAGK,IAAM,4BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,qBAAqB,MAAM,cAAc;AAAA,EAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,EAErD,MAAM,uBAAuB,MAAM,MAAM,IAAI,CAAC,OAAuB;AAAA,IACnE,MAAM,EAAE;AAAA,IACR,aAAa,qBAAqB,CAAC;AAAA,IACnC,YAAY,wBAAwB,EAAE,WAAsC;AAAA,EAC9E,EAAE;AAAA,EAEF,MAAM,aAAa,oBAAoB,MAAM,UAAU;AAAA,EAEvD,MAAM,WAAW,MAAM,mBAAmB;AAAA,IACxC,OAAO,aAAa,KAAK;AAAA,IACzB,OAAO,CAAC,EAAE,qBAAqB,CAAC;AAAA,IAChC;AAAA,IACA,mBAAmB,MAAM,gBAAgB;AAAA,IACzC,kBAAkB;AAAA,MAChB,iBAAiB,MAAM;AAAA,MACvB,aAAa,MAAM;AAAA,IACrB;AAAA,EACF,CAAC;AAAA,EAED,MAAM,WAAW,oBAAoB,MAAM,UAAU,MAAM,MAAM;AAAA,EAEjE,MAAM,SAAS,MAAM,SAAS,sBAAsB,EAAE,SAAS,GAAG,EAAE,OAAO,CAAC;AAAA,EAE5E,IAAI,YAAY;AAAA,EAEhB,iBAAiB,SAAS,OAAO,QAAQ;AAAA,IACvC,MAAM,QAAQ,MAAM,aAAa,IAAI,SAAS,SAAS,CAAC;AAAA,IACxD,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,UAAU,QAAQ,KAAK,MAAM;AAAA,QAC/B,KAAK,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,KAAK,KAAK,CAAC;AAAA,MACjE;AAAA,MACA,IAAI,kBAAkB,QAAQ,KAAK,cAAc;AAAA,QAC/C,MAAM,KAAK,QAAQ;AAAA,QAKnB,MAAM,YAAY,qBAChB;AAAA,UACE;AAAA,YACE;AAAA,YACA,MAAM,KAAK,aAAa;AAAA,YACxB,OAAQ,KAAK,aAAa,QAAoC,CAAC;AAAA,UACjE;AAAA,QACF,GACA,MAAM,KACR;AAAA,QACA,IAAI,UAAU,SAAS,GAAG;AAAA,UACxB,KAAK;AAAA,YACH,MAAM;AAAA,YACN,MAAM;AAAA,YACN,aAAa;AAAA,UACf,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK,EAAE,MAAM,UAAU,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,EAAE,EAA2B,CAAC;AAAA;;;ADrI9E,IAAM,+BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,SAAS,WAAU;AAAA,EACzB,MAAM,aAAa,yBAAyB,aAAa,KAAK;AAAA,EAC9D,OAAO,KAAK,YAAY,EAAE,OAAO,aAAa,KAAK,EAAE,CAAC;AAAA,EACtD,IAAI;AAAA,IACF,QAAQ,iBAAiB;AAAA,IACzB,MAAM,UAAU;AAAA,IAChB,MAAM,cAAc,MAAM,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,SAAS,SAAS;AAAA,IAEjF,MAAM,qBAAqB,MAAM,cAAc;AAAA,IAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,IAErD,IAAI,aAAa;AAAA,MAEf,MAAM,WAAW,MAAM,mBAAmB;AAAA,QACxC,OAAO,aAAa,KAAK;AAAA,QACzB,mBAAmB,QAAQ,gBAAgB;AAAA,QAC3C,kBAAkB;AAAA,UAChB,iBAAiB,MAAM;AAAA,UACvB,aAAa,MAAM;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,MAED,MAAM,WAAW,oBACf,QAAQ,UACR,QAAQ,UAAU,EACpB;AAAA,MAEA,MAAM,SAAS,MAAM,SAAS,sBAAsB,EAAE,SAAS,GAAG,EAAE,OAAO,CAAC;AAAA,MAE5E,iBAAiB,SAAS,OAAO,QAAQ;AAAA,QACvC,MAAM,OAAO,MAAM,KAAK;AAAA,QACxB,IAAI,MAAM;AAAA,UACR,KAAK,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA,QAC5D;AAAA,MACF;AAAA,IACF,EAAO;AAAA,MAEL,MAAM,WAAW,MAAM,mBAAmB;AAAA,QACxC,OAAO,aAAa,KAAK;AAAA,QACzB,kBAAkB;AAAA,UAChB,iBAAiB,MAAM;AAAA,UACvB,aAAa,MAAM;AAAA,UACnB,MAAM,MAAM;AAAA,QACd;AAAA,MACF,CAAC;AAAA,MAED,MAAM,SAAS,MAAM,SAAS,sBAC5B,EAAE,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO,CAAC,EAAE,MAAM,MAAM,OAAO,CAAC,EAAE,CAAC,EAAE,GAChE,EAAE,OAAO,CACX;AAAA,MAEA,iBAAiB,SAAS,OAAO,QAAQ;AAAA,QACvC,MAAM,OAAO,MAAM,KAAK;AAAA,QACxB,IAAI,MAAM;AAAA,UACR,KAAK,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA,QAC5D;AAAA,MACF;AAAA;AAAA,IAGF,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC,EAA8B,CAAC;AAAA,YAC7D;AAAA,IACA,OAAO,QAAQ,YAAY,EAAE,OAAO,aAAa,KAAK,EAAE,CAAC;AAAA;AAAA;;;AE3FtD,IAAM,6BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,qBAAqB,MAAM,cAAc;AAAA,EAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,EACrD,MAAM,WAAW,MAAM,mBAAmB;AAAA,IACxC,OAAO,aAAa,KAAK;AAAA,IACzB,mBAAmB,MAAM;AAAA,EAC3B,CAAC;AAAA,EAED,MAAM,SAAS,MAAM,SAAS,sBAC5B,EAAE,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO,CAAC,EAAE,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,EAAE,GAC9D,EAAE,OAAO,CACX;AAAA,EAEA,iBAAiB,SAAS,OAAO,QAAQ;AAAA,IACvC,MAAM,OAAO,MAAM,KAAK;AAAA,IACxB,IAAI,MAAM;AAAA,MACR,KAAK,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC,EAA4B,CAAC;AAAA;;;ACvBtD,IAAM,4BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,qBAAqB,MAAM,cAAc;AAAA,EAC/C,MAAM,QAAQ,IAAI,mBAAmB,UAAU,KAAK,CAAC;AAAA,EACrD,MAAM,WAAW,MAAM,mBAAmB;AAAA,IACxC,OAAO,aAAa,KAAK;AAAA,IACzB,mBAAmB;AAAA,EACrB,CAAC;AAAA,EAED,MAAM,SAAS,MAAM,SAAS,sBAC5B,EAAE,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAO,CAAC,EAAE,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,EAAE,GAC9D,EAAE,OAAO,CACX;AAAA,EAEA,iBAAiB,SAAS,OAAO,QAAQ;AAAA,IACvC,MAAM,OAAO,MAAM,KAAK;AAAA,IACxB,IAAI,MAAM;AAAA,MACR,KAAK,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC,EAA2B,CAAC;AAAA;;;ACWrD,IAAM,iBAMP;AAAA,EACJ,EAAE,QAAQ,wBAAwB,OAAO,6BAA6B;AAAA,EACtE,EAAE,QAAQ,iBAAiB,OAAO,0BAA0B;AAAA,EAC5D,EAAE,QAAQ,kBAAkB,OAAO,mCAAmC;AAAA,EACtE,EAAE,QAAQ,sBAAsB,OAAO,2BAA2B;AAAA,EAClE,EAAE,QAAQ,qBAAqB,OAAO,0BAA0B;AAAA,EAChE,EAAE,QAAQ,uBAAuB,OAAO,4BAA4B;AAAA,EACpE,EAAE,QAAQ,yBAAyB,OAAO,4BAA4B;AAAA,EACtE,EAAE,QAAQ,sBAAsB,OAAO,wBAAwB;AAAA,EAC/D,EAAE,QAAQ,qBAAqB,OAAO,0BAA0B;AAAA,EAChE,EAAE,QAAQ,qBAAqB,OAAO,0BAA0B;AAAA,EAChE,EAAE,QAAQ,mBAAmB,OAAO,wBAAwB;AAC9D;AAEO,IAAM,uBAIT;AAAA,EACF,iBAAiB;AACnB;;;ACpEA;AAEA;;;ACaO,IAAM,sBAAsB,uBAAuB,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAE/E,SAAS,sBAAsB,GAA0D;AAAA,EAC9F,OAAO;AAAA;AA8BF,SAAS,uBAAuB,CAAC,OAA+C;AAAA,EACrF,MAAM,KAAK,OACT,MAAM,YACH,MAAM,iBAAyD,cAChE,EACJ;AAAA,EAGA,IAAI,mBAAmB,KAAK,EAAE,KAAK,iBAAiB,KAAK,EAAE,KAAK,qBAAqB,KAAK,EAAE,GAAG;AAAA,IAC7F,OAAO,CAAC,kBAAkB,cAAc,cAAc;AAAA,EACxD;AAAA,EAGA,IAAI,YAAY,KAAK,EAAE,GAAG;AAAA,IACxB,OAAO,CAAC,oBAAoB,cAAc,cAAc;AAAA,EAC1D;AAAA,EAKA,IAAI,qBAAqB,KAAK,EAAE,GAAG;AAAA,IACjC,OAAO,CAAC,oBAAoB,iBAAiB,cAAc,cAAc;AAAA,EAC3E;AAAA,EAGA,IAAI,uBAAuB,KAAK,EAAE,GAAG;AAAA,IACnC,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAGA,IAAI,mCAAmC,KAAK,EAAE,GAAG;AAAA,IAC/C,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAGA,IAAI,gBAAgB,KAAK,EAAE,GAAG;AAAA,IAC5B,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EASA,IAAI,8CAA8C,KAAK,EAAE,GAAG;AAAA,IAC1D,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAIA,MAAM,WAAY,MAAM,gBAAsD,CAAC;AAAA,EAC/E,IAAI,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAChC,OAAO,CAAC,gBAAgB,YAAY;AAAA;;;AD5H/B,MAAM,mCAAmC,yBAC9C,YACA;AAAA,EACE,MAAM;AAAA,EACN,aAAa;AACf,CACF,EAAE;AAAA,EACS,iBAAiB,CAAC,OAA2C;AAAA,IACpE,OAAO,wBAAwB,KAAK;AAAA;AAAA,EAGnB,gBAAgB,GAAiD;AAAA,IAClF,OAAO,uBAAuB;AAAA;AAElC;;;AE3BA;AAYO,SAAS,4BAA4B,GAAS;AAAA,EACnD,kBAAkB,+BAChB,eACA,CAAC,UAAU,OAAO,UAAuB;AAAA,IACvC,IAAI,aAAa;AAAA,MAAiB;AAAA,IAClC,IAAI,MAAM,YAAY,aAAa,MAAM,YAAY,MAAM;AAAA,MACzD,MAAM,IAAI,gCACR,QACA,MAAM,YAAY,UAClB,0FACF;AAAA,IACF;AAAA,GAEJ;AAAA;;;AlBnBF,eAAsB,oBAAoB,CAAC,SAAoD;AAAA,EAC7F,6BAA6B;AAAA,EAC7B,MAAM,uBACJ,IAAI,2BAA2B,gBAAgB,oBAAoB,GACnE,iBACA,OACF;AAAA;;;AmBZF;;;ACAA,uBAAS;AAET,qCAAS;AAeF,MAAM,6BAA6B,0BAA4C,aAAY;AAAA,EAChG,MAAM;AAAA,EACN,aAAa;AACf,CAAC,EAAE;AAAA,EACQ,iBAAiB,CAAC,OAA2C;AAAA,IACpE,OAAO,wBAAwB,KAAK;AAAA;AAAA,EAGnB,gBAAgB,GAAiD;AAAA,IAClF,OAAO,uBAAuB;AAAA;AAElC;;;ADxBA,eAAsB,oBAAoB,GAAkB;AAAA,EAC1D,MAAM,uBACJ,CAAC,OACC,IAAI,qBAAqB,gBAAgB,oBAAoB,EAAE,uBAAuB,EAAE,GAC1F,eACF;AAAA;",
|
|
29
|
-
"debugId": "
|
|
28
|
+
"mappings": "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",
|
|
29
|
+
"debugId": "994365438E014D5B64756E2164756E21",
|
|
30
30
|
"names": []
|
|
31
31
|
}
|
package/dist/ai.js.map
CHANGED
|
@@ -3,29 +3,29 @@
|
|
|
3
3
|
"sources": ["../src/ai/common/Gemini_Constants.ts", "../src/ai/common/Gemini_ImageValidation.ts", "../src/ai/common/Gemini_ModelSchema.ts", "../src/ai/common/Gemini_ModelSearch.ts", "../src/ai/registerGemini.ts", "../src/ai/GoogleGeminiQueuedProvider.ts", "../src/ai/common/Gemini_CapabilitySets.ts", "../src/ai/common/Gemini_Capabilities.ts", "../src/ai/common/Gemini_Client.ts", "../src/ai/common/Gemini_Schema.ts", "../src/ai/common/Gemini_CountTokens.ts", "../src/ai/common/Gemini_ImageEdit.ts", "../src/ai/common/Gemini_ImageGenerate.ts", "../src/ai/common/Gemini_ModelInfo.ts", "../src/ai/common/Gemini_StructuredGeneration.ts", "../src/ai/common/Gemini_TextEmbedding.ts", "../src/ai/common/Gemini_TextGeneration.ts", "../src/ai/common/Gemini_ToolCalling.ts", "../src/ai/common/Gemini_TextRewriter.ts", "../src/ai/common/Gemini_TextSummary.ts", "../src/ai/common/Gemini_JobRunFns.ts", "../src/ai/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const GOOGLE_GEMINI = \"GOOGLE_GEMINI\";\n",
|
|
6
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {
|
|
6
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ModelConfig } from \"@workglow/ai\";\nimport { AiImageOutputTask, ProviderUnsupportedFeatureError } from \"@workglow/ai\";\n\nimport { GOOGLE_GEMINI } from \"./Gemini_Constants\";\n\n/**\n * Registers the Gemini per-provider image validator. Called at provider registration time\n * (both inline and worker-backed paths) so it runs on the main thread before any dispatch.\n *\n * Currently validates:\n * - ImageEditTask + non-null mask → throws (Gemini does not support mask-based inpainting).\n */\nexport function registerGeminiImageValidator(): void {\n AiImageOutputTask.registerProviderImageValidator(\n GOOGLE_GEMINI,\n (taskType, input, model: ModelConfig) => {\n if (taskType !== \"ImageEditTask\") return;\n if (input[\"mask\"] !== undefined && input[\"mask\"] !== null) {\n throw new ProviderUnsupportedFeatureError(\n \"mask\",\n model.model_id ?? \"gemini\",\n \"Gemini does not support mask-based inpainting; remove the mask or use OpenAI gpt-image-2\"\n );\n }\n }\n );\n}\n",
|
|
7
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/worker\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util/worker\";\nimport { GOOGLE_GEMINI } from \"./Gemini_Constants\";\n\nexport const GeminiModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: GOOGLE_GEMINI,\n description: \"Discriminator: Google Gemini cloud provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Google Gemini-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description:\n \"The Gemini model identifier (e.g., 'gemini-2.0-flash', 'text-embedding-004').\",\n },\n credential_key: {\n type: \"string\",\n format: \"credential\",\n description: \"Key to look up in the credential store for the API key.\",\n \"x-ui-hidden\": true,\n },\n embedding_task_type: {\n oneOf: [\n { type: \"null\" },\n {\n type: \"string\",\n enum: [\n \"RETRIEVAL_QUERY\",\n \"RETRIEVAL_DOCUMENT\",\n \"SEMANTIC_SIMILARITY\",\n \"CLASSIFICATION\",\n \"CLUSTERING\",\n ],\n },\n ],\n description: \"Task type hint for embedding models.\",\n default: null,\n },\n },\n required: [\"model_name\"],\n additionalProperties: false,\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const GeminiModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...GeminiModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...GeminiModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type GeminiModelRecord = FromSchema<typeof GeminiModelRecordSchema>;\n\nexport const GeminiModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...GeminiModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...GeminiModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type GeminiModelConfig = FromSchema<typeof GeminiModelConfigSchema>;\n",
|
|
8
8
|
"/**\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 { normalizedModelSearchQuery } from \"@workglow/ai/provider-utils\";\nimport { GOOGLE_GEMINI } from \"./Gemini_Constants\";\n\ninterface GeminiModelEntry {\n readonly label: string;\n readonly value: string;\n readonly capabilities?: readonly string[];\n}\n\nexport const GEMINI_FALLBACK_MODELS: readonly GeminiModelEntry[] = [\n { label: \"gemini-3.1-pro-preview\", value: \"gemini-3.1-pro-preview\" },\n { label: \"gemini-3-flash-preview\", value: \"gemini-3-flash-preview\" },\n { label: \"gemini-3.1-flash-lite-preview\", value: \"gemini-3.1-flash-lite-preview\" },\n { label: \"gemini-2.5-flash\", value: \"gemini-2.5-flash\" },\n { label: \"gemini-2.5-pro\", value: \"gemini-2.5-pro\" },\n // Embedding models\n {\n label: \"gemini-embedding-2\",\n value: \"gemini-embedding-2\",\n capabilities: [\"text.embedding\"],\n },\n {\n label: \"gemini-embedding-001\",\n value: \"gemini-embedding-001\",\n capabilities: [\"text.embedding\"],\n },\n // Image-output models\n {\n label: \"gemini-3.1-flash-image-preview\",\n value: \"gemini-3.1-flash-image-preview\",\n capabilities: [\"image.generation\", \"image.editing\"],\n },\n {\n label: \"gemini-3-pro-image-preview\",\n value: \"gemini-3-pro-image-preview\",\n capabilities: [\"image.generation\", \"image.editing\"],\n },\n {\n label: \"imagen-4.0-generate-001\",\n value: \"imagen-4.0-generate-001\",\n capabilities: [\"image.generation\"],\n },\n];\n\ninterface GeminiApiModel {\n readonly name: string;\n readonly displayName?: string;\n readonly description?: string;\n readonly supportedGenerationMethods?: readonly string[];\n}\n\nfunction capabilitiesForGeminiApiModel(model: GeminiApiModel, id: string): string[] {\n const staticEntry = GEMINI_FALLBACK_MODELS.find((m) => m.value === id);\n if (staticEntry?.capabilities) return [...staticEntry.capabilities];\n\n const methods = model.supportedGenerationMethods ?? [];\n if (methods.some((method) => method.toLowerCase().includes(\"embed\"))) {\n return [\"text.embedding\"];\n }\n return [];\n}\n\nfunction mapGeminiModel(model: GeminiApiModel): ModelSearchResultItem {\n const id = model.name.startsWith(\"models/\") ? model.name.slice(\"models/\".length) : model.name;\n const title = model.displayName || id;\n return {\n id,\n label: title,\n description: model.displayName ? id : (model.description ?? \"\"),\n record: {\n model_id: id,\n provider: GOOGLE_GEMINI,\n title,\n description: model.description ?? \"\",\n capabilities: capabilitiesForGeminiApiModel(model, id),\n provider_config: { model_name: id },\n metadata: {},\n },\n raw: model,\n };\n}\n\nasync function listGeminiModels(\n credentialKey: string,\n signal?: AbortSignal\n): Promise<ModelSearchResultItem[]> {\n const params = new URLSearchParams({ key: credentialKey });\n const response = await fetch(\n `https://generativelanguage.googleapis.com/v1beta/models?${params}`,\n {\n signal,\n }\n );\n if (!response.ok) throw new Error(`Gemini API returned ${response.status}`);\n const body = (await response.json()) as { models?: GeminiApiModel[] };\n return (body.models ?? []).map(mapGeminiModel);\n}\n\nexport const Gemini_ModelSearch_Stream: AiProviderRunFn<\n ModelSearchTaskInput,\n ModelSearchTaskOutput\n> = async (input, _model, signal, emit) => {\n const q = normalizedModelSearchQuery(input.query);\n if (input.credential_key) {\n const models = await listGeminiModels(input.credential_key, signal);\n const results = q\n ? models.filter((m) => m.id.toLowerCase().includes(q) || m.label.toLowerCase().includes(q))\n : models;\n emit({ type: \"finish\", data: { results } });\n return;\n }\n\n const filtered = q\n ? GEMINI_FALLBACK_MODELS.filter(\n (m) => m.value.toLowerCase().includes(q) || m.label.toLowerCase().includes(q)\n )\n : GEMINI_FALLBACK_MODELS;\n const results: ModelSearchResultItem[] = filtered.map((m) => ({\n id: m.value,\n label: m.label,\n description: \"\",\n record: {\n model_id: m.value,\n provider: GOOGLE_GEMINI,\n title: m.value,\n description: \"\",\n capabilities: m.capabilities ? [...m.capabilities] : [],\n provider_config: { model_name: m.value },\n metadata: {},\n },\n raw: m,\n }));\n emit({ type: \"finish\", data: { results } });\n};\n",
|
|
9
9
|
"/**\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 { registerProviderWithWorker } from \"@workglow/ai/provider-utils\";\nimport { GoogleGeminiQueuedProvider } from \"./GoogleGeminiQueuedProvider\";\nimport { registerGeminiImageValidator } from \"./common/Gemini_ImageValidation\";\n\nexport async function registerGemini(\n options: AiProviderRegisterOptions & {\n worker: Worker | (() => Worker);\n }\n): Promise<void> {\n registerGeminiImageValidator();\n await registerProviderWithWorker(new GoogleGeminiQueuedProvider(), \"Google Gemini\", options);\n}\n",
|
|
10
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {
|
|
10
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai\";\nimport { AiProvider } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { geminiWorkerRunFnSpecs, inferGeminiCapabilities } from \"./common/Gemini_Capabilities\";\nimport { GOOGLE_GEMINI } from \"./common/Gemini_Constants\";\nimport type { GeminiModelConfig } from \"./common/Gemini_ModelSchema\";\n\n/**\n * Main-thread registration shell for Google Gemini. Used both for inline mode\n * (constructed with the run-fn registrations array) and worker-backed mode\n * (constructed empty so the base class registers worker proxies). No queue\n * is created — Google Gemini uses {@link DirectExecutionStrategy}.\n */\nexport class GoogleGeminiQueuedProvider extends createCloudProviderClass<GeminiModelConfig>(\n AiProvider,\n {\n name: GOOGLE_GEMINI,\n displayName: \"Google Gemini\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferGeminiCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return geminiWorkerRunFnSpecs();\n }\n}\n",
|
|
11
11
|
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability } from \"@workglow/ai/worker\";\n\n/**\n * Single source of truth for Google Gemini's capability sets.\n *\n * Both `GEMINI_RUN_FNS` (the worker-side registration list) and\n * `workerRunFnSpecs()` (the main-thread proxy declaration) derive their\n * `serves` arrays from these named exports. SDK-free so the main thread\n * can import without paying the Gemini client cost.\n *\n * To add a new capability set: declare a new `as const` constant here,\n * then reference it from both `GEMINI_RUN_FNS` and `GEMINI_RUN_FN_SPECS`.\n */\nexport const GEMINI_TEXT_GENERATION = [\"text.generation\"] as const satisfies Capability[];\nexport const GEMINI_TOOL_USE = [\"text.generation\", \"tool-use\"] as const satisfies Capability[];\nexport const GEMINI_JSON_MODE = [\"text.generation\", \"json-mode\"] as const satisfies Capability[];\nexport const GEMINI_TEXT_REWRITER = [\"text.rewriter\"] as const satisfies Capability[];\nexport const GEMINI_TEXT_SUMMARY = [\"text.summary\"] as const satisfies Capability[];\nexport const GEMINI_TEXT_EMBEDDING = [\"text.embedding\"] as const satisfies Capability[];\nexport const GEMINI_IMAGE_GENERATION = [\"image.generation\"] as const satisfies Capability[];\nexport const GEMINI_IMAGE_EDITING = [\"image.editing\"] as const satisfies Capability[];\nexport const GEMINI_COUNT_TOKENS = [\"model.count-tokens\"] as const satisfies Capability[];\nexport const GEMINI_MODEL_SEARCH = [\"model.search\"] as const satisfies Capability[];\nexport const GEMINI_MODEL_INFO = [\"model.info\"] as const satisfies Capability[];\n\n/** Aggregated list — for `workerRunFnSpecs()` derivation. Order MUST match `GEMINI_RUN_FNS`. */\nexport const GEMINI_CAPABILITY_SETS = [\n GEMINI_TEXT_GENERATION,\n GEMINI_TOOL_USE,\n GEMINI_JSON_MODE,\n GEMINI_TEXT_REWRITER,\n GEMINI_TEXT_SUMMARY,\n GEMINI_TEXT_EMBEDDING,\n GEMINI_IMAGE_GENERATION,\n GEMINI_IMAGE_EDITING,\n GEMINI_COUNT_TOKENS,\n GEMINI_MODEL_SEARCH,\n GEMINI_MODEL_INFO,\n] as const;\n",
|
|
12
12
|
"/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { GEMINI_CAPABILITY_SETS } from \"./Gemini_CapabilitySets\";\n\n// ---------------------------------------------------------------------------\n// Worker-proxy spec list (derived from the single source of truth)\n// ---------------------------------------------------------------------------\n\n/**\n * Closed list of capability-set specs the Google Gemini provider serves. Derived\n * from {@link GEMINI_CAPABILITY_SETS} — do not edit here. Used by the\n * main-thread provider shells when registering worker-mode proxies (the\n * actual runFns live in {@link GEMINI_RUN_FNS} on the worker side, but the\n * main thread still needs to know which `serves` sets to register so the\n * dispatcher can route requests to the worker proxy).\n */\nexport const GEMINI_RUN_FN_SPECS = GEMINI_CAPABILITY_SETS.map((serves) => ({ serves }));\n\nexport function geminiWorkerRunFnSpecs(): readonly { readonly serves: readonly Capability[] }[] {\n return GEMINI_RUN_FN_SPECS;\n}\n\n/**\n * Shape used by the model-name regexes — `model_id` is required, the rest\n * is loosely-typed metadata only used to opportunistically widen the\n * inferred capability set.\n */\ntype CapabilityHints = Pick<ModelRecord, \"model_id\" | \"provider_config\" | \"capabilities\">;\n\n/**\n * Heuristic capability inference for a Google Gemini {@link ModelRecord}. Pattern-\n * matches the canonical Gemini model id strings (and the `provider_config.\n * model_name` if present) to a closed set of {@link Capability}s. Falls back\n * to the model's stored `capabilities` array (or a baseline of search +\n * info) when no pattern matches.\n *\n * Main-thread method only — workers do not run capability inference.\n *\n * Coverage map (cross-referenced against `Gemini_ModelSearch.ts` fallback list):\n * - text-embedding-*, embedding-001, gemini-embedding-* → text.embedding + meta-ops\n * - imagen-* → image.generation + meta-ops (Imagen models, no chat)\n * - gemini-*-image-* → image.generation + image.editing + meta-ops\n * - gemini-pro-vision → text.generation + tool-use + json-mode + vision-input + meta-ops\n * - gemini-1.0-pro (no vision suffix) → text.generation + tool-use + json-mode + meta-ops\n * - gemini-pro (legacy) → text.generation + tool-use + json-mode + meta-ops\n * - gemini-1.5-*, gemini-2.0-*, gemini-2.5-*, gemini-3-*, gemini-3.1-* → full set\n * - Unknown id with declared capabilities → return as-is\n * - Unknown id with no caps → baseline meta-ops\n */\nexport function inferGeminiCapabilities(model: CapabilityHints): readonly Capability[] {\n const id = String(\n model.model_id ??\n (model.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"\"\n );\n\n // Embedding models — text-embedding-004, embedding-001, gemini-embedding-*.\n if (/^text-embedding/i.test(id) || /^embedding-\\d/i.test(id) || /^gemini-embedding/i.test(id)) {\n return [\"text.embedding\", \"model.info\", \"model.search\"];\n }\n\n // Imagen models — imagen-* (image generation only, no chat).\n if (/^imagen-/i.test(id)) {\n return [\"image.generation\", \"model.info\", \"model.search\"];\n }\n\n // Gemini image-output model variants — e.g. gemini-3.1-flash-image-preview,\n // gemini-3-pro-image-preview. These come from the fallback list with explicit\n // capabilities and also need to be covered by inference.\n if (/^gemini-.*-image-/i.test(id)) {\n return [\"image.generation\", \"image.editing\", \"model.info\", \"model.search\"];\n }\n\n // gemini-pro-vision — older vision model, no count-tokens API.\n if (/^gemini-pro-vision$/i.test(id)) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"vision-input\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n // gemini-1.0-pro (without -vision suffix) — no vision, no count-tokens.\n if (/^gemini-1\\.0-pro($|-(?!vision))/i.test(id)) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n // gemini-pro (legacy, without version suffix) — no vision, no count-tokens.\n if (/^gemini-pro$/i.test(id)) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n // Modern Gemini families — 1.5, 2.0, 2.5, 3, 3.1 — full capability set with\n // vision-input and count-tokens. This covers:\n // gemini-1.5-pro, gemini-1.5-flash\n // gemini-2.0-flash, gemini-2.0-flash-exp, gemini-2.0-pro\n // gemini-2.5-flash, gemini-2.5-pro\n // gemini-3-flash-preview, gemini-3-pro-image-preview (image handled above)\n // gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview, gemini-3.1-flash-image-preview (image above)\n if (/^gemini-(?:1\\.5|2\\.[05]|2\\.5|3(?:\\.\\d+)?-)/i.test(id)) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"json-mode\",\n \"vision-input\",\n \"model.count-tokens\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n // Unknown model — fall back to whatever the record declared, or just\n // expose the meta-ops so the model can still be searched / inspected.\n const declared = (model.capabilities as readonly Capability[] | undefined) ?? [];\n if (declared.length > 0) return declared;\n return [\"model.search\", \"model.info\"];\n}\n",
|
|
13
13
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { resolveApiKey } from \"@workglow/ai/provider-utils\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\ntype GeminiSDKModule = typeof import(\"@google/generative-ai\");\ntype GoogleGenerativeAIConstructor = GeminiSDKModule[\"GoogleGenerativeAI\"];\n\nlet _loadPromise: Promise<GoogleGenerativeAIConstructor> | 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 loadGeminiSDK(): Promise<GoogleGenerativeAIConstructor> {\n _loadPromise ??= import(\"@google/generative-ai\")\n .then((mod) => mod.GoogleGenerativeAI)\n .catch(() => {\n _loadPromise = undefined;\n throw new Error(\n \"@google/generative-ai is required for Gemini tasks. Install it with: bun add @google/generative-ai\"\n );\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 embedding_task_type?: string | null;\n}\n\nexport function getApiKey(model: GeminiModelConfig | undefined): string {\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n return resolveApiKey({\n config,\n envVar: [\"GOOGLE_API_KEY\", \"GEMINI_API_KEY\"],\n providerLabel: \"Google\",\n });\n}\n\nexport function getModelName(model: GeminiModelConfig | 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",
|
|
14
14
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Recursively strip JSON Schema properties that the Gemini API does not support\n * (e.g. `additionalProperties`). Returns a shallow-cloned schema without mutating the original.\n */\nexport function sanitizeSchemaForGemini(schema: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(schema)) {\n if (key === \"additionalProperties\") continue;\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n result[key] = sanitizeSchemaForGemini(value as Record<string, unknown>);\n } else {\n result[key] = value;\n }\n }\n return result;\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 AiProviderPreviewRunFn,\n AiProviderRunFn,\n CountTokensTaskInput,\n CountTokensTaskOutput,\n} from \"@workglow/ai\";\nimport
|
|
15
|
+
"/**\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 { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport const Gemini_CountTokens_Stream: AiProviderRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({ model: getModelName(model) });\n const result = await genModel.countTokens(input.text);\n emit({ type: \"finish\", data: { count: result.totalTokens } });\n};\n\nexport const Gemini_CountTokens_Preview: AiProviderPreviewRunFn<\n CountTokensTaskInput,\n CountTokensTaskOutput,\n GeminiModelConfig\n> = async (input, _model) => {\n return { count: Math.ceil(input.text.length / 4) };\n};\n",
|
|
16
16
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageEditTaskInput,\n ImageEditTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { dataUriToImageValue, imageValueToPngBytes } from \"@workglow/ai/provider-utils\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\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 \"gemini\"\n );\n}\n\n/** Decode a base64 inline image part into an ImageValue. */\nasync function decodeInlineImage(mimeType: string, data: string): Promise<ImageValue> {\n return dataUriToImageValue(`data:${mimeType};base64,${data}`);\n}\n\n/**\n * Encode an inbound `ImageValue` (or a legacy data URI string) as base64 PNG\n * for use in an inlineData Part.\n */\nasync function gpuImageToInlinePart(\n image: ImageValue | string\n): Promise<{ inlineData: { mimeType: string; data: string } }> {\n if (typeof image === \"string\" && image.startsWith(\"data:\")) {\n // Data URI materialized at an earlier worker boundary — extract base64 directly.\n const base64 = image.replace(/^data:[^;]+;base64,/, \"\");\n return { inlineData: { mimeType: \"image/png\", data: base64 } };\n }\n const bytes = await imageValueToPngBytes(image);\n // Convert raw bytes to base64 for the inlineData part. Buffer.toString\n // is used in node; fall back to btoa over chunks in browser-like runtimes.\n let base64: string;\n if (typeof Buffer !== \"undefined\") {\n base64 = Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString(\"base64\");\n } else {\n let binary = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n base64 = btoa(binary);\n }\n return { inlineData: { mimeType: \"image/png\", data: base64 } };\n}\n\n/**\n * Run-fn for `[\"image.editing\"]`. Gemini does not support partial\n * image streaming, so we execute the full edit, emit one snapshot, then\n * a finish event.\n */\nexport const Gemini_ImageEdit_Stream: AiProviderRunFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `gemini:ImageEdit:${modelIdOf(model)}`;\n logger.time(timer, { model: modelIdOf(model) });\n try {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const modelName = getModelName(model);\n const genModel = genAI.getGenerativeModel({ model: modelName });\n\n // image/additionalImages may be data URI strings if the input crossed\n // an earlier worker boundary in legacy form; otherwise they are ImageValue\n // POJOs from the standard image hydration resolver.\n const primaryPart = await gpuImageToInlinePart(input.image as unknown as ImageValue | string);\n\n const additionalParts: Array<{ inlineData: { mimeType: string; data: string } }> =\n input.additionalImages && (input.additionalImages as Array<ImageValue | string>).length > 0\n ? await Promise.all(\n (input.additionalImages as Array<ImageValue | string>).map((g) =>\n gpuImageToInlinePart(g)\n )\n )\n : [];\n\n const parts: Array<any> = [{ text: input.prompt }, primaryPart, ...additionalParts];\n\n try {\n const result = await genModel.generateContent({ contents: [{ role: \"user\", parts }] }, {\n signal,\n } as any);\n\n const response = result.response;\n\n // Check for safety blocks\n if (\n !response.candidates ||\n response.candidates.length === 0 ||\n response.promptFeedback?.blockReason\n ) {\n const reason = response.promptFeedback?.blockReason ?? \"SAFETY\";\n throw new ImageGenerationContentPolicyError(modelIdOf(model), `Blocked: ${reason}`);\n }\n\n // Find the inline image part\n const candidateParts = response.candidates[0]?.content?.parts ?? [];\n const imagePart = candidateParts.find(\n (p: any) => p.inlineData && p.inlineData.mimeType && p.inlineData.data\n ) as { inlineData: { mimeType: string; data: string } } | undefined;\n\n if (!imagePart) {\n throw new ImageGenerationProviderError(\n modelIdOf(model),\n \"No image part in response (Gemini did not return an inline image)\"\n );\n }\n\n const image = await decodeInlineImage(\n imagePart.inlineData.mimeType,\n imagePart.inlineData.data\n );\n emit({ type: \"snapshot\", data: { image } } as any);\n emit({ 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|blocked|SAFETY|PROHIBITED/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n } finally {\n logger.timeEnd(timer, { model: modelIdOf(model) });\n }\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 ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { dataUriToImageValue } from \"@workglow/ai/provider-utils\";\nimport
|
|
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 ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { dataUriToImageValue } from \"@workglow/ai/provider-utils\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\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 \"gemini\"\n );\n}\n\n/** Decode a base64 string with an explicit mime type into an ImageValue. */\nasync function decodeInlineImage(mimeType: string, data: string): Promise<ImageValue> {\n return dataUriToImageValue(`data:${mimeType};base64,${data}`);\n}\n\n/**\n * Run-fn for `[\"image.generation\"]`. Gemini does not support partial\n * image streaming, so we execute the full generation, emit one snapshot, then\n * a finish event per the one-shot convention.\n */\nexport const Gemini_ImageGenerate_Stream: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `gemini:ImageGenerate:${modelIdOf(model)}`;\n logger.time(timer, { model: modelIdOf(model) });\n try {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const modelName = getModelName(model);\n const genModel = genAI.getGenerativeModel({ model: modelName });\n\n const parts: Array<{ text: string }> = [{ text: input.prompt }];\n\n try {\n const result = await genModel.generateContent({ contents: [{ role: \"user\", parts }] }, {\n signal,\n } as any);\n\n const response = result.response;\n\n // Check for safety blocks\n if (\n !response.candidates ||\n response.candidates.length === 0 ||\n response.promptFeedback?.blockReason\n ) {\n const reason = response.promptFeedback?.blockReason ?? \"SAFETY\";\n throw new ImageGenerationContentPolicyError(modelIdOf(model), `Blocked: ${reason}`);\n }\n\n // Find the inline image part\n const candidateParts = response.candidates[0]?.content?.parts ?? [];\n const imagePart = candidateParts.find(\n (p: any) => p.inlineData && p.inlineData.mimeType && p.inlineData.data\n ) as { inlineData: { mimeType: string; data: string } } | undefined;\n\n if (!imagePart) {\n throw new ImageGenerationProviderError(\n modelIdOf(model),\n \"No image part in response (Gemini did not return an inline image)\"\n );\n }\n\n const image = await decodeInlineImage(\n imagePart.inlineData.mimeType,\n imagePart.inlineData.data\n );\n emit({ type: \"snapshot\", data: { image } } as any);\n emit({ 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|blocked|SAFETY|PROHIBITED/i.test(msg)) {\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n }\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n } finally {\n logger.timeEnd(timer, { model: modelIdOf(model) });\n }\n};\n",
|
|
18
18
|
"/**\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 { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\n/** Known Gemini embedding model dimensions. */\nconst GEMINI_EMBEDDING_DIMENSIONS: Record<string, { native_dimensions: number; mrl: boolean }> = {\n \"text-embedding-004\": { native_dimensions: 768, mrl: true },\n \"embedding-001\": { native_dimensions: 768, mrl: false },\n};\n\nexport const Gemini_ModelInfo_Stream: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n GeminiModelConfig\n> = async (input, model, _signal, emit) => {\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 if (native_dimensions === undefined) {\n const modelName = (pc?.model_name as string) ?? \"\";\n const known = GEMINI_EMBEDDING_DIMENSIONS[modelName];\n if (known) {\n native_dimensions = known.native_dimensions;\n mrl = mrl ?? known.mrl;\n }\n }\n emit({\n type: \"finish\",\n data: {\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 return;\n }\n emit({\n type: \"finish\",\n data: {\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};\n",
|
|
19
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport { parsePartialJson } from \"@workglow/util/worker\";\nimport
|
|
20
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskType } from \"@google/generative-ai\";\nimport type {\n AiProviderRunFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport
|
|
21
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport
|
|
22
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { FunctionCallingMode } from \"@google/generative-ai\";\nimport
|
|
23
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {
|
|
24
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {
|
|
25
|
-
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {
|
|
19
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport { parsePartialJson } from \"@workglow/util/worker\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\nimport { sanitizeSchemaForGemini } from \"./Gemini_Schema\";\n\n/**\n * Streaming run-fn for `[\"text.generation\", \"json-mode\"]`. Gemini uses\n * `responseSchema` + `responseMimeType: \"application/json\"` to produce\n * structured output. Per the streaming convention exception for json-mode,\n * the `finish` event MUST include the parsed `object` so that\n * `StructuredGenerationTask` can read it without a JSON streaming parser.\n */\nexport const Gemini_StructuredGeneration_Stream: AiProviderRunFn<\n StructuredGenerationTaskInput,\n StructuredGenerationTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit, outputSchema) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const schema = input.outputSchema ?? outputSchema;\n\n const sanitizedSchema = sanitizeSchemaForGemini(schema as Record<string, unknown>);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n responseMimeType: \"application/json\",\n responseSchema: sanitizedSchema as any,\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt as string }] }] },\n { signal }\n );\n\n let accumulatedJson = \"\";\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n accumulatedJson += text;\n const partial = parsePartialJson(accumulatedJson);\n if (partial !== undefined) {\n emit({ 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 // json-mode finish exception: populate finish.data.object with parsed result.\n emit({ type: \"finish\", data: { object: finalObject } as StructuredGenerationTaskOutput });\n};\n",
|
|
20
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { TaskType } from \"@google/generative-ai\";\nimport type {\n AiProviderRunFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport const Gemini_TextEmbedding_Stream: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n GeminiModelConfig\n> = async (input, model, _signal, emit) => {\n const logger = getLogger();\n const timerLabel = `gemini:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n try {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const embeddingModel = genAI.getGenerativeModel({\n model: getModelName(model),\n });\n\n const taskType =\n (model?.provider_config?.embedding_task_type as TaskType) ||\n (\"RETRIEVAL_DOCUMENT\" as TaskType);\n\n if (Array.isArray(input.text)) {\n const result = await embeddingModel.batchEmbedContents({\n requests: input.text.map((t) => ({\n content: { role: \"user\", parts: [{ text: t }] },\n taskType,\n })),\n });\n emit({\n type: \"finish\",\n data: {\n vector: result.embeddings.map((e) => new Float32Array(e.values)),\n },\n });\n return;\n }\n\n const result = await embeddingModel.embedContent({\n content: { role: \"user\", parts: [{ text: input.text as string }] },\n taskType,\n });\n\n emit({\n type: \"finish\",\n data: { vector: new Float32Array(result.embedding.values) },\n });\n } finally {\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n }\n};\n",
|
|
21
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\nimport { buildGeminiContents } from \"./Gemini_ToolCalling\";\n\n/**\n * Inputs that the unified `[\"text.generation\"]` runFn handles. Both\n * {@link TextGenerationTask} and {@link AiChatTask} declare\n * `requires: [\"text.generation\"]`, so the capability dispatcher routes both\n * here. AiChatTask supplies a populated `messages` array; TextGenerationTask\n * (and other simple prompt callers) supply a `prompt` string only.\n */\ninterface UnifiedTextGenerationInput extends TextGenerationTaskInput {\n readonly messages?: readonly unknown[];\n readonly systemPrompt?: string;\n}\n\n/**\n * Streaming run-fn for the `[\"text.generation\"]` capability. Used by both\n * {@link TextGenerationTask} (prompt-only input) and {@link AiChatTask}\n * (full conversation history). Yields `text-delta` events on the `text` port\n * and a final empty `finish` event per the streaming convention (consumer\n * accumulates).\n *\n * Discriminates on `Array.isArray(input.messages) && input.messages.length > 0`\n * to choose the chat vs. prompt path — safe because AiChatTask always provides\n * `messages` and TextGenerationTask never does.\n */\nexport const Gemini_TextGeneration_Stream: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timerLabel = `gemini:TextGeneration:${getModelName(model)}`;\n logger.time(timerLabel, { model: getModelName(model) });\n try {\n signal?.throwIfAborted?.();\n const unified = input as UnifiedTextGenerationInput;\n const hasMessages = Array.isArray(unified.messages) && unified.messages.length > 0;\n\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n if (hasMessages) {\n // Chat path — use buildGeminiContents to map the messages array.\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: unified.systemPrompt || undefined,\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const contents = buildGeminiContents(\n unified.messages as Parameters<typeof buildGeminiContents>[0],\n unified.prompt ?? \"\"\n );\n\n const result = await genModel.generateContentStream({ contents }, { signal });\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: text });\n }\n }\n } else {\n // Prompt path — simple single-user-message generation.\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n topP: input.topP,\n },\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.prompt }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: text });\n }\n }\n }\n\n emit({ type: \"finish\", data: {} as TextGenerationTaskOutput });\n } finally {\n logger.timeEnd(timerLabel, { model: getModelName(model) });\n }\n};\n",
|
|
22
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { FunctionCallingMode } from \"@google/generative-ai\";\nimport type {\n AiProviderRunFn,\n ChatMessage,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport { buildToolDescription, filterValidToolCalls } from \"@workglow/ai/worker\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\nimport { sanitizeSchemaForGemini } from \"./Gemini_Schema\";\n\nexport function buildGeminiContents(\n messages: ReadonlyArray<ChatMessage> | undefined,\n prompt: unknown\n): any[] {\n if (!messages || messages.length === 0) {\n return [{ role: \"user\", parts: [{ text: prompt }] }];\n }\n\n // Index tool_use ids → names from any prior assistant turn (Gemini wants\n // the function name on the functionResponse, not just the id).\n const toolUseNames = new Map<string, string>();\n for (const msg of messages) {\n if (msg.role !== \"assistant\") continue;\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n toolUseNames.set(block.id, block.name);\n }\n }\n }\n\n const contents: any[] = [];\n for (const msg of messages) {\n if (msg.role === \"user\") {\n const parts: any[] = [];\n for (const block of msg.content) {\n if (block.type === \"text\") {\n parts.push({ text: block.text });\n } else if (block.type === \"image\") {\n parts.push({ inlineData: { mimeType: block.mimeType, data: block.data } });\n }\n }\n contents.push({ role: \"user\", parts });\n } else if (msg.role === \"assistant\") {\n const parts: any[] = [];\n for (const block of msg.content) {\n if (block.type === \"text\" && block.text) {\n parts.push({ text: block.text });\n } else if (block.type === \"tool_use\") {\n parts.push({ functionCall: { name: block.name, args: block.input } });\n }\n }\n if (parts.length > 0) contents.push({ role: \"model\", parts });\n } else if (msg.role === \"tool\") {\n const parts: any[] = [];\n for (const block of msg.content) {\n if (block.type !== \"tool_result\") continue;\n const name = toolUseNames.get(block.tool_use_id) ?? \"unknown\";\n const textContent = block.content\n .filter((b) => b.type === \"text\")\n .map((b) => (b as { type: \"text\"; text: string }).text)\n .join(\"\");\n let response: Record<string, unknown>;\n try {\n response = JSON.parse(textContent);\n } catch {\n response = { result: textContent };\n }\n parts.push({ functionResponse: { name, response } });\n }\n if (parts.length > 0) contents.push({ role: \"user\", parts });\n }\n }\n return contents;\n}\n\nfunction mapGeminiToolConfig(\n toolChoice: string | undefined\n):\n | { functionCallingConfig: { mode: FunctionCallingMode; allowedFunctionNames?: string[] } }\n | undefined {\n if (!toolChoice || toolChoice === \"auto\") {\n return { functionCallingConfig: { mode: \"AUTO\" as FunctionCallingMode } };\n }\n if (toolChoice === \"none\") {\n return { functionCallingConfig: { mode: \"NONE\" as FunctionCallingMode } };\n }\n if (toolChoice === \"required\") {\n return { functionCallingConfig: { mode: \"ANY\" as FunctionCallingMode } };\n }\n return {\n functionCallingConfig: {\n mode: \"ANY\" as FunctionCallingMode,\n allowedFunctionNames: [toolChoice],\n },\n };\n}\n\nexport const Gemini_ToolCalling_Stream: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n\n const functionDeclarations = input.tools.map((t: ToolDefinition) => ({\n name: t.name,\n description: buildToolDescription(t),\n parameters: sanitizeSchemaForGemini(t.inputSchema as Record<string, unknown>) as any,\n }));\n\n const toolConfig = mapGeminiToolConfig(input.toolChoice);\n\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n tools: [{ functionDeclarations }],\n toolConfig: toolConfig as any,\n systemInstruction: input.systemPrompt || undefined,\n generationConfig: {\n maxOutputTokens: input.maxTokens,\n temperature: input.temperature,\n },\n });\n\n const contents = buildGeminiContents(input.messages, input.prompt);\n\n const result = await genModel.generateContentStream({ contents }, { signal });\n\n let callIndex = 0;\n\n for await (const chunk of result.stream) {\n const parts = chunk.candidates?.[0]?.content?.parts ?? [];\n for (const part of parts) {\n if (\"text\" in part && part.text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: part.text });\n }\n if (\"functionCall\" in part && part.functionCall) {\n const id = `call_${callIndex++}`;\n // Defence-in-depth: drop tool calls whose name isn't in the\n // declared tool set before emitting. Gemini's tool API respects\n // `input.tools` but a stray response that hallucinates a function\n // name would otherwise propagate to dispatch.\n const validated = filterValidToolCalls(\n [\n {\n id,\n name: part.functionCall.name,\n input: (part.functionCall.args as Record<string, unknown>) ?? {},\n },\n ],\n input.tools\n );\n if (validated.length > 0) {\n emit({\n type: \"object-delta\",\n port: \"toolCalls\",\n objectDelta: validated,\n });\n }\n }\n }\n }\n\n emit({ type: \"finish\", data: { text: \"\", toolCalls: [] } as ToolCallingTaskOutput });\n};\n",
|
|
23
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextRewriterTaskInput, TextRewriterTaskOutput } from \"@workglow/ai\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport const Gemini_TextRewriter_Stream: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: input.prompt,\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.text }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: text });\n }\n }\n emit({ type: \"finish\", data: {} as TextRewriterTaskOutput });\n};\n",
|
|
24
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextSummaryTaskInput, TextSummaryTaskOutput } from \"@workglow/ai\";\nimport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport const Gemini_TextSummary_Stream: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n GeminiModelConfig\n> = async (input, model, signal, emit) => {\n const GoogleGenerativeAI = await loadGeminiSDK();\n const genAI = new GoogleGenerativeAI(getApiKey(model));\n const genModel = genAI.getGenerativeModel({\n model: getModelName(model),\n systemInstruction: \"Summarize the following text concisely.\",\n });\n\n const result = await genModel.generateContentStream(\n { contents: [{ role: \"user\", parts: [{ text: input.text }] }] },\n { signal }\n );\n\n for await (const chunk of result.stream) {\n const text = chunk.text();\n if (text) {\n emit({ type: \"text-delta\", port: \"text\", textDelta: text });\n }\n }\n emit({ type: \"finish\", data: {} as TextSummaryTaskOutput });\n};\n",
|
|
25
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderPreviewRunFn, AiProviderRunFnRegistration } from \"@workglow/ai\";\nimport {\n GEMINI_COUNT_TOKENS,\n GEMINI_IMAGE_EDITING,\n GEMINI_IMAGE_GENERATION,\n GEMINI_JSON_MODE,\n GEMINI_MODEL_INFO,\n GEMINI_MODEL_SEARCH,\n GEMINI_TEXT_EMBEDDING,\n GEMINI_TEXT_GENERATION,\n GEMINI_TEXT_REWRITER,\n GEMINI_TEXT_SUMMARY,\n GEMINI_TOOL_USE,\n} from \"./Gemini_CapabilitySets\";\nimport type { GeminiModelConfig } from \"./Gemini_ModelSchema\";\n\nexport { getApiKey, getModelName, loadGeminiSDK } from \"./Gemini_Client\";\nexport { sanitizeSchemaForGemini } from \"./Gemini_Schema\";\n\nimport { Gemini_CountTokens_Preview, Gemini_CountTokens_Stream } from \"./Gemini_CountTokens\";\nimport { Gemini_ImageEdit_Stream } from \"./Gemini_ImageEdit\";\nimport { Gemini_ImageGenerate_Stream } from \"./Gemini_ImageGenerate\";\nimport { Gemini_ModelInfo_Stream } from \"./Gemini_ModelInfo\";\nimport { Gemini_ModelSearch_Stream } from \"./Gemini_ModelSearch\";\nimport { Gemini_StructuredGeneration_Stream } from \"./Gemini_StructuredGeneration\";\nimport { Gemini_TextEmbedding_Stream } from \"./Gemini_TextEmbedding\";\nimport { Gemini_TextGeneration_Stream } from \"./Gemini_TextGeneration\";\nimport { Gemini_TextRewriter_Stream } from \"./Gemini_TextRewriter\";\nimport { Gemini_TextSummary_Stream } from \"./Gemini_TextSummary\";\nimport { Gemini_ToolCalling_Stream } from \"./Gemini_ToolCalling\";\n\n/**\n * Capability-set run-fn registrations for the Google Gemini provider. Order is\n * significant only as a tiebreaker — the dispatcher prefers the smallest\n * `serves` set that is a superset of the task's `requires`, so the bare\n * `[\"text.generation\"]` entry wins for a plain {@link TextGenerationTask} or\n * {@link AiChatTask} while the `[\"text.generation\", \"tool-use\"]` entry wins\n * for {@link ToolCallingTask}.\n */\nexport const GEMINI_RUN_FNS: readonly AiProviderRunFnRegistration<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n GeminiModelConfig\n>[] = [\n { serves: GEMINI_TEXT_GENERATION, runFn: Gemini_TextGeneration_Stream },\n { serves: GEMINI_TOOL_USE, runFn: Gemini_ToolCalling_Stream },\n { serves: GEMINI_JSON_MODE, runFn: Gemini_StructuredGeneration_Stream },\n { serves: GEMINI_TEXT_REWRITER, runFn: Gemini_TextRewriter_Stream },\n { serves: GEMINI_TEXT_SUMMARY, runFn: Gemini_TextSummary_Stream },\n { serves: GEMINI_TEXT_EMBEDDING, runFn: Gemini_TextEmbedding_Stream },\n { serves: GEMINI_IMAGE_GENERATION, runFn: Gemini_ImageGenerate_Stream },\n { serves: GEMINI_IMAGE_EDITING, runFn: Gemini_ImageEdit_Stream },\n { serves: GEMINI_COUNT_TOKENS, runFn: Gemini_CountTokens_Stream },\n { serves: GEMINI_MODEL_SEARCH, runFn: Gemini_ModelSearch_Stream },\n { serves: GEMINI_MODEL_INFO, runFn: Gemini_ModelInfo_Stream },\n];\n\nexport const GEMINI_PREVIEW_TASKS: Record<\n string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n AiProviderPreviewRunFn<any, any, GeminiModelConfig>\n> = {\n CountTokensTask: Gemini_CountTokens_Preview,\n};\n",
|
|
26
26
|
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// organize-imports-ignore\n\nexport * from \"./common/Gemini_Constants\";\nexport * from \"./common/Gemini_ImageValidation\";\nexport * from \"./common/Gemini_ModelSchema\";\nexport * from \"./common/Gemini_ModelSearch\";\nexport * from \"./registerGemini\";\n\nimport { GEMINI_RUN_FN_SPECS } from \"./common/Gemini_Capabilities\";\nimport { GEMINI_RUN_FNS } from \"./common/Gemini_JobRunFns\";\nimport { GoogleGeminiQueuedProvider } from \"./GoogleGeminiQueuedProvider\";\n\n/**\n * @internal Symbols exported only for use by `@workglow/test`. Not part of the stable public API.\n */\nexport const _testOnly = {\n GoogleGeminiQueuedProvider,\n GEMINI_RUN_FN_SPECS,\n GEMINI_RUN_FNS,\n} as const;\n"
|
|
27
27
|
],
|
|
28
|
-
"mappings": "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",
|
|
28
|
+
"mappings": "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",
|
|
29
29
|
"debugId": "22A7AC7F93C851F664756E2164756E21",
|
|
30
30
|
"names": []
|
|
31
31
|
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@workglow/google-gemini",
|
|
3
3
|
"type": "module",
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "0.2.
|
|
5
|
+
"version": "0.2.37",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/workglow-dev/libs.git",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"@google/generative-ai": "^0.24.1"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@workglow/ai": "0.2.
|
|
38
|
-
"@workglow/job-queue": "0.2.
|
|
39
|
-
"@workglow/storage": "0.2.
|
|
40
|
-
"@workglow/task-graph": "0.2.
|
|
41
|
-
"@workglow/util": "0.2.
|
|
37
|
+
"@workglow/ai": "0.2.37",
|
|
38
|
+
"@workglow/job-queue": "0.2.37",
|
|
39
|
+
"@workglow/storage": "0.2.37",
|
|
40
|
+
"@workglow/task-graph": "0.2.37",
|
|
41
|
+
"@workglow/util": "0.2.37"
|
|
42
42
|
},
|
|
43
43
|
"peerDependenciesMeta": {
|
|
44
44
|
"@workglow/ai": {
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@workglow/ai": "0.2.
|
|
62
|
-
"@workglow/job-queue": "0.2.
|
|
63
|
-
"@workglow/storage": "0.2.
|
|
64
|
-
"@workglow/task-graph": "0.2.
|
|
65
|
-
"@workglow/util": "0.2.
|
|
61
|
+
"@workglow/ai": "0.2.37",
|
|
62
|
+
"@workglow/job-queue": "0.2.37",
|
|
63
|
+
"@workglow/storage": "0.2.37",
|
|
64
|
+
"@workglow/task-graph": "0.2.37",
|
|
65
|
+
"@workglow/util": "0.2.37"
|
|
66
66
|
},
|
|
67
67
|
"files": [
|
|
68
68
|
"dist",
|