Jrine commited on
Commit
a01cf9a
·
1 Parent(s): dac4e5b

first base

Browse files
package-lock.json CHANGED
@@ -8,6 +8,9 @@
8
  "name": "parrot",
9
  "version": "0.1.0",
10
  "dependencies": {
 
 
 
11
  "next": "16.0.3",
12
  "react": "19.2.0",
13
  "react-dom": "19.2.0"
@@ -18,9 +21,11 @@
18
  "@types/react": "^19",
19
  "@types/react-dom": "^19",
20
  "babel-plugin-react-compiler": "1.0.0",
 
21
  "eslint": "^9",
22
  "eslint-config-next": "16.0.3",
23
  "tailwindcss": "^4",
 
24
  "typescript": "^5"
25
  }
26
  },
@@ -310,6 +315,448 @@
310
  "tslib": "^2.4.0"
311
  }
312
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  "node_modules/@eslint-community/eslint-utils": {
314
  "version": "4.9.0",
315
  "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
@@ -454,6 +901,34 @@
454
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
455
  }
456
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
457
  "node_modules/@humanfs/core": {
458
  "version": "0.19.1",
459
  "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -1234,6 +1709,97 @@
1234
  "dev": true,
1235
  "license": "MIT"
1236
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1237
  "node_modules/@swc/helpers": {
1238
  "version": "0.5.15",
1239
  "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
@@ -1550,12 +2116,17 @@
1550
  "version": "20.19.25",
1551
  "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
1552
  "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
1553
- "dev": true,
1554
  "license": "MIT",
1555
  "dependencies": {
1556
  "undici-types": "~6.21.0"
1557
  }
1558
  },
 
 
 
 
 
 
1559
  "node_modules/@types/react": {
1560
  "version": "19.2.5",
1561
  "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.5.tgz",
@@ -1576,6 +2147,15 @@
1576
  "@types/react": "^19.2.0"
1577
  }
1578
  },
 
 
 
 
 
 
 
 
 
1579
  "node_modules/@typescript-eslint/eslint-plugin": {
1580
  "version": "8.46.4",
1581
  "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz",
@@ -2654,6 +3234,15 @@
2654
  "dev": true,
2655
  "license": "MIT"
2656
  },
 
 
 
 
 
 
 
 
 
2657
  "node_modules/cross-spawn": {
2658
  "version": "7.0.6",
2659
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -2821,6 +3410,19 @@
2821
  "node": ">=0.10.0"
2822
  }
2823
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
2824
  "node_modules/dunder-proto": {
2825
  "version": "1.0.1",
2826
  "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -3041,6 +3643,48 @@
3041
  "url": "https://github.com/sponsors/ljharb"
3042
  }
3043
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3044
  "node_modules/escalade": {
3045
  "version": "3.2.0",
3046
  "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
@@ -3629,6 +4273,21 @@
3629
  "url": "https://github.com/sponsors/ljharb"
3630
  }
3631
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3632
  "node_modules/function-bind": {
3633
  "version": "1.1.2",
3634
  "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -6195,6 +6854,26 @@
6195
  "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
6196
  "license": "0BSD"
6197
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6198
  "node_modules/type-check": {
6199
  "version": "0.4.0",
6200
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -6347,7 +7026,6 @@
6347
  "version": "6.21.0",
6348
  "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
6349
  "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
6350
- "dev": true,
6351
  "license": "MIT"
6352
  },
6353
  "node_modules/unrs-resolver": {
@@ -6541,6 +7219,27 @@
6541
  "node": ">=0.10.0"
6542
  }
6543
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6544
  "node_modules/yallist": {
6545
  "version": "3.1.1",
6546
  "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
 
8
  "name": "parrot",
9
  "version": "0.1.0",
10
  "dependencies": {
11
+ "@huggingface/inference": "^4.13.3",
12
+ "@supabase/ssr": "^0.7.0",
13
+ "@supabase/supabase-js": "^2.81.1",
14
  "next": "16.0.3",
15
  "react": "19.2.0",
16
  "react-dom": "19.2.0"
 
21
  "@types/react": "^19",
22
  "@types/react-dom": "^19",
23
  "babel-plugin-react-compiler": "1.0.0",
24
+ "dotenv": "^17.2.3",
25
  "eslint": "^9",
26
  "eslint-config-next": "16.0.3",
27
  "tailwindcss": "^4",
28
+ "tsx": "^4.20.6",
29
  "typescript": "^5"
30
  }
31
  },
 
315
  "tslib": "^2.4.0"
316
  }
317
  },
318
+ "node_modules/@esbuild/aix-ppc64": {
319
+ "version": "0.25.12",
320
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
321
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
322
+ "cpu": [
323
+ "ppc64"
324
+ ],
325
+ "dev": true,
326
+ "license": "MIT",
327
+ "optional": true,
328
+ "os": [
329
+ "aix"
330
+ ],
331
+ "engines": {
332
+ "node": ">=18"
333
+ }
334
+ },
335
+ "node_modules/@esbuild/android-arm": {
336
+ "version": "0.25.12",
337
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
338
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
339
+ "cpu": [
340
+ "arm"
341
+ ],
342
+ "dev": true,
343
+ "license": "MIT",
344
+ "optional": true,
345
+ "os": [
346
+ "android"
347
+ ],
348
+ "engines": {
349
+ "node": ">=18"
350
+ }
351
+ },
352
+ "node_modules/@esbuild/android-arm64": {
353
+ "version": "0.25.12",
354
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
355
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
356
+ "cpu": [
357
+ "arm64"
358
+ ],
359
+ "dev": true,
360
+ "license": "MIT",
361
+ "optional": true,
362
+ "os": [
363
+ "android"
364
+ ],
365
+ "engines": {
366
+ "node": ">=18"
367
+ }
368
+ },
369
+ "node_modules/@esbuild/android-x64": {
370
+ "version": "0.25.12",
371
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
372
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
373
+ "cpu": [
374
+ "x64"
375
+ ],
376
+ "dev": true,
377
+ "license": "MIT",
378
+ "optional": true,
379
+ "os": [
380
+ "android"
381
+ ],
382
+ "engines": {
383
+ "node": ">=18"
384
+ }
385
+ },
386
+ "node_modules/@esbuild/darwin-arm64": {
387
+ "version": "0.25.12",
388
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
389
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
390
+ "cpu": [
391
+ "arm64"
392
+ ],
393
+ "dev": true,
394
+ "license": "MIT",
395
+ "optional": true,
396
+ "os": [
397
+ "darwin"
398
+ ],
399
+ "engines": {
400
+ "node": ">=18"
401
+ }
402
+ },
403
+ "node_modules/@esbuild/darwin-x64": {
404
+ "version": "0.25.12",
405
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
406
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
407
+ "cpu": [
408
+ "x64"
409
+ ],
410
+ "dev": true,
411
+ "license": "MIT",
412
+ "optional": true,
413
+ "os": [
414
+ "darwin"
415
+ ],
416
+ "engines": {
417
+ "node": ">=18"
418
+ }
419
+ },
420
+ "node_modules/@esbuild/freebsd-arm64": {
421
+ "version": "0.25.12",
422
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
423
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
424
+ "cpu": [
425
+ "arm64"
426
+ ],
427
+ "dev": true,
428
+ "license": "MIT",
429
+ "optional": true,
430
+ "os": [
431
+ "freebsd"
432
+ ],
433
+ "engines": {
434
+ "node": ">=18"
435
+ }
436
+ },
437
+ "node_modules/@esbuild/freebsd-x64": {
438
+ "version": "0.25.12",
439
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
440
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
441
+ "cpu": [
442
+ "x64"
443
+ ],
444
+ "dev": true,
445
+ "license": "MIT",
446
+ "optional": true,
447
+ "os": [
448
+ "freebsd"
449
+ ],
450
+ "engines": {
451
+ "node": ">=18"
452
+ }
453
+ },
454
+ "node_modules/@esbuild/linux-arm": {
455
+ "version": "0.25.12",
456
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
457
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
458
+ "cpu": [
459
+ "arm"
460
+ ],
461
+ "dev": true,
462
+ "license": "MIT",
463
+ "optional": true,
464
+ "os": [
465
+ "linux"
466
+ ],
467
+ "engines": {
468
+ "node": ">=18"
469
+ }
470
+ },
471
+ "node_modules/@esbuild/linux-arm64": {
472
+ "version": "0.25.12",
473
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
474
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
475
+ "cpu": [
476
+ "arm64"
477
+ ],
478
+ "dev": true,
479
+ "license": "MIT",
480
+ "optional": true,
481
+ "os": [
482
+ "linux"
483
+ ],
484
+ "engines": {
485
+ "node": ">=18"
486
+ }
487
+ },
488
+ "node_modules/@esbuild/linux-ia32": {
489
+ "version": "0.25.12",
490
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
491
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
492
+ "cpu": [
493
+ "ia32"
494
+ ],
495
+ "dev": true,
496
+ "license": "MIT",
497
+ "optional": true,
498
+ "os": [
499
+ "linux"
500
+ ],
501
+ "engines": {
502
+ "node": ">=18"
503
+ }
504
+ },
505
+ "node_modules/@esbuild/linux-loong64": {
506
+ "version": "0.25.12",
507
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
508
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
509
+ "cpu": [
510
+ "loong64"
511
+ ],
512
+ "dev": true,
513
+ "license": "MIT",
514
+ "optional": true,
515
+ "os": [
516
+ "linux"
517
+ ],
518
+ "engines": {
519
+ "node": ">=18"
520
+ }
521
+ },
522
+ "node_modules/@esbuild/linux-mips64el": {
523
+ "version": "0.25.12",
524
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
525
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
526
+ "cpu": [
527
+ "mips64el"
528
+ ],
529
+ "dev": true,
530
+ "license": "MIT",
531
+ "optional": true,
532
+ "os": [
533
+ "linux"
534
+ ],
535
+ "engines": {
536
+ "node": ">=18"
537
+ }
538
+ },
539
+ "node_modules/@esbuild/linux-ppc64": {
540
+ "version": "0.25.12",
541
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
542
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
543
+ "cpu": [
544
+ "ppc64"
545
+ ],
546
+ "dev": true,
547
+ "license": "MIT",
548
+ "optional": true,
549
+ "os": [
550
+ "linux"
551
+ ],
552
+ "engines": {
553
+ "node": ">=18"
554
+ }
555
+ },
556
+ "node_modules/@esbuild/linux-riscv64": {
557
+ "version": "0.25.12",
558
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
559
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
560
+ "cpu": [
561
+ "riscv64"
562
+ ],
563
+ "dev": true,
564
+ "license": "MIT",
565
+ "optional": true,
566
+ "os": [
567
+ "linux"
568
+ ],
569
+ "engines": {
570
+ "node": ">=18"
571
+ }
572
+ },
573
+ "node_modules/@esbuild/linux-s390x": {
574
+ "version": "0.25.12",
575
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
576
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
577
+ "cpu": [
578
+ "s390x"
579
+ ],
580
+ "dev": true,
581
+ "license": "MIT",
582
+ "optional": true,
583
+ "os": [
584
+ "linux"
585
+ ],
586
+ "engines": {
587
+ "node": ">=18"
588
+ }
589
+ },
590
+ "node_modules/@esbuild/linux-x64": {
591
+ "version": "0.25.12",
592
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
593
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
594
+ "cpu": [
595
+ "x64"
596
+ ],
597
+ "dev": true,
598
+ "license": "MIT",
599
+ "optional": true,
600
+ "os": [
601
+ "linux"
602
+ ],
603
+ "engines": {
604
+ "node": ">=18"
605
+ }
606
+ },
607
+ "node_modules/@esbuild/netbsd-arm64": {
608
+ "version": "0.25.12",
609
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
610
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
611
+ "cpu": [
612
+ "arm64"
613
+ ],
614
+ "dev": true,
615
+ "license": "MIT",
616
+ "optional": true,
617
+ "os": [
618
+ "netbsd"
619
+ ],
620
+ "engines": {
621
+ "node": ">=18"
622
+ }
623
+ },
624
+ "node_modules/@esbuild/netbsd-x64": {
625
+ "version": "0.25.12",
626
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
627
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
628
+ "cpu": [
629
+ "x64"
630
+ ],
631
+ "dev": true,
632
+ "license": "MIT",
633
+ "optional": true,
634
+ "os": [
635
+ "netbsd"
636
+ ],
637
+ "engines": {
638
+ "node": ">=18"
639
+ }
640
+ },
641
+ "node_modules/@esbuild/openbsd-arm64": {
642
+ "version": "0.25.12",
643
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
644
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
645
+ "cpu": [
646
+ "arm64"
647
+ ],
648
+ "dev": true,
649
+ "license": "MIT",
650
+ "optional": true,
651
+ "os": [
652
+ "openbsd"
653
+ ],
654
+ "engines": {
655
+ "node": ">=18"
656
+ }
657
+ },
658
+ "node_modules/@esbuild/openbsd-x64": {
659
+ "version": "0.25.12",
660
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
661
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
662
+ "cpu": [
663
+ "x64"
664
+ ],
665
+ "dev": true,
666
+ "license": "MIT",
667
+ "optional": true,
668
+ "os": [
669
+ "openbsd"
670
+ ],
671
+ "engines": {
672
+ "node": ">=18"
673
+ }
674
+ },
675
+ "node_modules/@esbuild/openharmony-arm64": {
676
+ "version": "0.25.12",
677
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
678
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
679
+ "cpu": [
680
+ "arm64"
681
+ ],
682
+ "dev": true,
683
+ "license": "MIT",
684
+ "optional": true,
685
+ "os": [
686
+ "openharmony"
687
+ ],
688
+ "engines": {
689
+ "node": ">=18"
690
+ }
691
+ },
692
+ "node_modules/@esbuild/sunos-x64": {
693
+ "version": "0.25.12",
694
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
695
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
696
+ "cpu": [
697
+ "x64"
698
+ ],
699
+ "dev": true,
700
+ "license": "MIT",
701
+ "optional": true,
702
+ "os": [
703
+ "sunos"
704
+ ],
705
+ "engines": {
706
+ "node": ">=18"
707
+ }
708
+ },
709
+ "node_modules/@esbuild/win32-arm64": {
710
+ "version": "0.25.12",
711
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
712
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
713
+ "cpu": [
714
+ "arm64"
715
+ ],
716
+ "dev": true,
717
+ "license": "MIT",
718
+ "optional": true,
719
+ "os": [
720
+ "win32"
721
+ ],
722
+ "engines": {
723
+ "node": ">=18"
724
+ }
725
+ },
726
+ "node_modules/@esbuild/win32-ia32": {
727
+ "version": "0.25.12",
728
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
729
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
730
+ "cpu": [
731
+ "ia32"
732
+ ],
733
+ "dev": true,
734
+ "license": "MIT",
735
+ "optional": true,
736
+ "os": [
737
+ "win32"
738
+ ],
739
+ "engines": {
740
+ "node": ">=18"
741
+ }
742
+ },
743
+ "node_modules/@esbuild/win32-x64": {
744
+ "version": "0.25.12",
745
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
746
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
747
+ "cpu": [
748
+ "x64"
749
+ ],
750
+ "dev": true,
751
+ "license": "MIT",
752
+ "optional": true,
753
+ "os": [
754
+ "win32"
755
+ ],
756
+ "engines": {
757
+ "node": ">=18"
758
+ }
759
+ },
760
  "node_modules/@eslint-community/eslint-utils": {
761
  "version": "4.9.0",
762
  "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
 
901
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
902
  }
903
  },
904
+ "node_modules/@huggingface/inference": {
905
+ "version": "4.13.3",
906
+ "resolved": "https://registry.npmjs.org/@huggingface/inference/-/inference-4.13.3.tgz",
907
+ "integrity": "sha512-ZpyIlO9Xd0sDiD3QZSQMsJ19iFXYOHHxrgA6pK5Mh5RMY27XlnbLNhazAAaBsmen8vWG6SlGHlyjl7kvjlNoqQ==",
908
+ "license": "MIT",
909
+ "dependencies": {
910
+ "@huggingface/jinja": "^0.5.1",
911
+ "@huggingface/tasks": "^0.19.63"
912
+ },
913
+ "engines": {
914
+ "node": ">=18"
915
+ }
916
+ },
917
+ "node_modules/@huggingface/jinja": {
918
+ "version": "0.5.1",
919
+ "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.5.1.tgz",
920
+ "integrity": "sha512-yUZLld4lrM9iFxHCwFQ7D1HW2MWMwSbeB7WzWqFYDWK+rEb+WldkLdAJxUPOmgICMHZLzZGVcVjFh3w/YGubng==",
921
+ "license": "MIT",
922
+ "engines": {
923
+ "node": ">=18"
924
+ }
925
+ },
926
+ "node_modules/@huggingface/tasks": {
927
+ "version": "0.19.63",
928
+ "resolved": "https://registry.npmjs.org/@huggingface/tasks/-/tasks-0.19.63.tgz",
929
+ "integrity": "sha512-hmd8e5fdjRiIJE7/EYWXS+Pm2SAu89xjZEgfZddN10ubWqlelXLyj2YgHZrVDEVkVA+5+ImMZUpQIez7b2//fw==",
930
+ "license": "MIT"
931
+ },
932
  "node_modules/@humanfs/core": {
933
  "version": "0.19.1",
934
  "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
 
1709
  "dev": true,
1710
  "license": "MIT"
1711
  },
1712
+ "node_modules/@supabase/auth-js": {
1713
+ "version": "2.81.1",
1714
+ "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.81.1.tgz",
1715
+ "integrity": "sha512-K20GgiSm9XeRLypxYHa5UCnybWc2K0ok0HLbqCej/wRxDpJxToXNOwKt0l7nO8xI1CyQ+GrNfU6bcRzvdbeopQ==",
1716
+ "license": "MIT",
1717
+ "dependencies": {
1718
+ "tslib": "2.8.1"
1719
+ },
1720
+ "engines": {
1721
+ "node": ">=20.0.0"
1722
+ }
1723
+ },
1724
+ "node_modules/@supabase/functions-js": {
1725
+ "version": "2.81.1",
1726
+ "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.81.1.tgz",
1727
+ "integrity": "sha512-sYgSO3mlgL0NvBFS3oRfCK4OgKGQwuOWJLzfPyWg0k8MSxSFSDeN/JtrDJD5GQrxskP6c58+vUzruBJQY78AqQ==",
1728
+ "license": "MIT",
1729
+ "dependencies": {
1730
+ "tslib": "2.8.1"
1731
+ },
1732
+ "engines": {
1733
+ "node": ">=20.0.0"
1734
+ }
1735
+ },
1736
+ "node_modules/@supabase/postgrest-js": {
1737
+ "version": "2.81.1",
1738
+ "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.81.1.tgz",
1739
+ "integrity": "sha512-DePpUTAPXJyBurQ4IH2e42DWoA+/Qmr5mbgY4B6ZcxVc/ZUKfTVK31BYIFBATMApWraFc8Q/Sg+yxtfJ3E0wSg==",
1740
+ "license": "MIT",
1741
+ "dependencies": {
1742
+ "tslib": "2.8.1"
1743
+ },
1744
+ "engines": {
1745
+ "node": ">=20.0.0"
1746
+ }
1747
+ },
1748
+ "node_modules/@supabase/realtime-js": {
1749
+ "version": "2.81.1",
1750
+ "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.81.1.tgz",
1751
+ "integrity": "sha512-ViQ+Kxm8BuUP/TcYmH9tViqYKGSD1LBjdqx2p5J+47RES6c+0QHedM0PPAjthMdAHWyb2LGATE9PD2++2rO/tw==",
1752
+ "license": "MIT",
1753
+ "dependencies": {
1754
+ "@types/phoenix": "^1.6.6",
1755
+ "@types/ws": "^8.18.1",
1756
+ "tslib": "2.8.1",
1757
+ "ws": "^8.18.2"
1758
+ },
1759
+ "engines": {
1760
+ "node": ">=20.0.0"
1761
+ }
1762
+ },
1763
+ "node_modules/@supabase/ssr": {
1764
+ "version": "0.7.0",
1765
+ "resolved": "https://registry.npmjs.org/@supabase/ssr/-/ssr-0.7.0.tgz",
1766
+ "integrity": "sha512-G65t5EhLSJ5c8hTCcXifSL9Q/ZRXvqgXeNo+d3P56f4U1IxwTqjB64UfmfixvmMcjuxnq2yGqEWVJqUcO+AzAg==",
1767
+ "license": "MIT",
1768
+ "dependencies": {
1769
+ "cookie": "^1.0.2"
1770
+ },
1771
+ "peerDependencies": {
1772
+ "@supabase/supabase-js": "^2.43.4"
1773
+ }
1774
+ },
1775
+ "node_modules/@supabase/storage-js": {
1776
+ "version": "2.81.1",
1777
+ "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.81.1.tgz",
1778
+ "integrity": "sha512-UNmYtjnZnhouqnbEMC1D5YJot7y0rIaZx7FG2Fv8S3hhNjcGVvO+h9We/tggi273BFkiahQPS/uRsapo1cSapw==",
1779
+ "license": "MIT",
1780
+ "dependencies": {
1781
+ "tslib": "2.8.1"
1782
+ },
1783
+ "engines": {
1784
+ "node": ">=20.0.0"
1785
+ }
1786
+ },
1787
+ "node_modules/@supabase/supabase-js": {
1788
+ "version": "2.81.1",
1789
+ "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.81.1.tgz",
1790
+ "integrity": "sha512-KSdY7xb2L0DlLmlYzIOghdw/na4gsMcqJ8u4sD6tOQJr+x3hLujU9s4R8N3ob84/1bkvpvlU5PYKa1ae+OICnw==",
1791
+ "license": "MIT",
1792
+ "dependencies": {
1793
+ "@supabase/auth-js": "2.81.1",
1794
+ "@supabase/functions-js": "2.81.1",
1795
+ "@supabase/postgrest-js": "2.81.1",
1796
+ "@supabase/realtime-js": "2.81.1",
1797
+ "@supabase/storage-js": "2.81.1"
1798
+ },
1799
+ "engines": {
1800
+ "node": ">=20.0.0"
1801
+ }
1802
+ },
1803
  "node_modules/@swc/helpers": {
1804
  "version": "0.5.15",
1805
  "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
 
2116
  "version": "20.19.25",
2117
  "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
2118
  "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
 
2119
  "license": "MIT",
2120
  "dependencies": {
2121
  "undici-types": "~6.21.0"
2122
  }
2123
  },
2124
+ "node_modules/@types/phoenix": {
2125
+ "version": "1.6.6",
2126
+ "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz",
2127
+ "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==",
2128
+ "license": "MIT"
2129
+ },
2130
  "node_modules/@types/react": {
2131
  "version": "19.2.5",
2132
  "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.5.tgz",
 
2147
  "@types/react": "^19.2.0"
2148
  }
2149
  },
2150
+ "node_modules/@types/ws": {
2151
+ "version": "8.18.1",
2152
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
2153
+ "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
2154
+ "license": "MIT",
2155
+ "dependencies": {
2156
+ "@types/node": "*"
2157
+ }
2158
+ },
2159
  "node_modules/@typescript-eslint/eslint-plugin": {
2160
  "version": "8.46.4",
2161
  "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz",
 
3234
  "dev": true,
3235
  "license": "MIT"
3236
  },
3237
+ "node_modules/cookie": {
3238
+ "version": "1.0.2",
3239
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
3240
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
3241
+ "license": "MIT",
3242
+ "engines": {
3243
+ "node": ">=18"
3244
+ }
3245
+ },
3246
  "node_modules/cross-spawn": {
3247
  "version": "7.0.6",
3248
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
 
3410
  "node": ">=0.10.0"
3411
  }
3412
  },
3413
+ "node_modules/dotenv": {
3414
+ "version": "17.2.3",
3415
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
3416
+ "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
3417
+ "dev": true,
3418
+ "license": "BSD-2-Clause",
3419
+ "engines": {
3420
+ "node": ">=12"
3421
+ },
3422
+ "funding": {
3423
+ "url": "https://dotenvx.com"
3424
+ }
3425
+ },
3426
  "node_modules/dunder-proto": {
3427
  "version": "1.0.1",
3428
  "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
 
3643
  "url": "https://github.com/sponsors/ljharb"
3644
  }
3645
  },
3646
+ "node_modules/esbuild": {
3647
+ "version": "0.25.12",
3648
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
3649
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
3650
+ "dev": true,
3651
+ "hasInstallScript": true,
3652
+ "license": "MIT",
3653
+ "bin": {
3654
+ "esbuild": "bin/esbuild"
3655
+ },
3656
+ "engines": {
3657
+ "node": ">=18"
3658
+ },
3659
+ "optionalDependencies": {
3660
+ "@esbuild/aix-ppc64": "0.25.12",
3661
+ "@esbuild/android-arm": "0.25.12",
3662
+ "@esbuild/android-arm64": "0.25.12",
3663
+ "@esbuild/android-x64": "0.25.12",
3664
+ "@esbuild/darwin-arm64": "0.25.12",
3665
+ "@esbuild/darwin-x64": "0.25.12",
3666
+ "@esbuild/freebsd-arm64": "0.25.12",
3667
+ "@esbuild/freebsd-x64": "0.25.12",
3668
+ "@esbuild/linux-arm": "0.25.12",
3669
+ "@esbuild/linux-arm64": "0.25.12",
3670
+ "@esbuild/linux-ia32": "0.25.12",
3671
+ "@esbuild/linux-loong64": "0.25.12",
3672
+ "@esbuild/linux-mips64el": "0.25.12",
3673
+ "@esbuild/linux-ppc64": "0.25.12",
3674
+ "@esbuild/linux-riscv64": "0.25.12",
3675
+ "@esbuild/linux-s390x": "0.25.12",
3676
+ "@esbuild/linux-x64": "0.25.12",
3677
+ "@esbuild/netbsd-arm64": "0.25.12",
3678
+ "@esbuild/netbsd-x64": "0.25.12",
3679
+ "@esbuild/openbsd-arm64": "0.25.12",
3680
+ "@esbuild/openbsd-x64": "0.25.12",
3681
+ "@esbuild/openharmony-arm64": "0.25.12",
3682
+ "@esbuild/sunos-x64": "0.25.12",
3683
+ "@esbuild/win32-arm64": "0.25.12",
3684
+ "@esbuild/win32-ia32": "0.25.12",
3685
+ "@esbuild/win32-x64": "0.25.12"
3686
+ }
3687
+ },
3688
  "node_modules/escalade": {
3689
  "version": "3.2.0",
3690
  "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
 
4273
  "url": "https://github.com/sponsors/ljharb"
4274
  }
4275
  },
4276
+ "node_modules/fsevents": {
4277
+ "version": "2.3.3",
4278
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
4279
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
4280
+ "dev": true,
4281
+ "hasInstallScript": true,
4282
+ "license": "MIT",
4283
+ "optional": true,
4284
+ "os": [
4285
+ "darwin"
4286
+ ],
4287
+ "engines": {
4288
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
4289
+ }
4290
+ },
4291
  "node_modules/function-bind": {
4292
  "version": "1.1.2",
4293
  "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
 
6854
  "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
6855
  "license": "0BSD"
6856
  },
6857
+ "node_modules/tsx": {
6858
+ "version": "4.20.6",
6859
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz",
6860
+ "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==",
6861
+ "dev": true,
6862
+ "license": "MIT",
6863
+ "dependencies": {
6864
+ "esbuild": "~0.25.0",
6865
+ "get-tsconfig": "^4.7.5"
6866
+ },
6867
+ "bin": {
6868
+ "tsx": "dist/cli.mjs"
6869
+ },
6870
+ "engines": {
6871
+ "node": ">=18.0.0"
6872
+ },
6873
+ "optionalDependencies": {
6874
+ "fsevents": "~2.3.3"
6875
+ }
6876
+ },
6877
  "node_modules/type-check": {
6878
  "version": "0.4.0",
6879
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
 
7026
  "version": "6.21.0",
7027
  "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
7028
  "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
 
7029
  "license": "MIT"
7030
  },
7031
  "node_modules/unrs-resolver": {
 
7219
  "node": ">=0.10.0"
7220
  }
7221
  },
7222
+ "node_modules/ws": {
7223
+ "version": "8.18.3",
7224
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
7225
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
7226
+ "license": "MIT",
7227
+ "engines": {
7228
+ "node": ">=10.0.0"
7229
+ },
7230
+ "peerDependencies": {
7231
+ "bufferutil": "^4.0.1",
7232
+ "utf-8-validate": ">=5.0.2"
7233
+ },
7234
+ "peerDependenciesMeta": {
7235
+ "bufferutil": {
7236
+ "optional": true
7237
+ },
7238
+ "utf-8-validate": {
7239
+ "optional": true
7240
+ }
7241
+ }
7242
+ },
7243
  "node_modules/yallist": {
7244
  "version": "3.1.1",
7245
  "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
package.json CHANGED
@@ -9,6 +9,9 @@
9
  "lint": "eslint"
10
  },
11
  "dependencies": {
 
 
 
12
  "next": "16.0.3",
13
  "react": "19.2.0",
14
  "react-dom": "19.2.0"
@@ -19,9 +22,11 @@
19
  "@types/react": "^19",
20
  "@types/react-dom": "^19",
21
  "babel-plugin-react-compiler": "1.0.0",
 
22
  "eslint": "^9",
23
  "eslint-config-next": "16.0.3",
24
  "tailwindcss": "^4",
 
25
  "typescript": "^5"
26
  }
27
- }
 
9
  "lint": "eslint"
10
  },
11
  "dependencies": {
12
+ "@huggingface/inference": "^4.13.3",
13
+ "@supabase/ssr": "^0.7.0",
14
+ "@supabase/supabase-js": "^2.81.1",
15
  "next": "16.0.3",
16
  "react": "19.2.0",
17
  "react-dom": "19.2.0"
 
22
  "@types/react": "^19",
23
  "@types/react-dom": "^19",
24
  "babel-plugin-react-compiler": "1.0.0",
25
+ "dotenv": "^17.2.3",
26
  "eslint": "^9",
27
  "eslint-config-next": "16.0.3",
28
  "tailwindcss": "^4",
29
+ "tsx": "^4.20.6",
30
  "typescript": "^5"
31
  }
32
+ }
src/app/api/data/route.ts ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { NextResponse } from 'next/server'
2
+ import { createServerSupabaseClient } from '@/lib/supabase-server'
3
+
4
+ export async function GET(request: Request) {
5
+ try {
6
+ const { searchParams } = new URL(request.url)
7
+ const limit = parseInt(searchParams.get('limit') || '10')
8
+ const model = searchParams.get('model')
9
+
10
+ const supabase = await createServerSupabaseClient()
11
+ let query = supabase
12
+ .from('model_interactions')
13
+ .select('*')
14
+ .order('created_at', { ascending: false })
15
+ .limit(limit)
16
+
17
+ if (model) {
18
+ query = query.eq('model_name', model)
19
+ }
20
+
21
+ const { data, error } = await query
22
+
23
+ if (error) {
24
+ throw error
25
+ }
26
+
27
+ return NextResponse.json({ data }, { status: 200 })
28
+ } catch (error: any) {
29
+ console.error('Data API Error:', error)
30
+ return NextResponse.json(
31
+ { error: error.message || 'Internal server error' },
32
+ { status: 500 }
33
+ )
34
+ }
35
+ }
src/app/api/inference/route.ts ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { NextResponse } from 'next/server'
2
+ import { runInference } from '@/lib/huggingface'
3
+ import { createServerSupabaseClient } from '@/lib/supabase-server'
4
+ import type { InferenceRequest } from '@/types'
5
+
6
+ export async function POST(request: Request) {
7
+ try {
8
+ const body: InferenceRequest = await request.json()
9
+ const { model, inputs, parameters } = body
10
+
11
+ if (!model || !inputs) {
12
+ return NextResponse.json(
13
+ { error: 'Model and inputs are required' },
14
+ { status: 400 }
15
+ )
16
+ }
17
+
18
+ // Run inference
19
+ const result = await runInference(model, inputs, parameters)
20
+
21
+ // Store in Supabase
22
+ const supabase = await createServerSupabaseClient()
23
+ const { data, error } = await supabase
24
+ .from('model_interactions')
25
+ .insert({
26
+ user_input: typeof inputs === 'string' ? inputs : JSON.stringify(inputs),
27
+ model_output: JSON.stringify(result),
28
+ model_name: model,
29
+ })
30
+ .select()
31
+ .single()
32
+
33
+ if (error) {
34
+ console.error('Supabase error:', error)
35
+ // Still return result even if DB insert fails
36
+ return NextResponse.json({ result }, { status: 200 })
37
+ }
38
+
39
+ return NextResponse.json({ result, data }, { status: 200 })
40
+ } catch (error: any) {
41
+ console.error('API Error:', error)
42
+ return NextResponse.json(
43
+ { error: error.message || 'Internal server error' },
44
+ { status: 500 }
45
+ )
46
+ }
47
+ }
src/components/DataDisplay.tsx ADDED
File without changes
src/components/ModelInterface.tsx ADDED
File without changes
src/hooks/index.ts ADDED
File without changes
src/lib/huggingface.ts ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { HfInference } from '@huggingface/inference'
2
+
3
+ // Initialize Hugging Face client
4
+ const hf = new HfInference(process.env.HUGGING_FACE_API_TOKEN)
5
+
6
+ export async function runInference(
7
+ modelId: string,
8
+ inputs: any,
9
+ parameters?: Record<string, any>
10
+ ) {
11
+ try {
12
+ const response = await hf.textGeneration({
13
+ model: modelId,
14
+ inputs: inputs,
15
+ parameters: {
16
+ max_new_tokens: 250,
17
+ temperature: 0.7,
18
+ ...parameters,
19
+ },
20
+ })
21
+
22
+ return response
23
+ } catch (error) {
24
+ console.error('Hugging Face Inference Error:', error)
25
+ throw error
26
+ }
27
+ }
28
+
29
+ // For custom inference endpoints
30
+ export async function runCustomEndpoint(
31
+ endpointUrl: string,
32
+ inputs: any
33
+ ) {
34
+ try {
35
+ const response = await fetch(endpointUrl, {
36
+ method: 'POST',
37
+ headers: {
38
+ 'Authorization': `Bearer ${process.env.HUGGING_FACE_API_TOKEN}`,
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify({ inputs }),
42
+ })
43
+
44
+ if (!response.ok) {
45
+ throw new Error(`Endpoint error: ${response.statusText}`)
46
+ }
47
+
48
+ return await response.json()
49
+ } catch (error) {
50
+ console.error('Custom Endpoint Error:', error)
51
+ throw error
52
+ }
53
+ }
src/lib/supabase-server.ts ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { createServerClient } from '@supabase/ssr'
2
+ import { cookies } from 'next/headers'
3
+
4
+ export async function createServerSupabaseClient() {
5
+ const cookieStore = await cookies()
6
+
7
+ return createServerClient(
8
+ process.env.NEXT_PUBLIC_SUPABASE_URL!,
9
+ process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
10
+ {
11
+ cookies: {
12
+ getAll() {
13
+ return cookieStore.getAll()
14
+ },
15
+ setAll(cookiesToSet) {
16
+ try {
17
+ cookiesToSet.forEach(({ name, value, options }) =>
18
+ cookieStore.set(name, value, options)
19
+ )
20
+ } catch {}
21
+ },
22
+ },
23
+ }
24
+ )
25
+ }
src/lib/supabase.ts ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import { createBrowserClient } from '@supabase/ssr'
2
+
3
+ export function createClient() {
4
+ return createBrowserClient(
5
+ process.env.NEXT_PUBLIC_SUPABASE_URL!,
6
+ process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
7
+ )
8
+ }
src/types/index.ts ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Database types
2
+ export interface ModelInteraction {
3
+ id: string;
4
+ user_input: string;
5
+ model_output: string;
6
+ model_name: string;
7
+ created_at: string;
8
+ }
9
+
10
+ // API request/response types
11
+ export interface InferenceRequest {
12
+ model: string;
13
+ inputs: string | any;
14
+ parameters?: Record<string, any>;
15
+ }
16
+
17
+ export interface InferenceResponse {
18
+ result: any;
19
+ data?: ModelInteraction;
20
+ }
21
+
22
+ // Hugging Face types
23
+ export interface HFModelConfig {
24
+ modelId: string;
25
+ endpoint?: string;
26
+ parameters?: {
27
+ max_new_tokens?: number;
28
+ temperature?: number;
29
+ top_p?: number;
30
+ };
31
+ }
src/utils/index.ts ADDED
File without changes
test-setup.ts ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ // Run with: npx tsx test-setup.ts
2
+ import 'dotenv/config'
3
+
4
+ console.log('Testing environment variables...')
5
+ console.log('Supabase URL:', process.env.NEXT_PUBLIC_SUPABASE_URL ? '✅' : '❌')
6
+ console.log('Supabase Key:', process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY ? '✅' : '❌')
7
+ console.log('HF Token:', process.env.HUGGING_FACE_API_TOKEN ? '✅' : '❌')