feat(stage-ui): add character card import and export (#1998)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -409,8 +409,14 @@ pages:
|
||||
systemprompt: System Prompt
|
||||
title: AIRI Card
|
||||
try_different_search: Try a different search term
|
||||
export: Export
|
||||
exported: Card package exported
|
||||
export_failed: Failed to export card package
|
||||
imported: Card package imported
|
||||
import_missing_file: Card package is missing required files
|
||||
import_invalid_file: Card package file is invalid
|
||||
upload: Upload
|
||||
upload_desc: Click or drag file to upload
|
||||
upload_desc: Click or drag an AIRI card package to import
|
||||
memory:
|
||||
description: Where memories got stored, and organized
|
||||
title: Memory
|
||||
|
||||
@@ -390,8 +390,14 @@ pages:
|
||||
systemprompt: Prompt del Sistema
|
||||
title: Tarjeta AIRI
|
||||
try_different_search: Prueba un término de búsqueda diferente
|
||||
export: Exportar
|
||||
exported: Paquete de tarjeta exportado
|
||||
export_failed: No se pudo exportar el paquete de tarjeta
|
||||
imported: Paquete de tarjeta importado
|
||||
import_missing_file: Al paquete de tarjeta le faltan archivos necesarios
|
||||
import_invalid_file: El archivo del paquete de tarjeta no es válido
|
||||
upload: Subir
|
||||
upload_desc: Haz clic o arrastra el archivo para subir
|
||||
upload_desc: Haz clic o arrastra un paquete de tarjeta AIRI para importar
|
||||
memory:
|
||||
description: Donde se almacenan y organizan las memorias
|
||||
title: Memoria
|
||||
|
||||
@@ -390,8 +390,14 @@ pages:
|
||||
systemprompt: Prompt système
|
||||
title: Carte AIRI
|
||||
try_different_search: Essayez un autre terme de recherche
|
||||
export: Exporter
|
||||
exported: Paquet de carte exporté
|
||||
export_failed: Impossible d’exporter le paquet de carte
|
||||
imported: Paquet de carte importé
|
||||
import_missing_file: Le paquet de carte ne contient pas les fichiers requis
|
||||
import_invalid_file: Le fichier du paquet de carte est invalide
|
||||
upload: Téléverser
|
||||
upload_desc: Cliquez ou glissez un fichier pour téléverser
|
||||
upload_desc: Cliquez ou glissez un paquet de carte AIRI pour l’importer
|
||||
memory:
|
||||
description: Endroit où les souvenirs sont stockés et organisés
|
||||
title: Mémoire
|
||||
|
||||
@@ -390,8 +390,14 @@ pages:
|
||||
systemprompt: システムプロンプト
|
||||
title: AIRIカード
|
||||
try_different_search: 別の検索ワードを試してください
|
||||
export: エクスポート
|
||||
exported: カードパッケージをエクスポートしました
|
||||
export_failed: カードパッケージのエクスポートに失敗しました
|
||||
imported: カードパッケージをインポートしました
|
||||
import_missing_file: カードパッケージに必要なファイルがありません
|
||||
import_invalid_file: カードパッケージファイルが正しくありません
|
||||
upload: アップロード
|
||||
upload_desc: ファイルをアップロードするにはクリックまたはドラッグ
|
||||
upload_desc: AIRI カードパッケージをクリックまたはドラッグしてインポート
|
||||
memory:
|
||||
description: 記憶が保存され、整理される場所
|
||||
title: 記憶
|
||||
|
||||
@@ -390,8 +390,14 @@ pages:
|
||||
systemprompt: 시스템 프롬프트
|
||||
title: AIRI 카드
|
||||
try_different_search: 다른 검색어를 시도해보세요
|
||||
export: 내보내기
|
||||
exported: 카드 패키지를 내보냈습니다
|
||||
export_failed: 카드 패키지를 내보내지 못했습니다
|
||||
imported: 카드 패키지를 가져왔습니다
|
||||
import_missing_file: 카드 패키지에 필요한 파일이 없습니다
|
||||
import_invalid_file: 카드 패키지 파일이 올바르지 않습니다
|
||||
upload: 업로드
|
||||
upload_desc: 클릭 또는 파일을 드래그하여 업로드
|
||||
upload_desc: AIRI 카드 패키지를 클릭하거나 드래그하여 가져오기
|
||||
memory:
|
||||
description: 기억이 저장되고 정리된 곳
|
||||
title: 메모리
|
||||
|
||||
@@ -390,8 +390,14 @@ pages:
|
||||
systemprompt: Системный промпт
|
||||
title: Карта AIRI
|
||||
try_different_search: Попробуйте другой поисковый запрос
|
||||
export: Экспорт
|
||||
exported: Пакет карточки экспортирован
|
||||
export_failed: Не удалось экспортировать пакет карточки
|
||||
imported: Пакет карточки импортирован
|
||||
import_missing_file: В пакете карточки отсутствуют необходимые файлы
|
||||
import_invalid_file: Файл пакета карточки недействителен
|
||||
upload: Загрузить
|
||||
upload_desc: Нажмите или перетащите файл для загрузки
|
||||
upload_desc: Нажмите или перетащите пакет карточки AIRI для импорта
|
||||
memory:
|
||||
description: Хранилище и организация воспоминаний
|
||||
title: Память
|
||||
|
||||
@@ -390,8 +390,14 @@ pages:
|
||||
systemprompt: Lời nhắc hệ thống
|
||||
title: Thẻ AIRI
|
||||
try_different_search: Hãy thử từ khóa khác
|
||||
export: Xuất
|
||||
exported: Đã xuất gói thẻ
|
||||
export_failed: Không thể xuất gói thẻ
|
||||
imported: Đã nhập gói thẻ
|
||||
import_missing_file: Gói thẻ thiếu tệp bắt buộc
|
||||
import_invalid_file: Tệp gói thẻ không hợp lệ
|
||||
upload: Tải lên
|
||||
upload_desc: Bấm hoặc kéo thả tệp để tải lên
|
||||
upload_desc: Bấm hoặc kéo thả gói thẻ AIRI để nhập
|
||||
memory:
|
||||
description: Nơi lưu trữ và tổ chức ký ức
|
||||
title: Bộ nhớ
|
||||
|
||||
@@ -390,8 +390,14 @@ pages:
|
||||
systemprompt: 系统提示词
|
||||
title: AIRI 角色卡
|
||||
try_different_search: 尝试使用其他关键词搜索
|
||||
export: 导出
|
||||
exported: 角色卡包已导出
|
||||
export_failed: 角色卡包导出失败
|
||||
imported: 角色卡包已导入
|
||||
import_missing_file: 角色卡包缺少必要文件
|
||||
import_invalid_file: 角色卡包文件错误
|
||||
upload: 上传
|
||||
upload_desc: 点击或拖拽文件到此处上传
|
||||
upload_desc: 点击或拖拽 AIRI 角色卡包到此处导入
|
||||
memory:
|
||||
description: 存放记忆的地方,以及策略
|
||||
title: 记忆体
|
||||
|
||||
@@ -390,8 +390,14 @@ pages:
|
||||
systemprompt: 系統提示詞
|
||||
title: AIRI 角色卡
|
||||
try_different_search: 嘗試使用其他關鍵字搜尋
|
||||
export: 匯出
|
||||
exported: 角色卡包已匯出
|
||||
export_failed: 角色卡包匯出失敗
|
||||
imported: 角色卡包已匯入
|
||||
import_missing_file: 角色卡包缺少必要檔案
|
||||
import_invalid_file: 角色卡包檔案錯誤
|
||||
upload: 上傳
|
||||
upload_desc: 點擊或拖曳檔案到此處上傳
|
||||
upload_desc: 點擊或拖曳 AIRI 角色卡包到此處匯入
|
||||
memory:
|
||||
description: 存放記憶的地方,以及策略
|
||||
title: 記憶體
|
||||
|
||||
@@ -3,7 +3,10 @@ import type { AiriCard } from '@proj-airi/stage-ui/stores/modules/airi-card'
|
||||
|
||||
import DOMPurify from 'dompurify'
|
||||
|
||||
import { useDownload } from '@proj-airi/stage-ui/composables/download'
|
||||
import { exportAiriCardPackage } from '@proj-airi/stage-ui/services/airi-card-import-export'
|
||||
import { useBackgroundStore } from '@proj-airi/stage-ui/stores/background'
|
||||
import { useDisplayModelsStore } from '@proj-airi/stage-ui/stores/display-models'
|
||||
import { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'
|
||||
import { useConsciousnessStore } from '@proj-airi/stage-ui/stores/modules/consciousness'
|
||||
import { useSpeechStore } from '@proj-airi/stage-ui/stores/modules/speech'
|
||||
@@ -17,8 +20,9 @@ import {
|
||||
DialogRoot,
|
||||
DialogTitle,
|
||||
} from 'reka-ui'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import { computed, ref, shallowRef, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { toast } from 'vue-sonner'
|
||||
|
||||
import DeleteCardDialog from './DeleteCardDialog.vue'
|
||||
|
||||
@@ -39,6 +43,7 @@ const consciousnessStore = useConsciousnessStore()
|
||||
const speechStore = useSpeechStore()
|
||||
const visionStore = useVisionStore()
|
||||
const backgroundStore = useBackgroundStore()
|
||||
const displayModelsStore = useDisplayModelsStore()
|
||||
|
||||
const { removeCard } = cardStore
|
||||
const { activeCardId } = storeToRefs(cardStore)
|
||||
@@ -47,6 +52,7 @@ const { activeSpeechProvider: speechProvider, activeSpeechModel: defaultSpeechMo
|
||||
const { activeProvider: visionProvider, activeModel: defaultVisionModel } = storeToRefs(visionStore)
|
||||
|
||||
const isRefreshingGallery = ref(false)
|
||||
const isExportingCard = shallowRef(false)
|
||||
|
||||
// Get selected card data
|
||||
const selectedCard = computed<AiriCard | undefined>(() => {
|
||||
@@ -113,6 +119,27 @@ function handleActivate() {
|
||||
}, 300)
|
||||
}
|
||||
|
||||
async function handleExportCard() {
|
||||
if (!selectedCard.value)
|
||||
return
|
||||
|
||||
isExportingCard.value = true
|
||||
try {
|
||||
useDownload(
|
||||
await exportAiriCardPackage({ card: selectedCard.value, displayModelsStore }),
|
||||
`${selectedCard.value.name.trim()}.zip`,
|
||||
).download()
|
||||
toast(t('settings.pages.card.exported'))
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Error exporting card package:', error)
|
||||
toast(t('settings.pages.card.export_failed'))
|
||||
}
|
||||
finally {
|
||||
isExportingCard.value = false
|
||||
}
|
||||
}
|
||||
|
||||
function highlightTagToHtml(text: string) {
|
||||
return DOMPurify.sanitize(text?.replace(/\{\{(.*?)\}\}/g, '<span class="bg-primary-500/20 inline-block">{{ $1 }}</span>').trim())
|
||||
}
|
||||
@@ -328,6 +355,13 @@ function getModuleDisplayValue(value: string | undefined, defaultValue: string |
|
||||
|
||||
<!-- Action buttons -->
|
||||
<div flex="~ row" gap-2>
|
||||
<Button
|
||||
variant="secondary"
|
||||
icon="i-solar:download-minimalistic-bold-duotone"
|
||||
:label="t('settings.pages.card.export')"
|
||||
:disabled="isExportingCard"
|
||||
@click="handleExportCard"
|
||||
/>
|
||||
<!-- Activation button -->
|
||||
<Button
|
||||
variant="primary"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import type { ccv3 } from '@proj-airi/ccc'
|
||||
|
||||
import { Alert } from '@proj-airi/stage-ui/components'
|
||||
import { AiriCardPackageError, importAiriCardPackage } from '@proj-airi/stage-ui/services/airi-card-import-export'
|
||||
import { useDisplayModelsStore } from '@proj-airi/stage-ui/stores/display-models'
|
||||
import { useAiriCardStore } from '@proj-airi/stage-ui/stores/modules/airi-card'
|
||||
import { InputFileCard } from '@proj-airi/ui'
|
||||
import { ComboboxSelect } from '@proj-airi/ui/components/form'
|
||||
@@ -9,6 +9,7 @@ import { storeToRefs } from 'pinia'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { toast } from 'vue-sonner'
|
||||
|
||||
import CardCreate from './components/CardCreate.vue'
|
||||
import CardCreationDialog from './components/CardCreationDialog.vue'
|
||||
@@ -18,6 +19,7 @@ import DeleteCardDialog from './components/DeleteCardDialog.vue'
|
||||
|
||||
const { t } = useI18n()
|
||||
const cardStore = useAiriCardStore()
|
||||
const displayModelsStore = useDisplayModelsStore()
|
||||
const { addCard, removeCard } = cardStore
|
||||
const { cards, activeCardId } = storeToRefs(cardStore)
|
||||
|
||||
@@ -57,15 +59,17 @@ watch(inputFiles, async (newFiles) => {
|
||||
return
|
||||
|
||||
try {
|
||||
const content = await file.text()
|
||||
const cardJSON = JSON.parse(content) as ccv3.CharacterCardV3
|
||||
|
||||
// Add card and select it
|
||||
selectedCardId.value = addCard(cardJSON)
|
||||
isCardDialogOpen.value = true
|
||||
addCard(await importAiriCardPackage({ file, displayModelsStore }))
|
||||
toast(t('settings.pages.card.imported'))
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Error processing card file:', error)
|
||||
console.error('Error processing card package:', error)
|
||||
toast(t(error instanceof AiriCardPackageError && error.code === 'missing-file'
|
||||
? 'settings.pages.card.import_missing_file'
|
||||
: 'settings.pages.card.import_invalid_file'))
|
||||
}
|
||||
finally {
|
||||
inputFiles.value = []
|
||||
}
|
||||
})
|
||||
|
||||
@@ -267,7 +271,7 @@ function getModuleShortName(id: string, module: 'consciousness' | 'voice') {
|
||||
:class="{ 'grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-4 grid-auto-rows-[minmax(min-content,max-content)] grid-auto-flow-dense sm:grid-cols-[repeat(auto-fill,minmax(240px,1fr))] sm:gap-5 md:grid-cols-[repeat(auto-fill,minmax(220px,1fr))] lg:grid-cols-[repeat(auto-fill,minmax(250px,1fr))]': cards.size > 0 }"
|
||||
>
|
||||
<!-- Upload card -->
|
||||
<InputFileCard v-model="inputFiles" accept="*.json">
|
||||
<InputFileCard v-model="inputFiles" accept=".zip">
|
||||
<template #default="{ isDragging }">
|
||||
<template v-if="!isDragging">
|
||||
<div flex flex-col items-center>
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
"./libs/inference": "./src/libs/inference/index.ts",
|
||||
"./libs/*": "./src/libs/*.ts",
|
||||
"./libs": "./src/libs/index.ts",
|
||||
"./services/*": "./src/services/*.ts",
|
||||
"./tools/mcp": "./src/tools/mcp.ts",
|
||||
"./stores/providers/aliyun": "./src/stores/providers/aliyun/index.ts",
|
||||
"./stores/analytics": "./src/stores/analytics/index.ts",
|
||||
@@ -124,6 +125,7 @@
|
||||
"hono": "catalog:",
|
||||
"html2canvas": "catalog:",
|
||||
"idb-keyval": "catalog:",
|
||||
"jszip": "catalog:",
|
||||
"kokoro-js": "catalog:",
|
||||
"localforage": "catalog:",
|
||||
"mediabunny": "catalog:",
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
import type { ccv3 } from '@proj-airi/ccc'
|
||||
|
||||
import type { AiriCard, AiriExtension } from '../stores/modules/airi-card'
|
||||
|
||||
import JSZip from 'jszip'
|
||||
|
||||
import { exportToJSON } from '@proj-airi/ccc'
|
||||
import { createPinia, setActivePinia } from 'pinia'
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import { DisplayModelFormat, useDisplayModelsStore } from '../stores/display-models'
|
||||
import { exportAiriCardPackage, importAiriCardPackage } from './airi-card-import-export'
|
||||
|
||||
describe('airi card package import/export', () => {
|
||||
beforeEach(() => {
|
||||
setActivePinia(createPinia())
|
||||
vi.unstubAllGlobals()
|
||||
})
|
||||
|
||||
it('exports sanitized packages and restores display models', async () => {
|
||||
const displayModelsStore = useDisplayModelsStore()
|
||||
const fetch = vi.fn(async () => new Response('preset-vrm-model'))
|
||||
vi.stubGlobal('fetch', fetch)
|
||||
vi.spyOn(displayModelsStore, 'getDisplayModel').mockResolvedValue({
|
||||
id: 'preset-vrm-1',
|
||||
format: DisplayModelFormat.VRM,
|
||||
type: 'url' as const,
|
||||
url: '/assets/avatar.vrm',
|
||||
name: 'AvatarSample_A',
|
||||
importedAt: 1,
|
||||
})
|
||||
mockAddDisplayModel(displayModelsStore, 'display-model-imported')
|
||||
|
||||
const exported = await exportAiriCardPackage({ card: createCard(), displayModelsStore })
|
||||
const zip = await JSZip.loadAsync(await exported.arrayBuffer())
|
||||
const cardJson = await readJson<ccv3.CharacterCardV3>(zip, 'card.json')
|
||||
const imported = await importAiriCardPackage({ file: new File([exported], 'card.zip'), displayModelsStore })
|
||||
const airi = airiFrom(cardJson)
|
||||
|
||||
expect(fetch).toHaveBeenCalledWith('/assets/avatar.vrm')
|
||||
expect(await readJson(zip, 'manifest.json')).toMatchObject({ format: 'airi-character-card', version: 1, resources: { displayModel: { path: 'models/body-model.vrm', format: DisplayModelFormat.VRM, name: 'AvatarSample_A.vrm' } } })
|
||||
expect(await zip.file('models/body-model.vrm')?.async('string')).toBe('preset-vrm-model')
|
||||
expect(cardJson.data).toMatchObject({ name: 'AIRI / Test Card', creator: '', tags: [], mes_example: '' })
|
||||
expect(airi.modules).toMatchObject({ consciousness: { provider: 'openai', model: 'gpt-4o' }, speech: { provider: 'elevenlabs', model: 'eleven', voice_id: 'alloy' } })
|
||||
expect(airi.modules).not.toHaveProperty('activeBackgroundId')
|
||||
expect(airi.modules.artistry).not.toHaveProperty('workflowId')
|
||||
expect(airi.agents).toEqual({})
|
||||
expect(displayModelsStore.addDisplayModel).toHaveBeenCalledWith(DisplayModelFormat.VRM, expect.objectContaining({ name: 'AvatarSample_A.vrm' }))
|
||||
expect(airiFrom(imported).modules.displayModelId).toBe('display-model-imported')
|
||||
})
|
||||
|
||||
it('classifies invalid packages', async () => {
|
||||
const emptyZip = new JSZip()
|
||||
const invalidJsonZip = new JSZip()
|
||||
const displayModelsStore = useDisplayModelsStore()
|
||||
invalidJsonZip.file('manifest.json', '{')
|
||||
const cases = [
|
||||
[new File(['not zip'], 'card.zip'), { code: 'invalid-file', message: 'Invalid zip file' }],
|
||||
[new File([await emptyZip.generateAsync({ type: 'arraybuffer' })], 'empty.zip'), { code: 'missing-file' }],
|
||||
[new File([await invalidJsonZip.generateAsync({ type: 'arraybuffer' })], 'invalid-json.zip'), { cause: expect.any(SyntaxError), code: 'invalid-file' }],
|
||||
[await packageFile(exportToJSON(createCard()), { version: 2 }), { code: 'invalid-file' }],
|
||||
] as const
|
||||
|
||||
for (const [file, expected] of cases)
|
||||
await expect(importAiriCardPackage({ file, displayModelsStore })).rejects.toMatchObject(expected)
|
||||
})
|
||||
})
|
||||
|
||||
function mockAddDisplayModel(store: ReturnType<typeof useDisplayModelsStore>, id = 'unused') {
|
||||
return vi.spyOn(store, 'addDisplayModel').mockImplementation(async (format, file) => ({
|
||||
id,
|
||||
format,
|
||||
type: 'file' as const,
|
||||
file,
|
||||
name: file.name,
|
||||
importedAt: 1,
|
||||
}))
|
||||
}
|
||||
|
||||
function createCard(displayModelId = 'preset-vrm-1'): AiriCard {
|
||||
return {
|
||||
name: 'AIRI / Test Card',
|
||||
nickname: 'Tester',
|
||||
version: '1.2.3',
|
||||
description: 'Description',
|
||||
creator: 'Hidden creator',
|
||||
messageExample: [['{{user}}: hidden']],
|
||||
tags: ['hidden'],
|
||||
extensions: {
|
||||
airi: {
|
||||
modules: {
|
||||
consciousness: { provider: 'openai', model: 'gpt-4o' },
|
||||
vision: { provider: 'ollama', model: 'llava' },
|
||||
speech: { provider: 'elevenlabs', model: 'eleven', voice_id: 'alloy', pitch: 1 },
|
||||
displayModelId,
|
||||
activeBackgroundId: 'background-secret',
|
||||
artistry: { provider: 'replicate', model: 'flux', workflowId: 'workflow-secret' },
|
||||
},
|
||||
agents: { minecraft: { prompt: 'secret', enabled: true } },
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
async function packageFile(cardJson: ccv3.CharacterCardV3, manifestOverrides: Record<string, unknown> = {}) {
|
||||
const zip = new JSZip()
|
||||
zip.file('manifest.json', JSON.stringify({
|
||||
format: 'airi-character-card',
|
||||
version: 1,
|
||||
card: { path: 'card.json', spec: 'chara_card_v3' },
|
||||
...manifestOverrides,
|
||||
}))
|
||||
zip.file('card.json', JSON.stringify(cardJson))
|
||||
return new File([await zip.generateAsync({ type: 'arraybuffer' })], 'card.zip')
|
||||
}
|
||||
|
||||
async function readJson<T = Record<string, unknown>>(zip: JSZip, path: string): Promise<T> {
|
||||
return JSON.parse(await zip.file(path)!.async('string')) as T
|
||||
}
|
||||
|
||||
function airiFrom(card: ccv3.CharacterCardV3): AiriExtension {
|
||||
return card.data.extensions.airi as AiriExtension
|
||||
}
|
||||
@@ -0,0 +1,269 @@
|
||||
import type { Card, ccv3 } from '@proj-airi/ccc'
|
||||
import type { GenericSchema, InferOutput } from 'valibot'
|
||||
|
||||
import type { DisplayModel, useDisplayModelsStore } from '../stores/display-models'
|
||||
import type { AiriCard, AiriExtension } from '../stores/modules/airi-card'
|
||||
|
||||
import JSZip from 'jszip'
|
||||
|
||||
import { exportToJSON } from '@proj-airi/ccc'
|
||||
import { array, literal, object, optional, parse, picklist, record, string, unknown as unknownSchema } from 'valibot'
|
||||
|
||||
import { DisplayModelFormat } from '../stores/display-models'
|
||||
|
||||
const FORMAT = 'airi-character-card'
|
||||
const VERSION = 1
|
||||
const CARD_PATH = 'card.json'
|
||||
const MANIFEST_PATH = 'manifest.json'
|
||||
const MODEL_EXT: Partial<Record<DisplayModelFormat, string>> = {
|
||||
[DisplayModelFormat.Live2dZip]: 'zip',
|
||||
[DisplayModelFormat.SpineZip]: 'zip',
|
||||
[DisplayModelFormat.VRM]: 'vrm',
|
||||
}
|
||||
|
||||
type DisplayModelsStore = ReturnType<typeof useDisplayModelsStore>
|
||||
type ExportableCard = Card & { extensions: { airi: AiriExtension } }
|
||||
|
||||
const manifestSchema = object({
|
||||
format: literal(FORMAT),
|
||||
version: literal(VERSION),
|
||||
card: object({ path: literal(CARD_PATH), spec: literal('chara_card_v3') }),
|
||||
resources: optional(object({
|
||||
displayModel: object({
|
||||
path: string(),
|
||||
format: picklist([DisplayModelFormat.Live2dZip, DisplayModelFormat.SpineZip, DisplayModelFormat.VRM]),
|
||||
name: string(),
|
||||
}),
|
||||
})),
|
||||
})
|
||||
|
||||
const characterCardV3Schema = object({
|
||||
spec: literal('chara_card_v3'),
|
||||
spec_version: literal('3.0'),
|
||||
data: object({
|
||||
name: string(),
|
||||
nickname: optional(string()),
|
||||
character_version: optional(string(), '1.0.0'),
|
||||
description: optional(string(), ''),
|
||||
personality: optional(string(), ''),
|
||||
scenario: optional(string(), ''),
|
||||
first_mes: optional(string(), ''),
|
||||
alternate_greetings: optional(array(string()), []),
|
||||
creator_notes: optional(string(), ''),
|
||||
system_prompt: optional(string(), ''),
|
||||
post_history_instructions: optional(string(), ''),
|
||||
extensions: optional(record(string(), unknownSchema()), {}),
|
||||
}),
|
||||
})
|
||||
|
||||
type CharacterCardPackageJson = InferOutput<typeof characterCardV3Schema>
|
||||
|
||||
type AiriCardPackageErrorCode = 'missing-file' | 'invalid-file'
|
||||
type Manifest = InferOutput<typeof manifestSchema>
|
||||
|
||||
export class AiriCardPackageError extends Error {
|
||||
constructor(public readonly code: AiriCardPackageErrorCode, message: string, options?: { cause?: unknown }) {
|
||||
super(message, options)
|
||||
this.name = 'AiriCardPackageError'
|
||||
}
|
||||
}
|
||||
|
||||
/** Exports only the creation/edit form whitelist; provider globals and runtime state are never cloned. */
|
||||
export async function exportAiriCardPackage({ card, displayModelsStore }: { card: AiriCard, displayModelsStore: DisplayModelsStore }): Promise<Blob> {
|
||||
const exportableCard = cardFromAiriCard(card)
|
||||
const displayModel = await exportDisplayModel(exportableCard, displayModelsStore)
|
||||
const manifest = {
|
||||
format: FORMAT,
|
||||
version: VERSION,
|
||||
createdAt: new Date().toISOString(),
|
||||
card: { path: CARD_PATH, spec: 'chara_card_v3' },
|
||||
...(displayModel ? { resources: { displayModel: displayModel.manifest } } : {}),
|
||||
}
|
||||
const zip = new JSZip()
|
||||
|
||||
zip.file(MANIFEST_PATH, JSON.stringify(manifest, null, 2))
|
||||
zip.file(CARD_PATH, JSON.stringify(exportToJSON(exportableCard), null, 2))
|
||||
if (displayModel)
|
||||
zip.file(displayModel.manifest.path, displayModel.data)
|
||||
|
||||
return zip.generateAsync({ type: 'blob' })
|
||||
}
|
||||
|
||||
/** Imports a package as sanitized CCv3 JSON; edited zip payloads cannot smuggle extra AIRI fields through. */
|
||||
export async function importAiriCardPackage({ file, displayModelsStore }: { file: File, displayModelsStore: DisplayModelsStore }): Promise<ccv3.CharacterCardV3> {
|
||||
const zip = await loadZip(file)
|
||||
const manifest = await readJsonFile(zip, MANIFEST_PATH, manifestSchema)
|
||||
const cardJson = await readJsonFile(zip, manifest.card.path, characterCardV3Schema)
|
||||
const displayModelId = await importDisplayModel(zip, manifest, displayModelsStore)
|
||||
|
||||
return exportToJSON(cardFromCharacterCard(cardJson, displayModelId))
|
||||
}
|
||||
|
||||
async function exportDisplayModel(card: ExportableCard, store: DisplayModelsStore) {
|
||||
const displayModelId = card.extensions.airi.modules.displayModelId
|
||||
if (!displayModelId)
|
||||
return
|
||||
|
||||
const model = await store.getDisplayModel(displayModelId)
|
||||
if (!model) {
|
||||
if (displayModelId.startsWith('display-model-'))
|
||||
throw error('invalid-file', 'Missing local display model')
|
||||
return
|
||||
}
|
||||
|
||||
const modelExt = MODEL_EXT[model.format]
|
||||
if (!modelExt)
|
||||
throw error('invalid-file', 'Unsupported or empty local display model')
|
||||
|
||||
const payload = await displayModelPayload(model)
|
||||
|
||||
return {
|
||||
data: payload.data,
|
||||
manifest: {
|
||||
format: model.format,
|
||||
name: payload.file.name,
|
||||
path: `models/body-model.${modelExt}`,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
async function importDisplayModel(zip: JSZip, manifest: Manifest, store: DisplayModelsStore) {
|
||||
const resource = manifest.resources?.displayModel
|
||||
if (!resource)
|
||||
return
|
||||
|
||||
const file = zip.file(resource.path)
|
||||
if (!file)
|
||||
throw error('missing-file', 'Missing display model file')
|
||||
|
||||
try {
|
||||
const data = await file.async('arraybuffer')
|
||||
return (await store.addDisplayModel(resource.format, new File([data], resource.name))).id
|
||||
}
|
||||
catch (cause) {
|
||||
throw error('invalid-file', 'Failed to import display model file', { cause })
|
||||
}
|
||||
}
|
||||
|
||||
async function loadZip(file: File) {
|
||||
try {
|
||||
return await JSZip.loadAsync(await file.arrayBuffer())
|
||||
}
|
||||
catch (cause) {
|
||||
throw error('invalid-file', 'Invalid zip file', { cause })
|
||||
}
|
||||
}
|
||||
|
||||
async function readJsonFile<S extends GenericSchema>(zip: JSZip, path: string, schema: S): Promise<InferOutput<S>> {
|
||||
const file = zip.file(path)
|
||||
if (!file)
|
||||
throw error('missing-file', `Missing ${path}`)
|
||||
|
||||
try {
|
||||
return parse(schema, JSON.parse(await file.async('string')))
|
||||
}
|
||||
catch (cause) {
|
||||
throw error('invalid-file', `Invalid ${path}`, { cause })
|
||||
}
|
||||
}
|
||||
|
||||
function cardFromAiriCard(card: AiriCard): ExportableCard {
|
||||
return {
|
||||
name: card.name,
|
||||
nickname: card.nickname,
|
||||
version: card.version,
|
||||
description: card.description ?? '',
|
||||
personality: card.personality ?? '',
|
||||
scenario: card.scenario ?? '',
|
||||
greetings: card.greetings ?? [],
|
||||
notes: card.notes ?? '',
|
||||
systemPrompt: card.systemPrompt ?? '',
|
||||
postHistoryInstructions: card.postHistoryInstructions ?? '',
|
||||
extensions: { airi: sanitizeAiri(card.extensions?.airi) },
|
||||
}
|
||||
}
|
||||
|
||||
function cardFromCharacterCard(card: CharacterCardPackageJson, displayModelId?: string): ExportableCard {
|
||||
const data = card.data
|
||||
return {
|
||||
name: data.name,
|
||||
nickname: data.nickname,
|
||||
version: data.character_version,
|
||||
description: data.description,
|
||||
personality: data.personality,
|
||||
scenario: data.scenario,
|
||||
greetings: [data.first_mes, ...(data.alternate_greetings ?? [])],
|
||||
notes: data.creator_notes,
|
||||
systemPrompt: data.system_prompt,
|
||||
postHistoryInstructions: data.post_history_instructions,
|
||||
extensions: { airi: sanitizeAiri(data.extensions?.airi, displayModelId) },
|
||||
}
|
||||
}
|
||||
|
||||
function sanitizeAiri(value: unknown, displayModelIdOverride?: string): AiriExtension {
|
||||
const source = isRecord(value) ? value : {}
|
||||
const modules = isRecord(source.modules) ? source.modules : {}
|
||||
const artistry = isRecord(modules.artistry) ? modules.artistry : {}
|
||||
const speech = isRecord(modules.speech) ? modules.speech : {}
|
||||
const displayModelId = displayModelIdOverride ?? stringValue(modules.displayModelId)
|
||||
|
||||
return {
|
||||
modules: {
|
||||
consciousness: providerModel(modules.consciousness),
|
||||
vision: providerModel(modules.vision),
|
||||
speech: {
|
||||
...providerModel(modules.speech),
|
||||
voice_id: stringValue(speech.voice_id),
|
||||
},
|
||||
...(displayModelId ? { displayModelId } : {}),
|
||||
artistry: {
|
||||
...(typeof artistry.provider === 'string' ? { provider: artistry.provider } : {}),
|
||||
...(typeof artistry.model === 'string' ? { model: artistry.model } : {}),
|
||||
...(typeof artistry.promptPrefix === 'string' ? { promptPrefix: artistry.promptPrefix } : {}),
|
||||
...(typeof artistry.widgetInstruction === 'string' ? { widgetInstruction: artistry.widgetInstruction } : {}),
|
||||
...(isSpawnMode(artistry.spawnMode) ? { spawnMode: artistry.spawnMode } : {}),
|
||||
...(isRecord(artistry.options) ? { options: artistry.options } : {}),
|
||||
...(typeof artistry.autonomousEnabled === 'boolean' ? { autonomousEnabled: artistry.autonomousEnabled } : {}),
|
||||
...(typeof artistry.autonomousThreshold === 'number' ? { autonomousThreshold: artistry.autonomousThreshold } : {}),
|
||||
},
|
||||
},
|
||||
agents: {},
|
||||
}
|
||||
}
|
||||
|
||||
function providerModel(value: unknown) {
|
||||
const source = isRecord(value) ? value : {}
|
||||
return { provider: stringValue(source.provider), model: stringValue(source.model) }
|
||||
}
|
||||
|
||||
function isRecord(value: unknown): value is Record<string, unknown> {
|
||||
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
||||
}
|
||||
|
||||
function stringValue(value: unknown) {
|
||||
return typeof value === 'string' ? value : ''
|
||||
}
|
||||
|
||||
function isSpawnMode(value: unknown): value is NonNullable<AiriExtension['modules']['artistry']>['spawnMode'] {
|
||||
return value === 'bg' || value === 'widget' || value === 'inline' || value === 'bg_widget'
|
||||
}
|
||||
|
||||
async function displayModelPayload(model: DisplayModel): Promise<{ data: ArrayBuffer, file: File }> {
|
||||
try {
|
||||
const response = model.type === 'url' ? await fetch(model.url) : undefined
|
||||
if (response && !response.ok)
|
||||
throw new Error(`Failed to read display model URL: ${response.status} ${response.statusText}`)
|
||||
|
||||
const file = model.type === 'file' ? model.file : new File([await response!.blob()], `${model.name}.${MODEL_EXT[model.format]}`)
|
||||
if (file.size <= 0)
|
||||
throw new Error('Display model file is empty')
|
||||
return { data: await file.arrayBuffer(), file }
|
||||
}
|
||||
catch (cause) {
|
||||
throw error('invalid-file', 'Failed to read display model file', { cause })
|
||||
}
|
||||
}
|
||||
|
||||
function error(code: AiriCardPackageErrorCode, message: string, options?: { cause?: unknown }) {
|
||||
return new AiriCardPackageError(code, message, options)
|
||||
}
|
||||
@@ -34,6 +34,7 @@ describe('stage-ui exports contract', () => {
|
||||
'./libs/*',
|
||||
'./libs/inference',
|
||||
'./libs/inference/adapters/*',
|
||||
'./services/*',
|
||||
'./stores',
|
||||
'./stores/*',
|
||||
'./stores/analytics',
|
||||
@@ -62,6 +63,7 @@ describe('stage-ui exports contract', () => {
|
||||
|
||||
expect(exportsMap['./stores']).toBe('./src/stores/index.ts')
|
||||
expect(exportsMap['./stores/*']).toBe('./src/stores/*.ts')
|
||||
expect(exportsMap['./services/*']).toBe('./src/services/*.ts')
|
||||
expect(exportsMap['./tools/mcp']).toBe('./src/tools/mcp.ts')
|
||||
expect(exportsMap['./types']).toBe('./src/types/index.ts')
|
||||
expect(exportsMap['./types/*']).toBe('./src/types/*.ts')
|
||||
|
||||
Generated
+269
-85
@@ -971,7 +971,7 @@ catalogs:
|
||||
version: 0.184.0
|
||||
tinyexec:
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1
|
||||
version: 1.2.4
|
||||
tinyglobby:
|
||||
specifier: ^0.2.16
|
||||
version: 0.2.16
|
||||
@@ -1287,7 +1287,7 @@ importers:
|
||||
version: 19.11.0
|
||||
tinyexec:
|
||||
specifier: 'catalog:'
|
||||
version: 1.1.1
|
||||
version: 1.2.4
|
||||
tsdown:
|
||||
specifier: 'catalog:'
|
||||
version: 0.21.9(@arethetypeswrong/core@0.18.2)(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(publint@0.3.18)(synckit@0.11.12)(typescript@5.9.3)(unplugin-unused@0.5.7)(vue-tsc@3.2.6(typescript@5.9.3))
|
||||
@@ -2257,7 +2257,7 @@ importers:
|
||||
version: 3.0.2(electron@41.2.1)
|
||||
'@electron-toolkit/tsconfig':
|
||||
specifier: 'catalog:'
|
||||
version: 2.0.0(@types/node@25.6.0)
|
||||
version: 2.0.0(@types/node@24.12.2)
|
||||
'@electron-toolkit/utils':
|
||||
specifier: 'catalog:'
|
||||
version: 4.0.0(electron@41.2.1)
|
||||
@@ -2296,7 +2296,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@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))
|
||||
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))
|
||||
'@modelcontextprotocol/sdk':
|
||||
specifier: 'catalog:'
|
||||
version: 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)
|
||||
@@ -2332,10 +2332,10 @@ importers:
|
||||
version: link:../../packages/ui-transitions
|
||||
'@proj-airi/unplugin-fetch':
|
||||
specifier: 'catalog:'
|
||||
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))
|
||||
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))
|
||||
'@proj-airi/unplugin-live2d-sdk':
|
||||
specifier: 'catalog:'
|
||||
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)
|
||||
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)
|
||||
'@types/audioworklet':
|
||||
specifier: 'catalog:'
|
||||
version: 0.0.97
|
||||
@@ -2362,7 +2362,7 @@ importers:
|
||||
version: 2.10.3
|
||||
'@vitejs/plugin-vue':
|
||||
specifier: 'catalog:'
|
||||
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))
|
||||
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))
|
||||
'@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))
|
||||
@@ -2395,7 +2395,7 @@ importers:
|
||||
version: 6.8.3
|
||||
electron-vite:
|
||||
specifier: 'catalog:'
|
||||
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))
|
||||
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))
|
||||
get-port-please:
|
||||
specifier: 'catalog:'
|
||||
version: 3.2.0
|
||||
@@ -2416,31 +2416,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@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)))
|
||||
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)))
|
||||
unplugin-info:
|
||||
specifier: 'catalog:'
|
||||
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))
|
||||
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))
|
||||
unplugin-yaml:
|
||||
specifier: 'catalog:'
|
||||
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))
|
||||
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))
|
||||
vite:
|
||||
specifier: 'catalog:'
|
||||
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)
|
||||
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)
|
||||
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@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))
|
||||
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))
|
||||
vite-plugin-vue-devtools:
|
||||
specifier: 'catalog:'
|
||||
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))
|
||||
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))
|
||||
vite-plugin-vue-layouts:
|
||||
specifier: 'catalog:'
|
||||
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))
|
||||
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))
|
||||
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@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))
|
||||
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))
|
||||
vue-tsc:
|
||||
specifier: 'catalog:'
|
||||
version: 3.2.6(typescript@5.9.3)
|
||||
@@ -3204,7 +3204,7 @@ importers:
|
||||
version: 5.1.11
|
||||
tinyexec:
|
||||
specifier: 'catalog:'
|
||||
version: 1.1.1
|
||||
version: 1.2.4
|
||||
vscode-ext-gen:
|
||||
specifier: 'catalog:'
|
||||
version: 1.6.0
|
||||
@@ -3219,7 +3219,7 @@ importers:
|
||||
version: 7.0.0
|
||||
tinyexec:
|
||||
specifier: 'catalog:'
|
||||
version: 1.1.1
|
||||
version: 1.2.4
|
||||
|
||||
packages/audio:
|
||||
dependencies:
|
||||
@@ -3277,7 +3277,7 @@ importers:
|
||||
version: 7.0.0
|
||||
tinyexec:
|
||||
specifier: 'catalog:'
|
||||
version: 1.1.1
|
||||
version: 1.2.4
|
||||
vite:
|
||||
specifier: ^7.0.0 || ^8.0.0-beta.0
|
||||
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)
|
||||
@@ -4181,6 +4181,9 @@ importers:
|
||||
idb-keyval:
|
||||
specifier: 'catalog:'
|
||||
version: 6.2.2
|
||||
jszip:
|
||||
specifier: 'catalog:'
|
||||
version: 3.10.1
|
||||
kokoro-js:
|
||||
specifier: 'catalog:'
|
||||
version: 1.2.1
|
||||
@@ -13539,9 +13542,6 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: ^9.5.0 || ^10.0.0
|
||||
|
||||
eslint-flat-config-utils@3.1.0:
|
||||
resolution: {integrity: sha512-lM+Nwo2CzpuTS/RASQExlEIwk/BQoKqJWX6VbDlLMb/mveqvt9MMrRXFEkG3bseuK6g8noKZLeX82epkILtv4A==}
|
||||
|
||||
eslint-flat-config-utils@3.2.0:
|
||||
resolution: {integrity: sha512-PHgo1X5uqIorJONLVD9BIaOSdoYFD3z/AeJljdqDPlWVRpeCYkDbK9k0AXoYVqqNJr6FEYIEr5Rm2TSktLQcHw==}
|
||||
|
||||
@@ -13630,12 +13630,6 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: ^8.45.0 || ^9.0.0 || ^10.0.0
|
||||
|
||||
eslint-plugin-perfectionist@5.8.0:
|
||||
resolution: {integrity: sha512-k8uIptWIxkUclonCFGyDzgYs9NI+Qh0a7cUXS3L7IYZDEsjXuimFBVbxXPQQngWqMiaxJRwbtYB4smMGMqF+cw==}
|
||||
engines: {node: ^20.0.0 || >=22.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.45.0 || ^9.0.0 || ^10.0.0
|
||||
|
||||
eslint-plugin-pnpm@1.6.0:
|
||||
resolution: {integrity: sha512-dxmt9r3zvPaft6IugS4i0k16xag3fTbOvm/road5uV9Y8qUCQT0xzheSh3gMlYAlC6vXRpfArBDsTZ7H7JKCbg==}
|
||||
peerDependencies:
|
||||
@@ -17751,10 +17745,6 @@ packages:
|
||||
tinycolor2@1.6.0:
|
||||
resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
|
||||
|
||||
tinyexec@1.1.1:
|
||||
resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
tinyexec@1.2.4:
|
||||
resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==}
|
||||
engines: {node: '>=18'}
|
||||
@@ -19300,7 +19290,7 @@ snapshots:
|
||||
cac: 7.0.0
|
||||
eslint: 10.2.1(jiti@2.6.1)
|
||||
eslint-config-flat-gitignore: 2.3.0(eslint@10.2.1(jiti@2.6.1))
|
||||
eslint-flat-config-utils: 3.1.0
|
||||
eslint-flat-config-utils: 3.2.0
|
||||
eslint-merge-processors: 2.0.0(eslint@10.2.1(jiti@2.6.1))
|
||||
eslint-plugin-antfu: 3.2.2(eslint@10.2.1(jiti@2.6.1))
|
||||
eslint-plugin-command: 3.5.2(@typescript-eslint/rule-tester@8.56.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.63.0(typescript@5.9.3))(@typescript-eslint/utils@8.63.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))
|
||||
@@ -19309,7 +19299,7 @@ snapshots:
|
||||
eslint-plugin-jsonc: 3.1.2(eslint@10.2.1(jiti@2.6.1))
|
||||
eslint-plugin-n: 17.24.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-no-only-tests: 3.3.0
|
||||
eslint-plugin-perfectionist: 5.8.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-perfectionist: 5.10.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint-plugin-pnpm: 1.6.0(eslint@10.2.1(jiti@2.6.1))
|
||||
eslint-plugin-regexp: 3.1.0(eslint@10.2.1(jiti@2.6.1))
|
||||
eslint-plugin-toml: 1.3.1(eslint@10.2.1(jiti@2.6.1))
|
||||
@@ -19340,13 +19330,13 @@ snapshots:
|
||||
'@antfu/install-pkg@1.1.0':
|
||||
dependencies:
|
||||
package-manager-detector: 1.6.0
|
||||
tinyexec: 1.1.1
|
||||
tinyexec: 1.2.4
|
||||
|
||||
'@antfu/ni@30.0.0':
|
||||
dependencies:
|
||||
fzf: 0.5.2
|
||||
package-manager-detector: 1.6.0
|
||||
tinyexec: 1.1.1
|
||||
tinyexec: 1.2.4
|
||||
tinyglobby: 0.2.16
|
||||
|
||||
'@anthropic-ai/claude-code-darwin-arm64@2.1.114':
|
||||
@@ -20730,9 +20720,9 @@ snapshots:
|
||||
dependencies:
|
||||
electron: 41.2.1
|
||||
|
||||
'@electron-toolkit/tsconfig@2.0.0(@types/node@25.6.0)':
|
||||
'@electron-toolkit/tsconfig@2.0.0(@types/node@24.12.2)':
|
||||
dependencies:
|
||||
'@types/node': 25.6.0
|
||||
'@types/node': 24.12.2
|
||||
|
||||
'@electron-toolkit/utils@4.0.0(electron@41.2.1)':
|
||||
dependencies:
|
||||
@@ -20864,7 +20854,7 @@ snapshots:
|
||||
'@es-joy/jsdoccomment@0.84.0':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.8
|
||||
'@typescript-eslint/types': 8.58.1
|
||||
'@typescript-eslint/types': 8.63.0
|
||||
comment-parser: 1.4.5
|
||||
esquery: 1.7.0
|
||||
jsdoc-type-pratt-parser: 7.1.1
|
||||
@@ -20872,7 +20862,7 @@ snapshots:
|
||||
'@es-joy/jsdoccomment@0.86.0':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.8
|
||||
'@typescript-eslint/types': 8.58.1
|
||||
'@typescript-eslint/types': 8.63.0
|
||||
comment-parser: 1.4.6
|
||||
esquery: 1.7.0
|
||||
jsdoc-type-pratt-parser: 7.2.0
|
||||
@@ -21624,8 +21614,8 @@ snapshots:
|
||||
'@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@2.80.0)
|
||||
'@typescript-eslint/scope-manager': 8.58.1
|
||||
'@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.63.0
|
||||
'@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3)
|
||||
debug: 4.4.3(supports-color@10.2.2)
|
||||
fast-glob: 3.3.3
|
||||
pathe: 2.0.3
|
||||
@@ -21642,6 +21632,31 @@ 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.63.0
|
||||
'@typescript-eslint/typescript-estree': 8.63.0(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))
|
||||
@@ -21649,8 +21664,8 @@ snapshots:
|
||||
'@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)
|
||||
'@typescript-eslint/scope-manager': 8.63.0
|
||||
'@typescript-eslint/typescript-estree': 8.63.0(typescript@5.9.3)
|
||||
debug: 4.4.3(supports-color@10.2.2)
|
||||
fast-glob: 3.3.3
|
||||
pathe: 2.0.3
|
||||
@@ -23646,11 +23661,35 @@ 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
|
||||
@@ -24147,7 +24186,7 @@ snapshots:
|
||||
'@stylistic/eslint-plugin@5.10.0(eslint@10.2.1(jiti@2.6.1))':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.9.1(eslint@10.2.1(jiti@2.6.1))
|
||||
'@typescript-eslint/types': 8.58.1
|
||||
'@typescript-eslint/types': 8.63.0
|
||||
eslint: 10.2.1(jiti@2.6.1)
|
||||
eslint-visitor-keys: 4.2.1
|
||||
espree: 10.4.0
|
||||
@@ -24718,8 +24757,8 @@ snapshots:
|
||||
|
||||
'@typescript-eslint/project-service@8.51.0(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.58.1
|
||||
'@typescript-eslint/tsconfig-utils': 8.63.0(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.63.0
|
||||
debug: 4.4.3(supports-color@10.2.2)
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
@@ -24727,7 +24766,7 @@ snapshots:
|
||||
|
||||
'@typescript-eslint/project-service@8.56.1(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3)
|
||||
'@typescript-eslint/tsconfig-utils': 8.63.0(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.63.0
|
||||
debug: 4.4.3(supports-color@10.2.2)
|
||||
typescript: 5.9.3
|
||||
@@ -24736,8 +24775,8 @@ snapshots:
|
||||
|
||||
'@typescript-eslint/project-service@8.58.1(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.58.1
|
||||
'@typescript-eslint/tsconfig-utils': 8.63.0(typescript@5.9.3)
|
||||
'@typescript-eslint/types': 8.63.0
|
||||
debug: 4.4.3(supports-color@10.2.2)
|
||||
typescript: 5.9.3
|
||||
transitivePeerDependencies:
|
||||
@@ -24999,7 +25038,7 @@ snapshots:
|
||||
'@unocss/eslint-plugin@66.6.8(@typescript-eslint/types@8.63.0)(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.63.0
|
||||
'@typescript-eslint/utils': 8.58.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/utils': 8.63.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@unocss/config': 66.6.8
|
||||
'@unocss/core': 66.6.8
|
||||
'@unocss/rule-utils': 66.6.8
|
||||
@@ -25248,6 +25287,12 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- typescript
|
||||
|
||||
'@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
|
||||
@@ -25334,8 +25379,8 @@ snapshots:
|
||||
|
||||
'@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:
|
||||
'@typescript-eslint/scope-manager': 8.58.1
|
||||
'@typescript-eslint/utils': 8.58.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
'@typescript-eslint/scope-manager': 8.63.0
|
||||
'@typescript-eslint/utils': 8.63.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 10.2.1(jiti@2.6.1)
|
||||
optionalDependencies:
|
||||
'@typescript-eslint/eslint-plugin': 8.58.1(@typescript-eslint/parser@8.51.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3))(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
@@ -25525,6 +25570,15 @@ 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
|
||||
@@ -25947,7 +26001,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@huggingface/transformers': 3.8.1
|
||||
'@moeru/eventa': 0.3.0(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))
|
||||
'@moeru/std': 0.1.0-beta.18
|
||||
'@moeru/std': 0.1.0-beta.19
|
||||
'@xsai-ext/shared-providers': 0.4.0-beta.12
|
||||
'@xsai-transformers/shared': 0.1.0(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))
|
||||
'@xsai/embed': 0.4.4
|
||||
@@ -25961,7 +26015,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@huggingface/transformers': 3.8.1
|
||||
'@moeru/eventa': 0.3.0(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))
|
||||
'@moeru/std': 0.1.0-beta.18
|
||||
'@moeru/std': 0.1.0-beta.19
|
||||
'@xsai-ext/shared-providers': 0.4.0-beta.12
|
||||
'@xsai/shared': 0.4.4
|
||||
onnxruntime-common: 1.24.3
|
||||
@@ -25974,7 +26028,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@huggingface/transformers': 3.8.1
|
||||
'@moeru/eventa': 0.3.0(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))
|
||||
'@moeru/std': 0.1.0-beta.18
|
||||
'@moeru/std': 0.1.0-beta.19
|
||||
'@xsai-ext/shared-providers': 0.4.0-beta.12
|
||||
'@xsai-transformers/shared': 0.1.0(electron@41.2.1)(h3@2.0.1-rc.20(crossws@0.4.5(srvx@0.11.15)))
|
||||
'@xsai/embed': 0.4.4
|
||||
@@ -26613,7 +26667,7 @@ snapshots:
|
||||
jsonc-parser: 3.3.1
|
||||
package-manager-detector: 1.6.0
|
||||
semver: 7.7.4
|
||||
tinyexec: 1.1.1
|
||||
tinyexec: 1.2.4
|
||||
tinyglobby: 0.2.16
|
||||
unconfig: 7.5.0
|
||||
yaml: 2.8.3
|
||||
@@ -27602,7 +27656,7 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
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)):
|
||||
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)):
|
||||
dependencies:
|
||||
'@babel/core': 7.29.0
|
||||
'@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0)
|
||||
@@ -27610,7 +27664,7 @@ snapshots:
|
||||
esbuild: 0.25.12
|
||||
magic-string: 0.30.21
|
||||
picocolors: 1.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)
|
||||
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
|
||||
|
||||
@@ -27914,11 +27968,6 @@ snapshots:
|
||||
'@eslint/compat': 2.0.5(eslint@10.2.1(jiti@2.6.1))
|
||||
eslint: 10.2.1(jiti@2.6.1)
|
||||
|
||||
eslint-flat-config-utils@3.1.0:
|
||||
dependencies:
|
||||
'@eslint/config-helpers': 0.5.5
|
||||
pathe: 2.0.3
|
||||
|
||||
eslint-flat-config-utils@3.2.0:
|
||||
dependencies:
|
||||
'@eslint/config-helpers': 0.5.5
|
||||
@@ -28034,15 +28083,6 @@ snapshots:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
eslint-plugin-perfectionist@5.8.0(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3):
|
||||
dependencies:
|
||||
'@typescript-eslint/utils': 8.58.1(eslint@10.2.1(jiti@2.6.1))(typescript@5.9.3)
|
||||
eslint: 10.2.1(jiti@2.6.1)
|
||||
natural-orderby: 5.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
eslint-plugin-pnpm@1.6.0(eslint@10.2.1(jiti@2.6.1)):
|
||||
dependencies:
|
||||
empathic: 2.0.0
|
||||
@@ -31040,7 +31080,7 @@ snapshots:
|
||||
dependencies:
|
||||
citty: 0.2.1
|
||||
pathe: 2.0.3
|
||||
tinyexec: 1.1.1
|
||||
tinyexec: 1.2.4
|
||||
|
||||
oauth-sign@0.9.0: {}
|
||||
|
||||
@@ -33123,7 +33163,7 @@ snapshots:
|
||||
pathe: 2.0.3
|
||||
pnpm-workspace-yaml: 1.6.0
|
||||
restore-cursor: 5.1.0
|
||||
tinyexec: 1.1.1
|
||||
tinyexec: 1.2.4
|
||||
tinyglobby: 0.2.16
|
||||
unconfig: 7.5.0
|
||||
yaml: 2.8.3
|
||||
@@ -33245,8 +33285,6 @@ snapshots:
|
||||
|
||||
tinycolor2@1.6.0: {}
|
||||
|
||||
tinyexec@1.1.1: {}
|
||||
|
||||
tinyexec@1.2.4: {}
|
||||
|
||||
tinyglobby@0.2.16:
|
||||
@@ -33357,7 +33395,7 @@ snapshots:
|
||||
rolldown: 1.0.0-rc.16
|
||||
rolldown-plugin-dts: 0.23.2(oxc-resolver@11.19.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2))(rolldown@1.0.0-rc.16)(typescript@5.9.3)(vue-tsc@3.2.6(typescript@5.9.3))
|
||||
semver: 7.7.4
|
||||
tinyexec: 1.1.1
|
||||
tinyexec: 1.2.4
|
||||
tinyglobby: 0.2.16
|
||||
tree-kill: 1.2.2
|
||||
unconfig-core: 7.5.0
|
||||
@@ -33617,11 +33655,6 @@ 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@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:
|
||||
'@unocss/cli': 66.6.8
|
||||
@@ -33688,6 +33721,14 @@ 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
|
||||
@@ -33709,6 +33750,19 @@ 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
|
||||
@@ -33802,6 +33856,17 @@ snapshots:
|
||||
rollup: 2.80.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)
|
||||
|
||||
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
|
||||
@@ -34029,12 +34094,22 @@ 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)
|
||||
@@ -34080,6 +34155,21 @@ 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
|
||||
@@ -34111,6 +34201,13 @@ 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)
|
||||
@@ -34129,6 +34226,20 @@ 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))
|
||||
@@ -34143,6 +34254,21 @@ 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
|
||||
@@ -34158,6 +34284,16 @@ 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)
|
||||
@@ -34299,7 +34435,7 @@ snapshots:
|
||||
picomatch: 4.0.4
|
||||
std-env: 4.1.0
|
||||
tinybench: 2.9.0
|
||||
tinyexec: 1.1.1
|
||||
tinyexec: 1.2.4
|
||||
tinyglobby: 0.2.16
|
||||
tinyrainbow: 3.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)
|
||||
@@ -34330,7 +34466,7 @@ snapshots:
|
||||
picomatch: 4.0.4
|
||||
std-env: 4.1.0
|
||||
tinybench: 2.9.0
|
||||
tinyexec: 1.1.1
|
||||
tinyexec: 1.2.4
|
||||
tinyglobby: 0.2.16
|
||||
tinyrainbow: 3.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)
|
||||
@@ -34425,6 +34561,54 @@ 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))
|
||||
|
||||
Reference in New Issue
Block a user