agent-tool-chat 1.1.5 → 1.2.0
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.
- package/README.md +33 -0
- package/dist/agent-core/types.d.ts +6 -0
- package/dist/agent-tool-chat.css +1 -1
- package/dist/api/openai-compatible.d.ts +11 -0
- package/dist/api/openai.d.ts +2 -0
- package/dist/api/provider-registry.d.ts +8 -0
- package/dist/composables/useAgentChat.d.ts +18 -14
- package/dist/config.d.ts +11 -4
- package/dist/index.cjs +29 -30
- package/dist/index.d.ts +7 -2
- package/dist/index.js +3280 -3052
- package/dist/types.d.ts +58 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -235,6 +235,35 @@ interface FileAttachment {
|
|
|
235
235
|
5. **业务联动** — 页面操作完成后 `eventBus.dispatch` 回灌,驱动 LLM 回复或延迟建议。
|
|
236
236
|
6. **持久化** — 消息与设置自动保存(direct 模式 localStorage;proxy 模式 POST `/api/messages`,按 device_id 区分)。
|
|
237
237
|
|
|
238
|
+
## 模型提供方
|
|
239
|
+
|
|
240
|
+
插件内置 DeepSeek、OpenAI 和自定义 OpenAI 兼容三种提供方,可在设置面板切换,每个提供方独立保存 `apiKey / baseUrl / model / temperature / thinking`。
|
|
241
|
+
|
|
242
|
+
```ts
|
|
243
|
+
const chat = useAgentChat({
|
|
244
|
+
toolPackages: [],
|
|
245
|
+
// 可选:扩展自定义 OpenAI 兼容提供方
|
|
246
|
+
providerPresets: [
|
|
247
|
+
{
|
|
248
|
+
id: 'my-gateway',
|
|
249
|
+
name: '内部网关',
|
|
250
|
+
protocol: 'openai-compatible',
|
|
251
|
+
defaultBaseUrl: 'https://gateway.example.com/v1',
|
|
252
|
+
defaultModel: 'my-model',
|
|
253
|
+
models: [],
|
|
254
|
+
capabilities: {},
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
})
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
- `settings.providerId` 标识当前提供方,默认 `deepseek`;旧版设置会自动迁移到当前提供方,无 `providerId` 时迁移到 `providers.deepseek`。
|
|
261
|
+
- localStorage 中已保存的设置按字段覆盖 `options.settings`;未保存的字段沿用 `options.settings` / 默认值。
|
|
262
|
+
- 旧字段 `settings.apiKey/baseUrl/model` 仍可读取,会始终镜像当前提供方的值。
|
|
263
|
+
- 前端直连使用 `POST {baseUrl}/chat/completions`;后端代理使用 `POST {proxyUrl}/api/chat`,并在请求体携带 `providerId`。
|
|
264
|
+
- 代理服务按 `<PROVIDER_ID>_API_KEY` / `<PROVIDER_ID>_BASE_URL` 环境变量路由,详见 `server/.env.example`。
|
|
265
|
+
- 非 OpenAI 兼容协议(如 Claude/Gemini)可通过 `registerProvider(id, factory)` 或 `options.provider` 接入。
|
|
266
|
+
|
|
238
267
|
## 数据持久化
|
|
239
268
|
|
|
240
269
|
| providerMode | 消息存储 | 说明 |
|
|
@@ -249,7 +278,11 @@ useAgentChat(options) // 核心组合式函数,返回 AgentChatAP
|
|
|
249
278
|
ChatPanel // 对话面板(chat / options prop,chat 可选)
|
|
250
279
|
buildSystemPrompt(packages) // 构建系统提示词
|
|
251
280
|
createDeepSeekProvider() // 直连 DeepSeek LLM 提供者
|
|
281
|
+
createOpenAIProvider() // 直连 OpenAI LLM 提供者
|
|
282
|
+
createOpenAICompatibleProvider() // 通用 OpenAI 兼容提供者
|
|
252
283
|
createProxyProvider() // 代理模式 LLM 提供者
|
|
284
|
+
createProvider(id, mode) // 按 providerId + 模式路由
|
|
285
|
+
registerProvider(id, factory) // 注册非 OpenAI 兼容协议提供方
|
|
253
286
|
createEventBus() // 创建独立 EventBus
|
|
254
287
|
Agent, ToolRegistry // 底层 Agent 多轮循环器 / 工具注册表
|
|
255
288
|
```
|
|
@@ -38,11 +38,17 @@ export interface ThinkingConfig {
|
|
|
38
38
|
effort?: 'low' | 'high' | 'max';
|
|
39
39
|
}
|
|
40
40
|
export interface LLMProviderConfig {
|
|
41
|
+
/** 当前模型提供方 ID(用于 registry 路由) */
|
|
42
|
+
providerId?: string;
|
|
43
|
+
/** 直连 / 代理模式 */
|
|
44
|
+
mode?: 'direct' | 'proxy';
|
|
41
45
|
baseUrl: string;
|
|
42
46
|
apiKey: string;
|
|
43
47
|
model: string;
|
|
44
48
|
temperature?: number;
|
|
45
49
|
thinking?: ThinkingConfig;
|
|
50
|
+
/** 提供方专用扩展请求字段 */
|
|
51
|
+
extraBody?: Record<string, unknown>;
|
|
46
52
|
}
|
|
47
53
|
export type AgentEvent = {
|
|
48
54
|
type: 'message';
|
package/dist/agent-tool-chat.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.render-block[data-v-ea599d5b]{margin:8px 0;padding:8px 0;width:100%}.render-block__component[data-v-ea599d5b]{border-radius:8px;background:var(--el-fill-color-lighter);box-shadow:0 0 10px #0000001a}.render-block__title[data-v-ea599d5b]{font-weight:600;font-size:14px;margin-bottom:6px;color:var(--el-text-color-primary)}.render-block__table[data-v-ea599d5b]{width:100%;max-width:900px;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000000f}.render-block__cards[data-v-ea599d5b]{display:flex;flex-direction:column;gap:8px}.card-item[data-v-ea599d5b]{border:1px solid var(--el-border-color);border-radius:8px;padding:10px 14px;background:var(--el-fill-color-lighter);box-shadow:0 2px 6px #0000000d}.card-field[data-v-ea599d5b]{display:flex;gap:6px;font-size:13px;line-height:1.8}.card-label[data-v-ea599d5b]{font-weight:600;color:var(--el-text-color-secondary);min-width:80px}.card-value[data-v-ea599d5b]{color:var(--el-text-color-primary)}.render-block__list[data-v-ea599d5b]{display:flex;flex-direction:column;gap:4px}.list-item[data-v-ea599d5b]{padding:6px 10px;font-size:13px;border-left:3px solid var(--el-color-primary);background:var(--el-fill-color-lighter);border-radius:0 4px 4px 0;box-shadow:0 1px 4px #0000000a}.suggested-next[data-v-0e0e9b65]{display:flex;align-items:center;gap:8px;padding:8px 12px;margin:6px 0;background:var(--el-color-primary-light-9);border:1px solid var(--el-color-primary-light-7);border-radius:8px;font-size:13px}.suggested-next__icon[data-v-0e0e9b65]{font-size:15px;flex-shrink:0}.suggested-next__text[data-v-0e0e9b65]{flex:1;color:var(--el-text-color-regular)}.chat-message[data-v-7317da3a]{display:flex;gap:10px;padding:12px 0;animation:msg-in-7317da3a .25s ease both}@keyframes msg-in-7317da3a{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.chat-message.role-user[data-v-7317da3a]{flex-direction:row-reverse}.chat-message.role-user .message-time[data-v-7317da3a]{text-align:right}.message-avatar[data-v-7317da3a]{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px;color:#fff;box-shadow:0 0 0 2px var(--el-bg-color),0 2px 6px #0000001f}.role-user .message-avatar[data-v-7317da3a]{background:linear-gradient(135deg,var(--el-color-primary),var(--el-color-primary-light-3))}.role-assistant .message-avatar[data-v-7317da3a]{background:linear-gradient(135deg,#009688,#2d8cf0)}.message-time[data-v-7317da3a]{display:block;font-size:11px;line-height:1;color:var(--el-text-color-placeholder);margin-bottom:4px}.message-body[data-v-7317da3a]{max-width:80%;min-width:0}.role-user .message-body[data-v-7317da3a]{background:linear-gradient(135deg,var(--el-color-primary-light-9),var(--el-color-primary-light-8));padding:8px 14px;border-radius:12px 4px 12px 12px;box-shadow:0 2px 8px #0000000f,0 1px 2px #0000000a}.role-assistant .message-body[data-v-7317da3a]{position:relative;background:var(--el-fill-color-lighter);padding:8px 14px;border-radius:4px 12px 12px;display:flex;flex-direction:column;box-shadow:0 2px 8px #0000000f,0 1px 2px #0000000a}.message-actions[data-v-7317da3a]{position:absolute;top:0;right:0;opacity:0;transition:opacity .2s;z-index:1}.role-assistant .message-body:hover .message-actions[data-v-7317da3a]{opacity:1}.role-assistant .message-body .message-time[data-v-7317da3a]{float:left;width:10px}.message-action-btn[data-v-7317da3a]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;border-radius:4px;color:var(--el-text-color-secondary);cursor:pointer;font-size:15px}.message-action-btn[data-v-7317da3a]:hover{background:var(--el-fill-color);color:var(--el-color-primary)}.message-user-text[data-v-7317da3a]{font-size:14px;line-height:1.5;color:var(--el-text-color-primary);white-space:pre-wrap;word-break:break-word}.message-content[data-v-7317da3a]{font-size:14px;line-height:1.6;color:var(--el-text-color-primary);word-break:break-word;background:transparent;border:none;outline:none;box-shadow:none;height:auto;overflow-wrap:break-word}.message-content[data-v-7317da3a] p{margin:0 0 8px}.message-content[data-v-7317da3a] p:last-child{margin-bottom:0}.message-content[data-v-7317da3a] h1,.message-content[data-v-7317da3a] h2,.message-content[data-v-7317da3a] h3,.message-content[data-v-7317da3a] h4,.message-content[data-v-7317da3a] h5,.message-content[data-v-7317da3a] h6{margin:12px 0 8px;font-weight:600;line-height:1.4;color:var(--el-text-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none}.message-content[data-v-7317da3a] h1[data-collapsed]:after,.message-content[data-v-7317da3a] h2[data-collapsed]:after,.message-content[data-v-7317da3a] h3[data-collapsed]:after,.message-content[data-v-7317da3a] h4[data-collapsed]:after,.message-content[data-v-7317da3a] h5[data-collapsed]:after,.message-content[data-v-7317da3a] h6[data-collapsed]:after{content:" ▸";font-size:.8em;color:var(--el-text-color-secondary)}.message-content[data-v-7317da3a] h1{font-size:20px}.message-content[data-v-7317da3a] h2{font-size:18px;padding-bottom:4px;border-bottom:1px solid var(--el-border-color-lighter)}.message-content[data-v-7317da3a] h3{font-size:16px}.message-content[data-v-7317da3a] h4{font-size:15px}.message-content[data-v-7317da3a] h5,.message-content[data-v-7317da3a] h6{font-size:14px}.message-content[data-v-7317da3a] strong{font-weight:600}.message-content[data-v-7317da3a] em{font-style:italic}.message-content[data-v-7317da3a] ul,.message-content[data-v-7317da3a] ol{margin:0 0 8px;padding-left:20px}.message-content[data-v-7317da3a] ul:last-child,.message-content[data-v-7317da3a] ol:last-child{margin-bottom:0}.message-content[data-v-7317da3a] li{margin:2px 0}.message-content[data-v-7317da3a] li>ul,.message-content[data-v-7317da3a] li>ol{margin:0}.message-content[data-v-7317da3a] code{padding:1px 5px;margin:0 2px;font-size:12px;font-family:Consolas,Monaco,Courier New,monospace;background:var(--el-fill-color);color:var(--el-color-primary);border-radius:4px}.message-content[data-v-7317da3a] pre{margin:8px 0;padding:10px 12px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);border-radius:6px;overflow-x:auto}.message-content[data-v-7317da3a] .md-code-block{margin:8px 0}.message-content[data-v-7317da3a] .md-code-block__head{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--el-fill-color);border:1px solid var(--el-border-color-lighter);border-bottom:none;border-radius:6px 6px 0 0;font-size:12px}.message-content[data-v-7317da3a] .md-code-block__lang{color:var(--el-text-color-secondary);font-family:Consolas,Monaco,Courier New,monospace}.message-content[data-v-7317da3a] .md-code-block__copy{color:var(--el-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .2s}.message-content[data-v-7317da3a] .md-code-block__copy:hover{opacity:.7}.message-content[data-v-7317da3a] .md-code-block pre{margin:0;border-radius:0 0 6px 6px}.message-content[data-v-7317da3a] pre code{display:block;padding:0;margin:0;font-size:12px;line-height:1.6;background:transparent;color:var(--el-text-color-primary);border-radius:0;white-space:pre}.message-content[data-v-7317da3a] blockquote{margin:8px 0;padding:4px 12px;border-left:3px solid var(--el-color-primary-light-5);background:var(--el-fill-color-lighter);border-radius:0 6px 6px 0;color:var(--el-text-color-regular)}.message-content[data-v-7317da3a] blockquote p{margin:0}.message-content[data-v-7317da3a] table{width:100%;margin:8px 0;border-collapse:collapse;font-size:13px}.message-content[data-v-7317da3a] th,.message-content[data-v-7317da3a] td{padding:6px 10px;border:1px solid var(--el-border-color-lighter);text-align:left}.message-content[data-v-7317da3a] th{background:var(--el-fill-color);font-weight:600;color:var(--el-text-color-primary)}.message-content[data-v-7317da3a] tbody tr:nth-child(2n){background:var(--el-fill-color-lighter)}.message-content.is-table-clickable[data-v-7317da3a] tbody tr{cursor:pointer;transition:background .15s}.message-content.is-table-clickable[data-v-7317da3a] tbody tr:hover{background:var(--el-color-primary-light-9)}.message-content.is-list-clickable[data-v-7317da3a] li{cursor:pointer;border-radius:4px;transition:background .15s}.message-content.is-list-clickable[data-v-7317da3a] li:hover{background:var(--el-color-primary-light-9)}.message-content[data-v-7317da3a] a{color:var(--el-color-primary);text-decoration:none}.message-content[data-v-7317da3a] a:hover{text-decoration:underline}.message-content[data-v-7317da3a] img{max-width:100%;border-radius:6px}.message-content[data-v-7317da3a] hr{margin:12px 0;border:none;border-top:1px solid var(--el-border-color-lighter)}.typing-dots[data-v-7317da3a]{display:inline-flex;align-items:center;gap:4px;padding:2px 0}.typing-dots i[data-v-7317da3a]{width:6px;height:6px;border-radius:50%;background:var(--el-color-primary);animation:typing-bounce-7317da3a 1.2s ease-in-out infinite}.typing-dots i[data-v-7317da3a]:nth-child(2){animation-delay:.15s}.typing-dots i[data-v-7317da3a]:nth-child(3){animation-delay:.3s}@keyframes typing-bounce-7317da3a{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.message-error[data-v-7317da3a]{margin-top:4px;font-size:12px;color:var(--el-color-danger)}.message-reasoning[data-v-7317da3a]{margin-bottom:8px}.reasoning-toggle[data-v-7317da3a]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--el-border-color);border-radius:999px;background:var(--el-fill-color);color:var(--el-text-color-regular);font-size:12px;line-height:1;cursor:pointer;transition:all .2s}.reasoning-toggle[data-v-7317da3a]:hover{background:var(--el-fill-color-light);color:var(--el-color-primary);border-color:var(--el-color-primary-light-5)}.reasoning-toggle__arrow[data-v-7317da3a]{display:inline-block;font-size:12px;transition:transform .2s}.reasoning-toggle__arrow.open[data-v-7317da3a]{transform:rotate(180deg)}.reasoning-content[data-v-7317da3a]{margin:6px 0 0;padding:8px;background:var(--el-fill-color);border-radius:6px;font-size:12px;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.message-files[data-v-7317da3a]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.message-file[data-v-7317da3a]{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--el-border-color);border-radius:8px;background:var(--el-bg-color);font-size:12px}.message-file.is-image[data-v-7317da3a]{padding:4px;flex-direction:column;align-items:flex-start}.file-image[data-v-7317da3a]{max-width:200px;max-height:200px;border-radius:6px;object-fit:contain;cursor:zoom-in;transition:box-shadow .2s}.file-image[data-v-7317da3a]:hover{box-shadow:0 0 0 2px var(--el-color-primary-light-5)}.file-info[data-v-7317da3a]{display:flex;flex-direction:column;gap:2px}.file-name[data-v-7317da3a]{color:var(--el-text-color-primary);font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size[data-v-7317da3a]{color:var(--el-text-color-secondary);font-size:11px}.chat-input[data-v-e7db63f0]{padding:12px 16px;border-top:1px solid var(--el-border-color-lighter);background:var(--el-bg-color);display:flex;flex-direction:column}.chat-input__files[data-v-e7db63f0]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.chat-input__preview[data-v-e7db63f0]{margin-left:auto;height:24px;padding:0 8px}.chat-input__files[data-v-e7db63f0] .el-tag{border-radius:999px}.chat-input__send.el-button--primary[data-v-e7db63f0]{background:linear-gradient(135deg,#009688,#2d8cf0);border-color:transparent;color:#fff;transition:box-shadow .2s,transform .2s}.chat-input__send.el-button--primary[data-v-e7db63f0]:hover{background:linear-gradient(135deg,#00807a,#256fce);box-shadow:0 4px 12px #2d8cf059;transform:translateY(-1px)}.chat-input__wrap[data-v-e7db63f0]{display:flex;align-items:flex-end;gap:8px;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);border-radius:12px;padding:6px 6px 6px 12px;transition:border-color .2s,box-shadow .2s}.chat-input__wrap[data-v-e7db63f0]:focus-within{border-color:var(--el-color-primary);box-shadow:0 0 0 2px var(--el-color-primary-light-8)}.chat-input__wrap[data-v-e7db63f0] .el-textarea__inner{border:none;background:transparent;box-shadow:none;padding:4px 0;line-height:1.6;font-size:14px}.chat-input__wrap[data-v-e7db63f0] .el-textarea__inner:focus{box-shadow:none}.chat-input__actions[data-v-e7db63f0]{flex-shrink:0;display:flex;align-items:center;gap:2px;padding-bottom:2px}.form-tip[data-v-5879c4da]{font-size:12px;color:var(--el-text-color-secondary);line-height:1.6;margin-top:4px}.form-tip-inline[data-v-5879c4da]{margin-left:8px;font-size:12px;color:var(--el-text-color-secondary)}.temp-row[data-v-5879c4da]{display:flex;align-items:center;gap:12px;width:100%}.temp-val[data-v-5879c4da]{width:28px;text-align:right;font-size:13px;color:var(--el-text-color-secondary)}.chat-panel-root[data-v-5dde3b27]{position:fixed;z-index:1999}.ai-fab[data-v-5dde3b27]{position:fixed;right:22px;bottom:25px;z-index:2000;display:flex;align-items:center;gap:8px;height:52px;padding:0 22px 0 18px;border-radius:26px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;background:linear-gradient(135deg,#009688,#2d8cf0);box-shadow:0 6px 24px #2d8cf080;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s;-webkit-user-select:none;user-select:none;overflow:hidden;isolation:isolate;animation:ai-fab-float-5dde3b27 3.6s ease-in-out infinite}@keyframes ai-fab-float-5dde3b27{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.ai-fab[data-v-5dde3b27]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);background-size:200% 100%;background-position:100% 0;animation:ai-fab-shimmer-5dde3b27 4s ease-in-out infinite;z-index:-1;pointer-events:none}@keyframes ai-fab-shimmer-5dde3b27{0%,to{background-position:100% 0}50%{background-position:0 0}}.ai-fab[data-v-5dde3b27]:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:inherit;border:2px solid rgba(45,140,240,.35);animation:ai-fab-pulse-5dde3b27 2.4s ease-in-out infinite;pointer-events:none;z-index:-2}@keyframes ai-fab-pulse-5dde3b27{0%,to{opacity:.6;transform:scale(1)}50%{opacity:0;transform:scale(1.12)}}.ai-fab__icon[data-v-5dde3b27]{font-size:22px;filter:drop-shadow(0 0 4px rgba(255,255,255,.4));transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.ai-fab__label[data-v-5dde3b27]{line-height:1;text-shadow:0 1px 4px rgba(0,0,0,.15)}.ai-fab[data-v-5dde3b27]:hover{animation:none;transform:translateY(-4px) scale(1.04);box-shadow:0 12px 32px #2d8cf099}.ai-fab[data-v-5dde3b27]:hover:before{animation:none;background-position:0 0}.ai-fab--active[data-v-5dde3b27]{animation:none;box-shadow:0 4px 16px #2d8cf066}.ai-fab--active[data-v-5dde3b27]:after{animation:none;opacity:0}.ai-fab--active[data-v-5dde3b27]:before{animation:none}.ai-fab--active .ai-fab__icon[data-v-5dde3b27]{transform:rotate(45deg)}.ai-fab--dragged[data-v-5dde3b27]{animation:none}.ai-fab--dragged[data-v-5dde3b27]:before,.ai-fab--dragged[data-v-5dde3b27]:after{animation:none;opacity:0}.chat-panel[data-v-5dde3b27]{position:fixed;bottom:25px;right:22px;z-index:9999;display:flex;flex-direction:column;height:680px;width:560px;min-height:400px;background:var(--el-bg-color);box-shadow:0 20px 50px #0000002e,0 6px 18px #00000014;border-radius:16px;transform-origin:bottom right}.panel-enter-active[data-v-5dde3b27],.panel-leave-active[data-v-5dde3b27]{transition:opacity .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.panel-enter-from[data-v-5dde3b27],.panel-leave-to[data-v-5dde3b27]{opacity:0;transform:translateY(16px) scale(.96)}.chat-panel__header[data-v-5dde3b27]{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;cursor:move;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--el-border-color-lighter);background:linear-gradient(135deg,var(--el-color-primary-light-7),var(--el-bg-color));border-radius:16px 16px 0 0;flex-shrink:0}.chat-panel__title[data-v-5dde3b27]{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.title-icon[data-v-5dde3b27]{color:var(--el-color-primary);font-size:18px}.chat-panel__ops[data-v-5dde3b27]{display:flex;gap:4px}.chat-panel__scroll-wrap[data-v-5dde3b27]{position:relative;flex:1;min-height:0;display:flex}.chat-panel__body[data-v-5dde3b27]{flex:1;overflow-y:auto;padding:0 16px;min-height:0;scrollbar-width:thin;scrollbar-color:var(--el-border-color-darker) transparent}.chat-panel__nav[data-v-5dde3b27]{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 4px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);border-radius:10px;box-shadow:0 2px 10px #00000014;opacity:.35;transition:opacity .2s}.chat-panel__nav[data-v-5dde3b27]:hover,.chat-panel__nav.is-suppressed-scroll[data-v-5dde3b27]{opacity:1}.chat-panel__nav-count[data-v-5dde3b27]{font-size:10px;line-height:1;color:var(--el-text-color-secondary);font-variant-numeric:tabular-nums}.chat-panel__nav-btn[data-v-5dde3b27]{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--el-text-color-regular);cursor:pointer;font-size:14px;transition:background .15s,color .15s}.chat-panel__nav-btn[data-v-5dde3b27]:hover:not(:disabled){background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.chat-panel__nav-btn[data-v-5dde3b27]:disabled{color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:.5}.chat-panel__body[data-v-5dde3b27] [data-msg-id].is-locate{animation:locate-flash-5dde3b27 1.2s ease both}@keyframes locate-flash-5dde3b27{0%{outline:2px solid var(--el-color-primary);outline-offset:2px;border-radius:8px}to{outline:2px solid transparent;outline-offset:2px;border-radius:8px}}.chat-panel__body[data-v-5dde3b27]::-webkit-scrollbar{width:8px}.chat-panel__body[data-v-5dde3b27]::-webkit-scrollbar-track{background:var(--el-fill-color-lighter);border-radius:4px}.chat-panel__body[data-v-5dde3b27]::-webkit-scrollbar-thumb{background:var(--el-border-color-darker);border-radius:4px;border:2px solid transparent;background-clip:content-box}.chat-panel__body[data-v-5dde3b27]::-webkit-scrollbar-thumb:hover{background:var(--el-text-color-secondary);background-clip:content-box}.chat-empty[data-v-5dde3b27]{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px}.chat-empty__logo[data-v-5dde3b27]{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,#009688,#2d8cf0);color:#fff;display:flex;align-items:center;justify-content:center;font-size:32px;box-shadow:0 8px 24px #2d8cf04d}.chat-empty h3[data-v-5dde3b27]{margin:0;font-size:18px;color:var(--el-text-color-primary)}.chat-empty__desc[data-v-5dde3b27]{margin:0;font-size:13px;color:var(--el-text-color-secondary);line-height:1.6}.chat-empty__desc .hl[data-v-5dde3b27]{color:var(--el-color-primary);font-weight:600}.chat-empty__commands[data-v-5dde3b27]{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.chat-empty__commands .el-button[data-v-5dde3b27]{margin-left:0}.chat-panel__footer[data-v-5dde3b27]{flex-shrink:0}.chat-panel__stop[data-v-5dde3b27]{display:flex;justify-content:center;padding:6px 0 0}.chat-panel__error[data-v-5dde3b27]{padding:8px 16px 0}.fade-enter-active[data-v-5dde3b27],.fade-leave-active[data-v-5dde3b27]{transition:opacity .2s}.fade-enter-from[data-v-5dde3b27],.fade-leave-to[data-v-5dde3b27]{opacity:0}.chat-panel--fullscreen[data-v-5dde3b27]{position:fixed;top:5%;right:10%;bottom:5%;left:10%;z-index:9999;height:90vh!important;width:80%!important}
|
|
1
|
+
.render-block[data-v-ea599d5b]{margin:8px 0;padding:8px 0;width:100%}.render-block__component[data-v-ea599d5b]{border-radius:8px;background:var(--el-fill-color-lighter);box-shadow:0 0 10px #0000001a}.render-block__title[data-v-ea599d5b]{font-weight:600;font-size:14px;margin-bottom:6px;color:var(--el-text-color-primary)}.render-block__table[data-v-ea599d5b]{width:100%;max-width:900px;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000000f}.render-block__cards[data-v-ea599d5b]{display:flex;flex-direction:column;gap:8px}.card-item[data-v-ea599d5b]{border:1px solid var(--el-border-color);border-radius:8px;padding:10px 14px;background:var(--el-fill-color-lighter);box-shadow:0 2px 6px #0000000d}.card-field[data-v-ea599d5b]{display:flex;gap:6px;font-size:13px;line-height:1.8}.card-label[data-v-ea599d5b]{font-weight:600;color:var(--el-text-color-secondary);min-width:80px}.card-value[data-v-ea599d5b]{color:var(--el-text-color-primary)}.render-block__list[data-v-ea599d5b]{display:flex;flex-direction:column;gap:4px}.list-item[data-v-ea599d5b]{padding:6px 10px;font-size:13px;border-left:3px solid var(--el-color-primary);background:var(--el-fill-color-lighter);border-radius:0 4px 4px 0;box-shadow:0 1px 4px #0000000a}.suggested-next[data-v-0e0e9b65]{display:flex;align-items:center;gap:8px;padding:8px 12px;margin:6px 0;background:var(--el-color-primary-light-9);border:1px solid var(--el-color-primary-light-7);border-radius:8px;font-size:13px}.suggested-next__icon[data-v-0e0e9b65]{font-size:15px;flex-shrink:0}.suggested-next__text[data-v-0e0e9b65]{flex:1;color:var(--el-text-color-regular)}.chat-message[data-v-7317da3a]{display:flex;gap:10px;padding:12px 0;animation:msg-in-7317da3a .25s ease both}@keyframes msg-in-7317da3a{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.chat-message.role-user[data-v-7317da3a]{flex-direction:row-reverse}.chat-message.role-user .message-time[data-v-7317da3a]{text-align:right}.message-avatar[data-v-7317da3a]{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px;color:#fff;box-shadow:0 0 0 2px var(--el-bg-color),0 2px 6px #0000001f}.role-user .message-avatar[data-v-7317da3a]{background:linear-gradient(135deg,var(--el-color-primary),var(--el-color-primary-light-3))}.role-assistant .message-avatar[data-v-7317da3a]{background:linear-gradient(135deg,#009688,#2d8cf0)}.message-time[data-v-7317da3a]{display:block;font-size:11px;line-height:1;color:var(--el-text-color-placeholder);margin-bottom:4px}.message-body[data-v-7317da3a]{max-width:80%;min-width:0}.role-user .message-body[data-v-7317da3a]{background:linear-gradient(135deg,var(--el-color-primary-light-9),var(--el-color-primary-light-8));padding:8px 14px;border-radius:12px 4px 12px 12px;box-shadow:0 2px 8px #0000000f,0 1px 2px #0000000a}.role-assistant .message-body[data-v-7317da3a]{position:relative;background:var(--el-fill-color-lighter);padding:8px 14px;border-radius:4px 12px 12px;display:flex;flex-direction:column;box-shadow:0 2px 8px #0000000f,0 1px 2px #0000000a}.message-actions[data-v-7317da3a]{position:absolute;top:0;right:0;opacity:0;transition:opacity .2s;z-index:1}.role-assistant .message-body:hover .message-actions[data-v-7317da3a]{opacity:1}.role-assistant .message-body .message-time[data-v-7317da3a]{float:left;width:10px}.message-action-btn[data-v-7317da3a]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;border-radius:4px;color:var(--el-text-color-secondary);cursor:pointer;font-size:15px}.message-action-btn[data-v-7317da3a]:hover{background:var(--el-fill-color);color:var(--el-color-primary)}.message-user-text[data-v-7317da3a]{font-size:14px;line-height:1.5;color:var(--el-text-color-primary);white-space:pre-wrap;word-break:break-word}.message-content[data-v-7317da3a]{font-size:14px;line-height:1.6;color:var(--el-text-color-primary);word-break:break-word;background:transparent;border:none;outline:none;box-shadow:none;height:auto;overflow-wrap:break-word}.message-content[data-v-7317da3a] p{margin:0 0 8px}.message-content[data-v-7317da3a] p:last-child{margin-bottom:0}.message-content[data-v-7317da3a] h1,.message-content[data-v-7317da3a] h2,.message-content[data-v-7317da3a] h3,.message-content[data-v-7317da3a] h4,.message-content[data-v-7317da3a] h5,.message-content[data-v-7317da3a] h6{margin:12px 0 8px;font-weight:600;line-height:1.4;color:var(--el-text-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none}.message-content[data-v-7317da3a] h1[data-collapsed]:after,.message-content[data-v-7317da3a] h2[data-collapsed]:after,.message-content[data-v-7317da3a] h3[data-collapsed]:after,.message-content[data-v-7317da3a] h4[data-collapsed]:after,.message-content[data-v-7317da3a] h5[data-collapsed]:after,.message-content[data-v-7317da3a] h6[data-collapsed]:after{content:" ▸";font-size:.8em;color:var(--el-text-color-secondary)}.message-content[data-v-7317da3a] h1{font-size:20px}.message-content[data-v-7317da3a] h2{font-size:18px;padding-bottom:4px;border-bottom:1px solid var(--el-border-color-lighter)}.message-content[data-v-7317da3a] h3{font-size:16px}.message-content[data-v-7317da3a] h4{font-size:15px}.message-content[data-v-7317da3a] h5,.message-content[data-v-7317da3a] h6{font-size:14px}.message-content[data-v-7317da3a] strong{font-weight:600}.message-content[data-v-7317da3a] em{font-style:italic}.message-content[data-v-7317da3a] ul,.message-content[data-v-7317da3a] ol{margin:0 0 8px;padding-left:20px}.message-content[data-v-7317da3a] ul:last-child,.message-content[data-v-7317da3a] ol:last-child{margin-bottom:0}.message-content[data-v-7317da3a] li{margin:2px 0}.message-content[data-v-7317da3a] li>ul,.message-content[data-v-7317da3a] li>ol{margin:0}.message-content[data-v-7317da3a] code{padding:1px 5px;margin:0 2px;font-size:12px;font-family:Consolas,Monaco,Courier New,monospace;background:var(--el-fill-color);color:var(--el-color-primary);border-radius:4px}.message-content[data-v-7317da3a] pre{margin:8px 0;padding:10px 12px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);border-radius:6px;overflow-x:auto}.message-content[data-v-7317da3a] .md-code-block{margin:8px 0}.message-content[data-v-7317da3a] .md-code-block__head{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--el-fill-color);border:1px solid var(--el-border-color-lighter);border-bottom:none;border-radius:6px 6px 0 0;font-size:12px}.message-content[data-v-7317da3a] .md-code-block__lang{color:var(--el-text-color-secondary);font-family:Consolas,Monaco,Courier New,monospace}.message-content[data-v-7317da3a] .md-code-block__copy{color:var(--el-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .2s}.message-content[data-v-7317da3a] .md-code-block__copy:hover{opacity:.7}.message-content[data-v-7317da3a] .md-code-block pre{margin:0;border-radius:0 0 6px 6px}.message-content[data-v-7317da3a] pre code{display:block;padding:0;margin:0;font-size:12px;line-height:1.6;background:transparent;color:var(--el-text-color-primary);border-radius:0;white-space:pre}.message-content[data-v-7317da3a] blockquote{margin:8px 0;padding:4px 12px;border-left:3px solid var(--el-color-primary-light-5);background:var(--el-fill-color-lighter);border-radius:0 6px 6px 0;color:var(--el-text-color-regular)}.message-content[data-v-7317da3a] blockquote p{margin:0}.message-content[data-v-7317da3a] table{width:100%;margin:8px 0;border-collapse:collapse;font-size:13px}.message-content[data-v-7317da3a] th,.message-content[data-v-7317da3a] td{padding:6px 10px;border:1px solid var(--el-border-color-lighter);text-align:left}.message-content[data-v-7317da3a] th{background:var(--el-fill-color);font-weight:600;color:var(--el-text-color-primary)}.message-content[data-v-7317da3a] tbody tr:nth-child(2n){background:var(--el-fill-color-lighter)}.message-content.is-table-clickable[data-v-7317da3a] tbody tr{cursor:pointer;transition:background .15s}.message-content.is-table-clickable[data-v-7317da3a] tbody tr:hover{background:var(--el-color-primary-light-9)}.message-content.is-list-clickable[data-v-7317da3a] li{cursor:pointer;border-radius:4px;transition:background .15s}.message-content.is-list-clickable[data-v-7317da3a] li:hover{background:var(--el-color-primary-light-9)}.message-content[data-v-7317da3a] a{color:var(--el-color-primary);text-decoration:none}.message-content[data-v-7317da3a] a:hover{text-decoration:underline}.message-content[data-v-7317da3a] img{max-width:100%;border-radius:6px}.message-content[data-v-7317da3a] hr{margin:12px 0;border:none;border-top:1px solid var(--el-border-color-lighter)}.typing-dots[data-v-7317da3a]{display:inline-flex;align-items:center;gap:4px;padding:2px 0}.typing-dots i[data-v-7317da3a]{width:6px;height:6px;border-radius:50%;background:var(--el-color-primary);animation:typing-bounce-7317da3a 1.2s ease-in-out infinite}.typing-dots i[data-v-7317da3a]:nth-child(2){animation-delay:.15s}.typing-dots i[data-v-7317da3a]:nth-child(3){animation-delay:.3s}@keyframes typing-bounce-7317da3a{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.message-error[data-v-7317da3a]{margin-top:4px;font-size:12px;color:var(--el-color-danger)}.message-reasoning[data-v-7317da3a]{margin-bottom:8px}.reasoning-toggle[data-v-7317da3a]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--el-border-color);border-radius:999px;background:var(--el-fill-color);color:var(--el-text-color-regular);font-size:12px;line-height:1;cursor:pointer;transition:all .2s}.reasoning-toggle[data-v-7317da3a]:hover{background:var(--el-fill-color-light);color:var(--el-color-primary);border-color:var(--el-color-primary-light-5)}.reasoning-toggle__arrow[data-v-7317da3a]{display:inline-block;font-size:12px;transition:transform .2s}.reasoning-toggle__arrow.open[data-v-7317da3a]{transform:rotate(180deg)}.reasoning-content[data-v-7317da3a]{margin:6px 0 0;padding:8px;background:var(--el-fill-color);border-radius:6px;font-size:12px;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.message-files[data-v-7317da3a]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.message-file[data-v-7317da3a]{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--el-border-color);border-radius:8px;background:var(--el-bg-color);font-size:12px}.message-file.is-image[data-v-7317da3a]{padding:4px;flex-direction:column;align-items:flex-start}.file-image[data-v-7317da3a]{max-width:200px;max-height:200px;border-radius:6px;object-fit:contain;cursor:zoom-in;transition:box-shadow .2s}.file-image[data-v-7317da3a]:hover{box-shadow:0 0 0 2px var(--el-color-primary-light-5)}.file-info[data-v-7317da3a]{display:flex;flex-direction:column;gap:2px}.file-name[data-v-7317da3a]{color:var(--el-text-color-primary);font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size[data-v-7317da3a]{color:var(--el-text-color-secondary);font-size:11px}.chat-input[data-v-e7db63f0]{padding:12px 16px;border-top:1px solid var(--el-border-color-lighter);background:var(--el-bg-color);display:flex;flex-direction:column}.chat-input__files[data-v-e7db63f0]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.chat-input__preview[data-v-e7db63f0]{margin-left:auto;height:24px;padding:0 8px}.chat-input__files[data-v-e7db63f0] .el-tag{border-radius:999px}.chat-input__send.el-button--primary[data-v-e7db63f0]{background:linear-gradient(135deg,#009688,#2d8cf0);border-color:transparent;color:#fff;transition:box-shadow .2s,transform .2s}.chat-input__send.el-button--primary[data-v-e7db63f0]:hover{background:linear-gradient(135deg,#00807a,#256fce);box-shadow:0 4px 12px #2d8cf059;transform:translateY(-1px)}.chat-input__wrap[data-v-e7db63f0]{display:flex;align-items:flex-end;gap:8px;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);border-radius:12px;padding:6px 6px 6px 12px;transition:border-color .2s,box-shadow .2s}.chat-input__wrap[data-v-e7db63f0]:focus-within{border-color:var(--el-color-primary);box-shadow:0 0 0 2px var(--el-color-primary-light-8)}.chat-input__wrap[data-v-e7db63f0] .el-textarea__inner{border:none;background:transparent;box-shadow:none;padding:4px 0;line-height:1.6;font-size:14px}.chat-input__wrap[data-v-e7db63f0] .el-textarea__inner:focus{box-shadow:none}.chat-input__actions[data-v-e7db63f0]{flex-shrink:0;display:flex;align-items:center;gap:2px;padding-bottom:2px}.form-tip[data-v-6282664f]{font-size:12px;color:var(--el-text-color-secondary);line-height:1.6;margin-top:4px}.form-tip-inline[data-v-6282664f]{margin-left:8px;font-size:12px;color:var(--el-text-color-secondary)}.temp-row[data-v-6282664f]{display:flex;align-items:center;gap:12px;width:100%}.temp-val[data-v-6282664f]{width:28px;text-align:right;font-size:13px;color:var(--el-text-color-secondary)}.chat-panel-root[data-v-5dde3b27]{position:fixed;z-index:1999}.ai-fab[data-v-5dde3b27]{position:fixed;right:22px;bottom:25px;z-index:2000;display:flex;align-items:center;gap:8px;height:52px;padding:0 22px 0 18px;border-radius:26px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;background:linear-gradient(135deg,#009688,#2d8cf0);box-shadow:0 6px 24px #2d8cf080;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s;-webkit-user-select:none;user-select:none;overflow:hidden;isolation:isolate;animation:ai-fab-float-5dde3b27 3.6s ease-in-out infinite}@keyframes ai-fab-float-5dde3b27{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.ai-fab[data-v-5dde3b27]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);background-size:200% 100%;background-position:100% 0;animation:ai-fab-shimmer-5dde3b27 4s ease-in-out infinite;z-index:-1;pointer-events:none}@keyframes ai-fab-shimmer-5dde3b27{0%,to{background-position:100% 0}50%{background-position:0 0}}.ai-fab[data-v-5dde3b27]:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:inherit;border:2px solid rgba(45,140,240,.35);animation:ai-fab-pulse-5dde3b27 2.4s ease-in-out infinite;pointer-events:none;z-index:-2}@keyframes ai-fab-pulse-5dde3b27{0%,to{opacity:.6;transform:scale(1)}50%{opacity:0;transform:scale(1.12)}}.ai-fab__icon[data-v-5dde3b27]{font-size:22px;filter:drop-shadow(0 0 4px rgba(255,255,255,.4));transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.ai-fab__label[data-v-5dde3b27]{line-height:1;text-shadow:0 1px 4px rgba(0,0,0,.15)}.ai-fab[data-v-5dde3b27]:hover{animation:none;transform:translateY(-4px) scale(1.04);box-shadow:0 12px 32px #2d8cf099}.ai-fab[data-v-5dde3b27]:hover:before{animation:none;background-position:0 0}.ai-fab--active[data-v-5dde3b27]{animation:none;box-shadow:0 4px 16px #2d8cf066}.ai-fab--active[data-v-5dde3b27]:after{animation:none;opacity:0}.ai-fab--active[data-v-5dde3b27]:before{animation:none}.ai-fab--active .ai-fab__icon[data-v-5dde3b27]{transform:rotate(45deg)}.ai-fab--dragged[data-v-5dde3b27]{animation:none}.ai-fab--dragged[data-v-5dde3b27]:before,.ai-fab--dragged[data-v-5dde3b27]:after{animation:none;opacity:0}.chat-panel[data-v-5dde3b27]{position:fixed;bottom:25px;right:22px;z-index:9999;display:flex;flex-direction:column;height:680px;width:560px;min-height:400px;background:var(--el-bg-color);box-shadow:0 20px 50px #0000002e,0 6px 18px #00000014;border-radius:16px;transform-origin:bottom right}.panel-enter-active[data-v-5dde3b27],.panel-leave-active[data-v-5dde3b27]{transition:opacity .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.panel-enter-from[data-v-5dde3b27],.panel-leave-to[data-v-5dde3b27]{opacity:0;transform:translateY(16px) scale(.96)}.chat-panel__header[data-v-5dde3b27]{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;cursor:move;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--el-border-color-lighter);background:linear-gradient(135deg,var(--el-color-primary-light-7),var(--el-bg-color));border-radius:16px 16px 0 0;flex-shrink:0}.chat-panel__title[data-v-5dde3b27]{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.title-icon[data-v-5dde3b27]{color:var(--el-color-primary);font-size:18px}.chat-panel__ops[data-v-5dde3b27]{display:flex;gap:4px}.chat-panel__scroll-wrap[data-v-5dde3b27]{position:relative;flex:1;min-height:0;display:flex}.chat-panel__body[data-v-5dde3b27]{flex:1;overflow-y:auto;padding:0 16px;min-height:0;scrollbar-width:thin;scrollbar-color:var(--el-border-color-darker) transparent}.chat-panel__nav[data-v-5dde3b27]{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 4px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);border-radius:10px;box-shadow:0 2px 10px #00000014;opacity:.35;transition:opacity .2s}.chat-panel__nav[data-v-5dde3b27]:hover,.chat-panel__nav.is-suppressed-scroll[data-v-5dde3b27]{opacity:1}.chat-panel__nav-count[data-v-5dde3b27]{font-size:10px;line-height:1;color:var(--el-text-color-secondary);font-variant-numeric:tabular-nums}.chat-panel__nav-btn[data-v-5dde3b27]{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--el-text-color-regular);cursor:pointer;font-size:14px;transition:background .15s,color .15s}.chat-panel__nav-btn[data-v-5dde3b27]:hover:not(:disabled){background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.chat-panel__nav-btn[data-v-5dde3b27]:disabled{color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:.5}.chat-panel__body[data-v-5dde3b27] [data-msg-id].is-locate{animation:locate-flash-5dde3b27 1.2s ease both}@keyframes locate-flash-5dde3b27{0%{outline:2px solid var(--el-color-primary);outline-offset:2px;border-radius:8px}to{outline:2px solid transparent;outline-offset:2px;border-radius:8px}}.chat-panel__body[data-v-5dde3b27]::-webkit-scrollbar{width:8px}.chat-panel__body[data-v-5dde3b27]::-webkit-scrollbar-track{background:var(--el-fill-color-lighter);border-radius:4px}.chat-panel__body[data-v-5dde3b27]::-webkit-scrollbar-thumb{background:var(--el-border-color-darker);border-radius:4px;border:2px solid transparent;background-clip:content-box}.chat-panel__body[data-v-5dde3b27]::-webkit-scrollbar-thumb:hover{background:var(--el-text-color-secondary);background-clip:content-box}.chat-empty[data-v-5dde3b27]{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px}.chat-empty__logo[data-v-5dde3b27]{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,#009688,#2d8cf0);color:#fff;display:flex;align-items:center;justify-content:center;font-size:32px;box-shadow:0 8px 24px #2d8cf04d}.chat-empty h3[data-v-5dde3b27]{margin:0;font-size:18px;color:var(--el-text-color-primary)}.chat-empty__desc[data-v-5dde3b27]{margin:0;font-size:13px;color:var(--el-text-color-secondary);line-height:1.6}.chat-empty__desc .hl[data-v-5dde3b27]{color:var(--el-color-primary);font-weight:600}.chat-empty__commands[data-v-5dde3b27]{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.chat-empty__commands .el-button[data-v-5dde3b27]{margin-left:0}.chat-panel__footer[data-v-5dde3b27]{flex-shrink:0}.chat-panel__stop[data-v-5dde3b27]{display:flex;justify-content:center;padding:6px 0 0}.chat-panel__error[data-v-5dde3b27]{padding:8px 16px 0}.fade-enter-active[data-v-5dde3b27],.fade-leave-active[data-v-5dde3b27]{transition:opacity .2s}.fade-enter-from[data-v-5dde3b27],.fade-leave-to[data-v-5dde3b27]{opacity:0}.chat-panel--fullscreen[data-v-5dde3b27]{position:fixed;top:5%;right:10%;bottom:5%;left:10%;z-index:9999;height:90vh!important;width:80%!important}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { LLMProvider } from '../agent-core';
|
|
2
|
+
import { ProviderPreset } from '../types';
|
|
3
|
+
export interface OpenAICompatibleProviderOptions {
|
|
4
|
+
preset: ProviderPreset;
|
|
5
|
+
mode?: 'direct' | 'proxy';
|
|
6
|
+
}
|
|
7
|
+
/** 兼容传入 origin、/v1 或完整 /chat/completions 地址 */
|
|
8
|
+
export declare function resolveChatCompletionsUrl(baseUrl: string): string;
|
|
9
|
+
/** 代理地址兼容 http://host 与 http://host/api/chat 两种写法 */
|
|
10
|
+
export declare function getServerBase(proxyUrl: string): string;
|
|
11
|
+
export declare function createOpenAICompatibleProvider(options: OpenAICompatibleProviderOptions): LLMProvider;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LLMProvider } from '../agent-core';
|
|
2
|
+
export interface ProviderFactoryContext {
|
|
3
|
+
id: string;
|
|
4
|
+
mode: 'direct' | 'proxy';
|
|
5
|
+
}
|
|
6
|
+
export type ProviderFactory = (context: ProviderFactoryContext) => LLMProvider;
|
|
7
|
+
export declare function registerProvider(id: string, factory: ProviderFactory): void;
|
|
8
|
+
export declare function createProvider(id: string, mode: 'direct' | 'proxy'): LLMProvider;
|
|
@@ -109,29 +109,33 @@ export declare function useAgentChat(options: AgentChatOptions): {
|
|
|
109
109
|
hideMarkdown?: boolean;
|
|
110
110
|
}[]>;
|
|
111
111
|
settings: import('vue').Ref<{
|
|
112
|
-
|
|
113
|
-
baseUrl: string;
|
|
114
|
-
model: string;
|
|
115
|
-
temperature: number;
|
|
116
|
-
useTools?: boolean;
|
|
112
|
+
providerId: string;
|
|
117
113
|
providerMode: "direct" | "proxy";
|
|
118
114
|
proxyUrl: string;
|
|
119
|
-
|
|
120
|
-
thinkingEffort?: "low" | "high" | "max";
|
|
115
|
+
providers: Record<string, import('..').ProviderSettings>;
|
|
121
116
|
mdTableClick?: boolean;
|
|
122
117
|
mdListClick?: boolean;
|
|
123
|
-
}, ChatSettings | {
|
|
124
|
-
apiKey: string;
|
|
125
|
-
baseUrl: string;
|
|
126
|
-
model: string;
|
|
127
|
-
temperature: number;
|
|
128
118
|
useTools?: boolean;
|
|
129
|
-
|
|
130
|
-
|
|
119
|
+
apiKey?: string;
|
|
120
|
+
baseUrl?: string;
|
|
121
|
+
model?: string;
|
|
122
|
+
temperature?: number;
|
|
131
123
|
thinking?: boolean;
|
|
132
124
|
thinkingEffort?: "low" | "high" | "max";
|
|
125
|
+
}, ChatSettings | {
|
|
126
|
+
providerId: string;
|
|
127
|
+
providerMode: "direct" | "proxy";
|
|
128
|
+
proxyUrl: string;
|
|
129
|
+
providers: Record<string, import('..').ProviderSettings>;
|
|
133
130
|
mdTableClick?: boolean;
|
|
134
131
|
mdListClick?: boolean;
|
|
132
|
+
useTools?: boolean;
|
|
133
|
+
apiKey?: string;
|
|
134
|
+
baseUrl?: string;
|
|
135
|
+
model?: string;
|
|
136
|
+
temperature?: number;
|
|
137
|
+
thinking?: boolean;
|
|
138
|
+
thinkingEffort?: "low" | "high" | "max";
|
|
135
139
|
}>;
|
|
136
140
|
loading: import('vue').Ref<boolean, boolean>;
|
|
137
141
|
errorMsg: import('vue').Ref<string, string>;
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ChatSettings, ProviderPreset, ProviderSettings } from './types';
|
|
2
|
+
export declare const DEFAULT_PROVIDER_ID = "deepseek";
|
|
3
|
+
export declare const PROVIDER_PRESETS: ProviderPreset[];
|
|
4
|
+
export declare function registerProviderPreset(preset: ProviderPreset): void;
|
|
5
|
+
export declare function getProviderPreset(id?: string): ProviderPreset | undefined;
|
|
6
|
+
export declare function listProviderPresets(): ProviderPreset[];
|
|
7
|
+
export declare function createProviderSettings(preset: ProviderPreset): ProviderSettings;
|
|
8
|
+
export declare function syncLegacySettings(settings: ChatSettings): ChatSettings;
|
|
9
|
+
export declare function normalizeSettings(input?: Partial<ChatSettings>): ChatSettings;
|
|
10
|
+
export declare function mergeSettings(base: ChatSettings, raw?: Partial<ChatSettings>): ChatSettings;
|
|
11
|
+
export declare const MODEL_OPTIONS: import('./types').ProviderModelOption[];
|