@ai-sdk/replicate 2.0.0-beta.60 → 2.0.1
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/CHANGELOG.md +84 -197
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,61 @@
|
|
|
1
1
|
# @ai-sdk/replicate
|
|
2
2
|
|
|
3
|
+
## 2.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [29264a3]
|
|
8
|
+
- @ai-sdk/provider-utils@4.0.1
|
|
9
|
+
|
|
10
|
+
## 2.0.0
|
|
11
|
+
|
|
12
|
+
### Major Changes
|
|
13
|
+
|
|
14
|
+
- dee8b05: ai SDK 6 beta
|
|
15
|
+
|
|
16
|
+
### Minor Changes
|
|
17
|
+
|
|
18
|
+
- 78928cb: release: start 5.1 beta
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- 0c3b58b: fix(provider): add specificationVersion to ProviderV3
|
|
23
|
+
- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3
|
|
24
|
+
|
|
25
|
+
Before
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
model.textEmbeddingModel('my-model-id');
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
After
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
model.embeddingModel('my-model-id');
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- 95f65c2: chore: use import \* from zod/v4
|
|
38
|
+
- d0920f9: feat(replicate): add configurable maxWaitTimeInSeconds option for image generation
|
|
39
|
+
|
|
40
|
+
Added `maxWaitTimeInSeconds` provider option to control sync wait duration for Replicate image predictions:
|
|
41
|
+
|
|
42
|
+
- When not specified: Uses default 60-second sync wait (`prefer: wait`)
|
|
43
|
+
- When set to a positive number: Uses that duration (`prefer: wait=N`)
|
|
44
|
+
|
|
45
|
+
This allows longer predictions to complete by extending the sync timeout beyond the default 60 seconds.
|
|
46
|
+
|
|
47
|
+
- ed329cb: feat: `Provider-V3`
|
|
48
|
+
- 1cad0ab: feat: add provider version to user-agent header
|
|
49
|
+
- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings
|
|
50
|
+
- 9061dc0: feat: image editing
|
|
51
|
+
- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases
|
|
52
|
+
- 4616b86: chore: update zod peer depenedency version
|
|
53
|
+
- 522f6b8: feat: `ImageModelV3`
|
|
54
|
+
- 10c1322: fix: moved dependency `@ai-sdk/test-server` to devDependencies
|
|
55
|
+
- Updated dependencies
|
|
56
|
+
- @ai-sdk/provider@3.0.0
|
|
57
|
+
- @ai-sdk/provider-utils@4.0.0
|
|
58
|
+
|
|
3
59
|
## 2.0.0-beta.60
|
|
4
60
|
|
|
5
61
|
### Patch Changes
|
|
@@ -398,8 +454,7 @@
|
|
|
398
454
|
### Patch Changes
|
|
399
455
|
|
|
400
456
|
- 95f65c2: chore: use import \* from zod/v4
|
|
401
|
-
- Updated dependencies
|
|
402
|
-
- Updated dependencies [95f65c2]
|
|
457
|
+
- Updated dependencies
|
|
403
458
|
- @ai-sdk/provider-utils@4.0.0-beta.11
|
|
404
459
|
|
|
405
460
|
## 2.0.0-beta.10
|
|
@@ -432,8 +487,7 @@
|
|
|
432
487
|
|
|
433
488
|
### Patch Changes
|
|
434
489
|
|
|
435
|
-
- Updated dependencies
|
|
436
|
-
- Updated dependencies [e8109d3]
|
|
490
|
+
- Updated dependencies
|
|
437
491
|
- @ai-sdk/provider@2.1.0-beta.5
|
|
438
492
|
- @ai-sdk/provider-utils@3.1.0-beta.7
|
|
439
493
|
|
|
@@ -441,8 +495,7 @@
|
|
|
441
495
|
|
|
442
496
|
### Patch Changes
|
|
443
497
|
|
|
444
|
-
- Updated dependencies
|
|
445
|
-
- Updated dependencies [2b0caef]
|
|
498
|
+
- Updated dependencies
|
|
446
499
|
- @ai-sdk/provider-utils@3.1.0-beta.6
|
|
447
500
|
- @ai-sdk/provider@2.1.0-beta.4
|
|
448
501
|
|
|
@@ -469,8 +522,7 @@
|
|
|
469
522
|
|
|
470
523
|
- ed329cb: feat: `Provider-V3`
|
|
471
524
|
- 522f6b8: feat: `ImageModelV3`
|
|
472
|
-
- Updated dependencies
|
|
473
|
-
- Updated dependencies [522f6b8]
|
|
525
|
+
- Updated dependencies
|
|
474
526
|
- @ai-sdk/provider@2.1.0-beta.2
|
|
475
527
|
- @ai-sdk/provider-utils@3.1.0-beta.3
|
|
476
528
|
|
|
@@ -487,8 +539,7 @@
|
|
|
487
539
|
|
|
488
540
|
### Patch Changes
|
|
489
541
|
|
|
490
|
-
- Updated dependencies
|
|
491
|
-
- Updated dependencies [cbb1d35]
|
|
542
|
+
- Updated dependencies
|
|
492
543
|
- @ai-sdk/test-server@1.0.0-beta.0
|
|
493
544
|
- @ai-sdk/provider-utils@3.1.0-beta.1
|
|
494
545
|
|
|
@@ -550,8 +601,7 @@
|
|
|
550
601
|
|
|
551
602
|
### Patch Changes
|
|
552
603
|
|
|
553
|
-
- Updated dependencies
|
|
554
|
-
- Updated dependencies [f25040d]
|
|
604
|
+
- Updated dependencies
|
|
555
605
|
- @ai-sdk/provider-utils@3.0.3
|
|
556
606
|
|
|
557
607
|
## 1.0.2
|
|
@@ -613,108 +663,7 @@
|
|
|
613
663
|
- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2`
|
|
614
664
|
- d1a034f: feature: using Zod 4 for internal stuff
|
|
615
665
|
- 205077b: fix: improve Zod compatibility
|
|
616
|
-
- Updated dependencies
|
|
617
|
-
- Updated dependencies [742b7be]
|
|
618
|
-
- Updated dependencies [e7fcc86]
|
|
619
|
-
- Updated dependencies [7cddb72]
|
|
620
|
-
- Updated dependencies [ccce59b]
|
|
621
|
-
- Updated dependencies [e2b9e4b]
|
|
622
|
-
- Updated dependencies [95857aa]
|
|
623
|
-
- Updated dependencies [45c1ea2]
|
|
624
|
-
- Updated dependencies [6f6bb89]
|
|
625
|
-
- Updated dependencies [060370c]
|
|
626
|
-
- Updated dependencies [dc714f3]
|
|
627
|
-
- Updated dependencies [b5da06a]
|
|
628
|
-
- Updated dependencies [d1a1aa1]
|
|
629
|
-
- Updated dependencies [63f9e9b]
|
|
630
|
-
- Updated dependencies [5d142ab]
|
|
631
|
-
- Updated dependencies [d5f588f]
|
|
632
|
-
- Updated dependencies [e025824]
|
|
633
|
-
- Updated dependencies [0571b98]
|
|
634
|
-
- Updated dependencies [b6b43c7]
|
|
635
|
-
- Updated dependencies [4fef487]
|
|
636
|
-
- Updated dependencies [48d257a]
|
|
637
|
-
- Updated dependencies [0c0c0b3]
|
|
638
|
-
- Updated dependencies [0d2c085]
|
|
639
|
-
- Updated dependencies [40acf9b]
|
|
640
|
-
- Updated dependencies [9222aeb]
|
|
641
|
-
- Updated dependencies [e2aceaf]
|
|
642
|
-
- Updated dependencies [411e483]
|
|
643
|
-
- Updated dependencies [8ba77a7]
|
|
644
|
-
- Updated dependencies [7b3ae3f]
|
|
645
|
-
- Updated dependencies [a166433]
|
|
646
|
-
- Updated dependencies [26735b5]
|
|
647
|
-
- Updated dependencies [443d8ec]
|
|
648
|
-
- Updated dependencies [a8c8bd5]
|
|
649
|
-
- Updated dependencies [abf9a79]
|
|
650
|
-
- Updated dependencies [14c9410]
|
|
651
|
-
- Updated dependencies [e86be6f]
|
|
652
|
-
- Updated dependencies [9bf7291]
|
|
653
|
-
- Updated dependencies [2e13791]
|
|
654
|
-
- Updated dependencies [9f95b35]
|
|
655
|
-
- Updated dependencies [66962ed]
|
|
656
|
-
- Updated dependencies [0d06df6]
|
|
657
|
-
- Updated dependencies [472524a]
|
|
658
|
-
- Updated dependencies [dd3ff01]
|
|
659
|
-
- Updated dependencies [d9c98f4]
|
|
660
|
-
- Updated dependencies [05d2819]
|
|
661
|
-
- Updated dependencies [9301f86]
|
|
662
|
-
- Updated dependencies [0a87932]
|
|
663
|
-
- Updated dependencies [c4a2fec]
|
|
664
|
-
- Updated dependencies [957b739]
|
|
665
|
-
- Updated dependencies [79457bd]
|
|
666
|
-
- Updated dependencies [a3f768e]
|
|
667
|
-
- Updated dependencies [7435eb5]
|
|
668
|
-
- Updated dependencies [8aa9e20]
|
|
669
|
-
- Updated dependencies [4617fab]
|
|
670
|
-
- Updated dependencies [ac34802]
|
|
671
|
-
- Updated dependencies [0054544]
|
|
672
|
-
- Updated dependencies [cb68df0]
|
|
673
|
-
- Updated dependencies [ad80501]
|
|
674
|
-
- Updated dependencies [68ecf2f]
|
|
675
|
-
- Updated dependencies [9e9c809]
|
|
676
|
-
- Updated dependencies [32831c6]
|
|
677
|
-
- Updated dependencies [6dc848c]
|
|
678
|
-
- Updated dependencies [6b98118]
|
|
679
|
-
- Updated dependencies [d0f9495]
|
|
680
|
-
- Updated dependencies [63d791d]
|
|
681
|
-
- Updated dependencies [87b828f]
|
|
682
|
-
- Updated dependencies [3f2f00c]
|
|
683
|
-
- Updated dependencies [bfdca8d]
|
|
684
|
-
- Updated dependencies [0ff02bb]
|
|
685
|
-
- Updated dependencies [7979f7f]
|
|
686
|
-
- Updated dependencies [39a4fab]
|
|
687
|
-
- Updated dependencies [44f4aba]
|
|
688
|
-
- Updated dependencies [9bd5ab5]
|
|
689
|
-
- Updated dependencies [57edfcb]
|
|
690
|
-
- Updated dependencies [faf8446]
|
|
691
|
-
- Updated dependencies [7ea4132]
|
|
692
|
-
- Updated dependencies [d1a034f]
|
|
693
|
-
- Updated dependencies [5c56081]
|
|
694
|
-
- Updated dependencies [fd65bc6]
|
|
695
|
-
- Updated dependencies [023ba40]
|
|
696
|
-
- Updated dependencies [ea7a7c9]
|
|
697
|
-
- Updated dependencies [26535e0]
|
|
698
|
-
- Updated dependencies [e030615]
|
|
699
|
-
- Updated dependencies [5e57fae]
|
|
700
|
-
- Updated dependencies [393138b]
|
|
701
|
-
- Updated dependencies [c57e248]
|
|
702
|
-
- Updated dependencies [88a8ee5]
|
|
703
|
-
- Updated dependencies [41fa418]
|
|
704
|
-
- Updated dependencies [205077b]
|
|
705
|
-
- Updated dependencies [71f938d]
|
|
706
|
-
- Updated dependencies [3795467]
|
|
707
|
-
- Updated dependencies [28a5ed5]
|
|
708
|
-
- Updated dependencies [7182d14]
|
|
709
|
-
- Updated dependencies [c1e6647]
|
|
710
|
-
- Updated dependencies [1766ede]
|
|
711
|
-
- Updated dependencies [811dff3]
|
|
712
|
-
- Updated dependencies [f10304b]
|
|
713
|
-
- Updated dependencies [dd5fd43]
|
|
714
|
-
- Updated dependencies [33f4a6a]
|
|
715
|
-
- Updated dependencies [383cbfa]
|
|
716
|
-
- Updated dependencies [27deb4d]
|
|
717
|
-
- Updated dependencies [c4df419]
|
|
666
|
+
- Updated dependencies
|
|
718
667
|
- @ai-sdk/provider-utils@3.0.0
|
|
719
668
|
- @ai-sdk/provider@2.0.0
|
|
720
669
|
|
|
@@ -759,8 +708,7 @@
|
|
|
759
708
|
|
|
760
709
|
### Patch Changes
|
|
761
710
|
|
|
762
|
-
- Updated dependencies
|
|
763
|
-
- Updated dependencies [383cbfa]
|
|
711
|
+
- Updated dependencies
|
|
764
712
|
- @ai-sdk/provider-utils@3.0.0-beta.5
|
|
765
713
|
|
|
766
714
|
## 1.0.0-beta.4
|
|
@@ -783,32 +731,14 @@
|
|
|
783
731
|
### Patch Changes
|
|
784
732
|
|
|
785
733
|
- d1a034f: feature: using Zod 4 for internal stuff
|
|
786
|
-
- Updated dependencies
|
|
787
|
-
- Updated dependencies [39a4fab]
|
|
788
|
-
- Updated dependencies [d1a034f]
|
|
734
|
+
- Updated dependencies
|
|
789
735
|
- @ai-sdk/provider-utils@3.0.0-beta.2
|
|
790
736
|
|
|
791
737
|
## 1.0.0-beta.1
|
|
792
738
|
|
|
793
739
|
### Patch Changes
|
|
794
740
|
|
|
795
|
-
- Updated dependencies
|
|
796
|
-
- Updated dependencies [7cddb72]
|
|
797
|
-
- Updated dependencies [ccce59b]
|
|
798
|
-
- Updated dependencies [e2b9e4b]
|
|
799
|
-
- Updated dependencies [45c1ea2]
|
|
800
|
-
- Updated dependencies [e025824]
|
|
801
|
-
- Updated dependencies [0d06df6]
|
|
802
|
-
- Updated dependencies [472524a]
|
|
803
|
-
- Updated dependencies [dd3ff01]
|
|
804
|
-
- Updated dependencies [7435eb5]
|
|
805
|
-
- Updated dependencies [cb68df0]
|
|
806
|
-
- Updated dependencies [bfdca8d]
|
|
807
|
-
- Updated dependencies [44f4aba]
|
|
808
|
-
- Updated dependencies [023ba40]
|
|
809
|
-
- Updated dependencies [5e57fae]
|
|
810
|
-
- Updated dependencies [71f938d]
|
|
811
|
-
- Updated dependencies [28a5ed5]
|
|
741
|
+
- Updated dependencies
|
|
812
742
|
- @ai-sdk/provider@2.0.0-beta.1
|
|
813
743
|
- @ai-sdk/provider-utils@3.0.0-beta.1
|
|
814
744
|
|
|
@@ -816,8 +746,7 @@
|
|
|
816
746
|
|
|
817
747
|
### Patch Changes
|
|
818
748
|
|
|
819
|
-
- Updated dependencies
|
|
820
|
-
- Updated dependencies [8ba77a7]
|
|
749
|
+
- Updated dependencies
|
|
821
750
|
- @ai-sdk/provider@2.0.0-alpha.15
|
|
822
751
|
- @ai-sdk/provider-utils@3.0.0-alpha.15
|
|
823
752
|
|
|
@@ -825,9 +754,7 @@
|
|
|
825
754
|
|
|
826
755
|
### Patch Changes
|
|
827
756
|
|
|
828
|
-
- Updated dependencies
|
|
829
|
-
- Updated dependencies [63f9e9b]
|
|
830
|
-
- Updated dependencies [2e13791]
|
|
757
|
+
- Updated dependencies
|
|
831
758
|
- @ai-sdk/provider@2.0.0-alpha.14
|
|
832
759
|
- @ai-sdk/provider-utils@3.0.0-alpha.14
|
|
833
760
|
|
|
@@ -875,8 +802,7 @@
|
|
|
875
802
|
|
|
876
803
|
### Patch Changes
|
|
877
804
|
|
|
878
|
-
- Updated dependencies
|
|
879
|
-
- Updated dependencies [9222aeb]
|
|
805
|
+
- Updated dependencies
|
|
880
806
|
- @ai-sdk/provider-utils@3.0.0-alpha.8
|
|
881
807
|
- @ai-sdk/provider@2.0.0-alpha.8
|
|
882
808
|
|
|
@@ -995,10 +921,7 @@
|
|
|
995
921
|
|
|
996
922
|
### Patch Changes
|
|
997
923
|
|
|
998
|
-
- Updated dependencies
|
|
999
|
-
- Updated dependencies [a8c8bd5]
|
|
1000
|
-
- Updated dependencies [7979f7f]
|
|
1001
|
-
- Updated dependencies [41fa418]
|
|
924
|
+
- Updated dependencies
|
|
1002
925
|
- @ai-sdk/provider-utils@3.0.0-canary.15
|
|
1003
926
|
- @ai-sdk/provider@2.0.0-canary.14
|
|
1004
927
|
|
|
@@ -1006,8 +929,7 @@
|
|
|
1006
929
|
|
|
1007
930
|
### Patch Changes
|
|
1008
931
|
|
|
1009
|
-
- Updated dependencies
|
|
1010
|
-
- Updated dependencies [9bd5ab5]
|
|
932
|
+
- Updated dependencies
|
|
1011
933
|
- @ai-sdk/provider-utils@3.0.0-canary.14
|
|
1012
934
|
- @ai-sdk/provider@2.0.0-canary.13
|
|
1013
935
|
|
|
@@ -1016,8 +938,7 @@
|
|
|
1016
938
|
### Patch Changes
|
|
1017
939
|
|
|
1018
940
|
- d9209ca: fix (image-model): `specificationVersion: v1` -> `v2`
|
|
1019
|
-
- Updated dependencies
|
|
1020
|
-
- Updated dependencies [0ff02bb]
|
|
941
|
+
- Updated dependencies
|
|
1021
942
|
- @ai-sdk/provider@2.0.0-canary.12
|
|
1022
943
|
- @ai-sdk/provider-utils@3.0.0-canary.13
|
|
1023
944
|
|
|
@@ -1025,9 +946,7 @@
|
|
|
1025
946
|
|
|
1026
947
|
### Patch Changes
|
|
1027
948
|
|
|
1028
|
-
- Updated dependencies
|
|
1029
|
-
- Updated dependencies [4617fab]
|
|
1030
|
-
- Updated dependencies [e030615]
|
|
949
|
+
- Updated dependencies
|
|
1031
950
|
- @ai-sdk/provider@2.0.0-canary.11
|
|
1032
951
|
- @ai-sdk/provider-utils@3.0.0-canary.12
|
|
1033
952
|
|
|
@@ -1036,9 +955,7 @@
|
|
|
1036
955
|
### Patch Changes
|
|
1037
956
|
|
|
1038
957
|
- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2`
|
|
1039
|
-
- Updated dependencies
|
|
1040
|
-
- Updated dependencies [9301f86]
|
|
1041
|
-
- Updated dependencies [a3f768e]
|
|
958
|
+
- Updated dependencies
|
|
1042
959
|
- @ai-sdk/provider-utils@3.0.0-canary.11
|
|
1043
960
|
- @ai-sdk/provider@2.0.0-canary.10
|
|
1044
961
|
|
|
@@ -1054,8 +971,7 @@
|
|
|
1054
971
|
|
|
1055
972
|
### Patch Changes
|
|
1056
973
|
|
|
1057
|
-
- Updated dependencies
|
|
1058
|
-
- Updated dependencies [7ea4132]
|
|
974
|
+
- Updated dependencies
|
|
1059
975
|
- @ai-sdk/provider@2.0.0-canary.8
|
|
1060
976
|
- @ai-sdk/provider-utils@3.0.0-canary.9
|
|
1061
977
|
|
|
@@ -1063,10 +979,7 @@
|
|
|
1063
979
|
|
|
1064
980
|
### Patch Changes
|
|
1065
981
|
|
|
1066
|
-
- Updated dependencies
|
|
1067
|
-
- Updated dependencies [b6b43c7]
|
|
1068
|
-
- Updated dependencies [8aa9e20]
|
|
1069
|
-
- Updated dependencies [3795467]
|
|
982
|
+
- Updated dependencies
|
|
1070
983
|
- @ai-sdk/provider-utils@3.0.0-canary.8
|
|
1071
984
|
- @ai-sdk/provider@2.0.0-canary.7
|
|
1072
985
|
|
|
@@ -1074,18 +987,7 @@
|
|
|
1074
987
|
|
|
1075
988
|
### Patch Changes
|
|
1076
989
|
|
|
1077
|
-
- Updated dependencies
|
|
1078
|
-
- Updated dependencies [443d8ec]
|
|
1079
|
-
- Updated dependencies [14c9410]
|
|
1080
|
-
- Updated dependencies [d9c98f4]
|
|
1081
|
-
- Updated dependencies [c4a2fec]
|
|
1082
|
-
- Updated dependencies [0054544]
|
|
1083
|
-
- Updated dependencies [9e9c809]
|
|
1084
|
-
- Updated dependencies [32831c6]
|
|
1085
|
-
- Updated dependencies [d0f9495]
|
|
1086
|
-
- Updated dependencies [fd65bc6]
|
|
1087
|
-
- Updated dependencies [393138b]
|
|
1088
|
-
- Updated dependencies [7182d14]
|
|
990
|
+
- Updated dependencies
|
|
1089
991
|
- @ai-sdk/provider@2.0.0-canary.6
|
|
1090
992
|
- @ai-sdk/provider-utils@3.0.0-canary.7
|
|
1091
993
|
|
|
@@ -1093,11 +995,7 @@
|
|
|
1093
995
|
|
|
1094
996
|
### Patch Changes
|
|
1095
997
|
|
|
1096
|
-
- Updated dependencies
|
|
1097
|
-
- Updated dependencies [79457bd]
|
|
1098
|
-
- Updated dependencies [ad80501]
|
|
1099
|
-
- Updated dependencies [1766ede]
|
|
1100
|
-
- Updated dependencies [f10304b]
|
|
998
|
+
- Updated dependencies
|
|
1101
999
|
- @ai-sdk/provider@2.0.0-canary.5
|
|
1102
1000
|
- @ai-sdk/provider-utils@3.0.0-canary.6
|
|
1103
1001
|
|
|
@@ -1121,11 +1019,7 @@
|
|
|
1121
1019
|
|
|
1122
1020
|
### Patch Changes
|
|
1123
1021
|
|
|
1124
|
-
- Updated dependencies
|
|
1125
|
-
- Updated dependencies [abf9a79]
|
|
1126
|
-
- Updated dependencies [9f95b35]
|
|
1127
|
-
- Updated dependencies [0a87932]
|
|
1128
|
-
- Updated dependencies [6dc848c]
|
|
1022
|
+
- Updated dependencies
|
|
1129
1023
|
- @ai-sdk/provider-utils@3.0.0-canary.3
|
|
1130
1024
|
- @ai-sdk/provider@2.0.0-canary.2
|
|
1131
1025
|
|
|
@@ -1133,8 +1027,7 @@
|
|
|
1133
1027
|
|
|
1134
1028
|
### Patch Changes
|
|
1135
1029
|
|
|
1136
|
-
- Updated dependencies
|
|
1137
|
-
- Updated dependencies [33f4a6a]
|
|
1030
|
+
- Updated dependencies
|
|
1138
1031
|
- @ai-sdk/provider@2.0.0-canary.1
|
|
1139
1032
|
- @ai-sdk/provider-utils@3.0.0-canary.2
|
|
1140
1033
|
|
|
@@ -1142,9 +1035,7 @@
|
|
|
1142
1035
|
|
|
1143
1036
|
### Patch Changes
|
|
1144
1037
|
|
|
1145
|
-
- Updated dependencies
|
|
1146
|
-
- Updated dependencies [0c0c0b3]
|
|
1147
|
-
- Updated dependencies [63d791d]
|
|
1038
|
+
- Updated dependencies
|
|
1148
1039
|
- @ai-sdk/provider-utils@3.0.0-canary.1
|
|
1149
1040
|
|
|
1150
1041
|
## 1.0.0-canary.0
|
|
@@ -1301,8 +1192,7 @@
|
|
|
1301
1192
|
### Patch Changes
|
|
1302
1193
|
|
|
1303
1194
|
- 3a58a2e: feat (ai/core): throw NoImageGeneratedError from generateImage when no predictions are returned.
|
|
1304
|
-
- Updated dependencies
|
|
1305
|
-
- Updated dependencies [3a58a2e]
|
|
1195
|
+
- Updated dependencies
|
|
1306
1196
|
- @ai-sdk/provider-utils@2.1.2
|
|
1307
1197
|
- @ai-sdk/provider@1.0.6
|
|
1308
1198
|
|
|
@@ -1310,8 +1200,7 @@
|
|
|
1310
1200
|
|
|
1311
1201
|
### Patch Changes
|
|
1312
1202
|
|
|
1313
|
-
- Updated dependencies
|
|
1314
|
-
- Updated dependencies [0a699f1]
|
|
1203
|
+
- Updated dependencies
|
|
1315
1204
|
- @ai-sdk/provider-utils@2.1.1
|
|
1316
1205
|
- @ai-sdk/provider@1.0.5
|
|
1317
1206
|
|
|
@@ -1351,7 +1240,5 @@
|
|
|
1351
1240
|
|
|
1352
1241
|
- 6636db6: feat (provider/replicate): add replicate image provider
|
|
1353
1242
|
- 90fb95a: chore (provider-utils): switch to unified test server
|
|
1354
|
-
- Updated dependencies
|
|
1355
|
-
- Updated dependencies [e6dfef4]
|
|
1356
|
-
- Updated dependencies [6636db6]
|
|
1243
|
+
- Updated dependencies
|
|
1357
1244
|
- @ai-sdk/provider-utils@2.0.7
|
package/dist/index.js
CHANGED
|
@@ -227,7 +227,7 @@ var replicateImageProviderOptionsSchema = (0, import_provider_utils2.lazySchema)
|
|
|
227
227
|
);
|
|
228
228
|
|
|
229
229
|
// src/version.ts
|
|
230
|
-
var VERSION = true ? "2.0.
|
|
230
|
+
var VERSION = true ? "2.0.1" : "0.0.0-test";
|
|
231
231
|
|
|
232
232
|
// src/replicate-provider.ts
|
|
233
233
|
function createReplicate(options = {}) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/version.ts"],"sourcesContent":["export { createReplicate, replicate } from './replicate-provider';\nexport type {\n ReplicateProvider,\n ReplicateProviderSettings,\n} from './replicate-provider';\nexport type { ReplicateImageProviderOptions } from './replicate-image-model';\nexport { VERSION } from './version';\n","import { NoSuchModelError, ProviderV3 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV3 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n ),\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v3' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Flux-2 models support up to 8 input images with input_image, input_image_2, etc.\nconst FLUX_2_MODEL_PATTERN = /^black-forest-labs\\/flux-2-/;\nconst MAX_FLUX_2_INPUT_IMAGES = 8;\n\nexport class ReplicateImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n\n get maxImagesPerCall(): number {\n // Flux-2 models support up to 8 input images\n return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get isFlux2Model(): boolean {\n return FLUX_2_MODEL_PATTERN.test(this.modelId);\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n // Parse provider options\n const replicateOptions = await parseProviderOptions({\n provider: 'replicate',\n providerOptions,\n schema: replicateImageProviderOptionsSchema,\n });\n\n // Handle image input from files\n let imageInputs: Record<string, string> = {};\n if (files != null && files.length > 0) {\n if (this.isFlux2Model) {\n // Flux-2 models use input_image, input_image_2, input_image_3, etc.\n for (\n let i = 0;\n i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES);\n i++\n ) {\n const key = i === 0 ? 'input_image' : `input_image_${i + 1}`;\n imageInputs[key] = convertImageModelFileToDataUri(files[i]);\n }\n if (files.length > MAX_FLUX_2_INPUT_IMAGES) {\n warnings.push({\n type: 'other',\n message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`,\n });\n }\n } else {\n // Other models use single 'image' parameter\n imageInputs = { image: convertImageModelFileToDataUri(files[0]) };\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'This Replicate model only supports a single input image. Additional images are ignored.',\n });\n }\n }\n }\n\n // Handle mask input (not supported by Flux-2 models)\n let maskInput: string | undefined;\n if (mask != null) {\n if (this.isFlux2Model) {\n warnings.push({\n type: 'other',\n message:\n 'Flux-2 models do not support mask input. The mask will be ignored.',\n });\n } else {\n maskInput = convertImageModelFileToDataUri(mask);\n }\n }\n\n // Extract maxWaitTimeInSeconds from provider options and prepare the rest for the request body\n const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions ?? {};\n\n // Build the prefer header based on maxWaitTimeInSeconds:\n // - undefined/null: use default sync wait (prefer: wait)\n // - positive number: use custom wait duration (prefer: wait=N)\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(\n await resolve(this.config.headers),\n headers,\n preferHeader,\n ),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...imageInputs,\n ...(maskInput != null ? { mask: maskInput } : {}),\n ...inputOptions,\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n\n/**\n * Provider options schema for Replicate image generation.\n *\n * Note: Different Replicate models support different parameters.\n * This schema includes common parameters, but you can pass any\n * model-specific parameters through the passthrough.\n */\nexport const replicateImageProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n /**\n * Maximum time in seconds to wait for the prediction to complete in sync mode.\n * By default, Replicate uses sync mode with a 60-second timeout.\n *\n * - When not specified: Uses default 60-second sync wait (`prefer: wait`)\n * - When set to a positive number: Uses that duration (`prefer: wait=N`)\n */\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n\n /**\n * Guidance scale for classifier-free guidance.\n * Higher values make the output more closely match the prompt.\n */\n guidance_scale: z.number().nullish(),\n\n /**\n * Number of denoising steps. More steps = higher quality but slower.\n */\n num_inference_steps: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid in the generation.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Output image format.\n */\n output_format: z.enum(['png', 'jpg', 'webp']).nullish(),\n\n /**\n * Output image quality (1-100). Only applies to jpg and webp.\n */\n output_quality: z.number().min(1).max(100).nullish(),\n\n /**\n * Strength of the transformation for img2img (0-1).\n * Lower values keep more of the original image.\n */\n strength: z.number().min(0).max(1).nullish(),\n })\n .passthrough(),\n ),\n);\n\nexport type ReplicateImageProviderOptions = InferSchema<\n typeof replicateImageProviderOptionsSchema\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/version.ts"],"sourcesContent":["export { createReplicate, replicate } from './replicate-provider';\nexport type {\n ReplicateProvider,\n ReplicateProviderSettings,\n} from './replicate-provider';\nexport type { ReplicateImageProviderOptions } from './replicate-image-model';\nexport { VERSION } from './version';\n","import { NoSuchModelError, ProviderV3 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV3 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n ),\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v3' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Flux-2 models support up to 8 input images with input_image, input_image_2, etc.\nconst FLUX_2_MODEL_PATTERN = /^black-forest-labs\\/flux-2-/;\nconst MAX_FLUX_2_INPUT_IMAGES = 8;\n\nexport class ReplicateImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n\n get maxImagesPerCall(): number {\n // Flux-2 models support up to 8 input images\n return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get isFlux2Model(): boolean {\n return FLUX_2_MODEL_PATTERN.test(this.modelId);\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n // Parse provider options\n const replicateOptions = await parseProviderOptions({\n provider: 'replicate',\n providerOptions,\n schema: replicateImageProviderOptionsSchema,\n });\n\n // Handle image input from files\n let imageInputs: Record<string, string> = {};\n if (files != null && files.length > 0) {\n if (this.isFlux2Model) {\n // Flux-2 models use input_image, input_image_2, input_image_3, etc.\n for (\n let i = 0;\n i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES);\n i++\n ) {\n const key = i === 0 ? 'input_image' : `input_image_${i + 1}`;\n imageInputs[key] = convertImageModelFileToDataUri(files[i]);\n }\n if (files.length > MAX_FLUX_2_INPUT_IMAGES) {\n warnings.push({\n type: 'other',\n message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`,\n });\n }\n } else {\n // Other models use single 'image' parameter\n imageInputs = { image: convertImageModelFileToDataUri(files[0]) };\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'This Replicate model only supports a single input image. Additional images are ignored.',\n });\n }\n }\n }\n\n // Handle mask input (not supported by Flux-2 models)\n let maskInput: string | undefined;\n if (mask != null) {\n if (this.isFlux2Model) {\n warnings.push({\n type: 'other',\n message:\n 'Flux-2 models do not support mask input. The mask will be ignored.',\n });\n } else {\n maskInput = convertImageModelFileToDataUri(mask);\n }\n }\n\n // Extract maxWaitTimeInSeconds from provider options and prepare the rest for the request body\n const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions ?? {};\n\n // Build the prefer header based on maxWaitTimeInSeconds:\n // - undefined/null: use default sync wait (prefer: wait)\n // - positive number: use custom wait duration (prefer: wait=N)\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(\n await resolve(this.config.headers),\n headers,\n preferHeader,\n ),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...imageInputs,\n ...(maskInput != null ? { mask: maskInput } : {}),\n ...inputOptions,\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n\n/**\n * Provider options schema for Replicate image generation.\n *\n * Note: Different Replicate models support different parameters.\n * This schema includes common parameters, but you can pass any\n * model-specific parameters through the passthrough.\n */\nexport const replicateImageProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n /**\n * Maximum time in seconds to wait for the prediction to complete in sync mode.\n * By default, Replicate uses sync mode with a 60-second timeout.\n *\n * - When not specified: Uses default 60-second sync wait (`prefer: wait`)\n * - When set to a positive number: Uses that duration (`prefer: wait=N`)\n */\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n\n /**\n * Guidance scale for classifier-free guidance.\n * Higher values make the output more closely match the prompt.\n */\n guidance_scale: z.number().nullish(),\n\n /**\n * Number of denoising steps. More steps = higher quality but slower.\n */\n num_inference_steps: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid in the generation.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Output image format.\n */\n output_format: z.enum(['png', 'jpg', 'webp']).nullish(),\n\n /**\n * Output image quality (1-100). Only applies to jpg and webp.\n */\n output_quality: z.number().min(1).max(100).nullish(),\n\n /**\n * Strength of the transformation for img2img (0-1).\n * Lower values keep more of the original image.\n */\n strength: z.number().min(0).max(1).nullish(),\n })\n .passthrough(),\n ),\n);\n\nexport type ReplicateImageProviderOptions = InferSchema<\n typeof replicateImageProviderOptionsSchema\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4"]}
|
package/dist/index.mjs
CHANGED
|
@@ -210,7 +210,7 @@ var replicateImageProviderOptionsSchema = lazySchema(
|
|
|
210
210
|
);
|
|
211
211
|
|
|
212
212
|
// src/version.ts
|
|
213
|
-
var VERSION = true ? "2.0.
|
|
213
|
+
var VERSION = true ? "2.0.1" : "0.0.0-test";
|
|
214
214
|
|
|
215
215
|
// src/replicate-provider.ts
|
|
216
216
|
function createReplicate(options = {}) {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/version.ts"],"sourcesContent":["import { NoSuchModelError, ProviderV3 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV3 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n ),\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v3' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Flux-2 models support up to 8 input images with input_image, input_image_2, etc.\nconst FLUX_2_MODEL_PATTERN = /^black-forest-labs\\/flux-2-/;\nconst MAX_FLUX_2_INPUT_IMAGES = 8;\n\nexport class ReplicateImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n\n get maxImagesPerCall(): number {\n // Flux-2 models support up to 8 input images\n return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get isFlux2Model(): boolean {\n return FLUX_2_MODEL_PATTERN.test(this.modelId);\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n // Parse provider options\n const replicateOptions = await parseProviderOptions({\n provider: 'replicate',\n providerOptions,\n schema: replicateImageProviderOptionsSchema,\n });\n\n // Handle image input from files\n let imageInputs: Record<string, string> = {};\n if (files != null && files.length > 0) {\n if (this.isFlux2Model) {\n // Flux-2 models use input_image, input_image_2, input_image_3, etc.\n for (\n let i = 0;\n i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES);\n i++\n ) {\n const key = i === 0 ? 'input_image' : `input_image_${i + 1}`;\n imageInputs[key] = convertImageModelFileToDataUri(files[i]);\n }\n if (files.length > MAX_FLUX_2_INPUT_IMAGES) {\n warnings.push({\n type: 'other',\n message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`,\n });\n }\n } else {\n // Other models use single 'image' parameter\n imageInputs = { image: convertImageModelFileToDataUri(files[0]) };\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'This Replicate model only supports a single input image. Additional images are ignored.',\n });\n }\n }\n }\n\n // Handle mask input (not supported by Flux-2 models)\n let maskInput: string | undefined;\n if (mask != null) {\n if (this.isFlux2Model) {\n warnings.push({\n type: 'other',\n message:\n 'Flux-2 models do not support mask input. The mask will be ignored.',\n });\n } else {\n maskInput = convertImageModelFileToDataUri(mask);\n }\n }\n\n // Extract maxWaitTimeInSeconds from provider options and prepare the rest for the request body\n const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions ?? {};\n\n // Build the prefer header based on maxWaitTimeInSeconds:\n // - undefined/null: use default sync wait (prefer: wait)\n // - positive number: use custom wait duration (prefer: wait=N)\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(\n await resolve(this.config.headers),\n headers,\n preferHeader,\n ),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...imageInputs,\n ...(maskInput != null ? { mask: maskInput } : {}),\n ...inputOptions,\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n\n/**\n * Provider options schema for Replicate image generation.\n *\n * Note: Different Replicate models support different parameters.\n * This schema includes common parameters, but you can pass any\n * model-specific parameters through the passthrough.\n */\nexport const replicateImageProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n /**\n * Maximum time in seconds to wait for the prediction to complete in sync mode.\n * By default, Replicate uses sync mode with a 60-second timeout.\n *\n * - When not specified: Uses default 60-second sync wait (`prefer: wait`)\n * - When set to a positive number: Uses that duration (`prefer: wait=N`)\n */\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n\n /**\n * Guidance scale for classifier-free guidance.\n * Higher values make the output more closely match the prompt.\n */\n guidance_scale: z.number().nullish(),\n\n /**\n * Number of denoising steps. More steps = higher quality but slower.\n */\n num_inference_steps: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid in the generation.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Output image format.\n */\n output_format: z.enum(['png', 'jpg', 'webp']).nullish(),\n\n /**\n * Output image quality (1-100). Only applies to jpg and webp.\n */\n output_quality: z.number().min(1).max(100).nullish(),\n\n /**\n * Strength of the transformation for img2img (0-1).\n * Lower values keep more of the original image.\n */\n strength: z.number().min(0).max(1).nullish(),\n })\n .passthrough(),\n ),\n);\n\nexport type ReplicateImageProviderOptions = InferSchema<\n typeof replicateImageProviderOptionsSchema\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/version.ts"],"sourcesContent":["import { NoSuchModelError, ProviderV3 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV3 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n ),\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v3' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Flux-2 models support up to 8 input images with input_image, input_image_2, etc.\nconst FLUX_2_MODEL_PATTERN = /^black-forest-labs\\/flux-2-/;\nconst MAX_FLUX_2_INPUT_IMAGES = 8;\n\nexport class ReplicateImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n\n get maxImagesPerCall(): number {\n // Flux-2 models support up to 8 input images\n return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get isFlux2Model(): boolean {\n return FLUX_2_MODEL_PATTERN.test(this.modelId);\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n // Parse provider options\n const replicateOptions = await parseProviderOptions({\n provider: 'replicate',\n providerOptions,\n schema: replicateImageProviderOptionsSchema,\n });\n\n // Handle image input from files\n let imageInputs: Record<string, string> = {};\n if (files != null && files.length > 0) {\n if (this.isFlux2Model) {\n // Flux-2 models use input_image, input_image_2, input_image_3, etc.\n for (\n let i = 0;\n i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES);\n i++\n ) {\n const key = i === 0 ? 'input_image' : `input_image_${i + 1}`;\n imageInputs[key] = convertImageModelFileToDataUri(files[i]);\n }\n if (files.length > MAX_FLUX_2_INPUT_IMAGES) {\n warnings.push({\n type: 'other',\n message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`,\n });\n }\n } else {\n // Other models use single 'image' parameter\n imageInputs = { image: convertImageModelFileToDataUri(files[0]) };\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'This Replicate model only supports a single input image. Additional images are ignored.',\n });\n }\n }\n }\n\n // Handle mask input (not supported by Flux-2 models)\n let maskInput: string | undefined;\n if (mask != null) {\n if (this.isFlux2Model) {\n warnings.push({\n type: 'other',\n message:\n 'Flux-2 models do not support mask input. The mask will be ignored.',\n });\n } else {\n maskInput = convertImageModelFileToDataUri(mask);\n }\n }\n\n // Extract maxWaitTimeInSeconds from provider options and prepare the rest for the request body\n const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions ?? {};\n\n // Build the prefer header based on maxWaitTimeInSeconds:\n // - undefined/null: use default sync wait (prefer: wait)\n // - positive number: use custom wait duration (prefer: wait=N)\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(\n await resolve(this.config.headers),\n headers,\n preferHeader,\n ),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...imageInputs,\n ...(maskInput != null ? { mask: maskInput } : {}),\n ...inputOptions,\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n\n/**\n * Provider options schema for Replicate image generation.\n *\n * Note: Different Replicate models support different parameters.\n * This schema includes common parameters, but you can pass any\n * model-specific parameters through the passthrough.\n */\nexport const replicateImageProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n /**\n * Maximum time in seconds to wait for the prediction to complete in sync mode.\n * By default, Replicate uses sync mode with a 60-second timeout.\n *\n * - When not specified: Uses default 60-second sync wait (`prefer: wait`)\n * - When set to a positive number: Uses that duration (`prefer: wait=N`)\n */\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n\n /**\n * Guidance scale for classifier-free guidance.\n * Higher values make the output more closely match the prompt.\n */\n guidance_scale: z.number().nullish(),\n\n /**\n * Number of denoising steps. More steps = higher quality but slower.\n */\n num_inference_steps: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid in the generation.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Output image format.\n */\n output_format: z.enum(['png', 'jpg', 'webp']).nullish(),\n\n /**\n * Output image quality (1-100). Only applies to jpg and webp.\n */\n output_quality: z.number().min(1).max(100).nullish(),\n\n /**\n * Strength of the transformation for img2img (0-1).\n * Lower values keep more of the original image.\n */\n strength: z.number().min(0).max(1).nullish(),\n })\n .passthrough(),\n ),\n);\n\nexport type ReplicateImageProviderOptions = InferSchema<\n typeof replicateImageProviderOptionsSchema\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/replicate",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@ai-sdk/provider": "3.0.0
|
|
24
|
-
"@ai-sdk/provider-utils": "4.0.
|
|
23
|
+
"@ai-sdk/provider": "3.0.0",
|
|
24
|
+
"@ai-sdk/provider-utils": "4.0.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "20.17.24",
|
|
28
28
|
"tsup": "^8",
|
|
29
29
|
"typescript": "5.8.3",
|
|
30
30
|
"zod": "3.25.76",
|
|
31
|
-
"@ai-sdk/test-server": "1.0.0
|
|
31
|
+
"@ai-sdk/test-server": "1.0.0",
|
|
32
32
|
"@vercel/ai-tsconfig": "0.0.0"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|