feat(stage-web|stage-tamagotchi|stage-tamagotchi-tauri): support featherless.ai #112
This commit is contained in:
@@ -31,11 +31,11 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@iconify-json/solar": "^1.2.2",
|
||||
"@unocss/reset": "^66.1.0-beta.8",
|
||||
"@unocss/reset": "^66.1.0-beta.9",
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"superjson": "^2.2.2",
|
||||
"unplugin-vue-router": "^0.12.0",
|
||||
"vite": "^6.2.4",
|
||||
"vite": "^6.2.5",
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-tsc": "^3.0.0-alpha.2"
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"dependencies": {
|
||||
"@11labs/client": "^0.1.0",
|
||||
"@formkit/auto-animate": "^0.8.2",
|
||||
"@huggingface/transformers": "^3.4.1",
|
||||
"@huggingface/transformers": "^3.4.2",
|
||||
"@pixi/app": "6",
|
||||
"@pixi/constants": "6",
|
||||
"@pixi/core": "6",
|
||||
@@ -34,11 +34,11 @@
|
||||
"@pixiv/three-vrm-core": "^3.3.6",
|
||||
"@proj-airi/stage-ui": "workspace:^",
|
||||
"@ricky0123/vad-web": "^0.0.22",
|
||||
"@tauri-apps/api": "^2.4.0",
|
||||
"@tauri-apps/api": "^2.4.1",
|
||||
"@tauri-apps/plugin-os": ">=2.2.1",
|
||||
"@tresjs/cientos": "^4.3.0",
|
||||
"@tresjs/core": "^4.3.3",
|
||||
"@unhead/vue": "^2.0.2",
|
||||
"@unhead/vue": "^2.0.3",
|
||||
"@vueuse/core": "^13.0.0",
|
||||
"@vueuse/head": "^2.0.0",
|
||||
"@vueuse/shared": "^13.0.0",
|
||||
@@ -67,7 +67,7 @@
|
||||
"radix-vue": "^1.9.17",
|
||||
"rehype-stringify": "^10.0.1",
|
||||
"remark-parse": "^11.0.0",
|
||||
"remark-rehype": "^11.1.1",
|
||||
"remark-rehype": "^11.1.2",
|
||||
"shiki": "^3.2.1",
|
||||
"three": "^0.175.0",
|
||||
"unified": "^11.0.5",
|
||||
@@ -93,19 +93,19 @@
|
||||
"@iconify/utils": "^2.3.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@proj-airi/drizzle-duckdb-wasm": "workspace:^",
|
||||
"@proj-airi/lobe-icons": "^1.0.4",
|
||||
"@proj-airi/lobe-icons": "^1.0.5",
|
||||
"@proj-airi/provider-transformers": "workspace:^",
|
||||
"@proj-airi/ui-transitions": "workspace:^",
|
||||
"@proj-airi/unplugin-fetch": "^0.1.4",
|
||||
"@proj-airi/unplugin-live2d-sdk": "^0.1.2",
|
||||
"@shikijs/markdown-it": "^3.2.1",
|
||||
"@tauri-apps/cli": "^2.4.0",
|
||||
"@tauri-apps/cli": "^2.4.1",
|
||||
"@types/culori": "^2.1.1",
|
||||
"@types/markdown-it-link-attributes": "^3.0.5",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/three": "^0.175.0",
|
||||
"@types/yauzl": "^2.10.3",
|
||||
"@unocss/reset": "^66.1.0-beta.8",
|
||||
"@unocss/reset": "^66.1.0-beta.9",
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"@vue-macros/volar": "^3.0.0-beta.7",
|
||||
"@vueuse/motion": "^3.0.3",
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
<script setup lang="ts">
|
||||
import type { RemovableRef } from '@vueuse/core'
|
||||
|
||||
import {
|
||||
ProviderAdvancedSettings,
|
||||
ProviderApiKeyInput,
|
||||
ProviderBaseUrlInput,
|
||||
ProviderBasicSettings,
|
||||
ProviderSettingsContainer,
|
||||
ProviderSettingsLayout,
|
||||
} from '@proj-airi/stage-ui/components'
|
||||
import { useProvidersStore } from '@proj-airi/stage-ui/stores'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { computed, onMounted, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const { t } = useI18n()
|
||||
const router = useRouter()
|
||||
const providersStore = useProvidersStore()
|
||||
const { providers } = storeToRefs(providersStore) as { providers: RemovableRef<Record<string, any>> }
|
||||
|
||||
// Get provider metadata
|
||||
const providerId = 'featherless-ai'
|
||||
const providerMetadata = computed(() => providersStore.getProviderMetadata(providerId))
|
||||
|
||||
// Use computed properties for settings
|
||||
const apiKey = computed({
|
||||
get: () => providers.value[providerId]?.apiKey || '',
|
||||
set: (value) => {
|
||||
if (!providers.value[providerId])
|
||||
providers.value[providerId] = {}
|
||||
|
||||
providers.value[providerId].apiKey = value
|
||||
},
|
||||
})
|
||||
|
||||
const baseUrl = computed({
|
||||
get: () => providers.value[providerId]?.baseUrl || '',
|
||||
set: (value) => {
|
||||
if (!providers.value[providerId])
|
||||
providers.value[providerId] = {}
|
||||
|
||||
providers.value[providerId].baseUrl = value
|
||||
},
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
// Initialize provider if it doesn't exist
|
||||
providersStore.initializeProvider(providerId)
|
||||
|
||||
// Initialize refs with current values
|
||||
apiKey.value = providers.value[providerId]?.apiKey || ''
|
||||
baseUrl.value = providers.value[providerId]?.baseUrl || ''
|
||||
})
|
||||
|
||||
// Watch settings and update the provider configuration
|
||||
watch([apiKey, baseUrl], () => {
|
||||
providers.value[providerId] = {
|
||||
...providers.value[providerId],
|
||||
apiKey: apiKey.value,
|
||||
baseUrl: baseUrl.value || '',
|
||||
}
|
||||
})
|
||||
|
||||
function handleResetSettings() {
|
||||
providers.value[providerId] = {
|
||||
...(providerMetadata.value?.defaultOptions as any),
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ProviderSettingsLayout
|
||||
:provider-name="providerMetadata?.localizedName"
|
||||
:provider-icon="providerMetadata?.icon"
|
||||
:on-back="() => router.back()"
|
||||
>
|
||||
<ProviderSettingsContainer>
|
||||
<ProviderBasicSettings
|
||||
:title="t('settings.pages.providers.common.section.basic.title')"
|
||||
:description="t('settings.pages.providers.common.section.basic.description')"
|
||||
:on-reset="handleResetSettings"
|
||||
>
|
||||
<ProviderApiKeyInput
|
||||
v-model="apiKey"
|
||||
:provider-name="providerMetadata?.localizedName"
|
||||
placeholder="fw-..."
|
||||
/>
|
||||
</ProviderBasicSettings>
|
||||
|
||||
<ProviderAdvancedSettings :title="t('settings.pages.providers.common.section.advanced.title')">
|
||||
<ProviderBaseUrlInput
|
||||
v-model="baseUrl"
|
||||
placeholder="https://api.featherless.ai/v1/"
|
||||
/>
|
||||
</ProviderAdvancedSettings>
|
||||
</ProviderSettingsContainer>
|
||||
</ProviderSettingsLayout>
|
||||
</template>
|
||||
@@ -24,7 +24,7 @@
|
||||
"@electron-toolkit/preload": "^3.0.1",
|
||||
"@electron-toolkit/utils": "^3.0.0",
|
||||
"@formkit/auto-animate": "^0.8.2",
|
||||
"@huggingface/transformers": "^3.4.1",
|
||||
"@huggingface/transformers": "^3.4.2",
|
||||
"@pixi/app": "6",
|
||||
"@pixi/constants": "6",
|
||||
"@pixi/core": "6",
|
||||
@@ -45,7 +45,7 @@
|
||||
"@ricky0123/vad-web": "^0.0.22",
|
||||
"@tresjs/cientos": "^4.3.0",
|
||||
"@tresjs/core": "^4.3.3",
|
||||
"@unhead/vue": "^2.0.2",
|
||||
"@unhead/vue": "^2.0.3",
|
||||
"@vueuse/core": "^13.0.0",
|
||||
"@vueuse/head": "^2.0.0",
|
||||
"@vueuse/shared": "^13.0.0",
|
||||
@@ -74,7 +74,7 @@
|
||||
"radix-vue": "^1.9.17",
|
||||
"rehype-stringify": "^10.0.1",
|
||||
"remark-parse": "^11.0.0",
|
||||
"remark-rehype": "^11.1.1",
|
||||
"remark-rehype": "^11.1.2",
|
||||
"shiki": "^3.2.1",
|
||||
"three": "^0.175.0",
|
||||
"unified": "^11.0.5",
|
||||
@@ -101,7 +101,7 @@
|
||||
"@iconify/utils": "^2.3.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@proj-airi/drizzle-duckdb-wasm": "workspace:^",
|
||||
"@proj-airi/lobe-icons": "^1.0.4",
|
||||
"@proj-airi/lobe-icons": "^1.0.5",
|
||||
"@proj-airi/provider-transformers": "workspace:^",
|
||||
"@proj-airi/ui-transitions": "workspace:^",
|
||||
"@proj-airi/unplugin-fetch": "^0.1.4",
|
||||
@@ -112,7 +112,7 @@
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/three": "^0.175.0",
|
||||
"@types/yauzl": "^2.10.3",
|
||||
"@unocss/reset": "^66.1.0-beta.8",
|
||||
"@unocss/reset": "^66.1.0-beta.9",
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"@vue-macros/volar": "^3.0.0-beta.7",
|
||||
"@vueuse/motion": "^3.0.3",
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
<script setup lang="ts">
|
||||
import type { RemovableRef } from '@vueuse/core'
|
||||
|
||||
import {
|
||||
ProviderAdvancedSettings,
|
||||
ProviderApiKeyInput,
|
||||
ProviderBaseUrlInput,
|
||||
ProviderBasicSettings,
|
||||
ProviderSettingsContainer,
|
||||
ProviderSettingsLayout,
|
||||
} from '@proj-airi/stage-ui/components'
|
||||
import { useProvidersStore } from '@proj-airi/stage-ui/stores'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { computed, onMounted, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const { t } = useI18n()
|
||||
const router = useRouter()
|
||||
const providersStore = useProvidersStore()
|
||||
const { providers } = storeToRefs(providersStore) as { providers: RemovableRef<Record<string, any>> }
|
||||
|
||||
// Get provider metadata
|
||||
const providerId = 'featherless-ai'
|
||||
const providerMetadata = computed(() => providersStore.getProviderMetadata(providerId))
|
||||
|
||||
// Use computed properties for settings
|
||||
const apiKey = computed({
|
||||
get: () => providers.value[providerId]?.apiKey || '',
|
||||
set: (value) => {
|
||||
if (!providers.value[providerId])
|
||||
providers.value[providerId] = {}
|
||||
|
||||
providers.value[providerId].apiKey = value
|
||||
},
|
||||
})
|
||||
|
||||
const baseUrl = computed({
|
||||
get: () => providers.value[providerId]?.baseUrl || '',
|
||||
set: (value) => {
|
||||
if (!providers.value[providerId])
|
||||
providers.value[providerId] = {}
|
||||
|
||||
providers.value[providerId].baseUrl = value
|
||||
},
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
// Initialize provider if it doesn't exist
|
||||
providersStore.initializeProvider(providerId)
|
||||
|
||||
// Initialize refs with current values
|
||||
apiKey.value = providers.value[providerId]?.apiKey || ''
|
||||
baseUrl.value = providers.value[providerId]?.baseUrl || ''
|
||||
})
|
||||
|
||||
// Watch settings and update the provider configuration
|
||||
watch([apiKey, baseUrl], () => {
|
||||
providers.value[providerId] = {
|
||||
...providers.value[providerId],
|
||||
apiKey: apiKey.value,
|
||||
baseUrl: baseUrl.value || '',
|
||||
}
|
||||
})
|
||||
|
||||
function handleResetSettings() {
|
||||
providers.value[providerId] = {
|
||||
...(providerMetadata.value?.defaultOptions as any),
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ProviderSettingsLayout
|
||||
:provider-name="providerMetadata?.localizedName"
|
||||
:provider-icon="providerMetadata?.icon"
|
||||
:on-back="() => router.back()"
|
||||
>
|
||||
<ProviderSettingsContainer>
|
||||
<ProviderBasicSettings
|
||||
:title="t('settings.pages.providers.common.section.basic.title')"
|
||||
:description="t('settings.pages.providers.common.section.basic.description')"
|
||||
:on-reset="handleResetSettings"
|
||||
>
|
||||
<ProviderApiKeyInput
|
||||
v-model="apiKey"
|
||||
:provider-name="providerMetadata?.localizedName"
|
||||
placeholder="fw-..."
|
||||
/>
|
||||
</ProviderBasicSettings>
|
||||
|
||||
<ProviderAdvancedSettings :title="t('settings.pages.providers.common.section.advanced.title')">
|
||||
<ProviderBaseUrlInput
|
||||
v-model="baseUrl"
|
||||
placeholder="https://api.featherless.ai/v1/"
|
||||
/>
|
||||
</ProviderAdvancedSettings>
|
||||
</ProviderSettingsContainer>
|
||||
</ProviderSettingsLayout>
|
||||
</template>
|
||||
@@ -19,7 +19,7 @@
|
||||
"dependencies": {
|
||||
"@11labs/client": "^0.1.0",
|
||||
"@formkit/auto-animate": "^0.8.2",
|
||||
"@huggingface/transformers": "^3.4.1",
|
||||
"@huggingface/transformers": "^3.4.2",
|
||||
"@pixi/app": "6",
|
||||
"@pixi/constants": "6",
|
||||
"@pixi/core": "6",
|
||||
@@ -46,7 +46,7 @@
|
||||
"@standard-schema/spec": "^1.0.0",
|
||||
"@tresjs/cientos": "^4.3.0",
|
||||
"@tresjs/core": "^4.3.3",
|
||||
"@unhead/vue": "^2.0.2",
|
||||
"@unhead/vue": "^2.0.3",
|
||||
"@valibot/to-json-schema": "1.0.0-rc.0",
|
||||
"@vueuse/core": "^13.0.0",
|
||||
"@vueuse/head": "^2.0.0",
|
||||
@@ -77,7 +77,7 @@
|
||||
"radix-vue": "^1.9.17",
|
||||
"rehype-stringify": "^10.0.1",
|
||||
"remark-parse": "^11.0.0",
|
||||
"remark-rehype": "^11.1.1",
|
||||
"remark-rehype": "^11.1.2",
|
||||
"shiki": "^3.2.1",
|
||||
"three": "^0.175.0",
|
||||
"unified": "^11.0.5",
|
||||
@@ -103,7 +103,7 @@
|
||||
"@iconify-json/vscode-icons": "^1.2.18",
|
||||
"@iconify/utils": "^2.3.0",
|
||||
"@intlify/unplugin-vue-i18n": "^6.0.5",
|
||||
"@proj-airi/lobe-icons": "^1.0.4",
|
||||
"@proj-airi/lobe-icons": "^1.0.5",
|
||||
"@proj-airi/unplugin-fetch": "^0.1.4",
|
||||
"@proj-airi/unplugin-live2d-sdk": "^0.1.2",
|
||||
"@shikijs/markdown-it": "^3.2.1",
|
||||
@@ -112,7 +112,7 @@
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/three": "^0.175.0",
|
||||
"@types/yauzl": "^2.10.3",
|
||||
"@unocss/reset": "^66.1.0-beta.8",
|
||||
"@unocss/reset": "^66.1.0-beta.9",
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"@vue-macros/volar": "^3.0.0-beta.7",
|
||||
"@vueuse/motion": "^3.0.3",
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
<script setup lang="ts">
|
||||
import type { RemovableRef } from '@vueuse/core'
|
||||
|
||||
import {
|
||||
ProviderAdvancedSettings,
|
||||
ProviderApiKeyInput,
|
||||
ProviderBaseUrlInput,
|
||||
ProviderBasicSettings,
|
||||
ProviderSettingsContainer,
|
||||
ProviderSettingsLayout,
|
||||
} from '@proj-airi/stage-ui/components'
|
||||
import { useProvidersStore } from '@proj-airi/stage-ui/stores'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { computed, onMounted, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useRouter } from 'vue-router'
|
||||
|
||||
const { t } = useI18n()
|
||||
const router = useRouter()
|
||||
const providersStore = useProvidersStore()
|
||||
const { providers } = storeToRefs(providersStore) as { providers: RemovableRef<Record<string, any>> }
|
||||
|
||||
// Get provider metadata
|
||||
const providerId = 'featherless-ai'
|
||||
const providerMetadata = computed(() => providersStore.getProviderMetadata(providerId))
|
||||
|
||||
// Use computed properties for settings
|
||||
const apiKey = computed({
|
||||
get: () => providers.value[providerId]?.apiKey || '',
|
||||
set: (value) => {
|
||||
if (!providers.value[providerId])
|
||||
providers.value[providerId] = {}
|
||||
|
||||
providers.value[providerId].apiKey = value
|
||||
},
|
||||
})
|
||||
|
||||
const baseUrl = computed({
|
||||
get: () => providers.value[providerId]?.baseUrl || '',
|
||||
set: (value) => {
|
||||
if (!providers.value[providerId])
|
||||
providers.value[providerId] = {}
|
||||
|
||||
providers.value[providerId].baseUrl = value
|
||||
},
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
// Initialize provider if it doesn't exist
|
||||
providersStore.initializeProvider(providerId)
|
||||
|
||||
// Initialize refs with current values
|
||||
apiKey.value = providers.value[providerId]?.apiKey || ''
|
||||
baseUrl.value = providers.value[providerId]?.baseUrl || ''
|
||||
})
|
||||
|
||||
// Watch settings and update the provider configuration
|
||||
watch([apiKey, baseUrl], () => {
|
||||
providers.value[providerId] = {
|
||||
...providers.value[providerId],
|
||||
apiKey: apiKey.value,
|
||||
baseUrl: baseUrl.value || '',
|
||||
}
|
||||
})
|
||||
|
||||
function handleResetSettings() {
|
||||
providers.value[providerId] = {
|
||||
...(providerMetadata.value?.defaultOptions as any),
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ProviderSettingsLayout
|
||||
:provider-name="providerMetadata?.localizedName"
|
||||
:provider-icon="providerMetadata?.icon"
|
||||
:on-back="() => router.back()"
|
||||
>
|
||||
<ProviderSettingsContainer>
|
||||
<ProviderBasicSettings
|
||||
:title="t('settings.pages.providers.common.section.basic.title')"
|
||||
:description="t('settings.pages.providers.common.section.basic.description')"
|
||||
:on-reset="handleResetSettings"
|
||||
>
|
||||
<ProviderApiKeyInput
|
||||
v-model="apiKey"
|
||||
:provider-name="providerMetadata?.localizedName"
|
||||
placeholder="fw-..."
|
||||
/>
|
||||
</ProviderBasicSettings>
|
||||
|
||||
<ProviderAdvancedSettings :title="t('settings.pages.providers.common.section.advanced.title')">
|
||||
<ProviderBaseUrlInput
|
||||
v-model="baseUrl"
|
||||
placeholder="https://api.featherless.ai/v1/"
|
||||
/>
|
||||
</ProviderAdvancedSettings>
|
||||
</ProviderSettingsContainer>
|
||||
</ProviderSettingsLayout>
|
||||
</template>
|
||||
+2
-2
@@ -13,9 +13,9 @@
|
||||
"dependencies": {
|
||||
"@astrojs/starlight": "^0.32.5",
|
||||
"@fontsource/quicksand": "^5.2.6",
|
||||
"astro": "^5.5.6",
|
||||
"astro": "^5.6.1",
|
||||
"astro-og-canvas": "^0.7.0",
|
||||
"sharp": "^0.33.5",
|
||||
"sharp": "^0.34.0",
|
||||
"starlight-theme-catppuccin": "^2.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
+9
-9
@@ -2,7 +2,7 @@
|
||||
"name": "airi-vtuber",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@10.5.0",
|
||||
"packageManager": "pnpm@10.7.1",
|
||||
"description": "LLM powered virtual character",
|
||||
"author": {
|
||||
"name": "Neko Ayaka",
|
||||
@@ -35,24 +35,24 @@
|
||||
"@antfu/eslint-config": "^4.11.0",
|
||||
"@antfu/ni": "^24.3.0",
|
||||
"@cspell/dict-ru_ru": "^2.2.4",
|
||||
"@types/node": "^22.13.16",
|
||||
"@unocss/eslint-config": "^66.1.0-beta.8",
|
||||
"@unocss/eslint-plugin": "^66.1.0-beta.8",
|
||||
"@types/node": "^22.14.0",
|
||||
"@unocss/eslint-config": "^66.1.0-beta.9",
|
||||
"@unocss/eslint-plugin": "^66.1.0-beta.9",
|
||||
"@vitest/coverage-v8": "3.0.5",
|
||||
"bumpp": "^10.1.0",
|
||||
"changelogithub": "^13.13.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^9.23.0",
|
||||
"eslint": "^9.24.0",
|
||||
"eslint-plugin-cypress": "^4.2.0",
|
||||
"eslint-plugin-format": "^1.0.1",
|
||||
"lint-staged": "^15.5.0",
|
||||
"rollup": "^4.38.0",
|
||||
"rollup": "^4.39.0",
|
||||
"simple-git-hooks": "^2.12.1",
|
||||
"taze": "^19.0.4",
|
||||
"typescript": "~5.8.2",
|
||||
"typescript": "~5.8.3",
|
||||
"unbuild": "3.0.0-rc.11",
|
||||
"unocss": "^66.1.0-beta.8",
|
||||
"vite": "^6.2.4",
|
||||
"unocss": "^66.1.0-beta.9",
|
||||
"vite": "^6.2.5",
|
||||
"vite-plugin-inspect": "^11.0.0",
|
||||
"vitest": "^3.1.1"
|
||||
},
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
"@iconify-json/solar": "^1.2.2",
|
||||
"@types/d3": "^7.4.3",
|
||||
"@types/d3-force": "^3.0.10",
|
||||
"@unocss/reset": "^66.1.0-beta.8",
|
||||
"@unocss/reset": "^66.1.0-beta.9",
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"@vitest/browser": "^3.1.1",
|
||||
"@vueuse/core": "^13.0.0",
|
||||
@@ -91,7 +91,7 @@
|
||||
"playwright": "^1.51.1",
|
||||
"superjson": "^2.2.2",
|
||||
"unplugin-vue-router": "^0.12.0",
|
||||
"vite": "^6.2.4",
|
||||
"vite": "^6.2.5",
|
||||
"vue": "^3.5.13",
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-tsc": "^3.0.0-alpha.2"
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
"defu": "^6.1.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.13.16",
|
||||
"@types/node": "^22.14.0",
|
||||
"@webgpu/types": "^0.1.60"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@huggingface/transformers": "^3.4.1",
|
||||
"@huggingface/transformers": "^3.4.2",
|
||||
"@proj-airi/utils-transformers": "workspace:^",
|
||||
"@webgpu/types": "^0.1.60",
|
||||
"@xsai-ext/shared-providers": "catalog:",
|
||||
@@ -62,10 +62,10 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@iconify-json/solar": "^1.2.2",
|
||||
"@unocss/reset": "^66.1.0-beta.8",
|
||||
"@unocss/reset": "^66.1.0-beta.9",
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"@vueuse/core": "^13.0.0",
|
||||
"vite": "^6.2.4",
|
||||
"vite": "^6.2.5",
|
||||
"vue": "^3.5.13",
|
||||
"vue-tsc": "^3.0.0-alpha.2"
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
"@proj-airi/server-sdk": "workspace:^",
|
||||
"@vueuse/motion": "^3.0.3",
|
||||
"radix-vue": "^1.9.17",
|
||||
"reka-ui": "^2.1.1",
|
||||
"reka-ui": "^2.2.0",
|
||||
"unist-builder": "^4.0.0",
|
||||
"xast-util-to-xml": "^4.0.0",
|
||||
"xastscript": "^4.0.0"
|
||||
@@ -71,11 +71,11 @@
|
||||
"@histoire/plugin-vue": "1.0.0-alpha.2",
|
||||
"@proj-airi/provider-transformers": "workspace:^",
|
||||
"@proj-airi/utils-transformers": "workspace:^",
|
||||
"@unocss/reset": "^66.1.0-beta.8",
|
||||
"@unocss/reset": "^66.1.0-beta.9",
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"@xsai/embed": "catalog:",
|
||||
"histoire": "1.0.0-alpha.2",
|
||||
"unocss": "^66.1.0-beta.8",
|
||||
"vite": "^6.2.4"
|
||||
"unocss": "^66.1.0-beta.9",
|
||||
"vite": "^6.2.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -552,6 +552,34 @@ export const useProvidersStore = defineStore('providers', () => {
|
||||
},
|
||||
},
|
||||
},
|
||||
'featherless-ai': {
|
||||
id: 'featherless-ai',
|
||||
nameKey: 'settings.pages.providers.provider.featherless.title',
|
||||
name: 'Featherless.ai',
|
||||
descriptionKey: 'settings.pages.providers.provider.featherless.description',
|
||||
description: 'featherless.ai',
|
||||
icon: 'i-lobe-icons:featherless-ai',
|
||||
defaultOptions: {
|
||||
baseUrl: 'https://api.featherless.ai/v1/',
|
||||
},
|
||||
createProvider: config => createOpenAI((config.apiKey as string).trim(), (config.baseUrl as string).trim()),
|
||||
capabilities: {
|
||||
listModels: async (config) => {
|
||||
return (await listModels({
|
||||
...createOpenAI((config.apiKey as string).trim(), (config.baseUrl as string).trim()).model(),
|
||||
})).map((model) => {
|
||||
return {
|
||||
id: model.id,
|
||||
name: model.id,
|
||||
provider: 'featherless-ai',
|
||||
description: '',
|
||||
contextLength: 0,
|
||||
deprecated: false,
|
||||
} satisfies ModelInfo
|
||||
})
|
||||
},
|
||||
},
|
||||
},
|
||||
'cloudflare-workers-ai': {
|
||||
id: 'cloudflare-workers-ai',
|
||||
nameKey: 'settings.pages.providers.provider.cloudflare-workers-ai.title',
|
||||
@@ -700,6 +728,8 @@ export const useProvidersStore = defineStore('providers', () => {
|
||||
return !!config.apiKey
|
||||
case 'fireworks-ai':
|
||||
return !!config.apiKey
|
||||
case 'featherless-ai':
|
||||
return !!config.apiKey
|
||||
case 'microsoft-speech':
|
||||
return !!config.apiKey && !!config.region
|
||||
case 'cloudflare-workers-ai':
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"vue": "^3.5.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@unocss/reset": "^66.1.0-beta.8",
|
||||
"@unocss/reset": "^66.1.0-beta.9",
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"unplugin-vue-router": "^0.12.0",
|
||||
"vite-plugin-vue-devtools": "^7.7.2",
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"dependencies": {
|
||||
"@huggingface/transformers": "^3.4.1",
|
||||
"@huggingface/transformers": "^3.4.2",
|
||||
"onnxruntime-common": "^1.21.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Generated
+1578
-1338
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -7,7 +7,7 @@ packages:
|
||||
- '!**/dist/**'
|
||||
|
||||
catalog:
|
||||
'@xsai/shared': &xsai ^0.2.0-beta.2
|
||||
'@xsai/shared': &xsai ^0.2.0-beta.3
|
||||
'@xsai-ext/providers-cloud': *xsai
|
||||
'@xsai-ext/providers-local': *xsai
|
||||
'@xsai-ext/shared-providers': *xsai
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@discordjs/voice": "^0.18.0",
|
||||
"@dotenvx/dotenvx": "^1.39.0",
|
||||
"@dotenvx/dotenvx": "^1.39.1",
|
||||
"@guiiai/logg": "^1.0.7",
|
||||
"@huggingface/transformers": "^3.4.1",
|
||||
"@huggingface/transformers": "^3.4.2",
|
||||
"@proj-airi/server-sdk": "workspace:^",
|
||||
"@proj-airi/server-shared": "workspace:^",
|
||||
"@xsai-ext/providers-cloud": "catalog:",
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@guiiai/logg": "^1.0.7",
|
||||
"@proj-airi/server-sdk": "^0.3.6",
|
||||
"@proj-airi/server-sdk": "^0.4.19",
|
||||
"awilix": "^12.0.5",
|
||||
"es-toolkit": "^1.34.1",
|
||||
"eventemitter3": "^5.0.1",
|
||||
@@ -38,7 +38,7 @@
|
||||
"zod-to-json-schema": "^3.24.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@dotenvx/dotenvx": "^1.39.0",
|
||||
"@dotenvx/dotenvx": "^1.39.1",
|
||||
"dotenv": "^16.4.7"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"script:embed-chat": "dotenvx run -f .env -f .env.local --overload --ignore=MISSING_ENV_FILE -- tsx scripts/embed-all-chat-messages.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dotenvx/dotenvx": "^1.39.0",
|
||||
"@dotenvx/dotenvx": "^1.39.1",
|
||||
"@grammyjs/files": "^1.1.1",
|
||||
"@guiiai/logg": "^1.0.7",
|
||||
"@xsai-ext/providers-cloud": "catalog:",
|
||||
@@ -37,7 +37,7 @@
|
||||
"nanoid": "^5.1.5",
|
||||
"p-limit": "^6.2.0",
|
||||
"pg": "^8.14.1",
|
||||
"sharp": "^0.33.5",
|
||||
"sharp": "^0.34.0",
|
||||
"telegram": "^2.26.22",
|
||||
"uuid": "^11.1.0",
|
||||
"valibot": "1.0.0-beta.9"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"@browserbasehq/stagehand": "^2.0.0",
|
||||
"@guiiai/logg": "^1.0.7",
|
||||
"@modelcontextprotocol/sdk": "^1.8.0",
|
||||
"@proj-airi/server-sdk": "^0.3.6",
|
||||
"@proj-airi/server-sdk": "^0.4.19",
|
||||
"defu": "^6.1.4",
|
||||
"dotenv": "^16.4.7",
|
||||
"h3": "^1.15.1",
|
||||
@@ -24,8 +24,8 @@
|
||||
"zod": "^3.24.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.13.16",
|
||||
"@types/node": "^22.14.0",
|
||||
"tsx": "^4.19.3",
|
||||
"typescript": "^5.8.2"
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user