diff --git a/apps/stage-tamagotchi/src/renderer/locales/en.yml b/apps/stage-tamagotchi/src/renderer/locales/en.yml
index 6e431264e..53474f506 100644
--- a/apps/stage-tamagotchi/src/renderer/locales/en.yml
+++ b/apps/stage-tamagotchi/src/renderer/locales/en.yml
@@ -67,6 +67,8 @@ settings:
models:
description: Live2D, VRM, etc.
title: Models
+ memory:
+ description: Where memories got stored, and organized
modules:
consciousness:
description: Personality, desired model, etc.
diff --git a/apps/stage-tamagotchi/src/renderer/locales/zh-CN.yml b/apps/stage-tamagotchi/src/renderer/locales/zh-CN.yml
index 8e8ff8277..ca9b1e5ba 100644
--- a/apps/stage-tamagotchi/src/renderer/locales/zh-CN.yml
+++ b/apps/stage-tamagotchi/src/renderer/locales/zh-CN.yml
@@ -50,6 +50,9 @@ settings:
microphone: 麦克风
models: 模型
pages:
+ memory:
+ description: 存放记忆的地方,以及策略
+ title: 记忆体
models:
description: 切换角色的 Live2D,VRM 模型
title: 角色模型
diff --git a/apps/stage-tamagotchi/src/renderer/src/pages/settings/index.vue b/apps/stage-tamagotchi/src/renderer/src/pages/settings/index.vue
index 6537cd65c..81619a4b5 100644
--- a/apps/stage-tamagotchi/src/renderer/src/pages/settings/index.vue
+++ b/apps/stage-tamagotchi/src/renderer/src/pages/settings/index.vue
@@ -207,7 +207,7 @@ function handleLanguageChange(event: Event) {
-
diff --git a/apps/stage-tamagotchi/src/renderer/src/pages/settings/models/index.vue b/apps/stage-tamagotchi/src/renderer/src/pages/settings/models/index.vue
index 5ad418260..947420c5f 100644
--- a/apps/stage-tamagotchi/src/renderer/src/pages/settings/models/index.vue
+++ b/apps/stage-tamagotchi/src/renderer/src/pages/settings/models/index.vue
@@ -67,7 +67,7 @@ async function extractColorsFromModel() {
-
+
diff --git a/apps/stage-tamagotchi/src/renderer/src/pages/settings/modules/consciousness.vue b/apps/stage-tamagotchi/src/renderer/src/pages/settings/modules/consciousness.vue
index fc43ef65a..e9c4df044 100644
--- a/apps/stage-tamagotchi/src/renderer/src/pages/settings/modules/consciousness.vue
+++ b/apps/stage-tamagotchi/src/renderer/src/pages/settings/modules/consciousness.vue
@@ -214,7 +214,7 @@ function updateCustomModelName(value: string) {
-
+
diff --git a/apps/stage-tamagotchi/src/renderer/src/pages/settings/modules/index.vue b/apps/stage-tamagotchi/src/renderer/src/pages/settings/modules/index.vue
index 21c46b197..e300c265e 100644
--- a/apps/stage-tamagotchi/src/renderer/src/pages/settings/modules/index.vue
+++ b/apps/stage-tamagotchi/src/renderer/src/pages/settings/modules/index.vue
@@ -142,7 +142,7 @@ const modulesList = computed
(() => [
:configured="module.configured"
/>
-
+
diff --git a/apps/stage-tamagotchi/src/renderer/src/pages/settings/providers/index.vue b/apps/stage-tamagotchi/src/renderer/src/pages/settings/providers/index.vue
index 6dad4b874..7ed841d8f 100644
--- a/apps/stage-tamagotchi/src/renderer/src/pages/settings/providers/index.vue
+++ b/apps/stage-tamagotchi/src/renderer/src/pages/settings/providers/index.vue
@@ -50,7 +50,7 @@ const { allProvidersMetadata } = storeToRefs(providersStore)
:configured="provider.configured"
/>
-
+
diff --git a/apps/stage-tamagotchi/src/renderer/src/pages/settings/themes/index.vue b/apps/stage-tamagotchi/src/renderer/src/pages/settings/themes/index.vue
index 76683f174..dfa6f2851 100644
--- a/apps/stage-tamagotchi/src/renderer/src/pages/settings/themes/index.vue
+++ b/apps/stage-tamagotchi/src/renderer/src/pages/settings/themes/index.vue
@@ -368,7 +368,7 @@ function isColorSelected(hexColor: string): boolean {
-
+
diff --git a/apps/stage-web/locales/en.yml b/apps/stage-web/locales/en.yml
index 1acf1ba64..ef0f96fc8 100644
--- a/apps/stage-web/locales/en.yml
+++ b/apps/stage-web/locales/en.yml
@@ -67,6 +67,8 @@ settings:
microphone: Microphone
models: Model
pages:
+ memory:
+ description: Where memories got stored, and organized
models:
description: Live2D, VRM, etc.
title: Models
diff --git a/apps/stage-web/locales/zh-CN.yml b/apps/stage-web/locales/zh-CN.yml
index b087388fd..94517681b 100644
--- a/apps/stage-web/locales/zh-CN.yml
+++ b/apps/stage-web/locales/zh-CN.yml
@@ -53,6 +53,9 @@ settings:
microphone: 麦克风
models: 模型
pages:
+ memory:
+ description: 存放记忆的地方,以及策略
+ title: 记忆体
models:
description: 切换角色的 Live2D,VRM 模型
title: 角色模型
diff --git a/apps/stage-web/package.json b/apps/stage-web/package.json
index 8e1759e82..1abc37bfe 100644
--- a/apps/stage-web/package.json
+++ b/apps/stage-web/package.json
@@ -36,7 +36,12 @@
"@pixiv/three-vrm": "^3.3.6",
"@pixiv/three-vrm-animation": "^3.3.6",
"@pixiv/three-vrm-core": "^3.3.6",
+ "@proj-airi/drizzle-duckdb-wasm": "workspace:^",
+ "@proj-airi/elevenlabs": "workspace:^",
+ "@proj-airi/provider-transformers": "workspace:^",
+ "@proj-airi/server-sdk": "workspace:^",
"@proj-airi/stage-ui": "workspace:^",
+ "@proj-airi/ui-transitions": "workspace:^",
"@ricky0123/vad-web": "^0.0.22",
"@standard-schema/spec": "^1.0.0",
"@tresjs/cientos": "^4.2.0",
@@ -97,11 +102,7 @@
"@iconify-json/vscode-icons": "^1.2.16",
"@iconify/utils": "^2.3.0",
"@intlify/unplugin-vue-i18n": "^6.0.5",
- "@proj-airi/drizzle-duckdb-wasm": "workspace:^",
- "@proj-airi/elevenlabs": "workspace:^",
"@proj-airi/lobe-icons": "^1.0.4",
- "@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",
diff --git a/apps/stage-web/src/pages/settings/index.vue b/apps/stage-web/src/pages/settings/index.vue
index 6537cd65c..28182effe 100644
--- a/apps/stage-web/src/pages/settings/index.vue
+++ b/apps/stage-web/src/pages/settings/index.vue
@@ -56,6 +56,17 @@ function handleLanguageChange(event: Event) {
icon="i-lucide:person-standing"
to="/settings/models"
/>
+
-
diff --git a/apps/stage-web/src/pages/settings/memory/index.vue b/apps/stage-web/src/pages/settings/memory/index.vue
new file mode 100644
index 000000000..f49297e8c
--- /dev/null
+++ b/apps/stage-web/src/pages/settings/memory/index.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+ {{ t('settings.title') }}
+
+
+ {{ t('settings.pages.memory.title') }}
+
+
+
+
diff --git a/apps/stage-web/src/pages/settings/models/index.vue b/apps/stage-web/src/pages/settings/models/index.vue
index 8dbfa31f7..ab8e7eb21 100644
--- a/apps/stage-web/src/pages/settings/models/index.vue
+++ b/apps/stage-web/src/pages/settings/models/index.vue
@@ -68,7 +68,7 @@ async function extractColorsFromModel() {
-
+
diff --git a/apps/stage-web/src/pages/settings/modules/consciousness.vue b/apps/stage-web/src/pages/settings/modules/consciousness.vue
index fc43ef65a..e9c4df044 100644
--- a/apps/stage-web/src/pages/settings/modules/consciousness.vue
+++ b/apps/stage-web/src/pages/settings/modules/consciousness.vue
@@ -214,7 +214,7 @@ function updateCustomModelName(value: string) {
-
+
diff --git a/apps/stage-web/src/pages/settings/modules/index.vue b/apps/stage-web/src/pages/settings/modules/index.vue
index d09746411..165a939d2 100644
--- a/apps/stage-web/src/pages/settings/modules/index.vue
+++ b/apps/stage-web/src/pages/settings/modules/index.vue
@@ -57,7 +57,7 @@ const modulesList = computed
(() => [
name: t('settings.pages.modules.memory-short-term.title'),
description: t('settings.pages.modules.memory-short-term.description'),
icon: 'i-lucide:book',
- to: '',
+ to: '/settings/modules/memory-short-term',
configured: false,
},
{
@@ -65,7 +65,7 @@ const modulesList = computed(() => [
name: t('settings.pages.modules.memory-long-term.title'),
description: t('settings.pages.modules.memory-long-term.description'),
icon: 'i-lucide:book-copy',
- to: '',
+ to: '/settings/modules/memory-long-term',
configured: false,
},
{
@@ -142,7 +142,7 @@ const modulesList = computed(() => [
:configured="module.configured"
/>
-
+
diff --git a/apps/stage-web/src/pages/settings/modules/memory-long-term.vue b/apps/stage-web/src/pages/settings/modules/memory-long-term.vue
new file mode 100644
index 000000000..0ccec0404
--- /dev/null
+++ b/apps/stage-web/src/pages/settings/modules/memory-long-term.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+ {{ t('settings.title') }}
+
+
+ {{ t('settings.pages.modules.memory-long-term.title') }}
+
+
+
+
diff --git a/apps/stage-web/src/pages/settings/modules/memory-short-term.vue b/apps/stage-web/src/pages/settings/modules/memory-short-term.vue
new file mode 100644
index 000000000..0aa8cc944
--- /dev/null
+++ b/apps/stage-web/src/pages/settings/modules/memory-short-term.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+ {{ t('settings.title') }}
+
+
+ {{ t('settings.pages.modules.memory-short-term.title') }}
+
+
+
+
diff --git a/apps/stage-web/src/pages/settings/providers/index.vue b/apps/stage-web/src/pages/settings/providers/index.vue
index 6dad4b874..7ed841d8f 100644
--- a/apps/stage-web/src/pages/settings/providers/index.vue
+++ b/apps/stage-web/src/pages/settings/providers/index.vue
@@ -50,7 +50,7 @@ const { allProvidersMetadata } = storeToRefs(providersStore)
:configured="provider.configured"
/>
-
+
diff --git a/apps/stage-web/src/pages/settings/themes/index.vue b/apps/stage-web/src/pages/settings/themes/index.vue
index 76683f174..dfa6f2851 100644
--- a/apps/stage-web/src/pages/settings/themes/index.vue
+++ b/apps/stage-web/src/pages/settings/themes/index.vue
@@ -368,7 +368,7 @@ function isColorSelected(hexColor: string): boolean {
-
+
diff --git a/packages/memory-pgvector/package.json b/packages/memory-pgvector/package.json
new file mode 100644
index 000000000..354382202
--- /dev/null
+++ b/packages/memory-pgvector/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "@proj-airi/memory-pgvector",
+ "type": "module",
+ "version": "1.0.0",
+ "description": "",
+ "author": "",
+ "license": "MIT",
+ "keywords": [],
+ "scripts": {
+ "dev": "tsx src/index.ts"
+ },
+ "dependencies": {
+ "@guiiai/logg": "^1.0.7",
+ "@proj-airi/server-sdk": "workspace:^",
+ "drizzle-orm": "^0.40.1",
+ "postgres": "^3.4.5"
+ },
+ "devDependencies": {
+ "tsx": "^4.19.3"
+ }
+}
diff --git a/packages/memory-pgvector/src/index.ts b/packages/memory-pgvector/src/index.ts
new file mode 100644
index 000000000..77c22f0eb
--- /dev/null
+++ b/packages/memory-pgvector/src/index.ts
@@ -0,0 +1,15 @@
+import { Format, LogLevel, setGlobalFormat, setGlobalLogLevel } from '@guiiai/logg'
+import { Client } from '@proj-airi/server-sdk'
+
+import { runUntilSignal } from './utils/process'
+
+setGlobalFormat(Format.Pretty)
+setGlobalLogLevel(LogLevel.Log)
+
+async function main() {
+ const _client = new Client<{ connectionString: string }>({ name: 'memory-pgvector' })
+
+ runUntilSignal()
+}
+
+main()
diff --git a/packages/memory-pgvector/src/utils/process.ts b/packages/memory-pgvector/src/utils/process.ts
new file mode 100644
index 000000000..f33e4956f
--- /dev/null
+++ b/packages/memory-pgvector/src/utils/process.ts
@@ -0,0 +1,30 @@
+import process from 'node:process'
+import { useLogg } from '@guiiai/logg'
+
+const logger = useLogg('process').useGlobalConfig()
+
+let running = true
+
+function killProcess() {
+ running = false
+}
+
+process.on('SIGTERM', () => {
+ logger.log('SIGTERM received')
+ killProcess()
+})
+process.on('SIGINT', () => {
+ logger.log('SIGINT received')
+ killProcess()
+})
+process.on('uncaughtException', (e) => {
+ logger.withError(e).error('uncaught exception')
+ killProcess()
+})
+
+export function runUntilSignal() {
+ setTimeout(() => {
+ if (running)
+ runUntilSignal()
+ }, 10)
+}
diff --git a/packages/memory-pgvector/tsconfig.json b/packages/memory-pgvector/tsconfig.json
new file mode 100644
index 000000000..00dcfd807
--- /dev/null
+++ b/packages/memory-pgvector/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "lib": [
+ "ESNext"
+ ],
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "isolatedModules": true,
+ "verbatimModuleSyntax": true,
+ "skipLibCheck": true
+ },
+ "include": [
+ "src/**/*.ts"
+ ]
+}
diff --git a/packages/server-runtime/src/index.ts b/packages/server-runtime/src/index.ts
index e20291531..d5d70d465 100644
--- a/packages/server-runtime/src/index.ts
+++ b/packages/server-runtime/src/index.ts
@@ -30,11 +30,11 @@ function main() {
open: (peer) => {
const token = env.AUTHENTICATION_TOKEN || ''
if (token) {
- peers.set(peer.id, { peer, authenticated: false })
+ peers.set(peer.id, { peer, authenticated: false, name: '' })
}
else {
send(peer, { type: 'module:authenticated', data: { authenticated: true } })
- peers.set(peer.id, { peer, authenticated: true })
+ peers.set(peer.id, { peer, authenticated: true, name: '' })
}
websocketLogger.withFields({ peer: peer.id, activePeers: peers.size }).log('connected')
@@ -52,7 +52,26 @@ function main() {
}
send(peer, { type: 'module:authenticated', data: { authenticated: true } })
- peers.set(peer.id, { peer, authenticated: true })
+ peers.set(peer.id, { peer, authenticated: true, name: '' })
+ return
+ case 'module:announce':
+ peers.set(peer.id, { peer, authenticated: true, name: event.data.name })
+ return
+ case 'ui:configure':
+ peers.forEach((p) => {
+ if (p.name === '') {
+ return
+ }
+ if ((typeof p.index !== 'undefined' && typeof event.data.moduleIndex !== 'undefined' && p.name === event.data.moduleName && p.index === event.data.moduleIndex)) {
+ return
+ }
+ if (p.name !== event.data.moduleName) {
+ return
+ }
+
+ p.peer.send(JSON.stringify({ type: 'module:configure', data: { config: event.data.config } } as WebSocketEvent))
+ })
+
return
}
if (!peers.get(peer.id)?.authenticated) {
diff --git a/packages/server-runtime/src/types/conn.ts b/packages/server-runtime/src/types/conn.ts
index 2e1cd3e93..654aa59ee 100644
--- a/packages/server-runtime/src/types/conn.ts
+++ b/packages/server-runtime/src/types/conn.ts
@@ -1,6 +1,11 @@
import type { Peer } from 'crossws'
-export interface AuthenticatedPeer {
+export interface NamedPeer {
+ name: string
+ index?: number
peer: Peer
+}
+
+export interface AuthenticatedPeer extends NamedPeer {
authenticated: boolean
}
diff --git a/packages/server-sdk/src/client.ts b/packages/server-sdk/src/client.ts
index 92877b79d..89feabf61 100644
--- a/packages/server-sdk/src/client.ts
+++ b/packages/server-sdk/src/client.ts
@@ -6,32 +6,47 @@ import { defu } from 'defu'
import { sleep } from './utils'
-export interface ClientOptions {
+export interface ClientOptions
{
url?: string
name: string
- possibleEvents?: Array<(keyof WebSocketEvents)>
+ possibleEvents?: Array<(keyof WebSocketEvents)>
token?: string
+ onError?: (error: unknown) => void
+ onClose?: () => void
+ autoConnect?: boolean
+ autoReconnect?: boolean
}
-export class Client {
- private opts: Required
+export class Client {
+ private connected = false
+ private opts: Required>
private websocket: WebSocket
- private eventListeners: Map<
- keyof WebSocketEvents,
- Array<(data: WebSocketBaseEvent<
- keyof WebSocketEvents,
- WebSocketEvents[keyof WebSocketEvents]
- >) => void | Promise>
- > = new Map()
+ private eventListeners: Map, WebSocketEvents[keyof WebSocketEvents]>) => void | Promise>> = new Map()
private authenticateAttempts = 0
- constructor(options: ClientOptions) {
- this.opts = defu, Required>[]>(
+ constructor(options: ClientOptions) {
+ this.opts = defu>, Required, 'name' | 'token'>>[]>(
options,
- { url: 'ws://localhost:6121/ws', possibleEvents: [] },
+ {
+ url: 'ws://localhost:6121/ws',
+ possibleEvents: [],
+ onError: () => { },
+ onClose: () => { },
+ autoConnect: true,
+ autoReconnect: true,
+ },
)
+ if (this.opts.autoConnect) {
+ this.connect()
+ }
+ }
+
+ connect() {
+ if (this.connected)
+ return
+
this.websocket = new WebSocket(this.opts.url)
this.onEvent('module:authenticated', async (event) => {
@@ -46,6 +61,10 @@ export class Client {
}
})
+ this.websocket.onerror = (event) => {
+ this.opts.onError?.(event)
+ }
+
this.websocket.onmessage = this.handleMessage.bind(this)
this.websocket.onopen = () => {
@@ -55,10 +74,17 @@ export class Client {
else {
this.tryAnnounce()
}
+
+ this.connected = true
}
this.websocket.onclose = () => {
+ this.connected = false
this.authenticateAttempts = 0
+ this.opts.onClose?.()
+ if (this.opts.autoReconnect) {
+ this.connect()
+ }
}
}
@@ -79,7 +105,7 @@ export class Client {
}
private async handleMessage(event: any) {
- const data = JSON.parse(event.data) as WebSocketEvent
+ const data = JSON.parse(event.data) as WebSocketEvent
const listeners = this.eventListeners.get(data.type)
if (!listeners)
return
@@ -88,9 +114,9 @@ export class Client {
await listener(data)
}
- onEvent(
+ onEvent>(
event: E,
- callback: (data: WebSocketBaseEvent) => void | Promise,
+ callback: (data: WebSocketBaseEvent[E]>) => void | Promise,
): void {
if (!this.eventListeners.get(event)) {
this.eventListeners.set(event, [])
@@ -101,7 +127,7 @@ export class Client {
this.eventListeners.set(event, listeners)
}
- send(data: WebSocketEvent): void {
+ send(data: WebSocketEvent): void {
this.websocket.send(JSON.stringify(data))
}
diff --git a/packages/server-shared/src/types/websocket/events.ts b/packages/server-shared/src/types/websocket/events.ts
index 1f82cb7ce..f0ff0e5eb 100644
--- a/packages/server-shared/src/types/websocket/events.ts
+++ b/packages/server-shared/src/types/websocket/events.ts
@@ -28,7 +28,7 @@ export type WithInputSource = {
//
// A little hack for creating extensible discriminated unions : r/typescript
// https://www.reddit.com/r/typescript/comments/1064ibt/a_little_hack_for_creating_extensible/
-export interface WebSocketEvents {
+export interface WebSocketEvents {
'error': {
message: string
}
@@ -40,7 +40,15 @@ export interface WebSocketEvents {
}
'module:announce': {
name: string
- possibleEvents: Array<(keyof WebSocketEvents)>
+ possibleEvents: Array<(keyof WebSocketEvents)>
+ }
+ 'module:configure': {
+ config: C
+ }
+ 'ui:configure': {
+ moduleName: string
+ moduleIndex?: number
+ config: C | Record
}
'input:text': {
text: string
@@ -53,6 +61,6 @@ export interface WebSocketEvents {
} & Partial>
}
-export type WebSocketEvent = {
- [K in keyof WebSocketEvents]: WebSocketBaseEvent;
-}[keyof WebSocketEvents]
+export type WebSocketEvent = {
+ [K in keyof WebSocketEvents]: WebSocketBaseEvent[K]>;
+}[keyof WebSocketEvents]
diff --git a/packages/stage-ui/package.json b/packages/stage-ui/package.json
index d6a5d20f7..482e6e12b 100644
--- a/packages/stage-ui/package.json
+++ b/packages/stage-ui/package.json
@@ -57,6 +57,7 @@
},
"dependencies": {
"@formkit/auto-animate": "^0.8.2",
+ "@proj-airi/server-sdk": "workspace:^",
"@vueuse/motion": "^3.0.3",
"reka-ui": "^2.1.0",
"unist-builder": "^4.0.0",
diff --git a/packages/stage-ui/src/components/Form/Radio/Radio.vue b/packages/stage-ui/src/components/Form/Radio/Radio.vue
index a5816baa9..aae5a83a5 100644
--- a/packages/stage-ui/src/components/Form/Radio/Radio.vue
+++ b/packages/stage-ui/src/components/Form/Radio/Radio.vue
@@ -21,7 +21,7 @@ const modelValue = defineModel({ required: true })
:class="[
modelValue === value
? 'bg-primary-50 dark:bg-primary-900/20 border-primary-100 dark:border-primary-900 hover:border-primary-500/30 dark:hover:border-primary-400/30'
- : 'bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-700 hover:border-primary-500/30 dark:hover:border-primary-400/30',
+ : 'bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-900 hover:border-primary-500/30 dark:hover:border-primary-400/30',
modelValue === value
? 'form_radio-active'
: '',
diff --git a/packages/stage-ui/src/components/Form/Radio/RadioCardDetail.vue b/packages/stage-ui/src/components/Form/Radio/RadioCardDetail.vue
index 3912cedac..54532c900 100644
--- a/packages/stage-ui/src/components/Form/Radio/RadioCardDetail.vue
+++ b/packages/stage-ui/src/components/Form/Radio/RadioCardDetail.vue
@@ -45,7 +45,7 @@ function toggleExpansion() {
:class="[
modelValue === value
? 'bg-primary-50 dark:bg-primary-900/20 border-primary-100 dark:border-primary-900 hover:border-primary-500/30 dark:hover:border-primary-400/30'
- : 'bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-700 hover:border-primary-500/30 dark:hover:border-primary-400/30',
+ : 'bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-900 hover:border-primary-500/30 dark:hover:border-primary-400/30',
modelValue === value
? 'form_radio-card-detail-active'
: '',
diff --git a/packages/stage-ui/src/components/Form/Radio/RadioCardSimple.vue b/packages/stage-ui/src/components/Form/Radio/RadioCardSimple.vue
index 1fc83fc18..54b68ce95 100644
--- a/packages/stage-ui/src/components/Form/Radio/RadioCardSimple.vue
+++ b/packages/stage-ui/src/components/Form/Radio/RadioCardSimple.vue
@@ -19,7 +19,7 @@ const modelValue = defineModel({ required: true })
:class="[
modelValue === value
? 'bg-primary-50 dark:bg-primary-900/20 border-primary-100 dark:border-primary-900 hover:border-primary-500/30 dark:hover:border-primary-400/30'
- : 'bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-700 hover:border-primary-500/30 dark:hover:border-primary-400/30',
+ : 'bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-900 hover:border-primary-500/30 dark:hover:border-primary-400/30',
modelValue === value
? 'form_radio-card-simple-active'
: '',
diff --git a/packages/stage-ui/src/components/Form/VoiceCard.vue b/packages/stage-ui/src/components/Form/VoiceCard.vue
index fd752d9ad..568897941 100644
--- a/packages/stage-ui/src/components/Form/VoiceCard.vue
+++ b/packages/stage-ui/src/components/Form/VoiceCard.vue
@@ -95,7 +95,7 @@ function togglePlayback() {
:class="[
voiceId === props.voice.id
? 'bg-primary-50 dark:bg-primary-900/20 border-primary-100 dark:border-primary-900 hover:border-primary-500/30 dark:hover:border-primary-400/30'
- : 'bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-700 hover:border-primary-500/30 dark:hover:border-primary-400/30',
+ : 'bg-white dark:bg-neutral-900/20 border-neutral-100 dark:border-neutral-900 hover:border-primary-500/30 dark:hover:border-primary-400/30',
voiceId === props.voice.id
? 'form_voice-card-active'
: '',
diff --git a/packages/stage-ui/src/components/Providers/ProviderSettingsLayout.vue b/packages/stage-ui/src/components/Providers/ProviderSettingsLayout.vue
index 11a5f9f31..24a7556e4 100644
--- a/packages/stage-ui/src/components/Providers/ProviderSettingsLayout.vue
+++ b/packages/stage-ui/src/components/Providers/ProviderSettingsLayout.vue
@@ -29,7 +29,7 @@ defineProps<{
-
+
diff --git a/packages/stage-ui/src/components/Providers/ProviderSettingsLayout2.vue b/packages/stage-ui/src/components/Providers/ProviderSettingsLayout2.vue
index a905eb1ce..422ee608f 100644
--- a/packages/stage-ui/src/components/Providers/ProviderSettingsLayout2.vue
+++ b/packages/stage-ui/src/components/Providers/ProviderSettingsLayout2.vue
@@ -120,7 +120,7 @@ function handleBackClick() {
-
diff --git a/packages/stage-ui/src/stores/index.ts b/packages/stage-ui/src/stores/index.ts
index a5f8f0c0c..97e46e461 100644
--- a/packages/stage-ui/src/stores/index.ts
+++ b/packages/stage-ui/src/stores/index.ts
@@ -3,4 +3,5 @@ export * from './chat'
export * from './llm'
export * from './modules'
export * from './providers'
+export * from './server'
export * from './settings'
diff --git a/packages/stage-ui/src/stores/server.ts b/packages/stage-ui/src/stores/server.ts
new file mode 100644
index 000000000..d6408002e
--- /dev/null
+++ b/packages/stage-ui/src/stores/server.ts
@@ -0,0 +1,27 @@
+import { Client } from '@proj-airi/server-sdk'
+import { defineStore } from 'pinia'
+import { onMounted, ref } from 'vue'
+
+export const useServerStore = defineStore('server', () => {
+ const server = ref
()
+
+ onMounted(() => {
+ server.value = new Client({
+ name: 'stage-web',
+ autoConnect: false,
+ autoReconnect: true,
+ onError: (error) => {
+ console.error(error)
+ },
+ })
+ })
+
+ function connect() {
+ server.value?.connect()
+ }
+
+ return {
+ server,
+ connect,
+ }
+})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3c2989bee..a61b62e7a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -309,7 +309,7 @@ importers:
version: 0.30.5
drizzle-orm:
specifier: ^0.40.1
- version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)
+ version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)(postgres@3.4.5)
jszip:
specifier: ^3.10.1
version: 3.10.1
@@ -418,7 +418,7 @@ importers:
version: 2.3.0
'@intlify/unplugin-vue-i18n':
specifier: ^6.0.5
- version: 6.0.5(@vue/compiler-dom@3.5.13)(eslint@9.22.0(jiti@2.4.2))(rollup@2.79.1)(typescript@5.8.2)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
+ version: 6.0.5(@vue/compiler-dom@3.5.13)(eslint@9.22.0(jiti@2.4.2))(rollup@4.36.0)(typescript@5.8.2)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
'@proj-airi/drizzle-duckdb-wasm':
specifier: workspace:^
version: link:../../packages/drizzle-duckdb-wasm
@@ -469,7 +469,7 @@ importers:
version: 3.0.0-beta.5(typescript@5.8.2)(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))
'@vueuse/motion':
specifier: ^3.0.3
- version: 3.0.3(magicast@0.3.5)(rollup@2.79.1)(vue@3.5.13(typescript@5.8.2))
+ version: 3.0.3(magicast@0.3.5)(rollup@4.36.0)(vue@3.5.13(typescript@5.8.2))
electron:
specifier: ^34.3.3
version: 34.3.3
@@ -490,13 +490,13 @@ importers:
version: 3.2.0(unocss@66.1.0-beta.6(postcss@8.5.3)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)))
unplugin-auto-import:
specifier: ^19.1.1
- version: 19.1.1(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))
+ version: 19.1.1(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.36.0))(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))
unplugin-vue-components:
specifier: ^28.4.1
- version: 28.4.1(@babel/parser@7.26.10)(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(vue@3.5.13(typescript@5.8.2))
+ version: 28.4.1(@babel/parser@7.26.10)(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.36.0))(vue@3.5.13(typescript@5.8.2))
unplugin-vue-macros:
specifier: ^2.14.5
- version: 2.14.5(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))(esbuild@0.25.0)(rollup@2.79.1)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))
+ version: 2.14.5(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))(esbuild@0.25.0)(rollup@4.36.0)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))
unplugin-vue-markdown:
specifier: ^28.3.1
version: 28.3.1(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))
@@ -505,13 +505,13 @@ importers:
version: 0.12.0(vue-router@4.5.0(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
vite-bundle-visualizer:
specifier: ^1.2.1
- version: 1.2.1(rollup@2.79.1)
+ version: 1.2.1(rollup@4.36.0)
vite-plugin-pwa:
specifier: ^0.21.1
version: 0.21.1(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
vite-plugin-vue-devtools:
specifier: ^7.7.2
- version: 7.7.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(rollup@2.79.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
+ version: 7.7.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.36.0))(rollup@4.36.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
vite-plugin-vue-layouts:
specifier: ^0.11.0
version: 0.11.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue-router@4.5.0(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
@@ -578,9 +578,24 @@ importers:
'@pixiv/three-vrm-core':
specifier: ^3.3.6
version: 3.3.6(three@0.174.0)
+ '@proj-airi/drizzle-duckdb-wasm':
+ specifier: workspace:^
+ version: link:../../packages/drizzle-duckdb-wasm
+ '@proj-airi/elevenlabs':
+ specifier: workspace:^
+ version: link:../../packages/elevenlabs
+ '@proj-airi/provider-transformers':
+ specifier: workspace:^
+ version: link:../../packages/provider-transformers
+ '@proj-airi/server-sdk':
+ specifier: workspace:^
+ version: link:../../packages/server-sdk
'@proj-airi/stage-ui':
specifier: workspace:^
version: link:../../packages/stage-ui
+ '@proj-airi/ui-transitions':
+ specifier: workspace:^
+ version: link:../../packages/ui-transitions
'@ricky0123/vad-web':
specifier: ^0.0.22
version: 0.0.22
@@ -646,7 +661,7 @@ importers:
version: 0.30.5
drizzle-orm:
specifier: ^0.40.1
- version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)
+ version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)(postgres@3.4.5)
jszip:
specifier: ^3.10.1
version: 3.10.1
@@ -755,22 +770,10 @@ importers:
version: 2.3.0
'@intlify/unplugin-vue-i18n':
specifier: ^6.0.5
- version: 6.0.5(@vue/compiler-dom@3.5.13)(eslint@9.22.0(jiti@2.4.2))(rollup@4.36.0)(typescript@5.8.2)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
- '@proj-airi/drizzle-duckdb-wasm':
- specifier: workspace:^
- version: link:../../packages/drizzle-duckdb-wasm
- '@proj-airi/elevenlabs':
- specifier: workspace:^
- version: link:../../packages/elevenlabs
+ version: 6.0.5(@vue/compiler-dom@3.5.13)(eslint@9.22.0(jiti@2.4.2))(rollup@2.79.1)(typescript@5.8.2)(vue-i18n@11.1.2(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
'@proj-airi/lobe-icons':
specifier: ^1.0.4
version: 1.0.4
- '@proj-airi/provider-transformers':
- specifier: workspace:^
- version: link:../../packages/provider-transformers
- '@proj-airi/ui-transitions':
- specifier: workspace:^
- version: link:../../packages/ui-transitions
'@proj-airi/unplugin-fetch':
specifier: ^0.1.4
version: 0.1.4(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0)
@@ -806,7 +809,7 @@ importers:
version: 3.0.0-beta.5(typescript@5.8.2)(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))
'@vueuse/motion':
specifier: ^3.0.3
- version: 3.0.3(magicast@0.3.5)(rollup@4.36.0)(vue@3.5.13(typescript@5.8.2))
+ version: 3.0.3(magicast@0.3.5)(rollup@2.79.1)(vue@3.5.13(typescript@5.8.2))
hfup:
specifier: workspace:^
version: link:../../packages/hfup
@@ -818,13 +821,13 @@ importers:
version: 4.0.1
unplugin-auto-import:
specifier: ^19.1.1
- version: 19.1.1(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.36.0))(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))
+ version: 19.1.1(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))
unplugin-vue-components:
specifier: ^28.4.1
- version: 28.4.1(@babel/parser@7.26.10)(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.36.0))(vue@3.5.13(typescript@5.8.2))
+ version: 28.4.1(@babel/parser@7.26.10)(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(vue@3.5.13(typescript@5.8.2))
unplugin-vue-macros:
specifier: ^2.14.5
- version: 2.14.5(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))(esbuild@0.25.0)(rollup@4.36.0)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))
+ version: 2.14.5(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))(esbuild@0.19.12)(rollup@2.79.1)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))
unplugin-vue-markdown:
specifier: ^28.3.1
version: 28.3.1(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))
@@ -833,13 +836,13 @@ importers:
version: 0.12.0(vue-router@4.5.0(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
vite-bundle-visualizer:
specifier: ^1.2.1
- version: 1.2.1(rollup@4.36.0)
+ version: 1.2.1(rollup@2.79.1)
vite-plugin-pwa:
specifier: ^0.21.1
version: 0.21.1(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
vite-plugin-vue-devtools:
specifier: ^7.7.2
- version: 7.7.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.36.0))(rollup@4.36.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
+ version: 7.7.2(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(rollup@2.79.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
vite-plugin-vue-layouts:
specifier: ^0.11.0
version: 0.11.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue-router@4.5.0(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
@@ -884,7 +887,7 @@ importers:
version: 6.1.4
drizzle-orm:
specifier: ^0.40.1
- version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)
+ version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)(postgres@3.4.5)
es-toolkit:
specifier: ^1.33.0
version: 1.33.0
@@ -963,7 +966,7 @@ importers:
version: 6.1.4
drizzle-orm:
specifier: ^0.40.1
- version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)
+ version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)(postgres@3.4.5)
es-toolkit:
specifier: ^1.33.0
version: 1.33.0
@@ -1006,6 +1009,25 @@ importers:
specifier: ^6.2.2
version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0)
+ packages/memory-pgvector:
+ dependencies:
+ '@guiiai/logg':
+ specifier: ^1.0.7
+ version: 1.0.7
+ '@proj-airi/server-sdk':
+ specifier: workspace:^
+ version: link:../server-sdk
+ drizzle-orm:
+ specifier: ^0.40.1
+ version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)(postgres@3.4.5)
+ postgres:
+ specifier: ^3.4.5
+ version: 3.4.5
+ devDependencies:
+ tsx:
+ specifier: ^4.19.3
+ version: 4.19.3
+
packages/provider-transformers:
dependencies:
'@huggingface/transformers':
@@ -1108,6 +1130,9 @@ importers:
'@formkit/auto-animate':
specifier: ^0.8.2
version: 0.8.2
+ '@proj-airi/server-sdk':
+ specifier: workspace:^
+ version: link:../server-sdk
'@vueuse/motion':
specifier: ^3.0.3
version: 3.0.3(magicast@0.3.5)(rollup@4.36.0)(vue@3.5.13(typescript@5.8.2))
@@ -1357,7 +1382,7 @@ importers:
version: 16.4.7
drizzle-orm:
specifier: ^0.40.1
- version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)
+ version: 0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)(postgres@3.4.5)
es-toolkit:
specifier: ^1.33.0
version: 1.33.0
@@ -9809,6 +9834,10 @@ packages:
postgres-range@1.1.4:
resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==}
+ postgres@3.4.5:
+ resolution: {integrity: sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==}
+ engines: {node: '>=12'}
+
potpack@1.0.2:
resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==}
@@ -18209,11 +18238,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1):
+ drizzle-orm@0.40.1(@types/pg@8.11.11)(gel@2.0.0)(pg@8.14.1)(postgres@3.4.5):
optionalDependencies:
'@types/pg': 8.11.11
gel: 2.0.0
pg: 8.14.1
+ postgres: 3.4.5
dset@3.1.4: {}
@@ -22185,6 +22215,8 @@ snapshots:
postgres-range@1.1.4: {}
+ postgres@3.4.5: {}
+
potpack@1.0.2: {}
prelude-ls@1.2.1: {}
@@ -24001,9 +24033,9 @@ snapshots:
'@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.36.0)
'@vueuse/core': 13.0.0(vue@3.5.13(typescript@5.8.2))
- unplugin-combine@1.2.1(esbuild@0.25.0)(rollup@2.79.1)(unplugin@1.16.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0)):
+ unplugin-combine@1.2.1(esbuild@0.19.12)(rollup@2.79.1)(unplugin@1.16.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0)):
optionalDependencies:
- esbuild: 0.25.0
+ esbuild: 0.19.12
rollup: 2.79.1
unplugin: 1.16.1
vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0)
@@ -24062,7 +24094,7 @@ snapshots:
transitivePeerDependencies:
- vue
- unplugin-vue-macros@2.14.5(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))(esbuild@0.25.0)(rollup@2.79.1)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2)):
+ unplugin-vue-macros@2.14.5(@vueuse/core@13.0.0(vue@3.5.13(typescript@5.8.2)))(esbuild@0.19.12)(rollup@2.79.1)(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2)):
dependencies:
'@vue-macros/better-define': 1.11.4(vue@3.5.13(typescript@5.8.2))
'@vue-macros/boolean-prop': 0.5.5(vue@3.5.13(typescript@5.8.2))
@@ -24094,7 +24126,7 @@ snapshots:
'@vue-macros/short-vmodel': 1.5.5(vue@3.5.13(typescript@5.8.2))
'@vue-macros/volar': 0.30.15(typescript@5.8.2)(vue-tsc@3.0.0-alpha.2(typescript@5.8.2))(vue@3.5.13(typescript@5.8.2))
unplugin: 1.16.1
- unplugin-combine: 1.2.1(esbuild@0.25.0)(rollup@2.79.1)(unplugin@1.16.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))
+ unplugin-combine: 1.2.1(esbuild@0.19.12)(rollup@2.79.1)(unplugin@1.16.1)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(terser@5.17.6)(tsx@4.19.3)(yaml@2.7.0))
unplugin-vue-define-options: 1.5.5(vue@3.5.13(typescript@5.8.2))
vue: 3.5.13(typescript@5.8.2)
transitivePeerDependencies: