hermes-web-ui 0.6.24 → 0.6.25
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/client/assets/js/{ChannelsView-DV-LtXVi.js → ChannelsView-p3dSvD02.js} +1 -1
- package/dist/client/assets/js/{ChatPanel-DyZWRnQs.js → ChatPanel-DRCE0v4g.js} +1 -1
- package/dist/client/assets/js/{ChatView-CuWpMwOd.js → ChatView-CAoJp8-Q.js} +1 -1
- package/dist/client/assets/js/{CodingAgentsView-D_Ngirz0.js → CodingAgentsView-X0I-H0Yu.js} +1 -1
- package/dist/client/assets/js/{DesktopPetView-BGY-7Dcd.js → DesktopPetView-BH9a1zur.js} +1 -1
- package/dist/client/assets/js/{DevicesView-BNZqDe2U.js → DevicesView-CMcwuGZ6.js} +1 -1
- package/dist/client/assets/js/{FileEditor-BPFC-M3W.js → FileEditor-CzWdryd5.js} +1 -1
- package/dist/client/assets/js/{FileRenameModal-5mJtyNBP.js → FileRenameModal-C2YmHkSN.js} +1 -1
- package/dist/client/assets/js/{FilesView-CRbkvC6l.js → FilesView-CKxvh6yi.js} +1 -1
- package/dist/client/assets/js/{GlobalAgentView-my3AKdll.js → GlobalAgentView-77p8MKvy.js} +1 -1
- package/dist/client/assets/js/{GroupChatView-btwSVoC0.js → GroupChatView-D1WFEfIs.js} +1 -1
- package/dist/client/assets/js/{HistoryMessageList-IubX9-tb.js → HistoryMessageList-BcG-gj6N.js} +1 -1
- package/dist/client/assets/js/{HistoryView-N3v7MNfo.js → HistoryView-CzybyBXj.js} +1 -1
- package/dist/client/assets/js/{JobsView-CHq_TJQ6.js → JobsView-BviznpSY.js} +1 -1
- package/dist/client/assets/js/{KanbanView-BMh8IgQo.js → KanbanView-B0c6OMrf.js} +1 -1
- package/dist/client/assets/js/{LoginView-sE4g4Zua.js → LoginView-B9nES8-3.js} +1 -1
- package/dist/client/assets/js/{LogsView-awh5ZCp8.js → LogsView-kLI6-05w.js} +1 -1
- package/dist/client/assets/js/{MarkdownRenderer-BbGvq6C-.js → MarkdownRenderer-DQvs79tf.js} +1 -1
- package/dist/client/assets/js/{McpManagerView-CnSCITtQ.js → McpManagerView-BZU1Puf0.js} +1 -1
- package/dist/client/assets/js/{MemoryView-CbQOeUKI.js → MemoryView-BH4LZtYd.js} +1 -1
- package/dist/client/assets/js/{MessageItem-DSHiAgFE.js → MessageItem-Cu3_aQT8.js} +2 -2
- package/dist/client/assets/js/{MessageList-oRCKlivC.js → MessageList-Ds_mjMbf.js} +1 -1
- package/dist/client/assets/js/{ModelsView-B0esXyBm.js → ModelsView-CZK6wwtt.js} +1 -1
- package/dist/client/assets/js/{OutlinePanel-BofcYepl.js → OutlinePanel-CYuSrNX9.js} +1 -1
- package/dist/client/assets/js/{PageSidebarFooter-BPeWlPvZ.js → PageSidebarFooter-Dk-OfmNy.js} +1 -1
- package/dist/client/assets/js/{PerformanceView-gc12dWCZ.js → PerformanceView-DkXk4HB_.js} +1 -1
- package/dist/client/assets/js/{PetdexView-CZjbg41u.js → PetdexView-DGkSZYVi.js} +1 -1
- package/dist/client/assets/js/{PluginsView-DRwyXTJC.js → PluginsView-D197obRC.js} +1 -1
- package/dist/client/assets/js/{ProfilesView-zVd3TfNW.js → ProfilesView-BhGBaYDE.js} +1 -1
- package/dist/client/assets/js/{SettingRow-G7ZusJw_.js → SettingRow-DfRI-z7L.js} +1 -1
- package/dist/client/assets/js/{SettingsCircuitBadge-CFo2KqP-.js → SettingsCircuitBadge-Eiv8LQz0.js} +1 -1
- package/dist/client/assets/js/{SettingsView-DDjt6UpN.js → SettingsView-B4ipIIOj.js} +1 -1
- package/dist/client/assets/js/{SkillsUsageView-DnVnAYHG.js → SkillsUsageView-DT4o1LA9.js} +1 -1
- package/dist/client/assets/js/{SkillsView-CHi4L7Oi.js → SkillsView-CUK-9OLz.js} +1 -1
- package/dist/client/assets/js/{TerminalPanel-Dx7huJY2.js → TerminalPanel-gyT2AS7Z.js} +1 -1
- package/dist/client/assets/js/{TerminalView-PQIIFHwX.js → TerminalView-C3a6BwEG.js} +1 -1
- package/dist/client/assets/js/{UsageView-Dzr2wBc7.js → UsageView-DrUS9OIk.js} +1 -1
- package/dist/client/assets/js/{VersionPreviewView-JQrieRPU.js → VersionPreviewView-qbXwqYd3.js} +1 -1
- package/dist/client/assets/js/{WorkflowView-DRanDY9s.js → WorkflowView-D-6z--9A.js} +1 -1
- package/dist/client/assets/js/{_plugin-vue_export-helper-fFMkIM4P.js → _plugin-vue_export-helper-CvnFozKy.js} +2 -2
- package/dist/client/assets/js/{chat-timestamp-CZtP79YD.js → chat-timestamp-CkDNtK9Y.js} +1 -1
- package/dist/client/assets/js/{files-DOpu4Qfg.js → files-CBYc0MSs.js} +1 -1
- package/dist/client/assets/js/index-B2IKGvbR.js +3 -0
- package/dist/client/assets/js/{models-y7NaVj-e.js → models-DetB4_Ug.js} +1 -1
- package/dist/client/assets/js/{session-browser-prefs-BOqwOeHi.js → session-browser-prefs-BYjSnxJq.js} +1 -1
- package/dist/client/assets/js/{skills-D7ZMzzzG.js → skills-5qxphanX.js} +1 -1
- package/dist/client/assets/js/{system-CRmVbE8Z.js → system-Onp4yS9N.js} +1 -1
- package/dist/client/assets/js/{ttsHelpers-vHLmbeY4.js → ttsHelpers-DNcZ5khq.js} +1 -1
- package/dist/client/assets/js/{useSttSettings-s4LBWl55.js → useSttSettings-C-jexrW7.js} +1 -1
- package/dist/client/index.html +3 -3
- package/dist/server/agent-bridge/python/bridge_runtime.py +2 -2
- package/dist/server/index.js +3 -3
- package/dist/server/openapi.json +1 -1
- package/package.json +1 -1
- package/dist/client/assets/js/index-Brl4qW5V.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as G}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as xt,An as _n,Bn as vo,Hn as _,I as bn,It as Xe,K as ia,Kt as Ct,M as wo,Nn as We,Ot as O,P as xn,Qt as Cn,Un as Sn,V as sa,_n as Wn,an as n,cn as p,cr as i,dn as Mn,dr as $n,en as z,er as f,fn as Y,fr as Nn,hn as St,in as N,jn as d,kn as Pn,mt as Fe,nn as Rn,nt as po,on as U,ot as Ie,pn as m,pr as w,sn as $,t as Wt,tn as me,ur as oe,w as mo,wn as Se,wt as An}from"./ui-vendor-DDMfmCj2.js";import{O as Mt,_ as In,a as Fn,b as zn,c as Bn,d as En,f as Ln,g as ko,h as gt,i as Dn,k as $t,l as On,m as Tn,n as Vn,o as Un,p as qn,r as Hn,s as jn,t as Kn,u as Gn,v as ho,y as ra}from"./vue-vendor-BsMpqyaC.js";import{a as Xn,f as ee,n as Nt,o as Yn,s as Jn,t as Pt,u as ua}from"./_plugin-vue_export-helper-fFMkIM4P.js";import{M as Qn,j as Zn}from"./vendor-B1Lfatlz.js";import{Dt as ei,E as ti,Et as oi,Ot as da,T as li,Tt as ai,et as ni,it as ii,kt as ca,mt as si,tt as ri,vt as ui,wt as di}from"./index-Brl4qW5V.js";import{a as ci,c as fi,o as fa}from"./files-DOpu4Qfg.js";import{a as go,i as vi,n as wi,o as pi,r as mi,t as ki}from"./MessageList-oRCKlivC.js";import{l as hi,s as gi}from"./skills-D7ZMzzzG.js";import{i as yi,r as _i}from"./SettingsCircuitBadge-CFo2KqP-.js";import{n as bi,t as xi}from"./PageSidebarFooter-BPeWlPvZ.js";var yo,_o,bo,xo,Co,So,Wo,Mo,$o,No,Po,Ro,Ao,Io,Fo,zo,Bo,va,Eo=G((()=>{Ct(),Wt(),Mt(),da(),yo={class:"workflow-model-selector"},_o=["disabled"],bo=["title"],xo={class:"model-list"},Co=["onClick"],So={class:"model-group-label"},Wo={class:"model-group-count"},Mo={class:"model-group-items"},$o=["title","onClick"],No={class:"model-item-label"},Po={class:"model-item-name"},Ro={key:0,class:"model-item-id"},Ao={key:0,class:"model-badge-preview"},Io={key:1,class:"model-badge-disabled"},Fo={key:2,class:"model-badge-custom"},zo={key:3,class:"model-check",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},Bo={key:0,class:"model-empty"},va=St({__name:"WorkflowModelSelector",props:{provider:{},model:{},groups:{},disabled:{type:Boolean}},emits:["select"],setup(s,{emit:l}){const v=s,F=l,{t:P}=$t(),k=ca(),L=f(!1),B=f(""),le=f({}),q=N(()=>v.groups.map(M=>({...M,models:[...M.models,...(k.customModels[M.provider]||[]).filter(S=>!M.models.includes(S))]}))),ue=N(()=>q.value.find(M=>M.provider===v.provider&&M.models.includes(v.model))),ke=N(()=>v.model?ue.value?k.displayModelName(v.model,v.provider):v.model:""),T=N(()=>{const M=B.value.trim().toLowerCase();return M?q.value.map(S=>({...S,models:S.models.filter(x=>{const R=k.displayModelName(x,S.provider);return x.toLowerCase().includes(M)||R.toLowerCase().includes(M)})})).filter(S=>S.models.length>0||S.label.toLowerCase().includes(M)):q.value});function te(){v.disabled||(le.value={},B.value="",L.value=!0)}function de(M){le.value[M]=!le.value[M]}function V(M){return!!le.value[M]}function he(M,S){return(k.customModels[S]||[]).includes(M)}function D(M,S){return k.getModelAlias(M,S)}function ae(M,S){M.model_meta?.[S]?.disabled||(F("select",{provider:M.provider,model:S,apiMode:M.api_mode}),L.value=!1)}return(M,S)=>(d(),p("div",yo,[n("button",{class:"model-trigger",type:"button",disabled:v.disabled,onClick:te},[n("span",{class:"model-name",title:v.model},w(ke.value||i(P)("models.selectModel")),9,bo),S[2]||(S[2]=n("svg",{class:"model-arrow",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("polyline",{points:"6 9 12 15 18 9"})],-1))],8,_o),m(i(ia),{show:L.value,"onUpdate:show":S[1]||(S[1]=x=>L.value=x),preset:"card",title:i(P)("models.title"),style:{width:"min(480px, calc(100vw - 32px))"},"mask-closable":!0},{default:_(()=>[m(i(Xe),{value:B.value,"onUpdate:value":S[0]||(S[0]=x=>B.value=x),placeholder:i(P)("models.searchPlaceholder"),clearable:"",size:"small",class:"model-search"},null,8,["value","placeholder"]),n("div",xo,[(d(!0),p(me,null,We(T.value,x=>(d(),p("div",{key:x.provider,class:"model-group"},[n("div",{class:"model-group-header",onClick:R=>de(x.provider)},[(d(),p("svg",{class:oe(["model-group-arrow",{collapsed:V(x.provider)}]),width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[...S[3]||(S[3]=[n("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),n("span",So,w(x.label||x.provider),1),n("span",Wo,w(x.models.length),1)],8,Co),Sn(n("div",Mo,[(d(!0),p(me,null,We(x.models,R=>(d(),p("div",{key:`${x.provider}:${R}`,class:oe(["model-item",{active:R===v.model&&x.provider===v.provider,disabled:!!x.model_meta?.[R]?.disabled}]),title:x.model_meta?.[R]?.disabled?i(P)("models.disabledTooltip"):"",onClick:E=>ae(x,R)},[n("span",No,[n("span",Po,w(i(k).displayModelName(R,x.provider)),1),D(R,x.provider)?(d(),p("span",Ro,w(i(P)("models.aliasCanonical",{model:R})),1)):$("",!0)]),x.model_meta?.[R]?.preview?(d(),p("span",Ao,w(i(P)("models.previewBadge")),1)):$("",!0),x.model_meta?.[R]?.disabled?(d(),p("span",Io,w(i(P)("models.disabledBadge")),1)):$("",!0),he(R,x.provider)?(d(),p("span",Fo,w(i(P)("models.customBadge")),1)):$("",!0),R===v.model&&x.provider===v.provider?(d(),p("svg",zo,[...S[4]||(S[4]=[n("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):$("",!0)],10,$o))),128))],512),[[Cn,!V(x.provider)]])]))),128)),T.value.length===0?(d(),p("div",Bo,w(B.value?i(P)("models.noResults"):i(P)("models.noModels")),1)):$("",!0)])]),_:1},8,["show","title"])]))}})})),Ci=G((()=>{})),wa,Si=G((()=>{Eo(),Eo(),Ci(),Nt(),wa=Pt(va,[["__scopeId","data-v-48090a54"]])})),Lo,Do,Oo,To,Vo,Uo,qo,Ho,jo,Ko,Go,Xo,Yo,Jo,Qo,Zo,el,tl,ol,pa,ll=G((()=>{Ct(),ra(),jn(),Wt(),Mt(),Si(),fa(),Fn(),Lo={class:"node-header"},Do={class:"node-status-with-tip"},Oo={class:"node-status-label"},To={class:"node-status-tip"},Vo={key:1,class:"node-status-with-tip"},Uo={class:"node-status-label"},qo={class:"node-images"},Ho={key:0,class:"image-preview-grid"},jo=["title","onClick","onKeydown"],Ko=["src","alt"],Go=["aria-label","onClick"],Xo={key:1,class:"file-paths"},Yo=["title","href"],Jo={class:"file-name"},Qo=["aria-label","onClick"],Zo=["disabled","aria-label"],el={key:0,width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},tl={key:1,class:"image-upload-loading","aria-hidden":"true"},ol=["src","alt"],pa=St({__name:"WorkflowAgentNode",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{}},setup(s){const l=s,{t:v}=$t(),F=sa(),P=f(null),k=f(!1),L=f(""),B=f(!1),le=N(()=>`status-${l.data.status}`),q=N(()=>v(`workflow.status.${l.data.status}`)),ue=N(()=>l.data.status==="failed"&&l.data.statusError?.trim()?l.data.statusError.trim():""),ke=N(()=>l.data.agent!=="hermes"),T=N(()=>[{label:v("codingAgents.protocolOpenAiChat"),value:"chat_completions"},{label:v("codingAgents.protocolOpenAiResponses"),value:"codex_responses"},{label:v("codingAgents.protocolAnthropicMessages"),value:"anthropic_messages"}]),te=N(()=>l.data.images.filter(E)),de=N(()=>l.data.images.filter(c=>!E(c)));function V(c,r){l.data.onUpdate(l.id,{[c]:r})}function he(c){const r={provider:c.provider,model:c.model};(c.apiMode==="chat_completions"||c.apiMode==="codex_responses"||c.apiMode==="anthropic_messages")&&(r.apiMode=c.apiMode),l.data.onUpdate(l.id,r)}function D(c){l.data.readonly||c.stopPropagation()}function ae(){k.value||P.value?.click()}async function M(c){if(k.value)return;const r=c.target instanceof HTMLInputElement?c.target:null,g=Array.from(r?.files||[]);g.length!==0&&(await Me(g),r&&(r.value=""))}function S(c){V("images",l.data.images.filter(r=>r!==c))}function x(c){return c.split("/").pop()||c}function R(c){return ci(c,x(c))}function E(c){return/\.(png|jpe?g|gif|webp|bmp|svg|ico)$/i.test(c.split("?")[0]||c)}function ne(c){L.value=c,B.value=!0}async function Me(c){k.value=!0;try{const r=await l.data.onUploadImages(l.id,c);V("images",[...l.data.images,...r])}catch(r){F.error(r?.message||v("files.uploadFailed"))}finally{k.value=!1}}return(c,r)=>(d(),p("div",{class:oe(["workflow-agent-node",[le.value,{selected:s.selected}]])},[m(i(Un),{"is-visible":s.selected&&!s.data.readonly,"min-width":260,"min-height":360,color:"var(--accent-info)","handle-class-name":"workflow-resize-handle","line-class-name":"workflow-resize-line"},null,8,["is-visible"]),m(i(ho),{id:"input",type:"target",position:i(ko).Left,class:"workflow-handle input-handle"},null,8,["position"]),n("div",Lo,[ue.value?(d(),U(i(Ie),{key:0,trigger:"hover",placement:"top"},{trigger:_(()=>[n("span",Do,[r[14]||(r[14]=n("span",{class:"node-status-dot"},null,-1)),n("span",Oo,w(q.value),1)])]),default:_(()=>[n("span",To,w(ue.value),1)]),_:1})):(d(),p("span",Vo,[r[15]||(r[15]=n("span",{class:"node-status-dot"},null,-1)),n("span",Uo,w(q.value),1)]))]),n("div",{class:"node-controls nodrag nopan",onClick:D,onPointerdown:D,onPointerup:D,onMousedown:D,onMouseup:D,onTouchstart:D,onTouchend:D},[m(i(Xe),{value:s.data.title,size:"small",disabled:s.data.readonly,placeholder:i(v)("workflow.node.title"),"onUpdate:value":r[0]||(r[0]=g=>V("title",g))},null,8,["value","disabled","placeholder"]),m(i(Fe),{value:s.data.agent,options:s.data.agentOptions,size:"small",disabled:s.data.readonly,placeholder:i(v)("workflow.node.agent"),"onUpdate:value":r[1]||(r[1]=g=>V("agent",g))},null,8,["value","options","disabled","placeholder"]),m(wa,{provider:s.data.provider,model:s.data.model,groups:s.data.modelGroups,disabled:s.data.readonly,onSelect:he},null,8,["provider","model","groups","disabled"]),ke.value?(d(),U(i(Fe),{key:0,value:s.data.apiMode,options:T.value,size:"small",disabled:s.data.readonly,placeholder:i(v)("workflow.node.apiMode"),"onUpdate:value":r[2]||(r[2]=g=>V("apiMode",g))},null,8,["value","options","disabled","placeholder"])):$("",!0),m(i(Fe),{value:s.data.skills,options:s.data.skillOptions,loading:s.data.skillsLoading,multiple:"",tag:"",filterable:"",size:"small",disabled:s.data.readonly,placeholder:i(v)("workflow.node.skillsPlaceholder"),"onUpdate:value":r[3]||(r[3]=g=>V("skills",g))},null,8,["value","options","loading","disabled","placeholder"]),m(i(Xe),{class:"node-prompt-input",value:s.data.input,type:"textarea",size:"small",resizable:!1,disabled:s.data.readonly,"input-props":{style:{height:"100%",resize:"none"}},placeholder:i(v)("workflow.node.promptPlaceholder"),"onUpdate:value":r[4]||(r[4]=g=>V("input",g))},null,8,["value","disabled","placeholder"]),n("div",qo,[n("input",{ref_key:"attachmentInputRef",ref:P,class:"image-upload-input",type:"file",multiple:"",onChange:M},null,544),te.value.length>0?(d(),p("div",Ho,[(d(!0),p(me,null,We(te.value,g=>(d(),p("div",{key:g,class:"image-preview",title:g,role:"button",tabindex:"0",onClick:z(ie=>ne(g),["stop"]),onKeydown:[xt(z(ie=>ne(g),["stop","prevent"]),["enter"]),xt(z(ie=>ne(g),["stop","prevent"]),["space"])]},[n("img",{src:R(g),alt:x(g)},null,8,Ko),s.data.readonly?$("",!0):(d(),p("button",{key:0,class:"image-remove",type:"button","aria-label":i(v)("common.delete"),onPointerdown:r[5]||(r[5]=z(()=>{},["stop"])),onPointerup:r[6]||(r[6]=z(()=>{},["stop"])),onMousedown:r[7]||(r[7]=z(()=>{},["stop"])),onMouseup:r[8]||(r[8]=z(()=>{},["stop"])),onClick:z(ie=>S(g),["stop","prevent"])},[...r[16]||(r[16]=[n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],40,Go))],40,jo))),128))])):$("",!0),de.value.length>0?(d(),p("div",Xo,[(d(!0),p(me,null,We(de.value,g=>(d(),p("a",{key:g,class:"file-path",title:g,href:R(g),target:"_blank",rel:"noopener noreferrer",onClick:r[9]||(r[9]=z(()=>{},["stop"]))},[r[18]||(r[18]=n("svg",{class:"file-icon",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","aria-hidden":"true"},[n("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),n("polyline",{points:"14 2 14 8 20 8"})],-1)),n("span",Jo,w(x(g)),1),s.data.readonly?$("",!0):(d(),p("button",{key:0,class:"file-remove",type:"button","aria-label":i(v)("common.delete"),onClick:z(ie=>S(g),["stop","prevent"])},[...r[17]||(r[17]=[n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,Qo))],8,Yo))),128))])):$("",!0),s.data.readonly?$("",!0):(d(),p("button",{key:2,class:"image-upload-trigger",type:"button",disabled:k.value,"aria-label":i(v)("workflow.node.uploadImages"),onClick:z(ae,["stop","prevent"]),onPointerdown:r[10]||(r[10]=z(()=>{},["stop"])),onPointerup:r[11]||(r[11]=z(()=>{},["stop"]))},[k.value?(d(),p("span",tl)):(d(),p("svg",el,[...r[19]||(r[19]=[n("path",{d:"M12 5v14"},null,-1),n("path",{d:"M5 12h14"},null,-1)])]))],40,Zo))])],32),m(i(ho),{id:"output",type:"source",position:i(ko).Right,class:"workflow-handle output-handle"},null,8,["position"]),(d(),U(Rn,{to:"body"},[B.value&&E(L.value)?(d(),p("div",{key:0,class:"image-preview-overlay",onClick:r[13]||(r[13]=z(g=>B.value=!1,["self"]))},[n("img",{class:"image-preview-img",src:R(L.value),alt:x(L.value),onClick:r[12]||(r[12]=g=>B.value=!1)},null,8,ol)])):$("",!0)]))],2))}})})),Wi=G((()=>{})),ma,Mi=G((()=>{ll(),ll(),Wi(),Nt(),ma=Pt(pa,[["__scopeId","data-v-e2d65d71"]])}));function $i(s,l){if(!l)return s;const v=new URLSearchParams;return v.set("profile",l),`${s}?${v}`}async function Ni(s){return(await ee($i("/api/hermes/workflows",s))).workflows}async function Pi(s){return(await ee("/api/hermes/workflows",{method:"POST",body:JSON.stringify(s)})).workflow}async function Ri(s,l){return(await ee(`/api/hermes/workflows/${encodeURIComponent(s)}`,{method:"PATCH",body:JSON.stringify(l)})).workflow}async function Ai(s){await ee(`/api/hermes/workflows/${encodeURIComponent(s)}`,{method:"DELETE"})}async function Ii(s){return ee("/api/hermes/workflows/batch-delete",{method:"POST",body:JSON.stringify({ids:s})})}async function Fi(s,l=100){const v=new URLSearchParams;return v.set("limit",String(l)),(await ee(`/api/hermes/workflows/${encodeURIComponent(s)}/runs?${v}`)).runs}async function zi(s,l){return(await ee(`/api/hermes/workflows/${encodeURIComponent(s)}/runs/${encodeURIComponent(l)}/stop`,{method:"POST"})).run}async function Bi(s,l){await ee(`/api/hermes/workflows/${encodeURIComponent(s)}/runs/${encodeURIComponent(l)}`,{method:"DELETE"})}async function Ei(s,l={}){return ee(`/api/hermes/workflows/${encodeURIComponent(s)}/run`,{method:"POST",body:JSON.stringify(l)})}async function Li(s,l,v,F={}){return ee(`/api/hermes/workflows/${encodeURIComponent(s)}/runs/${encodeURIComponent(l)}/rerun-from-node`,{method:"POST",body:JSON.stringify({...F,node_id:v})})}var Di=G((()=>{ua()}));function Oi(s){return s||Xn()||"default"}function ka(s){const l=Oi(s);return Z&&Ye===l||(Z&&(Z.disconnect(),Z=null),Ye=l,Z=Qn(`${Jn()}/workflow`,{auth:{token:Yn()},query:{profile:l},transports:["websocket","polling"],reconnection:!0,reconnectionAttempts:1/0,reconnectionDelay:1e3,reconnectionDelayMax:3e4,randomizationFactor:.5,timeout:3e4})),Z}function Ti(){Z?.disconnect(),Z=null,Ye=null}function ha(s,l,v){const F=ka(v);return new Promise((P,k)=>{F.timeout(3e4).emit(s,l,(L,B)=>{if(L){k(L);return}if(!B?.ok){k(new Error(B?.error||`${s} failed`));return}P(B.data)})})}async function Vi(s){return(await ha("workflows.list",s?{profile:s}:{},s)).workflows}async function al(s,l){return(await ha("workflow.status.subscribe",s?{workflowId:s}:{},l)).statuses}function Ui(s,l){const v=ka(l);return v.on("workflow.status.updated",s),()=>v.off("workflow.status.updated",s)}var Z,Ye,qi=G((()=>{Zn(),ua(),Z=null,Ye=null}));function nl(s){return s==="claude-code"?"claude":s==="codex"?"codex":"hermes"}function Hi(s){const l=new Map;for(const v of s.categories||[])for(const F of v.skills||[])F.enabled!==!1&&(l.has(F.name)||l.set(F.name,F));return[...l.values()].map(v=>({label:v.name,value:v.name})).sort((v,F)=>v.label.localeCompare(F.label))}var ji=G((()=>{})),il,sl,rl,ul,dl,cl,fl,vl,wl,pl,ml,kl,hl,gl,yl,_l,bl,xl,Cl,Sl,Wl,Ml,$l,Nl,Pl,Rl,Al,Il,Fl,zl,Bl,El,Ll,Dl,Ol,Tl,Vl,Ul,ql,Hl,jl,Kl,Gl,Xl,Yl,Jl,Ql,Zl,ea,ta,oa,yt,_t,la,aa,bt,ga,na=G((()=>{Ct(),Wt(),ra(),qn(),En(),On(),Mt(),Mi(),pi(),vi(),wi(),ai(),yi(),bi(),da(),li(),oi(),fa(),Di(),qi(),hi(),ui(),ri(),ji(),Dn(),Hn(),Vn(),Kn(),il={class:"workflow-view"},sl={key:0,class:"page-sidebar-top"},rl={class:"workflow-list-toolbar"},ul={class:"workflow-list-actions"},dl={key:1,class:"workflow-list"},cl={key:0,class:"workflow-list-empty"},fl={key:1,class:"workflow-list-empty"},vl=["onClick"],wl={key:0,class:"workflow-select-indicator"},pl={class:"workflow-list-main"},ml={class:"workflow-list-name"},kl={class:"workflow-list-meta"},hl=["title","disabled"],gl={class:"workflow-main"},yl={class:"page-header"},_l={class:"header-left"},bl={class:"header-workflow-meta"},xl={class:"header-workflow-title"},Cl=["title"],Sl={class:"header-actions"},Wl={key:0,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},Ml={key:1,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},$l={class:"workflow-chat-panel-inner"},Nl={class:"workflow-chat-header"},Pl=["title"],Rl={class:"workflow-chat-content"},Al={key:0,class:"workflow-chat-loading"},Il={key:2,class:"workflow-chat-loading"},Fl={key:1,class:"workflow-runs-panel"},zl={class:"workflow-runs-header"},Bl={class:"workflow-runs-title"},El={class:"workflow-runs-header-actions"},Ll=["title"],Dl=["title"],Ol={key:0,class:"workflow-runs-empty"},Tl={key:1,class:"workflow-runs-empty"},Vl={key:2,class:"workflow-runs-list"},Ul=["onClick","onContextmenu"],ql={class:"workflow-run-topline"},Hl={class:"workflow-run-duration"},jl={class:"workflow-run-time"},Kl={class:"workflow-run-meta"},Gl={key:0},Xl=["title"],Yl={class:"workflow-create-form"},Jl={class:"workflow-field"},Ql={class:"workflow-field-label"},Zl={class:"workflow-field"},ea={class:"workflow-field-label"},ta={class:"workflow-field"},oa={class:"workflow-field-label"},yt=360,_t=560,la=360,aa=280,bt="hermes.workflow.chatPanelWidth",ga=St({__name:"WorkflowView",setup(s){const{t:l}=$t(),v=ca(),F=ti(),P=ei(),k=sa(),{screenToFlowCoordinate:L,getViewport:B,setViewport:le}=zn("hermes-workflow"),q={x:80,y:80,zoom:.75},ue=f(null),ke=f(null),T=f(1),te=f(!1),de=f(0),V=f(0),he=f(0),D=f(null),ae=f(!1),M=f(0),S=f(0),x=f(null),R=f(l("workflow.title")),E=f(null),ne=f(!1),Me=f("active"),c=f(""),r=f(typeof window>"u"||!window.matchMedia("(max-width: 768px)").matches),g=f(!1),ie=f(!1),ze=f(null),$e=f(!1),Be=f(""),Ne=f("default"),ge=f(null),Je=f(!1),X=f(!1),H=f(new Set),ye=f(new Set),Ee=f(!1),J=f(!1),Pe=f(!1),Re=f(!1),Q=f([]),Qe=f(!1),Le=f(null),j=f(!0),b=f(null),ce=f(new Set),K=f(new Set),Ze=f(!1),et=f(!1),De=f(""),tt=f(null),_e=f(Ma()),Oe=f(null),be=f({}),Ae=f({}),Te=new Map,se=f({});let ot=null,Ve=null,fe=!1;const xe=N(()=>[{label:"Hermes",value:"hermes"},{label:"Claude Code",value:"claude-code"},{label:"Codex",value:"codex"}]),ve=N(()=>v.modelGroups),Ue=N(()=>P.activeProfileName||P.profiles[0]?.name||"default"),Rt=N(()=>P.profiles.length>0?P.profiles.map(e=>({label:e.name,value:e.name})):[{label:"default",value:"default"}]),ya=N(()=>[{label:l("chat.allProfiles"),value:"__all__"},...Rt.value]);function _a(e){return P.profiles.find(t=>t.name===e)?.avatar||null}const qe=N(()=>I.value.find(e=>e.id===c.value)?.profile||Ue.value),lt=N({get:()=>Me.value==="create"?ge.value:E.value,set:e=>{Me.value==="create"?ge.value=e:E.value=e}}),ba=N(()=>({width:g.value?"100%":`${_e.value}px`})),Ce=N(()=>{if((v.selectedProvider?ve.value.find(t=>t.provider===v.selectedProvider):void 0)?.models.includes(v.selectedModel))return{provider:v.selectedProvider,model:v.selectedModel};const e=ve.value.find(t=>t.models.length>0);return{provider:e?.provider||"",model:e?.models[0]||""}}),xa=N(()=>{const e=D.value;if(b.value){if(e?.type!=="node")return[];const t=st.value,o=!!Le.value||Yt(c.value),a=!!t?.node_sessions?.some(h=>h.node_id===e.id&&h.session_id),u=A.value.some(h=>h.source===e.id),W=[];return a&&W.push({key:"rerun-downstream-keep-node",label:l("workflow.actions.rerunDownstreamKeepNode"),disabled:o||!u}),W.push({key:"rerun-from-node-clear",label:l("workflow.actions.rerunDownstreamClearNode"),disabled:o}),W}return e?.type==="edge"?[{key:"delete-edge",label:l("workflow.actions.deleteEdge")}]:[{key:"delete-node",label:l("workflow.actions.deleteNode")}]}),Ca=N(()=>{const e=x.value,t=[];return(e?.status==="queued"||e?.status==="running")&&t.push({key:"stop-run",label:l("workflow.runs.stop")}),t.push({key:"delete-run",label:l("workflow.runs.delete")}),t}),Sa=N(()=>c.value||"workflow-empty");function at(e,t=qe.value){const o=nl(e);return o==="hermes"?`${o}:${t||"default"}`:o}function At(e,t=qe.value){return be.value[at(e,t)]||[]}function It(e,t=qe.value){return!!Ae.value[at(e,t)]}function we(e){return{...e,agentOptions:xe.value,skillOptions:At(e.agent),skillsLoading:It(e.agent),modelGroups:ve.value,onUpdate:uo,onUploadImages:fo}}function nt(){C.value=C.value.map(e=>({...e,data:we(e.data)}))}async function Ft(e,t=qe.value){const o=nl(e),a=at(e,t);if(be.value[a]||Te.has(a))return Te.get(a);Ae.value={...Ae.value,[a]:!0},nt();const u=gi(o==="hermes"?t:void 0,o).then(W=>{be.value={...be.value,[a]:Hi(W)}}).catch(W=>{console.error("Failed to load workflow skills:",W),be.value={...be.value,[a]:[]}}).finally(()=>{const{[a]:W,...h}=Ae.value;Ae.value=h,Te.delete(a),nt()});return Te.set(a,u),u}function it(){const e=new Set(C.value.map(t=>t.data.agent));for(const t of e)Ft(t)}function zt(e,t,o,a={}){return{id:e,type:"agent",position:o,dragHandle:".node-header",style:{width:"280px",height:"420px"},data:{title:t,agent:a.agent||xe.value[0]?.value||"hermes",provider:a.provider||Ce.value.provider,model:a.model||Ce.value.model,apiMode:a.apiMode||ft(a.provider||Ce.value.provider),input:a.input||"",skills:a.skills||[],images:a.images||[],status:a.status||"idle",agentOptions:xe.value,skillOptions:At(a.agent||xe.value[0]?.value||"hermes"),skillsLoading:It(a.agent||xe.value[0]?.value||"hermes"),modelGroups:ve.value,onUpdate:uo,onUploadImages:fo}}}function Bt(){return[]}const C=f(Bt()),A=f([]),I=f([]),He=N(()=>[...ze.value?I.value.filter(e=>e.profile===ze.value):I.value].sort((e,t)=>t.updatedAt-e.updatedAt)),Wa=N(()=>He.value.length>0),Et=N(()=>H.value.size),st=N(()=>b.value&&Q.value.find(e=>e.id===b.value)||null);vo([xe,ve],()=>{C.value=C.value.map(e=>({...e,data:{...e.data,...Pa(e.data)}})),nt()}),vo([R,E,C,A,T],()=>{lo()},{deep:!0}),Pn(()=>{typeof window>"u"||(Ve=window.matchMedia("(max-width: 768px)"),rt(Ve),Ve.addEventListener("change",rt),window.addEventListener("hermes:open-page-sidebar",Lt),window.addEventListener("resize",ut),ut(),Ia())}),_n(()=>{Ve?.removeEventListener("change",rt),window.removeEventListener("hermes:open-page-sidebar",Lt),window.removeEventListener("resize",ut),dt(),ot?.(),ot=null,Ti()});function rt(e){g.value=e.matches,r.value=!e.matches,e.matches&&(j.value=!1)}function Lt(){r.value=!0}function Ma(){if(typeof window>"u")return _t;const e=Number.parseInt(window.localStorage.getItem(bt)||"",10);return Number.isFinite(e)?Math.round(e):_t}function $a(){if(typeof window>"u")return 1180;if(g.value)return window.innerWidth;const e=ue.value?.clientWidth||window.innerWidth,t=e-(j.value?aa:0)-la;return Math.max(yt,Math.min(Math.floor(e*.72),t))}function Dt(e){const t=$a();return Math.min(t,Math.max(Math.min(yt,t),Math.round(e)))}function ut(){g.value||(_e.value=Dt(_e.value))}function Ot(e){const t=Oe.value;if(!t)return;const o=e.clientX-t.x;_e.value=Dt(t.width+o)}function dt(){Oe.value&&(Oe.value=null,window.removeEventListener("pointermove",Ot),window.removeEventListener("pointerup",dt),g.value||window.localStorage.setItem(bt,String(_e.value)),document.body.style.userSelect="",document.body.style.cursor="")}function Na(e){g.value||(e.preventDefault(),Oe.value={x:e.clientX,width:_e.value},window.addEventListener("pointermove",Ot),window.addEventListener("pointerup",dt),document.body.style.userSelect="none",document.body.style.cursor="col-resize")}function ct(){Ze.value=!1,tt.value=null,De.value=""}function ft(e){const t=ve.value.find(o=>o.provider===e);return ii(t?.api_mode,ni(t?.provider||e,t?.base_url))}function Pa(e){return ve.value.find(t=>t.provider===e.provider)?.models.includes(e.model)?{provider:e.provider,model:e.model,apiMode:e.apiMode||ft(e.provider)}:{provider:Ce.value.provider,model:Ce.value.model,apiMode:ft(Ce.value.provider)}}function Ra(e,t={}){return e.map(o=>({...o,position:{...o.position},style:{...o.style},data:we({...o.data,...t.resetRuntime?{status:"idle",statusError:null,readonly:!1}:{}})}))}function Aa(e){return e.map(t=>({...t,position:{...t.position},style:{...t.style},data:we({...t.data,status:"idle",statusError:null,readonly:!1})}))}function Tt(e){return e.map(t=>({...t}))}function Vt(e){return e.map(t=>({id:t.id,type:t.type,position:{...t.position},dragHandle:t.dragHandle,style:{...t.style},data:{title:t.data.title,agent:t.data.agent,provider:t.data.provider,model:t.data.model,apiMode:t.data.apiMode,input:t.data.input,skills:[...t.data.skills],images:[...t.data.images]}}))}function Ut(e){return e.map(t=>({...t}))}function qt(e){const t=e&&typeof e=="object"?e:{},o=Number(t.x),a=Number(t.y),u=Number(t.zoom);return{x:Number.isFinite(o)?o:q.x,y:Number.isFinite(a)?a:q.y,zoom:Number.isFinite(u)&&u>0?u:q.zoom}}function Ht(){return qt(B())}function jt(e,t){const o=e&&typeof e=="object"?e:{},a=o.data&&typeof o.data=="object"?o.data:{},u=o.position&&typeof o.position=="object"?{x:Number(o.position.x||80+t*320),y:Number(o.position.y||120)}:{x:80+t*320,y:120},W=zt(typeof o.id=="string"&&o.id?o.id:`agent-${t+1}`,typeof a.title=="string"&&a.title?a.title:l("workflow.newNodeTitle",{count:t+1}),u,{agent:a.agent,provider:a.provider,model:a.model,apiMode:a.apiMode,input:a.input,skills:Array.isArray(a.skills)?a.skills.filter(h=>typeof h=="string"):[],images:Array.isArray(a.images)?a.images.filter(h=>typeof h=="string"):[],status:"idle"});return{...W,dragHandle:typeof o.dragHandle=="string"&&o.dragHandle?o.dragHandle:".node-header",style:{width:typeof o.style?.width=="string"?o.style.width:W.style.width,height:typeof o.style?.height=="string"?o.style.height:W.style.height}}}function Kt(e){const t=e&&typeof e=="object"?e:{};return typeof t.source!="string"||typeof t.target!="string"?null:{id:typeof t.id=="string"&&t.id?t.id:`${t.source}-${t.target}`,source:t.source,target:t.target,sourceHandle:typeof t.sourceHandle=="string"?t.sourceHandle:"output",targetHandle:typeof t.targetHandle=="string"?t.targetHandle:"input",type:"smoothstep",animated:!!t.animated,markerEnd:gt.ArrowClosed}}function Gt(e){const t=e.reduce((o,a)=>{const u=a.id.match(/^agent-(\d+)$/);return u?Math.max(o,Number(u[1])):o},0);return Math.max(t+1,e.length+1,1)}function vt(e){const t=e.nodes.map(jt),o=e.edges.map(Kt).filter(a=>!!a);return{id:e.id,name:e.name,profile:e.profile||"default",workspace:e.workspace,nodes:t,edges:o,viewport:qt(e.viewport),nextNodeIndex:Gt(t),updatedAt:e.updated_at}}async function Ia(){await P.fetchProfiles(),Ne.value=Ue.value,ot=Ui(ht),await Fa(),al().then(Xt).catch(e=>{console.error("Failed to subscribe workflow statuses:",e)})}async function Fa(){ie.value=!0;try{let e;try{e=await Vi()}catch(u){console.warn("Failed to load workflows from socket, falling back to HTTP:",u),e=await Ni()}const t=e.map(vt),o=c.value;if(I.value=t,t.length===0){await je();return}const a=o?t.find(u=>u.id===o):null;if(o&&!a){await je();return}await Ke(a||t[0],!1)}catch(e){console.error("Failed to load workflows:",e)}finally{ie.value=!1}}function Xt(e){const t={...se.value};for(const o of e)t[o.workflowId]=o;se.value=t}function wt(e,t){const o=t?e?.nodeStatuses?.[t]:void 0,a=t?o:e?.status;switch(a){case"queued":case"running":case"completed":case"failed":case"canceled":return a;default:return"idle"}}function pt(e,t){return!e||e.status!=="failed"?null:(t?e.nodeStatuses?.[t]:void 0)==="failed"&&e.error||null}function Yt(e){const t=se.value[e]?.status;return t==="running"||t==="queued"}function za(e){const t=se.value[e];if(t?.runId&&t.runId===b.value)return t.status==="running"||t.status==="queued"?t:void 0}function Ba(e){return`status-${e||"idle"}`}function Ea(e){return l(`workflow.status.${e||"idle"}`)}function La(e){return e?new Date(e).toLocaleString():"-"}function Da(e){if(!e.started_at)return"-";const t=e.finished_at||Date.now(),o=Math.max(0,Math.round((t-e.started_at)/1e3));if(o<60)return`${o}s`;const a=Math.floor(o/60),u=o%60;if(a<60)return u?`${a}m ${u}s`:`${a}m`;const W=Math.floor(a/60),h=a%60;return h?`${W}h ${h}m`:`${W}h`}function Oa(e){return Array.isArray(e.snapshot_nodes)?e.snapshot_nodes.length:0}function Jt(e,t){const o=se.value[e.workflow_id];if(o?.runId===e.id)return wt(o,t);const a=e.node_sessions?.find(u=>u.node_id===t);switch(a?.status){case"queued":case"running":case"completed":case"failed":case"canceled":return a.status;case"blocked":return"failed";default:return e.status==="running"||e.status==="queued"?"queued":"idle"}}function Ta(e,t){const o=se.value[e.workflow_id];if(o?.runId===e.id)return pt(o,t);const a=e.node_sessions?.find(u=>u.node_id===t);return(a?.status==="failed"||a?.status==="blocked")&&(a.error||e.error)||null}async function Va(e){const t=st.value;if(!t)return;const o=C.value.find(u=>u.id===e),a=t.node_sessions?.find(u=>u.node_id===e);if(!a?.session_id){k.warning(l("workflow.runs.noNodeSession"));return}De.value=l("workflow.runs.nodeSessionTitle",{node:o?.data.title||e}),tt.value=a.session_id,Ze.value=!0,et.value=!0;try{const u=await si(a.session_id,a.profile||t.profile);if(!u){k.error(l("workflow.runs.loadNodeSessionFailed"));return}F.ensureSessionLoaded(u),await F.switchSession(a.session_id)}catch(u){console.error("Failed to load workflow node session:",u),k.error(l("workflow.runs.loadNodeSessionFailed"))}finally{et.value=!1}}async function re(e=c.value,t){if(!e){Q.value=[];return}Qe.value=!0;try{const o=await Fi(e,100);Q.value=o;const a=t||b.value;if(a){const u=o.find(W=>W.id===a);u?(b.value=u.id,await Qt(u)):b.value===a&&(b.value=null)}}catch(o){console.error("Failed to load workflow runs:",o)}finally{Qe.value=!1}}async function Qt(e){fe=!0,C.value=e.snapshot_nodes.map(jt).map(t=>({...t,data:we({...t.data,status:Jt(e,t.id),statusError:Ta(e,t.id),readonly:!0})})),A.value=e.snapshot_edges.map(Kt).filter(t=>!!t),T.value=Gt(C.value),await Se(),fe=!1,it()}async function mt(){const e=b.value;e&&(ce.value=new Set([...ce.value,e]));const t=new Set(K.value);t.delete(c.value),K.value=t,b.value=null;const o=I.value.find(a=>a.id===c.value);o&&await Ke(o,!1,{resetRuntime:!0})}async function je(){fe=!0,c.value="",R.value="",E.value=null,C.value=[],A.value=[],T.value=1,Q.value=[],b.value=null,ce.value=new Set,K.value=new Set,ct(),pe(),kt(),await Se(),fe=!1}async function Ua(e){if(b.value===e.id){await mt();return}const t=new Set(ce.value);t.delete(e.id),ce.value=t,b.value=e.id,await Qt(e)}function qa(e,t){e.preventDefault(),e.stopPropagation(),M.value=e.clientX,S.value=e.clientY,x.value=t,ae.value=!1,Se(()=>{ae.value=!0})}function kt(){ae.value=!1,x.value=null}async function Zt(){const e=!j.value;j.value=e,!e&&b.value&&await mt()}async function Ha(e){const t=x.value;if(kt(),!(!t||!c.value)){if(e==="stop-run"){try{const o=await zi(c.value,t.id);Q.value=Q.value.map(a=>a.id===o.id?{...a,...o}:a),await re(c.value,b.value),k.success(l("workflow.runs.stopRequested"))}catch(o){k.error(o?.message||l("workflow.runs.stopFailed"))}return}if(e==="delete-run")try{await Bi(c.value,t.id),Q.value=Q.value.filter(o=>o.id!==t.id),b.value===t.id&&await mt(),k.success(l("workflow.runs.deleteSuccess"))}catch(o){k.error(o?.message||l("common.deleteFailed"))}}}function ht(e){if(se.value={...se.value,[e.workflowId]:e},e.workflowId!==c.value)return;const t=e.status==="running"||e.status==="queued";if(!t){const o=new Set(K.value);o.delete(e.workflowId),K.value=o}e.runId&&(t&&K.value.has(e.workflowId)&&!ce.value.has(e.runId)?(j.value=!0,b.value=e.runId,re(e.workflowId,e.runId)):b.value===e.runId?re(e.workflowId,e.runId):j.value&&re(e.workflowId,null)),!(!b.value||b.value!==e.runId)&&(C.value=C.value.map(o=>({...o,data:we({...o.data,status:wt(e,o.id),statusError:pt(e,o.id)})})))}function ja(e){ze.value=e==="__all__"?null:e,H.value=new Set}function eo(){X.value=!X.value,X.value||(H.value=new Set,Ee.value=!1)}function to(e){const t=new Set(H.value);t.has(e)?t.delete(e):t.add(e),H.value=t}function oo(e){return H.value.has(e)}function Ka(){H.value=new Set(He.value.map(e=>e.id))}async function Ga(e){if(X.value){to(e);return}await Za(e)}async function Xa(){if(H.value.size===0||J.value)return;const e=[...H.value];J.value=!0;try{const t=await Ii(e),o=new Set(e.filter(a=>!t.errors.some(u=>u.id===a)));I.value=I.value.filter(a=>!o.has(a.id)),H.value=new Set,Ee.value=!1,X.value=!1,o.has(c.value)&&await je(),t.deleted>0&&k.success(l("workflow.batch.deleteSuccess",{count:t.deleted})),t.failed>0&&k.warning(l("workflow.batch.deletePartial",{failed:t.failed}))}catch(t){k.error(t?.message||l("workflow.batch.deleteFailed"))}finally{J.value=!1}}async function Ya(e){if(!ye.value.has(e)){ye.value=new Set([...ye.value,e]);try{await Ai(e),I.value=I.value.filter(o=>o.id!==e);const t=new Set(H.value);t.delete(e),H.value=t,e===c.value&&await je(),k.success(l("workflow.batch.deleteSuccess",{count:1}))}catch(t){k.error(t?.message||l("workflow.batch.deleteFailed"))}finally{const t=new Set(ye.value);t.delete(e),ye.value=t}}}function Ja(e){Me.value=e,ne.value=!0}function Qa(){lt.value=null}function lo(){fe||b.value||(I.value=I.value.map(e=>e.id===c.value?{...e,name:R.value.trim()||l("workflow.title"),workspace:E.value,nodes:Aa(C.value),edges:Tt(A.value),viewport:Ht(),nextNodeIndex:T.value,updatedAt:e.updatedAt}:e))}async function Ke(e,t,o={}){fe=!0,b.value=null,c.value=e.id,R.value=e.name,E.value=e.workspace;const a=za(e.id);C.value=Ra(e.nodes,{resetRuntime:o.resetRuntime}).map(u=>({...u,data:we({...u.data,status:o.resetRuntime?"idle":wt(a,u.id),statusError:o.resetRuntime?null:pt(a,u.id),readonly:!1})})),A.value=Tt(e.edges),T.value=e.nextNodeIndex,await Se(),await le(e.viewport,{duration:0}),fe=!1,it(),re(e.id),t&&g.value&&(r.value=!1)}async function Za(e){if(e===c.value){g.value&&(r.value=!1);return}lo();const t=I.value.find(a=>a.id===e);if(!t)return;const o=new Set(K.value);o.delete(e),K.value=o,await Ke(t,!0)}function en(){Be.value=`${l("workflow.title")} ${I.value.length+1}`,Ne.value=Ue.value,ge.value=null,$e.value=!0,P.profiles.length===0&&P.fetchProfiles()}async function ao(){const e=Be.value.trim();if(!e){k.warning(l("workflow.namePlaceholder"));return}Je.value=!0;try{const t=Bt(),o=vt(await Pi({name:e,profile:Ne.value||Ue.value,workspace:ge.value,nodes:Vt(t),edges:Ut([]),viewport:q}));I.value=[o,...I.value],$e.value=!1,await Ke(o,!0),al(o.id).then(Xt).catch(a=>{console.error("Failed to subscribe workflow status:",a)})}catch(t){k.error(t?.message||l("common.saveFailed"))}finally{Je.value=!1}}function no(e){return e.data.title.trim()||e.id}function tn(e,t){const o=new Set(e.map(y=>y.id)),a=new Map;for(const y of e)a.set(y.id,[]);for(const y of t)!o.has(y.source)||!o.has(y.target)||a.get(y.source)?.push(y.target);const u=new Set,W=new Set,h=y=>{if(u.has(y))return!0;if(W.has(y))return!1;u.add(y);for(const Ge of a.get(y)||[])if(h(Ge))return!0;return u.delete(y),W.add(y),!1};return e.some(y=>h(y.id))}function on(e,t){if(e.length<=1)return!0;const o=new Set(e.map(y=>y.id)),a=new Map;for(const y of e)a.set(y.id,[]);for(const y of t)!o.has(y.source)||!o.has(y.target)||(a.get(y.source)?.push(y.target),a.get(y.target)?.push(y.source));const u=e[0]?.id;if(!u)return!0;const W=new Set,h=[u];for(;h.length>0;){const y=h.pop();if(!(!y||W.has(y))){W.add(y);for(const Ge of a.get(y)||[])W.has(Ge)||h.push(Ge)}}return W.size===e.length}function io(e){return!!(e.source&&e.target&&e.source!==e.target&&e.sourceHandle==="output"&&e.targetHandle==="input")}function ln(){if(C.value.length===0)return l("workflow.validation.nodesRequired");for(const t of C.value){const o=no(t);if(!t.data.title.trim())return l("workflow.validation.nodeNameRequired",{node:t.id});if(!t.data.provider.trim())return l("workflow.validation.providerRequired",{node:o});if(!t.data.model.trim())return l("workflow.validation.modelRequired",{node:o});if(t.data.agent!=="hermes"&&!t.data.apiMode)return l("workflow.validation.apiModeRequired",{node:o});if(!t.data.input.trim())return l("workflow.validation.inputRequired",{node:o})}const e=new Set(C.value.map(t=>t.id));if(A.value.find(t=>!e.has(t.source)||!e.has(t.target)))return l("workflow.validation.invalidEdge");if(A.value.find(t=>t.sourceHandle!=="output"||t.targetHandle!=="input"))return l("workflow.validation.invalidConnectionDirection");if(C.value.length>1){const t=new Set;for(const a of A.value)t.add(a.source),t.add(a.target);const o=C.value.find(a=>!t.has(a.id));if(o)return l("workflow.validation.orphanNode",{node:no(o)});if(!on(C.value,A.value))return l("workflow.validation.disconnectedFlow")}return tn(C.value,A.value)?l("workflow.validation.cycle"):null}async function so(e={}){if(!c.value||Pe.value||b.value)return!1;const t=ln();if(t)return k.warning(t),!1;Pe.value=!0;try{const o=I.value.find(u=>u.id===c.value),a=vt(await Ri(c.value,{name:R.value.trim()||l("workflow.title"),workspace:E.value,nodes:Vt(C.value),edges:Ut(A.value),viewport:Ht()}));return I.value=I.value.map(u=>u.id===a.id?{...a,updatedAt:o?.updatedAt??a.updatedAt}:u),e.quiet||k.success(l("common.saved")),!0}catch(o){return k.error(o?.message||l("common.saveFailed")),!1}finally{Pe.value=!1}}async function an(){if(!c.value||Re.value||b.value)return;const e=c.value;if(await so({quiet:!0})){j.value=!0,ce.value=new Set,K.value=new Set([...K.value,e]),Re.value=!0;try{await Ei(e),re(e);const t=Date.now();ht({workflowId:e,status:"running",runId:null,startedAt:t,updatedAt:t,completedAt:null,error:null,nodeStatuses:sn(C.value,A.value)}),k.info(l("workflow.actions.executionStarted"))}catch(t){k.error(t?.message||l("workflow.actions.executionFailed"))}finally{Re.value=!1}}}async function ro(e,t){const o=c.value,a=st.value;if(!(!o||!a||Le.value)){Le.value=e,j.value=!0,K.value=new Set([...K.value,o]),ct();try{await Li(o,a.id,e,{preserve_start_node:t}),re(o,a.id);const u=Date.now(),W=Object.fromEntries(C.value.map(y=>[y.id,Jt(a,y.id)])),h=nn(e);t||h.add(e);for(const y of h)W[y]="queued";ht({workflowId:o,status:"running",runId:a.id,startedAt:u,updatedAt:u,completedAt:null,error:null,nodeStatuses:W}),k.info(l(t?"workflow.actions.rerunDownstreamStarted":"workflow.actions.rerunFromNodeStarted"))}catch(u){k.error(u?.message||l("workflow.actions.rerunFailed"))}finally{Le.value=null}}}function nn(e){const t=new Set,o=A.value.filter(a=>a.source===e).map(a=>a.target);for(;o.length>0;){const a=o.pop();if(!(!a||t.has(a))){t.add(a);for(const u of A.value.filter(W=>W.source===a))o.push(u.target)}}return t}function sn(e,t){const o=new Set(e.map(h=>h.id)),a=new Set(t.filter(h=>o.has(h.source)&&o.has(h.target)).map(h=>h.target)),u=e.filter(h=>!a.has(h.id)).map(h=>h.id),W=new Set(u.length>0?u:e.map(h=>h.id));return Object.fromEntries(e.map(h=>[h.id,W.has(h.id)?"running":"queued"]))}function uo(e,t){b.value||(C.value=C.value.map(o=>o.id===e?{...o,style:t.images?rn(o.style,t.images.length):o.style,data:we({...o.data,...t,skills:typeof t.agent=="string"&&t.agent!==o.data.agent?[]:t.skills??o.data.skills})}:o),typeof t.agent=="string"&&Ft(t.agent))}function rn(e,t){if(t<=0)return e;const o=Number.parseFloat(e.height||"420"),a=420+Math.min(2,Math.ceil(t/3))*68;return o>=a?e:{...e,height:`${a}px`}}function un(e){b.value||io(e)&&(A.value.some(t=>t.source===e.source&&t.target===e.target)||(A.value=[...A.value,{...e,id:`${e.source}-${e.target}`,type:"smoothstep",animated:!0,markerEnd:gt.ArrowClosed}]))}function dn(e){C.value=C.value.filter(t=>t.id!==e),A.value=A.value.filter(t=>t.source!==e&&t.target!==e)}function cn(e){A.value=A.value.filter(t=>t.id!==e)}function co(e,t){if(b.value&&t.type!=="node")return;e.preventDefault(),e.stopPropagation();const o="changedTouches"in e?e.changedTouches[0]:null;de.value=o?.clientX??("clientX"in e?e.clientX:0),V.value=o?.clientY??("clientY"in e?e.clientY:0),he.value=Date.now(),D.value=t,te.value=!1,Se(()=>{te.value=!0})}function fn(e){co(e.event,{type:"node",id:e.node.id})}function vn(e){b.value&&Va(e.node.id)}function wn(e){co(e.event,{type:"edge",id:e.edge.id})}function pe(){te.value=!1,D.value=null}function pn(){Date.now()-he.value<180||pe()}function mn(e){const t=D.value;if(e==="rerun-downstream-keep-node"&&t?.type==="node"){ro(t.id,!0),pe();return}if(e==="rerun-from-node-clear"&&t?.type==="node"){ro(t.id,!1),pe();return}if(b.value){pe();return}e==="delete-node"&&t?.type==="node"&&dn(t.id),e==="delete-edge"&&t?.type==="edge"&&cn(t.id),pe()}function kn(){const e=ke.value?.getBoundingClientRect();return e?L({x:e.left+48,y:e.top+48}):{x:80,y:120}}function hn(){const e=kn(),t={...e};for(let o=0;o<12;o+=1){if(!C.value.some(a=>Math.abs(a.position.x-t.x)<300&&Math.abs(a.position.y-t.y)<180))return t;t.x=e.x+(o+1)%3*320,t.y=e.y+Math.floor((o+1)/3)*220}return t}async function gn(){if(b.value)return;if(!c.value){k.warning(l("workflow.actions.createWorkflowFirst"));return}const e=`agent-${T.value}`;C.value=[...C.value,zt(e,l("workflow.newNodeTitle",{count:T.value}),hn())],T.value+=1,it(),await Se()}async function fo(e,t){return(await fi(t)).map(o=>o.path)}function yn(e){return e.data.status==="queued"?"#64748b":e.data.status==="running"?"#2563eb":e.data.status==="completed"?"#16a34a":e.data.status==="failed"?"#dc2626":e.data.status==="canceled"?"#f97316":"#9ca3af"}return(e,t)=>(d(),p("div",il,[n("div",{class:oe(["workflow-sidebar-backdrop",{active:r.value}]),onClick:t[0]||(t[0]=o=>r.value=!1)},null,2),n("aside",{class:oe(["workflow-sidebar",{collapsed:!r.value}])},[r.value?(d(),p("div",sl,[m(_i,{active:"workflow","primary-label":i(l)("workflow.actions.newWorkflow"),onPrimary:en},null,8,["primary-label"]),n("div",rl,[m(i(Fe),{class:"workflow-profile-filter",value:ze.value||"__all__",options:ya.value,size:"small",loading:i(P).loading,"onUpdate:value":ja},null,8,["value","options","loading"]),n("div",ul,[X.value?$("",!0):(d(),U(i(O),{key:0,quaternary:"",size:"tiny",title:i(l)("workflow.batch.toggle"),onClick:eo},{icon:_(()=>[...t[17]||(t[17]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("path",{d:"M9 11l3 3L22 4"}),n("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})],-1)])]),_:1},8,["title"])),X.value?(d(),U(i(O),{key:1,quaternary:"",size:"tiny",disabled:!Wa.value||J.value,title:i(l)("workflow.batch.selectAll"),onClick:Ka},{icon:_(()=>[...t[18]||(t[18]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("path",{d:"M9 11l3 3L22 4"}),n("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})],-1)])]),_:1},8,["disabled","title"])):$("",!0),X.value&&Et.value>0?(d(),U(i(mo),{key:2,show:Ee.value,"onUpdate:show":t[1]||(t[1]=o=>Ee.value=o),"positive-button-props":{loading:J.value,disabled:J.value},"negative-button-props":{disabled:J.value},onPositiveClick:Xa},{trigger:_(()=>[m(i(O),{quaternary:"",size:"tiny",type:"error",loading:J.value,disabled:J.value},{icon:_(()=>[...t[19]||(t[19]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("polyline",{points:"3 6 5 6 21 6"}),n("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])]),_:1},8,["loading","disabled"])]),default:_(()=>[Y(" "+w(i(l)("workflow.batch.confirmDelete",{count:Et.value})),1)]),_:1},8,["show","positive-button-props","negative-button-props"])):$("",!0),X.value?(d(),U(i(O),{key:3,quaternary:"",size:"tiny",disabled:J.value,onClick:eo},{icon:_(()=>[...t[20]||(t[20]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]),_:1},8,["disabled"])):$("",!0)])])])):$("",!0),r.value?(d(),p("div",dl,[ie.value?(d(),p("div",cl,w(i(l)("common.loading")),1)):He.value.length===0?(d(),p("div",fl,w(i(l)("common.noData")),1)):$("",!0),(d(!0),p(me,null,We(He.value,o=>(d(),p("button",{key:o.id,class:oe(["workflow-list-item",{active:o.id===c.value,selected:oo(o.id)}]),type:"button",onClick:a=>Ga(o.id)},[X.value?(d(),p("span",wl,[m(i(An),{checked:oo(o.id),onClick:z(a=>to(o.id),["stop"])},null,8,["checked","onClick"])])):$("",!0),n("span",{class:oe(["workflow-list-avatar-wrap",{streaming:Yt(o.id)}])},[m(di,{class:"workflow-list-avatar",name:o.profile,avatar:_a(o.profile),size:28},null,8,["name","avatar"])],2),n("span",pl,[n("span",ml,w(o.name),1),n("span",kl,w(o.profile)+" · "+w(o.nodes.length)+" "+w(i(l)("workflow.stats.nodes"))+" · "+w(o.edges.length)+" "+w(i(l)("workflow.stats.edges")),1)]),X.value?$("",!0):(d(),U(i(mo),{key:1,onPositiveClick:a=>Ya(o.id)},{trigger:_(()=>[n("button",{class:"workflow-list-delete",type:"button",title:i(l)("common.delete"),disabled:ye.value.has(o.id),onClick:t[2]||(t[2]=z(()=>{},["stop","prevent"]))},[...t[21]||(t[21]=[n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,hl)]),default:_(()=>[Y(" "+w(i(l)("workflow.batch.confirmDelete",{count:1})),1)]),_:2},1032,["onPositiveClick"]))],10,vl))),128))])):$("",!0),r.value?(d(),U(xi,{key:2})):$("",!0)],2),n("main",gl,[n("header",yl,[n("div",_l,[m(i(O),{class:"header-sidebar-toggle",quaternary:"",size:"small",circle:"",onClick:t[3]||(t[3]=o=>r.value=!r.value)},{icon:_(()=>[...t[22]||(t[22]=[n("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[n("rect",{x:"3",y:"3",width:"7",height:"7"}),n("rect",{x:"14",y:"3",width:"7",height:"7"}),n("rect",{x:"3",y:"14",width:"7",height:"7"}),n("rect",{x:"14",y:"14",width:"7",height:"7"})],-1)])]),_:1}),n("div",bl,[n("span",xl,w(R.value),1),n("button",{class:"workspace-badge",type:"button",title:E.value||i(l)("workflow.workspace.select"),onClick:t[4]||(t[4]=o=>Ja("active"))},[t[23]||(t[23]=n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[n("path",{d:"M3 7a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"})],-1)),n("span",null,w(E.value?E.value.split("/").pop()||E.value:i(l)("workflow.workspace.select")),1)],8,Cl)])]),n("div",Sl,[m(i(Ie),{trigger:"hover"},{trigger:_(()=>[m(i(O),{quaternary:"",size:"small",circle:"","aria-label":j.value?i(l)("workflow.runs.hide"):i(l)("workflow.runs.show"),onClick:Zt},{icon:_(()=>[j.value?(d(),p("svg",Wl,[...t[24]||(t[24]=[n("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"},null,-1),n("path",{d:"M15 4v16"},null,-1),n("path",{d:"M8 9h4"},null,-1),n("path",{d:"M8 13h4"},null,-1)])])):(d(),p("svg",Ml,[...t[25]||(t[25]=[n("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"},null,-1),n("path",{d:"M9 4v16"},null,-1),n("path",{d:"M13 9h4"},null,-1),n("path",{d:"M13 13h4"},null,-1)])]))]),_:1},8,["aria-label"])]),default:_(()=>[Y(" "+w(j.value?i(l)("workflow.runs.hide"):i(l)("workflow.runs.show")),1)]),_:1}),b.value?$("",!0):(d(),U(i(Ie),{key:0,trigger:"hover"},{trigger:_(()=>[m(i(O),{quaternary:"",size:"small",circle:"","aria-label":i(l)("workflow.actions.addNode"),onClick:gn},{icon:_(()=>[...t[26]||(t[26]=[n("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[n("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),n("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),_:1},8,["aria-label"])]),default:_(()=>[Y(" "+w(i(l)("workflow.actions.addNode")),1)]),_:1})),b.value?$("",!0):(d(),U(i(Ie),{key:1,trigger:"hover"},{trigger:_(()=>[m(i(O),{quaternary:"",size:"small",circle:"",loading:Pe.value,disabled:!c.value||Re.value,"aria-label":i(l)("common.save"),onClick:t[5]||(t[5]=()=>so())},{icon:_(()=>[...t[27]||(t[27]=[n("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.9","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[n("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),n("path",{d:"M17 21v-8H7v8"}),n("path",{d:"M7 3v5h8"})],-1)])]),_:1},8,["loading","disabled","aria-label"])]),default:_(()=>[Y(" "+w(i(l)("common.save")),1)]),_:1})),b.value?$("",!0):(d(),U(i(Ie),{key:2,trigger:"hover"},{trigger:_(()=>[m(i(O),{quaternary:"",size:"small",circle:"",loading:Re.value,disabled:!c.value||Pe.value,"aria-label":i(l)("workflow.actions.startExecution"),onClick:an},{icon:_(()=>[...t[28]||(t[28]=[n("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[n("path",{d:"M8 5v14l11-7z"})],-1)])]),_:1},8,["loading","disabled","aria-label"])]),default:_(()=>[Y(" "+w(i(l)("workflow.actions.startExecution")),1)]),_:1}))])]),m(i(ia),{show:ne.value,"onUpdate:show":t[8]||(t[8]=o=>ne.value=o),preset:"card",title:i(l)("workflow.workspace.title"),style:{width:"min(720px, calc(100vw - 32px))"}},{footer:_(()=>[m(i(wo),{justify:"end"},{default:_(()=>[m(i(O),{onClick:Qa},{default:_(()=>[Y(w(i(l)("workflow.workspace.clear")),1)]),_:1}),m(i(O),{type:"primary",onClick:t[7]||(t[7]=o=>ne.value=!1)},{default:_(()=>[Y(w(i(l)("common.confirm")),1)]),_:1})]),_:1})]),default:_(()=>[m(go,{modelValue:lt.value,"onUpdate:modelValue":t[6]||(t[6]=o=>lt.value=o)},null,8,["modelValue"])]),_:1},8,["show","title"]),n("div",{ref_key:"workflowBodyRef",ref:ue,class:"workflow-body"},[Ze.value?(d(),p("aside",{key:0,class:"workflow-chat-panel",style:Nn(ba.value)},[n("div",{class:"workflow-chat-resize-handle",onPointerdown:Na},null,32),n("div",$l,[n("header",Nl,[n("div",{class:"workflow-chat-title",title:De.value},w(De.value),9,Pl),m(i(O),{quaternary:"",size:"tiny",circle:"","aria-label":i(l)("common.cancel"),onClick:ct},{icon:_(()=>[...t[29]||(t[29]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]),_:1},8,["aria-label"])]),n("div",Rl,[et.value?(d(),p("div",Al,w(i(l)("common.loading")),1)):tt.value?(d(),p(me,{key:1},[m(ki),m(mi)],64)):(d(),p("div",Il,w(i(l)("chat.noVisibleMessages")),1))])])],4)):$("",!0),n("section",{ref_key:"workflowCanvasRef",ref:ke,class:"workflow-canvas","aria-label":"Workflow canvas"},[(d(),U(i(In),{key:Sa.value,id:"hermes-workflow",nodes:C.value,"onUpdate:nodes":t[9]||(t[9]=o=>C.value=o),edges:A.value,"onUpdate:edges":t[10]||(t[10]=o=>A.value=o),"fit-view-on-init":!1,"default-viewport":q,"min-zoom":.25,"max-zoom":1.4,"nodes-draggable":!b.value,"nodes-connectable":!b.value,"elements-selectable":!b.value,"connection-line-type":i(Tn).SmoothStep,"is-valid-connection":io,"default-edge-options":{type:"smoothstep",markerEnd:i(gt).ArrowClosed},class:"workflow-flow",onConnect:un,onNodeClick:vn,onNodeContextMenu:fn,onEdgeContextMenu:wn,onPaneClick:pe},{"node-agent":_(o=>[m(ma,$n(Wn(o)),null,16)]),default:_(()=>[m(i(Ln),{gap:24,size:1.2,color:"var(--border-color)"}),m(i(Bn),{pannable:"",zoomable:"","node-color":yn}),m(i(Gn))]),_:1},8,["nodes","edges","nodes-draggable","nodes-connectable","elements-selectable","connection-line-type","default-edge-options"])),m(i(po),{placement:"bottom-start",trigger:"manual",x:de.value,y:V.value,options:xa.value,show:te.value,onSelect:mn,onClickoutside:pn},null,8,["x","y","options","show"])],512),j.value?(d(),p("aside",Fl,[n("div",zl,[n("div",Bl,w(i(l)("workflow.runs.title")),1),n("div",El,[n("button",{class:"workflow-runs-refresh",type:"button",title:i(l)("workflow.runs.refresh"),onClick:t[11]||(t[11]=o=>re())},[...t[30]||(t[30]=[Mn('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-v-5a8ef3b3><path d="M21 12a9 9 0 0 1-15.5 6.2" data-v-5a8ef3b3></path><path d="M3 12a9 9 0 0 1 15.5-6.2" data-v-5a8ef3b3></path><path d="M18 3v5h-5" data-v-5a8ef3b3></path><path d="M6 21v-5h5" data-v-5a8ef3b3></path></svg>',1)])],8,Ll),n("button",{class:"workflow-runs-refresh workflow-runs-close",type:"button",title:i(l)("common.cancel"),onClick:Zt},[...t[31]||(t[31]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.9","stroke-linecap":"round","aria-hidden":"true"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,Dl)])]),Qe.value?(d(),p("div",Ol,w(i(l)("common.loading")),1)):Q.value.length===0?(d(),p("div",Tl,w(i(l)("workflow.runs.empty")),1)):(d(),p("div",Vl,[(d(!0),p(me,null,We(Q.value,o=>(d(),p("button",{key:o.id,class:oe(["workflow-run-item",{active:b.value===o.id}]),type:"button",onClick:a=>Ua(o),onContextmenu:a=>qa(a,o)},[n("div",ql,[n("span",{class:oe(["workflow-run-status",Ba(o.status)])},[t[32]||(t[32]=n("span",{class:"workflow-run-status-dot"},null,-1)),n("span",null,w(Ea(o.status)),1)],2),n("span",Hl,w(Da(o)),1)]),n("div",jl,w(La(o.started_at||o.created_at)),1),n("div",Kl,[Y(w(Oa(o))+" "+w(i(l)("workflow.stats.nodes"))+" ",1),o.start_node_ids.length>0?(d(),p("span",Gl,"· "+w(i(l)("workflow.runs.startNodes",{count:o.start_node_ids.length})),1)):$("",!0)]),o.error?(d(),p("div",{key:0,class:"workflow-run-error",title:o.error},w(o.error),9,Xl)):$("",!0)],42,Ul))),128))])),m(i(po),{placement:"bottom-start",trigger:"manual",x:M.value,y:S.value,options:Ca.value,show:ae.value,onSelect:Ha,onClickoutside:kt},null,8,["x","y","options","show"])])):$("",!0)],512)]),m(i(bn),{show:$e.value,"onUpdate:show":t[16]||(t[16]=o=>$e.value=o),placement:"right",width:420},{default:_(()=>[m(i(xn),{title:i(l)("workflow.actions.newWorkflow"),closable:""},{footer:_(()=>[m(i(wo),{justify:"end"},{default:_(()=>[m(i(O),{onClick:t[15]||(t[15]=o=>$e.value=!1)},{default:_(()=>[Y(w(i(l)("common.cancel")),1)]),_:1}),m(i(O),{type:"primary",loading:Je.value,onClick:ao},{default:_(()=>[Y(w(i(l)("common.create")),1)]),_:1},8,["loading"])]),_:1})]),default:_(()=>[n("div",Yl,[n("label",Jl,[n("span",Ql,w(i(l)("workflow.namePlaceholder")),1),m(i(Xe),{value:Be.value,"onUpdate:value":t[12]||(t[12]=o=>Be.value=o),placeholder:i(l)("workflow.namePlaceholder"),onKeydown:xt(z(ao,["prevent"]),["enter"])},null,8,["value","placeholder","onKeydown"])]),n("label",Zl,[n("span",ea,w(i(l)("workflow.profile")),1),m(i(Fe),{value:Ne.value,"onUpdate:value":t[13]||(t[13]=o=>Ne.value=o),options:Rt.value,loading:i(P).loading},null,8,["value","options","loading"])]),n("div",ta,[n("span",oa,w(i(l)("workflow.workspace.select")),1),m(go,{modelValue:ge.value,"onUpdate:modelValue":t[14]||(t[14]=o=>ge.value=o)},null,8,["modelValue"])])])]),_:1},8,["title"])]),_:1},8,["show"])]))}})})),Ki=G((()=>{})),Gi,Xi=G((()=>{na(),na(),Ki(),Nt(),Gi=Pt(ga,[["__scopeId","data-v-5a8ef3b3"]])}));Xi();export{Gi as default};
|
|
1
|
+
import{n as G}from"./rolldown-runtime-M0oDzQ_3.js";import{$t as xt,An as _n,Bn as vo,Hn as _,I as bn,It as Xe,K as ia,Kt as Ct,M as wo,Nn as We,Ot as O,P as xn,Qt as Cn,Un as Sn,V as sa,_n as Wn,an as n,cn as p,cr as i,dn as Mn,dr as $n,en as z,er as f,fn as Y,fr as Nn,hn as St,in as N,jn as d,kn as Pn,mt as Fe,nn as Rn,nt as po,on as U,ot as Ie,pn as m,pr as w,sn as $,t as Wt,tn as me,ur as oe,w as mo,wn as Se,wt as An}from"./ui-vendor-DDMfmCj2.js";import{O as Mt,_ as In,a as Fn,b as zn,c as Bn,d as En,f as Ln,g as ko,h as gt,i as Dn,k as $t,l as On,m as Tn,n as Vn,o as Un,p as qn,r as Hn,s as jn,t as Kn,u as Gn,v as ho,y as ra}from"./vue-vendor-BsMpqyaC.js";import{a as Xn,f as ee,n as Nt,o as Yn,s as Jn,t as Pt,u as ua}from"./_plugin-vue_export-helper-CvnFozKy.js";import{M as Qn,j as Zn}from"./vendor-B1Lfatlz.js";import{Dt as ei,E as ti,Et as oi,Ot as da,T as li,Tt as ai,et as ni,it as ii,kt as ca,mt as si,tt as ri,vt as ui,wt as di}from"./index-B2IKGvbR.js";import{a as ci,c as fi,o as fa}from"./files-CBYc0MSs.js";import{a as go,i as vi,n as wi,o as pi,r as mi,t as ki}from"./MessageList-Ds_mjMbf.js";import{l as hi,s as gi}from"./skills-5qxphanX.js";import{i as yi,r as _i}from"./SettingsCircuitBadge-Eiv8LQz0.js";import{n as bi,t as xi}from"./PageSidebarFooter-Dk-OfmNy.js";var yo,_o,bo,xo,Co,So,Wo,Mo,$o,No,Po,Ro,Ao,Io,Fo,zo,Bo,va,Eo=G((()=>{Ct(),Wt(),Mt(),da(),yo={class:"workflow-model-selector"},_o=["disabled"],bo=["title"],xo={class:"model-list"},Co=["onClick"],So={class:"model-group-label"},Wo={class:"model-group-count"},Mo={class:"model-group-items"},$o=["title","onClick"],No={class:"model-item-label"},Po={class:"model-item-name"},Ro={key:0,class:"model-item-id"},Ao={key:0,class:"model-badge-preview"},Io={key:1,class:"model-badge-disabled"},Fo={key:2,class:"model-badge-custom"},zo={key:3,class:"model-check",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},Bo={key:0,class:"model-empty"},va=St({__name:"WorkflowModelSelector",props:{provider:{},model:{},groups:{},disabled:{type:Boolean}},emits:["select"],setup(s,{emit:l}){const v=s,F=l,{t:P}=$t(),k=ca(),L=f(!1),B=f(""),le=f({}),q=N(()=>v.groups.map(M=>({...M,models:[...M.models,...(k.customModels[M.provider]||[]).filter(S=>!M.models.includes(S))]}))),ue=N(()=>q.value.find(M=>M.provider===v.provider&&M.models.includes(v.model))),ke=N(()=>v.model?ue.value?k.displayModelName(v.model,v.provider):v.model:""),T=N(()=>{const M=B.value.trim().toLowerCase();return M?q.value.map(S=>({...S,models:S.models.filter(x=>{const R=k.displayModelName(x,S.provider);return x.toLowerCase().includes(M)||R.toLowerCase().includes(M)})})).filter(S=>S.models.length>0||S.label.toLowerCase().includes(M)):q.value});function te(){v.disabled||(le.value={},B.value="",L.value=!0)}function de(M){le.value[M]=!le.value[M]}function V(M){return!!le.value[M]}function he(M,S){return(k.customModels[S]||[]).includes(M)}function D(M,S){return k.getModelAlias(M,S)}function ae(M,S){M.model_meta?.[S]?.disabled||(F("select",{provider:M.provider,model:S,apiMode:M.api_mode}),L.value=!1)}return(M,S)=>(d(),p("div",yo,[n("button",{class:"model-trigger",type:"button",disabled:v.disabled,onClick:te},[n("span",{class:"model-name",title:v.model},w(ke.value||i(P)("models.selectModel")),9,bo),S[2]||(S[2]=n("svg",{class:"model-arrow",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("polyline",{points:"6 9 12 15 18 9"})],-1))],8,_o),m(i(ia),{show:L.value,"onUpdate:show":S[1]||(S[1]=x=>L.value=x),preset:"card",title:i(P)("models.title"),style:{width:"min(480px, calc(100vw - 32px))"},"mask-closable":!0},{default:_(()=>[m(i(Xe),{value:B.value,"onUpdate:value":S[0]||(S[0]=x=>B.value=x),placeholder:i(P)("models.searchPlaceholder"),clearable:"",size:"small",class:"model-search"},null,8,["value","placeholder"]),n("div",xo,[(d(!0),p(me,null,We(T.value,x=>(d(),p("div",{key:x.provider,class:"model-group"},[n("div",{class:"model-group-header",onClick:R=>de(x.provider)},[(d(),p("svg",{class:oe(["model-group-arrow",{collapsed:V(x.provider)}]),width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[...S[3]||(S[3]=[n("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),n("span",So,w(x.label||x.provider),1),n("span",Wo,w(x.models.length),1)],8,Co),Sn(n("div",Mo,[(d(!0),p(me,null,We(x.models,R=>(d(),p("div",{key:`${x.provider}:${R}`,class:oe(["model-item",{active:R===v.model&&x.provider===v.provider,disabled:!!x.model_meta?.[R]?.disabled}]),title:x.model_meta?.[R]?.disabled?i(P)("models.disabledTooltip"):"",onClick:E=>ae(x,R)},[n("span",No,[n("span",Po,w(i(k).displayModelName(R,x.provider)),1),D(R,x.provider)?(d(),p("span",Ro,w(i(P)("models.aliasCanonical",{model:R})),1)):$("",!0)]),x.model_meta?.[R]?.preview?(d(),p("span",Ao,w(i(P)("models.previewBadge")),1)):$("",!0),x.model_meta?.[R]?.disabled?(d(),p("span",Io,w(i(P)("models.disabledBadge")),1)):$("",!0),he(R,x.provider)?(d(),p("span",Fo,w(i(P)("models.customBadge")),1)):$("",!0),R===v.model&&x.provider===v.provider?(d(),p("svg",zo,[...S[4]||(S[4]=[n("polyline",{points:"20 6 9 17 4 12"},null,-1)])])):$("",!0)],10,$o))),128))],512),[[Cn,!V(x.provider)]])]))),128)),T.value.length===0?(d(),p("div",Bo,w(B.value?i(P)("models.noResults"):i(P)("models.noModels")),1)):$("",!0)])]),_:1},8,["show","title"])]))}})})),Ci=G((()=>{})),wa,Si=G((()=>{Eo(),Eo(),Ci(),Nt(),wa=Pt(va,[["__scopeId","data-v-48090a54"]])})),Lo,Do,Oo,To,Vo,Uo,qo,Ho,jo,Ko,Go,Xo,Yo,Jo,Qo,Zo,el,tl,ol,pa,ll=G((()=>{Ct(),ra(),jn(),Wt(),Mt(),Si(),fa(),Fn(),Lo={class:"node-header"},Do={class:"node-status-with-tip"},Oo={class:"node-status-label"},To={class:"node-status-tip"},Vo={key:1,class:"node-status-with-tip"},Uo={class:"node-status-label"},qo={class:"node-images"},Ho={key:0,class:"image-preview-grid"},jo=["title","onClick","onKeydown"],Ko=["src","alt"],Go=["aria-label","onClick"],Xo={key:1,class:"file-paths"},Yo=["title","href"],Jo={class:"file-name"},Qo=["aria-label","onClick"],Zo=["disabled","aria-label"],el={key:0,width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},tl={key:1,class:"image-upload-loading","aria-hidden":"true"},ol=["src","alt"],pa=St({__name:"WorkflowAgentNode",props:{id:{},type:{},selected:{type:Boolean},connectable:{type:[Boolean,Number,String,Function]},position:{},dimensions:{},label:{},isValidTargetPos:{type:Function},isValidSourcePos:{type:Function},parent:{},parentNodeId:{},dragging:{type:Boolean},resizing:{type:Boolean},zIndex:{},targetPosition:{},sourcePosition:{},dragHandle:{},data:{},events:{}},setup(s){const l=s,{t:v}=$t(),F=sa(),P=f(null),k=f(!1),L=f(""),B=f(!1),le=N(()=>`status-${l.data.status}`),q=N(()=>v(`workflow.status.${l.data.status}`)),ue=N(()=>l.data.status==="failed"&&l.data.statusError?.trim()?l.data.statusError.trim():""),ke=N(()=>l.data.agent!=="hermes"),T=N(()=>[{label:v("codingAgents.protocolOpenAiChat"),value:"chat_completions"},{label:v("codingAgents.protocolOpenAiResponses"),value:"codex_responses"},{label:v("codingAgents.protocolAnthropicMessages"),value:"anthropic_messages"}]),te=N(()=>l.data.images.filter(E)),de=N(()=>l.data.images.filter(c=>!E(c)));function V(c,r){l.data.onUpdate(l.id,{[c]:r})}function he(c){const r={provider:c.provider,model:c.model};(c.apiMode==="chat_completions"||c.apiMode==="codex_responses"||c.apiMode==="anthropic_messages")&&(r.apiMode=c.apiMode),l.data.onUpdate(l.id,r)}function D(c){l.data.readonly||c.stopPropagation()}function ae(){k.value||P.value?.click()}async function M(c){if(k.value)return;const r=c.target instanceof HTMLInputElement?c.target:null,g=Array.from(r?.files||[]);g.length!==0&&(await Me(g),r&&(r.value=""))}function S(c){V("images",l.data.images.filter(r=>r!==c))}function x(c){return c.split("/").pop()||c}function R(c){return ci(c,x(c))}function E(c){return/\.(png|jpe?g|gif|webp|bmp|svg|ico)$/i.test(c.split("?")[0]||c)}function ne(c){L.value=c,B.value=!0}async function Me(c){k.value=!0;try{const r=await l.data.onUploadImages(l.id,c);V("images",[...l.data.images,...r])}catch(r){F.error(r?.message||v("files.uploadFailed"))}finally{k.value=!1}}return(c,r)=>(d(),p("div",{class:oe(["workflow-agent-node",[le.value,{selected:s.selected}]])},[m(i(Un),{"is-visible":s.selected&&!s.data.readonly,"min-width":260,"min-height":360,color:"var(--accent-info)","handle-class-name":"workflow-resize-handle","line-class-name":"workflow-resize-line"},null,8,["is-visible"]),m(i(ho),{id:"input",type:"target",position:i(ko).Left,class:"workflow-handle input-handle"},null,8,["position"]),n("div",Lo,[ue.value?(d(),U(i(Ie),{key:0,trigger:"hover",placement:"top"},{trigger:_(()=>[n("span",Do,[r[14]||(r[14]=n("span",{class:"node-status-dot"},null,-1)),n("span",Oo,w(q.value),1)])]),default:_(()=>[n("span",To,w(ue.value),1)]),_:1})):(d(),p("span",Vo,[r[15]||(r[15]=n("span",{class:"node-status-dot"},null,-1)),n("span",Uo,w(q.value),1)]))]),n("div",{class:"node-controls nodrag nopan",onClick:D,onPointerdown:D,onPointerup:D,onMousedown:D,onMouseup:D,onTouchstart:D,onTouchend:D},[m(i(Xe),{value:s.data.title,size:"small",disabled:s.data.readonly,placeholder:i(v)("workflow.node.title"),"onUpdate:value":r[0]||(r[0]=g=>V("title",g))},null,8,["value","disabled","placeholder"]),m(i(Fe),{value:s.data.agent,options:s.data.agentOptions,size:"small",disabled:s.data.readonly,placeholder:i(v)("workflow.node.agent"),"onUpdate:value":r[1]||(r[1]=g=>V("agent",g))},null,8,["value","options","disabled","placeholder"]),m(wa,{provider:s.data.provider,model:s.data.model,groups:s.data.modelGroups,disabled:s.data.readonly,onSelect:he},null,8,["provider","model","groups","disabled"]),ke.value?(d(),U(i(Fe),{key:0,value:s.data.apiMode,options:T.value,size:"small",disabled:s.data.readonly,placeholder:i(v)("workflow.node.apiMode"),"onUpdate:value":r[2]||(r[2]=g=>V("apiMode",g))},null,8,["value","options","disabled","placeholder"])):$("",!0),m(i(Fe),{value:s.data.skills,options:s.data.skillOptions,loading:s.data.skillsLoading,multiple:"",tag:"",filterable:"",size:"small",disabled:s.data.readonly,placeholder:i(v)("workflow.node.skillsPlaceholder"),"onUpdate:value":r[3]||(r[3]=g=>V("skills",g))},null,8,["value","options","loading","disabled","placeholder"]),m(i(Xe),{class:"node-prompt-input",value:s.data.input,type:"textarea",size:"small",resizable:!1,disabled:s.data.readonly,"input-props":{style:{height:"100%",resize:"none"}},placeholder:i(v)("workflow.node.promptPlaceholder"),"onUpdate:value":r[4]||(r[4]=g=>V("input",g))},null,8,["value","disabled","placeholder"]),n("div",qo,[n("input",{ref_key:"attachmentInputRef",ref:P,class:"image-upload-input",type:"file",multiple:"",onChange:M},null,544),te.value.length>0?(d(),p("div",Ho,[(d(!0),p(me,null,We(te.value,g=>(d(),p("div",{key:g,class:"image-preview",title:g,role:"button",tabindex:"0",onClick:z(ie=>ne(g),["stop"]),onKeydown:[xt(z(ie=>ne(g),["stop","prevent"]),["enter"]),xt(z(ie=>ne(g),["stop","prevent"]),["space"])]},[n("img",{src:R(g),alt:x(g)},null,8,Ko),s.data.readonly?$("",!0):(d(),p("button",{key:0,class:"image-remove",type:"button","aria-label":i(v)("common.delete"),onPointerdown:r[5]||(r[5]=z(()=>{},["stop"])),onPointerup:r[6]||(r[6]=z(()=>{},["stop"])),onMousedown:r[7]||(r[7]=z(()=>{},["stop"])),onMouseup:r[8]||(r[8]=z(()=>{},["stop"])),onClick:z(ie=>S(g),["stop","prevent"])},[...r[16]||(r[16]=[n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],40,Go))],40,jo))),128))])):$("",!0),de.value.length>0?(d(),p("div",Xo,[(d(!0),p(me,null,We(de.value,g=>(d(),p("a",{key:g,class:"file-path",title:g,href:R(g),target:"_blank",rel:"noopener noreferrer",onClick:r[9]||(r[9]=z(()=>{},["stop"]))},[r[18]||(r[18]=n("svg",{class:"file-icon",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","aria-hidden":"true"},[n("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),n("polyline",{points:"14 2 14 8 20 8"})],-1)),n("span",Jo,w(x(g)),1),s.data.readonly?$("",!0):(d(),p("button",{key:0,class:"file-remove",type:"button","aria-label":i(v)("common.delete"),onClick:z(ie=>S(g),["stop","prevent"])},[...r[17]||(r[17]=[n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,Qo))],8,Yo))),128))])):$("",!0),s.data.readonly?$("",!0):(d(),p("button",{key:2,class:"image-upload-trigger",type:"button",disabled:k.value,"aria-label":i(v)("workflow.node.uploadImages"),onClick:z(ae,["stop","prevent"]),onPointerdown:r[10]||(r[10]=z(()=>{},["stop"])),onPointerup:r[11]||(r[11]=z(()=>{},["stop"]))},[k.value?(d(),p("span",tl)):(d(),p("svg",el,[...r[19]||(r[19]=[n("path",{d:"M12 5v14"},null,-1),n("path",{d:"M5 12h14"},null,-1)])]))],40,Zo))])],32),m(i(ho),{id:"output",type:"source",position:i(ko).Right,class:"workflow-handle output-handle"},null,8,["position"]),(d(),U(Rn,{to:"body"},[B.value&&E(L.value)?(d(),p("div",{key:0,class:"image-preview-overlay",onClick:r[13]||(r[13]=z(g=>B.value=!1,["self"]))},[n("img",{class:"image-preview-img",src:R(L.value),alt:x(L.value),onClick:r[12]||(r[12]=g=>B.value=!1)},null,8,ol)])):$("",!0)]))],2))}})})),Wi=G((()=>{})),ma,Mi=G((()=>{ll(),ll(),Wi(),Nt(),ma=Pt(pa,[["__scopeId","data-v-e2d65d71"]])}));function $i(s,l){if(!l)return s;const v=new URLSearchParams;return v.set("profile",l),`${s}?${v}`}async function Ni(s){return(await ee($i("/api/hermes/workflows",s))).workflows}async function Pi(s){return(await ee("/api/hermes/workflows",{method:"POST",body:JSON.stringify(s)})).workflow}async function Ri(s,l){return(await ee(`/api/hermes/workflows/${encodeURIComponent(s)}`,{method:"PATCH",body:JSON.stringify(l)})).workflow}async function Ai(s){await ee(`/api/hermes/workflows/${encodeURIComponent(s)}`,{method:"DELETE"})}async function Ii(s){return ee("/api/hermes/workflows/batch-delete",{method:"POST",body:JSON.stringify({ids:s})})}async function Fi(s,l=100){const v=new URLSearchParams;return v.set("limit",String(l)),(await ee(`/api/hermes/workflows/${encodeURIComponent(s)}/runs?${v}`)).runs}async function zi(s,l){return(await ee(`/api/hermes/workflows/${encodeURIComponent(s)}/runs/${encodeURIComponent(l)}/stop`,{method:"POST"})).run}async function Bi(s,l){await ee(`/api/hermes/workflows/${encodeURIComponent(s)}/runs/${encodeURIComponent(l)}`,{method:"DELETE"})}async function Ei(s,l={}){return ee(`/api/hermes/workflows/${encodeURIComponent(s)}/run`,{method:"POST",body:JSON.stringify(l)})}async function Li(s,l,v,F={}){return ee(`/api/hermes/workflows/${encodeURIComponent(s)}/runs/${encodeURIComponent(l)}/rerun-from-node`,{method:"POST",body:JSON.stringify({...F,node_id:v})})}var Di=G((()=>{ua()}));function Oi(s){return s||Xn()||"default"}function ka(s){const l=Oi(s);return Z&&Ye===l||(Z&&(Z.disconnect(),Z=null),Ye=l,Z=Qn(`${Jn()}/workflow`,{auth:{token:Yn()},query:{profile:l},transports:["websocket","polling"],reconnection:!0,reconnectionAttempts:1/0,reconnectionDelay:1e3,reconnectionDelayMax:3e4,randomizationFactor:.5,timeout:3e4})),Z}function Ti(){Z?.disconnect(),Z=null,Ye=null}function ha(s,l,v){const F=ka(v);return new Promise((P,k)=>{F.timeout(3e4).emit(s,l,(L,B)=>{if(L){k(L);return}if(!B?.ok){k(new Error(B?.error||`${s} failed`));return}P(B.data)})})}async function Vi(s){return(await ha("workflows.list",s?{profile:s}:{},s)).workflows}async function al(s,l){return(await ha("workflow.status.subscribe",s?{workflowId:s}:{},l)).statuses}function Ui(s,l){const v=ka(l);return v.on("workflow.status.updated",s),()=>v.off("workflow.status.updated",s)}var Z,Ye,qi=G((()=>{Zn(),ua(),Z=null,Ye=null}));function nl(s){return s==="claude-code"?"claude":s==="codex"?"codex":"hermes"}function Hi(s){const l=new Map;for(const v of s.categories||[])for(const F of v.skills||[])F.enabled!==!1&&(l.has(F.name)||l.set(F.name,F));return[...l.values()].map(v=>({label:v.name,value:v.name})).sort((v,F)=>v.label.localeCompare(F.label))}var ji=G((()=>{})),il,sl,rl,ul,dl,cl,fl,vl,wl,pl,ml,kl,hl,gl,yl,_l,bl,xl,Cl,Sl,Wl,Ml,$l,Nl,Pl,Rl,Al,Il,Fl,zl,Bl,El,Ll,Dl,Ol,Tl,Vl,Ul,ql,Hl,jl,Kl,Gl,Xl,Yl,Jl,Ql,Zl,ea,ta,oa,yt,_t,la,aa,bt,ga,na=G((()=>{Ct(),Wt(),ra(),qn(),En(),On(),Mt(),Mi(),pi(),vi(),wi(),ai(),yi(),bi(),da(),li(),oi(),fa(),Di(),qi(),hi(),ui(),ri(),ji(),Dn(),Hn(),Vn(),Kn(),il={class:"workflow-view"},sl={key:0,class:"page-sidebar-top"},rl={class:"workflow-list-toolbar"},ul={class:"workflow-list-actions"},dl={key:1,class:"workflow-list"},cl={key:0,class:"workflow-list-empty"},fl={key:1,class:"workflow-list-empty"},vl=["onClick"],wl={key:0,class:"workflow-select-indicator"},pl={class:"workflow-list-main"},ml={class:"workflow-list-name"},kl={class:"workflow-list-meta"},hl=["title","disabled"],gl={class:"workflow-main"},yl={class:"page-header"},_l={class:"header-left"},bl={class:"header-workflow-meta"},xl={class:"header-workflow-title"},Cl=["title"],Sl={class:"header-actions"},Wl={key:0,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},Ml={key:1,width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},$l={class:"workflow-chat-panel-inner"},Nl={class:"workflow-chat-header"},Pl=["title"],Rl={class:"workflow-chat-content"},Al={key:0,class:"workflow-chat-loading"},Il={key:2,class:"workflow-chat-loading"},Fl={key:1,class:"workflow-runs-panel"},zl={class:"workflow-runs-header"},Bl={class:"workflow-runs-title"},El={class:"workflow-runs-header-actions"},Ll=["title"],Dl=["title"],Ol={key:0,class:"workflow-runs-empty"},Tl={key:1,class:"workflow-runs-empty"},Vl={key:2,class:"workflow-runs-list"},Ul=["onClick","onContextmenu"],ql={class:"workflow-run-topline"},Hl={class:"workflow-run-duration"},jl={class:"workflow-run-time"},Kl={class:"workflow-run-meta"},Gl={key:0},Xl=["title"],Yl={class:"workflow-create-form"},Jl={class:"workflow-field"},Ql={class:"workflow-field-label"},Zl={class:"workflow-field"},ea={class:"workflow-field-label"},ta={class:"workflow-field"},oa={class:"workflow-field-label"},yt=360,_t=560,la=360,aa=280,bt="hermes.workflow.chatPanelWidth",ga=St({__name:"WorkflowView",setup(s){const{t:l}=$t(),v=ca(),F=ti(),P=ei(),k=sa(),{screenToFlowCoordinate:L,getViewport:B,setViewport:le}=zn("hermes-workflow"),q={x:80,y:80,zoom:.75},ue=f(null),ke=f(null),T=f(1),te=f(!1),de=f(0),V=f(0),he=f(0),D=f(null),ae=f(!1),M=f(0),S=f(0),x=f(null),R=f(l("workflow.title")),E=f(null),ne=f(!1),Me=f("active"),c=f(""),r=f(typeof window>"u"||!window.matchMedia("(max-width: 768px)").matches),g=f(!1),ie=f(!1),ze=f(null),$e=f(!1),Be=f(""),Ne=f("default"),ge=f(null),Je=f(!1),X=f(!1),H=f(new Set),ye=f(new Set),Ee=f(!1),J=f(!1),Pe=f(!1),Re=f(!1),Q=f([]),Qe=f(!1),Le=f(null),j=f(!0),b=f(null),ce=f(new Set),K=f(new Set),Ze=f(!1),et=f(!1),De=f(""),tt=f(null),_e=f(Ma()),Oe=f(null),be=f({}),Ae=f({}),Te=new Map,se=f({});let ot=null,Ve=null,fe=!1;const xe=N(()=>[{label:"Hermes",value:"hermes"},{label:"Claude Code",value:"claude-code"},{label:"Codex",value:"codex"}]),ve=N(()=>v.modelGroups),Ue=N(()=>P.activeProfileName||P.profiles[0]?.name||"default"),Rt=N(()=>P.profiles.length>0?P.profiles.map(e=>({label:e.name,value:e.name})):[{label:"default",value:"default"}]),ya=N(()=>[{label:l("chat.allProfiles"),value:"__all__"},...Rt.value]);function _a(e){return P.profiles.find(t=>t.name===e)?.avatar||null}const qe=N(()=>I.value.find(e=>e.id===c.value)?.profile||Ue.value),lt=N({get:()=>Me.value==="create"?ge.value:E.value,set:e=>{Me.value==="create"?ge.value=e:E.value=e}}),ba=N(()=>({width:g.value?"100%":`${_e.value}px`})),Ce=N(()=>{if((v.selectedProvider?ve.value.find(t=>t.provider===v.selectedProvider):void 0)?.models.includes(v.selectedModel))return{provider:v.selectedProvider,model:v.selectedModel};const e=ve.value.find(t=>t.models.length>0);return{provider:e?.provider||"",model:e?.models[0]||""}}),xa=N(()=>{const e=D.value;if(b.value){if(e?.type!=="node")return[];const t=st.value,o=!!Le.value||Yt(c.value),a=!!t?.node_sessions?.some(h=>h.node_id===e.id&&h.session_id),u=A.value.some(h=>h.source===e.id),W=[];return a&&W.push({key:"rerun-downstream-keep-node",label:l("workflow.actions.rerunDownstreamKeepNode"),disabled:o||!u}),W.push({key:"rerun-from-node-clear",label:l("workflow.actions.rerunDownstreamClearNode"),disabled:o}),W}return e?.type==="edge"?[{key:"delete-edge",label:l("workflow.actions.deleteEdge")}]:[{key:"delete-node",label:l("workflow.actions.deleteNode")}]}),Ca=N(()=>{const e=x.value,t=[];return(e?.status==="queued"||e?.status==="running")&&t.push({key:"stop-run",label:l("workflow.runs.stop")}),t.push({key:"delete-run",label:l("workflow.runs.delete")}),t}),Sa=N(()=>c.value||"workflow-empty");function at(e,t=qe.value){const o=nl(e);return o==="hermes"?`${o}:${t||"default"}`:o}function At(e,t=qe.value){return be.value[at(e,t)]||[]}function It(e,t=qe.value){return!!Ae.value[at(e,t)]}function we(e){return{...e,agentOptions:xe.value,skillOptions:At(e.agent),skillsLoading:It(e.agent),modelGroups:ve.value,onUpdate:uo,onUploadImages:fo}}function nt(){C.value=C.value.map(e=>({...e,data:we(e.data)}))}async function Ft(e,t=qe.value){const o=nl(e),a=at(e,t);if(be.value[a]||Te.has(a))return Te.get(a);Ae.value={...Ae.value,[a]:!0},nt();const u=gi(o==="hermes"?t:void 0,o).then(W=>{be.value={...be.value,[a]:Hi(W)}}).catch(W=>{console.error("Failed to load workflow skills:",W),be.value={...be.value,[a]:[]}}).finally(()=>{const{[a]:W,...h}=Ae.value;Ae.value=h,Te.delete(a),nt()});return Te.set(a,u),u}function it(){const e=new Set(C.value.map(t=>t.data.agent));for(const t of e)Ft(t)}function zt(e,t,o,a={}){return{id:e,type:"agent",position:o,dragHandle:".node-header",style:{width:"280px",height:"420px"},data:{title:t,agent:a.agent||xe.value[0]?.value||"hermes",provider:a.provider||Ce.value.provider,model:a.model||Ce.value.model,apiMode:a.apiMode||ft(a.provider||Ce.value.provider),input:a.input||"",skills:a.skills||[],images:a.images||[],status:a.status||"idle",agentOptions:xe.value,skillOptions:At(a.agent||xe.value[0]?.value||"hermes"),skillsLoading:It(a.agent||xe.value[0]?.value||"hermes"),modelGroups:ve.value,onUpdate:uo,onUploadImages:fo}}}function Bt(){return[]}const C=f(Bt()),A=f([]),I=f([]),He=N(()=>[...ze.value?I.value.filter(e=>e.profile===ze.value):I.value].sort((e,t)=>t.updatedAt-e.updatedAt)),Wa=N(()=>He.value.length>0),Et=N(()=>H.value.size),st=N(()=>b.value&&Q.value.find(e=>e.id===b.value)||null);vo([xe,ve],()=>{C.value=C.value.map(e=>({...e,data:{...e.data,...Pa(e.data)}})),nt()}),vo([R,E,C,A,T],()=>{lo()},{deep:!0}),Pn(()=>{typeof window>"u"||(Ve=window.matchMedia("(max-width: 768px)"),rt(Ve),Ve.addEventListener("change",rt),window.addEventListener("hermes:open-page-sidebar",Lt),window.addEventListener("resize",ut),ut(),Ia())}),_n(()=>{Ve?.removeEventListener("change",rt),window.removeEventListener("hermes:open-page-sidebar",Lt),window.removeEventListener("resize",ut),dt(),ot?.(),ot=null,Ti()});function rt(e){g.value=e.matches,r.value=!e.matches,e.matches&&(j.value=!1)}function Lt(){r.value=!0}function Ma(){if(typeof window>"u")return _t;const e=Number.parseInt(window.localStorage.getItem(bt)||"",10);return Number.isFinite(e)?Math.round(e):_t}function $a(){if(typeof window>"u")return 1180;if(g.value)return window.innerWidth;const e=ue.value?.clientWidth||window.innerWidth,t=e-(j.value?aa:0)-la;return Math.max(yt,Math.min(Math.floor(e*.72),t))}function Dt(e){const t=$a();return Math.min(t,Math.max(Math.min(yt,t),Math.round(e)))}function ut(){g.value||(_e.value=Dt(_e.value))}function Ot(e){const t=Oe.value;if(!t)return;const o=e.clientX-t.x;_e.value=Dt(t.width+o)}function dt(){Oe.value&&(Oe.value=null,window.removeEventListener("pointermove",Ot),window.removeEventListener("pointerup",dt),g.value||window.localStorage.setItem(bt,String(_e.value)),document.body.style.userSelect="",document.body.style.cursor="")}function Na(e){g.value||(e.preventDefault(),Oe.value={x:e.clientX,width:_e.value},window.addEventListener("pointermove",Ot),window.addEventListener("pointerup",dt),document.body.style.userSelect="none",document.body.style.cursor="col-resize")}function ct(){Ze.value=!1,tt.value=null,De.value=""}function ft(e){const t=ve.value.find(o=>o.provider===e);return ii(t?.api_mode,ni(t?.provider||e,t?.base_url))}function Pa(e){return ve.value.find(t=>t.provider===e.provider)?.models.includes(e.model)?{provider:e.provider,model:e.model,apiMode:e.apiMode||ft(e.provider)}:{provider:Ce.value.provider,model:Ce.value.model,apiMode:ft(Ce.value.provider)}}function Ra(e,t={}){return e.map(o=>({...o,position:{...o.position},style:{...o.style},data:we({...o.data,...t.resetRuntime?{status:"idle",statusError:null,readonly:!1}:{}})}))}function Aa(e){return e.map(t=>({...t,position:{...t.position},style:{...t.style},data:we({...t.data,status:"idle",statusError:null,readonly:!1})}))}function Tt(e){return e.map(t=>({...t}))}function Vt(e){return e.map(t=>({id:t.id,type:t.type,position:{...t.position},dragHandle:t.dragHandle,style:{...t.style},data:{title:t.data.title,agent:t.data.agent,provider:t.data.provider,model:t.data.model,apiMode:t.data.apiMode,input:t.data.input,skills:[...t.data.skills],images:[...t.data.images]}}))}function Ut(e){return e.map(t=>({...t}))}function qt(e){const t=e&&typeof e=="object"?e:{},o=Number(t.x),a=Number(t.y),u=Number(t.zoom);return{x:Number.isFinite(o)?o:q.x,y:Number.isFinite(a)?a:q.y,zoom:Number.isFinite(u)&&u>0?u:q.zoom}}function Ht(){return qt(B())}function jt(e,t){const o=e&&typeof e=="object"?e:{},a=o.data&&typeof o.data=="object"?o.data:{},u=o.position&&typeof o.position=="object"?{x:Number(o.position.x||80+t*320),y:Number(o.position.y||120)}:{x:80+t*320,y:120},W=zt(typeof o.id=="string"&&o.id?o.id:`agent-${t+1}`,typeof a.title=="string"&&a.title?a.title:l("workflow.newNodeTitle",{count:t+1}),u,{agent:a.agent,provider:a.provider,model:a.model,apiMode:a.apiMode,input:a.input,skills:Array.isArray(a.skills)?a.skills.filter(h=>typeof h=="string"):[],images:Array.isArray(a.images)?a.images.filter(h=>typeof h=="string"):[],status:"idle"});return{...W,dragHandle:typeof o.dragHandle=="string"&&o.dragHandle?o.dragHandle:".node-header",style:{width:typeof o.style?.width=="string"?o.style.width:W.style.width,height:typeof o.style?.height=="string"?o.style.height:W.style.height}}}function Kt(e){const t=e&&typeof e=="object"?e:{};return typeof t.source!="string"||typeof t.target!="string"?null:{id:typeof t.id=="string"&&t.id?t.id:`${t.source}-${t.target}`,source:t.source,target:t.target,sourceHandle:typeof t.sourceHandle=="string"?t.sourceHandle:"output",targetHandle:typeof t.targetHandle=="string"?t.targetHandle:"input",type:"smoothstep",animated:!!t.animated,markerEnd:gt.ArrowClosed}}function Gt(e){const t=e.reduce((o,a)=>{const u=a.id.match(/^agent-(\d+)$/);return u?Math.max(o,Number(u[1])):o},0);return Math.max(t+1,e.length+1,1)}function vt(e){const t=e.nodes.map(jt),o=e.edges.map(Kt).filter(a=>!!a);return{id:e.id,name:e.name,profile:e.profile||"default",workspace:e.workspace,nodes:t,edges:o,viewport:qt(e.viewport),nextNodeIndex:Gt(t),updatedAt:e.updated_at}}async function Ia(){await P.fetchProfiles(),Ne.value=Ue.value,ot=Ui(ht),await Fa(),al().then(Xt).catch(e=>{console.error("Failed to subscribe workflow statuses:",e)})}async function Fa(){ie.value=!0;try{let e;try{e=await Vi()}catch(u){console.warn("Failed to load workflows from socket, falling back to HTTP:",u),e=await Ni()}const t=e.map(vt),o=c.value;if(I.value=t,t.length===0){await je();return}const a=o?t.find(u=>u.id===o):null;if(o&&!a){await je();return}await Ke(a||t[0],!1)}catch(e){console.error("Failed to load workflows:",e)}finally{ie.value=!1}}function Xt(e){const t={...se.value};for(const o of e)t[o.workflowId]=o;se.value=t}function wt(e,t){const o=t?e?.nodeStatuses?.[t]:void 0,a=t?o:e?.status;switch(a){case"queued":case"running":case"completed":case"failed":case"canceled":return a;default:return"idle"}}function pt(e,t){return!e||e.status!=="failed"?null:(t?e.nodeStatuses?.[t]:void 0)==="failed"&&e.error||null}function Yt(e){const t=se.value[e]?.status;return t==="running"||t==="queued"}function za(e){const t=se.value[e];if(t?.runId&&t.runId===b.value)return t.status==="running"||t.status==="queued"?t:void 0}function Ba(e){return`status-${e||"idle"}`}function Ea(e){return l(`workflow.status.${e||"idle"}`)}function La(e){return e?new Date(e).toLocaleString():"-"}function Da(e){if(!e.started_at)return"-";const t=e.finished_at||Date.now(),o=Math.max(0,Math.round((t-e.started_at)/1e3));if(o<60)return`${o}s`;const a=Math.floor(o/60),u=o%60;if(a<60)return u?`${a}m ${u}s`:`${a}m`;const W=Math.floor(a/60),h=a%60;return h?`${W}h ${h}m`:`${W}h`}function Oa(e){return Array.isArray(e.snapshot_nodes)?e.snapshot_nodes.length:0}function Jt(e,t){const o=se.value[e.workflow_id];if(o?.runId===e.id)return wt(o,t);const a=e.node_sessions?.find(u=>u.node_id===t);switch(a?.status){case"queued":case"running":case"completed":case"failed":case"canceled":return a.status;case"blocked":return"failed";default:return e.status==="running"||e.status==="queued"?"queued":"idle"}}function Ta(e,t){const o=se.value[e.workflow_id];if(o?.runId===e.id)return pt(o,t);const a=e.node_sessions?.find(u=>u.node_id===t);return(a?.status==="failed"||a?.status==="blocked")&&(a.error||e.error)||null}async function Va(e){const t=st.value;if(!t)return;const o=C.value.find(u=>u.id===e),a=t.node_sessions?.find(u=>u.node_id===e);if(!a?.session_id){k.warning(l("workflow.runs.noNodeSession"));return}De.value=l("workflow.runs.nodeSessionTitle",{node:o?.data.title||e}),tt.value=a.session_id,Ze.value=!0,et.value=!0;try{const u=await si(a.session_id,a.profile||t.profile);if(!u){k.error(l("workflow.runs.loadNodeSessionFailed"));return}F.ensureSessionLoaded(u),await F.switchSession(a.session_id)}catch(u){console.error("Failed to load workflow node session:",u),k.error(l("workflow.runs.loadNodeSessionFailed"))}finally{et.value=!1}}async function re(e=c.value,t){if(!e){Q.value=[];return}Qe.value=!0;try{const o=await Fi(e,100);Q.value=o;const a=t||b.value;if(a){const u=o.find(W=>W.id===a);u?(b.value=u.id,await Qt(u)):b.value===a&&(b.value=null)}}catch(o){console.error("Failed to load workflow runs:",o)}finally{Qe.value=!1}}async function Qt(e){fe=!0,C.value=e.snapshot_nodes.map(jt).map(t=>({...t,data:we({...t.data,status:Jt(e,t.id),statusError:Ta(e,t.id),readonly:!0})})),A.value=e.snapshot_edges.map(Kt).filter(t=>!!t),T.value=Gt(C.value),await Se(),fe=!1,it()}async function mt(){const e=b.value;e&&(ce.value=new Set([...ce.value,e]));const t=new Set(K.value);t.delete(c.value),K.value=t,b.value=null;const o=I.value.find(a=>a.id===c.value);o&&await Ke(o,!1,{resetRuntime:!0})}async function je(){fe=!0,c.value="",R.value="",E.value=null,C.value=[],A.value=[],T.value=1,Q.value=[],b.value=null,ce.value=new Set,K.value=new Set,ct(),pe(),kt(),await Se(),fe=!1}async function Ua(e){if(b.value===e.id){await mt();return}const t=new Set(ce.value);t.delete(e.id),ce.value=t,b.value=e.id,await Qt(e)}function qa(e,t){e.preventDefault(),e.stopPropagation(),M.value=e.clientX,S.value=e.clientY,x.value=t,ae.value=!1,Se(()=>{ae.value=!0})}function kt(){ae.value=!1,x.value=null}async function Zt(){const e=!j.value;j.value=e,!e&&b.value&&await mt()}async function Ha(e){const t=x.value;if(kt(),!(!t||!c.value)){if(e==="stop-run"){try{const o=await zi(c.value,t.id);Q.value=Q.value.map(a=>a.id===o.id?{...a,...o}:a),await re(c.value,b.value),k.success(l("workflow.runs.stopRequested"))}catch(o){k.error(o?.message||l("workflow.runs.stopFailed"))}return}if(e==="delete-run")try{await Bi(c.value,t.id),Q.value=Q.value.filter(o=>o.id!==t.id),b.value===t.id&&await mt(),k.success(l("workflow.runs.deleteSuccess"))}catch(o){k.error(o?.message||l("common.deleteFailed"))}}}function ht(e){if(se.value={...se.value,[e.workflowId]:e},e.workflowId!==c.value)return;const t=e.status==="running"||e.status==="queued";if(!t){const o=new Set(K.value);o.delete(e.workflowId),K.value=o}e.runId&&(t&&K.value.has(e.workflowId)&&!ce.value.has(e.runId)?(j.value=!0,b.value=e.runId,re(e.workflowId,e.runId)):b.value===e.runId?re(e.workflowId,e.runId):j.value&&re(e.workflowId,null)),!(!b.value||b.value!==e.runId)&&(C.value=C.value.map(o=>({...o,data:we({...o.data,status:wt(e,o.id),statusError:pt(e,o.id)})})))}function ja(e){ze.value=e==="__all__"?null:e,H.value=new Set}function eo(){X.value=!X.value,X.value||(H.value=new Set,Ee.value=!1)}function to(e){const t=new Set(H.value);t.has(e)?t.delete(e):t.add(e),H.value=t}function oo(e){return H.value.has(e)}function Ka(){H.value=new Set(He.value.map(e=>e.id))}async function Ga(e){if(X.value){to(e);return}await Za(e)}async function Xa(){if(H.value.size===0||J.value)return;const e=[...H.value];J.value=!0;try{const t=await Ii(e),o=new Set(e.filter(a=>!t.errors.some(u=>u.id===a)));I.value=I.value.filter(a=>!o.has(a.id)),H.value=new Set,Ee.value=!1,X.value=!1,o.has(c.value)&&await je(),t.deleted>0&&k.success(l("workflow.batch.deleteSuccess",{count:t.deleted})),t.failed>0&&k.warning(l("workflow.batch.deletePartial",{failed:t.failed}))}catch(t){k.error(t?.message||l("workflow.batch.deleteFailed"))}finally{J.value=!1}}async function Ya(e){if(!ye.value.has(e)){ye.value=new Set([...ye.value,e]);try{await Ai(e),I.value=I.value.filter(o=>o.id!==e);const t=new Set(H.value);t.delete(e),H.value=t,e===c.value&&await je(),k.success(l("workflow.batch.deleteSuccess",{count:1}))}catch(t){k.error(t?.message||l("workflow.batch.deleteFailed"))}finally{const t=new Set(ye.value);t.delete(e),ye.value=t}}}function Ja(e){Me.value=e,ne.value=!0}function Qa(){lt.value=null}function lo(){fe||b.value||(I.value=I.value.map(e=>e.id===c.value?{...e,name:R.value.trim()||l("workflow.title"),workspace:E.value,nodes:Aa(C.value),edges:Tt(A.value),viewport:Ht(),nextNodeIndex:T.value,updatedAt:e.updatedAt}:e))}async function Ke(e,t,o={}){fe=!0,b.value=null,c.value=e.id,R.value=e.name,E.value=e.workspace;const a=za(e.id);C.value=Ra(e.nodes,{resetRuntime:o.resetRuntime}).map(u=>({...u,data:we({...u.data,status:o.resetRuntime?"idle":wt(a,u.id),statusError:o.resetRuntime?null:pt(a,u.id),readonly:!1})})),A.value=Tt(e.edges),T.value=e.nextNodeIndex,await Se(),await le(e.viewport,{duration:0}),fe=!1,it(),re(e.id),t&&g.value&&(r.value=!1)}async function Za(e){if(e===c.value){g.value&&(r.value=!1);return}lo();const t=I.value.find(a=>a.id===e);if(!t)return;const o=new Set(K.value);o.delete(e),K.value=o,await Ke(t,!0)}function en(){Be.value=`${l("workflow.title")} ${I.value.length+1}`,Ne.value=Ue.value,ge.value=null,$e.value=!0,P.profiles.length===0&&P.fetchProfiles()}async function ao(){const e=Be.value.trim();if(!e){k.warning(l("workflow.namePlaceholder"));return}Je.value=!0;try{const t=Bt(),o=vt(await Pi({name:e,profile:Ne.value||Ue.value,workspace:ge.value,nodes:Vt(t),edges:Ut([]),viewport:q}));I.value=[o,...I.value],$e.value=!1,await Ke(o,!0),al(o.id).then(Xt).catch(a=>{console.error("Failed to subscribe workflow status:",a)})}catch(t){k.error(t?.message||l("common.saveFailed"))}finally{Je.value=!1}}function no(e){return e.data.title.trim()||e.id}function tn(e,t){const o=new Set(e.map(y=>y.id)),a=new Map;for(const y of e)a.set(y.id,[]);for(const y of t)!o.has(y.source)||!o.has(y.target)||a.get(y.source)?.push(y.target);const u=new Set,W=new Set,h=y=>{if(u.has(y))return!0;if(W.has(y))return!1;u.add(y);for(const Ge of a.get(y)||[])if(h(Ge))return!0;return u.delete(y),W.add(y),!1};return e.some(y=>h(y.id))}function on(e,t){if(e.length<=1)return!0;const o=new Set(e.map(y=>y.id)),a=new Map;for(const y of e)a.set(y.id,[]);for(const y of t)!o.has(y.source)||!o.has(y.target)||(a.get(y.source)?.push(y.target),a.get(y.target)?.push(y.source));const u=e[0]?.id;if(!u)return!0;const W=new Set,h=[u];for(;h.length>0;){const y=h.pop();if(!(!y||W.has(y))){W.add(y);for(const Ge of a.get(y)||[])W.has(Ge)||h.push(Ge)}}return W.size===e.length}function io(e){return!!(e.source&&e.target&&e.source!==e.target&&e.sourceHandle==="output"&&e.targetHandle==="input")}function ln(){if(C.value.length===0)return l("workflow.validation.nodesRequired");for(const t of C.value){const o=no(t);if(!t.data.title.trim())return l("workflow.validation.nodeNameRequired",{node:t.id});if(!t.data.provider.trim())return l("workflow.validation.providerRequired",{node:o});if(!t.data.model.trim())return l("workflow.validation.modelRequired",{node:o});if(t.data.agent!=="hermes"&&!t.data.apiMode)return l("workflow.validation.apiModeRequired",{node:o});if(!t.data.input.trim())return l("workflow.validation.inputRequired",{node:o})}const e=new Set(C.value.map(t=>t.id));if(A.value.find(t=>!e.has(t.source)||!e.has(t.target)))return l("workflow.validation.invalidEdge");if(A.value.find(t=>t.sourceHandle!=="output"||t.targetHandle!=="input"))return l("workflow.validation.invalidConnectionDirection");if(C.value.length>1){const t=new Set;for(const a of A.value)t.add(a.source),t.add(a.target);const o=C.value.find(a=>!t.has(a.id));if(o)return l("workflow.validation.orphanNode",{node:no(o)});if(!on(C.value,A.value))return l("workflow.validation.disconnectedFlow")}return tn(C.value,A.value)?l("workflow.validation.cycle"):null}async function so(e={}){if(!c.value||Pe.value||b.value)return!1;const t=ln();if(t)return k.warning(t),!1;Pe.value=!0;try{const o=I.value.find(u=>u.id===c.value),a=vt(await Ri(c.value,{name:R.value.trim()||l("workflow.title"),workspace:E.value,nodes:Vt(C.value),edges:Ut(A.value),viewport:Ht()}));return I.value=I.value.map(u=>u.id===a.id?{...a,updatedAt:o?.updatedAt??a.updatedAt}:u),e.quiet||k.success(l("common.saved")),!0}catch(o){return k.error(o?.message||l("common.saveFailed")),!1}finally{Pe.value=!1}}async function an(){if(!c.value||Re.value||b.value)return;const e=c.value;if(await so({quiet:!0})){j.value=!0,ce.value=new Set,K.value=new Set([...K.value,e]),Re.value=!0;try{await Ei(e),re(e);const t=Date.now();ht({workflowId:e,status:"running",runId:null,startedAt:t,updatedAt:t,completedAt:null,error:null,nodeStatuses:sn(C.value,A.value)}),k.info(l("workflow.actions.executionStarted"))}catch(t){k.error(t?.message||l("workflow.actions.executionFailed"))}finally{Re.value=!1}}}async function ro(e,t){const o=c.value,a=st.value;if(!(!o||!a||Le.value)){Le.value=e,j.value=!0,K.value=new Set([...K.value,o]),ct();try{await Li(o,a.id,e,{preserve_start_node:t}),re(o,a.id);const u=Date.now(),W=Object.fromEntries(C.value.map(y=>[y.id,Jt(a,y.id)])),h=nn(e);t||h.add(e);for(const y of h)W[y]="queued";ht({workflowId:o,status:"running",runId:a.id,startedAt:u,updatedAt:u,completedAt:null,error:null,nodeStatuses:W}),k.info(l(t?"workflow.actions.rerunDownstreamStarted":"workflow.actions.rerunFromNodeStarted"))}catch(u){k.error(u?.message||l("workflow.actions.rerunFailed"))}finally{Le.value=null}}}function nn(e){const t=new Set,o=A.value.filter(a=>a.source===e).map(a=>a.target);for(;o.length>0;){const a=o.pop();if(!(!a||t.has(a))){t.add(a);for(const u of A.value.filter(W=>W.source===a))o.push(u.target)}}return t}function sn(e,t){const o=new Set(e.map(h=>h.id)),a=new Set(t.filter(h=>o.has(h.source)&&o.has(h.target)).map(h=>h.target)),u=e.filter(h=>!a.has(h.id)).map(h=>h.id),W=new Set(u.length>0?u:e.map(h=>h.id));return Object.fromEntries(e.map(h=>[h.id,W.has(h.id)?"running":"queued"]))}function uo(e,t){b.value||(C.value=C.value.map(o=>o.id===e?{...o,style:t.images?rn(o.style,t.images.length):o.style,data:we({...o.data,...t,skills:typeof t.agent=="string"&&t.agent!==o.data.agent?[]:t.skills??o.data.skills})}:o),typeof t.agent=="string"&&Ft(t.agent))}function rn(e,t){if(t<=0)return e;const o=Number.parseFloat(e.height||"420"),a=420+Math.min(2,Math.ceil(t/3))*68;return o>=a?e:{...e,height:`${a}px`}}function un(e){b.value||io(e)&&(A.value.some(t=>t.source===e.source&&t.target===e.target)||(A.value=[...A.value,{...e,id:`${e.source}-${e.target}`,type:"smoothstep",animated:!0,markerEnd:gt.ArrowClosed}]))}function dn(e){C.value=C.value.filter(t=>t.id!==e),A.value=A.value.filter(t=>t.source!==e&&t.target!==e)}function cn(e){A.value=A.value.filter(t=>t.id!==e)}function co(e,t){if(b.value&&t.type!=="node")return;e.preventDefault(),e.stopPropagation();const o="changedTouches"in e?e.changedTouches[0]:null;de.value=o?.clientX??("clientX"in e?e.clientX:0),V.value=o?.clientY??("clientY"in e?e.clientY:0),he.value=Date.now(),D.value=t,te.value=!1,Se(()=>{te.value=!0})}function fn(e){co(e.event,{type:"node",id:e.node.id})}function vn(e){b.value&&Va(e.node.id)}function wn(e){co(e.event,{type:"edge",id:e.edge.id})}function pe(){te.value=!1,D.value=null}function pn(){Date.now()-he.value<180||pe()}function mn(e){const t=D.value;if(e==="rerun-downstream-keep-node"&&t?.type==="node"){ro(t.id,!0),pe();return}if(e==="rerun-from-node-clear"&&t?.type==="node"){ro(t.id,!1),pe();return}if(b.value){pe();return}e==="delete-node"&&t?.type==="node"&&dn(t.id),e==="delete-edge"&&t?.type==="edge"&&cn(t.id),pe()}function kn(){const e=ke.value?.getBoundingClientRect();return e?L({x:e.left+48,y:e.top+48}):{x:80,y:120}}function hn(){const e=kn(),t={...e};for(let o=0;o<12;o+=1){if(!C.value.some(a=>Math.abs(a.position.x-t.x)<300&&Math.abs(a.position.y-t.y)<180))return t;t.x=e.x+(o+1)%3*320,t.y=e.y+Math.floor((o+1)/3)*220}return t}async function gn(){if(b.value)return;if(!c.value){k.warning(l("workflow.actions.createWorkflowFirst"));return}const e=`agent-${T.value}`;C.value=[...C.value,zt(e,l("workflow.newNodeTitle",{count:T.value}),hn())],T.value+=1,it(),await Se()}async function fo(e,t){return(await fi(t)).map(o=>o.path)}function yn(e){return e.data.status==="queued"?"#64748b":e.data.status==="running"?"#2563eb":e.data.status==="completed"?"#16a34a":e.data.status==="failed"?"#dc2626":e.data.status==="canceled"?"#f97316":"#9ca3af"}return(e,t)=>(d(),p("div",il,[n("div",{class:oe(["workflow-sidebar-backdrop",{active:r.value}]),onClick:t[0]||(t[0]=o=>r.value=!1)},null,2),n("aside",{class:oe(["workflow-sidebar",{collapsed:!r.value}])},[r.value?(d(),p("div",sl,[m(_i,{active:"workflow","primary-label":i(l)("workflow.actions.newWorkflow"),onPrimary:en},null,8,["primary-label"]),n("div",rl,[m(i(Fe),{class:"workflow-profile-filter",value:ze.value||"__all__",options:ya.value,size:"small",loading:i(P).loading,"onUpdate:value":ja},null,8,["value","options","loading"]),n("div",ul,[X.value?$("",!0):(d(),U(i(O),{key:0,quaternary:"",size:"tiny",title:i(l)("workflow.batch.toggle"),onClick:eo},{icon:_(()=>[...t[17]||(t[17]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("path",{d:"M9 11l3 3L22 4"}),n("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})],-1)])]),_:1},8,["title"])),X.value?(d(),U(i(O),{key:1,quaternary:"",size:"tiny",disabled:!Wa.value||J.value,title:i(l)("workflow.batch.selectAll"),onClick:Ka},{icon:_(()=>[...t[18]||(t[18]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("path",{d:"M9 11l3 3L22 4"}),n("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})],-1)])]),_:1},8,["disabled","title"])):$("",!0),X.value&&Et.value>0?(d(),U(i(mo),{key:2,show:Ee.value,"onUpdate:show":t[1]||(t[1]=o=>Ee.value=o),"positive-button-props":{loading:J.value,disabled:J.value},"negative-button-props":{disabled:J.value},onPositiveClick:Xa},{trigger:_(()=>[m(i(O),{quaternary:"",size:"tiny",type:"error",loading:J.value,disabled:J.value},{icon:_(()=>[...t[19]||(t[19]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("polyline",{points:"3 6 5 6 21 6"}),n("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])]),_:1},8,["loading","disabled"])]),default:_(()=>[Y(" "+w(i(l)("workflow.batch.confirmDelete",{count:Et.value})),1)]),_:1},8,["show","positive-button-props","negative-button-props"])):$("",!0),X.value?(d(),U(i(O),{key:3,quaternary:"",size:"tiny",disabled:J.value,onClick:eo},{icon:_(()=>[...t[20]||(t[20]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]),_:1},8,["disabled"])):$("",!0)])])])):$("",!0),r.value?(d(),p("div",dl,[ie.value?(d(),p("div",cl,w(i(l)("common.loading")),1)):He.value.length===0?(d(),p("div",fl,w(i(l)("common.noData")),1)):$("",!0),(d(!0),p(me,null,We(He.value,o=>(d(),p("button",{key:o.id,class:oe(["workflow-list-item",{active:o.id===c.value,selected:oo(o.id)}]),type:"button",onClick:a=>Ga(o.id)},[X.value?(d(),p("span",wl,[m(i(An),{checked:oo(o.id),onClick:z(a=>to(o.id),["stop"])},null,8,["checked","onClick"])])):$("",!0),n("span",{class:oe(["workflow-list-avatar-wrap",{streaming:Yt(o.id)}])},[m(di,{class:"workflow-list-avatar",name:o.profile,avatar:_a(o.profile),size:28},null,8,["name","avatar"])],2),n("span",pl,[n("span",ml,w(o.name),1),n("span",kl,w(o.profile)+" · "+w(o.nodes.length)+" "+w(i(l)("workflow.stats.nodes"))+" · "+w(o.edges.length)+" "+w(i(l)("workflow.stats.edges")),1)]),X.value?$("",!0):(d(),U(i(mo),{key:1,onPositiveClick:a=>Ya(o.id)},{trigger:_(()=>[n("button",{class:"workflow-list-delete",type:"button",title:i(l)("common.delete"),disabled:ye.value.has(o.id),onClick:t[2]||(t[2]=z(()=>{},["stop","prevent"]))},[...t[21]||(t[21]=[n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,hl)]),default:_(()=>[Y(" "+w(i(l)("workflow.batch.confirmDelete",{count:1})),1)]),_:2},1032,["onPositiveClick"]))],10,vl))),128))])):$("",!0),r.value?(d(),U(xi,{key:2})):$("",!0)],2),n("main",gl,[n("header",yl,[n("div",_l,[m(i(O),{class:"header-sidebar-toggle",quaternary:"",size:"small",circle:"",onClick:t[3]||(t[3]=o=>r.value=!r.value)},{icon:_(()=>[...t[22]||(t[22]=[n("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[n("rect",{x:"3",y:"3",width:"7",height:"7"}),n("rect",{x:"14",y:"3",width:"7",height:"7"}),n("rect",{x:"3",y:"14",width:"7",height:"7"}),n("rect",{x:"14",y:"14",width:"7",height:"7"})],-1)])]),_:1}),n("div",bl,[n("span",xl,w(R.value),1),n("button",{class:"workspace-badge",type:"button",title:E.value||i(l)("workflow.workspace.select"),onClick:t[4]||(t[4]=o=>Ja("active"))},[t[23]||(t[23]=n("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[n("path",{d:"M3 7a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"})],-1)),n("span",null,w(E.value?E.value.split("/").pop()||E.value:i(l)("workflow.workspace.select")),1)],8,Cl)])]),n("div",Sl,[m(i(Ie),{trigger:"hover"},{trigger:_(()=>[m(i(O),{quaternary:"",size:"small",circle:"","aria-label":j.value?i(l)("workflow.runs.hide"):i(l)("workflow.runs.show"),onClick:Zt},{icon:_(()=>[j.value?(d(),p("svg",Wl,[...t[24]||(t[24]=[n("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"},null,-1),n("path",{d:"M15 4v16"},null,-1),n("path",{d:"M8 9h4"},null,-1),n("path",{d:"M8 13h4"},null,-1)])])):(d(),p("svg",Ml,[...t[25]||(t[25]=[n("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"},null,-1),n("path",{d:"M9 4v16"},null,-1),n("path",{d:"M13 9h4"},null,-1),n("path",{d:"M13 13h4"},null,-1)])]))]),_:1},8,["aria-label"])]),default:_(()=>[Y(" "+w(j.value?i(l)("workflow.runs.hide"):i(l)("workflow.runs.show")),1)]),_:1}),b.value?$("",!0):(d(),U(i(Ie),{key:0,trigger:"hover"},{trigger:_(()=>[m(i(O),{quaternary:"",size:"small",circle:"","aria-label":i(l)("workflow.actions.addNode"),onClick:gn},{icon:_(()=>[...t[26]||(t[26]=[n("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[n("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),n("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)])]),_:1},8,["aria-label"])]),default:_(()=>[Y(" "+w(i(l)("workflow.actions.addNode")),1)]),_:1})),b.value?$("",!0):(d(),U(i(Ie),{key:1,trigger:"hover"},{trigger:_(()=>[m(i(O),{quaternary:"",size:"small",circle:"",loading:Pe.value,disabled:!c.value||Re.value,"aria-label":i(l)("common.save"),onClick:t[5]||(t[5]=()=>so())},{icon:_(()=>[...t[27]||(t[27]=[n("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.9","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[n("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),n("path",{d:"M17 21v-8H7v8"}),n("path",{d:"M7 3v5h8"})],-1)])]),_:1},8,["loading","disabled","aria-label"])]),default:_(()=>[Y(" "+w(i(l)("common.save")),1)]),_:1})),b.value?$("",!0):(d(),U(i(Ie),{key:2,trigger:"hover"},{trigger:_(()=>[m(i(O),{quaternary:"",size:"small",circle:"",loading:Re.value,disabled:!c.value||Pe.value,"aria-label":i(l)("workflow.actions.startExecution"),onClick:an},{icon:_(()=>[...t[28]||(t[28]=[n("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},[n("path",{d:"M8 5v14l11-7z"})],-1)])]),_:1},8,["loading","disabled","aria-label"])]),default:_(()=>[Y(" "+w(i(l)("workflow.actions.startExecution")),1)]),_:1}))])]),m(i(ia),{show:ne.value,"onUpdate:show":t[8]||(t[8]=o=>ne.value=o),preset:"card",title:i(l)("workflow.workspace.title"),style:{width:"min(720px, calc(100vw - 32px))"}},{footer:_(()=>[m(i(wo),{justify:"end"},{default:_(()=>[m(i(O),{onClick:Qa},{default:_(()=>[Y(w(i(l)("workflow.workspace.clear")),1)]),_:1}),m(i(O),{type:"primary",onClick:t[7]||(t[7]=o=>ne.value=!1)},{default:_(()=>[Y(w(i(l)("common.confirm")),1)]),_:1})]),_:1})]),default:_(()=>[m(go,{modelValue:lt.value,"onUpdate:modelValue":t[6]||(t[6]=o=>lt.value=o)},null,8,["modelValue"])]),_:1},8,["show","title"]),n("div",{ref_key:"workflowBodyRef",ref:ue,class:"workflow-body"},[Ze.value?(d(),p("aside",{key:0,class:"workflow-chat-panel",style:Nn(ba.value)},[n("div",{class:"workflow-chat-resize-handle",onPointerdown:Na},null,32),n("div",$l,[n("header",Nl,[n("div",{class:"workflow-chat-title",title:De.value},w(De.value),9,Pl),m(i(O),{quaternary:"",size:"tiny",circle:"","aria-label":i(l)("common.cancel"),onClick:ct},{icon:_(()=>[...t[29]||(t[29]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])]),_:1},8,["aria-label"])]),n("div",Rl,[et.value?(d(),p("div",Al,w(i(l)("common.loading")),1)):tt.value?(d(),p(me,{key:1},[m(ki),m(mi)],64)):(d(),p("div",Il,w(i(l)("chat.noVisibleMessages")),1))])])],4)):$("",!0),n("section",{ref_key:"workflowCanvasRef",ref:ke,class:"workflow-canvas","aria-label":"Workflow canvas"},[(d(),U(i(In),{key:Sa.value,id:"hermes-workflow",nodes:C.value,"onUpdate:nodes":t[9]||(t[9]=o=>C.value=o),edges:A.value,"onUpdate:edges":t[10]||(t[10]=o=>A.value=o),"fit-view-on-init":!1,"default-viewport":q,"min-zoom":.25,"max-zoom":1.4,"nodes-draggable":!b.value,"nodes-connectable":!b.value,"elements-selectable":!b.value,"connection-line-type":i(Tn).SmoothStep,"is-valid-connection":io,"default-edge-options":{type:"smoothstep",markerEnd:i(gt).ArrowClosed},class:"workflow-flow",onConnect:un,onNodeClick:vn,onNodeContextMenu:fn,onEdgeContextMenu:wn,onPaneClick:pe},{"node-agent":_(o=>[m(ma,$n(Wn(o)),null,16)]),default:_(()=>[m(i(Ln),{gap:24,size:1.2,color:"var(--border-color)"}),m(i(Bn),{pannable:"",zoomable:"","node-color":yn}),m(i(Gn))]),_:1},8,["nodes","edges","nodes-draggable","nodes-connectable","elements-selectable","connection-line-type","default-edge-options"])),m(i(po),{placement:"bottom-start",trigger:"manual",x:de.value,y:V.value,options:xa.value,show:te.value,onSelect:mn,onClickoutside:pn},null,8,["x","y","options","show"])],512),j.value?(d(),p("aside",Fl,[n("div",zl,[n("div",Bl,w(i(l)("workflow.runs.title")),1),n("div",El,[n("button",{class:"workflow-runs-refresh",type:"button",title:i(l)("workflow.runs.refresh"),onClick:t[11]||(t[11]=o=>re())},[...t[30]||(t[30]=[Mn('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-v-5a8ef3b3><path d="M21 12a9 9 0 0 1-15.5 6.2" data-v-5a8ef3b3></path><path d="M3 12a9 9 0 0 1 15.5-6.2" data-v-5a8ef3b3></path><path d="M18 3v5h-5" data-v-5a8ef3b3></path><path d="M6 21v-5h5" data-v-5a8ef3b3></path></svg>',1)])],8,Ll),n("button",{class:"workflow-runs-refresh workflow-runs-close",type:"button",title:i(l)("common.cancel"),onClick:Zt},[...t[31]||(t[31]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.9","stroke-linecap":"round","aria-hidden":"true"},[n("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),n("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])],8,Dl)])]),Qe.value?(d(),p("div",Ol,w(i(l)("common.loading")),1)):Q.value.length===0?(d(),p("div",Tl,w(i(l)("workflow.runs.empty")),1)):(d(),p("div",Vl,[(d(!0),p(me,null,We(Q.value,o=>(d(),p("button",{key:o.id,class:oe(["workflow-run-item",{active:b.value===o.id}]),type:"button",onClick:a=>Ua(o),onContextmenu:a=>qa(a,o)},[n("div",ql,[n("span",{class:oe(["workflow-run-status",Ba(o.status)])},[t[32]||(t[32]=n("span",{class:"workflow-run-status-dot"},null,-1)),n("span",null,w(Ea(o.status)),1)],2),n("span",Hl,w(Da(o)),1)]),n("div",jl,w(La(o.started_at||o.created_at)),1),n("div",Kl,[Y(w(Oa(o))+" "+w(i(l)("workflow.stats.nodes"))+" ",1),o.start_node_ids.length>0?(d(),p("span",Gl,"· "+w(i(l)("workflow.runs.startNodes",{count:o.start_node_ids.length})),1)):$("",!0)]),o.error?(d(),p("div",{key:0,class:"workflow-run-error",title:o.error},w(o.error),9,Xl)):$("",!0)],42,Ul))),128))])),m(i(po),{placement:"bottom-start",trigger:"manual",x:M.value,y:S.value,options:Ca.value,show:ae.value,onSelect:Ha,onClickoutside:kt},null,8,["x","y","options","show"])])):$("",!0)],512)]),m(i(bn),{show:$e.value,"onUpdate:show":t[16]||(t[16]=o=>$e.value=o),placement:"right",width:420},{default:_(()=>[m(i(xn),{title:i(l)("workflow.actions.newWorkflow"),closable:""},{footer:_(()=>[m(i(wo),{justify:"end"},{default:_(()=>[m(i(O),{onClick:t[15]||(t[15]=o=>$e.value=!1)},{default:_(()=>[Y(w(i(l)("common.cancel")),1)]),_:1}),m(i(O),{type:"primary",loading:Je.value,onClick:ao},{default:_(()=>[Y(w(i(l)("common.create")),1)]),_:1},8,["loading"])]),_:1})]),default:_(()=>[n("div",Yl,[n("label",Jl,[n("span",Ql,w(i(l)("workflow.namePlaceholder")),1),m(i(Xe),{value:Be.value,"onUpdate:value":t[12]||(t[12]=o=>Be.value=o),placeholder:i(l)("workflow.namePlaceholder"),onKeydown:xt(z(ao,["prevent"]),["enter"])},null,8,["value","placeholder","onKeydown"])]),n("label",Zl,[n("span",ea,w(i(l)("workflow.profile")),1),m(i(Fe),{value:Ne.value,"onUpdate:value":t[13]||(t[13]=o=>Ne.value=o),options:Rt.value,loading:i(P).loading},null,8,["value","options","loading"])]),n("div",ta,[n("span",oa,w(i(l)("workflow.workspace.select")),1),m(go,{modelValue:ge.value,"onUpdate:modelValue":t[14]||(t[14]=o=>ge.value=o)},null,8,["modelValue"])])])]),_:1},8,["title"])]),_:1},8,["show"])]))}})})),Ki=G((()=>{})),Gi,Xi=G((()=>{na(),na(),Ki(),Nt(),Gi=Pt(ga,[["__scopeId","data-v-5a8ef3b3"]])}));Xi();export{Gi as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/js/DesktopPetView-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/js/DesktopPetView-BH9a1zur.js","assets/js/rolldown-runtime-M0oDzQ_3.js","assets/js/index-B2IKGvbR.js","assets/js/ui-vendor-DDMfmCj2.js","assets/js/mermaid-CWQI515T.js","assets/js/vendor-B1Lfatlz.js","assets/css/vendor-DX3NCGtF.css","assets/js/vue-vendor-BsMpqyaC.js","assets/css/vue-vendor-BY9mLa3u.css","assets/js/system-Onp4yS9N.js","assets/css/index-_wfHOCMC.css","assets/css/DesktopPetView-BAjQs-_e.css","assets/js/LoginView-B9nES8-3.js","assets/css/LoginView-BbzXtRcu.css","assets/js/ChatView-CAoJp8-Q.js","assets/js/ChatPanel-DRCE0v4g.js","assets/js/files-CBYc0MSs.js","assets/js/MessageList-Ds_mjMbf.js","assets/js/skills-5qxphanX.js","assets/js/useSttSettings-C-jexrW7.js","assets/js/ttsHelpers-DNcZ5khq.js","assets/js/MessageItem-Cu3_aQT8.js","assets/js/MarkdownRenderer-DQvs79tf.js","assets/js/clipboard-1NPxC3YL.js","assets/css/MarkdownRenderer-BdGXRWzI.css","assets/js/chat-timestamp-CkDNtK9Y.js","assets/css/chat-timestamp-B9XhhKBV.css","assets/css/MessageItem-D-rkMmwT.css","assets/js/chat-input-height-BhYiNOv7.js","assets/css/MessageList-CieiANPQ.css","assets/js/OutlinePanel-CYuSrNX9.js","assets/css/OutlinePanel-CDlJhLuz.css","assets/js/TerminalPanel-gyT2AS7Z.js","assets/js/xterm-CraVE7U3.js","assets/css/xterm-sLQPUA_C.css","assets/css/TerminalPanel-CKKd6Z8C.css","assets/js/FileRenameModal-C2YmHkSN.js","assets/css/FileRenameModal-URWOQNDj.css","assets/js/FileEditor-CzWdryd5.js","assets/js/monaco-editor-YM0cdSGX.js","assets/css/monaco-editor-DPqmyJk4.css","assets/css/FileEditor-Cn0ACbJE.css","assets/js/SettingsCircuitBadge-Eiv8LQz0.js","assets/css/SettingsCircuitBadge-ONP_ZOvB.css","assets/js/session-browser-prefs-BYjSnxJq.js","assets/css/ChatPanel-BLVcmN6W.css","assets/css/ChatView-DKVpqP44.css","assets/js/HistoryView-CzybyBXj.js","assets/js/HistoryMessageList-BcG-gj6N.js","assets/css/HistoryMessageList-D22CPzlY.css","assets/js/PageSidebarFooter-Dk-OfmNy.js","assets/css/PageSidebarFooter-2Y0PhXF4.css","assets/css/HistoryView-BX1ij38W.css","assets/js/GlobalAgentView-77p8MKvy.js","assets/css/GlobalAgentView-BZUK_-r4.css","assets/js/JobsView-BviznpSY.js","assets/css/JobsView-77BgPUh9.css","assets/js/KanbanView-B0c6OMrf.js","assets/css/KanbanView-BwOZf_JP.css","assets/js/WorkflowView-D-6z--9A.js","assets/css/WorkflowView-BlPXxBEV.css","assets/js/ModelsView-CZK6wwtt.js","assets/js/models-DetB4_Ug.js","assets/css/ModelsView-BhnKV2R0.css","assets/js/ProfilesView-BhGBaYDE.js","assets/css/ProfilesView-E2Mcw7eB.css","assets/js/LogsView-kLI6-05w.js","assets/css/LogsView-CMxhihg_.css","assets/js/UsageView-DrUS9OIk.js","assets/css/UsageView-Bynio95y.css","assets/js/PerformanceView-DkXk4HB_.js","assets/css/PerformanceView-Dn2GtW7Y.css","assets/js/SkillsUsageView-DT4o1LA9.js","assets/css/SkillsUsageView-DI5G1isc.css","assets/js/SkillsView-CUK-9OLz.js","assets/css/SkillsView-Ch-R2ULI.css","assets/js/PluginsView-D197obRC.js","assets/css/PluginsView-kUUgUCnZ.css","assets/js/PetdexView-DGkSZYVi.js","assets/css/PetdexView-DRV8mnsS.css","assets/js/MemoryView-BH4LZtYd.js","assets/css/MemoryView-D4KbI4DT.css","assets/js/SettingsView-B4ipIIOj.js","assets/js/SettingRow-DfRI-z7L.js","assets/css/SettingRow-BU_KTQ5j.css","assets/css/SettingsView-BWSSST2h.css","assets/js/ChannelsView-p3dSvD02.js","assets/css/ChannelsView-p-NpG-8W.css","assets/js/TerminalView-C3a6BwEG.js","assets/css/TerminalView-k1bjf-Lu.css","assets/js/DevicesView-CMcwuGZ6.js","assets/css/DevicesView-1mYL7Fyw.css","assets/js/GroupChatView-D1WFEfIs.js","assets/css/GroupChatView-DykwDXpM.css","assets/js/FilesView-CKxvh6yi.js","assets/css/FilesView-DLGcdF71.css","assets/js/CodingAgentsView-X0I-H0Yu.js","assets/css/CodingAgentsView-CZvrO0V5.css","assets/js/VersionPreviewView-qbXwqYd3.js","assets/css/VersionPreviewView-BZm7MZcY.css","assets/js/McpManagerView-BZU1Puf0.js","assets/css/McpManagerView-BlbrzwQA.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{n as u}from"./rolldown-runtime-M0oDzQ_3.js";import{A as I,M as D,j as P}from"./vue-vendor-BsMpqyaC.js";import{B as R,z as r}from"./mermaid-CWQI515T.js";function O(){return typeof window<"u"&&window.hermesDesktop?.isDesktop===!0}async function L(){if(typeof window>"u"||i())return;const e=window.hermesDesktop;e?.isDesktop===!0&&e.ensureAuth&&await e.ensureAuth().catch(()=>!1)}function y(){return O()?c:localStorage.getItem("hermes_server_url")||c}function i(){return localStorage.getItem("hermes_api_key")||""}function K(e){localStorage.setItem("hermes_api_key",e)}function T(){localStorage.removeItem("hermes_api_key")}function g(){T(),localStorage.removeItem(l)}function _(){return!!i()}function V(){const e=i().split(".")[1];if(!e)return null;try{const n=e.replace(/-/g,"+").replace(/_/g,"/"),t=n.padEnd(Math.ceil(n.length/4)*4,"="),s=JSON.parse(atob(t));return s.role==="super_admin"||s.role==="admin"?s.role:null}catch{return null}}function w(){return V()==="super_admin"}function W(){const e=i().split(".")[1];if(!e)return null;try{const n=e.replace(/-/g,"+").replace(/_/g,"/"),t=n.padEnd(Math.ceil(n.length/4)*4,"="),s=JSON.parse(atob(t));return typeof s.username=="string"&&s.username.length>0?s.username:null}catch{return null}}function S(){return localStorage.getItem(l)}function k(e){if(typeof e!="string")return!1;try{const n=JSON.parse(e);return typeof n?.profile=="string"&&n.profile.trim().length>0}catch{return!1}}function b(e,n){try{const t=new URL(e,"http://hermes.local");if(t.searchParams.has("profile")||t.pathname.startsWith("/api/hermes/profiles")||A(t.pathname))return!1}catch{if(e.startsWith("/api/hermes/profiles")||A(e.split("?")[0]||e))return!1}return!k(n.body)}function A(e){return e==="/api/hermes/sessions"||e==="/api/hermes/sessions/batch-delete"||e==="/api/hermes/search/sessions"||e==="/api/hermes/sessions/search"||e==="/api/hermes/sessions/conversations"}function p(e){typeof window>"u"||window.dispatchEvent(new CustomEvent("hermes-auth-notice",{detail:{kind:e}}))}function h(e){if(typeof e=="string")return e;if(e==null)return"";if(typeof e!="object")return String(e);const n=e;for(const t of["message","error","detail","description"]){const s=h(n[t]);if(s)return s}if(Array.isArray(e))return e.map(h).filter(Boolean).join(`
|
|
3
|
-
`);try{return JSON.stringify(e)}catch{return String(e)}}function v(e,n){const t=e.trim();if(!t)return n;try{return h(JSON.parse(t))||t}catch{return t}}async function z(e,n={}){await L();const t=`${y()}${e}`,s={...typeof FormData<"u"&&n.body instanceof FormData?{}:{"Content-Type":"application/json"},...n.headers},m=i();m&&(s.Authorization=`Bearer ${m}`);const f=S();f&&b(e,n)&&(s["X-Hermes-Profile"]=f);const o=await fetch(t,{...n,headers:s}),d=!e.startsWith("/api/hermes/v1/")&&!e.startsWith("/v1/");if(o.status===401&&d)throw g(),p("expired"),a.currentRoute.value.name!=="login"&&a.replace({name:"login"}),new Error("Unauthorized");if(!o.ok){const E=await o.text().catch(()=>"");throw o.status===403&&d&&(E.includes("User is disabled or does not exist")?(g(),p("expired"),a.currentRoute.value.name!=="login"&&a.replace({name:"login"})):p("forbidden")),new Error(`API Error ${o.status}: ${v(E,o.statusText)}`)}return o.json()}function F(){return y()}var c,l,U=u((()=>{j(),c="",l="hermes_active_profile_name"}));async function N(){if(_())return;const e=window.hermesDesktop;e?.isDesktop===!0&&e.ensureAuth&&await e.ensureAuth().catch(()=>!1)}var a,j=u((()=>{D(),U(),R(),a=I({history:P(),routes:[{path:"/desktop-pet",name:"desktop.pet",component:()=>r(()=>import("./DesktopPetView-
|
|
3
|
+
`);try{return JSON.stringify(e)}catch{return String(e)}}function v(e,n){const t=e.trim();if(!t)return n;try{return h(JSON.parse(t))||t}catch{return t}}async function z(e,n={}){await L();const t=`${y()}${e}`,s={...typeof FormData<"u"&&n.body instanceof FormData?{}:{"Content-Type":"application/json"},...n.headers},m=i();m&&(s.Authorization=`Bearer ${m}`);const f=S();f&&b(e,n)&&(s["X-Hermes-Profile"]=f);const o=await fetch(t,{...n,headers:s}),d=!e.startsWith("/api/hermes/v1/")&&!e.startsWith("/v1/");if(o.status===401&&d)throw g(),p("expired"),a.currentRoute.value.name!=="login"&&a.replace({name:"login"}),new Error("Unauthorized");if(!o.ok){const E=await o.text().catch(()=>"");throw o.status===403&&d&&(E.includes("User is disabled or does not exist")?(g(),p("expired"),a.currentRoute.value.name!=="login"&&a.replace({name:"login"})):p("forbidden")),new Error(`API Error ${o.status}: ${v(E,o.statusText)}`)}return o.json()}function F(){return y()}var c,l,U=u((()=>{j(),c="",l="hermes_active_profile_name"}));async function N(){if(_())return;const e=window.hermesDesktop;e?.isDesktop===!0&&e.ensureAuth&&await e.ensureAuth().catch(()=>!1)}var a,j=u((()=>{D(),U(),R(),a=I({history:P(),routes:[{path:"/desktop-pet",name:"desktop.pet",component:()=>r(()=>import("./DesktopPetView-BH9a1zur.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),meta:{public:!0}},{path:"/",name:"login",component:()=>r(()=>import("./LoginView-B9nES8-3.js"),__vite__mapDeps([12,1,2,3,4,5,6,7,8,9,10,13])),meta:{public:!0}},{path:"/hermes/chat",name:"hermes.chat",component:()=>r(()=>import("./ChatView-CAoJp8-Q.js"),__vite__mapDeps([14,1,2,3,4,5,6,7,8,9,10,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46]))},{path:"/hermes/session/:sessionId",name:"hermes.session",component:()=>r(()=>import("./ChatView-CAoJp8-Q.js"),__vite__mapDeps([14,1,2,3,4,5,6,7,8,9,10,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46]))},{path:"/hermes/history",name:"hermes.history",component:()=>r(()=>import("./HistoryView-CzybyBXj.js"),__vite__mapDeps([47,1,2,3,4,5,6,7,8,9,10,48,21,16,20,22,23,24,25,26,27,49,30,31,50,42,43,51,44,52]))},{path:"/hermes/history/session/:sessionId",name:"hermes.historySession",component:()=>r(()=>import("./HistoryView-CzybyBXj.js"),__vite__mapDeps([47,1,2,3,4,5,6,7,8,9,10,48,21,16,20,22,23,24,25,26,27,49,30,31,50,42,43,51,44,52]))},{path:"/hermes/global-agent",name:"hermes.globalAgent",component:()=>r(()=>import("./GlobalAgentView-77p8MKvy.js"),__vite__mapDeps([53,1,2,3,4,5,6,7,8,9,10,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,54]))},{path:"/hermes/global-agent/session/:sessionId",name:"hermes.globalAgentSession",component:()=>r(()=>import("./GlobalAgentView-77p8MKvy.js"),__vite__mapDeps([53,1,2,3,4,5,6,7,8,9,10,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,54]))},{path:"/hermes/jobs",name:"hermes.jobs",component:()=>r(()=>import("./JobsView-BviznpSY.js"),__vite__mapDeps([55,1,2,3,4,5,6,7,8,9,10,18,22,23,24,56]))},{path:"/hermes/kanban",name:"hermes.kanban",component:()=>r(()=>import("./KanbanView-B0c6OMrf.js"),__vite__mapDeps([57,1,2,3,4,5,6,7,8,9,10,18,48,21,16,20,22,23,24,25,26,27,49,58]))},{path:"/hermes/workflow",name:"hermes.workflow",component:()=>r(()=>import("./WorkflowView-D-6z--9A.js"),__vite__mapDeps([59,1,2,3,4,5,6,7,8,9,10,16,17,18,19,20,21,22,23,24,25,26,27,28,29,50,42,43,51,60]))},{path:"/hermes/models",name:"hermes.models",component:()=>r(()=>import("./ModelsView-CZK6wwtt.js"),__vite__mapDeps([61,1,2,3,4,5,6,7,8,9,10,62,23,63]))},{path:"/hermes/profiles",name:"hermes.profiles",component:()=>r(()=>import("./ProfilesView-BhGBaYDE.js"),__vite__mapDeps([64,1,2,3,4,5,6,7,8,9,10,65])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/logs",name:"hermes.logs",component:()=>r(()=>import("./LogsView-kLI6-05w.js"),__vite__mapDeps([66,1,3,4,7,5,6,8,67]))},{path:"/hermes/usage",name:"hermes.usage",component:()=>r(()=>import("./UsageView-DrUS9OIk.js"),__vite__mapDeps([68,1,2,3,4,5,6,7,8,9,10,69]))},{path:"/hermes/performance",name:"hermes.performance",component:()=>r(()=>import("./PerformanceView-DkXk4HB_.js"),__vite__mapDeps([70,1,3,4,7,5,6,8,71])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/skills-usage",name:"hermes.skillsUsage",component:()=>r(()=>import("./SkillsUsageView-DT4o1LA9.js"),__vite__mapDeps([72,1,2,3,4,5,6,7,8,9,10,18,73]))},{path:"/hermes/skills",name:"hermes.skills",component:()=>r(()=>import("./SkillsView-CUK-9OLz.js"),__vite__mapDeps([74,1,2,3,4,5,6,7,8,9,10,18,22,23,24,75]))},{path:"/hermes/plugins",name:"hermes.plugins",component:()=>r(()=>import("./PluginsView-D197obRC.js"),__vite__mapDeps([76,1,2,3,4,5,6,7,8,9,10,77]))},{path:"/hermes/petdex",name:"hermes.petdex",component:()=>r(()=>import("./PetdexView-DGkSZYVi.js"),__vite__mapDeps([78,1,2,3,4,5,6,7,8,9,10,79]))},{path:"/hermes/memory",name:"hermes.memory",component:()=>r(()=>import("./MemoryView-BH4LZtYd.js"),__vite__mapDeps([80,1,2,3,4,5,6,7,8,9,10,18,22,23,24,81]))},{path:"/hermes/settings",name:"hermes.settings",component:()=>r(()=>import("./SettingsView-B4ipIIOj.js"),__vite__mapDeps([82,1,2,3,4,5,6,7,8,9,10,19,20,83,84,62,44,28,85]))},{path:"/hermes/channels",name:"hermes.channels",component:()=>r(()=>import("./ChannelsView-p3dSvD02.js"),__vite__mapDeps([86,1,2,3,4,5,6,7,8,9,10,83,84,87]))},{path:"/hermes/terminal",name:"hermes.terminal",component:()=>r(()=>import("./TerminalView-C3a6BwEG.js"),__vite__mapDeps([88,1,3,4,7,5,6,8,33,34,89])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/devices",name:"hermes.devices",component:()=>r(()=>import("./DevicesView-CMcwuGZ6.js"),__vite__mapDeps([90,1,3,4,7,5,6,8,23,91])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/group-chat",name:"hermes.groupChat",component:()=>r(()=>import("./GroupChatView-D1WFEfIs.js"),__vite__mapDeps([92,1,2,3,4,5,6,7,8,9,10,20,22,23,24,25,26,42,43,28,93]))},{path:"/hermes/group-chat/room/:roomId",name:"hermes.groupChatRoom",component:()=>r(()=>import("./GroupChatView-D1WFEfIs.js"),__vite__mapDeps([92,1,2,3,4,5,6,7,8,9,10,20,22,23,24,25,26,42,43,28,93]))},{path:"/hermes/files",name:"hermes.files",component:()=>r(()=>import("./FilesView-CKxvh6yi.js"),__vite__mapDeps([94,1,2,3,4,5,6,7,8,9,10,16,36,22,23,24,37,38,39,40,41,95]))},{path:"/hermes/coding-agents",name:"hermes.codingAgents",component:()=>r(()=>import("./CodingAgentsView-X0I-H0Yu.js"),__vite__mapDeps([96,1,2,3,4,5,6,7,8,9,10,32,33,34,35,97]))},{path:"/hermes/version-preview",name:"hermes.versionPreview",component:()=>r(()=>import("./VersionPreviewView-qbXwqYd3.js"),__vite__mapDeps([98,1,3,4,7,5,6,8,9,99])),meta:{requiresSuperAdmin:!0}},{path:"/hermes/mcp",name:"hermes.mcp",component:()=>r(()=>import("./McpManagerView-BZU1Puf0.js"),__vite__mapDeps([100,1,3,4,5,6,7,8,101]))}]}),a.beforeEach(async(e,n,t)=>{if(await N(),e.meta.public){if(e.name==="login"&&_()){t({path:"/hermes/chat"});return}t();return}if(!_()){t({name:"login"});return}if(e.meta.requiresSuperAdmin&&!w()){t({name:"hermes.chat"});return}t()})})),q,H=u((()=>{q=(e,n)=>{const t=e.__vccOpts||e;for(const[s,m]of n)t[s]=m;return t}}));export{S as a,W as c,w as d,z as f,a as i,_ as l,H as n,i as o,K as p,j as r,F as s,q as t,U as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as R}from"./rolldown-runtime-M0oDzQ_3.js";import{Bn as we,Dn as Se,Hn as I,Kt as ee,Nn as be,Pn as T,cn as A,cr as j,er as H,fr as ke,hn as Me,in as J,jn as k,kn as xe,on as Be,pn as Fe,sn as M,tn as Ae,wn as y}from"./ui-vendor-DDMfmCj2.js";import{C as He,S as Re,T as Ve,x as ze}from"./vue-vendor-BsMpqyaC.js";import{n as Ie,t as De}from"./_plugin-vue_export-helper-
|
|
1
|
+
import{n as R}from"./rolldown-runtime-M0oDzQ_3.js";import{Bn as we,Dn as Se,Hn as I,Kt as ee,Nn as be,Pn as T,cn as A,cr as j,er as H,fr as ke,hn as Me,in as J,jn as k,kn as xe,on as Be,pn as Fe,sn as M,tn as Ae,wn as y}from"./ui-vendor-DDMfmCj2.js";import{C as He,S as Re,T as Ve,x as ze}from"./vue-vendor-BsMpqyaC.js";import{n as Ie,t as De}from"./_plugin-vue_export-helper-CvnFozKy.js";function Pe(){try{return localStorage.getItem(C)!=="false"}catch{return!0}}function te(i){D.value=i;try{localStorage.setItem(C,String(i))}catch{}}function Ee(){te(!D.value)}function Je(){return{toolTraceVisible:D,setToolTraceVisible:te,toggleToolTraceVisible:Ee}}var C,D,Qe=R((()=>{ee(),C="hermes_show_tool_calls",D=H(Pe())})),Q,X,ne,Z=R((()=>{ee(),Re(),ze(),Q=["data-virtual-index"],X={key:2,class:"virtual-message-list-empty"},ne=Me({__name:"VirtualMessageList",props:{messages:{},virtualized:{type:Boolean,default:!0},estimatedItemHeight:{default:180},overscan:{default:8},rowGap:{default:16},padding:{default:"20px"},topThreshold:{default:120}},emits:["scroll","topReach"],setup(i,{expose:m,emit:d}){const o=i,x=d,w=H(null),h=H(null),V=H(0),le=H(0);let P=0,f=null,v=0,S=0,Y=0,p=!1,u=null,E=0,_=null,g=null;const re=J(()=>o.messages.map(O)),ie=J(()=>Math.max(o.estimatedItemHeight,o.estimatedItemHeight*o.overscan));function O(e){return String(e.id)}function a(){return w.value?.querySelector(".virtual-message-list")??null}function s(){const e=a();e&&(V.value=e.scrollTop,le.value=e.clientHeight)}function B(e=120){Y=Date.now()+e}function oe(){return Date.now()<Y}function F(){P=0,f!=null&&(cancelAnimationFrame(f),f=null),v=0,S=0}function K(){const e=V.value;s(),V.value-e<-1?(p=!0,F()):oe()||(b(32)&&(p=!1),(p||!b(96))&&F()),x("scroll"),V.value<=o.topThreshold&&x("topReach")}function W(e){e.deltaY<-1&&(p=!0,F())}function G(){s(),(Date.now()<P||b(64))&&U(2),_&&L(_.token,4)}function b(e=200){const n=a();return n?n.scrollHeight-n.scrollTop-n.clientHeight<e:!0}function ae(e=200){return!p&&b(e)}function se(e={}){const n=typeof e=="number"?e:e.frames??2,t=typeof e=="number"?400:e.keepAliveMs??400;p=!1,P=Date.now()+t,y(()=>{U(n)})}function ue(){const e=a();return B(),o.virtualized&&h.value?.scrollToBottom(),e?(e.scrollTop=Math.max(0,e.scrollHeight-e.clientHeight),s(),!0):!1}function U(e=1){if(v=Math.max(v,e),f!=null)return;const n=()=>{if(ue()?(S=0,v-=1):S+=1,v<=0){f=null,v=0,S=0;return}if(S>30){f=null,v=0,S=0;return}f=requestAnimationFrame(n)};f=requestAnimationFrame(n)}function ce(e,n){const t=a();if(!t)return null;const r=document.getElementById(n);if(r instanceof HTMLElement&&t.contains(r))return r;const l=document.getElementById(`message-${e}`);return l instanceof HTMLElement&&t.contains(l)?l:null}function me(e,n){const t=a();if(!t)return;const r=t.getBoundingClientRect(),l=e.getBoundingClientRect(),c=n==="center"?l.top+l.height/2-(r.top+r.height/2):l.top-r.top-24;Math.abs(c)>1&&(B(),t.scrollTop=Math.max(0,t.scrollTop+c)),s()}function fe(e){return a()?.querySelector(`.virtual-row[data-virtual-index="${e}"]`)??null}function $(e,n){if(B(),o.virtualized){h.value?.scrollToItem(e,n),s();return}const t=a(),r=fe(e);if(!t||!r){s();return}const l=r.getBoundingClientRect(),c=t.getBoundingClientRect(),z=n?.align??"start",Te=n?.offset??0,ye=z==="center"?l.top+l.height/2-(c.top+c.height/2):l.top-c.top+Te;t.scrollTop=Math.max(0,t.scrollTop+ye),s()}function L(e,n=1){u!=null&&cancelAnimationFrame(u);const t=r=>{const l=_;if(!l||l.token!==e){u=null;return}const c=ce(l.messageId,l.anchorId);if(c?me(c,l.align):$(l.index,{align:l.align,offset:l.align==="start"?-24:0}),r<=1){u=null,_=null;return}u=requestAnimationFrame(()=>t(r-1))};u=requestAnimationFrame(()=>t(n))}function N(){E+=1,_=null,u!=null&&(cancelAnimationFrame(u),u=null)}function ge(e){const n=o.messages.findIndex(r=>String(r.id)===e);if(n<0)return;N();const t=E;_={token:t,index:n,messageId:e,anchorId:`message-${e}`,align:"center"},y(()=>{$(n,{align:"center"}),L(t,8)})}function de(e,n){const t=o.messages.findIndex(l=>String(l.id)===e);if(t<0)return;N();const r=E;_={token:r,index:t,messageId:e,anchorId:n,align:"start"},y(()=>{$(t,{align:"start",offset:-24}),L(r,10)})}function he(){const e=a();return e?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function ve(e){e&&y(()=>{const n=a();if(!n)return;const t=Math.max(0,n.scrollHeight-e.scrollHeight+e.scrollTop);B(),o.virtualized&&h.value?.scrollToPosition(t),n.scrollTop=t,s()})}function pe(){const e=a();return e?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,clientHeight:e.clientHeight,wasNearBottom:b(64)}:null}function _e(e,n=4){e&&(F(),p=!e.wasNearBottom,g!=null&&cancelAnimationFrame(g),y(()=>{let t=n;const r=()=>{const l=a();if(!l){g=null;return}const c=Math.max(0,l.scrollHeight-l.clientHeight),z=Math.min(c,Math.max(0,e.scrollTop));if(B(),o.virtualized&&h.value?.scrollToPosition(z),l.scrollTop=z,s(),t-=1,t<=0){g=null;return}g=requestAnimationFrame(r)};g=requestAnimationFrame(r)}))}let q=null;return xe(()=>{y(()=>{s();const e=a();e&&typeof ResizeObserver<"u"&&(q=new ResizeObserver(G),q.observe(e))})}),Se(()=>{F(),u!=null&&cancelAnimationFrame(u),g!=null&&cancelAnimationFrame(g),q?.disconnect()}),we(re,()=>{N(),y(s)}),m({isNearBottom:b,shouldAutoFollowBottom:ae,scrollToBottom:se,scrollToMessage:ge,scrollToAnchor:de,captureScrollPosition:he,restoreScrollPosition:ve,captureViewportPosition:pe,restoreViewportPosition:_e}),(e,n)=>(k(),A("div",{ref_key:"hostRef",ref:w,class:"virtual-message-list-host",style:ke({"--virtual-row-gap":`${i.rowGap}px`,"--virtual-list-padding":i.padding})},[i.virtualized?(k(),Be(j(Ve),{key:0,ref_key:"scrollerRef",ref:h,class:"virtual-message-list",items:i.messages,"key-field":"id","min-item-size":i.estimatedItemHeight,buffer:ie.value,"flow-mode":!0,prerender:i.overscan,onScrollPassive:K,onWheelPassive:W,onResize:G,onVisible:s},{before:I(()=>[i.messages.length>0?T(e.$slots,"before",{key:0},void 0,!0):M("",!0)]),default:I(({item:t,index:r,active:l})=>[Fe(j(He),{item:t,index:r,active:l,class:"virtual-row","data-virtual-index":r},{default:I(()=>[l?T(e.$slots,"item",{key:0,message:t},void 0,!0):M("",!0)]),_:2},1032,["item","index","active","data-virtual-index"])]),after:I(()=>[i.messages.length>0?T(e.$slots,"after",{key:0},void 0,!0):M("",!0)]),_:3},8,["items","min-item-size","buffer","prerender"])):(k(),A("div",{key:1,class:"virtual-message-list",onScrollPassive:K,onWheelPassive:W},[i.messages.length>0?T(e.$slots,"before",{key:0},void 0,!0):M("",!0),(k(!0),A(Ae,null,be(i.messages,(t,r)=>(k(),A("div",{key:O(t),class:"virtual-row","data-virtual-index":r},[T(e.$slots,"item",{message:t},void 0,!0)],8,Q))),128)),i.messages.length>0?T(e.$slots,"after",{key:1},void 0,!0):M("",!0)],32)),i.messages.length===0&&e.$slots.empty?(k(),A("div",X,[T(e.$slots,"empty",{},void 0,!0)])):M("",!0)],4))}})})),$e=R((()=>{})),Le,Xe=R((()=>{Z(),Z(),$e(),Ie(),Le=De(ne,[["__scopeId","data-v-2a68f8fd"]])}));function Ne(i,m){return i.getFullYear()===m.getFullYear()&&i.getMonth()===m.getMonth()&&i.getDate()===m.getDate()}function Ze(i,m={}){const d=i instanceof Date?i:new Date(i);if(Number.isNaN(d.getTime()))return"";const o=m.now||new Date,x=m.locale,w={hour:"2-digit",minute:"2-digit"};if(Ne(d,o))return d.toLocaleTimeString(x,w);const h=d.getFullYear()===o.getFullYear()?{month:"2-digit",day:"2-digit",...w}:{year:"numeric",month:"2-digit",day:"2-digit",...w};return d.toLocaleString(x,h)}var et=R((()=>{}));export{Qe as a,Xe as i,et as n,Je as o,Le as r,Ze as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as O}from"./rolldown-runtime-M0oDzQ_3.js";import{Kt as Z,er as v,in as P}from"./ui-vendor-DDMfmCj2.js";import{I as ee,L as te}from"./vue-vendor-BsMpqyaC.js";import{a as _,f as d,o as b,s as j,u as ae}from"./_plugin-vue_export-helper-
|
|
1
|
+
import{n as O}from"./rolldown-runtime-M0oDzQ_3.js";import{Kt as Z,er as v,in as P}from"./ui-vendor-DDMfmCj2.js";import{I as ee,L as te}from"./vue-vendor-BsMpqyaC.js";import{a as _,f as d,o as b,s as j,u as ae}from"./_plugin-vue_export-helper-CvnFozKy.js";import{Ct as ie,vt as se,yt as ne}from"./index-B2IKGvbR.js";function m(t){return(typeof t=="string"?t.trim():"")||null}function $(t,a){const i=m(a);i&&t.set("profile",i)}async function oe(t="",a){const i=new URLSearchParams;t&&i.set("path",t),$(i,a);const u=i.toString();return d(`/api/hermes/files/list${u?`?${u}`:""}`)}async function F(t,a){const i=new URLSearchParams({path:t});return $(i,a),d(`/api/hermes/files/read?${i.toString()}`)}async function D(t,a,i){await d("/api/hermes/files/write",{method:"PUT",body:JSON.stringify({path:t,content:a,profile:m(i)||void 0})})}async function re(t,a=!1,i){await d("/api/hermes/files/delete",{method:"DELETE",body:JSON.stringify({path:t,recursive:a,profile:m(i)||void 0})})}async function le(t,a,i){await d("/api/hermes/files/rename",{method:"POST",body:JSON.stringify({oldPath:t,newPath:a,profile:m(i)||void 0})})}async function ce(t,a){await d("/api/hermes/files/mkdir",{method:"POST",body:JSON.stringify({path:t,profile:m(a)||void 0})})}async function ue(t,a,i){await d("/api/hermes/files/copy",{method:"POST",body:JSON.stringify({srcPath:t,destPath:a,profile:m(i)||void 0})})}async function fe(t,a,i){const u=j(),c=new FormData;for(const y of a)c.append("file",y);const f=new URLSearchParams;t&&f.set("path",t),$(f,i);const s=f.toString(),r=`${u}/api/hermes/files/upload${s?`?${s}`:""}`,g={},k=b();k&&(g.Authorization=`Bearer ${k}`);const w=m(i),p=w||_();p&&!w&&(g["X-Hermes-Profile"]=p);const h=await fetch(r,{method:"POST",headers:g,body:c});if(!h.ok){const y=await h.json().catch(()=>({error:`HTTP ${h.status}`}));throw new Error(y.error||`Upload failed: ${h.status}`)}return(await h.json()).files}async function Ee(t){const a=j(),i=new FormData;for(const r of t)i.append("file",r);const u={},c=b();c&&(u.Authorization=`Bearer ${c}`);const f=_();f&&(u["X-Hermes-Profile"]=f);const s=await fetch(`${a}/upload`,{method:"POST",headers:u,body:i});if(!s.ok){const r=await s.json().catch(()=>({error:`HTTP ${s.status}`}));throw new Error(r.error||`Upload failed: ${s.status}`)}return(await s.json()).files}function Pe(t,a,i){const u=j(),c=new URLSearchParams({path:t});a&&c.set("name",a);const f=m(i),s=i===void 0?_():f;s&&c.set("profile",s);const r=b();return r&&c.set("token",r),`${u}/api/hermes/download?${c.toString()}`}var pe=O((()=>{ae()}));function x(t){const a=t.split("/").pop()||"",i=T[a];return i||N[E(a)]||"plaintext"}function E(t){const a=t.lastIndexOf(".");return a>=0?t.slice(a).toLowerCase():""}function L(t){return q.has(E(t))}function A(t){const a=E(t);return a===".md"||a===".markdown"}function C(t){const a=t.split("/").pop()||"";return I.has(a)||a.startsWith(".env.")?!0:U.has(E(a))}function Fe(t){return L(t)||A(t)||C(t)}function S(t,a,i){return!!(t===a||i&&t.startsWith(a+"/"))}function ve(t){return(typeof t=="string"?t.trim():"")||null}var N,T,I,U,q,me,xe=O((()=>{te(),Z(),pe(),se(),N={".js":"javascript",".jsx":"javascript",".ts":"typescript",".tsx":"typescript",".json":"json",".jsonc":"json",".html":"html",".htm":"html",".css":"css",".scss":"scss",".less":"less",".md":"markdown",".markdown":"markdown",".py":"python",".yaml":"yaml",".yml":"yaml",".xml":"xml",".sh":"shell",".bash":"shell",".zsh":"shell",".sql":"sql",".go":"go",".rs":"rust",".java":"java",".c":"c",".h":"c",".cpp":"cpp",".hpp":"cpp",".toml":"ini",".ini":"ini",".env":"ini",".vue":"html",".dockerfile":"dockerfile",".graphql":"graphql",".lua":"lua",".r":"r",".rb":"ruby",".php":"php",".swift":"swift",".kt":"kotlin"},T={Dockerfile:"dockerfile",Makefile:"makefile","CMakeLists.txt":"cmake",".gitignore":"gitignore",".dockerignore":"gitignore"},I=new Set([...Object.keys(T),"README","LICENSE","NOTICE","CHANGELOG","CONTRIBUTING"]),U=new Set([".txt",".text",".log",".csv",".tsv",".js",".jsx",".mjs",".cjs",".ts",".tsx",".mts",".cts",".json",".jsonc",".html",".htm",".css",".scss",".less",".md",".markdown",".py",".pyw",".yaml",".yml",".xml",".sh",".bash",".zsh",".fish",".sql",".go",".rs",".java",".c",".h",".cpp",".hpp",".cc",".cxx",".hh",".hxx",".toml",".ini",".env",".conf",".cfg",".properties",".vue",".svelte",".astro",".dockerfile",".graphql",".gql",".lua",".r",".rb",".php",".swift",".kt",".kts",".diff",".patch",".lock"]),q=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".bmp",".ico"]),me=ee("files",()=>{const t=v(""),a=v(null),i=v([]),u=v(!1),c=v("name"),f=v("asc"),s=v(null),r=v(null),g=P(()=>t.value?t.value.split("/").filter(Boolean):[]),k=P(()=>{const e=[...i.value];return e.sort((n,o)=>{if(n.isDir!==o.isDir)return n.isDir?-1:1;let l=0;switch(c.value){case"name":l=n.name.localeCompare(o.name);break;case"size":l=n.size-o.size;break;case"modTime":l=n.modTime.localeCompare(o.modTime);break}return f.value==="asc"?l:-l}),e});function w(e){return e===void 0?a.value:ve(e)}async function p(e,n={}){e!==void 0&&e!==t.value&&(r.value=null);const o=w(n.profile);a.value=o,e!==void 0&&(t.value=e),u.value=!0;try{i.value=(await oe(t.value,o)).entries}catch(l){throw console.error("Failed to fetch files:",l),l}finally{u.value=!1}}function h(e,n={}){return p(e,n)}function y(e={}){const n=t.value.split("/").filter(Boolean);return n.pop(),p(n.join("/"),e)}async function R(e,n={}){const o=w(n.profile);a.value=o;const l=await F(e,o);s.value={path:e,content:l.content,originalContent:l.content,language:x(e)}}async function z(e,n){const o=await ne(e,n);s.value={path:o.path,content:o.content,originalContent:o.content,language:x(o.path),workspaceSessionId:e,workspaceRelativePath:o.path}}async function M(){s.value&&(s.value.workspaceSessionId&&s.value.workspaceRelativePath?await ie(s.value.workspaceSessionId,s.value.workspaceRelativePath,s.value.content):await D(s.value.path,s.value.content,a.value),s.value.originalContent=s.value.content)}function B(){s.value=null}async function X(e,n={}){const o=w(n.profile);if(a.value=o,L(e.name))r.value={path:e.path,profile:o,type:"image"};else if(A(e.name)){const l=await F(e.path,o);r.value={path:e.path,profile:o,type:"markdown",content:l.content}}else if(C(e.name)){const l=await F(e.path,o);r.value={path:e.path,profile:o,type:"text",content:l.content,language:x(e.path)}}}function G(){r.value=null}async function H(e,n=t.value){const o=n?`${n}/${e}`:e;await ce(o,a.value),await p(void 0)}async function J(e){const n=t.value?`${t.value}/${e}`:e;await D(n,"",a.value),await p(void 0)}async function W(e){await re(e.path,e.isDir,a.value),r.value&&S(r.value.path,e.path,e.isDir)&&(r.value=null),s.value&&S(s.value.path,e.path,e.isDir)&&(s.value=null),await p(void 0)}async function K(e,n){const o=e.path.includes("/")?e.path.slice(0,e.path.lastIndexOf("/")):"",l=o?`${o}/${n}`:n;await le(e.path,l,a.value),r.value&&S(r.value.path,e.path,e.isDir)&&(r.value=null),s.value&&S(s.value.path,e.path,e.isDir)&&(s.value=null),await p(void 0)}async function V(e,n){await ue(e.path,n,a.value),await p(void 0)}async function Q(e){await fe(t.value,e,a.value),await p(void 0)}function Y(e){c.value===e?f.value=f.value==="asc"?"desc":"asc":(c.value=e,f.value="asc")}return{currentPath:t,currentProfile:a,entries:i,loading:u,sortBy:c,sortOrder:f,editingFile:s,previewFile:r,pathSegments:g,sortedEntries:k,hasUnsavedChanges:P(()=>s.value?s.value.content!==s.value.originalContent:!1),fetchEntries:p,navigateTo:h,navigateUp:y,openEditor:R,openSessionWorkspaceEditor:z,saveEditor:M,closeEditor:B,openPreview:X,closePreview:G,createDir:H,createFile:J,deleteEntry:W,renameEntry:K,copyEntry:V,uploadFiles:Q,setSort:Y}})}));export{Pe as a,Ee as c,me as i,Fe as n,pe as o,C as r,oe as s,xe as t};
|