diff --git a/apps/server/src/libs/eventa-hono-adapter.ts b/apps/server/src/libs/eventa-hono-adapter.ts deleted file mode 100644 index ec89617ac..000000000 --- a/apps/server/src/libs/eventa-hono-adapter.ts +++ /dev/null @@ -1,208 +0,0 @@ -import type { EventContext, InvocableEventContext } from '@moeru/eventa' -import type { WSContext, WSEvents } from 'hono/ws' - -import { and, createContext, defineEventa, defineInboundEventa, defineOutboundEventa, EventaFlowDirection, matchBy } from '@moeru/eventa' - -// Re-implement the internal websocket payload helpers since they are not exported -// from @moeru/eventa's public API. These match the wire format used by the H3 and -// native adapters so that clients using any eventa adapter remain interoperable. - -interface WebsocketPayload { - id: string - type: string - payload: Record - timestamp: number -} - -function generateWebsocketPayload(type: string, payload: Record): WebsocketPayload { - return { - id: crypto.randomUUID(), - type, - payload, - timestamp: Date.now(), - } -} - -function parseWebsocketPayload(data: string): WebsocketPayload { - return JSON.parse(data) -} - -// --------------------------------------------------------------------------- -// Lifecycle events -// --------------------------------------------------------------------------- - -export const wsConnectedEvent = defineEventa('eventa:adapters:hono-ws:connected') -export const wsDisconnectedEvent = defineEventa('eventa:adapters:hono-ws:disconnected') -export const wsErrorEvent = defineEventa('eventa:adapters:hono-ws:error') - -interface HonoWsRawEventOptions { - raw?: { - error?: Event - message?: HonoWsMessageEvent - } -} - -type HonoWsMessageEvent = Parameters>[0] - -export type HonoWsEventContext = EventContext -export type HonoWsInvocableEventContext = InvocableEventContext - -// --------------------------------------------------------------------------- -// Per-peer adapter -// --------------------------------------------------------------------------- - -export interface CreatePeerHooksOptions { - /** Called when a new peer connects and its EventContext is ready. */ - onContext?: (ctx: HonoWsInvocableEventContext) => void -} - -export interface PeerHooksResult { - hooks: WSEvents -} - -/** - * Create Hono WSEvents hooks that manage one eventa EventContext per peer. - * - * This is the Hono equivalent of the H3 adapter's `createPeerContext` / - * `createPeerHooks`. Each time `onOpen` fires a fresh EventContext is created, - * outbound events are serialised to `ws.send()`, and incoming messages are - * routed into the context as inbound events. - */ -export function createPeerHooks(options: CreatePeerHooksOptions = {}): PeerHooksResult { - let ctx: HonoWsInvocableEventContext | undefined - let cleanup: (() => void) | undefined - - const hooks: WSEvents = { - onOpen(_event, ws) { - ctx = createContext() - - // Intercept outbound events and forward them over the WebSocket. - // This mirrors the H3 adapter's pattern exactly. - const offOutbound = ctx.on( - and( - matchBy((e: any) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection), - matchBy('*'), - ), - (event: any) => { - const data = JSON.stringify( - generateWebsocketPayload(event.id, { - ...defineOutboundEventa(event.type), - ...event, - }), - ) - ws.send(data) - }, - ) - - cleanup = offOutbound - - // Emit lifecycle event - ctx.emit(wsConnectedEvent, {}, { raw: {} }) - - // Notify caller - options.onContext?.(ctx) - }, - - onMessage(message) { - if (!ctx) - return - - try { - const raw = typeof message.data === 'string' ? message.data : String(message.data) - const { type, payload } = parseWebsocketPayload(raw) - ctx.emit(defineInboundEventa(type), (payload as any).body, { raw: { message } }) - } - catch (error) { - console.error('Failed to parse WebSocket message:', error) - ctx.emit(wsErrorEvent, { error }, { raw: { message } }) - } - }, - - onClose() { - if (!ctx) - return - - ctx.emit(wsDisconnectedEvent, {}, { raw: {} }) - cleanup?.() - ctx = undefined - cleanup = undefined - }, - - onError(event, _ws) { - if (!ctx) - return - - ctx.emit(wsErrorEvent, { error: event }, { raw: { error: event } }) - }, - } - - return { hooks } -} - -// --------------------------------------------------------------------------- -// Global (broadcast) adapter -// --------------------------------------------------------------------------- - -export interface GlobalHooksResult { - hooks: WSEvents - context: HonoWsEventContext -} - -/** - * Create a single shared EventContext that broadcasts outbound events to every - * connected peer — the Hono equivalent of the H3 adapter's - * `createGlobalContext`. - */ -export function createGlobalHooks(): GlobalHooksResult { - const ctx = createContext() - const peers = new Set() - - // Broadcast outbound events to all connected peers. - ctx.on( - and( - matchBy((e: any) => e._flowDirection === EventaFlowDirection.Outbound || !e._flowDirection), - matchBy('*'), - ), - (event: any) => { - const data = JSON.stringify( - generateWebsocketPayload(event.id, { - ...defineOutboundEventa(event.type), - ...event, - }), - ) - for (const peer of peers) { - peer.send(data) - } - }, - ) - - const hooks: WSEvents = { - onOpen(_event, ws) { - peers.add(ws) - ctx.emit(wsConnectedEvent, {}, { raw: {} }) - }, - - onMessage(message) { - try { - const raw = typeof message.data === 'string' ? message.data : String(message.data) - const { type, payload } = parseWebsocketPayload(raw) - ctx.emit(defineInboundEventa(type), (payload as any).body, { raw: { message } }) - } - catch (error) { - console.error('Failed to parse WebSocket message:', error) - ctx.emit(wsErrorEvent, { error }, { raw: { message } }) - } - }, - - onClose(_event, ws) { - peers.delete(ws) - ctx.emit(wsDisconnectedEvent, {}, { raw: {} }) - }, - - onError(event, _ws) { - ctx.emit(wsErrorEvent, { error: event }, { raw: { error: event } }) - }, - } - - return { hooks, context: ctx } -} diff --git a/apps/server/src/libs/tests/eventa-hono-adapter.test.ts b/apps/server/src/libs/tests/eventa-hono-adapter.test.ts deleted file mode 100644 index d006fa97d..000000000 --- a/apps/server/src/libs/tests/eventa-hono-adapter.test.ts +++ /dev/null @@ -1,104 +0,0 @@ -import type { WSContext } from 'hono/ws' - -import { defineEventa, defineInvokeEventa, defineInvokeHandler } from '@moeru/eventa' -import { describe, expect, it, vi } from 'vitest' - -import { createPeerHooks } from '../eventa-hono-adapter' - -function createMockWSContext(): WSContext & { sentMessages: string[] } { - const sentMessages: string[] = [] - return { - send: vi.fn((data: string) => sentMessages.push(data)), - close: vi.fn(), - readyState: 1, - raw: {}, - url: null, - protocol: null, - sentMessages, - } as any -} - -type HonoWsMessageEvent = Parameters>[0] - -describe('eventa Hono adapter', () => { - it('creates peer context on open and cleans up on close', () => { - let contextReceived = false - const { hooks } = createPeerHooks({ - onContext: () => { contextReceived = true }, - }) - const ws = createMockWSContext() - hooks.onOpen!({} as any, ws) - expect(contextReceived).toBe(true) - hooks.onClose!({} as any, ws) - }) - - it('routes inbound messages to eventa context and invokes handler', async () => { - const echo = defineInvokeEventa<{ out: string }, { in: string }>('test:echo') - - const { hooks } = createPeerHooks({ - onContext: (ctx) => { - defineInvokeHandler(ctx, echo, (req) => { - return { out: req.in.toUpperCase() } - }) - }, - }) - - const ws = createMockWSContext() - hooks.onOpen!({} as any, ws) - - // The invoke wire format: type must match sendEvent id, payload.body - // carries the invoke envelope with invokeId + content. - const invokeId = 'invoke-1' - const payload = JSON.stringify({ - id: 'msg-1', - type: echo.sendEvent.id, - payload: { - body: { - invokeId, - content: { in: 'hello' }, - }, - }, - timestamp: Date.now(), - }) - - const messageEvent = { data: payload } as HonoWsMessageEvent - hooks.onMessage!(messageEvent, ws) - - await new Promise(r => setTimeout(r, 100)) - - // Filter out lifecycle event messages (wsConnectedEvent) - const responses = ws.sentMessages - .map(m => JSON.parse(m)) - .filter((m: any) => !m.type.startsWith('eventa:adapters:')) - - expect(responses.length).toBeGreaterThan(0) - - // The invoke response payload contains the full event object spread into it. - // The actual response content is nested under body.content. - const response = responses[0] - expect(response.payload.body.invokeId).toBe(invokeId) - expect(response.payload.body.content).toEqual({ out: 'HELLO' }) - }) - - it('emits simple events and forwards them over the wire', () => { - const ping = defineEventa<{ msg: string }>('test:ping') - - let capturedCtx: any - const { hooks } = createPeerHooks({ - onContext: (ctx) => { capturedCtx = ctx }, - }) - - const ws = createMockWSContext() - hooks.onOpen!({} as any, ws) - - // Clear the connected lifecycle message - ws.sentMessages.length = 0 - - // Emit an outbound event from the context - capturedCtx.emit(ping, { msg: 'pong' }) - - expect(ws.sentMessages.length).toBe(1) - const sent = JSON.parse(ws.sentMessages[0]) - expect(sent.type).toBe('test:ping') - }) -}) diff --git a/apps/server/src/routes/chat-ws/connection-registry.ts b/apps/server/src/routes/chat-ws/connection-registry.ts index 1fb288336..a84c6233e 100644 --- a/apps/server/src/routes/chat-ws/connection-registry.ts +++ b/apps/server/src/routes/chat-ws/connection-registry.ts @@ -1,4 +1,5 @@ -import type { HonoWsInvocableEventContext } from '../../libs/eventa-hono-adapter' +import type { HonoWsInvocableEventContext } from '@moeru/eventa/adapters/websocket/hono' + import type { ChatBroadcastPayload } from '../../utils/chat-broadcast' import { newMessages } from '@proj-airi/server-sdk-shared' diff --git a/apps/server/src/routes/chat-ws/index.ts b/apps/server/src/routes/chat-ws/index.ts index eb700bc57..ddbadfce2 100644 --- a/apps/server/src/routes/chat-ws/index.ts +++ b/apps/server/src/routes/chat-ws/index.ts @@ -4,8 +4,8 @@ import type { EngagementMetrics } from '../../otel' import type { ChatService } from '../../services/domain/chats' import { useLogger } from '@guiiai/logg' +import { createPeerHooks, wsDisconnectedEvent } from '@moeru/eventa/adapters/websocket/hono' -import { createPeerHooks, wsDisconnectedEvent } from '../../libs/eventa-hono-adapter' import { createChatBroadcastCoordinator } from './broadcast' import { createChatConnectionRegistry } from './connection-registry' import { registerChatRpcHandlers } from './rpc' diff --git a/apps/server/src/routes/chat-ws/rpc.ts b/apps/server/src/routes/chat-ws/rpc.ts index 367a38b8a..5b98c3cca 100644 --- a/apps/server/src/routes/chat-ws/rpc.ts +++ b/apps/server/src/routes/chat-ws/rpc.ts @@ -1,4 +1,5 @@ -import type { HonoWsInvocableEventContext } from '../../libs/eventa-hono-adapter' +import type { HonoWsInvocableEventContext } from '@moeru/eventa/adapters/websocket/hono' + import type { EngagementMetrics } from '../../otel' import type { ChatService } from '../../services/domain/chats' import type { ChatBroadcastCoordinator } from './broadcast' diff --git a/packages/electron-vueuse/src/composables/use-electron-eventa-context.ts b/packages/electron-vueuse/src/composables/use-electron-eventa-context.ts index 10a2fe40b..15370eb4c 100644 --- a/packages/electron-vueuse/src/composables/use-electron-eventa-context.ts +++ b/packages/electron-vueuse/src/composables/use-electron-eventa-context.ts @@ -2,7 +2,7 @@ import type { InvokeEventa } from '@moeru/eventa' import { defineInvoke } from '@moeru/eventa' import { createContext } from '@moeru/eventa/adapters/electron/renderer' -import { ref } from 'vue' +import { shallowRef } from 'vue' type EventaContext = ReturnType['context'] type IpcRendererLike = Parameters[0] @@ -28,7 +28,7 @@ export function getElectronEventaContext(ipcRenderer?: IpcRendererLike): EventaC } export function useElectronEventaContext(ipcRenderer?: IpcRendererLike) { - return ref(getElectronEventaContext(ipcRenderer)) + return shallowRef(getElectronEventaContext(ipcRenderer)) } export function useElectronEventaInvoke(invoke: InvokeEventa, context?: EventaContext) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab7c06b18..13c69e06f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -239,8 +239,8 @@ catalogs: specifier: 0.1.0-beta.15 version: 0.1.0-beta.15 '@moeru/eventa': - specifier: 1.0.0-beta.7 - version: 1.0.0-beta.7 + specifier: 1.0.0-beta.8 + version: 1.0.0-beta.8 '@moeru/std': specifier: 0.1.0-beta.17 version: 0.1.0-beta.17 @@ -1505,7 +1505,7 @@ importers: version: 5.4.0(@opentelemetry/api@1.9.1) '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(hono@4.11.3) + version: 1.0.0-beta.8(electron@41.2.1)(hono@4.11.3) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -1677,7 +1677,7 @@ importers: version: 3.8.1 '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -2080,7 +2080,7 @@ importers: version: 11.3.2 '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -2345,7 +2345,7 @@ importers: version: 3.0.2(electron@41.2.1) '@electron-toolkit/tsconfig': specifier: 'catalog:' - version: 2.0.0(@types/node@24.12.2) + version: 2.0.0(@types/node@25.6.0) '@electron-toolkit/utils': specifier: 'catalog:' version: 4.0.0(electron@41.2.1) @@ -2384,7 +2384,7 @@ importers: version: 3.1.0 '@intlify/unplugin-vue-i18n': specifier: 'catalog:' - version: 11.0.7(@vue/compiler-dom@3.5.32)(eslint@10.2.1(jiti@2.6.1))(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) + version: 11.0.7(@vue/compiler-dom@3.5.32)(eslint@10.2.1(jiti@2.6.1))(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) '@modelcontextprotocol/sdk': specifier: 'catalog:' version: 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) @@ -2420,10 +2420,10 @@ importers: version: link:../../packages/ui-transitions '@proj-airi/unplugin-fetch': specifier: 'catalog:' - version: 0.2.3(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.2.3(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@proj-airi/unplugin-live2d-sdk': specifier: 'catalog:' - version: 0.1.7(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 0.1.7(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@types/audioworklet': specifier: 'catalog:' version: 0.0.97 @@ -2450,7 +2450,7 @@ importers: version: 2.10.3 '@vitejs/plugin-vue': specifier: 'catalog:' - version: 6.0.6(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + version: 6.0.6(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) '@vue-macros/volar': specifier: 'catalog:' version: 3.1.2(typescript@5.9.3)(vue-tsc@3.2.6(typescript@5.9.3))(vue@3.5.32(typescript@5.9.3)) @@ -2483,7 +2483,7 @@ importers: version: 6.8.3 electron-vite: specifier: 'catalog:' - version: 5.0.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 5.0.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) get-port-please: specifier: 'catalog:' version: 3.2.0 @@ -2504,31 +2504,31 @@ importers: version: 2.2.6 unocss-preset-scrollbar: specifier: 'catalog:' - version: 4.0.0(unocss@66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + version: 4.0.0(unocss@66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) unplugin-info: specifier: 'catalog:' - version: 1.3.2(esbuild@0.27.2)(rollup@4.60.1)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.3.2(esbuild@0.27.2)(rollup@4.60.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) unplugin-yaml: specifier: 'catalog:' - version: 4.1.0(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.0(@nuxt/kit@3.20.2(magicast@0.5.2))(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: 'catalog:' - version: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-bundle-visualizer: specifier: 'catalog:' version: 1.2.1(rolldown@1.0.0-rc.16)(rollup@4.60.1) vite-plugin-mkcert: specifier: 'catalog:' - version: 2.0.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 2.0.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-vue-devtools: specifier: 'catalog:' - version: 8.1.1(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) + version: 8.1.1(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)) vite-plugin-vue-layouts: specifier: 'catalog:' - version: 0.11.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-router@5.0.4(@pinia/colada@1.2.1(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) + version: 0.11.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-router@5.0.4(@pinia/colada@1.2.1(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) vue-macros: specifier: 'catalog:' - version: 3.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@vueuse/core@14.2.1(vue@3.5.32(typescript@5.9.3)))(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-tsc@3.2.6(typescript@5.9.3))(vue@3.5.32(typescript@5.9.3)) + version: 3.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@vueuse/core@14.2.1(vue@3.5.32(typescript@5.9.3)))(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-tsc@3.2.6(typescript@5.9.3))(vue@3.5.32(typescript@5.9.3)) vue-tsc: specifier: 'catalog:' version: 3.2.6(typescript@5.9.3) @@ -2555,7 +2555,7 @@ importers: version: 3.8.1 '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(hono@4.11.3) + version: 1.0.0-beta.8(electron@41.2.1)(hono@4.11.3) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -2940,7 +2940,7 @@ importers: version: 3.8.1 '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -3450,7 +3450,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@40.8.5)(hono@4.12.2) + version: 1.0.0-beta.8(electron@40.8.5)(hono@4.12.2) builder-util-runtime: specifier: 'catalog:' version: 9.5.1 @@ -3478,7 +3478,7 @@ importers: version: 3.0.2(electron@41.2.1) '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -3496,7 +3496,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@40.8.5)(hono@4.12.2) + version: 1.0.0-beta.8(electron@40.8.5)(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -3591,7 +3591,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -3603,7 +3603,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@xsai/shared-chat': specifier: 'catalog:' version: 0.5.0-beta.2(patch_hash=26f2819b987245ec85f216b821ddf73aeb28fd7e611238a2d37250e42f838a01) @@ -3612,7 +3612,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@proj-airi/plugin-protocol': specifier: workspace:* version: link:../plugin-protocol @@ -3637,7 +3637,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@proj-airi/plugin-sdk': specifier: workspace:* version: link:../plugin-sdk @@ -3764,7 +3764,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) packages/server-shared: dependencies: @@ -3776,7 +3776,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -3891,7 +3891,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -4040,7 +4040,7 @@ importers: version: 3.0.2(electron@41.2.1) '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@nekopaw/tempora': specifier: 'catalog:' version: 0.4.0-alpha.1 @@ -4064,7 +4064,7 @@ importers: version: 3.8.1 '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(hono@4.11.3) + version: 1.0.0-beta.8(electron@41.2.1)(hono@4.11.3) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -4628,7 +4628,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@pixiv/three-vrm': specifier: 'catalog:' version: 3.5.2(@types/three@0.184.0)(three@0.184.0) @@ -4906,7 +4906,7 @@ importers: dependencies: '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 @@ -5003,7 +5003,7 @@ importers: version: 1.2.4 '@moeru/eventa': specifier: 'catalog:' - version: 1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) + version: 1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2) '@proj-airi/server-sdk': specifier: workspace:^ version: link:../../packages/server-sdk @@ -7894,8 +7894,8 @@ packages: web-worker: optional: true - '@moeru/eventa@1.0.0-beta.7': - resolution: {integrity: sha512-9gxH+zdGwarRFEwlm9qmNlSw/7rJfmpemX5Qcay+hBS2p8XVNuydvQzGF8u8YovQJ5Rzbn8UCA06Ew4zQWRl9g==} + '@moeru/eventa@1.0.0-beta.8': + resolution: {integrity: sha512-V7DTEi9waYxxVNWQbKTMnj0m4U2xyLmd//eZ12noLBYS8wUJJ8Lm0XXj6wc9KI0urrSjDFTBHlD4Ow1bEGw2sw==} peerDependencies: electron: '>=39' h3: '>=2.0.1-rc.22' @@ -20851,9 +20851,9 @@ snapshots: dependencies: electron: 41.2.1 - '@electron-toolkit/tsconfig@2.0.0(@types/node@24.12.2)': + '@electron-toolkit/tsconfig@2.0.0(@types/node@25.6.0)': dependencies: - '@types/node': 24.12.2 + '@types/node': 25.6.0 '@electron-toolkit/utils@4.0.0(electron@41.2.1)': dependencies: @@ -21765,31 +21765,6 @@ snapshots: - supports-color - typescript - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.32)(eslint@10.2.1(jiti@2.6.1))(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1(jiti@2.6.1)) - '@intlify/bundle-utils': 11.0.7(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3))) - '@intlify/shared': 11.3.2 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.3.2)(@vue/compiler-dom@3.5.32)(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) - '@rollup/pluginutils': 5.3.0(rollup@4.60.1) - '@typescript-eslint/scope-manager': 8.58.1 - '@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3) - debug: 4.4.3(supports-color@10.2.2) - fast-glob: 3.3.3 - pathe: 2.0.3 - picocolors: 1.1.1 - unplugin: 2.3.11 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vue: 3.5.32(typescript@5.9.3) - optionalDependencies: - vue-i18n: 11.3.2(vue@3.5.32(typescript@5.9.3)) - transitivePeerDependencies: - - '@vue/compiler-dom' - - eslint - - rollup - - supports-color - - typescript - '@intlify/unplugin-vue-i18n@11.0.7(@vue/compiler-dom@3.5.32)(eslint@10.2.1(jiti@2.6.1))(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-i18n@11.3.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3))': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1(jiti@2.6.1)) @@ -22158,7 +22133,7 @@ snapshots: electron: 41.2.1 h3: 2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)) - '@moeru/eventa@1.0.0-beta.7(electron@40.8.5)(hono@4.12.2)': + '@moeru/eventa@1.0.0-beta.8(electron@40.8.5)(hono@4.12.2)': dependencies: nanoid: 5.1.11 picomatch: 4.0.4 @@ -22166,7 +22141,7 @@ snapshots: electron: 40.8.5 hono: 4.12.2 - '@moeru/eventa@1.0.0-beta.7(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2)': + '@moeru/eventa@1.0.0-beta.8(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))(hono@4.12.2)': dependencies: nanoid: 5.1.11 picomatch: 4.0.4 @@ -22175,7 +22150,7 @@ snapshots: h3: 2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)) hono: 4.12.2 - '@moeru/eventa@1.0.0-beta.7(electron@41.2.1)(hono@4.11.3)': + '@moeru/eventa@1.0.0-beta.8(electron@41.2.1)(hono@4.11.3)': dependencies: nanoid: 5.1.11 picomatch: 4.0.4 @@ -23798,35 +23773,11 @@ snapshots: transitivePeerDependencies: - magicast - '@proj-airi/unplugin-fetch@0.2.3(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': - dependencies: - ofetch: 1.5.1 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@proj-airi/unplugin-fetch@0.2.3(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: ofetch: 1.5.1 vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@proj-airi/unplugin-live2d-sdk@0.1.7(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)': - dependencies: - ofetch: 1.5.1 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - yauzl: 3.3.0 - transitivePeerDependencies: - - '@types/node' - - '@vitejs/devtools' - - esbuild - - jiti - - less - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml - '@proj-airi/unplugin-live2d-sdk@0.1.7(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)': dependencies: ofetch: 1.5.1 @@ -25392,12 +25343,6 @@ snapshots: vite: 6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vue: 3.5.32(typescript@5.9.3) - '@vitejs/plugin-vue@6.0.6(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': - dependencies: - '@rolldown/pluginutils': 1.0.0-rc.13 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vue: 3.5.32(typescript@5.9.3) - '@vitejs/plugin-vue@6.0.6(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.13 @@ -25478,9 +25423,9 @@ snapshots: obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/browser-playwright@4.1.4)(@vitest/coverage-v8@4.1.4)(jsdom@29.1.1(@noble/hashes@2.0.1)(canvas@3.2.3))(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.4)(@vitest/coverage-v8@4.1.4)(jsdom@29.1.1(@noble/hashes@2.0.1)(canvas@3.2.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) optionalDependencies: - '@vitest/browser': 4.1.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.4) + '@vitest/browser': 4.1.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.4) '@vitest/eslint-plugin@1.6.15(@typescript-eslint/eslint-plugin@8.58.1(@typescript-eslint/parser@8.58.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.1.4)': dependencies: @@ -25700,15 +25645,6 @@ snapshots: transitivePeerDependencies: - vue - '@vue-macros/devtools@3.1.2(typescript@5.9.3)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': - dependencies: - sirv: 3.0.2 - vue: 3.5.32(typescript@5.9.3) - optionalDependencies: - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - transitivePeerDependencies: - - typescript - '@vue-macros/devtools@3.1.2(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: sirv: 3.0.2 @@ -27850,7 +27786,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron-vite@5.0.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + electron-vite@5.0.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) @@ -27858,7 +27794,7 @@ snapshots: esbuild: 0.25.12 magic-string: 0.30.21 picocolors: 1.1.1 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -33886,6 +33822,11 @@ snapshots: '@unocss/preset-mini': 66.6.8 unocss: 66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + unocss-preset-scrollbar@4.0.0(unocss@66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): + dependencies: + '@unocss/preset-mini': 66.6.8 + unocss: 66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + unocss@66.6.8(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@unocss/cli': 66.6.8 @@ -33982,14 +33923,6 @@ snapshots: unplugin: 2.3.11 vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - unplugin-combine@2.3.0(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(unplugin@2.3.11)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): - optionalDependencies: - esbuild: 0.27.2 - rolldown: 1.0.0-rc.16 - rollup: 4.60.1 - unplugin: 2.3.11 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - unplugin-combine@2.3.0(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(unplugin@2.3.11)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): optionalDependencies: esbuild: 0.27.2 @@ -34024,19 +33957,6 @@ snapshots: transitivePeerDependencies: - supports-color - unplugin-info@1.3.2(esbuild@0.27.2)(rollup@4.60.1)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - ci-info: 4.4.0 - git-url-parse: 16.1.0 - simple-git: 3.36.0 - unplugin: 2.3.11 - optionalDependencies: - esbuild: 0.27.2 - rollup: 4.60.1 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - transitivePeerDependencies: - - supports-color - unplugin-info@1.3.2(esbuild@0.27.2)(rollup@4.60.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: ci-info: 4.4.0 @@ -34146,17 +34066,6 @@ snapshots: rollup: 4.60.1 vite: 6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - unplugin-yaml@4.1.0(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.60.1) - unplugin: 3.0.0 - yaml: 2.8.3 - optionalDependencies: - esbuild: 0.27.2 - rolldown: 1.0.0-rc.16 - rollup: 4.60.1 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 @@ -34388,22 +34297,12 @@ snapshots: - rollup - supports-color - vite-dev-rpc@1.1.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - birpc: 2.9.0 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-hot-client: 2.1.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - vite-dev-rpc@1.1.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: birpc: 2.9.0 vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-hot-client: 2.1.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - vite-hot-client@2.1.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-hot-client@2.1.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) @@ -34449,21 +34348,6 @@ snapshots: - tsx - yaml - vite-plugin-inspect@11.3.3(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - ansis: 4.2.0 - debug: 4.4.3(supports-color@10.2.2) - error-stack-parser-es: 1.0.5 - ohash: 2.0.11 - open: 10.2.0 - perfect-debounce: 2.1.0 - sirv: 3.0.2 - unplugin-utils: 0.3.1 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-dev-rpc: 1.1.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - transitivePeerDependencies: - - supports-color - vite-plugin-inspect@11.3.3(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: ansis: 4.2.0 @@ -34495,13 +34379,6 @@ snapshots: - typescript - ws - vite-plugin-mkcert@2.0.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - debug: 4.4.3(supports-color@10.2.2) - supports-color: 10.2.2 - undici: 8.1.0 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-mkcert@2.0.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -34520,20 +34397,6 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@8.1.1(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)): - dependencies: - '@vue/devtools-core': 8.1.1(vue@3.5.32(typescript@5.9.3)) - '@vue/devtools-kit': 8.1.1 - '@vue/devtools-shared': 8.1.1 - sirv: 3.0.2 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-inspect: 11.3.3(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - vite-plugin-vue-inspector: 5.3.2(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - transitivePeerDependencies: - - '@nuxt/kit' - - supports-color - - vue - vite-plugin-vue-devtools@8.1.1(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue@3.5.32(typescript@5.9.3)): dependencies: '@vue/devtools-core': 8.1.1(vue@3.5.32(typescript@5.9.3)) @@ -34548,21 +34411,6 @@ snapshots: - supports-color - vue - vite-plugin-vue-inspector@5.3.2(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.29.0) - '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0) - '@vue/compiler-dom': 3.5.32 - kolorist: 1.8.0 - magic-string: 0.30.21 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - transitivePeerDependencies: - - supports-color - vite-plugin-vue-inspector@5.3.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@babel/core': 7.29.0 @@ -34578,16 +34426,6 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-vue-layouts@0.11.0(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-router@5.0.4(@pinia/colada@1.2.1(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)): - dependencies: - debug: 4.4.3(supports-color@10.2.2) - fast-glob: 3.3.3 - vite: 8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vue: 3.5.32(typescript@5.9.3) - vue-router: 5.0.4(@pinia/colada@1.2.1(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) - transitivePeerDependencies: - - supports-color - vite-plugin-vue-layouts@0.11.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-router@5.0.4(@pinia/colada@1.2.1(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(@vue/compiler-sfc@3.5.32)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)): dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -34854,54 +34692,6 @@ snapshots: - vue-tsc - webpack - vue-macros@3.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@vueuse/core@14.2.1(vue@3.5.32(typescript@5.9.3)))(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-tsc@3.2.6(typescript@5.9.3))(vue@3.5.32(typescript@5.9.3)): - dependencies: - '@vue-macros/better-define': 3.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/boolean-prop': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/chain-call': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/common': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/config': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/define-emit': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/define-models': 3.1.2(@vueuse/core@14.2.1(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/define-prop': 3.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/define-props': 3.1.2(@vue-macros/reactivity-transform@3.1.2(vue@3.5.32(typescript@5.9.3)))(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/define-props-refs': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/define-render': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/define-slots': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/define-stylex': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/devtools': 3.1.2(typescript@5.9.3)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - '@vue-macros/export-expose': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/export-props': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/export-render': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/hoist-static': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/jsx-directive': 3.1.2(typescript@5.9.3) - '@vue-macros/named-template': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/reactivity-transform': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/script-lang': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/setup-block': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/setup-component': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/setup-sfc': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/short-bind': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/short-emits': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/short-vmodel': 3.1.2(vue@3.5.32(typescript@5.9.3)) - '@vue-macros/volar': 3.1.2(typescript@5.9.3)(vue-tsc@3.2.6(typescript@5.9.3))(vue@3.5.32(typescript@5.9.3)) - unplugin: 2.3.11 - unplugin-combine: 2.3.0(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(unplugin@2.3.11)(vite@8.0.8(@types/node@24.12.2)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) - unplugin-vue-define-options: 3.1.2(vue@3.5.32(typescript@5.9.3)) - vue: 3.5.32(typescript@5.9.3) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - - '@rspack/core' - - '@vueuse/core' - - esbuild - - rolldown - - rollup - - typescript - - vite - - vue-tsc - - webpack - vue-macros@3.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@vueuse/core@14.2.1(vue@3.5.32(typescript@5.9.3)))(esbuild@0.27.2)(rolldown@1.0.0-rc.16)(rollup@4.60.1)(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.2)(jiti@2.6.1)(less@4.6.4)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(vue-tsc@3.2.6(typescript@5.9.3))(vue@3.5.32(typescript@5.9.3)): dependencies: '@vue-macros/better-define': 3.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(vue@3.5.32(typescript@5.9.3)) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5cb3902ed..1493b91c4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -106,7 +106,7 @@ catalog: '@mediapipe/tasks-vision': ^0.10.34 '@modelcontextprotocol/sdk': ^1.29.0 '@moeru/eslint-config': 0.1.0-beta.15 - '@moeru/eventa': 1.0.0-beta.7 + '@moeru/eventa': 1.0.0-beta.8 '@moeru/std': 0.1.0-beta.17 '@napi-rs/image': ^1.12.0 '@nekopaw/tempora': 0.4.0-alpha.1 @@ -433,13 +433,15 @@ catalogs: unocss-66-6-7: unocss: ^66.6.7 unocss-preset-web-fonts-gte-66: - "@unocss/preset-web-fonts": ">=66" - vite-7-0-0-or-8-0-0-beta-0: - vite: ^7.0.0 || ^8.0.0-beta.0 + '@unocss/preset-web-fonts': '>=66' unocss-reset-66-6-7: - "@unocss/reset": ^66.6.7 + '@unocss/reset': ^66.6.7 + valibot-1-3-1: + valibot: ^1.3.1 vite-6-4-2: vite: ^6.4.2 + vite-7-0-0-or-8-0-0-beta-0: + vite: ^7.0.0 || ^8.0.0-beta.0 vitejs-plugin-vue-6-0-5: '@vitejs/plugin-vue': ^6.0.5 vitest: @@ -457,8 +459,6 @@ catalogs: '@vueuse/core': ^14.2.1 xsai: unspeech: ^0.1.14 - valibot-1-3-1: - valibot: ^1.3.1 ignoredBuiltDependencies: - '@ax-llm/ax' - '@prisma/client'