@howells/motif-sdk 5.1.1 → 5.2.0
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 +16 -0
- package/dist/image.js +247 -119
- package/dist/index.cjs +428 -251
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +428 -251
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -707,7 +707,7 @@ function getOpenAiKeyFromEnv(input = process.env) {
|
|
|
707
707
|
}
|
|
708
708
|
//#endregion
|
|
709
709
|
//#region src/models.ts
|
|
710
|
-
const AA_IMAGE_LEADERBOARD_SNAPSHOT = "2026-
|
|
710
|
+
const AA_IMAGE_LEADERBOARD_SNAPSHOT = "2026-10-07";
|
|
711
711
|
const AA_IMAGE_SOURCES = ["https://artificialanalysis.ai/image/leaderboard/text-to-image", "https://artificialanalysis.ai/image/leaderboard/editing"];
|
|
712
712
|
const FAL_PRICING_CHECKED_AT = "2026-05-12";
|
|
713
713
|
const FAL_PRICING_CHECKED_JUL_2026 = "2026-07-11";
|
|
@@ -715,6 +715,22 @@ const FAL_PRICING_CHECKED_AUG_2026 = "2026-08-23";
|
|
|
715
715
|
const FAL_PRICING_CHECKED_SEP_2026 = "2026-09-16";
|
|
716
716
|
const MODELS = {
|
|
717
717
|
flare: {
|
|
718
|
+
benchmark: {
|
|
719
|
+
artificialAnalysis: {
|
|
720
|
+
editing: {
|
|
721
|
+
elo: 1163,
|
|
722
|
+
rank: 2
|
|
723
|
+
},
|
|
724
|
+
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
725
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
726
|
+
textToImage: {
|
|
727
|
+
elo: 1191,
|
|
728
|
+
rank: 2
|
|
729
|
+
}
|
|
730
|
+
},
|
|
731
|
+
useCase: "Frontier generation and editing, evaluated at max quality"
|
|
732
|
+
},
|
|
733
|
+
defaultQuality: "max",
|
|
718
734
|
customImageSize: {
|
|
719
735
|
maxEdge: 3840,
|
|
720
736
|
maxPixels: 8294400,
|
|
@@ -751,6 +767,22 @@ const MODELS = {
|
|
|
751
767
|
useQueue: true
|
|
752
768
|
},
|
|
753
769
|
sunburst: {
|
|
770
|
+
benchmark: {
|
|
771
|
+
artificialAnalysis: {
|
|
772
|
+
editing: {
|
|
773
|
+
elo: 1183,
|
|
774
|
+
rank: 1
|
|
775
|
+
},
|
|
776
|
+
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
777
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
778
|
+
textToImage: {
|
|
779
|
+
elo: 1198,
|
|
780
|
+
rank: 1
|
|
781
|
+
}
|
|
782
|
+
},
|
|
783
|
+
useCase: "Frontier generation and editing, evaluated at max quality"
|
|
784
|
+
},
|
|
785
|
+
defaultQuality: "max",
|
|
754
786
|
customImageSize: {
|
|
755
787
|
maxEdge: 3840,
|
|
756
788
|
maxPixels: 8294400,
|
|
@@ -790,14 +822,14 @@ const MODELS = {
|
|
|
790
822
|
benchmark: {
|
|
791
823
|
artificialAnalysis: {
|
|
792
824
|
editing: {
|
|
793
|
-
elo:
|
|
794
|
-
rank:
|
|
825
|
+
elo: 1125,
|
|
826
|
+
rank: 5
|
|
795
827
|
},
|
|
796
828
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
797
829
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
798
830
|
textToImage: {
|
|
799
|
-
elo:
|
|
800
|
-
rank:
|
|
831
|
+
elo: 1172,
|
|
832
|
+
rank: 3
|
|
801
833
|
}
|
|
802
834
|
},
|
|
803
835
|
speed: {
|
|
@@ -810,7 +842,7 @@ const MODELS = {
|
|
|
810
842
|
quality: "frontier",
|
|
811
843
|
speed: "very_slow"
|
|
812
844
|
},
|
|
813
|
-
useCase: "
|
|
845
|
+
useCase: "Established frontier generation and transparent PNGs"
|
|
814
846
|
},
|
|
815
847
|
customImageSize: {
|
|
816
848
|
maxEdge: 3840,
|
|
@@ -861,14 +893,14 @@ const MODELS = {
|
|
|
861
893
|
benchmark: {
|
|
862
894
|
artificialAnalysis: {
|
|
863
895
|
editing: {
|
|
864
|
-
elo:
|
|
865
|
-
rank:
|
|
896
|
+
elo: 1103,
|
|
897
|
+
rank: 12
|
|
866
898
|
},
|
|
867
899
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
868
900
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
869
901
|
textToImage: {
|
|
870
|
-
elo:
|
|
871
|
-
rank:
|
|
902
|
+
elo: 1107,
|
|
903
|
+
rank: 8
|
|
872
904
|
}
|
|
873
905
|
},
|
|
874
906
|
speed: {
|
|
@@ -881,7 +913,7 @@ const MODELS = {
|
|
|
881
913
|
quality: "frontier",
|
|
882
914
|
speed: "slow"
|
|
883
915
|
},
|
|
884
|
-
useCase: "
|
|
916
|
+
useCase: "Established OpenAI editor with transparent PNG support"
|
|
885
917
|
},
|
|
886
918
|
editEndpoint: "fal-ai/gpt-image-1.5/edit",
|
|
887
919
|
endpoint: "fal-ai/gpt-image-1.5",
|
|
@@ -914,18 +946,103 @@ const MODELS = {
|
|
|
914
946
|
supportsSyncMode: true,
|
|
915
947
|
type: "generation"
|
|
916
948
|
},
|
|
917
|
-
|
|
949
|
+
banana21: {
|
|
950
|
+
benchmark: { useCase: "Efficient generation and reference editing; Arena #5 generation / #6 editing, preliminary 2026-10-06" },
|
|
951
|
+
editEndpoint: "google/nano-banana-2.1/edit",
|
|
952
|
+
endpoint: "google/nano-banana-2.1",
|
|
953
|
+
maxReferenceImages: 14,
|
|
954
|
+
name: "Nano Banana 2.1",
|
|
955
|
+
pricePerImageUsd: null,
|
|
956
|
+
pricing: "Token-based: input $1.764/M, text/thinking output $8.823/M, image output $35.294/M; ~ $0.040 / $0.059 / $0.134 at 1K / 2K / 4K plus variable usage",
|
|
957
|
+
sizeMode: "aspect_ratio",
|
|
958
|
+
supportedAspects: [
|
|
959
|
+
"auto",
|
|
960
|
+
"21:9",
|
|
961
|
+
"16:9",
|
|
962
|
+
"3:2",
|
|
963
|
+
"4:3",
|
|
964
|
+
"5:4",
|
|
965
|
+
"1:1",
|
|
966
|
+
"4:5",
|
|
967
|
+
"3:4",
|
|
968
|
+
"2:3",
|
|
969
|
+
"9:16",
|
|
970
|
+
"4:1",
|
|
971
|
+
"1:4",
|
|
972
|
+
"8:1",
|
|
973
|
+
"1:8"
|
|
974
|
+
],
|
|
975
|
+
supportedResolutions: [
|
|
976
|
+
"1K",
|
|
977
|
+
"2K",
|
|
978
|
+
"4K"
|
|
979
|
+
],
|
|
980
|
+
supportsAspect: true,
|
|
981
|
+
supportsEdit: true,
|
|
982
|
+
supportsLimitGenerations: true,
|
|
983
|
+
supportsNumImages: true,
|
|
984
|
+
supportsOutputFormat: true,
|
|
985
|
+
supportsResolution: true,
|
|
986
|
+
supportsSafetyTolerance: true,
|
|
987
|
+
supportsSeed: true,
|
|
988
|
+
supportsSyncMode: true,
|
|
989
|
+
supportsThinkingLevel: true,
|
|
990
|
+
supportsWebSearch: true,
|
|
991
|
+
type: "generation"
|
|
992
|
+
},
|
|
993
|
+
"mai-image-2.5": {
|
|
918
994
|
benchmark: {
|
|
919
995
|
artificialAnalysis: {
|
|
920
996
|
editing: {
|
|
921
|
-
elo:
|
|
997
|
+
elo: 1114,
|
|
922
998
|
rank: 7
|
|
923
999
|
},
|
|
924
1000
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
925
1001
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
926
1002
|
textToImage: {
|
|
927
|
-
elo:
|
|
928
|
-
rank:
|
|
1003
|
+
elo: 1104,
|
|
1004
|
+
rank: 10
|
|
1005
|
+
}
|
|
1006
|
+
},
|
|
1007
|
+
useCase: "Strong single-reference editing at a lower price than MAI 2.5 Pro"
|
|
1008
|
+
},
|
|
1009
|
+
editEndpoint: "microsoft/mai-image-2.5/edit",
|
|
1010
|
+
endpoint: "microsoft/mai-image-2.5",
|
|
1011
|
+
maxReferenceImages: 1,
|
|
1012
|
+
name: "MAI Image 2.5",
|
|
1013
|
+
pricePerImageUsd: null,
|
|
1014
|
+
pricing: "Token-based: text input $5/M, image input $8/M; ~$0.05 image output plus input",
|
|
1015
|
+
sizeMode: "aspect_ratio",
|
|
1016
|
+
supportedAspects: [
|
|
1017
|
+
"auto",
|
|
1018
|
+
"1:1",
|
|
1019
|
+
"4:3",
|
|
1020
|
+
"3:4",
|
|
1021
|
+
"16:9",
|
|
1022
|
+
"9:16",
|
|
1023
|
+
"3:2",
|
|
1024
|
+
"2:3"
|
|
1025
|
+
],
|
|
1026
|
+
supportsAspect: true,
|
|
1027
|
+
supportsEdit: true,
|
|
1028
|
+
supportsNumImages: true,
|
|
1029
|
+
supportsOutputFormat: true,
|
|
1030
|
+
supportsResolution: false,
|
|
1031
|
+
supportsSyncMode: true,
|
|
1032
|
+
type: "generation"
|
|
1033
|
+
},
|
|
1034
|
+
banana2: {
|
|
1035
|
+
benchmark: {
|
|
1036
|
+
artificialAnalysis: {
|
|
1037
|
+
editing: {
|
|
1038
|
+
elo: 1110,
|
|
1039
|
+
rank: 9
|
|
1040
|
+
},
|
|
1041
|
+
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1042
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
1043
|
+
textToImage: {
|
|
1044
|
+
elo: 1126,
|
|
1045
|
+
rank: 6
|
|
929
1046
|
}
|
|
930
1047
|
},
|
|
931
1048
|
tiers: {
|
|
@@ -933,7 +1050,7 @@ const MODELS = {
|
|
|
933
1050
|
quality: "frontier",
|
|
934
1051
|
speed: "unknown"
|
|
935
1052
|
},
|
|
936
|
-
useCase: "
|
|
1053
|
+
useCase: "Previous-generation Gemini workhorse; retains 0.5K output"
|
|
937
1054
|
},
|
|
938
1055
|
editEndpoint: "fal-ai/nano-banana-2/edit",
|
|
939
1056
|
endpoint: "fal-ai/nano-banana-2",
|
|
@@ -969,14 +1086,14 @@ const MODELS = {
|
|
|
969
1086
|
benchmark: {
|
|
970
1087
|
artificialAnalysis: {
|
|
971
1088
|
editing: {
|
|
972
|
-
elo:
|
|
973
|
-
rank:
|
|
1089
|
+
elo: 1101,
|
|
1090
|
+
rank: 13
|
|
974
1091
|
},
|
|
975
1092
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
976
1093
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
977
1094
|
textToImage: {
|
|
978
|
-
elo:
|
|
979
|
-
rank:
|
|
1095
|
+
elo: 1102,
|
|
1096
|
+
rank: 11
|
|
980
1097
|
}
|
|
981
1098
|
},
|
|
982
1099
|
speed: {
|
|
@@ -1041,11 +1158,15 @@ const MODELS = {
|
|
|
1041
1158
|
gemini: {
|
|
1042
1159
|
benchmark: { artificialAnalysis: {
|
|
1043
1160
|
editing: {
|
|
1044
|
-
elo:
|
|
1045
|
-
rank:
|
|
1161
|
+
elo: 987,
|
|
1162
|
+
rank: 50
|
|
1046
1163
|
},
|
|
1047
1164
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1048
|
-
sourceUrls: AA_IMAGE_SOURCES
|
|
1165
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
1166
|
+
textToImage: {
|
|
1167
|
+
elo: 985,
|
|
1168
|
+
rank: 60
|
|
1169
|
+
}
|
|
1049
1170
|
} },
|
|
1050
1171
|
editEndpoint: "fal-ai/gemini-25-flash-image/edit",
|
|
1051
1172
|
endpoint: "fal-ai/gemini-25-flash-image",
|
|
@@ -1086,18 +1207,6 @@ const MODELS = {
|
|
|
1086
1207
|
type: "generation"
|
|
1087
1208
|
},
|
|
1088
1209
|
gemini3: {
|
|
1089
|
-
benchmark: { artificialAnalysis: {
|
|
1090
|
-
editing: {
|
|
1091
|
-
elo: 1245,
|
|
1092
|
-
rank: 9
|
|
1093
|
-
},
|
|
1094
|
-
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1095
|
-
sourceUrls: AA_IMAGE_SOURCES,
|
|
1096
|
-
textToImage: {
|
|
1097
|
-
elo: 1297,
|
|
1098
|
-
rank: 6
|
|
1099
|
-
}
|
|
1100
|
-
} },
|
|
1101
1210
|
editEndpoint: "fal-ai/gemini-3-pro-image-preview/edit",
|
|
1102
1211
|
endpoint: "fal-ai/gemini-3-pro-image-preview",
|
|
1103
1212
|
falPricing: {
|
|
@@ -1147,14 +1256,14 @@ const MODELS = {
|
|
|
1147
1256
|
benchmark: {
|
|
1148
1257
|
artificialAnalysis: {
|
|
1149
1258
|
editing: {
|
|
1150
|
-
elo:
|
|
1151
|
-
rank:
|
|
1259
|
+
elo: 1015,
|
|
1260
|
+
rank: 36
|
|
1152
1261
|
},
|
|
1153
1262
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1154
1263
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1155
1264
|
textToImage: {
|
|
1156
|
-
elo:
|
|
1157
|
-
rank:
|
|
1265
|
+
elo: 1030,
|
|
1266
|
+
rank: 21
|
|
1158
1267
|
}
|
|
1159
1268
|
},
|
|
1160
1269
|
speed: {
|
|
@@ -1167,7 +1276,7 @@ const MODELS = {
|
|
|
1167
1276
|
quality: "best",
|
|
1168
1277
|
speed: "balanced"
|
|
1169
1278
|
},
|
|
1170
|
-
useCase: "
|
|
1279
|
+
useCase: "Legacy budget generation and large multi-reference edits"
|
|
1171
1280
|
},
|
|
1172
1281
|
customImageSize: {
|
|
1173
1282
|
maxPixels: 16777216,
|
|
@@ -1201,14 +1310,14 @@ const MODELS = {
|
|
|
1201
1310
|
benchmark: {
|
|
1202
1311
|
artificialAnalysis: {
|
|
1203
1312
|
editing: {
|
|
1204
|
-
elo:
|
|
1205
|
-
rank:
|
|
1313
|
+
elo: 1037,
|
|
1314
|
+
rank: 32
|
|
1206
1315
|
},
|
|
1207
1316
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1208
1317
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1209
1318
|
textToImage: {
|
|
1210
|
-
elo:
|
|
1211
|
-
rank:
|
|
1319
|
+
elo: 1022,
|
|
1320
|
+
rank: 26
|
|
1212
1321
|
}
|
|
1213
1322
|
},
|
|
1214
1323
|
speed: {
|
|
@@ -1254,14 +1363,14 @@ const MODELS = {
|
|
|
1254
1363
|
seedream5: {
|
|
1255
1364
|
benchmark: { artificialAnalysis: {
|
|
1256
1365
|
editing: {
|
|
1257
|
-
elo:
|
|
1258
|
-
rank:
|
|
1366
|
+
elo: 1108,
|
|
1367
|
+
rank: 11
|
|
1259
1368
|
},
|
|
1260
1369
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1261
1370
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1262
1371
|
textToImage: {
|
|
1263
|
-
elo:
|
|
1264
|
-
rank:
|
|
1372
|
+
elo: 1081,
|
|
1373
|
+
rank: 15
|
|
1265
1374
|
}
|
|
1266
1375
|
} },
|
|
1267
1376
|
customImageSize: {
|
|
@@ -1296,11 +1405,15 @@ const MODELS = {
|
|
|
1296
1405
|
"seedream5-lite": {
|
|
1297
1406
|
benchmark: { artificialAnalysis: {
|
|
1298
1407
|
editing: {
|
|
1299
|
-
elo:
|
|
1300
|
-
rank:
|
|
1408
|
+
elo: 1057,
|
|
1409
|
+
rank: 24
|
|
1301
1410
|
},
|
|
1302
1411
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1303
|
-
sourceUrls: AA_IMAGE_SOURCES
|
|
1412
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
1413
|
+
textToImage: {
|
|
1414
|
+
elo: 1012,
|
|
1415
|
+
rank: 36
|
|
1416
|
+
}
|
|
1304
1417
|
} },
|
|
1305
1418
|
customImageSize: {
|
|
1306
1419
|
maxPixels: 16777216,
|
|
@@ -1334,14 +1447,14 @@ const MODELS = {
|
|
|
1334
1447
|
benchmark: {
|
|
1335
1448
|
artificialAnalysis: {
|
|
1336
1449
|
editing: {
|
|
1337
|
-
elo:
|
|
1338
|
-
rank:
|
|
1450
|
+
elo: 997,
|
|
1451
|
+
rank: 49
|
|
1339
1452
|
},
|
|
1340
1453
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1341
1454
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1342
1455
|
textToImage: {
|
|
1343
|
-
elo:
|
|
1344
|
-
rank:
|
|
1456
|
+
elo: 1020,
|
|
1457
|
+
rank: 28
|
|
1345
1458
|
}
|
|
1346
1459
|
},
|
|
1347
1460
|
speed: {
|
|
@@ -1393,14 +1506,14 @@ const MODELS = {
|
|
|
1393
1506
|
benchmark: {
|
|
1394
1507
|
artificialAnalysis: {
|
|
1395
1508
|
editing: {
|
|
1396
|
-
elo:
|
|
1397
|
-
rank:
|
|
1509
|
+
elo: 1007,
|
|
1510
|
+
rank: 41
|
|
1398
1511
|
},
|
|
1399
1512
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1400
1513
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1401
1514
|
textToImage: {
|
|
1402
|
-
elo:
|
|
1403
|
-
rank:
|
|
1515
|
+
elo: 1004,
|
|
1516
|
+
rank: 41
|
|
1404
1517
|
}
|
|
1405
1518
|
},
|
|
1406
1519
|
speed: {
|
|
@@ -1451,11 +1564,15 @@ const MODELS = {
|
|
|
1451
1564
|
"flux2-flex": {
|
|
1452
1565
|
benchmark: {
|
|
1453
1566
|
artificialAnalysis: {
|
|
1567
|
+
editing: {
|
|
1568
|
+
elo: 1007,
|
|
1569
|
+
rank: 42
|
|
1570
|
+
},
|
|
1454
1571
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1455
1572
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1456
1573
|
textToImage: {
|
|
1457
|
-
elo:
|
|
1458
|
-
rank:
|
|
1574
|
+
elo: 1027,
|
|
1575
|
+
rank: 22
|
|
1459
1576
|
}
|
|
1460
1577
|
},
|
|
1461
1578
|
speed: {
|
|
@@ -1509,8 +1626,16 @@ const MODELS = {
|
|
|
1509
1626
|
"flux2-dev": {
|
|
1510
1627
|
benchmark: {
|
|
1511
1628
|
artificialAnalysis: {
|
|
1629
|
+
editing: {
|
|
1630
|
+
elo: 1e3,
|
|
1631
|
+
rank: 45
|
|
1632
|
+
},
|
|
1512
1633
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1513
|
-
sourceUrls: AA_IMAGE_SOURCES
|
|
1634
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
1635
|
+
textToImage: {
|
|
1636
|
+
elo: 1e3,
|
|
1637
|
+
rank: 42
|
|
1638
|
+
}
|
|
1514
1639
|
},
|
|
1515
1640
|
speed: {
|
|
1516
1641
|
medianSeconds: 4.6,
|
|
@@ -1673,24 +1798,12 @@ const MODELS = {
|
|
|
1673
1798
|
},
|
|
1674
1799
|
reve: {
|
|
1675
1800
|
benchmark: {
|
|
1676
|
-
artificialAnalysis: {
|
|
1677
|
-
editing: {
|
|
1678
|
-
elo: 1263,
|
|
1679
|
-
rank: 2
|
|
1680
|
-
},
|
|
1681
|
-
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1682
|
-
sourceUrls: AA_IMAGE_SOURCES,
|
|
1683
|
-
textToImage: {
|
|
1684
|
-
elo: 1322,
|
|
1685
|
-
rank: 2
|
|
1686
|
-
}
|
|
1687
|
-
},
|
|
1688
1801
|
tiers: {
|
|
1689
1802
|
price: "premium",
|
|
1690
1803
|
quality: "frontier",
|
|
1691
1804
|
speed: "unknown"
|
|
1692
1805
|
},
|
|
1693
|
-
useCase: "
|
|
1806
|
+
useCase: "Historical Reve route; not currently verified on fal"
|
|
1694
1807
|
},
|
|
1695
1808
|
editEndpoint: "fal-ai/reve/edit",
|
|
1696
1809
|
endpoint: "fal-ai/reve/text-to-image",
|
|
@@ -1731,8 +1844,8 @@ const MODELS = {
|
|
|
1731
1844
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1732
1845
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1733
1846
|
textToImage: {
|
|
1734
|
-
elo:
|
|
1735
|
-
rank:
|
|
1847
|
+
elo: 984,
|
|
1848
|
+
rank: 62
|
|
1736
1849
|
}
|
|
1737
1850
|
} },
|
|
1738
1851
|
customImageSize: {},
|
|
@@ -1790,8 +1903,8 @@ const MODELS = {
|
|
|
1790
1903
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1791
1904
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1792
1905
|
textToImage: {
|
|
1793
|
-
elo:
|
|
1794
|
-
rank:
|
|
1906
|
+
elo: 1004,
|
|
1907
|
+
rank: 40
|
|
1795
1908
|
}
|
|
1796
1909
|
} },
|
|
1797
1910
|
customImageSize: {
|
|
@@ -1829,14 +1942,14 @@ const MODELS = {
|
|
|
1829
1942
|
benchmark: {
|
|
1830
1943
|
artificialAnalysis: {
|
|
1831
1944
|
editing: {
|
|
1832
|
-
elo:
|
|
1833
|
-
rank:
|
|
1945
|
+
elo: 1073,
|
|
1946
|
+
rank: 19
|
|
1834
1947
|
},
|
|
1835
1948
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1836
1949
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1837
1950
|
textToImage: {
|
|
1838
|
-
elo:
|
|
1839
|
-
rank:
|
|
1951
|
+
elo: 1019,
|
|
1952
|
+
rank: 30
|
|
1840
1953
|
}
|
|
1841
1954
|
},
|
|
1842
1955
|
speed: {
|
|
@@ -1889,7 +2002,11 @@ const MODELS = {
|
|
|
1889
2002
|
benchmark: {
|
|
1890
2003
|
artificialAnalysis: {
|
|
1891
2004
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1892
|
-
sourceUrls: AA_IMAGE_SOURCES
|
|
2005
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
2006
|
+
textToImage: {
|
|
2007
|
+
elo: 890,
|
|
2008
|
+
rank: 106
|
|
2009
|
+
}
|
|
1893
2010
|
},
|
|
1894
2011
|
speed: {
|
|
1895
2012
|
medianSeconds: 23.3,
|
|
@@ -1931,14 +2048,14 @@ const MODELS = {
|
|
|
1931
2048
|
benchmark: {
|
|
1932
2049
|
artificialAnalysis: {
|
|
1933
2050
|
editing: {
|
|
1934
|
-
elo:
|
|
1935
|
-
rank:
|
|
2051
|
+
elo: 1056,
|
|
2052
|
+
rank: 25
|
|
1936
2053
|
},
|
|
1937
2054
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1938
2055
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1939
2056
|
textToImage: {
|
|
1940
|
-
elo:
|
|
1941
|
-
rank:
|
|
2057
|
+
elo: 1075,
|
|
2058
|
+
rank: 16
|
|
1942
2059
|
}
|
|
1943
2060
|
},
|
|
1944
2061
|
tiers: {
|
|
@@ -1946,7 +2063,7 @@ const MODELS = {
|
|
|
1946
2063
|
quality: "better",
|
|
1947
2064
|
speed: "unknown"
|
|
1948
2065
|
},
|
|
1949
|
-
useCase: "Strong
|
|
2066
|
+
useCase: "Strong generation with negative-prompt and seed controls"
|
|
1950
2067
|
},
|
|
1951
2068
|
customImageSize: {
|
|
1952
2069
|
maxPixels: 4194304,
|
|
@@ -1980,17 +2097,17 @@ const MODELS = {
|
|
|
1980
2097
|
benchmark: {
|
|
1981
2098
|
artificialAnalysis: {
|
|
1982
2099
|
editing: {
|
|
1983
|
-
elo:
|
|
1984
|
-
rank:
|
|
2100
|
+
elo: 1110,
|
|
2101
|
+
rank: 10
|
|
1985
2102
|
},
|
|
1986
2103
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
1987
2104
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
1988
2105
|
textToImage: {
|
|
1989
|
-
elo:
|
|
1990
|
-
rank:
|
|
2106
|
+
elo: 1100,
|
|
2107
|
+
rank: 12
|
|
1991
2108
|
}
|
|
1992
2109
|
},
|
|
1993
|
-
useCase: "
|
|
2110
|
+
useCase: "Strong single-reference editor; MAI 2.5 ranks higher on the current editing board"
|
|
1994
2111
|
},
|
|
1995
2112
|
editEndpoint: "microsoft/mai-image-2.5-pro/edit",
|
|
1996
2113
|
editImagesField: "image_url",
|
|
@@ -2029,20 +2146,26 @@ const MODELS = {
|
|
|
2029
2146
|
},
|
|
2030
2147
|
"banana2-lite": {
|
|
2031
2148
|
benchmark: { artificialAnalysis: {
|
|
2149
|
+
editing: {
|
|
2150
|
+
elo: 1046,
|
|
2151
|
+
rank: 26
|
|
2152
|
+
},
|
|
2032
2153
|
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
2033
2154
|
sourceUrls: AA_IMAGE_SOURCES,
|
|
2034
2155
|
textToImage: {
|
|
2035
|
-
elo:
|
|
2036
|
-
rank:
|
|
2156
|
+
elo: 1095,
|
|
2157
|
+
rank: 13
|
|
2037
2158
|
}
|
|
2038
2159
|
} },
|
|
2160
|
+
editEndpoint: "google/nano-banana-2-lite/edit",
|
|
2161
|
+
maxReferenceImages: 14,
|
|
2039
2162
|
endpoint: "google/nano-banana-2-lite",
|
|
2040
2163
|
name: "Nano Banana 2 Lite",
|
|
2041
|
-
pricing: "Token-based: text $0.3125/M input, $1.875/M output; image $0.3125/M input, $37.50/M output; fixed 1K output (~$0.
|
|
2042
|
-
pricePerImageUsd:
|
|
2164
|
+
pricing: "Token-based: text $0.3125/M input, $1.875/M output; image $0.3125/M input, $37.50/M output; fixed 1K output (~$0.042 image output, plus input/thinking)",
|
|
2165
|
+
pricePerImageUsd: null,
|
|
2043
2166
|
sizeMode: "aspect_ratio",
|
|
2044
2167
|
supportsAspect: true,
|
|
2045
|
-
supportsEdit:
|
|
2168
|
+
supportsEdit: true,
|
|
2046
2169
|
supportsLimitGenerations: true,
|
|
2047
2170
|
supportsNumImages: true,
|
|
2048
2171
|
supportsOutputFormat: true,
|
|
@@ -2115,6 +2238,21 @@ const MODELS = {
|
|
|
2115
2238
|
type: "generation"
|
|
2116
2239
|
},
|
|
2117
2240
|
"grok-image-2": {
|
|
2241
|
+
benchmark: {
|
|
2242
|
+
artificialAnalysis: {
|
|
2243
|
+
editing: {
|
|
2244
|
+
elo: 1110,
|
|
2245
|
+
rank: 8
|
|
2246
|
+
},
|
|
2247
|
+
snapshotDate: AA_IMAGE_LEADERBOARD_SNAPSHOT,
|
|
2248
|
+
sourceUrls: AA_IMAGE_SOURCES,
|
|
2249
|
+
textToImage: {
|
|
2250
|
+
elo: 1156,
|
|
2251
|
+
rank: 4
|
|
2252
|
+
}
|
|
2253
|
+
},
|
|
2254
|
+
useCase: "Strong generation and editing with predictable per-image billing"
|
|
2255
|
+
},
|
|
2118
2256
|
editEndpoint: "xai/grok-imagine-image/v2.0/edit",
|
|
2119
2257
|
endpoint: "xai/grok-imagine-image/v2.0/text-to-image",
|
|
2120
2258
|
falPricing: {
|
|
@@ -2212,38 +2350,44 @@ const MODELS = {
|
|
|
2212
2350
|
type: "utility"
|
|
2213
2351
|
}
|
|
2214
2352
|
};
|
|
2353
|
+
/** Curated generation choices; predecessor routes are explicit-only. */
|
|
2215
2354
|
const GENERATION_MODELS = [
|
|
2216
|
-
"flare",
|
|
2217
2355
|
"sunburst",
|
|
2356
|
+
"flare",
|
|
2218
2357
|
"gpt2",
|
|
2219
2358
|
"gpt",
|
|
2359
|
+
"banana21",
|
|
2220
2360
|
"banana2",
|
|
2221
2361
|
"banana",
|
|
2362
|
+
"mai-image-2.5",
|
|
2363
|
+
"mai-image-2.5-pro",
|
|
2364
|
+
"seedream5",
|
|
2365
|
+
"qwen3",
|
|
2366
|
+
"banana2-lite",
|
|
2367
|
+
"grok-image-2",
|
|
2368
|
+
"grok-image",
|
|
2369
|
+
"flux2-flex",
|
|
2370
|
+
"flux2-pro",
|
|
2371
|
+
"flux2-turbo",
|
|
2372
|
+
"seedream5-lite",
|
|
2373
|
+
"ideogram4",
|
|
2374
|
+
"ideogram3-transparent",
|
|
2375
|
+
"recraft41"
|
|
2376
|
+
];
|
|
2377
|
+
/** Retained for old pins, explicit overrides and tuned Looks, never auto-selected. */
|
|
2378
|
+
const LEGACY_GENERATION_MODELS = [
|
|
2222
2379
|
"gemini",
|
|
2223
2380
|
"gemini3",
|
|
2224
2381
|
"seedream4",
|
|
2225
2382
|
"seedream45",
|
|
2226
|
-
"seedream5",
|
|
2227
|
-
"seedream5-lite",
|
|
2228
2383
|
"flux2-max",
|
|
2229
|
-
"flux2-pro",
|
|
2230
|
-
"flux2-flex",
|
|
2231
2384
|
"flux2-dev",
|
|
2232
|
-
"flux2-turbo",
|
|
2233
2385
|
"flux",
|
|
2234
2386
|
"flux-fast",
|
|
2235
2387
|
"recraft",
|
|
2236
2388
|
"recraft4",
|
|
2237
2389
|
"ideogram",
|
|
2238
|
-
"
|
|
2239
|
-
"grok-image",
|
|
2240
|
-
"grok-image-2",
|
|
2241
|
-
"qwen",
|
|
2242
|
-
"qwen3",
|
|
2243
|
-
"mai-image-2.5-pro",
|
|
2244
|
-
"banana2-lite",
|
|
2245
|
-
"ideogram3-transparent",
|
|
2246
|
-
"recraft41"
|
|
2390
|
+
"qwen"
|
|
2247
2391
|
];
|
|
2248
2392
|
GENERATION_MODELS.filter((id) => MODELS[id]?.supportsEdit === true);
|
|
2249
2393
|
const UTILITY_MODELS = [
|
|
@@ -2620,7 +2764,7 @@ function buildGenerateBody(options) {
|
|
|
2620
2764
|
if (config.supportsAspect) body.aspect_ratio = aspect;
|
|
2621
2765
|
if (config.supportsResolution) body.resolution = model === "grok-image" || model === "grok-image-2" ? resolution.toLowerCase() : resolution;
|
|
2622
2766
|
}
|
|
2623
|
-
if (config.supportsQuality === true) body.quality = quality ?? "high";
|
|
2767
|
+
if (config.supportsQuality === true) body.quality = quality ?? config.defaultQuality ?? "high";
|
|
2624
2768
|
if (config.supportsBackground === true && background) body.background = background;
|
|
2625
2769
|
if (config.supportsBackground === true && transparent === true) body.background = "transparent";
|
|
2626
2770
|
if (transparent === true && config.supportsOutputFormat === true) body.output_format = "png";
|
|
@@ -5048,134 +5192,7 @@ const TIERS = [
|
|
|
5048
5192
|
];
|
|
5049
5193
|
const DEFAULT_TIER = "balanced";
|
|
5050
5194
|
const HAND_RANKED_AT = "2026-09-16";
|
|
5051
|
-
const
|
|
5052
|
-
{
|
|
5053
|
-
model: "gpt2",
|
|
5054
|
-
tier: "quality"
|
|
5055
|
-
},
|
|
5056
|
-
{
|
|
5057
|
-
model: "banana2",
|
|
5058
|
-
tier: "quality"
|
|
5059
|
-
},
|
|
5060
|
-
{
|
|
5061
|
-
model: "gpt",
|
|
5062
|
-
tier: "quality"
|
|
5063
|
-
},
|
|
5064
|
-
{
|
|
5065
|
-
model: "sunburst",
|
|
5066
|
-
tier: "quality"
|
|
5067
|
-
},
|
|
5068
|
-
{
|
|
5069
|
-
model: "gemini3",
|
|
5070
|
-
tier: "quality"
|
|
5071
|
-
},
|
|
5072
|
-
{
|
|
5073
|
-
model: "mai-image-2.5-pro",
|
|
5074
|
-
tier: "quality"
|
|
5075
|
-
},
|
|
5076
|
-
{
|
|
5077
|
-
model: "seedream5",
|
|
5078
|
-
tier: "quality"
|
|
5079
|
-
},
|
|
5080
|
-
{
|
|
5081
|
-
model: "flux2-max",
|
|
5082
|
-
tier: "quality"
|
|
5083
|
-
},
|
|
5084
|
-
{
|
|
5085
|
-
model: "banana",
|
|
5086
|
-
tier: "balanced"
|
|
5087
|
-
},
|
|
5088
|
-
{
|
|
5089
|
-
model: "ideogram3-transparent",
|
|
5090
|
-
requires: ["transparency"],
|
|
5091
|
-
supports: ["transparency"],
|
|
5092
|
-
tier: "balanced"
|
|
5093
|
-
},
|
|
5094
|
-
{
|
|
5095
|
-
model: "flare",
|
|
5096
|
-
tier: "balanced"
|
|
5097
|
-
},
|
|
5098
|
-
{
|
|
5099
|
-
model: "banana2-lite",
|
|
5100
|
-
tier: "balanced"
|
|
5101
|
-
},
|
|
5102
|
-
{
|
|
5103
|
-
model: "qwen3",
|
|
5104
|
-
tier: "balanced"
|
|
5105
|
-
},
|
|
5106
|
-
{
|
|
5107
|
-
model: "seedream4",
|
|
5108
|
-
tier: "balanced"
|
|
5109
|
-
},
|
|
5110
|
-
{
|
|
5111
|
-
model: "flux2-flex",
|
|
5112
|
-
tier: "balanced"
|
|
5113
|
-
},
|
|
5114
|
-
{
|
|
5115
|
-
model: "ideogram4",
|
|
5116
|
-
tier: "balanced"
|
|
5117
|
-
},
|
|
5118
|
-
{
|
|
5119
|
-
model: "grok-image",
|
|
5120
|
-
tier: "balanced"
|
|
5121
|
-
},
|
|
5122
|
-
{
|
|
5123
|
-
model: "recraft4",
|
|
5124
|
-
tier: "balanced"
|
|
5125
|
-
},
|
|
5126
|
-
{
|
|
5127
|
-
model: "flux2-pro",
|
|
5128
|
-
tier: "balanced"
|
|
5129
|
-
},
|
|
5130
|
-
{
|
|
5131
|
-
model: "seedream45",
|
|
5132
|
-
tier: "balanced"
|
|
5133
|
-
},
|
|
5134
|
-
{
|
|
5135
|
-
model: "grok-image-2",
|
|
5136
|
-
tier: "balanced"
|
|
5137
|
-
},
|
|
5138
|
-
{
|
|
5139
|
-
model: "recraft41",
|
|
5140
|
-
tier: "balanced"
|
|
5141
|
-
},
|
|
5142
|
-
{
|
|
5143
|
-
model: "flux2-turbo",
|
|
5144
|
-
tier: "fast"
|
|
5145
|
-
},
|
|
5146
|
-
{
|
|
5147
|
-
model: "flux2-dev",
|
|
5148
|
-
tier: "fast"
|
|
5149
|
-
},
|
|
5150
|
-
{
|
|
5151
|
-
model: "flux-fast",
|
|
5152
|
-
tier: "fast"
|
|
5153
|
-
},
|
|
5154
|
-
{
|
|
5155
|
-
model: "seedream5-lite",
|
|
5156
|
-
tier: "fast"
|
|
5157
|
-
},
|
|
5158
|
-
{
|
|
5159
|
-
model: "gemini",
|
|
5160
|
-
tier: "fast"
|
|
5161
|
-
},
|
|
5162
|
-
{
|
|
5163
|
-
model: "qwen",
|
|
5164
|
-
tier: "fast"
|
|
5165
|
-
},
|
|
5166
|
-
{
|
|
5167
|
-
model: "ideogram",
|
|
5168
|
-
tier: "fast"
|
|
5169
|
-
},
|
|
5170
|
-
{
|
|
5171
|
-
model: "recraft",
|
|
5172
|
-
tier: "fast"
|
|
5173
|
-
},
|
|
5174
|
-
{
|
|
5175
|
-
model: "flux",
|
|
5176
|
-
tier: "fast"
|
|
5177
|
-
}
|
|
5178
|
-
];
|
|
5195
|
+
const IMAGE_RANKED_AT = "2026-10-07";
|
|
5179
5196
|
/** Every Task with a Model. A Task is absent here until it has at least one Model. */
|
|
5180
5197
|
const TASKS = {
|
|
5181
5198
|
animate: {
|
|
@@ -5346,10 +5363,97 @@ const TASKS = {
|
|
|
5346
5363
|
summary: "Remove an object, person, text or clutter from an image and fill the gap."
|
|
5347
5364
|
},
|
|
5348
5365
|
generate: {
|
|
5349
|
-
basis: "
|
|
5350
|
-
models:
|
|
5366
|
+
basis: "Curated from Artificial Analysis v2, captured 2026-10-07, and Arena 2026-10-06. Sunburst and Flare lead quality at the benchmarked max setting. Nano Banana 2.1 leads balanced on preliminary Arena evidence and lower representative cost; Grok Image 2 and MAI 2.5 are established alternatives. Fast keeps Nano Banana 2 Lite, budget Grok and Seedream 5 Lite, and FLUX.2 Turbo. Design, transparency and tuned Look routes are capability exceptions. Generation with References uses the separate editing ranking. Older routes are explicit/pin/Look-only.",
|
|
5367
|
+
models: [
|
|
5368
|
+
{
|
|
5369
|
+
model: "sunburst",
|
|
5370
|
+
tier: "quality"
|
|
5371
|
+
},
|
|
5372
|
+
{
|
|
5373
|
+
model: "flare",
|
|
5374
|
+
tier: "quality"
|
|
5375
|
+
},
|
|
5376
|
+
{
|
|
5377
|
+
model: "gpt2",
|
|
5378
|
+
tier: "quality"
|
|
5379
|
+
},
|
|
5380
|
+
{
|
|
5381
|
+
model: "gpt",
|
|
5382
|
+
tier: "quality"
|
|
5383
|
+
},
|
|
5384
|
+
{
|
|
5385
|
+
model: "mai-image-2.5-pro",
|
|
5386
|
+
tier: "quality"
|
|
5387
|
+
},
|
|
5388
|
+
{
|
|
5389
|
+
model: "seedream5",
|
|
5390
|
+
tier: "quality"
|
|
5391
|
+
},
|
|
5392
|
+
{
|
|
5393
|
+
model: "banana21",
|
|
5394
|
+
tier: "balanced"
|
|
5395
|
+
},
|
|
5396
|
+
{
|
|
5397
|
+
model: "grok-image-2",
|
|
5398
|
+
tier: "balanced"
|
|
5399
|
+
},
|
|
5400
|
+
{
|
|
5401
|
+
model: "banana2",
|
|
5402
|
+
tier: "balanced"
|
|
5403
|
+
},
|
|
5404
|
+
{
|
|
5405
|
+
model: "mai-image-2.5",
|
|
5406
|
+
tier: "balanced"
|
|
5407
|
+
},
|
|
5408
|
+
{
|
|
5409
|
+
model: "banana",
|
|
5410
|
+
tier: "balanced"
|
|
5411
|
+
},
|
|
5412
|
+
{
|
|
5413
|
+
model: "qwen3",
|
|
5414
|
+
tier: "balanced"
|
|
5415
|
+
},
|
|
5416
|
+
{
|
|
5417
|
+
model: "flux2-flex",
|
|
5418
|
+
tier: "balanced"
|
|
5419
|
+
},
|
|
5420
|
+
{
|
|
5421
|
+
model: "flux2-pro",
|
|
5422
|
+
tier: "balanced"
|
|
5423
|
+
},
|
|
5424
|
+
{
|
|
5425
|
+
model: "ideogram4",
|
|
5426
|
+
tier: "balanced"
|
|
5427
|
+
},
|
|
5428
|
+
{
|
|
5429
|
+
model: "recraft41",
|
|
5430
|
+
tier: "balanced"
|
|
5431
|
+
},
|
|
5432
|
+
{
|
|
5433
|
+
model: "ideogram3-transparent",
|
|
5434
|
+
requires: ["transparency"],
|
|
5435
|
+
supports: ["transparency"],
|
|
5436
|
+
tier: "balanced"
|
|
5437
|
+
},
|
|
5438
|
+
{
|
|
5439
|
+
model: "banana2-lite",
|
|
5440
|
+
tier: "fast"
|
|
5441
|
+
},
|
|
5442
|
+
{
|
|
5443
|
+
model: "grok-image",
|
|
5444
|
+
tier: "fast"
|
|
5445
|
+
},
|
|
5446
|
+
{
|
|
5447
|
+
model: "seedream5-lite",
|
|
5448
|
+
tier: "fast"
|
|
5449
|
+
},
|
|
5450
|
+
{
|
|
5451
|
+
model: "flux2-turbo",
|
|
5452
|
+
tier: "fast"
|
|
5453
|
+
}
|
|
5454
|
+
],
|
|
5351
5455
|
notFor: "Variations of an image you already have (vary), or a consistent set of images (series run).",
|
|
5352
|
-
rankedAt:
|
|
5456
|
+
rankedAt: IMAGE_RANKED_AT,
|
|
5353
5457
|
rankedFrom: "hand",
|
|
5354
5458
|
summary: "Make an image from a prompt, or change an image you pass as a reference."
|
|
5355
5459
|
},
|
|
@@ -5834,10 +5938,75 @@ const TASKS = {
|
|
|
5834
5938
|
summary: "Trace a raster image to a clean SVG."
|
|
5835
5939
|
},
|
|
5836
5940
|
vary: {
|
|
5837
|
-
basis: "
|
|
5838
|
-
models:
|
|
5941
|
+
basis: "Curated from Artificial Analysis v2 editing, captured 2026-10-07, and preliminary Arena 2026-10-06 evidence for Nano Banana 2.1. Editing order differs from generation: MAI 2.5 outranks Grok Image 2, and Seedream 5 Pro outranks GPT Image 1.5. Sunburst and Flare use max quality. vary reuses a previously chosen Model when explicitly supplied, including retained legacy routes.",
|
|
5942
|
+
models: [
|
|
5943
|
+
{
|
|
5944
|
+
model: "sunburst",
|
|
5945
|
+
tier: "quality"
|
|
5946
|
+
},
|
|
5947
|
+
{
|
|
5948
|
+
model: "flare",
|
|
5949
|
+
tier: "quality"
|
|
5950
|
+
},
|
|
5951
|
+
{
|
|
5952
|
+
model: "gpt2",
|
|
5953
|
+
tier: "quality"
|
|
5954
|
+
},
|
|
5955
|
+
{
|
|
5956
|
+
model: "mai-image-2.5-pro",
|
|
5957
|
+
tier: "quality"
|
|
5958
|
+
},
|
|
5959
|
+
{
|
|
5960
|
+
model: "seedream5",
|
|
5961
|
+
tier: "quality"
|
|
5962
|
+
},
|
|
5963
|
+
{
|
|
5964
|
+
model: "gpt",
|
|
5965
|
+
tier: "quality"
|
|
5966
|
+
},
|
|
5967
|
+
{
|
|
5968
|
+
model: "banana21",
|
|
5969
|
+
tier: "balanced"
|
|
5970
|
+
},
|
|
5971
|
+
{
|
|
5972
|
+
model: "mai-image-2.5",
|
|
5973
|
+
tier: "balanced"
|
|
5974
|
+
},
|
|
5975
|
+
{
|
|
5976
|
+
model: "grok-image-2",
|
|
5977
|
+
tier: "balanced"
|
|
5978
|
+
},
|
|
5979
|
+
{
|
|
5980
|
+
model: "banana2",
|
|
5981
|
+
tier: "balanced"
|
|
5982
|
+
},
|
|
5983
|
+
{
|
|
5984
|
+
model: "banana",
|
|
5985
|
+
tier: "balanced"
|
|
5986
|
+
},
|
|
5987
|
+
{
|
|
5988
|
+
model: "flux2-pro",
|
|
5989
|
+
tier: "balanced"
|
|
5990
|
+
},
|
|
5991
|
+
{
|
|
5992
|
+
model: "flux2-flex",
|
|
5993
|
+
tier: "balanced"
|
|
5994
|
+
},
|
|
5995
|
+
{
|
|
5996
|
+
model: "grok-image",
|
|
5997
|
+
tier: "fast"
|
|
5998
|
+
},
|
|
5999
|
+
{
|
|
6000
|
+
model: "seedream5-lite",
|
|
6001
|
+
tier: "fast"
|
|
6002
|
+
},
|
|
6003
|
+
{
|
|
6004
|
+
model: "banana2-lite",
|
|
6005
|
+
tier: "fast"
|
|
6006
|
+
}
|
|
6007
|
+
],
|
|
5839
6008
|
notFor: "A specific change to an image described in words (generate with a reference), or a set of different scenes in one style (series run).",
|
|
5840
|
-
rankedAt:
|
|
6009
|
+
rankedAt: IMAGE_RANKED_AT,
|
|
5841
6010
|
rankedFrom: "hand",
|
|
5842
6011
|
summary: "Make variations of an image you already have."
|
|
5843
6012
|
}
|
|
@@ -8222,7 +8391,7 @@ function resolveFixed(task, fixed, request, needed, keys) {
|
|
|
8222
8391
|
const { chosenBy, model } = fixed;
|
|
8223
8392
|
const tier = request.tier ?? "balanced";
|
|
8224
8393
|
const entries = TASKS[task].models;
|
|
8225
|
-
const entry = entries.find((candidate) => candidate.model === model && candidate.mode === request.mode);
|
|
8394
|
+
const entry = entries.find((candidate) => candidate.model === model && candidate.mode === request.mode) ?? legacyEntry(task, model, request.mode, tier);
|
|
8226
8395
|
const profile = modelProfile(model);
|
|
8227
8396
|
if (entry === void 0 || profile === void 0) {
|
|
8228
8397
|
const servesTask = entries.some((candidate) => candidate.model === model);
|
|
@@ -8235,6 +8404,14 @@ function resolveFixed(task, fixed, request, needed, keys) {
|
|
|
8235
8404
|
unblockers.push(unblockerFor(result));
|
|
8236
8405
|
return unresolved(task, result.blockedBy, unblockers, `${model} (${chosenBy}) ${describeBlock(result.blockedBy, result.missingKey, result.missingInput)}.`, result.missingKey);
|
|
8237
8406
|
}
|
|
8407
|
+
/** Old pins and tuned Looks remain usable without recommending predecessors. */
|
|
8408
|
+
function legacyEntry(task, model, mode, tier) {
|
|
8409
|
+
if (mode !== void 0 || task !== "generate" && task !== "vary" || !LEGACY_GENERATION_MODELS.some((id) => id === model) || task === "vary" && MODELS[model]?.supportsEdit !== true) return;
|
|
8410
|
+
return {
|
|
8411
|
+
model,
|
|
8412
|
+
tier
|
|
8413
|
+
};
|
|
8414
|
+
}
|
|
8238
8415
|
function unknownForMode(task, model, mode, entries) {
|
|
8239
8416
|
const otherModes = entries.filter((candidate) => candidate.model === model).map((candidate) => candidate.mode ?? "no mode");
|
|
8240
8417
|
const inMode = [...new Set(entries.filter((candidate) => candidate.mode === mode).map((candidate) => candidate.model))];
|
|
@@ -8251,7 +8428,7 @@ function resolveRanked(task, request, needed, keys) {
|
|
|
8251
8428
|
const qualifying = /* @__PURE__ */ new Map();
|
|
8252
8429
|
let firstBlock;
|
|
8253
8430
|
let keyBlock;
|
|
8254
|
-
const definition = TASKS[task];
|
|
8431
|
+
const definition = task === "generate" && (request.references ?? 0) > 0 ? TASKS.vary : TASKS[task];
|
|
8255
8432
|
for (const entry of definition.models) {
|
|
8256
8433
|
if (entry.mode !== request.mode) continue;
|
|
8257
8434
|
const { model, tier: modelTier } = entry;
|