chore(deps): bump dependencies

This commit is contained in:
Neko Ayaka
2025-07-22 14:28:27 +08:00
parent 88abef140d
commit 50371c580a
27 changed files with 2011 additions and 2474 deletions
@@ -11,14 +11,14 @@
"typecheck": "vue-tsc --noEmit"
},
"dependencies": {
"@velin-dev/core": "^0.2.5",
"@velin-dev/vue": "^0.2.5",
"@velin-dev/core": "^0.2.6",
"@velin-dev/vue": "^0.2.6",
"pinia": "^3.0.3",
"vue": "^3.5.17"
},
"devDependencies": {
"@iconify/vue": "^5.0.0",
"@types/node": "^24.0.13",
"@types/node": "^24.0.15",
"@unocss/reset": "^66.3.3",
"@vitejs/plugin-vue": "^6.0.0",
"typescript": "~5.8.3",
@@ -28,6 +28,6 @@
"vite": "catalog:rolldown-vite",
"vite-plugin-vue-devtools": "^7.7.7",
"vite-plugin-vue-layouts": "^0.11.0",
"vue-tsc": "^2.2.12"
"vue-tsc": "^3.0.3"
}
}
+2 -2
View File
@@ -25,7 +25,7 @@
"@xsai/generate-text": "catalog:",
"@xsai/shared-chat": "catalog:",
"@xsai/stream-text": "catalog:",
"es-toolkit": "^1.39.6",
"es-toolkit": "^1.39.7",
"vue": "^3.5.17"
},
"devDependencies": {
@@ -36,6 +36,6 @@
"unplugin-vue-router": "^0.14.0",
"vite": "catalog:rolldown-vite",
"vue-router": "^4.5.1",
"vue-tsc": "^3.0.1"
"vue-tsc": "^3.0.3"
}
}
+16 -16
View File
@@ -20,7 +20,7 @@
"dependencies": {
"@date-fns/utc": "^2.1.0",
"@formkit/auto-animate": "^0.8.2",
"@huggingface/transformers": "^3.6.1",
"@huggingface/transformers": "^3.6.3",
"@moeru/std": "catalog:",
"@proj-airi/audio": "workspace:^",
"@proj-airi/ccc": "workspace:^",
@@ -33,14 +33,14 @@
"@proj-airi/ui": "workspace:^",
"@ricky0123/vad-web": "^0.0.24",
"@stdlib/string-base-kebabcase": "^0.2.2",
"@tauri-apps/api": "^2.6.0",
"@tauri-apps/api": "^2.7.0",
"@tauri-apps/plugin-global-shortcut": "^2.3.0",
"@tauri-apps/plugin-os": "^2.3.0",
"@tauri-apps/plugin-positioner": "^2.3.0",
"@tauri-apps/plugin-window-state": "^2.3.0",
"@tauri-apps/plugin-window-state": "^2.4.0",
"@tresjs/cientos": "^4.3.1",
"@tresjs/core": "^4.3.6",
"@types/audioworklet": "^0.0.77",
"@types/audioworklet": "^0.0.81",
"@vueuse/core": "^13.5.0",
"@vueuse/shared": "^13.5.0",
"@xsai-ext/providers-cloud": "catalog:",
@@ -56,7 +56,7 @@
"culori": "^4.0.2",
"date-fns": "^4.1.0",
"drizzle-kit": "^0.31.4",
"drizzle-orm": "^0.44.2",
"drizzle-orm": "^0.44.3",
"jszip": "^3.10.1",
"localforage": "^1.10.0",
"node-vibrant": "^4.0.3",
@@ -70,7 +70,7 @@
"reka-ui": "^2.3.2",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.2",
"shiki": "^3.7.0",
"shiki": "^3.8.1",
"three": "^0.178.0",
"unified": "^11.0.5",
"unspeech": "^0.1.7",
@@ -78,11 +78,11 @@
"vaul-vue": "^0.4.1",
"vue": "^3.5.17",
"vue-demi": "^0.14.10",
"vue-i18n": "^11.1.9",
"vue-i18n": "^11.1.10",
"vue-router": "^4.5.1",
"xsschema": "catalog:",
"yauzl": "^3.2.0",
"zod": "^3.25.74"
"zod": "^3.25.76"
},
"devDependencies": {
"@fontsource-variable/dm-sans": "^5.2.6",
@@ -95,12 +95,12 @@
"@fontsource/kiwi-maru": "^5.2.6",
"@fontsource/m-plus-rounded-1c": "^5.2.8",
"@fontsource/sniglet": "^5.2.6",
"@iconify-json/carbon": "^1.2.10",
"@iconify-json/carbon": "^1.2.11",
"@iconify-json/eos-icons": "^1.2.2",
"@iconify-json/lucide": "^1.2.57",
"@iconify-json/mingcute": "^1.2.3",
"@iconify-json/ph": "^1.2.2",
"@iconify-json/simple-icons": "^1.2.43",
"@iconify-json/simple-icons": "^1.2.44",
"@iconify-json/solar": "^1.2.2",
"@iconify-json/svg-spinners": "^1.2.2",
"@iconify-json/vscode-icons": "^1.2.23",
@@ -110,29 +110,29 @@
"@proj-airi/ui-transitions": "workspace:^",
"@proj-airi/unplugin-fetch": "^0.1.6",
"@proj-airi/unplugin-live2d-sdk": "^0.1.5",
"@shikijs/markdown-it": "^3.7.0",
"@tauri-apps/cli": "^2.6.2",
"@shikijs/markdown-it": "^3.8.1",
"@tauri-apps/cli": "^2.7.1",
"@types/culori": "^4.0.0",
"@types/nprogress": "^0.2.3",
"@types/three": "^0.178.1",
"@types/yauzl": "^2.10.3",
"@unocss/reset": "^66.3.3",
"@vitejs/plugin-vue": "^6.0.0",
"@vue-macros/volar": "^3.0.0-beta.15",
"@vue-macros/volar": "^3.0.0-beta.17",
"@vueuse/motion": "^3.0.3",
"@xsai-transformers/embed": "^0.0.7",
"cac": "^6.7.14",
"execa": "^9.6.0",
"less": "^4.3.0",
"less": "^4.4.0",
"unocss-preset-scrollbar": "^3.2.0",
"unplugin-info": "^1.2.2",
"unplugin-vue-macros": "^2.14.5",
"unplugin-vue-router": "^0.14.0",
"unplugin-yaml": "^3.0.1",
"unplugin-yaml": "^3.0.2",
"vite": "catalog:rolldown-vite",
"vite-bundle-visualizer": "^1.2.1",
"vite-plugin-vue-devtools": "^7.7.7",
"vite-plugin-vue-layouts": "^0.11.0",
"vue-tsc": "^3.0.1"
"vue-tsc": "^3.0.3"
}
}
@@ -1,7 +1,6 @@
<script setup lang="ts">
import { useMarkdown } from '@proj-airi/stage-ui/composables'
import { useChatStore } from '@proj-airi/stage-ui/stores'
import { useElementBounding, useScroll } from '@vueuse/core'
import { storeToRefs } from 'pinia'
import { nextTick, ref } from 'vue'
import { useI18n } from 'vue-i18n'
@@ -10,72 +9,70 @@ const chatHistoryRef = ref<HTMLDivElement>()
const { t } = useI18n()
const { messages, sending } = storeToRefs(useChatStore())
const bounding = useElementBounding(chatHistoryRef, { immediate: true, windowScroll: true, windowResize: true })
const { y: chatHistoryContainerY } = useScroll(chatHistoryRef)
const { process } = useMarkdown()
const { onBeforeMessageComposed, onTokenLiteral } = useChatStore()
onBeforeMessageComposed(async () => {
// Scroll down to the new sent message
await nextTick()
bounding.update()
chatHistoryContainerY.value = bounding.height.value
nextTick().then(() => {
if (!chatHistoryRef.value)
return
chatHistoryRef.value.scrollTop = chatHistoryRef.value.scrollHeight
})
})
onTokenLiteral(async () => {
// Scroll down to the new responding message
await nextTick()
bounding.update()
chatHistoryContainerY.value = bounding.height.value
nextTick().then(() => {
if (!chatHistoryRef.value)
return
chatHistoryRef.value.scrollTop = chatHistoryRef.value.scrollHeight
})
})
</script>
<template>
<div py="1" flex="~ col" h-full rounded="lg" overflow-hidden>
<div relative px="<sm:2" py="<sm:2" flex="~ col" rounded="lg" overflow-hidden>
<div flex-1 /> <!-- spacer -->
<div
ref="chatHistoryRef" v-auto-animate flex="~ col"
scrollbar="~ w-2 track-color-transparent thumb-color-primary-300 rounded" h-full w-full overflow-scroll
>
<div ref="chatHistoryRef" v-auto-animate h-full w-full flex="~ col" overflow-scroll>
<div flex-1 /> <!-- spacer -->
<div v-for="(message, index) in messages" :key="index" mb-2>
<div v-if="message.role === 'error'" flex mr="12">
<div
flex="~ col" border="4 solid violet-200/50 dark:violet-500/50" shadow="md violet-200/50 dark:none"
flex="~ col" border="2 solid violet-200/50 dark:violet-500/50" shadow="md violet-200/50 dark:none"
min-w-20 rounded-lg px-2 py-1 h="unset <sm:fit" bg="<md:violet-500/25"
>
<div flex="~ row" gap-2>
<div flex-1>
<span text-xs text="violet-400/90 dark:violet-600/90" font-semibold class="inline <sm:hidden">{{
t('stage.chat.message.character-name.core-system') }}</span>
<span text-xs text="violet-400/90 dark:violet-600/90" font-normal class="inline <sm:hidden">{{ t('stage.chat.message.character-name.core-system') }}</span>
</div>
<div i-solar:danger-triangle-bold-duotone text-violet-500 />
</div>
<div v-if="sending" i-eos-icons:three-dots-loading />
<div v-if="sending && index === messages.length - 1" i-eos-icons:three-dots-loading />
<div
v-else class="markdown-content text-violet-500" text="base <sm:xs"
v-else class="markdown-content break-words text-violet-500" text="base <sm:xs"
v-html="process(message.content as string)"
/>
</div>
</div>
<div v-if="message.role === 'assistant'" flex mr="12">
<div
flex="~ col" border="4 solid primary-200" shadow="md primary-200/50" min-w-20 rounded-lg px-2 py-1 h="fit"
bg="primary-100"
flex="~ col" border="2 solid primary-200/50 dark:primary-500/50" shadow="md primary-200/50 dark:none" min-w-20
rounded-lg px-2 py-1 h="unset <sm:fit" bg="<md:primary-500/25"
>
<div>
<span text-xs text="primary-400/90" font-semibold class="inline hidden">AIRI</span>
<span text-xs text="primary-400/90 dark:primary-600/90" font-normal class="inline <sm:hidden">{{ t('stage.chat.message.character-name.airi') }}</span>
</div>
<div
v-if="message.content" class="markdown-content" text="xs primary-400"
>
<div v-if="message.content && index === messages.length - 1" class="markdown-content" text="xs primary-400">
<div v-for="(slice, sliceIndex) in message.slices" :key="sliceIndex">
<div v-if="slice.type === 'tool-call'">
<div
p="1" border="1 solid primary-200" rounded-lg m="y-1" bg="primary-100"
>
Called: <code>{{ slice.toolCall.function.name }}</code>
Called: <code>{{ slice.toolCall.toolName }}</code>
</div>
</div>
<div v-else-if="slice.type === 'tool-call-result'" /> <!-- this line should be unreachable -->
@@ -85,18 +82,15 @@ onTokenLiteral(async () => {
<div v-else i-eos-icons:three-dots-loading />
</div>
</div>
<div v-else-if="message.role === 'user'" flex="~">
<div v-else-if="message.role === 'user'" flex="~ row-reverse" ml="12">
<div
flex="~ col" border="4 solid cyan-200" shadow="md cyan-200/50" px="2" h="fit" min-w-20 rounded-lg px-2
py-1 bg="cyan-100"
flex="~ col" border="2 solid cyan-200/50 dark:cyan-500/50" shadow="md cyan-200/50 dark:none" px="2"
h="unset <sm:fit" min-w-20 rounded-lg px-2 py-1 bg="<md:cyan-500/25"
>
<div>
<span text-xs text="cyan-600/90" font-semibold class="hidden">You</span>
<span text-xs text="cyan-400/90 dark:cyan-600/90" font-normal class="inline <sm:hidden">{{ t('stage.chat.message.character-name.you') }}</span>
</div>
<div
v-if="message.content" class="markdown-content" text="xs cyan-600"
v-html="process(message.content as string)"
/>
<div v-if="message.content" class="markdown-content break-words" text="base <sm:xs" v-html="process(message.content as string)" />
<div v-else />
</div>
</div>
+13 -13
View File
@@ -19,7 +19,7 @@
"dependencies": {
"@date-fns/utc": "^2.1.0",
"@formkit/auto-animate": "^0.8.2",
"@huggingface/transformers": "^3.6.1",
"@huggingface/transformers": "^3.6.3",
"@llama-flow/core": "^0.4.4",
"@moeru/std": "catalog:",
"@proj-airi/audio": "workspace:^",
@@ -56,7 +56,7 @@
"date-fns": "^4.1.0",
"driver.js": "^1.3.6",
"drizzle-kit": "^0.31.4",
"drizzle-orm": "^0.44.2",
"drizzle-orm": "^0.44.3",
"gpuu": "^1.0.4",
"jszip": "^3.10.1",
"localforage": "^1.10.0",
@@ -71,7 +71,7 @@
"reka-ui": "^2.3.2",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.2",
"shiki": "^3.7.0",
"shiki": "^3.8.1",
"three": "^0.178.0",
"unified": "^11.0.5",
"unspeech": "^0.1.7",
@@ -79,20 +79,20 @@
"vaul-vue": "^0.4.1",
"vue": "^3.5.17",
"vue-demi": "^0.14.10",
"vue-i18n": "^11.1.9",
"vue-i18n": "^11.1.10",
"vue-router": "^4.5.1",
"vue-sonner": "^2.0.1",
"vue-sonner": "^2.0.2",
"workbox-window": "^7.3.0",
"xsschema": "catalog:",
"yauzl": "^3.2.0",
"zod": "^3.25.74"
"zod": "^3.25.76"
},
"devDependencies": {
"@iconify-json/carbon": "^1.2.10",
"@iconify-json/carbon": "^1.2.11",
"@iconify-json/eos-icons": "^1.2.2",
"@iconify-json/lucide": "^1.2.57",
"@iconify-json/mingcute": "^1.2.3",
"@iconify-json/simple-icons": "^1.2.43",
"@iconify-json/simple-icons": "^1.2.44",
"@iconify-json/solar": "^1.2.2",
"@iconify-json/svg-spinners": "^1.2.2",
"@iconify-json/vscode-icons": "^1.2.23",
@@ -100,15 +100,15 @@
"@proj-airi/lobe-icons": "^1.0.8",
"@proj-airi/unplugin-fetch": "^0.1.6",
"@proj-airi/unplugin-live2d-sdk": "^0.1.5",
"@shikijs/markdown-it": "^3.7.0",
"@types/audioworklet": "^0.0.77",
"@shikijs/markdown-it": "^3.8.1",
"@types/audioworklet": "^0.0.81",
"@types/culori": "^4.0.0",
"@types/nprogress": "^0.2.3",
"@types/three": "^0.178.1",
"@types/yauzl": "^2.10.3",
"@unocss/reset": "^66.3.3",
"@vitejs/plugin-vue": "^6.0.0",
"@vue-macros/volar": "^3.0.0-beta.15",
"@vue-macros/volar": "^3.0.0-beta.17",
"@vueuse/motion": "^3.0.3",
"execa": "^9.6.0",
"hfup": "^0.5.0",
@@ -116,12 +116,12 @@
"unplugin-info": "^1.2.2",
"unplugin-vue-macros": "^2.14.5",
"unplugin-vue-router": "^0.14.0",
"unplugin-yaml": "^3.0.1",
"unplugin-yaml": "^3.0.2",
"vite": "catalog:rolldown-vite",
"vite-bundle-visualizer": "^1.2.1",
"vite-plugin-pwa": "^1.0.1",
"vite-plugin-vue-devtools": "^7.7.7",
"vite-plugin-vue-layouts": "^0.11.0",
"vue-tsc": "^3.0.1"
"vue-tsc": "^3.0.3"
}
}
@@ -66,8 +66,20 @@ onTokenLiteral(async () => {
<div>
<span text-xs text="primary-400/90 dark:primary-600/90" font-normal class="inline <sm:hidden">{{ t('stage.chat.message.character-name.airi') }}</span>
</div>
<div v-if="sending && index === messages.length - 1" i-eos-icons:three-dots-loading />
<div v-else class="markdown-content break-words" text="base <sm:xs" v-html="process(message.content as string)" />
<div v-if="message.content && index === messages.length - 1" class="markdown-content" text="xs primary-400">
<div v-for="(slice, sliceIndex) in message.slices" :key="sliceIndex">
<div v-if="slice.type === 'tool-call'">
<div
p="1" border="1 solid primary-200" rounded-lg m="y-1" bg="primary-100"
>
Called: <code>{{ slice.toolCall.toolName }}</code>
</div>
</div>
<div v-else-if="slice.type === 'tool-call-result'" /> <!-- this line should be unreachable -->
<div v-else v-html="process(slice.text)" />
</div>
</div>
<div v-else i-eos-icons:three-dots-loading />
</div>
</div>
<div v-else-if="message.role === 'user'" flex="~ row-reverse" ml="12">
+4 -2
View File
@@ -46,8 +46,10 @@ async function handleChatSendMessage() {
messages: messages.value.slice(0, messages.value.length - 1).map(msg => toRaw(msg)),
})
for await (const chunk of response.chunkStream)
sendEvent(tokenEvent.with(chunk.choices[0].delta.content || ''))
for await (const chunk of response.fullStream) {
if (chunk.type === 'text-delta')
sendEvent(tokenEvent.with(chunk.text || ''))
}
return doneEvent.with()
})
@@ -175,13 +175,13 @@ function formMarkRegex(terms: Set<string>) {
<div class="flex flex-wrap items-center">
<!-- <span>#</span> -->
<span
v-for="(t, index) in p.titles"
v-for="(title, index) in p.titles"
:key="index"
class="flex items-center"
>
<span
class="text"
v-html="t"
v-html="title"
/>
<Icon
icon="lucide:chevron-right"
+12 -12
View File
@@ -18,18 +18,18 @@
"@fontsource/dm-mono": "^5.2.6",
"@fontsource/dm-serif-display": "^5.2.6",
"@internationalized/date": "^3.8.2",
"@proj-airi/chromatic": "^0.0.7",
"@proj-airi/chromatic": "^1.0.0",
"@proj-airi/i18n": "workspace:^",
"@vueuse/core": "^12.8.2",
"@vueuse/core": "^13.5.0",
"motion-v": "^1.5.0",
"pathe": "^2.0.3",
"reka-ui": "^2.3.1",
"vue": "^3.5.13",
"vue-i18n": "^11.1.9",
"vue-sonner": "^1.3.2"
"reka-ui": "^2.3.2",
"vue": "^3.5.17",
"vue-i18n": "^11.1.10",
"vue-sonner": "^2.0.2"
},
"devDependencies": {
"@babel/traverse": "^7.27.4",
"@babel/traverse": "^7.28.0",
"@iconify/vue": "^5.0.0",
"@intlify/unplugin-vue-i18n": "^6.0.8",
"@mdit/plugin-footnote": "^0.22.2",
@@ -46,13 +46,13 @@
"markdown-it-anchor": "^9.2.0",
"minisearch": "^7.1.2",
"postcss": "^8.5.6",
"sharp": "^0.34.2",
"shiki": "^3.7.0",
"sharp": "^0.34.3",
"shiki": "^3.8.1",
"tsx": "^4.20.3",
"uncrypto": "^0.1.3",
"unplugin-yaml": "^3.0.1",
"unplugin-yaml": "^3.0.2",
"vitepress": "^2.0.0-alpha.8",
"vue-component-meta": "^2.2.12",
"vue-tsc": "^3.0.1"
"vue-component-meta": "^3.0.3",
"vue-tsc": "^3.0.3"
}
}
+8 -8
View File
@@ -36,28 +36,28 @@
"nolyfill": "pnpm dlx nolyfill"
},
"devDependencies": {
"@antfu/eslint-config": "^4.16.2",
"@antfu/eslint-config": "^4.17.0",
"@antfu/ni": "^25.0.0",
"@arethetypeswrong/core": "^0.18.2",
"@iconify/utils": "^2.3.0",
"@proj-airi/unocss-preset-chromatic": "^1.0.0",
"@types/node": "^24.0.13",
"@types/node": "^24.0.15",
"@unocss/eslint-config": "^66.3.3",
"@unocss/eslint-plugin": "^66.3.3",
"@unocss/preset-mini": "^66.3.3",
"@unocss/preset-web-fonts": "^66.3.3",
"@vitest/coverage-v8": "^3.2.4",
"bumpp": "^10.2.0",
"eslint": "^9.30.1",
"eslint": "^9.31.0",
"execa": "^9.6.0",
"lint-staged": "^16.1.2",
"rollup": "^4.44.2",
"rollup": "^4.45.1",
"simple-git-hooks": "^2.13.0",
"smol-toml": "^1.4.1",
"taze": "^19.1.0",
"tsdown": "^0.12.9",
"tsdown": "^0.13.0",
"tsx": "^4.20.3",
"turbo": "^2.5.4",
"turbo": "^2.5.5",
"typescript": "~5.8.3",
"uncrypto": "^0.1.3",
"unocss": "^66.3.3",
@@ -65,8 +65,8 @@
"unplugin-lightningcss": "^0.4.1",
"unplugin-raw": "^0.5.0",
"unplugin-unused": "^0.5.1",
"unplugin-vue": "^6.2.0",
"vite": "^7.0.3",
"unplugin-vue": "^7.0.0",
"vite": "^7.0.5",
"vite-plugin-inspect": "^11.3.0",
"vitest": "^3.2.4"
},
+2 -2
View File
@@ -61,7 +61,7 @@
},
"devDependencies": {
"@moeru/std": "catalog:",
"@types/audioworklet": "^0.0.77",
"vite": "^7.0.2"
"@types/audioworklet": "^0.0.81",
"vite": "^7.0.5"
}
}
+1 -1
View File
@@ -48,6 +48,6 @@
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"unplugin-yaml": "^3.0.1"
"unplugin-yaml": "^3.0.2"
}
}
+1 -1
View File
@@ -22,7 +22,7 @@
"dependencies": {
"@guiiai/logg": "^1.0.10",
"@proj-airi/server-sdk": "workspace:^",
"drizzle-orm": "^0.44.2",
"drizzle-orm": "^0.44.3",
"postgres": "^3.4.7"
},
"devDependencies": {
+13 -13
View File
@@ -41,7 +41,7 @@
"dependencies": {
"@date-fns/utc": "^2.1.0",
"@formkit/auto-animate": "^0.8.2",
"@huggingface/transformers": "^3.6.1",
"@huggingface/transformers": "^3.6.3",
"@pixi/app": "^6.5.10",
"@pixi/constants": "^6.5.10",
"@pixi/core": "^6.5.10",
@@ -55,11 +55,11 @@
"@pixi/sprite": "^6.5.10",
"@pixi/ticker": "^6.5.10",
"@pixi/utils": "6",
"@pixiv/three-vrm": "^3.4.1",
"@pixiv/three-vrm-animation": "^3.4.1",
"@pixiv/three-vrm-core": "^3.4.1",
"@pixiv/three-vrm": "^3.4.2",
"@pixiv/three-vrm-animation": "^3.4.2",
"@pixiv/three-vrm-core": "^3.4.2",
"@proj-airi/ccc": "workspace:^",
"@proj-airi/chromatic": "^0.0.7",
"@proj-airi/chromatic": "^1.0.0",
"@proj-airi/drizzle-duckdb-wasm": "catalog:",
"@proj-airi/font-cjkfonts-allseto": "workspace:^",
"@proj-airi/font-xiaolai": "workspace:^",
@@ -106,14 +106,14 @@
"unist-builder": "^4.0.0",
"unspeech": "^0.1.7",
"vaul-vue": "^0.4.1",
"vue-i18n": "^11.1.9",
"vue-i18n": "^11.1.10",
"vue-router": "^4.5.1",
"vue-sonner": "^2.0.1",
"vue-tsc": "^2.2.12",
"vue-sonner": "^2.0.2",
"vue-tsc": "^3.0.3",
"wlipsync": "^1.2.1",
"xast-util-to-xml": "^4.0.0",
"xastscript": "^4.0.0",
"zod": "^3.25.74"
"zod": "^3.25.76"
},
"devDependencies": {
"@fontsource-variable/dm-sans": "^5.2.6",
@@ -127,11 +127,11 @@
"@fontsource/m-plus-rounded-1c": "^5.2.8",
"@fontsource/sniglet": "^5.2.6",
"@histoire/plugin-vue": "1.0.0-alpha.2",
"@iconify-json/carbon": "^1.2.10",
"@iconify-json/carbon": "^1.2.11",
"@iconify-json/eos-icons": "^1.2.2",
"@iconify-json/lucide": "^1.2.57",
"@iconify-json/mingcute": "^1.2.3",
"@iconify-json/simple-icons": "^1.2.43",
"@iconify-json/simple-icons": "^1.2.44",
"@iconify-json/solar": "^1.2.2",
"@iconify-json/svg-spinners": "^1.2.2",
"@iconify-json/vscode-icons": "^1.2.23",
@@ -145,8 +145,8 @@
"histoire": "1.0.0-alpha.2",
"unocss": "^66.3.3",
"unplugin-info": "^1.2.2",
"unplugin-yaml": "^3.0.1",
"vite": "^6.3.5",
"unplugin-yaml": "^3.0.2",
"vite": "^7.0.5",
"vue": "^3.5.17"
}
}
+5 -5
View File
@@ -1,5 +1,5 @@
import type { ChatProvider } from '@xsai-ext/shared-providers'
import type { Message, ToolCall, ToolMessagePart } from '@xsai/shared-chat'
import type { CompletionToolCall, Message, ToolMessagePart } from '@xsai/shared-chat'
import { readableStreamToAsyncIterator } from '@moeru/std'
import { listModels } from '@xsai/model'
@@ -12,7 +12,7 @@ import { debug, mcp } from '../tools'
export interface StreamOptions {
headers?: Record<string, string>
onToolCall?: (toolCall: ToolCall) => void
onToolCall?: (toolCall: CompletionToolCall) => void
onToolCallResult?: (toolCallResult: {
id: string
result?: string | ToolMessagePart[]
@@ -43,10 +43,10 @@ async function streamFrom(model: string, chatProvider: ChatProvider, messages: M
: undefined,
onEvent(event) {
if (event.type === 'tool-call') {
options?.onToolCall?.(event.toolCall)
options?.onToolCall?.(event)
}
else if (event.type === 'tool-call-result') {
options?.onToolCallResult?.({ id: event.id, result: event.result })
else if (event.type === 'tool-result') {
options?.onToolCallResult?.({ id: event.toolCallId, result: event.result })
}
},
})
+2 -2
View File
@@ -1,4 +1,4 @@
import type { AssistantMessage, SystemMessage, ToolCall, ToolMessage, ToolMessagePart, UserMessage } from '@xsai/shared-chat'
import type { AssistantMessage, CompletionToolCall, SystemMessage, ToolMessage, ToolMessagePart, UserMessage } from '@xsai/shared-chat'
export interface ChatSlicesText {
type: 'text'
@@ -7,7 +7,7 @@ export interface ChatSlicesText {
export interface ChatSlicesToolCall {
type: 'tool-call'
toolCall: ToolCall
toolCall: CompletionToolCall
}
export interface ChatSlicesToolCallResult {
+2 -2
View File
@@ -27,10 +27,10 @@
"build": "pkgroll"
},
"dependencies": {
"@tauri-apps/api": "^2.6.0"
"@tauri-apps/api": "^2.7.0"
},
"devDependencies": {
"pkgroll": "^2.13.1"
"pkgroll": "^2.14.3"
},
"publishConfig": {
"exports": {
+2 -2
View File
@@ -27,7 +27,7 @@
},
"dependencies": {
"@proj-airi/font-departure-mono": "workspace:^",
"@rive-app/canvas-lite": "^2.30.1",
"@rive-app/canvas-lite": "^2.30.4",
"@vueuse/core": "^13.5.0",
"@vueuse/motion": "^3.0.3",
"vue": "^3.5.17"
@@ -40,6 +40,6 @@
"vite": "catalog:rolldown-vite",
"vite-plugin-vue-devtools": "^7.7.7",
"vue-router": "^4.5.1",
"vue-tsc": "^3.0.1"
"vue-tsc": "^3.0.3"
}
}
+1 -1
View File
@@ -37,6 +37,6 @@
"vite": "catalog:rolldown-vite",
"vite-plugin-vue-devtools": "^7.7.7",
"vue-router": "^4.5.1",
"vue-tsc": "^3.0.1"
"vue-tsc": "^3.0.3"
}
}
+1 -1
View File
@@ -31,6 +31,6 @@
},
"devDependencies": {
"@vue-macros/volar": "3.0.0-beta.8",
"vue-tsc": "^3.0.1"
"vue-tsc": "^3.0.3"
}
}
@@ -15,12 +15,12 @@
"postinstall": "wxt prepare"
},
"dependencies": {
"vue": "^3.5.13"
"vue": "^3.5.17"
},
"devDependencies": {
"@unocss/reset": "^66.3.3",
"@wxt-dev/module-vue": "^1.0.2",
"vue-tsc": "^2.2.10",
"wxt": "^0.20.6"
"vue-tsc": "^2.2.12",
"wxt": "^0.20.7"
}
}
+1845 -2316
View File
File diff suppressed because it is too large Load Diff
+12 -12
View File
@@ -10,20 +10,20 @@ packages:
catalog:
'@moeru/std': 0.1.0-beta.4
'@proj-airi/drizzle-duckdb-wasm': ^0.4.28
'@xsai-ext/providers-cloud': ^0.3.0-beta.8
'@xsai-ext/providers-local': ^0.3.0-beta.8
'@xsai-ext/shared-providers': ^0.3.0-beta.8
'@xsai/embed': ^0.3.0-beta.8
'@xsai/generate-speech': ^0.3.0-beta.8
'@xsai/generate-text': ^0.3.0-beta.8
'@xsai-ext/providers-cloud': ^0.3.2
'@xsai-ext/providers-local': ^0.3.2
'@xsai-ext/shared-providers': ^0.3.2
'@xsai/embed': ^0.3.2
'@xsai/generate-speech': ^0.3.2
'@xsai/generate-text': ^0.3.2
'@xsai/generate-transcription': 0.3.0-beta.8
'@xsai/model': ^0.3.0-beta.8
'@xsai/model': ^0.3.2
'@xsai/shared': 0.3.0-beta.8
'@xsai/shared-chat': ^0.3.0-beta.8
'@xsai/stream-text': ^0.3.0-beta.8
'@xsai/tool': ^0.3.0-beta.8
'@xsai/utils-chat': ^0.3.0-beta.8
xsschema: ^0.3.0-beta.8
'@xsai/shared-chat': ^0.3.2
'@xsai/stream-text': ^0.3.2
'@xsai/tool': ^0.3.2
'@xsai/utils-chat': ^0.3.2
xsschema: ^0.3.2
catalogs:
rolldown-vite:
+2 -2
View File
@@ -20,9 +20,9 @@
},
"dependencies": {
"@discordjs/voice": "^0.18.0",
"@dotenvx/dotenvx": "^1.45.2",
"@dotenvx/dotenvx": "^1.48.3",
"@guiiai/logg": "^1.0.10",
"@huggingface/transformers": "^3.6.1",
"@huggingface/transformers": "^3.6.3",
"@proj-airi/audio": "workspace:^",
"@proj-airi/server-sdk": "workspace:^",
"@proj-airi/server-shared": "workspace:^",
+5 -5
View File
@@ -16,7 +16,7 @@
"@moeru/std": "catalog:",
"@proj-airi/server-sdk": "^0.6.1",
"awilix": "^12.0.5",
"es-toolkit": "^1.39.6",
"es-toolkit": "^1.39.7",
"eventemitter3": "^5.0.1",
"minecraft-data": "^3.93.0",
"mineflayer": "^4.30.0",
@@ -26,7 +26,7 @@
"mineflayer-pathfinder": "^2.4.5",
"mineflayer-pvp": "^1.3.2",
"mineflayer-tool": "^1.2.0",
"neuri": "^0.1.8",
"neuri": "^0.2.1",
"prismarine-block": "^1.21.0",
"prismarine-entity": "^2.5.0",
"prismarine-item": "^1.16.0",
@@ -35,11 +35,11 @@
"prismarine-windows": "^2.9.0",
"valibot": "1.0.0-beta.9",
"vec3": "^0.1.10",
"zod": "^3.25.74",
"zod": "^3.25.76",
"zod-to-json-schema": "^3.24.6"
},
"devDependencies": {
"@dotenvx/dotenvx": "^1.45.2",
"dotenv": "^17.0.1"
"@dotenvx/dotenvx": "^1.48.3",
"dotenv": "^17.2.0"
}
}
+6 -6
View File
@@ -22,7 +22,7 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@dotenvx/dotenvx": "^1.45.2",
"@dotenvx/dotenvx": "^1.48.3",
"@ffmpeg-installer/ffmpeg": "^1.1.0",
"@grammyjs/files": "^1.1.1",
"@guiiai/logg": "^1.0.10",
@@ -33,16 +33,16 @@
"@xsai/shared-chat": "catalog:",
"@xsai/tool": "catalog:",
"@xsai/utils-chat": "catalog:",
"best-effort-json-parser": "^1.1.3",
"dotenv": "^17.0.1",
"drizzle-orm": "^0.44.2",
"es-toolkit": "^1.39.6",
"best-effort-json-parser": "^1.2.1",
"dotenv": "^17.2.0",
"drizzle-orm": "^0.44.3",
"es-toolkit": "^1.39.7",
"fluent-ffmpeg": "^2.1.3",
"grammy": "^1.37.0",
"nanoid": "^5.1.5",
"p-limit": "^6.2.0",
"pg": "^8.16.3",
"sharp": "^0.34.2",
"sharp": "^0.34.3",
"telegram": "^2.26.22",
"uuid": "^11.1.0",
"valibot": "1.0.0-beta.9"
+5 -5
View File
@@ -14,18 +14,18 @@
"dependencies": {
"@browserbasehq/stagehand": "^2.4.1",
"@guiiai/logg": "^1.0.10",
"@modelcontextprotocol/sdk": "^1.15.0",
"@modelcontextprotocol/sdk": "^1.16.0",
"@moeru/std": "catalog:",
"@proj-airi/server-sdk": "^0.6.1",
"dotenv": "^17.0.1",
"dotenv": "^17.2.0",
"h3": "^1.15.3",
"listhen": "^1.9.0",
"ofetch": "^1.4.1",
"playwright": "^1.53.2",
"zod": "^3.25.74"
"playwright": "^1.54.1",
"zod": "^3.25.76"
},
"devDependencies": {
"@types/node": "^24.0.13",
"@types/node": "^24.0.15",
"tsx": "^4.20.3",
"typescript": "^5.8.3"
}