agent-tool-chat 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,29 +1,30 @@
1
- "use strict";var te=Object.defineProperty;var ne=(n,t,o)=>t in n?te(n,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[t]=o;var I=(n,t,o)=>(ne(n,typeof t!="symbol"?t+"":t,o),o);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),oe=require("element-plus");class U{constructor(t){I(this,"messages",[]);I(this,"config");I(this,"listeners",new Set);I(this,"abortController",null);I(this,"_loading",!1);var o;this.config={...t,maxToolRounds:(o=t.maxToolRounds)!=null?o: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 c;const o=t.trim();if(!o||this._loading)return;this._loading=!0,this.abortController=new AbortController,this.emit({type:"status",loading:!0});const d={role:"user",content:o};this.messages.push(d),this.emit({type:"message",message:d});try{let u=0;const m=this.config.maxToolRounds;for(;u<m;){u++;const h={role:"assistant",content:""};this.messages.push(h),this.emit({type:"message",message:h});const a=this.buildApiMessages(),s=await this.config.provider.streamChat({config:this.config.providerConfig,messages:a,tools:this.config.tools.getDefinitions(),signal:this.abortController.signal,onContent:p=>{h.content+=p,this.emit({type:"stream:delta",delta:{content:p}})},onReasoning:p=>{this.emit({type:"stream:delta",delta:{reasoning:p}})}});if(h.content=s.content,this.emit({type:"stream:end",content:s.content,reasoning:s.reasoning}),s.tool_calls.length>0){h.tool_calls=s.tool_calls;for(const p of s.tool_calls){this.emit({type:"tool:start",call:p});const _=await this.config.tools.execute(p.function.name,p.function.arguments);this.emit({type:"tool:end",call:p,output:_}),this.messages.push({role:"tool",tool_call_id:p.id,content:_.result,name:p.function.name})}continue}break}await((c=this.config.storage)==null?void 0:c.save(this.messages))}catch(u){if((u==null?void 0:u.name)!=="AbortError")this.emit({type:"error",error:(u==null?void 0:u.message)||"\u8BF7\u6C42\u51FA\u9519"});else{const m=this.messages[this.messages.length-1];(m==null?void 0:m.role)==="assistant"&&!m.content&&(m.content="\uFF08\u5DF2\u505C\u6B62\u751F\u6210\uFF09")}}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,d=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},...d]:[...d]}}class O{constructor(){I(this,"_definitions",[]);I(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 d=this._handlers.get(t);if(!d)return{success:!1,result:`\u672A\u77E5\u5DE5\u5177\uFF1A${t}`};try{const c=o?JSON.parse(o):{};return await d(c)}catch(c){return{success:!1,result:`\u5DE5\u5177\u6267\u884C\u5F02\u5E38\uFF1A${(c==null?void 0:c.message)||String(c)}`}}}}function se(n){let t=n.trim().replace(/\/+$/,"");return t=t.replace(/\/v1$/,""),t}function J(){return{async streamChat(n){var D;const{config:{baseUrl:t,apiKey:o,model:d,temperature:c},messages:u,tools:m,signal:h,onContent:a,onReasoning:s}=n;if(!o)throw new Error("\u672A\u914D\u7F6E API Key");const p=`${se(t)}/chat/completions`,_={model:d,messages:u,stream:!0};typeof c=="number"&&(_.temperature=c),m!=null&&m.length&&(_.tools=m,_.tool_choice="auto");const E=await fetch(p,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify(_),signal:h});if(!E.ok||!E.body){let v=`\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${E.status}\uFF09`;try{const V=await E.json();(D=V==null?void 0:V.error)!=null&&D.message&&(v=V.error.message)}catch{}throw new Error(v)}const w=E.body.getReader(),$=new TextDecoder("utf-8");let N="",g="",F="",f="stop";const i=new Map,A=v=>{var b;if(!v)return;const V=(b=v.index)!=null?b:0;i.has(V)||i.set(V,{id:"",type:"function",function:{name:"",arguments:""}});const C=i.get(V);v.id&&(C.id=v.id),v.type&&(C.type=v.type),v.function&&(v.function.name&&(C.function.name+=v.function.name),v.function.arguments&&(C.function.arguments+=v.function.arguments))},S=v=>{var b;const V=(b=v==null?void 0:v.choices)==null?void 0:b[0];if(!V)return;const C=V.delta||{};typeof C.content=="string"&&C.content&&(g+=C.content,a==null||a(C.content)),typeof C.reasoning_content=="string"&&C.reasoning_content&&(F+=C.reasoning_content,s==null||s(C.reasoning_content)),Array.isArray(C.tool_calls)&&C.tool_calls.forEach(M=>A(M)),V.finish_reason&&(f=V.finish_reason)};for(;;){const{done:v,value:V}=await w.read();if(v)break;N+=$.decode(V,{stream:!0});let C;for(;(C=N.indexOf(`
2
- `))!==-1;){const b=N.slice(0,C).replace(/\r$/,"").trim();if(N=N.slice(C+1),!b||b.startsWith(":")||!b.startsWith("data:"))continue;const M=b.slice(5).trim();if(M==="[DONE]")return T();try{S(JSON.parse(M))}catch{}}}return T();function T(){const v=Array.from(i.values()).filter(V=>V.function.name);return{content:g,reasoning:F,tool_calls:v,finish_reason:f}}}}}function ae(n){var o,d,c,u,m;const t=[];return(o=n.displayHints)!=null&&o.suggestComponent&&t.push(`\u5C55\u793A\u5EFA\u8BAE: \u4F7F\u7528 ${n.displayHints.suggestComponent} \u7EC4\u4EF6`),(d=n.displayHints)!=null&&d.resultFormat&&t.push(`\u683C\u5F0F: ${n.displayHints.resultFormat}`),(u=(c=n.displayHints)==null?void 0:c.previewFields)!=null&&u.length&&t.push(`\u9884\u89C8\u5B57\u6BB5: ${n.displayHints.previewFields.join(", ")}`),(m=n.displayHints)!=null&&m.summaryTemplate&&t.push(`\u6982\u8981\u6A21\u677F: ${n.displayHints.summaryTemplate}`),t.length?t.join(" | "):""}function W(n){const t=["\u4F60\u662F\u4E00\u4E2A AI \u52A9\u624B\uFF0C\u53EF\u4EE5\u5E2E\u52A9\u7528\u6237\u5B8C\u6210\u5404\u79CD\u64CD\u4F5C\u3002","","\u4F60\u53EF\u4EE5\u4F7F\u7528\u4EE5\u4E0B\u5DE5\u5177\u5305\uFF1A",""];for(const o of n){t.push(`\u3010${o.name}\u3011${o.description}`);for(const d of o.tools){const c=ae(d);t.push(` - ${d.name}: ${d.description}`),c&&t.push(` ${c}`)}t.push("")}return t.push("\u6CE8\u610F\uFF1A"),t.push("1. \u5F53\u4F60\u9700\u8981\u67E5\u8BE2\u6216\u64CD\u4F5C\u6570\u636E\u65F6\uFF0C\u8C03\u7528\u5BF9\u5E94\u5DE5\u5177\u5305\u4E2D\u7684\u51FD\u6570\u3002"),t.push("2. \u5DE5\u5177\u51FD\u6570\u7531\u5BBF\u4E3B\u7CFB\u7EDF\u6267\u884C\uFF0C\u4F60\u53EA\u9700\u8981\u4F20\u9012\u6B63\u786E\u7684\u53C2\u6570\u3002"),t.push("3. \u83B7\u53D6\u5230\u5DE5\u5177\u7ED3\u679C\u540E\uFF0C\u56DE\u590D\u7528\u6237\u5E76\u544A\u77E5\u7ED3\u679C\u3002"),t.push("4. \u5982\u679C\u5DE5\u5177\u8FD4\u56DE\u4E86\u7ED3\u6784\u5316\u6570\u636E\uFF08\u5982\u8BA2\u5355\u4FE1\u606F\u3001\u7CFB\u7EDF\u72B6\u6001\u7B49\uFF09\uFF0C\u5728\u56DE\u590D\u4E2D\u6E05\u6670\u5730\u5C55\u793A\u7ED9\u7528\u6237\u3002"),t.push("5. \u6839\u636E\u7ED3\u679C\u52A8\u6001\u5EFA\u8BAE\u7528\u6237\u63A5\u4E0B\u6765\u53EF\u4EE5\u505A\u4EC0\u4E48\u3002"),t.push("6. \u5982\u679C\u7528\u6237\u4E0A\u4F20\u4E86\u6587\u4EF6\uFF0C\u6587\u4EF6\u683C\u5F0F\u4E3A\uFF08.txt\u3001.json\u3001.geojson\u7B49\u683C\u5F0F\uFF09\uFF0C\u4F60\u5FC5\u987B\u8C03\u7528 open_mapview_file \u5DE5\u5177\u5728\u5730\u56FE\u4E0A\u5C55\u793A\uFF0C\u4E0D\u8981\u53EA\u56DE\u590D\u6587\u5B57\u3002"),t.push(""),t.push("--- \u6587\u4EF6\u4E0A\u4F20\u89C4\u5219 ---"),t.push("\u7528\u6237\u53EF\u80FD\u4E0A\u4F20\u6587\u4EF6\uFF0C\u6587\u4EF6\u4EE5\u5982\u4E0B\u683C\u5F0F\u51FA\u73B0\u5728\u6D88\u606F\u4E2D\uFF1A"),t.push("[Uploaded file: fileId] \u6587\u4EF6\u540D (\u7C7B\u578B, \u5927\u5C0FKB)"),t.push("\u4F60\u65E0\u6CD5\u67E5\u770B\u6587\u4EF6\u5185\u5BB9\uFF0C\u53EA\u80FD\u770B\u5230\u6587\u4EF6\u540D\u548C\u7C7B\u578B\u3002"),t.push("\u4F60\u5FC5\u987B\u6839\u636E\u6587\u4EF6\u540D\u3001\u6269\u5C55\u540D\u548C\u7528\u6237\u7684\u6587\u5B57\u6307\u4EE4\uFF0C\u8C03\u7528\u5BF9\u5E94\u7684\u5DE5\u5177\u6765\u5904\u7406\u6587\u4EF6\u3002"),t.push("\u5982\u679C\u67D0\u4E2A\u5DE5\u5177\u9700\u8981\u5904\u7406\u8BE5\u6587\u4EF6\uFF0C\u5728\u5DE5\u5177\u53C2\u6570\u4E2D\u4F20\u5165 fileId\u3002"),t.push('\u4E0D\u8981\u56DE\u590D\u5047\u6027\u6210\u529F\u6D88\u606F\uFF08\u5982"\u5DF2\u5728\u5730\u56FE\u4E0A\u663E\u793A"\uFF09\uFF0C\u5982\u679C\u4E0D\u8C03\u7528\u5DE5\u5177\uFF0C\u6587\u4EF6\u4E0D\u4F1A\u88AB\u5B9E\u9645\u5904\u7406\u3002'),t.push("\u4E0D\u8981\u7F16\u9020\u6587\u4EF6\u5185\u5BB9\uFF0C\u4E0D\u8981\u5047\u88C5\u4F60\u770B\u5230\u4E86\u6587\u4EF6\u6570\u636E\u3002"),t.join(`
3
- `)}const j={apiKey:"",baseUrl:"https://api.deepseek.com",model:"deepseek-chat",temperature:0};function le(n){return{type:"function",function:{name:n.name,description:n.description,parameters:n.parameters}}}function R(){return`m_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function H(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 d of o.toolResults)t.push({role:"tool",tool_call_id:d.callId,content:d.result,name:d.name});return t}function ue(n){const{toolPackages:t,onToolCall:o,provider:d,providerConfig:c,systemPrompt:u,storagePrefix:m="agent_chat_",sendFileToLLM:h=!1}=n,a={messages:`${m}messages`,settings:`${m}settings`},s=e.ref([]),p=e.ref({...j}),_=e.ref(!1),E=e.ref(""),w=new Map,$=new O;for(const r of t)for(const k of r.tools){const B=le(k);$.register(B,async l=>{const y={packageId:r.id,toolName:k.name,args:l};return await f(y,r,k)})}const N=d||J(),g=new U({provider:N,providerConfig:{baseUrl:p.value.baseUrl,apiKey:p.value.apiKey,model:p.value.model,temperature:p.value.temperature,...c},tools:$,systemPrompt:u||W(t)});let F=null;async function f(r,k,B){const l={toolCallId:`${Date.now()}_${Math.random().toString(36).slice(2,6)}`,packageId:r.packageId,toolName:r.toolName,args:r.args};try{const y=await o(l);return F={pkg:k,toolDef:B,data:y},{success:!0,result:typeof y=="string"?y:JSON.stringify(y)}}catch(y){return{success:!1,result:(y==null?void 0:y.message)||"\u5DE5\u5177\u6267\u884C\u5931\u8D25"}}}function i(){var x;if(!F)return;const{pkg:r,toolDef:k,data:B}=F,l=k.displayHints;if(!l)return;const y=s.value[s.value.length-1];if(!(!y||y.role!=="assistant")){if(l.suggestComponent){let L=B;if((x=B==null?void 0:B.data)!=null&&x.fileId){const z=w.get(B.data.fileId);z&&(L=z.name.endsWith(".geojson")||z.name.endsWith(".json")?{data:{wkt:"",geojson:z.data}}:{data:{wkt:z.data,geojson:""}})}y.renderBlocks=[{type:"component",packageId:r.id,componentName:l.suggestComponent,data:L}],console.log("resolvedData===",L)}l.suggestedNext&&(y.suggestedNext=l.suggestedNext)}}const A=new Map;g.on(r=>{var k,B;switch(r.type){case"message":{if(r.message.role==="tool")break;const l={id:R(),role:r.message.role,content:r.message.content,reasoning:"",status:r.message.role==="assistant"?"streaming":"done",timestamp:Date.now(),tool_calls:r.message.tool_calls};s.value.push(l);break}case"stream:delta":{const l=s.value[s.value.length-1];(l==null?void 0:l.role)==="assistant"&&l.status==="streaming"&&(r.delta.content&&(l.content+=r.delta.content),r.delta.reasoning&&(l.reasoning=(l.reasoning||"")+r.delta.reasoning));break}case"stream:end":{const l=s.value[s.value.length-1];(l==null?void 0:l.role)==="assistant"&&(l.content=r.content,r.reasoning&&(l.reasoning=r.reasoning));break}case"tool:start":{const l=s.value[s.value.length-1];if(!l||l.role!=="assistant")break;l.tool_calls||(l.tool_calls=[]),l.toolResults||(l.toolResults=[]);const y=l.toolResults.length;l.toolResults.push({callId:r.call.id,name:r.call.function.name,arguments:r.call.function.arguments,result:"",success:!1,status:"running"}),A.set(r.call.id,{msgIndex:s.value.length-1,toolIndex:y}),l.tool_calls.find(x=>x.id===r.call.id)||l.tool_calls.push({id:r.call.id,type:"function",function:{name:r.call.function.name,arguments:r.call.function.arguments}});break}case"tool:end":{const l=A.get(r.call.id);if(!l)break;const y=(B=(k=s.value[l.msgIndex])==null?void 0:k.toolResults)==null?void 0:B[l.toolIndex];y&&(y.result=r.output.result,y.success=r.output.success,y.status=r.output.success?"success":"error"),A.delete(r.call.id);break}case"error":{E.value=r.error;const l=s.value[s.value.length-1];(l==null?void 0:l.role)==="assistant"&&(l.status="error",l.error=r.error);break}case"status":{if(_.value=r.loading,!r.loading){const l=s.value[s.value.length-1];(l==null?void 0:l.role)==="assistant"&&l.status==="streaming"&&(l.status="done",l.content||(l.content="\uFF08\u5DF2\u505C\u6B62\u751F\u6210\uFF09")),i()}break}}});function S(){try{const r=localStorage.getItem(a.settings);r&&(p.value={...j,...JSON.parse(r)})}catch{}}function T(){try{const r=localStorage.getItem(a.messages);if(r){const k=JSON.parse(r);if(Array.isArray(k)){s.value=k;for(const B of k)if(B.files)for(const l of B.files)l.id&&w.set(l.id,l);g.initialize(H(k))}}}catch{}}function D(r){p.value={...r},localStorage.setItem(a.settings,JSON.stringify(r)),g.updateProviderConfig({baseUrl:r.baseUrl,apiKey:r.apiKey,model:r.model,temperature:r.temperature})}function v(){try{localStorage.setItem(a.messages,JSON.stringify(s.value))}catch{}}function V(r){return r.startsWith("data:")}async function C(r,k){const B=r.trim();if(!B&&(!k||k.length===0))return;if(E.value="",!p.value.apiKey){E.value="\u8BF7\u5148\u914D\u7F6E API Key\u3002";return}if(g.updateProviderConfig({baseUrl:p.value.baseUrl,apiKey:p.value.apiKey,model:p.value.model,temperature:p.value.temperature}),F=null,A.clear(),k&&k.length>0){for(const x of k)x.id=R(),w.set(x.id,{...x});const y={id:R(),role:"user",content:B,status:"done",timestamp:Date.now(),files:k};s.value.push(y),g.initialize(H(s.value))}let l=B;k&&k.length>0&&(h?l=k.map(x=>V(x.data)?`[File: ${x.name} (${x.type}, ${(x.size/1024).toFixed(1)}KB)]
4
- ${x.data}`:`[File: ${x.name} (${x.type}, ${(x.size/1024).toFixed(1)}KB)]
5
- \`\`\`
6
- ${x.data}
7
- \`\`\``).join(`
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}**
8
5
 
9
- `)+(B?`
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
+ `);return`${o}${l}
8
+ ${r}
9
+ ${h}`}function Ie(n){const t=J(n.data);if(!(t!=null&&t.length))return"(无数据)";const o=n.title?`**${n.title}**
10
10
 
11
- ${B}`:""):l=k.map(x=>`[Uploaded file: ${x.id}] ${x.name} (${x.type}, ${(x.size/1024).toFixed(1)}KB)`).join(`
12
- `)+(B?`
11
+ `:"",i=t.map(l=>Object.entries(l).map(([h,v])=>`- **${h}**: ${v}`).join(`
12
+ `)).join(`
13
13
 
14
- ${B}`:"")),await g.sendMessage(l)}function b(){g.stop()}function M(){g.clear(),s.value=[],E.value="",F=null,w.clear(),localStorage.removeItem(a.messages)}const ee=e.computed(()=>!!p.value.apiKey);return e.onMounted(()=>{S(),T()}),e.watch(s,()=>v(),{deep:!0}),{messages:s,settings:p,loading:_,errorMsg:E,hasApiKey:ee,toolPackages:t,fileStore:w,sendMessage:C,stopGeneration:b,clearMessages:M,saveSettings:D}}function re(n,t,o){var u;let d=null;if(n.type==="component"&&n.componentName){let m;n.packageId&&(m=t.find(h=>h.id===n.packageId)),!m&&o&&(m=t.find(h=>h.id===o)),(u=m==null?void 0:m.components)!=null&&u[n.componentName]&&(d=m.components[n.componentName])}const c=ce(n);return{component:d,block:n,fallbackText:c}}function ce(n){switch(n.type){case"table":return ie(n);case"card":return de(n);case"list":return me(n);default:return JSON.stringify(n.data,null,2)}}function ie(n){const t=n.data;if(!t)return"";const o=Array.isArray(t)?t:t.list||t.items||[t];if(!o.length)return"\uFF08\u65E0\u6570\u636E\uFF09";const d=n.title?`**${n.title}**
14
+ ---
15
15
 
16
- `:"",c=Object.keys(o[0]),u=`| ${c.join(" | ")} |`,m=`| ${c.map(()=>"---").join(" | ")} |`,h=o.map(a=>`| ${c.map(s=>{var p;return String((p=a[s])!=null?p:"")}).join(" | ")} |`).join(`
17
- `);return`${d}${u}
18
- ${m}
19
- ${h}`}function de(n){const t=n.data;if(!t)return"";const o=Array.isArray(t)?t:t.list||t.items||[t];if(!o.length)return"\uFF08\u65E0\u6570\u636E\uFF09";const d=n.title?`**${n.title}**
16
+ `);return`${o}${i}`}function Ae(n){const t=J(n.data);if(!(t!=null&&t.length))return"(无数据)";const o=n.title?`**${n.title}**
20
17
 
21
- `:"",c=o.map(u=>Object.entries(u).map(([h,a])=>`- **${h}**: ${a}`).join(`
22
- `)).join(`
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)]
20
+ ${E.data}`:`[File: ${E.name} (${E.type}, ${(E.size/1024).toFixed(1)}KB)]
21
+ \`\`\`
22
+ ${E.data}
23
+ \`\`\``).join(`
23
24
 
24
- ---
25
+ `)+(C?`
25
26
 
26
- `);return`${d}${c}`}function me(n){const t=n.data;if(!t)return"";const o=Array.isArray(t)?t:t.list||t.items||[t];if(!o.length)return"\uFF08\u65E0\u6570\u636E\uFF09";const d=n.title?`**${n.title}**
27
+ ${C}`:""):u=k.map(E=>`[Uploaded file: ${E.id}] ${E.name} (${E.type}, ${(E.size/1024).toFixed(1)}KB)`).join(`
28
+ `)+(C?`
27
29
 
28
- `:"",c=o.map(u=>`- ${typeof u=="string"?u:Object.values(u).join(" - ")}`).join(`
29
- `);return`${d}${c}`}/*! Element Plus Icons Vue v2.3.2 */var pe=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"})]))}}),ge=pe,fe=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"})]))}}),_e=fe,he=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"})]))}}),q=he,Ee=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"})]))}}),ve=Ee,Ce=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"})]))}}),ke=Ce,ye=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"})]))}}),Fe=ye,Be=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"})]))}}),K=Be,xe=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"})]))}}),Ve=xe,we=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"})]))}}),Ne=we;const De={class:"render-block"},Ae={key:0,class:"render-block__title"},be={key:2,class:"render-block__cards"},$e={class:"card-item"},Se={class:"card-label"},Te={class:"card-value"},Ie={key:3,class:"render-block__table"},Me={key:0},Pe={key:4,class:"render-block__cards"},ze={class:"card-label"},Le={class:"card-value"},Re={key:5,class:"render-block__list"},je=e.defineComponent({__name:"RenderBlock",props:{block:{},resolvedComponent:{}},setup(n){const t=n,o=e.computed(()=>t.block.data||{}),d=e.computed(()=>Array.isArray(o.value)?o.value:o.value.list?Array.isArray(o.value.list)?o.value.list:[]:o.value.items?Array.isArray(o.value.items)?o.value.items:[]:[o.value]),c=e.computed(()=>d.value.length?Object.keys(d.value[0]):[]);function u(m){return typeof m=="string"?m:Object.values(m).join(" - ")}return(m,h)=>(e.openBlock(),e.createElementBlock("div",De,[n.block.title?(e.openBlock(),e.createElementBlock("div",Ae,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",be,[e.createElementVNode("div",$e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value[0],(a,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"card-field"},[e.createElementVNode("span",Se,e.toDisplayString(s)+":",1),e.createElementVNode("span",Te,e.toDisplayString(a),1)]))),128))])])):n.block.type==="table"?(e.openBlock(),e.createElementBlock("div",Ie,[e.createElementVNode("table",null,[c.value.length?(e.openBlock(),e.createElementBlock("thead",Me,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,a=>(e.openBlock(),e.createElementBlock("th",{key:a},e.toDisplayString(a),1))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(a,s)=>(e.openBlock(),e.createElementBlock("tr",{key:s},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,p=>{var _;return e.openBlock(),e.createElementBlock("td",{key:p},e.toDisplayString((_=a[p])!=null?_:""),1)}),128))]))),128))])])])):n.block.type==="card"?(e.openBlock(),e.createElementBlock("div",Pe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(a,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"card-item"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a,(p,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:"card-field"},[e.createElementVNode("span",ze,e.toDisplayString(_)+":",1),e.createElementVNode("span",Le,e.toDisplayString(p),1)]))),128))]))),128))])):n.block.type==="list"?(e.openBlock(),e.createElementBlock("div",Re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(a,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"list-item"},e.toDisplayString(u(a)),1))),128))])):e.createCommentVNode("",!0)]))}});const P=(n,t)=>{const o=n.__vccOpts||n;for(const[d,c]of t)o[d]=c;return o},G=P(je,[["__scopeId","data-v-89cef1ee"]]),He={key:0,class:"suggested-next"},Ke={class:"suggested-next__text"},Ue=e.defineComponent({__name:"SuggestedNext",props:{text:{}},emits:["execute"],setup(n,{emit:t}){const o=n,d=t;function c(){d("execute",o.text)}return(u,m)=>{const h=e.resolveComponent("el-button");return n.text?(e.openBlock(),e.createElementBlock("div",He,[m[1]||(m[1]=e.createElementVNode("span",{class:"suggested-next__icon"},"\u{1F4A1}",-1)),e.createElementVNode("span",Ke,e.toDisplayString(n.text),1),e.createVNode(h,{size:"small",type:"primary",plain:"",onClick:c},{default:e.withCtx(()=>[...m[0]||(m[0]=[e.createTextVNode("\u53BB\u6267\u884C",-1)])]),_:1})])):e.createCommentVNode("",!0)}}});const X=P(Ue,[["__scopeId","data-v-0e0e9b65"]]),Oe={class:"message-avatar"},Je={class:"message-body"},We={key:0,class:"message-files"},qe=["src","alt"],Ge={class:"file-info"},Xe={class:"file-name"},Ye={class:"file-size"},Qe={key:1,class:"message-user-text"},Ze={key:0,class:"message-reasoning"},et=["innerHTML"],tt={key:3,class:"message-cursor"},nt={key:4,class:"message-error"},ot=e.defineComponent({__name:"ChatMessage",props:{message:{},toolPackages:{}},emits:["execute"],setup(n,{emit:t}){const o=n,d=t;function c(a){if(!a)return"";let s=a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return s=s.replace(/`([^`]+)`/g,"<code>$1</code>"),s=s.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>"),s=s.replace(/\*([^*]+)\*/g,"<em>$1</em>"),s=s.replace(/\n/g,"<br>"),s}const u=e.computed(()=>c(o.message.content));function m(a){var p;if(a.type!=="component"||!a.componentName)return null;let s=a.packageId?o.toolPackages.find(_=>_.id===a.packageId):null;return s||(s=o.toolPackages.find(_=>_.components&&a.componentName in _.components)),s||(s=o.toolPackages[o.toolPackages.length-1]),s&&((p=s.components)==null?void 0:p[a.componentName])||null}function h(a){d("execute",a)}return(a,s)=>{var _;const p=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",Oe,[n.message.role==="user"?(e.openBlock(),e.createBlock(p,{key:0},{default:e.withCtx(()=>[e.createVNode(e.unref(Ve))]),_:1})):(e.openBlock(),e.createBlock(p,{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(ge))]),_:1}))]),e.createElementVNode("div",Je,[(_=n.message.files)!=null&&_.length?(e.openBlock(),e.createElementBlock("div",We,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.message.files,(E,w)=>(e.openBlock(),e.createElementBlock("div",{key:w,class:e.normalizeClass(["message-file",{"is-image":E.type.startsWith("image/")}])},[E.type.startsWith("image/")?(e.openBlock(),e.createElementBlock("img",{key:0,src:E.data,alt:E.name,class:"file-image"},null,8,qe)):(e.openBlock(),e.createBlock(p,{key:1},{default:e.withCtx(()=>[e.createVNode(e.unref(q))]),_:1})),e.createElementVNode("div",Ge,[e.createElementVNode("span",Xe,e.toDisplayString(E.name),1),e.createElementVNode("span",Ye,e.toDisplayString((E.size/1024).toFixed(1))+" KB",1)])],2))),128))])):e.createCommentVNode("",!0),n.message.role==="user"?(e.openBlock(),e.createElementBlock("div",Qe,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",Ze,[e.createElementVNode("details",null,[s[0]||(s[0]=e.createElementVNode("summary",null,"\u63A8\u7406\u8FC7\u7A0B",-1)),e.createElementVNode("pre",null,e.toDisplayString(n.message.reasoning),1)])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"message-content markdown-body",innerHTML:u.value},null,8,et),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.message.renderBlocks,(E,w)=>(e.openBlock(),e.createBlock(G,{key:w,block:E,"resolved-component":m(E)},null,8,["block","resolved-component"]))),128)),n.message.suggestedNext?(e.openBlock(),e.createBlock(X,{key:1,text:n.message.suggestedNext,onExecute:h},null,8,["text"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),n.message.status==="streaming"?(e.openBlock(),e.createElementBlock("div",tt,"\u258D")):e.createCommentVNode("",!0),n.message.status==="error"?(e.openBlock(),e.createElementBlock("div",nt,e.toDisplayString(n.message.error),1)):e.createCommentVNode("",!0)])],2)}}});const Y=P(ot,[["__scopeId","data-v-fe82b4e5"]]),st={class:"chat-input"},at={key:0,class:"chat-input__files"},lt={class:"chat-input__wrap"},ut={class:"chat-input__actions"},rt=e.defineComponent({__name:"ChatInput",props:{loading:{type:Boolean},disabled:{type:Boolean},placeholder:{}},emits:["send"],setup(n,{emit:t}){const o=n,d=t,c=e.ref(""),u=e.ref([]),m=e.ref(null),h=e.computed(()=>(c.value.trim().length>0||u.value.length>0)&&!o.disabled);function a(){var g;(g=m.value)==null||g.click()}const s=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 p(g){var F;if(g.type.startsWith("text/")||s.has(g.type))return!0;if(g.type===""||g.type.startsWith("application/")){const f=(F=g.name.split(".").pop())==null?void 0:F.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(f!=null?f:"")}return!1}function _(g){return new Promise(F=>{const f=new FileReader;f.onload=()=>{F({id:"",name:g.name,size:g.size,type:g.type,data:f.result})},p(g)?f.readAsText(g):f.readAsDataURL(g)})}async function E(g){var f;const F=g.target;if(!!((f=F.files)!=null&&f.length)){for(const i of Array.from(F.files)){const A=await _(i);u.value.push(A)}F.value=""}}function w(g){u.value.splice(g,1)}function $(g){g.shiftKey||(g.preventDefault(),N())}function N(){if(!h.value||o.loading)return;const g=c.value.trim();d("send",g,u.value),c.value="",u.value=[]}return(g,F)=>{const f=e.resolveComponent("el-icon"),i=e.resolveComponent("el-tag"),A=e.resolveComponent("el-input"),S=e.resolveComponent("el-button"),T=e.resolveComponent("el-tooltip");return e.openBlock(),e.createElementBlock("div",st,[u.value.length?(e.openBlock(),e.createElementBlock("div",at,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,(D,v)=>(e.openBlock(),e.createBlock(i,{key:v,closable:"",size:"small",type:D.type.startsWith("image/")?"success":"info",onClose:V=>w(v)},{default:e.withCtx(()=>[D.type.startsWith("image/")?(e.openBlock(),e.createBlock(f,{key:0,style:{"margin-right":"4px"}},{default:e.withCtx(()=>[e.createVNode(e.unref(ke))]),_:1})):(e.openBlock(),e.createBlock(f,{key:1,style:{"margin-right":"4px"}},{default:e.withCtx(()=>[e.createVNode(e.unref(q))]),_:1})),e.createTextVNode(" "+e.toDisplayString(D.name),1)]),_:2},1032,["type","onClose"]))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",lt,[e.createVNode(A,{modelValue:c.value,"onUpdate:modelValue":F[0]||(F[0]=D=>c.value=D),type:"textarea",autosize:{minRows:1,maxRows:6},resize:"none",placeholder:n.placeholder,onKeydown:e.withKeys($,["enter"])},null,8,["modelValue","placeholder"]),e.createElementVNode("div",ut,[e.createVNode(T,{content:"\u4E0A\u4F20\u6587\u4EF6",placement:"top"},{default:e.withCtx(()=>[e.createVNode(S,{text:"",circle:"",onClick:a},{default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(e.unref(ve))]),_:1})]),_:1})]),_:1}),e.createElementVNode("input",{ref_key:"fileInputRef",ref:m,type:"file",multiple:"",hidden:"",onChange:E},null,544),e.createVNode(T,{content:"Enter \u53D1\u9001\uFF0CShift+Enter \u6362\u884C",placement:"top"},{default:e.withCtx(()=>[e.createVNode(S,{type:"primary",icon:e.unref(Fe),loading:n.loading,disabled:!h.value,circle:"",onClick:N},null,8,["icon","loading","disabled"])]),_:1})])])])}}});const Q=P(rt,[["__scopeId","data-v-1f9902c6"]]),ct=[{label:"deepseek-chat (V3 \u6700\u5F3A)",value:"deepseek-chat"},{label:"deepseek-reasoner (R1 \u63A8\u7406)",value:"deepseek-reasoner"}],it={class:"form-tip"},dt={class:"temp-row"},mt={class:"temp-val"},pt=e.defineComponent({__name:"ChatSettings",props:{modelValue:{type:Boolean},settings:{}},emits:["update:modelValue","save"],setup(n,{emit:t}){const o=n,d=t,c=e.ref(o.modelValue);e.watch(()=>o.modelValue,h=>{c.value=h,h&&(u.value={...o.settings})}),e.watch(c,h=>d("update:modelValue",h));const u=e.ref({...o.settings});function m(){d("save",{...u.value}),c.value=!1}return(h,a)=>{const s=e.resolveComponent("el-input"),p=e.resolveComponent("el-link"),_=e.resolveComponent("el-form-item"),E=e.resolveComponent("el-option"),w=e.resolveComponent("el-select"),$=e.resolveComponent("el-slider"),N=e.resolveComponent("el-switch"),g=e.resolveComponent("el-form"),F=e.resolveComponent("el-button"),f=e.resolveComponent("el-dialog");return e.openBlock(),e.createBlock(f,{modelValue:c.value,"onUpdate:modelValue":a[6]||(a[6]=i=>c.value=i),title:"AI \u52A9\u624B\u8BBE\u7F6E",width:"520px","append-to-body":""},{footer:e.withCtx(()=>[e.createVNode(F,{onClick:a[5]||(a[5]=i=>c.value=!1)},{default:e.withCtx(()=>[...a[11]||(a[11]=[e.createTextVNode("\u53D6\u6D88",-1)])]),_:1}),e.createVNode(F,{type:"primary",onClick:m},{default:e.withCtx(()=>[...a[12]||(a[12]=[e.createTextVNode("\u4FDD\u5B58",-1)])]),_:1})]),default:e.withCtx(()=>[e.createVNode(g,{model:u.value,"label-width":"110px","label-position":"right"},{default:e.withCtx(()=>[e.createVNode(_,{label:"API Key"},{default:e.withCtx(()=>[e.createVNode(s,{modelValue:u.value.apiKey,"onUpdate:modelValue":a[0]||(a[0]=i=>u.value.apiKey=i),type:"password","show-password":"",placeholder:"sk-xxxxxxxxxxxxxxxx",clearable:""},null,8,["modelValue"]),e.createElementVNode("div",it,[a[8]||(a[8]=e.createTextVNode(" \u5728 ",-1)),e.createVNode(p,{type:"primary",href:"https://platform.deepseek.com/api_keys",target:"_blank"},{default:e.withCtx(()=>[...a[7]||(a[7]=[e.createTextVNode(" DeepSeek \u5F00\u653E\u5E73\u53F0 ",-1)])]),_:1}),a[9]||(a[9]=e.createTextVNode(" \u83B7\u53D6\uFF0C\u4EC5\u4FDD\u5B58\u5728\u6D4F\u89C8\u5668\u672C\u5730\u3002 ",-1))])]),_:1}),e.createVNode(_,{label:"\u63A5\u53E3\u5730\u5740"},{default:e.withCtx(()=>[e.createVNode(s,{modelValue:u.value.baseUrl,"onUpdate:modelValue":a[1]||(a[1]=i=>u.value.baseUrl=i),placeholder:"https://api.deepseek.com",clearable:""},null,8,["modelValue"])]),_:1}),e.createVNode(_,{label:"\u6A21\u578B"},{default:e.withCtx(()=>[e.createVNode(w,{modelValue:u.value.model,"onUpdate:modelValue":a[2]||(a[2]=i=>u.value.model=i),style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ct),i=>(e.openBlock(),e.createBlock(E,{key:i.value,label:i.label,value:i.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e.createVNode(_,{label:"\u6E29\u5EA6"},{default:e.withCtx(()=>[e.createElementVNode("div",dt,[e.createVNode($,{modelValue:u.value.temperature,"onUpdate:modelValue":a[3]||(a[3]=i=>u.value.temperature=i),min:0,max:2,step:.1,style:{flex:"1"}},null,8,["modelValue"]),e.createElementVNode("span",mt,e.toDisplayString(u.value.temperature.toFixed(1)),1)])]),_:1}),e.createVNode(_,{label:"\u542F\u7528\u5DE5\u5177"},{default:e.withCtx(()=>[e.createVNode(N,{modelValue:u.value.useTools,"onUpdate:modelValue":a[4]||(a[4]=i=>u.value.useTools=i)},null,8,["modelValue"]),a[10]||(a[10]=e.createElementVNode("span",{class:"form-tip-inline"},"\u5173\u95ED\u540E\u52A9\u624B\u4EC5\u5BF9\u8BDD\uFF0C\u4E0D\u4F1A\u6267\u884C\u9875\u9762\u5BFC\u822A/\u6570\u636E\u67E5\u8BE2\u7B49\u64CD\u4F5C",-1))]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])}}});const Z=P(pt,[["__scopeId","data-v-21ad42a2"]]),gt={class:"chat-panel"},ft={key:0,class:"chat-panel__header"},_t={class:"chat-panel__title"},ht={class:"chat-panel__ops"},Et={key:0,class:"chat-empty"},vt={class:"chat-empty__logo"},Ct={key:0,class:"chat-panel__error"},kt={class:"chat-panel__footer"},yt={key:0,class:"chat-panel__stop"},Ft=e.defineComponent({__name:"ChatPanel",props:{chat:{},showHeader:{type:Boolean}},setup(n){const t=n,{messages:o,settings:d,loading:c,errorMsg:u,hasApiKey:m,toolPackages:h,sendMessage:a,stopGeneration:s,clearMessages:p,saveSettings:_}=t.chat,E=e.ref(!1),w=e.ref(null);function $(){e.nextTick(()=>{const f=w.value;f&&(f.scrollTop=f.scrollHeight)})}function N(f,i){a(f,i),$()}function g(f){_(f)}function F(){oe.ElMessageBox.confirm("\u786E\u5B9A\u8981\u6E05\u7A7A\u6240\u6709\u5BF9\u8BDD\u8BB0\u5F55\u5417\uFF1F","\u63D0\u793A",{type:"warning",confirmButtonText:"\u6E05\u7A7A",cancelButtonText:"\u53D6\u6D88"}).then(()=>{p()}).catch(()=>{})}return e.watch(()=>o.value.map(f=>{var i;return f.content+f.status+(((i=f.renderBlocks)==null?void 0:i.length)||0)}).join("|"),()=>$()),(f,i)=>{const A=e.resolveComponent("ChatDotRound"),S=e.resolveComponent("el-icon"),T=e.resolveComponent("el-tag"),D=e.resolveComponent("el-button"),v=e.resolveComponent("el-tooltip"),V=e.resolveComponent("el-alert");return e.openBlock(),e.createElementBlock("div",gt,[n.showHeader?(e.openBlock(),e.createElementBlock("div",ft,[e.createElementVNode("div",_t,[e.createVNode(S,{class:"title-icon"},{default:e.withCtx(()=>[e.createVNode(A)]),_:1}),i[5]||(i[5]=e.createElementVNode("span",null,"AI \u667A\u80FD\u52A9\u624B",-1)),e.unref(m)?(e.openBlock(),e.createBlock(T,{key:0,size:"small",type:"success",effect:"plain"},{default:e.withCtx(()=>[...i[3]||(i[3]=[e.createTextVNode("\u5DF2\u914D\u7F6E",-1)])]),_:1})):(e.openBlock(),e.createBlock(T,{key:1,size:"small",type:"warning",effect:"plain"},{default:e.withCtx(()=>[...i[4]||(i[4]=[e.createTextVNode("\u672A\u914D\u7F6E",-1)])]),_:1}))]),e.createElementVNode("div",ht,[e.createVNode(v,{content:"\u8BBE\u7F6E",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(D,{text:"",circle:"",onClick:i[0]||(i[0]=C=>E.value=!0)},{default:e.withCtx(()=>[e.createVNode(S,null,{default:e.withCtx(()=>[e.createVNode(e.unref(K))]),_:1})]),_:1})]),_:1}),e.createVNode(v,{content:"\u6E05\u7A7A\u5BF9\u8BDD",placement:"bottom"},{default:e.withCtx(()=>[e.createVNode(D,{text:"",circle:"",disabled:!e.unref(o).length,onClick:F},{default:e.withCtx(()=>[e.createVNode(S,null,{default:e.withCtx(()=>[e.createVNode(e.unref(_e))]),_:1})]),_:1},8,["disabled"])]),_:1})])])):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"scrollRef",ref:w,class:"chat-panel__body"},[e.unref(o).length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(e.unref(o),C=>(e.openBlock(),e.createBlock(Y,{key:C.id,message:C,"tool-packages":e.unref(h),onExecute:N},null,8,["message","tool-packages"]))),128)):(e.openBlock(),e.createElementBlock("div",Et,[e.createElementVNode("div",vt,[e.createVNode(S,null,{default:e.withCtx(()=>[e.createVNode(A)]),_:1})]),i[7]||(i[7]=e.createElementVNode("h3",null,"\u4F60\u597D\uFF0C\u6211\u662F\u7CFB\u7EDF AI \u52A9\u624B",-1)),i[8]||(i[8]=e.createElementVNode("p",{class:"chat-empty__desc"},[e.createTextVNode(" \u6211\u53EF\u4EE5\u5E2E\u4F60"),e.createElementVNode("span",{class:"hl"},"\u67E5\u8BE2\u6570\u636E"),e.createTextVNode("\u3001"),e.createElementVNode("span",{class:"hl"},"\u6267\u884C\u64CD\u4F5C"),e.createTextVNode("\u3002\u8BD5\u8BD5\u8F93\u5165\u6307\u4EE4\uFF1A ")],-1)),e.unref(m)?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(D,{key:0,type:"primary",icon:e.unref(K),onClick:i[1]||(i[1]=C=>E.value=!0)},{default:e.withCtx(()=>[...i[6]||(i[6]=[e.createTextVNode(" \u5148\u914D\u7F6E API Key ",-1)])]),_:1},8,["icon"]))]))],512),e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[e.unref(u)?(e.openBlock(),e.createElementBlock("div",Ct,[e.createVNode(V,{title:e.unref(u),type:"error","show-icon":"",closable:!1},null,8,["title"])])):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",kt,[e.unref(c)?(e.openBlock(),e.createElementBlock("div",yt,[e.createVNode(D,{size:"small",icon:e.unref(Ne),onClick:e.unref(s)},{default:e.withCtx(()=>[...i[9]||(i[9]=[e.createTextVNode("\u505C\u6B62\u751F\u6210",-1)])]),_:1},8,["icon","onClick"])])):e.createCommentVNode("",!0),e.createVNode(Q,{loading:e.unref(c),placeholder:e.unref(m)?"\u8F93\u5165\u6307\u4EE4...":"\u8BF7\u5148\u914D\u7F6E API Key",onSend:N},null,8,["loading","placeholder"])]),e.createVNode(Z,{modelValue:E.value,"onUpdate:modelValue":i[2]||(i[2]=C=>E.value=C),settings:e.unref(d),onSave:g},null,8,["modelValue","settings"])])}}});const Bt=P(Ft,[["__scopeId","data-v-b29b5a67"]]);exports.Agent=U;exports.ChatInput=Q;exports.ChatMessage=Y;exports.ChatPanel=Bt;exports.ChatSettings=Z;exports.DEFAULT_SETTINGS=j;exports.RenderBlock=G;exports.SuggestedNext=X;exports.ToolRegistry=O;exports.buildSystemPrompt=W;exports.createDeepSeekProvider=J;exports.resolveRenderBlock=re;exports.useAgentChat=ue;
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;
@@ -0,0 +1,18 @@
1
+ export { useAgentChat } from './composables/useAgentChat';
2
+ export { buildSystemPrompt } from './core/context-builder';
3
+ export { resolveRenderBlock } from './core/render-resolver';
4
+ export { createDeepSeekProvider } from './api/deepseek';
5
+ export { createProxyProvider } from './api/proxy';
6
+ export type { AgentChatOptions, ChatMessage, ChatSettings, FileAttachment, ToolResult, ToolPackage, ToolDefinition, ToolCallEvent, RenderBlock, BusinessEvent, EventRule, BusinessEventsConfig, } from './types';
7
+ export { DEFAULT_SETTINGS } from './types';
8
+ export { EventBus, createEventBus } from './core/event-bus';
9
+ export type { CoreMessage, ToolCall, ToolOutput, ToolDefinition as CoreToolDefinition, LLMProvider, LLMProviderConfig, StreamResult, AgentEvent, AgentEventListener, } from './agent-core';
10
+ export { Agent, ToolRegistry } from './agent-core';
11
+ export { default as ChatPanel } from './components/ChatPanel.vue';
12
+ export type { AgentChatAPI } from './components/ChatPanel.vue';
13
+ export { default as ChatMessageComp } from './components/ChatMessage.vue';
14
+ export { default as ChatInput } from './components/ChatInput.vue';
15
+ export { default as ChatSettingsComp } from './components/ChatSettings.vue';
16
+ export { default as RenderBlockComp } from './components/RenderBlock.vue';
17
+ export { default as SuggestedNext } from './components/SuggestedNext.vue';
18
+ export * as ParseUtils from './utils/parseUtils';