Spaces:
Running
Running
Commit
•
da1e5da
1
Parent(s):
a3c1540
👷 Add CI to check types (#161)
Browse files- .eslintrc.cjs +2 -0
- .github/workflows/lint-and-test.yml +27 -0
- package-lock.json +59 -68
- package.json +4 -4
- src/lib/actions/snapScrollToBottom.ts +1 -1
- src/lib/buildPrompt.ts +1 -1
- src/lib/components/CopyToClipBoardBtn.svelte +1 -1
- src/lib/components/EthicsModal.svelte +1 -1
- src/lib/components/ScrollToBottomBtn.svelte +1 -1
- src/lib/components/StopGeneratingBtn.svelte +1 -1
- src/lib/components/chat/ChatMessage.svelte +3 -3
- src/lib/components/chat/ChatWindow.svelte +3 -3
- src/lib/components/icons/IconChevron.svelte +1 -1
- src/lib/components/icons/IconLoading.svelte +1 -1
- src/lib/components/icons/Logo.svelte +1 -1
- src/routes/+layout.svelte +1 -1
- src/routes/conversation/[id]/+page.svelte +8 -8
- src/routes/conversation/[id]/+server.ts +5 -1
.eslintrc.cjs
CHANGED
@@ -14,6 +14,8 @@ module.exports = {
|
|
14 |
},
|
15 |
rules: {
|
16 |
"no-shadow": ["error"],
|
|
|
|
|
17 |
},
|
18 |
env: {
|
19 |
browser: true,
|
|
|
14 |
},
|
15 |
rules: {
|
16 |
"no-shadow": ["error"],
|
17 |
+
"@typescript-eslint/no-explicit-any": "error",
|
18 |
+
"@typescript-eslint/no-non-null-assertion": "error",
|
19 |
},
|
20 |
env: {
|
21 |
browser: true,
|
.github/workflows/lint-and-test.yml
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
name: Lint and test
|
2 |
+
on:
|
3 |
+
pull_request:
|
4 |
+
push:
|
5 |
+
branches:
|
6 |
+
- main
|
7 |
+
|
8 |
+
jobs:
|
9 |
+
lint:
|
10 |
+
runs-on: ubuntu-latest
|
11 |
+
timeout-minutes: 10
|
12 |
+
|
13 |
+
steps:
|
14 |
+
- uses: actions/checkout@v3
|
15 |
+
|
16 |
+
- uses: actions/setup-node@v3
|
17 |
+
with:
|
18 |
+
node-version: "18"
|
19 |
+
cache: "npm"
|
20 |
+
- run: |
|
21 |
+
npm install ci
|
22 |
+
- name: "Checking lint/format errors"
|
23 |
+
run: |
|
24 |
+
npm run lint
|
25 |
+
- name: "Checking type errors"
|
26 |
+
run: |
|
27 |
+
npm run check
|
package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
{
|
2 |
"name": "chat-ui",
|
3 |
-
"version": "0.0
|
4 |
"lockfileVersion": 3,
|
5 |
"requires": true,
|
6 |
"packages": {
|
7 |
"": {
|
8 |
"name": "chat-ui",
|
9 |
-
"version": "0.0
|
10 |
"dependencies": {
|
11 |
"@huggingface/inference": "^2.2.0",
|
12 |
"autoprefixer": "^10.4.14",
|
@@ -23,8 +23,8 @@
|
|
23 |
},
|
24 |
"devDependencies": {
|
25 |
"@iconify-json/carbon": "^1.1.16",
|
26 |
-
"@sveltejs/adapter-node": "^1.2.
|
27 |
-
"@sveltejs/kit": "^1.
|
28 |
"@tailwindcss/typography": "^0.5.9",
|
29 |
"@types/marked": "^4.0.8",
|
30 |
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
@@ -35,8 +35,8 @@
|
|
35 |
"prettier": "^2.8.0",
|
36 |
"prettier-plugin-svelte": "^2.8.1",
|
37 |
"prettier-plugin-tailwindcss": "^0.2.7",
|
38 |
-
"svelte": "^3.
|
39 |
-
"svelte-check": "^3.0
|
40 |
"tslib": "^2.4.1",
|
41 |
"typescript": "^4.9.3",
|
42 |
"unplugin-icons": "^0.16.1",
|
@@ -769,9 +769,9 @@
|
|
769 |
}
|
770 |
},
|
771 |
"node_modules/@sveltejs/adapter-node": {
|
772 |
-
"version": "1.2.
|
773 |
-
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-1.2.
|
774 |
-
"integrity": "sha512-
|
775 |
"dev": true,
|
776 |
"dependencies": {
|
777 |
"@rollup/plugin-commonjs": "^24.0.0",
|
@@ -784,13 +784,13 @@
|
|
784 |
}
|
785 |
},
|
786 |
"node_modules/@sveltejs/kit": {
|
787 |
-
"version": "1.15.
|
788 |
-
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.15.
|
789 |
-
"integrity": "sha512-
|
790 |
"dev": true,
|
791 |
"hasInstallScript": true,
|
792 |
"dependencies": {
|
793 |
-
"@sveltejs/vite-plugin-svelte": "^2.
|
794 |
"@types/cookie": "^0.5.1",
|
795 |
"cookie": "^0.5.0",
|
796 |
"devalue": "^4.3.0",
|
@@ -799,10 +799,10 @@
|
|
799 |
"magic-string": "^0.30.0",
|
800 |
"mime": "^3.0.0",
|
801 |
"sade": "^1.8.1",
|
802 |
-
"set-cookie-parser": "^2.
|
803 |
"sirv": "^2.0.2",
|
804 |
"tiny-glob": "^0.2.9",
|
805 |
-
"undici": "5.
|
806 |
},
|
807 |
"bin": {
|
808 |
"svelte-kit": "svelte-kit.js"
|
@@ -816,17 +816,17 @@
|
|
816 |
}
|
817 |
},
|
818 |
"node_modules/@sveltejs/vite-plugin-svelte": {
|
819 |
-
"version": "2.
|
820 |
-
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.
|
821 |
-
"integrity": "sha512-
|
822 |
"dev": true,
|
823 |
"dependencies": {
|
824 |
"debug": "^4.3.4",
|
825 |
-
"deepmerge": "^4.
|
826 |
"kleur": "^4.1.5",
|
827 |
-
"magic-string": "^0.
|
828 |
"svelte-hmr": "^0.15.1",
|
829 |
-
"vitefu": "^0.2.
|
830 |
},
|
831 |
"engines": {
|
832 |
"node": "^14.18.0 || >= 16"
|
@@ -836,18 +836,6 @@
|
|
836 |
"vite": "^4.0.0"
|
837 |
}
|
838 |
},
|
839 |
-
"node_modules/@sveltejs/vite-plugin-svelte/node_modules/magic-string": {
|
840 |
-
"version": "0.27.0",
|
841 |
-
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
|
842 |
-
"integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
|
843 |
-
"dev": true,
|
844 |
-
"dependencies": {
|
845 |
-
"@jridgewell/sourcemap-codec": "^1.4.13"
|
846 |
-
},
|
847 |
-
"engines": {
|
848 |
-
"node": ">=12"
|
849 |
-
}
|
850 |
-
},
|
851 |
"node_modules/@tailwindcss/typography": {
|
852 |
"version": "0.5.9",
|
853 |
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz",
|
@@ -917,15 +905,6 @@
|
|
917 |
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
|
918 |
"dev": true
|
919 |
},
|
920 |
-
"node_modules/@types/sass": {
|
921 |
-
"version": "1.43.1",
|
922 |
-
"resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz",
|
923 |
-
"integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==",
|
924 |
-
"dev": true,
|
925 |
-
"dependencies": {
|
926 |
-
"@types/node": "*"
|
927 |
-
}
|
928 |
-
},
|
929 |
"node_modules/@types/semver": {
|
930 |
"version": "7.3.13",
|
931 |
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
|
@@ -1560,9 +1539,9 @@
|
|
1560 |
"dev": true
|
1561 |
},
|
1562 |
"node_modules/deepmerge": {
|
1563 |
-
"version": "4.3.
|
1564 |
-
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.
|
1565 |
-
"integrity": "sha512-
|
1566 |
"dev": true,
|
1567 |
"engines": {
|
1568 |
"node": ">=0.10.0"
|
@@ -2194,9 +2173,9 @@
|
|
2194 |
"dev": true
|
2195 |
},
|
2196 |
"node_modules/graceful-fs": {
|
2197 |
-
"version": "4.2.
|
2198 |
-
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.
|
2199 |
-
"integrity": "sha512-
|
2200 |
"dev": true
|
2201 |
},
|
2202 |
"node_modules/grapheme-splitter": {
|
@@ -3430,9 +3409,9 @@
|
|
3430 |
}
|
3431 |
},
|
3432 |
"node_modules/set-cookie-parser": {
|
3433 |
-
"version": "2.
|
3434 |
-
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.
|
3435 |
-
"integrity": "sha512-
|
3436 |
"dev": true
|
3437 |
},
|
3438 |
"node_modules/shebang-command": {
|
@@ -3657,18 +3636,18 @@
|
|
3657 |
}
|
3658 |
},
|
3659 |
"node_modules/svelte": {
|
3660 |
-
"version": "3.
|
3661 |
-
"resolved": "https://registry.npmjs.org/svelte/-/svelte-3.
|
3662 |
-
"integrity": "sha512-
|
3663 |
"dev": true,
|
3664 |
"engines": {
|
3665 |
"node": ">= 8"
|
3666 |
}
|
3667 |
},
|
3668 |
"node_modules/svelte-check": {
|
3669 |
-
"version": "3.0
|
3670 |
-
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.0.
|
3671 |
-
"integrity": "sha512-
|
3672 |
"dev": true,
|
3673 |
"dependencies": {
|
3674 |
"@jridgewell/trace-mapping": "^0.3.17",
|
@@ -3677,8 +3656,8 @@
|
|
3677 |
"import-fresh": "^3.2.1",
|
3678 |
"picocolors": "^1.0.0",
|
3679 |
"sade": "^1.7.4",
|
3680 |
-
"svelte-preprocess": "^5.0.
|
3681 |
-
"typescript": "^
|
3682 |
},
|
3683 |
"bin": {
|
3684 |
"svelte-check": "bin/svelte-check"
|
@@ -3687,6 +3666,19 @@
|
|
3687 |
"svelte": "^3.55.0"
|
3688 |
}
|
3689 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3690 |
"node_modules/svelte-hmr": {
|
3691 |
"version": "0.15.1",
|
3692 |
"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz",
|
@@ -3700,14 +3692,13 @@
|
|
3700 |
}
|
3701 |
},
|
3702 |
"node_modules/svelte-preprocess": {
|
3703 |
-
"version": "5.0.
|
3704 |
-
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.
|
3705 |
-
"integrity": "sha512-
|
3706 |
"dev": true,
|
3707 |
"hasInstallScript": true,
|
3708 |
"dependencies": {
|
3709 |
"@types/pug": "^2.0.6",
|
3710 |
-
"@types/sass": "^1.43.1",
|
3711 |
"detect-indent": "^6.1.0",
|
3712 |
"magic-string": "^0.27.0",
|
3713 |
"sorcery": "^0.11.0",
|
@@ -3727,7 +3718,7 @@
|
|
3727 |
"stylus": "^0.55.0",
|
3728 |
"sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0",
|
3729 |
"svelte": "^3.23.0",
|
3730 |
-
"typescript": "
|
3731 |
},
|
3732 |
"peerDependenciesMeta": {
|
3733 |
"@babel/core": {
|
@@ -3962,15 +3953,15 @@
|
|
3962 |
}
|
3963 |
},
|
3964 |
"node_modules/undici": {
|
3965 |
-
"version": "5.
|
3966 |
-
"resolved": "https://registry.npmjs.org/undici/-/undici-5.
|
3967 |
-
"integrity": "sha512-
|
3968 |
"dev": true,
|
3969 |
"dependencies": {
|
3970 |
"busboy": "^1.6.0"
|
3971 |
},
|
3972 |
"engines": {
|
3973 |
-
"node": ">=
|
3974 |
}
|
3975 |
},
|
3976 |
"node_modules/unplugin": {
|
|
|
1 |
{
|
2 |
"name": "chat-ui",
|
3 |
+
"version": "0.1.0",
|
4 |
"lockfileVersion": 3,
|
5 |
"requires": true,
|
6 |
"packages": {
|
7 |
"": {
|
8 |
"name": "chat-ui",
|
9 |
+
"version": "0.1.0",
|
10 |
"dependencies": {
|
11 |
"@huggingface/inference": "^2.2.0",
|
12 |
"autoprefixer": "^10.4.14",
|
|
|
23 |
},
|
24 |
"devDependencies": {
|
25 |
"@iconify-json/carbon": "^1.1.16",
|
26 |
+
"@sveltejs/adapter-node": "^1.2.4",
|
27 |
+
"@sveltejs/kit": "^1.15.10",
|
28 |
"@tailwindcss/typography": "^0.5.9",
|
29 |
"@types/marked": "^4.0.8",
|
30 |
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
|
|
35 |
"prettier": "^2.8.0",
|
36 |
"prettier-plugin-svelte": "^2.8.1",
|
37 |
"prettier-plugin-tailwindcss": "^0.2.7",
|
38 |
+
"svelte": "^3.58.0",
|
39 |
+
"svelte-check": "^3.2.0",
|
40 |
"tslib": "^2.4.1",
|
41 |
"typescript": "^4.9.3",
|
42 |
"unplugin-icons": "^0.16.1",
|
|
|
769 |
}
|
770 |
},
|
771 |
"node_modules/@sveltejs/adapter-node": {
|
772 |
+
"version": "1.2.4",
|
773 |
+
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-1.2.4.tgz",
|
774 |
+
"integrity": "sha512-TNnhS+OKRZ9RKnC+ho5mlE2FJquI61i0v7yOXxBUSU3LAoYH2kwVVL8P8ecjefmZ8BOfM1V54pBnDODBU5CEaA==",
|
775 |
"dev": true,
|
776 |
"dependencies": {
|
777 |
"@rollup/plugin-commonjs": "^24.0.0",
|
|
|
784 |
}
|
785 |
},
|
786 |
"node_modules/@sveltejs/kit": {
|
787 |
+
"version": "1.15.10",
|
788 |
+
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.15.10.tgz",
|
789 |
+
"integrity": "sha512-qRZxODfsixjgY+7OOxhAQB8viVaxjyDUz2lM6cE22kObzF5mNke81FIxB2wdaOX42LyfVwIYULZQSr7duxLZ7w==",
|
790 |
"dev": true,
|
791 |
"hasInstallScript": true,
|
792 |
"dependencies": {
|
793 |
+
"@sveltejs/vite-plugin-svelte": "^2.1.1",
|
794 |
"@types/cookie": "^0.5.1",
|
795 |
"cookie": "^0.5.0",
|
796 |
"devalue": "^4.3.0",
|
|
|
799 |
"magic-string": "^0.30.0",
|
800 |
"mime": "^3.0.0",
|
801 |
"sade": "^1.8.1",
|
802 |
+
"set-cookie-parser": "^2.6.0",
|
803 |
"sirv": "^2.0.2",
|
804 |
"tiny-glob": "^0.2.9",
|
805 |
+
"undici": "~5.22.0"
|
806 |
},
|
807 |
"bin": {
|
808 |
"svelte-kit": "svelte-kit.js"
|
|
|
816 |
}
|
817 |
},
|
818 |
"node_modules/@sveltejs/vite-plugin-svelte": {
|
819 |
+
"version": "2.1.1",
|
820 |
+
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.1.1.tgz",
|
821 |
+
"integrity": "sha512-7YeBDt4us0FiIMNsVXxyaP4Hwyn2/v9x3oqStkHU3ZdIc5O22pGwUwH33wUqYo+7Itdmo8zxJ45Qvfm3H7UUjQ==",
|
822 |
"dev": true,
|
823 |
"dependencies": {
|
824 |
"debug": "^4.3.4",
|
825 |
+
"deepmerge": "^4.3.1",
|
826 |
"kleur": "^4.1.5",
|
827 |
+
"magic-string": "^0.30.0",
|
828 |
"svelte-hmr": "^0.15.1",
|
829 |
+
"vitefu": "^0.2.4"
|
830 |
},
|
831 |
"engines": {
|
832 |
"node": "^14.18.0 || >= 16"
|
|
|
836 |
"vite": "^4.0.0"
|
837 |
}
|
838 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
839 |
"node_modules/@tailwindcss/typography": {
|
840 |
"version": "0.5.9",
|
841 |
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz",
|
|
|
905 |
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
|
906 |
"dev": true
|
907 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
908 |
"node_modules/@types/semver": {
|
909 |
"version": "7.3.13",
|
910 |
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
|
|
|
1539 |
"dev": true
|
1540 |
},
|
1541 |
"node_modules/deepmerge": {
|
1542 |
+
"version": "4.3.1",
|
1543 |
+
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
|
1544 |
+
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
|
1545 |
"dev": true,
|
1546 |
"engines": {
|
1547 |
"node": ">=0.10.0"
|
|
|
2173 |
"dev": true
|
2174 |
},
|
2175 |
"node_modules/graceful-fs": {
|
2176 |
+
"version": "4.2.11",
|
2177 |
+
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
2178 |
+
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
2179 |
"dev": true
|
2180 |
},
|
2181 |
"node_modules/grapheme-splitter": {
|
|
|
3409 |
}
|
3410 |
},
|
3411 |
"node_modules/set-cookie-parser": {
|
3412 |
+
"version": "2.6.0",
|
3413 |
+
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
|
3414 |
+
"integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==",
|
3415 |
"dev": true
|
3416 |
},
|
3417 |
"node_modules/shebang-command": {
|
|
|
3636 |
}
|
3637 |
},
|
3638 |
"node_modules/svelte": {
|
3639 |
+
"version": "3.58.0",
|
3640 |
+
"resolved": "https://registry.npmjs.org/svelte/-/svelte-3.58.0.tgz",
|
3641 |
+
"integrity": "sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==",
|
3642 |
"dev": true,
|
3643 |
"engines": {
|
3644 |
"node": ">= 8"
|
3645 |
}
|
3646 |
},
|
3647 |
"node_modules/svelte-check": {
|
3648 |
+
"version": "3.2.0",
|
3649 |
+
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.2.0.tgz",
|
3650 |
+
"integrity": "sha512-6ZnscN8dHEN5Eq5LgIzjj07W9nc9myyBH+diXsUAuiY/3rt0l65/LCIQYlIuoFEjp2F1NhXqZiJwV9omPj9tMw==",
|
3651 |
"dev": true,
|
3652 |
"dependencies": {
|
3653 |
"@jridgewell/trace-mapping": "^0.3.17",
|
|
|
3656 |
"import-fresh": "^3.2.1",
|
3657 |
"picocolors": "^1.0.0",
|
3658 |
"sade": "^1.7.4",
|
3659 |
+
"svelte-preprocess": "^5.0.3",
|
3660 |
+
"typescript": "^5.0.3"
|
3661 |
},
|
3662 |
"bin": {
|
3663 |
"svelte-check": "bin/svelte-check"
|
|
|
3666 |
"svelte": "^3.55.0"
|
3667 |
}
|
3668 |
},
|
3669 |
+
"node_modules/svelte-check/node_modules/typescript": {
|
3670 |
+
"version": "5.0.4",
|
3671 |
+
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
|
3672 |
+
"integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
|
3673 |
+
"dev": true,
|
3674 |
+
"bin": {
|
3675 |
+
"tsc": "bin/tsc",
|
3676 |
+
"tsserver": "bin/tsserver"
|
3677 |
+
},
|
3678 |
+
"engines": {
|
3679 |
+
"node": ">=12.20"
|
3680 |
+
}
|
3681 |
+
},
|
3682 |
"node_modules/svelte-hmr": {
|
3683 |
"version": "0.15.1",
|
3684 |
"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz",
|
|
|
3692 |
}
|
3693 |
},
|
3694 |
"node_modules/svelte-preprocess": {
|
3695 |
+
"version": "5.0.3",
|
3696 |
+
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.3.tgz",
|
3697 |
+
"integrity": "sha512-GrHF1rusdJVbOZOwgPWtpqmaexkydznKzy5qIC2FabgpFyKN57bjMUUUqPRfbBXK5igiEWn1uO/DXsa2vJ5VHA==",
|
3698 |
"dev": true,
|
3699 |
"hasInstallScript": true,
|
3700 |
"dependencies": {
|
3701 |
"@types/pug": "^2.0.6",
|
|
|
3702 |
"detect-indent": "^6.1.0",
|
3703 |
"magic-string": "^0.27.0",
|
3704 |
"sorcery": "^0.11.0",
|
|
|
3718 |
"stylus": "^0.55.0",
|
3719 |
"sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0",
|
3720 |
"svelte": "^3.23.0",
|
3721 |
+
"typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0"
|
3722 |
},
|
3723 |
"peerDependenciesMeta": {
|
3724 |
"@babel/core": {
|
|
|
3953 |
}
|
3954 |
},
|
3955 |
"node_modules/undici": {
|
3956 |
+
"version": "5.22.0",
|
3957 |
+
"resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz",
|
3958 |
+
"integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==",
|
3959 |
"dev": true,
|
3960 |
"dependencies": {
|
3961 |
"busboy": "^1.6.0"
|
3962 |
},
|
3963 |
"engines": {
|
3964 |
+
"node": ">=14.0"
|
3965 |
}
|
3966 |
},
|
3967 |
"node_modules/unplugin": {
|
package.json
CHANGED
@@ -13,8 +13,8 @@
|
|
13 |
},
|
14 |
"devDependencies": {
|
15 |
"@iconify-json/carbon": "^1.1.16",
|
16 |
-
"@sveltejs/adapter-node": "^1.2.
|
17 |
-
"@sveltejs/kit": "^1.
|
18 |
"@tailwindcss/typography": "^0.5.9",
|
19 |
"@types/marked": "^4.0.8",
|
20 |
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
@@ -25,8 +25,8 @@
|
|
25 |
"prettier": "^2.8.0",
|
26 |
"prettier-plugin-svelte": "^2.8.1",
|
27 |
"prettier-plugin-tailwindcss": "^0.2.7",
|
28 |
-
"svelte": "^3.
|
29 |
-
"svelte-check": "^3.0
|
30 |
"tslib": "^2.4.1",
|
31 |
"typescript": "^4.9.3",
|
32 |
"unplugin-icons": "^0.16.1",
|
|
|
13 |
},
|
14 |
"devDependencies": {
|
15 |
"@iconify-json/carbon": "^1.1.16",
|
16 |
+
"@sveltejs/adapter-node": "^1.2.4",
|
17 |
+
"@sveltejs/kit": "^1.15.10",
|
18 |
"@tailwindcss/typography": "^0.5.9",
|
19 |
"@types/marked": "^4.0.8",
|
20 |
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
|
|
25 |
"prettier": "^2.8.0",
|
26 |
"prettier-plugin-svelte": "^2.8.1",
|
27 |
"prettier-plugin-tailwindcss": "^0.2.7",
|
28 |
+
"svelte": "^3.58.0",
|
29 |
+
"svelte-check": "^3.2.0",
|
30 |
"tslib": "^2.4.1",
|
31 |
"typescript": "^4.9.3",
|
32 |
"unplugin-icons": "^0.16.1",
|
src/lib/actions/snapScrollToBottom.ts
CHANGED
@@ -8,7 +8,7 @@ const detachedOffset = 10;
|
|
8 |
* @param node element to snap scroll to bottom
|
9 |
* @param dependency pass in a dependency to update scroll on changes.
|
10 |
*/
|
11 |
-
export const snapScrollToBottom = (node: HTMLElement, dependency:
|
12 |
let prevScrollValue = node.scrollTop;
|
13 |
let isDetached = false;
|
14 |
|
|
|
8 |
* @param node element to snap scroll to bottom
|
9 |
* @param dependency pass in a dependency to update scroll on changes.
|
10 |
*/
|
11 |
+
export const snapScrollToBottom = (node: HTMLElement, dependency: unknown) => {
|
12 |
let prevScrollValue = node.scrollTop;
|
13 |
let isDetached = false;
|
14 |
|
src/lib/buildPrompt.ts
CHANGED
@@ -12,7 +12,7 @@ import type { Message } from "./types/Message";
|
|
12 |
*
|
13 |
* <|assistant|>hi<|endoftext|><|prompter|>hello<|endoftext|><|assistant|>
|
14 |
*/
|
15 |
-
export function buildPrompt(messages: Message[]): string {
|
16 |
const prompt =
|
17 |
messages
|
18 |
.map(
|
|
|
12 |
*
|
13 |
* <|assistant|>hi<|endoftext|><|prompter|>hello<|endoftext|><|assistant|>
|
14 |
*/
|
15 |
+
export function buildPrompt(messages: Pick<Message, "from" | "content">[]): string {
|
16 |
const prompt =
|
17 |
messages
|
18 |
.map(
|
src/lib/components/CopyToClipBoardBtn.svelte
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
export let value: string;
|
9 |
|
10 |
let isSuccess = false;
|
11 |
-
let timeout:
|
12 |
|
13 |
const handleClick = async () => {
|
14 |
// writeText() can be unavailable or fail in some cases (iframe, etc) so we try/catch
|
|
|
8 |
export let value: string;
|
9 |
|
10 |
let isSuccess = false;
|
11 |
+
let timeout: ReturnType<typeof setTimeout>;
|
12 |
|
13 |
const handleClick = async () => {
|
14 |
// writeText() can be unavailable or fail in some cases (iframe, etc) so we try/catch
|
src/lib/components/EthicsModal.svelte
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
import type { Settings } from "$lib/types/Settings";
|
6 |
import { updateSettings } from "$lib/updateSettings";
|
7 |
|
8 |
-
export let settings: Omit<Settings, "sessionId">;
|
9 |
</script>
|
10 |
|
11 |
<Modal>
|
|
|
5 |
import type { Settings } from "$lib/types/Settings";
|
6 |
import { updateSettings } from "$lib/updateSettings";
|
7 |
|
8 |
+
export let settings: Omit<Settings, "sessionId" | "createdAt" | "updatedAt">;
|
9 |
</script>
|
10 |
|
11 |
<Modal>
|
src/lib/components/ScrollToBottomBtn.svelte
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
export let scrollNode: HTMLElement;
|
7 |
export { className as class };
|
8 |
|
9 |
-
let visible
|
10 |
let className = "";
|
11 |
let observer: ResizeObserver | null = null;
|
12 |
|
|
|
6 |
export let scrollNode: HTMLElement;
|
7 |
export { className as class };
|
8 |
|
9 |
+
let visible = false;
|
10 |
let className = "";
|
11 |
let observer: ResizeObserver | null = null;
|
12 |
|
src/lib/components/StopGeneratingBtn.svelte
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<script lang="ts">
|
2 |
import CarbonPause from "~icons/carbon/pause-filled";
|
3 |
|
4 |
-
export let visible
|
5 |
export let className = "";
|
6 |
</script>
|
7 |
|
|
|
1 |
<script lang="ts">
|
2 |
import CarbonPause from "~icons/carbon/pause-filled";
|
3 |
|
4 |
+
export let visible = false;
|
5 |
export let className = "";
|
6 |
</script>
|
7 |
|
src/lib/components/chat/ChatMessage.svelte
CHANGED
@@ -25,13 +25,13 @@
|
|
25 |
}
|
26 |
|
27 |
export let message: Message;
|
28 |
-
export let loading
|
29 |
|
30 |
const dispatch = createEventDispatcher<{ retry: void }>();
|
31 |
|
32 |
let contentEl: HTMLElement;
|
33 |
-
let loadingEl:
|
34 |
-
let pendingTimeout:
|
35 |
|
36 |
const renderer = new marked.Renderer();
|
37 |
|
|
|
25 |
}
|
26 |
|
27 |
export let message: Message;
|
28 |
+
export let loading = false;
|
29 |
|
30 |
const dispatch = createEventDispatcher<{ retry: void }>();
|
31 |
|
32 |
let contentEl: HTMLElement;
|
33 |
+
let loadingEl: IconLoading;
|
34 |
+
let pendingTimeout: ReturnType<typeof setTimeout>;
|
35 |
|
36 |
const renderer = new marked.Renderer();
|
37 |
|
src/lib/components/chat/ChatWindow.svelte
CHANGED
@@ -11,9 +11,9 @@
|
|
11 |
import { PUBLIC_MODEL_ID, PUBLIC_MODEL_NAME } from "$env/static/public";
|
12 |
|
13 |
export let messages: Message[] = [];
|
14 |
-
export let disabled
|
15 |
-
export let loading
|
16 |
-
export let pending
|
17 |
|
18 |
let message: string;
|
19 |
|
|
|
11 |
import { PUBLIC_MODEL_ID, PUBLIC_MODEL_NAME } from "$env/static/public";
|
12 |
|
13 |
export let messages: Message[] = [];
|
14 |
+
export let disabled = false;
|
15 |
+
export let loading = false;
|
16 |
+
export let pending = false;
|
17 |
|
18 |
let message: string;
|
19 |
|
src/lib/components/icons/IconChevron.svelte
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<script lang="ts">
|
2 |
-
export let classNames
|
3 |
</script>
|
4 |
|
5 |
<svg
|
|
|
1 |
<script lang="ts">
|
2 |
+
export let classNames = "";
|
3 |
</script>
|
4 |
|
5 |
<svg
|
src/lib/components/icons/IconLoading.svelte
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<script lang="ts">
|
2 |
-
export let classNames
|
3 |
</script>
|
4 |
|
5 |
<svg
|
|
|
1 |
<script lang="ts">
|
2 |
+
export let classNames = "";
|
3 |
</script>
|
4 |
|
5 |
<svg
|
src/lib/components/icons/Logo.svelte
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<script lang="ts">
|
2 |
-
export let classNames
|
3 |
</script>
|
4 |
|
5 |
<svg
|
|
|
1 |
<script lang="ts">
|
2 |
+
export let classNames = "";
|
3 |
</script>
|
4 |
|
5 |
<svg
|
src/routes/+layout.svelte
CHANGED
@@ -20,7 +20,7 @@
|
|
20 |
|
21 |
let isNavOpen = false;
|
22 |
let isSettingsOpen = false;
|
23 |
-
let errorToastTimeout:
|
24 |
let currentError: string | null;
|
25 |
|
26 |
async function onError() {
|
|
|
20 |
|
21 |
let isNavOpen = false;
|
22 |
let isSettingsOpen = false;
|
23 |
+
let errorToastTimeout: ReturnType<typeof setTimeout>;
|
24 |
let currentError: string | null;
|
25 |
|
26 |
async function onError() {
|
src/routes/conversation/[id]/+page.svelte
CHANGED
@@ -41,8 +41,8 @@
|
|
41 |
top_p: 0.95,
|
42 |
repetition_penalty: 1.2,
|
43 |
top_k: 50,
|
44 |
-
// @ts-ignore
|
45 |
truncate: parseInt(PUBLIC_MAX_INPUT_TOKENS),
|
|
|
46 |
watermark: false,
|
47 |
max_new_tokens: 1024,
|
48 |
stop: [PUBLIC_SEP_TOKEN],
|
@@ -56,10 +56,10 @@
|
|
56 |
}
|
57 |
);
|
58 |
|
59 |
-
for await (const
|
60 |
pending = false;
|
61 |
|
62 |
-
if (!
|
63 |
break;
|
64 |
}
|
65 |
|
@@ -79,17 +79,17 @@
|
|
79 |
}
|
80 |
|
81 |
// final message
|
82 |
-
if (
|
83 |
const lastMessage = messages[messages.length - 1];
|
84 |
|
85 |
if (lastMessage) {
|
86 |
-
lastMessage.content =
|
87 |
messages = [...messages];
|
88 |
}
|
89 |
break;
|
90 |
}
|
91 |
|
92 |
-
if (!
|
93 |
const lastMessage = messages[messages.length - 1];
|
94 |
|
95 |
if (lastMessage?.from !== "assistant") {
|
@@ -97,10 +97,10 @@
|
|
97 |
messages = [
|
98 |
...messages,
|
99 |
// id doesn't match the backend id but it's not important for assistant messages
|
100 |
-
{ from: "assistant", content:
|
101 |
];
|
102 |
} else {
|
103 |
-
lastMessage.content +=
|
104 |
messages = [...messages];
|
105 |
}
|
106 |
}
|
|
|
41 |
top_p: 0.95,
|
42 |
repetition_penalty: 1.2,
|
43 |
top_k: 50,
|
|
|
44 |
truncate: parseInt(PUBLIC_MAX_INPUT_TOKENS),
|
45 |
+
// @ts-expect-error this param is not available in @huggingface/inference
|
46 |
watermark: false,
|
47 |
max_new_tokens: 1024,
|
48 |
stop: [PUBLIC_SEP_TOKEN],
|
|
|
56 |
}
|
57 |
);
|
58 |
|
59 |
+
for await (const output of response) {
|
60 |
pending = false;
|
61 |
|
62 |
+
if (!output) {
|
63 |
break;
|
64 |
}
|
65 |
|
|
|
79 |
}
|
80 |
|
81 |
// final message
|
82 |
+
if (output.generated_text) {
|
83 |
const lastMessage = messages[messages.length - 1];
|
84 |
|
85 |
if (lastMessage) {
|
86 |
+
lastMessage.content = output.generated_text;
|
87 |
messages = [...messages];
|
88 |
}
|
89 |
break;
|
90 |
}
|
91 |
|
92 |
+
if (!output.token.special) {
|
93 |
const lastMessage = messages[messages.length - 1];
|
94 |
|
95 |
if (lastMessage?.from !== "assistant") {
|
|
|
97 |
messages = [
|
98 |
...messages,
|
99 |
// id doesn't match the backend id but it's not important for assistant messages
|
100 |
+
{ from: "assistant", content: output.token.text.trimStart(), id: randomUUID() },
|
101 |
];
|
102 |
} else {
|
103 |
+
lastMessage.content += output.token.text;
|
104 |
messages = [...messages];
|
105 |
}
|
106 |
}
|
src/routes/conversation/[id]/+server.ts
CHANGED
@@ -83,7 +83,11 @@ export async function POST({ request, fetch, locals, params }) {
|
|
83 |
signal: abortController.signal,
|
84 |
});
|
85 |
|
86 |
-
|
|
|
|
|
|
|
|
|
87 |
|
88 |
async function saveMessage() {
|
89 |
let generated_text = await parseGeneratedText(stream2, convId, date, abortController);
|
|
|
83 |
signal: abortController.signal,
|
84 |
});
|
85 |
|
86 |
+
if (!resp.body) {
|
87 |
+
throw new Error("Response body is empty");
|
88 |
+
}
|
89 |
+
|
90 |
+
const [stream1, stream2] = resp.body.tee();
|
91 |
|
92 |
async function saveMessage() {
|
93 |
let generated_text = await parseGeneratedText(stream2, convId, date, abortController);
|