diff --git a/apps/stage-web/src/pages/devtools/web-haptics.vue b/apps/stage-web/src/pages/devtools/web-haptics.vue new file mode 100644 index 000000000..4dd4b4bf5 --- /dev/null +++ b/apps/stage-web/src/pages/devtools/web-haptics.vue @@ -0,0 +1,77 @@ + + + + + +meta: + layout: settings + title: Web Haptics + subtitleKey: tamagotchi.settings.devtools.title + diff --git a/apps/stage-web/src/pages/settings/system/developer.vue b/apps/stage-web/src/pages/settings/system/developer.vue index 6a005213c..fb6a799b3 100644 --- a/apps/stage-web/src/pages/settings/system/developer.vue +++ b/apps/stage-web/src/pages/settings/system/developer.vue @@ -74,6 +74,12 @@ const menu = computed(() => [ icon: 'i-solar:transfer-horizontal-bold-duotone', to: '/devtools/websocket-inspector', }, + { + title: 'Web Haptics', + description: 'Trigger built-in haptic presets and custom pulse patterns', + icon: 'i-solar:bolt-circle-bold-duotone', + to: '/devtools/web-haptics', + }, { title: 'Plugin Host Debug', description: 'Inspect plugin host registry and capability state (desktop runtime)', diff --git a/packages/core-agent/package.json b/packages/core-agent/package.json index bc5fb8c83..4d381829c 100644 --- a/packages/core-agent/package.json +++ b/packages/core-agent/package.json @@ -34,18 +34,24 @@ ], "scripts": { "build": "tsdown", + "eval:run": "vieval run --config ./vieval.config.ts", "typecheck": "tsc --noEmit" }, "dependencies": { "@moeru/std": "catalog:", + "@proj-airi/pipelines-audio": "workspace:^", "@proj-airi/server-sdk": "workspace:^", "@proj-airi/server-shared": "workspace:^", "@xsai-ext/providers": "catalog:", + "@xsai/generate-speech": "catalog:", + "@xsai/generate-text": "catalog:", "@xsai/model": "catalog:", + "@xsai/shared": "catalog:", "@xsai/shared-chat": "catalog:", "@xsai/stream-text": "catalog:", "@xsai/tool": "catalog:", "nanoid": "^5.1.9", + "vieval": "catalog:", "xsschema": "catalog:", "zod": "^4.3.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 274bceaa3..6a9c687ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2414,6 +2414,9 @@ importers: '@moeru/std': specifier: 'catalog:' version: 0.1.0-beta.17 + '@proj-airi/pipelines-audio': + specifier: workspace:^ + version: link:../pipelines-audio '@proj-airi/server-sdk': specifier: workspace:^ version: link:../server-sdk @@ -2423,9 +2426,18 @@ importers: '@xsai-ext/providers': specifier: 'catalog:' version: 0.5.0-beta.2 + '@xsai/generate-speech': + specifier: 'catalog:' + version: 0.5.0-beta.2 + '@xsai/generate-text': + specifier: 'catalog:' + version: 0.5.0-beta.2(patch_hash=306bfb723913596b334140f0d6fa48063f336e3b44024efc1d72bf60d54b15e6) '@xsai/model': specifier: 'catalog:' version: 0.5.0-beta.2 + '@xsai/shared': + specifier: 'catalog:' + version: 0.5.0-beta.2 '@xsai/shared-chat': specifier: 'catalog:' version: 0.5.0-beta.2(patch_hash=26f2819b987245ec85f216b821ddf73aeb28fd7e611238a2d37250e42f838a01) @@ -2438,6 +2450,9 @@ importers: nanoid: specifier: ^5.1.9 version: 5.1.9 + vieval: + specifier: 'catalog:' + version: 0.0.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.4)(@vitest/coverage-v8@4.1.4)(chokidar@5.0.0)(dotenv@17.4.2)(esbuild@0.27.2)(giget@2.0.0)(jiti@2.6.1)(jsdom@27.4.0(bufferutil@4.1.0)(canvas@3.2.3)(utf-8-validate@5.0.10))(less@4.6.4)(magicast@0.5.2)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) xsschema: specifier: 'catalog:' version: 0.5.0-beta.2(@valibot/to-json-schema@1.0.0-rc.0(valibot@1.3.1(typescript@5.9.3)))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)