diff --git a/eslint.config.mjs b/eslint.config.mjs index 732ab0fd..8f9c5b64 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -6,7 +6,7 @@ import vue from 'eslint-plugin-vue' export default [ ...tseslint.configs.recommended, ...vue.configs['flat/recommended'], - { ignores: ['**/node_modules/**', '**/dist/**'] }, + { ignores: ['**/node_modules/**', '**/dist/**', 'packages/sdk/src/**'] }, { files: ['packages/**/*.{js,jsx,ts,tsx}', 'agent/**/*.{js,jsx,ts,tsx}'], languageOptions: { diff --git a/openapi-ts.config.ts b/openapi-ts.config.ts index 2f674795..836c0519 100644 --- a/openapi-ts.config.ts +++ b/openapi-ts.config.ts @@ -16,5 +16,5 @@ export default defineConfig({ }, '@hey-api/client-fetch', '@pinia/colada', - ] -}); \ No newline at end of file + ], +}) \ No newline at end of file diff --git a/packages/cli/package.json b/packages/cli/package.json index f2d9894f..986bf916 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -18,7 +18,6 @@ }, "dependencies": { "@elysiajs/eden": "^1.4.6", - "@memoh/shared": "workspace:*", "elysia": "latest", "commander": "^12.1.0", "chalk": "^5.4.1", diff --git a/packages/shared/README.md b/packages/shared/README.md deleted file mode 100644 index 6554adbe..00000000 --- a/packages/shared/README.md +++ /dev/null @@ -1 +0,0 @@ -# @memoh/shared diff --git a/packages/shared/package.json b/packages/shared/package.json deleted file mode 100644 index 6e841596..00000000 --- a/packages/shared/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@memoh/shared", - "version": "1.0.0", - "description": "", - "exports": { - ".": "./src/index.ts" - }, - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "packageManager": "pnpm@10.27.0" -} diff --git a/packages/shared/src/chatInfo.ts b/packages/shared/src/chatInfo.ts deleted file mode 100644 index 3a11d13b..00000000 --- a/packages/shared/src/chatInfo.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface robot{ - description: string - time: Date, - id: string | number, - type: string, - action: 'robot', - state:'thinking'|'generate'|'complete' -} - -export interface user{ - description: string, - time: Date, - id: number | string, - action:'user' -} \ No newline at end of file diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts deleted file mode 100644 index f23cc870..00000000 --- a/packages/shared/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './model' -export * from './schedule' -export * from './platform' -export * from './mcp' -export * from './chatInfo' diff --git a/packages/shared/src/mcp.ts b/packages/shared/src/mcp.ts deleted file mode 100644 index da2993b1..00000000 --- a/packages/shared/src/mcp.ts +++ /dev/null @@ -1,48 +0,0 @@ -export interface BaseMCPConnection { - type: string - name: string -} - -export interface StdioMCPConnection extends BaseMCPConnection { - type: 'stdio' - command: string - args: string[] - env: Record - cwd: string -} - -export interface BaseHTTPMCPConnection extends BaseMCPConnection { - url: string - headers: Record -} - -export interface HTTPMCPConnection extends BaseHTTPMCPConnection { - type: 'http' -} - -export interface SSEMCPConnection extends BaseHTTPMCPConnection { - type: 'sse' -} - -export type MCPConnection = - | StdioMCPConnection - | HTTPMCPConnection - | SSEMCPConnection - - -export interface MCPListItem{ - id: string; - type: string; - name: string; - config: { - cwd: string; - env: Record; - args: string[]; - type: string; - command: string; - }; - active: boolean; - user: string; - createdAt: string; - updatedAt: string; -} \ No newline at end of file diff --git a/packages/shared/src/model.ts b/packages/shared/src/model.ts deleted file mode 100644 index 56b0c6fd..00000000 --- a/packages/shared/src/model.ts +++ /dev/null @@ -1,101 +0,0 @@ -export enum ModelClientType { - OPENAI = 'openai', - ANTHROPIC = 'anthropic', - GOOGLE = 'google', -} - -export enum ModelType { - CHAT = 'chat', - EMBEDDING = 'embedding', -} - -export interface BaseModel { - /** - * @description The unique identifier for the model - * @example 'gpt-4o' - */ - modelId: string - - /** - * @description The base URL for the model - * @example 'https://api.openai.com/v1' - */ - baseUrl: string - - /** - * @description The API key for the model - * @example 'sk-1234567890' - */ - apiKey: string - - /** - * @description The client type for the model - * @enum {ModelClientType} - */ - clientType: ModelClientType - - /** - * @description The display name for the model - * @example 'GPT 4o' - */ - name?: string - - /** - * @description The model type - * @enum {ModelType} - * @default {ModelType.CHAT} - */ - type?: ModelType -} - -export interface EmbeddingModel extends BaseModel { - type?: ModelType.EMBEDDING - - /** - * @description The dimensions of the embedding - * @example 1536 - */ - dimensions: number -} - -export interface ChatModel extends BaseModel { - type?: ModelType.CHAT -} - -export type Model = EmbeddingModel | ChatModel - - -// 表格当中model的类型 -export interface ModelList { - apiKey: string, - baseUrl: string, - clientType: 'OpenAI' | 'Anthropic' | 'Google', - modelId: string, - name: string, - type: 'chat' | 'embedding', - id: string, - defaultChatModel: boolean, - defaultEmbeddingModel: boolean, - defaultSummaryModel: boolean -} - -export interface ProviderInfo{ - api_key: string; - base_url: string; - client_type: string; - metadata: Record<'additionalProp1',object>; - name: string; -} - -export interface ModelInfo{ - dimensions:number - is_multimodal:boolean - input?: string[] - llm_provider_id:string - model_id:string - name:string - type: string - enable_as?:string -} - -export const clientType = ['openai', 'anthropic', 'google', 'ollama'] as const diff --git a/packages/shared/src/platform.ts b/packages/shared/src/platform.ts deleted file mode 100644 index bc371c73..00000000 --- a/packages/shared/src/platform.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface Platform { - id: string - name: string - // endpoint: string - config: Record - active: boolean -} \ No newline at end of file diff --git a/packages/shared/src/schedule.ts b/packages/shared/src/schedule.ts deleted file mode 100644 index e08ca076..00000000 --- a/packages/shared/src/schedule.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface Schedule { - id?: string - pattern: string - name: string - description: string - command: string - maxCalls?: number | null -} \ No newline at end of file diff --git a/packages/web/demo.md b/packages/web/demo.md deleted file mode 100644 index 163438bb..00000000 --- a/packages/web/demo.md +++ /dev/null @@ -1,44 +0,0 @@ -# Markdown 语法测试文档 - -## 1. 标题层级 -### 一级标题 -#### 二级标题 -##### 三级标题 -###### 六级标题 - -## 2. 文本格式 -**粗体文本** -*斜体文本* -~~删除线文本~~ -`代码片段` - -> 引用文本 -> 可以多行 - -## 3. 列表 - -### 无序列表 -- 项目一 -- 项目二 - - 子项目 -- 项目三 - -### 有序列表 -1. 第一步 -2. 第二步 -3. 第三步 - -## 4. 链接与图片 -[百度](https://www.baidu.com) -![Markdown Logo](https://markdown-here.com/img/icon256.png) - -## 5. 表格 -| 姓名 | 年龄 | 职业 | -|------|------|------| -| 张三 | 25 | 开发 | -| 李四 | 30 | 测试 | - -## 6. 代码块 -```python -def hello_world(): - print("Hello, World!") \ No newline at end of file diff --git a/packages/web/package.json b/packages/web/package.json index 3fe77d4a..626e4107 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -9,7 +9,6 @@ "start": "vite preview" }, "dependencies": { - "@memoh/shared": "workspace:*", "@memoh/ui": "workspace:*", "@memoh/sdk": "workspace:*", "@pinia/colada": "^0.21.1", diff --git a/packages/web/src/components/add-provider/index.vue b/packages/web/src/components/add-provider/index.vue index e198257c..f304eba9 100644 --- a/packages/web/src/components/add-provider/index.vue +++ b/packages/web/src/components/add-provider/index.vue @@ -89,7 +89,7 @@ @@ -152,7 +152,7 @@ import { import { toTypedSchema } from '@vee-validate/zod' import z from 'zod' import { useForm } from 'vee-validate' -import { clientType } from '@memoh/shared' +import { CLIENT_TYPES } from '@/composables/api/useProviders' import { useCreateProvider } from '@/composables/api/useProviders' const open = defineModel('open') diff --git a/packages/web/src/components/chat-list/robot-chat/index.vue b/packages/web/src/components/chat-list/assistant-chat/index.vue similarity index 60% rename from packages/web/src/components/chat-list/robot-chat/index.vue rename to packages/web/src/components/chat-list/assistant-chat/index.vue index 4f9f35a3..b9339e30 100644 --- a/packages/web/src/components/chat-list/robot-chat/index.vue +++ b/packages/web/src/components/chat-list/assistant-chat/index.vue @@ -4,14 +4,11 @@
- - {{ robotSay.type }} -

- +

@@ -20,14 +17,22 @@ diff --git a/packages/web/src/components/chat-list/index.vue b/packages/web/src/components/chat-list/index.vue index 1f6defc2..03a4ba82 100644 --- a/packages/web/src/components/chat-list/index.vue +++ b/packages/web/src/components/chat-list/index.vue @@ -4,16 +4,16 @@ class="flex flex-col gap-4" > @@ -21,14 +21,15 @@ diff --git a/packages/web/src/components/chat-list/user-chat/index.vue b/packages/web/src/components/chat-list/user-chat/index.vue index e8b24046..8e8a3512 100644 --- a/packages/web/src/components/chat-list/user-chat/index.vue +++ b/packages/web/src/components/chat-list/user-chat/index.vue @@ -4,14 +4,21 @@ class="leading-7 not-first:mt-6 max-w-[90%] ml-auto text-muted-foreground bg-[#F9F9F9] p-4 rounded-xl rounded-tr-none break-all dark:bg-[#1C1917] " > - {{ userSay.description }} + {{ textContent }}

\ No newline at end of file + +const textContent = computed(() => { + const block = props.message.blocks.find(b => b.type === 'text') + return block?.type === 'text' ? block.content : '' +}) + diff --git a/packages/web/src/components/create-mcp/index.vue b/packages/web/src/components/create-mcp/index.vue index e2e72d63..7fe96a2e 100644 --- a/packages/web/src/components/create-mcp/index.vue +++ b/packages/web/src/components/create-mcp/index.vue @@ -260,7 +260,7 @@ import z from 'zod' import { toTypedSchema } from '@vee-validate/zod' import { useForm } from 'vee-validate' import { ref, inject, watch } from 'vue' -import { type MCPListItem as MCPType } from '@memoh/shared' +import { type MCPListItem as MCPType } from '@/composables/api/useMcp' import { useKeyValueTags } from '@/composables/useKeyValueTags' import { useCreateOrUpdateMcp } from '@/composables/api/useMcp' diff --git a/packages/web/src/components/create-model/index.vue b/packages/web/src/components/create-model/index.vue index 3b48ba7c..81ef6681 100644 --- a/packages/web/src/components/create-model/index.vue +++ b/packages/web/src/components/create-model/index.vue @@ -172,7 +172,7 @@ import { useForm } from 'vee-validate' import { inject, computed, watch, nextTick, type Ref, ref } from 'vue' import { toTypedSchema } from '@vee-validate/zod' import z from 'zod' -import { type ModelInfo } from '@memoh/shared' +import { type ModelInfo } from '@/composables/api/useModels' import { useCreateModel, useUpdateModel } from '@/composables/api/useModels' const formSchema = toTypedSchema(z.object({ diff --git a/packages/web/src/composables/api/useMcp.ts b/packages/web/src/composables/api/useMcp.ts index fe09a4ff..5ba29910 100644 --- a/packages/web/src/composables/api/useMcp.ts +++ b/packages/web/src/composables/api/useMcp.ts @@ -1,9 +1,24 @@ import { fetchApi } from '@/utils/request' import { useQuery, useMutation, useQueryCache } from '@pinia/colada' -import { type MCPListItem } from '@memoh/shared' - // ---- Types ---- +export interface MCPListItem { + id: string + type: string + name: string + config: { + cwd: string + env: Record + args: string[] + type: string + command: string + } + active: boolean + user: string + createdAt: string + updatedAt: string +} + export interface McpListResponse { items: MCPListItem[] } diff --git a/packages/web/src/composables/api/useModels.ts b/packages/web/src/composables/api/useModels.ts index 27b459fd..d40f84fd 100644 --- a/packages/web/src/composables/api/useModels.ts +++ b/packages/web/src/composables/api/useModels.ts @@ -1,10 +1,20 @@ import { fetchApi } from '@/utils/request' import { useQuery, useMutation, useQueryCache } from '@pinia/colada' -import { type ModelInfo } from '@memoh/shared' import type { Ref } from 'vue' // ---- Types ---- +export interface ModelInfo { + dimensions: number + is_multimodal: boolean + input?: string[] + llm_provider_id: string + model_id: string + name: string + type: string + enable_as?: string +} + export interface CreateModelRequest { model_id: string type: string diff --git a/packages/web/src/composables/api/useProviders.ts b/packages/web/src/composables/api/useProviders.ts index a1f3f547..63a854f5 100644 --- a/packages/web/src/composables/api/useProviders.ts +++ b/packages/web/src/composables/api/useProviders.ts @@ -1,10 +1,19 @@ import { fetchApi } from '@/utils/request' import { useQuery, useMutation, useQueryCache } from '@pinia/colada' -import { type ProviderInfo } from '@memoh/shared' import type { Ref } from 'vue' // ---- Types ---- +export interface ProviderInfo { + api_key: string + base_url: string + client_type: string + metadata: Record<'additionalProp1', object> + name: string +} + +export const CLIENT_TYPES = ['openai', 'anthropic', 'google', 'ollama'] as const + export type ProviderWithId = ProviderInfo & { id: string } export interface CreateProviderRequest { diff --git a/packages/web/src/pages/bots/components/model-select.vue b/packages/web/src/pages/bots/components/model-select.vue index 2210c6ee..2164390d 100644 --- a/packages/web/src/pages/bots/components/model-select.vue +++ b/packages/web/src/pages/bots/components/model-select.vue @@ -89,7 +89,7 @@ import { ScrollArea, } from '@memoh/ui' import { computed, ref, watch } from 'vue' -import type { ModelInfo } from '@memoh/shared' +import type { ModelInfo } from '@/composables/api/useModels' import type { ProviderWithId } from '@/composables/api/useProviders' const props = defineProps<{ diff --git a/packages/web/src/pages/mcp/index.vue b/packages/web/src/pages/mcp/index.vue index b50d7d17..c5ef896f 100644 --- a/packages/web/src/pages/mcp/index.vue +++ b/packages/web/src/pages/mcp/index.vue @@ -17,7 +17,7 @@ import { Badge, Button } from '@memoh/ui' -import { type MCPListItem as MCPType } from '@memoh/shared' +import { type MCPListItem as MCPType } from '@/composables/api/useMcp' import { i18nRef } from '@/i18n' import { useMcpList, useDeleteMcp } from '@/composables/api/useMcp' diff --git a/packages/web/src/pages/models/components/model-item.vue b/packages/web/src/pages/models/components/model-item.vue index c607f56d..b0077bad 100644 --- a/packages/web/src/pages/models/components/model-item.vue +++ b/packages/web/src/pages/models/components/model-item.vue @@ -43,7 +43,7 @@ import { Button, } from '@memoh/ui' import ConfirmPopover from '@/components/confirm-popover/index.vue' -import { type ModelInfo } from '@memoh/shared' +import { type ModelInfo } from '@/composables/api/useModels' defineProps<{ model: ModelInfo diff --git a/packages/web/src/pages/models/components/model-list.vue b/packages/web/src/pages/models/components/model-list.vue index 9208e6cf..23cbddac 100644 --- a/packages/web/src/pages/models/components/model-list.vue +++ b/packages/web/src/pages/models/components/model-list.vue @@ -51,7 +51,7 @@ import { } from '@memoh/ui' import CreateModel from '@/components/create-model/index.vue' import ModelItem from './model-item.vue' -import { type ModelInfo } from '@memoh/shared' +import { type ModelInfo } from '@/composables/api/useModels' defineProps<{ providerId: string | undefined diff --git a/packages/web/src/pages/models/components/provider-form.vue b/packages/web/src/pages/models/components/provider-form.vue index f43f7aa8..b316bc8a 100644 --- a/packages/web/src/pages/models/components/provider-form.vue +++ b/packages/web/src/pages/models/components/provider-form.vue @@ -100,7 +100,7 @@ import { computed, watch } from 'vue' import { toTypedSchema } from '@vee-validate/zod' import z from 'zod' import { useForm } from 'vee-validate' -import { type ProviderInfo } from '@memoh/shared' +import { type ProviderInfo } from '@/composables/api/useProviders' const props = defineProps<{ provider: Partial | undefined diff --git a/packages/web/src/pages/models/index.vue b/packages/web/src/pages/models/index.vue index 85174575..7a568683 100644 --- a/packages/web/src/pages/models/index.vue +++ b/packages/web/src/pages/models/index.vue @@ -28,9 +28,8 @@ import { EmptyMedia, EmptyTitle, } from '@memoh/ui' -import { type ProviderInfo } from '@memoh/shared' +import { type ProviderInfo, CLIENT_TYPES } from '@/composables/api/useProviders' import AddProvider from '@/components/add-provider/index.vue' -import { clientType } from '@memoh/shared' import { useProviderList } from '@/composables/api/useProviders' const filterProvider = ref('') @@ -141,7 +140,7 @@ const openStatus = reactive({ diff --git a/packages/web/src/pages/models/model-setting.vue b/packages/web/src/pages/models/model-setting.vue index 992f06ad..733d6738 100644 --- a/packages/web/src/pages/models/model-setting.vue +++ b/packages/web/src/pages/models/model-setting.vue @@ -32,7 +32,8 @@ import { Separator } from '@memoh/ui' import ProviderForm from './components/provider-form.vue' import ModelList from './components/model-list.vue' import { computed, inject, provide, reactive, ref, toRef, watch } from 'vue' -import { type ProviderInfo, type ModelInfo } from '@memoh/shared' +import { type ModelInfo } from '@/composables/api/useModels' +import { type ProviderInfo } from '@/composables/api/useProviders' import { useUpdateProvider, useDeleteProvider, diff --git a/packages/web/src/types/index.ts b/packages/web/src/types/index.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 188f729d..45b4c24e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -109,9 +109,6 @@ importers: '@elysiajs/eden': specifier: ^1.4.6 version: 1.4.6(elysia@1.4.22(@sinclair/typebox@0.34.47)(@types/bun@1.3.8)(exact-mirror@0.2.6(@sinclair/typebox@0.34.47))(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.9.3)) - '@memoh/shared': - specifier: workspace:* - version: link:../shared chalk: specifier: ^5.4.1 version: 5.6.2 @@ -149,8 +146,6 @@ importers: packages/sdk: {} - packages/shared: {} - packages/ui: dependencies: '@tailwindcss/vite': @@ -259,9 +254,6 @@ importers: '@memoh/sdk': specifier: workspace:* version: link:../sdk - '@memoh/shared': - specifier: workspace:* - version: link:../shared '@memoh/ui': specifier: workspace:* version: link:../ui