@liujitcn/kratos-admin-system 0.0.64 → 0.0.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +5 -3
  2. package/dist/package/declarations/src/api/base/v1/ai_knowledge.d.ts +7 -0
  3. package/dist/package/declarations/src/api/system/admin/v1/ai_provider.d.ts +5 -1
  4. package/dist/package/declarations/src/api/system/admin/v1/ai_query.d.ts +10 -0
  5. package/dist/package/declarations/src/api/system/admin/v1/ai_session.d.ts +9 -0
  6. package/dist/package/declarations/src/locales/generated.d.ts +1405 -1089
  7. package/dist/package/declarations/src/rpc/base/v1/ai_knowledge.d.ts +22 -0
  8. package/dist/package/declarations/src/rpc/base/v1/ai_message.d.ts +2 -0
  9. package/dist/package/declarations/src/rpc/base/v1/ai_provider.d.ts +13 -6
  10. package/dist/package/declarations/src/rpc/system/admin/v1/ai_provider.d.ts +85 -4
  11. package/dist/package/declarations/src/rpc/system/admin/v1/ai_query.d.ts +73 -0
  12. package/dist/package/declarations/src/rpc/system/admin/v1/ai_session.d.ts +114 -0
  13. package/dist/package/declarations/src/views/ai/chat/components/ChatPanel.vue.d.ts +9 -2
  14. package/dist/package/declarations/src/views/ai/chat/components/XSender.vue.d.ts +7 -0
  15. package/dist/package/declarations/src/views/ai/chat/modelDisplay.d.ts +5 -0
  16. package/dist/package/declarations/src/views/ai/chat/modelSelection.d.ts +9 -0
  17. package/dist/package/declarations/src/views/ai/query/index.vue.d.ts +3 -0
  18. package/dist/package/declarations/src/views/ai/session/index.vue.d.ts +3 -0
  19. package/dist/package/src/api/base/v1/ai_knowledge.ts +22 -0
  20. package/dist/package/src/api/system/admin/v1/ai_provider.ts +14 -0
  21. package/dist/package/src/api/system/admin/v1/ai_query.ts +25 -0
  22. package/dist/package/src/api/system/admin/v1/ai_session.ts +25 -0
  23. package/dist/package/src/components/account/ChangePasswordForm.vue +1 -1
  24. package/dist/package/src/components/tenant-project/TenantProjectSelect.vue +21 -4
  25. package/dist/package/src/locales/en-US.json +351 -272
  26. package/dist/package/src/locales/ja-JP.json +351 -272
  27. package/dist/package/src/locales/zh-CN.json +361 -282
  28. package/dist/package/src/locales/zh-TW.json +351 -272
  29. package/dist/package/src/rpc/base/v1/ai_knowledge.ts +33 -0
  30. package/dist/package/src/rpc/base/v1/ai_message.ts +2 -0
  31. package/dist/package/src/rpc/base/v1/ai_provider.ts +14 -6
  32. package/dist/package/src/rpc/system/admin/v1/ai_provider.ts +93 -4
  33. package/dist/package/src/rpc/system/admin/v1/ai_query.ts +89 -0
  34. package/dist/package/src/rpc/system/admin/v1/ai_session.ts +131 -0
  35. package/dist/package/src/views/ai/chat/components/ChatPanel.vue +22 -1
  36. package/dist/package/src/views/ai/chat/components/XSender.vue +367 -71
  37. package/dist/package/src/views/ai/chat/index.vue +46 -8
  38. package/dist/package/src/views/ai/chat/modelDisplay.ts +67 -0
  39. package/dist/package/src/views/ai/chat/modelSelection.ts +31 -0
  40. package/dist/package/src/views/ai/query/index.vue +222 -0
  41. package/dist/package/src/views/ai/session/index.vue +422 -0
  42. package/dist/package/src/views/base/ai-provider/index.vue +301 -154
  43. package/dist/package/src/views/base/api-rate-limit-policy/index.vue +4 -3
  44. package/dist/package/src/views/base/message-provider/index.vue +9 -5
  45. package/dist/package/src/views/base/message-template/index.vue +2 -2
  46. package/dist/package/src/views/base/oauth-provider/index.vue +2 -2
  47. package/dist/package/src/views/base/rate-limit-rule/index.vue +8 -3
  48. package/dist/package/src/views/base/tenant-project-grant/index.vue +9 -4
  49. package/dist/package/src/views/tool/code-gen/config.ts +1 -0
  50. package/package.json +2 -2
@@ -0,0 +1,33 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.11.8
4
+ // protoc unknown
5
+ // source: base/v1/ai_knowledge.proto
6
+
7
+ /* eslint-disable */
8
+
9
+ /** AI知识库选项查询请求。 */
10
+ export interface ListAiKnowledgeOptionsRequest {
11
+ }
12
+
13
+ /** AI知识库选项查询响应。 */
14
+ export interface ListAiKnowledgeOptionsResponse {
15
+ /** 知识库选项列表 */
16
+ options: AiKnowledgeOption[];
17
+ }
18
+
19
+ /** AI知识库选项。 */
20
+ export interface AiKnowledgeOption {
21
+ /** 知识库ID */
22
+ id: number;
23
+ /** 知识库名称 */
24
+ name: string;
25
+ /** 文档数量 */
26
+ doc_count: number;
27
+ }
28
+
29
+ /** AI 知识库选项查询服务。 */
30
+ export interface AiKnowledgeService {
31
+ /** 查询可用的AI知识库选项。 */
32
+ ListAiKnowledgeOptions(request: ListAiKnowledgeOptionsRequest): Promise<ListAiKnowledgeOptionsResponse>;
33
+ }
@@ -53,6 +53,8 @@ export interface SendAiMessageRequest {
53
53
  provider_id: number;
54
54
  /** 所选模型名称 */
55
55
  model_name: string;
56
+ /** 所选知识库ID列表 */
57
+ knowledge_base_ids: number[];
56
58
  }
57
59
 
58
60
  /** AI 助手失败消息重试请求 */
@@ -10,20 +10,28 @@
10
10
  export interface ListAiProviderModelOptionsRequest {
11
11
  }
12
12
 
13
+ /** AI Provider模型选项查询响应。 */
14
+ export interface ListAiProviderModelOptionsResponse {
15
+ /** Provider及其模型列表 */
16
+ providers: AiProviderModelOption[];
17
+ }
18
+
13
19
  /** 已启用的AI Provider及其模型选项。 */
14
20
  export interface AiProviderModelOption {
15
21
  /** Provider ID */
16
22
  provider_id: number;
17
23
  /** Provider名称 */
18
24
  name: string;
19
- /** 模型名称列表 */
20
- models: string[];
25
+ /** 模型选项列表 */
26
+ models: AiProviderModel[];
21
27
  }
22
28
 
23
- /** AI Provider模型选项查询响应。 */
24
- export interface ListAiProviderModelOptionsResponse {
25
- /** Provider及其模型列表 */
26
- providers: AiProviderModelOption[];
29
+ /** AI Provider下的单个模型选项。 */
30
+ export interface AiProviderModel {
31
+ /** 模型名称 */
32
+ model_name: string;
33
+ /** 展示名称 */
34
+ display_name: string;
27
35
  }
28
36
 
29
37
  /** AI Provider 可选模型查询服务。 */
@@ -8,6 +8,24 @@
8
8
  import type { Status } from "../../../common/v1/enum";
9
9
  import type { Empty } from "../../../google/protobuf/empty";
10
10
 
11
+ /** AI模型分类枚举。 */
12
+ export enum AiModelCategory {
13
+ /** AI_MODEL_CATEGORY_UNSPECIFIED - 未指定AI模型分类。 */
14
+ AI_MODEL_CATEGORY_UNSPECIFIED = 0,
15
+ /** AI_MODEL_CATEGORY_CHAT - 对话模型。 */
16
+ AI_MODEL_CATEGORY_CHAT = 1,
17
+ /** AI_MODEL_CATEGORY_EMBEDDING - 向量模型。 */
18
+ AI_MODEL_CATEGORY_EMBEDDING = 2,
19
+ /** AI_MODEL_CATEGORY_RERANK - 重排序模型。 */
20
+ AI_MODEL_CATEGORY_RERANK = 3,
21
+ /** AI_MODEL_CATEGORY_IMAGE - 图片模型。 */
22
+ AI_MODEL_CATEGORY_IMAGE = 4,
23
+ /** AI_MODEL_CATEGORY_VIDEO - 视频模型。 */
24
+ AI_MODEL_CATEGORY_VIDEO = 5,
25
+ /** AI_MODEL_CATEGORY_AUDIO - 音频模型。 */
26
+ AI_MODEL_CATEGORY_AUDIO = 6,
27
+ }
28
+
11
29
  /** AI供应商分页查询条件。 */
12
30
  export interface PageAiProviderRequest {
13
31
  /** 供应商名称 */
@@ -48,8 +66,6 @@ export interface AiProviderForm {
48
66
  api_key: string;
49
67
  /** 是否已保存模型密钥 */
50
68
  api_key_configured: boolean;
51
- /** 多模型JSON数组 */
52
- models_json: string;
53
69
  /** 排序值 */
54
70
  sort: number;
55
71
  /** Provider稳定标识 */
@@ -58,6 +74,28 @@ export interface AiProviderForm {
58
74
  config:
59
75
  | { [key: string]: any }
60
76
  | undefined;
77
+ /** 供应商下的AI模型列表 */
78
+ models: AiProviderModelForm[];
79
+ /** 状态 */
80
+ status: Status;
81
+ }
82
+
83
+ /** AI供应商模型维护表单;provider_id由所属供应商表单隐式给定。 */
84
+ export interface AiProviderModelForm {
85
+ /** 模型ID;新增时为0 */
86
+ id: number;
87
+ /** 模型名称,供应商API标识 */
88
+ model_name: string;
89
+ /** 显示名称 */
90
+ display_name: string;
91
+ /** 模型分类:枚举【AiModelCategory】 */
92
+ category: AiModelCategory;
93
+ /** 分类个性化配置JSON对象 */
94
+ config:
95
+ | { [key: string]: any }
96
+ | undefined;
97
+ /** 排序值 */
98
+ sort: number;
61
99
  /** 状态 */
62
100
  status: Status;
63
101
  }
@@ -74,6 +112,50 @@ export interface UpdateAiProviderRequest {
74
112
  ai_provider: AiProviderForm | undefined;
75
113
  }
76
114
 
115
+ /** 测试AI供应商模型请求。 */
116
+ export interface TestAiProviderModelsRequest {
117
+ /** 待测试的AI供应商草稿 */
118
+ ai_provider: AiProviderForm | undefined;
119
+ }
120
+
121
+ /** 单个AI模型连通性测试结果。 */
122
+ export interface AiProviderModelTestResult {
123
+ /** 模型名称 */
124
+ model_name: string;
125
+ /** 测试是否成功 */
126
+ success: boolean;
127
+ /** 测试耗时毫秒 */
128
+ duration_ms: number;
129
+ /** 失败原因;成功时为空 */
130
+ message: string;
131
+ }
132
+
133
+ /** 测试AI供应商全部模型响应。 */
134
+ export interface TestAiProviderModelsResponse {
135
+ /** 模型测试结果 */
136
+ results: AiProviderModelTestResult[];
137
+ }
138
+
139
+ /** 查询AI供应商选项请求。 */
140
+ export interface ListAiProviderOptionsRequest {
141
+ }
142
+
143
+ /** 查询AI供应商选项响应。 */
144
+ export interface ListAiProviderOptionsResponse {
145
+ /** 已启用的AI供应商列表 */
146
+ options: AiProviderOption[];
147
+ }
148
+
149
+ /** AI供应商选项。 */
150
+ export interface AiProviderOption {
151
+ /** 供应商ID */
152
+ id: number;
153
+ /** 供应商名称 */
154
+ name: string;
155
+ /** Provider稳定标识 */
156
+ provider: string;
157
+ }
158
+
77
159
  /** 删除AI供应商请求。 */
78
160
  export interface DeleteAiProviderRequest {
79
161
  /** 供应商ID */
@@ -98,12 +180,12 @@ export interface AiProvider {
98
180
  base_url: string;
99
181
  /** 是否已保存模型密钥 */
100
182
  api_key_configured: boolean;
101
- /** 模型名称列表 */
102
- model_names: string[];
103
183
  /** 排序值 */
104
184
  sort: number;
105
185
  /** Provider稳定标识 */
106
186
  provider: string;
187
+ /** 供应商下的模型名称列表 */
188
+ model_names: string[];
107
189
  /** 状态 */
108
190
  status: Status;
109
191
  /** 创建时间 */
@@ -116,12 +198,19 @@ export interface AiProvider {
116
198
  export interface AiProviderService {
117
199
  /** 分页查询AI供应商。 */
118
200
  PageAiProvider(request: PageAiProviderRequest): Promise<PageAiProviderResponse>;
201
+ /**
202
+ * 查询已启用的AI供应商选项。
203
+ * 字面路径必须先于 /{id} 声明:gorilla mux 按注册顺序匹配,否则会被 {id} 路由抢占。
204
+ */
205
+ ListAiProviderOptions(request: ListAiProviderOptionsRequest): Promise<ListAiProviderOptionsResponse>;
119
206
  /** 查询AI供应商表单。 */
120
207
  GetAiProvider(request: GetAiProviderRequest): Promise<AiProviderForm>;
121
208
  /** 创建AI供应商。 */
122
209
  CreateAiProvider(request: CreateAiProviderRequest): Promise<Empty>;
123
210
  /** 更新AI供应商。 */
124
211
  UpdateAiProvider(request: UpdateAiProviderRequest): Promise<Empty>;
212
+ /** 测试AI供应商表单中的全部模型。 */
213
+ TestAiProviderModels(request: TestAiProviderModelsRequest): Promise<TestAiProviderModelsResponse>;
125
214
  /** 删除AI供应商。 */
126
215
  DeleteAiProvider(request: DeleteAiProviderRequest): Promise<Empty>;
127
216
  /** 设置AI供应商状态。 */
@@ -0,0 +1,89 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.11.8
4
+ // protoc unknown
5
+ // source: system/admin/v1/ai_query.proto
6
+
7
+ /* eslint-disable */
8
+
9
+ /** 智能问数状态枚举。 */
10
+ export enum AiQueryStatus {
11
+ /** AI_QUERY_STATUS_UNSPECIFIED - 未指定智能问数状态。 */
12
+ AI_QUERY_STATUS_UNSPECIFIED = 0,
13
+ /** AI_QUERY_STATUS_SUCCESS - 成功。 */
14
+ AI_QUERY_STATUS_SUCCESS = 1,
15
+ /** AI_QUERY_STATUS_FAILED - 失败。 */
16
+ AI_QUERY_STATUS_FAILED = 2,
17
+ }
18
+
19
+ /** 智能问数分页查询条件。 */
20
+ export interface PageAiQueryRequest {
21
+ /** 问题内容 */
22
+ question: string;
23
+ /** 问数状态:枚举【AiQueryStatus】 */
24
+ status?:
25
+ | AiQueryStatus
26
+ | undefined;
27
+ /** 当前页码 */
28
+ page_num: number;
29
+ /** 每页行数 */
30
+ page_size: number;
31
+ }
32
+
33
+ /** 智能问数分页响应。 */
34
+ export interface PageAiQueryResponse {
35
+ /** 智能问数记录列表 */
36
+ queries: AiQueryRecord[];
37
+ /** 总数 */
38
+ total: number;
39
+ }
40
+
41
+ /** 查询智能问数记录请求。 */
42
+ export interface GetAiQueryRequest {
43
+ /** 记录ID */
44
+ id: number;
45
+ }
46
+
47
+ /** 智能问数结果快照行。 */
48
+ export interface AiQueryResultRow {
49
+ /** 行数据 */
50
+ values: string[];
51
+ }
52
+
53
+ /** 智能问数记录。 */
54
+ export interface AiQueryRecord {
55
+ /** 记录ID */
56
+ id: number;
57
+ /** 租户ID */
58
+ tenant_id: number;
59
+ /** 用户ID */
60
+ user_id: number;
61
+ /** 用户账号 */
62
+ user_name: string;
63
+ /** 自然语言问题 */
64
+ question: string;
65
+ /** 生成的只读SQL */
66
+ sql: string;
67
+ /** 问数状态:枚举【AiQueryStatus】 */
68
+ status: AiQueryStatus;
69
+ /** 结果行数 */
70
+ row_count: number;
71
+ /** SQL执行耗时毫秒 */
72
+ elapsed_ms: number;
73
+ /** 失败原因 */
74
+ error_msg: string;
75
+ /** 结果快照列名,仅详情返回 */
76
+ result_columns: string[];
77
+ /** 结果快照数据行,仅详情返回 */
78
+ result_rows: AiQueryResultRow[];
79
+ /** 创建时间 */
80
+ created_at: string;
81
+ }
82
+
83
+ /** 智能问数记录管理服务。 */
84
+ export interface AiQueryService {
85
+ /** 分页查询智能问数记录。 */
86
+ PageAiQuery(request: PageAiQueryRequest): Promise<PageAiQueryResponse>;
87
+ /** 查询智能问数记录详情。 */
88
+ GetAiQuery(request: GetAiQueryRequest): Promise<AiQueryRecord>;
89
+ }
@@ -0,0 +1,131 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.11.8
4
+ // protoc unknown
5
+ // source: system/admin/v1/ai_session.proto
6
+
7
+ /* eslint-disable */
8
+ import type { AiMessageStatus } from "../../../base/v1/ai_session";
9
+ import type { Terminal } from "../../../base/v1/ai_tool";
10
+
11
+ /** AI会话分页查询条件。 */
12
+ export interface PageAiSessionRequest {
13
+ /** 会话标题 */
14
+ title: string;
15
+ /** 终端类型:枚举【Terminal】 */
16
+ terminal?:
17
+ | Terminal
18
+ | undefined;
19
+ /** 当前页码 */
20
+ page_num: number;
21
+ /** 每页行数 */
22
+ page_size: number;
23
+ }
24
+
25
+ /** AI会话分页响应。 */
26
+ export interface PageAiSessionResponse {
27
+ /** 会话列表 */
28
+ sessions: AiSessionRecord[];
29
+ /** 总数 */
30
+ total: number;
31
+ }
32
+
33
+ /** AI会话分页记录。 */
34
+ export interface AiSessionRecord {
35
+ /** 会话ID */
36
+ id: number;
37
+ /** 所属用户ID */
38
+ user_id: number;
39
+ /** 用户账号 */
40
+ user_name: string;
41
+ /** 用户昵称 */
42
+ nick_name: string;
43
+ /** 会话标题 */
44
+ title: string;
45
+ /** 会话摘要 */
46
+ summary: string;
47
+ /** 终端类型:枚举【Terminal】 */
48
+ terminal: Terminal;
49
+ /** 消息轮次数 */
50
+ message_count: number;
51
+ /** 累计输入Token数 */
52
+ input_tokens: number;
53
+ /** 累计输出Token数 */
54
+ output_tokens: number;
55
+ /** 累计缓存Token数 */
56
+ cache_tokens: number;
57
+ /** 累计总Token数 */
58
+ total_tokens: number;
59
+ /** 创建时间 */
60
+ created_at: string;
61
+ /** 更新时间 */
62
+ updated_at: string;
63
+ }
64
+
65
+ /** 分页查询AI会话消息请求。 */
66
+ export interface PageAiSessionMessageRequest {
67
+ /** 会话ID */
68
+ id: number;
69
+ /** 当前页码 */
70
+ page_num: number;
71
+ /** 每页行数 */
72
+ page_size: number;
73
+ }
74
+
75
+ /** 分页查询AI会话消息响应。 */
76
+ export interface PageAiSessionMessageResponse {
77
+ /** 消息列表 */
78
+ messages: AiSessionMessageRecord[];
79
+ /** 总数 */
80
+ total: number;
81
+ }
82
+
83
+ /** AI会话消息记录。 */
84
+ export interface AiSessionMessageRecord {
85
+ /** 消息ID */
86
+ id: number;
87
+ /** 用户输入内容 */
88
+ input_content: string;
89
+ /** AI回复内容 */
90
+ output_content: string;
91
+ /** 回复使用的模型名称 */
92
+ model: string;
93
+ /** 消息生成状态:枚举【AiMessageStatus】 */
94
+ status: AiMessageStatus;
95
+ /** 输入Token数 */
96
+ input_tokens: number;
97
+ /** 输出Token数 */
98
+ output_tokens: number;
99
+ /** 缓存Token数 */
100
+ cache_tokens: number;
101
+ /** 总Token数 */
102
+ total_tokens: number;
103
+ /** 首Token耗时毫秒 */
104
+ first_token_ms: number;
105
+ /** 总耗时毫秒 */
106
+ duration_ms: number;
107
+ /** 附件列表 */
108
+ attachments: AiSessionMessageAttachment[];
109
+ /** 创建时间 */
110
+ created_at: string;
111
+ }
112
+
113
+ /** AI会话消息附件。 */
114
+ export interface AiSessionMessageAttachment {
115
+ /** 附件名称 */
116
+ name: string;
117
+ /** 附件大小 */
118
+ size: number;
119
+ /** 附件地址 */
120
+ url: string;
121
+ /** 附件 MIME 类型 */
122
+ mime_type: string;
123
+ }
124
+
125
+ /** AI会话管理服务。 */
126
+ export interface AiSessionService {
127
+ /** 分页查询AI会话。 */
128
+ PageAiSession(request: PageAiSessionRequest): Promise<PageAiSessionResponse>;
129
+ /** 分页查询AI会话消息。 */
130
+ PageAiSessionMessage(request: PageAiSessionMessageRequest): Promise<PageAiSessionMessageResponse>;
131
+ }
@@ -53,8 +53,11 @@
53
53
  :model-providers="modelProviders"
54
54
  :provider-id="providerId"
55
55
  :model-name="modelName"
56
+ :knowledge-options="knowledgeOptions"
57
+ :knowledge-ids="knowledgeIds"
56
58
  @submit="handleSubmit"
57
59
  @model-change="handleModelChange"
60
+ @knowledge-change="handleKnowledgeChange"
58
61
  />
59
62
  </div>
60
63
  </div>
@@ -78,7 +81,9 @@
78
81
  >
79
82
  {{ item.replySourceTag.text }}
80
83
  </span>
81
- <span v-if="item.model" class="agent-message-meta__model">{{ item.model }}</span>
84
+ <span v-if="item.model" class="agent-message-meta__model">{{
85
+ resolveModelDisplayName(modelProviders, item.model)
86
+ }}</span>
82
87
  <span v-if="resolveMessageReplyTime(item)" class="agent-message-meta__time">{{
83
88
  resolveMessageReplyTime(item)
84
89
  }}</span>
@@ -334,8 +339,11 @@
334
339
  :model-providers="modelProviders"
335
340
  :provider-id="providerId"
336
341
  :model-name="modelName"
342
+ :knowledge-options="knowledgeOptions"
343
+ :knowledge-ids="knowledgeIds"
337
344
  @submit="handleSubmit"
338
345
  @model-change="handleModelChange"
346
+ @knowledge-change="handleKnowledgeChange"
339
347
  />
340
348
  </div>
341
349
  </template>
@@ -354,9 +362,11 @@ import { formatDateTime } from "@liujitcn/kratos-admin-core/format";
354
362
  import type { AiAction } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_message";
355
363
  import { type AiAttachment, type AiSession } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_session";
356
364
  import type { AiProviderModelOption } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_provider";
365
+ import type { AiKnowledgeOption } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_knowledge";
357
366
  import type { AiShortcut, AiToolCall } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_tool";
358
367
  import { AiMessageStatus } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_session";
359
368
  import { resolvePersistedMessage } from "../../../../utils/persisted-message";
369
+ import { resolveModelDisplayName } from "../modelDisplay";
360
370
  import XSender from "./XSender.vue";
361
371
 
362
372
  // AI Markdown 渲染器依赖较重,仅在真正出现助手消息时再加载。
@@ -498,6 +508,10 @@ const props = defineProps<{
498
508
  providerId: number;
499
509
  /** 当前选择的模型名称。 */
500
510
  modelName: string;
511
+ /** 当前可供选择的知识库。 */
512
+ knowledgeOptions: AiKnowledgeOption[];
513
+ /** 当前选择的知识库编号列表。 */
514
+ knowledgeIds: number[];
501
515
  }>();
502
516
 
503
517
  const emit = defineEmits<{
@@ -505,6 +519,8 @@ const emit = defineEmits<{
505
519
  submit: [payload: SubmitPayload];
506
520
  /** 更新当前选择的供应商和模型。 */
507
521
  modelChange: [providerId: number, modelName: string];
522
+ /** 更新当前选择的知识库编号列表。 */
523
+ knowledgeChange: [knowledgeIds: number[]];
508
524
  /** 触发消息级操作。 */
509
525
  messageAction: [payload: { action: ChatMessageAction; item: ChatMessageItem }];
510
526
  /** 提交当前用户消息的文本编辑。 */
@@ -645,6 +661,11 @@ function handleModelChange(providerId: number, modelName: string) {
645
661
  emit("modelChange", providerId, modelName);
646
662
  }
647
663
 
664
+ /** 更新当前选择的知识库编号列表。 */
665
+ function handleKnowledgeChange(knowledgeIds: number[]) {
666
+ emit("knowledgeChange", knowledgeIds);
667
+ }
668
+
648
669
  /** 点击快捷入口时提交对应入口动作。 */
649
670
  function handleShortcutClick(shortcut: AiShortcut) {
650
671
  emit("submit", {