@just-every/ensemble 0.2.256 → 0.2.258
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/data/model_data.cjs +40 -11
- package/dist/cjs/data/model_data.d.ts.map +1 -1
- package/dist/cjs/data/model_data.js.map +1 -1
- package/dist/cjs/model_providers/gemini.cjs +93 -34
- package/dist/cjs/model_providers/gemini.d.ts.map +1 -1
- package/dist/cjs/model_providers/gemini.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/data/model_data.d.ts.map +1 -1
- package/dist/data/model_data.js +40 -11
- package/dist/data/model_data.js.map +1 -1
- package/dist/model_providers/gemini.d.ts.map +1 -1
- package/dist/model_providers/gemini.js +93 -34
- package/dist/model_providers/gemini.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -620,6 +620,24 @@ function isGemmaModel(model) {
|
|
|
620
620
|
const modelId = model.startsWith('models/') ? model.slice('models/'.length) : model;
|
|
621
621
|
return modelId.startsWith('gemma-4-');
|
|
622
622
|
}
|
|
623
|
+
function isGemini25FlashImageModel(model) {
|
|
624
|
+
return model.includes('gemini-2.5-flash-image');
|
|
625
|
+
}
|
|
626
|
+
function isGemini31FlashImageModel(model) {
|
|
627
|
+
return model.includes('gemini-3.1-flash-image');
|
|
628
|
+
}
|
|
629
|
+
function isGemini31FlashLiteImageModel(model) {
|
|
630
|
+
return model.includes('gemini-3.1-flash-lite-image');
|
|
631
|
+
}
|
|
632
|
+
function isGemini3ProImageModel(model) {
|
|
633
|
+
return model.includes('gemini-3-pro-image');
|
|
634
|
+
}
|
|
635
|
+
function isGeminiStreamingImageModel(model) {
|
|
636
|
+
return (isGemini25FlashImageModel(model) ||
|
|
637
|
+
isGemini31FlashImageModel(model) ||
|
|
638
|
+
isGemini31FlashLiteImageModel(model) ||
|
|
639
|
+
isGemini3ProImageModel(model));
|
|
640
|
+
}
|
|
623
641
|
function getSupportedThinkingLevels(model) {
|
|
624
642
|
if (isGemmaModel(model)) {
|
|
625
643
|
return new Set(['HIGH']);
|
|
@@ -627,17 +645,17 @@ function getSupportedThinkingLevels(model) {
|
|
|
627
645
|
if (model.includes('gemini-3.1-pro-preview') || model.includes('gemini-3-pro-preview')) {
|
|
628
646
|
return new Set(['LOW', 'MEDIUM', 'HIGH']);
|
|
629
647
|
}
|
|
648
|
+
if (isGemini31FlashImageModel(model) || isGemini31FlashLiteImageModel(model)) {
|
|
649
|
+
return new Set(['MINIMAL', 'HIGH']);
|
|
650
|
+
}
|
|
651
|
+
if (isGemini3ProImageModel(model)) {
|
|
652
|
+
return new Set(['HIGH']);
|
|
653
|
+
}
|
|
630
654
|
if (model.includes('gemini-3.5-flash') ||
|
|
631
655
|
model.includes('gemini-3.1-flash-lite') ||
|
|
632
656
|
model.includes('gemini-3-flash-preview')) {
|
|
633
657
|
return new Set(['MINIMAL', 'LOW', 'MEDIUM', 'HIGH']);
|
|
634
658
|
}
|
|
635
|
-
if (model.includes('gemini-3.1-flash-image-preview')) {
|
|
636
|
-
return new Set(['MINIMAL', 'HIGH']);
|
|
637
|
-
}
|
|
638
|
-
if (model.includes('gemini-3-pro-image-preview')) {
|
|
639
|
-
return new Set(['HIGH']);
|
|
640
|
-
}
|
|
641
659
|
return null;
|
|
642
660
|
}
|
|
643
661
|
const GEMINI_3_PRO_IMAGE_DIMENSION_PRESETS = {
|
|
@@ -1268,7 +1286,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1268
1286
|
const requestId = `req_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
|
|
1269
1287
|
let finalRequestId = requestId;
|
|
1270
1288
|
try {
|
|
1271
|
-
model = model || 'gemini-
|
|
1289
|
+
model = model || 'gemini-3.1-flash-image';
|
|
1272
1290
|
const numberOfImages = opts?.n ?? 1;
|
|
1273
1291
|
if (!Number.isInteger(numberOfImages) || numberOfImages < 1) {
|
|
1274
1292
|
throw new Error('[Gemini] ImageGenerationOpts.n must be a positive integer.');
|
|
@@ -1282,11 +1300,17 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1282
1300
|
}
|
|
1283
1301
|
const explicitWebGrounding = opts?.grounding?.web_search;
|
|
1284
1302
|
const explicitImageGrounding = opts?.grounding?.image_search;
|
|
1285
|
-
const
|
|
1286
|
-
const
|
|
1287
|
-
const
|
|
1288
|
-
|
|
1289
|
-
|
|
1303
|
+
const isGemini31FlashImage = isGemini31FlashImageModel(model);
|
|
1304
|
+
const isGemini31FlashLiteImage = isGemini31FlashLiteImageModel(model);
|
|
1305
|
+
const isGemini3ProImage = isGemini3ProImageModel(model);
|
|
1306
|
+
const supportsWebGrounding = isGemini31FlashImage || isGemini3ProImage;
|
|
1307
|
+
const enableWebGrounding = supportsWebGrounding && (explicitWebGrounding ?? hasGoogleWebSearch ?? false);
|
|
1308
|
+
const enableImageGrounding = explicitImageGrounding === true && isGemini31FlashImage;
|
|
1309
|
+
if ((explicitWebGrounding || hasGoogleWebSearch) && !supportsWebGrounding) {
|
|
1310
|
+
console.warn('[Gemini] Google Search grounding is only available for gemini-3.1-flash-image and gemini-3-pro-image. Ignoring web_search=true.');
|
|
1311
|
+
}
|
|
1312
|
+
if (explicitImageGrounding && !isGemini31FlashImage) {
|
|
1313
|
+
console.warn('[Gemini] Image Search grounding is only available for gemini-3.1-flash-image. Ignoring image_search=true.');
|
|
1290
1314
|
}
|
|
1291
1315
|
const thinkingOptions = opts?.thinking;
|
|
1292
1316
|
const hasThinkingOptionsObject = thinkingOptions !== null && typeof thinkingOptions === 'object' && !Array.isArray(thinkingOptions);
|
|
@@ -1296,11 +1320,12 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1296
1320
|
? thinkingOptions.level
|
|
1297
1321
|
: undefined;
|
|
1298
1322
|
const thinkingLevel = requestedThinkingLevel === 'high' ? 'High' : requestedThinkingLevel ? 'Minimal' : undefined;
|
|
1299
|
-
|
|
1300
|
-
|
|
1323
|
+
const supportsImageThinkingControls = isGemini31FlashImage || isGemini31FlashLiteImage;
|
|
1324
|
+
if (requestedThinkingLevel && !supportsImageThinkingControls) {
|
|
1325
|
+
console.warn('[Gemini] thinking.level is currently supported for gemini-3.1-flash-image and gemini-3.1-flash-lite-image only. Ignoring thinking level.');
|
|
1301
1326
|
}
|
|
1302
|
-
if (hasThinkingOptionsObject && 'include_thoughts' in thinkingOptions && !
|
|
1303
|
-
console.warn('[Gemini] thinking.include_thoughts is currently supported for gemini-3.1-flash-image-
|
|
1327
|
+
if (hasThinkingOptionsObject && 'include_thoughts' in thinkingOptions && !supportsImageThinkingControls) {
|
|
1328
|
+
console.warn('[Gemini] thinking.include_thoughts is currently supported for gemini-3.1-flash-image and gemini-3.1-flash-lite-image only. Ignoring include_thoughts.');
|
|
1304
1329
|
}
|
|
1305
1330
|
let aspectRatio = '1:1';
|
|
1306
1331
|
if (opts?.size === 'landscape')
|
|
@@ -1308,9 +1333,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1308
1333
|
else if (opts?.size === 'portrait')
|
|
1309
1334
|
aspectRatio = '2:3';
|
|
1310
1335
|
console.log(`[Gemini] Generating ${numberOfImages} image(s) with model ${model}, prompt: "${prompt.substring(0, 100)}${prompt.length > 100 ? '...' : ''}"`);
|
|
1311
|
-
if (model
|
|
1312
|
-
model.includes('gemini-3.1-flash-image-preview') ||
|
|
1313
|
-
model.includes('gemini-3-pro-image-preview')) {
|
|
1336
|
+
if (isGeminiStreamingImageModel(model)) {
|
|
1314
1337
|
let aggregateMetadata = { model };
|
|
1315
1338
|
const sizeMap = {
|
|
1316
1339
|
'1:1': { ar: '1:1' },
|
|
@@ -1341,7 +1364,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1341
1364
|
'1024x1792': { ar: '9:16' },
|
|
1342
1365
|
};
|
|
1343
1366
|
const sm = opts?.size ? sizeMap[String(opts.size)] : undefined;
|
|
1344
|
-
const gemini3ProDimensionPreset =
|
|
1367
|
+
const gemini3ProDimensionPreset = isGemini3ProImage
|
|
1345
1368
|
? GEMINI_3_PRO_IMAGE_DIMENSION_PRESETS[String(opts?.size)]
|
|
1346
1369
|
: undefined;
|
|
1347
1370
|
const imageConfig = {};
|
|
@@ -1350,7 +1373,24 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1350
1373
|
if (gemini3ProDimensionPreset?.ar)
|
|
1351
1374
|
imageConfig.aspectRatio = gemini3ProDimensionPreset.ar;
|
|
1352
1375
|
const qualityKey = typeof opts?.quality === 'string' ? opts.quality.toLowerCase() : '';
|
|
1353
|
-
|
|
1376
|
+
if (isGemini31FlashLiteImage && imageConfig.aspectRatio) {
|
|
1377
|
+
const liteAspectRatios = new Set([
|
|
1378
|
+
'1:1',
|
|
1379
|
+
'2:3',
|
|
1380
|
+
'3:2',
|
|
1381
|
+
'3:4',
|
|
1382
|
+
'4:3',
|
|
1383
|
+
'4:5',
|
|
1384
|
+
'5:4',
|
|
1385
|
+
'9:16',
|
|
1386
|
+
'16:9',
|
|
1387
|
+
'21:9',
|
|
1388
|
+
]);
|
|
1389
|
+
if (!liteAspectRatios.has(imageConfig.aspectRatio)) {
|
|
1390
|
+
throw new Error(`[Gemini] gemini-3.1-flash-lite-image does not support aspect ratio ${imageConfig.aspectRatio}.`);
|
|
1391
|
+
}
|
|
1392
|
+
}
|
|
1393
|
+
const imageSizeMap = isGemini31FlashImage
|
|
1354
1394
|
? {
|
|
1355
1395
|
low: '0.5K',
|
|
1356
1396
|
standard: '1K',
|
|
@@ -1358,28 +1398,44 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1358
1398
|
hd: '4K',
|
|
1359
1399
|
high: '4K',
|
|
1360
1400
|
}
|
|
1361
|
-
:
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1401
|
+
: isGemini31FlashLiteImage
|
|
1402
|
+
? {
|
|
1403
|
+
low: '1K',
|
|
1404
|
+
standard: '1K',
|
|
1405
|
+
medium: '1K',
|
|
1406
|
+
hd: '1K',
|
|
1407
|
+
high: '1K',
|
|
1408
|
+
}
|
|
1409
|
+
: {
|
|
1410
|
+
low: '1K',
|
|
1411
|
+
standard: '2K',
|
|
1412
|
+
medium: '2K',
|
|
1413
|
+
hd: '4K',
|
|
1414
|
+
high: '4K',
|
|
1415
|
+
};
|
|
1368
1416
|
let imageSize = imageSizeMap[qualityKey];
|
|
1369
1417
|
if (gemini3ProDimensionPreset?.imageSize) {
|
|
1370
1418
|
imageSize = gemini3ProDimensionPreset.imageSize;
|
|
1371
1419
|
}
|
|
1372
|
-
if (
|
|
1420
|
+
if (isGemini31FlashImage && opts?.size === '512x512') {
|
|
1373
1421
|
imageSize = '0.5K';
|
|
1374
1422
|
}
|
|
1423
|
+
if (isGemini31FlashLiteImage) {
|
|
1424
|
+
imageSize = '1K';
|
|
1425
|
+
if (opts?.size === '512x512') {
|
|
1426
|
+
throw new Error('[Gemini] gemini-3.1-flash-lite-image only supports 1K image output.');
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1375
1429
|
const requestImageSize = imageSize === '0.5K' ? '512' : imageSize;
|
|
1376
1430
|
if (requestImageSize)
|
|
1377
1431
|
imageConfig.imageSize = requestImageSize;
|
|
1378
1432
|
const thinkingConfig = {};
|
|
1379
|
-
if (hasThinkingOptionsObject &&
|
|
1433
|
+
if (hasThinkingOptionsObject &&
|
|
1434
|
+
'include_thoughts' in thinkingOptions &&
|
|
1435
|
+
supportsImageThinkingControls) {
|
|
1380
1436
|
thinkingConfig.includeThoughts = includeThoughts;
|
|
1381
1437
|
}
|
|
1382
|
-
if (thinkingLevel &&
|
|
1438
|
+
if (thinkingLevel && supportsImageThinkingControls) {
|
|
1383
1439
|
thinkingConfig.thinkingLevel = thinkingLevel;
|
|
1384
1440
|
}
|
|
1385
1441
|
const searchTypes = {};
|
|
@@ -1695,7 +1751,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1695
1751
|
}
|
|
1696
1752
|
}
|
|
1697
1753
|
getImageCost(model, imageSize) {
|
|
1698
|
-
if (model
|
|
1754
|
+
if (isGemini31FlashImageModel(model)) {
|
|
1699
1755
|
if (imageSize === '4K')
|
|
1700
1756
|
return 0.151;
|
|
1701
1757
|
if (imageSize === '2K')
|
|
@@ -1704,10 +1760,13 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
|
|
|
1704
1760
|
return 0.045;
|
|
1705
1761
|
return 0.067;
|
|
1706
1762
|
}
|
|
1707
|
-
else if (model
|
|
1763
|
+
else if (isGemini31FlashLiteImageModel(model)) {
|
|
1764
|
+
return 0.0336;
|
|
1765
|
+
}
|
|
1766
|
+
else if (isGemini25FlashImageModel(model)) {
|
|
1708
1767
|
return 0.039;
|
|
1709
1768
|
}
|
|
1710
|
-
else if (model
|
|
1769
|
+
else if (isGemini3ProImageModel(model)) {
|
|
1711
1770
|
if (imageSize === '4K')
|
|
1712
1771
|
return 0.24;
|
|
1713
1772
|
return 0.134;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../model_providers/gemini.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAGH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EAInB,mBAAmB,EAEnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA6NvD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAmCD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../model_providers/gemini.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAGH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EAInB,mBAAmB,EAEnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA6NvD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAmCD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AA8hBD,qBAAa,cAAe,SAAQ,iBAAiB;IACjD,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAS3B,OAAO,KAAK,MAAM,GAejB;IASK,eAAe,CACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;YAmKlB,2BAA2B;IA+BnC,oBAAoB,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,SAAS,CAAC,EAAE,MAAM,GACnB,cAAc,CAAC,mBAAmB,CAAC;IAukBhC,WAAW,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC;IAwkBpB,OAAO,CAAC,YAAY;IAsCd,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAgMpD,OAAO,CAAC,gBAAgB;IA6DjB,mBAAmB,CACtB,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,GACzB,cAAc,CAAC,kBAAkB,CAAC;IA6S/B,iBAAiB,CACnB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;CAyB1B;AAyfD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|