style(ai): 💄 optimize some styles of chatBot
This commit is contained in:
4
package.json
vendored
4
package.json
vendored
@@ -123,6 +123,9 @@
|
||||
"pinia-plugin-persistedstate": "^4.5.0",
|
||||
"pinia-shared-state": "^1.0.1",
|
||||
"seemly": "^0.3.10",
|
||||
"shiki": "^3.14.0",
|
||||
"stream-markdown": "^0.0.8",
|
||||
"stream-monaco": "^0.0.2",
|
||||
"tauri-plugin-mic-recorder-api": "^2.0.0",
|
||||
"tauri-plugin-safe-area-insets": "^0.1.0",
|
||||
"three": "^0.180.0",
|
||||
@@ -131,6 +134,7 @@
|
||||
"vue": "^3.5.22",
|
||||
"vue-cropper": "1.1.4",
|
||||
"vue-demi": "0.14.10",
|
||||
"vue-renderer-markdown": "0.0.61-beta.5",
|
||||
"vue-router": "^4.6.3",
|
||||
"vue-virtual-scroller": "2.0.0-beta.8"
|
||||
},
|
||||
|
||||
514
pnpm-lock.yaml
generated
vendored
514
pnpm-lock.yaml
generated
vendored
@@ -140,6 +140,15 @@ importers:
|
||||
seemly:
|
||||
specifier: ^0.3.10
|
||||
version: 0.3.10
|
||||
shiki:
|
||||
specifier: ^3.14.0
|
||||
version: 3.14.0
|
||||
stream-markdown:
|
||||
specifier: ^0.0.8
|
||||
version: 0.0.8(shiki@3.14.0)
|
||||
stream-monaco:
|
||||
specifier: ^0.0.2
|
||||
version: 0.0.2(monaco-editor@0.52.2)
|
||||
tauri-plugin-mic-recorder-api:
|
||||
specifier: ^2.0.0
|
||||
version: 2.0.0
|
||||
@@ -164,6 +173,9 @@ importers:
|
||||
vue-demi:
|
||||
specifier: 0.14.10
|
||||
version: 0.14.10(vue@3.5.22(typescript@5.9.3))
|
||||
vue-renderer-markdown:
|
||||
specifier: 0.0.61-beta.5
|
||||
version: 0.0.61-beta.5(shiki@3.14.0)(stream-markdown@0.0.8(shiki@3.14.0))(stream-monaco@0.0.2(monaco-editor@0.52.2))(vue@3.5.22(typescript@5.9.3))
|
||||
vue-router:
|
||||
specifier: ^4.6.3
|
||||
version: 4.6.3(vue@3.5.22(typescript@5.9.3))
|
||||
@@ -945,6 +957,15 @@ packages:
|
||||
'@fingerprintjs/fingerprintjs@4.6.2':
|
||||
resolution: {integrity: sha512-g8mXuqcFKbgH2CZKwPfVtsUJDHyvcgIABQI7Y0tzWEFXpGxJaXuAuzlifT2oTakjDBLTK4Gaa9/5PERDhqUjtw==}
|
||||
|
||||
'@floating-ui/core@1.7.3':
|
||||
resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
|
||||
|
||||
'@floating-ui/dom@1.7.4':
|
||||
resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
|
||||
|
||||
'@floating-ui/utils@0.2.10':
|
||||
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
|
||||
|
||||
'@hutson/parse-repository-url@5.0.0':
|
||||
resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
@@ -1646,6 +1667,30 @@ packages:
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@shikijs/core@3.14.0':
|
||||
resolution: {integrity: sha512-qRSeuP5vlYHCNUIrpEBQFO7vSkR7jn7Kv+5X3FO/zBKVDGQbcnlScD3XhkrHi/R8Ltz0kEjvFR9Szp/XMRbFMw==}
|
||||
|
||||
'@shikijs/engine-javascript@3.14.0':
|
||||
resolution: {integrity: sha512-3v1kAXI2TsWQuwv86cREH/+FK9Pjw3dorVEykzQDhwrZj0lwsHYlfyARaKmn6vr5Gasf8aeVpb8JkzeWspxOLQ==}
|
||||
|
||||
'@shikijs/engine-oniguruma@3.14.0':
|
||||
resolution: {integrity: sha512-TNcYTYMbJyy+ZjzWtt0bG5y4YyMIWC2nyePz+CFMWqm+HnZZyy9SWMgo8Z6KBJVIZnx8XUXS8U2afO6Y0g1Oug==}
|
||||
|
||||
'@shikijs/langs@3.14.0':
|
||||
resolution: {integrity: sha512-DIB2EQY7yPX1/ZH7lMcwrK5pl+ZkP/xoSpUzg9YC8R+evRCCiSQ7yyrvEyBsMnfZq4eBzLzBlugMyTAf13+pzg==}
|
||||
|
||||
'@shikijs/monaco@3.14.0':
|
||||
resolution: {integrity: sha512-haqNhks0JBCWr7QBPwkwSkK/UqwyZjQ0vC4YjYlECYLGkYixV8FNx2b6OUL4wgq5fd0SimGwDIOxGCH2KAil3g==}
|
||||
|
||||
'@shikijs/themes@3.14.0':
|
||||
resolution: {integrity: sha512-fAo/OnfWckNmv4uBoUu6dSlkcBc+SA1xzj5oUSaz5z3KqHtEbUypg/9xxgJARtM6+7RVm0Q6Xnty41xA1ma1IA==}
|
||||
|
||||
'@shikijs/types@3.14.0':
|
||||
resolution: {integrity: sha512-bQGgC6vrY8U/9ObG1Z/vTro+uclbjjD/uG58RvfxKZVD5p9Yc1ka3tVyEFy7BNJLzxuWyHH5NWynP9zZZS59eQ==}
|
||||
|
||||
'@shikijs/vscode-textmate@10.0.2':
|
||||
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
|
||||
|
||||
'@sindresorhus/merge-streams@2.3.0':
|
||||
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -1805,6 +1850,9 @@ packages:
|
||||
'@types/estree@1.0.8':
|
||||
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
|
||||
|
||||
'@types/hast@3.0.4':
|
||||
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
|
||||
|
||||
'@types/katex@0.16.7':
|
||||
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
|
||||
|
||||
@@ -1814,6 +1862,9 @@ packages:
|
||||
'@types/lodash@4.17.20':
|
||||
resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==}
|
||||
|
||||
'@types/mdast@4.0.4':
|
||||
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
|
||||
|
||||
'@types/ndarray@1.0.14':
|
||||
resolution: {integrity: sha512-oANmFZMnFQvb219SSBIhI1Ih/r4CvHDOzkWyJS/XRqkMrGH5/kaPSA1hQhdIBzouaE+5KpE/f5ylI9cujmckQg==}
|
||||
|
||||
@@ -1838,6 +1889,9 @@ packages:
|
||||
'@types/trusted-types@2.0.7':
|
||||
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
|
||||
|
||||
'@types/unist@3.0.3':
|
||||
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
|
||||
|
||||
'@types/web-bluetooth@0.0.21':
|
||||
resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
|
||||
|
||||
@@ -1847,6 +1901,9 @@ packages:
|
||||
'@types/whatwg-mimetype@3.0.2':
|
||||
resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==}
|
||||
|
||||
'@ungap/structured-clone@1.3.0':
|
||||
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
|
||||
|
||||
'@unocss/config@66.5.4':
|
||||
resolution: {integrity: sha512-TYwkUw9nZlLTBGCndsyrcHCJ7M+sEsJiK77Edggmd6B3urjkVc1cDjKF3k3tjg4ghQteGsc2akhzn1a4TouybQ==}
|
||||
engines: {node: '>=14'}
|
||||
@@ -2136,6 +2193,9 @@ packages:
|
||||
ajv@8.17.1:
|
||||
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
|
||||
|
||||
alien-signals@2.0.8:
|
||||
resolution: {integrity: sha512-844G1VLkk0Pe2SJjY0J8vp8ADI73IM4KliNu2OGlYzWpO28NexEUvjHTcFjFX3VXoiUtwTbHxLNI9ImkcoBqzA==}
|
||||
|
||||
alien-signals@3.0.3:
|
||||
resolution: {integrity: sha512-2JXjom6R7ZwrISpUphLhf4htUq1aKRCennTJ6u9kFfr3sLmC9+I4CxxVi+McoFnIg+p1HnVrfLT/iCt4Dlz//Q==}
|
||||
|
||||
@@ -2290,6 +2350,9 @@ packages:
|
||||
caniuse-lite@1.0.30001747:
|
||||
resolution: {integrity: sha512-mzFa2DGIhuc5490Nd/G31xN1pnBnYMadtkyTjefPI7wzypqgCEpeWu9bJr0OnDsyKrW75zA9ZAt7pbQFmwLsQg==}
|
||||
|
||||
ccount@2.0.1:
|
||||
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
||||
|
||||
chai@5.2.1:
|
||||
resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -2310,6 +2373,12 @@ packages:
|
||||
resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
|
||||
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
|
||||
|
||||
character-entities-html4@2.1.0:
|
||||
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
|
||||
|
||||
character-entities-legacy@3.0.0:
|
||||
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
|
||||
|
||||
chardet@0.7.0:
|
||||
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
|
||||
|
||||
@@ -2406,6 +2475,9 @@ packages:
|
||||
colorthief@2.6.0:
|
||||
resolution: {integrity: sha512-yL3B7laeOr4kH9XasFF5rl+9Taz+Pmt/CRbaTI6XepZFyQvk4K/abaGKIAsngVpxKkgFeoJ2IwdRpS228icrig==}
|
||||
|
||||
comma-separated-tokens@2.0.3:
|
||||
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
|
||||
|
||||
commander@10.0.1:
|
||||
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
|
||||
engines: {node: '>=14'}
|
||||
@@ -2672,6 +2744,10 @@ packages:
|
||||
deprecation@2.3.1:
|
||||
resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
|
||||
|
||||
dequal@2.0.3:
|
||||
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
destr@2.0.5:
|
||||
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
|
||||
|
||||
@@ -2696,6 +2772,9 @@ packages:
|
||||
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
devlop@1.1.0:
|
||||
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
|
||||
|
||||
digest-wasm@0.1.4:
|
||||
resolution: {integrity: sha512-pz4nYXZBTVJ3MDfjOv0ZG7Vyf6Nad5er94vyqsxTxZJQDyS9CiKbDgBTrLCM4N2/0C3cwhwPL2D/OJWPg3TE8Q==}
|
||||
|
||||
@@ -3058,6 +3137,12 @@ packages:
|
||||
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
hast-util-to-html@9.0.5:
|
||||
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
|
||||
|
||||
hast-util-whitespace@3.0.0:
|
||||
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
|
||||
|
||||
highlight.js@11.11.1:
|
||||
resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
|
||||
engines: {node: '>=12.0.0'}
|
||||
@@ -3076,6 +3161,9 @@ packages:
|
||||
html-escaper@2.0.2:
|
||||
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
|
||||
|
||||
html-void-elements@3.0.0:
|
||||
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
|
||||
|
||||
http-proxy-agent@7.0.2:
|
||||
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
|
||||
engines: {node: '>= 14'}
|
||||
@@ -3405,6 +3493,9 @@ packages:
|
||||
resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==}
|
||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||
|
||||
linkify-it@5.0.0:
|
||||
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
|
||||
|
||||
lint-staged@16.2.6:
|
||||
resolution: {integrity: sha512-s1gphtDbV4bmW1eylXpVMk2u7is7YsrLl8hzrtvC70h4ByhcMLZFY01Fx05ZUDNuv1H8HO4E+e2zgejV1jVwNw==}
|
||||
engines: {node: '>=20.17'}
|
||||
@@ -3519,9 +3610,43 @@ packages:
|
||||
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
markdown-it-container@4.0.0:
|
||||
resolution: {integrity: sha512-HaNccxUH0l7BNGYbFbjmGpf5aLHAMTinqRZQAEQbMr2cdD3z91Q6kIo1oUn1CQndkT03jat6ckrdRYuwwqLlQw==}
|
||||
|
||||
markdown-it-emoji@3.0.0:
|
||||
resolution: {integrity: sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==}
|
||||
|
||||
markdown-it-footnote@4.0.0:
|
||||
resolution: {integrity: sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ==}
|
||||
|
||||
markdown-it-ins@4.0.0:
|
||||
resolution: {integrity: sha512-sWbjK2DprrkINE4oYDhHdCijGT+MIDhEupjSHLXe5UXeVr5qmVxs/nTUVtgi0Oh/qtF+QKV0tNWDhQBEPxiMew==}
|
||||
|
||||
markdown-it-mark@4.0.0:
|
||||
resolution: {integrity: sha512-YLhzaOsU9THO/cal0lUjfMjrqSMPjjyjChYM7oyj4DnyaXEzA8gnW6cVJeyCrCVeyesrY2PlEdUYJSPFYL4Nkg==}
|
||||
|
||||
markdown-it-sub@2.0.0:
|
||||
resolution: {integrity: sha512-iCBKgwCkfQBRg2vApy9vx1C1Tu6D8XYo8NvevI3OlwzBRmiMtsJ2sXupBgEA7PPxiDwNni3qIUkhZ6j5wofDUA==}
|
||||
|
||||
markdown-it-sup@2.0.0:
|
||||
resolution: {integrity: sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==}
|
||||
|
||||
markdown-it-task-checkbox@1.0.6:
|
||||
resolution: {integrity: sha512-7pxkHuvqTOu3iwVGmDPeYjQg+AIS9VQxzyLP9JCg9lBjgPAJXGEkChK6A2iFuj3tS0GV3HG2u5AMNhcQqwxpJw==}
|
||||
|
||||
markdown-it@14.1.0:
|
||||
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
|
||||
hasBin: true
|
||||
|
||||
mdast-util-to-hast@13.2.0:
|
||||
resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
|
||||
|
||||
mdn-data@2.12.2:
|
||||
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
|
||||
|
||||
mdurl@2.0.0:
|
||||
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
|
||||
|
||||
meow@12.1.1:
|
||||
resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
|
||||
engines: {node: '>=16.10'}
|
||||
@@ -3543,6 +3668,21 @@ packages:
|
||||
meshoptimizer@0.22.0:
|
||||
resolution: {integrity: sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==}
|
||||
|
||||
micromark-util-character@2.1.1:
|
||||
resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
|
||||
|
||||
micromark-util-encode@2.0.1:
|
||||
resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
|
||||
|
||||
micromark-util-sanitize-uri@2.0.1:
|
||||
resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
|
||||
|
||||
micromark-util-symbol@2.0.1:
|
||||
resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
|
||||
|
||||
micromark-util-types@2.0.2:
|
||||
resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
|
||||
|
||||
micromatch@4.0.8:
|
||||
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
|
||||
engines: {node: '>=8.6'}
|
||||
@@ -3597,6 +3737,9 @@ packages:
|
||||
mlly@1.8.0:
|
||||
resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
|
||||
|
||||
monaco-editor@0.52.2:
|
||||
resolution: {integrity: sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==}
|
||||
|
||||
mrmime@2.0.1:
|
||||
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -3698,6 +3841,12 @@ packages:
|
||||
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
oniguruma-parser@0.12.1:
|
||||
resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
|
||||
|
||||
oniguruma-to-es@4.3.3:
|
||||
resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
|
||||
|
||||
open@10.1.0:
|
||||
resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -3903,6 +4052,9 @@ packages:
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
|
||||
property-information@7.1.0:
|
||||
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
|
||||
|
||||
proto-list@1.2.4:
|
||||
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
|
||||
|
||||
@@ -3916,6 +4068,10 @@ packages:
|
||||
proxy-from-env@1.1.0:
|
||||
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
|
||||
|
||||
punycode.js@2.3.1:
|
||||
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
pupa@3.1.0:
|
||||
resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==}
|
||||
engines: {node: '>=12.20'}
|
||||
@@ -3964,6 +4120,15 @@ packages:
|
||||
regenerator-runtime@0.14.1:
|
||||
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
|
||||
|
||||
regex-recursion@6.0.2:
|
||||
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
|
||||
|
||||
regex-utilities@2.3.0:
|
||||
resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
|
||||
|
||||
regex@6.0.1:
|
||||
resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
|
||||
|
||||
registry-auth-token@5.1.0:
|
||||
resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==}
|
||||
engines: {node: '>=14'}
|
||||
@@ -4106,6 +4271,9 @@ packages:
|
||||
engines: {node: '>=4'}
|
||||
hasBin: true
|
||||
|
||||
shiki@3.14.0:
|
||||
resolution: {integrity: sha512-J0yvpLI7LSig3Z3acIuDLouV5UCKQqu8qOArwMx+/yPVC3WRMgrP67beaG8F+j4xfEWE0eVC4GeBCIXeOPra1g==}
|
||||
|
||||
siginfo@2.0.0:
|
||||
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
|
||||
|
||||
@@ -4165,6 +4333,9 @@ packages:
|
||||
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
|
||||
deprecated: Please use @jridgewell/sourcemap-codec instead
|
||||
|
||||
space-separated-tokens@2.0.2:
|
||||
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
|
||||
|
||||
spdx-correct@3.2.0:
|
||||
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
|
||||
|
||||
@@ -4198,6 +4369,20 @@ packages:
|
||||
resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
stream-markdown-parser@0.0.12:
|
||||
resolution: {integrity: sha512-G5+bFihzAX6LCzBsLZGuvPCJE0pcukBlVTiwzCkPtv23HipAEGH6C48ot5MpAXABOcbi0Io7DudT5RmR8ZW4Kw==}
|
||||
|
||||
stream-markdown@0.0.8:
|
||||
resolution: {integrity: sha512-NgS18JT6afeo0dhNUD+PkeUAifBDwQRsXvmVMHS7XIuVu0kgmGRo2UkZkPScEKNHjupPjiRX6QqvMBIPXq+ovA==}
|
||||
peerDependencies:
|
||||
shiki: '>=3.13.0'
|
||||
|
||||
stream-monaco@0.0.2:
|
||||
resolution: {integrity: sha512-vf7mWmVMvIdEgLPUiaF9riIxSHt5Vd/J+RRxT8R7OUgPBHo0CsBjWMCmUE4L4MMZednpY+MUY9fwfmA3pQm0Xg==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
monaco-editor: ^0.52.2
|
||||
|
||||
string-argv@0.3.2:
|
||||
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
|
||||
engines: {node: '>=0.6.19'}
|
||||
@@ -4224,6 +4409,9 @@ packages:
|
||||
string_decoder@1.3.0:
|
||||
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
|
||||
|
||||
stringify-entities@4.0.4:
|
||||
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
|
||||
|
||||
strip-ansi@6.0.1:
|
||||
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -4384,6 +4572,9 @@ packages:
|
||||
treemate@0.3.11:
|
||||
resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==}
|
||||
|
||||
trim-lines@3.0.1:
|
||||
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
|
||||
|
||||
tslib@2.8.1:
|
||||
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
|
||||
|
||||
@@ -4420,6 +4611,9 @@ packages:
|
||||
engines: {node: '>=14.17'}
|
||||
hasBin: true
|
||||
|
||||
uc.micro@2.1.0:
|
||||
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
|
||||
|
||||
ufo@1.6.1:
|
||||
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
|
||||
|
||||
@@ -4456,6 +4650,21 @@ packages:
|
||||
uniq@1.0.1:
|
||||
resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==}
|
||||
|
||||
unist-util-is@6.0.1:
|
||||
resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
|
||||
|
||||
unist-util-position@5.0.0:
|
||||
resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
|
||||
|
||||
unist-util-stringify-position@4.0.0:
|
||||
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
|
||||
|
||||
unist-util-visit-parents@6.0.2:
|
||||
resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
|
||||
|
||||
unist-util-visit@5.0.0:
|
||||
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
|
||||
|
||||
universal-user-agent@6.0.1:
|
||||
resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
|
||||
|
||||
@@ -4533,6 +4742,12 @@ packages:
|
||||
peerDependencies:
|
||||
vue: ^3.0.11
|
||||
|
||||
vfile-message@4.0.3:
|
||||
resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
|
||||
|
||||
vfile@6.0.3:
|
||||
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
|
||||
|
||||
vite-node@3.2.4:
|
||||
resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==}
|
||||
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
||||
@@ -4644,6 +4859,30 @@ packages:
|
||||
peerDependencies:
|
||||
vue: ^3.0.0
|
||||
|
||||
vue-renderer-markdown@0.0.61-beta.5:
|
||||
resolution: {integrity: sha512-KcvADowkMiiO6Ocx6Vp/XmLa86hTjUpP0j69jylm3qFThCJBh/i82WVdjyWVWXlaghtv4LFqKnX7n3kOAd2cog==}
|
||||
peerDependencies:
|
||||
katex: '>=0.16.22'
|
||||
mermaid: '>=11'
|
||||
shiki: ^3.13.0
|
||||
stream-markdown: '>=0.0.8'
|
||||
stream-monaco: '>=0.0.2'
|
||||
vue: '>=3.0.0'
|
||||
vue-i18n: '>=9'
|
||||
peerDependenciesMeta:
|
||||
katex:
|
||||
optional: true
|
||||
mermaid:
|
||||
optional: true
|
||||
shiki:
|
||||
optional: true
|
||||
stream-markdown:
|
||||
optional: true
|
||||
stream-monaco:
|
||||
optional: true
|
||||
vue-i18n:
|
||||
optional: true
|
||||
|
||||
vue-resize@2.0.0-alpha.1:
|
||||
resolution: {integrity: sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==}
|
||||
peerDependencies:
|
||||
@@ -4789,6 +5028,9 @@ packages:
|
||||
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
zwitch@2.0.4:
|
||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||
|
||||
snapshots:
|
||||
|
||||
'@actions/github@6.0.1':
|
||||
@@ -5376,6 +5618,17 @@ snapshots:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
'@floating-ui/core@1.7.3':
|
||||
dependencies:
|
||||
'@floating-ui/utils': 0.2.10
|
||||
|
||||
'@floating-ui/dom@1.7.4':
|
||||
dependencies:
|
||||
'@floating-ui/core': 1.7.3
|
||||
'@floating-ui/utils': 0.2.10
|
||||
|
||||
'@floating-ui/utils@0.2.10': {}
|
||||
|
||||
'@hutson/parse-repository-url@5.0.0': {}
|
||||
|
||||
'@iarna/toml@2.2.5': {}
|
||||
@@ -5977,6 +6230,45 @@ snapshots:
|
||||
'@rollup/rollup-win32-x64-msvc@4.52.4':
|
||||
optional: true
|
||||
|
||||
'@shikijs/core@3.14.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.14.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
'@types/hast': 3.0.4
|
||||
hast-util-to-html: 9.0.5
|
||||
|
||||
'@shikijs/engine-javascript@3.14.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.14.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
oniguruma-to-es: 4.3.3
|
||||
|
||||
'@shikijs/engine-oniguruma@3.14.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.14.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
|
||||
'@shikijs/langs@3.14.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.14.0
|
||||
|
||||
'@shikijs/monaco@3.14.0':
|
||||
dependencies:
|
||||
'@shikijs/core': 3.14.0
|
||||
'@shikijs/types': 3.14.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
|
||||
'@shikijs/themes@3.14.0':
|
||||
dependencies:
|
||||
'@shikijs/types': 3.14.0
|
||||
|
||||
'@shikijs/types@3.14.0':
|
||||
dependencies:
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
'@types/hast': 3.0.4
|
||||
|
||||
'@shikijs/vscode-textmate@10.0.2': {}
|
||||
|
||||
'@sindresorhus/merge-streams@2.3.0': {}
|
||||
|
||||
'@tauri-apps/api@2.9.0': {}
|
||||
@@ -6118,6 +6410,10 @@ snapshots:
|
||||
|
||||
'@types/estree@1.0.8': {}
|
||||
|
||||
'@types/hast@3.0.4':
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
|
||||
'@types/katex@0.16.7': {}
|
||||
|
||||
'@types/lodash-es@4.17.12':
|
||||
@@ -6126,6 +6422,10 @@ snapshots:
|
||||
|
||||
'@types/lodash@4.17.20': {}
|
||||
|
||||
'@types/mdast@4.0.4':
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
|
||||
'@types/ndarray@1.0.14': {}
|
||||
|
||||
'@types/node@20.19.21':
|
||||
@@ -6155,12 +6455,16 @@ snapshots:
|
||||
'@types/trusted-types@2.0.7':
|
||||
optional: true
|
||||
|
||||
'@types/unist@3.0.3': {}
|
||||
|
||||
'@types/web-bluetooth@0.0.21': {}
|
||||
|
||||
'@types/webxr@0.5.24': {}
|
||||
|
||||
'@types/whatwg-mimetype@3.0.2': {}
|
||||
|
||||
'@ungap/structured-clone@1.3.0': {}
|
||||
|
||||
'@unocss/config@66.5.4':
|
||||
dependencies:
|
||||
'@unocss/core': 66.5.4
|
||||
@@ -6550,6 +6854,8 @@ snapshots:
|
||||
json-schema-traverse: 1.0.0
|
||||
require-from-string: 2.0.2
|
||||
|
||||
alien-signals@2.0.8: {}
|
||||
|
||||
alien-signals@3.0.3: {}
|
||||
|
||||
ansi-align@3.0.1:
|
||||
@@ -6696,6 +7002,8 @@ snapshots:
|
||||
|
||||
caniuse-lite@1.0.30001747: {}
|
||||
|
||||
ccount@2.0.1: {}
|
||||
|
||||
chai@5.2.1:
|
||||
dependencies:
|
||||
assertion-error: 2.0.1
|
||||
@@ -6719,6 +7027,10 @@ snapshots:
|
||||
|
||||
chalk@5.6.2: {}
|
||||
|
||||
character-entities-html4@2.1.0: {}
|
||||
|
||||
character-entities-legacy@3.0.0: {}
|
||||
|
||||
chardet@0.7.0: {}
|
||||
|
||||
chardet@2.1.0: {}
|
||||
@@ -6818,6 +7130,8 @@ snapshots:
|
||||
ndarray-pixels: 4.1.0
|
||||
sharp: 0.33.5
|
||||
|
||||
comma-separated-tokens@2.0.3: {}
|
||||
|
||||
commander@10.0.1: {}
|
||||
|
||||
commander@14.0.1: {}
|
||||
@@ -7089,6 +7403,8 @@ snapshots:
|
||||
|
||||
deprecation@2.3.1: {}
|
||||
|
||||
dequal@2.0.3: {}
|
||||
|
||||
destr@2.0.5: {}
|
||||
|
||||
detect-file@1.0.0: {}
|
||||
@@ -7102,6 +7418,10 @@ snapshots:
|
||||
|
||||
detect-libc@2.0.3: {}
|
||||
|
||||
devlop@1.1.0:
|
||||
dependencies:
|
||||
dequal: 2.0.3
|
||||
|
||||
digest-wasm@0.1.4: {}
|
||||
|
||||
dompurify@3.3.0:
|
||||
@@ -7532,6 +7852,24 @@ snapshots:
|
||||
dependencies:
|
||||
function-bind: 1.1.2
|
||||
|
||||
hast-util-to-html@9.0.5:
|
||||
dependencies:
|
||||
'@types/hast': 3.0.4
|
||||
'@types/unist': 3.0.3
|
||||
ccount: 2.0.1
|
||||
comma-separated-tokens: 2.0.3
|
||||
hast-util-whitespace: 3.0.0
|
||||
html-void-elements: 3.0.0
|
||||
mdast-util-to-hast: 13.2.0
|
||||
property-information: 7.1.0
|
||||
space-separated-tokens: 2.0.2
|
||||
stringify-entities: 4.0.4
|
||||
zwitch: 2.0.4
|
||||
|
||||
hast-util-whitespace@3.0.0:
|
||||
dependencies:
|
||||
'@types/hast': 3.0.4
|
||||
|
||||
highlight.js@11.11.1: {}
|
||||
|
||||
homedir-polyfill@1.0.3:
|
||||
@@ -7546,6 +7884,8 @@ snapshots:
|
||||
|
||||
html-escaper@2.0.2: {}
|
||||
|
||||
html-void-elements@3.0.0: {}
|
||||
|
||||
http-proxy-agent@7.0.2:
|
||||
dependencies:
|
||||
agent-base: 7.1.3
|
||||
@@ -7834,6 +8174,10 @@ snapshots:
|
||||
|
||||
lines-and-columns@2.0.4: {}
|
||||
|
||||
linkify-it@5.0.0:
|
||||
dependencies:
|
||||
uc.micro: 2.1.0
|
||||
|
||||
lint-staged@16.2.6:
|
||||
dependencies:
|
||||
commander: 14.0.1
|
||||
@@ -7949,8 +8293,47 @@ snapshots:
|
||||
dependencies:
|
||||
semver: 7.7.1
|
||||
|
||||
markdown-it-container@4.0.0: {}
|
||||
|
||||
markdown-it-emoji@3.0.0: {}
|
||||
|
||||
markdown-it-footnote@4.0.0: {}
|
||||
|
||||
markdown-it-ins@4.0.0: {}
|
||||
|
||||
markdown-it-mark@4.0.0: {}
|
||||
|
||||
markdown-it-sub@2.0.0: {}
|
||||
|
||||
markdown-it-sup@2.0.0: {}
|
||||
|
||||
markdown-it-task-checkbox@1.0.6: {}
|
||||
|
||||
markdown-it@14.1.0:
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
entities: 4.5.0
|
||||
linkify-it: 5.0.0
|
||||
mdurl: 2.0.0
|
||||
punycode.js: 2.3.1
|
||||
uc.micro: 2.1.0
|
||||
|
||||
mdast-util-to-hast@13.2.0:
|
||||
dependencies:
|
||||
'@types/hast': 3.0.4
|
||||
'@types/mdast': 4.0.4
|
||||
'@ungap/structured-clone': 1.3.0
|
||||
devlop: 1.1.0
|
||||
micromark-util-sanitize-uri: 2.0.1
|
||||
trim-lines: 3.0.1
|
||||
unist-util-position: 5.0.0
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.3
|
||||
|
||||
mdn-data@2.12.2: {}
|
||||
|
||||
mdurl@2.0.0: {}
|
||||
|
||||
meow@12.1.1: {}
|
||||
|
||||
meow@13.2.0: {}
|
||||
@@ -7963,6 +8346,23 @@ snapshots:
|
||||
|
||||
meshoptimizer@0.22.0: {}
|
||||
|
||||
micromark-util-character@2.1.1:
|
||||
dependencies:
|
||||
micromark-util-symbol: 2.0.1
|
||||
micromark-util-types: 2.0.2
|
||||
|
||||
micromark-util-encode@2.0.1: {}
|
||||
|
||||
micromark-util-sanitize-uri@2.0.1:
|
||||
dependencies:
|
||||
micromark-util-character: 2.1.1
|
||||
micromark-util-encode: 2.0.1
|
||||
micromark-util-symbol: 2.0.1
|
||||
|
||||
micromark-util-symbol@2.0.1: {}
|
||||
|
||||
micromark-util-types@2.0.2: {}
|
||||
|
||||
micromatch@4.0.8:
|
||||
dependencies:
|
||||
braces: 3.0.3
|
||||
@@ -8009,6 +8409,8 @@ snapshots:
|
||||
pkg-types: 1.3.1
|
||||
ufo: 1.6.1
|
||||
|
||||
monaco-editor@0.52.2: {}
|
||||
|
||||
mrmime@2.0.1: {}
|
||||
|
||||
ms@2.1.3: {}
|
||||
@@ -8115,6 +8517,14 @@ snapshots:
|
||||
dependencies:
|
||||
mimic-function: 5.0.1
|
||||
|
||||
oniguruma-parser@0.12.1: {}
|
||||
|
||||
oniguruma-to-es@4.3.3:
|
||||
dependencies:
|
||||
oniguruma-parser: 0.12.1
|
||||
regex: 6.0.1
|
||||
regex-recursion: 6.0.2
|
||||
|
||||
open@10.1.0:
|
||||
dependencies:
|
||||
default-browser: 5.2.1
|
||||
@@ -8325,6 +8735,8 @@ snapshots:
|
||||
|
||||
prettier@3.6.2: {}
|
||||
|
||||
property-information@7.1.0: {}
|
||||
|
||||
proto-list@1.2.4: {}
|
||||
|
||||
protocols@2.0.2: {}
|
||||
@@ -8344,6 +8756,8 @@ snapshots:
|
||||
|
||||
proxy-from-env@1.1.0: {}
|
||||
|
||||
punycode.js@2.3.1: {}
|
||||
|
||||
pupa@3.1.0:
|
||||
dependencies:
|
||||
escape-goat: 4.0.0
|
||||
@@ -8398,6 +8812,16 @@ snapshots:
|
||||
|
||||
regenerator-runtime@0.14.1: {}
|
||||
|
||||
regex-recursion@6.0.2:
|
||||
dependencies:
|
||||
regex-utilities: 2.3.0
|
||||
|
||||
regex-utilities@2.3.0: {}
|
||||
|
||||
regex@6.0.1:
|
||||
dependencies:
|
||||
regex-utilities: 2.3.0
|
||||
|
||||
registry-auth-token@5.1.0:
|
||||
dependencies:
|
||||
'@pnpm/npm-conf': 2.3.1
|
||||
@@ -8586,6 +9010,17 @@ snapshots:
|
||||
interpret: 1.4.0
|
||||
rechoir: 0.6.2
|
||||
|
||||
shiki@3.14.0:
|
||||
dependencies:
|
||||
'@shikijs/core': 3.14.0
|
||||
'@shikijs/engine-javascript': 3.14.0
|
||||
'@shikijs/engine-oniguruma': 3.14.0
|
||||
'@shikijs/langs': 3.14.0
|
||||
'@shikijs/themes': 3.14.0
|
||||
'@shikijs/types': 3.14.0
|
||||
'@shikijs/vscode-textmate': 10.0.2
|
||||
'@types/hast': 3.0.4
|
||||
|
||||
siginfo@2.0.0: {}
|
||||
|
||||
signal-exit@3.0.7: {}
|
||||
@@ -8643,6 +9078,8 @@ snapshots:
|
||||
|
||||
sourcemap-codec@1.4.8: {}
|
||||
|
||||
space-separated-tokens@2.0.2: {}
|
||||
|
||||
spdx-correct@3.2.0:
|
||||
dependencies:
|
||||
spdx-expression-parse: 3.0.1
|
||||
@@ -8669,6 +9106,29 @@ snapshots:
|
||||
|
||||
stdin-discarder@0.2.2: {}
|
||||
|
||||
stream-markdown-parser@0.0.12:
|
||||
dependencies:
|
||||
markdown-it: 14.1.0
|
||||
markdown-it-container: 4.0.0
|
||||
markdown-it-emoji: 3.0.0
|
||||
markdown-it-footnote: 4.0.0
|
||||
markdown-it-ins: 4.0.0
|
||||
markdown-it-mark: 4.0.0
|
||||
markdown-it-sub: 2.0.0
|
||||
markdown-it-sup: 2.0.0
|
||||
markdown-it-task-checkbox: 1.0.6
|
||||
|
||||
stream-markdown@0.0.8(shiki@3.14.0):
|
||||
dependencies:
|
||||
shiki: 3.14.0
|
||||
|
||||
stream-monaco@0.0.2(monaco-editor@0.52.2):
|
||||
dependencies:
|
||||
'@shikijs/monaco': 3.14.0
|
||||
alien-signals: 2.0.8
|
||||
monaco-editor: 0.52.2
|
||||
shiki: 3.14.0
|
||||
|
||||
string-argv@0.3.2: {}
|
||||
|
||||
string-natural-compare@3.0.1: {}
|
||||
@@ -8700,6 +9160,11 @@ snapshots:
|
||||
dependencies:
|
||||
safe-buffer: 5.2.1
|
||||
|
||||
stringify-entities@4.0.4:
|
||||
dependencies:
|
||||
character-entities-html4: 2.1.0
|
||||
character-entities-legacy: 3.0.0
|
||||
|
||||
strip-ansi@6.0.1:
|
||||
dependencies:
|
||||
ansi-regex: 5.0.1
|
||||
@@ -8842,6 +9307,8 @@ snapshots:
|
||||
|
||||
treemate@0.3.11: {}
|
||||
|
||||
trim-lines@3.0.1: {}
|
||||
|
||||
tslib@2.8.1: {}
|
||||
|
||||
tsx@4.19.2:
|
||||
@@ -8866,6 +9333,8 @@ snapshots:
|
||||
|
||||
typescript@5.9.3: {}
|
||||
|
||||
uc.micro@2.1.0: {}
|
||||
|
||||
ufo@1.6.1: {}
|
||||
|
||||
uglify-js@3.19.3:
|
||||
@@ -8909,6 +9378,29 @@ snapshots:
|
||||
|
||||
uniq@1.0.1: {}
|
||||
|
||||
unist-util-is@6.0.1:
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
|
||||
unist-util-position@5.0.0:
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
|
||||
unist-util-stringify-position@4.0.0:
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
|
||||
unist-util-visit-parents@6.0.2:
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
unist-util-is: 6.0.1
|
||||
|
||||
unist-util-visit@5.0.0:
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
unist-util-is: 6.0.1
|
||||
unist-util-visit-parents: 6.0.2
|
||||
|
||||
universal-user-agent@6.0.1: {}
|
||||
|
||||
universalify@2.0.1: {}
|
||||
@@ -8999,6 +9491,16 @@ snapshots:
|
||||
evtd: 0.2.4
|
||||
vue: 3.5.22(typescript@5.9.3)
|
||||
|
||||
vfile-message@4.0.3:
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
unist-util-stringify-position: 4.0.0
|
||||
|
||||
vfile@6.0.3:
|
||||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
vfile-message: 4.0.3
|
||||
|
||||
vite-node@3.2.4(@types/node@24.6.2)(jiti@2.6.1)(sass@1.93.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.8.1):
|
||||
dependencies:
|
||||
cac: 6.7.14
|
||||
@@ -9107,6 +9609,16 @@ snapshots:
|
||||
dependencies:
|
||||
vue: 3.5.22(typescript@5.9.3)
|
||||
|
||||
vue-renderer-markdown@0.0.61-beta.5(shiki@3.14.0)(stream-markdown@0.0.8(shiki@3.14.0))(stream-monaco@0.0.2(monaco-editor@0.52.2))(vue@3.5.22(typescript@5.9.3)):
|
||||
dependencies:
|
||||
'@floating-ui/dom': 1.7.4
|
||||
stream-markdown-parser: 0.0.12
|
||||
vue: 3.5.22(typescript@5.9.3)
|
||||
optionalDependencies:
|
||||
shiki: 3.14.0
|
||||
stream-markdown: 0.0.8(shiki@3.14.0)
|
||||
stream-monaco: 0.0.2(monaco-editor@0.52.2)
|
||||
|
||||
vue-resize@2.0.0-alpha.1(vue@3.5.22(typescript@5.9.3)):
|
||||
dependencies:
|
||||
vue: 3.5.22(typescript@5.9.3)
|
||||
@@ -9248,3 +9760,5 @@ snapshots:
|
||||
yoctocolors-cjs@2.1.2: {}
|
||||
|
||||
yoctocolors-cjs@2.1.3: {}
|
||||
|
||||
zwitch@2.0.4: {}
|
||||
|
||||
@@ -142,8 +142,8 @@ const pluginsList = ref<STO.Plugins<PluginEnum>[]>([
|
||||
dot: false,
|
||||
progress: 0,
|
||||
size: {
|
||||
minWidth: 780,
|
||||
width: 980,
|
||||
minWidth: 1000,
|
||||
width: 1020,
|
||||
height: 800
|
||||
},
|
||||
window: {
|
||||
|
||||
@@ -10,10 +10,12 @@ import { initializePlatform } from '@/utils/PlatformConstants'
|
||||
import { startWebVitalObserver } from '@/utils/WebVitalsObserver'
|
||||
import { invoke } from '@tauri-apps/api/core'
|
||||
import { isMobile } from '@/utils/PlatformConstants'
|
||||
import { initMarkdownRenderer } from '@/plugins/robot/utils/markdown'
|
||||
import App from '@/App.vue'
|
||||
|
||||
initializePlatform()
|
||||
startWebVitalObserver()
|
||||
initMarkdownRenderer()
|
||||
import('@/services/webSocketAdapter')
|
||||
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<!-- 会话列表 -->
|
||||
<n-scrollbar
|
||||
ref="scrollbar"
|
||||
style="max-height: calc(100vh / var(--page-scale, 1) - 266px); padding-right: 8px"
|
||||
style="max-height: calc(100vh / var(--page-scale, 1) - 286px); padding-right: 8px"
|
||||
@scroll="handleScroll">
|
||||
<!-- 加载状态 -->
|
||||
<div v-if="loading && pageNo === 1" class="flex justify-center items-center py-20px">
|
||||
@@ -123,7 +123,7 @@
|
||||
</n-flex>
|
||||
|
||||
<!-- 底部选项栏 -->
|
||||
<n-flex data-tauri-drag-region vertical :size="8" class="m-[auto_0_10px_0]">
|
||||
<n-flex data-tauri-drag-region vertical :size="8" class="m-[auto_0_0_0]">
|
||||
<!-- 管理按钮行 -->
|
||||
<n-flex :size="4" align="center" justify="space-between">
|
||||
<n-flex :size="4" align="center">
|
||||
@@ -160,7 +160,7 @@
|
||||
<!-- 操作按钮行 -->
|
||||
<n-flex :size="4" align="center" justify="space-between">
|
||||
<!-- 提示信息或新建按钮 -->
|
||||
<div v-if="!hasRoles" class="flex-1 text-(11px #ff6b6b) text-center">请先创建角色</div>
|
||||
<div v-if="!hasRoles" class="flex-1 text-(11px #d5304f) text-center">请先创建角色</div>
|
||||
<div
|
||||
v-else
|
||||
@click="add"
|
||||
|
||||
22
src/plugins/robot/utils/markdown.ts
Normal file
22
src/plugins/robot/utils/markdown.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Vue Renderer Markdown 插件初始化
|
||||
* 配置全局 Shiki 代码高亮主题
|
||||
*/
|
||||
|
||||
import { setCustomComponents, MarkdownCodeBlockNode } from 'vue-renderer-markdown'
|
||||
import { h } from 'vue'
|
||||
|
||||
// 配置默认的代码块组件和主题
|
||||
export function initMarkdownRenderer() {
|
||||
// 使用 MarkdownCodeBlockNode 替换默认的代码块组件,并配置 vitesse-dark 主题
|
||||
setCustomComponents({
|
||||
code_block: (props: any) =>
|
||||
h(MarkdownCodeBlockNode, {
|
||||
...props,
|
||||
darkTheme: 'vitesse-dark',
|
||||
lightTheme: 'vitesse-light',
|
||||
isDark: true, // 默认使用深色主题
|
||||
showHeader: false // 隐藏代码块顶部操作栏
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -99,7 +99,7 @@
|
||||
</template>
|
||||
<n-flex vertical :size="12">
|
||||
<p class="text-(14px [--chat-text-color]) font-500">确定要删除当前会话吗?</p>
|
||||
<p class="text-(12px red-500)">删除后将无法恢复!</p>
|
||||
<p class="text-(12px #d5304f)">删除后将无法恢复!</p>
|
||||
|
||||
<!-- 是否同时删除消息选项 -->
|
||||
<n-checkbox v-model:checked="deleteWithMessages" size="small">
|
||||
@@ -127,112 +127,111 @@
|
||||
<div class="h-1px bg-[--line-color]"></div>
|
||||
|
||||
<!-- 聊天信息框 -->
|
||||
<div
|
||||
ref="chatContainerRef"
|
||||
:class="{ 'shadow-inner': page.shadow }"
|
||||
class="chat-messages-container w-full p-[16px_16px] box-border overflow-y-auto">
|
||||
<!-- 欢迎消息 -->
|
||||
<n-flex :size="6" class="mb-12px">
|
||||
<n-avatar class="rounded-8px" :src="getModelAvatar(selectedModel)" :fallback-src="getDefaultAvatar()" />
|
||||
<n-flex vertical justify="space-between">
|
||||
<p class="text-(12px [--chat-text-color])">
|
||||
{{ selectedModel ? selectedModel.name : 'GPT-4' }}
|
||||
<n-tag
|
||||
v-if="selectedModel"
|
||||
:type="selectedModel.status === 0 ? 'success' : 'error'"
|
||||
size="tiny"
|
||||
class="ml-8px">
|
||||
{{ selectedModel.status === 0 ? '可用' : '不可用' }}
|
||||
</n-tag>
|
||||
</p>
|
||||
|
||||
<!-- 气泡样式 -->
|
||||
<ContextMenu>
|
||||
<div style="white-space: pre-wrap" class="bubble select-text">
|
||||
<span v-html="'你好,我是' + selectedModel?.name + ',很高兴为您服务。'"></span>
|
||||
</div>
|
||||
</ContextMenu>
|
||||
</n-flex>
|
||||
</n-flex>
|
||||
|
||||
<!-- 加载状态 -->
|
||||
<div v-if="loadingMessages" class="flex justify-center items-center py-20px">
|
||||
<n-spin size="small" />
|
||||
<span class="ml-10px text-(12px #909090)">加载消息中...</span>
|
||||
</div>
|
||||
|
||||
<!-- 消息列表 -->
|
||||
<n-flex vertical :size="12">
|
||||
<template v-for="(message, index) in messageList" :key="index">
|
||||
<!-- 用户消息 -->
|
||||
<n-flex v-if="message.type === 'user'" :size="6" justify="end" class="message-item group">
|
||||
<n-flex vertical align="end" class="max-w-70%">
|
||||
<n-flex align="center" :size="8">
|
||||
<p class="text-(12px #909090)">我</p>
|
||||
<!-- 删除按钮 -->
|
||||
<n-popconfirm
|
||||
v-if="message.id"
|
||||
@positive-click="() => handleDeleteMessage(message.id!, index)"
|
||||
positive-text="删除"
|
||||
negative-text="取消">
|
||||
<template #trigger>
|
||||
<div
|
||||
class="delete-btn opacity-0 group-hover:opacity-100 cursor-pointer text-#909090 hover:text-red-500 transition-all"
|
||||
title="删除消息">
|
||||
<svg class="w-14px h-14px"><use href="#delete"></use></svg>
|
||||
</div>
|
||||
</template>
|
||||
<p>确定要删除这条消息吗?</p>
|
||||
</n-popconfirm>
|
||||
</n-flex>
|
||||
<ContextMenu>
|
||||
<div style="white-space: pre-wrap" class="bubble bubble-user select-text">
|
||||
{{ message.content }}
|
||||
</div>
|
||||
</ContextMenu>
|
||||
</n-flex>
|
||||
<div :class="{ 'shadow-inner': page.shadow }" class="chat-messages-container w-full box-border flex flex-col">
|
||||
<n-scrollbar ref="scrollbarRef" class="chat-scrollbar flex-1 min-h-0" trigger="none">
|
||||
<div class="p-[16px_16px] box-border">
|
||||
<!-- 欢迎消息 -->
|
||||
<div class="flex gap-12px mb-12px">
|
||||
<n-avatar
|
||||
class="rounded-8px"
|
||||
:src="userStore.userInfo?.avatar ? AvatarUtils.getAvatarUrl(userStore.userInfo.avatar) : ''"
|
||||
class="rounded-8px flex-shrink-0"
|
||||
:src="getModelAvatar(selectedModel)"
|
||||
:fallback-src="getDefaultAvatar()" />
|
||||
</n-flex>
|
||||
|
||||
<!-- AI消息 -->
|
||||
<n-flex v-else :size="6" class="message-item group">
|
||||
<n-avatar class="rounded-8px" :src="getModelAvatar(selectedModel)" :fallback-src="getDefaultAvatar()" />
|
||||
<n-flex vertical class="max-w-70%">
|
||||
<n-flex align="center" :size="8">
|
||||
<p class="text-(12px [--chat-text-color])">
|
||||
{{ selectedModel ? selectedModel.name : 'AI' }}
|
||||
</p>
|
||||
<!-- 删除按钮 -->
|
||||
<n-popconfirm
|
||||
v-if="message.id"
|
||||
@positive-click="() => handleDeleteMessage(message.id!, index)"
|
||||
positive-text="删除"
|
||||
negative-text="取消">
|
||||
<template #trigger>
|
||||
<div
|
||||
class="delete-btn opacity-0 group-hover:opacity-100 cursor-pointer text-#909090 hover:text-red-500 transition-all"
|
||||
title="删除消息">
|
||||
<svg class="w-14px h-14px"><use href="#delete"></use></svg>
|
||||
</div>
|
||||
</template>
|
||||
<p>确定要删除这条消息吗?</p>
|
||||
</n-popconfirm>
|
||||
</n-flex>
|
||||
<n-flex vertical justify="space-between">
|
||||
<p class="text-(12px [--chat-text-color])">
|
||||
{{ selectedModel ? selectedModel.name : 'GPT-4' }}
|
||||
<n-tag
|
||||
v-if="selectedModel"
|
||||
:type="selectedModel.status === 0 ? 'success' : 'error'"
|
||||
size="tiny"
|
||||
class="ml-8px">
|
||||
{{ selectedModel.status === 0 ? '可用' : '不可用' }}
|
||||
</n-tag>
|
||||
</p>
|
||||
<ContextMenu>
|
||||
<div style="white-space: pre-wrap" class="bubble select-text">
|
||||
<span v-if="message.streaming" class="streaming-cursor">{{ message.content }}</span>
|
||||
<span v-else>{{ message.content }}</span>
|
||||
<div class="bubble select-text">
|
||||
<MarkdownRender
|
||||
:content="`你好,我是${selectedModel?.name},很高兴为您服务。`"
|
||||
class="markdown-content" />
|
||||
</div>
|
||||
</ContextMenu>
|
||||
</n-flex>
|
||||
</n-flex>
|
||||
</template>
|
||||
</n-flex>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 加载状态 -->
|
||||
<div v-if="loadingMessages" class="flex justify-center items-center py-20px text-(12px #909090)">
|
||||
<n-spin size="small" />
|
||||
<span class="ml-10px">加载消息中...</span>
|
||||
</div>
|
||||
|
||||
<!-- 消息列表 -->
|
||||
<div
|
||||
v-for="(message, index) in messageList"
|
||||
:key="message.id ?? `message-${index}`"
|
||||
class="message-row group flex flex-col mb-12px"
|
||||
:data-message-index="index"
|
||||
:data-message-id="message.id">
|
||||
<div class="flex items-start gap-10px" :class="message.type === 'user' ? 'flex-row-reverse' : ''">
|
||||
<n-avatar
|
||||
v-if="message.type === 'user'"
|
||||
:size="34"
|
||||
class="select-none rounded-8px flex-shrink-0"
|
||||
:class="message.type === 'user' ? 'ml-2px' : 'mr-2px'"
|
||||
:src="userStore.userInfo?.avatar ? AvatarUtils.getAvatarUrl(userStore.userInfo.avatar) : ''"
|
||||
:fallback-src="getDefaultAvatar()" />
|
||||
<n-avatar
|
||||
v-else
|
||||
:size="34"
|
||||
class="select-none rounded-8px flex-shrink-0"
|
||||
:class="message.type === 'assistant' ? 'mr-2px' : 'ml-2px'"
|
||||
:src="getModelAvatar(selectedModel)"
|
||||
:fallback-src="getDefaultAvatar()" />
|
||||
<n-flex
|
||||
vertical
|
||||
:size="6"
|
||||
class="flex-1"
|
||||
:class="message.type === 'user' ? 'items-end' : 'items-start'">
|
||||
<n-flex
|
||||
align="center"
|
||||
:size="8"
|
||||
class="select-none text-(12px #909090)"
|
||||
:class="message.type === 'user' ? 'flex-row-reverse' : ''">
|
||||
<p>
|
||||
{{ message.type === 'user' ? '我' : selectedModel ? selectedModel.name : 'AI' }}
|
||||
</p>
|
||||
<n-popconfirm
|
||||
v-if="message.id"
|
||||
@positive-click="() => handleDeleteMessage(message.id!, index)"
|
||||
positive-text="删除"
|
||||
negative-text="取消">
|
||||
<template #trigger>
|
||||
<div
|
||||
class="delete-btn opacity-0 group-hover:opacity-100 cursor-pointer text-#909090 hover:text-#d5304f transition-all"
|
||||
title="删除消息">
|
||||
<svg class="w-14px h-14px"><use href="#delete"></use></svg>
|
||||
</div>
|
||||
</template>
|
||||
<p>确定要删除这条消息吗?</p>
|
||||
</n-popconfirm>
|
||||
</n-flex>
|
||||
<ContextMenu>
|
||||
<div
|
||||
class="bubble select-text"
|
||||
:class="message.type === 'user' ? 'bubble-user' : 'bubble-ai'"
|
||||
style="white-space: pre-wrap">
|
||||
<template v-if="message.type === 'user'">
|
||||
{{ message.content }}
|
||||
</template>
|
||||
<template v-else>
|
||||
<MarkdownRender :content="message.content" class="markdown-content" />
|
||||
</template>
|
||||
</div>
|
||||
</ContextMenu>
|
||||
</n-flex>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</n-scrollbar>
|
||||
</div>
|
||||
<div class="h-1px bg-[--line-color]"></div>
|
||||
<!-- 下半部分输入框以及功能栏 -->
|
||||
<div class="chat-input-container min-h-180px">
|
||||
@@ -432,12 +431,14 @@
|
||||
</main>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { type InputInst, NIcon, NPagination, NTag, NEmpty, NSpin, NAvatar } from 'naive-ui'
|
||||
import { type InputInst, type ScrollbarInst, NIcon, NPagination, NTag, NEmpty, NSpin, NAvatar } from 'naive-ui'
|
||||
import { Icon } from '@iconify/vue'
|
||||
import MsgInput from '@/components/rightBox/MsgInput.vue'
|
||||
import { useMitt } from '@/hooks/useMitt.ts'
|
||||
import { useSettingStore } from '@/stores/setting.ts'
|
||||
import { useUserStore } from '@/stores/user.ts'
|
||||
import MarkdownRender from 'vue-renderer-markdown'
|
||||
import 'vue-renderer-markdown/index.css'
|
||||
import {
|
||||
modelPage,
|
||||
conversationCreateMy,
|
||||
@@ -479,8 +480,9 @@ interface Message {
|
||||
}
|
||||
|
||||
const messageList = ref<Message[]>([])
|
||||
const chatContainerRef = ref<HTMLElement | null>(null)
|
||||
const scrollbarRef = ref<ScrollbarInst | null>(null)
|
||||
const loadingMessages = ref(false) // 消息加载状态
|
||||
|
||||
const showDeleteChatConfirm = ref(false) // 删除会话确认框显示状态
|
||||
const deleteWithMessages = ref(false) // 是否同时删除消息
|
||||
const showRolePopover = ref(false) // 角色选择弹窗显示状态
|
||||
@@ -496,9 +498,9 @@ const hasAvailableRoles = computed(() => {
|
||||
// 滚动到底部
|
||||
const scrollToBottom = () => {
|
||||
nextTick(() => {
|
||||
if (chatContainerRef.value) {
|
||||
chatContainerRef.value.scrollTop = chatContainerRef.value.scrollHeight
|
||||
}
|
||||
const scrollbar = scrollbarRef.value
|
||||
if (!scrollbar) return
|
||||
scrollbar.scrollTo({ top: Number.MAX_SAFE_INTEGER })
|
||||
})
|
||||
}
|
||||
|
||||
@@ -571,7 +573,6 @@ const sendAIMessage = async (content: string, model: any) => {
|
||||
messageList.value.push({
|
||||
type: 'assistant',
|
||||
content: '',
|
||||
streaming: true,
|
||||
timestamp: Date.now()
|
||||
})
|
||||
|
||||
@@ -602,13 +603,11 @@ const sendAIMessage = async (content: string, model: any) => {
|
||||
}
|
||||
},
|
||||
onDone: () => {
|
||||
messageList.value[aiMessageIndex].streaming = false
|
||||
scrollToBottom()
|
||||
},
|
||||
onError: (error: string) => {
|
||||
console.error('❌ AI流式响应错误:', error)
|
||||
messageList.value[aiMessageIndex].content = '抱歉,发生了错误:' + error
|
||||
messageList.value[aiMessageIndex].streaming = false
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -834,7 +833,6 @@ const loadMessages = async (conversationId: string) => {
|
||||
messageList.value.push({
|
||||
type: msg.type,
|
||||
content: msg.content || '',
|
||||
streaming: false,
|
||||
timestamp: msg.createTime,
|
||||
id: msg.id,
|
||||
replyId: msg.replyId,
|
||||
@@ -1071,8 +1069,10 @@ onMounted(() => {
|
||||
/* 聊天消息区域 */
|
||||
.chat-messages-container {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
min-height: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* 输入框容器固定在底部 */
|
||||
@@ -1088,16 +1088,9 @@ onMounted(() => {
|
||||
@apply size-18px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@apply bg-[--chat-hover-color];
|
||||
}
|
||||
|
||||
&.right-btn-danger:hover {
|
||||
@apply border-red-500 bg-red-50;
|
||||
svg {
|
||||
@apply color-red-500;
|
||||
}
|
||||
}
|
||||
// &:hover {
|
||||
// @apply bg-[--chat-hover-color];
|
||||
// }
|
||||
|
||||
&.right-btn-disabled {
|
||||
@apply opacity-50 cursor-not-allowed;
|
||||
@@ -1116,29 +1109,204 @@ onMounted(() => {
|
||||
|
||||
/* 消息气泡样式 */
|
||||
.bubble-user {
|
||||
background: var(--primary-color, #18a058);
|
||||
background: var(--primary-color, #13987f);
|
||||
color: white;
|
||||
padding: 10px 14px;
|
||||
border-radius: 12px;
|
||||
max-width: 100%;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
/* 流式光标效果 */
|
||||
.streaming-cursor::after {
|
||||
content: '▋';
|
||||
animation: blink 1s infinite;
|
||||
margin-left: 2px;
|
||||
/* AI 消息气泡样式 */
|
||||
.bubble-ai {
|
||||
display: inline-flex;
|
||||
flex-direction: column;
|
||||
width: -moz-fit-content;
|
||||
width: fit-content;
|
||||
max-width: 88%;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
0%,
|
||||
50% {
|
||||
opacity: 1;
|
||||
.bubble-ai .markdown-content {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
word-break: break-word;
|
||||
overflow-wrap: break-word;
|
||||
line-break: strict;
|
||||
}
|
||||
|
||||
.bubble-ai .markdown-content :deep(*) {
|
||||
max-width: 100%;
|
||||
word-break: break-word;
|
||||
overflow-wrap: break-word;
|
||||
line-break: strict;
|
||||
}
|
||||
|
||||
.bubble-ai .markdown-content :deep(img) {
|
||||
height: auto;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.bubble-ai .markdown-content :deep(table) {
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.bubble-ai .markdown-content :deep(th),
|
||||
.bubble-ai .markdown-content :deep(td) {
|
||||
word-break: break-word;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
/* Markdown 内容容器 - 移除继承的气泡背景 */
|
||||
.bubble {
|
||||
.markdown-content {
|
||||
background: transparent !important;
|
||||
}
|
||||
51%,
|
||||
100% {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* Markdown 内容样式 */
|
||||
.markdown-content {
|
||||
background: transparent !important;
|
||||
|
||||
// 移除库默认的背景色
|
||||
:deep(.markdown-render) {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
// 代码块容器样式
|
||||
:deep(.markdown-code-block-node) {
|
||||
margin: 8px 0;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
background: #303030 !important;
|
||||
}
|
||||
|
||||
// 代码块内容区域
|
||||
:deep(.code-block-content) {
|
||||
border-radius: 8px;
|
||||
background: transparent !important;
|
||||
display: inline-block;
|
||||
width: -moz-fit-content;
|
||||
width: fit-content;
|
||||
max-width: 100%;
|
||||
overflow: visible;
|
||||
line-break: strict;
|
||||
word-break: break-word;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
// 代码块包装器
|
||||
:deep(.shiki-wrapper),
|
||||
:deep(.shiki-container),
|
||||
:deep(.shiki) {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
// 代码行容器
|
||||
:deep(.line) {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
// pre 标签样式
|
||||
:deep(pre) {
|
||||
background: var(--code-bg-color, #1e1e1e) !important;
|
||||
border-radius: 8px;
|
||||
padding: 16px !important;
|
||||
margin: 8px 0;
|
||||
width: -moz-fit-content;
|
||||
width: fit-content;
|
||||
max-width: 100%;
|
||||
overflow: visible;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
overflow-wrap: break-word;
|
||||
line-break: strict;
|
||||
|
||||
code {
|
||||
background: transparent !important;
|
||||
padding: 0 !important;
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
color: #d4d4d4;
|
||||
word-break: break-word;
|
||||
overflow-wrap: break-word;
|
||||
line-break: strict;
|
||||
}
|
||||
}
|
||||
|
||||
// 行内代码样式(需要保留背景)
|
||||
:deep(p code),
|
||||
:deep(li code) {
|
||||
background: rgba(110, 118, 129, 0.2) !important;
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
|
||||
font-size: 13px;
|
||||
color: var(--chat-text-color);
|
||||
}
|
||||
|
||||
// 移除其他元素的白色背景
|
||||
:deep(div),
|
||||
:deep(span) {
|
||||
&:not(.inline-code-wrapper) {
|
||||
background: transparent !important;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(p) {
|
||||
margin: 4px 0;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
:deep(a) {
|
||||
color: var(--primary-color, #13987f);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
:deep(ul),
|
||||
:deep(ol) {
|
||||
margin: 8px 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
:deep(li) {
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
:deep(blockquote) {
|
||||
border-left: 4px solid var(--primary-color, #13987f);
|
||||
padding-left: 12px;
|
||||
margin: 8px 0;
|
||||
color: var(--chat-text-color);
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
:deep(h1),
|
||||
:deep(h2),
|
||||
:deep(h3),
|
||||
:deep(h4),
|
||||
:deep(h5),
|
||||
:deep(h6) {
|
||||
margin: 12px 0 8px 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
:deep(table) {
|
||||
border-collapse: collapse;
|
||||
margin: 8px 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
:deep(th),
|
||||
:deep(td) {
|
||||
border: 1px solid var(--line-color);
|
||||
padding: 6px 12px;
|
||||
}
|
||||
|
||||
:deep(th) {
|
||||
background: var(--chat-hover-color);
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -169,6 +169,11 @@ export default defineConfig(({ mode }: ConfigEnv) => {
|
||||
}
|
||||
},
|
||||
|
||||
// 优化依赖配置
|
||||
optimizeDeps: {
|
||||
include: ['vue-renderer-markdown', 'shiki', 'shiki/themes/vitesse-dark.mjs']
|
||||
},
|
||||
|
||||
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
|
||||
//
|
||||
// 1. prevent vite from obscuring rust errors
|
||||
|
||||
Reference in New Issue
Block a user