n8n-editor-ui
Version:
Workflow Editor UI for n8n
2 lines • 28.6 kB
JavaScript
!function(){try{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).SENTRY_RELEASE={id:"n8n@2.16.1"}}catch(e){}}(),System.register(["./vue.runtime.esm-bundler-legacy-BW6xDdqj.js","./core-legacy-VD8c7QJ-.js","./src-legacy-B67uuxhB.js","./_plugin-vue_export-helper-legacy-DFdC_I5Z.js","./users.store-legacy-azRUgFdP.js","./constants-legacy-2_ytuuS3.js","./useRootStore-legacy-CC08el-l.js","./settings.store-legacy-I6rZOvfF.js","./pushConnection.store-legacy-idli-hOS.js","./constants-legacy-BcVFPXMl.js","./instanceAiSettings.store-legacy-BVDHqlQ1.js"],(function(e,t){var n,a,r,s,o,i,l,d,u,c,f,g,p,v,y,I,h,m,w,b,_,x,S,k,C,T,A,E,R,B,z,D,$,G,M,L,F,j,N,O,Q,P,U,q,H,W,Y,J,Z,K,V,X,ee;async function te(e){return await M(e,"GET","/instance-ai/threads")}async function ne(e,t,n,a){const r=new URLSearchParams;void 0!==n&&r.set("limit",String(n)),void 0!==a&&r.set("page",String(a));const s=r.toString();return await M(e,"GET",`/instance-ai/threads/${t}/messages${s?`?${s}`:""}`)}function ae(e,t){if(E(t))return e.messages.find((e=>e.messageGroupId===t||e.runId===t))}function re(e,t){if(e?.agentTree)return se(e.agentTree,t)}function se(e,t){if(e.agentId===t)return e;for(const n of e.children){const e=se(n,t);if(e)return e}}function oe(e,t,n){if(!E(t))return R(n);let a=e.runStateByGroupId[t];return a||(a=R(n),e.runStateByGroupId[t]=a),a}function ie(e,t,n){E(t)&&E(n)&&(e.groupIdByRunId[t]=n)}function le(e,t){e.agentTree&&de(e.agentTree,t)||(e.agentTree=T(t))}function de(e,t){const n=t.agentsById[e.agentId];if(!n)return!1;const a=t.childrenByAgentId[e.agentId]??[],r=t.toolCallIdsByAgentId[e.agentId]??[],s=t.timelineByAgentId[e.agentId]??[];if(e.children.length!==a.length||e.toolCalls.length!==r.length)return!1;for(let o=0;o<a.length;o++)if(e.children[o].agentId!==a[o])return!1;e.status=n.status,e.textContent=n.textContent,e.reasoning=n.reasoning,e.result=n.result,e.error=n.error,e.tasks=n.tasks,e.kind=n.kind,e.title=n.title,e.subtitle=n.subtitle,e.goal=n.goal,e.targetResource=n.targetResource;for(let o=0;o<r.length;o++){if(!E(r[o]))return!1;const n=t.toolCallsById[r[o]],a=e.toolCalls[o];if(!n||!a||a.toolCallId!==n.toolCallId)return!1;e.toolCalls[o]={...n}}if(e.timeline.length!==s.length)return!1;for(let o=0;o<s.length;o++){const t=e.timeline[o],n=s[o];if(t.type!==n.type)return!1;"text"===t.type&&"text"===n.type&&(t.content=n.content)}for(let o=0;o<a.length;o++)if(!de(e.children[o],t))return!1;return!0}function ue(e,t,n){if(!e.agentTree)return void(e.agentTree=T(t));const a=re(e,n),r=B(t,n);a&&r?(a.status=r.status,a.textContent=r.textContent,a.result=r.result,a.error=r.error,function(e,t){if(e.timeline.length===t.length){if(0===t.length)return!0;for(let r=0;r<t.length;r++)if(e.timeline[r].type!==t[r].type)return!1;const n=e.timeline.at(-1),a=t.at(-1);return"text"===n?.type&&"text"===a?.type&&(n.content=a.content,!0)}if(e.timeline.length+1!==t.length)return!1;for(let a=0;a<e.timeline.length;a++)if(e.timeline[a].type!==t[a].type)return!1;const n=t.at(-1);return"text"===n?.type&&(e.timeline.push({type:"text",content:n.content}),!0)}(a,t.timelineByAgentId[n]??[])?n===t.rootAgentId&&(e.content=r.textContent):le(e,t)):le(e,t)}function ce(e){if(!E(e.agentId))return;const t=R(e.agentId);return fe(t,e,void 0),t.status="active"===e.status?"active":e.status,t}function fe(e,t,n){if(!E(t.agentId))return;e.agentsById[t.agentId]={agentId:t.agentId,role:t.role,tools:t.tools,taskId:t.taskId,kind:t.kind,title:t.title,subtitle:t.subtitle,goal:t.goal,targetResource:t.targetResource,status:t.status,textContent:t.textContent,reasoning:t.reasoning,tasks:t.tasks,result:t.result,error:t.error},n&&E(n)&&(e.parentByAgentId[t.agentId]=n);const a=t.children.filter((e=>E(e.agentId)));e.childrenByAgentId[t.agentId]=a.map((e=>e.agentId)),e.timelineByAgentId[t.agentId]=t.timeline.filter((e=>"child"===e.type?E(e.agentId):"tool-call"!==e.type||E(e.toolCallId)));const r=t.toolCalls.filter((e=>E(e.toolCallId)));e.toolCallIdsByAgentId[t.agentId]=r.map((e=>e.toolCallId));for(const s of r)e.toolCallsById[s.toolCallId]={...s};for(const s of a)fe(e,s,t.agentId)}function ge(e,t){const n=function(e,t){if(!E(t))return t;const n=e.groupIdByRunId[t];return n&&E(n)?n:t}(e,t);return{msg:ae(e,n),runState:e.runStateByGroupId[n],groupId:n}}function pe(e,t){if(e.groupIdByRunId||(e.groupIdByRunId={}),e.runStateByGroupId||(e.runStateByGroupId={}),!function(e){if(!E(e.runId)||!E(e.agentId))return!1;switch(e.type){case"run-start":return!e.payload.messageGroupId||E(e.payload.messageGroupId);case"agent-spawned":return E(e.payload.parentId);case"tool-call":case"tool-result":case"tool-error":case"confirmation-request":return E(e.payload.toolCallId);default:return!0}}(t))return e.activeRunId;if("run-start"!==t.type){const{msg:n,groupId:a}=ge(e,t.runId);if(!n){const n="agent-spawned"===t.type?t.payload.parentId:t.agentId;ie(e,t.runId,a);const r=oe(e,a,n);e.messages.push({id:a,runId:t.runId,messageGroupId:a,role:"assistant",createdAt:(new Date).toISOString(),content:"",reasoning:"",isStreaming:!0,agentTree:T(r)})}}switch(t.type){case"run-start":{const n=t.payload.messageGroupId??t.runId;ie(e,t.runId,n);const a=ae(e,n);if(a){const r=e.runStateByGroupId[n];if(r){r.status="active";const e=B(r,r.rootAgentId);e&&(e.status="active")}return a.runId=t.runId,a.isStreaming=!0,r&&le(a,r),t.runId}const r=oe(e,n,t.agentId);return D(r,t),e.messages.push({id:t.runId,runId:t.runId,messageGroupId:n,role:"assistant",createdAt:(new Date).toISOString(),content:"",reasoning:"",isStreaming:!0,agentTree:T(r)}),t.runId}case"text-delta":{const{msg:n,runState:a}=ge(e,t.runId);return a&&(D(a,t),n&&ue(n,a,t.agentId)),e.activeRunId}case"reasoning-delta":{const{msg:n,runState:a}=ge(e,t.runId);return a&&(D(a,t),n&&function(e,t,n){if(!e.agentTree)return void(e.agentTree=T(t));const a=re(e,n),r=B(t,n);a&&r?(a.status=r.status,a.reasoning=r.reasoning,a.result=r.result,a.error=r.error,n===t.rootAgentId&&(e.reasoning=r.reasoning)):le(e,t)}(n,a,t.agentId)),e.activeRunId}case"tool-call":case"tool-result":case"tool-error":case"agent-spawned":case"agent-completed":case"confirmation-request":case"tasks-update":{const{msg:n,runState:a}=ge(e,t.runId);return a&&(D(a,t),n&&le(n,a)),e.activeRunId}case"error":{const{msg:n,runState:a}=ge(e,t.runId);if(a){if(D(a,t),n){const e=B(a,t.agentId)?t.agentId:a.rootAgentId;ue(n,a,e);const r=re(n,e)??n.agentTree;r&&(r.status="error",r.error=t.payload.content,r.errorDetails={...void 0!==t.payload.statusCode?{statusCode:t.payload.statusCode}:{},...t.payload.provider?{provider:t.payload.provider}:{},...t.payload.technicalDetails?{technicalDetails:t.payload.technicalDetails}:{}})}}else n&&(n.content+="\n\n*Error: "+t.payload.content+"*");return e.activeRunId}case"filesystem-request":case"thread-title-updated":default:return e.activeRunId;case"run-finish":{const{msg:n,runState:a}=ge(e,t.runId);if(a){if(D(a,t),n){n.isStreaming=!1,le(n,a);const{status:e,reason:r}=t.payload;n.agentTree&&"error"!==n.agentTree.status&&"error"===e&&(n.agentTree.status="error"),n.agentTree&&"error"===e&&r&&!n.agentTree.error&&(n.agentTree.error=r)}}else if(n){n.isStreaming=!1;const{status:e,reason:a}=t.payload;"error"===e&&a&&(n.content+="\n\n*Error: "+a+"*")}return null}}}function ve(e,t,n){if("string"==typeof n.name&&"string"==typeof n.id){const a={type:t,id:n.id,name:n.name};"string"==typeof n.createdAt&&(a.createdAt=n.createdAt),"string"==typeof n.updatedAt&&(a.updatedAt=n.updatedAt),"string"==typeof n.projectId&&(a.projectId=n.projectId),e.set(n.name.toLowerCase(),a)}}function ye(e,t){if(!J.has(e.toolName))return;if(!e.result||"object"!=typeof e.result)return;const n=e.result;if(Array.isArray(n.workflows))for(const a of n.workflows)ve(t,"workflow",a);if("string"==typeof n.workflowId){const a="string"==typeof n.workflowName?n.workflowName:"string"==typeof e.args?.name?e.args.name:void 0,r=a??"Untitled",s=a?a.toLowerCase():n.workflowId;t.set(s,{type:"workflow",id:n.workflowId,name:r})}if(n.workflow&&"object"==typeof n.workflow&&ve(t,"workflow",n.workflow),Array.isArray(n.credentials))for(const a of n.credentials)ve(t,"credential",a);if(Array.isArray(n.tables))for(const a of n.tables)ve(t,"data-table",a);if(Array.isArray(n.dataTables))for(const a of n.dataTables)ve(t,"data-table",a);n.table&&"object"==typeof n.table&&ve(t,"data-table",n.table)}function Ie(e,t){for(const n of e.toolCalls)ye(n,t);for(const n of e.children)Ie(n,t)}function he(e){return"active"===e.status||e.children.some((e=>he(e)))}function me(e){return!!e.toolCalls.some((e=>e.isLoading))||e.children.some((e=>me(e)))}function we(e){return!!e.toolCalls.some((e=>e.confirmation&&"pending"===e.confirmationStatus))||e.children.some((e=>we(e)))}function be({messages:e,currentThreadId:t,telemetry:n}){const a=o({}),r=l((()=>{let t=-1;for(let r=e.value.length-1;r>=0;r--)if("assistant"===e.value[r].role){t=r;break}if(-1===t)return null;const n=e.value[t];for(let r=t+1;r<e.value.length;r++)if("user"===e.value[r].role)return null;if(n.isStreaming)return null;const a=n.agentTree;if(a){if(he(a))return null;if(me(a))return null;if(we(a))return null;if("cancelled"===a.status)return null;if("completed"!==a.status&&"error"!==a.status)return null}return n.messageGroupId??n.id}));return{feedbackByResponseId:a,rateableResponseId:r,submitFeedback:function(e,r){E(e)&&(r.rating&&(n.track("Instance AI response rating submitted",{threadId:t.value,responseId:e,helpful:"up"===r.rating}),"up"===r.rating&&(a.value[e]=r)),void 0!==r.feedback&&(n.track("Instance AI response feedback text submitted",{threadId:t.value,responseId:e,feedback:r.feedback}),a.value[e]={...a.value[e],...r}))},resetFeedback:function(){a.value={}}}}function _e(e,t,n,a){for(const r of e.toolCalls)r.confirmation&&r.isLoading&&"approved"!==r.confirmationStatus&&"denied"!==r.confirmationStatus&&!n.has(r.confirmation.requestId)&&"plan-review"!==r.confirmation.inputType&&a.push({toolCall:r,agentNode:e,messageId:t});for(const r of e.children)_e(r,t,n,a)}function xe(e,t){for(const n of e.toolCalls)if(n.confirmation?.requestId===t)return n;for(const n of e.children){const e=xe(n,t);if(e)return e}}function Se(e){for(let t=e.length-1;t>=0;t--){const n=e[t].agentTree?.tasks;if(n)return n}return null}return e({a:async function(e,t){return await M(e,"GET",`/instance-ai/threads/${t}/context`)},c:async function(e,t,n){await M(e,"PUT",`/instance-ai/memory/${t}`,{content:n})},i:async function(e,t){return await M(e,"GET",`/instance-ai/memory/${t}`)},o:ne,s:te}),{setters:[function(e){n=e.$,a=e.A,r=e.C,s=e.E,o=e.Ft,i=e.N,l=e.S,d=e.Sn,u=e.T,c=e.Ut,f=e.Wt,g=e._n,p=e.j,v=e.n,y=e.yn,I=e.yt},function(e){h=e.at,m=e.n},function(e){w=e.Di,b=e.Qi,_=e.Zi},function(e){x=e.t},function(e){S=e.Pn,k=e.fr,C=e.sr},function(e){T=e.Br,A=e.Eo,E=e.Go,R=e.Lr,B=e.Rr,z=e.Wo,D=e.zr},function(e){$=e.T,G=e.a,M=e.c,L=e.t},function(e){F=e.t},function(e){j=e.t},function(e){N=e.i},function(e){O=e.a,Q=e.i,P=e.n,U=e.o,q=e.r,H=e.s,W=e.t}],execute:function(){(Y=document.createElement("style")).textContent="._wrapper_s46z5_125{align-items:center;display:flex;position:relative}._dropdown_s46z5_131{z-index:10;background:var(--color--background--light-3);border:var(--border);border-radius:var(--radius--lg);width:201px;box-shadow:var(--shadow--light);position:absolute;top:100%;right:0}._creditsSection_s46z5_143{padding:var(--spacing--sm);gap:var(--spacing--xs);box-sizing:border-box;flex-direction:column;width:100%;display:flex}._creditsHeader_s46z5_152{justify-content:space-between;align-items:center;width:100%;display:flex}._creditsLabel_s46z5_159{align-items:center;gap:var(--spacing--4xs);font-size:var(--font-size--sm);font-weight:var(--font-weight--bold);color:var(--color--text--shade-1);display:flex}._infoIcon_s46z5_168{color:var(--color--text--tint-1);cursor:pointer;display:flex}._creditsCount_s46z5_174{font-size:var(--font-size--sm);color:var(--color--text--tint-1);text-align:right;margin-left:auto}._progressBar_s46z5_181{background:var(--color--foreground);border-radius:var(--radius);width:100%;height:8px;overflow:hidden}._progressFill_s46z5_189{background:var(--color--success);border-radius:var(--radius);height:100%;transition:width .3s}._progressFill_s46z5_189._low_s46z5_195{background:var(--color--danger)}._active_s46z5_199{background-color:var(--lightningcss-light,var(--color--black-alpha-100))var(--lightningcss-dark,var(--color--white-alpha-100))}._getMoreButton_s46z5_203{width:100%}.dropdown-enter-active[data-v-0b2730cc]{transition:opacity .15s,transform .15s}.dropdown-leave-active[data-v-0b2730cc]{transition:opacity .1s,transform .1s}.dropdown-enter-from[data-v-0b2730cc],.dropdown-leave-to[data-v-0b2730cc]{opacity:0;transform:translateY(-4px)}._banner_1krbe_125{align-items:center;gap:var(--spacing--xs);padding:var(--spacing--2xs) var(--spacing--xs);background:var(--lightningcss-light,var(--color--neutral-125))var(--lightningcss-dark,var(--color--neutral-850));border:var(--border);border-radius:var(--radius--lg) var(--radius--lg) 0 0;margin:0 var(--spacing--2xs);line-height:var(--line-height--xl);border-bottom:none;display:flex}._content_1krbe_138{align-items:center;gap:var(--spacing--4xs);flex:1;min-width:0;display:flex}._text_1krbe_146{font-size:var(--font-size--2xs);color:var(--color--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._infoIcon_1krbe_154,._closeIcon_1krbe_160{color:var(--color--text--tint-1);cursor:pointer;flex-shrink:0}._closeIcon_1krbe_160:hover{opacity:.7}\n/*$vite$:1*/",document.head.appendChild(Y);try{t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},(T=(new t.Error).stack)&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[T]="565dcd0b-fda3-48f1-a740-2d06a7bef437",t._sentryDebugIdIdentifier="sentry-dbid-565dcd0b-fda3-48f1-a740-2d06a7bef437")}catch(t){}var t,T;J=new Set(["build-workflow","build-workflow-with-agent","submit-workflow","setup-workflow","publish-workflow","apply-workflow-credentials","setup-credentials","create-data-table","data-table-agent"]),Z=null,K={},V={},X=0,e("r",$("instanceAi",(()=>{const e=L(),t=F(),n=W(),a=S(),r=k(),s=new Set,i=o(A()),d=o([]),u=o("disconnected"),f=o({}),g=o(null),p=o([]),v=o(null),y=o([]),I=o(!1),h=o("true"===localStorage.getItem("instanceAi.researchMode")),m=o(null),w=o(void 0),b=o(void 0),_=o(new Map),x=l((()=>null!==g.value)),T=l((()=>p.value.length>0)),R=l((()=>!0===t.moduleSettings?.["instance-ai"]?.localGateway)),B=l((()=>n.isGatewayConnected)),D=l((()=>n.gatewayDirectory)),$=l((()=>t.moduleSettings?.["instance-ai"]?.localGatewayFallbackDirectory??null)),Y=l((()=>D.value??$.value)),J=C(),{registry:ee}=function(e,t){return{registry:l((()=>{const n=new Map;for(const t of e())t.agentTree&&Ie(t.agentTree,n);if(t)for(const[e,a]of n){if("workflow"!==a.type)continue;const r=t(a.id);r&&r!==a.name&&(n.delete(e),n.set(r.toLowerCase(),{...a,name:r}))}return n}))}}((()=>p.value),(e=>J.getWorkflowById(e)?.name)),{feedbackByResponseId:ae,rateableResponseId:re,submitFeedback:se,resetFeedback:oe}=be({messages:p,currentThreadId:i,telemetry:r}),ie=l((()=>v.value??Se(p.value))),le=l((()=>{if(x.value)return null;const e=[...p.value].reverse().find((e=>"assistant"===e.role));if(!e||e.isStreaming)return null;const t=e.agentTree;if(!t)return null;const n=t.children.find((e=>"workflow-builder"===e.role));return n?"error"===n.status||"cancelled"===n.status?"Try building the workflow again with different settings":"Add error handling to the workflow":t.children.find((e=>"data-table-manager"===e.role))?"Query the data table to show recent entries":null})),de=l((()=>{if(void 0!==w.value&&void 0!==b.value&&-1!==w.value)return Math.max(0,w.value-b.value)})),ue=l((()=>{if(void 0!==w.value&&-1!==w.value&&void 0!==de.value)return 0===w.value?0:de.value/w.value*100})),fe=l((()=>void 0!==ue.value&&ue.value<=10));let ge=null;const ve=l((()=>{const e=[];for(const t of p.value)"assistant"===t.role&&t.agentTree&&_e(t.agentTree,t.id,_.value,e);return e}));function ye(e,t){const n=new Map(_.value);n.set(e,t),_.value=n}function he(t){const n=t??i.value;Z&&me(),u.value="connecting";const a=++X,r=n,s=f.value[n],o=e.restApiContext.baseUrl,l=null!=s?`${o}/instance-ai/events/${n}?lastEventId=${String(s)}`:`${o}/instance-ai/events/${n}`;(Z=new EventSource(l,{withCredentials:!0})).onopen=()=>{a===X&&(u.value="connected")},Z.onmessage=e=>{a===X&&r===i.value&&function(e){e.lastEventId&&(f.value[i.value]=Number(e.lastEventId));try{const t=z.safeParse(JSON.parse(String(e.data)));if(!t.success)return void console.warn("[InstanceAI] Invalid SSE event, skipping:",t.error.message);y.value.push({timestamp:(new Date).toISOString(),event:t.data}),y.value.length>1e3&&y.value.splice(0,y.value.length-1e3);const n=g.value;if(g.value=pe({messages:p.value,activeRunId:g.value,runStateByGroupId:K,groupIdByRunId:V},t.data),"tasks-update"===t.data.type&&(v.value=t.data.payload.tasks),"thread-title-updated"===t.data.type){const e=d.value.find((e=>e.id===i.value));e&&(e.title=t.data.payload.title)}"run-start"!==t.data.type&&"run-finish"!==t.data.type||c(p),n&&null===g.value&&ke()}catch{}}(e)},Z.addEventListener("run-sync",(e=>{a===X&&r===i.value&&function(e){try{const t=JSON.parse(String(e.data)),n=t.messageGroupId??t.runId;if(!E(t.runId)||!E(n))return;const a=ce(t.agentTree);if(!a)return;let r;if(t.messageGroupId&&(r=p.value.find((e=>e.messageGroupId===t.messageGroupId&&"assistant"===e.role))),r||(r=p.value.find((e=>e.runId===t.runId))),r){r.agentTree=t.agentTree,r.runId=t.runId,r.messageGroupId=n,v.value=Se(p.value);const e="active"===t.status||"suspended"===t.status;if(r.isStreaming=e,e&&(g.value=t.runId),K[n]=a,t.runIds)for(const a of t.runIds)E(a)&&(V[a]=n);V[t.runId]=n}}catch{}}(e)})),Z.onerror=()=>{a===X&&(Z?.readyState===EventSource.CONNECTING?u.value="reconnecting":Z?.readyState===EventSource.CLOSED&&(u.value="disconnected",Z=null))}}function me(){Z&&(Z.close(),Z=null),u.value="disconnected"}function we(e){me(),p.value=[],v.value=null,g.value=null,y.value=[],oe(),_.value=new Map,K={},V={},i.value=e,delete f.value[e],Ce(e).then((()=>{Te(e),he(e)}))}async function ke(){try{const t=await te(e.restApiContext);for(const e of t.threads)s.add(e.id);const n=new Set(t.threads.map((e=>e.id))),a=d.value.filter((e=>!n.has(e.id))),r=t.threads.map((e=>({id:e.id,title:e.title||"New conversation",createdAt:e.createdAt})));d.value=[...a,...r]}catch{}}async function Ce(t){try{const n=await ne(e.restApiContext,t,100);if(i.value!==t||p.value.length>0)return;if(n.messages.length>0){p.value=n.messages,v.value=Se(n.messages);for(const e of n.messages){if("assistant"!==e.role||!e.agentTree)continue;const t=e.messageGroupId??e.runId;if(!t||!E(t))continue;const n=ce(e.agentTree);if(n){if(K[t]=n,e.runIds)for(const n of e.runIds)E(n)&&(V[n]=t);e.runId&&E(e.runId)&&(V[e.runId]=t)}}}null!==n.nextEventId&&void 0!==n.nextEventId&&(f.value[t]=n.nextEventId-1)}catch{}}async function Te(t){try{const n=await async function(e,t){return await M(e,"GET",`/instance-ai/threads/${t}/status`)}(e.restApiContext,t);if(i.value!==t)return;if(!(n.hasActiveRun||n.isSuspended||n.backgroundTasks.length>0))return;const a=[...p.value].reverse().find((e=>"assistant"===e.role));if(!a)return;(n.hasActiveRun||n.isSuspended)&&(g.value=a.runId??null,a.isStreaming=n.hasActiveRun)}catch{}}async function Ae(){if(g.value)try{await Q(e.restApiContext,i.value)}catch{a.showError(new Error("Failed to cancel. Try again."),"Cancel failed")}}async function Ee(t){try{await O(e.restApiContext,i.value,t)}catch{a.showError(new Error("Failed to cancel task. Try again."),"Cancel failed")}}async function Re(t,n,r,s,o,i,l,d,u,c){try{return await U(e.restApiContext,t,n,r,s,o,i,l,d,u,c),!0}catch{return a.showError(new Error("Failed to send confirmation. Try again."),"Confirmation failed"),!1}}return{currentThreadId:i,threads:d,sseState:u,lastEventIdByThread:f,activeRunId:g,messages:p,debugEvents:y,debugMode:I,researchMode:h,amendContext:m,feedbackByResponseId:ae,creditsQuota:w,creditsClaimed:b,resolvedConfirmationIds:_,isStreaming:x,hasMessages:T,isLocalGatewayEnabled:R,isGatewayConnected:B,gatewayDirectory:D,localGatewayFallbackDirectory:$,activeDirectory:Y,contextualSuggestion:le,currentTasks:ie,resourceRegistry:ee,rateableResponseId:re,creditsRemaining:de,creditsPercentageRemaining:ue,isLowCredits:fe,pendingConfirmations:ve,newThread:function(){const e=A();return me(),p.value=[],v.value=null,g.value=null,y.value=[],oe(),_.value=new Map,K={},V={},i.value=e,d.value.unshift({id:e,title:N,createdAt:(new Date).toISOString()}),he(e),e},deleteThread:async function(t){const n=t===i.value;if(s.has(t))try{await async function(e,t){await M(e,"DELETE",`/instance-ai/threads/${t}`)}(e.restApiContext,t),s.delete(t)}catch{return a.showError(new Error("Failed to delete thread. Try again."),"Delete failed"),{currentThreadId:i.value,wasActive:n}}if(d.value=d.value.filter((e=>e.id!==t)),delete f.value[t],n)if(d.value.length>0)we(d.value[0].id);else{const e=A();me(),p.value=[],v.value=null,g.value=null,y.value=[],oe(),_.value=new Map,K={},V={},i.value=e,d.value.push({id:e,title:N,createdAt:(new Date).toISOString()}),he(e)}return{currentThreadId:i.value,wasActive:n}},renameThread:async function(t,n){const a=d.value.find((e=>e.id===t));a&&(a.title=n),s.has(t)&&await async function(e,t,n){return await M(e,"PATCH",`/instance-ai/threads/${t}`,{title:n})}(e.restApiContext,t,n)},switchThread:we,loadThreads:ke,loadHistoricalMessages:Ce,loadThreadStatus:Te,sendMessage:async function(t,n,r){m.value=null;try{await async function(t){if(s.has(t))return;const n=await P(e.restApiContext,t);s.add(n.thread.id);const a=d.value.find((e=>e.id===t));if(a)return a.createdAt=n.thread.createdAt,void(a.title=n.thread.title||a.title);d.value.unshift({id:n.thread.id,title:n.thread.title||"New conversation",createdAt:n.thread.createdAt})}(i.value)}catch{return void a.showError(new Error("Failed to start a new thread. Try again."),"Send failed")}const o={id:A(),role:"user",createdAt:(new Date).toISOString(),content:t,reasoning:"",isStreaming:!1,attachments:n&&n.length>0?n:void 0};p.value.push(o);try{await H(e.restApiContext,i.value,t,h.value||void 0,n,Intl.DateTimeFormat().resolvedOptions().timeZone,r)}catch(l){const e=l instanceof G?l.httpStatusCode:void 0;409===e?a.showError(new Error("Agent is still working on your previous message"),"Cannot send message"):400===e?a.showError(new Error("Message cannot be empty"),"Invalid message"):a.showError(new Error("Failed to send message. Try again."),"Send failed");const t=p.value.indexOf(o);-1!==t&&p.value.splice(t,1)}},cancelRun:Ae,cancelBackgroundTask:Ee,amendAgent:function(e,t,n){n?Ee(n):Ae(),m.value={agentId:e,role:t}},toggleResearchMode:function(){h.value=!h.value,localStorage.setItem("instanceAi.researchMode",String(h.value))},confirmAction:Re,confirmResourceDecision:async function(e,t){ye(e,"approved"),await Re(e,!0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,t)},resolveConfirmation:ye,findToolCallByRequestId:function(e){for(const t of p.value){if(!t.agentTree)continue;const n=xe(t.agentTree,e);if(n)return n}},copyFullTrace:function(){const e=[];let t=null,n=null;for(const a of y.value){const{event:r}=a;"text-delta"!==r.type?"reasoning-delta"!==r.type?(t&&(t.event.payload.text=t.buffer,e.push(t),t=null),n&&(n.event.payload.text=n.buffer,e.push(n),n=null),e.push(a)):n&&n.event.agentId===r.agentId?n.buffer+=r.payload.text:(n&&(n.event.payload.text=n.buffer,e.push(n)),n={timestamp:a.timestamp,event:{...r,payload:{...r.payload}},buffer:r.payload.text}):t&&t.event.agentId===r.agentId?t.buffer+=r.payload.text:(t&&(t.event.payload.text=t.buffer,e.push(t)),t={timestamp:a.timestamp,event:{...r,payload:{...r.payload}},buffer:r.payload.text})}return t&&(t.event.payload.text=t.buffer,e.push(t)),n&&(n.event.payload.text=n.buffer,e.push(n)),JSON.stringify({threadId:i.value,exportedAt:(new Date).toISOString(),messages:p.value,events:e},null,2)},submitFeedback:se,fetchCredits:async function(){try{const t=await q(e.restApiContext);w.value=t.creditsQuota,b.value=t.creditsClaimed}catch{}},startCreditsPushListener:function(){ge||(ge=j().addEventListener((e=>{"updateInstanceAiCredits"===e.type&&(w.value=e.data.creditsQuota,b.value=e.data.creditsClaimed)})))},stopCreditsPushListener:function(){ge&&(ge(),ge=null)},connectSSE:he,closeSSE:me}}))),ee=i({__name:"CreditsSettingsDropdown",props:{creditsRemaining:{},creditsQuota:{},isLowCredits:{type:Boolean}},emits:["upgrade-click"],setup(e,{emit:t}){const i=e,c=t,x=h(),S=o(!1),k=o();m(k,(()=>{S.value=!1}),{ignore:[".n8n-tooltip"]});const C=l((()=>void 0!==i.creditsQuota&&void 0!==i.creditsRemaining)),T=l((()=>void 0===i.creditsRemaining?"":x.baseText("aiAssistant.builder.settings.creditsLeft",{interpolate:{count:String(i.creditsRemaining)}}))),A=l((()=>void 0===i.creditsQuota||void 0===i.creditsRemaining||0===i.creditsQuota?0:i.creditsRemaining/i.creditsQuota*100)),E=l((()=>{const e=(()=>{const e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"})})();return x.baseText("aiAssistant.builder.settings.creditsTooltip",{interpolate:{renewalDate:e,expiryDate:e}})}));function R(){S.value=!S.value}function B(){c("upgrade-click"),S.value=!1}return(t,o)=>(n(),s("div",{ref_key:"dropdownRef",ref:k,class:g(t.$style.wrapper)},[p(f(_),{icon:"circle-dollar-sign",variant:"ghost",size:"large","icon-only":"",class:g({[t.$style.active]:S.value}),"data-test-id":"credits-dropdown-button",onClick:R},null,8,["class"]),p(v,{name:"dropdown"},{default:I((()=>[S.value?(n(),s("div",{key:0,class:g(t.$style.dropdown),"data-test-id":"credits-dropdown"},[C.value?(n(),s("div",{key:0,class:g(t.$style.creditsSection)},[r("div",{class:g(t.$style.creditsHeader)},[r("div",{class:g(t.$style.creditsLabel)},[r("span",null,d(f(x).baseText("aiAssistant.builder.settings.credits")),1),p(f(w),{content:E.value,placement:"bottom","show-after":300},{default:I((()=>[p(f(b),{icon:"info",size:"small",class:g(t.$style.infoIcon)},null,8,["class"])])),_:1},8,["content"])],2),r("span",{class:g(t.$style.creditsCount)},d(T.value),3)],2),r("div",{class:g(t.$style.progressBar)},[r("div",{class:g([t.$style.progressFill,{[t.$style.low]:e.isLowCredits}]),style:y({width:`${A.value}%`})},null,6)],2),p(f(_),{variant:"outline",size:"small",class:g(t.$style.getMoreButton),"data-test-id":"credits-get-more",onClick:B},{default:I((()=>[a(d(f(x).baseText("aiAssistant.builder.settings.getMoreCredits")),1)])),_:1},8,["class"])],2)):u("",!0)],2)):u("",!0)])),_:1})],2))}}),e("n",x(ee,[["__cssModules",{$style:{wrapper:"_wrapper_s46z5_125",dropdown:"_dropdown_s46z5_131",creditsSection:"_creditsSection_s46z5_143",creditsHeader:"_creditsHeader_s46z5_152",creditsLabel:"_creditsLabel_s46z5_159",infoIcon:"_infoIcon_s46z5_168",creditsCount:"_creditsCount_s46z5_174",progressBar:"_progressBar_s46z5_181",progressFill:"_progressFill_s46z5_189",low:"_low_s46z5_195",active:"_active_s46z5_199",getMoreButton:"_getMoreButton_s46z5_203"}}],["__scopeId","data-v-0b2730cc"]])),e("t",x(i({__name:"CreditWarningBanner",props:{creditsRemaining:{},creditsQuota:{}},emits:["upgrade-click","dismiss"],setup(e,{emit:t}){const o=e,i=t,u=h(),c=l((()=>u.baseText("aiAssistant.builder.creditBanner.text",{interpolate:{remaining:String(o.creditsRemaining??0),total:String(o.creditsQuota??0)}}))),v=l((()=>{const e=(()=>{const e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"})})();return u.baseText("aiAssistant.builder.settings.creditsTooltip",{interpolate:{renewalDate:e,expiryDate:e}})}));return(e,t)=>(n(),s("div",{class:g(e.$style.banner),"data-test-id":"credit-warning-banner"},[r("div",{class:g(e.$style.content)},[r("span",{class:g(e.$style.text)},d(c.value),3),p(f(w),{content:v.value,placement:"top","show-after":300},{default:I((()=>[p(f(b),{icon:"info",size:"small",class:g(e.$style.infoIcon)},null,8,["class"])])),_:1},8,["content"])],2),p(f(_),{variant:"outline",size:"xsmall","data-test-id":"credit-banner-get-more",onClick:t[0]||(t[0]=e=>i("upgrade-click"))},{default:I((()=>[a(d(f(u).baseText("aiAssistant.builder.creditBanner.getMore")),1)])),_:1}),p(f(b),{icon:"x",size:"small",class:g(e.$style.closeIcon),"data-test-id":"credit-banner-dismiss",onClick:t[1]||(t[1]=e=>i("dismiss"))},null,8,["class"])],2))}}),[["__cssModules",{$style:{banner:"_banner_1krbe_125",content:"_content_1krbe_138",text:"_text_1krbe_146",infoIcon:"_infoIcon_1krbe_154",closeIcon:"_closeIcon_1krbe_160"}}]]))}}}));
//# sourceMappingURL=CreditWarningBanner-legacy-B08O2whB.js.map