@fv-ui/ai-chat 0.2.0 → 0.3.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 +10 -0
- package/dist/index.d.ts +18 -0
- package/dist/style.css +1 -1
- package/es/index.mjs +95 -76
- package/lib/index.js +95 -76
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -437,6 +437,8 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
|
|
|
437
437
|
| title | string | '' | 顶栏标题(同时作空态欢迎页名称) |
|
|
438
438
|
| showHeader | boolean | false | 显示顶栏(标题 + 模型选择器;models 多选选择器在顶栏内,需开启才可见) |
|
|
439
439
|
| centerWelcome | boolean | true | 空态居中:未开始对话时欢迎内容与输入区整体垂直居中,首条消息后输入区恢复固定底部 |
|
|
440
|
+
| showUserAvatar | boolean | true | 显示用户头像(false 时用户消息不渲染头像;助手头像不受影响) |
|
|
441
|
+
| showUserName | boolean | true | 显示用户名称(false 时用户消息不渲染头部名称行;助手名称不受影响) |
|
|
440
442
|
| placeholder | string | '' | 输入框占位 |
|
|
441
443
|
| senderShadow | boolean | true | 输入区阴影效果(透传 Sender 的 shadow) |
|
|
442
444
|
| suggestions | AiChatSuggestion[] | [] | 空态建议列表(Prompts 项,key 必填) |
|
|
@@ -489,6 +491,8 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
|
|
|
489
491
|
| scrollThreshold | number | 40 | 吸底阈值(px):距底不超过该值才自动跟随 |
|
|
490
492
|
| showActions | boolean | true | 显示消息操作按钮(复制/重生成) |
|
|
491
493
|
| showBranchSwitch | boolean | true | 显示分支切换器 |
|
|
494
|
+
| showUserAvatar | boolean | true | 显示用户头像(助手头像不受影响) |
|
|
495
|
+
| showUserName | boolean | true | 显示用户名称(助手名称不受影响) |
|
|
492
496
|
|
|
493
497
|
| Event | 说明 |
|
|
494
498
|
| --- | --- |
|
|
@@ -499,6 +503,10 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
|
|
|
499
503
|
| empty | 覆盖空态整区 |
|
|
500
504
|
| message-avatar / message-actions | 透传给每条 AiMessage |
|
|
501
505
|
|
|
506
|
+
| CSS 变量 | 默认 | 说明 |
|
|
507
|
+
| --- | --- | --- |
|
|
508
|
+
| --fv-messages-max-width | none | 滚动内容最大宽度;超出部分左右居中(内层 `.fv-messages-inner`,配合 `margin: 0 auto`) |
|
|
509
|
+
|
|
502
510
|
| Ref | 说明 |
|
|
503
511
|
| --- | --- |
|
|
504
512
|
| scrollToBottom(smooth?) / scrollToTop() | 滚动控制 |
|
|
@@ -513,6 +521,8 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
|
|
|
513
521
|
| branch | AiMessageBranchInfo | undefined | 分支元数据 { count, index };缺省视为单分支 |
|
|
514
522
|
| showActions | boolean | true | 显示复制/重生成(仅 assistant) |
|
|
515
523
|
| showBranchSwitch | boolean | true | 显示分支切换器(branch.count > 1 时) |
|
|
524
|
+
| showUserAvatar | boolean | true | 显示用户头像(false 时用户消息不渲染头像块) |
|
|
525
|
+
| showUserName | boolean | true | 显示用户名称(false 时用户消息不渲染头部名称行) |
|
|
516
526
|
| autoCollapse | boolean | true | Thinking autoCollapse 透传 |
|
|
517
527
|
|
|
518
528
|
| Event | 说明 |
|
package/dist/index.d.ts
CHANGED
|
@@ -1474,6 +1474,10 @@ type __VLS_Props$3 = {
|
|
|
1474
1474
|
showActions?: boolean;
|
|
1475
1475
|
/** 显示分支切换器 */
|
|
1476
1476
|
showBranchSwitch?: boolean;
|
|
1477
|
+
/** 显示用户头像(助手头像不受影响) */
|
|
1478
|
+
showUserAvatar?: boolean;
|
|
1479
|
+
/** 显示用户名称(助手名称不受影响) */
|
|
1480
|
+
showUserName?: boolean;
|
|
1477
1481
|
};
|
|
1478
1482
|
declare function scrollToBottom(smooth?: boolean): void;
|
|
1479
1483
|
/** 回到顶部:与 scrollToBottom 同款 try/catch 回落(happy-dom 旧版 scrollTo(options) 可能缺实现) */
|
|
@@ -1512,6 +1516,8 @@ declare const __VLS_base$2: vue.DefineComponent<__VLS_Props$3, {
|
|
|
1512
1516
|
description: string;
|
|
1513
1517
|
showActions: boolean;
|
|
1514
1518
|
showBranchSwitch: boolean;
|
|
1519
|
+
showUserAvatar: boolean;
|
|
1520
|
+
showUserName: boolean;
|
|
1515
1521
|
suggestions: AiMessagesSuggestion[];
|
|
1516
1522
|
suggestionsTitle: string;
|
|
1517
1523
|
scrollThreshold: number;
|
|
@@ -1555,6 +1561,10 @@ type __VLS_Props$2 = {
|
|
|
1555
1561
|
showHeader?: boolean;
|
|
1556
1562
|
/** 空态居中:未开始对话时欢迎内容与输入区整体垂直居中,首条消息后恢复输入区固定底部 */
|
|
1557
1563
|
centerWelcome?: boolean;
|
|
1564
|
+
/** 显示用户头像(false 时用户消息不渲染头像;助手头像不受影响) */
|
|
1565
|
+
showUserAvatar?: boolean;
|
|
1566
|
+
/** 显示用户名称(false 时用户消息不渲染头部名称行;助手名称不受影响) */
|
|
1567
|
+
showUserName?: boolean;
|
|
1558
1568
|
/** 输入框占位 */
|
|
1559
1569
|
placeholder?: string;
|
|
1560
1570
|
/** 输入区阴影效果(透传 Sender;关闭传 false) */
|
|
@@ -1640,6 +1650,8 @@ declare const __VLS_base$1: vue.DefineComponent<__VLS_Props$2, {
|
|
|
1640
1650
|
apiKey: string;
|
|
1641
1651
|
model: string;
|
|
1642
1652
|
messages: MessageNode[];
|
|
1653
|
+
showUserAvatar: boolean;
|
|
1654
|
+
showUserName: boolean;
|
|
1643
1655
|
suggestions: AiChatSuggestion[];
|
|
1644
1656
|
models: string[];
|
|
1645
1657
|
adapter: ChatAdapter;
|
|
@@ -1676,6 +1688,10 @@ type __VLS_Props$1 = {
|
|
|
1676
1688
|
showActions?: boolean;
|
|
1677
1689
|
/** 显示分支切换器(branch.count > 1 时) */
|
|
1678
1690
|
showBranchSwitch?: boolean;
|
|
1691
|
+
/** 显示用户头像(false 时用户消息不渲染头像块;助手侧不受影响) */
|
|
1692
|
+
showUserAvatar?: boolean;
|
|
1693
|
+
/** 显示用户名称(false 时用户消息不渲染头部名称行;助手侧不受影响) */
|
|
1694
|
+
showUserName?: boolean;
|
|
1679
1695
|
/** Thinking autoCollapse 透传 */
|
|
1680
1696
|
autoCollapse?: boolean;
|
|
1681
1697
|
};
|
|
@@ -1711,6 +1727,8 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props$1, {
|
|
|
1711
1727
|
branch: AiMessageBranchInfo;
|
|
1712
1728
|
showActions: boolean;
|
|
1713
1729
|
showBranchSwitch: boolean;
|
|
1730
|
+
showUserAvatar: boolean;
|
|
1731
|
+
showUserName: boolean;
|
|
1714
1732
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
1715
1733
|
declare const __VLS_export$1: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
1716
1734
|
declare const _default$1: typeof __VLS_export$1;
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.fv-xmarkdown{color:var(--el-text-color-primary,#303133);line-height:1.7;word-break:break-word}.fv-xmarkdown h1,.fv-xmarkdown h2,.fv-xmarkdown h3,.fv-xmarkdown h4,.fv-xmarkdown h5,.fv-xmarkdown h6{color:var(--el-text-color-primary,#303133);font-weight:600;margin:1em 0 .5em}.fv-xmarkdown h1{font-size:1.5em}.fv-xmarkdown h2{font-size:1.3em}.fv-xmarkdown h3{font-size:1.15em}.fv-xmarkdown p{margin:.5em 0}.fv-xmarkdown a{color:var(--el-color-primary,#409eff);text-decoration:none}.fv-xmarkdown a:hover{text-decoration:underline}.fv-xmarkdown blockquote{border-left:4px solid var(--el-border-color,#dcdfe6);color:var(--el-text-color-regular,#606266);margin:.5em 0;padding:.4em 1em}.fv-xmarkdown blockquote,.fv-xmarkdown code{background:var(--el-fill-color-light,#f5f7fa)}.fv-xmarkdown code{border-radius:3px;color:var(--el-color-danger,#f56c6c);font-family:JetBrains Mono,Consolas,Courier New,monospace;font-size:.9em;padding:.15em .4em}.fv-xmarkdown pre{background:#282c34;border-radius:6px;margin:.5em 0;overflow-x:auto;padding:1em}.fv-xmarkdown pre code{background:transparent;color:#dcdfe6;font-size:.9em;line-height:1.6;padding:0}.fv-xmarkdown table{border-collapse:collapse;margin:.5em 0;width:100%}.fv-xmarkdown table td,.fv-xmarkdown table th{border:1px solid var(--el-border-color-lighter,#ebeef5);padding:.5em .8em;text-align:left}.fv-xmarkdown table th{background:var(--el-fill-color-light,#f5f7fa);font-weight:600}.fv-xmarkdown table tr:nth-child(2n) td{background:var(--el-fill-color-blank,#fafcff)}.fv-xmarkdown .katex-display{margin:.5em 0;overflow-x:auto}.fv-typewriter{display:inline-block;max-width:100%;position:relative}.fv-typewriter .fv-typewriter-text{white-space:pre-wrap;word-break:break-word}.fv-typewriter .fv-typewriter-suffix{animation:fv-typewriter-blink 1s step-start infinite;display:inline-block}.fv-typewriter .fv-typewriter-fog{animation:fv-typewriter-fog-in .3s ease-out both;background:linear-gradient(90deg,transparent,var(--fv-typewriter-fog-color,var(--el-bg-color,#fff)));bottom:0;pointer-events:none;position:absolute;right:0;top:0}@keyframes fv-typewriter-blink{0%,to{opacity:1}50%{opacity:0}}@keyframes fv-typewriter-fog-in{0%{opacity:0}to{opacity:1}}.fv-bubble{align-items:flex-start;display:flex;gap:var(--fv-bubble-avatar-gap,12px)}.fv-bubble.is-end{flex-direction:row-reverse;justify-content:flex-end}.fv-bubble.is-end .fv-bubble-main{align-items:flex-end}.fv-bubble .fv-bubble-avatar{display:flex;flex-shrink:0}.fv-bubble .fv-bubble-avatar .el-avatar{height:var(--fv-bubble-avatar-size,36px);width:var(--fv-bubble-avatar-size,36px)}.fv-bubble .fv-bubble-main{align-items:flex-start;display:flex;flex:1;flex-direction:column;max-width:100%;min-width:0}.fv-bubble .fv-bubble-main .fv-bubble-footer,.fv-bubble .fv-bubble-main .fv-bubble-header{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px)}.fv-bubble .fv-bubble-main .fv-bubble-footer{margin-top:4px}.fv-bubble .fv-bubble-content{border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);max-width:100%;min-width:0;padding:var(--el-main-padding,12px) calc(var(--el-main-padding, 12px) + 4px);position:relative;word-break:break-word}.fv-bubble .fv-bubble-content.no-padding{padding:0}.fv-bubble .fv-bubble-content .fv-bubble-text{white-space:pre-wrap}.fv-bubble.shape-round .fv-bubble-content{border-radius:var(--el-border-radius-round,20px)}.fv-bubble.shape-corner .fv-bubble-content{border-start-start-radius:calc(var(--el-border-radius-base, 4px) - 2px)}.fv-bubble.is-end.shape-corner .fv-bubble-content{border-start-end-radius:calc(var(--el-border-radius-base, 4px) - 2px);border-start-start-radius:calc(var(--el-border-radius-base, 4px) + 4px)}.fv-bubble.variant-borderless .fv-bubble-content,.fv-bubble.variant-filled .fv-bubble-content{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-bubble.variant-borderless .fv-bubble-content,.fv-bubble.variant-outlined .fv-bubble-content{border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6)}.fv-bubble.variant-outlined .fv-bubble-content{background:none}.fv-bubble.variant-shadow .fv-bubble-content{background:none;box-shadow:var(--el-box-shadow-light,0 0 12px rgba(0,0,0,.12))}.fv-bubble .fv-bubble-content.no-style{background:transparent;border:none;box-shadow:none;padding:0}.fv-bubble .fv-bubble-loading{align-items:center;display:flex;gap:5px;min-height:1em;width:fit-content}.fv-bubble .fv-bubble-loading .fv-bubble-loading-dot{animation:fv-bubble-wave 1s ease-in-out infinite;background-color:var(--el-color-primary,#409eff);border-radius:50%;height:5px;width:5px}@keyframes fv-bubble-wave{0%,to{transform:translateY(-2px)}50%{transform:translateY(2px)}}.fv-bubble-list{display:flex;flex-direction:column;min-height:0;position:relative}.fv-bubble-list .fv-bubble-list-scroll{display:flex;flex-direction:column;gap:16px;min-height:0;overflow-y:auto}.fv-bubble-list .fv-bubble-list-scroll>.fv-bubble{flex-shrink:0}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar{overflow-y:scroll;scrollbar-width:auto}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar::-webkit-scrollbar{-webkit-appearance:none;width:6px}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar::-webkit-scrollbar-thumb{background-color:var(--el-border-color,#dcdfe6);border-radius:3px}.fv-bubble-list .fv-bubble-list-back{align-items:center;bottom:16px;box-shadow:var(--el-box-shadow-light,0 0 12px rgba(0,0,0,.12));display:inline-flex;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);z-index:1}.fv-bubble-list .fv-bubble-list-back .fv-bubble-list-back-icon{align-items:center;display:inline-flex;justify-content:center;line-height:1}.fv-bubble-list-fade-enter-active,.fv-bubble-list-fade-leave-active{transition:opacity .2s ease,transform .2s ease}.fv-bubble-list-fade-enter-from,.fv-bubble-list-fade-leave-to{opacity:0;transform:translate(-50%,4px)}.fv-sender{box-sizing:border-box;display:flex;flex-direction:column;width:100%}.fv-sender .fv-sender-header{animation:fv-sender-slide-down .3s ease;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);max-height:300px;overflow:hidden;padding:8px 12px}.fv-sender .fv-sender-body{background-color:var(--el-fill-color-blank,#fff);border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);display:flex;flex-direction:column;gap:6px;padding:8px 12px;transition:border-color .2s}.fv-sender .fv-sender-body .fv-sender-body-top:empty{display:none}.fv-sender .fv-sender-body .fv-sender-row{align-items:flex-end;display:flex;gap:8px}.fv-sender .fv-sender-body .fv-sender-prefix{align-items:center;align-self:center;display:flex;flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-recording{align-items:center;background-color:var(--el-color-primary-light-9,#ecf5ff);border-radius:calc(var(--el-border-radius-base, 4px) + 2px);display:flex;flex:1;gap:8px;min-width:0;outline:none;padding:4px 8px}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-cancel{flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-cancel:hover{color:var(--el-color-danger,#f56c6c)}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-wave{align-items:center;direction:rtl;display:flex;flex:1;gap:2px;height:22px;justify-content:flex-end;min-width:0;overflow:hidden}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-wave .fv-sender-recording-bar{background-color:var(--el-color-primary,#409eff);border-radius:1px;flex-shrink:0;min-height:2px;opacity:.75;width:2px}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-duration{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:var(--el-font-size-small,12px);font-variant-numeric:tabular-nums;min-width:3em;text-align:center}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-confirm{flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-input{display:flex;flex:1;min-width:0;position:relative}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea{background:transparent;border:none;box-sizing:border-box;color:var(--el-text-color-primary,#303133);flex:1;font:inherit;font-family:inherit;font-size:var(--el-font-size-base,14px);line-height:22px;min-width:0;outline:none;padding:4px 0;resize:none}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea::placeholder{color:var(--el-text-color-placeholder,#a8abb2)}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea:disabled{color:var(--el-text-color-disabled,#a8abb2);cursor:not-allowed}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea[readonly]{cursor:default}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-trigger-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-sender .fv-sender-body .fv-sender-actions{align-items:center;align-self:flex-end;display:flex;flex-shrink:0;gap:4px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-action-left{align-items:center;display:flex;gap:4px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech{color:var(--el-text-color-regular,#606266);padding:6px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech .el-icon{font-size:18px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech:not(.is-disabled):active,.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech:not(.is-disabled):hover{background-color:transparent;color:var(--el-text-color-primary,#303133)}.fv-sender.variant-updown .fv-sender-row{align-items:stretch;flex-direction:column;gap:6px}.fv-sender.variant-updown .fv-sender-row .fv-sender-input{width:100%}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions{align-self:flex-end;justify-content:flex-end}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions:has(.fv-sender-action-left){align-self:stretch}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions:has(.fv-sender-action-left) .fv-sender-action-left{margin-right:auto}.fv-sender.is-focused .fv-sender-body{border-color:var(--el-color-primary,#409eff)}.fv-sender.is-disabled .fv-sender-body{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-sender.has-shadow .fv-sender-body{box-shadow:0 8px 20px 0 var(--el-box-shadow-color,rgba(0,0,0,.08));transition:border-color .2s,box-shadow .2s}.fv-sender.has-shadow.is-focused .fv-sender-body{box-shadow:0 8px 24px 0 var(--el-box-shadow-color,rgba(0,0,0,.12))}.fv-sender .fv-sender-stop{--fv-sender-stop-icon-size:16px;--fv-sender-stop-ring-width:2px;--fv-sender-stop-ring-duration:1.1s;position:relative}.fv-sender .fv-sender-stop .el-icon{align-items:center;display:inline-flex;font-size:var(--fv-sender-stop-icon-size);justify-content:center}.fv-sender .fv-sender-stop .fv-stop-icon{display:block}.fv-sender .fv-sender-stop .fv-sender-stop-ring{height:100%;inset:0;overflow:visible;pointer-events:none;position:absolute;width:100%}.fv-sender .fv-sender-stop .fv-sender-stop-ring .fv-sender-stop-ring-rect{x:calc(var(--fv-sender-stop-ring-width)/2);y:calc(var(--fv-sender-stop-ring-width)/2);fill:none;stroke:rgb(255,255,255,var(--ring-alpha,.9));stroke-width:var(--fv-sender-stop-ring-width);stroke-dasharray:0 calc(100 - var(--ring-len, 10)) var(--ring-len,10) 0;animation:fv-sender-stop-spin var(--fv-sender-stop-ring-duration) linear infinite;height:calc(100% - var(--fv-sender-stop-ring-width));width:calc(100% - var(--fv-sender-stop-ring-width))}@media (prefers-reduced-motion:reduce){.fv-sender .fv-sender-stop .fv-sender-stop-ring-rect{animation:none}}.fv-sender .fv-sender-footer{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);padding:6px 12px}@keyframes fv-sender-slide-down{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}@keyframes fv-sender-stop-spin{to{stroke-dashoffset:-100}}.fv-mention-sender{position:relative}.fv-mention-sender .fv-mention-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-mention-popover .fv-mention-panel{max-height:260px;overflow-y:auto;padding:4px}.fv-mention-popover .fv-mention-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-mention-popover .fv-mention-loading{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);padding:8px;text-align:center}.fv-mention-popover .fv-mention-item{align-items:center;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-primary,#303133);cursor:pointer;display:flex;font-size:var(--el-font-size-base,14px);gap:8px;padding:6px 8px}.fv-mention-popover .fv-mention-item.is-active,.fv-mention-popover .fv-mention-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-mention-popover .fv-mention-item .fv-mention-avatar{align-items:center;background-color:var(--el-fill-color,#e9e9eb);border-radius:50%;color:var(--el-text-color-regular,#606266);display:inline-flex;flex-shrink:0;font-size:var(--el-font-size-small,12px);height:24px;justify-content:center;overflow:hidden;width:24px}.fv-mention-popover .fv-mention-item .fv-mention-avatar img{height:100%;object-fit:cover;width:100%}.fv-mention-popover .fv-mention-item .fv-mention-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-editor-sender{box-sizing:border-box;display:flex;flex-direction:column;width:100%}.fv-editor-sender .fv-editor-header{animation:fv-editor-slide-down .3s ease;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);max-height:300px;overflow:hidden;padding:8px 12px}.fv-editor-sender .fv-editor-body{align-items:flex-end;background-color:var(--el-fill-color-blank,#fff);border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);display:flex;gap:8px;padding:8px 12px;transition:border-color .2s}.fv-editor-sender .fv-editor-body .fv-editor-prefix{align-items:center;align-self:center;display:flex;flex-shrink:0}.fv-editor-sender .fv-editor-body .fv-editor-input{display:flex;flex:1;min-width:0;position:relative}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-content{background:transparent;box-sizing:border-box;color:var(--el-text-color-primary,#303133);flex:1;font:inherit;font-family:inherit;font-size:var(--el-font-size-base,14px);line-height:22px;max-height:220px;min-width:0;outline:none;overflow-y:auto;padding:4px 0;white-space:pre-wrap;word-break:break-word}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-content:empty:before{color:var(--el-text-color-placeholder,#a8abb2);content:attr(data-placeholder);pointer-events:none}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-editor-sender .fv-editor-body .fv-editor-actions{align-items:center;align-self:flex-end;display:flex;flex-shrink:0;gap:4px}.fv-editor-sender .fv-editor-tag{align-items:center;background-color:var(--el-color-primary-light-9,#ecf5ff);border-radius:var(--el-border-radius-base,4px);box-sizing:border-box;color:var(--el-color-primary,#409eff);display:inline-flex;font-size:var(--el-font-size-base,14px);line-height:20px;margin:0 1px;max-width:100%;padding:0 6px;user-select:all;white-space:nowrap}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag{padding:0 2px}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag .fv-editor-tag-input{background:transparent;border:none;box-sizing:border-box;color:inherit;font:inherit;line-height:20px;outline:none;padding:0 4px;width:120px}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag .fv-editor-tag-input::placeholder{color:var(--el-text-color-placeholder,#a8abb2)}.fv-editor-sender .fv-editor-tag.fv-editor-tag-htmlTag{display:inline;user-select:text;white-space:normal}.fv-editor-sender.variant-updown .fv-editor-body{align-items:stretch;flex-direction:column;gap:6px}.fv-editor-sender.variant-updown .fv-editor-body .fv-editor-input{width:100%}.fv-editor-sender.variant-updown .fv-editor-body .fv-editor-actions{align-self:flex-end;justify-content:flex-end}.fv-editor-sender.device-h5 .fv-editor-body{padding:6px 10px}.fv-editor-sender.is-focused .fv-editor-body{border-color:var(--el-color-primary,#409eff)}.fv-editor-sender.is-disabled .fv-editor-body{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-editor-sender .fv-editor-footer{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);padding:6px 12px}.fv-editor-mention-popover .fv-editor-mention-panel{max-height:260px;overflow-y:auto;padding:4px}.fv-editor-mention-popover .fv-editor-mention-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-editor-mention-popover .fv-editor-mention-loading{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);padding:8px;text-align:center}.fv-editor-mention-popover .fv-editor-mention-item{align-items:center;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-primary,#303133);cursor:pointer;display:flex;font-size:var(--el-font-size-base,14px);gap:8px;padding:6px 8px}.fv-editor-mention-popover .fv-editor-mention-item.is-active,.fv-editor-mention-popover .fv-editor-mention-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-avatar{align-items:center;background-color:var(--el-fill-color,#e9e9eb);border-radius:50%;color:var(--el-text-color-regular,#606266);display:inline-flex;flex-shrink:0;font-size:var(--el-font-size-small,12px);height:24px;justify-content:center;overflow:hidden;width:24px}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-avatar img{height:100%;object-fit:cover;width:100%}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-editor-tip-popover .fv-editor-tip-panel{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:6px 8px}.fv-editor-select-dialog .fv-editor-select-group+.fv-editor-select-group{margin-top:12px}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-title{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);font-weight:600;margin-bottom:8px}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item{align-items:center;border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:var(--el-border-radius-base,4px);cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:8px;transition:border-color .2s}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item:hover{border-color:var(--el-color-primary,#409eff)}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item .fv-editor-select-preview{border-radius:var(--el-border-radius-base,4px);height:56px;object-fit:cover;width:100%}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item .fv-editor-select-name{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-small,12px);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes fv-editor-slide-down{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}.fv-thinking{background-color:var(--fv-thinking-bg,transparent);border-radius:var(--el-border-radius-base,4px);box-sizing:border-box;color:var(--fv-thinking-color,var(--el-text-color-regular,#606266));display:flex;flex-direction:column;width:100%}.fv-thinking .fv-thinking-toggle{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font:inherit;font-size:var(--el-font-size-base,14px);gap:6px;line-height:22px;padding:4px 0;text-align:left;transition:color .2s;user-select:none}.fv-thinking .fv-thinking-toggle:hover{color:var(--fv-thinking-color,var(--el-color-primary,#409eff))}.fv-thinking .fv-thinking-toggle:focus{outline:none}.fv-thinking.is-disabled .fv-thinking-toggle{cursor:not-allowed;opacity:.6}.fv-thinking .fv-thinking-status-icon{align-items:center;display:inline-flex;height:16px;justify-content:center;width:16px}.fv-thinking .fv-thinking-status-icon .fv-thinking-dot{background-color:var(--el-color-primary,#409eff);border-radius:50%;height:8px;width:8px}.fv-thinking .fv-thinking-status-icon .is-loading{animation:fv-thinking-rotate 1s linear infinite;color:var(--el-color-primary,#409eff)}.fv-thinking .fv-thinking-status-icon .is-success{color:var(--el-color-success,#67c23a)}.fv-thinking .fv-thinking-status-icon .is-error{color:var(--el-color-danger,#f56c6c)}.fv-thinking .fv-thinking-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-thinking .fv-thinking-arrow{align-items:center;display:inline-flex;transition:transform .3s ease}.fv-thinking .fv-thinking-arrow.is-open{transform:rotate(180deg)}.fv-thinking .fv-thinking-content{box-sizing:border-box;color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);line-height:22px;padding:8px 0 8px 22px;white-space:pre-wrap;word-break:break-word}@keyframes fv-thinking-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-chain{box-sizing:border-box;display:flex;font-size:var(--el-font-size-base,14px)}.fv-chain.is-vertical{flex-direction:column}.fv-chain.is-vertical .fv-chain-item{display:flex;gap:10px}.fv-chain.is-vertical .fv-chain-item:not(:last-child) .fv-chain-node:before{background-color:var(--el-border-color-lighter,#ebeef5);bottom:-4px;content:"";left:50%;margin-left:-1px;position:absolute;top:18px;width:2px}.fv-chain.is-horizontal{flex-direction:row;gap:24px}.fv-chain.is-horizontal .fv-chain-item{align-items:flex-start;display:flex;gap:6px}.fv-chain .fv-chain-node{align-items:center;display:inline-flex;flex-shrink:0;font-size:16px;height:18px;justify-content:center;position:relative;width:18px}.fv-chain .fv-chain-node .fv-chain-dot{background-color:var(--el-fill-color-blank,#fff);border:2px solid var(--el-border-color,#dcdfe6);border-radius:50%;box-sizing:border-box;height:8px;width:8px}.fv-chain .fv-chain-item.status-success .fv-chain-node{color:var(--el-color-success,#67c23a)}.fv-chain .fv-chain-item.status-success .fv-chain-node .fv-chain-dot{background-color:var(--el-color-success,#67c23a);border-color:var(--el-color-success,#67c23a)}.fv-chain .fv-chain-item.status-error .fv-chain-node{color:var(--el-color-danger,#f56c6c)}.fv-chain .fv-chain-item.status-error .fv-chain-node .fv-chain-dot{background-color:var(--el-color-danger,#f56c6c);border-color:var(--el-color-danger,#f56c6c)}.fv-chain .fv-chain-item.status-loading .fv-chain-node{color:var(--el-color-primary,#409eff)}.fv-chain .fv-chain-item.status-loading .fv-chain-node .is-loading{animation:fv-chain-rotate 1s linear infinite}.fv-chain .fv-chain-item.status-loading .fv-chain-node .fv-chain-dot{border-color:var(--el-color-primary,#409eff)}.fv-chain .fv-chain-item.status-pending .fv-chain-title{color:var(--el-text-color-placeholder,#a8abb2)}.fv-chain .fv-chain-main{flex:1;min-width:0;padding-bottom:4px}.fv-chain .fv-chain-main .fv-chain-title{color:var(--el-text-color-primary,#303133);line-height:22px}.fv-chain .fv-chain-main .fv-chain-description{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-small,12px);line-height:20px;word-break:break-word}@keyframes fv-chain-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-welcome{box-sizing:border-box;flex-direction:column;padding:var(--el-main-padding,20px);text-align:center;width:100%}.fv-welcome,.fv-welcome-icon{align-items:center;display:flex;justify-content:center}.fv-welcome-icon{margin-bottom:16px}.fv-welcome-icon .fv-welcome-avatar{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 8px);color:var(--el-color-primary,#409eff);font-size:36px;height:72px;width:72px}.fv-welcome-name{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-extra-large,20px);font-weight:600;line-height:1.4;margin:0}.fv-welcome-description{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);margin:8px 0 0;max-width:480px;white-space:pre-wrap;word-break:break-word}.fv-prompts{box-sizing:border-box;width:100%}.fv-prompts .fv-prompts-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);margin-bottom:12px}.fv-prompts .fv-prompts-list{display:flex;flex-wrap:wrap;gap:12px}.fv-prompts .fv-prompt-item{background-color:var(--el-bg-color,#fff);border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;cursor:pointer;flex:1 1 200px;max-width:100%;padding:12px 14px;transition:background-color var(--el-transition-duration,.3s),border-color var(--el-transition-duration,.3s)}.fv-prompts .fv-prompt-item:hover:not(.is-disabled){background-color:var(--el-fill-color-light,#f5f7fa);border-color:var(--el-border-color,#dcdfe6)}.fv-prompts .fv-prompt-item:focus-visible:not(.is-disabled){border-color:var(--el-color-primary,#409eff);outline:none}.fv-prompts .fv-prompt-item.is-disabled{background-color:var(--el-fill-color-lighter,#fafafa);cursor:not-allowed;opacity:.6}.fv-prompts .fv-prompt-item.is-disabled,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-description,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-icon,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-label{color:var(--el-text-color-placeholder,#a8abb2)}.fv-prompts .fv-prompt-item .fv-prompt-item-main{align-items:flex-start;display:flex;gap:10px}.fv-prompts .fv-prompt-item .fv-prompt-item-icon{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:18px;margin-top:2px}.fv-prompts .fv-prompt-item .fv-prompt-item-text{flex:1;min-width:0}.fv-prompts .fv-prompt-item .fv-prompt-item-label{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);font-weight:500;line-height:var(--el-font-line-height-primary,24px);word-break:break-word}.fv-prompts .fv-prompt-item .fv-prompt-item-description{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);line-height:var(--el-font-line-height-primary,24px);margin-top:2px;word-break:break-word}.fv-files-card{align-items:center;background-color:var(--el-bg-color,#fff);border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;display:flex;gap:8px;max-width:100%;min-width:0;padding:8px 24px 8px 10px;position:relative;transition:border-color var(--el-transition-duration,.3s)}.fv-files-card .fv-files-card-icon{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:20px}.fv-files-card .fv-files-card-info{flex:1;min-width:0}.fv-files-card .fv-files-card-name{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-small,12px);line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-files-card .fv-files-card-size{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-extra-small,12px);line-height:16px;white-space:nowrap}.fv-files-card .fv-files-card-thumb{align-items:center;background-color:var(--el-fill-color-light,#f5f7fa);border-radius:var(--el-border-radius-base,4px);display:flex;flex-shrink:0;height:48px;justify-content:center;overflow:hidden;width:48px}.fv-files-card .fv-files-card-thumb .fv-files-card-img{display:block;height:100%;object-fit:cover;width:100%}.fv-files-card .fv-files-card-thumb .fv-files-card-thumb-placeholder{color:var(--el-text-color-placeholder,#a8abb2);font-size:20px}.fv-files-card .fv-files-card-status{align-items:center;background-color:var(--el-bg-color,#fff);border-radius:50%;bottom:-8px;display:flex;height:16px;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);width:16px}.fv-files-card .fv-files-card-status .fv-files-card-loading{animation:fv-files-card-rotating 1.5s linear infinite;color:var(--el-color-primary,#409eff);font-size:14px}.fv-files-card .fv-files-card-remove{align-items:center;background-color:transparent;border:none;border-radius:50%;color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;font-size:12px;height:18px;justify-content:center;opacity:0;padding:0;position:absolute;right:2px;top:2px;transition:opacity var(--el-transition-duration,.3s),color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:18px}.fv-files-card .fv-files-card-remove:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-danger,#f56c6c)}.fv-files-card:hover .fv-files-card-remove{opacity:1}.fv-files-card.is-error{border-color:var(--el-color-danger,#f56c6c)}.fv-files-card.is-error .fv-files-card-name{color:var(--el-color-danger,#f56c6c)}@keyframes fv-files-card-rotating{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-attachments{align-items:flex-start;box-sizing:border-box;display:flex;gap:8px;width:100%}.fv-attachments .fv-attachments-input{display:none}.fv-attachments .fv-attachments-trigger{align-items:center;background-color:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:32px;justify-content:center;padding:0;transition:color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:32px}.fv-attachments .fv-attachments-trigger:hover:not(:disabled){background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-primary,#409eff)}.fv-attachments .fv-attachments-trigger.is-full,.fv-attachments .fv-attachments-trigger:disabled{color:var(--el-text-color-placeholder,#a8abb2);cursor:not-allowed}.fv-attachments .fv-attachments-list{display:flex;flex-wrap:wrap;gap:8px;min-width:0}.fv-attachments .fv-attachments-item{align-items:center;display:flex;min-width:0;position:relative}.fv-attachments .fv-attachments-item .fv-files-card{max-width:240px}.fv-attachments .fv-attachments-item .fv-attachments-retry{align-items:center;background-color:transparent;border:none;border-radius:50%;color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;font-size:14px;height:20px;justify-content:center;margin-left:4px;padding:0;transition:color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:20px}.fv-attachments .fv-attachments-item .fv-attachments-retry:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-primary,#409eff)}.fv-attachments .fv-attachments-tip{color:var(--el-text-color-placeholder,#a8abb2);flex:1;font-size:var(--el-font-size-extra-small,12px);line-height:32px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-conversations{box-sizing:border-box;overflow-y:auto;width:100%}.fv-conversations .fv-conversations-group .fv-conversations-group-title{background-color:var(--el-bg-color,#fff);color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-extra-small,12px);line-height:20px;padding:8px 12px 4px;position:sticky;top:0;z-index:1}.fv-conversations .fv-conversations-item{align-items:center;border-radius:var(--el-border-radius-base,4px);cursor:pointer;display:flex;gap:4px;padding:0 8px 0 12px;transition:background-color .2s;user-select:none}.fv-conversations .fv-conversations-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-conversations .fv-conversations-item:hover .fv-conversations-menu-btn{opacity:1;pointer-events:auto}.fv-conversations .fv-conversations-item.is-active{background-color:var(--el-color-primary-light-9,#ecf5ff);color:var(--el-color-primary,#409eff)}.fv-conversations .fv-conversations-item.is-active .fv-conversations-item-label{color:var(--el-color-primary,#409eff);font-weight:600}.fv-conversations .fv-conversations-item.is-disabled{color:var(--el-text-color-disabled,#a8abb2);cursor:not-allowed}.fv-conversations .fv-conversations-item.is-disabled .fv-conversations-item-label{color:var(--el-text-color-disabled,#a8abb2)}.fv-conversations .fv-conversations-item.is-disabled:hover{background-color:transparent}.fv-conversations .fv-conversations-item .fv-conversations-item-content{flex:1;min-width:0;padding:9px 0}.fv-conversations .fv-conversations-item .fv-conversations-item-content .fv-conversations-item-label{color:var(--el-text-color-regular,#606266);display:block;font-size:var(--el-font-size-base,14px);line-height:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-conversations .fv-conversations-item .fv-conversations-menu-btn{align-items:center;background:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-secondary,#909399);cursor:pointer;display:inline-flex;flex-shrink:0;height:24px;justify-content:center;opacity:0;padding:0;pointer-events:none;transition:opacity .2s;width:24px}.fv-conversations .fv-conversations-item .fv-conversations-menu-btn:hover{background-color:var(--el-fill-color,#f0f2f5);color:var(--el-text-color-primary,#303133)}.fv-conversations.show-menu-always .fv-conversations-item .fv-conversations-menu-btn{opacity:1;pointer-events:auto}.fv-msg{align-items:flex-start;box-sizing:border-box;display:flex;gap:12px;padding:8px 0;width:100%}.fv-msg .fv-msg-avatar{align-items:center;background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);color:var(--el-text-color-secondary,#909399);display:flex;flex-shrink:0;font-size:18px;height:32px;justify-content:center;width:32px}.fv-msg.is-user .fv-msg-avatar{background-color:var(--el-color-primary-light-8,#d9ecff);color:var(--el-color-primary,#409eff);order:2}.fv-msg .fv-msg-main{align-items:flex-start;display:flex;flex:1;flex-direction:column;min-width:0}.fv-msg .fv-msg-main .fv-msg-header{align-items:center;color:var(--el-text-color-secondary,#909399);display:flex;font-size:var(--el-font-size-small,12px);gap:8px;margin-bottom:2px}.fv-msg .fv-msg-main .fv-msg-header .fv-msg-model{background-color:var(--el-fill-color,#f0f2f5);border-radius:var(--el-border-radius-base,4px);line-height:18px;padding:0 6px}.fv-msg .fv-msg-main .fv-msg-files{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.fv-msg .fv-msg-main .fv-msg-files .fv-msg-file{align-items:center;border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-regular,#606266);display:inline-flex;font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-msg .fv-msg-main .fv-msg-files .fv-msg-file .fv-msg-file-img{border-radius:var(--el-border-radius-base,4px);max-height:64px;max-width:64px;object-fit:cover}.fv-msg .fv-msg-main .fv-msg-content{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);max-width:100%;min-width:0;word-break:break-word}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-error{color:var(--el-color-danger,#f56c6c)}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-pending{align-items:center;display:inline-flex;gap:4px;padding:4px 0}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-pending .fv-msg-dot{animation:fv-msg-blink 1s infinite;background-color:var(--el-text-color-secondary,#909399);border-radius:50%;height:6px;width:6px}.fv-msg .fv-msg-main .fv-msg-content-user{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);padding:8px 12px;white-space:pre-wrap}.fv-msg.is-user{flex-direction:row;justify-content:flex-end}.fv-msg.is-user .fv-msg-main{align-items:flex-end}.fv-msg .fv-msg-actions{align-items:center;display:flex;gap:2px;margin-top:2px}.fv-msg .fv-msg-actions .fv-msg-branch{align-items:center;display:inline-flex;gap:2px;margin-left:6px}.fv-msg .fv-msg-actions .fv-msg-branch .fv-msg-branch-label{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:0 2px}@keyframes fv-msg-blink{0%,to{opacity:.3}50%{opacity:1}}.fv-messages{box-sizing:border-box;display:flex;flex:1;flex-direction:column;min-height:0;width:100%}.fv-messages .fv-messages-scroll{box-sizing:border-box;flex:1;min-height:0;overflow-y:auto;padding:0 16px}.fv-messages .fv-messages-empty{align-items:center;box-sizing:border-box;display:flex;flex:1;flex-direction:column;justify-content:center;padding:32px 16px}.fv-messages .fv-messages-empty .fv-messages-prompts{margin-top:8px;max-width:640px;width:100%}.fv-ai-chat{background-color:var(--el-bg-color,#fff);box-sizing:border-box;color:var(--el-text-color-primary,#303133);display:flex;flex-direction:column;height:100%;min-height:0;width:100%}.fv-ai-chat .fv-ai-chat-header{align-items:center;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);display:flex;flex-shrink:0;gap:12px;justify-content:space-between;padding:8px 16px}.fv-ai-chat .fv-ai-chat-header .fv-ai-chat-title{font-size:var(--el-font-size-base,14px);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-ai-chat .fv-ai-chat-header .fv-ai-chat-models{flex-shrink:0;width:220px}.fv-ai-chat .fv-ai-chat-body{display:flex;flex:1;min-height:0;overflow:hidden}.fv-ai-chat .fv-ai-chat-footer{flex-shrink:0;padding:8px 16px 12px}.fv-ai-chat.is-center-welcome .fv-ai-chat-body{flex:0 1 auto;margin-top:auto;min-height:0}.fv-ai-chat.is-center-welcome .fv-ai-chat-footer{margin-bottom:auto}html.dark .fv-ai-chat{background-color:var(--el-bg-color,#141414)}.fv-artifacts{background-color:var(--el-bg-color,#fff);border-left:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);box-sizing:border-box;display:flex;flex-direction:column;flex-shrink:0;max-width:60%;overflow:hidden;width:420px}.fv-artifacts .fv-artifacts-tabs{align-items:center;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);display:flex;flex-shrink:0;gap:4px;overflow-x:auto;padding:6px 8px}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab{background:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-regular,#606266);cursor:pointer;flex-shrink:0;font-size:var(--el-font-size-small,12px);line-height:1.4;padding:4px 10px;white-space:nowrap}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-text-color-primary,#303133)}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab.is-active{background-color:var(--el-color-primary-light-9,#ecf5ff);color:var(--el-color-primary,#409eff)}.fv-artifacts .fv-artifacts-tabs .fv-artifacts-spacer{flex:1}.fv-artifacts .fv-artifacts-frame{background-color:var(--el-bg-color-page,#f2f3f5);border:none;flex:1;min-height:0;width:100%}html.dark .fv-artifacts{background-color:var(--el-bg-color,#141414)}
|
|
1
|
+
.fv-xmarkdown{color:var(--el-text-color-primary,#303133);line-height:1.7;word-break:break-word}.fv-xmarkdown h1,.fv-xmarkdown h2,.fv-xmarkdown h3,.fv-xmarkdown h4,.fv-xmarkdown h5,.fv-xmarkdown h6{color:var(--el-text-color-primary,#303133);font-weight:600;margin:1em 0 .5em}.fv-xmarkdown h1{font-size:1.5em}.fv-xmarkdown h2{font-size:1.3em}.fv-xmarkdown h3{font-size:1.15em}.fv-xmarkdown p{margin:.5em 0}.fv-xmarkdown a{color:var(--el-color-primary,#409eff);text-decoration:none}.fv-xmarkdown a:hover{text-decoration:underline}.fv-xmarkdown blockquote{border-left:4px solid var(--el-border-color,#dcdfe6);color:var(--el-text-color-regular,#606266);margin:.5em 0;padding:.4em 1em}.fv-xmarkdown blockquote,.fv-xmarkdown code{background:var(--el-fill-color-light,#f5f7fa)}.fv-xmarkdown code{border-radius:3px;color:var(--el-color-danger,#f56c6c);font-family:JetBrains Mono,Consolas,Courier New,monospace;font-size:.9em;padding:.15em .4em}.fv-xmarkdown pre{background:#282c34;border-radius:6px;margin:.5em 0;overflow-x:auto;padding:1em}.fv-xmarkdown pre code{background:transparent;color:#dcdfe6;font-size:.9em;line-height:1.6;padding:0}.fv-xmarkdown table{border-collapse:collapse;margin:.5em 0;width:100%}.fv-xmarkdown table td,.fv-xmarkdown table th{border:1px solid var(--el-border-color-lighter,#ebeef5);padding:.5em .8em;text-align:left}.fv-xmarkdown table th{background:var(--el-fill-color-light,#f5f7fa);font-weight:600}.fv-xmarkdown table tr:nth-child(2n) td{background:var(--el-fill-color-blank,#fafcff)}.fv-xmarkdown .katex-display{margin:.5em 0;overflow-x:auto}.fv-typewriter{display:inline-block;max-width:100%;position:relative}.fv-typewriter .fv-typewriter-text{white-space:pre-wrap;word-break:break-word}.fv-typewriter .fv-typewriter-suffix{animation:fv-typewriter-blink 1s step-start infinite;display:inline-block}.fv-typewriter .fv-typewriter-fog{animation:fv-typewriter-fog-in .3s ease-out both;background:linear-gradient(90deg,transparent,var(--fv-typewriter-fog-color,var(--el-bg-color,#fff)));bottom:0;pointer-events:none;position:absolute;right:0;top:0}@keyframes fv-typewriter-blink{0%,to{opacity:1}50%{opacity:0}}@keyframes fv-typewriter-fog-in{0%{opacity:0}to{opacity:1}}.fv-bubble{align-items:flex-start;display:flex;gap:var(--fv-bubble-avatar-gap,12px)}.fv-bubble.is-end{flex-direction:row-reverse;justify-content:flex-end}.fv-bubble.is-end .fv-bubble-main{align-items:flex-end}.fv-bubble .fv-bubble-avatar{display:flex;flex-shrink:0}.fv-bubble .fv-bubble-avatar .el-avatar{height:var(--fv-bubble-avatar-size,36px);width:var(--fv-bubble-avatar-size,36px)}.fv-bubble .fv-bubble-main{align-items:flex-start;display:flex;flex:1;flex-direction:column;max-width:100%;min-width:0}.fv-bubble .fv-bubble-main .fv-bubble-footer,.fv-bubble .fv-bubble-main .fv-bubble-header{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px)}.fv-bubble .fv-bubble-main .fv-bubble-footer{margin-top:4px}.fv-bubble .fv-bubble-content{border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);max-width:100%;min-width:0;padding:var(--el-main-padding,12px) calc(var(--el-main-padding, 12px) + 4px);position:relative;word-break:break-word}.fv-bubble .fv-bubble-content.no-padding{padding:0}.fv-bubble .fv-bubble-content .fv-bubble-text{white-space:pre-wrap}.fv-bubble.shape-round .fv-bubble-content{border-radius:var(--el-border-radius-round,20px)}.fv-bubble.shape-corner .fv-bubble-content{border-start-start-radius:calc(var(--el-border-radius-base, 4px) - 2px)}.fv-bubble.is-end.shape-corner .fv-bubble-content{border-start-end-radius:calc(var(--el-border-radius-base, 4px) - 2px);border-start-start-radius:calc(var(--el-border-radius-base, 4px) + 4px)}.fv-bubble.variant-borderless .fv-bubble-content,.fv-bubble.variant-filled .fv-bubble-content{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-bubble.variant-borderless .fv-bubble-content,.fv-bubble.variant-outlined .fv-bubble-content{border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6)}.fv-bubble.variant-outlined .fv-bubble-content{background:none}.fv-bubble.variant-shadow .fv-bubble-content{background:none;box-shadow:var(--el-box-shadow-light,0 0 12px rgba(0,0,0,.12))}.fv-bubble .fv-bubble-content.no-style{background:transparent;border:none;box-shadow:none;padding:0}.fv-bubble .fv-bubble-loading{align-items:center;display:flex;gap:5px;min-height:1em;width:fit-content}.fv-bubble .fv-bubble-loading .fv-bubble-loading-dot{animation:fv-bubble-wave 1s ease-in-out infinite;background-color:var(--el-color-primary,#409eff);border-radius:50%;height:5px;width:5px}@keyframes fv-bubble-wave{0%,to{transform:translateY(-2px)}50%{transform:translateY(2px)}}.fv-bubble-list{display:flex;flex-direction:column;min-height:0;position:relative}.fv-bubble-list .fv-bubble-list-scroll{display:flex;flex-direction:column;gap:16px;min-height:0;overflow-y:auto}.fv-bubble-list .fv-bubble-list-scroll>.fv-bubble{flex-shrink:0}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar{overflow-y:scroll;scrollbar-width:auto}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar::-webkit-scrollbar{-webkit-appearance:none;width:6px}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar::-webkit-scrollbar-thumb{background-color:var(--el-border-color,#dcdfe6);border-radius:3px}.fv-bubble-list .fv-bubble-list-back{align-items:center;bottom:16px;box-shadow:var(--el-box-shadow-light,0 0 12px rgba(0,0,0,.12));display:inline-flex;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);z-index:1}.fv-bubble-list .fv-bubble-list-back .fv-bubble-list-back-icon{align-items:center;display:inline-flex;justify-content:center;line-height:1}.fv-bubble-list-fade-enter-active,.fv-bubble-list-fade-leave-active{transition:opacity .2s ease,transform .2s ease}.fv-bubble-list-fade-enter-from,.fv-bubble-list-fade-leave-to{opacity:0;transform:translate(-50%,4px)}.fv-sender{box-sizing:border-box;display:flex;flex-direction:column;width:100%}.fv-sender .fv-sender-header{animation:fv-sender-slide-down .3s ease;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);max-height:300px;overflow:hidden;padding:8px 12px}.fv-sender .fv-sender-body{background-color:var(--el-fill-color-blank,#fff);border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);display:flex;flex-direction:column;gap:6px;padding:8px 12px;transition:border-color .2s}.fv-sender .fv-sender-body .fv-sender-body-top:empty{display:none}.fv-sender .fv-sender-body .fv-sender-row{align-items:flex-end;display:flex;gap:8px}.fv-sender .fv-sender-body .fv-sender-prefix{align-items:center;align-self:center;display:flex;flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-recording{align-items:center;background-color:var(--el-color-primary-light-9,#ecf5ff);border-radius:calc(var(--el-border-radius-base, 4px) + 2px);display:flex;flex:1;gap:8px;min-width:0;outline:none;padding:4px 8px}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-cancel{flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-cancel:hover{color:var(--el-color-danger,#f56c6c)}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-wave{align-items:center;direction:rtl;display:flex;flex:1;gap:2px;height:22px;justify-content:flex-end;min-width:0;overflow:hidden}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-wave .fv-sender-recording-bar{background-color:var(--el-color-primary,#409eff);border-radius:1px;flex-shrink:0;min-height:2px;opacity:.75;width:2px}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-duration{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:var(--el-font-size-small,12px);font-variant-numeric:tabular-nums;min-width:3em;text-align:center}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-confirm{flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-input{display:flex;flex:1;min-width:0;position:relative}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea{background:transparent;border:none;box-sizing:border-box;color:var(--el-text-color-primary,#303133);flex:1;font:inherit;font-family:inherit;font-size:var(--el-font-size-base,14px);line-height:22px;min-width:0;outline:none;padding:4px 0;resize:none}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea::placeholder{color:var(--el-text-color-placeholder,#a8abb2)}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea:disabled{color:var(--el-text-color-disabled,#a8abb2);cursor:not-allowed}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea[readonly]{cursor:default}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-trigger-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-sender .fv-sender-body .fv-sender-actions{align-items:center;align-self:flex-end;display:flex;flex-shrink:0;gap:4px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-action-left{align-items:center;display:flex;gap:4px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech{color:var(--el-text-color-regular,#606266);padding:6px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech .el-icon{font-size:18px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech:not(.is-disabled):active,.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech:not(.is-disabled):hover{background-color:transparent;color:var(--el-text-color-primary,#303133)}.fv-sender.variant-updown .fv-sender-row{align-items:stretch;flex-direction:column;gap:6px}.fv-sender.variant-updown .fv-sender-row .fv-sender-input{width:100%}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions{align-self:flex-end;justify-content:flex-end}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions:has(.fv-sender-action-left){align-self:stretch}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions:has(.fv-sender-action-left) .fv-sender-action-left{margin-right:auto}.fv-sender.is-focused .fv-sender-body{border-color:var(--el-color-primary,#409eff)}.fv-sender.is-disabled .fv-sender-body{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-sender.has-shadow .fv-sender-body{box-shadow:0 8px 20px 0 var(--el-box-shadow-color,rgba(0,0,0,.08));transition:border-color .2s,box-shadow .2s}.fv-sender.has-shadow.is-focused .fv-sender-body{box-shadow:0 8px 24px 0 var(--el-box-shadow-color,rgba(0,0,0,.12))}.fv-sender .fv-sender-stop{--fv-sender-stop-icon-size:16px;--fv-sender-stop-ring-width:2px;--fv-sender-stop-ring-duration:1.1s;position:relative}.fv-sender .fv-sender-stop .el-icon{align-items:center;display:inline-flex;font-size:var(--fv-sender-stop-icon-size);justify-content:center}.fv-sender .fv-sender-stop .fv-stop-icon{display:block}.fv-sender .fv-sender-stop .fv-sender-stop-ring{height:100%;inset:0;overflow:visible;pointer-events:none;position:absolute;width:100%}.fv-sender .fv-sender-stop .fv-sender-stop-ring .fv-sender-stop-ring-rect{x:calc(var(--fv-sender-stop-ring-width)/2);y:calc(var(--fv-sender-stop-ring-width)/2);fill:none;stroke:rgb(255,255,255,var(--ring-alpha,.9));stroke-width:var(--fv-sender-stop-ring-width);stroke-dasharray:0 calc(100 - var(--ring-len, 10)) var(--ring-len,10) 0;animation:fv-sender-stop-spin var(--fv-sender-stop-ring-duration) linear infinite;height:calc(100% - var(--fv-sender-stop-ring-width));width:calc(100% - var(--fv-sender-stop-ring-width))}@media (prefers-reduced-motion:reduce){.fv-sender .fv-sender-stop .fv-sender-stop-ring-rect{animation:none}}.fv-sender .fv-sender-footer{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);padding:6px 12px}@keyframes fv-sender-slide-down{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}@keyframes fv-sender-stop-spin{to{stroke-dashoffset:-100}}.fv-mention-sender{position:relative}.fv-mention-sender .fv-mention-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-mention-popover .fv-mention-panel{max-height:260px;overflow-y:auto;padding:4px}.fv-mention-popover .fv-mention-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-mention-popover .fv-mention-loading{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);padding:8px;text-align:center}.fv-mention-popover .fv-mention-item{align-items:center;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-primary,#303133);cursor:pointer;display:flex;font-size:var(--el-font-size-base,14px);gap:8px;padding:6px 8px}.fv-mention-popover .fv-mention-item.is-active,.fv-mention-popover .fv-mention-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-mention-popover .fv-mention-item .fv-mention-avatar{align-items:center;background-color:var(--el-fill-color,#e9e9eb);border-radius:50%;color:var(--el-text-color-regular,#606266);display:inline-flex;flex-shrink:0;font-size:var(--el-font-size-small,12px);height:24px;justify-content:center;overflow:hidden;width:24px}.fv-mention-popover .fv-mention-item .fv-mention-avatar img{height:100%;object-fit:cover;width:100%}.fv-mention-popover .fv-mention-item .fv-mention-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-editor-sender{box-sizing:border-box;display:flex;flex-direction:column;width:100%}.fv-editor-sender .fv-editor-header{animation:fv-editor-slide-down .3s ease;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);max-height:300px;overflow:hidden;padding:8px 12px}.fv-editor-sender .fv-editor-body{align-items:flex-end;background-color:var(--el-fill-color-blank,#fff);border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);display:flex;gap:8px;padding:8px 12px;transition:border-color .2s}.fv-editor-sender .fv-editor-body .fv-editor-prefix{align-items:center;align-self:center;display:flex;flex-shrink:0}.fv-editor-sender .fv-editor-body .fv-editor-input{display:flex;flex:1;min-width:0;position:relative}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-content{background:transparent;box-sizing:border-box;color:var(--el-text-color-primary,#303133);flex:1;font:inherit;font-family:inherit;font-size:var(--el-font-size-base,14px);line-height:22px;max-height:220px;min-width:0;outline:none;overflow-y:auto;padding:4px 0;white-space:pre-wrap;word-break:break-word}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-content:empty:before{color:var(--el-text-color-placeholder,#a8abb2);content:attr(data-placeholder);pointer-events:none}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-editor-sender .fv-editor-body .fv-editor-actions{align-items:center;align-self:flex-end;display:flex;flex-shrink:0;gap:4px}.fv-editor-sender .fv-editor-tag{align-items:center;background-color:var(--el-color-primary-light-9,#ecf5ff);border-radius:var(--el-border-radius-base,4px);box-sizing:border-box;color:var(--el-color-primary,#409eff);display:inline-flex;font-size:var(--el-font-size-base,14px);line-height:20px;margin:0 1px;max-width:100%;padding:0 6px;user-select:all;white-space:nowrap}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag{padding:0 2px}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag .fv-editor-tag-input{background:transparent;border:none;box-sizing:border-box;color:inherit;font:inherit;line-height:20px;outline:none;padding:0 4px;width:120px}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag .fv-editor-tag-input::placeholder{color:var(--el-text-color-placeholder,#a8abb2)}.fv-editor-sender .fv-editor-tag.fv-editor-tag-htmlTag{display:inline;user-select:text;white-space:normal}.fv-editor-sender.variant-updown .fv-editor-body{align-items:stretch;flex-direction:column;gap:6px}.fv-editor-sender.variant-updown .fv-editor-body .fv-editor-input{width:100%}.fv-editor-sender.variant-updown .fv-editor-body .fv-editor-actions{align-self:flex-end;justify-content:flex-end}.fv-editor-sender.device-h5 .fv-editor-body{padding:6px 10px}.fv-editor-sender.is-focused .fv-editor-body{border-color:var(--el-color-primary,#409eff)}.fv-editor-sender.is-disabled .fv-editor-body{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-editor-sender .fv-editor-footer{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);padding:6px 12px}.fv-editor-mention-popover .fv-editor-mention-panel{max-height:260px;overflow-y:auto;padding:4px}.fv-editor-mention-popover .fv-editor-mention-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-editor-mention-popover .fv-editor-mention-loading{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);padding:8px;text-align:center}.fv-editor-mention-popover .fv-editor-mention-item{align-items:center;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-primary,#303133);cursor:pointer;display:flex;font-size:var(--el-font-size-base,14px);gap:8px;padding:6px 8px}.fv-editor-mention-popover .fv-editor-mention-item.is-active,.fv-editor-mention-popover .fv-editor-mention-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-avatar{align-items:center;background-color:var(--el-fill-color,#e9e9eb);border-radius:50%;color:var(--el-text-color-regular,#606266);display:inline-flex;flex-shrink:0;font-size:var(--el-font-size-small,12px);height:24px;justify-content:center;overflow:hidden;width:24px}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-avatar img{height:100%;object-fit:cover;width:100%}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-editor-tip-popover .fv-editor-tip-panel{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:6px 8px}.fv-editor-select-dialog .fv-editor-select-group+.fv-editor-select-group{margin-top:12px}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-title{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);font-weight:600;margin-bottom:8px}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item{align-items:center;border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:var(--el-border-radius-base,4px);cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:8px;transition:border-color .2s}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item:hover{border-color:var(--el-color-primary,#409eff)}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item .fv-editor-select-preview{border-radius:var(--el-border-radius-base,4px);height:56px;object-fit:cover;width:100%}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item .fv-editor-select-name{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-small,12px);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes fv-editor-slide-down{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}.fv-thinking{background-color:var(--fv-thinking-bg,transparent);border-radius:var(--el-border-radius-base,4px);box-sizing:border-box;color:var(--fv-thinking-color,var(--el-text-color-regular,#606266));display:flex;flex-direction:column;width:100%}.fv-thinking .fv-thinking-toggle{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font:inherit;font-size:var(--el-font-size-base,14px);gap:6px;line-height:22px;padding:4px 0;text-align:left;transition:color .2s;user-select:none}.fv-thinking .fv-thinking-toggle:hover{color:var(--fv-thinking-color,var(--el-color-primary,#409eff))}.fv-thinking .fv-thinking-toggle:focus{outline:none}.fv-thinking.is-disabled .fv-thinking-toggle{cursor:not-allowed;opacity:.6}.fv-thinking .fv-thinking-status-icon{align-items:center;display:inline-flex;height:16px;justify-content:center;width:16px}.fv-thinking .fv-thinking-status-icon .fv-thinking-dot{background-color:var(--el-color-primary,#409eff);border-radius:50%;height:8px;width:8px}.fv-thinking .fv-thinking-status-icon .is-loading{animation:fv-thinking-rotate 1s linear infinite;color:var(--el-color-primary,#409eff)}.fv-thinking .fv-thinking-status-icon .is-success{color:var(--el-color-success,#67c23a)}.fv-thinking .fv-thinking-status-icon .is-error{color:var(--el-color-danger,#f56c6c)}.fv-thinking .fv-thinking-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-thinking .fv-thinking-arrow{align-items:center;display:inline-flex;transition:transform .3s ease}.fv-thinking .fv-thinking-arrow.is-open{transform:rotate(180deg)}.fv-thinking .fv-thinking-content{box-sizing:border-box;color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);line-height:22px;padding:8px 0 8px 22px;white-space:pre-wrap;word-break:break-word}@keyframes fv-thinking-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-chain{box-sizing:border-box;display:flex;font-size:var(--el-font-size-base,14px)}.fv-chain.is-vertical{flex-direction:column}.fv-chain.is-vertical .fv-chain-item{display:flex;gap:10px}.fv-chain.is-vertical .fv-chain-item:not(:last-child) .fv-chain-node:before{background-color:var(--el-border-color-lighter,#ebeef5);bottom:-4px;content:"";left:50%;margin-left:-1px;position:absolute;top:18px;width:2px}.fv-chain.is-horizontal{flex-direction:row;gap:24px}.fv-chain.is-horizontal .fv-chain-item{align-items:flex-start;display:flex;gap:6px}.fv-chain .fv-chain-node{align-items:center;display:inline-flex;flex-shrink:0;font-size:16px;height:18px;justify-content:center;position:relative;width:18px}.fv-chain .fv-chain-node .fv-chain-dot{background-color:var(--el-fill-color-blank,#fff);border:2px solid var(--el-border-color,#dcdfe6);border-radius:50%;box-sizing:border-box;height:8px;width:8px}.fv-chain .fv-chain-item.status-success .fv-chain-node{color:var(--el-color-success,#67c23a)}.fv-chain .fv-chain-item.status-success .fv-chain-node .fv-chain-dot{background-color:var(--el-color-success,#67c23a);border-color:var(--el-color-success,#67c23a)}.fv-chain .fv-chain-item.status-error .fv-chain-node{color:var(--el-color-danger,#f56c6c)}.fv-chain .fv-chain-item.status-error .fv-chain-node .fv-chain-dot{background-color:var(--el-color-danger,#f56c6c);border-color:var(--el-color-danger,#f56c6c)}.fv-chain .fv-chain-item.status-loading .fv-chain-node{color:var(--el-color-primary,#409eff)}.fv-chain .fv-chain-item.status-loading .fv-chain-node .is-loading{animation:fv-chain-rotate 1s linear infinite}.fv-chain .fv-chain-item.status-loading .fv-chain-node .fv-chain-dot{border-color:var(--el-color-primary,#409eff)}.fv-chain .fv-chain-item.status-pending .fv-chain-title{color:var(--el-text-color-placeholder,#a8abb2)}.fv-chain .fv-chain-main{flex:1;min-width:0;padding-bottom:4px}.fv-chain .fv-chain-main .fv-chain-title{color:var(--el-text-color-primary,#303133);line-height:22px}.fv-chain .fv-chain-main .fv-chain-description{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-small,12px);line-height:20px;word-break:break-word}@keyframes fv-chain-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-welcome{box-sizing:border-box;flex-direction:column;padding:var(--el-main-padding,20px);text-align:center;width:100%}.fv-welcome,.fv-welcome-icon{align-items:center;display:flex;justify-content:center}.fv-welcome-icon{margin-bottom:16px}.fv-welcome-icon .fv-welcome-avatar{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 8px);color:var(--el-color-primary,#409eff);font-size:36px;height:72px;width:72px}.fv-welcome-name{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-extra-large,20px);font-weight:600;line-height:1.4;margin:0}.fv-welcome-description{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);margin:8px 0 0;max-width:480px;white-space:pre-wrap;word-break:break-word}.fv-prompts{box-sizing:border-box;width:100%}.fv-prompts .fv-prompts-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);margin-bottom:12px}.fv-prompts .fv-prompts-list{display:flex;flex-wrap:wrap;gap:12px}.fv-prompts .fv-prompt-item{background-color:var(--el-bg-color,#fff);border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;cursor:pointer;flex:1 1 200px;max-width:100%;padding:12px 14px;transition:background-color var(--el-transition-duration,.3s),border-color var(--el-transition-duration,.3s)}.fv-prompts .fv-prompt-item:hover:not(.is-disabled){background-color:var(--el-fill-color-light,#f5f7fa);border-color:var(--el-border-color,#dcdfe6)}.fv-prompts .fv-prompt-item:focus-visible:not(.is-disabled){border-color:var(--el-color-primary,#409eff);outline:none}.fv-prompts .fv-prompt-item.is-disabled{background-color:var(--el-fill-color-lighter,#fafafa);cursor:not-allowed;opacity:.6}.fv-prompts .fv-prompt-item.is-disabled,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-description,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-icon,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-label{color:var(--el-text-color-placeholder,#a8abb2)}.fv-prompts .fv-prompt-item .fv-prompt-item-main{align-items:flex-start;display:flex;gap:10px}.fv-prompts .fv-prompt-item .fv-prompt-item-icon{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:18px;margin-top:2px}.fv-prompts .fv-prompt-item .fv-prompt-item-text{flex:1;min-width:0}.fv-prompts .fv-prompt-item .fv-prompt-item-label{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);font-weight:500;line-height:var(--el-font-line-height-primary,24px);word-break:break-word}.fv-prompts .fv-prompt-item .fv-prompt-item-description{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);line-height:var(--el-font-line-height-primary,24px);margin-top:2px;word-break:break-word}.fv-files-card{align-items:center;background-color:var(--el-bg-color,#fff);border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;display:flex;gap:8px;max-width:100%;min-width:0;padding:8px 24px 8px 10px;position:relative;transition:border-color var(--el-transition-duration,.3s)}.fv-files-card .fv-files-card-icon{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:20px}.fv-files-card .fv-files-card-info{flex:1;min-width:0}.fv-files-card .fv-files-card-name{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-small,12px);line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-files-card .fv-files-card-size{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-extra-small,12px);line-height:16px;white-space:nowrap}.fv-files-card .fv-files-card-thumb{align-items:center;background-color:var(--el-fill-color-light,#f5f7fa);border-radius:var(--el-border-radius-base,4px);display:flex;flex-shrink:0;height:48px;justify-content:center;overflow:hidden;width:48px}.fv-files-card .fv-files-card-thumb .fv-files-card-img{display:block;height:100%;object-fit:cover;width:100%}.fv-files-card .fv-files-card-thumb .fv-files-card-thumb-placeholder{color:var(--el-text-color-placeholder,#a8abb2);font-size:20px}.fv-files-card .fv-files-card-status{align-items:center;background-color:var(--el-bg-color,#fff);border-radius:50%;bottom:-8px;display:flex;height:16px;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);width:16px}.fv-files-card .fv-files-card-status .fv-files-card-loading{animation:fv-files-card-rotating 1.5s linear infinite;color:var(--el-color-primary,#409eff);font-size:14px}.fv-files-card .fv-files-card-remove{align-items:center;background-color:transparent;border:none;border-radius:50%;color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;font-size:12px;height:18px;justify-content:center;opacity:0;padding:0;position:absolute;right:2px;top:2px;transition:opacity var(--el-transition-duration,.3s),color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:18px}.fv-files-card .fv-files-card-remove:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-danger,#f56c6c)}.fv-files-card:hover .fv-files-card-remove{opacity:1}.fv-files-card.is-error{border-color:var(--el-color-danger,#f56c6c)}.fv-files-card.is-error .fv-files-card-name{color:var(--el-color-danger,#f56c6c)}@keyframes fv-files-card-rotating{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-attachments{align-items:flex-start;box-sizing:border-box;display:flex;gap:8px;width:100%}.fv-attachments .fv-attachments-input{display:none}.fv-attachments .fv-attachments-trigger{align-items:center;background-color:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:32px;justify-content:center;padding:0;transition:color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:32px}.fv-attachments .fv-attachments-trigger:hover:not(:disabled){background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-primary,#409eff)}.fv-attachments .fv-attachments-trigger.is-full,.fv-attachments .fv-attachments-trigger:disabled{color:var(--el-text-color-placeholder,#a8abb2);cursor:not-allowed}.fv-attachments .fv-attachments-list{display:flex;flex-wrap:wrap;gap:8px;min-width:0}.fv-attachments .fv-attachments-item{align-items:center;display:flex;min-width:0;position:relative}.fv-attachments .fv-attachments-item .fv-files-card{max-width:240px}.fv-attachments .fv-attachments-item .fv-attachments-retry{align-items:center;background-color:transparent;border:none;border-radius:50%;color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;font-size:14px;height:20px;justify-content:center;margin-left:4px;padding:0;transition:color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:20px}.fv-attachments .fv-attachments-item .fv-attachments-retry:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-primary,#409eff)}.fv-attachments .fv-attachments-tip{color:var(--el-text-color-placeholder,#a8abb2);flex:1;font-size:var(--el-font-size-extra-small,12px);line-height:32px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-conversations{box-sizing:border-box;overflow-y:auto;width:100%}.fv-conversations .fv-conversations-group .fv-conversations-group-title{background-color:var(--el-bg-color,#fff);color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-extra-small,12px);line-height:20px;padding:8px 12px 4px;position:sticky;top:0;z-index:1}.fv-conversations .fv-conversations-item{align-items:center;border-radius:var(--el-border-radius-base,4px);cursor:pointer;display:flex;gap:4px;padding:0 8px 0 12px;transition:background-color .2s;user-select:none}.fv-conversations .fv-conversations-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-conversations .fv-conversations-item:hover .fv-conversations-menu-btn{opacity:1;pointer-events:auto}.fv-conversations .fv-conversations-item.is-active{background-color:var(--el-color-primary-light-9,#ecf5ff);color:var(--el-color-primary,#409eff)}.fv-conversations .fv-conversations-item.is-active .fv-conversations-item-label{color:var(--el-color-primary,#409eff);font-weight:600}.fv-conversations .fv-conversations-item.is-disabled{color:var(--el-text-color-disabled,#a8abb2);cursor:not-allowed}.fv-conversations .fv-conversations-item.is-disabled .fv-conversations-item-label{color:var(--el-text-color-disabled,#a8abb2)}.fv-conversations .fv-conversations-item.is-disabled:hover{background-color:transparent}.fv-conversations .fv-conversations-item .fv-conversations-item-content{flex:1;min-width:0;padding:9px 0}.fv-conversations .fv-conversations-item .fv-conversations-item-content .fv-conversations-item-label{color:var(--el-text-color-regular,#606266);display:block;font-size:var(--el-font-size-base,14px);line-height:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-conversations .fv-conversations-item .fv-conversations-menu-btn{align-items:center;background:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-secondary,#909399);cursor:pointer;display:inline-flex;flex-shrink:0;height:24px;justify-content:center;opacity:0;padding:0;pointer-events:none;transition:opacity .2s;width:24px}.fv-conversations .fv-conversations-item .fv-conversations-menu-btn:hover{background-color:var(--el-fill-color,#f0f2f5);color:var(--el-text-color-primary,#303133)}.fv-conversations.show-menu-always .fv-conversations-item .fv-conversations-menu-btn{opacity:1;pointer-events:auto}.fv-msg{align-items:flex-start;box-sizing:border-box;display:flex;gap:12px;padding:8px 0;width:100%}.fv-msg .fv-msg-avatar{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);color:var(--el-text-color-secondary,#909399);flex-shrink:0;font-size:18px;height:32px;width:32px}.fv-msg .fv-msg-avatar,.fv-msg .fv-msg-avatar-bot{align-items:center;display:flex;justify-content:center}.fv-msg .fv-msg-avatar-bot{background-color:var(--el-color-primary,#409eff);border-radius:inherit;color:#fff;height:100%;width:100%}.fv-msg.is-user .fv-msg-avatar{background-color:var(--el-color-primary-light-8,#d9ecff);color:var(--el-color-primary,#409eff);order:2}.fv-msg .fv-msg-main{align-items:flex-start;display:flex;flex:1;flex-direction:column;min-width:0}.fv-msg .fv-msg-main .fv-msg-header{align-items:center;color:var(--el-text-color-secondary,#909399);display:flex;font-size:var(--el-font-size-small,12px);gap:8px;margin-bottom:2px}.fv-msg .fv-msg-main .fv-msg-header .fv-msg-model{background-color:var(--el-fill-color,#f0f2f5);border-radius:var(--el-border-radius-base,4px);line-height:18px;padding:0 6px}.fv-msg .fv-msg-main .fv-msg-files{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.fv-msg .fv-msg-main .fv-msg-files .fv-msg-file{align-items:center;border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-regular,#606266);display:inline-flex;font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-msg .fv-msg-main .fv-msg-files .fv-msg-file .fv-msg-file-img{border-radius:var(--el-border-radius-base,4px);max-height:64px;max-width:64px;object-fit:cover}.fv-msg .fv-msg-main .fv-msg-content{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);max-width:100%;min-width:0;word-break:break-word}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-error{color:var(--el-color-danger,#f56c6c)}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-pending{align-items:center;display:inline-flex;gap:4px;padding:4px 0}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-pending .fv-msg-dot{animation:fv-msg-blink 1s infinite;background-color:var(--el-text-color-secondary,#909399);border-radius:50%;height:6px;width:6px}.fv-msg .fv-msg-main .fv-msg-content-user{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);padding:8px 12px;white-space:pre-wrap}.fv-msg.is-user{flex-direction:row;justify-content:flex-end}.fv-msg.is-user .fv-msg-main{align-items:flex-end}.fv-msg .fv-msg-actions{align-items:center;display:flex;gap:2px;margin-top:2px}.fv-msg .fv-msg-actions .fv-msg-branch{align-items:center;display:inline-flex;gap:2px;margin-left:6px}.fv-msg .fv-msg-actions .fv-msg-branch .fv-msg-branch-label{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:0 2px}@keyframes fv-msg-blink{0%,to{opacity:.3}50%{opacity:1}}.fv-messages{box-sizing:border-box;display:flex;flex:1;flex-direction:column;min-height:0;width:100%}.fv-messages .fv-messages-scroll{box-sizing:border-box;flex:1;min-height:0;overflow-y:auto;padding:0 16px}.fv-messages .fv-messages-inner{margin:0 auto;max-width:var(--fv-messages-max-width,none)}.fv-messages .fv-messages-empty{align-items:center;box-sizing:border-box;display:flex;flex:1;flex-direction:column;justify-content:center;padding:32px 16px}.fv-messages .fv-messages-empty .fv-messages-prompts{margin-top:8px;max-width:640px;width:100%}.fv-ai-chat{background-color:var(--el-bg-color,#fff);box-sizing:border-box;color:var(--el-text-color-primary,#303133);display:flex;flex-direction:column;height:100%;min-height:0;width:100%}.fv-ai-chat .fv-ai-chat-header{align-items:center;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);display:flex;flex-shrink:0;gap:12px;justify-content:space-between;padding:8px 16px}.fv-ai-chat .fv-ai-chat-header .fv-ai-chat-title{font-size:var(--el-font-size-base,14px);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-ai-chat .fv-ai-chat-header .fv-ai-chat-models{flex-shrink:0;width:220px}.fv-ai-chat .fv-ai-chat-body{display:flex;flex:1;min-height:0;overflow:hidden}.fv-ai-chat .fv-ai-chat-footer{flex-shrink:0;padding:8px 16px 12px}.fv-ai-chat.is-center-welcome .fv-ai-chat-body{flex:0 1 auto;margin-top:auto;min-height:0}.fv-ai-chat.is-center-welcome .fv-ai-chat-footer{margin-bottom:auto}html.dark .fv-ai-chat{background-color:var(--el-bg-color,#141414)}.fv-artifacts{background-color:var(--el-bg-color,#fff);border-left:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);box-sizing:border-box;display:flex;flex-direction:column;flex-shrink:0;max-width:60%;overflow:hidden;width:420px}.fv-artifacts .fv-artifacts-tabs{align-items:center;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);display:flex;flex-shrink:0;gap:4px;overflow-x:auto;padding:6px 8px}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab{background:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-regular,#606266);cursor:pointer;flex-shrink:0;font-size:var(--el-font-size-small,12px);line-height:1.4;padding:4px 10px;white-space:nowrap}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-text-color-primary,#303133)}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab.is-active{background-color:var(--el-color-primary-light-9,#ecf5ff);color:var(--el-color-primary,#409eff)}.fv-artifacts .fv-artifacts-tabs .fv-artifacts-spacer{flex:1}.fv-artifacts .fv-artifacts-frame{background-color:var(--el-bg-color-page,#f2f3f5);border:none;flex:1;min-height:0;width:100%}html.dark .fv-artifacts{background-color:var(--el-bg-color,#141414)}
|
package/es/index.mjs
CHANGED
|
@@ -1697,7 +1697,7 @@ const _hoisted_1$g = {
|
|
|
1697
1697
|
class: "fv-bubble-avatar"
|
|
1698
1698
|
};
|
|
1699
1699
|
const _hoisted_2$e = { class: "fv-bubble-main" };
|
|
1700
|
-
const _hoisted_3$
|
|
1700
|
+
const _hoisted_3$e = {
|
|
1701
1701
|
key: 0,
|
|
1702
1702
|
class: "fv-bubble-header"
|
|
1703
1703
|
};
|
|
@@ -1794,7 +1794,7 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
1794
1794
|
}, null, 8, ["size", "shape", "icon", "src", "src-set", "alt", "fit"]))
|
|
1795
1795
|
])) : createCommentVNode("v-if", true),
|
|
1796
1796
|
createElementVNode("div", _hoisted_2$e, [
|
|
1797
|
-
_ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_3$
|
|
1797
|
+
_ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_3$e, [
|
|
1798
1798
|
renderSlot(_ctx.$slots, "header")
|
|
1799
1799
|
])) : createCommentVNode("v-if", true),
|
|
1800
1800
|
createElementVNode(
|
|
@@ -2240,7 +2240,7 @@ const _hoisted_1$d = {
|
|
|
2240
2240
|
class: "fv-sender-header"
|
|
2241
2241
|
};
|
|
2242
2242
|
const _hoisted_2$d = { class: "fv-sender-body" };
|
|
2243
|
-
const _hoisted_3$
|
|
2243
|
+
const _hoisted_3$d = {
|
|
2244
2244
|
key: 0,
|
|
2245
2245
|
class: "fv-sender-body-top"
|
|
2246
2246
|
};
|
|
@@ -2614,7 +2614,7 @@ var _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
2614
2614
|
])) : createCommentVNode("v-if", true),
|
|
2615
2615
|
createElementVNode("div", _hoisted_2$d, [
|
|
2616
2616
|
createCommentVNode(" body \u9876\u90E8\u533A:\u5728\u8F93\u5165\u6846\u4E0A\u65B9\u3001body \u8FB9\u6846\u5185(\u5982\u9644\u4EF6\u5217\u8868) "),
|
|
2617
|
-
_ctx.$slots["body-top"] ? (openBlock(), createElementBlock("div", _hoisted_3$
|
|
2617
|
+
_ctx.$slots["body-top"] ? (openBlock(), createElementBlock("div", _hoisted_3$d, [
|
|
2618
2618
|
renderSlot(_ctx.$slots, "body-top")
|
|
2619
2619
|
])) : createCommentVNode("v-if", true),
|
|
2620
2620
|
createCommentVNode(" \u4E3B\u4F53\u884C:\u524D\u7F00 + \u8F93\u5165 + \u64CD\u4F5C "),
|
|
@@ -2884,7 +2884,7 @@ const _hoisted_2$c = {
|
|
|
2884
2884
|
key: 0,
|
|
2885
2885
|
class: "fv-mention-title"
|
|
2886
2886
|
};
|
|
2887
|
-
const _hoisted_3$
|
|
2887
|
+
const _hoisted_3$c = {
|
|
2888
2888
|
key: 1,
|
|
2889
2889
|
class: "fv-mention-loading"
|
|
2890
2890
|
};
|
|
@@ -3252,7 +3252,7 @@ var _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
3252
3252
|
1
|
|
3253
3253
|
/* TEXT */
|
|
3254
3254
|
)) : createCommentVNode("v-if", true),
|
|
3255
|
-
asyncLoading.value ? (openBlock(), createElementBlock("div", _hoisted_3$
|
|
3255
|
+
asyncLoading.value ? (openBlock(), createElementBlock("div", _hoisted_3$c, "\u52A0\u8F7D\u4E2D\u2026")) : (openBlock(true), createElementBlock(
|
|
3256
3256
|
Fragment,
|
|
3257
3257
|
{ key: 2 },
|
|
3258
3258
|
renderList(candidates.value, (item, index) => {
|
|
@@ -3311,7 +3311,7 @@ const _hoisted_1$b = {
|
|
|
3311
3311
|
class: "fv-editor-header"
|
|
3312
3312
|
};
|
|
3313
3313
|
const _hoisted_2$b = { class: "fv-editor-body" };
|
|
3314
|
-
const _hoisted_3$
|
|
3314
|
+
const _hoisted_3$b = {
|
|
3315
3315
|
key: 0,
|
|
3316
3316
|
class: "fv-editor-prefix"
|
|
3317
3317
|
};
|
|
@@ -4089,7 +4089,7 @@ var _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
4089
4089
|
])) : createCommentVNode("v-if", true),
|
|
4090
4090
|
createElementVNode("div", _hoisted_2$b, [
|
|
4091
4091
|
createCommentVNode(" \u524D\u7F00\u533A "),
|
|
4092
|
-
_ctx.$slots.prefix ? (openBlock(), createElementBlock("div", _hoisted_3$
|
|
4092
|
+
_ctx.$slots.prefix ? (openBlock(), createElementBlock("div", _hoisted_3$b, [
|
|
4093
4093
|
renderSlot(_ctx.$slots, "prefix")
|
|
4094
4094
|
])) : createCommentVNode("v-if", true),
|
|
4095
4095
|
createElementVNode("div", _hoisted_4$a, [
|
|
@@ -4374,7 +4374,7 @@ const _hoisted_2$a = {
|
|
|
4374
4374
|
key: 0,
|
|
4375
4375
|
class: "fv-thinking-dot"
|
|
4376
4376
|
};
|
|
4377
|
-
const _hoisted_3$
|
|
4377
|
+
const _hoisted_3$a = { class: "fv-thinking-label" };
|
|
4378
4378
|
const _hoisted_4$9 = ["hidden"];
|
|
4379
4379
|
var _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
4380
4380
|
...{ name: "FvThinking" },
|
|
@@ -4470,7 +4470,7 @@ var _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
4470
4470
|
}))
|
|
4471
4471
|
])
|
|
4472
4472
|
]),
|
|
4473
|
-
createElementVNode("span", _hoisted_3$
|
|
4473
|
+
createElementVNode("span", _hoisted_3$a, [
|
|
4474
4474
|
renderSlot(_ctx.$slots, "label", {}, () => [
|
|
4475
4475
|
createTextVNode(
|
|
4476
4476
|
toDisplayString(statusText.value),
|
|
@@ -4530,7 +4530,7 @@ const _hoisted_2$9 = {
|
|
|
4530
4530
|
key: 4,
|
|
4531
4531
|
class: "fv-chain-dot"
|
|
4532
4532
|
};
|
|
4533
|
-
const _hoisted_3$
|
|
4533
|
+
const _hoisted_3$9 = { class: "fv-chain-main" };
|
|
4534
4534
|
const _hoisted_4$8 = { class: "fv-chain-title" };
|
|
4535
4535
|
const _hoisted_5$4 = {
|
|
4536
4536
|
key: 0,
|
|
@@ -4605,7 +4605,7 @@ var _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
4605
4605
|
})) : (openBlock(), createElementBlock("span", _hoisted_2$9))
|
|
4606
4606
|
]),
|
|
4607
4607
|
createCommentVNode(" \u5185\u5BB9:#content \u4F5C\u7528\u57DF\u63D2\u69FD\u8986\u76D6\u9ED8\u8BA4 title/description "),
|
|
4608
|
-
createElementVNode("div", _hoisted_3$
|
|
4608
|
+
createElementVNode("div", _hoisted_3$9, [
|
|
4609
4609
|
renderSlot(_ctx.$slots, "content", {
|
|
4610
4610
|
item,
|
|
4611
4611
|
index
|
|
@@ -4644,7 +4644,7 @@ var _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
4644
4644
|
|
|
4645
4645
|
const _hoisted_1$8 = { class: "fv-welcome" };
|
|
4646
4646
|
const _hoisted_2$8 = { class: "fv-welcome-icon" };
|
|
4647
|
-
const _hoisted_3$
|
|
4647
|
+
const _hoisted_3$8 = {
|
|
4648
4648
|
key: 0,
|
|
4649
4649
|
class: "fv-welcome-name"
|
|
4650
4650
|
};
|
|
@@ -4691,7 +4691,7 @@ var _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
4691
4691
|
])
|
|
4692
4692
|
]),
|
|
4693
4693
|
createCommentVNode(" #name \u63D2\u69FD\u8986\u76D6\u540D\u79F0 "),
|
|
4694
|
-
_ctx.$slots.name || __props.name ? (openBlock(), createElementBlock("h2", _hoisted_3$
|
|
4694
|
+
_ctx.$slots.name || __props.name ? (openBlock(), createElementBlock("h2", _hoisted_3$8, [
|
|
4695
4695
|
renderSlot(_ctx.$slots, "name", {}, () => [
|
|
4696
4696
|
createTextVNode(
|
|
4697
4697
|
toDisplayString(__props.name),
|
|
@@ -4720,7 +4720,7 @@ const _hoisted_2$7 = {
|
|
|
4720
4720
|
key: 0,
|
|
4721
4721
|
class: "fv-prompts-title"
|
|
4722
4722
|
};
|
|
4723
|
-
const _hoisted_3$
|
|
4723
|
+
const _hoisted_3$7 = { class: "fv-prompts-list" };
|
|
4724
4724
|
const _hoisted_4$6 = ["role", "tabindex", "onClick"];
|
|
4725
4725
|
const _hoisted_5$3 = { class: "fv-prompt-item-main" };
|
|
4726
4726
|
const _hoisted_6$2 = { class: "fv-prompt-item-text" };
|
|
@@ -4763,7 +4763,7 @@ var _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
4763
4763
|
1
|
|
4764
4764
|
/* TEXT */
|
|
4765
4765
|
)) : createCommentVNode("v-if", true),
|
|
4766
|
-
createElementVNode("div", _hoisted_3$
|
|
4766
|
+
createElementVNode("div", _hoisted_3$7, [
|
|
4767
4767
|
(openBlock(true), createElementBlock(
|
|
4768
4768
|
Fragment,
|
|
4769
4769
|
null,
|
|
@@ -4828,7 +4828,7 @@ var _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
4828
4828
|
|
|
4829
4829
|
const _hoisted_1$6 = ["src", "alt"];
|
|
4830
4830
|
const _hoisted_2$6 = { class: "fv-files-card-info" };
|
|
4831
|
-
const _hoisted_3$
|
|
4831
|
+
const _hoisted_3$6 = ["title"];
|
|
4832
4832
|
const _hoisted_4$5 = {
|
|
4833
4833
|
key: 0,
|
|
4834
4834
|
class: "fv-files-card-size"
|
|
@@ -4970,7 +4970,7 @@ var _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4970
4970
|
createElementVNode("div", {
|
|
4971
4971
|
class: "fv-files-card-name",
|
|
4972
4972
|
title: __props.name
|
|
4973
|
-
}, toDisplayString(__props.name), 9, _hoisted_3$
|
|
4973
|
+
}, toDisplayString(__props.name), 9, _hoisted_3$6),
|
|
4974
4974
|
sizeText.value ? (openBlock(), createElementBlock(
|
|
4975
4975
|
"div",
|
|
4976
4976
|
_hoisted_4$5,
|
|
@@ -5014,7 +5014,7 @@ var _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
5014
5014
|
|
|
5015
5015
|
const _hoisted_1$5 = { class: "fv-attachments" };
|
|
5016
5016
|
const _hoisted_2$5 = ["accept"];
|
|
5017
|
-
const _hoisted_3$
|
|
5017
|
+
const _hoisted_3$5 = ["disabled"];
|
|
5018
5018
|
const _hoisted_4$4 = {
|
|
5019
5019
|
key: 1,
|
|
5020
5020
|
class: "fv-attachments-list"
|
|
@@ -5156,7 +5156,7 @@ var _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
5156
5156
|
_: 1
|
|
5157
5157
|
/* STABLE */
|
|
5158
5158
|
})
|
|
5159
|
-
], 10, _hoisted_3$
|
|
5159
|
+
], 10, _hoisted_3$5)) : createCommentVNode("v-if", true),
|
|
5160
5160
|
createCommentVNode(" \u6587\u4EF6\u5217\u8868:FilesCard;#list-thumb/#list-item \u8986\u76D6\u9879\u6E32\u67D3(triggerOnly \u5E03\u5C40\u4E0D\u6E32\u67D3) "),
|
|
5161
5161
|
list.value.length && __props.layout !== "triggerOnly" ? (openBlock(), createElementBlock("div", _hoisted_4$4, [
|
|
5162
5162
|
(openBlock(true), createElementBlock(
|
|
@@ -5234,7 +5234,7 @@ const _hoisted_1$4 = {
|
|
|
5234
5234
|
class: "fv-conversations-group-title"
|
|
5235
5235
|
};
|
|
5236
5236
|
const _hoisted_2$4 = ["onClick"];
|
|
5237
|
-
const _hoisted_3$
|
|
5237
|
+
const _hoisted_3$4 = { class: "fv-conversations-item-content" };
|
|
5238
5238
|
const _hoisted_4$3 = ["title"];
|
|
5239
5239
|
var _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
5240
5240
|
...{ name: "FvConversations" },
|
|
@@ -5366,7 +5366,7 @@ var _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
5366
5366
|
onClick: ($event) => onItemClick(item)
|
|
5367
5367
|
}, [
|
|
5368
5368
|
createCommentVNode(" \u884C\u5185\u5BB9:#item \u8986\u76D6\u6574\u884C(\u9ED8\u8BA4\u6E32\u67D3 label) "),
|
|
5369
|
-
createElementVNode("div", _hoisted_3$
|
|
5369
|
+
createElementVNode("div", _hoisted_3$4, [
|
|
5370
5370
|
renderSlot(_ctx.$slots, "item", {
|
|
5371
5371
|
item,
|
|
5372
5372
|
active: isActive(item)
|
|
@@ -6004,16 +6004,22 @@ ${fileParts.join("\n")}` });
|
|
|
6004
6004
|
}
|
|
6005
6005
|
|
|
6006
6006
|
const _hoisted_1$3 = ["data-message-id"];
|
|
6007
|
-
const _hoisted_2$3 = {
|
|
6008
|
-
|
|
6009
|
-
|
|
6007
|
+
const _hoisted_2$3 = {
|
|
6008
|
+
key: 0,
|
|
6009
|
+
class: "fv-msg-avatar"
|
|
6010
|
+
};
|
|
6011
|
+
const _hoisted_3$3 = { class: "fv-msg-main" };
|
|
6012
|
+
const _hoisted_4$2 = {
|
|
6013
|
+
key: 0,
|
|
6014
|
+
class: "fv-msg-header"
|
|
6015
|
+
};
|
|
6010
6016
|
const _hoisted_5 = { class: "fv-msg-role" };
|
|
6011
6017
|
const _hoisted_6 = {
|
|
6012
6018
|
key: 0,
|
|
6013
6019
|
class: "fv-msg-model"
|
|
6014
6020
|
};
|
|
6015
6021
|
const _hoisted_7 = {
|
|
6016
|
-
key:
|
|
6022
|
+
key: 1,
|
|
6017
6023
|
class: "fv-msg-files"
|
|
6018
6024
|
};
|
|
6019
6025
|
const _hoisted_8 = ["src", "alt"];
|
|
@@ -6022,7 +6028,7 @@ const _hoisted_9 = {
|
|
|
6022
6028
|
class: "fv-msg-file-name"
|
|
6023
6029
|
};
|
|
6024
6030
|
const _hoisted_10 = {
|
|
6025
|
-
key:
|
|
6031
|
+
key: 3,
|
|
6026
6032
|
class: "fv-msg-content"
|
|
6027
6033
|
};
|
|
6028
6034
|
const _hoisted_11 = {
|
|
@@ -6034,11 +6040,11 @@ const _hoisted_12 = {
|
|
|
6034
6040
|
class: "fv-msg-pending"
|
|
6035
6041
|
};
|
|
6036
6042
|
const _hoisted_13 = {
|
|
6037
|
-
key:
|
|
6043
|
+
key: 4,
|
|
6038
6044
|
class: "fv-msg-content fv-msg-content-user"
|
|
6039
6045
|
};
|
|
6040
6046
|
const _hoisted_14 = {
|
|
6041
|
-
key:
|
|
6047
|
+
key: 5,
|
|
6042
6048
|
class: "fv-msg-actions"
|
|
6043
6049
|
};
|
|
6044
6050
|
const _hoisted_15 = {
|
|
@@ -6054,6 +6060,8 @@ var _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
6054
6060
|
branch: { type: Object, required: false, default: void 0 },
|
|
6055
6061
|
showActions: { type: Boolean, required: false, default: true },
|
|
6056
6062
|
showBranchSwitch: { type: Boolean, required: false, default: true },
|
|
6063
|
+
showUserAvatar: { type: Boolean, required: false, default: true },
|
|
6064
|
+
showUserName: { type: Boolean, required: false, default: true },
|
|
6057
6065
|
autoCollapse: { type: Boolean, required: false, default: true }
|
|
6058
6066
|
},
|
|
6059
6067
|
emits: ["copy", "regenerate", "branch-change"],
|
|
@@ -6084,8 +6092,8 @@ var _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
6084
6092
|
class: normalizeClass(["fv-msg", [`is-${__props.message.role}`, { "is-error": __props.message.status === "error", "is-user": isUser.value }]]),
|
|
6085
6093
|
"data-message-id": __props.message.id
|
|
6086
6094
|
}, [
|
|
6087
|
-
createCommentVNode(" \u5934\u50CF:user \u53F3\u4FA7(\u81EA\u8EAB)
|
|
6088
|
-
|
|
6095
|
+
createCommentVNode(" \u5934\u50CF:user \u53F3\u4FA7(\u81EA\u8EAB),assistant \u5DE6\u4FA7;showUserAvatar=false \u65F6\u7528\u6237\u6D88\u606F\u4E0D\u6E32\u67D3 "),
|
|
6096
|
+
!isUser.value || __props.showUserAvatar ? (openBlock(), createElementBlock("div", _hoisted_2$3, [
|
|
6089
6097
|
renderSlot(_ctx.$slots, "message-avatar", { message: __props.message }, () => [
|
|
6090
6098
|
isUser.value ? (openBlock(), createBlock(unref(ElIcon), {
|
|
6091
6099
|
key: 0,
|
|
@@ -6107,10 +6115,10 @@ var _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
6107
6115
|
/* STABLE */
|
|
6108
6116
|
}))
|
|
6109
6117
|
])
|
|
6110
|
-
]),
|
|
6111
|
-
createElementVNode("div", _hoisted_3$
|
|
6112
|
-
createCommentVNode(" \u5934\u90E8:\u89D2\u8272\u540D + \u6A21\u578B\u6807\u8BB0 "),
|
|
6113
|
-
|
|
6118
|
+
])) : createCommentVNode("v-if", true),
|
|
6119
|
+
createElementVNode("div", _hoisted_3$3, [
|
|
6120
|
+
createCommentVNode(" \u5934\u90E8:\u89D2\u8272\u540D + \u6A21\u578B\u6807\u8BB0;showUserName=false \u65F6\u7528\u6237\u6D88\u606F\u4E0D\u6E32\u67D3 "),
|
|
6121
|
+
!isUser.value || __props.showUserName ? (openBlock(), createElementBlock("div", _hoisted_4$2, [
|
|
6114
6122
|
createElementVNode(
|
|
6115
6123
|
"span",
|
|
6116
6124
|
_hoisted_5,
|
|
@@ -6125,7 +6133,7 @@ var _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
6125
6133
|
1
|
|
6126
6134
|
/* TEXT */
|
|
6127
6135
|
)) : createCommentVNode("v-if", true)
|
|
6128
|
-
]),
|
|
6136
|
+
])) : createCommentVNode("v-if", true),
|
|
6129
6137
|
createCommentVNode(" \u9644\u4EF6:user \u6D88\u606F files \u4EE5 FilesCard \u5E73\u94FA "),
|
|
6130
6138
|
__props.message.files?.length ? (openBlock(), createElementBlock("div", _hoisted_7, [
|
|
6131
6139
|
renderSlot(_ctx.$slots, "message-files", {
|
|
@@ -6167,7 +6175,7 @@ var _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
6167
6175
|
])) : createCommentVNode("v-if", true),
|
|
6168
6176
|
createCommentVNode(" \u601D\u8003\u94FE\u6298\u53E0(assistant \u542B reasoning \u65F6) "),
|
|
6169
6177
|
!isUser.value && hasReasoning.value ? (openBlock(), createBlock(_sfc_main$a, {
|
|
6170
|
-
key:
|
|
6178
|
+
key: 2,
|
|
6171
6179
|
content: __props.message.reasoning,
|
|
6172
6180
|
status: thinkingStatus.value,
|
|
6173
6181
|
"auto-collapse": __props.autoCollapse
|
|
@@ -6343,6 +6351,7 @@ const _hoisted_2$2 = {
|
|
|
6343
6351
|
key: 0,
|
|
6344
6352
|
class: "fv-messages-empty"
|
|
6345
6353
|
};
|
|
6354
|
+
const _hoisted_3$2 = { class: "fv-messages-inner" };
|
|
6346
6355
|
var _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
6347
6356
|
...{ name: "FvAiMessages" },
|
|
6348
6357
|
__name: "index",
|
|
@@ -6356,7 +6365,9 @@ var _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
6356
6365
|
suggestionsTitle: { type: String, required: false, default: "" },
|
|
6357
6366
|
scrollThreshold: { type: Number, required: false, default: 40 },
|
|
6358
6367
|
showActions: { type: Boolean, required: false, default: true },
|
|
6359
|
-
showBranchSwitch: { type: Boolean, required: false, default: true }
|
|
6368
|
+
showBranchSwitch: { type: Boolean, required: false, default: true },
|
|
6369
|
+
showUserAvatar: { type: Boolean, required: false, default: true },
|
|
6370
|
+
showUserName: { type: Boolean, required: false, default: true }
|
|
6360
6371
|
},
|
|
6361
6372
|
emits: ["select", "copy", "regenerate", "branch-change"],
|
|
6362
6373
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
@@ -6447,7 +6458,7 @@ var _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
6447
6458
|
Fragment,
|
|
6448
6459
|
{ key: 1 },
|
|
6449
6460
|
[
|
|
6450
|
-
createCommentVNode(" \u6D88\u606F\u5217\u8868 "),
|
|
6461
|
+
createCommentVNode(" \u6D88\u606F\u5217\u8868:\u5185\u5C42 fv-messages-inner \u63A7\u5236\u6EDA\u52A8\u5185\u5BB9\u6700\u5927\u5BBD\u5EA6\u5E76\u5DE6\u53F3\u5C45\u4E2D(--fv-messages-max-width \u53EF\u8986\u76D6) "),
|
|
6451
6462
|
createElementVNode(
|
|
6452
6463
|
"div",
|
|
6453
6464
|
{
|
|
@@ -6456,42 +6467,46 @@ var _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
6456
6467
|
class: "fv-messages-scroll"
|
|
6457
6468
|
},
|
|
6458
6469
|
[
|
|
6459
|
-
(
|
|
6460
|
-
|
|
6461
|
-
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
|
|
6465
|
-
|
|
6466
|
-
|
|
6467
|
-
|
|
6468
|
-
|
|
6469
|
-
|
|
6470
|
-
|
|
6471
|
-
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6477
|
-
|
|
6478
|
-
|
|
6479
|
-
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
|
|
6485
|
-
|
|
6486
|
-
|
|
6487
|
-
|
|
6488
|
-
|
|
6489
|
-
|
|
6490
|
-
|
|
6491
|
-
|
|
6492
|
-
|
|
6493
|
-
|
|
6494
|
-
|
|
6470
|
+
createElementVNode("div", _hoisted_3$2, [
|
|
6471
|
+
(openBlock(true), createElementBlock(
|
|
6472
|
+
Fragment,
|
|
6473
|
+
null,
|
|
6474
|
+
renderList(__props.messages, (m) => {
|
|
6475
|
+
return openBlock(), createBlock(_sfc_main$3, {
|
|
6476
|
+
key: m.id,
|
|
6477
|
+
message: m,
|
|
6478
|
+
branch: branchInfo(m),
|
|
6479
|
+
"show-actions": __props.showActions,
|
|
6480
|
+
"show-branch-switch": __props.showBranchSwitch,
|
|
6481
|
+
"show-user-avatar": __props.showUserAvatar,
|
|
6482
|
+
"show-user-name": __props.showUserName,
|
|
6483
|
+
onCopy,
|
|
6484
|
+
onRegenerate,
|
|
6485
|
+
onBranchChange: onBranch
|
|
6486
|
+
}, createSlots({
|
|
6487
|
+
_: 2
|
|
6488
|
+
/* DYNAMIC */
|
|
6489
|
+
}, [
|
|
6490
|
+
_ctx.$slots["message-avatar"] ? {
|
|
6491
|
+
name: "message-avatar",
|
|
6492
|
+
fn: withCtx((scope) => [
|
|
6493
|
+
renderSlot(_ctx.$slots, "message-avatar", mergeProps({ ref_for: true }, scope))
|
|
6494
|
+
]),
|
|
6495
|
+
key: "0"
|
|
6496
|
+
} : void 0,
|
|
6497
|
+
_ctx.$slots["message-actions"] ? {
|
|
6498
|
+
name: "message-actions",
|
|
6499
|
+
fn: withCtx((scope) => [
|
|
6500
|
+
renderSlot(_ctx.$slots, "message-actions", mergeProps({ ref_for: true }, scope))
|
|
6501
|
+
]),
|
|
6502
|
+
key: "1"
|
|
6503
|
+
} : void 0
|
|
6504
|
+
]), 1032, ["message", "branch", "show-actions", "show-branch-switch", "show-user-avatar", "show-user-name"]);
|
|
6505
|
+
}),
|
|
6506
|
+
128
|
|
6507
|
+
/* KEYED_FRAGMENT */
|
|
6508
|
+
))
|
|
6509
|
+
])
|
|
6495
6510
|
],
|
|
6496
6511
|
512
|
|
6497
6512
|
/* NEED_PATCH */
|
|
@@ -6779,6 +6794,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
6779
6794
|
title: { type: String, required: false, default: "" },
|
|
6780
6795
|
showHeader: { type: Boolean, required: false, default: false },
|
|
6781
6796
|
centerWelcome: { type: Boolean, required: false, default: true },
|
|
6797
|
+
showUserAvatar: { type: Boolean, required: false, default: true },
|
|
6798
|
+
showUserName: { type: Boolean, required: false, default: true },
|
|
6782
6799
|
placeholder: { type: String, required: false, default: "" },
|
|
6783
6800
|
senderShadow: { type: Boolean, required: false, default: true },
|
|
6784
6801
|
suggestions: { type: Array, required: false, default: () => [] },
|
|
@@ -7042,6 +7059,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
7042
7059
|
nodes: unref(nodeTable),
|
|
7043
7060
|
name: __props.title,
|
|
7044
7061
|
suggestions: __props.suggestions,
|
|
7062
|
+
"show-user-avatar": __props.showUserAvatar,
|
|
7063
|
+
"show-user-name": __props.showUserName,
|
|
7045
7064
|
onSelect: onSelectSuggestion,
|
|
7046
7065
|
onCopy,
|
|
7047
7066
|
onRegenerate,
|
|
@@ -7071,7 +7090,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
7071
7090
|
]),
|
|
7072
7091
|
key: "2"
|
|
7073
7092
|
} : void 0
|
|
7074
|
-
]), 1032, ["messages", "nodes", "name", "suggestions"]),
|
|
7093
|
+
]), 1032, ["messages", "nodes", "name", "suggestions", "show-user-avatar", "show-user-name"]),
|
|
7075
7094
|
__props.features?.artifacts && artifacts.value.length ? (openBlock(), createBlock(_sfc_main$1, {
|
|
7076
7095
|
key: 0,
|
|
7077
7096
|
artifacts: artifacts.value,
|
package/lib/index.js
CHANGED
|
@@ -1713,7 +1713,7 @@
|
|
|
1713
1713
|
class: "fv-bubble-avatar"
|
|
1714
1714
|
};
|
|
1715
1715
|
const _hoisted_2$e = { class: "fv-bubble-main" };
|
|
1716
|
-
const _hoisted_3$
|
|
1716
|
+
const _hoisted_3$e = {
|
|
1717
1717
|
key: 0,
|
|
1718
1718
|
class: "fv-bubble-header"
|
|
1719
1719
|
};
|
|
@@ -1810,7 +1810,7 @@
|
|
|
1810
1810
|
}, null, 8, ["size", "shape", "icon", "src", "src-set", "alt", "fit"]))
|
|
1811
1811
|
])) : vue.createCommentVNode("v-if", true),
|
|
1812
1812
|
vue.createElementVNode("div", _hoisted_2$e, [
|
|
1813
|
-
_ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$
|
|
1813
|
+
_ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$e, [
|
|
1814
1814
|
vue.renderSlot(_ctx.$slots, "header")
|
|
1815
1815
|
])) : vue.createCommentVNode("v-if", true),
|
|
1816
1816
|
vue.createElementVNode(
|
|
@@ -2256,7 +2256,7 @@
|
|
|
2256
2256
|
class: "fv-sender-header"
|
|
2257
2257
|
};
|
|
2258
2258
|
const _hoisted_2$d = { class: "fv-sender-body" };
|
|
2259
|
-
const _hoisted_3$
|
|
2259
|
+
const _hoisted_3$d = {
|
|
2260
2260
|
key: 0,
|
|
2261
2261
|
class: "fv-sender-body-top"
|
|
2262
2262
|
};
|
|
@@ -2630,7 +2630,7 @@
|
|
|
2630
2630
|
])) : vue.createCommentVNode("v-if", true),
|
|
2631
2631
|
vue.createElementVNode("div", _hoisted_2$d, [
|
|
2632
2632
|
vue.createCommentVNode(" body \u9876\u90E8\u533A:\u5728\u8F93\u5165\u6846\u4E0A\u65B9\u3001body \u8FB9\u6846\u5185(\u5982\u9644\u4EF6\u5217\u8868) "),
|
|
2633
|
-
_ctx.$slots["body-top"] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$
|
|
2633
|
+
_ctx.$slots["body-top"] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$d, [
|
|
2634
2634
|
vue.renderSlot(_ctx.$slots, "body-top")
|
|
2635
2635
|
])) : vue.createCommentVNode("v-if", true),
|
|
2636
2636
|
vue.createCommentVNode(" \u4E3B\u4F53\u884C:\u524D\u7F00 + \u8F93\u5165 + \u64CD\u4F5C "),
|
|
@@ -2900,7 +2900,7 @@
|
|
|
2900
2900
|
key: 0,
|
|
2901
2901
|
class: "fv-mention-title"
|
|
2902
2902
|
};
|
|
2903
|
-
const _hoisted_3$
|
|
2903
|
+
const _hoisted_3$c = {
|
|
2904
2904
|
key: 1,
|
|
2905
2905
|
class: "fv-mention-loading"
|
|
2906
2906
|
};
|
|
@@ -3268,7 +3268,7 @@
|
|
|
3268
3268
|
1
|
|
3269
3269
|
/* TEXT */
|
|
3270
3270
|
)) : vue.createCommentVNode("v-if", true),
|
|
3271
|
-
asyncLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$
|
|
3271
|
+
asyncLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$c, "\u52A0\u8F7D\u4E2D\u2026")) : (vue.openBlock(true), vue.createElementBlock(
|
|
3272
3272
|
vue.Fragment,
|
|
3273
3273
|
{ key: 2 },
|
|
3274
3274
|
vue.renderList(candidates.value, (item, index) => {
|
|
@@ -3327,7 +3327,7 @@
|
|
|
3327
3327
|
class: "fv-editor-header"
|
|
3328
3328
|
};
|
|
3329
3329
|
const _hoisted_2$b = { class: "fv-editor-body" };
|
|
3330
|
-
const _hoisted_3$
|
|
3330
|
+
const _hoisted_3$b = {
|
|
3331
3331
|
key: 0,
|
|
3332
3332
|
class: "fv-editor-prefix"
|
|
3333
3333
|
};
|
|
@@ -4105,7 +4105,7 @@
|
|
|
4105
4105
|
])) : vue.createCommentVNode("v-if", true),
|
|
4106
4106
|
vue.createElementVNode("div", _hoisted_2$b, [
|
|
4107
4107
|
vue.createCommentVNode(" \u524D\u7F00\u533A "),
|
|
4108
|
-
_ctx.$slots.prefix ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$
|
|
4108
|
+
_ctx.$slots.prefix ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$b, [
|
|
4109
4109
|
vue.renderSlot(_ctx.$slots, "prefix")
|
|
4110
4110
|
])) : vue.createCommentVNode("v-if", true),
|
|
4111
4111
|
vue.createElementVNode("div", _hoisted_4$a, [
|
|
@@ -4390,7 +4390,7 @@
|
|
|
4390
4390
|
key: 0,
|
|
4391
4391
|
class: "fv-thinking-dot"
|
|
4392
4392
|
};
|
|
4393
|
-
const _hoisted_3$
|
|
4393
|
+
const _hoisted_3$a = { class: "fv-thinking-label" };
|
|
4394
4394
|
const _hoisted_4$9 = ["hidden"];
|
|
4395
4395
|
var _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
4396
4396
|
...{ name: "FvThinking" },
|
|
@@ -4486,7 +4486,7 @@
|
|
|
4486
4486
|
}))
|
|
4487
4487
|
])
|
|
4488
4488
|
]),
|
|
4489
|
-
vue.createElementVNode("span", _hoisted_3$
|
|
4489
|
+
vue.createElementVNode("span", _hoisted_3$a, [
|
|
4490
4490
|
vue.renderSlot(_ctx.$slots, "label", {}, () => [
|
|
4491
4491
|
vue.createTextVNode(
|
|
4492
4492
|
vue.toDisplayString(statusText.value),
|
|
@@ -4546,7 +4546,7 @@
|
|
|
4546
4546
|
key: 4,
|
|
4547
4547
|
class: "fv-chain-dot"
|
|
4548
4548
|
};
|
|
4549
|
-
const _hoisted_3$
|
|
4549
|
+
const _hoisted_3$9 = { class: "fv-chain-main" };
|
|
4550
4550
|
const _hoisted_4$8 = { class: "fv-chain-title" };
|
|
4551
4551
|
const _hoisted_5$4 = {
|
|
4552
4552
|
key: 0,
|
|
@@ -4621,7 +4621,7 @@
|
|
|
4621
4621
|
})) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$9))
|
|
4622
4622
|
]),
|
|
4623
4623
|
vue.createCommentVNode(" \u5185\u5BB9:#content \u4F5C\u7528\u57DF\u63D2\u69FD\u8986\u76D6\u9ED8\u8BA4 title/description "),
|
|
4624
|
-
vue.createElementVNode("div", _hoisted_3$
|
|
4624
|
+
vue.createElementVNode("div", _hoisted_3$9, [
|
|
4625
4625
|
vue.renderSlot(_ctx.$slots, "content", {
|
|
4626
4626
|
item,
|
|
4627
4627
|
index
|
|
@@ -4660,7 +4660,7 @@
|
|
|
4660
4660
|
|
|
4661
4661
|
const _hoisted_1$8 = { class: "fv-welcome" };
|
|
4662
4662
|
const _hoisted_2$8 = { class: "fv-welcome-icon" };
|
|
4663
|
-
const _hoisted_3$
|
|
4663
|
+
const _hoisted_3$8 = {
|
|
4664
4664
|
key: 0,
|
|
4665
4665
|
class: "fv-welcome-name"
|
|
4666
4666
|
};
|
|
@@ -4707,7 +4707,7 @@
|
|
|
4707
4707
|
])
|
|
4708
4708
|
]),
|
|
4709
4709
|
vue.createCommentVNode(" #name \u63D2\u69FD\u8986\u76D6\u540D\u79F0 "),
|
|
4710
|
-
_ctx.$slots.name || __props.name ? (vue.openBlock(), vue.createElementBlock("h2", _hoisted_3$
|
|
4710
|
+
_ctx.$slots.name || __props.name ? (vue.openBlock(), vue.createElementBlock("h2", _hoisted_3$8, [
|
|
4711
4711
|
vue.renderSlot(_ctx.$slots, "name", {}, () => [
|
|
4712
4712
|
vue.createTextVNode(
|
|
4713
4713
|
vue.toDisplayString(__props.name),
|
|
@@ -4736,7 +4736,7 @@
|
|
|
4736
4736
|
key: 0,
|
|
4737
4737
|
class: "fv-prompts-title"
|
|
4738
4738
|
};
|
|
4739
|
-
const _hoisted_3$
|
|
4739
|
+
const _hoisted_3$7 = { class: "fv-prompts-list" };
|
|
4740
4740
|
const _hoisted_4$6 = ["role", "tabindex", "onClick"];
|
|
4741
4741
|
const _hoisted_5$3 = { class: "fv-prompt-item-main" };
|
|
4742
4742
|
const _hoisted_6$2 = { class: "fv-prompt-item-text" };
|
|
@@ -4779,7 +4779,7 @@
|
|
|
4779
4779
|
1
|
|
4780
4780
|
/* TEXT */
|
|
4781
4781
|
)) : vue.createCommentVNode("v-if", true),
|
|
4782
|
-
vue.createElementVNode("div", _hoisted_3$
|
|
4782
|
+
vue.createElementVNode("div", _hoisted_3$7, [
|
|
4783
4783
|
(vue.openBlock(true), vue.createElementBlock(
|
|
4784
4784
|
vue.Fragment,
|
|
4785
4785
|
null,
|
|
@@ -4844,7 +4844,7 @@
|
|
|
4844
4844
|
|
|
4845
4845
|
const _hoisted_1$6 = ["src", "alt"];
|
|
4846
4846
|
const _hoisted_2$6 = { class: "fv-files-card-info" };
|
|
4847
|
-
const _hoisted_3$
|
|
4847
|
+
const _hoisted_3$6 = ["title"];
|
|
4848
4848
|
const _hoisted_4$5 = {
|
|
4849
4849
|
key: 0,
|
|
4850
4850
|
class: "fv-files-card-size"
|
|
@@ -4986,7 +4986,7 @@
|
|
|
4986
4986
|
vue.createElementVNode("div", {
|
|
4987
4987
|
class: "fv-files-card-name",
|
|
4988
4988
|
title: __props.name
|
|
4989
|
-
}, vue.toDisplayString(__props.name), 9, _hoisted_3$
|
|
4989
|
+
}, vue.toDisplayString(__props.name), 9, _hoisted_3$6),
|
|
4990
4990
|
sizeText.value ? (vue.openBlock(), vue.createElementBlock(
|
|
4991
4991
|
"div",
|
|
4992
4992
|
_hoisted_4$5,
|
|
@@ -5030,7 +5030,7 @@
|
|
|
5030
5030
|
|
|
5031
5031
|
const _hoisted_1$5 = { class: "fv-attachments" };
|
|
5032
5032
|
const _hoisted_2$5 = ["accept"];
|
|
5033
|
-
const _hoisted_3$
|
|
5033
|
+
const _hoisted_3$5 = ["disabled"];
|
|
5034
5034
|
const _hoisted_4$4 = {
|
|
5035
5035
|
key: 1,
|
|
5036
5036
|
class: "fv-attachments-list"
|
|
@@ -5172,7 +5172,7 @@
|
|
|
5172
5172
|
_: 1
|
|
5173
5173
|
/* STABLE */
|
|
5174
5174
|
})
|
|
5175
|
-
], 10, _hoisted_3$
|
|
5175
|
+
], 10, _hoisted_3$5)) : vue.createCommentVNode("v-if", true),
|
|
5176
5176
|
vue.createCommentVNode(" \u6587\u4EF6\u5217\u8868:FilesCard;#list-thumb/#list-item \u8986\u76D6\u9879\u6E32\u67D3(triggerOnly \u5E03\u5C40\u4E0D\u6E32\u67D3) "),
|
|
5177
5177
|
list.value.length && __props.layout !== "triggerOnly" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$4, [
|
|
5178
5178
|
(vue.openBlock(true), vue.createElementBlock(
|
|
@@ -5250,7 +5250,7 @@
|
|
|
5250
5250
|
class: "fv-conversations-group-title"
|
|
5251
5251
|
};
|
|
5252
5252
|
const _hoisted_2$4 = ["onClick"];
|
|
5253
|
-
const _hoisted_3$
|
|
5253
|
+
const _hoisted_3$4 = { class: "fv-conversations-item-content" };
|
|
5254
5254
|
const _hoisted_4$3 = ["title"];
|
|
5255
5255
|
var _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
5256
5256
|
...{ name: "FvConversations" },
|
|
@@ -5382,7 +5382,7 @@
|
|
|
5382
5382
|
onClick: ($event) => onItemClick(item)
|
|
5383
5383
|
}, [
|
|
5384
5384
|
vue.createCommentVNode(" \u884C\u5185\u5BB9:#item \u8986\u76D6\u6574\u884C(\u9ED8\u8BA4\u6E32\u67D3 label) "),
|
|
5385
|
-
vue.createElementVNode("div", _hoisted_3$
|
|
5385
|
+
vue.createElementVNode("div", _hoisted_3$4, [
|
|
5386
5386
|
vue.renderSlot(_ctx.$slots, "item", {
|
|
5387
5387
|
item,
|
|
5388
5388
|
active: isActive(item)
|
|
@@ -6020,16 +6020,22 @@ ${fileParts.join("\n")}` });
|
|
|
6020
6020
|
}
|
|
6021
6021
|
|
|
6022
6022
|
const _hoisted_1$3 = ["data-message-id"];
|
|
6023
|
-
const _hoisted_2$3 = {
|
|
6024
|
-
|
|
6025
|
-
|
|
6023
|
+
const _hoisted_2$3 = {
|
|
6024
|
+
key: 0,
|
|
6025
|
+
class: "fv-msg-avatar"
|
|
6026
|
+
};
|
|
6027
|
+
const _hoisted_3$3 = { class: "fv-msg-main" };
|
|
6028
|
+
const _hoisted_4$2 = {
|
|
6029
|
+
key: 0,
|
|
6030
|
+
class: "fv-msg-header"
|
|
6031
|
+
};
|
|
6026
6032
|
const _hoisted_5 = { class: "fv-msg-role" };
|
|
6027
6033
|
const _hoisted_6 = {
|
|
6028
6034
|
key: 0,
|
|
6029
6035
|
class: "fv-msg-model"
|
|
6030
6036
|
};
|
|
6031
6037
|
const _hoisted_7 = {
|
|
6032
|
-
key:
|
|
6038
|
+
key: 1,
|
|
6033
6039
|
class: "fv-msg-files"
|
|
6034
6040
|
};
|
|
6035
6041
|
const _hoisted_8 = ["src", "alt"];
|
|
@@ -6038,7 +6044,7 @@ ${fileParts.join("\n")}` });
|
|
|
6038
6044
|
class: "fv-msg-file-name"
|
|
6039
6045
|
};
|
|
6040
6046
|
const _hoisted_10 = {
|
|
6041
|
-
key:
|
|
6047
|
+
key: 3,
|
|
6042
6048
|
class: "fv-msg-content"
|
|
6043
6049
|
};
|
|
6044
6050
|
const _hoisted_11 = {
|
|
@@ -6050,11 +6056,11 @@ ${fileParts.join("\n")}` });
|
|
|
6050
6056
|
class: "fv-msg-pending"
|
|
6051
6057
|
};
|
|
6052
6058
|
const _hoisted_13 = {
|
|
6053
|
-
key:
|
|
6059
|
+
key: 4,
|
|
6054
6060
|
class: "fv-msg-content fv-msg-content-user"
|
|
6055
6061
|
};
|
|
6056
6062
|
const _hoisted_14 = {
|
|
6057
|
-
key:
|
|
6063
|
+
key: 5,
|
|
6058
6064
|
class: "fv-msg-actions"
|
|
6059
6065
|
};
|
|
6060
6066
|
const _hoisted_15 = {
|
|
@@ -6070,6 +6076,8 @@ ${fileParts.join("\n")}` });
|
|
|
6070
6076
|
branch: { type: Object, required: false, default: void 0 },
|
|
6071
6077
|
showActions: { type: Boolean, required: false, default: true },
|
|
6072
6078
|
showBranchSwitch: { type: Boolean, required: false, default: true },
|
|
6079
|
+
showUserAvatar: { type: Boolean, required: false, default: true },
|
|
6080
|
+
showUserName: { type: Boolean, required: false, default: true },
|
|
6073
6081
|
autoCollapse: { type: Boolean, required: false, default: true }
|
|
6074
6082
|
},
|
|
6075
6083
|
emits: ["copy", "regenerate", "branch-change"],
|
|
@@ -6100,8 +6108,8 @@ ${fileParts.join("\n")}` });
|
|
|
6100
6108
|
class: vue.normalizeClass(["fv-msg", [`is-${__props.message.role}`, { "is-error": __props.message.status === "error", "is-user": isUser.value }]]),
|
|
6101
6109
|
"data-message-id": __props.message.id
|
|
6102
6110
|
}, [
|
|
6103
|
-
vue.createCommentVNode(" \u5934\u50CF:user \u53F3\u4FA7(\u81EA\u8EAB)
|
|
6104
|
-
vue.
|
|
6111
|
+
vue.createCommentVNode(" \u5934\u50CF:user \u53F3\u4FA7(\u81EA\u8EAB),assistant \u5DE6\u4FA7;showUserAvatar=false \u65F6\u7528\u6237\u6D88\u606F\u4E0D\u6E32\u67D3 "),
|
|
6112
|
+
!isUser.value || __props.showUserAvatar ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$3, [
|
|
6105
6113
|
vue.renderSlot(_ctx.$slots, "message-avatar", { message: __props.message }, () => [
|
|
6106
6114
|
isUser.value ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElIcon), {
|
|
6107
6115
|
key: 0,
|
|
@@ -6123,10 +6131,10 @@ ${fileParts.join("\n")}` });
|
|
|
6123
6131
|
/* STABLE */
|
|
6124
6132
|
}))
|
|
6125
6133
|
])
|
|
6126
|
-
]),
|
|
6127
|
-
vue.createElementVNode("div", _hoisted_3$
|
|
6128
|
-
vue.createCommentVNode(" \u5934\u90E8:\u89D2\u8272\u540D + \u6A21\u578B\u6807\u8BB0 "),
|
|
6129
|
-
vue.
|
|
6134
|
+
])) : vue.createCommentVNode("v-if", true),
|
|
6135
|
+
vue.createElementVNode("div", _hoisted_3$3, [
|
|
6136
|
+
vue.createCommentVNode(" \u5934\u90E8:\u89D2\u8272\u540D + \u6A21\u578B\u6807\u8BB0;showUserName=false \u65F6\u7528\u6237\u6D88\u606F\u4E0D\u6E32\u67D3 "),
|
|
6137
|
+
!isUser.value || __props.showUserName ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
|
|
6130
6138
|
vue.createElementVNode(
|
|
6131
6139
|
"span",
|
|
6132
6140
|
_hoisted_5,
|
|
@@ -6141,7 +6149,7 @@ ${fileParts.join("\n")}` });
|
|
|
6141
6149
|
1
|
|
6142
6150
|
/* TEXT */
|
|
6143
6151
|
)) : vue.createCommentVNode("v-if", true)
|
|
6144
|
-
]),
|
|
6152
|
+
])) : vue.createCommentVNode("v-if", true),
|
|
6145
6153
|
vue.createCommentVNode(" \u9644\u4EF6:user \u6D88\u606F files \u4EE5 FilesCard \u5E73\u94FA "),
|
|
6146
6154
|
__props.message.files?.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7, [
|
|
6147
6155
|
vue.renderSlot(_ctx.$slots, "message-files", {
|
|
@@ -6183,7 +6191,7 @@ ${fileParts.join("\n")}` });
|
|
|
6183
6191
|
])) : vue.createCommentVNode("v-if", true),
|
|
6184
6192
|
vue.createCommentVNode(" \u601D\u8003\u94FE\u6298\u53E0(assistant \u542B reasoning \u65F6) "),
|
|
6185
6193
|
!isUser.value && hasReasoning.value ? (vue.openBlock(), vue.createBlock(_sfc_main$a, {
|
|
6186
|
-
key:
|
|
6194
|
+
key: 2,
|
|
6187
6195
|
content: __props.message.reasoning,
|
|
6188
6196
|
status: thinkingStatus.value,
|
|
6189
6197
|
"auto-collapse": __props.autoCollapse
|
|
@@ -6359,6 +6367,7 @@ ${fileParts.join("\n")}` });
|
|
|
6359
6367
|
key: 0,
|
|
6360
6368
|
class: "fv-messages-empty"
|
|
6361
6369
|
};
|
|
6370
|
+
const _hoisted_3$2 = { class: "fv-messages-inner" };
|
|
6362
6371
|
var _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
6363
6372
|
...{ name: "FvAiMessages" },
|
|
6364
6373
|
__name: "index",
|
|
@@ -6372,7 +6381,9 @@ ${fileParts.join("\n")}` });
|
|
|
6372
6381
|
suggestionsTitle: { type: String, required: false, default: "" },
|
|
6373
6382
|
scrollThreshold: { type: Number, required: false, default: 40 },
|
|
6374
6383
|
showActions: { type: Boolean, required: false, default: true },
|
|
6375
|
-
showBranchSwitch: { type: Boolean, required: false, default: true }
|
|
6384
|
+
showBranchSwitch: { type: Boolean, required: false, default: true },
|
|
6385
|
+
showUserAvatar: { type: Boolean, required: false, default: true },
|
|
6386
|
+
showUserName: { type: Boolean, required: false, default: true }
|
|
6376
6387
|
},
|
|
6377
6388
|
emits: ["select", "copy", "regenerate", "branch-change"],
|
|
6378
6389
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
@@ -6463,7 +6474,7 @@ ${fileParts.join("\n")}` });
|
|
|
6463
6474
|
vue.Fragment,
|
|
6464
6475
|
{ key: 1 },
|
|
6465
6476
|
[
|
|
6466
|
-
vue.createCommentVNode(" \u6D88\u606F\u5217\u8868 "),
|
|
6477
|
+
vue.createCommentVNode(" \u6D88\u606F\u5217\u8868:\u5185\u5C42 fv-messages-inner \u63A7\u5236\u6EDA\u52A8\u5185\u5BB9\u6700\u5927\u5BBD\u5EA6\u5E76\u5DE6\u53F3\u5C45\u4E2D(--fv-messages-max-width \u53EF\u8986\u76D6) "),
|
|
6467
6478
|
vue.createElementVNode(
|
|
6468
6479
|
"div",
|
|
6469
6480
|
{
|
|
@@ -6472,42 +6483,46 @@ ${fileParts.join("\n")}` });
|
|
|
6472
6483
|
class: "fv-messages-scroll"
|
|
6473
6484
|
},
|
|
6474
6485
|
[
|
|
6475
|
-
|
|
6476
|
-
vue.
|
|
6477
|
-
|
|
6478
|
-
|
|
6479
|
-
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
|
|
6485
|
-
|
|
6486
|
-
|
|
6487
|
-
|
|
6488
|
-
|
|
6489
|
-
|
|
6490
|
-
|
|
6491
|
-
|
|
6492
|
-
|
|
6493
|
-
|
|
6494
|
-
|
|
6495
|
-
|
|
6496
|
-
|
|
6497
|
-
|
|
6498
|
-
|
|
6499
|
-
|
|
6500
|
-
|
|
6501
|
-
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6509
|
-
|
|
6510
|
-
|
|
6486
|
+
vue.createElementVNode("div", _hoisted_3$2, [
|
|
6487
|
+
(vue.openBlock(true), vue.createElementBlock(
|
|
6488
|
+
vue.Fragment,
|
|
6489
|
+
null,
|
|
6490
|
+
vue.renderList(__props.messages, (m) => {
|
|
6491
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$3, {
|
|
6492
|
+
key: m.id,
|
|
6493
|
+
message: m,
|
|
6494
|
+
branch: branchInfo(m),
|
|
6495
|
+
"show-actions": __props.showActions,
|
|
6496
|
+
"show-branch-switch": __props.showBranchSwitch,
|
|
6497
|
+
"show-user-avatar": __props.showUserAvatar,
|
|
6498
|
+
"show-user-name": __props.showUserName,
|
|
6499
|
+
onCopy,
|
|
6500
|
+
onRegenerate,
|
|
6501
|
+
onBranchChange: onBranch
|
|
6502
|
+
}, vue.createSlots({
|
|
6503
|
+
_: 2
|
|
6504
|
+
/* DYNAMIC */
|
|
6505
|
+
}, [
|
|
6506
|
+
_ctx.$slots["message-avatar"] ? {
|
|
6507
|
+
name: "message-avatar",
|
|
6508
|
+
fn: vue.withCtx((scope) => [
|
|
6509
|
+
vue.renderSlot(_ctx.$slots, "message-avatar", vue.mergeProps({ ref_for: true }, scope))
|
|
6510
|
+
]),
|
|
6511
|
+
key: "0"
|
|
6512
|
+
} : void 0,
|
|
6513
|
+
_ctx.$slots["message-actions"] ? {
|
|
6514
|
+
name: "message-actions",
|
|
6515
|
+
fn: vue.withCtx((scope) => [
|
|
6516
|
+
vue.renderSlot(_ctx.$slots, "message-actions", vue.mergeProps({ ref_for: true }, scope))
|
|
6517
|
+
]),
|
|
6518
|
+
key: "1"
|
|
6519
|
+
} : void 0
|
|
6520
|
+
]), 1032, ["message", "branch", "show-actions", "show-branch-switch", "show-user-avatar", "show-user-name"]);
|
|
6521
|
+
}),
|
|
6522
|
+
128
|
|
6523
|
+
/* KEYED_FRAGMENT */
|
|
6524
|
+
))
|
|
6525
|
+
])
|
|
6511
6526
|
],
|
|
6512
6527
|
512
|
|
6513
6528
|
/* NEED_PATCH */
|
|
@@ -6795,6 +6810,8 @@ ${fileParts.join("\n")}` });
|
|
|
6795
6810
|
title: { type: String, required: false, default: "" },
|
|
6796
6811
|
showHeader: { type: Boolean, required: false, default: false },
|
|
6797
6812
|
centerWelcome: { type: Boolean, required: false, default: true },
|
|
6813
|
+
showUserAvatar: { type: Boolean, required: false, default: true },
|
|
6814
|
+
showUserName: { type: Boolean, required: false, default: true },
|
|
6798
6815
|
placeholder: { type: String, required: false, default: "" },
|
|
6799
6816
|
senderShadow: { type: Boolean, required: false, default: true },
|
|
6800
6817
|
suggestions: { type: Array, required: false, default: () => [] },
|
|
@@ -7058,6 +7075,8 @@ ${fileParts.join("\n")}` });
|
|
|
7058
7075
|
nodes: vue.unref(nodeTable),
|
|
7059
7076
|
name: __props.title,
|
|
7060
7077
|
suggestions: __props.suggestions,
|
|
7078
|
+
"show-user-avatar": __props.showUserAvatar,
|
|
7079
|
+
"show-user-name": __props.showUserName,
|
|
7061
7080
|
onSelect: onSelectSuggestion,
|
|
7062
7081
|
onCopy,
|
|
7063
7082
|
onRegenerate,
|
|
@@ -7087,7 +7106,7 @@ ${fileParts.join("\n")}` });
|
|
|
7087
7106
|
]),
|
|
7088
7107
|
key: "2"
|
|
7089
7108
|
} : void 0
|
|
7090
|
-
]), 1032, ["messages", "nodes", "name", "suggestions"]),
|
|
7109
|
+
]), 1032, ["messages", "nodes", "name", "suggestions", "show-user-avatar", "show-user-name"]),
|
|
7091
7110
|
__props.features?.artifacts && artifacts.value.length ? (vue.openBlock(), vue.createBlock(_sfc_main$1, {
|
|
7092
7111
|
key: 0,
|
|
7093
7112
|
artifacts: artifacts.value,
|