style(*): stronger import sort

This commit is contained in:
Neko Ayaka
2025-06-30 02:23:40 +08:00
parent ac9ec95fe0
commit 8ee87f9e70
52 changed files with 115 additions and 54 deletions
@@ -2,9 +2,10 @@
import { storeToRefs } from 'pinia'
import { ref } from 'vue'
import { useCharacterPromptStore } from '../composables/useCharacterPrompt'
import Range from './Form/Range/Range.vue'
import { useCharacterPromptStore } from '../composables/useCharacterPrompt'
const characterPrompt = useCharacterPromptStore()
const { currentEmotion, currentContext, emotions, contexts, examples } = storeToRefs(characterPrompt)
const activeTemplate = ref('default')
@@ -2,9 +2,10 @@ import { fileURLToPath, URL } from 'node:url'
import vue from '@vitejs/plugin-vue'
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'
import Devtools from 'vite-plugin-vue-devtools'
import { defineConfig } from 'vite'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
+1
View File
@@ -3,6 +3,7 @@ import { resolve } from 'node:path'
import Vue from '@vitejs/plugin-vue'
import Unocss from 'unocss/vite'
import VueRouter from 'unplugin-vue-router/vite'
import { defineConfig } from 'vite'
export default defineConfig({
@@ -1,8 +1,9 @@
import fs from 'node:fs'
import { createRequire } from 'node:module'
import path from 'node:path'
import process from 'node:process'
import { createRequire } from 'node:module'
const require = createRequire(import.meta.url)
const packageJson = require('../package.json')
const tauriConfigJson = require('../src-tauri/tauri.conf.json')
@@ -1,10 +1,11 @@
<script setup lang="ts">
import JSZip from 'jszip'
import localforage from 'localforage'
import { Section } from '@proj-airi/stage-ui/components'
import { Emotion, EmotionNeutralMotionName } from '@proj-airi/stage-ui/constants'
import { useSettings } from '@proj-airi/stage-ui/stores'
import { useFileDialog, useObjectUrl } from '@vueuse/core'
import JSZip from 'jszip'
import localforage from 'localforage'
import { storeToRefs } from 'pinia'
import { ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
@@ -4,9 +4,10 @@ import { storeToRefs } from 'pinia'
import { TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger } from 'reka-ui'
import { ref } from 'vue'
import { useResourcesStore } from '../../../stores/resources'
import LoadingProgress from './LoadingProgress.vue'
import { useResourcesStore } from '../../../stores/resources'
const { resources } = storeToRefs(useResourcesStore())
const loadingProgressOpen = ref(false)
@@ -8,7 +8,7 @@ import { watch } from 'vue'
import { useShortcutsStore } from '../stores/shortcuts'
import { useAppRuntime } from './runtime'
export function useWindowShortcuts() {
export function useTauriGlobalShortcuts() {
const { shortcuts } = storeToRefs(useShortcutsStore())
const { platform, isInitialized } = useAppRuntime()
+3 -1
View File
@@ -1,7 +1,8 @@
import type { Plugin } from 'vue'
import { autoAnimatePlugin } from '@formkit/auto-animate/vue'
import Tres from '@tresjs/core'
import { autoAnimatePlugin } from '@formkit/auto-animate/vue'
import { MotionPlugin } from '@vueuse/motion'
import { createPinia } from 'pinia'
import { setupLayouts } from 'virtual:generated-layouts'
@@ -10,6 +11,7 @@ import { createRouter, createWebHashHistory } from 'vue-router'
import { routes } from 'vue-router/auto-routes'
import App from './App.vue'
import { i18n } from './modules/i18n'
import '@unocss/reset/tailwind.css'
@@ -1,4 +1,5 @@
import messages from '@intlify/unplugin-vue-i18n/messages'
import { createI18n } from 'vue-i18n'
export const i18n = createI18n({
+3 -3
View File
@@ -9,16 +9,17 @@ import { storeToRefs } from 'pinia'
import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
import ResourceStatusIsland from '../components/Widgets/ResourceStatusIsland/index.vue'
import { useTauriCore, useTauriEvent } from '../composables/tauri'
import { useTauriWindowClickThrough } from '../composables/tauri-click-through'
import { useTauriGlobalShortcuts } from '../composables/tauri-global-shortcuts'
import { useWindowPersistence } from '../composables/tauri-window-persistence'
import { useWindowShortcuts } from '../composables/window-shortcuts'
import { useResourcesStore } from '../stores/resources'
import { useWindowControlStore } from '../stores/window-controls'
import { WindowControlMode } from '../types/window-controls'
import { startClickThrough, stopClickThrough } from '../utils/windows'
useWindowShortcuts()
useTauriGlobalShortcuts()
const windowStore = useWindowControlStore()
const { width, height } = useWindowSize()
@@ -41,7 +42,6 @@ const windowPersistence = useWindowPersistence({
constrainToDisplays: true,
centerPointConstraint: true,
monitorDisplayChanges: true,
})
const modeIndicatorClass = computed(() => {
@@ -1,10 +1,11 @@
<script setup lang="ts">
import type { Card } from '@proj-airi/ccc'
import kebabcase from '@stdlib/string-base-kebabcase'
import { Button } from '@proj-airi/stage-ui/components'
import { useAiriCardStore } from '@proj-airi/stage-ui/stores'
import { FieldInput, FieldValues } from '@proj-airi/ui'
import kebabcase from '@stdlib/string-base-kebabcase'
import {
DialogContent,
DialogOverlay,
@@ -6,6 +6,7 @@ import { ref } from 'vue'
import IconAnimation from '../../../components/IconAnimation.vue'
import Live2DSettings from '../../../components/Widgets/Live2DSettings.vue'
import { useIconAnimation } from '../../../composables/icon-animation'
const live2dContainerRef = ref<HTMLDivElement>()
@@ -4,6 +4,7 @@ import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
import IconAnimation from '../../../components/IconAnimation.vue'
import { useIconAnimation } from '../../../composables/icon-animation'
const { t } = useI18n()
@@ -4,6 +4,7 @@ import { useProvidersStore } from '@proj-airi/stage-ui/stores'
import { storeToRefs } from 'pinia'
import IconAnimation from '../../../components/IconAnimation.vue'
import { useIconAnimation } from '../../../composables/icon-animation'
const providersStore = useProvidersStore()
@@ -1,5 +1,6 @@
<script setup lang="ts">
import IconAnimation from '../../../components/IconAnimation.vue'
import { useIconAnimation } from '../../../composables/icon-animation'
const {
+5 -4
View File
@@ -1,17 +1,18 @@
import { join, resolve } from 'node:path'
import VueI18n from '@intlify/unplugin-vue-i18n/vite'
import { Download } from '@proj-airi/unplugin-fetch'
import { DownloadLive2DSDK } from '@proj-airi/unplugin-live2d-sdk'
import { templateCompilerOptions } from '@tresjs/core'
import Vue from '@vitejs/plugin-vue'
import UnoCss from 'unocss/vite'
import VueMacros from 'unplugin-vue-macros/vite'
import VueRouter from 'unplugin-vue-router/vite'
import { defineConfig } from 'vite'
import VitePluginVueDevTools from 'vite-plugin-vue-devtools'
import Layouts from 'vite-plugin-vue-layouts'
import { Download } from '@proj-airi/unplugin-fetch'
import { DownloadLive2DSDK } from '@proj-airi/unplugin-live2d-sdk'
import { templateCompilerOptions } from '@tresjs/core'
import { defineConfig } from 'vite'
export default defineConfig({
optimizeDeps: {
exclude: [
@@ -1,8 +1,9 @@
<script setup lang="ts">
import type { ChatProvider } from '@xsai-ext/shared-providers'
import { useMicVAD, useWhisper } from '@proj-airi/stage-ui/composables'
import WhisperWorker from '@proj-airi/stage-ui/libs/workers/worker?worker&url'
import { useMicVAD, useWhisper } from '@proj-airi/stage-ui/composables'
import { useAudioContext, useChatStore, useConsciousnessStore, useProvidersStore, useSettings } from '@proj-airi/stage-ui/stores'
import { BasicTextarea, TransitionVertical } from '@proj-airi/ui'
import { useDevicesList } from '@vueuse/core'
@@ -10,9 +11,10 @@ import { storeToRefs } from 'pinia'
import { onMounted, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { encodeWAVToBase64 } from '../../utils/binary'
import ChatHistory from '../Widgets/ChatHistory.vue'
import { encodeWAVToBase64 } from '../../utils/binary'
const messageInput = ref('')
const listening = ref(false)
const tab = ref<'chat' | 'custom' | 'clothes'>('chat')
@@ -1,10 +1,11 @@
<script setup lang="ts">
import JSZip from 'jszip'
import localforage from 'localforage'
import { Section } from '@proj-airi/stage-ui/components'
import { Emotion, EmotionNeutralMotionName } from '@proj-airi/stage-ui/constants'
import { useSettings } from '@proj-airi/stage-ui/stores'
import { useFileDialog, useObjectUrl } from '@vueuse/core'
import JSZip from 'jszip'
import localforage from 'localforage'
import { storeToRefs } from 'pinia'
import { ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
+4 -2
View File
@@ -1,10 +1,11 @@
import type { Plugin } from 'vue'
import type { Router } from 'vue-router'
import { autoAnimatePlugin } from '@formkit/auto-animate/vue'
import Tres from '@tresjs/core'
import { MotionPlugin } from '@vueuse/motion'
import NProgress from 'nprogress'
import { autoAnimatePlugin } from '@formkit/auto-animate/vue'
import { MotionPlugin } from '@vueuse/motion'
import { createPinia } from 'pinia'
import { setupLayouts } from 'virtual:generated-layouts'
import { createApp } from 'vue'
@@ -12,6 +13,7 @@ import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router
import { routes } from 'vue-router/auto-routes'
import App from './App.vue'
import { i18n } from './modules/i18n'
import '@unocss/reset/tailwind.css'
+1
View File
@@ -1,4 +1,5 @@
import messages from '@intlify/unplugin-vue-i18n/messages'
import { createI18n } from 'vue-i18n'
export const i18n = createI18n({
@@ -1,10 +1,11 @@
<script setup lang="ts">
import type { Card } from '@proj-airi/ccc'
import kebabcase from '@stdlib/string-base-kebabcase'
import { Button } from '@proj-airi/stage-ui/components'
import { useAiriCardStore } from '@proj-airi/stage-ui/stores'
import { FieldInput, FieldValues } from '@proj-airi/ui'
import kebabcase from '@stdlib/string-base-kebabcase'
import {
DialogContent,
DialogOverlay,
@@ -6,6 +6,7 @@ import { ref } from 'vue'
import IconAnimation from '../../../components/IconAnimation.vue'
import Live2DSettings from '../../../components/Widgets/Live2DSettings.vue'
import { useIconAnimation } from '../../../composables/useIconAnimation'
const live2dContainerRef = ref<HTMLDivElement>()
@@ -4,6 +4,7 @@ import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
import IconAnimation from '../../../components/IconAnimation.vue'
import { useIconAnimation } from '../../../composables/useIconAnimation'
const { t } = useI18n()
@@ -5,6 +5,7 @@ import { storeToRefs } from 'pinia'
import { useI18n } from 'vue-i18n'
import IconAnimation from '../../../components/IconAnimation.vue'
import { useIconAnimation } from '../../../composables/useIconAnimation'
const { t } = useI18n()
@@ -1,5 +1,6 @@
<script setup lang="ts">
import IconAnimation from '../../../components/IconAnimation.vue'
import { useIconAnimation } from '../../../composables/useIconAnimation'
const {
+7 -6
View File
@@ -2,19 +2,20 @@ import { join, resolve } from 'node:path'
import { env } from 'node:process'
import VueI18n from '@intlify/unplugin-vue-i18n/vite'
import { Download } from '@proj-airi/unplugin-fetch/vite'
import { DownloadLive2DSDK } from '@proj-airi/unplugin-live2d-sdk/vite'
import { templateCompilerOptions } from '@tresjs/core'
import Vue from '@vitejs/plugin-vue'
import { LFS, SpaceCard } from 'hfup/vite'
import Unocss from 'unocss/vite'
import VueMacros from 'unplugin-vue-macros/vite'
import VueRouter from 'unplugin-vue-router/vite'
import { defineConfig } from 'vite'
import { VitePWA } from 'vite-plugin-pwa'
import VueDevTools from 'vite-plugin-vue-devtools'
import Layouts from 'vite-plugin-vue-layouts'
import { Download } from '@proj-airi/unplugin-fetch/vite'
import { DownloadLive2DSDK } from '@proj-airi/unplugin-live2d-sdk/vite'
import { templateCompilerOptions } from '@tresjs/core'
import { LFS, SpaceCard } from 'hfup/vite'
import { defineConfig } from 'vite'
import { VitePWA } from 'vite-plugin-pwa'
export default defineConfig({
optimizeDeps: {
exclude: [
+2 -1
View File
@@ -1,7 +1,8 @@
import starlight from '@astrojs/starlight'
import { defineConfig } from 'astro/config'
import UnoCSS from 'unocss/astro'
import { defineConfig } from 'astro/config'
// https://astro.build/config
export default defineConfig({
site: 'https://airi.build',
+9 -1
View File
@@ -25,11 +25,19 @@ export default await antfu(
'type-import',
'type-internal',
['type-parent', 'type-sibling', 'type-index'],
'default-value-builtin',
'named-value-builtin',
'value-builtin',
'default-value-external',
'named-value-external',
'value-external',
'default-value-internal',
'named-value-internal',
'value-internal',
['value-parent', 'value-sibling', 'value-index'],
['default-value-parent', 'default-value-sibling', 'default-value-index'],
['named-value-parent', 'named-value-sibling', 'named-value-index'],
['wildcard-value-parent', 'wildcard-value-sibling', 'wildcard-value-index'],
['value-parent', 'value-sibling', 'value-index'],
'side-effect',
'style',
],
+2 -1
View File
@@ -1,8 +1,9 @@
import type { WebSocketBaseEvent, WebSocketEvent, WebSocketEvents } from '@proj-airi/server-shared/types'
import { sleep } from '@moeru/std'
import WebSocket from 'crossws/websocket'
import { sleep } from '@moeru/std'
export interface ClientOptions<C = undefined> {
url?: string
name: string
@@ -3,12 +3,13 @@ import type { Application } from '@pixi/app'
import type { InternalModel } from 'pixi-live2d-display/cubism4'
import type { Ref } from 'vue'
import localforage from 'localforage'
import { extensions } from '@pixi/extensions'
import { InteractionManager } from '@pixi/interaction'
import { Ticker, TickerPlugin } from '@pixi/ticker'
import { breakpointsTailwind, useBreakpoints, useDark, useDebounceFn, watchDebounced } from '@vueuse/core'
import { formatHex } from 'culori'
import localforage from 'localforage'
import { storeToRefs } from 'pinia'
import { DropShadowFilter } from 'pixi-filters'
import { Live2DFactory, Live2DModel, MotionPriority } from 'pixi-live2d-display/cubism4'
@@ -8,6 +8,8 @@ import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
import ProviderSettingsLayout2 from './ProviderSettingsLayout2.vue'
import { useProvidersStore, useSpeechStore } from '../../stores'
import {
ProviderAdvancedSettings,
@@ -16,7 +18,6 @@ import {
ProviderBasicSettings,
ProviderSettingsContainer,
} from '../index'
import ProviderSettingsLayout2 from './ProviderSettingsLayout2.vue'
const props = defineProps<{
providerId: string
@@ -4,11 +4,12 @@ import { storeToRefs } from 'pinia'
import { ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { useSettings } from '../../stores'
import Live2DCanvas from '../Live2D/Canvas.vue'
import Live2DModel from '../Live2D/Model.vue'
import Screen from '../Screen.vue'
import { useSettings } from '../../stores'
import '../../utils/live2d-zip-loader'
withDefaults(defineProps<{
@@ -14,6 +14,9 @@ import { generateSpeech } from '@xsai/generate-speech'
import { storeToRefs } from 'pinia'
import { onMounted, onUnmounted, ref } from 'vue'
import Live2DScene from '../Scenes/Live2D.vue'
import VRMScene from '../Scenes/VRM.vue'
import { useMarkdown } from '../../composables/markdown'
import { useQueue } from '../../composables/queue'
import { useDelayMessageQueue, useEmotionsMessageQueue, useMessageContentQueue } from '../../composables/queues'
@@ -24,8 +27,6 @@ import { useChatStore } from '../../stores/chat'
import { useSpeechStore } from '../../stores/modules/speech'
import { useProvidersStore } from '../../stores/providers'
import { useSettings } from '../../stores/settings'
import Live2DScene from '../Scenes/Live2D.vue'
import VRMScene from '../Scenes/VRM.vue'
withDefaults(defineProps<{
paused?: boolean
@@ -1,6 +1,7 @@
import RehypeStringify from 'rehype-stringify'
import RemarkParse from 'remark-parse'
import RemarkRehype from 'remark-rehype'
import { unified } from 'unified'
export function useMarkdown() {
@@ -6,6 +6,7 @@ import { onUnmounted, watch } from 'vue'
import { createWLipSyncNode } from 'wlipsync'
import profile from '../../assets/lip-sync-profile.json' with { type: 'json' }
import { useAudioContext } from '../../stores/audio'
export function useVRMLipSync(audioNode: AudioNode) {
@@ -6,6 +6,7 @@ import { computed, onMounted, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import SystemPromptV2 from '../../constants/prompts/system-v2'
import { useConsciousnessStore } from './consciousness'
import { useSpeechStore } from './speech'
@@ -1,6 +1,7 @@
import type { ModelSettings } from 'pixi-live2d-display/cubism4'
import JSZip from 'jszip'
import { Cubism4ModelSettings, ZipLoader } from 'pixi-live2d-display/cubism4'
ZipLoader.zipReader = (data: Blob, _url: string) => JSZip.loadAsync(data)
+2 -1
View File
@@ -2,9 +2,10 @@ import { join } from 'node:path'
import vue from '@vitejs/plugin-vue'
import Unocss from 'unocss/vite'
import { defineConfig } from 'vite'
import Inspect from 'vite-plugin-inspect'
import { defineConfig } from 'vite'
// For Histoire
export default defineConfig({
server: {
+2 -1
View File
@@ -3,9 +3,10 @@ import { resolve } from 'node:path'
import Vue from '@vitejs/plugin-vue'
import Unocss from 'unocss/vite'
import VueRouter from 'unplugin-vue-router/vite'
import { defineConfig } from 'vite'
import VueDevTools from 'vite-plugin-vue-devtools'
import { defineConfig } from 'vite'
export default defineConfig({
build: {
outDir: resolve(import.meta.dirname, 'playground', 'dist'),
+2 -1
View File
@@ -3,9 +3,10 @@ import { resolve } from 'node:path'
import Vue from '@vitejs/plugin-vue'
import Unocss from 'unocss/vite'
import VueRouter from 'unplugin-vue-router/vite'
import { defineConfig } from 'vite'
import VueDevTools from 'vite-plugin-vue-devtools'
import { defineConfig } from 'vite'
export default defineConfig({
build: {
outDir: resolve(import.meta.dirname, 'playground', 'dist'),
+2 -1
View File
@@ -4,11 +4,12 @@ import type { PipelineType } from '@huggingface/transformers'
import { env } from 'node:process'
import wavefile from 'wavefile'
import { useLogg } from '@guiiai/logg'
import { pipeline } from '@huggingface/transformers'
import { createOpenAI } from '@xsai-ext/providers-cloud'
import { generateTranscription } from '@xsai/generate-transcription'
import wavefile from 'wavefile'
import { pcmToWav } from '../utils/audio'
@@ -2,9 +2,10 @@ import type { PlanStep } from '../../agents/planning/adapter'
import type { Logger } from '../../utils/logger'
import type { Action } from './action'
import { useLogg } from '@guiiai/logg'
import EventEmitter3 from 'eventemitter3'
import { useLogg } from '@guiiai/logg'
export type AgentType = 'action' | 'memory' | 'planning' | 'chat'
export interface AgentConfig {
@@ -5,10 +5,11 @@ import type { MineflayerPlugin } from './plugin'
import type { TickEvents, TickEventsHandler } from './ticker'
import type { EventHandlers, EventsHandler } from './types'
import { useLogg } from '@guiiai/logg'
import EventEmitter from 'eventemitter3'
import mineflayer from 'mineflayer'
import { useLogg } from '@guiiai/logg'
import { parseCommand } from './command'
import { Components } from './components'
import { Health } from './health'
+2 -1
View File
@@ -1,7 +1,8 @@
import process, { exit } from 'node:process'
import { Client } from '@proj-airi/server-sdk'
import MineflayerArmorManager from 'mineflayer-armor-manager'
import { Client } from '@proj-airi/server-sdk'
import { loader as MineflayerAutoEat } from 'mineflayer-auto-eat'
import { plugin as MineflayerCollectBlock } from 'mineflayer-collectblock'
import { pathfinder as MineflayerPathfinder } from 'mineflayer-pathfinder'
@@ -3,8 +3,9 @@ import type { Block } from 'prismarine-block'
import type { Mineflayer } from '../../libs/mineflayer'
import { sleep } from '@moeru/std'
import pathfinder from 'mineflayer-pathfinder'
import { sleep } from '@moeru/std'
import { Vec3 } from 'vec3'
import { useLogger } from '../../utils/logger'
+1
View File
@@ -4,6 +4,7 @@ import type { Mineflayer } from '../libs/mineflayer'
import type { BlockFace } from './base'
import pathfinderModel from 'mineflayer-pathfinder'
import { Vec3 } from 'vec3'
import { getBlockId, makeItem } from '../utils/mcdata'
+2 -1
View File
@@ -3,9 +3,10 @@ import type { Item } from 'prismarine-item'
import type { Mineflayer } from '../libs/mineflayer'
import { sleep } from '@moeru/std'
import pathfinderModel from 'mineflayer-pathfinder'
import { sleep } from '@moeru/std'
import { isHostile } from '../utils/mcdata'
import { log } from './base'
import { getNearbyEntities, getNearestEntityWhere } from './world'
+2 -1
View File
@@ -2,9 +2,10 @@ import type { Entity } from 'prismarine-entity'
import type { Mineflayer } from '../libs/mineflayer'
import pathfinder from 'mineflayer-pathfinder'
import { sleep } from '@moeru/std'
import { randomInt } from 'es-toolkit'
import pathfinder from 'mineflayer-pathfinder'
import { Vec3 } from 'vec3'
import { useLogger } from '../utils/logger'
@@ -1,9 +1,10 @@
import { env } from 'node:process'
import pLimit from 'p-limit'
import { embed } from '@xsai/embed'
import { eq, isNull } from 'drizzle-orm'
import { chunk } from 'es-toolkit'
import pLimit from 'p-limit'
import { initDb, useDrizzle } from '../src/db'
import { chatMessagesTable } from '../src/db/schema'
@@ -1,18 +1,20 @@
import type { Bot } from 'grammy'
import type { Message, Sticker } from 'grammy/types'
import { Buffer } from 'node:buffer'
import { promises as fs } from 'node:fs'
import os from 'node:os'
import path from 'node:path'
import { Buffer } from 'node:buffer'
import { promises as fs } from 'node:fs'
import { env } from 'node:process'
import ffmpegInstaller from '@ffmpeg-installer/ffmpeg'
import ffmpeg from 'fluent-ffmpeg'
import Sharp from 'sharp'
import { useLogg } from '@guiiai/logg'
import { generateText } from '@xsai/generate-text'
import { message } from '@xsai/utils-chat'
import ffmpeg from 'fluent-ffmpeg'
import Sharp from 'sharp'
import { findStickerDescription, recordSticker } from '../models'
import { div, span, ul } from '../prompts/utils'
+2 -1
View File
@@ -5,10 +5,11 @@ import type { BotSelf } from '../types'
import { Buffer } from 'node:buffer'
import { env } from 'node:process'
import Sharp from 'sharp'
import { embed } from '@xsai/embed'
import { generateText } from '@xsai/generate-text'
import { message } from '@xsai/utils-chat'
import Sharp from 'sharp'
import { findPhotosDescriptions, recordPhoto } from '../models'
+2 -1
View File
@@ -4,11 +4,12 @@ import type { Message, Sticker } from 'grammy/types'
import { Buffer } from 'node:buffer'
import { env } from 'node:process'
import Sharp from 'sharp'
import { useLogg } from '@guiiai/logg'
import { embed } from '@xsai/embed'
import { generateText } from '@xsai/generate-text'
import { message } from '@xsai/utils-chat'
import Sharp from 'sharp'
import { findStickerDescription, recordSticker } from '../models'
import { div, span } from '../prompts/utils'