From 7dcf5d907068446eacafb44f4d3cd6d45aefbfd6 Mon Sep 17 00:00:00 2001 From: digua Date: Sun, 26 Jul 2026 15:28:14 +0800 Subject: [PATCH] feat(web): add Web WASM AI chat --- apps/web-wasm/src/components/ai/WebAIChat.vue | 551 ++++++++++++++++++ .../components/ai/WebAIModelSetupModal.vue | 164 ++++++ .../src/components/ai/message-mapper.test.ts | 27 + .../src/components/ai/message-mapper.ts | 50 ++ apps/web-wasm/src/pages/SessionDetailPage.vue | 20 +- eslint.config.mjs | 6 +- package.json | 21 +- packages/ai-runtime/package.json | 19 + .../src/context-compression.test.ts | 37 ++ .../ai-runtime/src/context-compression.ts | 94 +++ packages/ai-runtime/src/default-assistant.ts | 71 +++ packages/ai-runtime/src/errors.ts | 26 + packages/ai-runtime/src/index.ts | 6 + packages/ai-runtime/src/runtime.test.ts | 209 +++++++ packages/ai-runtime/src/runtime.ts | 205 +++++++ packages/ai-runtime/src/token-budget.ts | 32 + packages/ai-runtime/src/types.ts | 144 +++++ .../tools/src/definitions/search-segments.ts | 68 +++ packages/tools/src/index.ts | 1 + packages/tools/src/registry.ts | 2 + packages/web-ai-runtime/package.json | 18 + packages/web-ai-runtime/src/errors.test.ts | 14 + packages/web-ai-runtime/src/errors.ts | 41 ++ packages/web-ai-runtime/src/index.ts | 6 + .../src/model-config-store.test.ts | 64 ++ .../web-ai-runtime/src/model-config-store.ts | 135 +++++ .../web-ai-runtime/src/provider-factory.ts | 26 + packages/web-ai-runtime/src/rpc-adapters.ts | 99 ++++ packages/web-ai-runtime/src/runtime.test.ts | 173 ++++++ packages/web-ai-runtime/src/runtime.ts | 172 ++++++ packages/web-ai-runtime/src/types.ts | 67 +++ packages/web-runtime/package.json | 2 + packages/web-runtime/scripts/bench-import.mts | 6 +- .../src/ai/browser-ai-runtime.test.ts | 148 +++++ .../src/ai/conversation-repository.ts | 244 ++++++++ packages/web-runtime/src/ai/privacy.ts | 32 + packages/web-runtime/src/ai/tool-runtime.ts | 96 +++ .../src/import/session-runtime.test.ts | 6 +- packages/web-runtime/src/index.ts | 3 + packages/web-runtime/src/rpc/protocol.ts | 67 +++ .../src/sqlite/database-runtime.ts | 4 +- .../src/storage/workspace-database.ts | 2 +- .../web-runtime/src/worker/controller.test.ts | 6 +- packages/web-runtime/src/worker/controller.ts | 79 ++- pnpm-lock.yaml | 264 ++++++++- src/i18n/locales/en-US/index.ts | 2 + src/i18n/locales/en-US/webAI.json | 51 ++ src/i18n/locales/ja-JP/index.ts | 2 + src/i18n/locales/ja-JP/webAI.json | 51 ++ src/i18n/locales/zh-CN/index.ts | 2 + src/i18n/locales/zh-CN/webAI.json | 51 ++ src/i18n/locales/zh-TW/index.ts | 2 + src/i18n/locales/zh-TW/webAI.json | 51 ++ src/services/browser-runtime/register.test.ts | 6 +- src/services/browser-runtime/register.ts | 2 + src/services/browser-runtime/service.ts | 5 + tests/web-ai-sdk-spike/README.md | 58 ++ tests/web-ai-sdk-spike/baseline.html | 12 + tests/web-ai-sdk-spike/index.html | 76 +++ tests/web-ai-sdk-spike/src/baseline.ts | 1 + tests/web-ai-sdk-spike/src/main.ts | 135 +++++ tests/web-ai-sdk-spike/src/runtime.ts | 225 +++++++ tests/web-ai-sdk-spike/src/style.css | 193 ++++++ tests/web-ai-sdk-spike/tsconfig.json | 5 + tests/web-ai-sdk-spike/vite.config.mts | 25 + 65 files changed, 4455 insertions(+), 27 deletions(-) create mode 100644 apps/web-wasm/src/components/ai/WebAIChat.vue create mode 100644 apps/web-wasm/src/components/ai/WebAIModelSetupModal.vue create mode 100644 apps/web-wasm/src/components/ai/message-mapper.test.ts create mode 100644 apps/web-wasm/src/components/ai/message-mapper.ts create mode 100644 packages/ai-runtime/package.json create mode 100644 packages/ai-runtime/src/context-compression.test.ts create mode 100644 packages/ai-runtime/src/context-compression.ts create mode 100644 packages/ai-runtime/src/default-assistant.ts create mode 100644 packages/ai-runtime/src/errors.ts create mode 100644 packages/ai-runtime/src/index.ts create mode 100644 packages/ai-runtime/src/runtime.test.ts create mode 100644 packages/ai-runtime/src/runtime.ts create mode 100644 packages/ai-runtime/src/token-budget.ts create mode 100644 packages/ai-runtime/src/types.ts create mode 100644 packages/tools/src/definitions/search-segments.ts create mode 100644 packages/web-ai-runtime/package.json create mode 100644 packages/web-ai-runtime/src/errors.test.ts create mode 100644 packages/web-ai-runtime/src/errors.ts create mode 100644 packages/web-ai-runtime/src/index.ts create mode 100644 packages/web-ai-runtime/src/model-config-store.test.ts create mode 100644 packages/web-ai-runtime/src/model-config-store.ts create mode 100644 packages/web-ai-runtime/src/provider-factory.ts create mode 100644 packages/web-ai-runtime/src/rpc-adapters.ts create mode 100644 packages/web-ai-runtime/src/runtime.test.ts create mode 100644 packages/web-ai-runtime/src/runtime.ts create mode 100644 packages/web-ai-runtime/src/types.ts create mode 100644 packages/web-runtime/src/ai/browser-ai-runtime.test.ts create mode 100644 packages/web-runtime/src/ai/conversation-repository.ts create mode 100644 packages/web-runtime/src/ai/privacy.ts create mode 100644 packages/web-runtime/src/ai/tool-runtime.ts create mode 100644 src/i18n/locales/en-US/webAI.json create mode 100644 src/i18n/locales/ja-JP/webAI.json create mode 100644 src/i18n/locales/zh-CN/webAI.json create mode 100644 src/i18n/locales/zh-TW/webAI.json create mode 100644 tests/web-ai-sdk-spike/README.md create mode 100644 tests/web-ai-sdk-spike/baseline.html create mode 100644 tests/web-ai-sdk-spike/index.html create mode 100644 tests/web-ai-sdk-spike/src/baseline.ts create mode 100644 tests/web-ai-sdk-spike/src/main.ts create mode 100644 tests/web-ai-sdk-spike/src/runtime.ts create mode 100644 tests/web-ai-sdk-spike/src/style.css create mode 100644 tests/web-ai-sdk-spike/tsconfig.json create mode 100644 tests/web-ai-sdk-spike/vite.config.mts diff --git a/apps/web-wasm/src/components/ai/WebAIChat.vue b/apps/web-wasm/src/components/ai/WebAIChat.vue new file mode 100644 index 00000000..d340fcbc --- /dev/null +++ b/apps/web-wasm/src/components/ai/WebAIChat.vue @@ -0,0 +1,551 @@ + + +