From f88827945f4558ffd0d6d3ea78b12b3f525072c3 Mon Sep 17 00:00:00 2001 From: Acbox Date: Tue, 3 Mar 2026 17:50:21 +0800 Subject: [PATCH] feat(web): add tool message ui for built-in tools --- packages/web/package.json | 1 + .../web/src/components/file-manager/index.vue | 16 ++ .../src/composables/useShikiHighlighter.ts | 94 ++++++++++++ packages/web/src/i18n/locales/en.json | 8 + packages/web/src/i18n/locales/zh.json | 8 + .../src/pages/chat/components/chat-area.vue | 17 ++- .../pages/chat/components/tool-call-block.vue | 123 ++++++--------- .../pages/chat/components/tool-call-edit.vue | 125 +++++++++++++++ .../pages/chat/components/tool-call-exec.vue | 143 ++++++++++++++++++ .../chat/components/tool-call-generic.vue | 84 ++++++++++ .../pages/chat/components/tool-call-list.vue | 58 +++++++ .../pages/chat/components/tool-call-read.vue | 58 +++++++ .../chat/components/tool-call-schedule.vue | 88 +++++++++++ .../chat/components/tool-call-web-search.vue | 107 +++++++++++++ .../pages/chat/components/tool-call-write.vue | 102 +++++++++++++ .../composables/useFileManagerProvider.ts | 5 + packages/web/src/style.css | 7 +- pnpm-lock.yaml | 43 ++++++ 18 files changed, 1009 insertions(+), 78 deletions(-) create mode 100644 packages/web/src/composables/useShikiHighlighter.ts create mode 100644 packages/web/src/pages/chat/components/tool-call-edit.vue create mode 100644 packages/web/src/pages/chat/components/tool-call-exec.vue create mode 100644 packages/web/src/pages/chat/components/tool-call-generic.vue create mode 100644 packages/web/src/pages/chat/components/tool-call-list.vue create mode 100644 packages/web/src/pages/chat/components/tool-call-read.vue create mode 100644 packages/web/src/pages/chat/components/tool-call-schedule.vue create mode 100644 packages/web/src/pages/chat/components/tool-call-web-search.vue create mode 100644 packages/web/src/pages/chat/components/tool-call-write.vue create mode 100644 packages/web/src/pages/chat/composables/useFileManagerProvider.ts diff --git a/packages/web/package.json b/packages/web/package.json index c1311fcd..93daa62c 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -17,6 +17,7 @@ "@memoh/sdk": "workspace:*", "@memoh/ui": "workspace:*", "@pinia/colada": "^0.21.1", + "@shikijs/transformers": "^4.0.1", "@tailwindcss/vite": "^4.1.18", "@tanstack/vue-table": "^8.21.3", "@vee-validate/zod": "^4.15.1", diff --git a/packages/web/src/components/file-manager/index.vue b/packages/web/src/components/file-manager/index.vue index bdfa127b..1a94e20e 100644 --- a/packages/web/src/components/file-manager/index.vue +++ b/packages/web/src/components/file-manager/index.vue @@ -253,6 +253,22 @@ watch(() => props.botId, () => { onMounted(() => { restoreFileFromUrl() }) + +function navigateTo(dirPath: string) { + openFile.value = null + syncFileToUrl(null) + void loadDirectory(dirPath) +} + +function openFileByPath(filePath: string) { + const name = filePath.split('/').pop() ?? '' + const dir = filePath.substring(0, filePath.lastIndexOf('/')) || '/' + openFile.value = { path: filePath, name, isDir: false } + syncFileToUrl(filePath) + void loadDirectory(dir) +} + +defineExpose({ navigateTo, openFileByPath })