@flowfuse/flowfuse 2.28.2-fff41da-202604090844.0 → 2.28.2-fff41da-202604090910.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/frontend/dist/app/{311.492304b504d9e6b60032.js → 311.22e77177f3449f8a71d3.js} +1 -1
- package/frontend/dist/app/311.22e77177f3449f8a71d3.js.map +1 -0
- package/frontend/dist/app/{969.bac26c51982ae9a3da3a.js → 969.219a004858c2038ced7d.js} +1 -1
- package/frontend/dist/app/969.219a004858c2038ced7d.js.map +1 -0
- package/frontend/dist/app/{main.ec532d8e7723a867e329.js → main.4c900687f67a2b4eb92b.js} +1 -1
- package/frontend/dist/app/main.4c900687f67a2b4eb92b.js.map +1 -0
- package/frontend/dist/app/main.f475f1f3129f2da68200.css.map +1 -1
- package/frontend/dist/app/{runtime.537945c148a01d618b53.js → runtime.604baf39997c8a4f80ce.js} +1 -1
- package/frontend/dist/app/{runtime.537945c148a01d618b53.js.map → runtime.604baf39997c8a4f80ce.js.map} +1 -1
- package/frontend/dist/app/setup.1ad1aeffd122b5bb0b6c.css.map +1 -1
- package/frontend/dist/app/{setup.d24dcfe20f4a642b7ebe.js → setup.8fac8ab1c1dc7a9fa941.js} +1 -1
- package/frontend/dist/app/setup.8fac8ab1c1dc7a9fa941.js.map +1 -0
- package/frontend/dist/index.html +1 -1
- package/frontend/dist-setup/setup.html +1 -1
- package/package.json +2 -2
- package/frontend/dist/app/311.492304b504d9e6b60032.js.map +0 -1
- package/frontend/dist/app/969.bac26c51982ae9a3da3a.js.map +0 -1
- package/frontend/dist/app/main.ec532d8e7723a867e329.js.map +0 -1
- package/frontend/dist/app/setup.d24dcfe20f4a642b7ebe.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="c44a17d7-8197-4caa-8bfe-5a965489be8a",e._sentryDebugIdIdentifier="sentry-dbid-c44a17d7-8197-4caa-8bfe-5a965489be8a")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"fff41da5fe7938d2842aebbd07badabcdd746513"},(self.webpackChunk_flowfuse_flowfuse=self.webpackChunk_flowfuse_flowfuse||[]).push([[311,969],{1311:function(e,t,s){s.d(t,{default:function(){return v}});var o=s(41425);const a={ref:"drawer",class:"ff-expert-drawer","data-el":"expert-drawer",tabindex:"-1"},n={class:"header"},r={key:0,class:"agent-mode"},l={class:"header-actions"},i=["title"];var c=s(9600),d=s(99455),m=s(20563),u=s(10810),p=s(82124),h=s(53644),g=s(81969),f=s(26081),k=s(28409),S={name:"ExpertDrawer",components:{ToggleButtonGroup:h.A,ExpertPanel:g.default,XIcon:c.A,LockClosedIcon:d.A,LockOpenIcon:m.A},inject:["togglePinWithWidth","shouldAllowPinning"],computed:{...(0,u.aH)(k.W,["rightDrawer"]),...(0,u.aH)(f.useProductExpertStore,["agentMode"]),...(0,p.aH)("account",["features"]),agentModeButtons(){return[{title:"Support",value:"support-agent"},{title:"Insights",value:"insights-agent"}]},isInsightsModeEnabled(){return!!this.features.expertInsights},isPinned(){return this.rightDrawer.fixed},agentModeWrapper:{get(){return this.agentMode},set(e){this.setAgentMode(e)}}},mounted(){setTimeout(()=>{this.$refs.drawer?.focus()},350)},methods:{...(0,u.i0)(k.W,["closeRightDrawer"]),...(0,u.i0)(f.useProductExpertStore,["setAgentMode"]),closeDrawer(){this.closeRightDrawer()},togglePin(){this.togglePinWithWidth()}}},v=(0,s(66262).A)(S,[["render",function(e,t,s,c,d,m){const u=(0,o.resolveComponent)("toggle-button-group"),p=(0,o.resolveComponent)("LockClosedIcon"),h=(0,o.resolveComponent)("LockOpenIcon"),g=(0,o.resolveComponent)("XIcon"),f=(0,o.resolveComponent)("ExpertPanel");return(0,o.openBlock)(),(0,o.createElementBlock)("div",a,[(0,o.createElementVNode)("div",n,[t[3]||(t[3]=(0,o.createElementVNode)("div",{class:"flex items-center gap-1.5"},[(0,o.createElementVNode)("img",{src:"/ff-minimal-red.svg",alt:"FlowFuse",class:"w-5 h-5 flex-shrink-0"}),(0,o.createElementVNode)("h2",{class:"title"},"Expert")],-1)),m.isInsightsModeEnabled?((0,o.openBlock)(),(0,o.createElementBlock)("div",r,[(0,o.createVNode)(u,{modelValue:m.agentModeWrapper,"onUpdate:modelValue":t[0]||(t[0]=e=>m.agentModeWrapper=e),buttons:m.agentModeButtons,usesLinks:!1,"visually-hide-title":!0},null,8,["modelValue","buttons"])])):(0,o.createCommentVNode)("v-if",!0),(0,o.createElementVNode)("div",l,[m.shouldAllowPinning()?((0,o.openBlock)(),(0,o.createElementBlock)("button",{key:0,class:(0,o.normalizeClass)(["header-button pin-button",{"is-pinned":m.isPinned}]),title:m.isPinned?"Unpin drawer":"Pin drawer open","data-el":"expert-drawer-pin-button",onClick:t[1]||(t[1]=(...e)=>m.togglePin&&m.togglePin(...e))},[m.isPinned?((0,o.openBlock)(),(0,o.createBlock)(p,{key:0,class:"ff-icon"})):((0,o.openBlock)(),(0,o.createBlock)(h,{key:1,class:"ff-icon"}))],10,i)):(0,o.createCommentVNode)("v-if",!0),(0,o.createElementVNode)("button",{class:"header-button",title:"Close Expert","data-el":"expert-drawer-close-button",onClick:t[2]||(t[2]=(...e)=>m.closeDrawer&&m.closeDrawer(...e))},[(0,o.createVNode)(g,{class:"ff-icon"})])])]),(0,o.createVNode)(f)],512)}],["__scopeId","data-v-e64c976c"]])},81969:function(e,t,s){s.r(t),s.d(t,{default:function(){return Ds}});var o=s(41425);const a={class:"ff-expert"},n={ref:"scrollAnchor",class:"scroll-anchor"};var r=s(10810),l=s(82124);const i={class:"action-buttons"},c=["disabled"],d={class:"right-buttons"},m=["placeholder","disabled"],u={class:"actions"},p={class:"left"},h={class:"right"},g=["disabled"];var f=s(5322),k=s(40848);const S={class:"capabilities-selector"},v={style:{"min-width":"300px"}},C={class:"flex flex-col gap-1 flex-1 min-w-0"},b={class:"truncate",style:{"line-height":"16px"}},x={key:0,class:"text-gray-400 text-sm truncate leading-4"},w={class:"tool-count-badge self-start",title:"Tools"};var y=s(20487),V=s(87336),B=s(72468),E=s(63391),N={name:"CapabilitiesSelector",components:{FfCheckbox:V.A,ListboxOption:y.h7,FfListbox:B.A},computed:{...(0,r.aH)(E.W,["selectedCapabilities","capabilities"]),hasCapabilities(){return this.capabilities&&this.capabilities.length>0},capabilitiesHandler:{get(){return this.selectedCapabilities},set(e){this.setSelectedCapabilities(e)}}},methods:{...(0,r.i0)(E.W,["setSelectedCapabilities"]),onCheckboxClick(e){const t=e=>`${e.instance}::${e.mcpServerUrl}`,s=this.selectedCapabilities||[],o=s.some(s=>t(s)===t(e));this.capabilitiesHandler=o?s.filter(s=>t(s)!==t(e)):[...s,e]},getResourceTooltip(e){return[["MCP Server:",e.mcpServerName],["Instance:",e.instanceName],e.title?["Title:",e.title]:[],e.description?["Description:",e.description]:[],e.tools?.length?["Tools:",...e.tools.map(e=>e.name)]:null,e.resources?.length?["Resources:",...e.resources.map(e=>e.name)]:null,e.resourceTemplates?.length?["Resource Templates:",...e.resourceTemplates.map(e=>e.name)]:null].filter(Boolean).map(e=>e.join("\n")).join("\n\n")}}},I=s(66262),A=(0,I.A)(N,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("ff-checkbox"),i=(0,o.resolveComponent)("ListboxOption"),c=(0,o.resolveComponent)("ff-listbox");return(0,o.openBlock)(),(0,o.createElementBlock)("div",S,[(0,o.createVNode)(c,{modelValue:r.capabilitiesHandler,"onUpdate:modelValue":t[0]||(t[0]=e=>r.capabilitiesHandler=e),options:e.capabilities,disabled:!r.hasCapabilities,"return-model":"",multiple:"","label-key":"name","value-key":["instance","mcpServerUrl"],placeholder:"Resources","open-above":"","options-min-width":280,"align-right":""},{options:(0,o.withCtx)(({options:e})=>[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e,e=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:e.mcpServerName,as:"template",value:e,class:"ff-option ff-team-selection-option","data-option":e.mcpServerName,title:r.getResourceTooltip(e)},{default:(0,o.withCtx)(({active:t,selected:s})=>[(0,o.createElementVNode)("li",v,[(0,o.createElementVNode)("div",{class:(0,o.normalizeClass)(["ff-option-content flex truncate justify-start !items-start !gap-2 !p-2",{active:t}]),"data-click-exclude":"right-drawer"},[(0,o.createElementVNode)("div",null,[(0,o.createVNode)(l,{modelValue:s,onClick:(0,o.withModifiers)(t=>r.onCheckboxClick(e),["stop","prevent"])},null,8,["modelValue","onClick"])]),(0,o.createElementVNode)("div",C,[(0,o.createElementVNode)("span",b,(0,o.toDisplayString)(e.title),1),e.title?((0,o.openBlock)(),(0,o.createElementBlock)("p",x,(0,o.toDisplayString)(e.mcpServerName),1)):(0,o.createCommentVNode)("v-if",!0)]),(0,o.createElementVNode)("span",w,(0,o.toDisplayString)(e.toolCount),1)],2)])]),_:2},1032,["value","data-option","title"]))),128))]),_:1},8,["modelValue","options","disabled"])])}]]);const T={class:"context-selector-container"};var P=s(22511);const _=["title"],M={class:"text"},O={class:"icon-wrapper"};var L=s(88353),R=s(24487),U={name:"DefaultChip",components:{XIcon:L.default,PlusIcon:R.default},props:{modelValue:{type:Boolean,required:!1,default:!0},text:{type:String,required:!1,default:""},title:{type:String,required:!1,default:""}},emits:["toggle"],methods:{pluralize:P.td}},D=(0,I.A)(U,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("XIcon"),i=(0,o.resolveComponent)("PlusIcon");return(0,o.openBlock)(),(0,o.createElementBlock)("div",{class:(0,o.normalizeClass)(["chip",{active:s.modelValue}]),title:s.title,onClick:t[0]||(t[0]=t=>e.$emit("toggle"))},[(0,o.createElementVNode)("div",M,[(0,o.renderSlot)(e.$slots,"text",{},()=>[(0,o.createElementVNode)("span",null,(0,o.toDisplayString)(s.text),1)],!0)]),t[1]||(t[1]=(0,o.createElementVNode)("span",{class:"separator"},null,-1)),(0,o.createElementVNode)("div",O,[s.modelValue?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,class:"ff-icon ff-icon-sm"})):((0,o.openBlock)(),(0,o.createBlock)(i,{key:1,class:"ff-icon ff-icon-sm"}))])],10,_)}],["__scopeId","data-v-bb1b17f2"]]),F=s(78721),$={name:"ContextChip",components:{DefaultChip:D},props:{contextItem:{type:Object,required:!1,default:()=>({})}},computed:{...(0,r.aH)(F.u,["getSelectedContext"]),selectedContext(){return this.getSelectedContext},text(){return this.contextItem.name||"Unnamed Context"},title(){return this.contextItem.title||`Include ${this.contextItem.name} in context`}},methods:{...(0,r.i0)(F.u,["setSelectedContext"]),pluralize:P.td,toggleSelection(){const e=this.selectedContext.filter(e=>e.name!==this.contextItem.name);this.setSelectedContext(e)}}},H=(0,I.A)($,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("default-chip");return(0,o.openBlock)(),(0,o.createBlock)(l,{modelValue:!!s.contextItem,text:r.text,title:r.title,onToggle:r.toggleSelection},null,8,["modelValue","text","title","onToggle"])}]]);const z=["title"];var q={name:"DebugChip",components:{DefaultChip:D},props:{modelValue:{type:Boolean,required:!1,default:!0}},emits:["update:modelValue"],computed:{...(0,r.aH)(F.u,["debugLog"]),selectedCounter(){return this.debugLog.length},selectionTitle(){const e={};return this.debugLog.forEach(t=>{e[t.type]=(e[t.type]??0)+1}),`Selected Logs: \n${this.debugLog.map((e,t)=>{const s=(e=e||{}).level||"",o="debug"!==s?s:"",a=e.metadata?.topic||"",n=e.source?.name||e.source?.id||e.metadata?.path||"",r=e.metadata?.format||"",l=e.source?.type||"",i=e.metadata?.property||"",c=[];return n&&c.push(`node: ${n}`),a&&c.push(`topic: ${a}`),o&&l&&c.push(`${l} : (${o})`),i&&(r?c.push(`property: ${i} ${r}`):c.push(`property: ${i}`)),`${t+1}: ${c.join(", ")}`}).join("\n")}`}},methods:{...(0,r.i0)(F.u,["resetDebugLogContext"]),pluralize:P.td,toggleSelection(){this.$emit("update:modelValue",!this.modelValue),this.resetDebugLogContext()}}},W=(0,I.A)(q,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("default-chip");return(0,o.openBlock)(),(0,o.createBlock)(l,{class:"flow-selection-button",modelValue:s.modelValue,onToggle:r.toggleSelection},{text:(0,o.withCtx)(()=>[t[0]||(t[0]=(0,o.createElementVNode)("span",null,"Debug",-1)),(0,o.createElementVNode)("span",{class:"counter italic",title:r.selectionTitle},"( "+(0,o.toDisplayString)(r.selectedCounter)+" "+(0,o.toDisplayString)(r.pluralize("log",r.selectedCounter))+" )",9,z)]),_:1},8,["modelValue","onToggle"])}]]);const j=["title"];var G={name:"SelectionChip",components:{DefaultChip:D},props:{modelValue:{type:Boolean,required:!1,default:!0}},emits:["update:modelValue"],computed:{...(0,r.aH)(F.u,["selectedNodes"]),filteredSelectedNodes(){return this.selectedNodes.filter(e=>!["global-config"].includes(e.type))},selectedCounter(){return this.filteredSelectedNodes.length},selectionTitle(){const e={};return this.filteredSelectedNodes.forEach(t=>{e[t.type]=(e[t.type]??0)+1}),`Selected nodes: \n${Object.keys(e).map(t=>`${e[t]} x ${t}`).join("\n")}`}},methods:{...(0,r.i0)(F.u,["setSelectedNodes"]),pluralize:P.td,toggleSelection(){this.$emit("update:modelValue",!this.modelValue),this.setSelectedNodes([])}}},J=(0,I.A)(G,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("default-chip");return(0,o.openBlock)(),(0,o.createBlock)(l,{class:"flow-selection-button",modelValue:s.modelValue,onToggle:r.toggleSelection},{text:(0,o.withCtx)(()=>[t[0]||(t[0]=(0,o.createElementVNode)("span",null,"Selection",-1)),(0,o.createElementVNode)("span",{class:"counter italic",title:r.selectionTitle},"( "+(0,o.toDisplayString)(r.selectedCounter)+" "+(0,o.toDisplayString)(r.pluralize("node",r.selectedCounter))+" )",9,j)]),_:1},8,["modelValue","onToggle"])}]]);const K={class:"context-selector mr-2"};var Z=s(52769),Y=s(59270),Q=s(34242),X=s(28810),ee={name:"ContextSelectorButton",components:{PaperClipIcon:Z.default},data(){return{selectedContextItems:[]}},computed:{...(0,r.aH)(F.u,["availableContextOptions","getSelectedContext"]),hasContextOptions(){return this.contextOptions?.length>0},hasSelection(){return this.selectedContext?.length>0},selectedContext(){return this.getSelectedContext},contextOptions:{get(){return this.availableContextOptions.map(e=>{let t=Y.default;return"CubeIcon"===e.menuIcon?t=Q.default:"ViewListIcon"===e.menuIcon&&(t=X.default),{...e,icon:t}})}}},methods:{pluralize:P.td,...(0,r.i0)(F.u,["setSelectedContext"]),selectItem(e){if(e.onSelectAction)(0,F.u)()[e.onSelectAction]();else{const t=e=>({value:e.value,name:e.name,label:e.label,icon:e.icon}),s=t(e),o=this.selectedContext||[];if(o.some(e=>e.value===s.value))return;this.setSelectedContext([...o,s].filter(Boolean))}}}},te=(0,I.A)(ee,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("PaperClipIcon"),i=(0,o.resolveComponent)("ff-listbox");return(0,o.openBlock)(),(0,o.createElementBlock)("div",K,[(0,o.createVNode)(i,{modelValue:n.selectedContextItems,"onUpdate:modelValue":t[0]||(t[0]=e=>n.selectedContextItems=e),class:(0,o.normalizeClass)(["context-selector",r.hasSelection?"active":""]),options:r.contextOptions,disabled:!r.hasContextOptions,"hide-chevron":!0,"icon-only":!0,"return-model":"","label-key":"label",placeholder:"Context","open-above":"","options-min-width":250,"align-right":"",onOptionSelected:r.selectItem},{icon:(0,o.withCtx)(()=>[(0,o.createVNode)(l,{class:"icon ff-icon ff-icon-sm"})]),_:1},8,["modelValue","class","options","disabled","onOptionSelected"])])}]]),se=s(26081),oe={name:"ContextSelector",components:{ContextChip:H,DebugChip:W,SelectionChip:J,ContextSelectorButton:te},computed:{...(0,r.aH)(F.u,["getSelectedContext","hasDebugLogsSelected","hasUserSelection"]),...(0,r.aH)(se.useProductExpertStore,["isInsightsAgent"]),selectedContext(){return this.isInsightsAgent?[]:this.getSelectedContext},selectedContextFiltered(){return this.selectedContext.filter(e=>!1!==e.showAsChip)}},methods:{horizontalScrolling(e){const t=e.currentTarget;0!==e.deltaY&&(e.preventDefault(),t.scrollLeft+=e.deltaY/2)}}},ae=(0,I.A)(oe,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("context-selector-button"),i=(0,o.resolveComponent)("context-chip"),c=(0,o.resolveComponent)("debug-chip"),d=(0,o.resolveComponent)("selection-chip");return(0,o.openBlock)(),(0,o.createElementBlock)("div",T,[e.isInsightsAgent?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createBlock)(l,{key:0})),(0,o.createElementVNode)("div",{class:"chips-container",onWheel:t[0]||(t[0]=(...e)=>r.horizontalScrolling&&r.horizontalScrolling(...e))},[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(r.selectedContextFiltered,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:t,contextItem:e},null,8,["contextItem"]))),128)),e.hasDebugLogsSelected&&!e.isInsightsAgent?((0,o.openBlock)(),(0,o.createBlock)(c,{key:0})):(0,o.createCommentVNode)("v-if",!0),e.hasUserSelection&&!e.isInsightsAgent?((0,o.openBlock)(),(0,o.createBlock)(d,{key:1})):(0,o.createCommentVNode)("v-if",!0)],32)])}],["__scopeId","data-v-104983ce"]]),ne=s(28409),re={name:"ExpertChatInput",components:{CapabilitiesSelector:A,ContextSelector:ae,ResizeBar:k.A},inject:{togglePinWithWidth:{from:"togglePinWithWidth",default:()=>()=>{}}},emits:["send","stop"],setup(){const{startResize:e,heightStyle:t,bindResizer:s,isResizing:o}=(0,f.n)();return{startResize:e,bindResizer:s,heightStyle:t,isInputResizing:o}},data(){return{inputText:"",includeSelection:!0,isTextareaFocused:!1}},computed:{...(0,r.aH)(F.u,["immersiveInstance","immersiveDevice"]),...(0,r.aH)(ne.W,["rightDrawer"]),...(0,r.aH)(se.useProductExpertStore,["messages","isSessionExpired","isInsightsAgent","hasSelectedCapabilities","hasMessages","isWaitingForResponse"]),isInputDisabled(){return!!this.isSessionExpired||!!this.isWaitingForResponse||this.isInsightsAgent&&!this.hasSelectedCapabilities},isDrawerPinned(){return this.rightDrawer.fixed},canSend(){return this.inputText.trim().length>0&&!this.isInputDisabled},placeholderText(){return this.isInsightsAgent&&!this.hasSelectedCapabilities?"Select a resource to get started":this.isInsightsAgent?"Tell us what you want to know about":"Tell us what you need help with"},isImmersive(){return this.immersiveDevice||this.immersiveInstance}},mounted(){this.bindResizer({component:this.$refs.resizeTarget,maxHeightRatio:.9,minHeight:120,maxViewportMarginY:80})},methods:{...(0,r.i0)(F.u,["resetContextSelection"]),...(0,r.i0)(se.useProductExpertStore,["startOver","handleQuery","handleMessageResponse"]),async handleSend(){if(!this.canSend)return;const e=this.inputText.trim();this.isDrawerPinned||0!==this.messages.length||this.togglePinWithWidth(),this.handleQuery({query:e}).then(e=>this.handleMessageResponse(e)).then(()=>{this.$nextTick(()=>{this.$refs.textarea.focus()})}).catch(e=>e),this.inputText=""},handleStop(){this.$emit("stop")},handleStartOver(){this.hasMessages&&(this.inputText="",this.isInsightsAgent||this.resetContextSelection(),this.startOver())},handleKeydown(e){"Enter"!==e.key||e.shiftKey||(e.preventDefault(),this.handleSend())}}},le=(0,I.A)(re,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("resize-bar"),f=(0,o.resolveComponent)("capabilities-selector"),k=(0,o.resolveComponent)("context-selector");return(0,o.openBlock)(),(0,o.createElementBlock)("div",{ref:"resizeTarget",class:"ff-expert-input",style:(0,o.normalizeStyle)({height:a.heightStyle})},[(0,o.createVNode)(l,{"is-resizing":a.isInputResizing,direction:"horizontal",onMousedown:a.startResize},null,8,["is-resizing","onMousedown"]),(0,o.createCommentVNode)(" Action buttons row "),(0,o.createElementVNode)("div",i,[(0,o.createElementVNode)("button",{type:"button",class:"btn-start-over",disabled:e.isWaitingForResponse&&!e.isSessionExpired,onClick:t[0]||(t[0]=(...e)=>r.handleStartOver&&r.handleStartOver(...e))}," Start over ",8,c),(0,o.createElementVNode)("div",d,[e.isInsightsAgent?((0,o.openBlock)(),(0,o.createBlock)(f,{key:0})):(0,o.createCommentVNode)("v-if",!0)])]),(0,o.createElementVNode)("div",{class:(0,o.normalizeClass)(["input-wrapper",{focused:n.isTextareaFocused}])},[(0,o.createCommentVNode)(" Textarea "),(0,o.withDirectives)((0,o.createElementVNode)("textarea",{ref:"textarea","onUpdate:modelValue":t[1]||(t[1]=e=>n.inputText=e),class:"chat-input",placeholder:r.placeholderText,disabled:r.isInputDisabled,onKeydown:t[2]||(t[2]=(...e)=>r.handleKeydown&&r.handleKeydown(...e)),onFocus:t[3]||(t[3]=e=>n.isTextareaFocused=!0),onBlur:t[4]||(t[4]=e=>n.isTextareaFocused=!1)},null,40,m),[[o.vModelText,n.inputText]]),(0,o.createElementVNode)("div",u,[(0,o.createElementVNode)("div",p,[r.isImmersive&&!e.isInsightsAgent?((0,o.openBlock)(),(0,o.createBlock)(k,{key:0})):(0,o.createCommentVNode)("v-if",!0)]),(0,o.createElementVNode)("div",h,[e.isWaitingForResponse&&!e.isSessionExpired?((0,o.openBlock)(),(0,o.createElementBlock)("button",{key:0,type:"button",class:"btn-stop",onClick:t[5]||(t[5]=(...e)=>r.handleStop&&r.handleStop(...e))}," Stop ")):e.isSessionExpired?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createElementBlock)("button",{key:1,type:"button",class:"btn-send",disabled:!r.canSend,onClick:t[6]||(t[6]=(...e)=>r.handleSend&&r.handleSend(...e))}," Send ",8,g))])])],2)],4)}],["__scopeId","data-v-f0a93ed0"]]);const ie={ref:"messagesWrapper",class:"messages-wrapper"},ce={class:"flex flex-col gap-3"},de={key:0},me={class:"ff-expert-loading"},ue={key:0,class:"loading-message"};var pe=s(2e3),he={name:"ExpertLoadingIndicator",data(){return{showMessage:!1,currentMessageIndex:0,messageVariants:{[pe.C]:["Ingesting the docs...","Reading the blog...","Searching through FlowFuse knowledge base","Analyzing your question...","Finding the best answer..."],[pe.q]:["Connecting to MCP resources...","Querying your Node-RED instances...","Instructing MCP tooling...","Ingesting responses...","Gathering insights...","Considering instructions...","Processing user response..."],transfer:["Catching up with new context...","Syncing your conversation...","Loading existing history...","Preparing your chat..."]},messageTimer:null,rotationTimer:null}},computed:{...(0,r.aH)(se.useProductExpertStore,["loadingVariant"]),messages(){return this.messageVariants[this.loadingVariant]},currentMessage(){return this.messages[this.currentMessageIndex]}},mounted(){this.messageTimer=setTimeout(()=>{this.showMessage=!0,this.rotationTimer=setInterval(()=>{this.currentMessageIndex=(this.currentMessageIndex+1)%this.messages.length},3e3)},5e3)},beforeUnmount(){this.messageTimer&&clearTimeout(this.messageTimer),this.rotationTimer&&clearInterval(this.rotationTimer)}},ge=(0,I.A)(he,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)("div",me,[t[0]||(t[0]=(0,o.createElementVNode)("div",{class:"loading-dots"},[(0,o.createElementVNode)("div",{class:"loading-dot"}),(0,o.createElementVNode)("div",{class:"loading-dot"}),(0,o.createElementVNode)("div",{class:"loading-dot"})],-1)),n.showMessage?((0,o.openBlock)(),(0,o.createElementBlock)("div",ue,(0,o.toDisplayString)(r.currentMessage),1)):(0,o.createCommentVNode)("v-if",!0)])}],["__scopeId","data-v-efa2c00e"]]);const fe={class:"flex flex-col gap-3"};var ke=s(99900);function Se({intervalMs:e=350,shallow:t=!1}={}){const s=(0,o.ref)([]),a=(0,o.ref)([]),{doWhile:n}=(0,ke.A)(),r=(0,o.ref)(!1);async function l(o=[]){s.value=t?o.map(m):o,await n(()=>s.value.length!==a.value.length,async()=>{if(!Array.isArray(s.value)||0===s.value.length)return;const e=m(s.value[a.value.length]),o=c(),n=t?!!o?.streamed:Object.values(o??{}).every(e=>e.streamed);o?n&&a.value.push(e):a.value.push(e),a.value.length===s.value.length&&(r.value=!0)},{intervalMs:e})}function i(e){e.value=e,a.value=e.map(m),r.value=!1}function c(){return a.value[a.value.length-1]}function d(e,s){t?a.value[e].streamed=!0:a.value[e][s].streamed=!0}function m(e={}){return t?{...e,streamed:!1}:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{streamable:t,streamed:!1}]))}return{addItemsSequentially:l,addItems:i,initStreamer:async function(e,{shouldStream:t=!1}={}){if(!t)return i(e),Promise.resolve();await l(e)},hasFinishedStreaming:r,items:s,getLastVisibleItem:c,setSubItemStreamedState:d,updateCardStreamingState:function(e,t){Object.keys(e).forEach(e=>{d(t,e)})},visibleItems:a}}const ve={class:"guide-badge"};var Ce={name:"AnswerBadge",props:{kind:{required:!0,type:String}},computed:{title(){return"resources"===this.kind?"Resources":"Setup Guide"}}},be=(0,I.A)(Ce,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)("div",ve,[(0,o.createElementVNode)("span",null,(0,o.toDisplayString)(r.title),1)])}],["__scopeId","data-v-0d393a03"]]);const xe={key:0,class:"guide-header"},we={class:"guide-title"},ye={key:0,class:"guide-summary"},Ve=["innerHTML"];var Be=s(50011),Ee=s(69510),Ne=s(92753),Ie=s(27402),Ae=s(85262),Te=s(95387),Pe=s(69359),_e=s(60023);Be.A.registerLanguage("bash",Ee.A),Be.A.registerLanguage("shell",Ee.A),Be.A.registerLanguage("css",Ne.A),Be.A.registerLanguage("javascript",Te.A),Be.A.registerLanguage("js",Te.A),Be.A.registerLanguage("json",Ie.A),Be.A.registerLanguage("python",Ae.A),Be.A.registerLanguage("py",Ae.A),Be.A.registerLanguage("typescript",Te.A),Be.A.registerLanguage("ts",Te.A),Be.A.registerLanguage("xml",Pe.A),Be.A.registerLanguage("html",Pe.A);const Me='<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"/></svg>',Oe=Me;function Le({delayMs:e=30,splitRegex:t=/\s+/,joinWith:s=" "}={}){const a=(0,o.ref)(""),n=(0,o.ref)(!1);let r=null,l=[],i=0;const c=()=>{r&&clearTimeout(r),r=null,n.value=!1,l=[],i=0};return(0,o.onBeforeUnmount)(c),{text:a,isStreaming:n,stream:(d="")=>(c(),a.value="",l=String(d).trim().split(t).filter(Boolean),i=0,n.value=!0,new Promise(t=>{const c=async()=>n.value?i>=l.length?(await(0,o.nextTick)(),n.value=!1,t()):(a.value+=(a.value?s:"")+l[i],i+=1,void(r=setTimeout(c,e))):t();c()})),stop:c}}var Re={name:"StreamableContent",props:{modelValue:{type:Object,required:!1,default:null,validate(e,t){return t.string||e?!(!e||"object"!=typeof e)&&"string"==typeof e.streamable&&"boolean"==typeof e.streamed:(console.warn("StreamableContent: string prop is required when modelValue is null"),!1)}},string:{required:!1,type:String,default:null,validator(e,t){return!(!t.modelValue&&!e&&(console.warn("StreamableContent: string prop is required when modelValue is null"),1))}},shouldStream:{required:!1,type:Boolean,default:!0},richContent:{type:Boolean,required:!1,default:!1}},emits:["streaming-complete","update:modelValue"],setup(){const{stream:e,text:t,isStreaming:s}=Le({delayMs:30}),{markedInstance:o}=function(){const e=new _e.Dz({breaks:!0,gfm:!0});return e.use({renderer:{code({text:e,lang:t}){const s=t?t.split(/\s/)[0].toLowerCase():"";let o;return o=s&&Be.A.getLanguage(s)?Be.A.highlight(e,{language:s}).value:Be.A.highlightAuto(e).value,`<div class="ff-code-block"><div class="ff-code-block--header">${s?`<span class="ff-code-block--lang">${s}</span>`:""}<button class="ff-code-block--copy">${Me}</button></div><pre><code class="hljs">${o}</code></pre></div>`}}}),{markedInstance:e}}();return{stream:e,streamedText:t,isStreaming:s,sanitize:P.aj,markedInstance:o}},computed:{...(0,r.aH)(F.u,["supportedActions"]),rawText(){const e=this.modelValue?this.modelValue.streamable:this.string;return this.richContent?this.markedInstance.parse(e||""):e},text(){const e=this.shouldStream?this.streamedText:this.rawText;return this.sanitize(e,{supportedActions:this.supportedActions,targetBlank:!0,appendQueryParameters:{utm_source:"flowfuse-expert",utm_medium:"assistant",utm_campaign:"expert-chat"}})}},watch:{isStreaming(e){e||(this.$emit("streaming-complete"),this.modelValue&&this.$emit("update:modelValue",{...this.modelValue,streamed:!0}))}},mounted(){this.shouldStream&&this.stream(this.rawText)},methods:{handleClick(e){const t=e.target.closest(".ff-code-block--copy");if(!t)return;const s=t.closest(".ff-code-block")?.querySelector("pre code");s&&navigator.clipboard.writeText(s.textContent||"").then(()=>{t.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg>',setTimeout(()=>{t.innerHTML=Oe},2e3)}).catch(()=>{const e=document.createElement("textarea");e.value=s.textContent||"",e.style.position="fixed",e.style.left="-999999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)})}}},Ue=(0,I.A)(Re,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)("div",(0,o.mergeProps)({class:"streamable-content"},(0,o.toHandlers)(s.richContent?{click:r.handleClick}:{},!0)),[s.richContent?((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:1},[(0,o.createCommentVNode)(" eslint-disable-next-line vue/no-v-html "),((0,o.openBlock)(),(0,o.createElementBlock)("div",{key:r.text,innerHTML:r.text},null,8,Ve))],64)):((0,o.openBlock)(),(0,o.createElementBlock)("span",{key:r.text},(0,o.toDisplayString)(r.text),1))],16)}],["__scopeId","data-v-7e74785e"]]),De={name:"GuideHeader",components:{StreamableContent:Ue},props:{title:{type:String,required:!0},summary:{type:[String,null],required:!1,default:null},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],data(){return{streamableSummary:{streamable:this.summary,streamed:!1},streamableTitle:{streamable:this.title,streamed:!1}}},watch:{streamableSummary(e){e.streamed&&this.$emit("streaming-complete")},streamableTitle(e){!this.summary&&e.streamed&&this.$emit("streaming-complete")}}},Fe=(0,I.A)(De,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,null,[(0,o.createCommentVNode)(" Title and Summary "),s.title?((0,o.openBlock)(),(0,o.createElementBlock)("div",xe,[(0,o.createElementVNode)("h3",we,[(0,o.createVNode)(l,{modelValue:n.streamableTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.streamableTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),s.summary?((0,o.openBlock)(),(0,o.createElementBlock)("p",ye,[!s.shouldStream||n.streamableTitle.streamed?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,modelValue:n.streamableSummary,"onUpdate:modelValue":t[1]||(t[1]=e=>n.streamableSummary=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)],2112)}],["__scopeId","data-v-7abfce85"]]),$e={name:"MessageBubble",props:{type:{required:!0,type:String},variant:{required:!1,type:String,default:null}},computed:{isAiMessage(){return"ai"===this.type},isHumanMessage(){return"human"===this.type},isSystemMessage(){return"system"===this.type}}},He=(0,I.A)($e,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)("div",{class:(0,o.normalizeClass)(["message-bubble flex flex-col gap-1",{"ai-message":r.isAiMessage,"human-message":r.isHumanMessage,"system-message":r.isSystemMessage,[`system-${s.variant}`]:s.variant}])},[(0,o.renderSlot)(e.$slots,"default",{},void 0,!0)],2)}],["__scopeId","data-v-7581575e"]]);const ze={class:"guide-flows"},qe={class:"section-title"},We={key:0,class:"resources-grid"},je={class:"flex flex-col gap-3 p-3 bg-white border border-gray-200 rounded-lg"},Ge={class:"flex items-start gap-2"},Je={class:"flex-1 flex flex-col gap-1 min-w-0"},Ke={class:"flex items-start justify-between gap-2"},Ze={class:"text-sm font-medium text-gray-900 overflow-hidden text-ellipsis whitespace-nowrap flex-1 min-w-0"},Ye={class:"flex items-start gap-2 flex-shrink-0 -mt-1"},Qe={key:0,class:"text-xs text-gray-500 overflow-hidden text-ellipsis whitespace-nowrap"};var Xe=s(50602),et=s(40839),tt=s(74474),st=s(1683),ot={name:"StandardResourceCard",components:{StreamableContent:Ue,TextCopier:tt.A,FlowViewer:st.A,ChevronUpIcon:Xe.A,ChevronDownIcon:et.A},props:{flow:{type:Object,required:!0},shouldStream:{type:Boolean,required:!1,default:!1}},emits:["streaming-complete"],data(){return{flowsExpanded:!0,flowTitle:this.flow.title,flowUrl:this.flow.url,flowMetadata:this.flow.metadata}},computed:{...(0,r.aH)(se.useProductExpertStore,["canImportFlows"]),flowsJson(){return this.flowMetadata?JSON.stringify(this.flowMetadata.streamable.flows,null,2):""}},watch:{flowMetadata(e){e.streamed&&this.$emit("streaming-complete")}},methods:{...(0,r.i0)(F.u,["sendFlowsToImport"]),importFlows(){this.sendFlowsToImport(this.flowsJson)},completeStreaming(){this.flowMetadata&&(this.flowMetadata.streamed=!0),this.$emit("streaming-complete")}}},at={name:"ListFlows",components:{StreamableContent:Ue,FlowResourceCard:(0,I.A)(ot,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("chevron-down-icon"),c=(0,o.resolveComponent)("chevron-up-icon"),d=(0,o.resolveComponent)("text-copier"),m=(0,o.resolveComponent)("ff-button"),u=(0,o.resolveComponent)("flow-viewer");return(0,o.openBlock)(),(0,o.createElementBlock)("div",je,[(0,o.createElementVNode)("div",Ge,[t[4]||(t[4]=(0,o.createStaticVNode)('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" class="flex-shrink-0 w-4 h-4 mt-0.5" data-v-494f7aa0><rect width="24" height="24" fill="gray" rx="4" data-v-494f7aa0></rect><g clip-path="url(#a)" data-v-494f7aa0><path fill="#fff" d="M0 12v-1.647c5.09 0 5.81-.9 6.44-1.695.72-.9 1.46-1.6 3.88-1.6v1.648c-1.76 0-2.04.354-2.51.948C6.79 10.937 5.5 12 0 12Z" data-v-494f7aa0></path><path fill="#fff" d="M8.6 16.941c-2.9 0-3.47-1.513-3.88-2.614C4.25 13.072 3.85 12 0 12v-1.647c4.67 0 5.67 1.618 6.34 3.419.38 1.015.57 1.522 2.26 1.522v1.647Z" data-v-494f7aa0></path><path fill="#fff" d="M16.78 19H9.9c-.95 0-1.72-.737-1.72-1.647v-2.47c0-.91.77-1.648 1.72-1.648h6.88c.95 0 1.72.738 1.72 1.647v2.47c0 .91-.77 1.648-1.72 1.648Zm0-4.118H9.9v2.47h6.88v-2.47Zm1.5-4.117H11.4c-.95 0-1.72-.738-1.72-1.647v-2.47c0-.91.77-1.648 1.72-1.648h6.88c.95 0 1.72.737 1.72 1.647v2.47c0 .91-.77 1.648-1.72 1.648Zm0-4.118H11.4v2.47h6.88v-2.47Z" data-v-494f7aa0></path></g><defs data-v-494f7aa0><clipPath id="a" data-v-494f7aa0><path fill="#fff" d="M0 5h20v14H0z" data-v-494f7aa0></path></clipPath></defs></svg>',1)),(0,o.createElementVNode)("div",Je,[(0,o.createElementVNode)("div",Ke,[(0,o.createElementVNode)("div",Ze,[(0,o.createVNode)(l,{modelValue:n.flowTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.flowTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),(0,o.createElementVNode)("div",Ye,[(0,o.createElementVNode)("button",{class:"text-gray-600 hover:text-indigo-600 hover:bg-indigo-50 flex items-center transition-colors duration-200 rounded px-2 py-1",onClick:t[1]||(t[1]=e=>n.flowsExpanded=!n.flowsExpanded)},[t[2]||(t[2]=(0,o.createElementVNode)("span",null,"Preview",-1)),n.flowsExpanded?((0,o.openBlock)(),(0,o.createBlock)(i,{key:0,class:"h-4 w-4"})):(0,o.createCommentVNode)("v-if",!0),n.flowsExpanded?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createBlock)(c,{key:1,class:"h-4 w-4"}))]),e.canImportFlows?((0,o.openBlock)(),(0,o.createBlock)(m,{key:1,size:"small",kind:"secondary",onClick:r.importFlows},{default:(0,o.withCtx)(()=>[...t[3]||(t[3]=[(0,o.createTextVNode)("Import",-1)])]),_:1},8,["onClick"])):((0,o.openBlock)(),(0,o.createBlock)(d,{key:0,text:r.flowsJson,showText:!1},null,8,["text"]))])]),n.flowMetadata?((0,o.openBlock)(),(0,o.createElementBlock)("div",Qe,[!s.shouldStream||n.flowTitle.streamed?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,string:n.flowMetadata.streamable.category,"should-stream":s.shouldStream,onStreamingComplete:r.completeStreaming},null,8,["string","should-stream","onStreamingComplete"])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)])]),n.flowMetadata?((0,o.openBlock)(),(0,o.createElementBlock)("div",{key:0,class:(0,o.normalizeClass)(["flex overflow-auto ml-8 max-h-[500px] flex-col relative",{hidden:n.flowsExpanded}])},[n.flowsExpanded?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createBlock)(u,{key:0,flow:s.flow.metadata.streamable.flows},null,8,["flow"]))],2)):(0,o.createCommentVNode)("v-if",!0)])}],["__scopeId","data-v-494f7aa0"]])},props:{flows:{type:Array,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}},data(){return{streamingTitle:{streamable:"Related Flows",streamed:!1}}},async mounted(){const e=this.flows.map(e=>({title:e.title,url:e.url,metadata:e.metadata}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},nt=(0,I.A)(at,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("FlowResourceCard");return(0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,null,[(0,o.createCommentVNode)(" Resources Section "),(0,o.createElementVNode)("div",ze,[(0,o.createElementVNode)("h4",qe,[(0,o.createVNode)(l,{modelValue:n.streamingTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.streamingTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),n.streamingTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("div",We,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:t,flow:e,"should-stream":s.shouldStream,onStreamingComplete:s=>a.updateCardStreamingState(e,t)},null,8,["flow","should-stream","onStreamingComplete"]))),128))])):(0,o.createCommentVNode)("v-if",!0)])],2112)}],["__scopeId","data-v-61196fe4"]]);const rt={class:"guide-steps"},lt={class:"section-title"},it={class:"steps-list"},ct={class:"step-number"},dt={class:"step-content"},mt={class:"step-title"},ut={key:0,class:"step-detail"};var pt={name:"GuideStepsList",components:{StreamableContent:Ue},props:{steps:{required:!0,type:Array},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,visibleItems:t}=Se();return{initStreamer:e,visibleItems:t}},async mounted(){await this.initStreamer(this.steps,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},ht=(0,I.A)(pt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)("div",rt,[(0,o.createElementVNode)("h4",lt,[(0,o.createVNode)(l,{string:"Steps:","should-stream":s.shouldStream},null,8,["should-stream"])]),(0,o.createElementVNode)("ol",it,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)("li",{key:t,class:"step-item"},[(0,o.createElementVNode)("div",ct,(0,o.toDisplayString)(t+1),1),(0,o.createElementVNode)("div",dt,[(0,o.createElementVNode)("h5",mt,[(0,o.createVNode)(l,{modelValue:e.title,"onUpdate:modelValue":t=>e.title=t,"should-stream":s.shouldStream},null,8,["modelValue","onUpdate:modelValue","should-stream"])]),!s.shouldStream||e.title.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("p",ut,[(0,o.createVNode)(l,{modelValue:e.detail,"onUpdate:modelValue":t=>e.detail=t,"should-stream":s.shouldStream},null,8,["modelValue","onUpdate:modelValue","should-stream"])])):(0,o.createCommentVNode)("v-if",!0)])]))),128))])])}],["__scopeId","data-v-2c3d62df"]]);const gt={class:"issues"};var ft={name:"IssuesList",components:{StreamableContent:Ue,ExclamationIcon:s(7437).A},props:{issues:{type:Array,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o,sanitize:P.aj}},data(){return{streamedTitle:{streamable:"Issues",streamed:!1}}},async mounted(){const e=this.issues.map(e=>({content:e}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},kt=(0,I.A)(ft,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("exclamation-icon"),i=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)("div",gt,[(0,o.createElementVNode)("h4",null,[(0,o.createVNode)(l,{class:"ff-icon"}),(0,o.createVNode)(i,{modelValue:n.streamedTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.streamedTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),(0,o.createElementVNode)("ul",null,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)("li",{key:t},[(0,o.createVNode)(i,{"rich-content":!0,string:e.content.streamable,"should-stream":s.shouldStream,onStreamingComplete:e=>a.setSubItemStreamedState(t,"content")},null,8,["string","should-stream","onStreamingComplete"])]))),128))])])}],["__scopeId","data-v-0f1ffd8a"]]);const St={class:"guide-packages"},vt={class:"section-title"},Ct={key:0,class:"packages-grid"},bt=["href"],xt=["src"],wt={class:"package-info"},yt={class:"package-name"},Vt={class:"package-url"},Bt={class:"package-actions"};var Et={name:"PackageResourceCard",components:{StreamableContent:Ue},props:{nodePackage:{type:Object,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(e){const t=(0,o.computed)(()=>{const t=e.nodePackage;return"object"==typeof t?t.id.streamable||t.name.streamable:t}),s=(0,o.computed)(()=>{const s=e.nodePackage;return s?s.url.streamable||s.metadata?.streamable?.source||s.metadata?.streamable?.url||`https://flows.nodered.org/node/${t.value}`:"https://flows.nodered.org/"});return{packageName:t,packageUrl:s}},data(){return{streamablePackageName:{streamable:this.packageName,streamed:!1},streamablePackageUrl:{streamable:this.packageUrl,streamed:!1}}},computed:{...(0,r.aH)(se.useProductExpertStore,["canManagePalette"]),...(0,r.aH)(F.u,["palette"]),packageFaviconUrl(){const e=this.nodePackage.metadata?.streamable?.source||this.nodePackage.url.streamable;try{return`https://www.google.com/s2/favicons?domain=${new URL(e).hostname}`}catch(e){return"flows.nodered.org"}},isCorePackage(){return"core-node"===this.nodePackage.type.streamable||this.packageName.startsWith("node-red:")},isPackageInstalled(){const e=this.nodePackage;return!!this.palette?.[e.id.streamable]},urlWithUTMTracking(){const e=this.packageUrl;try{const t=new URL(e);return t.searchParams.set("utm_source","flowfuse-expert"),t.searchParams.set("utm_medium","assistant"),t.searchParams.set("utm_campaign","expert-chat"),t.toString()}catch(t){return e}}},watch:{streamablePackageUrl(e){e.streamed&&this.$emit("streaming-complete")}},methods:{...(0,r.i0)(F.u,["installNodePackage","manageNodePackage"]),handleImageError(e){e.target.style.display="none"},installPackage(){this.installNodePackage(this.packageName)},managePackage(){this.manageNodePackage(this.packageName)}}},Nt={name:"ListPackages",components:{StreamableContent:Ue,PackageResourceCard:(0,I.A)(Et,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("ff-button");return(0,o.openBlock)(),(0,o.createElementBlock)("a",{href:r.urlWithUTMTracking,target:"_blank",rel:"noopener noreferrer",class:"package-card"},[(0,o.createElementVNode)("img",{src:r.packageFaviconUrl,alt:"Node-RED",class:"package-favicon",onError:t[0]||(t[0]=(...e)=>r.handleImageError&&r.handleImageError(...e))},null,40,xt),(0,o.createElementVNode)("div",wt,[(0,o.createElementVNode)("div",yt,[(0,o.createVNode)(l,{modelValue:n.streamablePackageName,"onUpdate:modelValue":t[1]||(t[1]=e=>n.streamablePackageName=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),(0,o.createElementVNode)("div",Vt,[!s.shouldStream||n.streamablePackageName.streamed?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,modelValue:n.streamablePackageUrl,"onUpdate:modelValue":t[2]||(t[2]=e=>n.streamablePackageUrl=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])):(0,o.createCommentVNode)("v-if",!0)]),(0,o.createElementVNode)("div",Bt,[e.canManagePalette&&!r.isCorePackage?((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:0},[r.isPackageInstalled?((0,o.openBlock)(),(0,o.createBlock)(i,{key:0,class:"w-20",size:"small",kind:"secondary",onClick:t[3]||(t[3]=(0,o.withModifiers)(e=>r.managePackage(s.nodePackage),["stop","prevent"]))},{default:(0,o.withCtx)(()=>[...t[5]||(t[5]=[(0,o.createTextVNode)("Manage ",-1)])]),_:1})):((0,o.openBlock)(),(0,o.createBlock)(i,{key:1,class:"w-20",size:"small",kind:"secondary",onClick:t[4]||(t[4]=(0,o.withModifiers)(e=>r.installPackage(s.nodePackage),["stop","prevent"]))},{default:(0,o.withCtx)(()=>[...t[6]||(t[6]=[(0,o.createTextVNode)("Install ",-1)])]),_:1}))],64)):(0,o.createCommentVNode)("v-if",!0)])])],8,bt)}],["__scopeId","data-v-505e915a"]])},props:{packages:{required:!0,type:Array},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}},data(){return{packagesTitle:{streamable:"Required Node Packages",streamed:!1}}},async mounted(){const e=this.packages.map(e=>({id:e.id,name:e.name,title:e.title,url:e.url,type:e.type,metadata:e.metadata,hostname:e.hostname}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},It=(0,I.A)(Nt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("PackageResourceCard");return(0,o.openBlock)(),(0,o.createElementBlock)("div",St,[(0,o.createElementVNode)("h4",vt,[(0,o.createVNode)(l,{modelValue:n.packagesTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.packagesTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),!s.shouldStream||n.packagesTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("div",Ct,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:t,nodePackage:e,"should-stream":s.shouldStream,onStreamingComplete:s=>a.updateCardStreamingState(e,t)},null,8,["nodePackage","should-stream","onStreamingComplete"]))),128))])):(0,o.createCommentVNode)("v-if",!0)])}],["__scopeId","data-v-02e3a116"]]);const At={key:0,class:"guide-resources"},Tt={class:"section-title"},Pt={key:0,class:"resources-grid"},_t=["href"],Mt=["src","alt"],Ot={class:"resource-info"},Lt={class:"resource-title"},Rt={key:0,class:"resource-url"};var Ut={name:"StandardResourceCard",components:{StreamableContent:Ue},props:{resource:{type:Object,required:!0},shouldStream:{type:Boolean,required:!1,default:!1}},emits:["streaming-complete"],data(){return{resourceUrl:this.resource.metadata?.streamable.source||this.resource.streamable.url,resourceTitle:{...this.resource.title},resourceMetadataSource:this.resource.metadata?.source}},computed:{favIconUrl(){const e=this.resourceUrl;try{return`https://www.google.com/s2/favicons?domain=${new URL(e).hostname}`}catch(e){return""}},urlWithUtmTracking(){const e=this.resourceUrl;try{const t=new URL(e);return t.searchParams.set("utm_source","flowfuse-expert"),t.searchParams.set("utm_medium","assistant"),t.searchParams.set("utm_campaign","expert-chat"),t.toString()}catch(t){return e}}},watch:{resourceTitle(e){e.streamed&&this.$emit("streaming-complete")}},methods:{handleImageError(e){e.target.style.display="none"}}},Dt={name:"ListResources",components:{StreamableContent:Ue,StandardResourceCard:(0,I.A)(Ut,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,null,[(0,o.createCommentVNode)(" todo clean resource.url references after transitioning to v4 api "),(0,o.createElementVNode)("a",{href:r.urlWithUtmTracking,target:"_blank",rel:"noopener noreferrer",class:"resource-card"},[(0,o.createElementVNode)("img",{src:r.favIconUrl,alt:s.resource.type,class:"resource-icon",onError:t[0]||(t[0]=(...e)=>r.handleImageError&&r.handleImageError(...e))},null,40,Mt),(0,o.createElementVNode)("div",Ot,[(0,o.createElementVNode)("div",Lt,[(0,o.createVNode)(l,{modelValue:n.resourceTitle,"onUpdate:modelValue":t[1]||(t[1]=e=>n.resourceTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),!s.shouldStream||n.resourceTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("div",Rt,[n.resourceMetadataSource?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,modelValue:n.resourceMetadataSource,"onUpdate:modelValue":t[2]||(t[2]=e=>n.resourceMetadataSource=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])):s.resource.url?((0,o.openBlock)(),(0,o.createBlock)(l,{key:1,string:n.resourceUrl,"should-stream":s.shouldStream},null,8,["string","should-stream"])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)])],8,_t)],2112)}],["__scopeId","data-v-9429e64c"]])},props:{resources:{type:Array,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}},data(){return{resourceTitle:{streamable:"Related Resources",streamed:!1}}},async mounted(){const e=this.resources.map(e=>({title:e.title,url:e.url,metadata:e.metadata}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},Ft=(0,I.A)(Dt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("StandardResourceCard");return s.resources&&s.resources.length>0?((0,o.openBlock)(),(0,o.createElementBlock)("div",At,[(0,o.createElementVNode)("h4",Tt,[(0,o.createVNode)(l,{modelValue:n.resourceTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.resourceTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),!s.shouldStream||n.resourceTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("div",Pt,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:t,resource:e,"should-stream":s.shouldStream,onStreamingComplete:s=>a.updateCardStreamingState(e,t)},null,8,["resource","should-stream","onStreamingComplete"]))),128))])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)}],["__scopeId","data-v-3c3ee9c0"]]),$t={name:"RichContent",components:{StreamableContent:Ue},props:{content:{required:!0,type:String},messageUuid:{required:!0,type:String},answerUuid:{required:!0,type:String},shouldStream:{required:!0,type:Boolean}},emits:["streaming-complete"],setup(){const{text:e,isStreaming:t,stream:s,stop:o}=Le({delayMs:30});return{sanitize:P.aj,text:e,isStreaming:t,stream:s,stop:o}},async mounted(){this.shouldStream||await this.onStreamComplete()},methods:{...(0,r.i0)(se.useProductExpertStore,["updateAnswerStreamedState"]),async onStreamComplete(){await this.updateAnswerStreamedState({messageUuid:this.messageUuid,answerUuid:this.answerUuid}),this.$emit("streaming-complete")}}},Ht=(0,I.A)($t,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createBlock)(l,{string:s.content,"should-stream":s.shouldStream,"rich-content":!0,onStreamingComplete:r.onStreamComplete},null,8,["string","should-stream","onStreamingComplete"])}]]);const zt={class:"suggestions"},qt={key:0};var Wt={name:"SuggestionsList",components:{StreamableContent:Ue,InformationCircleIcon:s(82218).A},props:{suggestions:{type:Array,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}},data(){return{streamingTitle:{streamable:"Suggestions",streamed:!1}}},async mounted(){const e=this.suggestions.map(e=>({content:e}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},jt={name:"AnswerWrapper",components:{SuggestionsList:(0,I.A)(Wt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("information-circle-icon"),i=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)("div",zt,[(0,o.createElementVNode)("h4",null,[(0,o.createVNode)(l,{class:"ff-icon"}),(0,o.createVNode)(i,{modelValue:n.streamingTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.streamingTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),!s.shouldStream||n.streamingTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("ul",qt,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)("li",{key:t},[(0,o.createVNode)(i,{"rich-content":!0,string:e.content.streamable,"should-stream":s.shouldStream,onStreamingComplete:e=>a.setSubItemStreamedState(t,"content")},null,8,["string","should-stream","onStreamingComplete"])]))),128))])):(0,o.createCommentVNode)("v-if",!0)])}],["__scopeId","data-v-472ccb19"]]),RichContent:Ht,PackagesList:It,FlowsList:nt,AnswerBadge:be,ResourcesList:Ft,GuideStepsList:ht,MessageBubble:He,GuideHeader:Fe,IssuesList:kt},props:{answer:{type:Object,required:!0},messageUuid:{type:String,required:!0}},emits:["streaming-complete"],setup(){const{waitFor:e}=(0,ke.A)();return{waitFor:e}},data(){return{componentStreamingOrder:[],streamedComponents:[]}},computed:{...(0,r.aH)(F.u,["supportedActions"]),...(0,r.aH)(se.useProductExpertStore,["agentMode"]),hasGuideHeader(){return!(!this.answer.title||this.isChatAnswer)},hasGuideSteps(){return Object.hasOwnProperty.call(this.answer,"steps")&&this.answer.steps.length>0},hasResources(){return Object.hasOwnProperty.call(this.answer,"resources")&&this.answer.resources.length>0},hasNodePackages(){return this.answer.nodePackages&&this.answer.nodePackages.length>0},hasFlows(){return this.answer.flows&&this.answer.flows.length>0},hasSuggestions(){return this.answer.suggestions&&this.answer.suggestions.length>0},hasIssues(){return this.answer.issues&&this.answer.issues.length>0},hasPlainContent(){return this.answer.content&&this.answer.content.length>0},isChatAnswer(){return!Object.hasOwnProperty.call(this.answer,"kind")||"chat"===this.answer.kind},isEditorContext(){return this.$route?.name?.includes("editor")||!1},shouldShowRichContent(){const e="rich-content";return!!this.componentStreamingOrder.includes(e)&&!!this.hasPlainContent&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowGuideHeader(){const e="guide-header";return!!this.componentStreamingOrder.includes(e)&&!!this.hasGuideHeader&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowGuideStepList(){const e="guide-steps-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasGuideSteps&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowResourcesList(){const e="resources-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasResources&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowFlowsList(){const e="flows-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasFlows&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowPackagesList(){const e="packages-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasNodePackages&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowSuggestionsList(){const e="suggestions-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasSuggestions&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowIssuesList(){const e="issues-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasIssues&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldStream(){return!this.answer._streamed}},watch:{streamedComponents(){this.componentStreamingOrder.length===this.streamedComponents.length&&(this.updateAnswerStreamedState({messageUuid:this.messageUuid,answerUuid:this.answer._uuid}),this.$emit("streaming-complete"))}},beforeUnmount(){this.updateAnswerStreamedState({messageUuid:this.messageUuid,answerUuid:this.answer._uuid,agent:this.agentMode}),this.isEditorContext&&this.$refs.messageBubble.$el.removeEventListener("click",this.handleClick)},mounted(){this.buildStreamingOrder(),this.isEditorContext&&this.$refs.messageBubble.$el.addEventListener("click",this.handleClick)},methods:{...(0,r.i0)(se.useProductExpertStore,["updateAnswerStreamedState"]),buildStreamingOrder(){this.hasPlainContent&&this.componentStreamingOrder.push("rich-content"),this.hasGuideHeader&&this.componentStreamingOrder.push("guide-header"),this.hasGuideSteps&&this.componentStreamingOrder.push("guide-steps-list"),this.hasResources&&this.componentStreamingOrder.push("resources-list"),this.hasFlows&&this.componentStreamingOrder.push("flows-list"),this.hasNodePackages&&this.componentStreamingOrder.push("packages-list"),this.hasIssues&&this.componentStreamingOrder.push("issues-list"),this.hasSuggestions&&this.componentStreamingOrder.push("suggestions-list")},async onComponentComplete(e){this.shouldStream||await this.waitFor(200),this.streamedComponents.push(e)},handleClick(e){const t=e.target;if(!this.isEditorContext)return;if(!t)return;if("A"!==t.nodeName)return;if(!t.classList.contains("assistant-action-link"))return;if(!t.getAttribute("data-assistant-action-href"))return;if(!t.getAttribute("data-action"))return;const s=t.getAttribute("data-action"),o=this.supportedActions?.[s];if(!o)return;e.preventDefault(),e.stopPropagation();const a={};for(const e of t.attributes)if(e.name.startsWith("data-param-")){const t=e.name.replace("data-param-",""),s=o.params?.properties?.[t];if(!s)continue;const n=s.type;let r=e.value;"boolean"===n?r="true"===r:"number"===n&&(r=+r),a[t]=r}(0,F.u)().invokeAction({action:s,params:a})}}},Gt=(0,I.A)(jt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("answer-badge"),i=(0,o.resolveComponent)("rich-content"),c=(0,o.resolveComponent)("guide-header"),d=(0,o.resolveComponent)("guide-steps-list"),m=(0,o.resolveComponent)("resources-list"),u=(0,o.resolveComponent)("flows-list"),p=(0,o.resolveComponent)("packages-list"),h=(0,o.resolveComponent)("issues-list"),g=(0,o.resolveComponent)("suggestions-list"),f=(0,o.resolveComponent)("message-bubble");return(0,o.openBlock)(),(0,o.createBlock)(f,{ref:"messageBubble",type:"ai"},{default:(0,o.withCtx)(()=>[r.isChatAnswer?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,kind:s.answer.kind},null,8,["kind"])),r.shouldShowRichContent?((0,o.openBlock)(),(0,o.createBlock)(i,{key:1,content:s.answer.content,"message-uuid":s.messageUuid,"answer-uuid":s.answer._uuid,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[0]||(t[0]=e=>r.onComponentComplete("rich-content"))},null,8,["content","message-uuid","answer-uuid","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowGuideHeader?((0,o.openBlock)(),(0,o.createBlock)(c,{key:2,title:s.answer.title,summary:s.answer.summary,"should-stream":r.shouldStream,class:"mt-3",onStreamingComplete:t[1]||(t[1]=e=>r.onComponentComplete("guide-header"))},null,8,["title","summary","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowGuideStepList?((0,o.openBlock)(),(0,o.createBlock)(d,{key:3,steps:s.answer.steps,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[2]||(t[2]=e=>r.onComponentComplete("guide-steps-list"))},null,8,["steps","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowResourcesList?((0,o.openBlock)(),(0,o.createBlock)(m,{key:4,resources:s.answer.resources,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[3]||(t[3]=e=>r.onComponentComplete("resources-list"))},null,8,["resources","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowFlowsList?((0,o.openBlock)(),(0,o.createBlock)(u,{key:5,flows:s.answer.flows,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[4]||(t[4]=e=>r.onComponentComplete("flows-list"))},null,8,["flows","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowPackagesList?((0,o.openBlock)(),(0,o.createBlock)(p,{key:6,packages:s.answer.nodePackages,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[5]||(t[5]=e=>r.onComponentComplete("packages-list"))},null,8,["packages","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowIssuesList?((0,o.openBlock)(),(0,o.createBlock)(h,{key:7,issues:s.answer.issues,"should-stream":r.shouldStream,onStreamingComplete:t[6]||(t[6]=e=>r.onComponentComplete("issues-list"))},null,8,["issues","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowSuggestionsList?((0,o.openBlock)(),(0,o.createBlock)(g,{key:8,suggestions:s.answer.suggestions,"should-stream":r.shouldStream,onStreamingComplete:t[7]||(t[7]=e=>r.onComponentComplete("suggestions-list"))},null,8,["suggestions","should-stream"])):(0,o.createCommentVNode)("v-if",!0)]),_:1},512)}]]);const Jt={class:"ff-expert-tool-call"},Kt={class:"ff-expert-tool-call--count"},Zt={class:"ff-expert-tool-call--duration"},Yt={class:"ff-expert-tool-call--body"},Qt={class:"ff-expert-tool-call--title"},Xt={class:"ff-expert-tool-call--name"},es=["title"],ts={key:0,class:"ff-expert-tool-call--details"},ss={key:0,class:"ff-expert-tool-call--section"},os=["onClick"],as={key:0,class:"ff-expert-tool-call--code"},ns=["innerHTML"],rs={key:1,class:"ff-expert-tool-call--section"},ls=["onClick"],is={class:"ff-expert-tool-call--section-duration"},cs={key:0,class:"ff-expert-tool-call--code"},ds=["innerHTML"];var ms=s(80207);Be.A.registerLanguage("json",Ie.A);var us={name:"ToolCalls",components:{ChevronRightIcon:ms.A},props:{message:{type:Object,required:!0,validator:e=>Array.isArray(e.toolCalls)}},data(){return{expanded:!1,expandedSections:{}}},computed:{toolCalls(){return this.message.toolCalls||[]},toolCallCount(){return this.toolCalls.length},formattedDuration(){const e=this.message.duration;if(null==e)return 0;const t="string"==typeof e?parseFloat(e):e;return Math.round(1e3*t)}},methods:{toggleExpanded(){this.expanded=!this.expanded},toggleSection(e,t){const s=`${e}-${t}`,o=this.isSectionExpanded(e,t);this.expandedSections[s]=!o},isSectionExpanded(e,t){const s=`${e}-${t}`;return s in this.expandedSections?this.expandedSections[s]:"input"===t},formatKindBadge(e){return{mcp_tool:"T",mcp_resource:"R",mcp_resource_template:"RT",mcp_prompt:"P"}[e]||"?"},formatKindFull(e){return{mcp_tool:"MCP Tool",mcp_resource:"MCP Resource",mcp_resource_template:"MCP Resource Template",mcp_prompt:"MCP Prompt"}[e]||e||"Unknown"},hasContent(e){return null!=e&&(Array.isArray(e)?e.length>0:"object"==typeof e?Object.keys(e).length>0:"string"!=typeof e||""!==e.trim())},highlightJson(e){let t;if("string"==typeof e)try{t=JSON.stringify(JSON.parse(e),null,2)}catch{t=e}else t=JSON.stringify(e,null,2);return Be.A.highlight(t,{language:"json"}).value}}},ps={name:"AiMessage",components:{ToolCalls:(0,I.A)(us,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("ChevronRightIcon");return(0,o.openBlock)(),(0,o.createElementBlock)("div",Jt,[(0,o.createElementVNode)("div",{class:"ff-expert-tool-call--header",onClick:t[0]||(t[0]=(...e)=>r.toggleExpanded&&r.toggleExpanded(...e))},[(0,o.createVNode)(l,{class:(0,o.normalizeClass)(["ff-icon",{rotated:n.expanded}])},null,8,["class"]),(0,o.createElementVNode)("span",Kt,(0,o.toDisplayString)(r.toolCallCount)+" tool call"+(0,o.toDisplayString)(r.toolCallCount>1?"s":""),1),(0,o.createElementVNode)("span",Zt,(0,o.toDisplayString)(r.formattedDuration)+" ms ",1)]),(0,o.createElementVNode)("div",Yt,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(r.toolCalls,e=>((0,o.openBlock)(),(0,o.createElementBlock)("div",{key:e.id,class:"ff-expert-tool-call--item"},[(0,o.createElementVNode)("div",Qt,(0,o.toDisplayString)(e.title||e.name),1),(0,o.createElementVNode)("div",Xt,[(0,o.createElementVNode)("span",{class:"ff-expert-tool-call--badge",title:r.formatKindFull(e.kind)},(0,o.toDisplayString)(r.formatKindBadge(e.kind)),9,es),(0,o.createTextVNode)(" "+(0,o.toDisplayString)(e.name),1)]),n.expanded?((0,o.openBlock)(),(0,o.createElementBlock)("div",ts,[(0,o.createCommentVNode)(" Input section (collapsible, expanded by default) "),r.hasContent(e.args)?((0,o.openBlock)(),(0,o.createElementBlock)("div",ss,[(0,o.createElementVNode)("div",{class:"ff-expert-tool-call--section-header",onClick:(0,o.withModifiers)(t=>r.toggleSection(e.id,"input"),["stop"])},[(0,o.createVNode)(l,{class:(0,o.normalizeClass)(["ff-icon-small",{rotated:r.isSectionExpanded(e.id,"input")}])},null,8,["class"]),t[1]||(t[1]=(0,o.createElementVNode)("span",{class:"ff-expert-tool-call--section-label"},"Input",-1))],8,os),r.isSectionExpanded(e.id,"input")?((0,o.openBlock)(),(0,o.createElementBlock)("div",as,[(0,o.createCommentVNode)(" eslint-disable-next-line vue/no-v-html "),(0,o.createElementVNode)("pre",null,[(0,o.createElementVNode)("code",{innerHTML:r.highlightJson(e.args)},null,8,ns)])])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0),(0,o.createCommentVNode)(" Output section (collapsible, collapsed by default) "),r.hasContent(e.output)?((0,o.openBlock)(),(0,o.createElementBlock)("div",rs,[(0,o.createElementVNode)("div",{class:"ff-expert-tool-call--section-header",onClick:(0,o.withModifiers)(t=>r.toggleSection(e.id,"output"),["stop"])},[(0,o.createVNode)(l,{class:(0,o.normalizeClass)(["ff-icon-small",{rotated:r.isSectionExpanded(e.id,"output")}])},null,8,["class"]),t[2]||(t[2]=(0,o.createElementVNode)("span",{class:"ff-expert-tool-call--section-label"},"Output",-1)),(0,o.createElementVNode)("span",is,(0,o.toDisplayString)(e.durationMs||0)+" ms",1)],8,ls),r.isSectionExpanded(e.id,"output")?((0,o.openBlock)(),(0,o.createElementBlock)("div",cs,[(0,o.createCommentVNode)(" eslint-disable-next-line vue/no-v-html "),(0,o.createElementVNode)("pre",null,[(0,o.createElementVNode)("code",{innerHTML:r.highlightJson(e.output)},null,8,ds)])])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)]))),128))])])}],["__scopeId","data-v-3f750f09"]]),AnswerWrapper:Gt},props:{query:{type:String,required:!1,default:null},answer:{type:Object,required:!0},timings:{required:!1,default:null,type:Object},_type:{type:String,required:!0},_timestamp:{required:!0,type:Number},_uuid:{required:!0,type:String},_streamed:{required:!0,type:Boolean}},setup(){const{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}=Se({shallow:!0});return{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}},computed:{toolCalls(){const e=this.answer.filter(e=>["mcp_tool","mcp_resource","mcp_resource_template","mcp_prompt"].includes(e.kind));if(e.length>0){const t=e.map(e=>({id:e.toolId,name:e.toolName,title:e.toolTitle||e.toolName,kind:e.kind,args:e.input,output:e.output,durationMs:e.durationMs}));return{type:"ai",kind:"tool_calls",toolCalls:t,duration:(e.reduce((e,t)=>e+(t.durationMs||0),0)/1e3).toFixed(2),content:`${t.length} tool call(s)`,timestamp:Date.now()}}return null},filteredAnswers(){return this.answer.filter(e=>!["mcp_tool","mcp_resource","mcp_resource_template","mcp_prompt"].includes(e.kind))}},async mounted(){await this.initStreamer(this.filteredAnswers,{shouldStream:!this._streamed})},methods:{slugify:P.Yv}},hs=(0,I.A)(ps,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("tool-calls"),i=(0,o.resolveComponent)("answer-wrapper");return(0,o.openBlock)(),(0,o.createElementBlock)("div",fe,[r.toolCalls?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,message:r.toolCalls},null,8,["message"])):(0,o.createCommentVNode)("v-if",!0),((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:r.slugify(`${e.kind}-${e.title}-${e.summary}-${e._uuid}`),"message-uuid":s._uuid,answer:e,onStreamingComplete:e=>a.setSubItemStreamedState(t)},null,8,["message-uuid","answer","onStreamingComplete"]))),128))])}]]),gs={name:"HumanMessage",components:{MessageBubble:He},props:{content:{required:!0,type:String},_timestamp:{required:!0,type:Number},_type:{required:!0,type:String}}},fs=(0,I.A)(gs,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("message-bubble");return(0,o.openBlock)(),(0,o.createBlock)(l,{type:"human"},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(s.content),1)]),_:1})}]]),ks={name:"SystemMessage",components:{MessageBubble:He},props:{_type:{type:String,required:!0},_variant:{type:String,required:!0},message:{type:String,required:!0},_timestamp:{type:Number,required:!0}}},Ss=(0,I.A)(ks,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("message-bubble");return(0,o.openBlock)(),(0,o.createBlock)(l,{type:"system",variant:s._variant},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(s.message),1)]),_:1},8,["variant"])}]]),vs={name:"ExpertMessages",components:{ExpertLoadingIndicator:ge},emits:["resizing"],data(){return{resizeObserver:null,lastHeight:null}},computed:{...(0,r.aH)(se.useProductExpertStore,["messages","isWaitingForResponse"]),messageTypes(){return{ai:(0,o.markRaw)(hs),human:(0,o.markRaw)(fs),system:(0,o.markRaw)(Ss)}}},mounted(){this.mountResizeObserver()},beforeUnmount(){this.unmountResizeObserver()},methods:{mountResizeObserver(){const e=this.$refs.messagesWrapper;e&&(this.lastHeight=e.offsetHeight,this.resizeObserver=new ResizeObserver(([e])=>{const t=e.contentRect.height;t!==this.lastHeight&&(this.lastHeight=t,this.$emit("resizing"))}),this.resizeObserver.observe(e))},unmountResizeObserver(){this.resizeObserver?.disconnect()}}},Cs=(0,I.A)(vs,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("expert-loading-indicator");return(0,o.openBlock)(),(0,o.createElementBlock)("div",ie,[(0,o.createElementVNode)("ul",ce,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.messages,e=>((0,o.openBlock)(),(0,o.createElementBlock)("li",{key:e._uuid,class:"flex flex-col gap-3"},[r.messageTypes[e._type]?((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(r.messageTypes[e._type]),(0,o.mergeProps)({key:0,ref_for:!0},{...e}),null,16)):(0,o.createCommentVNode)("v-if",!0)]))),128)),e.isWaitingForResponse?((0,o.openBlock)(),(0,o.createElementBlock)("li",de,[(0,o.createVNode)(l)])):(0,o.createCommentVNode)("v-if",!0)])],512)}],["__scopeId","data-v-46bc14ac"]]),bs={name:"ExpertModeSwitcher",components:{ToggleButtonGroup:s(53644).A},props:{isFloating:{required:!1,type:Boolean,default:!1}},computed:{...(0,r.aH)(se.useProductExpertStore,["agentMode"]),agentModeButtons(){return[{title:"Support",value:"support-agent"},{title:"Insights",value:"insights-agent"}]},agentModeWrapper:{get(){return this.agentMode},set(e){this.setAgentMode(e)}}},methods:{...(0,r.i0)(se.useProductExpertStore,["setAgentMode"])}},xs=(0,I.A)(bs,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("toggle-button-group");return(0,o.openBlock)(),(0,o.createElementBlock)("div",{class:(0,o.normalizeClass)({"mode-switcher-floating":s.isFloating})},[(0,o.createVNode)(l,{modelValue:r.agentModeWrapper,"onUpdate:modelValue":t[0]||(t[0]=e=>r.agentModeWrapper=e),buttons:r.agentModeButtons,"uses-links":!1,"visually-hide-title":!0},null,8,["modelValue","buttons"])],2)}],["__scopeId","data-v-e2cddf22"]]);const ws={class:"info-banner"},ys={key:0,class:"info-text"},Vs={key:1,class:"info-text"};var Bs={name:"InfoBanner",computed:{...(0,r.aH)(se.useProductExpertStore,["isSupportAgent","isInsightsAgent"])}},Es=(0,I.A)(Bs,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,null,[(0,o.createCommentVNode)(" Info Banner "),(0,o.createElementVNode)("div",ws,[e.isSupportAgent?((0,o.openBlock)(),(0,o.createElementBlock)("p",ys,[...t[0]||(t[0]=[(0,o.createTextVNode)(" AI agent has access to all of FlowFuse's ",-1),(0,o.createElementVNode)("a",{href:"https://flowfuse.com/docs",target:"_blank",rel:"noopener noreferrer",class:"info-link"},"documentation and knowledge",-1),(0,o.createTextVNode)(", ",-1),(0,o.createElementVNode)("a",{href:"https://flowfuse.com/blog",target:"_blank",rel:"noopener noreferrer",class:"info-link"},"blogposts",-1),(0,o.createTextVNode)(", and more. ",-1)])])):(0,o.createCommentVNode)("v-if",!0),e.isInsightsAgent?((0,o.openBlock)(),(0,o.createElementBlock)("p",Vs,[...t[1]||(t[1]=[(0,o.createElementVNode)("span",{title:"This feature is still under development",class:"beta-badge"},"BETA",-1),(0,o.createTextVNode)(" AI agent can access ",-1),(0,o.createElementVNode)("a",{href:"https://flowfuse.com/node-red/flowfuse/mcp/",target:"_blank",rel:"noopener noreferrer",class:"info-link"},"MCP server tools",-1),(0,o.createTextVNode)(" configured in your hosted Node-RED instances. ",-1)])])):(0,o.createCommentVNode)("v-if",!0)])],2112)}],["__scopeId","data-v-73a526c1"]]);const Ns={class:"update-banner-text update-banner-header flex items-center justify-between"},Is=["title"],As={class:"update-banner-badge ml-4 flex-shrink-0"},Ts={class:"update-banner-text update-banner-body",tabindex:"0"},Ps={class:"mb-2"},_s={class:"flex justify-end"};var Ms=s(99589),Os=s.n(Ms);const Ls="0.11.0";var Rs={name:"UpdateBanner",computed:{...(0,r.aH)(F.u,["palette","editorState","version","nodeRedVersion","supportedActions","isEditorRunning"]),assistantLoaded(){return!!(this.version||this.nodeRedVersion||this.palette)},assistantPackage(){return this.palette&&0!==Object.keys(this.palette).length?this.palette?.["@flowfuse/nr-assistant"]?{installed:!0,...this.palette["@flowfuse/nr-assistant"]}:{installed:!1}:null},availableUpdate(){return Array.isArray(this.editorState?.updatesAvailable?.palette)?this.editorState?.updatesAvailable?.palette?.find(e=>"@flowfuse/nr-assistant"===e.package):null},assistantState(){if(!this.version||Os().lt(this.version,"0.10.1"));else if(!this.isEditorRunning)return{show:!1};const e=!1!==this.assistantPackage?.enabled,t=this.assistantPackage?.installed??this.assistantLoaded,s=(t?this.assistantPackage?.version:"")||this.version||"0.0.0",o=Os().gte(this.nodeRedVersion||"0.0.0","4.1.6")&&!!this.availableUpdate;let a=!!this.availableUpdate?.latest;this.assistantLoaded&&!o&&(a=Os().lt(s,Ls));const n={show:!t||!e||a,statusClass:"",expectedVersion:this.availableUpdate?.latest||Ls,installedVersion:s,installed:t,enabled:e,chip:"",title:"",body:"",buttonText:"",buttonAction:null};return t?e?a?(n.statusClass="",n.chip=this.availableUpdate?.latest?`V${this.availableUpdate.latest} available`:"Update available",n.title="New FlowFuse Expert Version Available",n.body="There is an update available for FlowFuse Expert in the Node-RED palette. Please update to the latest version to enjoy new features and improvements.",n.buttonText="Update...",n.buttonAction=this.manageAssistantPackage):n.show=!1:(n.statusClass="warning",n.chip="Not enabled",n.title="FlowFuse Expert Not Enabled",n.body="FlowFuse Expert is installed but not enabled in the Node-RED palette. Please enable it to access its features.",n.buttonText="Enable...",n.buttonAction=this.manageAssistantPackage):(n.statusClass="warning",n.chip="Not installed",n.title="FlowFuse Expert Not Installed",n.body="FlowFuse Expert is not installed in the Node-RED palette. Please install it to access its features.",n.buttonText="Install...",n.buttonAction=this.installAssistantPackage),n}},methods:{...(0,r.i0)(F.u,["manageNodePackage","installNodePackage"]),onButtonClick(){"function"==typeof this.assistantState?.buttonAction&&this.assistantState.buttonAction()},manageAssistantPackage(){this.manageNodePackage("@flowfuse/nr-assistant")},installAssistantPackage(){this.installNodePackage("@flowfuse/nr-assistant")}}},Us={name:"ExpertPanel",components:{ExpertModeSwitcher:xs,InfoBanner:Es,ExpertMessages:Cs,ExpertChatInput:le,UpdateBanner:(0,I.A)(Rs,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("ff-button");return r.assistantState.show?((0,o.openBlock)(),(0,o.createElementBlock)("div",{key:0,class:(0,o.normalizeClass)(["info-banner update-banner",r.assistantState.statusClass])},[(0,o.createElementVNode)("div",Ns,[(0,o.createElementVNode)("span",{class:"truncate flex-1 pr-4",title:r.assistantState.title},(0,o.toDisplayString)(r.assistantState.title),9,Is),(0,o.createElementVNode)("span",As,(0,o.toDisplayString)(r.assistantState.chip),1)]),(0,o.createElementVNode)("div",Ts,[(0,o.createElementVNode)("p",Ps,(0,o.toDisplayString)(r.assistantState.body),1),(0,o.createElementVNode)("div",_s,[(0,o.createVNode)(l,{kind:"secondary",size:"small",onClick:r.onButtonClick},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(r.assistantState.buttonText),1)]),_:1},8,["onClick"])])])],2)):(0,o.createCommentVNode)("v-if",!0)}],["__scopeId","data-v-5cb9ca11"]])},inject:{togglePinWithWidth:{from:"togglePinWithWidth",default:()=>()=>{}}},props:{instance:{type:Object,required:!1,default:null},device:{type:Object,required:!1,default:null}},data(){return{scrollCheckDebounce:null,autoScroll:!0}},computed:{...(0,r.aH)(se.useProductExpertStore,["abortController","agentMode","messages","isInsightsAgent"]),...(0,r.aH)(ne.W,{isPinned:e=>e.rightDrawer.fixed}),...(0,l.aH)("account",["features"]),isEditorContext(){return this.$route?.name?.includes("editor")||!1},isInsightsModeEnabled(){return!!this.features.expertInsights},agentModeWrapper:{get(){return this.agentMode},set(e){this.setAgentMode(e)}},isInstanceRunning(){const e="running"===this.instance?.meta?.state,t="running"===this.device?.status;return e||t}},watch:{agentMode:{immediate:!0,async handler(){this.isInsightsAgent&&await this.getCapabilities(),this.addWelcomeMessageIfNeeded()}},"instance.meta.state":{handler(e){this.isEditorContext&&"running"!==e&&this.reset()}},"device.status":{handler(e){this.isEditorContext&&"running"!==e&&this.reset()}}},mounted(){this.isEditorContext&&setTimeout(()=>{this.addWelcomeMessageIfNeeded()},1e3)},beforeUnmount(){this.scrollCheckDebounce&&clearTimeout(this.scrollCheckDebounce),this.resetSessionTimer()},methods:{...(0,r.i0)(se.useProductExpertStore,["setAgentMode","setAbortController","resetSessionTimer","addWelcomeMessageIfNeeded"]),...(0,r.i0)(E.W,["getCapabilities"]),...(0,r.i0)(F.u,["reset"]),handleStopGeneration(){this.abortController&&(this.abortController.abort(),this.setAbortController(null))},handleScroll(){this.scrollCheckDebounce&&clearTimeout(this.scrollCheckDebounce),this.scrollCheckDebounce=setTimeout(()=>{const e=this.$refs.messagesContainer;if(!e)return;const t=e.scrollHeight-e.scrollTop-e.clientHeight<100;t&&!this.autoScroll?this.autoScroll=!0:!t&&this.autoScroll&&(this.autoScroll=!1)},100)},scrollToBottom(){this.autoScroll&&this.$nextTick(()=>{if(this.$refs.scrollAnchor){const e=this.$refs.messagesContainer;if(!e)return;e.scrollTo({top:e.scrollHeight,behavior:"smooth"})}})}}},Ds=(0,I.A)(Us,[["render",function(e,t,s,r,l,i){const c=(0,o.resolveComponent)("expert-mode-switcher"),d=(0,o.resolveComponent)("info-banner"),m=(0,o.resolveComponent)("expert-messages"),u=(0,o.resolveComponent)("update-banner"),p=(0,o.resolveComponent)("expert-chat-input");return(0,o.openBlock)(),(0,o.createElementBlock)("div",a,[i.isInsightsModeEnabled&&i.isEditorContext?((0,o.openBlock)(),(0,o.createBlock)(c,{key:0,isFloating:!0})):(0,o.createCommentVNode)("v-if",!0),(0,o.createElementVNode)("div",{ref:"messagesContainer",class:(0,o.normalizeClass)(["messages-container",{"has-mode-switcher":i.isInsightsModeEnabled&&i.isEditorContext}]),onScroll:t[0]||(t[0]=(...e)=>i.handleScroll&&i.handleScroll(...e))},[(0,o.createVNode)(d),(0,o.createVNode)(m,{onResizing:i.scrollToBottom},null,8,["onResizing"]),(0,o.createElementVNode)("div",n,null,512)],34),(0,o.createCommentVNode)(" Updates Available Banner "),i.isEditorContext&&i.isInstanceRunning?((0,o.openBlock)(),(0,o.createBlock)(u,{key:1})):(0,o.createCommentVNode)("v-if",!0),(0,o.createVNode)(p,{onStop:i.handleStopGeneration},null,8,["onStop"])])}],["__scopeId","data-v-42cbd071"]])}}]);
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e8ed8cd7-87ba-4e5b-9cc6-e5bcf89c7931",e._sentryDebugIdIdentifier="sentry-dbid-e8ed8cd7-87ba-4e5b-9cc6-e5bcf89c7931")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"fff41da5fe7938d2842aebbd07badabcdd746513"},(self.webpackChunk_flowfuse_flowfuse=self.webpackChunk_flowfuse_flowfuse||[]).push([[311,969],{1311:function(e,t,s){s.d(t,{default:function(){return v}});var o=s(41425);const a={ref:"drawer",class:"ff-expert-drawer","data-el":"expert-drawer",tabindex:"-1"},n={class:"header"},r={key:0,class:"agent-mode"},l={class:"header-actions"},i=["title"];var c=s(9600),d=s(99455),m=s(20563),u=s(10810),p=s(82124),h=s(53644),g=s(81969),f=s(26081),k=s(28409),S={name:"ExpertDrawer",components:{ToggleButtonGroup:h.A,ExpertPanel:g.default,XIcon:c.A,LockClosedIcon:d.A,LockOpenIcon:m.A},inject:["togglePinWithWidth","shouldAllowPinning"],computed:{...(0,u.aH)(k.W,["rightDrawer"]),...(0,u.aH)(f.useProductExpertStore,["agentMode"]),...(0,p.aH)("account",["features"]),agentModeButtons(){return[{title:"Support",value:"support-agent"},{title:"Insights",value:"insights-agent"}]},isInsightsModeEnabled(){return!!this.features.expertInsights},isPinned(){return this.rightDrawer.fixed},agentModeWrapper:{get(){return this.agentMode},set(e){this.setAgentMode(e)}}},mounted(){setTimeout(()=>{this.$refs.drawer?.focus()},350)},methods:{...(0,u.i0)(k.W,["closeRightDrawer"]),...(0,u.i0)(f.useProductExpertStore,["setAgentMode"]),closeDrawer(){this.closeRightDrawer()},togglePin(){this.togglePinWithWidth()}}},v=(0,s(66262).A)(S,[["render",function(e,t,s,c,d,m){const u=(0,o.resolveComponent)("toggle-button-group"),p=(0,o.resolveComponent)("LockClosedIcon"),h=(0,o.resolveComponent)("LockOpenIcon"),g=(0,o.resolveComponent)("XIcon"),f=(0,o.resolveComponent)("ExpertPanel");return(0,o.openBlock)(),(0,o.createElementBlock)("div",a,[(0,o.createElementVNode)("div",n,[t[3]||(t[3]=(0,o.createElementVNode)("div",{class:"flex items-center gap-1.5"},[(0,o.createElementVNode)("img",{src:"/ff-minimal-red.svg",alt:"FlowFuse",class:"w-5 h-5 flex-shrink-0"}),(0,o.createElementVNode)("h2",{class:"title"},"Expert")],-1)),m.isInsightsModeEnabled?((0,o.openBlock)(),(0,o.createElementBlock)("div",r,[(0,o.createVNode)(u,{modelValue:m.agentModeWrapper,"onUpdate:modelValue":t[0]||(t[0]=e=>m.agentModeWrapper=e),buttons:m.agentModeButtons,usesLinks:!1,"visually-hide-title":!0},null,8,["modelValue","buttons"])])):(0,o.createCommentVNode)("v-if",!0),(0,o.createElementVNode)("div",l,[m.shouldAllowPinning()?((0,o.openBlock)(),(0,o.createElementBlock)("button",{key:0,class:(0,o.normalizeClass)(["header-button pin-button",{"is-pinned":m.isPinned}]),title:m.isPinned?"Unpin drawer":"Pin drawer open","data-el":"expert-drawer-pin-button",onClick:t[1]||(t[1]=(...e)=>m.togglePin&&m.togglePin(...e))},[m.isPinned?((0,o.openBlock)(),(0,o.createBlock)(p,{key:0,class:"ff-icon"})):((0,o.openBlock)(),(0,o.createBlock)(h,{key:1,class:"ff-icon"}))],10,i)):(0,o.createCommentVNode)("v-if",!0),(0,o.createElementVNode)("button",{class:"header-button",title:"Close Expert","data-el":"expert-drawer-close-button",onClick:t[2]||(t[2]=(...e)=>m.closeDrawer&&m.closeDrawer(...e))},[(0,o.createVNode)(g,{class:"ff-icon"})])])]),(0,o.createVNode)(f)],512)}],["__scopeId","data-v-e64c976c"]])},81969:function(e,t,s){s.r(t),s.d(t,{default:function(){return Ds}});var o=s(41425);const a={class:"ff-expert"},n={ref:"scrollAnchor",class:"scroll-anchor"};var r=s(10810),l=s(82124);const i={class:"action-buttons"},c=["disabled"],d={class:"right-buttons"},m=["placeholder","disabled"],u={class:"actions"},p={class:"left"},h={class:"right"},g=["disabled"];var f=s(5322),k=s(40848);const S={class:"capabilities-selector"},v={style:{"min-width":"300px"}},C={class:"flex flex-col gap-1 flex-1 min-w-0"},b={class:"truncate",style:{"line-height":"16px"}},x={key:0,class:"text-gray-400 text-sm truncate leading-4"},w={class:"tool-count-badge self-start",title:"Tools"};var y=s(20487),V=s(87336),B=s(72468),E=s(63391),N={name:"CapabilitiesSelector",components:{FfCheckbox:V.A,ListboxOption:y.h7,FfListbox:B.A},computed:{...(0,r.aH)(E.W,["selectedCapabilities","capabilities"]),hasCapabilities(){return this.capabilities&&this.capabilities.length>0},capabilitiesHandler:{get(){return this.selectedCapabilities},set(e){this.setSelectedCapabilities(e)}}},methods:{...(0,r.i0)(E.W,["setSelectedCapabilities"]),onCheckboxClick(e){const t=e=>`${e.instance}::${e.mcpServerUrl}`,s=this.selectedCapabilities||[],o=s.some(s=>t(s)===t(e));this.capabilitiesHandler=o?s.filter(s=>t(s)!==t(e)):[...s,e]},getResourceTooltip(e){return[["MCP Server:",e.mcpServerName],["Instance:",e.instanceName],e.title?["Title:",e.title]:[],e.description?["Description:",e.description]:[],e.tools?.length?["Tools:",...e.tools.map(e=>e.name)]:null,e.resources?.length?["Resources:",...e.resources.map(e=>e.name)]:null,e.resourceTemplates?.length?["Resource Templates:",...e.resourceTemplates.map(e=>e.name)]:null].filter(Boolean).map(e=>e.join("\n")).join("\n\n")}}},I=s(66262),A=(0,I.A)(N,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("ff-checkbox"),i=(0,o.resolveComponent)("ListboxOption"),c=(0,o.resolveComponent)("ff-listbox");return(0,o.openBlock)(),(0,o.createElementBlock)("div",S,[(0,o.createVNode)(c,{modelValue:r.capabilitiesHandler,"onUpdate:modelValue":t[0]||(t[0]=e=>r.capabilitiesHandler=e),options:e.capabilities,disabled:!r.hasCapabilities,"return-model":"",multiple:"","label-key":"name","value-key":["instance","mcpServerUrl"],placeholder:"Resources","open-above":"","options-min-width":280,"align-right":""},{options:(0,o.withCtx)(({options:e})=>[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e,e=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:e.mcpServerName,as:"template",value:e,class:"ff-option ff-team-selection-option","data-option":e.mcpServerName,title:r.getResourceTooltip(e)},{default:(0,o.withCtx)(({active:t,selected:s})=>[(0,o.createElementVNode)("li",v,[(0,o.createElementVNode)("div",{class:(0,o.normalizeClass)(["ff-option-content flex truncate justify-start !items-start !gap-2 !p-2",{active:t}]),"data-click-exclude":"right-drawer"},[(0,o.createElementVNode)("div",null,[(0,o.createVNode)(l,{modelValue:s,onClick:(0,o.withModifiers)(t=>r.onCheckboxClick(e),["stop","prevent"])},null,8,["modelValue","onClick"])]),(0,o.createElementVNode)("div",C,[(0,o.createElementVNode)("span",b,(0,o.toDisplayString)(e.title),1),e.title?((0,o.openBlock)(),(0,o.createElementBlock)("p",x,(0,o.toDisplayString)(e.mcpServerName),1)):(0,o.createCommentVNode)("v-if",!0)]),(0,o.createElementVNode)("span",w,(0,o.toDisplayString)(e.toolCount),1)],2)])]),_:2},1032,["value","data-option","title"]))),128))]),_:1},8,["modelValue","options","disabled"])])}]]);const T={class:"context-selector-container"};var P=s(22511);const _=["title"],M={class:"text"},O={class:"icon-wrapper"};var L=s(88353),R=s(24487),U={name:"DefaultChip",components:{XIcon:L.default,PlusIcon:R.default},props:{modelValue:{type:Boolean,required:!1,default:!0},text:{type:String,required:!1,default:""},title:{type:String,required:!1,default:""}},emits:["toggle"],methods:{pluralize:P.td}},D=(0,I.A)(U,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("XIcon"),i=(0,o.resolveComponent)("PlusIcon");return(0,o.openBlock)(),(0,o.createElementBlock)("div",{class:(0,o.normalizeClass)(["chip",{active:s.modelValue}]),title:s.title,onClick:t[0]||(t[0]=t=>e.$emit("toggle"))},[(0,o.createElementVNode)("div",M,[(0,o.renderSlot)(e.$slots,"text",{},()=>[(0,o.createElementVNode)("span",null,(0,o.toDisplayString)(s.text),1)],!0)]),t[1]||(t[1]=(0,o.createElementVNode)("span",{class:"separator"},null,-1)),(0,o.createElementVNode)("div",O,[s.modelValue?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,class:"ff-icon ff-icon-sm"})):((0,o.openBlock)(),(0,o.createBlock)(i,{key:1,class:"ff-icon ff-icon-sm"}))])],10,_)}],["__scopeId","data-v-bb1b17f2"]]),F=s(78721),$={name:"ContextChip",components:{DefaultChip:D},props:{contextItem:{type:Object,required:!1,default:()=>({})}},computed:{...(0,r.aH)(F.u,["getSelectedContext"]),selectedContext(){return this.getSelectedContext},text(){return this.contextItem.name||"Unnamed Context"},title(){return this.contextItem.title||`Include ${this.contextItem.name} in context`}},methods:{...(0,r.i0)(F.u,["setSelectedContext"]),pluralize:P.td,toggleSelection(){const e=this.selectedContext.filter(e=>e.name!==this.contextItem.name);this.setSelectedContext(e)}}},H=(0,I.A)($,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("default-chip");return(0,o.openBlock)(),(0,o.createBlock)(l,{modelValue:!!s.contextItem,text:r.text,title:r.title,onToggle:r.toggleSelection},null,8,["modelValue","text","title","onToggle"])}]]);const z=["title"];var q={name:"DebugChip",components:{DefaultChip:D},props:{modelValue:{type:Boolean,required:!1,default:!0}},emits:["update:modelValue"],computed:{...(0,r.aH)(F.u,["debugLog"]),selectedCounter(){return this.debugLog.length},selectionTitle(){const e={};return this.debugLog.forEach(t=>{e[t.type]=(e[t.type]??0)+1}),`Selected Logs: \n${this.debugLog.map((e,t)=>{const s=(e=e||{}).level||"",o="debug"!==s?s:"",a=e.metadata?.topic||"",n=e.source?.name||e.source?.id||e.metadata?.path||"",r=e.metadata?.format||"",l=e.source?.type||"",i=e.metadata?.property||"",c=[];return n&&c.push(`node: ${n}`),a&&c.push(`topic: ${a}`),o&&l&&c.push(`${l} : (${o})`),i&&(r?c.push(`property: ${i} ${r}`):c.push(`property: ${i}`)),`${t+1}: ${c.join(", ")}`}).join("\n")}`}},methods:{...(0,r.i0)(F.u,["resetDebugLogContext"]),pluralize:P.td,toggleSelection(){this.$emit("update:modelValue",!this.modelValue),this.resetDebugLogContext()}}},W=(0,I.A)(q,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("default-chip");return(0,o.openBlock)(),(0,o.createBlock)(l,{class:"flow-selection-button",modelValue:s.modelValue,onToggle:r.toggleSelection},{text:(0,o.withCtx)(()=>[t[0]||(t[0]=(0,o.createElementVNode)("span",null,"Debug",-1)),(0,o.createElementVNode)("span",{class:"counter italic",title:r.selectionTitle},"( "+(0,o.toDisplayString)(r.selectedCounter)+" "+(0,o.toDisplayString)(r.pluralize("log",r.selectedCounter))+" )",9,z)]),_:1},8,["modelValue","onToggle"])}]]);const j=["title"];var G={name:"SelectionChip",components:{DefaultChip:D},props:{modelValue:{type:Boolean,required:!1,default:!0}},emits:["update:modelValue"],computed:{...(0,r.aH)(F.u,["selectedNodes"]),filteredSelectedNodes(){return this.selectedNodes.filter(e=>!["global-config"].includes(e.type))},selectedCounter(){return this.filteredSelectedNodes.length},selectionTitle(){const e={};return this.filteredSelectedNodes.forEach(t=>{e[t.type]=(e[t.type]??0)+1}),`Selected nodes: \n${Object.keys(e).map(t=>`${e[t]} x ${t}`).join("\n")}`}},methods:{...(0,r.i0)(F.u,["setSelectedNodes"]),pluralize:P.td,toggleSelection(){this.$emit("update:modelValue",!this.modelValue),this.setSelectedNodes([])}}},J=(0,I.A)(G,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("default-chip");return(0,o.openBlock)(),(0,o.createBlock)(l,{class:"flow-selection-button",modelValue:s.modelValue,onToggle:r.toggleSelection},{text:(0,o.withCtx)(()=>[t[0]||(t[0]=(0,o.createElementVNode)("span",null,"Selection",-1)),(0,o.createElementVNode)("span",{class:"counter italic",title:r.selectionTitle},"( "+(0,o.toDisplayString)(r.selectedCounter)+" "+(0,o.toDisplayString)(r.pluralize("node",r.selectedCounter))+" )",9,j)]),_:1},8,["modelValue","onToggle"])}]]);const K={class:"context-selector mr-2"};var Z=s(52769),Y=s(59270),Q=s(34242),X=s(28810),ee={name:"ContextSelectorButton",components:{PaperClipIcon:Z.default},data(){return{selectedContextItems:[]}},computed:{...(0,r.aH)(F.u,["availableContextOptions","getSelectedContext"]),hasContextOptions(){return this.contextOptions?.length>0},hasSelection(){return this.selectedContext?.length>0},selectedContext(){return this.getSelectedContext},contextOptions:{get(){return this.availableContextOptions.map(e=>{let t=Y.default;return"CubeIcon"===e.menuIcon?t=Q.default:"ViewListIcon"===e.menuIcon&&(t=X.default),{...e,icon:t}})}}},methods:{pluralize:P.td,...(0,r.i0)(F.u,["setSelectedContext"]),selectItem(e){if(e.onSelectAction)(0,F.u)()[e.onSelectAction]();else{const t=e=>({value:e.value,name:e.name,label:e.label,icon:e.icon}),s=t(e),o=this.selectedContext||[];if(o.some(e=>e.value===s.value))return;this.setSelectedContext([...o,s].filter(Boolean))}}}},te=(0,I.A)(ee,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("PaperClipIcon"),i=(0,o.resolveComponent)("ff-listbox");return(0,o.openBlock)(),(0,o.createElementBlock)("div",K,[(0,o.createVNode)(i,{modelValue:n.selectedContextItems,"onUpdate:modelValue":t[0]||(t[0]=e=>n.selectedContextItems=e),class:(0,o.normalizeClass)(["context-selector",r.hasSelection?"active":""]),options:r.contextOptions,disabled:!r.hasContextOptions,"hide-chevron":!0,"icon-only":!0,"return-model":"","label-key":"label",placeholder:"Context","open-above":"","options-min-width":250,"align-right":"",onOptionSelected:r.selectItem},{icon:(0,o.withCtx)(()=>[(0,o.createVNode)(l,{class:"icon ff-icon ff-icon-sm"})]),_:1},8,["modelValue","class","options","disabled","onOptionSelected"])])}]]),se=s(26081),oe={name:"ContextSelector",components:{ContextChip:H,DebugChip:W,SelectionChip:J,ContextSelectorButton:te},computed:{...(0,r.aH)(F.u,["getSelectedContext","hasDebugLogsSelected","hasUserSelection"]),...(0,r.aH)(se.useProductExpertStore,["isInsightsAgent"]),selectedContext(){return this.isInsightsAgent?[]:this.getSelectedContext},selectedContextFiltered(){return this.selectedContext.filter(e=>!1!==e.showAsChip)}},methods:{horizontalScrolling(e){const t=e.currentTarget;0!==e.deltaY&&(e.preventDefault(),t.scrollLeft+=e.deltaY/2)}}},ae=(0,I.A)(oe,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("context-selector-button"),i=(0,o.resolveComponent)("context-chip"),c=(0,o.resolveComponent)("debug-chip"),d=(0,o.resolveComponent)("selection-chip");return(0,o.openBlock)(),(0,o.createElementBlock)("div",T,[e.isInsightsAgent?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createBlock)(l,{key:0})),(0,o.createElementVNode)("div",{class:"chips-container",onWheel:t[0]||(t[0]=(...e)=>r.horizontalScrolling&&r.horizontalScrolling(...e))},[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(r.selectedContextFiltered,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:t,contextItem:e},null,8,["contextItem"]))),128)),e.hasDebugLogsSelected&&!e.isInsightsAgent?((0,o.openBlock)(),(0,o.createBlock)(c,{key:0})):(0,o.createCommentVNode)("v-if",!0),e.hasUserSelection&&!e.isInsightsAgent?((0,o.openBlock)(),(0,o.createBlock)(d,{key:1})):(0,o.createCommentVNode)("v-if",!0)],32)])}],["__scopeId","data-v-104983ce"]]),ne=s(28409),re={name:"ExpertChatInput",components:{CapabilitiesSelector:A,ContextSelector:ae,ResizeBar:k.A},inject:{togglePinWithWidth:{from:"togglePinWithWidth",default:()=>()=>{}}},emits:["send","stop"],setup(){const{startResize:e,heightStyle:t,bindResizer:s,isResizing:o}=(0,f.n)();return{startResize:e,bindResizer:s,heightStyle:t,isInputResizing:o}},data(){return{inputText:"",includeSelection:!0,isTextareaFocused:!1}},computed:{...(0,r.aH)(F.u,["immersiveInstance","immersiveDevice"]),...(0,r.aH)(ne.W,["rightDrawer"]),...(0,r.aH)(se.useProductExpertStore,["messages","isSessionExpired","isInsightsAgent","hasSelectedCapabilities","hasMessages","isWaitingForResponse"]),isInputDisabled(){return!!this.isSessionExpired||!!this.isWaitingForResponse||this.isInsightsAgent&&!this.hasSelectedCapabilities},isDrawerPinned(){return this.rightDrawer.fixed},canSend(){return this.inputText.trim().length>0&&!this.isInputDisabled},placeholderText(){return this.isInsightsAgent&&!this.hasSelectedCapabilities?"Select a resource to get started":this.isInsightsAgent?"Tell us what you want to know about":"Tell us what you need help with"},isImmersive(){return this.immersiveDevice||this.immersiveInstance}},mounted(){this.bindResizer({component:this.$refs.resizeTarget,maxHeightRatio:.9,minHeight:120,maxViewportMarginY:80})},methods:{...(0,r.i0)(F.u,["resetContextSelection"]),...(0,r.i0)(se.useProductExpertStore,["startOver","handleQuery","handleMessageResponse"]),async handleSend(){if(!this.canSend)return;const e=this.inputText.trim();this.isDrawerPinned||0!==this.messages.length||this.togglePinWithWidth(),this.handleQuery({query:e}).then(e=>this.handleMessageResponse(e)).then(()=>{this.$nextTick(()=>{this.$refs.textarea.focus()})}).catch(e=>e),this.inputText=""},handleStop(){this.$emit("stop")},handleStartOver(){this.hasMessages&&(this.inputText="",this.isInsightsAgent||this.resetContextSelection(),this.startOver())},handleKeydown(e){"Enter"!==e.key||e.shiftKey||(e.preventDefault(),this.handleSend())}}},le=(0,I.A)(re,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("resize-bar"),f=(0,o.resolveComponent)("capabilities-selector"),k=(0,o.resolveComponent)("context-selector");return(0,o.openBlock)(),(0,o.createElementBlock)("div",{ref:"resizeTarget",class:"ff-expert-input",style:(0,o.normalizeStyle)({height:a.heightStyle})},[(0,o.createVNode)(l,{"is-resizing":a.isInputResizing,direction:"horizontal",onMousedown:a.startResize},null,8,["is-resizing","onMousedown"]),(0,o.createCommentVNode)(" Action buttons row "),(0,o.createElementVNode)("div",i,[(0,o.createElementVNode)("button",{type:"button",class:"btn-start-over",disabled:e.isWaitingForResponse&&!e.isSessionExpired,onClick:t[0]||(t[0]=(...e)=>r.handleStartOver&&r.handleStartOver(...e))}," Start over ",8,c),(0,o.createElementVNode)("div",d,[e.isInsightsAgent?((0,o.openBlock)(),(0,o.createBlock)(f,{key:0})):(0,o.createCommentVNode)("v-if",!0)])]),(0,o.createElementVNode)("div",{class:(0,o.normalizeClass)(["input-wrapper",{focused:n.isTextareaFocused}])},[(0,o.createCommentVNode)(" Textarea "),(0,o.withDirectives)((0,o.createElementVNode)("textarea",{ref:"textarea","onUpdate:modelValue":t[1]||(t[1]=e=>n.inputText=e),class:"chat-input",placeholder:r.placeholderText,disabled:r.isInputDisabled,onKeydown:t[2]||(t[2]=(...e)=>r.handleKeydown&&r.handleKeydown(...e)),onFocus:t[3]||(t[3]=e=>n.isTextareaFocused=!0),onBlur:t[4]||(t[4]=e=>n.isTextareaFocused=!1)},null,40,m),[[o.vModelText,n.inputText]]),(0,o.createElementVNode)("div",u,[(0,o.createElementVNode)("div",p,[r.isImmersive&&!e.isInsightsAgent?((0,o.openBlock)(),(0,o.createBlock)(k,{key:0})):(0,o.createCommentVNode)("v-if",!0)]),(0,o.createElementVNode)("div",h,[e.isWaitingForResponse&&!e.isSessionExpired?((0,o.openBlock)(),(0,o.createElementBlock)("button",{key:0,type:"button",class:"btn-stop",onClick:t[5]||(t[5]=(...e)=>r.handleStop&&r.handleStop(...e))}," Stop ")):e.isSessionExpired?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createElementBlock)("button",{key:1,type:"button",class:"btn-send",disabled:!r.canSend,onClick:t[6]||(t[6]=(...e)=>r.handleSend&&r.handleSend(...e))}," Send ",8,g))])])],2)],4)}],["__scopeId","data-v-f0a93ed0"]]);const ie={ref:"messagesWrapper",class:"messages-wrapper"},ce={class:"flex flex-col gap-3"},de={key:0},me={class:"ff-expert-loading"},ue={key:0,class:"loading-message"};var pe=s(2e3),he={name:"ExpertLoadingIndicator",data(){return{showMessage:!1,currentMessageIndex:0,messageVariants:{[pe.C]:["Ingesting the docs...","Reading the blog...","Searching through FlowFuse knowledge base","Analyzing your question...","Finding the best answer..."],[pe.q]:["Connecting to MCP resources...","Querying your Node-RED instances...","Instructing MCP tooling...","Ingesting responses...","Gathering insights...","Considering instructions...","Processing user response..."],transfer:["Catching up with new context...","Syncing your conversation...","Loading existing history...","Preparing your chat..."]},messageTimer:null,rotationTimer:null}},computed:{...(0,r.aH)(se.useProductExpertStore,["loadingVariant"]),messages(){return this.messageVariants[this.loadingVariant]},currentMessage(){return this.messages[this.currentMessageIndex]}},mounted(){this.messageTimer=setTimeout(()=>{this.showMessage=!0,this.rotationTimer=setInterval(()=>{this.currentMessageIndex=(this.currentMessageIndex+1)%this.messages.length},3e3)},5e3)},beforeUnmount(){this.messageTimer&&clearTimeout(this.messageTimer),this.rotationTimer&&clearInterval(this.rotationTimer)}},ge=(0,I.A)(he,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)("div",me,[t[0]||(t[0]=(0,o.createElementVNode)("div",{class:"loading-dots"},[(0,o.createElementVNode)("div",{class:"loading-dot"}),(0,o.createElementVNode)("div",{class:"loading-dot"}),(0,o.createElementVNode)("div",{class:"loading-dot"})],-1)),n.showMessage?((0,o.openBlock)(),(0,o.createElementBlock)("div",ue,(0,o.toDisplayString)(r.currentMessage),1)):(0,o.createCommentVNode)("v-if",!0)])}],["__scopeId","data-v-efa2c00e"]]);const fe={class:"flex flex-col gap-3"};var ke=s(99900);function Se({intervalMs:e=350,shallow:t=!1}={}){const s=(0,o.ref)([]),a=(0,o.ref)([]),{doWhile:n}=(0,ke.A)(),r=(0,o.ref)(!1);async function l(o=[]){s.value=t?o.map(m):o,await n(()=>s.value.length!==a.value.length,async()=>{if(!Array.isArray(s.value)||0===s.value.length)return;const e=m(s.value[a.value.length]),o=c(),n=t?!!o?.streamed:Object.values(o??{}).every(e=>e.streamed);o?n&&a.value.push(e):a.value.push(e),a.value.length===s.value.length&&(r.value=!0)},{intervalMs:e})}function i(e){e.value=e,a.value=e.map(m),r.value=!1}function c(){return a.value[a.value.length-1]}function d(e,s){t?a.value[e].streamed=!0:a.value[e][s].streamed=!0}function m(e={}){return t?{...e,streamed:!1}:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{streamable:t,streamed:!1}]))}return{addItemsSequentially:l,addItems:i,initStreamer:async function(e,{shouldStream:t=!1}={}){if(!t)return i(e),Promise.resolve();await l(e)},hasFinishedStreaming:r,items:s,getLastVisibleItem:c,setSubItemStreamedState:d,updateCardStreamingState:function(e,t){Object.keys(e).forEach(e=>{d(t,e)})},visibleItems:a}}const ve={class:"guide-badge"};var Ce={name:"AnswerBadge",props:{kind:{required:!0,type:String}},computed:{title(){return"resources"===this.kind?"Resources":"Setup Guide"}}},be=(0,I.A)(Ce,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)("div",ve,[(0,o.createElementVNode)("span",null,(0,o.toDisplayString)(r.title),1)])}],["__scopeId","data-v-0d393a03"]]);const xe={key:0,class:"guide-header"},we={class:"guide-title"},ye={key:0,class:"guide-summary"},Ve=["innerHTML"];var Be=s(50011),Ee=s(69510),Ne=s(92753),Ie=s(27402),Ae=s(85262),Te=s(95387),Pe=s(69359),_e=s(60023);Be.A.registerLanguage("bash",Ee.A),Be.A.registerLanguage("shell",Ee.A),Be.A.registerLanguage("css",Ne.A),Be.A.registerLanguage("javascript",Te.A),Be.A.registerLanguage("js",Te.A),Be.A.registerLanguage("json",Ie.A),Be.A.registerLanguage("python",Ae.A),Be.A.registerLanguage("py",Ae.A),Be.A.registerLanguage("typescript",Te.A),Be.A.registerLanguage("ts",Te.A),Be.A.registerLanguage("xml",Pe.A),Be.A.registerLanguage("html",Pe.A);const Me='<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"/></svg>',Oe=Me;function Le({delayMs:e=30,splitRegex:t=/\s+/,joinWith:s=" "}={}){const a=(0,o.ref)(""),n=(0,o.ref)(!1);let r=null,l=[],i=0;const c=()=>{r&&clearTimeout(r),r=null,n.value=!1,l=[],i=0};return(0,o.onBeforeUnmount)(c),{text:a,isStreaming:n,stream:(d="")=>(c(),a.value="",l=String(d).trim().split(t).filter(Boolean),i=0,n.value=!0,new Promise(t=>{const c=async()=>n.value?i>=l.length?(await(0,o.nextTick)(),n.value=!1,t()):(a.value+=(a.value?s:"")+l[i],i+=1,void(r=setTimeout(c,e))):t();c()})),stop:c}}var Re={name:"StreamableContent",props:{modelValue:{type:Object,required:!1,default:null,validate(e,t){return t.string||e?!(!e||"object"!=typeof e)&&"string"==typeof e.streamable&&"boolean"==typeof e.streamed:(console.warn("StreamableContent: string prop is required when modelValue is null"),!1)}},string:{required:!1,type:String,default:null,validator(e,t){return!(!t.modelValue&&!e&&(console.warn("StreamableContent: string prop is required when modelValue is null"),1))}},shouldStream:{required:!1,type:Boolean,default:!0},richContent:{type:Boolean,required:!1,default:!1}},emits:["streaming-complete","update:modelValue"],setup(){const{stream:e,text:t,isStreaming:s}=Le({delayMs:30}),{markedInstance:o}=function(){const e=new _e.Dz({breaks:!0,gfm:!0});return e.use({renderer:{code({text:e,lang:t}){const s=t?t.split(/\s/)[0].toLowerCase():"";let o;return o=s&&Be.A.getLanguage(s)?Be.A.highlight(e,{language:s}).value:Be.A.highlightAuto(e).value,`<div class="ff-code-block"><div class="ff-code-block--header">${s?`<span class="ff-code-block--lang">${s}</span>`:""}<button class="ff-code-block--copy">${Me}</button></div><pre><code class="hljs">${o}</code></pre></div>`}}}),{markedInstance:e}}();return{stream:e,streamedText:t,isStreaming:s,sanitize:P.aj,markedInstance:o}},computed:{...(0,r.aH)(F.u,["supportedActions"]),rawText(){const e=this.modelValue?this.modelValue.streamable:this.string;return this.richContent?this.markedInstance.parse(e||""):e},text(){const e=this.shouldStream?this.streamedText:this.rawText;return this.sanitize(e,{supportedActions:this.supportedActions,targetBlank:!0,appendQueryParameters:{utm_source:"flowfuse-expert",utm_medium:"assistant",utm_campaign:"expert-chat"}})}},watch:{isStreaming(e){e||(this.$emit("streaming-complete"),this.modelValue&&this.$emit("update:modelValue",{...this.modelValue,streamed:!0}))}},mounted(){this.shouldStream&&this.stream(this.rawText)},methods:{handleClick(e){const t=e.target.closest(".ff-code-block--copy");if(!t)return;const s=t.closest(".ff-code-block")?.querySelector("pre code");s&&navigator.clipboard.writeText(s.textContent||"").then(()=>{t.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg>',setTimeout(()=>{t.innerHTML=Oe},2e3)}).catch(()=>{const e=document.createElement("textarea");e.value=s.textContent||"",e.style.position="fixed",e.style.left="-999999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)})}}},Ue=(0,I.A)(Re,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)("div",(0,o.mergeProps)({class:"streamable-content"},(0,o.toHandlers)(s.richContent?{click:r.handleClick}:{},!0)),[s.richContent?((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:1},[(0,o.createCommentVNode)(" eslint-disable-next-line vue/no-v-html "),((0,o.openBlock)(),(0,o.createElementBlock)("div",{key:r.text,innerHTML:r.text},null,8,Ve))],64)):((0,o.openBlock)(),(0,o.createElementBlock)("span",{key:r.text},(0,o.toDisplayString)(r.text),1))],16)}],["__scopeId","data-v-7e74785e"]]),De={name:"GuideHeader",components:{StreamableContent:Ue},props:{title:{type:String,required:!0},summary:{type:[String,null],required:!1,default:null},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],data(){return{streamableSummary:{streamable:this.summary,streamed:!1},streamableTitle:{streamable:this.title,streamed:!1}}},watch:{streamableSummary(e){e.streamed&&this.$emit("streaming-complete")},streamableTitle(e){!this.summary&&e.streamed&&this.$emit("streaming-complete")}}},Fe=(0,I.A)(De,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,null,[(0,o.createCommentVNode)(" Title and Summary "),s.title?((0,o.openBlock)(),(0,o.createElementBlock)("div",xe,[(0,o.createElementVNode)("h3",we,[(0,o.createVNode)(l,{modelValue:n.streamableTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.streamableTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),s.summary?((0,o.openBlock)(),(0,o.createElementBlock)("p",ye,[!s.shouldStream||n.streamableTitle.streamed?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,modelValue:n.streamableSummary,"onUpdate:modelValue":t[1]||(t[1]=e=>n.streamableSummary=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)],2112)}],["__scopeId","data-v-7abfce85"]]),$e={name:"MessageBubble",props:{type:{required:!0,type:String},variant:{required:!1,type:String,default:null}},computed:{isAiMessage(){return"ai"===this.type},isHumanMessage(){return"human"===this.type},isSystemMessage(){return"system"===this.type}}},He=(0,I.A)($e,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)("div",{class:(0,o.normalizeClass)(["message-bubble flex flex-col gap-1",{"ai-message":r.isAiMessage,"human-message":r.isHumanMessage,"system-message":r.isSystemMessage,[`system-${s.variant}`]:s.variant}])},[(0,o.renderSlot)(e.$slots,"default",{},void 0,!0)],2)}],["__scopeId","data-v-7581575e"]]);const ze={class:"guide-flows"},qe={class:"section-title"},We={key:0,class:"resources-grid"},je={class:"flex flex-col gap-3 p-3 bg-white border border-gray-200 rounded-lg"},Ge={class:"flex items-start gap-2"},Je={class:"flex-1 flex flex-col gap-1 min-w-0"},Ke={class:"flex items-start justify-between gap-2"},Ze={class:"text-sm font-medium text-gray-900 overflow-hidden text-ellipsis whitespace-nowrap flex-1 min-w-0"},Ye={class:"flex items-start gap-2 flex-shrink-0 -mt-1"},Qe={key:0,class:"text-xs text-gray-500 overflow-hidden text-ellipsis whitespace-nowrap"};var Xe=s(50602),et=s(40839),tt=s(74474),st=s(1683),ot={name:"StandardResourceCard",components:{StreamableContent:Ue,TextCopier:tt.A,FlowViewer:st.A,ChevronUpIcon:Xe.A,ChevronDownIcon:et.A},props:{flow:{type:Object,required:!0},shouldStream:{type:Boolean,required:!1,default:!1}},emits:["streaming-complete"],data(){return{flowsExpanded:!0,flowTitle:this.flow.title,flowUrl:this.flow.url,flowMetadata:this.flow.metadata}},computed:{...(0,r.aH)(se.useProductExpertStore,["canImportFlows"]),flowsJson(){return this.flowMetadata?JSON.stringify(this.flowMetadata.streamable.flows,null,2):""}},watch:{flowMetadata(e){e.streamed&&this.$emit("streaming-complete")}},methods:{...(0,r.i0)(F.u,["sendFlowsToImport"]),importFlows(){this.sendFlowsToImport(this.flowsJson)},completeStreaming(){this.flowMetadata&&(this.flowMetadata.streamed=!0),this.$emit("streaming-complete")}}},at={name:"ListFlows",components:{StreamableContent:Ue,FlowResourceCard:(0,I.A)(ot,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("chevron-down-icon"),c=(0,o.resolveComponent)("chevron-up-icon"),d=(0,o.resolveComponent)("text-copier"),m=(0,o.resolveComponent)("ff-button"),u=(0,o.resolveComponent)("flow-viewer");return(0,o.openBlock)(),(0,o.createElementBlock)("div",je,[(0,o.createElementVNode)("div",Ge,[t[4]||(t[4]=(0,o.createStaticVNode)('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" class="flex-shrink-0 w-4 h-4 mt-0.5" data-v-494f7aa0><rect width="24" height="24" fill="gray" rx="4" data-v-494f7aa0></rect><g clip-path="url(#a)" data-v-494f7aa0><path fill="#fff" d="M0 12v-1.647c5.09 0 5.81-.9 6.44-1.695.72-.9 1.46-1.6 3.88-1.6v1.648c-1.76 0-2.04.354-2.51.948C6.79 10.937 5.5 12 0 12Z" data-v-494f7aa0></path><path fill="#fff" d="M8.6 16.941c-2.9 0-3.47-1.513-3.88-2.614C4.25 13.072 3.85 12 0 12v-1.647c4.67 0 5.67 1.618 6.34 3.419.38 1.015.57 1.522 2.26 1.522v1.647Z" data-v-494f7aa0></path><path fill="#fff" d="M16.78 19H9.9c-.95 0-1.72-.737-1.72-1.647v-2.47c0-.91.77-1.648 1.72-1.648h6.88c.95 0 1.72.738 1.72 1.647v2.47c0 .91-.77 1.648-1.72 1.648Zm0-4.118H9.9v2.47h6.88v-2.47Zm1.5-4.117H11.4c-.95 0-1.72-.738-1.72-1.647v-2.47c0-.91.77-1.648 1.72-1.648h6.88c.95 0 1.72.737 1.72 1.647v2.47c0 .91-.77 1.648-1.72 1.648Zm0-4.118H11.4v2.47h6.88v-2.47Z" data-v-494f7aa0></path></g><defs data-v-494f7aa0><clipPath id="a" data-v-494f7aa0><path fill="#fff" d="M0 5h20v14H0z" data-v-494f7aa0></path></clipPath></defs></svg>',1)),(0,o.createElementVNode)("div",Je,[(0,o.createElementVNode)("div",Ke,[(0,o.createElementVNode)("div",Ze,[(0,o.createVNode)(l,{modelValue:n.flowTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.flowTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),(0,o.createElementVNode)("div",Ye,[(0,o.createElementVNode)("button",{class:"text-gray-600 hover:text-indigo-600 hover:bg-indigo-50 flex items-center transition-colors duration-200 rounded px-2 py-1",onClick:t[1]||(t[1]=e=>n.flowsExpanded=!n.flowsExpanded)},[t[2]||(t[2]=(0,o.createElementVNode)("span",null,"Preview",-1)),n.flowsExpanded?((0,o.openBlock)(),(0,o.createBlock)(i,{key:0,class:"h-4 w-4"})):(0,o.createCommentVNode)("v-if",!0),n.flowsExpanded?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createBlock)(c,{key:1,class:"h-4 w-4"}))]),e.canImportFlows?((0,o.openBlock)(),(0,o.createBlock)(m,{key:1,size:"small",kind:"secondary",onClick:r.importFlows},{default:(0,o.withCtx)(()=>[...t[3]||(t[3]=[(0,o.createTextVNode)("Import",-1)])]),_:1},8,["onClick"])):((0,o.openBlock)(),(0,o.createBlock)(d,{key:0,text:r.flowsJson,showText:!1},null,8,["text"]))])]),n.flowMetadata?((0,o.openBlock)(),(0,o.createElementBlock)("div",Qe,[!s.shouldStream||n.flowTitle.streamed?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,string:n.flowMetadata.streamable.category,"should-stream":s.shouldStream,onStreamingComplete:r.completeStreaming},null,8,["string","should-stream","onStreamingComplete"])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)])]),n.flowMetadata?((0,o.openBlock)(),(0,o.createElementBlock)("div",{key:0,class:(0,o.normalizeClass)(["flex overflow-auto ml-8 max-h-[500px] flex-col relative",{hidden:n.flowsExpanded}])},[n.flowsExpanded?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createBlock)(u,{key:0,flow:s.flow.metadata.streamable.flows},null,8,["flow"]))],2)):(0,o.createCommentVNode)("v-if",!0)])}],["__scopeId","data-v-494f7aa0"]])},props:{flows:{type:Array,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}},data(){return{streamingTitle:{streamable:"Related Flows",streamed:!1}}},async mounted(){const e=this.flows.map(e=>({title:e.title,url:e.url,metadata:e.metadata}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},nt=(0,I.A)(at,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("FlowResourceCard");return(0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,null,[(0,o.createCommentVNode)(" Resources Section "),(0,o.createElementVNode)("div",ze,[(0,o.createElementVNode)("h4",qe,[(0,o.createVNode)(l,{modelValue:n.streamingTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.streamingTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),n.streamingTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("div",We,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:t,flow:e,"should-stream":s.shouldStream,onStreamingComplete:s=>a.updateCardStreamingState(e,t)},null,8,["flow","should-stream","onStreamingComplete"]))),128))])):(0,o.createCommentVNode)("v-if",!0)])],2112)}],["__scopeId","data-v-61196fe4"]]);const rt={class:"guide-steps"},lt={class:"section-title"},it={class:"steps-list"},ct={class:"step-number"},dt={class:"step-content"},mt={class:"step-title"},ut={key:0,class:"step-detail"};var pt={name:"GuideStepsList",components:{StreamableContent:Ue},props:{steps:{required:!0,type:Array},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,visibleItems:t}=Se();return{initStreamer:e,visibleItems:t}},async mounted(){await this.initStreamer(this.steps,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},ht=(0,I.A)(pt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)("div",rt,[(0,o.createElementVNode)("h4",lt,[(0,o.createVNode)(l,{string:"Steps:","should-stream":s.shouldStream},null,8,["should-stream"])]),(0,o.createElementVNode)("ol",it,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)("li",{key:t,class:"step-item"},[(0,o.createElementVNode)("div",ct,(0,o.toDisplayString)(t+1),1),(0,o.createElementVNode)("div",dt,[(0,o.createElementVNode)("h5",mt,[(0,o.createVNode)(l,{modelValue:e.title,"onUpdate:modelValue":t=>e.title=t,"should-stream":s.shouldStream},null,8,["modelValue","onUpdate:modelValue","should-stream"])]),!s.shouldStream||e.title.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("p",ut,[(0,o.createVNode)(l,{modelValue:e.detail,"onUpdate:modelValue":t=>e.detail=t,"should-stream":s.shouldStream},null,8,["modelValue","onUpdate:modelValue","should-stream"])])):(0,o.createCommentVNode)("v-if",!0)])]))),128))])])}],["__scopeId","data-v-2c3d62df"]]);const gt={class:"issues"};var ft={name:"IssuesList",components:{StreamableContent:Ue,ExclamationIcon:s(7437).A},props:{issues:{type:Array,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o,sanitize:P.aj}},data(){return{streamedTitle:{streamable:"Issues",streamed:!1}}},async mounted(){const e=this.issues.map(e=>({content:e}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},kt=(0,I.A)(ft,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("exclamation-icon"),i=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)("div",gt,[(0,o.createElementVNode)("h4",null,[(0,o.createVNode)(l,{class:"ff-icon"}),(0,o.createVNode)(i,{modelValue:n.streamedTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.streamedTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),(0,o.createElementVNode)("ul",null,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)("li",{key:t},[(0,o.createVNode)(i,{"rich-content":!0,string:e.content.streamable,"should-stream":s.shouldStream,onStreamingComplete:e=>a.setSubItemStreamedState(t,"content")},null,8,["string","should-stream","onStreamingComplete"])]))),128))])])}],["__scopeId","data-v-0f1ffd8a"]]);const St={class:"guide-packages"},vt={class:"section-title"},Ct={key:0,class:"packages-grid"},bt=["href"],xt=["src"],wt={class:"package-info"},yt={class:"package-name"},Vt={class:"package-url"},Bt={class:"package-actions"};var Et={name:"PackageResourceCard",components:{StreamableContent:Ue},props:{nodePackage:{type:Object,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(e){const t=(0,o.computed)(()=>{const t=e.nodePackage;return"object"==typeof t?t.id.streamable||t.name.streamable:t}),s=(0,o.computed)(()=>{const s=e.nodePackage;return s?s.url.streamable||s.metadata?.streamable?.source||s.metadata?.streamable?.url||`https://flows.nodered.org/node/${t.value}`:"https://flows.nodered.org/"});return{packageName:t,packageUrl:s}},data(){return{streamablePackageName:{streamable:this.packageName,streamed:!1},streamablePackageUrl:{streamable:this.packageUrl,streamed:!1}}},computed:{...(0,r.aH)(se.useProductExpertStore,["canManagePalette"]),...(0,r.aH)(F.u,["palette"]),packageFaviconUrl(){const e=this.nodePackage.metadata?.streamable?.source||this.nodePackage.url.streamable;try{return`https://www.google.com/s2/favicons?domain=${new URL(e).hostname}`}catch(e){return"flows.nodered.org"}},isCorePackage(){return"core-node"===this.nodePackage.type.streamable||this.packageName.startsWith("node-red:")},isPackageInstalled(){const e=this.nodePackage;return!!this.palette?.[e.id.streamable]},urlWithUTMTracking(){const e=this.packageUrl;try{const t=new URL(e);return t.searchParams.set("utm_source","flowfuse-expert"),t.searchParams.set("utm_medium","assistant"),t.searchParams.set("utm_campaign","expert-chat"),t.toString()}catch(t){return e}}},watch:{streamablePackageUrl(e){e.streamed&&this.$emit("streaming-complete")}},methods:{...(0,r.i0)(F.u,["installNodePackage","manageNodePackage"]),handleImageError(e){e.target.style.display="none"},installPackage(){this.installNodePackage(this.packageName)},managePackage(){this.manageNodePackage(this.packageName)}}},Nt={name:"ListPackages",components:{StreamableContent:Ue,PackageResourceCard:(0,I.A)(Et,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("ff-button");return(0,o.openBlock)(),(0,o.createElementBlock)("a",{href:r.urlWithUTMTracking,target:"_blank",rel:"noopener noreferrer",class:"package-card"},[(0,o.createElementVNode)("img",{src:r.packageFaviconUrl,alt:"Node-RED",class:"package-favicon",onError:t[0]||(t[0]=(...e)=>r.handleImageError&&r.handleImageError(...e))},null,40,xt),(0,o.createElementVNode)("div",wt,[(0,o.createElementVNode)("div",yt,[(0,o.createVNode)(l,{modelValue:n.streamablePackageName,"onUpdate:modelValue":t[1]||(t[1]=e=>n.streamablePackageName=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),(0,o.createElementVNode)("div",Vt,[!s.shouldStream||n.streamablePackageName.streamed?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,modelValue:n.streamablePackageUrl,"onUpdate:modelValue":t[2]||(t[2]=e=>n.streamablePackageUrl=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])):(0,o.createCommentVNode)("v-if",!0)]),(0,o.createElementVNode)("div",Bt,[e.canManagePalette&&!r.isCorePackage?((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:0},[r.isPackageInstalled?((0,o.openBlock)(),(0,o.createBlock)(i,{key:0,class:"w-20",size:"small",kind:"secondary",onClick:t[3]||(t[3]=(0,o.withModifiers)(e=>r.managePackage(s.nodePackage),["stop","prevent"]))},{default:(0,o.withCtx)(()=>[...t[5]||(t[5]=[(0,o.createTextVNode)("Manage ",-1)])]),_:1})):((0,o.openBlock)(),(0,o.createBlock)(i,{key:1,class:"w-20",size:"small",kind:"secondary",onClick:t[4]||(t[4]=(0,o.withModifiers)(e=>r.installPackage(s.nodePackage),["stop","prevent"]))},{default:(0,o.withCtx)(()=>[...t[6]||(t[6]=[(0,o.createTextVNode)("Install ",-1)])]),_:1}))],64)):(0,o.createCommentVNode)("v-if",!0)])])],8,bt)}],["__scopeId","data-v-505e915a"]])},props:{packages:{required:!0,type:Array},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}},data(){return{packagesTitle:{streamable:"Required Node Packages",streamed:!1}}},async mounted(){const e=this.packages.map(e=>({id:e.id,name:e.name,title:e.title,url:e.url,type:e.type,metadata:e.metadata,hostname:e.hostname}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},It=(0,I.A)(Nt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("PackageResourceCard");return(0,o.openBlock)(),(0,o.createElementBlock)("div",St,[(0,o.createElementVNode)("h4",vt,[(0,o.createVNode)(l,{modelValue:n.packagesTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.packagesTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),!s.shouldStream||n.packagesTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("div",Ct,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:t,nodePackage:e,"should-stream":s.shouldStream,onStreamingComplete:s=>a.updateCardStreamingState(e,t)},null,8,["nodePackage","should-stream","onStreamingComplete"]))),128))])):(0,o.createCommentVNode)("v-if",!0)])}],["__scopeId","data-v-02e3a116"]]);const At={key:0,class:"guide-resources"},Tt={class:"section-title"},Pt={key:0,class:"resources-grid"},_t=["href"],Mt=["src","alt"],Ot={class:"resource-info"},Lt={class:"resource-title"},Rt={key:0,class:"resource-url"};var Ut={name:"StandardResourceCard",components:{StreamableContent:Ue},props:{resource:{type:Object,required:!0},shouldStream:{type:Boolean,required:!1,default:!1}},emits:["streaming-complete"],data(){return{resourceUrl:this.resource.metadata?.streamable.source||this.resource.streamable.url,resourceTitle:{...this.resource.title},resourceMetadataSource:this.resource.metadata?.source}},computed:{favIconUrl(){const e=this.resourceUrl;try{return`https://www.google.com/s2/favicons?domain=${new URL(e).hostname}`}catch(e){return""}},urlWithUtmTracking(){const e=this.resourceUrl;try{const t=new URL(e);return t.searchParams.set("utm_source","flowfuse-expert"),t.searchParams.set("utm_medium","assistant"),t.searchParams.set("utm_campaign","expert-chat"),t.toString()}catch(t){return e}}},watch:{resourceTitle(e){e.streamed&&this.$emit("streaming-complete")}},methods:{handleImageError(e){e.target.style.display="none"}}},Dt={name:"ListResources",components:{StreamableContent:Ue,StandardResourceCard:(0,I.A)(Ut,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,null,[(0,o.createCommentVNode)(" todo clean resource.url references after transitioning to v4 api "),(0,o.createElementVNode)("a",{href:r.urlWithUtmTracking,target:"_blank",rel:"noopener noreferrer",class:"resource-card"},[(0,o.createElementVNode)("img",{src:r.favIconUrl,alt:s.resource.type,class:"resource-icon",onError:t[0]||(t[0]=(...e)=>r.handleImageError&&r.handleImageError(...e))},null,40,Mt),(0,o.createElementVNode)("div",Ot,[(0,o.createElementVNode)("div",Lt,[(0,o.createVNode)(l,{modelValue:n.resourceTitle,"onUpdate:modelValue":t[1]||(t[1]=e=>n.resourceTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),!s.shouldStream||n.resourceTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("div",Rt,[n.resourceMetadataSource?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,modelValue:n.resourceMetadataSource,"onUpdate:modelValue":t[2]||(t[2]=e=>n.resourceMetadataSource=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])):s.resource.url?((0,o.openBlock)(),(0,o.createBlock)(l,{key:1,string:n.resourceUrl,"should-stream":s.shouldStream},null,8,["string","should-stream"])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)])],8,_t)],2112)}],["__scopeId","data-v-9429e64c"]])},props:{resources:{type:Array,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,updateCardStreamingState:t,visibleItems:s,items:o}},data(){return{resourceTitle:{streamable:"Related Resources",streamed:!1}}},async mounted(){const e=this.resources.map(e=>({title:e.title,url:e.url,metadata:e.metadata}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},Ft=(0,I.A)(Dt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content"),i=(0,o.resolveComponent)("StandardResourceCard");return s.resources&&s.resources.length>0?((0,o.openBlock)(),(0,o.createElementBlock)("div",At,[(0,o.createElementVNode)("h4",Tt,[(0,o.createVNode)(l,{modelValue:n.resourceTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.resourceTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),!s.shouldStream||n.resourceTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("div",Pt,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:t,resource:e,"should-stream":s.shouldStream,onStreamingComplete:s=>a.updateCardStreamingState(e,t)},null,8,["resource","should-stream","onStreamingComplete"]))),128))])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)}],["__scopeId","data-v-3c3ee9c0"]]),$t={name:"RichContent",components:{StreamableContent:Ue},props:{content:{required:!0,type:String},messageUuid:{required:!0,type:String},answerUuid:{required:!0,type:String},shouldStream:{required:!0,type:Boolean}},emits:["streaming-complete"],setup(){const{text:e,isStreaming:t,stream:s,stop:o}=Le({delayMs:30});return{sanitize:P.aj,text:e,isStreaming:t,stream:s,stop:o}},async mounted(){this.shouldStream||await this.onStreamComplete()},methods:{...(0,r.i0)(se.useProductExpertStore,["updateAnswerStreamedState"]),async onStreamComplete(){await this.updateAnswerStreamedState({messageUuid:this.messageUuid,answerUuid:this.answerUuid}),this.$emit("streaming-complete")}}},Ht=(0,I.A)($t,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createBlock)(l,{string:s.content,"should-stream":s.shouldStream,"rich-content":!0,onStreamingComplete:r.onStreamComplete},null,8,["string","should-stream","onStreamingComplete"])}]]);const zt={class:"suggestions"},qt={key:0};var Wt={name:"SuggestionsList",components:{StreamableContent:Ue,InformationCircleIcon:s(82218).A},props:{suggestions:{type:Array,required:!0},shouldStream:{type:Boolean,default:!1}},emits:["streaming-complete"],setup(){const{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}=Se();return{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}},data(){return{streamingTitle:{streamable:"Suggestions",streamed:!1}}},async mounted(){const e=this.suggestions.map(e=>({content:e}));await this.initStreamer(e,{shouldStream:this.shouldStream}),this.$emit("streaming-complete")}},jt={name:"AnswerWrapper",components:{SuggestionsList:(0,I.A)(Wt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("information-circle-icon"),i=(0,o.resolveComponent)("streamable-content");return(0,o.openBlock)(),(0,o.createElementBlock)("div",zt,[(0,o.createElementVNode)("h4",null,[(0,o.createVNode)(l,{class:"ff-icon"}),(0,o.createVNode)(i,{modelValue:n.streamingTitle,"onUpdate:modelValue":t[0]||(t[0]=e=>n.streamingTitle=e),"should-stream":s.shouldStream},null,8,["modelValue","should-stream"])]),!s.shouldStream||n.streamingTitle.streamed?((0,o.openBlock)(),(0,o.createElementBlock)("ul",qt,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)("li",{key:t},[(0,o.createVNode)(i,{"rich-content":!0,string:e.content.streamable,"should-stream":s.shouldStream,onStreamingComplete:e=>a.setSubItemStreamedState(t,"content")},null,8,["string","should-stream","onStreamingComplete"])]))),128))])):(0,o.createCommentVNode)("v-if",!0)])}],["__scopeId","data-v-472ccb19"]]),RichContent:Ht,PackagesList:It,FlowsList:nt,AnswerBadge:be,ResourcesList:Ft,GuideStepsList:ht,MessageBubble:He,GuideHeader:Fe,IssuesList:kt},props:{answer:{type:Object,required:!0},messageUuid:{type:String,required:!0}},emits:["streaming-complete"],setup(){const{waitFor:e}=(0,ke.A)();return{waitFor:e}},data(){return{componentStreamingOrder:[],streamedComponents:[]}},computed:{...(0,r.aH)(F.u,["supportedActions"]),...(0,r.aH)(se.useProductExpertStore,["agentMode"]),hasGuideHeader(){return!(!this.answer.title||this.isChatAnswer)},hasGuideSteps(){return Object.hasOwnProperty.call(this.answer,"steps")&&this.answer.steps.length>0},hasResources(){return Object.hasOwnProperty.call(this.answer,"resources")&&this.answer.resources.length>0},hasNodePackages(){return this.answer.nodePackages&&this.answer.nodePackages.length>0},hasFlows(){return this.answer.flows&&this.answer.flows.length>0},hasSuggestions(){return this.answer.suggestions&&this.answer.suggestions.length>0},hasIssues(){return this.answer.issues&&this.answer.issues.length>0},hasPlainContent(){return this.answer.content&&this.answer.content.length>0},isChatAnswer(){return!Object.hasOwnProperty.call(this.answer,"kind")||"chat"===this.answer.kind},isEditorContext(){return this.$route?.name?.includes("editor")||!1},shouldShowRichContent(){const e="rich-content";return!!this.componentStreamingOrder.includes(e)&&!!this.hasPlainContent&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowGuideHeader(){const e="guide-header";return!!this.componentStreamingOrder.includes(e)&&!!this.hasGuideHeader&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowGuideStepList(){const e="guide-steps-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasGuideSteps&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowResourcesList(){const e="resources-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasResources&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowFlowsList(){const e="flows-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasFlows&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowPackagesList(){const e="packages-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasNodePackages&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowSuggestionsList(){const e="suggestions-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasSuggestions&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldShowIssuesList(){const e="issues-list";return!!this.componentStreamingOrder.includes(e)&&!!this.hasIssues&&(0===this.componentStreamingOrder.indexOf(e)||this.streamedComponents.length>=this.componentStreamingOrder.indexOf(e))},shouldStream(){return!this.answer._streamed}},watch:{streamedComponents(){this.componentStreamingOrder.length===this.streamedComponents.length&&(this.updateAnswerStreamedState({messageUuid:this.messageUuid,answerUuid:this.answer._uuid}),this.$emit("streaming-complete"))}},beforeUnmount(){this.updateAnswerStreamedState({messageUuid:this.messageUuid,answerUuid:this.answer._uuid,agent:this.agentMode}),this.isEditorContext&&this.$refs.messageBubble.$el.removeEventListener("click",this.handleClick)},mounted(){this.buildStreamingOrder(),this.isEditorContext&&this.$refs.messageBubble.$el.addEventListener("click",this.handleClick)},methods:{...(0,r.i0)(se.useProductExpertStore,["updateAnswerStreamedState"]),buildStreamingOrder(){this.hasPlainContent&&this.componentStreamingOrder.push("rich-content"),this.hasGuideHeader&&this.componentStreamingOrder.push("guide-header"),this.hasGuideSteps&&this.componentStreamingOrder.push("guide-steps-list"),this.hasResources&&this.componentStreamingOrder.push("resources-list"),this.hasFlows&&this.componentStreamingOrder.push("flows-list"),this.hasNodePackages&&this.componentStreamingOrder.push("packages-list"),this.hasIssues&&this.componentStreamingOrder.push("issues-list"),this.hasSuggestions&&this.componentStreamingOrder.push("suggestions-list")},async onComponentComplete(e){this.shouldStream||await this.waitFor(200),this.streamedComponents.push(e)},handleClick(e){const t=e.target;if(!this.isEditorContext)return;if(!t)return;if("A"!==t.nodeName)return;if(!t.classList.contains("assistant-action-link"))return;if(!t.getAttribute("data-assistant-action-href"))return;if(!t.getAttribute("data-action"))return;const s=t.getAttribute("data-action"),o=this.supportedActions?.[s];if(!o)return;e.preventDefault(),e.stopPropagation();const a={};for(const e of t.attributes)if(e.name.startsWith("data-param-")){const t=e.name.replace("data-param-",""),s=o.params?.properties?.[t];if(!s)continue;const n=s.type;let r=e.value;"boolean"===n?r="true"===r:"number"===n&&(r=+r),a[t]=r}(0,F.u)().invokeAction({action:s,params:a})}}},Gt=(0,I.A)(jt,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("answer-badge"),i=(0,o.resolveComponent)("rich-content"),c=(0,o.resolveComponent)("guide-header"),d=(0,o.resolveComponent)("guide-steps-list"),m=(0,o.resolveComponent)("resources-list"),u=(0,o.resolveComponent)("flows-list"),p=(0,o.resolveComponent)("packages-list"),h=(0,o.resolveComponent)("issues-list"),g=(0,o.resolveComponent)("suggestions-list"),f=(0,o.resolveComponent)("message-bubble");return(0,o.openBlock)(),(0,o.createBlock)(f,{ref:"messageBubble",type:"ai"},{default:(0,o.withCtx)(()=>[r.isChatAnswer?(0,o.createCommentVNode)("v-if",!0):((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,kind:s.answer.kind},null,8,["kind"])),r.shouldShowRichContent?((0,o.openBlock)(),(0,o.createBlock)(i,{key:1,content:s.answer.content,"message-uuid":s.messageUuid,"answer-uuid":s.answer._uuid,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[0]||(t[0]=e=>r.onComponentComplete("rich-content"))},null,8,["content","message-uuid","answer-uuid","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowGuideHeader?((0,o.openBlock)(),(0,o.createBlock)(c,{key:2,title:s.answer.title,summary:s.answer.summary,"should-stream":r.shouldStream,class:"mt-3",onStreamingComplete:t[1]||(t[1]=e=>r.onComponentComplete("guide-header"))},null,8,["title","summary","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowGuideStepList?((0,o.openBlock)(),(0,o.createBlock)(d,{key:3,steps:s.answer.steps,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[2]||(t[2]=e=>r.onComponentComplete("guide-steps-list"))},null,8,["steps","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowResourcesList?((0,o.openBlock)(),(0,o.createBlock)(m,{key:4,resources:s.answer.resources,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[3]||(t[3]=e=>r.onComponentComplete("resources-list"))},null,8,["resources","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowFlowsList?((0,o.openBlock)(),(0,o.createBlock)(u,{key:5,flows:s.answer.flows,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[4]||(t[4]=e=>r.onComponentComplete("flows-list"))},null,8,["flows","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowPackagesList?((0,o.openBlock)(),(0,o.createBlock)(p,{key:6,packages:s.answer.nodePackages,"should-stream":r.shouldStream,class:"mb-3",onStreamingComplete:t[5]||(t[5]=e=>r.onComponentComplete("packages-list"))},null,8,["packages","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowIssuesList?((0,o.openBlock)(),(0,o.createBlock)(h,{key:7,issues:s.answer.issues,"should-stream":r.shouldStream,onStreamingComplete:t[6]||(t[6]=e=>r.onComponentComplete("issues-list"))},null,8,["issues","should-stream"])):(0,o.createCommentVNode)("v-if",!0),r.shouldShowSuggestionsList?((0,o.openBlock)(),(0,o.createBlock)(g,{key:8,suggestions:s.answer.suggestions,"should-stream":r.shouldStream,onStreamingComplete:t[7]||(t[7]=e=>r.onComponentComplete("suggestions-list"))},null,8,["suggestions","should-stream"])):(0,o.createCommentVNode)("v-if",!0)]),_:1},512)}]]);const Jt={class:"ff-expert-tool-call"},Kt={class:"ff-expert-tool-call--count"},Zt={class:"ff-expert-tool-call--duration"},Yt={class:"ff-expert-tool-call--body"},Qt={class:"ff-expert-tool-call--title"},Xt={class:"ff-expert-tool-call--name"},es=["title"],ts={key:0,class:"ff-expert-tool-call--details"},ss={key:0,class:"ff-expert-tool-call--section"},os=["onClick"],as={key:0,class:"ff-expert-tool-call--code"},ns=["innerHTML"],rs={key:1,class:"ff-expert-tool-call--section"},ls=["onClick"],is={class:"ff-expert-tool-call--section-duration"},cs={key:0,class:"ff-expert-tool-call--code"},ds=["innerHTML"];var ms=s(80207);Be.A.registerLanguage("json",Ie.A);var us={name:"ToolCalls",components:{ChevronRightIcon:ms.A},props:{message:{type:Object,required:!0,validator:e=>Array.isArray(e.toolCalls)}},data(){return{expanded:!1,expandedSections:{}}},computed:{toolCalls(){return this.message.toolCalls||[]},toolCallCount(){return this.toolCalls.length},formattedDuration(){const e=this.message.duration;if(null==e)return 0;const t="string"==typeof e?parseFloat(e):e;return Math.round(1e3*t)}},methods:{toggleExpanded(){this.expanded=!this.expanded},toggleSection(e,t){const s=`${e}-${t}`,o=this.isSectionExpanded(e,t);this.expandedSections[s]=!o},isSectionExpanded(e,t){const s=`${e}-${t}`;return s in this.expandedSections?this.expandedSections[s]:"input"===t},formatKindBadge(e){return{mcp_tool:"T",mcp_resource:"R",mcp_resource_template:"RT",mcp_prompt:"P"}[e]||"?"},formatKindFull(e){return{mcp_tool:"MCP Tool",mcp_resource:"MCP Resource",mcp_resource_template:"MCP Resource Template",mcp_prompt:"MCP Prompt"}[e]||e||"Unknown"},hasContent(e){return null!=e&&(Array.isArray(e)?e.length>0:"object"==typeof e?Object.keys(e).length>0:"string"!=typeof e||""!==e.trim())},highlightJson(e){let t;if("string"==typeof e)try{t=JSON.stringify(JSON.parse(e),null,2)}catch{t=e}else t=JSON.stringify(e,null,2);return Be.A.highlight(t,{language:"json"}).value}}},ps={name:"AiMessage",components:{ToolCalls:(0,I.A)(us,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("ChevronRightIcon");return(0,o.openBlock)(),(0,o.createElementBlock)("div",Jt,[(0,o.createElementVNode)("div",{class:"ff-expert-tool-call--header",onClick:t[0]||(t[0]=(...e)=>r.toggleExpanded&&r.toggleExpanded(...e))},[(0,o.createVNode)(l,{class:(0,o.normalizeClass)(["ff-icon",{rotated:n.expanded}])},null,8,["class"]),(0,o.createElementVNode)("span",Kt,(0,o.toDisplayString)(r.toolCallCount)+" tool call"+(0,o.toDisplayString)(r.toolCallCount>1?"s":""),1),(0,o.createElementVNode)("span",Zt,(0,o.toDisplayString)(r.formattedDuration)+" ms ",1)]),(0,o.createElementVNode)("div",Yt,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(r.toolCalls,e=>((0,o.openBlock)(),(0,o.createElementBlock)("div",{key:e.id,class:"ff-expert-tool-call--item"},[(0,o.createElementVNode)("div",Qt,(0,o.toDisplayString)(e.title||e.name),1),(0,o.createElementVNode)("div",Xt,[(0,o.createElementVNode)("span",{class:"ff-expert-tool-call--badge",title:r.formatKindFull(e.kind)},(0,o.toDisplayString)(r.formatKindBadge(e.kind)),9,es),(0,o.createTextVNode)(" "+(0,o.toDisplayString)(e.name),1)]),n.expanded?((0,o.openBlock)(),(0,o.createElementBlock)("div",ts,[(0,o.createCommentVNode)(" Input section (collapsible, expanded by default) "),r.hasContent(e.args)?((0,o.openBlock)(),(0,o.createElementBlock)("div",ss,[(0,o.createElementVNode)("div",{class:"ff-expert-tool-call--section-header",onClick:(0,o.withModifiers)(t=>r.toggleSection(e.id,"input"),["stop"])},[(0,o.createVNode)(l,{class:(0,o.normalizeClass)(["ff-icon-small",{rotated:r.isSectionExpanded(e.id,"input")}])},null,8,["class"]),t[1]||(t[1]=(0,o.createElementVNode)("span",{class:"ff-expert-tool-call--section-label"},"Input",-1))],8,os),r.isSectionExpanded(e.id,"input")?((0,o.openBlock)(),(0,o.createElementBlock)("div",as,[(0,o.createCommentVNode)(" eslint-disable-next-line vue/no-v-html "),(0,o.createElementVNode)("pre",null,[(0,o.createElementVNode)("code",{innerHTML:r.highlightJson(e.args)},null,8,ns)])])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0),(0,o.createCommentVNode)(" Output section (collapsible, collapsed by default) "),r.hasContent(e.output)?((0,o.openBlock)(),(0,o.createElementBlock)("div",rs,[(0,o.createElementVNode)("div",{class:"ff-expert-tool-call--section-header",onClick:(0,o.withModifiers)(t=>r.toggleSection(e.id,"output"),["stop"])},[(0,o.createVNode)(l,{class:(0,o.normalizeClass)(["ff-icon-small",{rotated:r.isSectionExpanded(e.id,"output")}])},null,8,["class"]),t[2]||(t[2]=(0,o.createElementVNode)("span",{class:"ff-expert-tool-call--section-label"},"Output",-1)),(0,o.createElementVNode)("span",is,(0,o.toDisplayString)(e.durationMs||0)+" ms",1)],8,ls),r.isSectionExpanded(e.id,"output")?((0,o.openBlock)(),(0,o.createElementBlock)("div",cs,[(0,o.createCommentVNode)(" eslint-disable-next-line vue/no-v-html "),(0,o.createElementVNode)("pre",null,[(0,o.createElementVNode)("code",{innerHTML:r.highlightJson(e.output)},null,8,ds)])])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)])):(0,o.createCommentVNode)("v-if",!0)]))),128))])])}],["__scopeId","data-v-3f750f09"]]),AnswerWrapper:Gt},props:{query:{type:String,required:!1,default:null},answer:{type:Object,required:!0},timings:{required:!1,default:null,type:Object},_type:{type:String,required:!0},_timestamp:{required:!0,type:Number},_uuid:{required:!0,type:String},_streamed:{required:!0,type:Boolean}},setup(){const{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}=Se({shallow:!0});return{initStreamer:e,setSubItemStreamedState:t,visibleItems:s,items:o}},computed:{toolCalls(){const e=this.answer.filter(e=>["mcp_tool","mcp_resource","mcp_resource_template","mcp_prompt"].includes(e.kind));if(e.length>0){const t=e.map(e=>({id:e.toolId,name:e.toolName,title:e.toolTitle||e.toolName,kind:e.kind,args:e.input,output:e.output,durationMs:e.durationMs}));return{type:"ai",kind:"tool_calls",toolCalls:t,duration:(e.reduce((e,t)=>e+(t.durationMs||0),0)/1e3).toFixed(2),content:`${t.length} tool call(s)`,timestamp:Date.now()}}return null},filteredAnswers(){return this.answer.filter(e=>!["mcp_tool","mcp_resource","mcp_resource_template","mcp_prompt"].includes(e.kind))}},async mounted(){await this.initStreamer(this.filteredAnswers,{shouldStream:!this._streamed})},methods:{slugify:P.Yv}},hs=(0,I.A)(ps,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("tool-calls"),i=(0,o.resolveComponent)("answer-wrapper");return(0,o.openBlock)(),(0,o.createElementBlock)("div",fe,[r.toolCalls?((0,o.openBlock)(),(0,o.createBlock)(l,{key:0,message:r.toolCalls},null,8,["message"])):(0,o.createCommentVNode)("v-if",!0),((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(a.visibleItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(i,{key:r.slugify(`${e.kind}-${e.title}-${e.summary}-${e._uuid}`),"message-uuid":s._uuid,answer:e,onStreamingComplete:e=>a.setSubItemStreamedState(t)},null,8,["message-uuid","answer","onStreamingComplete"]))),128))])}]]),gs={name:"HumanMessage",components:{MessageBubble:He},props:{content:{required:!0,type:String},_timestamp:{required:!0,type:Number},_type:{required:!0,type:String}}},fs=(0,I.A)(gs,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("message-bubble");return(0,o.openBlock)(),(0,o.createBlock)(l,{type:"human"},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(s.content),1)]),_:1})}]]),ks={name:"SystemMessage",components:{MessageBubble:He},props:{_type:{type:String,required:!0},_variant:{type:String,required:!0},message:{type:String,required:!0},_timestamp:{type:Number,required:!0}}},Ss=(0,I.A)(ks,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("message-bubble");return(0,o.openBlock)(),(0,o.createBlock)(l,{type:"system",variant:s._variant},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(s.message),1)]),_:1},8,["variant"])}]]),vs={name:"ExpertMessages",components:{ExpertLoadingIndicator:ge},emits:["resizing"],data(){return{resizeObserver:null,lastHeight:null}},computed:{...(0,r.aH)(se.useProductExpertStore,["messages","isWaitingForResponse"]),messageTypes(){return{ai:(0,o.markRaw)(hs),human:(0,o.markRaw)(fs),system:(0,o.markRaw)(Ss)}}},mounted(){this.mountResizeObserver()},beforeUnmount(){this.unmountResizeObserver()},methods:{mountResizeObserver(){const e=this.$refs.messagesWrapper;e&&(this.lastHeight=e.offsetHeight,this.resizeObserver=new ResizeObserver(([e])=>{const t=e.contentRect.height;t!==this.lastHeight&&(this.lastHeight=t,this.$emit("resizing"))}),this.resizeObserver.observe(e))},unmountResizeObserver(){this.resizeObserver?.disconnect()}}},Cs=(0,I.A)(vs,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("expert-loading-indicator");return(0,o.openBlock)(),(0,o.createElementBlock)("div",ie,[(0,o.createElementVNode)("ul",ce,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.messages,e=>((0,o.openBlock)(),(0,o.createElementBlock)("li",{key:e._uuid,class:"flex flex-col gap-3"},[r.messageTypes[e._type]?((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(r.messageTypes[e._type]),(0,o.mergeProps)({key:0,ref_for:!0},{...e}),null,16)):(0,o.createCommentVNode)("v-if",!0)]))),128)),e.isWaitingForResponse?((0,o.openBlock)(),(0,o.createElementBlock)("li",de,[(0,o.createVNode)(l)])):(0,o.createCommentVNode)("v-if",!0)])],512)}],["__scopeId","data-v-46bc14ac"]]),bs={name:"ExpertModeSwitcher",components:{ToggleButtonGroup:s(53644).A},props:{isFloating:{required:!1,type:Boolean,default:!1}},computed:{...(0,r.aH)(se.useProductExpertStore,["agentMode"]),agentModeButtons(){return[{title:"Support",value:"support-agent"},{title:"Insights",value:"insights-agent"}]},agentModeWrapper:{get(){return this.agentMode},set(e){this.setAgentMode(e)}}},methods:{...(0,r.i0)(se.useProductExpertStore,["setAgentMode"])}},xs=(0,I.A)(bs,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("toggle-button-group");return(0,o.openBlock)(),(0,o.createElementBlock)("div",{class:(0,o.normalizeClass)({"mode-switcher-floating":s.isFloating})},[(0,o.createVNode)(l,{modelValue:r.agentModeWrapper,"onUpdate:modelValue":t[0]||(t[0]=e=>r.agentModeWrapper=e),buttons:r.agentModeButtons,"uses-links":!1,"visually-hide-title":!0},null,8,["modelValue","buttons"])],2)}],["__scopeId","data-v-e2cddf22"]]);const ws={class:"info-banner"},ys={key:0,class:"info-text"},Vs={key:1,class:"info-text"};var Bs={name:"InfoBanner",computed:{...(0,r.aH)(se.useProductExpertStore,["isSupportAgent","isInsightsAgent"])}},Es=(0,I.A)(Bs,[["render",function(e,t,s,a,n,r){return(0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,null,[(0,o.createCommentVNode)(" Info Banner "),(0,o.createElementVNode)("div",ws,[e.isSupportAgent?((0,o.openBlock)(),(0,o.createElementBlock)("p",ys,[...t[0]||(t[0]=[(0,o.createTextVNode)(" AI agent has access to all of FlowFuse's ",-1),(0,o.createElementVNode)("a",{href:"https://flowfuse.com/docs",target:"_blank",rel:"noopener noreferrer",class:"info-link"},"documentation and knowledge",-1),(0,o.createTextVNode)(", ",-1),(0,o.createElementVNode)("a",{href:"https://flowfuse.com/blog",target:"_blank",rel:"noopener noreferrer",class:"info-link"},"blogposts",-1),(0,o.createTextVNode)(", and more. ",-1)])])):(0,o.createCommentVNode)("v-if",!0),e.isInsightsAgent?((0,o.openBlock)(),(0,o.createElementBlock)("p",Vs,[...t[1]||(t[1]=[(0,o.createElementVNode)("span",{title:"This feature is still under development",class:"beta-badge"},"BETA",-1),(0,o.createTextVNode)(" AI agent can access ",-1),(0,o.createElementVNode)("a",{href:"https://flowfuse.com/node-red/flowfuse/mcp/",target:"_blank",rel:"noopener noreferrer",class:"info-link"},"MCP server tools",-1),(0,o.createTextVNode)(" configured in your hosted Node-RED instances. ",-1)])])):(0,o.createCommentVNode)("v-if",!0)])],2112)}],["__scopeId","data-v-73a526c1"]]);const Ns={class:"update-banner-text update-banner-header flex items-center justify-between"},Is=["title"],As={class:"update-banner-badge ml-4 flex-shrink-0"},Ts={class:"update-banner-text update-banner-body",tabindex:"0"},Ps={class:"mb-2"},_s={class:"flex justify-end"};var Ms=s(99589),Os=s.n(Ms);const Ls="0.11.0";var Rs={name:"UpdateBanner",computed:{...(0,r.aH)(F.u,["palette","editorState","version","nodeRedVersion","supportedActions","isEditorRunning"]),assistantLoaded(){return!!(this.version||this.nodeRedVersion||this.palette)},assistantPackage(){return this.palette&&0!==Object.keys(this.palette).length?this.palette?.["@flowfuse/nr-assistant"]?{installed:!0,...this.palette["@flowfuse/nr-assistant"]}:{installed:!1}:null},availableUpdate(){return Array.isArray(this.editorState?.updatesAvailable?.palette)?this.editorState?.updatesAvailable?.palette?.find(e=>"@flowfuse/nr-assistant"===e.package):null},assistantState(){if(!this.version||Os().lt(this.version,"0.10.1"));else if(!this.isEditorRunning)return{show:!1};const e=!1!==this.assistantPackage?.enabled,t=this.assistantPackage?.installed??this.assistantLoaded,s=(t?this.assistantPackage?.version:"")||this.version||"0.0.0",o=Os().gte(this.nodeRedVersion||"0.0.0","4.1.6")&&!!this.availableUpdate;let a=!!this.availableUpdate?.latest;this.assistantLoaded&&!o&&(a=Os().lt(s,Ls));const n={show:!t||!e||a,statusClass:"",expectedVersion:this.availableUpdate?.latest||Ls,installedVersion:s,installed:t,enabled:e,chip:"",title:"",body:"",buttonText:"",buttonAction:null};return t?e?a?(n.statusClass="",n.chip=this.availableUpdate?.latest?`V${this.availableUpdate.latest} available`:"Update available",n.title="New FlowFuse Expert Version Available",n.body="There is an update available for FlowFuse Expert in the Node-RED palette. Please update to the latest version to enjoy new features and improvements.",n.buttonText="Update...",n.buttonAction=this.manageAssistantPackage):n.show=!1:(n.statusClass="warning",n.chip="Not enabled",n.title="FlowFuse Expert Not Enabled",n.body="FlowFuse Expert is installed but not enabled in the Node-RED palette. Please enable it to access its features.",n.buttonText="Enable...",n.buttonAction=this.manageAssistantPackage):(n.statusClass="warning",n.chip="Not installed",n.title="FlowFuse Expert Not Installed",n.body="FlowFuse Expert is not installed in the Node-RED palette. Please install it to access its features.",n.buttonText="Install...",n.buttonAction=this.installAssistantPackage),n}},methods:{...(0,r.i0)(F.u,["manageNodePackage","installNodePackage"]),onButtonClick(){"function"==typeof this.assistantState?.buttonAction&&this.assistantState.buttonAction()},manageAssistantPackage(){this.manageNodePackage("@flowfuse/nr-assistant")},installAssistantPackage(){this.installNodePackage("@flowfuse/nr-assistant")}}},Us={name:"ExpertPanel",components:{ExpertModeSwitcher:xs,InfoBanner:Es,ExpertMessages:Cs,ExpertChatInput:le,UpdateBanner:(0,I.A)(Rs,[["render",function(e,t,s,a,n,r){const l=(0,o.resolveComponent)("ff-button");return r.assistantState.show?((0,o.openBlock)(),(0,o.createElementBlock)("div",{key:0,class:(0,o.normalizeClass)(["info-banner update-banner",r.assistantState.statusClass])},[(0,o.createElementVNode)("div",Ns,[(0,o.createElementVNode)("span",{class:"truncate flex-1 pr-4",title:r.assistantState.title},(0,o.toDisplayString)(r.assistantState.title),9,Is),(0,o.createElementVNode)("span",As,(0,o.toDisplayString)(r.assistantState.chip),1)]),(0,o.createElementVNode)("div",Ts,[(0,o.createElementVNode)("p",Ps,(0,o.toDisplayString)(r.assistantState.body),1),(0,o.createElementVNode)("div",_s,[(0,o.createVNode)(l,{kind:"secondary",size:"small",onClick:r.onButtonClick},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(r.assistantState.buttonText),1)]),_:1},8,["onClick"])])])],2)):(0,o.createCommentVNode)("v-if",!0)}],["__scopeId","data-v-5cb9ca11"]])},inject:{togglePinWithWidth:{from:"togglePinWithWidth",default:()=>()=>{}}},props:{instance:{type:Object,required:!1,default:null},device:{type:Object,required:!1,default:null}},data(){return{scrollCheckDebounce:null,autoScroll:!0}},computed:{...(0,r.aH)(se.useProductExpertStore,["abortController","agentMode","messages","isInsightsAgent"]),...(0,r.aH)(ne.W,{isPinned:e=>e.rightDrawer.fixed}),...(0,l.aH)("account",["features"]),isEditorContext(){return this.$route?.name?.includes("editor")||!1},isInsightsModeEnabled(){return!!this.features.expertInsights},agentModeWrapper:{get(){return this.agentMode},set(e){this.setAgentMode(e)}},isInstanceRunning(){const e="running"===this.instance?.meta?.state,t="running"===this.device?.status;return e||t}},watch:{agentMode:{immediate:!0,async handler(){this.isInsightsAgent&&await this.getCapabilities(),this.addWelcomeMessageIfNeeded()}},"instance.meta.state":{handler(e){this.isEditorContext&&"running"!==e&&this.reset()}},"device.status":{handler(e){this.isEditorContext&&"running"!==e&&this.reset()}}},mounted(){this.isEditorContext&&setTimeout(()=>{this.addWelcomeMessageIfNeeded()},1e3)},beforeUnmount(){this.scrollCheckDebounce&&clearTimeout(this.scrollCheckDebounce),this.resetSessionTimer()},methods:{...(0,r.i0)(se.useProductExpertStore,["setAgentMode","setAbortController","resetSessionTimer","addWelcomeMessageIfNeeded"]),...(0,r.i0)(E.W,["getCapabilities"]),...(0,r.i0)(F.u,["reset"]),handleStopGeneration(){this.abortController&&(this.abortController.abort(),this.setAbortController(null))},handleScroll(){this.scrollCheckDebounce&&clearTimeout(this.scrollCheckDebounce),this.scrollCheckDebounce=setTimeout(()=>{const e=this.$refs.messagesContainer;if(!e)return;const t=e.scrollHeight-e.scrollTop-e.clientHeight<100;t&&!this.autoScroll?this.autoScroll=!0:!t&&this.autoScroll&&(this.autoScroll=!1)},100)},scrollToBottom(){this.autoScroll&&this.$nextTick(()=>{if(this.$refs.scrollAnchor){const e=this.$refs.messagesContainer;if(!e)return;e.scrollTo({top:e.scrollHeight,behavior:"smooth"})}})}}},Ds=(0,I.A)(Us,[["render",function(e,t,s,r,l,i){const c=(0,o.resolveComponent)("expert-mode-switcher"),d=(0,o.resolveComponent)("info-banner"),m=(0,o.resolveComponent)("expert-messages"),u=(0,o.resolveComponent)("update-banner"),p=(0,o.resolveComponent)("expert-chat-input");return(0,o.openBlock)(),(0,o.createElementBlock)("div",a,[i.isInsightsModeEnabled&&i.isEditorContext?((0,o.openBlock)(),(0,o.createBlock)(c,{key:0,isFloating:!0})):(0,o.createCommentVNode)("v-if",!0),(0,o.createElementVNode)("div",{ref:"messagesContainer",class:(0,o.normalizeClass)(["messages-container",{"has-mode-switcher":i.isInsightsModeEnabled&&i.isEditorContext}]),onScroll:t[0]||(t[0]=(...e)=>i.handleScroll&&i.handleScroll(...e))},[(0,o.createVNode)(d),(0,o.createVNode)(m,{onResizing:i.scrollToBottom},null,8,["onResizing"]),(0,o.createElementVNode)("div",n,null,512)],34),(0,o.createCommentVNode)(" Updates Available Banner "),i.isEditorContext&&i.isInstanceRunning?((0,o.openBlock)(),(0,o.createBlock)(u,{key:1})):(0,o.createCommentVNode)("v-if",!0),(0,o.createVNode)(p,{onStop:i.handleStopGeneration},null,8,["onStop"])])}],["__scopeId","data-v-42cbd071"]])}}]);
|