From 3fe0e4c091cd35ef97fd13d867257fc707a983bb Mon Sep 17 00:00:00 2001 From: Neko Ayaka Date: Sat, 27 Dec 2025 03:40:55 +0800 Subject: [PATCH] fix(airi-plugin-vscode): sync with new server-sdk design --- plugins/airi-plugin-vscode/package.json | 6 +- plugins/airi-plugin-vscode/src/airi.ts | 18 +++- plugins/airi-plugin-vscode/src/extension.ts | 112 ++++++++++++-------- pnpm-lock.yaml | 52 +++++++-- pnpm-workspace.yaml | 7 +- 5 files changed, 129 insertions(+), 66 deletions(-) diff --git a/plugins/airi-plugin-vscode/package.json b/plugins/airi-plugin-vscode/package.json index f246178df..0acb4a661 100644 --- a/plugins/airi-plugin-vscode/package.json +++ b/plugins/airi-plugin-vscode/package.json @@ -1,6 +1,6 @@ { "publisher": "proj-airi", - "name": "airi-vscode", + "name": "@proj-airi/airi-plugin-vscode", "displayName": "AIRI", "version": "0.8.0-beta.7", "private": true, @@ -66,6 +66,10 @@ "publish": "tsx ./scripts/publish.ts", "typecheck": "tsc --noEmit" }, + "dependencies": { + "es-toolkit": "catalog:", + "injeca": "catalog:" + }, "devDependencies": { "@guiiai/logg": "catalog:", "@moeru/std": "catalog:", diff --git a/plugins/airi-plugin-vscode/src/airi.ts b/plugins/airi-plugin-vscode/src/airi.ts index 95402dfe0..3eb5ad29b 100644 --- a/plugins/airi-plugin-vscode/src/airi.ts +++ b/plugins/airi-plugin-vscode/src/airi.ts @@ -1,7 +1,9 @@ +import type { WebSocketEventOptionalSource } from '@proj-airi/server-sdk' + import type { Events } from './types' import { useLogger } from '@guiiai/logg' -import { Client as ServerClient } from '@proj-airi/server-sdk' +import { ContextUpdateStrategy, Client as ServerClient } from '@proj-airi/server-sdk' export class Client { private client: ServerClient | null = null @@ -27,7 +29,7 @@ export class Client { } } - async sendEvent(event: Events): Promise { + private async send(event: WebSocketEventOptionalSource): Promise { if (!this.client) { useLogger().warn('Cannot send event: not connected to AIRI Server Channel') return @@ -35,15 +37,21 @@ export class Client { try { await this.client.connect() - this.client.send({ type: 'vscode:context', data: event }) - - useLogger().log(`Sent event to AIRI: ${event.type}`, event) + this.client.send(event) } catch (error) { useLogger().errorWithError('Failed to send event to AIRI:', error) } } + async replaceContext(context: string): Promise { + this.send({ type: 'context:update', data: { strategy: ContextUpdateStrategy.ReplaceSelf, text: context } }) + } + + async appendContext(context: string): Promise { + this.send({ type: 'context:update', data: { strategy: ContextUpdateStrategy.AppendSelf, text: context } }) + } + isConnected(): boolean { return !!this.client } diff --git a/plugins/airi-plugin-vscode/src/extension.ts b/plugins/airi-plugin-vscode/src/extension.ts index bb540539e..4a3a70c26 100644 --- a/plugins/airi-plugin-vscode/src/extension.ts +++ b/plugins/airi-plugin-vscode/src/extension.ts @@ -1,15 +1,15 @@ +import type { DependencyMap, ProvidedKey } from 'injeca' import type * as vscode from 'vscode' import { initLogger, LoggerFormat, LoggerLevel, useLogger } from '@guiiai/logg' +import { noop } from 'es-toolkit' +import { injeca } from 'injeca' import { commands, window, workspace } from 'vscode' import { Client } from './airi' import { ContextCollector } from './context-collector' -let client: Client -let contextCollector: ContextCollector let updateTimer: NodeJS.Timeout | null = null -let isEnabled = true let eventListeners: vscode.Disposable[] = [] /** @@ -22,17 +22,38 @@ export async function activate(context: vscode.ExtensionContext) { // Get the configuration const config = workspace.getConfiguration('airi-vscode') - isEnabled = config.get('enabled', true) + const isEnabled = config.get('enabled', true) const contextLines = config.get('contextLines', 5) const sendInterval = config.get('sendInterval', 3000) // Initialize - client = new Client() - contextCollector = new ContextCollector(contextLines) + const vscodeContext = injeca.provide('vscode:context', () => context) + const client = injeca.provide('proj-airi:client', () => new Client()) + const contextCollector = injeca.provide('self:context-collector', () => new ContextCollector(contextLines)) + const extension = injeca.provide('extension', { + dependsOn: { client, vscodeContext, contextCollector }, + build: ({ dependsOn }) => setup({ ...dependsOn, isEnabled, sendInterval }), + }) + + injeca.invoke({ + dependsOn: { extension }, + callback: noop, + }) + + await injeca.start() +} + +async function setup(params: { + client: Client + vscodeContext: vscode.ExtensionContext + contextCollector: ContextCollector + isEnabled: boolean + sendInterval: number +}) { // Connect to Airi Channel Server - if (isEnabled) { - const connected = await client.connect() + if (params.isEnabled) { + const connected = await params.client.connect() if (connected) { window.showInformationMessage('AIRI Server Channel connected!') } @@ -42,30 +63,30 @@ export async function activate(context: vscode.ExtensionContext) { } // Register commands - context.subscriptions.push( + params.vscodeContext.subscriptions.push( commands.registerCommand('airi-vscode.enable', async () => { - isEnabled = true - await client.connect() - await registerListeners(sendInterval) + params.isEnabled = true + await params.client.connect() + await registerListeners({ sendInterval: params.sendInterval, contextCollector: params.contextCollector, client: params.client, isEnabled: params.isEnabled }) window.showInformationMessage('AIRI enabled!') }), commands.registerCommand('airi-vscode.disable', () => { - isEnabled = false + params.isEnabled = false unregisterListeners() - client.disconnect() + params.client.disconnect() window.showInformationMessage('AIRI disabled!') }), commands.registerCommand('airi-vscode.status', () => { - const status = isEnabled && client ? 'Connected' : 'Disconnected' + const status = params.isEnabled && params.client ? 'Connected' : 'Disconnected' window.showInformationMessage(`AIRI Server Channel status: ${status}.`) }), ) // Register event listeners if enabled - if (isEnabled) { - await registerListeners(sendInterval) + if (params.isEnabled) { + await registerListeners({ sendInterval: params.sendInterval, contextCollector: params.contextCollector, client: params.client, isEnabled: params.isEnabled }) } useLogger().log('AIRI activated successfully') @@ -74,7 +95,7 @@ export async function activate(context: vscode.ExtensionContext) { /** * Register event listeners for file save and editor switch */ -async function registerListeners(sendInterval: number) { +async function registerListeners(params: { contextCollector: ContextCollector, client: Client, isEnabled: boolean, sendInterval: number }) { unregisterListeners() // File save event @@ -82,13 +103,11 @@ async function registerListeners(sendInterval: number) { workspace.onDidSaveTextDocument(async (document) => { const editor = window.activeTextEditor if (editor && editor.document === document) { - const ctx = await contextCollector.collect(editor) - if (ctx) { - client.sendEvent({ - type: 'coding:save', - data: ctx, - }) - } + const ctx = await params.contextCollector.collect(editor) + if (!ctx) + return + + params.client.replaceContext(JSON.stringify({ type: 'coding:save', data: ctx })) } }), ) @@ -96,21 +115,22 @@ async function registerListeners(sendInterval: number) { // Switch file event eventListeners.push( window.onDidChangeActiveTextEditor(async (editor) => { - if (editor) { - const ctx = await contextCollector.collect(editor) - if (ctx) { - client.sendEvent({ - type: 'coding:switch-file', - data: ctx, - }) - } + if (!editor) { + return } + + const ctx = await params.contextCollector.collect(editor) + if (!ctx) { + return + } + + params.client.replaceContext(JSON.stringify({ type: 'coding:switch-file', data: ctx })) }), ) // Start periodic monitoring if interval is set - if (sendInterval > 0) { - startMonitoring(sendInterval) + if (params.sendInterval > 0) { + startMonitoring({ contextCollector: params.contextCollector, client: params.client, isEnabled: params.isEnabled, interval: params.sendInterval }) } } @@ -126,25 +146,23 @@ function unregisterListeners() { /** * Start monitoring the coding context */ -function startMonitoring(interval: number) { +function startMonitoring(params: { contextCollector: ContextCollector, client: Client, isEnabled: boolean, interval: number }) { stopMonitoring() updateTimer = setInterval(async () => { - if (!isEnabled) + if (!params.isEnabled) return const editor = window.activeTextEditor if (!editor) return - const ctx = await contextCollector.collect(editor) - if (ctx) { - client.sendEvent({ - type: 'coding:context', - data: ctx, - }) - } - }, interval) + const ctx = await params.contextCollector.collect(editor) + if (!ctx) + return + + params.client.replaceContext(JSON.stringify({ type: 'coding:context', data: ctx })) + }, params.interval) } /** @@ -160,7 +178,9 @@ function stopMonitoring() { /** * Deactivate the plugin */ -export function deactivate() { +export async function deactivate() { + const { client } = await injeca.resolve({ client: { key: 'proj-airi:client' } as ProvidedKey<'proj-airi:client', Client, DependencyMap | undefined> }) + unregisterListeners() client?.disconnect() useLogger().log('AIRI deactivated!') diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b82b872a2..4f6eba090 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,10 +46,10 @@ catalogs: specifier: ^0.4.0-beta.12 version: 0.4.0-beta.12 '@xsai/shared': - specifier: ^0.4.0-beta.12 + specifier: 0.4.0-beta.12 version: 0.4.0-beta.12 '@xsai/shared-chat': - specifier: ^0.4.0-beta.12 + specifier: 0.4.0-beta.12 version: 0.4.0-beta.12 '@xsai/stream-text': specifier: ^0.4.0-beta.12 @@ -67,8 +67,11 @@ catalogs: specifier: ^8.6.0 version: 8.6.0 es-toolkit: - specifier: ^1.43.0 + specifier: 1.43.0 version: 1.43.0 + injeca: + specifier: ^0.1.5 + version: 0.1.5 posthog-js: specifier: 1.306.1 version: 1.306.1 @@ -1114,7 +1117,7 @@ importers: version: 11.2.2(vue@3.5.25(typescript@5.9.3)) vue-sonner: specifier: ^2.0.9 - version: 2.0.9(@nuxt/kit@4.0.3(magicast@0.5.1))(@nuxt/schema@4.0.3)(nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2)) + version: 2.0.9(@nuxt/kit@4.0.3(magicast@0.5.1))(@nuxt/schema@4.0.3)(nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2)) devDependencies: '@iconify-json/lucide': specifier: ^1.2.82 @@ -1331,7 +1334,14 @@ importers: specifier: 'catalog:' version: 0.1.0-beta.14 - packages/server-shared: {} + packages/server-shared: + dependencies: + '@xsai/shared': + specifier: 'catalog:' + version: 0.4.0-beta.12 + '@xsai/shared-chat': + specifier: 'catalog:' + version: 0.4.0-beta.12 packages/stage-pages: dependencies: @@ -1962,7 +1972,7 @@ importers: version: rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-vue-devtools: specifier: ^8.0.5 - version: 8.0.5(@nuxt/kit@4.0.3(magicast@0.5.1))(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) + version: 8.0.5(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) vue-router: specifier: ^4.6.4 version: 4.6.4(vue@3.5.25(typescript@5.9.3)) @@ -1996,7 +2006,7 @@ importers: version: rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-vue-devtools: specifier: ^8.0.5 - version: 8.0.5(@nuxt/kit@4.0.3(magicast@0.5.1))(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) + version: 8.0.5(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) vue-router: specifier: ^4.6.4 version: 4.6.4(vue@3.5.25(typescript@5.9.3)) @@ -2070,6 +2080,13 @@ importers: version: 3.1.8(typescript@5.9.3) plugins/airi-plugin-vscode: + dependencies: + es-toolkit: + specifier: 'catalog:' + version: 1.43.0 + injeca: + specifier: 'catalog:' + version: 0.1.5(@guiiai/logg@1.2.11)(error-stack-parser@2.1.4)(nanoid@5.1.6) devDependencies: '@guiiai/logg': specifier: 'catalog:' @@ -29638,7 +29655,7 @@ snapshots: - yaml optional: true - nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2): + nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2): dependencies: '@nuxt/cli': 3.31.3(cac@6.7.14)(magicast@0.5.1) '@nuxt/devalue': 2.0.2 @@ -33334,7 +33351,6 @@ snapshots: '@nuxt/kit': 3.20.2(magicast@0.3.5) transitivePeerDependencies: - supports-color - optional: true vite-plugin-inspect@11.3.3(@nuxt/kit@3.20.2(magicast@0.3.5))(vite@6.4.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: @@ -33413,6 +33429,20 @@ snapshots: - supports-color - vue + vite-plugin-vue-devtools@8.0.5(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)): + dependencies: + '@vue/devtools-core': 8.0.5(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) + '@vue/devtools-kit': 8.0.5 + '@vue/devtools-shared': 8.0.5 + sirv: 3.0.2 + vite: rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + vite-plugin-inspect: 11.3.3(@nuxt/kit@3.20.2(magicast@0.3.5))(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + vite-plugin-vue-inspector: 5.3.2(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + transitivePeerDependencies: + - '@nuxt/kit' + - supports-color + - vue + vite-plugin-vue-inspector@5.3.2(rolldown-vite@7.2.11(@types/node@24.10.4)(esbuild@0.25.12)(jiti@2.6.1)(less@4.5.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@babel/core': 7.28.5 @@ -33779,11 +33809,11 @@ snapshots: '@nuxt/schema': 4.0.3 nuxt: 4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@6.4.1(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2) - vue-sonner@2.0.9(@nuxt/kit@4.0.3(magicast@0.5.1))(@nuxt/schema@4.0.3)(nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2)): + vue-sonner@2.0.9(@nuxt/kit@4.0.3(magicast@0.5.1))(@nuxt/schema@4.0.3)(nuxt@4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2)): optionalDependencies: '@nuxt/kit': 4.0.3(magicast@0.5.1) '@nuxt/schema': 4.0.3 - nuxt: 4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2) + nuxt: 4.0.3(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.0)(@types/node@24.10.4)(@vue/compiler-sfc@3.5.26)(bufferutil@4.0.9)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/pg@8.16.0)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7))(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(less@4.5.1)(lightningcss@1.30.2)(magicast@0.5.1)(optionator@0.9.4)(rolldown@1.0.0-beta.53)(rollup@4.54.0)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.1.8(typescript@5.9.3))(xml2js@0.6.2)(yaml@2.8.2) vue-tsc@3.1.8(typescript@5.9.3): dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d443ead8c..210c9c2d0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -35,14 +35,15 @@ catalog: '@xsai/generate-text': ^0.4.0-beta.12 '@xsai/generate-transcription': ^0.4.0-beta.12 '@xsai/model': ^0.4.0-beta.12 - '@xsai/shared': ^0.4.0-beta.12 - '@xsai/shared-chat': ^0.4.0-beta.12 + '@xsai/shared': 0.4.0-beta.12 + '@xsai/shared-chat': 0.4.0-beta.12 '@xsai/stream-text': ^0.4.0-beta.12 '@xsai/tool': ^0.4.0-beta.12 '@xsai/utils-chat': 0.4.0-beta.5 builder-util-runtime: ^9.3.1 embla-carousel-vue: ^8.6.0 - es-toolkit: ^1.43.0 + es-toolkit: 1.43.0 + injeca: ^0.1.5 posthog-js: 1.306.1 uncrypto: ^0.1.3 xsschema: ^0.4.0-beta.12