agent-tool-chat 1.0.0 → 1.0.1

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.
@@ -1 +1 @@
1
- .render-block[data-v-0cb2fd61]{margin:8px 0;padding:8px 0;width:100%}.render-block__component[data-v-0cb2fd61]{border-radius:8px;background:var(--el-fill-color-lighter);box-shadow:0 0 10px #0000001a}.render-block__title[data-v-0cb2fd61]{font-weight:600;font-size:14px;margin-bottom:6px;color:var(--el-text-color-primary)}.render-block__table[data-v-0cb2fd61]{width:100%;max-width:100%}.render-block__cards[data-v-0cb2fd61]{display:flex;flex-direction:column;gap:8px}.card-item[data-v-0cb2fd61]{border:1px solid var(--el-border-color);border-radius:8px;padding:10px 14px;background:var(--el-fill-color-lighter)}.card-field[data-v-0cb2fd61]{display:flex;gap:6px;font-size:13px;line-height:1.8}.card-label[data-v-0cb2fd61]{font-weight:600;color:var(--el-text-color-secondary);min-width:80px}.card-value[data-v-0cb2fd61]{color:var(--el-text-color-primary)}.render-block__list[data-v-0cb2fd61]{display:flex;flex-direction:column;gap:4px}.list-item[data-v-0cb2fd61]{padding:6px 10px;font-size:13px;border-left:3px solid var(--el-color-primary);background:var(--el-fill-color-lighter);border-radius:0 4px 4px 0}.suggested-next[data-v-0e0e9b65]{display:flex;align-items:center;gap:8px;padding:8px 12px;margin:6px 0;background:var(--el-color-primary-light-9);border:1px solid var(--el-color-primary-light-7);border-radius:8px;font-size:13px}.suggested-next__icon[data-v-0e0e9b65]{font-size:15px;flex-shrink:0}.suggested-next__text[data-v-0e0e9b65]{flex:1;color:var(--el-text-color-regular)}.chat-message[data-v-af392c78]{display:flex;gap:10px;padding:12px 0}.chat-message.role-user[data-v-af392c78]{flex-direction:row-reverse}.message-avatar[data-v-af392c78]{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px}.role-user .message-avatar[data-v-af392c78]{background:var(--el-color-primary);color:#fff}.role-assistant .message-avatar[data-v-af392c78]{background:var(--el-color-success);color:#fff}.message-body[data-v-af392c78]{max-width:80%;min-width:0}.role-user .message-body[data-v-af392c78]{background:var(--el-color-primary-light-9);padding:8px 14px;border-radius:12px 4px 12px 12px;box-shadow:0 0 10px #0000001a}.role-assistant .message-body[data-v-af392c78]{background:var(--el-fill-color-lighter);padding:8px 14px;border-radius:4px 12px 12px;display:flex;flex-direction:column;box-shadow:0 0 10px #0000001a}.message-user-text[data-v-af392c78]{font-size:14px;line-height:1.5;color:var(--el-text-color-primary);white-space:pre-wrap;word-break:break-word}.message-content[data-v-af392c78]{font-size:14px;line-height:1.6;color:var(--el-text-color-primary);white-space:pre-wrap;word-break:break-word;background:transparent;border:none;outline:none;box-shadow:none;height:auto}.message-cursor[data-v-af392c78]{display:inline-block;animation:blink-af392c78 .8s step-end infinite;color:var(--el-color-primary);font-size:16px}@keyframes blink-af392c78{50%{opacity:0}}.message-error[data-v-af392c78]{margin-top:4px;font-size:12px;color:var(--el-color-danger)}.message-reasoning[data-v-af392c78]{margin-bottom:8px}.message-reasoning details[data-v-af392c78]{font-size:13px}.message-reasoning summary[data-v-af392c78]{cursor:pointer;color:var(--el-color-info);font-size:12px}.message-reasoning pre[data-v-af392c78]{margin:6px 0 0;padding:8px;background:var(--el-fill-color);border-radius:6px;font-size:12px;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.message-files[data-v-af392c78]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.message-file[data-v-af392c78]{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--el-border-color);border-radius:8px;background:var(--el-bg-color);font-size:12px}.message-file.is-image[data-v-af392c78]{padding:4px;flex-direction:column;align-items:flex-start}.file-image[data-v-af392c78]{max-width:200px;max-height:200px;border-radius:6px;object-fit:contain;cursor:pointer}.file-info[data-v-af392c78]{display:flex;flex-direction:column;gap:2px}.file-name[data-v-af392c78]{color:var(--el-text-color-primary);font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size[data-v-af392c78]{color:var(--el-text-color-secondary);font-size:11px}.chat-input[data-v-8fcb870c]{padding:12px 16px;border-top:1px solid var(--el-border-color-lighter);background:var(--el-bg-color);display:flex;flex-direction:column}.chat-input__files[data-v-8fcb870c]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.chat-input__wrap[data-v-8fcb870c]{display:flex;align-items:flex-end;gap:8px;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);border-radius:12px;padding:6px 6px 6px 12px;transition:border-color .2s,box-shadow .2s}.chat-input__wrap[data-v-8fcb870c]:focus-within{border-color:var(--el-color-primary);box-shadow:0 0 0 2px var(--el-color-primary-light-8)}.chat-input__wrap[data-v-8fcb870c] .el-textarea__inner{border:none;background:transparent;box-shadow:none;padding:4px 0;line-height:1.6;font-size:14px}.chat-input__wrap[data-v-8fcb870c] .el-textarea__inner:focus{box-shadow:none}.chat-input__actions[data-v-8fcb870c]{flex-shrink:0;display:flex;align-items:center;gap:2px;padding-bottom:2px}.form-tip[data-v-9634bbdc]{font-size:12px;color:var(--el-text-color-secondary);line-height:1.6;margin-top:4px}.form-tip-inline[data-v-9634bbdc]{margin-left:8px;font-size:12px;color:var(--el-text-color-secondary)}.temp-row[data-v-9634bbdc]{display:flex;align-items:center;gap:12px;width:100%}.temp-val[data-v-9634bbdc]{width:28px;text-align:right;font-size:13px;color:var(--el-text-color-secondary)}.chat-panel-root[data-v-57d202bb]{position:absolute;bottom:100px;right:100px;z-index:1999}.ai-fab[data-v-57d202bb]{position:fixed;right:22px;bottom:25px;z-index:2000;display:flex;align-items:center;gap:8px;height:52px;padding:0 22px 0 18px;border-radius:26px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;background:linear-gradient(135deg,#009688,#2d8cf0);box-shadow:0 6px 24px #2d8cf080;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s;-webkit-user-select:none;user-select:none;overflow:hidden;isolation:isolate;animation:ai-fab-float-57d202bb 3.6s ease-in-out infinite}@keyframes ai-fab-float-57d202bb{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.ai-fab[data-v-57d202bb]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);background-size:200% 100%;background-position:100% 0;animation:ai-fab-shimmer-57d202bb 4s ease-in-out infinite;z-index:-1;pointer-events:none}@keyframes ai-fab-shimmer-57d202bb{0%,to{background-position:100% 0}50%{background-position:0 0}}.ai-fab[data-v-57d202bb]:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:inherit;border:2px solid rgba(45,140,240,.35);animation:ai-fab-pulse-57d202bb 2.4s ease-in-out infinite;pointer-events:none;z-index:-2}@keyframes ai-fab-pulse-57d202bb{0%,to{opacity:.6;transform:scale(1)}50%{opacity:0;transform:scale(1.12)}}.ai-fab__icon[data-v-57d202bb]{font-size:22px;filter:drop-shadow(0 0 4px rgba(255,255,255,.4));transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.ai-fab__label[data-v-57d202bb]{line-height:1;text-shadow:0 1px 4px rgba(0,0,0,.15)}.ai-fab[data-v-57d202bb]:hover{animation:none;transform:translateY(-4px) scale(1.04);box-shadow:0 12px 32px #2d8cf099}.ai-fab[data-v-57d202bb]:hover:before{animation:none;background-position:0 0}.ai-fab--active[data-v-57d202bb]{animation:none;box-shadow:0 4px 16px #2d8cf066}.ai-fab--active[data-v-57d202bb]:after{animation:none;opacity:0}.ai-fab--active[data-v-57d202bb]:before{animation:none}.ai-fab--active .ai-fab__icon[data-v-57d202bb]{transform:rotate(45deg)}.chat-panel[data-v-57d202bb]{position:fixed;bottom:25px;right:22px;z-index:9999;display:flex;flex-direction:column;height:650px;width:500px;min-height:400px;background:var(--el-bg-color);box-shadow:0 0 12px #0000006b;border-radius:8px}.chat-panel__header[data-v-57d202bb]{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--el-border-color-lighter);flex-shrink:0}.chat-panel__title[data-v-57d202bb]{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.title-icon[data-v-57d202bb]{color:var(--el-color-primary);font-size:18px}.chat-panel__ops[data-v-57d202bb]{display:flex;gap:4px}.chat-panel__body[data-v-57d202bb]{flex:1;overflow-y:auto;padding:0 16px;min-height:0}.chat-panel__body[data-v-57d202bb]::-webkit-scrollbar{width:6px}.chat-panel__body[data-v-57d202bb]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:3px}.chat-empty[data-v-57d202bb]{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;gap:14px}.chat-empty__logo[data-v-57d202bb]{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,#009688,#2d8cf0);color:#fff;display:flex;align-items:center;justify-content:center;font-size:32px;box-shadow:0 8px 24px #2d8cf04d}.chat-empty h3[data-v-57d202bb]{margin:0;font-size:18px;color:var(--el-text-color-primary)}.chat-empty__desc[data-v-57d202bb]{margin:0;font-size:13px;color:var(--el-text-color-secondary);line-height:1.6}.chat-empty__desc .hl[data-v-57d202bb]{color:var(--el-color-primary);font-weight:600}.chat-panel__footer[data-v-57d202bb]{flex-shrink:0}.chat-panel__stop[data-v-57d202bb]{display:flex;justify-content:center;padding:6px 0 0}.chat-panel__error[data-v-57d202bb]{padding:8px 16px 0}.fade-enter-active[data-v-57d202bb],.fade-leave-active[data-v-57d202bb]{transition:opacity .2s}.fade-enter-from[data-v-57d202bb],.fade-leave-to[data-v-57d202bb]{opacity:0}.chat-panel--fullscreen[data-v-57d202bb]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;height:100vh!important;width:100vw!important}
1
+ .render-block[data-v-0cb2fd61]{margin:8px 0;padding:8px 0;width:100%}.render-block__component[data-v-0cb2fd61]{border-radius:8px;background:var(--el-fill-color-lighter);box-shadow:0 0 10px #0000001a}.render-block__title[data-v-0cb2fd61]{font-weight:600;font-size:14px;margin-bottom:6px;color:var(--el-text-color-primary)}.render-block__table[data-v-0cb2fd61]{width:100%;max-width:100%}.render-block__cards[data-v-0cb2fd61]{display:flex;flex-direction:column;gap:8px}.card-item[data-v-0cb2fd61]{border:1px solid var(--el-border-color);border-radius:8px;padding:10px 14px;background:var(--el-fill-color-lighter)}.card-field[data-v-0cb2fd61]{display:flex;gap:6px;font-size:13px;line-height:1.8}.card-label[data-v-0cb2fd61]{font-weight:600;color:var(--el-text-color-secondary);min-width:80px}.card-value[data-v-0cb2fd61]{color:var(--el-text-color-primary)}.render-block__list[data-v-0cb2fd61]{display:flex;flex-direction:column;gap:4px}.list-item[data-v-0cb2fd61]{padding:6px 10px;font-size:13px;border-left:3px solid var(--el-color-primary);background:var(--el-fill-color-lighter);border-radius:0 4px 4px 0}.suggested-next[data-v-0e0e9b65]{display:flex;align-items:center;gap:8px;padding:8px 12px;margin:6px 0;background:var(--el-color-primary-light-9);border:1px solid var(--el-color-primary-light-7);border-radius:8px;font-size:13px}.suggested-next__icon[data-v-0e0e9b65]{font-size:15px;flex-shrink:0}.suggested-next__text[data-v-0e0e9b65]{flex:1;color:var(--el-text-color-regular)}.chat-message[data-v-af392c78]{display:flex;gap:10px;padding:12px 0}.chat-message.role-user[data-v-af392c78]{flex-direction:row-reverse}.message-avatar[data-v-af392c78]{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px}.role-user .message-avatar[data-v-af392c78]{background:var(--el-color-primary);color:#fff}.role-assistant .message-avatar[data-v-af392c78]{background:var(--el-color-success);color:#fff}.message-body[data-v-af392c78]{max-width:80%;min-width:0}.role-user .message-body[data-v-af392c78]{background:var(--el-color-primary-light-9);padding:8px 14px;border-radius:12px 4px 12px 12px;box-shadow:0 0 10px #0000001a}.role-assistant .message-body[data-v-af392c78]{background:var(--el-fill-color-lighter);padding:8px 14px;border-radius:4px 12px 12px;display:flex;flex-direction:column;box-shadow:0 0 10px #0000001a}.message-user-text[data-v-af392c78]{font-size:14px;line-height:1.5;color:var(--el-text-color-primary);white-space:pre-wrap;word-break:break-word}.message-content[data-v-af392c78]{font-size:14px;line-height:1.6;color:var(--el-text-color-primary);white-space:pre-wrap;word-break:break-word;background:transparent;border:none;outline:none;box-shadow:none;height:auto}.message-cursor[data-v-af392c78]{display:inline-block;animation:blink-af392c78 .8s step-end infinite;color:var(--el-color-primary);font-size:16px}@keyframes blink-af392c78{50%{opacity:0}}.message-error[data-v-af392c78]{margin-top:4px;font-size:12px;color:var(--el-color-danger)}.message-reasoning[data-v-af392c78]{margin-bottom:8px}.message-reasoning details[data-v-af392c78]{font-size:13px}.message-reasoning summary[data-v-af392c78]{cursor:pointer;color:var(--el-color-info);font-size:12px}.message-reasoning pre[data-v-af392c78]{margin:6px 0 0;padding:8px;background:var(--el-fill-color);border-radius:6px;font-size:12px;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.message-files[data-v-af392c78]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.message-file[data-v-af392c78]{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--el-border-color);border-radius:8px;background:var(--el-bg-color);font-size:12px}.message-file.is-image[data-v-af392c78]{padding:4px;flex-direction:column;align-items:flex-start}.file-image[data-v-af392c78]{max-width:200px;max-height:200px;border-radius:6px;object-fit:contain;cursor:pointer}.file-info[data-v-af392c78]{display:flex;flex-direction:column;gap:2px}.file-name[data-v-af392c78]{color:var(--el-text-color-primary);font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size[data-v-af392c78]{color:var(--el-text-color-secondary);font-size:11px}.chat-input[data-v-8fcb870c]{padding:12px 16px;border-top:1px solid var(--el-border-color-lighter);background:var(--el-bg-color);display:flex;flex-direction:column}.chat-input__files[data-v-8fcb870c]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.chat-input__wrap[data-v-8fcb870c]{display:flex;align-items:flex-end;gap:8px;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);border-radius:12px;padding:6px 6px 6px 12px;transition:border-color .2s,box-shadow .2s}.chat-input__wrap[data-v-8fcb870c]:focus-within{border-color:var(--el-color-primary);box-shadow:0 0 0 2px var(--el-color-primary-light-8)}.chat-input__wrap[data-v-8fcb870c] .el-textarea__inner{border:none;background:transparent;box-shadow:none;padding:4px 0;line-height:1.6;font-size:14px}.chat-input__wrap[data-v-8fcb870c] .el-textarea__inner:focus{box-shadow:none}.chat-input__actions[data-v-8fcb870c]{flex-shrink:0;display:flex;align-items:center;gap:2px;padding-bottom:2px}.form-tip[data-v-9634bbdc]{font-size:12px;color:var(--el-text-color-secondary);line-height:1.6;margin-top:4px}.form-tip-inline[data-v-9634bbdc]{margin-left:8px;font-size:12px;color:var(--el-text-color-secondary)}.temp-row[data-v-9634bbdc]{display:flex;align-items:center;gap:12px;width:100%}.temp-val[data-v-9634bbdc]{width:28px;text-align:right;font-size:13px;color:var(--el-text-color-secondary)}.chat-panel-root[data-v-d36abbf3]{position:absolute;bottom:100px;right:100px;z-index:1999}.ai-fab[data-v-d36abbf3]{position:fixed;right:22px;bottom:25px;z-index:2000;display:flex;align-items:center;gap:8px;height:52px;padding:0 22px 0 18px;border-radius:26px;color:#fff;font-size:15px;font-weight:600;cursor:pointer;background:linear-gradient(135deg,#009688,#2d8cf0);box-shadow:0 6px 24px #2d8cf080;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s;-webkit-user-select:none;user-select:none;overflow:hidden;isolation:isolate;animation:ai-fab-float-d36abbf3 3.6s ease-in-out infinite}@keyframes ai-fab-float-d36abbf3{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.ai-fab[data-v-d36abbf3]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);background-size:200% 100%;background-position:100% 0;animation:ai-fab-shimmer-d36abbf3 4s ease-in-out infinite;z-index:-1;pointer-events:none}@keyframes ai-fab-shimmer-d36abbf3{0%,to{background-position:100% 0}50%{background-position:0 0}}.ai-fab[data-v-d36abbf3]:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:inherit;border:2px solid rgba(45,140,240,.35);animation:ai-fab-pulse-d36abbf3 2.4s ease-in-out infinite;pointer-events:none;z-index:-2}@keyframes ai-fab-pulse-d36abbf3{0%,to{opacity:.6;transform:scale(1)}50%{opacity:0;transform:scale(1.12)}}.ai-fab__icon[data-v-d36abbf3]{font-size:22px;filter:drop-shadow(0 0 4px rgba(255,255,255,.4));transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.ai-fab__label[data-v-d36abbf3]{line-height:1;text-shadow:0 1px 4px rgba(0,0,0,.15)}.ai-fab[data-v-d36abbf3]:hover{animation:none;transform:translateY(-4px) scale(1.04);box-shadow:0 12px 32px #2d8cf099}.ai-fab[data-v-d36abbf3]:hover:before{animation:none;background-position:0 0}.ai-fab--active[data-v-d36abbf3]{animation:none;box-shadow:0 4px 16px #2d8cf066}.ai-fab--active[data-v-d36abbf3]:after{animation:none;opacity:0}.ai-fab--active[data-v-d36abbf3]:before{animation:none}.ai-fab--active .ai-fab__icon[data-v-d36abbf3]{transform:rotate(45deg)}.chat-panel[data-v-d36abbf3]{position:fixed;bottom:25px;right:22px;z-index:9999;display:flex;flex-direction:column;height:680px;width:560px;min-height:400px;background:var(--el-bg-color);box-shadow:0 0 12px #0000006b;border-radius:8px}.chat-panel__header[data-v-d36abbf3]{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--el-border-color-lighter);flex-shrink:0}.chat-panel__title[data-v-d36abbf3]{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.title-icon[data-v-d36abbf3]{color:var(--el-color-primary);font-size:18px}.chat-panel__ops[data-v-d36abbf3]{display:flex;gap:4px}.chat-panel__body[data-v-d36abbf3]{flex:1;overflow-y:auto;padding:0 16px;min-height:0;scrollbar-width:thin;scrollbar-color:var(--el-border-color-darker) transparent}.chat-panel__body[data-v-d36abbf3]::-webkit-scrollbar{width:8px}.chat-panel__body[data-v-d36abbf3]::-webkit-scrollbar-track{background:var(--el-fill-color-lighter);border-radius:4px}.chat-panel__body[data-v-d36abbf3]::-webkit-scrollbar-thumb{background:var(--el-border-color-darker);border-radius:4px;border:2px solid transparent;background-clip:content-box}.chat-panel__body[data-v-d36abbf3]::-webkit-scrollbar-thumb:hover{background:var(--el-text-color-secondary);background-clip:content-box}.chat-empty[data-v-d36abbf3]{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;gap:14px}.chat-empty__logo[data-v-d36abbf3]{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,#009688,#2d8cf0);color:#fff;display:flex;align-items:center;justify-content:center;font-size:32px;box-shadow:0 8px 24px #2d8cf04d}.chat-empty h3[data-v-d36abbf3]{margin:0;font-size:18px;color:var(--el-text-color-primary)}.chat-empty__desc[data-v-d36abbf3]{margin:0;font-size:13px;color:var(--el-text-color-secondary);line-height:1.6}.chat-empty__desc .hl[data-v-d36abbf3]{color:var(--el-color-primary);font-weight:600}.chat-panel__footer[data-v-d36abbf3]{flex-shrink:0}.chat-panel__stop[data-v-d36abbf3]{display:flex;justify-content:center;padding:6px 0 0}.chat-panel__error[data-v-d36abbf3]{padding:8px 16px 0}.fade-enter-active[data-v-d36abbf3],.fade-leave-active[data-v-d36abbf3]{transition:opacity .2s}.fade-enter-from[data-v-d36abbf3],.fade-leave-to[data-v-d36abbf3]{opacity:0}.chat-panel--fullscreen[data-v-d36abbf3]{position:fixed;top:5%;right:10%;bottom:5%;left:10%;z-index:9999;height:90vh!important;width:80%!important}
package/dist/index.cjs CHANGED
@@ -1,22 +1,22 @@
1
- "use strict";var Ne=Object.defineProperty;var Be=(n,t,o)=>t in n?Ne(n,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[t]=o;var A=(n,t,o)=>Be(n,typeof t!="symbol"?t+"":t,o);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),K=require("element-plus");class se{constructor(t){A(this,"messages",[]);A(this,"config");A(this,"listeners",new Set);A(this,"abortController",null);A(this,"_loading",!1);this.config={...t,maxToolRounds:t.maxToolRounds??6}}get loading(){return this._loading}updateProviderConfig(t){this.config.providerConfig={...this.config.providerConfig,...t}}initialize(t){this.messages.length=0,this.messages.push(...t)}clear(){var t;this.stop(),this.messages.length=0,(t=this.config.storage)==null||t.save([])}on(t){return this.listeners.add(t),()=>this.listeners.delete(t)}emit(t){this.listeners.forEach(o=>o(t))}async sendMessage(t){var l;const o=t.trim();if(!o||this._loading)return;this._loading=!0,this.abortController=new AbortController,this.emit({type:"status",loading:!0});const i={role:"user",content:o};this.messages.push(i),this.emit({type:"message",message:i});try{let r=0;const h=this.config.maxToolRounds;for(;r<h;){r++;const v={role:"assistant",content:""};this.messages.push(v),this.emit({type:"message",message:v});const a=this.buildApiMessages(),c=await this.config.provider.streamChat({config:this.config.providerConfig,messages:a,tools:this.config.tools.getDefinitions(),signal:this.abortController.signal,onContent:g=>{v.content+=g,this.emit({type:"stream:delta",delta:{content:g}})},onReasoning:g=>{this.emit({type:"stream:delta",delta:{reasoning:g}})}});if(v.content=c.content,this.emit({type:"stream:end",content:c.content,reasoning:c.reasoning}),c.tool_calls.length>0){v.tool_calls=c.tool_calls;for(const g of c.tool_calls){this.emit({type:"tool:start",call:g});const m=await this.config.tools.execute(g.function.name,g.function.arguments);this.emit({type:"tool:end",call:g,output:m}),this.messages.push({role:"tool",tool_call_id:g.id,content:m.result,name:g.function.name})}continue}break}await((l=this.config.storage)==null?void 0:l.save(this.messages))}catch(r){if((r==null?void 0:r.name)!=="AbortError")this.emit({type:"error",error:(r==null?void 0:r.message)||"请求出错"});else{const h=this.messages[this.messages.length-1];(h==null?void 0:h.role)==="assistant"&&!h.content&&(h.content="(已停止生成)")}}finally{this._loading=!1,this.abortController=null,this.emit({type:"status",loading:!1})}}stop(){var t;(t=this.abortController)==null||t.abort()}buildApiMessages(){const t=this.messages,i=t.length>0&&t[t.length-1].role==="assistant"&&t[t.length-1].content===""&&!t[t.length-1].tool_calls?t.slice(0,-1):t;return this.config.systemPrompt?[{role:"system",content:this.config.systemPrompt},...i]:[...i]}}class le{constructor(){A(this,"_definitions",[]);A(this,"_handlers",new Map)}register(t,o){return this._definitions.push(t),this._handlers.set(t.function.name,o),this}registerBatch(t){for(const o of t)this.register(o.definition,o.handler);return this}getDefinitions(){return[...this._definitions]}async execute(t,o){const i=this._handlers.get(t);if(!i)return{success:!1,result:`未知工具:${t}`};try{const l=o?JSON.parse(o):{};return await i(l)}catch(l){return{success:!1,result:`工具执行异常:${(l==null?void 0:l.message)||String(l)}`}}}}function Ee(n){let t=n.trim().replace(/\/+$/,"");return t=t.replace(/\/v1$/,""),t}function ae(){return{async streamChat(n){var f;const{config:{baseUrl:t,apiKey:o,model:i,temperature:l},messages:r,tools:h,signal:v,onContent:a,onReasoning:c}=n;if(!o)throw new Error("未配置 API Key");const g=`${Ee(t)}/chat/completions`,m={model:i,messages:r,stream:!0};typeof l=="number"&&(m.temperature=l),h!=null&&h.length&&(m.tools=h,m.tool_choice="auto");const x=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify(m),signal:v});if(!x.ok||!x.body){let p=`请求失败(HTTP ${x.status})`;try{const d=await x.json();(f=d==null?void 0:d.error)!=null&&f.message&&(p=d.error.message)}catch{}throw new Error(p)}const $=x.body.getReader(),V=new TextDecoder("utf-8");let w="",_="",N="",B="stop";const M=new Map,P=p=>{if(!p)return;const d=p.index??0;M.has(d)||M.set(d,{id:"",type:"function",function:{name:"",arguments:""}});const b=M.get(d);p.id&&(b.id=p.id),p.type&&(b.type=p.type),p.function&&(p.function.name&&(b.function.name+=p.function.name),p.function.arguments&&(b.function.arguments+=p.function.arguments))},I=p=>{var T;const d=(T=p==null?void 0:p.choices)==null?void 0:T[0];if(!d)return;const b=d.delta||{};typeof b.content=="string"&&b.content&&(_+=b.content,a==null||a(b.content)),typeof b.reasoning_content=="string"&&b.reasoning_content&&(N+=b.reasoning_content,c==null||c(b.reasoning_content)),Array.isArray(b.tool_calls)&&b.tool_calls.forEach(F=>P(F)),d.finish_reason&&(B=d.finish_reason)};for(;;){const{done:p,value:d}=await $.read();if(p)break;w+=V.decode(d,{stream:!0});let b;for(;(b=w.indexOf(`
2
- `))!==-1;){const T=w.slice(0,b).replace(/\r$/,"").trim();if(w=w.slice(b+1),!T||T.startsWith(":")||!T.startsWith("data:"))continue;const F=T.slice(5).trim();if(F==="[DONE]")return S();try{I(JSON.parse(F))}catch{}}}return S();function S(){const p=Array.from(M.values()).filter(d=>d.function.name);return{content:_,reasoning:N,tool_calls:p,finish_reason:B}}}}}function re(){return{async streamChat(n){var S;const{config:{baseUrl:t,model:o,temperature:i},messages:l,tools:r,signal:h,onContent:v,onReasoning:a}=n,c=`${t.trim().replace(/\/+$/,"")}`,g={model:o,messages:l,stream:!0};typeof i=="number"&&(g.temperature=i),r!=null&&r.length&&(g.tools=r,g.tool_choice="auto");const m=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g),signal:h});if(!m.ok||!m.body){let f=`请求失败(HTTP ${m.status})`;try{const p=await m.json();(S=p==null?void 0:p.error)!=null&&S.message&&(f=p.error.message)}catch{}throw new Error(f)}const x=m.body.getReader(),$=new TextDecoder("utf-8");let V="",w="",_="",N="stop";const B=new Map,M=f=>{if(!f)return;const p=f.index??0;B.has(p)||B.set(p,{id:"",type:"function",function:{name:"",arguments:""}});const d=B.get(p);f.id&&(d.id=f.id),f.type&&(d.type=f.type),f.function&&(f.function.name&&(d.function.name+=f.function.name),f.function.arguments&&(d.function.arguments+=f.function.arguments))},P=f=>{var b;const p=(b=f==null?void 0:f.choices)==null?void 0:b[0];if(!p)return;const d=p.delta||{};typeof d.content=="string"&&d.content&&(w+=d.content,v==null||v(d.content)),typeof d.reasoning_content=="string"&&d.reasoning_content&&(_+=d.reasoning_content,a==null||a(d.reasoning_content)),Array.isArray(d.tool_calls)&&d.tool_calls.forEach(T=>M(T)),p.finish_reason&&(N=p.finish_reason)};for(;;){const{done:f,value:p}=await x.read();if(f)break;V+=$.decode(p,{stream:!0});let d;for(;(d=V.indexOf(`
3
- `))!==-1;){const b=V.slice(0,d).replace(/\r$/,"").trim();if(V=V.slice(d+1),!b||b.startsWith(":")||!b.startsWith("data:"))continue;const T=b.slice(5).trim();if(T==="[DONE]")return I();try{P(JSON.parse(T))}catch{}}}return I();function I(){const f=Array.from(B.values()).filter(p=>p.function.name);return{content:w,reasoning:_,tool_calls:f,finish_reason:N}}}}}function $e(n){var o,i,l,r,h;const t=[];return(o=n.displayHints)!=null&&o.suggestComponent&&t.push(`展示建议: 使用 ${n.displayHints.suggestComponent} 组件`),(i=n.displayHints)!=null&&i.resultFormat&&t.push(`格式: ${n.displayHints.resultFormat}`),(r=(l=n.displayHints)==null?void 0:l.previewFields)!=null&&r.length&&t.push(`预览字段: ${n.displayHints.previewFields.join(", ")}`),(h=n.displayHints)!=null&&h.summaryTemplate&&t.push(`概要模板: ${n.displayHints.summaryTemplate}`),t.length?t.join(" | "):""}function ie(n){const t=["你是一个 AI 助手,可以帮助用户完成各种操作。","","你可以使用以下工具包:",""];for(const o of n){t.push(`【${o.name}】${o.description}`);for(const i of o.tools){const l=$e(i);t.push(` - ${i.name}: ${i.description}`),l&&t.push(` ${l}`)}t.push("")}return t.push("注意:"),t.push("1. 当你需要查询或操作数据时,调用对应工具包中的函数。"),t.push("2. 工具函数由宿主系统执行,你只需要传递正确的参数。"),t.push("3. 获取到工具结果后,回复用户并告知结果。"),t.push("4. 如果工具返回了结构化数据(如订单信息、系统状态等),在回复中清晰地展示给用户。"),t.push("5. 根据结果动态建议用户接下来可以做什么。"),t.push("6. 如果用户上传了文件,文件格式为(.txt、.json、.geojson等格式),你必须调用 open_mapview_file 工具在地图上展示,不要只回复文字。"),t.push(""),t.push("--- 文件上传规则 ---"),t.push("用户可能上传文件,文件以如下格式出现在消息中:"),t.push("[Uploaded file: fileId] 文件名 (类型, 大小KB)"),t.push("你无法查看文件内容,只能看到文件名和类型。"),t.push("你必须根据文件名、扩展名和用户的文字指令,调用对应的工具来处理文件。"),t.push("如果某个工具需要处理该文件,在工具参数中传入 fileId。"),t.push('不要回复假性成功消息(如"已在地图上显示"),如果不调用工具,文件不会被实际处理。'),t.push("不要编造文件内容,不要假装你看到了文件数据。"),t.join(`
4
- `)}function Se(n,t,o){var r;let i=null;if(n.type==="component"&&n.componentName){let h;n.packageId&&(h=t.find(v=>v.id===n.packageId)),!h&&o&&(h=t.find(v=>v.id===o)),(r=h==null?void 0:h.components)!=null&&r[n.componentName]&&(i=h.components[n.componentName])}const l=Te(n);return{component:i,block:n,fallbackText:l}}function Te(n){switch(n.type){case"table":return Me(n);case"card":return Ie(n);case"list":return Ae(n);default:return JSON.stringify(n.data,null,2)}}function J(n){return n==null?null:Array.isArray(n)?n:typeof n!="object"?null:Array.isArray(n.data)?n.data:Array.isArray(n.list)?n.list:Array.isArray(n.items)?n.items:[n]}function Me(n){const t=J(n.data);if(!(t!=null&&t.length))return"(无数据)";const o=n.title?`**${n.title}**
1
+ "use strict";var Ne=Object.defineProperty;var Be=(n,t,o)=>t in n?Ne(n,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[t]=o;var A=(n,t,o)=>Be(n,typeof t!="symbol"?t+"":t,o);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),J=require("element-plus");class le{constructor(t){A(this,"messages",[]);A(this,"config");A(this,"listeners",new Set);A(this,"abortController",null);A(this,"_loading",!1);this.config={...t,maxToolRounds:t.maxToolRounds??6}}get loading(){return this._loading}updateProviderConfig(t){this.config.providerConfig={...this.config.providerConfig,...t}}initialize(t){this.messages.length=0,this.messages.push(...t)}clear(){var t;this.stop(),this.messages.length=0,(t=this.config.storage)==null||t.save([])}on(t){return this.listeners.add(t),()=>this.listeners.delete(t)}emit(t){this.listeners.forEach(o=>o(t))}async sendMessage(t){var l;const o=t.trim();if(!o||this._loading)return;this._loading=!0,this.abortController=new AbortController,this.emit({type:"status",loading:!0});const i={role:"user",content:o};this.messages.push(i),this.emit({type:"message",message:i});try{let r=0;const h=this.config.maxToolRounds;for(;r<h;){r++;const v={role:"assistant",content:""};this.messages.push(v),this.emit({type:"message",message:v});const a=this.buildApiMessages(),c=await this.config.provider.streamChat({config:this.config.providerConfig,messages:a,tools:this.config.tools.getDefinitions(),signal:this.abortController.signal,onContent:g=>{v.content+=g,this.emit({type:"stream:delta",delta:{content:g}})},onReasoning:g=>{this.emit({type:"stream:delta",delta:{reasoning:g}})}});if(v.content=c.content,this.emit({type:"stream:end",content:c.content,reasoning:c.reasoning}),c.tool_calls.length>0){v.tool_calls=c.tool_calls;for(const g of c.tool_calls){this.emit({type:"tool:start",call:g});const m=await this.config.tools.execute(g.function.name,g.function.arguments);this.emit({type:"tool:end",call:g,output:m}),this.messages.push({role:"tool",tool_call_id:g.id,content:m.result,name:g.function.name})}continue}break}await((l=this.config.storage)==null?void 0:l.save(this.messages))}catch(r){if((r==null?void 0:r.name)!=="AbortError")this.emit({type:"error",error:(r==null?void 0:r.message)||"请求出错"});else{const h=this.messages[this.messages.length-1];(h==null?void 0:h.role)==="assistant"&&!h.content&&(h.content="(已停止生成)")}}finally{this._loading=!1,this.abortController=null,this.emit({type:"status",loading:!1})}}stop(){var t;(t=this.abortController)==null||t.abort()}buildApiMessages(){const t=this.messages,i=t.length>0&&t[t.length-1].role==="assistant"&&t[t.length-1].content===""&&!t[t.length-1].tool_calls?t.slice(0,-1):t;return this.config.systemPrompt?[{role:"system",content:this.config.systemPrompt},...i]:[...i]}}class ae{constructor(){A(this,"_definitions",[]);A(this,"_handlers",new Map)}register(t,o){return this._definitions.push(t),this._handlers.set(t.function.name,o),this}registerBatch(t){for(const o of t)this.register(o.definition,o.handler);return this}getDefinitions(){return[...this._definitions]}async execute(t,o){const i=this._handlers.get(t);if(!i)return{success:!1,result:`未知工具:${t}`};try{const l=o?JSON.parse(o):{};return await i(l)}catch(l){return{success:!1,result:`工具执行异常:${(l==null?void 0:l.message)||String(l)}`}}}}function Ee(n){let t=n.trim().replace(/\/+$/,"");return t=t.replace(/\/v1$/,""),t}function re(){return{async streamChat(n){var f;const{config:{baseUrl:t,apiKey:o,model:i,temperature:l},messages:r,tools:h,signal:v,onContent:a,onReasoning:c}=n;if(!o)throw new Error("未配置 API Key");const g=`${Ee(t)}/chat/completions`,m={model:i,messages:r,stream:!0};typeof l=="number"&&(m.temperature=l),h!=null&&h.length&&(m.tools=h,m.tool_choice="auto");const x=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify(m),signal:v});if(!x.ok||!x.body){let p=`请求失败(HTTP ${x.status})`;try{const d=await x.json();(f=d==null?void 0:d.error)!=null&&f.message&&(p=d.error.message)}catch{}throw new Error(p)}const $=x.body.getReader(),w=new TextDecoder("utf-8");let V="",_="",N="",B="stop";const M=new Map,P=p=>{if(!p)return;const d=p.index??0;M.has(d)||M.set(d,{id:"",type:"function",function:{name:"",arguments:""}});const b=M.get(d);p.id&&(b.id=p.id),p.type&&(b.type=p.type),p.function&&(p.function.name&&(b.function.name+=p.function.name),p.function.arguments&&(b.function.arguments+=p.function.arguments))},I=p=>{var T;const d=(T=p==null?void 0:p.choices)==null?void 0:T[0];if(!d)return;const b=d.delta||{};typeof b.content=="string"&&b.content&&(_+=b.content,a==null||a(b.content)),typeof b.reasoning_content=="string"&&b.reasoning_content&&(N+=b.reasoning_content,c==null||c(b.reasoning_content)),Array.isArray(b.tool_calls)&&b.tool_calls.forEach(F=>P(F)),d.finish_reason&&(B=d.finish_reason)};for(;;){const{done:p,value:d}=await $.read();if(p)break;V+=w.decode(d,{stream:!0});let b;for(;(b=V.indexOf(`
2
+ `))!==-1;){const T=V.slice(0,b).replace(/\r$/,"").trim();if(V=V.slice(b+1),!T||T.startsWith(":")||!T.startsWith("data:"))continue;const F=T.slice(5).trim();if(F==="[DONE]")return S();try{I(JSON.parse(F))}catch{}}}return S();function S(){const p=Array.from(M.values()).filter(d=>d.function.name);return{content:_,reasoning:N,tool_calls:p,finish_reason:B}}}}}function ie(){return{async streamChat(n){var S;const{config:{baseUrl:t,model:o,temperature:i},messages:l,tools:r,signal:h,onContent:v,onReasoning:a}=n,c=`${t.trim().replace(/\/+$/,"")}`,g={model:o,messages:l,stream:!0};typeof i=="number"&&(g.temperature=i),r!=null&&r.length&&(g.tools=r,g.tool_choice="auto");const m=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g),signal:h});if(!m.ok||!m.body){let f=`请求失败(HTTP ${m.status})`;try{const p=await m.json();(S=p==null?void 0:p.error)!=null&&S.message&&(f=p.error.message)}catch{}throw new Error(f)}const x=m.body.getReader(),$=new TextDecoder("utf-8");let w="",V="",_="",N="stop";const B=new Map,M=f=>{if(!f)return;const p=f.index??0;B.has(p)||B.set(p,{id:"",type:"function",function:{name:"",arguments:""}});const d=B.get(p);f.id&&(d.id=f.id),f.type&&(d.type=f.type),f.function&&(f.function.name&&(d.function.name+=f.function.name),f.function.arguments&&(d.function.arguments+=f.function.arguments))},P=f=>{var b;const p=(b=f==null?void 0:f.choices)==null?void 0:b[0];if(!p)return;const d=p.delta||{};typeof d.content=="string"&&d.content&&(V+=d.content,v==null||v(d.content)),typeof d.reasoning_content=="string"&&d.reasoning_content&&(_+=d.reasoning_content,a==null||a(d.reasoning_content)),Array.isArray(d.tool_calls)&&d.tool_calls.forEach(T=>M(T)),p.finish_reason&&(N=p.finish_reason)};for(;;){const{done:f,value:p}=await x.read();if(f)break;w+=$.decode(p,{stream:!0});let d;for(;(d=w.indexOf(`
3
+ `))!==-1;){const b=w.slice(0,d).replace(/\r$/,"").trim();if(w=w.slice(d+1),!b||b.startsWith(":")||!b.startsWith("data:"))continue;const T=b.slice(5).trim();if(T==="[DONE]")return I();try{P(JSON.parse(T))}catch{}}}return I();function I(){const f=Array.from(B.values()).filter(p=>p.function.name);return{content:V,reasoning:_,tool_calls:f,finish_reason:N}}}}}function $e(n){var o,i,l,r,h;const t=[];return(o=n.displayHints)!=null&&o.suggestComponent&&t.push(`展示建议: 使用 ${n.displayHints.suggestComponent} 组件`),(i=n.displayHints)!=null&&i.resultFormat&&t.push(`格式: ${n.displayHints.resultFormat}`),(r=(l=n.displayHints)==null?void 0:l.previewFields)!=null&&r.length&&t.push(`预览字段: ${n.displayHints.previewFields.join(", ")}`),(h=n.displayHints)!=null&&h.summaryTemplate&&t.push(`概要模板: ${n.displayHints.summaryTemplate}`),t.length?t.join(" | "):""}function ce(n){const t=["你是一个 AI 助手,可以帮助用户完成各种操作。","","你可以使用以下工具包:",""];for(const o of n){t.push(`【${o.name}】${o.description}`);for(const i of o.tools){const l=$e(i);t.push(` - ${i.name}: ${i.description}`),l&&t.push(` ${l}`)}t.push("")}return t.push("注意:"),t.push("1. 当你需要查询或操作数据时,调用对应工具包中的函数。"),t.push("2. 工具函数由宿主系统执行,你只需要传递正确的参数。"),t.push("3. 获取到工具结果后,回复用户并告知结果。"),t.push("4. 如果工具返回了结构化数据(如订单信息、系统状态等),在回复中清晰地展示给用户。"),t.push("5. 根据结果动态建议用户接下来可以做什么。"),t.push("6. 如果用户上传了文件,文件格式为(.txt、.json、.geojson等格式),你必须调用 open_mapview_file 工具在地图上展示,不要只回复文字。"),t.push(""),t.push("--- 文件上传规则 ---"),t.push("用户可能上传文件,文件以如下格式出现在消息中:"),t.push("[Uploaded file: fileId] 文件名 (类型, 大小KB)"),t.push("你无法查看文件内容,只能看到文件名和类型。"),t.push("你必须根据文件名、扩展名和用户的文字指令,调用对应的工具来处理文件。"),t.push("如果某个工具需要处理该文件,在工具参数中传入 fileId。"),t.push('不要回复假性成功消息(如"已在地图上显示"),如果不调用工具,文件不会被实际处理。'),t.push("不要编造文件内容,不要假装你看到了文件数据。"),t.join(`
4
+ `)}function Se(n,t,o){var r;let i=null;if(n.type==="component"&&n.componentName){let h;n.packageId&&(h=t.find(v=>v.id===n.packageId)),!h&&o&&(h=t.find(v=>v.id===o)),(r=h==null?void 0:h.components)!=null&&r[n.componentName]&&(i=h.components[n.componentName])}const l=Te(n);return{component:i,block:n,fallbackText:l}}function Te(n){switch(n.type){case"table":return Me(n);case"card":return Ie(n);case"list":return Ae(n);default:return JSON.stringify(n.data,null,2)}}function W(n){return n==null?null:Array.isArray(n)?n:typeof n!="object"?null:Array.isArray(n.data)?n.data:Array.isArray(n.list)?n.list:Array.isArray(n.items)?n.items:[n]}function Me(n){const t=W(n.data);if(!(t!=null&&t.length))return"(无数据)";const o=n.title?`**${n.title}**
5
5
 
6
6
  `:"",i=Object.keys(t[0]),l=`| ${i.join(" | ")} |`,r=`| ${i.map(()=>"---").join(" | ")} |`,h=t.map(v=>`| ${i.map(a=>String(v[a]??"")).join(" | ")} |`).join(`
7
7
  `);return`${o}${l}
8
8
  ${r}
9
- ${h}`}function Ie(n){const t=J(n.data);if(!(t!=null&&t.length))return"(无数据)";const o=n.title?`**${n.title}**
9
+ ${h}`}function Ie(n){const t=W(n.data);if(!(t!=null&&t.length))return"(无数据)";const o=n.title?`**${n.title}**
10
10
 
11
11
  `:"",i=t.map(l=>Object.entries(l).map(([h,v])=>`- **${h}**: ${v}`).join(`
12
12
  `)).join(`
13
13
 
14
14
  ---
15
15
 
16
- `);return`${o}${i}`}function Ae(n){const t=J(n.data);if(!(t!=null&&t.length))return"(无数据)";const o=n.title?`**${n.title}**
16
+ `);return`${o}${i}`}function Ae(n){const t=W(n.data);if(!(t!=null&&t.length))return"(无数据)";const o=n.title?`**${n.title}**
17
17
 
18
18
  `:"",i=t.map(l=>`- ${typeof l=="string"?l:Object.values(l).join(" - ")}`).join(`
19
- `);return`${o}${i}`}class ce{constructor(){A(this,"exactHandlers",new Map);A(this,"regexHandlers",[]);A(this,"isChatOpen",()=>!0)}setChatOpenGetter(t){this.isChatOpen=t}on(t,o){return typeof t=="string"?(this.exactHandlers.has(t)||this.exactHandlers.set(t,new Set),this.exactHandlers.get(t).add(o),()=>this.off(t,o)):(this.regexHandlers.push({pattern:t,handler:o}),()=>this.off(t,o))}off(t,o){var i;if(typeof t=="string"){(i=this.exactHandlers.get(t))==null||i.delete(o);return}this.regexHandlers=this.regexHandlers.filter(l=>l.pattern!==t||l.handler!==o)}dispatch(t,o=!1){var i;if(!(o&&!this.isChatOpen())){(i=this.exactHandlers.get(t.type))==null||i.forEach(l=>l(t));for(const{pattern:l,handler:r}of this.regexHandlers)l.test(t.type)&&r(t)}}clear(){this.exactHandlers.clear(),this.regexHandlers=[]}}function ue(){return new ce}class Pe{constructor(t,o){A(this,"bus");A(this,"rules");A(this,"cooldowns",new Map);A(this,"unsubscribers",[]);this.bus=t,this.rules=o}start(t){for(const o of this.rules){const i=this.bus.on(o.event,l=>{if(this.isOnCooldown(o)||(this.setCooldown(o),o.autoPopup&&t.onAutoPopup(),o.action==="silent"))return;const r=this.buildPrompt(o,l);r&&t.onRespond(r)});this.unsubscribers.push(i)}}stop(){for(const t of this.unsubscribers)t();this.unsubscribers=[],this.cooldowns.clear()}getBus(){return this.bus}isOnCooldown(t){if(!t.cooldown)return!1;const o=typeof t.event=="string"?t.event:t.event.source,i=this.cooldowns.get(o);return i?Date.now()<i:!1}setCooldown(t){if(!t.cooldown)return;const o=typeof t.event=="string"?t.event:t.event.source;this.cooldowns.set(o,Date.now()+t.cooldown)}buildPrompt(t,o){return t.prompt?t.prompt.replace(/\{\{payload\.([^}]+)\}\}/g,(i,l)=>{const r=o.payload[l];return r!==void 0?String(r):`{{payload.${l}}}`}):""}}const X={apiKey:"",baseUrl:"https://api.deepseek.com",model:"deepseek-chat",temperature:0,providerMode:"direct",proxyUrl:"http://localhost:3001/api/chat"};function De(n){return{type:"function",function:{name:n.name,description:n.description,parameters:n.parameters}}}function q(){return`m_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Fe(){let n=[],t="0123456789abcdef";for(let i=0;i<36;i++)n[i]=t.substr(Math.floor(Math.random()*16),1);return n[14]="4",n[19]=t.substr(n[19]&3|8,1),n[8]=n[13]=n[18]=n[23]="-",n.join("")}const ne="agent_chat_device_id";function L(){let n=localStorage.getItem(ne);return n||(n=Fe(),localStorage.setItem(ne,n)),n}function G(n){try{return new URL(n).origin}catch{return""}}function Y(n){const t=[];for(const o of n)if(o.role==="user")t.push({role:"user",content:o.content});else if(o.role==="assistant"&&(t.push({role:"assistant",content:o.content,tool_calls:o.tool_calls}),o.toolResults))for(const i of o.toolResults)t.push({role:"tool",tool_call_id:i.callId,content:i.result,name:i.name});return t}function ze(n){var Z,ee;const{toolPackages:t,onToolCall:o,provider:i,providerConfig:l,systemPrompt:r,storagePrefix:h="agent_chat_",sendFileToLLM:v=!1}=n,a={messages:`${h}messages`,settings:`${h}settings`},c=e.ref([]),g=e.ref({...X}),m=e.ref(!1),x=e.ref(""),$=new Map,V=e.ref(!1);let w=null;const _=((Z=n.businessEvents)==null?void 0:Z.bus)||ue();_.setChatOpenGetter(()=>V.value),(ee=n.businessEvents)!=null&&ee.rules.length&&(w=new Pe(_,n.businessEvents.rules),w.start({onAutoPopup:()=>{V.value=!0},onRespond:s=>{x.value="",!(!g.value.apiKey&&g.value.providerMode!=="proxy")&&Q(s)}})),e.onUnmounted(()=>{w==null||w.stop(),F()});const N=new le;for(const s of t)for(const k of s.tools){const C=De(k);N.register(C,async u=>{const y={packageId:s.id,toolName:k.name,args:u};return await d(y,s,k)})}const B=ae(),M=re(),P=i||{streamChat(s){return(g.value.providerMode==="proxy"?M:B).streamChat(s)}};function I(){const s={...l};return g.value.providerMode==="proxy"?{...s,baseUrl:g.value.proxyUrl,apiKey:"",model:g.value.model,temperature:g.value.temperature}:{...s,baseUrl:g.value.baseUrl,apiKey:g.value.apiKey,model:g.value.model,temperature:g.value.temperature}}const S=new se({provider:P,providerConfig:I(),tools:N,systemPrompt:r||ie(t)});let f=null;const p=[];async function d(s,k,C){const u={toolCallId:`${Date.now()}_${Math.random().toString(36).slice(2,6)}`,packageId:s.packageId,toolName:s.toolName,args:s.args};try{const y=await o(u);return f={pkg:k,toolDef:C,data:y,args:s.args},{success:!0,result:typeof y=="string"?y:JSON.stringify(y)}}catch(y){return{success:!1,result:(y==null?void 0:y.message)||"工具执行失败"}}}function b(){var te;if(!f)return;const{pkg:s,toolDef:k,data:C,args:u}=f,y=k.displayHints;if(!y)return;const E=c.value[c.value.length-1];if(!(!E||E.role!=="assistant")){if(y.suggestComponent){let D=C;if((te=C==null?void 0:C.data)!=null&&te.fileId){const R=$.get(C.data.fileId);R&&(D=R.name.endsWith(".geojson")||R.name.endsWith(".json")?{data:{wkt:"",geojson:R.data}}:{data:{wkt:R.data,geojson:""}})}E.renderBlocks=[{type:"component",packageId:s.id,componentName:y.suggestComponent,data:D}],console.log("resolvedData===",D)}else if(y.resultFormat==="table"||y.resultFormat==="card"||y.resultFormat==="list"){const D=J(C);D!=null&&D.length&&(E.renderBlocks=[{type:y.resultFormat,title:j(y.summaryTemplate,u),data:D,fields:y.previewFields,labelField:y.labelField,selectable:y.selectable}])}if(y.suggestedNext)if(y.suggestedNextEvent){const D=y.suggestedNextEvent,R=_.on(D,()=>T(D));p.push({event:D,text:y.suggestedNext,unsub:R})}else E.suggestedNext=y.suggestedNext}}function T(s){const k=p.findIndex(u=>u.event===s);if(k===-1)return;const C=p[k];C.unsub(),p.splice(k,1);for(let u=c.value.length-1;u>=0;u--){const y=c.value[u];if(y.role==="assistant"){y.suggestedNext=C.text;break}}}function F(){for(const s of p)s.unsub();p.length=0}function j(s,k){if(s)return s.replace(/\{(\w+)\}/g,(C,u)=>k[u]!==void 0?String(k[u]):C)}const z=new Map;S.on(s=>{var k,C;switch(s.type){case"message":{if(s.message.role==="tool")break;const u={id:q(),role:s.message.role,content:s.message.content,reasoning:"",status:s.message.role==="assistant"?"streaming":"done",timestamp:Date.now(),tool_calls:s.message.tool_calls};c.value.push(u);break}case"stream:delta":{const u=c.value[c.value.length-1];(u==null?void 0:u.role)==="assistant"&&u.status==="streaming"&&(s.delta.content&&(u.content+=s.delta.content),s.delta.reasoning&&(u.reasoning=(u.reasoning||"")+s.delta.reasoning));break}case"stream:end":{const u=c.value[c.value.length-1];(u==null?void 0:u.role)==="assistant"&&(u.content=s.content,s.reasoning&&(u.reasoning=s.reasoning));break}case"tool:start":{const u=c.value[c.value.length-1];if(!u||u.role!=="assistant")break;u.tool_calls||(u.tool_calls=[]),u.toolResults||(u.toolResults=[]);const y=u.toolResults.length;u.toolResults.push({callId:s.call.id,name:s.call.function.name,arguments:s.call.function.arguments,result:"",success:!1,status:"running"}),z.set(s.call.id,{msgIndex:c.value.length-1,toolIndex:y}),u.tool_calls.find(E=>E.id===s.call.id)||u.tool_calls.push({id:s.call.id,type:"function",function:{name:s.call.function.name,arguments:s.call.function.arguments}});break}case"tool:end":{const u=z.get(s.call.id);if(!u)break;const y=(C=(k=c.value[u.msgIndex])==null?void 0:k.toolResults)==null?void 0:C[u.toolIndex];y&&(y.result=s.output.result,y.success=s.output.success,y.status=s.output.success?"success":"error"),z.delete(s.call.id);break}case"error":{x.value=s.error;const u=c.value[c.value.length-1];(u==null?void 0:u.role)==="assistant"&&(u.status="error",u.error=s.error);break}case"status":{if(m.value=s.loading,!s.loading){const u=c.value[c.value.length-1];(u==null?void 0:u.role)==="assistant"&&u.status==="streaming"&&(u.status="done",u.content||(u.content="(已停止生成)")),b()}break}}});function W(){try{const s=localStorage.getItem(a.settings);s&&(g.value={...X,...JSON.parse(s)})}catch{}}function H(s){for(const k of s)if(k.files)for(const C of k.files)C.id&&$.set(C.id,C)}async function ve(){if(g.value.providerMode==="proxy"){try{const s=G(g.value.proxyUrl);if(!s)return;const k=await fetch(`${s}/api/messages?device_id=${encodeURIComponent(L())}`);if(!k.ok)return;const C=await k.json(),u=C==null?void 0:C.messages;Array.isArray(u)&&(c.value=u,H(u),S.initialize(Y(u)))}catch{}return}try{const s=localStorage.getItem(a.messages);if(s){const k=JSON.parse(s);Array.isArray(k)&&(c.value=k,H(k),S.initialize(Y(k)))}}catch{}}function _e(s){g.value={...s},localStorage.setItem(a.settings,JSON.stringify(s)),s.providerMode==="proxy"?S.updateProviderConfig({baseUrl:s.proxyUrl,apiKey:"",model:s.model,temperature:s.temperature}):S.updateProviderConfig({baseUrl:s.baseUrl,apiKey:s.apiKey,model:s.model,temperature:s.temperature})}async function ye(){if(g.value.providerMode==="proxy"){try{const s=G(g.value.proxyUrl);if(!s)return;await fetch(`${s}/api/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_id:L(),messages:c.value})})}catch{}return}try{localStorage.setItem(a.messages,JSON.stringify(c.value))}catch{}}function ke(s){return s.startsWith("data:")}async function Q(s,k){const C=s.trim();if(!C&&(!k||k.length===0))return;if(x.value="",g.value.providerMode==="direct"&&!g.value.apiKey){x.value="请先配置 API Key。";return}if(S.updateProviderConfig(I()),f=null,z.clear(),k&&k.length>0){for(const E of k)E.id=q(),$.set(E.id,{...E});const y={id:q(),role:"user",content:C,status:"done",timestamp:Date.now(),files:k};c.value.push(y),S.initialize(Y(c.value))}let u=C;k&&k.length>0&&(v?u=k.map(E=>ke(E.data)?`[File: ${E.name} (${E.type}, ${(E.size/1024).toFixed(1)}KB)]
19
+ `);return`${o}${i}`}class ue{constructor(){A(this,"exactHandlers",new Map);A(this,"regexHandlers",[]);A(this,"isChatOpen",()=>!0)}setChatOpenGetter(t){this.isChatOpen=t}on(t,o){return typeof t=="string"?(this.exactHandlers.has(t)||this.exactHandlers.set(t,new Set),this.exactHandlers.get(t).add(o),()=>this.off(t,o)):(this.regexHandlers.push({pattern:t,handler:o}),()=>this.off(t,o))}off(t,o){var i;if(typeof t=="string"){(i=this.exactHandlers.get(t))==null||i.delete(o);return}this.regexHandlers=this.regexHandlers.filter(l=>l.pattern!==t||l.handler!==o)}dispatch(t,o=!1){var i;if(!(o&&!this.isChatOpen())){(i=this.exactHandlers.get(t.type))==null||i.forEach(l=>l(t));for(const{pattern:l,handler:r}of this.regexHandlers)l.test(t.type)&&r(t)}}clear(){this.exactHandlers.clear(),this.regexHandlers=[]}}function de(){return new ue}class Pe{constructor(t,o){A(this,"bus");A(this,"rules");A(this,"cooldowns",new Map);A(this,"unsubscribers",[]);this.bus=t,this.rules=o}start(t){for(const o of this.rules){const i=this.bus.on(o.event,l=>{if(this.isOnCooldown(o)||(this.setCooldown(o),o.autoPopup&&t.onAutoPopup(),o.action==="silent"))return;const r=this.buildPrompt(o,l);r&&t.onRespond(r)});this.unsubscribers.push(i)}}stop(){for(const t of this.unsubscribers)t();this.unsubscribers=[],this.cooldowns.clear()}getBus(){return this.bus}isOnCooldown(t){if(!t.cooldown)return!1;const o=typeof t.event=="string"?t.event:t.event.source,i=this.cooldowns.get(o);return i?Date.now()<i:!1}setCooldown(t){if(!t.cooldown)return;const o=typeof t.event=="string"?t.event:t.event.source;this.cooldowns.set(o,Date.now()+t.cooldown)}buildPrompt(t,o){return t.prompt?t.prompt.replace(/\{\{payload\.([^}]+)\}\}/g,(i,l)=>{const r=o.payload[l];return r!==void 0?String(r):`{{payload.${l}}}`}):""}}const Q={apiKey:"",baseUrl:"https://api.deepseek.com",model:"deepseek-chat",temperature:0,providerMode:"direct",proxyUrl:"http://localhost:3001/api/chat"};function De(n){return{type:"function",function:{name:n.name,description:n.description,parameters:n.parameters}}}function G(){return`m_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function Fe(){let n=[],t="0123456789abcdef";for(let i=0;i<36;i++)n[i]=t.substr(Math.floor(Math.random()*16),1);return n[14]="4",n[19]=t.substr(n[19]&3|8,1),n[8]=n[13]=n[18]=n[23]="-",n.join("")}const oe="agent_chat_device_id";function K(){let n=localStorage.getItem(oe);return n||(n=Fe(),localStorage.setItem(oe,n)),n}function Y(n){try{return new URL(n).origin}catch{return""}}function X(n){const t=[];for(const o of n)if(o.role==="user")t.push({role:"user",content:o.content});else if(o.role==="assistant"&&(t.push({role:"assistant",content:o.content,tool_calls:o.tool_calls}),o.toolResults))for(const i of o.toolResults)t.push({role:"tool",tool_call_id:i.callId,content:i.result,name:i.name});return t}function ze(n){var ee,te;const{toolPackages:t,onToolCall:o,provider:i,providerConfig:l,systemPrompt:r,storagePrefix:h="agent_chat_",sendFileToLLM:v=!1}=n,a={messages:`${h}messages`,settings:`${h}settings`},c=e.ref([]),g=e.ref({...Q}),m=e.ref(!1),x=e.ref(""),$=new Map,w=e.ref(!1);let V=null;const _=((ee=n.businessEvents)==null?void 0:ee.bus)||de();_.setChatOpenGetter(()=>w.value),(te=n.businessEvents)!=null&&te.rules.length&&(V=new Pe(_,n.businessEvents.rules),V.start({onAutoPopup:()=>{w.value=!0},onRespond:s=>{x.value="",!(!g.value.apiKey&&g.value.providerMode!=="proxy")&&Z(s)}})),e.onUnmounted(()=>{V==null||V.stop(),F()});const N=new ae;for(const s of t)for(const k of s.tools){const C=De(k);N.register(C,async u=>{const y={packageId:s.id,toolName:k.name,args:u};return await d(y,s,k)})}const B=re(),M=ie(),P=i||{streamChat(s){return(g.value.providerMode==="proxy"?M:B).streamChat(s)}};function I(){const s={...l};return g.value.providerMode==="proxy"?{...s,baseUrl:g.value.proxyUrl,apiKey:"",model:g.value.model,temperature:g.value.temperature}:{...s,baseUrl:g.value.baseUrl,apiKey:g.value.apiKey,model:g.value.model,temperature:g.value.temperature}}const S=new le({provider:P,providerConfig:I(),tools:N,systemPrompt:r||ce(t)});let f=null;const p=[];async function d(s,k,C){const u={toolCallId:`${Date.now()}_${Math.random().toString(36).slice(2,6)}`,packageId:s.packageId,toolName:s.toolName,args:s.args};try{const y=await o(u);return f={pkg:k,toolDef:C,data:y,args:s.args},{success:!0,result:typeof y=="string"?y:JSON.stringify(y)}}catch(y){return{success:!1,result:(y==null?void 0:y.message)||"工具执行失败"}}}function b(){var ne;if(!f)return;const{pkg:s,toolDef:k,data:C,args:u}=f,y=k.displayHints;if(!y)return;const E=c.value[c.value.length-1];if(!(!E||E.role!=="assistant")){if(y.suggestComponent){let D=C;if((ne=C==null?void 0:C.data)!=null&&ne.fileId){const R=$.get(C.data.fileId);R&&(D=R.name.endsWith(".geojson")||R.name.endsWith(".json")?{data:{wkt:"",geojson:R.data}}:{data:{wkt:R.data,geojson:""}})}E.renderBlocks=[{type:"component",packageId:s.id,componentName:y.suggestComponent,data:D}],console.log("resolvedData===",D)}else if(y.resultFormat==="table"||y.resultFormat==="card"||y.resultFormat==="list"){const D=W(C);D!=null&&D.length&&(E.renderBlocks=[{type:y.resultFormat,title:H(y.summaryTemplate,u),data:D,fields:y.previewFields,labelField:y.labelField,selectable:y.selectable}])}if(y.suggestedNext)if(y.suggestedNextEvent){const D=y.suggestedNextEvent,R=_.on(D,()=>T(D));p.push({event:D,text:y.suggestedNext,unsub:R})}else E.suggestedNext=y.suggestedNext}}function T(s){const k=p.findIndex(u=>u.event===s);if(k===-1)return;const C=p[k];C.unsub(),p.splice(k,1);for(let u=c.value.length-1;u>=0;u--){const y=c.value[u];if(y.role==="assistant"){y.suggestedNext=C.text;break}}}function F(){for(const s of p)s.unsub();p.length=0}function H(s,k){if(s)return s.replace(/\{(\w+)\}/g,(C,u)=>k[u]!==void 0?String(k[u]):C)}const z=new Map;S.on(s=>{var k,C;switch(s.type){case"message":{if(s.message.role==="tool")break;const u={id:G(),role:s.message.role,content:s.message.content,reasoning:"",status:s.message.role==="assistant"?"streaming":"done",timestamp:Date.now(),tool_calls:s.message.tool_calls};c.value.push(u);break}case"stream:delta":{const u=c.value[c.value.length-1];(u==null?void 0:u.role)==="assistant"&&u.status==="streaming"&&(s.delta.content&&(u.content+=s.delta.content),s.delta.reasoning&&(u.reasoning=(u.reasoning||"")+s.delta.reasoning));break}case"stream:end":{const u=c.value[c.value.length-1];(u==null?void 0:u.role)==="assistant"&&(u.content=s.content,s.reasoning&&(u.reasoning=s.reasoning));break}case"tool:start":{const u=c.value[c.value.length-1];if(!u||u.role!=="assistant")break;u.tool_calls||(u.tool_calls=[]),u.toolResults||(u.toolResults=[]);const y=u.toolResults.length;u.toolResults.push({callId:s.call.id,name:s.call.function.name,arguments:s.call.function.arguments,result:"",success:!1,status:"running"}),z.set(s.call.id,{msgIndex:c.value.length-1,toolIndex:y}),u.tool_calls.find(E=>E.id===s.call.id)||u.tool_calls.push({id:s.call.id,type:"function",function:{name:s.call.function.name,arguments:s.call.function.arguments}});break}case"tool:end":{const u=z.get(s.call.id);if(!u)break;const y=(C=(k=c.value[u.msgIndex])==null?void 0:k.toolResults)==null?void 0:C[u.toolIndex];y&&(y.result=s.output.result,y.success=s.output.success,y.status=s.output.success?"success":"error"),z.delete(s.call.id);break}case"error":{x.value=s.error;const u=c.value[c.value.length-1];(u==null?void 0:u.role)==="assistant"&&(u.status="error",u.error=s.error);break}case"status":{if(m.value=s.loading,!s.loading){const u=c.value[c.value.length-1];(u==null?void 0:u.role)==="assistant"&&u.status==="streaming"&&(u.status="done",u.content||(u.content="(已停止生成)")),b()}break}}});function q(){try{const s=localStorage.getItem(a.settings);s&&(g.value={...Q,...JSON.parse(s)})}catch{}}function L(s){for(const k of s)if(k.files)for(const C of k.files)C.id&&$.set(C.id,C)}async function j(){if(g.value.providerMode==="proxy"){try{const s=Y(g.value.proxyUrl);if(!s)return;const k=await fetch(`${s}/api/messages?device_id=${encodeURIComponent(K())}`);if(!k.ok)return;const C=await k.json(),u=C==null?void 0:C.messages;Array.isArray(u)&&(c.value=u,L(u),S.initialize(X(u)))}catch{}return}try{const s=localStorage.getItem(a.messages);if(s){const k=JSON.parse(s);Array.isArray(k)&&(c.value=k,L(k),S.initialize(X(k)))}}catch{}}function _e(s){g.value={...s},localStorage.setItem(a.settings,JSON.stringify(s)),s.providerMode==="proxy"?S.updateProviderConfig({baseUrl:s.proxyUrl,apiKey:"",model:s.model,temperature:s.temperature}):S.updateProviderConfig({baseUrl:s.baseUrl,apiKey:s.apiKey,model:s.model,temperature:s.temperature})}async function ye(){if(g.value.providerMode==="proxy"){try{const s=Y(g.value.proxyUrl);if(!s)return;await fetch(`${s}/api/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_id:K(),messages:c.value})})}catch{}return}try{localStorage.setItem(a.messages,JSON.stringify(c.value))}catch{}}function ke(s){return s.startsWith("data:")}async function Z(s,k){const C=s.trim();if(!C&&(!k||k.length===0))return;if(x.value="",g.value.providerMode==="direct"&&!g.value.apiKey){x.value="请先配置 API Key。";return}if(S.updateProviderConfig(I()),f=null,z.clear(),k&&k.length>0){for(const E of k)E.id=G(),$.set(E.id,{...E});const y={id:G(),role:"user",content:C,status:"done",timestamp:Date.now(),files:k};c.value.push(y),S.initialize(X(c.value))}let u=C;k&&k.length>0&&(v?u=k.map(E=>ke(E.data)?`[File: ${E.name} (${E.type}, ${(E.size/1024).toFixed(1)}KB)]
20
20
  ${E.data}`:`[File: ${E.name} (${E.type}, ${(E.size/1024).toFixed(1)}KB)]
21
21
  \`\`\`
22
22
  ${E.data}
@@ -27,4 +27,4 @@ ${E.data}
27
27
  ${C}`:""):u=k.map(E=>`[Uploaded file: ${E.id}] ${E.name} (${E.type}, ${(E.size/1024).toFixed(1)}KB)`).join(`
28
28
  `)+(C?`
29
29
 
30
- ${C}`:"")),await S.sendMessage(u)}function xe(){S.stop()}async function Ce(){if(be(),S.clear(),c.value=[],x.value="",f=null,F(),$.clear(),g.value.providerMode==="proxy")try{const s=G(g.value.proxyUrl);s&&await fetch(`${s}/api/messages?device_id=${encodeURIComponent(L())}`,{method:"DELETE"})}catch{}else localStorage.removeItem(a.messages)}const Ve=e.computed(()=>g.value.providerMode==="proxy"||!!g.value.apiKey);e.onMounted(()=>{W(),ve()});let O=null;function we(){O&&clearTimeout(O),O=setTimeout(()=>{O=null,ye()},400)}function be(){O&&(clearTimeout(O),O=null)}return e.watch(c,()=>we(),{deep:!0}),{messages:c,settings:g,loading:m,errorMsg:x,hasApiKey:Ve,toolPackages:t,fileStore:$,visible:V,eventBus:_,deviceId:L(),sendMessage:Q,stopGeneration:xe,clearMessages:Ce,saveSettings:_e}}/*! Element Plus Icons Vue v2.3.2 */var He=e.defineComponent({name:"ChatDotRound",__name:"chat-dot-round",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.06 461.06 0 0 1-206.912-48.384l-175.616 58.56z"}),e.createElementVNode("path",{fill:"currentColor",d:"M512 563.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4"})]))}}),je=He,Oe=e.defineComponent({name:"Close",__name:"close",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Re=Oe,Ue=e.defineComponent({name:"Delete",__name:"delete",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),Le=Ue,Ke=e.defineComponent({name:"Document",__name:"document",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),de=Ke,Je=e.defineComponent({name:"FullScreen",__name:"full-screen",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),We=Je,qe=e.defineComponent({name:"InfoFilled",__name:"info-filled",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Ge=qe,Ye=e.defineComponent({name:"Paperclip",__name:"paperclip",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M602.496 240.448A192 192 0 1 1 874.048 512l-316.8 316.8A256 256 0 0 1 195.2 466.752L602.496 59.456l45.248 45.248L240.448 512A192 192 0 0 0 512 783.552l316.8-316.8a128 128 0 1 0-181.056-181.056L353.6 579.904a32 32 0 1 0 45.248 45.248l294.144-294.144 45.312 45.248L444.096 670.4a96 96 0 1 1-135.744-135.744z"})]))}}),Xe=Ye,Qe=e.defineComponent({name:"Picture",__name:"picture",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 160v704h704V160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32"}),e.createElementVNode("path",{fill:"currentColor",d:"M384 288q64 0 64 64t-64 64-64-64 64-64M185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952z"})]))}}),Ze=Qe,et=e.defineComponent({name:"Promotion",__name:"promotion",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472zm256 512V657.024L512 768z"})]))}}),tt=et,nt=e.defineComponent({name:"Setting",__name:"setting",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357 357 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a352 352 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357 357 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294 294 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293 293 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294 294 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288 288 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293 293 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a288 288 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256"})]))}}),oe=nt,ot=e.defineComponent({name:"UserFilled",__name:"user-filled",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0m544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"})]))}}),st=ot,lt=e.defineComponent({name:"VideoPause",__name:"video-pause",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m-96-544q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32m192 0q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32"})]))}}),at=lt;const rt={class:"render-block"},it={key:0,class:"render-block__title"},ct={key:2,class:"render-block__cards"},ut={class:"card-item"},dt={class:"card-label"},mt={class:"card-value"},pt={key:3,class:"render-block__table"},ft={key:4,class:"render-block__cards"},gt={class:"card-label"},ht={class:"card-value"},vt={key:5,class:"render-block__list"},_t=400,yt=e.defineComponent({__name:"RenderBlock",props:{block:{},resolvedComponent:{}},emits:["select"],setup(n,{emit:t}){const o=n,i=t,l=e.computed(()=>o.block.data||{}),r=e.computed(()=>o.block.selectable&&h.value.length>1),h=e.computed(()=>Array.isArray(l.value)?l.value:l.value.list?Array.isArray(l.value.list)?l.value.list:[]:l.value.items?Array.isArray(l.value.items)?l.value.items:[]:[l.value]),v=e.computed(()=>{var m;return h.value.length?(m=o.block.fields)!=null&&m.length?o.block.fields:Object.keys(h.value[0]):[]}),a=e.computed(()=>100);function c(m){return typeof m=="string"?m:Object.values(m).join(" - ")}function g(m){var $;const x=(o.block.labelField&&(m==null?void 0:m[o.block.labelField])!=null?m[o.block.labelField]:($=o.block.fields)!=null&&$.length?m==null?void 0:m[o.block.fields[0]]:(m==null?void 0:m.name)??(m==null?void 0:m.title)??(m==null?void 0:m.id)??Object.values(m??{})[0])??"";i("select",`我选择 ${x}`)}return(m,x)=>{const $=e.resolveComponent("el-button");return e.openBlock(),e.createElementBlock("div",rt,[n.block.title?(e.openBlock(),e.createElementBlock("div",it,e.toDisplayString(n.block.title),1)):e.createCommentVNode("",!0),n.resolvedComponent?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.resolvedComponent),{key:1,class:"render-block__component",data:n.block.data},null,8,["data"])):n.block.type==="component"?(e.openBlock(),e.createElementBlock("div",ct,[e.createElementVNode("div",ut,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value[0],(V,w)=>(e.openBlock(),e.createElementBlock("div",{key:w,class:"card-field"},[e.createElementVNode("span",dt,e.toDisplayString(w)+":",1),e.createElementVNode("span",mt,e.toDisplayString(V),1)]))),128))])])):n.block.type==="table"?(e.openBlock(),e.createElementBlock("div",pt,[e.createVNode(e.unref(K.ElTable),{data:h.value,"max-height":_t,border:"",stripe:"",size:"small","table-layout":"fixed",style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,V=>(e.openBlock(),e.createBlock(e.unref(K.ElTableColumn),{key:V,prop:V,label:V,width:a.value,align:"center","show-overflow-tooltip":""},null,8,["prop","label","width"]))),128)),r.value?(e.openBlock(),e.createBlock(e.unref(K.ElTableColumn),{key:0,label:"操作",width:80,align:"center",fixed:"right"},{default:e.withCtx(({row:V})=>[e.createVNode($,{size:"small",type:"primary",plain:"",onClick:w=>g(V)},{default:e.withCtx(()=>[...x[0]||(x[0]=[e.createTextVNode(" 选择 ",-1)])]),_:1},8,["onClick"])]),_:1})):e.createCommentVNode("",!0)]),_:1},8,["data"])])):n.block.type==="card"?(e.openBlock(),e.createElementBlock("div",ft,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(V,w)=>(e.openBlock(),e.createElementBlock("div",{key:w,class:"card-item"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V,(_,N)=>(e.openBlock(),e.createElementBlock("div",{key:N,class:"card-field"},[e.createElementVNode("span",gt,e.toDisplayString(N)+":",1),e.createElementVNode("span",ht,e.toDisplayString(_),1)]))),128))]))),128))])):n.block.type==="list"?(e.openBlock(),e.createElementBlock("div",vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(V,w)=>(e.openBlock(),e.createElementBlock("div",{key:w,class:"list-item"},e.toDisplayString(c(V)),1))),128))])):e.createCommentVNode("",!0)])}}}),U=(n,t)=>{const o=n.__vccOpts||n;for(const[i,l]of t)o[i]=l;return o},me=U(yt,[["__scopeId","data-v-0cb2fd61"]]),kt={key:0,class:"suggested-next"},xt={class:"suggested-next__text"},Ct=e.defineComponent({__name:"SuggestedNext",props:{text:{}},emits:["execute"],setup(n,{emit:t}){const o=n,i=t;function l(){i("execute",o.text)}return(r,h)=>{const v=e.resolveComponent("el-button");return n.text?(e.openBlock(),e.createElementBlock("div",kt,[h[1]||(h[1]=e.createElementVNode("span",{class:"suggested-next__icon"},"💡",-1)),e.createElementVNode("span",xt,e.toDisplayString(n.text),1),e.createVNode(v,{size:"small",type:"primary",plain:"",onClick:l},{default:e.withCtx(()=>[...h[0]||(h[0]=[e.createTextVNode("去执行",-1)])]),_:1})])):e.createCommentVNode("",!0)}}}),pe=U(Ct,[["__scopeId","data-v-0e0e9b65"]]),Vt={class:"message-avatar"},wt={class:"message-body"},bt={key:0,class:"message-files"},Nt=["src","alt"],Bt={class:"file-info"},Et={class:"file-name"},$t={class:"file-size"},St={key:1,class:"message-user-text"},Tt={key:0,class:"message-reasoning"},Mt=["innerHTML"],It={key:3,class:"message-cursor"},At={key:4,class:"message-error"},Pt=e.defineComponent({__name:"ChatMessage",props:{message:{},toolPackages:{}},emits:["execute"],setup(n,{emit:t}){const o=n,i=t;function l(a){if(!a)return"";let c=a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return c=c.replace(/`([^`]+)`/g,"<code>$1</code>"),c=c.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),c=c.replace(/\*([^*]+)\*/g,"<em>$1</em>"),c=c.replace(/\n/g,"<br>"),c}const r=e.computed(()=>l(o.message.content));function h(a){var g;if(a.type!=="component"||!a.componentName)return null;let c=a.packageId?o.toolPackages.find(m=>m.id===a.packageId):null;return c||(c=o.toolPackages.find(m=>m.components&&a.componentName in m.components)),c||(c=o.toolPackages[o.toolPackages.length-1]),c&&((g=c.components)==null?void 0:g[a.componentName])||null}function v(a){i("execute",a)}return(a,c)=>{var m;const g=e.resolveComponent("el-icon");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["chat-message",[`role-${n.message.role}`,{"is-streaming":n.message.status==="streaming"}]])},[e.createElementVNode("div",Vt,[n.message.role==="user"?(e.openBlock(),e.createBlock(g,{key:0},{default:e.withCtx(()=>[e.createVNode(e.unref(st))]),_:1})):(e.openBlock(),e.createBlock(g,{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(je))]),_:1}))]),e.createElementVNode("div",wt,[(m=n.message.files)!=null&&m.length?(e.openBlock(),e.createElementBlock("div",bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.message.files,(x,$)=>(e.openBlock(),e.createElementBlock("div",{key:$,class:e.normalizeClass(["message-file",{"is-image":x.type.startsWith("image/")}])},[x.type.startsWith("image/")?(e.openBlock(),e.createElementBlock("img",{key:0,src:x.data,alt:x.name,class:"file-image"},null,8,Nt)):(e.openBlock(),e.createBlock(g,{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(de))]),_:1})),e.createElementVNode("div",Bt,[e.createElementVNode("span",Et,e.toDisplayString(x.name),1),e.createElementVNode("span",$t,e.toDisplayString((x.size/1024).toFixed(1))+" KB",1)])],2))),128))])):e.createCommentVNode("",!0),n.message.role==="user"?(e.openBlock(),e.createElementBlock("div",St,e.toDisplayString(n.message.content),1)):e.createCommentVNode("",!0),n.message.role==="assistant"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[n.message.reasoning?(e.openBlock(),e.createElementBlock("div",Tt,[e.createElementVNode("details",null,[c[0]||(c[0]=e.createElementVNode("summary",null,"推理过程",-1)),e.createElementVNode("pre",null,e.toDisplayString(n.message.reasoning),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"message-content markdown-body",innerHTML:r.value},null,8,Mt),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.message.renderBlocks,(x,$)=>(e.openBlock(),e.createBlock(me,{key:$,block:x,"resolved-component":h(x),onSelect:v},null,8,["block","resolved-component"]))),128)),n.message.suggestedNext?(e.openBlock(),e.createBlock(pe,{key:1,text:n.message.suggestedNext,onExecute:v},null,8,["text"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),n.message.status==="streaming"?(e.openBlock(),e.createElementBlock("div",It,"▍")):e.createCommentVNode("",!0),n.message.status==="error"?(e.openBlock(),e.createElementBlock("div",At,e.toDisplayString(n.message.error),1)):e.createCommentVNode("",!0)])],2)}}}),fe=U(Pt,[["__scopeId","data-v-af392c78"]]),Dt={class:"chat-input"},Ft={key:0,class:"chat-input__files"},zt={class:"chat-input__wrap"},Ht={class:"chat-input__actions"},jt=e.defineComponent({__name:"ChatInput",props:{loading:{type:Boolean},disabled:{type:Boolean},placeholder:{}},emits:["send"],setup(n,{emit:t}){const o=n,i=t,l=e.ref(""),r=e.ref([]),h=e.ref(null),v=e.computed(()=>(l.value.trim().length>0||r.value.length>0)&&!o.disabled);function a(){var _;(_=h.value)==null||_.click()}const c=new Set(["text/plain","text/html","text/css","text/javascript","text/typescript","text/markdown","text/csv","text/xml","application/json","application/xml","application/javascript","application/typescript","application/yaml","application/x-yaml"]);function g(_){var N;if(_.type.startsWith("text/")||c.has(_.type))return!0;if(_.type===""||_.type.startsWith("application/")){const B=(N=_.name.split(".").pop())==null?void 0:N.toLowerCase();return new Set(["txt","md","json","geojson","xml","yml","yaml","csv","ts","js","tsx","jsx","vue","html","css","scss","less","sh","bat","ps1","py","java","c","cpp","h","hpp","go","rs","rb","php","sql","toml","ini","cfg","conf","log","env","gitignore","dockerfile","wkt","wkb","kml","gpx","geojson","topojson","xlsx","docx"]).has(B??"")}return!1}function m(_){return new Promise(N=>{const B=new FileReader;B.onload=()=>{N({id:"",name:_.name,size:_.size,type:_.type,data:B.result})},g(_)?B.readAsText(_):B.readAsDataURL(_)})}async function x(_){var B;const N=_.target;if((B=N.files)!=null&&B.length){for(const M of Array.from(N.files)){const P=await m(M);r.value.push(P)}N.value=""}}function $(_){r.value.splice(_,1)}function V(_){_.shiftKey||(_.preventDefault(),w())}function w(){if(!v.value||o.loading)return;const _=l.value.trim();i("send",_,r.value),l.value="",r.value=[]}return(_,N)=>{const B=e.resolveComponent("el-icon"),M=e.resolveComponent("el-tag"),P=e.resolveComponent("el-input"),I=e.resolveComponent("el-button"),S=e.resolveComponent("el-tooltip");return e.openBlock(),e.createElementBlock("div",Dt,[r.value.length?(e.openBlock(),e.createElementBlock("div",Ft,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(f,p)=>(e.openBlock(),e.createBlock(M,{key:p,closable:"",size:"small",type:f.type.startsWith("image/")?"success":"info",onClose:d=>$(p)},{default:e.withCtx(()=>[f.type.startsWith("image/")?(e.openBlock(),e.createBlock(B,{key:0,style:{"margin-right":"4px"}},{default:e.withCtx(()=>[e.createVNode(e.unref(Ze))]),_:1})):(e.openBlock(),e.createBlock(B,{key:1,style:{"margin-right":"4px"}},{default:e.withCtx(()=>[e.createVNode(e.unref(de))]),_:1})),e.createTextVNode(" "+e.toDisplayString(f.name),1)]),_:2},1032,["type","onClose"]))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",zt,[e.createVNode(P,{modelValue:l.value,"onUpdate:modelValue":N[0]||(N[0]=f=>l.value=f),type:"textarea",autosize:{minRows:1,maxRows:6},resize:"none",placeholder:n.placeholder,onKeydown:e.withKeys(V,["enter"])},null,8,["modelValue","placeholder"]),e.createElementVNode("div",Ht,[e.createVNode(S,{content:"上传文件",placement:"top"},{default:e.withCtx(()=>[e.createVNode(I,{text:"",circle:"",onClick:a},{default:e.withCtx(()=>[e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(e.unref(Xe))]),_:1})]),_:1})]),_:1}),e.createElementVNode("input",{ref_key:"fileInputRef",ref:h,type:"file",multiple:"",hidden:"",onChange:x},null,544),e.createVNode(S,{content:"Enter 发送,Shift+Enter 换行",placement:"top"},{default:e.withCtx(()=>[e.createVNode(I,{type:"primary",icon:e.unref(tt),loading:n.loading,disabled:!v.value,circle:"",onClick:w},null,8,["icon","loading","disabled"])]),_:1})])])])}}}),ge=U(jt,[["__scopeId","data-v-8fcb870c"]]),Ot=[{label:"deepseek-chat (V3 最强)",value:"deepseek-chat"},{label:"deepseek-reasoner (R1 推理)",value:"deepseek-reasoner"}],Rt={class:"form-tip"},Ut={class:"temp-row"},Lt={class:"temp-val"},Kt=e.defineComponent({__name:"ChatSettings",props:{modelValue:{type:Boolean},settings:{},deviceId:{}},emits:["update:modelValue","save"],setup(n,{emit:t}){const o=n,i=t,l=e.ref(o.modelValue);e.watch(()=>o.modelValue,v=>{l.value=v,v&&(r.value={...o.settings})}),e.watch(l,v=>i("update:modelValue",v));const r=e.ref({...o.settings});function h(){i("save",{...r.value}),l.value=!1}return(v,a)=>{const c=e.resolveComponent("el-radio"),g=e.resolveComponent("el-radio-group"),m=e.resolveComponent("el-form-item"),x=e.resolveComponent("el-input"),$=e.resolveComponent("el-link"),V=e.resolveComponent("el-option"),w=e.resolveComponent("el-select"),_=e.resolveComponent("el-slider"),N=e.resolveComponent("el-icon"),B=e.resolveComponent("el-tooltip"),M=e.resolveComponent("el-switch"),P=e.resolveComponent("el-form"),I=e.resolveComponent("el-button"),S=e.resolveComponent("el-dialog");return e.openBlock(),e.createBlock(S,{modelValue:l.value,"onUpdate:modelValue":a[8]||(a[8]=f=>l.value=f),title:"AI 助手设置",width:"520px","append-to-body":""},{footer:e.withCtx(()=>[e.createVNode(I,{onClick:a[7]||(a[7]=f=>l.value=!1)},{default:e.withCtx(()=>[...a[17]||(a[17]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(I,{type:"primary",onClick:h},{default:e.withCtx(()=>[...a[18]||(a[18]=[e.createTextVNode("保存",-1)])]),_:1})]),default:e.withCtx(()=>[e.createVNode(P,{model:r.value,"label-width":"110px","label-position":"right"},{default:e.withCtx(()=>[e.createVNode(m,{label:"调用模式"},{default:e.withCtx(()=>[e.createVNode(g,{modelValue:r.value.providerMode,"onUpdate:modelValue":a[0]||(a[0]=f=>r.value.providerMode=f)},{default:e.withCtx(()=>[e.createVNode(c,{value:"direct"},{default:e.withCtx(()=>[...a[9]||(a[9]=[e.createTextVNode("前端直连",-1)])]),_:1}),e.createVNode(c,{value:"proxy"},{default:e.withCtx(()=>[...a[10]||(a[10]=[e.createTextVNode("后端代理",-1)])]),_:1})]),_:1},8,["modelValue"]),a[11]||(a[11]=e.createElementVNode("div",{class:"form-tip"}," 前端直连:API Key 保存在浏览器本地,浏览器直接调用模型 API。 后端代理:由你的后端转发请求,API Key 保存在服务端。 ",-1))]),_:1}),r.value.providerMode==="direct"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(m,{label:"API Key"},{default:e.withCtx(()=>[e.createVNode(x,{modelValue:r.value.apiKey,"onUpdate:modelValue":a[1]||(a[1]=f=>r.value.apiKey=f),type:"password","show-password":"",placeholder:"sk-xxxxxxxxxxxxxxxx",clearable:""},null,8,["modelValue"]),e.createElementVNode("div",Rt,[a[13]||(a[13]=e.createTextVNode(" 在 ",-1)),e.createVNode($,{type:"primary",href:"https://platform.deepseek.com/api_keys",target:"_blank"},{default:e.withCtx(()=>[...a[12]||(a[12]=[e.createTextVNode(" DeepSeek 开放平台 ",-1)])]),_:1}),a[14]||(a[14]=e.createTextVNode(" 获取,仅保存在浏览器本地。 ",-1))])]),_:1}),e.createVNode(m,{label:"接口地址"},{default:e.withCtx(()=>[e.createVNode(x,{modelValue:r.value.baseUrl,"onUpdate:modelValue":a[2]||(a[2]=f=>r.value.baseUrl=f),placeholder:"https://api.deepseek.com",clearable:""},null,8,["modelValue"])]),_:1})],64)):(e.openBlock(),e.createBlock(m,{key:1,label:"代理地址"},{default:e.withCtx(()=>[e.createVNode(x,{modelValue:r.value.proxyUrl,"onUpdate:modelValue":a[3]||(a[3]=f=>r.value.proxyUrl=f),placeholder:"http://localhost:3001/api/chat",clearable:""},null,8,["modelValue"]),a[15]||(a[15]=e.createElementVNode("div",{class:"form-tip"}," 你的后端代理服务地址,API Key 配置在服务端环境变量中。 ",-1))]),_:1})),e.createVNode(m,{label:"模型"},{default:e.withCtx(()=>[e.createVNode(w,{modelValue:r.value.model,"onUpdate:modelValue":a[4]||(a[4]=f=>r.value.model=f),style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Ot),f=>(e.openBlock(),e.createBlock(V,{key:f.value,label:f.label,value:f.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e.createVNode(m,{label:"温度"},{default:e.withCtx(()=>[e.createElementVNode("div",Ut,[e.createVNode(_,{modelValue:r.value.temperature,"onUpdate:modelValue":a[5]||(a[5]=f=>r.value.temperature=f),min:0,max:2,step:.1,style:{flex:"1"}},null,8,["modelValue"]),e.createElementVNode("span",Lt,e.toDisplayString(r.value.temperature.toFixed(1)),1)])]),_:1}),e.createVNode(m,{label:"设备ID"},{default:e.withCtx(()=>[e.createVNode(x,{"model-value":n.deviceId,readonly:""},{append:e.withCtx(()=>[e.createVNode(B,{content:"该 ID 用于在服务端区分当前浏览器会话,历史消息按此 ID 保存"},{default:e.withCtx(()=>[e.createVNode(N,null,{default:e.withCtx(()=>[e.createVNode(e.unref(Ge))]),_:1})]),_:1})]),_:1},8,["model-value"])]),_:1}),e.createVNode(m,{label:"启用工具"},{default:e.withCtx(()=>[e.createVNode(M,{modelValue:r.value.useTools,"onUpdate:modelValue":a[6]||(a[6]=f=>r.value.useTools=f)},null,8,["modelValue"]),a[16]||(a[16]=e.createElementVNode("span",{class:"form-tip-inline"},"关闭后助手仅对话,不会执行页面导航/数据查询等操作",-1))]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])}}}),he=U(Kt,[["__scopeId","data-v-9634bbdc"]]),Jt={class:"chat-panel-root"},Wt={class:"ai-fab__label"},qt={class:"chat-panel__header"},Gt={class:"chat-panel__title"},Yt={class:"chat-panel__ops"},Xt={key:0,class:"chat-empty"},Qt={class:"chat-empty__logo"},Zt={key:0,class:"chat-panel__error"},en={class:"chat-panel__footer"},tn={key:0,class:"chat-panel__stop"},nn=e.defineComponent({__name:"ChatPanel",props:{chat:{},showFab:{type:Boolean,default:!0}},setup(n){const t=n,{messages:o,settings:i,loading:l,errorMsg:r,hasApiKey:h,visible:v,toolPackages:a,sendMessage:c,stopGeneration:g,clearMessages:m,saveSettings:x,deviceId:$}=t.chat,V=e.ref(!1),w=e.ref(!1),_=e.ref(null);function N(){v.value=!v.value}function B(){v.value=!1}function M(){w.value=!w.value}function P(){e.nextTick(()=>{const p=_.value;p&&(p.scrollTop=p.scrollHeight)})}function I(p,d){c(p,d),P()}function S(p){x(p)}function f(){K.ElMessageBox.confirm("确定要清空所有对话记录吗?","提示",{type:"warning",confirmButtonText:"清空",cancelButtonText:"取消"}).then(()=>{m()}).catch(()=>{})}return e.watch(()=>o.value.map(p=>{var d;return p.content+p.status+(((d=p.renderBlocks)==null?void 0:d.length)||0)}).join("|"),()=>P()),(p,d)=>{const b=e.resolveComponent("ChatDotRound"),T=e.resolveComponent("el-icon"),F=e.resolveComponent("el-tag"),j=e.resolveComponent("el-button"),z=e.resolveComponent("el-tooltip"),W=e.resolveComponent("el-alert");return e.openBlock(),e.createElementBlock("div",Jt,[n.showFab?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ai-fab",{"ai-fab--active":e.unref(v)}]),onClick:N},[e.createElementVNode("span",Wt,e.toDisplayString(e.unref(v)?"收起":"AI 助手"),1)],2)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["chat-panel",{"chat-panel--fullscreen":w.value}])},[e.createElementVNode("div",qt,[e.createElementVNode("div",Gt,[e.createVNode(T,{class:"title-icon"},{default:e.withCtx(()=>[e.createVNode(b)]),_:1}),d[5]||(d[5]=e.createElementVNode("span",null,"AI 智能助手",-1)),e.unref(h)?(e.openBlock(),e.createBlock(F,{key:0,size:"small",type:"success",effect:"plain"},{default:e.withCtx(()=>[...d[3]||(d[3]=[e.createTextVNode("已配置",-1)])]),_:1})):(e.openBlock(),e.createBlock(F,{key:1,size:"small",type:"warning",effect:"plain"},{default:e.withCtx(()=>[...d[4]||(d[4]=[e.createTextVNode("未配置",-1)])]),_:1}))]),e.createElementVNode("div",Yt,[e.createVNode(z,{content:"设置",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(j,{text:"",circle:"",onClick:d[0]||(d[0]=H=>V.value=!0)},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(e.unref(oe))]),_:1})]),_:1})]),_:1}),e.createVNode(z,{content:"清空对话",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(j,{text:"",circle:"",disabled:!e.unref(o).length,onClick:f},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(e.unref(Le))]),_:1})]),_:1},8,["disabled"])]),_:1}),e.createVNode(z,{content:w.value?"退出全屏":"全屏",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(j,{text:"",circle:"",onClick:M},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(e.unref(We))]),_:1})]),_:1})]),_:1},8,["content"]),e.createVNode(z,{content:"关闭",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(j,{text:"",circle:"",onClick:B},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(e.unref(Re))]),_:1})]),_:1})]),_:1})])]),e.createElementVNode("div",{ref_key:"scrollRef",ref:_,class:"chat-panel__body"},[e.unref(o).length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(e.unref(o),H=>(e.openBlock(),e.createBlock(fe,{key:H.id,message:H,"tool-packages":e.unref(a),onExecute:I},null,8,["message","tool-packages"]))),128)):(e.openBlock(),e.createElementBlock("div",Xt,[e.createElementVNode("div",Qt,[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(b)]),_:1})]),d[7]||(d[7]=e.createElementVNode("h3",null,"你好,我是系统 AI 助手",-1)),d[8]||(d[8]=e.createElementVNode("p",{class:"chat-empty__desc"},[e.createTextVNode(" 我可以帮你"),e.createElementVNode("span",{class:"hl"},"查询数据"),e.createTextVNode("、"),e.createElementVNode("span",{class:"hl"},"执行操作"),e.createTextVNode("。试试输入指令: ")],-1)),e.unref(h)?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(j,{key:0,type:"primary",icon:e.unref(oe),onClick:d[1]||(d[1]=H=>V.value=!0)},{default:e.withCtx(()=>[...d[6]||(d[6]=[e.createTextVNode(" 先配置 API Key ",-1)])]),_:1},8,["icon"]))]))],512),e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[e.unref(r)?(e.openBlock(),e.createElementBlock("div",Zt,[e.createVNode(W,{title:e.unref(r),type:"error","show-icon":"",closable:!1},null,8,["title"])])):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",en,[e.unref(l)?(e.openBlock(),e.createElementBlock("div",tn,[e.createVNode(j,{size:"small",icon:e.unref(at),onClick:e.unref(g)},{default:e.withCtx(()=>[...d[9]||(d[9]=[e.createTextVNode("停止生成",-1)])]),_:1},8,["icon","onClick"])])):e.createCommentVNode("",!0),e.createVNode(ge,{loading:e.unref(l),placeholder:e.unref(h)?"输入指令...":"请先配置 API Key",onSend:I},null,8,["loading","placeholder"])]),e.createVNode(he,{modelValue:V.value,"onUpdate:modelValue":d[2]||(d[2]=H=>V.value=H),settings:e.unref(i),"device-id":e.unref($),onSave:S},null,8,["modelValue","settings","device-id"])],2),[[e.vShow,e.unref(v)]])])}}}),on=U(nn,[["__scopeId","data-v-57d202bb"]]);function sn(n){if(typeof n!="string")return n;try{const t=JSON.parse(n);return t!==null&&(typeof t=="object"||Array.isArray(t))?t:n}catch{return n}}const ln=Object.freeze(Object.defineProperty({__proto__:null,parseStringToObject:sn},Symbol.toStringTag,{value:"Module"}));exports.Agent=se;exports.ChatInput=ge;exports.ChatMessageComp=fe;exports.ChatPanel=on;exports.ChatSettingsComp=he;exports.DEFAULT_SETTINGS=X;exports.EventBus=ce;exports.ParseUtils=ln;exports.RenderBlockComp=me;exports.SuggestedNext=pe;exports.ToolRegistry=le;exports.buildSystemPrompt=ie;exports.createDeepSeekProvider=ae;exports.createEventBus=ue;exports.createProxyProvider=re;exports.resolveRenderBlock=Se;exports.useAgentChat=ze;
30
+ ${C}`:"")),await S.sendMessage(u)}function xe(){S.stop()}async function Ce(){if(be(),S.clear(),c.value=[],x.value="",f=null,F(),$.clear(),g.value.providerMode==="proxy")try{const s=Y(g.value.proxyUrl);s&&await fetch(`${s}/api/messages?device_id=${encodeURIComponent(K())}`,{method:"DELETE"})}catch{}else localStorage.removeItem(a.messages)}const Ve=e.computed(()=>g.value.providerMode==="proxy"||!!g.value.apiKey);e.onMounted(()=>{q(),j()});let O=null;function we(){O&&clearTimeout(O),O=setTimeout(()=>{O=null,ye()},400)}function be(){O&&(clearTimeout(O),O=null)}return e.watch(c,()=>we(),{deep:!0}),{messages:c,settings:g,loading:m,errorMsg:x,hasApiKey:Ve,toolPackages:t,fileStore:$,visible:w,eventBus:_,deviceId:K(),sendMessage:Z,stopGeneration:xe,clearMessages:Ce,saveSettings:_e}}/*! Element Plus Icons Vue v2.3.2 */var He=e.defineComponent({name:"ChatDotRound",__name:"chat-dot-round",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.06 461.06 0 0 1-206.912-48.384l-175.616 58.56z"}),e.createElementVNode("path",{fill:"currentColor",d:"M512 563.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4m-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4"})]))}}),je=He,Oe=e.defineComponent({name:"Close",__name:"close",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Re=Oe,Ue=e.defineComponent({name:"Delete",__name:"delete",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),Le=Ue,Ke=e.defineComponent({name:"Document",__name:"document",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),me=Ke,Je=e.defineComponent({name:"FullScreen",__name:"full-screen",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),We=Je,qe=e.defineComponent({name:"InfoFilled",__name:"info-filled",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Ge=qe,Ye=e.defineComponent({name:"Paperclip",__name:"paperclip",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M602.496 240.448A192 192 0 1 1 874.048 512l-316.8 316.8A256 256 0 0 1 195.2 466.752L602.496 59.456l45.248 45.248L240.448 512A192 192 0 0 0 512 783.552l316.8-316.8a128 128 0 1 0-181.056-181.056L353.6 579.904a32 32 0 1 0 45.248 45.248l294.144-294.144 45.312 45.248L444.096 670.4a96 96 0 1 1-135.744-135.744z"})]))}}),Xe=Ye,Qe=e.defineComponent({name:"Picture",__name:"picture",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M160 160v704h704V160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32"}),e.createElementVNode("path",{fill:"currentColor",d:"M384 288q64 0 64 64t-64 64-64-64 64-64M185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952z"})]))}}),Ze=Qe,et=e.defineComponent({name:"Promotion",__name:"promotion",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472zm256 512V657.024L512 768z"})]))}}),tt=et,nt=e.defineComponent({name:"Setting",__name:"setting",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357 357 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a352 352 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357 357 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294 294 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293 293 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294 294 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288 288 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293 293 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a288 288 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256"})]))}}),se=nt,ot=e.defineComponent({name:"UserFilled",__name:"user-filled",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0m544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"})]))}}),st=ot,lt=e.defineComponent({name:"VideoPause",__name:"video-pause",setup(n){return(t,o)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768m-96-544q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32m192 0q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32"})]))}}),at=lt;const rt={class:"render-block"},it={key:0,class:"render-block__title"},ct={key:2,class:"render-block__cards"},ut={class:"card-item"},dt={class:"card-label"},mt={class:"card-value"},pt={key:3,class:"render-block__table"},ft={key:4,class:"render-block__cards"},gt={class:"card-label"},ht={class:"card-value"},vt={key:5,class:"render-block__list"},_t=400,yt=e.defineComponent({__name:"RenderBlock",props:{block:{},resolvedComponent:{}},emits:["select"],setup(n,{emit:t}){const o=n,i=t,l=e.computed(()=>o.block.data||{}),r=e.computed(()=>o.block.selectable&&h.value.length>1),h=e.computed(()=>Array.isArray(l.value)?l.value:l.value.list?Array.isArray(l.value.list)?l.value.list:[]:l.value.items?Array.isArray(l.value.items)?l.value.items:[]:[l.value]),v=e.computed(()=>{var m;return h.value.length?(m=o.block.fields)!=null&&m.length?o.block.fields:Object.keys(h.value[0]):[]}),a=e.computed(()=>100);function c(m){return typeof m=="string"?m:Object.values(m).join(" - ")}function g(m){var $;const x=(o.block.labelField&&(m==null?void 0:m[o.block.labelField])!=null?m[o.block.labelField]:($=o.block.fields)!=null&&$.length?m==null?void 0:m[o.block.fields[0]]:(m==null?void 0:m.name)??(m==null?void 0:m.title)??(m==null?void 0:m.id)??Object.values(m??{})[0])??"";i("select",`我选择 ${x}`)}return(m,x)=>{const $=e.resolveComponent("el-button");return e.openBlock(),e.createElementBlock("div",rt,[n.block.title?(e.openBlock(),e.createElementBlock("div",it,e.toDisplayString(n.block.title),1)):e.createCommentVNode("",!0),n.resolvedComponent?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.resolvedComponent),{key:1,class:"render-block__component",data:n.block.data},null,8,["data"])):n.block.type==="component"?(e.openBlock(),e.createElementBlock("div",ct,[e.createElementVNode("div",ut,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value[0],(w,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:"card-field"},[e.createElementVNode("span",dt,e.toDisplayString(V)+":",1),e.createElementVNode("span",mt,e.toDisplayString(w),1)]))),128))])])):n.block.type==="table"?(e.openBlock(),e.createElementBlock("div",pt,[e.createVNode(e.unref(J.ElTable),{data:h.value,"max-height":_t,border:"",stripe:"",size:"small","table-layout":"fixed",style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,w=>(e.openBlock(),e.createBlock(e.unref(J.ElTableColumn),{key:w,prop:w,label:w,width:a.value,align:"center","show-overflow-tooltip":""},null,8,["prop","label","width"]))),128)),r.value?(e.openBlock(),e.createBlock(e.unref(J.ElTableColumn),{key:0,label:"操作",width:80,align:"center",fixed:"right"},{default:e.withCtx(({row:w})=>[e.createVNode($,{size:"small",type:"primary",plain:"",onClick:V=>g(w)},{default:e.withCtx(()=>[...x[0]||(x[0]=[e.createTextVNode(" 选择 ",-1)])]),_:1},8,["onClick"])]),_:1})):e.createCommentVNode("",!0)]),_:1},8,["data"])])):n.block.type==="card"?(e.openBlock(),e.createElementBlock("div",ft,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(w,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:"card-item"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w,(_,N)=>(e.openBlock(),e.createElementBlock("div",{key:N,class:"card-field"},[e.createElementVNode("span",gt,e.toDisplayString(N)+":",1),e.createElementVNode("span",ht,e.toDisplayString(_),1)]))),128))]))),128))])):n.block.type==="list"?(e.openBlock(),e.createElementBlock("div",vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(w,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:"list-item"},e.toDisplayString(c(w)),1))),128))])):e.createCommentVNode("",!0)])}}}),U=(n,t)=>{const o=n.__vccOpts||n;for(const[i,l]of t)o[i]=l;return o},pe=U(yt,[["__scopeId","data-v-0cb2fd61"]]),kt={key:0,class:"suggested-next"},xt={class:"suggested-next__text"},Ct=e.defineComponent({__name:"SuggestedNext",props:{text:{}},emits:["execute"],setup(n,{emit:t}){const o=n,i=t;function l(){i("execute",o.text)}return(r,h)=>{const v=e.resolveComponent("el-button");return n.text?(e.openBlock(),e.createElementBlock("div",kt,[h[1]||(h[1]=e.createElementVNode("span",{class:"suggested-next__icon"},"💡",-1)),e.createElementVNode("span",xt,e.toDisplayString(n.text),1),e.createVNode(v,{size:"small",type:"primary",plain:"",onClick:l},{default:e.withCtx(()=>[...h[0]||(h[0]=[e.createTextVNode("去执行",-1)])]),_:1})])):e.createCommentVNode("",!0)}}}),fe=U(Ct,[["__scopeId","data-v-0e0e9b65"]]),Vt={class:"message-avatar"},wt={class:"message-body"},bt={key:0,class:"message-files"},Nt=["src","alt"],Bt={class:"file-info"},Et={class:"file-name"},$t={class:"file-size"},St={key:1,class:"message-user-text"},Tt={key:0,class:"message-reasoning"},Mt=["innerHTML"],It={key:3,class:"message-cursor"},At={key:4,class:"message-error"},Pt=e.defineComponent({__name:"ChatMessage",props:{message:{},toolPackages:{}},emits:["execute"],setup(n,{emit:t}){const o=n,i=t;function l(a){if(!a)return"";let c=a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return c=c.replace(/`([^`]+)`/g,"<code>$1</code>"),c=c.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),c=c.replace(/\*([^*]+)\*/g,"<em>$1</em>"),c=c.replace(/\n/g,"<br>"),c}const r=e.computed(()=>l(o.message.content));function h(a){var g;if(a.type!=="component"||!a.componentName)return null;let c=a.packageId?o.toolPackages.find(m=>m.id===a.packageId):null;return c||(c=o.toolPackages.find(m=>m.components&&a.componentName in m.components)),c||(c=o.toolPackages[o.toolPackages.length-1]),c&&((g=c.components)==null?void 0:g[a.componentName])||null}function v(a){i("execute",a)}return(a,c)=>{var m;const g=e.resolveComponent("el-icon");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["chat-message",[`role-${n.message.role}`,{"is-streaming":n.message.status==="streaming"}]])},[e.createElementVNode("div",Vt,[n.message.role==="user"?(e.openBlock(),e.createBlock(g,{key:0},{default:e.withCtx(()=>[e.createVNode(e.unref(st))]),_:1})):(e.openBlock(),e.createBlock(g,{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(je))]),_:1}))]),e.createElementVNode("div",wt,[(m=n.message.files)!=null&&m.length?(e.openBlock(),e.createElementBlock("div",bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.message.files,(x,$)=>(e.openBlock(),e.createElementBlock("div",{key:$,class:e.normalizeClass(["message-file",{"is-image":x.type.startsWith("image/")}])},[x.type.startsWith("image/")?(e.openBlock(),e.createElementBlock("img",{key:0,src:x.data,alt:x.name,class:"file-image"},null,8,Nt)):(e.openBlock(),e.createBlock(g,{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(me))]),_:1})),e.createElementVNode("div",Bt,[e.createElementVNode("span",Et,e.toDisplayString(x.name),1),e.createElementVNode("span",$t,e.toDisplayString((x.size/1024).toFixed(1))+" KB",1)])],2))),128))])):e.createCommentVNode("",!0),n.message.role==="user"?(e.openBlock(),e.createElementBlock("div",St,e.toDisplayString(n.message.content),1)):e.createCommentVNode("",!0),n.message.role==="assistant"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[n.message.reasoning?(e.openBlock(),e.createElementBlock("div",Tt,[e.createElementVNode("details",null,[c[0]||(c[0]=e.createElementVNode("summary",null,"推理过程",-1)),e.createElementVNode("pre",null,e.toDisplayString(n.message.reasoning),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"message-content markdown-body",innerHTML:r.value},null,8,Mt),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.message.renderBlocks,(x,$)=>(e.openBlock(),e.createBlock(pe,{key:$,block:x,"resolved-component":h(x),onSelect:v},null,8,["block","resolved-component"]))),128)),n.message.suggestedNext?(e.openBlock(),e.createBlock(fe,{key:1,text:n.message.suggestedNext,onExecute:v},null,8,["text"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),n.message.status==="streaming"?(e.openBlock(),e.createElementBlock("div",It,"▍")):e.createCommentVNode("",!0),n.message.status==="error"?(e.openBlock(),e.createElementBlock("div",At,e.toDisplayString(n.message.error),1)):e.createCommentVNode("",!0)])],2)}}}),ge=U(Pt,[["__scopeId","data-v-af392c78"]]),Dt={class:"chat-input"},Ft={key:0,class:"chat-input__files"},zt={class:"chat-input__wrap"},Ht={class:"chat-input__actions"},jt=e.defineComponent({__name:"ChatInput",props:{loading:{type:Boolean},disabled:{type:Boolean},placeholder:{}},emits:["send"],setup(n,{emit:t}){const o=n,i=t,l=e.ref(""),r=e.ref([]),h=e.ref(null),v=e.computed(()=>(l.value.trim().length>0||r.value.length>0)&&!o.disabled);function a(){var _;(_=h.value)==null||_.click()}const c=new Set(["text/plain","text/html","text/css","text/javascript","text/typescript","text/markdown","text/csv","text/xml","application/json","application/xml","application/javascript","application/typescript","application/yaml","application/x-yaml"]);function g(_){var N;if(_.type.startsWith("text/")||c.has(_.type))return!0;if(_.type===""||_.type.startsWith("application/")){const B=(N=_.name.split(".").pop())==null?void 0:N.toLowerCase();return new Set(["txt","md","json","geojson","xml","yml","yaml","csv","ts","js","tsx","jsx","vue","html","css","scss","less","sh","bat","ps1","py","java","c","cpp","h","hpp","go","rs","rb","php","sql","toml","ini","cfg","conf","log","env","gitignore","dockerfile","wkt","wkb","kml","gpx","geojson","topojson","xlsx","docx"]).has(B??"")}return!1}function m(_){return new Promise(N=>{const B=new FileReader;B.onload=()=>{N({id:"",name:_.name,size:_.size,type:_.type,data:B.result})},g(_)?B.readAsText(_):B.readAsDataURL(_)})}async function x(_){var B;const N=_.target;if((B=N.files)!=null&&B.length){for(const M of Array.from(N.files)){const P=await m(M);r.value.push(P)}N.value=""}}function $(_){r.value.splice(_,1)}function w(_){_.shiftKey||(_.preventDefault(),V())}function V(){if(!v.value||o.loading)return;const _=l.value.trim();i("send",_,r.value),l.value="",r.value=[]}return(_,N)=>{const B=e.resolveComponent("el-icon"),M=e.resolveComponent("el-tag"),P=e.resolveComponent("el-input"),I=e.resolveComponent("el-button"),S=e.resolveComponent("el-tooltip");return e.openBlock(),e.createElementBlock("div",Dt,[r.value.length?(e.openBlock(),e.createElementBlock("div",Ft,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(f,p)=>(e.openBlock(),e.createBlock(M,{key:p,closable:"",size:"small",type:f.type.startsWith("image/")?"success":"info",onClose:d=>$(p)},{default:e.withCtx(()=>[f.type.startsWith("image/")?(e.openBlock(),e.createBlock(B,{key:0,style:{"margin-right":"4px"}},{default:e.withCtx(()=>[e.createVNode(e.unref(Ze))]),_:1})):(e.openBlock(),e.createBlock(B,{key:1,style:{"margin-right":"4px"}},{default:e.withCtx(()=>[e.createVNode(e.unref(me))]),_:1})),e.createTextVNode(" "+e.toDisplayString(f.name),1)]),_:2},1032,["type","onClose"]))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",zt,[e.createVNode(P,{modelValue:l.value,"onUpdate:modelValue":N[0]||(N[0]=f=>l.value=f),type:"textarea",autosize:{minRows:1,maxRows:6},resize:"none",placeholder:n.placeholder,onKeydown:e.withKeys(w,["enter"])},null,8,["modelValue","placeholder"]),e.createElementVNode("div",Ht,[e.createVNode(S,{content:"上传文件",placement:"top"},{default:e.withCtx(()=>[e.createVNode(I,{text:"",circle:"",onClick:a},{default:e.withCtx(()=>[e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(e.unref(Xe))]),_:1})]),_:1})]),_:1}),e.createElementVNode("input",{ref_key:"fileInputRef",ref:h,type:"file",multiple:"",hidden:"",onChange:x},null,544),e.createVNode(S,{content:"Enter 发送,Shift+Enter 换行",placement:"top"},{default:e.withCtx(()=>[e.createVNode(I,{type:"primary",icon:e.unref(tt),loading:n.loading,disabled:!v.value,circle:"",onClick:V},null,8,["icon","loading","disabled"])]),_:1})])])])}}}),he=U(jt,[["__scopeId","data-v-8fcb870c"]]),Ot=[{label:"deepseek-chat (V3 最强)",value:"deepseek-chat"},{label:"deepseek-reasoner (R1 推理)",value:"deepseek-reasoner"}],Rt={class:"form-tip"},Ut={class:"temp-row"},Lt={class:"temp-val"},Kt=e.defineComponent({__name:"ChatSettings",props:{modelValue:{type:Boolean},settings:{},deviceId:{}},emits:["update:modelValue","save"],setup(n,{emit:t}){const o=n,i=t,l=e.ref(o.modelValue);e.watch(()=>o.modelValue,v=>{l.value=v,v&&(r.value={...o.settings})}),e.watch(l,v=>i("update:modelValue",v));const r=e.ref({...o.settings});function h(){i("save",{...r.value}),l.value=!1}return(v,a)=>{const c=e.resolveComponent("el-radio"),g=e.resolveComponent("el-radio-group"),m=e.resolveComponent("el-form-item"),x=e.resolveComponent("el-input"),$=e.resolveComponent("el-link"),w=e.resolveComponent("el-option"),V=e.resolveComponent("el-select"),_=e.resolveComponent("el-slider"),N=e.resolveComponent("el-icon"),B=e.resolveComponent("el-tooltip"),M=e.resolveComponent("el-switch"),P=e.resolveComponent("el-form"),I=e.resolveComponent("el-button"),S=e.resolveComponent("el-dialog");return e.openBlock(),e.createBlock(S,{modelValue:l.value,"onUpdate:modelValue":a[8]||(a[8]=f=>l.value=f),title:"AI 助手设置",width:"520px","append-to-body":""},{footer:e.withCtx(()=>[e.createVNode(I,{onClick:a[7]||(a[7]=f=>l.value=!1)},{default:e.withCtx(()=>[...a[17]||(a[17]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(I,{type:"primary",onClick:h},{default:e.withCtx(()=>[...a[18]||(a[18]=[e.createTextVNode("保存",-1)])]),_:1})]),default:e.withCtx(()=>[e.createVNode(P,{model:r.value,"label-width":"110px","label-position":"right"},{default:e.withCtx(()=>[e.createVNode(m,{label:"调用模式"},{default:e.withCtx(()=>[e.createVNode(g,{modelValue:r.value.providerMode,"onUpdate:modelValue":a[0]||(a[0]=f=>r.value.providerMode=f)},{default:e.withCtx(()=>[e.createVNode(c,{value:"direct"},{default:e.withCtx(()=>[...a[9]||(a[9]=[e.createTextVNode("前端直连",-1)])]),_:1}),e.createVNode(c,{value:"proxy"},{default:e.withCtx(()=>[...a[10]||(a[10]=[e.createTextVNode("后端代理",-1)])]),_:1})]),_:1},8,["modelValue"]),a[11]||(a[11]=e.createElementVNode("div",{class:"form-tip"}," 前端直连:API Key 保存在浏览器本地,浏览器直接调用模型 API。 后端代理:由你的后端转发请求,API Key 保存在服务端。 ",-1))]),_:1}),r.value.providerMode==="direct"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(m,{label:"API Key"},{default:e.withCtx(()=>[e.createVNode(x,{modelValue:r.value.apiKey,"onUpdate:modelValue":a[1]||(a[1]=f=>r.value.apiKey=f),type:"password","show-password":"",placeholder:"sk-xxxxxxxxxxxxxxxx",clearable:""},null,8,["modelValue"]),e.createElementVNode("div",Rt,[a[13]||(a[13]=e.createTextVNode(" 在 ",-1)),e.createVNode($,{type:"primary",href:"https://platform.deepseek.com/api_keys",target:"_blank"},{default:e.withCtx(()=>[...a[12]||(a[12]=[e.createTextVNode(" DeepSeek 开放平台 ",-1)])]),_:1}),a[14]||(a[14]=e.createTextVNode(" 获取,仅保存在浏览器本地。 ",-1))])]),_:1}),e.createVNode(m,{label:"接口地址"},{default:e.withCtx(()=>[e.createVNode(x,{modelValue:r.value.baseUrl,"onUpdate:modelValue":a[2]||(a[2]=f=>r.value.baseUrl=f),placeholder:"https://api.deepseek.com",clearable:""},null,8,["modelValue"])]),_:1})],64)):(e.openBlock(),e.createBlock(m,{key:1,label:"代理地址"},{default:e.withCtx(()=>[e.createVNode(x,{modelValue:r.value.proxyUrl,"onUpdate:modelValue":a[3]||(a[3]=f=>r.value.proxyUrl=f),placeholder:"http://localhost:3001/api/chat",clearable:""},null,8,["modelValue"]),a[15]||(a[15]=e.createElementVNode("div",{class:"form-tip"}," 你的后端代理服务地址,API Key 配置在服务端环境变量中。 ",-1))]),_:1})),e.createVNode(m,{label:"模型"},{default:e.withCtx(()=>[e.createVNode(V,{modelValue:r.value.model,"onUpdate:modelValue":a[4]||(a[4]=f=>r.value.model=f),style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Ot),f=>(e.openBlock(),e.createBlock(w,{key:f.value,label:f.label,value:f.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e.createVNode(m,{label:"温度"},{default:e.withCtx(()=>[e.createElementVNode("div",Ut,[e.createVNode(_,{modelValue:r.value.temperature,"onUpdate:modelValue":a[5]||(a[5]=f=>r.value.temperature=f),min:0,max:2,step:.1,style:{flex:"1"}},null,8,["modelValue"]),e.createElementVNode("span",Lt,e.toDisplayString(r.value.temperature.toFixed(1)),1)])]),_:1}),e.createVNode(m,{label:"设备ID"},{default:e.withCtx(()=>[e.createVNode(x,{"model-value":n.deviceId,readonly:""},{append:e.withCtx(()=>[e.createVNode(B,{content:"该 ID 用于在服务端区分当前浏览器会话,历史消息按此 ID 保存"},{default:e.withCtx(()=>[e.createVNode(N,null,{default:e.withCtx(()=>[e.createVNode(e.unref(Ge))]),_:1})]),_:1})]),_:1},8,["model-value"])]),_:1}),e.createVNode(m,{label:"启用工具"},{default:e.withCtx(()=>[e.createVNode(M,{modelValue:r.value.useTools,"onUpdate:modelValue":a[6]||(a[6]=f=>r.value.useTools=f)},null,8,["modelValue"]),a[16]||(a[16]=e.createElementVNode("span",{class:"form-tip-inline"},"关闭后助手仅对话,不会执行页面导航/数据查询等操作",-1))]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])}}}),ve=U(Kt,[["__scopeId","data-v-9634bbdc"]]),Jt={class:"chat-panel-root"},Wt={class:"ai-fab__label"},qt={class:"chat-panel__header"},Gt={class:"chat-panel__title"},Yt={class:"chat-panel__ops"},Xt={key:0,class:"chat-empty"},Qt={class:"chat-empty__logo"},Zt={key:0,class:"chat-panel__error"},en={class:"chat-panel__footer"},tn={key:0,class:"chat-panel__stop"},nn=e.defineComponent({__name:"ChatPanel",props:{chat:{},showFab:{type:Boolean,default:!0}},setup(n){const t=n,{messages:o,settings:i,loading:l,errorMsg:r,hasApiKey:h,visible:v,toolPackages:a,sendMessage:c,stopGeneration:g,clearMessages:m,saveSettings:x,deviceId:$}=t.chat,w=e.ref(!1),V=e.ref(!1),_=e.ref(null);function N(){v.value=!v.value}function B(){v.value=!1}function M(){V.value=!V.value}function P(){e.nextTick(()=>{const p=_.value;p&&(p.scrollTop=p.scrollHeight)})}function I(p,d){c(p,d),P()}function S(p){x(p)}function f(){J.ElMessageBox.confirm("确定要清空所有对话记录吗?","提示",{type:"warning",confirmButtonText:"清空",cancelButtonText:"取消"}).then(()=>{m()}).catch(()=>{})}return e.watch(()=>o.value.map(p=>{var d;return p.content+p.status+(((d=p.renderBlocks)==null?void 0:d.length)||0)}).join("|"),()=>P()),(p,d)=>{const b=e.resolveComponent("ChatDotRound"),T=e.resolveComponent("el-icon"),F=e.resolveComponent("el-tag"),H=e.resolveComponent("el-button"),z=e.resolveComponent("el-tooltip"),q=e.resolveComponent("SemiSelect"),L=e.resolveComponent("el-alert");return e.openBlock(),e.createElementBlock("div",Jt,[n.showFab?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ai-fab",{"ai-fab--active":e.unref(v)}]),onClick:N},[e.createElementVNode("span",Wt,e.toDisplayString(e.unref(v)?"收起":"AI 助手"),1)],2)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["chat-panel",{"chat-panel--fullscreen":V.value}])},[e.createElementVNode("div",qt,[e.createElementVNode("div",Gt,[e.createVNode(T,{class:"title-icon"},{default:e.withCtx(()=>[e.createVNode(b)]),_:1}),d[5]||(d[5]=e.createElementVNode("span",null,"AI 智能助手",-1)),e.unref(h)?(e.openBlock(),e.createBlock(F,{key:0,size:"small",type:"success",effect:"plain"},{default:e.withCtx(()=>[...d[3]||(d[3]=[e.createTextVNode("已配置",-1)])]),_:1})):(e.openBlock(),e.createBlock(F,{key:1,size:"small",type:"warning",effect:"plain"},{default:e.withCtx(()=>[...d[4]||(d[4]=[e.createTextVNode("未配置",-1)])]),_:1}))]),e.createElementVNode("div",Yt,[e.createVNode(z,{content:"设置",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(H,{text:"",circle:"",onClick:d[0]||(d[0]=j=>w.value=!0)},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(e.unref(se))]),_:1})]),_:1})]),_:1}),e.createVNode(z,{content:"清空对话",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(H,{text:"",circle:"",disabled:!e.unref(o).length,onClick:f},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(e.unref(Le))]),_:1})]),_:1},8,["disabled"])]),_:1}),e.createVNode(z,{content:V.value?"退出全屏":"全屏",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(H,{text:"",circle:"",onClick:M},{default:e.withCtx(()=>[V.value?(e.openBlock(),e.createBlock(T,{key:1},{default:e.withCtx(()=>[e.createVNode(q)]),_:1})):(e.openBlock(),e.createBlock(T,{key:0},{default:e.withCtx(()=>[e.createVNode(e.unref(We))]),_:1}))]),_:1})]),_:1},8,["content"]),e.createVNode(z,{content:"关闭",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(H,{text:"",circle:"",onClick:B},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(e.unref(Re))]),_:1})]),_:1})]),_:1})])]),e.createElementVNode("div",{ref_key:"scrollRef",ref:_,class:"chat-panel__body"},[e.unref(o).length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(e.unref(o),j=>(e.openBlock(),e.createBlock(ge,{key:j.id,message:j,"tool-packages":e.unref(a),onExecute:I},null,8,["message","tool-packages"]))),128)):(e.openBlock(),e.createElementBlock("div",Xt,[e.createElementVNode("div",Qt,[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(b)]),_:1})]),d[7]||(d[7]=e.createElementVNode("h3",null,"你好,我是系统 AI 助手",-1)),d[8]||(d[8]=e.createElementVNode("p",{class:"chat-empty__desc"},[e.createTextVNode(" 我可以帮你"),e.createElementVNode("span",{class:"hl"},"查询数据"),e.createTextVNode("、"),e.createElementVNode("span",{class:"hl"},"执行操作"),e.createTextVNode("。试试输入指令: ")],-1)),e.unref(h)?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(H,{key:0,type:"primary",icon:e.unref(se),onClick:d[1]||(d[1]=j=>w.value=!0)},{default:e.withCtx(()=>[...d[6]||(d[6]=[e.createTextVNode(" 先配置 API Key ",-1)])]),_:1},8,["icon"]))]))],512),e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[e.unref(r)?(e.openBlock(),e.createElementBlock("div",Zt,[e.createVNode(L,{title:e.unref(r),type:"error","show-icon":"",closable:!1},null,8,["title"])])):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",en,[e.unref(l)?(e.openBlock(),e.createElementBlock("div",tn,[e.createVNode(H,{size:"small",icon:e.unref(at),onClick:e.unref(g)},{default:e.withCtx(()=>[...d[9]||(d[9]=[e.createTextVNode("停止生成",-1)])]),_:1},8,["icon","onClick"])])):e.createCommentVNode("",!0),e.createVNode(he,{loading:e.unref(l),placeholder:e.unref(h)?"输入指令...":"请先配置 API Key",onSend:I},null,8,["loading","placeholder"])]),e.createVNode(ve,{modelValue:w.value,"onUpdate:modelValue":d[2]||(d[2]=j=>w.value=j),settings:e.unref(i),"device-id":e.unref($),onSave:S},null,8,["modelValue","settings","device-id"])],2),[[e.vShow,e.unref(v)]])])}}}),on=U(nn,[["__scopeId","data-v-d36abbf3"]]);function sn(n){if(typeof n!="string")return n;try{const t=JSON.parse(n);return t!==null&&(typeof t=="object"||Array.isArray(t))?t:n}catch{return n}}const ln=Object.freeze(Object.defineProperty({__proto__:null,parseStringToObject:sn},Symbol.toStringTag,{value:"Module"}));exports.Agent=le;exports.ChatInput=he;exports.ChatMessageComp=ge;exports.ChatPanel=on;exports.ChatSettingsComp=ve;exports.DEFAULT_SETTINGS=Q;exports.EventBus=ue;exports.ParseUtils=ln;exports.RenderBlockComp=pe;exports.SuggestedNext=fe;exports.ToolRegistry=ae;exports.buildSystemPrompt=ce;exports.createDeepSeekProvider=re;exports.createEventBus=de;exports.createProxyProvider=ie;exports.resolveRenderBlock=Se;exports.useAgentChat=ze;