Files
moeka-project/vitest.config.ts
T
Garfield Lee 59a064ea80 refactor(stage-ui): extract provider-inference package for runtime-neutral definitions (#2444)
## Summary

Extract runtime-neutral provider definitions from `@proj-airi/stage-ui`
into a new `@proj-airi/provider-inference` package that runs in both
Node.js and browser without Vue/Pinia dependencies.

## What changed

- **New package** `packages/provider-inference/` — owns
`ProviderDefinition`, `ProviderRegistry`, validators, and all provider
modules (cloud + local)
- **Provider modules relocated** — ~45 providers moved from
`stage-ui/src/libs/providers/providers/` to
`provider-inference/src/providers/cloud/` and
`provider-inference/src/providers/local/`
- **Type decoupling** — `ProviderContext.t` changed from
`ComposerTranslation` (Vue) to generic `ProviderTranslator`, removing
the Vue dependency from core types
- **stage-ui types slimmed** — `types.ts` now re-exports from
`provider-inference` and only adds the Vue-specific `ProviderViews`
extension
- **validators/run.ts** — becomes a pass-through re-export
- **Registry** — portable `createProviderRegistry()` with deterministic
ordering and duplicate-id detection

## Verification

```bash
pnpm -F @proj-airi/provider-inference typecheck
pnpm -F @proj-airi/provider-inference test:node
pnpm -F @proj-airi/provider-inference test:browser
pnpm -F @proj-airi/provider-inference build
pnpm -F @proj-airi/stage-ui typecheck
pnpm -F @proj-airi/stage-web typecheck
pnpm -F @proj-airi/stage-tamagotchi typecheck
pnpm lint
```

## Why

Provider definitions were tightly coupled to Vue (`ComposerTranslation`,
`Component`), preventing reuse in non-Vue runtimes (Node.js services,
tests, future Electron backend). This extraction creates a clean
boundary: runtime-neutral definitions live in `provider-inference`,
while Vue/Pinia-specific concerns stay in `stage-ui`.
2026-09-02 19:35:25 +08:00

31 lines
883 B
TypeScript

import { defineConfig } from 'vitest/config'
export default defineConfig({
test: {
projects: [
'server/apps/auth',
'server/apps/api',
'apps/ui-server-auth',
'apps/stage-tamagotchi/vitest.node.config.ts',
'packages/cap-vite',
'packages/ccc',
'packages/core-agent',
'packages/i18n',
'packages/input-gamepad',
'packages/input-gamepad-vueuse',
'packages/input-playstation-dualsense-5',
'packages/model-driver-lipsync',
'packages/better-ws',
'packages/plugin-sdk',
'packages/plugin-sdk-tamagotchi',
'packages/provider-inference',
'packages/scenarios-stage-tamagotchi-browser',
'packages/scenarios-stage-tamagotchi-electron',
'packages/server-runtime',
'packages/server-sdk',
'packages/stage-shared',
'packages/vitest-plugin-fakemic',
],
},
})