Thomas G. Lopes victor HF Staff commited on
Commit
c670717
·
unverified ·
1 Parent(s): 7450ebd

fix tokens (#75)

Browse files

Co-authored-by: Victor Muštar (aider) <[email protected]>

package.json CHANGED
@@ -18,6 +18,7 @@
18
  "@eslint/js": "^9.22.0",
19
  "@floating-ui/dom": "^1.6.13",
20
  "@huggingface/hub": "^1.0.1",
 
21
  "@huggingface/inference": "^3.5.1",
22
  "@huggingface/tasks": "^0.17.1",
23
  "@iconify-json/carbon": "^1.2.8",
 
18
  "@eslint/js": "^9.22.0",
19
  "@floating-ui/dom": "^1.6.13",
20
  "@huggingface/hub": "^1.0.1",
21
+ "@huggingface/transformers": "^3.4.2",
22
  "@huggingface/inference": "^3.5.1",
23
  "@huggingface/tasks": "^0.17.1",
24
  "@iconify-json/carbon": "^1.2.8",
pnpm-lock.yaml CHANGED
@@ -33,6 +33,9 @@ importers:
33
  '@huggingface/tasks':
34
  specifier: ^0.17.1
35
  version: 0.17.1
 
 
 
36
  '@iconify-json/carbon':
37
  specifier: ^1.2.8
38
  version: 1.2.8
@@ -152,6 +155,9 @@ packages:
152
  '@antfu/[email protected]':
153
  resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
154
 
 
 
 
155
  '@esbuild/[email protected]':
156
  resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
157
  engines: {node: '>=12'}
@@ -495,12 +501,19 @@ packages:
495
  resolution: {integrity: sha512-NwTj5MS1eb4HfSp/O1/PyH1bEhTXl/iFh/K+8yYkUTHtK4AHXi/NDsV2LblhACaTEIhpOpYswL9cZx7z3y1tlg==}
496
  engines: {node: '>=18'}
497
 
 
 
 
 
498
  '@huggingface/[email protected]':
499
  resolution: {integrity: sha512-cbnZcpMHKdhURWIplVP4obHxAZcxjyRm0zI7peTPksZN4CtIOMmJC4ZqGEymo0lk+0VNkXD7ULwFJ3JjT/VpkQ==}
500
 
501
  '@huggingface/[email protected]':
502
  resolution: {integrity: sha512-kN5F/pzwxtmdZ0jORumNyegNKOX/ciU5G/DMZcqK3SJShod4C6yfvBRCMn5sEDzanxtU8VjX+7TaInQFmmU8Nw==}
503
 
 
 
 
504
  '@humanfs/[email protected]':
505
  resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
506
  engines: {node: '>=18.18.0'}
@@ -533,6 +546,115 @@ packages:
533
  '@iconify/[email protected]':
534
  resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
535
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
536
  '@jest/[email protected]':
537
  resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
538
  engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -574,6 +696,36 @@ packages:
574
  '@polka/[email protected]':
575
  resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
576
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
577
  '@rollup/[email protected]':
578
  resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==}
579
  engines: {node: '>=16.0.0 || 14 >= 14.17'}
@@ -998,6 +1150,10 @@ packages:
998
  resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
999
  engines: {node: '>= 14.16.0'}
1000
 
 
 
 
 
1001
1002
  resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
1003
  engines: {node: '>=8'}
@@ -1025,6 +1181,13 @@ packages:
1025
1026
  resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1027
 
 
 
 
 
 
 
 
1028
1029
  resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
1030
  engines: {node: '>= 0.8'}
@@ -1107,6 +1270,10 @@ packages:
1107
  engines: {node: '>=0.10'}
1108
  hasBin: true
1109
 
 
 
 
 
1110
1111
  resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
1112
 
@@ -1324,6 +1491,9 @@ packages:
1324
  resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
1325
  engines: {node: '>=16'}
1326
 
 
 
 
1327
1328
  resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
1329
 
@@ -1388,6 +1558,9 @@ packages:
1388
1389
  resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1390
 
 
 
 
1391
1392
  resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1393
  engines: {node: '>=8'}
@@ -1448,6 +1621,9 @@ packages:
1448
  resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==}
1449
  engines: {node: '>=12.0.0'}
1450
 
 
 
 
1451
1452
  resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
1453
  engines: {node: '>= 0.4'}
@@ -1639,6 +1815,9 @@ packages:
1639
  resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
1640
  engines: {node: '>=10'}
1641
 
 
 
 
1642
1643
  resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
1644
 
@@ -1682,6 +1861,19 @@ packages:
1682
1683
  resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1684
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1685
1686
  resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
1687
 
@@ -1729,6 +1921,19 @@ packages:
1729
  resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1730
  engines: {node: '>=6'}
1731
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1732
1733
  resolution: {integrity: sha512-YCuHMMycqtCg1B8G9ezkOF0j8UnBWD3Al/zYaelpuXwU1yhCEv+Y4n9G20MnyGy6cH4GsFwOMrgstQ+bgG1PtA==}
1734
  hasBin: true
@@ -1818,6 +2023,9 @@ packages:
1818
1819
  resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==}
1820
 
 
 
 
1821
1822
  resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
1823
  engines: {node: '>= 10'}
@@ -1928,6 +2136,10 @@ packages:
1928
  resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
1929
  engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1930
 
 
 
 
 
1931
1932
  resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1933
  engines: {node: '>=6'}
@@ -2021,6 +2233,10 @@ packages:
2021
2022
  resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
2023
 
 
 
 
 
2024
2025
  resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2026
  engines: {node: '>=8'}
@@ -2032,6 +2248,9 @@ packages:
2032
2033
  resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2034
 
 
 
 
2035
2036
  resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
2037
  engines: {node: '>=18'}
@@ -2098,6 +2317,10 @@ packages:
2098
  resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
2099
  engines: {node: '>=6'}
2100
 
 
 
 
 
2101
2102
  resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
2103
 
@@ -2331,6 +2554,10 @@ packages:
2331
  resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
2332
  engines: {node: '>=8'}
2333
 
 
 
 
 
2334
2335
  resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
2336
  engines: {node: '>= 6'}
@@ -2367,6 +2594,11 @@ snapshots:
2367
 
2368
  '@antfu/[email protected]': {}
2369
 
 
 
 
 
 
2370
  '@esbuild/[email protected]':
2371
  optional: true
2372
 
@@ -2574,10 +2806,19 @@ snapshots:
2574
  dependencies:
2575
  '@huggingface/tasks': 0.17.1
2576
 
 
 
2577
  '@huggingface/[email protected]': {}
2578
 
2579
  '@huggingface/[email protected]': {}
2580
 
 
 
 
 
 
 
 
2581
  '@humanfs/[email protected]': {}
2582
 
2583
  '@humanfs/[email protected]':
@@ -2614,6 +2855,85 @@ snapshots:
2614
  transitivePeerDependencies:
2615
  - supports-color
2616
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2617
  '@jest/[email protected]':
2618
  dependencies:
2619
  '@sinclair/typebox': 0.27.8
@@ -2651,6 +2971,29 @@ snapshots:
2651
 
2652
  '@polka/[email protected]': {}
2653
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2654
2655
  dependencies:
2656
  '@rollup/pluginutils': 5.1.4([email protected])
@@ -3085,6 +3428,8 @@ snapshots:
3085
  dependencies:
3086
  readdirp: 4.1.2
3087
 
 
 
3088
3089
  dependencies:
3090
  restore-cursor: 3.1.0
@@ -3103,6 +3448,16 @@ snapshots:
3103
 
3104
3105
 
 
 
 
 
 
 
 
 
 
 
3106
3107
  dependencies:
3108
  delayed-stream: 1.0.0
@@ -3161,6 +3516,8 @@ snapshots:
3161
 
3162
3163
 
 
 
3164
3165
 
3166
@@ -3436,6 +3793,8 @@ snapshots:
3436
  flatted: 3.3.3
3437
  keyv: 4.5.4
3438
 
 
 
3439
3440
 
3441
@@ -3501,6 +3860,8 @@ snapshots:
3501
 
3502
3503
 
 
 
3504
3505
 
3506
@@ -3560,6 +3921,8 @@ snapshots:
3560
  through: 2.3.8
3561
  wrap-ansi: 6.2.0
3562
 
 
 
3563
3564
  dependencies:
3565
  hasown: 2.0.2
@@ -3716,6 +4079,8 @@ snapshots:
3716
  chalk: 4.1.2
3717
  is-unicode-supported: 0.1.0
3718
 
 
 
3719
3720
  dependencies:
3721
  '@jridgewell/sourcemap-codec': 1.5.0
@@ -3756,6 +4121,14 @@ snapshots:
3756
 
3757
3758
 
 
 
 
 
 
 
 
 
3759
3760
  dependencies:
3761
  acorn: 8.14.0
@@ -3787,6 +4160,24 @@ snapshots:
3787
  dependencies:
3788
  mimic-fn: 2.1.0
3789
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3790
3791
  dependencies:
3792
  '@types/node': 18.19.84
@@ -3880,6 +4271,8 @@ snapshots:
3880
  exsolve: 1.0.4
3881
  pathe: 2.0.3
3882
 
 
 
3883
3884
  dependencies:
3885
  lilconfig: 2.1.0
@@ -3931,6 +4324,21 @@ snapshots:
3931
  ansi-styles: 5.2.0
3932
  react-is: 18.3.1
3933
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3934
3935
 
3936
@@ -4028,6 +4436,32 @@ snapshots:
4028
 
4029
4030
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4031
4032
  dependencies:
4033
  shebang-regex: 3.0.0
@@ -4036,6 +4470,10 @@ snapshots:
4036
 
4037
4038
 
 
 
 
 
4039
4040
  dependencies:
4041
  '@polka/url': 1.0.0-next.28
@@ -4117,6 +4555,15 @@ snapshots:
4117
 
4118
4119
 
 
 
 
 
 
 
 
 
 
4120
4121
 
4122
@@ -4279,6 +4726,8 @@ snapshots:
4279
  string-width: 4.2.3
4280
  strip-ansi: 6.0.1
4281
 
 
 
4282
4283
 
4284
 
33
  '@huggingface/tasks':
34
  specifier: ^0.17.1
35
  version: 0.17.1
36
+ '@huggingface/transformers':
37
+ specifier: ^3.4.2
38
+ version: 3.4.2
39
  '@iconify-json/carbon':
40
  specifier: ^1.2.8
41
  version: 1.2.8
 
155
  '@antfu/[email protected]':
156
  resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
157
 
158
+ '@emnapi/[email protected]':
159
+ resolution: {integrity: sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==}
160
+
161
  '@esbuild/[email protected]':
162
  resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
163
  engines: {node: '>=12'}
 
501
  resolution: {integrity: sha512-NwTj5MS1eb4HfSp/O1/PyH1bEhTXl/iFh/K+8yYkUTHtK4AHXi/NDsV2LblhACaTEIhpOpYswL9cZx7z3y1tlg==}
502
  engines: {node: '>=18'}
503
 
504
+ '@huggingface/[email protected]':
505
+ resolution: {integrity: sha512-vQQr2JyWvVFba3Lj9es4q9vCl1sAc74fdgnEMoX8qHrXtswap9ge9uO3ONDzQB0cQ0PUyaKY2N6HaVbTBvSXvw==}
506
+ engines: {node: '>=18'}
507
+
508
  '@huggingface/[email protected]':
509
  resolution: {integrity: sha512-cbnZcpMHKdhURWIplVP4obHxAZcxjyRm0zI7peTPksZN4CtIOMmJC4ZqGEymo0lk+0VNkXD7ULwFJ3JjT/VpkQ==}
510
 
511
  '@huggingface/[email protected]':
512
  resolution: {integrity: sha512-kN5F/pzwxtmdZ0jORumNyegNKOX/ciU5G/DMZcqK3SJShod4C6yfvBRCMn5sEDzanxtU8VjX+7TaInQFmmU8Nw==}
513
 
514
+ '@huggingface/[email protected]':
515
+ resolution: {integrity: sha512-B7K7SCkpqjlfhrV0z18icmnCqgdU2zq+gI3ttBRQ8xl6mIzfxeeKht/vCa8y7pbewY/hJmirKdQClpw0IUaSaw==}
516
+
517
  '@humanfs/[email protected]':
518
  resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
519
  engines: {node: '>=18.18.0'}
 
546
  '@iconify/[email protected]':
547
  resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
548
 
549
+ '@img/[email protected]':
550
+ resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
551
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
552
+ cpu: [arm64]
553
+ os: [darwin]
554
+
555
+ '@img/[email protected]':
556
+ resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
557
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
558
+ cpu: [x64]
559
+ os: [darwin]
560
+
561
+ '@img/[email protected]':
562
+ resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
563
+ cpu: [arm64]
564
+ os: [darwin]
565
+
566
+ '@img/[email protected]':
567
+ resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
568
+ cpu: [x64]
569
+ os: [darwin]
570
+
571
+ '@img/[email protected]':
572
+ resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
573
+ cpu: [arm64]
574
+ os: [linux]
575
+
576
+ '@img/[email protected]':
577
+ resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
578
+ cpu: [arm]
579
+ os: [linux]
580
+
581
+ '@img/[email protected]':
582
+ resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
583
+ cpu: [s390x]
584
+ os: [linux]
585
+
586
+ '@img/[email protected]':
587
+ resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
588
+ cpu: [x64]
589
+ os: [linux]
590
+
591
+ '@img/[email protected]':
592
+ resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
593
+ cpu: [arm64]
594
+ os: [linux]
595
+
596
+ '@img/[email protected]':
597
+ resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
598
+ cpu: [x64]
599
+ os: [linux]
600
+
601
+ '@img/[email protected]':
602
+ resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
603
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
604
+ cpu: [arm64]
605
+ os: [linux]
606
+
607
+ '@img/[email protected]':
608
+ resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
609
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
610
+ cpu: [arm]
611
+ os: [linux]
612
+
613
+ '@img/[email protected]':
614
+ resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
615
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
616
+ cpu: [s390x]
617
+ os: [linux]
618
+
619
+ '@img/[email protected]':
620
+ resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
621
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
622
+ cpu: [x64]
623
+ os: [linux]
624
+
625
+ '@img/[email protected]':
626
+ resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
627
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
628
+ cpu: [arm64]
629
+ os: [linux]
630
+
631
+ '@img/[email protected]':
632
+ resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
633
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
634
+ cpu: [x64]
635
+ os: [linux]
636
+
637
+ '@img/[email protected]':
638
+ resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
639
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
640
+ cpu: [wasm32]
641
+
642
+ '@img/[email protected]':
643
+ resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
644
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
645
+ cpu: [ia32]
646
+ os: [win32]
647
+
648
+ '@img/[email protected]':
649
+ resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
650
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
651
+ cpu: [x64]
652
+ os: [win32]
653
+
654
+ '@isaacs/[email protected]':
655
+ resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
656
+ engines: {node: '>=18.0.0'}
657
+
658
  '@jest/[email protected]':
659
  resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
660
  engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
 
696
  '@polka/[email protected]':
697
  resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
698
 
699
+ '@protobufjs/[email protected]':
700
+ resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
701
+
702
+ '@protobufjs/[email protected]':
703
+ resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
704
+
705
+ '@protobufjs/[email protected]':
706
+ resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
707
+
708
+ '@protobufjs/[email protected]':
709
+ resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
710
+
711
+ '@protobufjs/[email protected]':
712
+ resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
713
+
714
+ '@protobufjs/[email protected]':
715
+ resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
716
+
717
+ '@protobufjs/[email protected]':
718
+ resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
719
+
720
+ '@protobufjs/[email protected]':
721
+ resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
722
+
723
+ '@protobufjs/[email protected]':
724
+ resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
725
+
726
+ '@protobufjs/[email protected]':
727
+ resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
728
+
729
  '@rollup/[email protected]':
730
  resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==}
731
  engines: {node: '>=16.0.0 || 14 >= 14.17'}
 
1150
  resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
1151
  engines: {node: '>= 14.16.0'}
1152
 
1153
1154
+ resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
1155
+ engines: {node: '>=18'}
1156
+
1157
1158
  resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
1159
  engines: {node: '>=8'}
 
1181
1182
  resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1183
 
1184
1185
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
1186
+
1187
1188
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
1189
+ engines: {node: '>=12.5.0'}
1190
+
1191
1192
  resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
1193
  engines: {node: '>= 0.8'}
 
1270
  engines: {node: '>=0.10'}
1271
  hasBin: true
1272
 
1273
1274
+ resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
1275
+ engines: {node: '>=8'}
1276
+
1277
1278
  resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
1279
 
 
1491
  resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
1492
  engines: {node: '>=16'}
1493
 
1494
1495
+ resolution: {integrity: sha512-7JlN9ZvLDG1McO3kbX0k4v+SUAg48L1rIwEvN6ZQl/eCtgJz9UylTMzE9wrmYrcorgxm3CX/3T/w5VAub99UUw==}
1496
+
1497
1498
  resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
1499
 
 
1558
1559
  resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1560
 
1561
1562
+ resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==}
1563
+
1564
1565
  resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1566
  engines: {node: '>=8'}
 
1621
  resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==}
1622
  engines: {node: '>=12.0.0'}
1623
 
1624
1625
+ resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
1626
+
1627
1628
  resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
1629
  engines: {node: '>= 0.4'}
 
1815
  resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
1816
  engines: {node: '>=10'}
1817
 
1818
1819
+ resolution: {integrity: sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==}
1820
+
1821
1822
  resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
1823
 
 
1861
1862
  resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1863
 
1864
1865
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1866
+ engines: {node: '>=16 || 14 >=14.17'}
1867
+
1868
1869
+ resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==}
1870
+ engines: {node: '>= 18'}
1871
+
1872
1873
+ resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
1874
+ engines: {node: '>=10'}
1875
+ hasBin: true
1876
+
1877
1878
  resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
1879
 
 
1921
  resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1922
  engines: {node: '>=6'}
1923
 
1924
1925
+ resolution: {integrity: sha512-YiU0s0IzYYC+gWvqD1HzLc46Du1sXpSiwzKb63PACIJr6LfL27VsXSXQvt68EzD3V0D5Bc0vyJTjmMxp0ylQiw==}
1926
+
1927
1928
+ resolution: {integrity: sha512-NfIQnW4lIk/8LnhnYqknYPeet0U0+AADgKQRlKex36QrNoVSCY+aNaX6wyy2VzQ4CNWxsYh0E203ajRD/zxn0g==}
1929
+
1930
1931
+ resolution: {integrity: sha512-di/I4HDXRw+FLgq+TyHmQEDd3cEp9iFFZm0r4uJ1Wd7b/WE1VXtKWo8yemex347c6GNF/3Pv86ZfPhIWxORr0w==}
1932
+ os: [win32, darwin, linux]
1933
+
1934
1935
+ resolution: {integrity: sha512-YwqS9Qqx2eKFXIx+HQloqRUG5/STHPUuNk8wn+qVVmwXBIfNdXX0/Lm7wgo5CnC2k+yqZmjDV5V1dZi4PeSPGQ==}
1936
+
1937
1938
  resolution: {integrity: sha512-YCuHMMycqtCg1B8G9ezkOF0j8UnBWD3Al/zYaelpuXwU1yhCEv+Y4n9G20MnyGy6cH4GsFwOMrgstQ+bgG1PtA==}
1939
  hasBin: true
 
2023
2024
  resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==}
2025
 
2026
2027
+ resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
2028
+
2029
2030
  resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
2031
  engines: {node: '>= 10'}
 
2136
  resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
2137
  engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2138
 
2139
2140
+ resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==}
2141
+ engines: {node: '>=12.0.0'}
2142
+
2143
2144
  resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
2145
  engines: {node: '>=6'}
 
2233
2234
  resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
2235
 
2236
2237
+ resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
2238
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
2239
+
2240
2241
  resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2242
  engines: {node: '>=8'}
 
2248
2249
  resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2250
 
2251
2252
+ resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
2253
+
2254
2255
  resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
2256
  engines: {node: '>=18'}
 
2317
  resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
2318
  engines: {node: '>=6'}
2319
 
2320
2321
+ resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
2322
+ engines: {node: '>=18'}
2323
+
2324
2325
  resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
2326
 
 
2554
  resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
2555
  engines: {node: '>=8'}
2556
 
2557
2558
+ resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
2559
+ engines: {node: '>=18'}
2560
+
2561
2562
  resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
2563
  engines: {node: '>= 6'}
 
2594
 
2595
  '@antfu/[email protected]': {}
2596
 
2597
+ '@emnapi/[email protected]':
2598
+ dependencies:
2599
+ tslib: 2.8.1
2600
+ optional: true
2601
+
2602
  '@esbuild/[email protected]':
2603
  optional: true
2604
 
 
2806
  dependencies:
2807
  '@huggingface/tasks': 0.17.1
2808
 
2809
+ '@huggingface/[email protected]': {}
2810
+
2811
  '@huggingface/[email protected]': {}
2812
 
2813
  '@huggingface/[email protected]': {}
2814
 
2815
+ '@huggingface/[email protected]':
2816
+ dependencies:
2817
+ '@huggingface/jinja': 0.3.3
2818
+ onnxruntime-node: 1.20.1
2819
+ onnxruntime-web: 1.22.0-dev.20250306-ccf8fdd9ea
2820
+ sharp: 0.33.5
2821
+
2822
  '@humanfs/[email protected]': {}
2823
 
2824
  '@humanfs/[email protected]':
 
2855
  transitivePeerDependencies:
2856
  - supports-color
2857
 
2858
+ '@img/[email protected]':
2859
+ optionalDependencies:
2860
+ '@img/sharp-libvips-darwin-arm64': 1.0.4
2861
+ optional: true
2862
+
2863
+ '@img/[email protected]':
2864
+ optionalDependencies:
2865
+ '@img/sharp-libvips-darwin-x64': 1.0.4
2866
+ optional: true
2867
+
2868
+ '@img/[email protected]':
2869
+ optional: true
2870
+
2871
+ '@img/[email protected]':
2872
+ optional: true
2873
+
2874
+ '@img/[email protected]':
2875
+ optional: true
2876
+
2877
+ '@img/[email protected]':
2878
+ optional: true
2879
+
2880
+ '@img/[email protected]':
2881
+ optional: true
2882
+
2883
+ '@img/[email protected]':
2884
+ optional: true
2885
+
2886
+ '@img/[email protected]':
2887
+ optional: true
2888
+
2889
+ '@img/[email protected]':
2890
+ optional: true
2891
+
2892
+ '@img/[email protected]':
2893
+ optionalDependencies:
2894
+ '@img/sharp-libvips-linux-arm64': 1.0.4
2895
+ optional: true
2896
+
2897
+ '@img/[email protected]':
2898
+ optionalDependencies:
2899
+ '@img/sharp-libvips-linux-arm': 1.0.5
2900
+ optional: true
2901
+
2902
+ '@img/[email protected]':
2903
+ optionalDependencies:
2904
+ '@img/sharp-libvips-linux-s390x': 1.0.4
2905
+ optional: true
2906
+
2907
+ '@img/[email protected]':
2908
+ optionalDependencies:
2909
+ '@img/sharp-libvips-linux-x64': 1.0.4
2910
+ optional: true
2911
+
2912
+ '@img/[email protected]':
2913
+ optionalDependencies:
2914
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
2915
+ optional: true
2916
+
2917
+ '@img/[email protected]':
2918
+ optionalDependencies:
2919
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.4
2920
+ optional: true
2921
+
2922
+ '@img/[email protected]':
2923
+ dependencies:
2924
+ '@emnapi/runtime': 1.4.0
2925
+ optional: true
2926
+
2927
+ '@img/[email protected]':
2928
+ optional: true
2929
+
2930
+ '@img/[email protected]':
2931
+ optional: true
2932
+
2933
+ '@isaacs/[email protected]':
2934
+ dependencies:
2935
+ minipass: 7.1.2
2936
+
2937
  '@jest/[email protected]':
2938
  dependencies:
2939
  '@sinclair/typebox': 0.27.8
 
2971
 
2972
  '@polka/[email protected]': {}
2973
 
2974
+ '@protobufjs/[email protected]': {}
2975
+
2976
+ '@protobufjs/[email protected]': {}
2977
+
2978
+ '@protobufjs/[email protected]': {}
2979
+
2980
+ '@protobufjs/[email protected]': {}
2981
+
2982
+ '@protobufjs/[email protected]':
2983
+ dependencies:
2984
+ '@protobufjs/aspromise': 1.1.2
2985
+ '@protobufjs/inquire': 1.1.0
2986
+
2987
+ '@protobufjs/[email protected]': {}
2988
+
2989
+ '@protobufjs/[email protected]': {}
2990
+
2991
+ '@protobufjs/[email protected]': {}
2992
+
2993
+ '@protobufjs/[email protected]': {}
2994
+
2995
+ '@protobufjs/[email protected]': {}
2996
+
2997
2998
  dependencies:
2999
  '@rollup/pluginutils': 5.1.4([email protected])
 
3428
  dependencies:
3429
  readdirp: 4.1.2
3430
 
3431
3432
+
3433
3434
  dependencies:
3435
  restore-cursor: 3.1.0
 
3448
 
3449
3450
 
3451
3452
+ dependencies:
3453
+ color-name: 1.1.4
3454
+ simple-swizzle: 0.2.2
3455
+
3456
3457
+ dependencies:
3458
+ color-convert: 2.0.1
3459
+ color-string: 1.9.1
3460
+
3461
3462
  dependencies:
3463
  delayed-stream: 1.0.0
 
3516
 
3517
3518
 
3519
3520
+
3521
3522
 
3523
 
3793
  flatted: 3.3.3
3794
  keyv: 4.5.4
3795
 
3796
3797
+
3798
3799
 
3800
 
3860
 
3861
3862
 
3863
3864
+
3865
3866
 
3867
 
3921
  through: 2.3.8
3922
  wrap-ansi: 6.2.0
3923
 
3924
3925
+
3926
3927
  dependencies:
3928
  hasown: 2.0.2
 
4079
  chalk: 4.1.2
4080
  is-unicode-supported: 0.1.0
4081
 
4082
4083
+
4084
4085
  dependencies:
4086
  '@jridgewell/sourcemap-codec': 1.5.0
 
4121
 
4122
4123
 
4124
4125
+
4126
4127
+ dependencies:
4128
+ minipass: 7.1.2
4129
+
4130
4131
+
4132
4133
  dependencies:
4134
  acorn: 8.14.0
 
4160
  dependencies:
4161
  mimic-fn: 2.1.0
4162
 
4163
4164
+
4165
4166
+
4167
4168
+ dependencies:
4169
+ onnxruntime-common: 1.20.1
4170
+ tar: 7.4.3
4171
+
4172
4173
+ dependencies:
4174
+ flatbuffers: 25.2.10
4175
+ guid-typescript: 1.0.9
4176
+ long: 5.3.1
4177
+ onnxruntime-common: 1.22.0-dev.20250306-aafa8d170a
4178
+ platform: 1.3.6
4179
+ protobufjs: 7.4.0
4180
+
4181
4182
  dependencies:
4183
  '@types/node': 18.19.84
 
4271
  exsolve: 1.0.4
4272
  pathe: 2.0.3
4273
 
4274
4275
+
4276
4277
  dependencies:
4278
  lilconfig: 2.1.0
 
4324
  ansi-styles: 5.2.0
4325
  react-is: 18.3.1
4326
 
4327
4328
+ dependencies:
4329
+ '@protobufjs/aspromise': 1.1.2
4330
+ '@protobufjs/base64': 1.1.2
4331
+ '@protobufjs/codegen': 2.0.4
4332
+ '@protobufjs/eventemitter': 1.1.0
4333
+ '@protobufjs/fetch': 1.1.0
4334
+ '@protobufjs/float': 1.0.2
4335
+ '@protobufjs/inquire': 1.1.0
4336
+ '@protobufjs/path': 1.1.2
4337
+ '@protobufjs/pool': 1.1.0
4338
+ '@protobufjs/utf8': 1.1.0
4339
+ '@types/node': 18.19.84
4340
+ long: 5.3.1
4341
+
4342
4343
 
4344
 
4436
 
4437
4438
 
4439
4440
+ dependencies:
4441
+ color: 4.2.3
4442
+ detect-libc: 2.0.3
4443
+ semver: 7.7.1
4444
+ optionalDependencies:
4445
+ '@img/sharp-darwin-arm64': 0.33.5
4446
+ '@img/sharp-darwin-x64': 0.33.5
4447
+ '@img/sharp-libvips-darwin-arm64': 1.0.4
4448
+ '@img/sharp-libvips-darwin-x64': 1.0.4
4449
+ '@img/sharp-libvips-linux-arm': 1.0.5
4450
+ '@img/sharp-libvips-linux-arm64': 1.0.4
4451
+ '@img/sharp-libvips-linux-s390x': 1.0.4
4452
+ '@img/sharp-libvips-linux-x64': 1.0.4
4453
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
4454
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.4
4455
+ '@img/sharp-linux-arm': 0.33.5
4456
+ '@img/sharp-linux-arm64': 0.33.5
4457
+ '@img/sharp-linux-s390x': 0.33.5
4458
+ '@img/sharp-linux-x64': 0.33.5
4459
+ '@img/sharp-linuxmusl-arm64': 0.33.5
4460
+ '@img/sharp-linuxmusl-x64': 0.33.5
4461
+ '@img/sharp-wasm32': 0.33.5
4462
+ '@img/sharp-win32-ia32': 0.33.5
4463
+ '@img/sharp-win32-x64': 0.33.5
4464
+
4465
4466
  dependencies:
4467
  shebang-regex: 3.0.0
 
4470
 
4471
4472
 
4473
4474
+ dependencies:
4475
+ is-arrayish: 0.3.2
4476
+
4477
4478
  dependencies:
4479
  '@polka/url': 1.0.0-next.28
 
4555
 
4556
4557
 
4558
4559
+ dependencies:
4560
+ '@isaacs/fs-minipass': 4.0.1
4561
+ chownr: 3.0.0
4562
+ minipass: 7.1.2
4563
+ minizlib: 3.0.2
4564
+ mkdirp: 3.0.1
4565
+ yallist: 5.0.0
4566
+
4567
4568
 
4569
 
4726
  string-width: 4.2.3
4727
  strip-ansi: 6.0.1
4728
 
4729
4730
+
4731
4732
 
4733
src/lib/components/inference-playground/conversation-header.svelte CHANGED
@@ -1,5 +1,5 @@
1
  <script lang="ts">
2
- import { isConversationWithHFModel, type Conversation, type ModelWithTokenizer } from "$lib/types.js";
3
 
4
  import { createEventDispatcher } from "svelte";
5
 
@@ -21,7 +21,7 @@
21
 
22
  let modelSelectorOpen = $state(false);
23
 
24
- function changeModel(newModelId: ModelWithTokenizer["id"]) {
25
  const model = models.all.find(m => m.id === newModelId);
26
  if (!model) {
27
  return;
 
1
  <script lang="ts">
2
+ import { isConversationWithHFModel, type Conversation, type Model } from "$lib/types.js";
3
 
4
  import { createEventDispatcher } from "svelte";
5
 
 
21
 
22
  let modelSelectorOpen = $state(false);
23
 
24
+ function changeModel(newModelId: Model["id"]) {
25
  const model = models.all.find(m => m.id === newModelId);
26
  if (!model) {
27
  return;
src/lib/components/inference-playground/model-selector-modal.svelte CHANGED
@@ -1,7 +1,7 @@
1
  <script lang="ts">
2
  import { autofocus } from "$lib/actions/autofocus.js";
3
  import { models } from "$lib/state/models.svelte.js";
4
- import type { Conversation, CustomModel, ModelWithTokenizer } from "$lib/types.js";
5
  import { noop } from "$lib/utils/noop.js";
6
  import fuzzysearch from "$lib/utils/search.js";
7
  import { sleep } from "$lib/utils/sleep.js";
@@ -92,7 +92,7 @@
92
  />
93
  </div>
94
  <div class="max-h-[300px] overflow-x-hidden overflow-y-auto" {...combobox.content} popover={undefined}>
95
- {#snippet modelEntry(model: ModelWithTokenizer | CustomModel, trending?: boolean)}
96
  {@const [nameSpace, modelName] = model.id.split("/")}
97
  <button
98
  class="flex w-full cursor-pointer items-center px-2 py-1.5 text-sm
 
1
  <script lang="ts">
2
  import { autofocus } from "$lib/actions/autofocus.js";
3
  import { models } from "$lib/state/models.svelte.js";
4
+ import type { Conversation, CustomModel, Model } from "$lib/types.js";
5
  import { noop } from "$lib/utils/noop.js";
6
  import fuzzysearch from "$lib/utils/search.js";
7
  import { sleep } from "$lib/utils/sleep.js";
 
92
  />
93
  </div>
94
  <div class="max-h-[300px] overflow-x-hidden overflow-y-auto" {...combobox.content} popover={undefined}>
95
+ {#snippet modelEntry(model: Model | CustomModel, trending?: boolean)}
96
  {@const [nameSpace, modelName] = model.id.split("/")}
97
  <button
98
  class="flex w-full cursor-pointer items-center px-2 py-1.5 text-sm
src/lib/components/inference-playground/model-selector.svelte CHANGED
@@ -1,7 +1,6 @@
1
  <script lang="ts">
2
- import { isConversationWithHFModel, isCustomModel, type Conversation, type ModelWithTokenizer } from "$lib/types.js";
3
-
4
  import { models } from "$lib/state/models.svelte.js";
 
5
  import IconCaret from "~icons/carbon/chevron-down";
6
  import Avatar from "../avatar.svelte";
7
  import ModelSelectorModal from "./model-selector-modal.svelte";
@@ -17,7 +16,7 @@
17
  let showModelPickerModal = $state(false);
18
 
19
  // Model
20
- function changeModel(modelId: ModelWithTokenizer["id"]) {
21
  const model = models.all.find(m => m.id === modelId);
22
  if (!model) {
23
  return;
 
1
  <script lang="ts">
 
 
2
  import { models } from "$lib/state/models.svelte.js";
3
+ import { isConversationWithHFModel, isCustomModel, type Conversation, type Model } from "$lib/types.js";
4
  import IconCaret from "~icons/carbon/chevron-down";
5
  import Avatar from "../avatar.svelte";
6
  import ModelSelectorModal from "./model-selector-modal.svelte";
 
16
  let showModelPickerModal = $state(false);
17
 
18
  // Model
19
+ function changeModel(modelId: Model["id"]) {
20
  const model = models.all.find(m => m.id === modelId);
21
  if (!model) {
22
  return;
src/lib/components/inference-playground/playground.svelte CHANGED
@@ -1,13 +1,14 @@
1
  <script lang="ts">
2
- import { type ConversationMessage, type ModelWithTokenizer, type Project } from "$lib/types.js";
3
 
4
- import { handleNonStreamingResponse, handleStreamingResponse, isSystemPromptSupported } from "./utils.js";
5
 
6
  import { AbortManager } from "$lib/spells/abort-manager.svelte.js";
7
  import { models } from "$lib/state/models.svelte.js";
8
  import { session } from "$lib/state/session.svelte.js";
9
  import { token } from "$lib/state/token.svelte.js";
10
  import { isMac } from "$lib/utils/platform.js";
 
11
  import typia from "typia";
12
  import IconExternal from "~icons/carbon/arrow-up-right";
13
  import IconCode from "~icons/carbon/code";
@@ -48,6 +49,15 @@
48
  | [GenerationStatistics, GenerationStatistics]
49
  );
50
 
 
 
 
 
 
 
 
 
 
51
  const systemPromptSupported = $derived(
52
  session.project.conversations.some(conversation => isSystemPromptSupported(conversation.model))
53
  );
@@ -83,9 +93,6 @@
83
  conversation.messages = [...conversation.messages, streamingMessage];
84
  addedMessage = true;
85
  }
86
- // session.project.conversations[conversationIdx] = conversation;
87
- const c = generationStats[conversationIdx];
88
- if (c) c.generatedTokensCount += 1;
89
  },
90
  abortManager.createController()
91
  );
@@ -176,7 +183,7 @@
176
  }
177
  }
178
 
179
- function addCompareModel(modelId: ModelWithTokenizer["id"]) {
180
  const model = models.all.find(m => m.id === modelId);
181
  if (!model || session.project.conversations.length === 2) {
182
  return;
 
1
  <script lang="ts">
2
+ import { type ConversationMessage, type Model, type Project } from "$lib/types.js";
3
 
4
+ import { getTokens, handleNonStreamingResponse, handleStreamingResponse, isSystemPromptSupported } from "./utils.js";
5
 
6
  import { AbortManager } from "$lib/spells/abort-manager.svelte.js";
7
  import { models } from "$lib/state/models.svelte.js";
8
  import { session } from "$lib/state/session.svelte.js";
9
  import { token } from "$lib/state/token.svelte.js";
10
  import { isMac } from "$lib/utils/platform.js";
11
+ import { watch } from "runed";
12
  import typia from "typia";
13
  import IconExternal from "~icons/carbon/arrow-up-right";
14
  import IconCode from "~icons/carbon/code";
 
49
  | [GenerationStatistics, GenerationStatistics]
50
  );
51
 
52
+ watch(
53
+ () => $state.snapshot(session.project),
54
+ () => {
55
+ session.project.conversations.forEach(async (c, i) => {
56
+ generationStats[i] = { latency: 0, ...generationStats[i], generatedTokensCount: await getTokens(c) };
57
+ });
58
+ }
59
+ );
60
+
61
  const systemPromptSupported = $derived(
62
  session.project.conversations.some(conversation => isSystemPromptSupported(conversation.model))
63
  );
 
93
  conversation.messages = [...conversation.messages, streamingMessage];
94
  addedMessage = true;
95
  }
 
 
 
96
  },
97
  abortManager.createController()
98
  );
 
183
  }
184
  }
185
 
186
+ function addCompareModel(modelId: Model["id"]) {
187
  const model = models.all.find(m => m.id === modelId);
188
  if (!model || session.project.conversations.length === 2) {
189
  return;
src/lib/components/inference-playground/utils.ts CHANGED
@@ -1,9 +1,10 @@
 
1
  import {
2
  isCustomModel,
3
  type Conversation,
4
  type ConversationMessage,
5
  type CustomModel,
6
- type ModelWithTokenizer,
7
  } from "$lib/types.js";
8
  import type { ChatCompletionInputMessage, InferenceSnippet } from "@huggingface/tasks";
9
  import { type ChatCompletionOutputMessage } from "@huggingface/tasks";
@@ -174,10 +175,9 @@ export async function handleNonStreamingResponse(
174
  throw new Error("No response from the model");
175
  }
176
 
177
- export function isSystemPromptSupported(model: ModelWithTokenizer | CustomModel) {
178
  if (isCustomModel(model)) return true; // OpenAI-compatible models support system messages
179
- if ("tokenizerConfig" in model) return model?.tokenizerConfig?.chat_template?.includes("system");
180
- return false;
181
  }
182
 
183
  export const defaultSystemMessage: { [key: string]: string } = {
@@ -251,7 +251,7 @@ const GET_SNIPPET_FN = {
251
  export type GetInferenceSnippetReturn = (InferenceSnippet & { language: InferenceSnippetLanguage })[];
252
 
253
  export function getInferenceSnippet(
254
- model: ModelWithTokenizer,
255
  provider: InferenceProvider,
256
  language: InferenceSnippetLanguage,
257
  accessToken: string,
@@ -277,10 +277,45 @@ export function getInferenceSnippet(
277
  * - If language is defined, the function checks if in an inference snippet is available for that specific language
278
  */
279
  export function hasInferenceSnippet(
280
- model: ModelWithTokenizer,
281
  provider: InferenceProvider,
282
  language: InferenceSnippetLanguage
283
  ): boolean {
284
  if (isCustomModel(model)) return false;
285
  return getInferenceSnippet(model, provider, language, "").length > 0;
286
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { AutoTokenizer, PreTrainedTokenizer } from "@huggingface/transformers";
2
  import {
3
  isCustomModel,
4
  type Conversation,
5
  type ConversationMessage,
6
  type CustomModel,
7
+ type Model,
8
  } from "$lib/types.js";
9
  import type { ChatCompletionInputMessage, InferenceSnippet } from "@huggingface/tasks";
10
  import { type ChatCompletionOutputMessage } from "@huggingface/tasks";
 
175
  throw new Error("No response from the model");
176
  }
177
 
178
+ export function isSystemPromptSupported(model: Model | CustomModel) {
179
  if (isCustomModel(model)) return true; // OpenAI-compatible models support system messages
180
+ return model?.config.tokenizer_config?.chat_template?.includes("system");
 
181
  }
182
 
183
  export const defaultSystemMessage: { [key: string]: string } = {
 
251
  export type GetInferenceSnippetReturn = (InferenceSnippet & { language: InferenceSnippetLanguage })[];
252
 
253
  export function getInferenceSnippet(
254
+ model: Model,
255
  provider: InferenceProvider,
256
  language: InferenceSnippetLanguage,
257
  accessToken: string,
 
277
  * - If language is defined, the function checks if in an inference snippet is available for that specific language
278
  */
279
  export function hasInferenceSnippet(
280
+ model: Model,
281
  provider: InferenceProvider,
282
  language: InferenceSnippetLanguage
283
  ): boolean {
284
  if (isCustomModel(model)) return false;
285
  return getInferenceSnippet(model, provider, language, "").length > 0;
286
  }
287
+
288
+ const tokenizers = new Map<string, PreTrainedTokenizer>();
289
+
290
+ export async function getTokenizer(model: Model) {
291
+ if (tokenizers.has(model.id)) return tokenizers.get(model.id)!;
292
+ const tokenizer = await AutoTokenizer.from_pretrained(model.id);
293
+ tokenizers.set(model.id, tokenizer);
294
+ return tokenizer;
295
+ }
296
+
297
+ export async function getTokens(conversation: Conversation): Promise<number> {
298
+ const model = conversation.model;
299
+ if (isCustomModel(model)) return 0;
300
+ const tokenizer = await getTokenizer(model);
301
+
302
+ // This is a simplified version - you might need to adjust based on your exact needs
303
+ let formattedText = "";
304
+
305
+ conversation.messages.forEach((message, index) => {
306
+ let content = `<|start_header_id|>${message.role}<|end_header_id|>\n\n${message.content?.trim()}<|eot_id|>`;
307
+
308
+ // Add BOS token to the first message
309
+ if (index === 0) {
310
+ content = "<|begin_of_text|>" + content;
311
+ }
312
+
313
+ formattedText += content;
314
+ });
315
+
316
+ // Encode the text to get tokens
317
+ const encodedInput = tokenizer.encode(formattedText);
318
+
319
+ // Return the number of tokens
320
+ return encodedInput.length;
321
+ }
src/lib/state/models.svelte.ts CHANGED
@@ -1,6 +1,6 @@
1
  import { page } from "$app/state";
2
  import { createInit } from "$lib/spells/create-init.svelte";
3
- import type { CustomModel, ModelWithTokenizer } from "$lib/types.js";
4
  import { safeParse } from "$lib/utils/json.js";
5
  import typia from "typia";
6
  import { session } from "./session.svelte";
@@ -9,7 +9,7 @@ import { randomPick } from "$lib/utils/array.js";
9
  const LOCAL_STORAGE_KEY = "hf_inference_playground_custom_models";
10
 
11
  class Models {
12
- remote = $derived(page.data.models as ModelWithTokenizer[]);
13
  trending = $derived(this.remote.toSorted((a, b) => b.trendingScore - a.trendingScore).slice(0, 5));
14
  nonTrending = $derived(this.remote.filter(m => !this.trending.includes(m)));
15
 
 
1
  import { page } from "$app/state";
2
  import { createInit } from "$lib/spells/create-init.svelte";
3
+ import type { CustomModel, Model } from "$lib/types.js";
4
  import { safeParse } from "$lib/utils/json.js";
5
  import typia from "typia";
6
  import { session } from "./session.svelte";
 
9
  const LOCAL_STORAGE_KEY = "hf_inference_playground_custom_models";
10
 
11
  class Models {
12
+ remote = $derived(page.data.models as Model[]);
13
  trending = $derived(this.remote.toSorted((a, b) => b.trendingScore - a.trendingScore).slice(0, 5));
14
  nonTrending = $derived(this.remote.filter(m => !this.trending.includes(m)));
15
 
src/lib/state/session.svelte.ts CHANGED
@@ -5,7 +5,7 @@ import {
5
  type Conversation,
6
  type ConversationMessage,
7
  type DefaultProject,
8
- type ModelWithTokenizer,
9
  type Project,
10
  type Session,
11
  } from "$lib/types.js";
@@ -22,14 +22,13 @@ const systemMessage: ConversationMessage = {
22
  content: "",
23
  };
24
 
25
- export const emptyModel: ModelWithTokenizer = {
26
  _id: "",
27
  inferenceProviderMapping: [],
28
  pipeline_tag: PipelineTag.TextGeneration,
29
  trendingScore: 0,
30
  tags: ["text-generation"],
31
  id: "",
32
- tokenizerConfig: {},
33
  config: {
34
  architectures: [] as string[],
35
  model_type: "",
 
5
  type Conversation,
6
  type ConversationMessage,
7
  type DefaultProject,
8
+ type Model,
9
  type Project,
10
  type Session,
11
  } from "$lib/types.js";
 
22
  content: "",
23
  };
24
 
25
+ export const emptyModel: Model = {
26
  _id: "",
27
  inferenceProviderMapping: [],
28
  pipeline_tag: PipelineTag.TextGeneration,
29
  trendingScore: 0,
30
  tags: ["text-generation"],
31
  id: "",
 
32
  config: {
33
  architectures: [] as string[],
34
  model_type: "",
src/lib/types.ts CHANGED
@@ -8,7 +8,7 @@ export type ConversationMessage = Pick<ChatCompletionInputMessage, "name" | "rol
8
  };
9
 
10
  export type Conversation = {
11
- model: ModelWithTokenizer | CustomModel;
12
  config: GenerationConfig;
13
  messages: ConversationMessage[];
14
  systemMessage: ConversationMessage;
@@ -21,7 +21,7 @@ export type ConversationWithCustomModel = Conversation & {
21
  };
22
 
23
  export type ConversationWithHFModel = Conversation & {
24
- model: ModelWithTokenizer;
25
  };
26
 
27
  export const isConversationWithHFModel = typia.createIs<ConversationWithHFModel>();
@@ -50,9 +50,9 @@ interface TokenizerConfig {
50
  model_max_length?: number;
51
  }
52
 
53
- export type ModelWithTokenizer = Model & {
54
- tokenizerConfig: TokenizerConfig;
55
- };
56
 
57
  export type Model = {
58
  _id: string;
 
8
  };
9
 
10
  export type Conversation = {
11
+ model: Model | CustomModel;
12
  config: GenerationConfig;
13
  messages: ConversationMessage[];
14
  systemMessage: ConversationMessage;
 
21
  };
22
 
23
  export type ConversationWithHFModel = Conversation & {
24
+ model: Model;
25
  };
26
 
27
  export const isConversationWithHFModel = typia.createIs<ConversationWithHFModel>();
 
50
  model_max_length?: number;
51
  }
52
 
53
+ // export type ModelWithTokenizer = Model & {
54
+ // tokenizerConfig: TokenizerConfig;
55
+ // };
56
 
57
  export type Model = {
58
  _id: string;
src/routes/+page.ts CHANGED
@@ -1,8 +1,8 @@
1
- import type { ModelWithTokenizer } from "$lib/types.js";
2
  import type { PageLoad } from "./$types.js";
3
 
4
  export const load: PageLoad = async ({ fetch }) => {
5
  const res = await fetch("/api/models");
6
- const models: ModelWithTokenizer[] = await res.json();
7
  return { models };
8
  };
 
1
+ import type { Model } from "$lib/types.js";
2
  import type { PageLoad } from "./$types.js";
3
 
4
  export const load: PageLoad = async ({ fetch }) => {
5
  const res = await fetch("/api/models");
6
+ const models: Model[] = await res.json();
7
  return { models };
8
  };
src/routes/api/models/+server.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Model, ModelWithTokenizer } from "$lib/types.js";
2
  import { json } from "@sveltejs/kit";
3
  import type { RequestHandler } from "./$types.js";
4
 
@@ -9,7 +9,7 @@ enum CacheStatus {
9
  }
10
 
11
  type Cache = {
12
- data: ModelWithTokenizer[] | undefined;
13
  timestamp: number;
14
  status: CacheStatus;
15
  // Track failed models to selectively refetch them
@@ -107,7 +107,7 @@ export const GET: RequestHandler = async ({ fetch }) => {
107
  const needImgTextFetch = elapsed >= FULL_CACHE_REFRESH || cache.failedApiCalls.imageTextToText;
108
 
109
  // Track the existing models we'll keep
110
- const existingModels = new Map<string, ModelWithTokenizer>();
111
  if (cache.data) {
112
  cache.data.forEach(model => {
113
  existingModels.set(model.id, model);
@@ -181,84 +181,13 @@ export const GET: RequestHandler = async ({ fetch }) => {
181
  .map(model => model as Model);
182
  }
183
 
184
- const allModels: Model[] = [...textGenModels, ...imgText2TextModels];
185
-
186
- const modelsNeedingTokenizer: Model[] = [];
187
-
188
- // First, use existing model data when possible
189
- allModels.forEach(model => {
190
- const existingModel = existingModels.get(model.id);
191
-
192
- // Only fetch tokenizer if:
193
- // 1. We don't have this model yet, OR
194
- // 2. It's in our failed tokenizers list AND we're doing a refresh, OR
195
- // 3. We're doing a full refresh
196
- if (
197
- !existingModel ||
198
- (cache.failedTokenizers.includes(model.id) && elapsed >= PARTIAL_CACHE_REFRESH) ||
199
- elapsed >= FULL_CACHE_REFRESH
200
- ) {
201
- modelsNeedingTokenizer.push(model);
202
- }
203
- });
204
-
205
- console.log(`Total models: ${allModels.length}, Models needing tokenizer fetch: ${modelsNeedingTokenizer.length}`);
206
-
207
- // Prepare result - start with existing models we want to keep
208
- const models: ModelWithTokenizer[] = [];
209
-
210
- // Add models we're not re-fetching tokenizers for
211
- allModels.forEach(model => {
212
- const existingModel = existingModels.get(model.id);
213
- if (existingModel && !modelsNeedingTokenizer.some(m => m.id === model.id)) {
214
- models.push(existingModel);
215
- }
216
- });
217
-
218
- // Fetch tokenizer configs only for models that need it, with concurrency limit
219
- const batchSize = 10; // Limit concurrent requests
220
-
221
- for (let i = 0; i < modelsNeedingTokenizer.length; i += batchSize) {
222
- const batch = modelsNeedingTokenizer.slice(i, i + batchSize);
223
- const batchPromises = batch.map(async model => {
224
- try {
225
- const configUrl = `https://huggingface.co/${model.id}/raw/main/tokenizer_config.json`;
226
- const res = await fetch(configUrl, {
227
- credentials: "include",
228
- headers,
229
- method: "GET",
230
- mode: "cors",
231
- });
232
-
233
- if (!res.ok) {
234
- if (!newFailedTokenizers.includes(model.id)) {
235
- newFailedTokenizers.push(model.id);
236
- }
237
- return null;
238
- }
239
-
240
- const tokenizerConfig = await res.json();
241
- return { ...model, tokenizerConfig } satisfies ModelWithTokenizer;
242
- } catch (error) {
243
- console.error(`Error processing tokenizer for ${model.id}:`, error);
244
- if (!newFailedTokenizers.includes(model.id)) {
245
- newFailedTokenizers.push(model.id);
246
- }
247
- return null;
248
- }
249
- });
250
-
251
- const batchResults = await Promise.all(batchPromises);
252
- models.push(...batchResults.filter((model): model is ModelWithTokenizer => model !== null));
253
- }
254
-
255
  models.sort((a, b) => a.id.toLowerCase().localeCompare(b.id.toLowerCase()));
256
 
257
  // Determine cache status based on failures
258
  const hasApiFailures = newFailedApiCalls.textGeneration || newFailedApiCalls.imageTextToText;
259
- const hasSignificantTokenizerFailures = newFailedTokenizers.length > modelsNeedingTokenizer.length * 0.2;
260
 
261
- const cacheStatus = hasApiFailures || hasSignificantTokenizerFailures ? CacheStatus.PARTIAL : CacheStatus.SUCCESS;
262
 
263
  cache.data = models;
264
  cache.timestamp = timestamp;
 
1
+ import type { Model } from "$lib/types.js";
2
  import { json } from "@sveltejs/kit";
3
  import type { RequestHandler } from "./$types.js";
4
 
 
9
  }
10
 
11
  type Cache = {
12
+ data: Model[] | undefined;
13
  timestamp: number;
14
  status: CacheStatus;
15
  // Track failed models to selectively refetch them
 
107
  const needImgTextFetch = elapsed >= FULL_CACHE_REFRESH || cache.failedApiCalls.imageTextToText;
108
 
109
  // Track the existing models we'll keep
110
+ const existingModels = new Map<string, Model>();
111
  if (cache.data) {
112
  cache.data.forEach(model => {
113
  existingModels.set(model.id, model);
 
181
  .map(model => model as Model);
182
  }
183
 
184
+ const models: Model[] = [...textGenModels, ...imgText2TextModels];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  models.sort((a, b) => a.id.toLowerCase().localeCompare(b.id.toLowerCase()));
186
 
187
  // Determine cache status based on failures
188
  const hasApiFailures = newFailedApiCalls.textGeneration || newFailedApiCalls.imageTextToText;
 
189
 
190
+ const cacheStatus = hasApiFailures ? CacheStatus.PARTIAL : CacheStatus.SUCCESS;
191
 
192
  cache.data = models;
193
  cache.timestamp = timestamp;