@arbor-education/agent-view-frontend 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),a=require("react"),W=require("classnames"),c=require("@arbor-education/design-system.components"),Ye=require("@arbor-education/ask-arbor-chat-panel"),N={"generating-a-response":"generating-a-response",hitl:"hitl",paused:"paused",complete:"complete"},F={"generating-a-response":"generating-a-response",hitl:"hitl",complete:"complete",failed:"failed"},$={briefing:"briefing",running:"running",paused:"paused",complete:"complete"},se={agent:"agent",user:"user",system:"system"},Ae={document_html:"document_html",mis_record:"mis_record",workflow:"workflow",file:"file",user_file:"user_file",link:"link"},qn={user_file:"user_file"},sn={active:"active",complete:"complete",paused:"paused"},an={in_progress:"in_progress",requires_attention:"requires_attention",available:"available"},ye={[F.complete]:{label:"Complete",icon:"circle-check",color:"var(--color-semantic-success-600)"},[F.failed]:{label:"Failed",icon:"circle-x",color:"var(--color-semantic-destructive-600)"},[F.hitl]:{label:"Requires attention",icon:"triangle-alert",color:"var(--color-semantic-warning-600)"},[F["generating-a-response"]]:{label:"Generating a response",icon:"sparkles",color:"var(--color-brand-600)"}},Kn="var(--color-grey-600)",wt={[N["generating-a-response"]]:{status:N["generating-a-response"],title:"Active",dotColour:"green",statusIcon:{name:ye["generating-a-response"].icon,color:ye["generating-a-response"].color}},[N.hitl]:{status:N.hitl,title:"Requires attention",dotColour:"orange",statusIcon:{name:ye.hitl.icon,color:ye.hitl.color}},[N.paused]:{status:N.paused,title:"Paused",dotColour:"green",statusIcon:{name:"circle-x",color:Kn}},[N.complete]:{status:N.complete,title:"Complete",dotColour:"green",dotModifier:"grey-dark",statusIcon:{name:ye.complete.icon,color:ye.complete.color}}},zs={name:"archive",color:Kn},qs=[N["generating-a-response"],N.hitl,N.complete],Ks="m4",Vs="1",Vn="msg-opening",Ht="Unable to load agent tasks. Please try again.",Js="Unable to load context.",Ys="Unable to load the resources for this agent",Ws="Unable to load this document. Please try again.",Jn="Unable to load the timeline for this agent",Xs="Unable to pause the agent. Please try again.",dn="Unable to archive the agent. Please try again.",Zs="Archive this agent?",Qs="Archiving files this agent away and stops its work. You can restore it later as paused; it will not run until you resume it. Chat is not available while it is archived. You can still open it from Archived to view the timeline and resources.",ea="This agent is still in progress.",hn="Unable to unarchive the agent. Please try again.",ta="Restore this agent?",na="Restoring returns this agent to the board as paused. It will not run chats or scheduled work until you resume it.",sa="Unable to delete the agent. Please try again.",aa="You do not have permission to delete this agent.",ra="This agent must be paused or archived before it can be deleted.",ia="This agent could not be found. It may have already been deleted.",la="Delete this agent?",oa="Deleting cannot be undone. This permanently removes the agent and its related data. It will not appear in Archived and cannot be restored.",ca="Unable to resume the agent. Please try again.",ua="The agent was resumed but could not be woken. Send a message to continue.",Tn="You have been resumed after being paused. Reassess your current progress and continue your work from where you left off.",da="Unable to rename the agent. Please try again.",ha="Something went wrong. Please try again.",Yn="Unable to load agents. Please try again.",Je="Loading tasks…",In="Loading agents…",ga="Task",ma={[$.briefing]:"Briefing",[$.running]:"Working",[$.paused]:"Paused",[$.complete]:"Complete"},pa=[N["generating-a-response"],N.hitl,N.complete],_a={[N["generating-a-response"]]:"Agents currently working on tasks for you.",[N.hitl]:"Agents that need your input before they can continue.",[N.paused]:"Agents that are paused until you resume them.",[N.complete]:"Agents that have finished their work."},fa=()=>n.jsxs("svg",{className:"agent-view__empty-illustration",viewBox:"0 0 360 240",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Preview of the agents board layout",children:[n.jsx("rect",{x:"0",y:"0",width:"360",height:"240",rx:"12",fill:"var(--color-grey-100)"}),n.jsx("rect",{x:"16",y:"16",width:"100",height:"208",rx:"8",fill:"var(--card-default-color-background)",stroke:"var(--card-default-color-border)"}),n.jsx("rect",{x:"130",y:"16",width:"100",height:"208",rx:"8",fill:"var(--card-default-color-background)",stroke:"var(--card-default-color-border)"}),n.jsx("rect",{x:"244",y:"16",width:"100",height:"208",rx:"8",fill:"var(--card-default-color-background)",stroke:"var(--card-default-color-border)"}),n.jsx("rect",{x:"28",y:"52",width:"76",height:"36",rx:"6",fill:"var(--color-grey-050)"}),n.jsx("rect",{x:"28",y:"96",width:"76",height:"36",rx:"6",fill:"var(--color-grey-050)"}),n.jsx("rect",{x:"142",y:"52",width:"76",height:"36",rx:"6",fill:"var(--color-semantic-warning-050)"}),n.jsx("rect",{x:"256",y:"52",width:"76",height:"36",rx:"6",fill:"var(--color-grey-050)"}),n.jsx("circle",{cx:"40",cy:"70",r:"4",fill:"var(--color-brand-600)"}),n.jsx("circle",{cx:"40",cy:"114",r:"4",fill:"var(--color-brand-600)"}),n.jsx("circle",{cx:"154",cy:"70",r:"4",fill:"var(--color-semantic-warning-600)"}),n.jsx("circle",{cx:"256",cy:"70",r:"4",fill:"var(--color-grey-400)"})]}),va=({status:e})=>{const t=wt[e];return t.statusIcon?n.jsx(c.Icon,{name:t.statusIcon.name,size:16,color:t.statusIcon.color,screenReaderText:t.title}):n.jsx(c.Dot,{colour:t.dotColour,label:t.title})},xa=()=>n.jsxs("section",{className:"agent-view__empty","aria-label":"About the agents board",children:[n.jsxs("div",{className:"agent-view__empty-content",children:[n.jsx(c.Heading,{level:4,children:"Your agents board"}),n.jsx("p",{className:"agent-view__empty-lead",children:"When you start an agent, it appears here so you can track progress at a glance. Agents move between columns as their status changes."}),n.jsx("ul",{className:"agent-view__empty-columns",children:pa.map(e=>{const t=wt[e];return n.jsxs("li",{className:"agent-view__empty-column",children:[n.jsx("span",{className:"agent-view__empty-column-indicator",children:n.jsx(va,{status:e})}),n.jsxs("span",{className:"agent-view__empty-column-text",children:[n.jsx("span",{className:"agent-view__empty-column-title",children:t.title}),n.jsx("span",{className:"agent-view__empty-column-description",children:_a[e]})]})]},e)})}),n.jsxs("p",{className:"agent-view__empty-hint",children:["Use ",n.jsx("strong",{children:"Start an agent"})," above to begin."]})]}),n.jsx("div",{className:"agent-view__empty-visual",children:n.jsx(fa,{})})]}),wa=()=>({needsInput:[],complete:[],failed:[],tasks:[]}),Aa=(e,t)=>({...e,...t.length>0?{children:t}:{}}),Wn=e=>{const t=[],s=[],r=[],i=[];for(const o of e){const l=o.children?Wn(o.children):wa();if(t.push(...l.needsInput),s.push(...l.complete),r.push(...l.failed),o.status===F.hitl){t.push({...o,children:void 0});continue}if(o.status===F.complete){s.push({...o,children:void 0});continue}if(o.status===F.failed){r.push({...o,children:void 0});continue}i.push(Aa(o,l.tasks))}return{needsInput:t,complete:s,failed:r,tasks:i}},On=e=>e===F.hitl?0:e===F.complete?1:e===F.failed?2:3,ya=e=>e.map((t,s)=>({item:t,index:s})).sort((t,s)=>{const r=On(t.item.status)-On(s.item.status);return r!==0?r:t.index-s.index}).map(({item:t})=>t),rn=2,ka=e=>{if(!e)return{canScrollUp:!1,canScrollDown:!1};const t=e.scrollHeight-e.clientHeight;return t<=rn?{canScrollUp:!1,canScrollDown:!1}:{canScrollUp:e.scrollTop>rn,canScrollDown:e.scrollTop<t-rn}},Na=(e,t)=>{if(!e||!t)return null;const s=e.getBoundingClientRect(),r=t.getBoundingClientRect();return{top:r.top-s.top,left:r.left-s.left,width:r.width,height:r.height}},Ft=({children:e,className:t,contentClassName:s,scrollSelector:r,style:i,"aria-label":o})=>{const l=a.useRef(null),m=a.useRef(null),[h,k]=a.useState(!1),[f,w]=a.useState(!1),[A,E]=a.useState(null),p=()=>{var I;return r?((I=l.current)==null?void 0:I.querySelector(r))??null:m.current},C=()=>{const I=p(),v=ka(I);if(k(g=>g===v.canScrollUp?g:v.canScrollUp),w(g=>g===v.canScrollDown?g:v.canScrollDown),r){const g=Na(l.current,I);E(x=>(x==null?void 0:x.top)===(g==null?void 0:g.top)&&(x==null?void 0:x.left)===(g==null?void 0:g.left)&&(x==null?void 0:x.width)===(g==null?void 0:g.width)&&(x==null?void 0:x.height)===(g==null?void 0:g.height)?x:g)}else E(g=>g===null?g:null)};a.useLayoutEffect(()=>{C()}),a.useEffect(()=>{const I=l.current;if(!I)return;let v=null,g=null;const x=()=>{v==null||v.removeEventListener("scroll",C),g==null||g.disconnect(),g=null,v=null},j=Y=>{if(Y===v){C();return}if(x(),v=Y,!v){C();return}v.addEventListener("scroll",C,{passive:!0}),g=new ResizeObserver(()=>C()),g.observe(v),v.firstElementChild instanceof HTMLElement&&g.observe(v.firstElementChild),C()};j(p());const O=new MutationObserver(()=>{j(p())});return O.observe(I,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",C),()=>{window.removeEventListener("resize",C),O.disconnect(),x()}},[r]);const L=I=>{const v=p();if(!v)return;const g=Math.max(v.clientHeight*.75,120);v.scrollBy({top:I==="up"?-g:g,behavior:"smooth"})},M=n.jsxs(n.Fragment,{children:[h&&n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"scrollable-region__fade scrollable-region__fade--top","aria-hidden":"true"}),n.jsx("button",{type:"button",className:"scrollable-region__edge scrollable-region__edge--top","aria-label":"Scroll up",onClick:()=>L("up"),children:n.jsx(c.Icon,{name:"chevron-up",size:16,color:"currentColor"})})]}),f&&n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"scrollable-region__fade scrollable-region__fade--bottom","aria-hidden":"true"}),n.jsx("button",{type:"button",className:"scrollable-region__edge scrollable-region__edge--bottom","aria-label":"Scroll down",onClick:()=>L("down"),children:n.jsx(c.Icon,{name:"chevron-down",size:16,color:"currentColor"})})]})]});return n.jsx("div",{ref:l,className:W("scrollable-region",t),style:i,"aria-label":o,children:r?n.jsxs(n.Fragment,{children:[e,A&&(h||f)&&n.jsx("div",{className:"scrollable-region__overlay",style:{top:A.top,left:A.left,width:A.width,height:A.height},children:M})]}):n.jsxs(n.Fragment,{children:[M,n.jsx("div",{ref:m,className:W("scrollable-region__viewport",s),children:e})]})})},Ca=48,ba=({checklist:e})=>{const t=a.useRef(null),s=a.useRef(!1);return a.useLayoutEffect(()=>{const r=t.current;if(!r)return;const i=r.scrollHeight-r.scrollTop-r.clientHeight;(!s.current||i<=Ca)&&(r.scrollTop=r.scrollHeight,s.current=!0)},[e]),e.length===0?n.jsx("p",{className:"agent-view__progress-empty",children:"No tasks to display."}):n.jsx(Ft,{className:"agent-view__progress-scroll",scrollSelector:".agent-view__progress-list",children:n.jsx("ul",{ref:t,className:"agent-view__progress-list","aria-label":"Agent tasks",children:ya(e).map(r=>{const i=ye[r.status];return n.jsxs("li",{className:W("agent-view__progress-item",`agent-view__progress-item--${r.status.replace(/_/g,"-")}`),children:[n.jsx(c.Icon,{name:i.icon,size:16,color:i.color,screenReaderText:`${i.label}:`}),n.jsxs("div",{className:"agent-view__progress-item-content",children:[n.jsx("span",{className:"agent-view__progress-label",children:r.task}),r.status!==F.complete&&n.jsx("span",{className:"agent-view__progress-description",children:r.description})]})]},r.task)})})})},Xn=({open:e,isInProgress:t,isArchiving:s,error:r,onCancel:i,onConfirm:o})=>{const l=a.useId(),m=a.useId();return n.jsxs(c.Modal,{open:e,closeHandler:i,className:"archive-agent-confirm",children:[n.jsx(c.Modal.Header,{className:"archive-agent-confirm__header",children:n.jsx(c.Modal.Title,{id:l,children:Zs})}),n.jsxs(c.Modal.Body,{className:"archive-agent-confirm__body",children:[n.jsxs("div",{role:"alertdialog","aria-labelledby":l,"aria-describedby":m,children:[n.jsx("p",{id:m,className:"archive-agent-confirm__lead",children:Qs}),t?n.jsx("p",{className:"archive-agent-confirm__progress",children:ea}):null,r?n.jsx("p",{className:"archive-agent-confirm__error",role:"alert",children:r}):null]}),n.jsxs("div",{className:"archive-agent-confirm__actions",children:[n.jsx(c.Button,{variant:"secondary",size:"S",disabled:s,onClick:i,children:"Cancel"}),n.jsx(c.Button,{variant:"secondary-destructive",size:"S",disabled:s,onClick:o,children:s?"Archiving…":"Archive"})]})]})]})},Zn=({open:e,isDeleting:t,error:s,onCancel:r,onConfirm:i})=>{const o=a.useId(),l=a.useId();return n.jsxs(c.Modal,{open:e,closeHandler:r,className:"archive-agent-confirm",children:[n.jsx(c.Modal.Header,{className:"archive-agent-confirm__header",children:n.jsx(c.Modal.Title,{id:o,children:la})}),n.jsxs(c.Modal.Body,{className:"archive-agent-confirm__body",children:[n.jsxs("div",{role:"alertdialog","aria-labelledby":o,"aria-describedby":l,children:[n.jsx("p",{id:l,className:"archive-agent-confirm__lead",children:oa}),s?n.jsx("p",{className:"archive-agent-confirm__error",role:"alert",children:s}):null]}),n.jsxs("div",{className:"archive-agent-confirm__actions",children:[n.jsx(c.Button,{variant:"secondary",size:"S",disabled:t,onClick:r,children:"Cancel"}),n.jsx(c.Button,{variant:"secondary-destructive",size:"S",disabled:t,onClick:i,children:t?"Deleting…":"Delete"})]})]})]})},Qn=({open:e,isUnarchiving:t,error:s,onCancel:r,onConfirm:i})=>{const o=a.useId(),l=a.useId();return n.jsxs(c.Modal,{open:e,closeHandler:r,className:"archive-agent-confirm",children:[n.jsx(c.Modal.Header,{className:"archive-agent-confirm__header",children:n.jsx(c.Modal.Title,{id:o,children:ta})}),n.jsxs(c.Modal.Body,{className:"archive-agent-confirm__body",children:[n.jsxs("div",{role:"alertdialog","aria-labelledby":o,"aria-describedby":l,children:[n.jsx("p",{id:l,className:"archive-agent-confirm__lead",children:na}),s?n.jsx("p",{className:"archive-agent-confirm__error",role:"alert",children:s}):null]}),n.jsxs("div",{className:"archive-agent-confirm__actions",children:[n.jsx(c.Button,{variant:"secondary",size:"S",disabled:t,onClick:r,children:"Cancel"}),n.jsx(c.Button,{variant:"secondary",size:"S",disabled:t,onClick:i,children:t?"Restoring…":"Restore"})]})]})]})},Sa=e=>e!==void 0&&e.some(t=>t.status===F.hitl),es=e=>e!==void 0&&e.length>0&&e.every(t=>t.status===F.complete),ln=(e,t)=>e.status===N.paused?es(t)?N.complete:N["generating-a-response"]:Sa(t)?N.hitl:e.status===N.complete?N.complete:e.status===N.hitl?N.hitl:N["generating-a-response"],Ea=({prompts:e,classNamePrefix:t="agent-workspace",onSelect:s})=>e.length===0?null:n.jsx("div",{className:`${t}__chips`,children:e.map(r=>n.jsx("button",{type:"button",className:`${t}__chip`,onClick:()=>s(r),children:r},r))});class ja{constructor(t,s){this.connector=t,this.canSend=s.canSend,this.onTurn=s.onTurn,this.onAwaitingChange=s.onAwaitingChange}get canRate(){return!1}get canLoadHistory(){return!1}get canListInteractions(){return!1}get canSendNotification(){return!1}get ratingPopupUrls(){return{}}async sendMessage(t){var s,r;if(!this.canSend())return null;(s=this.onAwaitingChange)==null||s.call(this,!0);try{const i=await this.connector.sendMessage(t.userMessage,t.uploadFiles);return this.onTurn(i),{id:i.message.id,text:i.message.text,type:Ye.CHAT_RESPONSE_TYPE_AGENT,...i.message.followUpPrompts?{followUpPrompts:i.message.followUpPrompts}:{}}}catch{return{id:`error-${Date.now()}`,text:ha,type:Ye.CHAT_RESPONSE_TYPE_ERROR}}finally{(r=this.onAwaitingChange)==null||r.call(this,!1)}}async loadHistory(t){return null}async listInteractions(){return null}async rateMessage(t){}async sendNotification(t){return!1}}const Ra=({connector:e,phase:t,chatHistory:s,chatSessionKey:r,startQuery:i,clarificationMessage:o,enableUpload:l=!1,onTurn:m,onAwaitingChange:h,onClarificationPrompt:k,onDismissClarification:f})=>{const w=a.useMemo(()=>new ja(e,{canSend:()=>t===$.running,onTurn:m,onAwaitingChange:h}),[e,t,m,h]),A=t!==$.running,E=t===$.running;return n.jsxs("section",{className:"agent-workspace__chat-body","aria-label":"Chat",children:[o&&n.jsxs("div",{className:"agent-workspace__clarification",role:"region","aria-label":"Agent question",children:[n.jsx("p",{className:"agent-workspace__clarification-text",children:o.text}),o.followUpPrompts&&n.jsx(Ea,{prompts:o.followUpPrompts,onSelect:k}),n.jsx("button",{type:"button",className:"agent-workspace__clarification-dismiss",onClick:f,children:"Dismiss"})]}),n.jsx("div",{className:"agent-workspace__ask-arbor",children:n.jsx(Ft,{scrollSelector:".chat-panel-message-list",children:n.jsx(Ye.ChatPanel,{connector:w,chatHistory:s,startQuery:i,lockConversation:A,enableUpload:l,speechEnabled:E,speechLanguage:"en-GB",speechSubmissionDelay:1e3,slashMenuItems:[],menuContent:[],introHeading:"Message your agent",introBody:"Ask questions, share trip details, or paste a link. The agent will update the checklist as it works.",placeholder:E?"Message the agent, paste a link, or attach a file…":"The agent is not accepting messages."},r)})}),t===$.paused&&n.jsxs("div",{className:"agent-workspace__notice",role:"status",children:[n.jsx(c.Icon,{name:"circle-alert",size:16,color:"var(--color-semantic-warning-600)"}),n.jsx("span",{children:"The agent is paused. Its progress is saved in the checklist."})]}),t===$.complete&&n.jsxs("div",{className:"agent-workspace__notice",role:"status",children:[n.jsx(c.Icon,{name:"party-popper",size:16,color:"var(--color-semantic-success-600)"}),n.jsx("span",{children:"The agent has finished."})]})]})},ts=({item:e,depth:t,canRequestInput:s,onAttentionItemClick:r})=>{const i=ye[e.status],o=e.status.replace(/_/g,"-"),l=e.status===F.hitl&&s&&r,m=n.jsxs("div",{className:"agent-workspace__task-row",children:[n.jsx(c.Icon,{name:i.icon,size:16,color:i.color,screenReaderText:`${i.label}:`}),n.jsxs("div",{className:"agent-workspace__task-content",children:[n.jsx("span",{className:"agent-workspace__task-label",children:e.task}),e.status!==F.complete&&e.description&&n.jsx("span",{className:"agent-workspace__task-description",children:e.description})]})]});return n.jsxs("li",{className:W("agent-workspace__task",`agent-workspace__task--${o}`,{"agent-workspace__task--child":t>0}),children:[l?n.jsx("button",{type:"button",className:"agent-workspace__task-button","aria-label":`Provide input for ${e.task}`,onClick:()=>r(e),children:m}):m,e.children&&e.children.length>0&&n.jsx("ul",{className:"agent-workspace__task-children",children:e.children.map(h=>n.jsx(ts,{item:h,depth:t+1,canRequestInput:s,onAttentionItemClick:r},h.task))})]})},Dt=({items:e,ariaLabel:t,canRequestInput:s,onAttentionItemClick:r})=>n.jsx("ul",{className:"agent-workspace__task-list","aria-label":t,children:e.map(i=>n.jsx(ts,{item:i,depth:0,canRequestInput:s,onAttentionItemClick:r},i.task))}),Ta=({checklist:e,isLoading:t,error:s,phase:r,canRequestInput:i,onAttentionItemClick:o,adminMode:l=!1,context:m,contextLoaded:h=!1,contextLoading:k=!1,contextError:f=null,onContextSelect:w})=>{const[A,E]=a.useState("checklist"),p=a.useMemo(()=>e?Wn(e):null,[e]),C=()=>{E("context"),w==null||w()};return n.jsxs("section",{className:"agent-workspace__panel agent-workspace__panel--checklist","aria-label":"Checklist",children:[n.jsx("div",{className:"agent-workspace__panel-header",children:l?n.jsxs(c.Tabs,{className:"agent-workspace__checklist-tabs","aria-label":"Checklist panel",children:[n.jsx(c.Tabs.Item,{active:A==="checklist",tabElementProps:{id:"agent-checklist-tab-checklist",onClick:()=>E("checklist")},children:"Checklist"}),n.jsx(c.Tabs.Item,{active:A==="context",tabElementProps:{id:"agent-checklist-tab-context",onClick:C},children:"Context"})]}):n.jsx(c.Heading,{level:4,children:"Checklist"})}),n.jsx("div",{className:"agent-workspace__panel-body","aria-live":"polite",children:n.jsx(Ft,{children:A==="context"?n.jsxs(n.Fragment,{children:[k&&n.jsxs("div",{className:"agent-workspace__loading",children:[n.jsx(c.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-workspace__task-icon--spinning",screenReaderText:"Loading context"}),n.jsx("span",{children:"Loading context…"})]}),!k&&f&&n.jsx("p",{className:"agent-workspace__error",role:"alert",children:f}),!k&&!f&&h&&m==null&&n.jsx("p",{className:"agent-workspace__empty",children:"No context available."}),!k&&!f&&h&&m!==null&&m!==void 0&&n.jsx("pre",{className:"agent-workspace__context-json",children:JSON.stringify(m,null,2)})]}):n.jsxs(n.Fragment,{children:[t&&n.jsxs("div",{className:"agent-workspace__loading",children:[n.jsx(c.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-workspace__task-icon--spinning",screenReaderText:Je}),n.jsx("span",{children:Je})]}),!t&&s&&n.jsx("p",{className:"agent-workspace__error",role:"alert",children:s}),!t&&!s&&p&&n.jsxs(n.Fragment,{children:[p.needsInput.length>0&&n.jsxs("div",{className:"agent-workspace__task-group",children:[n.jsx("p",{className:"agent-workspace__task-group-label",children:"Needs your input"}),n.jsx(Dt,{items:p.needsInput,ariaLabel:"Tasks needing your input",canRequestInput:i,onAttentionItemClick:o})]}),p.complete.length>0&&n.jsxs("div",{className:W("agent-workspace__task-group",{"agent-workspace__task-group--following":p.needsInput.length>0}),children:[(p.needsInput.length>0||p.failed.length>0||p.tasks.length>0)&&n.jsx("p",{className:"agent-workspace__task-group-label",children:"Completed"}),n.jsx(Dt,{items:p.complete,ariaLabel:"Completed tasks",canRequestInput:i,onAttentionItemClick:o})]}),p.failed.length>0&&n.jsxs("div",{className:W("agent-workspace__task-group",{"agent-workspace__task-group--following":p.needsInput.length>0||p.complete.length>0}),children:[(p.needsInput.length>0||p.complete.length>0||p.tasks.length>0)&&n.jsx("p",{className:"agent-workspace__task-group-label",children:"Failed"}),n.jsx(Dt,{items:p.failed,ariaLabel:"Failed tasks",canRequestInput:i,onAttentionItemClick:o})]}),p.tasks.length>0&&n.jsxs("div",{className:W("agent-workspace__task-group",{"agent-workspace__task-group--following":p.needsInput.length>0||p.complete.length>0||p.failed.length>0}),children:[(p.needsInput.length>0||p.complete.length>0||p.failed.length>0)&&n.jsx("p",{className:"agent-workspace__task-group-label",children:"Working on"}),n.jsx(Dt,{items:p.tasks,ariaLabel:"Agent tasks",canRequestInput:i,onAttentionItemClick:o})]})]}),!t&&!s&&(!p||p.needsInput.length===0&&p.complete.length===0&&p.failed.length===0&&p.tasks.length===0)&&n.jsx("p",{className:"agent-workspace__empty",children:r===$.briefing?"Tasks will appear here once the agent starts.":"No tasks to display."})]})})})]})},Ia=({resource:e,html:t,isLoading:s,error:r,onClose:i})=>{a.useEffect(()=>{if(!e)return;const l=c.SlideoverUtils.removeSlideover;return c.SlideoverUtils.removeSlideover=()=>{l(),i()},()=>{c.SlideoverUtils.removeSlideover=l}},[e,i]),a.useEffect(()=>{if(!e)return;const l=m=>{m.key==="Escape"&&c.SlideoverUtils.removeSlideover()};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[e]);const o=a.useMemo(()=>e?[{centerHeaderText:!1,children:n.jsxs("div",{className:"resource-preview-slideover__body",children:[s&&n.jsxs("div",{className:"resource-preview-slideover__status",children:[n.jsx(c.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-workspace__task-icon--spinning",screenReaderText:"Loading document"}),n.jsx("span",{children:"Loading document…"})]}),!s&&r&&n.jsx("p",{className:"resource-preview-slideover__error",role:"alert",children:r}),!s&&!r&&t!==null&&n.jsx("iframe",{className:"resource-preview-slideover__frame",title:e.title,sandbox:"",srcDoc:t})]})}]:[],[e,t,s,r]);return n.jsx("div",{className:"resource-preview-slideover",children:n.jsx(c.SlideoverManager,{slideovers:o})})},Oa={[Ae.mis_record]:{icon:"table",label:"Arbor MIS",color:"var(--color-brand-600)"},[Ae.document_html]:{icon:"file",label:"Document",color:"var(--color-semantic-caution-800)"},[Ae.file]:{icon:"file",label:"File",color:"var(--color-semantic-caution-800)"},[Ae.user_file]:{icon:"upload",label:"File upload",color:"var(--color-semantic-caution-800)"},[Ae.workflow]:{icon:"list-tree",label:"Workflow",color:"var(--color-semantic-warning-700)"},[Ae.link]:{icon:"link",label:"Link",color:"var(--color-semantic-info-700)"}},La=({resources:e,isLoading:t=!1,error:s=null,onOpenResource:r})=>n.jsxs("section",{className:"agent-workspace__panel agent-workspace__panel--documents","aria-label":"Resources",children:[n.jsxs("div",{className:"agent-workspace__panel-header",children:[n.jsx(c.Heading,{level:4,children:"Resources"}),n.jsx("span",{className:"agent-workspace__panel-count",children:e.length})]}),n.jsx("div",{className:"agent-workspace__panel-body","aria-live":"polite",children:n.jsxs(Ft,{children:[t&&n.jsxs("div",{className:"agent-workspace__loading",children:[n.jsx(c.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-workspace__task-icon--spinning",screenReaderText:"Loading resources"}),n.jsx("span",{children:"Loading resources…"})]}),!t&&s&&n.jsx("p",{className:"agent-workspace__error",role:"alert",children:s}),!t&&!s&&e.length>0&&n.jsx("ul",{className:"agent-workspace__resource-list","aria-label":"Agent resources",children:e.map(i=>{const o=Oa[i.type],l=i.misRecordUrl;return n.jsx("li",{className:"agent-workspace__resource",children:l?n.jsx("a",{className:"agent-workspace__resource-card",href:l,target:"_blank",rel:"noreferrer",onClick:m=>{m.preventDefault(),r(i)},children:n.jsx(Ln,{resource:i,config:o,external:!0})}):n.jsx("button",{type:"button",className:"agent-workspace__resource-card",onClick:()=>r(i),children:n.jsx(Ln,{resource:i,config:o})})},i.id)})}),!t&&!s&&e.length===0&&n.jsx("p",{className:"agent-workspace__empty",children:"No resources yet."})]})})]}),Ln=({resource:e,config:t,external:s=!1})=>n.jsxs(n.Fragment,{children:[n.jsx("span",{className:`agent-workspace__resource-icon agent-workspace__resource-icon--${e.type}`,children:n.jsx(c.Icon,{name:t.icon,size:16,color:t.color,screenReaderText:`${t.label}:`})}),n.jsx("span",{className:"agent-workspace__resource-content",children:n.jsxs("span",{className:"agent-workspace__resource-top",children:[n.jsx("span",{className:"agent-workspace__resource-name",children:e.title}),n.jsx("span",{className:`agent-workspace__resource-badge agent-workspace__resource-badge--${e.type}`,children:t.label})]})}),s&&n.jsx(c.Icon,{name:"external-link",size:12,color:"var(--color-grey-500)",screenReaderText:"Opens in a new tab",className:"agent-workspace__resource-open"})]}),on=e=>{const t=Date.parse(e);return Number.isFinite(t)?t:0},Pa=new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"long",year:"numeric",hour:"numeric",minute:"2-digit"}),cn=e=>{const t=new Date(e);return Number.isFinite(t.getTime())?Pa.format(t):e},Pn=e=>e.replace(/[A-Za-z0-9]+(?:[_-][A-Za-z0-9]+)+/g,t=>t.split(/[_-]/).map(s=>s.charAt(0).toUpperCase()+s.slice(1).toLowerCase()).join(" ")),Mn=e=>{const s=e.replace(/[A-Za-z0-9]+(?:[_-][A-Za-z0-9]+)+/g,r=>r.split(/[_-]/).map(i=>i.toLowerCase()).join(" ")).toLowerCase();return s&&s.charAt(0).toUpperCase()+s.slice(1)},Ma=60*60*1e3,ns=60*60*1e3,xt=24*ns,gn=7*xt,Ua=e=>e.type!=="message-sent",Da=e=>{if(e==null||e<=0)return null;if(e%86400===0){const s=e/86400;return s===1?"every day":`every ${s} days`}if(e%3600===0){const s=e/3600;return s===1?"every hour":`every ${s} hours`}if(e%60===0){const s=e/60;return s===1?"every minute":`every ${s} minutes`}const t=Math.max(1,Math.round(e/60));return t===1?"every minute":`every ${t} minutes`},$a=e=>{if(e.recurrence==="one_off")return"Scheduled to run once";const t=Da(e.repeatIntervalSeconds);return t?`Repeating ${t}`:"Repeating run scheduled"},Ha=e=>e.recurrence==="one_off"?"scheduled-one-off":"scheduled-repeating",Ba=(e,t,s=[])=>{const r=e.filter(Ua).map((l,m)=>({kind:"action",id:`action-${l.timestamp}-${m}`,timestampMs:on(l.timestamp),item:l})),i=t.map(l=>({kind:"chat",id:l.sessionId,timestampMs:on(l.timestamp),session:l})),o=s.map(l=>({kind:"scheduled",id:`scheduled-${l.scheduleId}`,timestampMs:on(l.dueAt),run:l}));return[...r,...i,...o].sort((l,m)=>l.timestampMs-m.timestampMs||l.id.localeCompare(m.id))},Fa=e=>e>=gn?"weeks":e>=xt?"days":"hours",Ga=e=>{if(e<xt){const r=Math.max(1,Math.round(e/ns));return r===1?"1 hour later":`${r} hours later`}if(e<gn){const r=Math.max(1,Math.round(e/xt));return r===1?"1 day later":`${r} days later`}const t=Math.max(1,Math.round(e/gn));if(t<5)return t===1?"1 week later":`${t} weeks later`;const s=Math.max(1,Math.round(e/(30*xt)));return s===1?"1 month later":`${s} months later`},za=(e,t=Ma)=>{if(e.length===0)return[];const s=[e[0]];for(let r=1;r<e.length;r+=1){const i=e[r-1],o=e[r],l=o.timestampMs-i.timestampMs;l>=t&&s.push({kind:"gap",id:`gap-${i.id}-${o.id}`,durationMs:l,label:Ga(l),size:Fa(l)}),s.push(o)}return s},qa=e=>e.type==="checklist-updated"?"checklist":e.type==="status-transition"?"status":"note",Ka=({timeline:e,isLoading:t,error:s,onOpenChatSession:r})=>{const i=(e==null?void 0:e.actionLog)??[],o=(e==null?void 0:e.chatSessions)??[],l=(e==null?void 0:e.scheduledRuns)??[],m=Ba(i,o,l),h=za(m),k=!t&&!s&&m.length===0;return n.jsxs("section",{className:"agent-workspace__timeline","aria-label":"Agent timeline",children:[t&&n.jsx("p",{className:"agent-workspace__timeline-status",role:"status",children:"Loading timeline…"}),s&&n.jsx("p",{className:"agent-workspace__timeline-status",role:"alert",children:s||Jn}),k&&n.jsx("p",{className:"agent-workspace__timeline-status",role:"status",children:"No timeline activity yet."}),!t&&!s&&!k&&n.jsxs("div",{className:"agent-timeline",children:[n.jsx("div",{className:"agent-timeline__track","aria-hidden":"true"}),n.jsxs("div",{className:"agent-timeline__station agent-timeline__station--terminus",children:[n.jsx("span",{className:"agent-timeline__station-rail",children:n.jsx("span",{className:"agent-timeline__station-node agent-timeline__station-node--terminus","aria-hidden":"true",children:n.jsx(c.Icon,{name:"arrow-right-from-line",size:16,color:"currentColor"})})}),n.jsx("div",{className:"agent-timeline__label",children:n.jsx("strong",{className:"agent-timeline__label-type",children:"Start"})})]}),h.map(f=>{if(f.kind==="gap")return n.jsxs("div",{className:`agent-timeline__gap agent-timeline__gap--${f.size}`,role:"separator","aria-label":f.label,children:[n.jsx("span",{className:"agent-timeline__gap-rail","aria-hidden":"true",children:n.jsx("span",{className:"agent-timeline__gap-dot"})}),n.jsx("span",{className:"agent-timeline__gap-label",children:f.label})]},f.id);if(f.kind==="chat"){const C=cn(f.session.timestamp),L=n.jsx(c.Icon,{name:"sparkles",size:16,color:"currentColor"});return n.jsxs("div",{className:"agent-timeline__chat-station",children:[r?n.jsx("button",{type:"button",className:"agent-timeline__chat-node","aria-label":`Open chat session from ${C}`,onClick:()=>r(f.session.sessionId),children:L}):n.jsx("span",{className:"agent-timeline__chat-node agent-timeline__chat-node--static","aria-hidden":"true",children:L}),n.jsxs("div",{className:"agent-timeline__label",children:[n.jsx("strong",{className:"agent-timeline__label-type",children:"Chat session"}),n.jsx("span",{className:"agent-timeline__label-time",children:C})]})]},f.id)}if(f.kind==="scheduled"){const C=Ha(f.run),L=f.run.recurrence==="one_off"?"One-off run":"Repeating run";return n.jsxs("div",{className:`agent-timeline__station agent-timeline__station--${C}`,children:[n.jsx("span",{className:"agent-timeline__station-rail",children:n.jsx("span",{className:`agent-timeline__station-node agent-timeline__station-node--${C}`,"aria-hidden":"true",children:n.jsx(c.Icon,{name:"date",size:16,color:"currentColor"})})}),n.jsxs("div",{className:"agent-timeline__label",children:[n.jsx("strong",{className:"agent-timeline__label-type",children:L}),n.jsx("span",{className:"agent-timeline__label-entry",children:$a(f.run)}),n.jsx("span",{className:"agent-timeline__label-time",children:cn(f.run.dueAt)})]})]},f.id)}const{item:w}=f,A=qa(w),E=A==="checklist",p=A==="status";return n.jsxs("div",{className:`agent-timeline__station agent-timeline__station--${A}`,children:[n.jsx("span",{className:"agent-timeline__station-rail",children:n.jsxs("button",{type:"button",className:`agent-timeline__station-node agent-timeline__station-node--${A}`,"aria-label":`${Pn(w.type)}: ${Mn(w.entry)}`,children:[E&&n.jsx(c.Icon,{name:"check-solid",size:16,color:"currentColor"}),p&&n.jsx(c.Icon,{name:"iteration-ccw",size:16,color:"currentColor"})]})}),n.jsxs("div",{className:"agent-timeline__label",children:[n.jsx("strong",{className:"agent-timeline__label-type",children:Pn(w.type)}),n.jsx("span",{className:"agent-timeline__label-entry",children:Mn(w.entry)}),n.jsx("span",{className:"agent-timeline__label-time",children:cn(w.timestamp)})]})]},f.id)}),n.jsxs("div",{className:"agent-timeline__station agent-timeline__station--terminus",children:[n.jsx("span",{className:"agent-timeline__station-rail",children:n.jsx("span",{className:"agent-timeline__station-node agent-timeline__station-node--terminus","aria-hidden":"true",children:n.jsx(c.Icon,{name:"flag",size:16,color:"currentColor"})})}),n.jsx("div",{className:"agent-timeline__label",children:n.jsx("strong",{className:"agent-timeline__label-type",children:"Finish"})})]})]})]})},Va=["I'll get the details and come back to you","Skip this for now"],Ja=e=>{var s;const t=(s=e.prompt)!=null&&s.trim()?e.prompt.trim():`I need a bit more from you on "${e.task}". ${e.description} What can you tell me?`;return{id:`clarification-${Date.now()}`,author:se.agent,text:t,followUpPrompts:e.clarificationPrompts??Va}},Ya=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),Wa=e=>e.kind===qn.user_file?`<strong>${Ya(e.text)}</strong>`:e.text,we=e=>({id:e.id,text:Wa(e),type:e.author===se.user?Ye.CHAT_RESPONSE_TYPE_USER:e.author===se.system?Ye.CHAT_RESPONSE_TYPE_INFO:Ye.CHAT_RESPONSE_TYPE_AGENT,...e.followUpPrompts?{followUpPrompts:e.followUpPrompts}:{}}),mn="MESSAGE_TYPE_REPOLL",ss="agentUi:update",pn="arbor-agent-",ke={all:"ALL",checklist:"CHECKLIST",resources:"RESOURCES",chat:"CHAT",timeline:"TIMELINE"},Xa=new Set(Object.values(ke)),as=(e,t)=>`${e.endsWith("-")?e:`${e}-`}${t}`,Za=e=>typeof e=="string"&&Xa.has(e)?e:ke.all,Qa=e=>{if(!e||typeof e!="object")return null;const t=e;return t.type!==mn?null:{type:mn,target:Za(t.target)}},rs=e=>{const t=Array.isArray(e)?e:[e],s=[];for(const r of t){const i=Qa(r);i&&s.push(i)}return s},er=({enabled:e,channelPrefix:t,agentId:s,subscribeToPusher:r,onRepoll:i})=>{const o=a.useRef(i),l=t==null?void 0:t.trim(),m=!!(e&&r&&l&&s.trim());return a.useEffect(()=>{o.current=i},[i]),a.useEffect(()=>{if(!m||!r||!l)return;const h=r(as(l,s),ss,k=>{for(const f of rs(k))o.current(f.target)});return()=>{h()}},[m,l,s,r]),m};class De extends Error{constructor(t,s,r){super(r??`Agent service request failed (${t})`),this.name="AgentServiceError",this.status=t,this.detail=s}}const tr="/api/v1",B={agentDefinitions:"/agent-definitions",agents:"/agents",conversations:"/conversations",tripOptions:"/trip-options",demoDataset:"/demo/dataset"},z={GET:"GET",POST:"POST",PATCH:"PATCH",DELETE:"DELETE"},nr={error:"error"},sr={user:"user"},Ue={acceptJson:"application/json",acceptHtml:"text/html",acceptEventStream:"text/event-stream",contentTypeJson:"application/json",arborApplicationUrl:"X-Arbor-Application-Url"},ar=100,is=e=>{switch(e){case sn.paused:return N.paused;case sn.complete:return N.complete;case N.hitl:return N.hitl;case sn.active:case N["generating-a-response"]:return N["generating-a-response"];default:return N["generating-a-response"]}},ls=e=>{switch(e){case an.requires_attention:return F.hitl;case an.in_progress:case an.available:return F["generating-a-response"];case F.failed:case F.complete:case F.hitl:case F["generating-a-response"]:return e;default:return F["generating-a-response"]}},_n=e=>({ref:e.name,display_name:e.display_name,agent_intent:e.agent_intent??"",description:e.description}),rr=e=>({id:e.id,name:e.name,...e.has_run_before?{hasRunBefore:e.has_run_before}:{}}),ir=new Set(Object.values(Ae)),lr=e=>ir.has(e)?e:Ae.document_html,os=e=>({id:e.id,type:lr(e.type),title:e.title,createdDatetime:e.created_datetime,lastUpdatedDatetime:e.last_updated_datetime,misRecordUrl:e.mis_record_url}),cs=e=>({resources:e.resources.map(os),pageNumber:e.page_number,pageSize:e.page_size,totalRecords:e.total_records}),us=e=>({actionLog:(e.action_log??[]).map(t=>({timestamp:t.timestamp,type:t.type,entry:t.entry,origin:t.origin})),chatSessions:(e.chat_sessions??[]).map(t=>({sessionId:t.session_id,timestamp:t.timestamp})),scheduledRuns:(e.scheduled_runs??[]).map(t=>({scheduleId:t.schedule_id,dueAt:t.due_at,recurrence:t.recurrence,repeatIntervalSeconds:t.repeat_interval_seconds,wakePrompt:t.wake_prompt}))}),Ne=e=>{var s;const t=e.invocation_id??e.id;return{id:e.id,invocation_id:t,agent_definition_ref:e.agent_definition_ref,...e.agent_intent?{agent_intent:e.agent_intent}:{},invocation_name:((s=e.invocation_name)==null?void 0:s.trim())||e.agent_definition_ref,application_id:e.application_id,...e.application_name?{application_name:e.application_name}:{},created_by:e.created_by,status:is(e.status),archivedAt:e.archived_at??null,context_ref:e.context_ref??null,checklist_ref:e.checklist_ref??null}},fn=e=>{var t;return{task:e.item??e.task??e.name??e.label??ga,status:ls(e.status),description:e.description??"",...e.prompt?{prompt:e.prompt}:{},...(t=e.follow_up_prompts)!=null&&t.length?{clarificationPrompts:e.follow_up_prompts}:{}}},or=e=>Array.isArray(e)?e:e.checklist_items??e.checklist??e.items??[],vn=(e,t,s)=>{var o;const r=!Array.isArray(t)&&(t.opening_message||(o=t.opening_follow_up_prompts)!=null&&o.length)?t:s,i=r?At(r):void 0;return{invocation_id:e,checklist:or(t).map(fn),...i?{openingMessage:i}:{}}},ds=(e,t)=>{const s=At(t);return{invocation_id:t.invocation_id??e,checklist:(t.checklist_items??[]).map(fn),...s?{openingMessage:s}:{}}},At=e=>{var s,r;const t=(s=e.opening_message)==null?void 0:s.trim();if(t)return{id:Vn,author:se.agent,text:t,...(r=e.opening_follow_up_prompts)!=null&&r.length?{followUpPrompts:e.opening_follow_up_prompts}:{}}},cr=e=>{try{const t=JSON.parse(e);if(Array.isArray(t)){const s=t.filter(r=>!!r&&typeof r=="object"&&typeof r.text=="string").map(r=>r.text);if(s.length>0)return s.join(`
2
- `)}}catch{}return e},ur=e=>{const t=e.trim();return t.length>0?`File upload
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),a=require("react"),W=require("classnames"),o=require("@arbor-education/design-system.components"),Je=require("@arbor-education/ask-arbor-chat-panel"),N={"generating-a-response":"generating-a-response",hitl:"hitl",paused:"paused",complete:"complete"},M={"generating-a-response":"generating-a-response",to_do:"to_do",hitl:"hitl",complete:"complete",failed:"failed"},H={briefing:"briefing",running:"running",paused:"paused",complete:"complete"},ne={agent:"agent",user:"user",system:"system"},we={document_html:"document_html",mis_record:"mis_record",workflow:"workflow",file:"file",user_file:"user_file",link:"link"},qs={user_file:"user_file"},is={active:"active",complete:"complete",paused:"paused"},xt={in_progress:"in_progress",to_do:"to_do",requires_attention:"requires_attention",waiting_on_human:"waiting_on_human",available:"available"},Me={[M.complete]:{label:"Complete",icon:"circle-check",color:"var(--color-semantic-success-600)"},[M.failed]:{label:"Failed",icon:"circle-x",color:"var(--color-semantic-destructive-600)"},[M.hitl]:{label:"Requires attention",icon:"triangle-alert",color:"var(--color-semantic-warning-600)"},[M["generating-a-response"]]:{label:"In progress",icon:"loader",color:"var(--color-brand-600)",spin:!0},[M.to_do]:{label:"To do",icon:"sparkles",color:"var(--color-brand-600)"}},Ks="var(--color-grey-600)",kt={[N["generating-a-response"]]:{status:N["generating-a-response"],title:"Active",dotColour:"green",statusIcon:{name:"sparkles",color:Me["generating-a-response"].color}},[N.hitl]:{status:N.hitl,title:"Requires attention",dotColour:"orange",statusIcon:{name:Me.hitl.icon,color:Me.hitl.color}},[N.paused]:{status:N.paused,title:"Paused",dotColour:"green",statusIcon:{name:"circle-x",color:Ks}},[N.complete]:{status:N.complete,title:"Complete",dotColour:"green",dotModifier:"grey-dark",statusIcon:{name:Me.complete.icon,color:Me.complete.color}}},zn={name:"archive",color:Ks},qn=[N["generating-a-response"],N.hitl,N.complete],Kn="m4",Vn="1",Vs="msg-opening",Ft="Unable to load agent tasks. Please try again.",Jn="Unable to load context.",Yn="Unable to load the resources for this agent",Wn="Unable to load this document. Please try again.",Js="Unable to load the timeline for this agent",Xn="Unable to pause the agent. Please try again.",hs="Unable to archive the agent. Please try again.",Zn="Archive this agent?",Qn="Archiving files this agent away and stops its work. You can restore it later as paused; it will not run until you resume it. Chat is not available while it is archived. You can still open it from Archived to view the timeline and resources.",ea="This agent is still in progress.",gs="Unable to unarchive the agent. Please try again.",ta="Restore this agent?",sa="Restoring returns this agent to the board as paused. It will not run chats or scheduled work until you resume it.",na="Unable to delete the agent. Please try again.",aa="You do not have permission to delete this agent.",ra="This agent must be paused or archived before it can be deleted.",ia="This agent could not be found. It may have already been deleted.",la="Delete this agent?",oa="Deleting cannot be undone. This permanently removes the agent and its related data. It will not appear in Archived and cannot be restored.",ca="Unable to resume the agent. Please try again.",ua="The agent was resumed but could not be woken. Send a message to continue.",Ts="You have been resumed after being paused. Reassess your current progress and continue your work from where you left off.",da="Unable to rename the agent. Please try again.",ha="Something went wrong. Please try again.",Ys="Unable to load agents. Please try again.",Ve="Loading tasks…",Is="Loading agents…",ga="Task",pa={[H.briefing]:"Briefing",[H.running]:"Working",[H.paused]:"Paused",[H.complete]:"Complete"},ma=[N["generating-a-response"],N.hitl,N.complete],_a={[N["generating-a-response"]]:"Agents currently working on tasks for you.",[N.hitl]:"Agents that need your input before they can continue.",[N.paused]:"Agents that are paused until you resume them.",[N.complete]:"Agents that have finished their work."},fa=()=>s.jsxs("svg",{className:"agent-view__empty-illustration",viewBox:"0 0 360 240",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Preview of the agents board layout",children:[s.jsx("rect",{x:"0",y:"0",width:"360",height:"240",rx:"12",fill:"var(--color-grey-100)"}),s.jsx("rect",{x:"16",y:"16",width:"100",height:"208",rx:"8",fill:"var(--card-default-color-background)",stroke:"var(--card-default-color-border)"}),s.jsx("rect",{x:"130",y:"16",width:"100",height:"208",rx:"8",fill:"var(--card-default-color-background)",stroke:"var(--card-default-color-border)"}),s.jsx("rect",{x:"244",y:"16",width:"100",height:"208",rx:"8",fill:"var(--card-default-color-background)",stroke:"var(--card-default-color-border)"}),s.jsx("rect",{x:"28",y:"52",width:"76",height:"36",rx:"6",fill:"var(--color-grey-050)"}),s.jsx("rect",{x:"28",y:"96",width:"76",height:"36",rx:"6",fill:"var(--color-grey-050)"}),s.jsx("rect",{x:"142",y:"52",width:"76",height:"36",rx:"6",fill:"var(--color-semantic-warning-050)"}),s.jsx("rect",{x:"256",y:"52",width:"76",height:"36",rx:"6",fill:"var(--color-grey-050)"}),s.jsx("circle",{cx:"40",cy:"70",r:"4",fill:"var(--color-brand-600)"}),s.jsx("circle",{cx:"40",cy:"114",r:"4",fill:"var(--color-brand-600)"}),s.jsx("circle",{cx:"154",cy:"70",r:"4",fill:"var(--color-semantic-warning-600)"}),s.jsx("circle",{cx:"256",cy:"70",r:"4",fill:"var(--color-grey-400)"})]}),va=({status:e})=>{const t=kt[e];return t.statusIcon?s.jsx(o.Icon,{name:t.statusIcon.name,size:16,color:t.statusIcon.color,screenReaderText:t.title}):s.jsx(o.Dot,{colour:t.dotColour,label:t.title})},xa=()=>s.jsxs("section",{className:"agent-view__empty","aria-label":"About the agents board",children:[s.jsxs("div",{className:"agent-view__empty-content",children:[s.jsx(o.Heading,{level:4,children:"Your agents board"}),s.jsx("p",{className:"agent-view__empty-lead",children:"When you start an agent, it appears here so you can track progress at a glance. Agents move between columns as their status changes."}),s.jsx("ul",{className:"agent-view__empty-columns",children:ma.map(e=>{const t=kt[e];return s.jsxs("li",{className:"agent-view__empty-column",children:[s.jsx("span",{className:"agent-view__empty-column-indicator",children:s.jsx(va,{status:e})}),s.jsxs("span",{className:"agent-view__empty-column-text",children:[s.jsx("span",{className:"agent-view__empty-column-title",children:t.title}),s.jsx("span",{className:"agent-view__empty-column-description",children:_a[e]})]})]},e)})}),s.jsxs("p",{className:"agent-view__empty-hint",children:["Use ",s.jsx("strong",{children:"Start an agent"})," above to begin."]})]}),s.jsx("div",{className:"agent-view__empty-visual",children:s.jsx(fa,{})})]}),wa=()=>({inProgress:[],needsInput:[],complete:[],failed:[],tasks:[]}),Aa=(e,t)=>({...e,children:t.length>0?t:void 0}),Ws=e=>{const t=[],n=[],r=[],i=[],c=[];for(const l of e){const p=l.children?Ws(l.children):wa();if(t.push(...p.inProgress),n.push(...p.needsInput),r.push(...p.complete),i.push(...p.failed),l.status===M.hitl){n.push({...l,children:void 0});continue}if(l.status===M.complete){r.push({...l,children:void 0});continue}if(l.status===M.failed){i.push({...l,children:void 0});continue}if(l.status===M["generating-a-response"]){t.push({...l,children:void 0}),c.push(...p.tasks);continue}c.push(Aa(l,p.tasks))}return{inProgress:t,needsInput:n,complete:r,failed:i,tasks:c}},Os=e=>e===M.hitl?0:e===M.complete?1:e===M.failed?2:3,ka=e=>e.map((t,n)=>({item:t,index:n})).sort((t,n)=>{const r=Os(t.item.status)-Os(n.item.status);return r!==0?r:t.index-n.index}).map(({item:t})=>t),ls=2,ya=e=>{if(!e)return{canScrollUp:!1,canScrollDown:!1};const t=e.scrollHeight-e.clientHeight;return t<=ls?{canScrollUp:!1,canScrollDown:!1}:{canScrollUp:e.scrollTop>ls,canScrollDown:e.scrollTop<t-ls}},Na=(e,t)=>{if(!e||!t)return null;const n=e.getBoundingClientRect(),r=t.getBoundingClientRect();return{top:r.top-n.top,left:r.left-n.left,width:r.width,height:r.height}},zt=({children:e,className:t,contentClassName:n,scrollSelector:r,style:i,"aria-label":c})=>{const l=a.useRef(null),p=a.useRef(null),[h,y]=a.useState(!1),[f,w]=a.useState(!1),[A,j]=a.useState(null),g=()=>{var I;return r?((I=l.current)==null?void 0:I.querySelector(r))??null:p.current},C=()=>{const I=g(),v=ya(I);if(y(m=>m===v.canScrollUp?m:v.canScrollUp),w(m=>m===v.canScrollDown?m:v.canScrollDown),r){const m=Na(l.current,I);j(x=>(x==null?void 0:x.top)===(m==null?void 0:m.top)&&(x==null?void 0:x.left)===(m==null?void 0:m.left)&&(x==null?void 0:x.width)===(m==null?void 0:m.width)&&(x==null?void 0:x.height)===(m==null?void 0:m.height)?x:m)}else j(m=>m===null?m:null)};a.useLayoutEffect(()=>{C()}),a.useEffect(()=>{const I=l.current;if(!I)return;let v=null,m=null;const x=()=>{v==null||v.removeEventListener("scroll",C),m==null||m.disconnect(),m=null,v=null},E=J=>{if(J===v){C();return}if(x(),v=J,!v){C();return}v.addEventListener("scroll",C,{passive:!0}),m=new ResizeObserver(()=>C()),m.observe(v),v.firstElementChild instanceof HTMLElement&&m.observe(v.firstElementChild),C()};E(g());const O=new MutationObserver(()=>{E(g())});return O.observe(I,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",C),()=>{window.removeEventListener("resize",C),O.disconnect(),x()}},[r]);const L=I=>{const v=g();if(!v)return;const m=Math.max(v.clientHeight*.75,120);v.scrollBy({top:I==="up"?-m:m,behavior:"smooth"})},U=s.jsxs(s.Fragment,{children:[h&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"scrollable-region__fade scrollable-region__fade--top","aria-hidden":"true"}),s.jsx("button",{type:"button",className:"scrollable-region__edge scrollable-region__edge--top","aria-label":"Scroll up",onClick:()=>L("up"),children:s.jsx(o.Icon,{name:"chevron-up",size:16,color:"currentColor"})})]}),f&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"scrollable-region__fade scrollable-region__fade--bottom","aria-hidden":"true"}),s.jsx("button",{type:"button",className:"scrollable-region__edge scrollable-region__edge--bottom","aria-label":"Scroll down",onClick:()=>L("down"),children:s.jsx(o.Icon,{name:"chevron-down",size:16,color:"currentColor"})})]})]});return s.jsx("div",{ref:l,className:W("scrollable-region",t),style:i,"aria-label":c,children:r?s.jsxs(s.Fragment,{children:[e,A&&(h||f)&&s.jsx("div",{className:"scrollable-region__overlay",style:{top:A.top,left:A.left,width:A.width,height:A.height},children:U})]}):s.jsxs(s.Fragment,{children:[U,s.jsx("div",{ref:p,className:W("scrollable-region__viewport",n),children:e})]})})},Ca=48,ba=({checklist:e})=>{const t=a.useRef(null),n=a.useRef(!1);return a.useLayoutEffect(()=>{const r=t.current;if(!r)return;const i=r.scrollHeight-r.scrollTop-r.clientHeight;(!n.current||i<=Ca)&&(r.scrollTop=r.scrollHeight,n.current=!0)},[e]),e.length===0?s.jsx("p",{className:"agent-view__progress-empty",children:"No tasks to display."}):s.jsx(zt,{className:"agent-view__progress-scroll",scrollSelector:".agent-view__progress-list",children:s.jsx("ul",{ref:t,className:"agent-view__progress-list","aria-label":"Agent tasks",children:ka(e).map(r=>{const i=Me[r.status];return s.jsxs("li",{className:W("agent-view__progress-item",`agent-view__progress-item--${r.status.replace(/_/g,"-")}`),children:[s.jsx(o.Icon,{name:i.icon,size:16,color:i.color,className:i.spin?"agent-view__progress-icon--spinning":void 0,screenReaderText:`${i.label}:`}),s.jsxs("div",{className:"agent-view__progress-item-content",children:[s.jsx("span",{className:"agent-view__progress-label",children:r.task}),r.status!==M.complete&&s.jsx("span",{className:"agent-view__progress-description",children:r.description})]})]},r.task)})})})},Xs=({open:e,isInProgress:t,isArchiving:n,error:r,onCancel:i,onConfirm:c})=>{const l=a.useId(),p=a.useId();return s.jsxs(o.Modal,{open:e,closeHandler:i,className:"archive-agent-confirm",children:[s.jsx(o.Modal.Header,{className:"archive-agent-confirm__header",children:s.jsx(o.Modal.Title,{id:l,children:Zn})}),s.jsxs(o.Modal.Body,{className:"archive-agent-confirm__body",children:[s.jsxs("div",{role:"alertdialog","aria-labelledby":l,"aria-describedby":p,children:[s.jsx("p",{id:p,className:"archive-agent-confirm__lead",children:Qn}),t?s.jsx("p",{className:"archive-agent-confirm__progress",children:ea}):null,r?s.jsx("p",{className:"archive-agent-confirm__error",role:"alert",children:r}):null]}),s.jsxs("div",{className:"archive-agent-confirm__actions",children:[s.jsx(o.Button,{variant:"secondary",size:"S",disabled:n,onClick:i,children:"Cancel"}),s.jsx(o.Button,{variant:"secondary-destructive",size:"S",disabled:n,onClick:c,children:n?"Archiving…":"Archive"})]})]})]})},Zs=({open:e,isDeleting:t,error:n,onCancel:r,onConfirm:i})=>{const c=a.useId(),l=a.useId();return s.jsxs(o.Modal,{open:e,closeHandler:r,className:"archive-agent-confirm",children:[s.jsx(o.Modal.Header,{className:"archive-agent-confirm__header",children:s.jsx(o.Modal.Title,{id:c,children:la})}),s.jsxs(o.Modal.Body,{className:"archive-agent-confirm__body",children:[s.jsxs("div",{role:"alertdialog","aria-labelledby":c,"aria-describedby":l,children:[s.jsx("p",{id:l,className:"archive-agent-confirm__lead",children:oa}),n?s.jsx("p",{className:"archive-agent-confirm__error",role:"alert",children:n}):null]}),s.jsxs("div",{className:"archive-agent-confirm__actions",children:[s.jsx(o.Button,{variant:"secondary",size:"S",disabled:t,onClick:r,children:"Cancel"}),s.jsx(o.Button,{variant:"secondary-destructive",size:"S",disabled:t,onClick:i,children:t?"Deleting…":"Delete"})]})]})]})},Qs=({open:e,isUnarchiving:t,error:n,onCancel:r,onConfirm:i})=>{const c=a.useId(),l=a.useId();return s.jsxs(o.Modal,{open:e,closeHandler:r,className:"archive-agent-confirm",children:[s.jsx(o.Modal.Header,{className:"archive-agent-confirm__header",children:s.jsx(o.Modal.Title,{id:c,children:ta})}),s.jsxs(o.Modal.Body,{className:"archive-agent-confirm__body",children:[s.jsxs("div",{role:"alertdialog","aria-labelledby":c,"aria-describedby":l,children:[s.jsx("p",{id:l,className:"archive-agent-confirm__lead",children:sa}),n?s.jsx("p",{className:"archive-agent-confirm__error",role:"alert",children:n}):null]}),s.jsxs("div",{className:"archive-agent-confirm__actions",children:[s.jsx(o.Button,{variant:"secondary",size:"S",disabled:t,onClick:r,children:"Cancel"}),s.jsx(o.Button,{variant:"secondary",size:"S",disabled:t,onClick:i,children:t?"Restoring…":"Restore"})]})]})]})},Sa=e=>e!==void 0&&e.some(t=>t.status===M.hitl),en=e=>e!==void 0&&e.length>0&&e.every(t=>t.status===M.complete),os=(e,t)=>e.status===N.paused?en(t)?N.complete:N["generating-a-response"]:Sa(t)?N.hitl:e.status===N.complete?N.complete:e.status===N.hitl?N.hitl:N["generating-a-response"],ja=({prompts:e,classNamePrefix:t="agent-workspace",onSelect:n})=>e.length===0?null:s.jsx("div",{className:`${t}__chips`,children:e.map(r=>s.jsx("button",{type:"button",className:`${t}__chip`,onClick:()=>n(r),children:r},r))});class Ea{constructor(t,n){this.connector=t,this.canSend=n.canSend,this.onTurn=n.onTurn,this.onAwaitingChange=n.onAwaitingChange}get canRate(){return!1}get canLoadHistory(){return!1}get canListInteractions(){return!1}get canSendNotification(){return!1}get ratingPopupUrls(){return{}}async sendMessage(t){var n,r;if(!this.canSend())return null;(n=this.onAwaitingChange)==null||n.call(this,!0);try{const i=await this.connector.sendMessage(t.userMessage,t.uploadFiles);return this.onTurn(i),{id:i.message.id,text:i.message.text,type:Je.CHAT_RESPONSE_TYPE_AGENT,...i.message.followUpPrompts?{followUpPrompts:i.message.followUpPrompts}:{}}}catch{return{id:`error-${Date.now()}`,text:ha,type:Je.CHAT_RESPONSE_TYPE_ERROR}}finally{(r=this.onAwaitingChange)==null||r.call(this,!1)}}async loadHistory(t){return null}async listInteractions(){return null}async rateMessage(t){}async sendNotification(t){return!1}}const Ra=({connector:e,phase:t,chatHistory:n,chatSessionKey:r,startQuery:i,clarificationMessage:c,enableUpload:l=!1,onTurn:p,onAwaitingChange:h,onClarificationPrompt:y,onDismissClarification:f})=>{const w=a.useMemo(()=>new Ea(e,{canSend:()=>t===H.running,onTurn:p,onAwaitingChange:h}),[e,t,p,h]),A=t!==H.running,j=t===H.running;return s.jsxs("section",{className:"agent-workspace__chat-body","aria-label":"Chat",children:[c&&s.jsxs("div",{className:"agent-workspace__clarification",role:"region","aria-label":"Agent question",children:[s.jsx("p",{className:"agent-workspace__clarification-text",children:c.text}),c.followUpPrompts&&s.jsx(ja,{prompts:c.followUpPrompts,onSelect:y}),s.jsx("button",{type:"button",className:"agent-workspace__clarification-dismiss",onClick:f,children:"Dismiss"})]}),s.jsx("div",{className:"agent-workspace__ask-arbor",children:s.jsx(zt,{scrollSelector:".chat-panel-message-list",children:s.jsx(Je.ChatPanel,{connector:w,chatHistory:n,startQuery:i,lockConversation:A,enableUpload:l,speechEnabled:j,speechLanguage:"en-GB",speechSubmissionDelay:1e3,slashMenuItems:[],menuContent:[],introHeading:"Message your agent",introBody:"Ask questions, share trip details, or paste a link. The agent will update the checklist as it works.",placeholder:j?"Message the agent, paste a link, or attach a file…":"The agent is not accepting messages."},r)})}),t===H.paused&&s.jsxs("div",{className:"agent-workspace__notice",role:"status",children:[s.jsx(o.Icon,{name:"circle-alert",size:16,color:"var(--color-semantic-warning-600)"}),s.jsx("span",{children:"The agent is paused. Its progress is saved in the checklist."})]}),t===H.complete&&s.jsxs("div",{className:"agent-workspace__notice",role:"status",children:[s.jsx(o.Icon,{name:"party-popper",size:16,color:"var(--color-semantic-success-600)"}),s.jsx("span",{children:"The agent has finished."})]})]})},tn=({item:e,depth:t,canRequestInput:n,onAttentionItemClick:r})=>{const i=Me[e.status],c=e.status.replace(/_/g,"-"),l=e.status===M.hitl&&n&&r,p=s.jsxs("div",{className:"agent-workspace__task-row",children:[s.jsx(o.Icon,{name:i.icon,size:16,color:i.color,className:i.spin?"agent-workspace__task-icon--spinning":void 0,screenReaderText:`${i.label}:`}),s.jsxs("div",{className:"agent-workspace__task-content",children:[s.jsx("span",{className:"agent-workspace__task-label",children:e.task}),e.status!==M.complete&&e.description&&s.jsx("span",{className:"agent-workspace__task-description",children:e.description})]})]});return s.jsxs("li",{className:W("agent-workspace__task",`agent-workspace__task--${c}`,{"agent-workspace__task--child":t>0}),children:[l?s.jsx("button",{type:"button",className:"agent-workspace__task-button","aria-label":`Provide input for ${e.task}`,onClick:()=>r(e),children:p}):p,e.children&&e.children.length>0&&s.jsx("ul",{className:"agent-workspace__task-children",children:e.children.map(h=>s.jsx(tn,{item:h,depth:t+1,canRequestInput:n,onAttentionItemClick:r},h.task))})]})},wt=({items:e,ariaLabel:t,canRequestInput:n,onAttentionItemClick:r})=>s.jsx("ul",{className:"agent-workspace__task-list","aria-label":t,children:e.map(i=>s.jsx(tn,{item:i,depth:0,canRequestInput:n,onAttentionItemClick:r},i.task))}),Ta=({checklist:e,isLoading:t,error:n,phase:r,canRequestInput:i,onAttentionItemClick:c,adminMode:l=!1,context:p,contextLoaded:h=!1,contextLoading:y=!1,contextError:f=null,onContextSelect:w})=>{const[A,j]=a.useState("checklist"),g=a.useMemo(()=>e?Ws(e):null,[e]),C=()=>{j("context"),w==null||w()};return s.jsxs("section",{className:"agent-workspace__panel agent-workspace__panel--checklist","aria-label":"Checklist",children:[s.jsx("div",{className:"agent-workspace__panel-header",children:l?s.jsxs(o.Tabs,{className:"agent-workspace__checklist-tabs","aria-label":"Checklist panel",children:[s.jsx(o.Tabs.Item,{active:A==="checklist",tabElementProps:{id:"agent-checklist-tab-checklist",onClick:()=>j("checklist")},children:"Checklist"}),s.jsx(o.Tabs.Item,{active:A==="context",tabElementProps:{id:"agent-checklist-tab-context",onClick:C},children:"Context"})]}):s.jsx(o.Heading,{level:4,children:"Checklist"})}),s.jsx("div",{className:"agent-workspace__panel-body","aria-live":"polite",children:s.jsx(zt,{children:A==="context"?s.jsxs(s.Fragment,{children:[y&&s.jsxs("div",{className:"agent-workspace__loading",children:[s.jsx(o.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-workspace__task-icon--spinning",screenReaderText:"Loading context"}),s.jsx("span",{children:"Loading context…"})]}),!y&&f&&s.jsx("p",{className:"agent-workspace__error",role:"alert",children:f}),!y&&!f&&h&&p==null&&s.jsx("p",{className:"agent-workspace__empty",children:"No context available."}),!y&&!f&&h&&p!==null&&p!==void 0&&s.jsx("pre",{className:"agent-workspace__context-json",children:JSON.stringify(p,null,2)})]}):s.jsxs(s.Fragment,{children:[t&&s.jsxs("div",{className:"agent-workspace__loading",children:[s.jsx(o.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-workspace__task-icon--spinning",screenReaderText:Ve}),s.jsx("span",{children:Ve})]}),!t&&n&&s.jsx("p",{className:"agent-workspace__error",role:"alert",children:n}),!t&&!n&&g&&s.jsxs(s.Fragment,{children:[g.inProgress.length>0&&s.jsxs("div",{className:"agent-workspace__task-group",children:[(g.needsInput.length>0||g.tasks.length>0||g.failed.length>0||g.complete.length>0)&&s.jsx("p",{className:"agent-workspace__task-group-label",children:"In progress"}),s.jsx(wt,{items:g.inProgress,ariaLabel:"In progress",canRequestInput:i,onAttentionItemClick:c})]}),g.needsInput.length>0&&s.jsxs("div",{className:W("agent-workspace__task-group",{"agent-workspace__task-group--following":g.inProgress.length>0}),children:[s.jsx("p",{className:"agent-workspace__task-group-label",children:"Needs your input"}),s.jsx(wt,{items:g.needsInput,ariaLabel:"Tasks needing your input",canRequestInput:i,onAttentionItemClick:c})]}),g.failed.length>0&&s.jsxs("div",{className:W("agent-workspace__task-group",{"agent-workspace__task-group--following":g.inProgress.length>0||g.needsInput.length>0}),children:[(g.inProgress.length>0||g.needsInput.length>0||g.tasks.length>0||g.complete.length>0)&&s.jsx("p",{className:"agent-workspace__task-group-label",children:"Failed"}),s.jsx(wt,{items:g.failed,ariaLabel:"Failed tasks",canRequestInput:i,onAttentionItemClick:c})]}),g.tasks.length>0&&s.jsxs("div",{className:W("agent-workspace__task-group",{"agent-workspace__task-group--following":g.inProgress.length>0||g.needsInput.length>0||g.failed.length>0}),children:[(g.inProgress.length>0||g.needsInput.length>0||g.failed.length>0||g.complete.length>0)&&s.jsx("p",{className:"agent-workspace__task-group-label",children:"To Do"}),s.jsx(wt,{items:g.tasks,ariaLabel:"Upcoming tasks",canRequestInput:i,onAttentionItemClick:c})]}),g.complete.length>0&&s.jsxs("div",{className:W("agent-workspace__task-group",{"agent-workspace__task-group--following":g.inProgress.length>0||g.needsInput.length>0||g.tasks.length>0||g.failed.length>0}),children:[(g.inProgress.length>0||g.needsInput.length>0||g.tasks.length>0||g.failed.length>0)&&s.jsx("p",{className:"agent-workspace__task-group-label",children:"Completed"}),s.jsx(wt,{items:g.complete,ariaLabel:"Completed tasks",canRequestInput:i,onAttentionItemClick:c})]})]}),!t&&!n&&(!g||g.inProgress.length===0&&g.needsInput.length===0&&g.complete.length===0&&g.failed.length===0&&g.tasks.length===0)&&s.jsx("p",{className:"agent-workspace__empty",children:r===H.briefing?"Tasks will appear here once the agent starts.":"No tasks to display."})]})})})]})},Ia=({resource:e,html:t,isLoading:n,error:r,onClose:i})=>{a.useEffect(()=>{if(!e)return;const l=o.SlideoverUtils.removeSlideover;return o.SlideoverUtils.removeSlideover=()=>{l(),i()},()=>{o.SlideoverUtils.removeSlideover=l}},[e,i]),a.useEffect(()=>{if(!e)return;const l=p=>{p.key==="Escape"&&o.SlideoverUtils.removeSlideover()};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[e]);const c=a.useMemo(()=>e?[{centerHeaderText:!1,children:s.jsxs("div",{className:"resource-preview-slideover__body",children:[n&&s.jsxs("div",{className:"resource-preview-slideover__status",children:[s.jsx(o.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-workspace__task-icon--spinning",screenReaderText:"Loading document"}),s.jsx("span",{children:"Loading document…"})]}),!n&&r&&s.jsx("p",{className:"resource-preview-slideover__error",role:"alert",children:r}),!n&&!r&&t!==null&&s.jsx("iframe",{className:"resource-preview-slideover__frame",title:e.title,sandbox:"",srcDoc:t})]})}]:[],[e,t,n,r]);return s.jsx("div",{className:"resource-preview-slideover",children:s.jsx(o.SlideoverManager,{slideovers:c})})},Oa={[we.mis_record]:{icon:"table",label:"Arbor MIS",color:"var(--color-brand-600)"},[we.document_html]:{icon:"file",label:"Document",color:"var(--color-semantic-caution-800)"},[we.file]:{icon:"file",label:"File",color:"var(--color-semantic-caution-800)"},[we.user_file]:{icon:"upload",label:"File upload",color:"var(--color-semantic-caution-800)"},[we.workflow]:{icon:"list-tree",label:"Workflow",color:"var(--color-semantic-warning-700)"},[we.link]:{icon:"link",label:"Link",color:"var(--color-semantic-info-700)"}},La=({resources:e,isLoading:t=!1,error:n=null,onOpenResource:r})=>s.jsxs("section",{className:"agent-workspace__panel agent-workspace__panel--documents","aria-label":"Resources",children:[s.jsxs("div",{className:"agent-workspace__panel-header",children:[s.jsx(o.Heading,{level:4,children:"Resources"}),s.jsx("span",{className:"agent-workspace__panel-count",children:e.length})]}),s.jsx("div",{className:"agent-workspace__panel-body","aria-live":"polite",children:s.jsxs(zt,{children:[t&&s.jsxs("div",{className:"agent-workspace__loading",children:[s.jsx(o.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-workspace__task-icon--spinning",screenReaderText:"Loading resources"}),s.jsx("span",{children:"Loading resources…"})]}),!t&&n&&s.jsx("p",{className:"agent-workspace__error",role:"alert",children:n}),!t&&!n&&e.length>0&&s.jsx("ul",{className:"agent-workspace__resource-list","aria-label":"Agent resources",children:e.map(i=>{const c=Oa[i.type],l=i.misRecordUrl;return s.jsx("li",{className:"agent-workspace__resource",children:l?s.jsx("a",{className:"agent-workspace__resource-card",href:l,target:"_blank",rel:"noreferrer",onClick:p=>{p.preventDefault(),r(i)},children:s.jsx(Ls,{resource:i,config:c,external:!0})}):s.jsx("button",{type:"button",className:"agent-workspace__resource-card",onClick:()=>r(i),children:s.jsx(Ls,{resource:i,config:c})})},i.id)})}),!t&&!n&&e.length===0&&s.jsx("p",{className:"agent-workspace__empty",children:"No resources yet."})]})})]}),Ls=({resource:e,config:t,external:n=!1})=>s.jsxs(s.Fragment,{children:[s.jsx("span",{className:`agent-workspace__resource-icon agent-workspace__resource-icon--${e.type}`,children:s.jsx(o.Icon,{name:t.icon,size:16,color:t.color,screenReaderText:`${t.label}:`})}),s.jsx("span",{className:"agent-workspace__resource-content",children:s.jsxs("span",{className:"agent-workspace__resource-top",children:[s.jsx("span",{className:"agent-workspace__resource-name",children:e.title}),s.jsx("span",{className:`agent-workspace__resource-badge agent-workspace__resource-badge--${e.type}`,children:t.label})]})}),n&&s.jsx(o.Icon,{name:"external-link",size:12,color:"var(--color-grey-500)",screenReaderText:"Opens in a new tab",className:"agent-workspace__resource-open"})]}),cs=e=>{const t=Date.parse(e);return Number.isFinite(t)?t:0},Pa=new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"long",year:"numeric",hour:"numeric",minute:"2-digit"}),us=e=>{const t=new Date(e);return Number.isFinite(t.getTime())?Pa.format(t):e},Ps=e=>e.replace(/[A-Za-z0-9]+(?:[_-][A-Za-z0-9]+)+/g,t=>t.split(/[_-]/).map(n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase()).join(" ")),Ms=e=>{const n=e.replace(/[A-Za-z0-9]+(?:[_-][A-Za-z0-9]+)+/g,r=>r.split(/[_-]/).map(i=>i.toLowerCase()).join(" ")).toLowerCase();return n&&n.charAt(0).toUpperCase()+n.slice(1)},Ma=60*60*1e3,sn=60*60*1e3,At=24*sn,ps=7*At,Ua=e=>e.type!=="message-sent",Da=e=>{if(e==null||e<=0)return null;if(e%86400===0){const n=e/86400;return n===1?"every day":`every ${n} days`}if(e%3600===0){const n=e/3600;return n===1?"every hour":`every ${n} hours`}if(e%60===0){const n=e/60;return n===1?"every minute":`every ${n} minutes`}const t=Math.max(1,Math.round(e/60));return t===1?"every minute":`every ${t} minutes`},$a=e=>{if(e.recurrence==="one_off")return"Scheduled to run once";const t=Da(e.repeatIntervalSeconds);return t?`Repeating ${t}`:"Repeating run scheduled"},Ha=e=>e.recurrence==="one_off"?"scheduled-one-off":"scheduled-repeating",Ba=(e,t,n=[])=>{const r=e.filter(Ua).map((l,p)=>({kind:"action",id:`action-${l.timestamp}-${p}`,timestampMs:cs(l.timestamp),item:l})),i=t.map(l=>({kind:"chat",id:l.sessionId,timestampMs:cs(l.timestamp),session:l})),c=n.map(l=>({kind:"scheduled",id:`scheduled-${l.scheduleId}`,timestampMs:cs(l.dueAt),run:l}));return[...r,...i,...c].sort((l,p)=>l.timestampMs-p.timestampMs||l.id.localeCompare(p.id))},Fa=e=>e>=ps?"weeks":e>=At?"days":"hours",Ga=e=>{if(e<At){const r=Math.max(1,Math.round(e/sn));return r===1?"1 hour later":`${r} hours later`}if(e<ps){const r=Math.max(1,Math.round(e/At));return r===1?"1 day later":`${r} days later`}const t=Math.max(1,Math.round(e/ps));if(t<5)return t===1?"1 week later":`${t} weeks later`;const n=Math.max(1,Math.round(e/(30*At)));return n===1?"1 month later":`${n} months later`},za=(e,t=Ma)=>{if(e.length===0)return[];const n=[e[0]];for(let r=1;r<e.length;r+=1){const i=e[r-1],c=e[r],l=c.timestampMs-i.timestampMs;l>=t&&n.push({kind:"gap",id:`gap-${i.id}-${c.id}`,durationMs:l,label:Ga(l),size:Fa(l)}),n.push(c)}return n},qa=e=>e.type==="checklist-updated"?"checklist":e.type==="status-transition"?"status":"note",Ka=({timeline:e,isLoading:t,error:n,onOpenChatSession:r})=>{const i=(e==null?void 0:e.actionLog)??[],c=(e==null?void 0:e.chatSessions)??[],l=(e==null?void 0:e.scheduledRuns)??[],p=Ba(i,c,l),h=za(p),y=!t&&!n&&p.length===0;return s.jsxs("section",{className:"agent-workspace__timeline","aria-label":"Agent timeline",children:[t&&s.jsx("p",{className:"agent-workspace__timeline-status",role:"status",children:"Loading timeline…"}),n&&s.jsx("p",{className:"agent-workspace__timeline-status",role:"alert",children:n||Js}),y&&s.jsx("p",{className:"agent-workspace__timeline-status",role:"status",children:"No timeline activity yet."}),!t&&!n&&!y&&s.jsxs("div",{className:"agent-timeline",children:[s.jsx("div",{className:"agent-timeline__track","aria-hidden":"true"}),s.jsxs("div",{className:"agent-timeline__station agent-timeline__station--terminus",children:[s.jsx("span",{className:"agent-timeline__station-rail",children:s.jsx("span",{className:"agent-timeline__station-node agent-timeline__station-node--terminus","aria-hidden":"true",children:s.jsx(o.Icon,{name:"arrow-right-from-line",size:16,color:"currentColor"})})}),s.jsx("div",{className:"agent-timeline__label",children:s.jsx("strong",{className:"agent-timeline__label-type",children:"Start"})})]}),h.map(f=>{if(f.kind==="gap")return s.jsxs("div",{className:`agent-timeline__gap agent-timeline__gap--${f.size}`,role:"separator","aria-label":f.label,children:[s.jsx("span",{className:"agent-timeline__gap-rail","aria-hidden":"true",children:s.jsx("span",{className:"agent-timeline__gap-dot"})}),s.jsx("span",{className:"agent-timeline__gap-label",children:f.label})]},f.id);if(f.kind==="chat"){const C=us(f.session.timestamp),L=s.jsx(o.Icon,{name:"sparkles",size:16,color:"currentColor"});return s.jsxs("div",{className:"agent-timeline__chat-station",children:[r?s.jsx("button",{type:"button",className:"agent-timeline__chat-node","aria-label":`Open chat session from ${C}`,onClick:()=>r(f.session.sessionId),children:L}):s.jsx("span",{className:"agent-timeline__chat-node agent-timeline__chat-node--static","aria-hidden":"true",children:L}),s.jsxs("div",{className:"agent-timeline__label",children:[s.jsx("strong",{className:"agent-timeline__label-type",children:"Chat session"}),s.jsx("span",{className:"agent-timeline__label-time",children:C})]})]},f.id)}if(f.kind==="scheduled"){const C=Ha(f.run),L=f.run.recurrence==="one_off"?"One-off run":"Repeating run";return s.jsxs("div",{className:`agent-timeline__station agent-timeline__station--${C}`,children:[s.jsx("span",{className:"agent-timeline__station-rail",children:s.jsx("span",{className:`agent-timeline__station-node agent-timeline__station-node--${C}`,"aria-hidden":"true",children:s.jsx(o.Icon,{name:"date",size:16,color:"currentColor"})})}),s.jsxs("div",{className:"agent-timeline__label",children:[s.jsx("strong",{className:"agent-timeline__label-type",children:L}),s.jsx("span",{className:"agent-timeline__label-entry",children:$a(f.run)}),s.jsx("span",{className:"agent-timeline__label-time",children:us(f.run.dueAt)})]})]},f.id)}const{item:w}=f,A=qa(w),j=A==="checklist",g=A==="status";return s.jsxs("div",{className:`agent-timeline__station agent-timeline__station--${A}`,children:[s.jsx("span",{className:"agent-timeline__station-rail",children:s.jsxs("button",{type:"button",className:`agent-timeline__station-node agent-timeline__station-node--${A}`,"aria-label":`${Ps(w.type)}: ${Ms(w.entry)}`,children:[j&&s.jsx(o.Icon,{name:"check-solid",size:16,color:"currentColor"}),g&&s.jsx(o.Icon,{name:"iteration-ccw",size:16,color:"currentColor"})]})}),s.jsxs("div",{className:"agent-timeline__label",children:[s.jsx("strong",{className:"agent-timeline__label-type",children:Ps(w.type)}),s.jsx("span",{className:"agent-timeline__label-entry",children:Ms(w.entry)}),s.jsx("span",{className:"agent-timeline__label-time",children:us(w.timestamp)})]})]},f.id)}),s.jsxs("div",{className:"agent-timeline__station agent-timeline__station--terminus",children:[s.jsx("span",{className:"agent-timeline__station-rail",children:s.jsx("span",{className:"agent-timeline__station-node agent-timeline__station-node--terminus","aria-hidden":"true",children:s.jsx(o.Icon,{name:"flag",size:16,color:"currentColor"})})}),s.jsx("div",{className:"agent-timeline__label",children:s.jsx("strong",{className:"agent-timeline__label-type",children:"Finish"})})]})]})]})},Va=["I'll get the details and come back to you","Skip this for now"],Ja=e=>{var n;const t=(n=e.prompt)!=null&&n.trim()?e.prompt.trim():`I need a bit more from you on "${e.task}". ${e.description} What can you tell me?`;return{id:`clarification-${Date.now()}`,author:ne.agent,text:t,followUpPrompts:e.clarificationPrompts??Va}},Ya=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),Wa=e=>e.kind===qs.user_file?`<strong>${Ya(e.text)}</strong>`:e.text,xe=e=>({id:e.id,text:Wa(e),type:e.author===ne.user?Je.CHAT_RESPONSE_TYPE_USER:e.author===ne.system?Je.CHAT_RESPONSE_TYPE_INFO:Je.CHAT_RESPONSE_TYPE_AGENT,...e.followUpPrompts?{followUpPrompts:e.followUpPrompts}:{}}),ms="MESSAGE_TYPE_REPOLL",nn="agentUi:update",_s="arbor-agent-",Ae={all:"ALL",checklist:"CHECKLIST",resources:"RESOURCES",chat:"CHAT",timeline:"TIMELINE"},Xa=new Set(Object.values(Ae)),an=(e,t)=>`${e.endsWith("-")?e:`${e}-`}${t}`,Za=e=>typeof e=="string"&&Xa.has(e)?e:Ae.all,Qa=e=>{if(!e||typeof e!="object")return null;const t=e;return t.type!==ms?null:{type:ms,target:Za(t.target)}},rn=e=>{const t=Array.isArray(e)?e:[e],n=[];for(const r of t){const i=Qa(r);i&&n.push(i)}return n},er=({enabled:e,channelPrefix:t,agentId:n,subscribeToPusher:r,onRepoll:i})=>{const c=a.useRef(i),l=t==null?void 0:t.trim(),p=!!(e&&r&&l&&n.trim());return a.useEffect(()=>{c.current=i},[i]),a.useEffect(()=>{if(!p||!r||!l)return;const h=r(an(l,n),nn,y=>{for(const f of rn(y))c.current(f.target)});return()=>{h()}},[p,l,n,r]),p};class De extends Error{constructor(t,n,r){super(r??`Agent service request failed (${t})`),this.name="AgentServiceError",this.status=t,this.detail=n}}const tr="/api/v1",F={agentDefinitions:"/agent-definitions",agents:"/agents",conversations:"/conversations",tripOptions:"/trip-options",demoDataset:"/demo/dataset"},z={GET:"GET",POST:"POST",PATCH:"PATCH",DELETE:"DELETE"},sr={error:"error"},nr={user:"user"},Ue={acceptJson:"application/json",acceptHtml:"text/html",acceptEventStream:"text/event-stream",contentTypeJson:"application/json",arborApplicationUrl:"X-Arbor-Application-Url"},ar=100,ln=e=>{switch(e){case is.paused:return N.paused;case is.complete:return N.complete;case N.hitl:return N.hitl;case is.active:case N["generating-a-response"]:return N["generating-a-response"];default:return N["generating-a-response"]}},on=e=>{switch(e){case xt.requires_attention:case xt.waiting_on_human:case M.hitl:return M.hitl;case xt.in_progress:case M["generating-a-response"]:return M["generating-a-response"];case xt.to_do:case xt.available:case M.to_do:return M.to_do;case M.failed:case M.complete:return e;default:return M.to_do}},fs=e=>({ref:e.name,display_name:e.display_name,agent_intent:e.agent_intent??"",description:e.description}),rr=e=>({id:e.id,name:e.name,...e.has_run_before?{hasRunBefore:e.has_run_before}:{}}),ir=new Set(Object.values(we)),lr=e=>ir.has(e)?e:we.document_html,cn=e=>({id:e.id,type:lr(e.type),title:e.title,createdDatetime:e.created_datetime,lastUpdatedDatetime:e.last_updated_datetime,misRecordUrl:e.mis_record_url}),un=e=>({resources:e.resources.map(cn),pageNumber:e.page_number,pageSize:e.page_size,totalRecords:e.total_records}),dn=e=>({actionLog:(e.action_log??[]).map(t=>({timestamp:t.timestamp,type:t.type,entry:t.entry,origin:t.origin})),chatSessions:(e.chat_sessions??[]).map(t=>({sessionId:t.session_id,timestamp:t.timestamp})),scheduledRuns:(e.scheduled_runs??[]).map(t=>({scheduleId:t.schedule_id,dueAt:t.due_at,recurrence:t.recurrence,repeatIntervalSeconds:t.repeat_interval_seconds,wakePrompt:t.wake_prompt}))}),ke=e=>{var n;const t=e.invocation_id??e.id;return{id:e.id,invocation_id:t,agent_definition_ref:e.agent_definition_ref,...e.agent_intent?{agent_intent:e.agent_intent}:{},invocation_name:((n=e.invocation_name)==null?void 0:n.trim())||e.agent_definition_ref,application_id:e.application_id,...e.application_name?{application_name:e.application_name}:{},created_by:e.created_by,status:ln(e.status),archivedAt:e.archived_at??null,context_ref:e.context_ref??null,checklist_ref:e.checklist_ref??null}},vs=e=>{var t;return{task:e.item??e.task??e.name??e.label??ga,status:on(e.status),description:e.description??"",...e.prompt?{prompt:e.prompt}:{},...(t=e.follow_up_prompts)!=null&&t.length?{clarificationPrompts:e.follow_up_prompts}:{}}},or=e=>Array.isArray(e)?e:e.checklist_items??e.checklist??e.items??[],qt=(e,t,n)=>{var c;const r=!Array.isArray(t)&&(t.opening_message||(c=t.opening_follow_up_prompts)!=null&&c.length)?t:n,i=r?yt(r):void 0;return{invocation_id:e,checklist:or(t).map(vs),...i?{openingMessage:i}:{}}},cr=(e,t)=>{const n=yt(t);return{invocation_id:t.invocation_id??e,checklist:(t.checklist_items??[]).map(vs),...n?{openingMessage:n}:{}}},yt=e=>{var n,r;const t=(n=e.opening_message)==null?void 0:n.trim();if(t)return{id:Vs,author:ne.agent,text:t,...(r=e.opening_follow_up_prompts)!=null&&r.length?{followUpPrompts:e.opening_follow_up_prompts}:{}}},ur=e=>{try{const t=JSON.parse(e);if(Array.isArray(t)){const n=t.filter(r=>!!r&&typeof r=="object"&&typeof r.text=="string").map(r=>r.text);if(n.length>0)return n.join(`
2
+ `)}}catch{}return e},dr=e=>{const t=e.trim();return t.length>0?`File upload
3
3
 
4
- ${t}`:"File upload"},Un=e=>{var s;const t=(s=e.filename)==null?void 0:s.trim();return t||null},hs=e=>e.filter(t=>Un(t)&&t.role==="user"?!0:(t.role==="user"||t.role==="assistant")&&typeof t.content=="string"&&t.content.length>0&&t.message_type!=="tool_request").map(t=>{const s=Un(t);return s&&t.role==="user"?{id:t.message_id,author:se.user,kind:qn.user_file,text:s}:{id:t.message_id,author:t.role==="user"?se.user:se.agent,text:t.content}}),dr=/:invocationId\b/g,hr=/:resourceId\b/g,gr=e=>e.trim().replace(/^Bearer\s+/i,""),Dn=e=>e.endsWith("/")?e.slice(0,-1):e;class Gt{constructor(t){var r;this.baseUrl=Dn(t.baseUrl??"");const s=(r=t.token)==null?void 0:r.trim();this.token=s?gr(s):void 0,this.customHeaders=t.headers,this.urls=t.urls??{},this.fetchImpl=t.fetch??globalThis.fetch.bind(globalThis)}setHeaders(t){this.customHeaders=t}async listAgentDefinitions(){return(await this.request(z.GET,this.resolveUrl("agentDefinitions",B.agentDefinitions))).agent_definitions??[]}getAgentDefinition(t){return this.request(z.GET,this.apiUrl(`${B.agentDefinitions}/${encodeURIComponent(t)}`))}listTripOptions(){return this.request(z.GET,this.apiUrl(B.tripOptions))}getDataset(){return this.request(z.GET,this.apiUrl(B.demoDataset))}setDataset(t){return this.request(z.POST,this.apiUrl(B.demoDataset),{dataset:t})}listAgents(t={}){const s=new URLSearchParams;t.status&&s.set("status",t.status),t.agentDefinitionRef&&s.set("agent_definition_ref",t.agentDefinitionRef);const r=s.toString()?`?${s.toString()}`:"";return this.request(z.GET,`${this.resolveUrl("agents",B.agents)}${r}`)}createAgent(t,s={}){var l,m;const r={agent_definition_ref:t},i=(l=s.invocationName)==null?void 0:l.trim(),o=(m=s.agentIntent)==null?void 0:m.trim();return i&&(r.invocation_name=i),o&&(r.agent_intent=o),this.request(z.POST,this.resolveUrl("agents",B.agents),r)}getAgent(t){return this.request(z.GET,this.resolveUrl("agent",`${B.agents}/${encodeURIComponent(t)}`,t))}updateAgent(t,s){const i={invocation_name:s.invocationName.trim()};return this.request(z.PATCH,this.resolveUrl("agent",`${B.agents}/${encodeURIComponent(t)}`,t),i)}getAgentChecklist(t){return this.request(z.GET,this.resolveUrl("agentChecklist",`${B.agents}/${encodeURIComponent(t)}/checklist`,t))}getAgentResources(t,s={}){const r=new URLSearchParams;s.pageNumber!==void 0&&r.set("page_number",String(s.pageNumber)),s.pageSize!==void 0&&r.set("page_size",String(s.pageSize)),s.type&&r.set("type",s.type);const i=r.toString(),o=this.resolveUrl("agentResources",`${B.agents}/${encodeURIComponent(t)}/resources`,t);return this.request(z.GET,i?`${o}?${i}`:o)}async listAllAgentResources(t){const s=ar;let r=1;const i=[];let o=Number.POSITIVE_INFINITY;for(;i.length<o;){const l=cs(await this.getAgentResources(t,{pageNumber:r,pageSize:s}));if(o=l.totalRecords,l.resources.length===0||(i.push(...l.resources),i.length>=o))break;r+=1}return i}getAgentResourceHtml(t,s){return this.requestText(z.GET,this.resolveResourceHtmlUrl(t,s))}getAgentTimeline(t){return this.request(z.GET,this.resolveUrl("agentTimeline",`${B.agents}/${encodeURIComponent(t)}/agent-timeline`,t))}getAgentContext(t){const s=this.resolveUrl("agent",`${B.agents}/${encodeURIComponent(t)}`,t);return this.request(z.GET,`${Dn(s)}/context`)}pauseAgent(t){return this.request(z.POST,this.resolveUrl("pauseAgent",`${B.agents}/${encodeURIComponent(t)}/pause`,t))}resumeAgent(t){return this.request(z.POST,this.resolveUrl("resumeAgent",`${B.agents}/${encodeURIComponent(t)}/resume`,t))}archiveAgent(t){return this.request(z.POST,this.resolveUrl("archiveAgent",`${B.agents}/${encodeURIComponent(t)}/archive`,t))}unarchiveAgent(t){return this.request(z.POST,this.resolveUrl("unarchiveAgent",`${B.agents}/${encodeURIComponent(t)}/unarchive`,t))}deleteAgent(t){return this.request(z.DELETE,this.resolveUrl("agent",`${B.agents}/${encodeURIComponent(t)}`,t))}getConversation(t){return this.request(z.GET,this.resolveUrl("agentConversation",`${B.conversations}/${encodeURIComponent(t)}`,t))}async chat(t,s,r={}){const i=!!(r.uploadFiles&&r.uploadFiles.length>0),o=await this.fetchImpl(this.resolveUrl("agentChat",`${B.agents}/${encodeURIComponent(t)}/chat`,t),{method:z.POST,headers:{...this.customHeaders,...this.authHeaders(),Accept:Ue.acceptEventStream,...i?{}:{"Content-Type":Ue.contentTypeJson}},body:i?pr(s,r.uploadFiles??[]):JSON.stringify(s),signal:r.signal});if(!o.ok)throw await this.toError(o);if(!o.body)throw new De(o.status,null,"Chat response contained no stream body");return this.consumeSse(o.body,r.onEvent)}authHeaders(){return this.token?{Authorization:`Bearer ${this.token}`}:{}}apiUrl(t){return`${this.baseUrl}${tr}${t}`}resolveUrl(t,s,r,i){const o=this.urls[t];if(!o)return this.apiUrl(s);let l=o;return r&&(l=l.replace(dr,encodeURIComponent(r))),i&&(l=l.replace(hr,encodeURIComponent(i))),l}resolveResourceHtmlUrl(t,s){return this.urls.agentResourceHtml?this.resolveUrl("agentResourceHtml",`${B.agents}/${encodeURIComponent(t)}/resources/${encodeURIComponent(s)}`,t,s):this.urls.agentResources?`${this.resolveUrl("agentResources",`${B.agents}/${encodeURIComponent(t)}/resources`,t).replace(/\/$/,"")}/${encodeURIComponent(s)}`:this.apiUrl(`${B.agents}/${encodeURIComponent(t)}/resources/${encodeURIComponent(s)}`)}async request(t,s,r){const i=await this.fetchImpl(s,{method:t,headers:{...this.customHeaders,...this.authHeaders(),Accept:Ue.acceptJson,...r===void 0?{}:{"Content-Type":Ue.contentTypeJson}},...r===void 0?{}:{body:JSON.stringify(r)}});if(!i.ok)throw await this.toError(i);if(i.status!==204)return await i.json()}async requestText(t,s){const r=await this.fetchImpl(s,{method:t,headers:{...this.customHeaders,...this.authHeaders(),Accept:Ue.acceptHtml}});if(!r.ok)throw await this.toError(r);return r.text()}async toError(t){let s=null;try{s=await t.json()}catch{}return new De(t.status,s,`Agent service request failed (${t.status} ${t.statusText})`)}async consumeSse(t,s){const r=t.getReader(),i=new TextDecoder;let o="",l;const m=h=>{const{event:k,data:f}=mr(h);if(f===null)return;if(k===nr.error){const A=$n(f);throw new De(502,A,(A==null?void 0:A.message)??"Chat stream error")}const w=$n(f);w&&(l=w,s==null||s(w))};for(;;){const{done:h,value:k}=await r.read();if(h)break;o+=i.decode(k,{stream:!0});const f=o.split(`
4
+ ${t}`:"File upload"},Us=e=>{var n;const t=(n=e.filename)==null?void 0:n.trim();return t||null},hn=e=>e.filter(t=>Us(t)&&t.role==="user"?!0:(t.role==="user"||t.role==="assistant")&&typeof t.content=="string"&&t.content.length>0&&t.message_type!=="tool_request").map(t=>{const n=Us(t);return n&&t.role==="user"?{id:t.message_id,author:ne.user,kind:qs.user_file,text:n}:{id:t.message_id,author:t.role==="user"?ne.user:ne.agent,text:t.content}}),hr=/:invocationId\b/g,gr=/:resourceId\b/g,pr=e=>e.trim().replace(/^Bearer\s+/i,""),Ds=e=>e.endsWith("/")?e.slice(0,-1):e;class Kt{constructor(t){var r;this.baseUrl=Ds(t.baseUrl??"");const n=(r=t.token)==null?void 0:r.trim();this.token=n?pr(n):void 0,this.customHeaders=t.headers,this.urls=t.urls??{},this.fetchImpl=t.fetch??globalThis.fetch.bind(globalThis)}setHeaders(t){this.customHeaders=t}async listAgentDefinitions(){return(await this.request(z.GET,this.resolveUrl("agentDefinitions",F.agentDefinitions))).agent_definitions??[]}getAgentDefinition(t){return this.request(z.GET,this.apiUrl(`${F.agentDefinitions}/${encodeURIComponent(t)}`))}listTripOptions(){return this.request(z.GET,this.apiUrl(F.tripOptions))}getDataset(){return this.request(z.GET,this.apiUrl(F.demoDataset))}setDataset(t){return this.request(z.POST,this.apiUrl(F.demoDataset),{dataset:t})}listAgents(t={}){const n=new URLSearchParams;t.status&&n.set("status",t.status),t.agentDefinitionRef&&n.set("agent_definition_ref",t.agentDefinitionRef);const r=n.toString()?`?${n.toString()}`:"";return this.request(z.GET,`${this.resolveUrl("agents",F.agents)}${r}`)}createAgent(t,n={}){var l,p;const r={agent_definition_ref:t},i=(l=n.invocationName)==null?void 0:l.trim(),c=(p=n.agentIntent)==null?void 0:p.trim();return i&&(r.invocation_name=i),c&&(r.agent_intent=c),this.request(z.POST,this.resolveUrl("agents",F.agents),r)}getAgent(t){return this.request(z.GET,this.resolveUrl("agent",`${F.agents}/${encodeURIComponent(t)}`,t))}updateAgent(t,n){const i={invocation_name:n.invocationName.trim()};return this.request(z.PATCH,this.resolveUrl("agent",`${F.agents}/${encodeURIComponent(t)}`,t),i)}getAgentChecklist(t){return this.request(z.GET,this.resolveUrl("agentChecklist",`${F.agents}/${encodeURIComponent(t)}/checklist`,t))}getAgentResources(t,n={}){const r=new URLSearchParams;n.pageNumber!==void 0&&r.set("page_number",String(n.pageNumber)),n.pageSize!==void 0&&r.set("page_size",String(n.pageSize)),n.type&&r.set("type",n.type);const i=r.toString(),c=this.resolveUrl("agentResources",`${F.agents}/${encodeURIComponent(t)}/resources`,t);return this.request(z.GET,i?`${c}?${i}`:c)}async listAllAgentResources(t){const n=ar;let r=1;const i=[];let c=Number.POSITIVE_INFINITY;for(;i.length<c;){const l=un(await this.getAgentResources(t,{pageNumber:r,pageSize:n}));if(c=l.totalRecords,l.resources.length===0||(i.push(...l.resources),i.length>=c))break;r+=1}return i}getAgentResourceHtml(t,n){return this.requestText(z.GET,this.resolveResourceHtmlUrl(t,n))}getAgentTimeline(t){return this.request(z.GET,this.resolveUrl("agentTimeline",`${F.agents}/${encodeURIComponent(t)}/agent-timeline`,t))}getAgentContext(t){const n=this.resolveUrl("agent",`${F.agents}/${encodeURIComponent(t)}`,t);return this.request(z.GET,`${Ds(n)}/context`)}pauseAgent(t){return this.request(z.POST,this.resolveUrl("pauseAgent",`${F.agents}/${encodeURIComponent(t)}/pause`,t))}resumeAgent(t){return this.request(z.POST,this.resolveUrl("resumeAgent",`${F.agents}/${encodeURIComponent(t)}/resume`,t))}archiveAgent(t){return this.request(z.POST,this.resolveUrl("archiveAgent",`${F.agents}/${encodeURIComponent(t)}/archive`,t))}unarchiveAgent(t){return this.request(z.POST,this.resolveUrl("unarchiveAgent",`${F.agents}/${encodeURIComponent(t)}/unarchive`,t))}deleteAgent(t){return this.request(z.DELETE,this.resolveUrl("agent",`${F.agents}/${encodeURIComponent(t)}`,t))}getConversation(t){return this.request(z.GET,this.resolveUrl("agentConversation",`${F.conversations}/${encodeURIComponent(t)}`,t))}async chat(t,n,r={}){const i=!!(r.uploadFiles&&r.uploadFiles.length>0),c=await this.fetchImpl(this.resolveUrl("agentChat",`${F.agents}/${encodeURIComponent(t)}/chat`,t),{method:z.POST,headers:{...this.customHeaders,...this.authHeaders(),Accept:Ue.acceptEventStream,...i?{}:{"Content-Type":Ue.contentTypeJson}},body:i?_r(n,r.uploadFiles??[]):JSON.stringify(n),signal:r.signal});if(!c.ok)throw await this.toError(c);if(!c.body)throw new De(c.status,null,"Chat response contained no stream body");return this.consumeSse(c.body,r.onEvent)}authHeaders(){return this.token?{Authorization:`Bearer ${this.token}`}:{}}apiUrl(t){return`${this.baseUrl}${tr}${t}`}resolveUrl(t,n,r,i){const c=this.urls[t];if(!c)return this.apiUrl(n);let l=c;return r&&(l=l.replace(hr,encodeURIComponent(r))),i&&(l=l.replace(gr,encodeURIComponent(i))),l}resolveResourceHtmlUrl(t,n){return this.urls.agentResourceHtml?this.resolveUrl("agentResourceHtml",`${F.agents}/${encodeURIComponent(t)}/resources/${encodeURIComponent(n)}`,t,n):this.urls.agentResources?`${this.resolveUrl("agentResources",`${F.agents}/${encodeURIComponent(t)}/resources`,t).replace(/\/$/,"")}/${encodeURIComponent(n)}`:this.apiUrl(`${F.agents}/${encodeURIComponent(t)}/resources/${encodeURIComponent(n)}`)}async request(t,n,r){const i=await this.fetchImpl(n,{method:t,headers:{...this.customHeaders,...this.authHeaders(),Accept:Ue.acceptJson,...r===void 0?{}:{"Content-Type":Ue.contentTypeJson}},...r===void 0?{}:{body:JSON.stringify(r)}});if(!i.ok)throw await this.toError(i);if(i.status!==204)return await i.json()}async requestText(t,n){const r=await this.fetchImpl(n,{method:t,headers:{...this.customHeaders,...this.authHeaders(),Accept:Ue.acceptHtml}});if(!r.ok)throw await this.toError(r);return r.text()}async toError(t){let n=null;try{n=await t.json()}catch{}return new De(t.status,n,`Agent service request failed (${t.status} ${t.statusText})`)}async consumeSse(t,n){const r=t.getReader(),i=new TextDecoder;let c="",l;const p=h=>{const{event:y,data:f}=mr(h);if(f===null)return;if(y===sr.error){const A=$s(f);throw new De(502,A,(A==null?void 0:A.message)??"Chat stream error")}const w=$s(f);w&&(l=w,n==null||n(w))};for(;;){const{done:h,value:y}=await r.read();if(h)break;c+=i.decode(y,{stream:!0});const f=c.split(`
5
5
 
6
- `);o=f.pop()??"";for(const w of f)m(w)}if(o.trim()&&m(o),!l)throw new De(502,null,"Chat stream ended without any events");return l}}const mr=e=>{let t=null;const s=[];for(const r of e.split(`
7
- `)){const i=r.trimEnd();i.startsWith("event:")?t=i.slice(6).trim():i.startsWith("data:")&&s.push(i.slice(5).trim())}return{event:t,data:s.length>0?s.join(`
8
- `):null}},$n=e=>{try{return JSON.parse(e)}catch{return}};function pr(e,t){const s=new FormData;s.append("body",JSON.stringify(e));for(const r of t)s.append("files",r,r.name);return s}const _r={id:Vn,author:se.agent,text:"Type a question or upload a file. You can ask it how it's progressing, or send an instruction and it'll act on it."};let Hn=0;const fr=e=>(Hn+=1,`${e}-${Date.now()}-${Hn}`),vr=e=>{const t=e.destination?` to ${e.destination}`:"";return`Let's get started on ${e.tripName.trim()||e.destination.trim()||"this task"}${t}. What will you do first?`};class gs{constructor(t,s,r={}){this.seededChecklist=[],this.client=t,this.agentId=s,this.chatId=r.chatId??s,this.opening=r.openingMessage??_r,this.model=r.model}openingMessage(){return this.opening}async bootstrapConversation(){const t=await this.client.getConversation(this.chatId),s=hs(t.messages);return s.length===0?[this.opening]:s}async start(t){return{...await this.exchange(vr(t)),phase:$.running}}sendMessage(t,s){return this.exchange(t,s)}async pause(){await this.client.pauseAgent(this.agentId)}async resume(){await this.client.resumeAgent(this.agentId)}seedChecklist(t){this.seededChecklist=t}async exchange(t,s){var l;const r=[{role:sr.user,content:t}],i=await this.client.chat(this.agentId,{messages:r,chat_id:this.chatId,...this.model?{model:this.model}:{},moderation_enabled:!0,meta:{feature_id:"agent_view",source:"agent_view_frontend"}},...s&&s.length>0?[{uploadFiles:s}]:[]),o={id:i.event_id||fr("msg-agent"),author:se.agent,text:i.message.content,...(l=i.follow_up_prompts)!=null&&l.length?{followUpPrompts:i.follow_up_prompts}:{}};try{const m=await this.client.getAgent(this.agentId),{checklist:h}=ds(this.agentId,m);return this.seededChecklist=h,{message:o,checklist:h}}catch{return{message:o,...this.seededChecklist.length?{checklist:this.seededChecklist}:{}}}}}const xn=(e,t)=>s=>{var r,i;return new gs(e,s.invocation_id,{model:t==null?void 0:t.model,chatId:((r=t==null?void 0:t.resolveChatId)==null?void 0:r.call(t,s))??(t==null?void 0:t.chatId)??s.invocation_id,openingMessage:((i=t==null?void 0:t.resolveOpeningMessage)==null?void 0:i.call(t,s))??(t==null?void 0:t.openingMessage)})},ms=e=>e instanceof De?e.message:e instanceof TypeError?"Network error while contacting the agent service.":e instanceof Error&&e.message?e.message:Yn,ps=e=>{if(e instanceof De){if(e.status===403)return aa;if(e.status===409)return ra;if(e.status===404)return ia}return sa},xr=e=>{const t={};for(const s of e){const r=At(s);if(!r)continue;const i=s.invocation_id??s.id;t[i]=r,t[s.id]=r}return t},wr=e=>JSON.stringify(e),$t=(e,t)=>JSON.stringify(e)===JSON.stringify(t),_s=e=>{const{jwt:t,headers:s,urls:r}=e,i=JSON.stringify(s??{}),o=wr(r),l=a.useMemo(()=>new Gt({token:t,headers:s,urls:r}),[t,o]);a.useLayoutEffect(()=>{l.setHeaders(s)},[l,i]);const[m,h]=a.useState([]),[k,f]=a.useState([]),[w,A]=a.useState({}),[E,p]=a.useState("loading"),[C,L]=a.useState(null),[M,I]=a.useState(0),v=a.useCallback((y,R)=>{const P=y.map(Ne),G=R.map(_n),D=xr(y);h(V=>$t(V,P)?V:P),f(V=>$t(V,G)?V:G),A(V=>$t(V,D)?V:D),p("idle"),L(null)},[]);a.useEffect(()=>{let y=!1;return p("loading"),L(null),(async()=>{try{const[R,P]=await Promise.all([l.listAgents(),l.listAgentDefinitions()]);if(y)return;v(R,P)}catch(R){if(y)return;h([]),f([]),A({}),p("error"),L(ms(R))}})(),()=>{y=!0}},[v,l,M]);const g=a.useCallback(()=>{I(y=>y+1)},[]),x=a.useCallback(async()=>{try{const[y,R]=await Promise.all([l.listAgents(),l.listAgentDefinitions()]);v(y,R)}catch{}},[v,l]),j=a.useCallback(async y=>{const[R,P]=await Promise.all([l.getAgentChecklist(y),l.getAgent(y).catch(()=>null)]);return vn(y,R,P??void 0)},[l]),O=a.useCallback(async y=>l.listAllAgentResources(y),[l]),Y=a.useCallback(async({definition:y,invocationName:R})=>{const P=await l.createAgent(y.ref,{invocationName:R}),G=await l.getAgent(P.id),D=Ne(G),V=At(G);return h(ae=>[D,...ae]),V&&A(ae=>({...ae,[D.invocation_id]:V,[D.id]:V})),D},[l]),ce=a.useCallback(async y=>{const R=await l.archiveAgent(y),P=Ne(R);return h(G=>G.map(D=>D.id===P.id||D.id===y||D.invocation_id===y?P:D)),P},[l]),U=a.useCallback(async y=>{const R=await l.unarchiveAgent(y),P=Ne(R);return h(G=>G.map(D=>D.id===P.id||D.id===y||D.invocation_id===y?P:D)),P},[l]),ee=a.useCallback(y=>{h(R=>R.filter(P=>P.id!==y&&P.invocation_id!==y))},[]),Ce=a.useCallback(y=>{h(R=>{const P=R.map(G=>G.id===y.id||G.invocation_id===y.invocation_id?{...G,...y}:G);return $t(R,P)?R:P})},[]),ue=a.useCallback(async y=>{await l.deleteAgent(y),ee(y)},[l,ee]),be=a.useMemo(()=>xn(l,{resolveOpeningMessage:y=>w[y.invocation_id]??w[y.id]}),[l,w]);return{agents:m,agentDefinitions:k,loadState:E,loadError:C,reload:g,refresh:x,fetchAgentChecklist:j,fetchAgentResources:O,createAgent:Y,archiveAgent:ce,unarchiveAgent:U,deleteAgent:ue,removeAgent:ee,replaceAgent:Ce,chatConnector:be}},Ar=e=>JSON.stringify(e),fs=e=>{const{agent:t,jwt:s,headers:r,urls:i,chatId:o}=e,l=JSON.stringify(r??{}),m=Ar(i),h=a.useMemo(()=>new Gt({token:s,headers:r,urls:{agent:i.agentUrl,agentChecklist:i.agentChecklistUrl,...i.agentResourcesUrl?{agentResources:i.agentResourcesUrl}:{},...i.agentTimelineUrl?{agentTimeline:i.agentTimelineUrl}:{},agentChat:i.agentChatUrl,agentConversation:i.agentConversationUrl,...i.pauseAgentUrl?{pauseAgent:i.pauseAgentUrl}:{},...i.resumeAgentUrl?{resumeAgent:i.resumeAgentUrl}:{},...i.archiveAgentUrl?{archiveAgent:i.archiveAgentUrl}:{},...i.unarchiveAgentUrl?{unarchiveAgent:i.unarchiveAgentUrl}:{}}}),[s,m]);a.useLayoutEffect(()=>{h.setHeaders(r)},[h,l]);const k=a.useCallback(async g=>Ne(await h.getAgent(g)),[h]),f=a.useCallback(async g=>{const[x,j]=await Promise.all([h.getAgentChecklist(g),h.getAgent(g).catch(()=>null)]);return vn(g,x,j??void 0)},[h]),w=a.useCallback(async g=>h.listAllAgentResources(g),[h]),A=a.useCallback(async g=>h.getAgentContext(g),[h]),E=a.useCallback(async(g,x)=>h.getAgentResourceHtml(g,x),[h]),p=a.useCallback(async g=>{const x=await h.getAgentTimeline(g);return us(x)},[h]),C=a.useCallback(async(g,x)=>{await h.updateAgent(g,{invocationName:x})},[h]),L=a.useCallback(async g=>Ne(await h.archiveAgent(g)),[h]),M=a.useCallback(async g=>Ne(await h.unarchiveAgent(g)),[h]),I=a.useCallback(async g=>{await h.deleteAgent(g)},[h]);return{connector:a.useMemo(()=>xn(h,{chatId:o??t.invocation_id})(t),[h,t.invocation_id,o]),fetchAgent:k,fetchAgentChecklist:f,fetchAgentContext:A,fetchAgentResources:w,fetchAgentResourceHtml:E,fetchAgentTimeline:p,updateAgentInvocationName:C,archiveAgent:L,unarchiveAgent:M,deleteAgent:I}},yr=3e4,kr=(e,t)=>{const s=e.hasRunBefore?t||"This trip":e.tripName.trim()||"A new trip",r=e.destination?` to ${e.destination}`:"",i=e.hasRunBefore?" It has run before.":"";return`${s}${r}.${i}`.trim()},Bn=e=>{switch(e){case N.paused:return $.paused;case N.complete:return $.complete;default:return $.running}},un=e=>e===N.paused,Fn=(e,t)=>{t([we(e)])},Nr=(e,t)=>e.length===t.length&&e.every((s,r)=>{const i=t[r];return i!==void 0&&s.id===i.id&&s.text===i.text}),vs=({agent:e,invocationId:t,open:s,onClose:r,jwt:i,headers:o,agentUrl:l,agentChecklistUrl:m,agentResourcesUrl:h,agentTimelineUrl:k,agentChatUrl:f,agentConversationUrl:w,pauseAgentUrl:A,resumeAgentUrl:E,archiveAgentUrl:p,unarchiveAgentUrl:C,chatId:L,enableUpload:M,adminMode:I=!1,initialBrief:v,initialPhase:g,initialChecklist:x,usePusherToRepoll:j=!1,pusherChannelPrefix:O=pn,subscribeToPusher:Y,onArchived:ce,onUnarchived:U,onDeleted:ee,onAgentUpdated:Ce})=>{const[ue,be]=a.useState(L??t),[y,R]=a.useState("chat"),[P,G]=a.useState(!1),{connector:D,fetchAgent:V,fetchAgentChecklist:ae,fetchAgentContext:yt,fetchAgentResources:$e,fetchAgentResourceHtml:He,fetchAgentTimeline:de,updateAgentInvocationName:Se,archiveAgent:We,unarchiveAgent:Xe,deleteAgent:te}=fs({agent:{...e,invocation_id:t},jwt:i,headers:o,chatId:ue,urls:{agentUrl:l,agentChecklistUrl:m,agentResourcesUrl:h,agentTimelineUrl:k,agentChatUrl:f,agentConversationUrl:w,pauseAgentUrl:A,resumeAgentUrl:E,archiveAgentUrl:p,unarchiveAgentUrl:C}}),q=a.useRef(D),[Ee,_e]=a.useState(e.invocation_name),[Be,Ze]=a.useState(0),[je,Qe]=a.useState(null),[K,re]=a.useState(g??(v?$.running:Bn(e.status))),[et,X]=a.useState([]),[zt,he]=a.useState(0),[qt,tt]=a.useState(),[Fe,Re]=a.useState(null),[nt,st]=a.useState([]),[Kt,Te]=a.useState(!1),[Ie,Oe]=a.useState(null),[at,rt]=a.useState(null),[Vt,fe]=a.useState(null),[kt,ie]=a.useState(!1),[Nt,ve]=a.useState(null),[xe,it]=a.useState(null),[Jt,lt]=a.useState(!1),[Ct,Le]=a.useState(null),[Pe,Ge]=a.useState(x??null),[bt,St]=a.useState(!1),[Yt,ot]=a.useState(null),[Wt,Et]=a.useState(void 0),[ct,jt]=a.useState(!1),[ut,dt]=a.useState(!1),[Xt,ht]=a.useState(null),[Rt,Tt]=a.useState(!1),[gt,u]=a.useState(!1),[b,S]=a.useState(!1),[Z,ge]=a.useState(!1),[ze,le]=a.useState(null),[mt,wn]=a.useState(!1),[ys,Zt]=a.useState(!1),[ks,It]=a.useState(null),[An,yn]=a.useState(!1),[Ns,Qt]=a.useState(!1),[Cs,Ot]=a.useState(null),[kn,Q]=a.useState(null),[bs,pt]=a.useState(()=>un(e.status)),[Ss,Nn]=a.useState(e.archivedAt??null),H=!!Ss,[Lt,_t]=a.useState(!1),[Pt,Es]=a.useState(!1),[Mt,js]=a.useState(!1),Cn=a.useRef(Lt),bn=a.useRef(e.invocation_name),qe=a.useRef(e),oe=a.useRef(Ce),Sn=a.useRef(0),En=a.useRef(0),Ke=a.useRef(0),ft=a.useRef(0);oe.current=Ce,a.useEffect(()=>{Nn(e.archivedAt??null)},[e.archivedAt]),a.useEffect(()=>{q.current=D},[D]),a.useEffect(()=>{bn.current=e.invocation_name},[e.invocation_name]),a.useEffect(()=>{qe.current=e},[e]),a.useEffect(()=>{Cn.current=Lt},[Lt]),a.useEffect(()=>{be(L??t),R("chat"),G(!1),X([]),he(d=>d+1),Qe(null)},[t,L]),a.useEffect(()=>(Ke.current+=1,Et(void 0),jt(!1),dt(!1),ht(null),()=>{Ke.current+=1}),[t]),a.useEffect(()=>{pt(un(e.status))},[e.status,t]),a.useEffect(()=>{if(!s||v||H)return;const d=++ft.current;return(async()=>{var _;try{const T=await V(t);if(d!==ft.current)return;re(Bn(T.status)),pt(un(T.status)),qe.current=T,(_=oe.current)==null||_.call(oe,T)}catch{}})(),()=>{ft.current+=1}},[s,t,v,H,V]),a.useEffect(()=>{_e(e.invocation_name),Ze(d=>d+1)},[e.invocation_name]),a.useEffect(()=>{H&&R("timeline")},[H]),a.useEffect(()=>{if(!s||v||H)return;const d=q.current.bootstrapConversation;if(!d){Fn(q.current.openingMessage(),X);return}let _=!1;return _t(!0),(async()=>{try{const T=await d.call(q.current);if(_)return;X(T.map(we))}catch{_||Fn(q.current.openingMessage(),X)}finally{_||_t(!1)}})(),()=>{_=!0}},[s,v,H,t,ue]);const me=a.useCallback(()=>{const d=++Sn.current;(async()=>{var _,T;try{const J=await ae(t);if(d!==Sn.current)return;Ge(ne=>JSON.stringify(ne)===JSON.stringify(J.checklist)?ne:J.checklist),ot(null),(T=(_=q.current).seedChecklist)==null||T.call(_,J.checklist)}catch{}})()},[ae,t]),Me=a.useCallback(()=>{h&&(async()=>{try{const d=await $e(t);st(d),Oe(null)}catch{}})()},[h,$e,t]),pe=a.useCallback(()=>{if(!k)return;const d=++En.current;(async()=>{try{const _=await de(t);if(d!==En.current)return;it(T=>JSON.stringify(T)===JSON.stringify(_)?T:_),Le(null)}catch{}})()},[k,de,t]),vt=a.useCallback(d=>{const _=q.current.bootstrapConversation;_&&(async()=>{try{const T=await _.call(q.current);if(Cn.current)return;const J=T.map(we);let ne=!1;X(Ve=>Nr(Ve,J)?Ve:(ne=!0,J)),ne&&(d!=null&&d.refreshSidePanelsOnChange)&&(me(),pe())}catch{}})()},[me,pe]),Rs=a.useCallback(d=>{switch(d){case ke.checklist:me();return;case ke.resources:Me();return;case ke.chat:vt();return;case ke.timeline:pe();return;case ke.all:default:me(),Me(),vt(),pe()}},[me,vt,Me,pe]),jn=er({enabled:s&&j,channelPrefix:O,agentId:e.id,subscribeToPusher:Y,onRepoll:Rs});a.useEffect(()=>{if(!s||v||H||jn)return;const d=window.setInterval(()=>{vt({refreshSidePanelsOnChange:!0})},yr);return()=>{window.clearInterval(d)}},[s,v,H,jn,t,ue,vt]);const en=a.useCallback(d=>{var _,T;d.checklist?(Ge(d.checklist),(T=(_=q.current).seedChecklist)==null||T.call(_,d.checklist)):me(),d.phase&&re(d.phase),Me(),pe()},[me,Me,pe]);a.useEffect(()=>{var d,_;!s||v||x&&x.length>0&&((_=(d=q.current).seedChecklist)==null||_.call(d,x))},[s,v,x]),a.useEffect(()=>{if(!s||v)return;let d=!1;return St(_=>x!=null&&x.length?!1:_||Pe===null||Pe.length===0),ot(null),(async()=>{var _,T;try{const J=await ae(t);if(d)return;x!=null&&x.length||(Ge(J.checklist),(T=(_=q.current).seedChecklist)==null||T.call(_,J.checklist))}catch{!d&&!(x!=null&&x.length)&&ot(Ht)}finally{d||St(!1)}})(),()=>{d=!0}},[s,t,v,x,ae]),a.useEffect(()=>{if(!s||!h)return;let d=!1;return Te(!0),Oe(null),(async()=>{try{const _=await $e(t);d||st(_)}catch{d||Oe(Ys)}finally{d||Te(!1)}})(),()=>{d=!0}},[s,t,h,$e]);const Ts=a.useCallback(()=>{rt(null),fe(null),ve(null),ie(!1)},[]),Is=a.useCallback(d=>{if(d.misRecordUrl){window.open(d.misRecordUrl,"_blank","noopener,noreferrer");return}rt(d),fe(null),ve(null),ie(!0),(async()=>{try{const _=await He(t,d.id);fe(_)}catch{ve(Ws)}finally{ie(!1)}})()},[He,t]);a.useEffect(()=>{if(!s||!k)return;let d=!1;return lt(_=>_||xe===null),Le(null),(async()=>{try{const _=await de(t);d||it(_)}catch{d||Le(Jn)}finally{d||lt(!1)}})(),()=>{d=!0}},[s,t,k,de]),a.useEffect(()=>{if(!s||!v)return;let d=!1;const _={id:`user-brief-${Date.now()}`,author:se.user,text:kr(v,bn.current)};return(async()=>{var J,ne;const T=await q.current.start(v);d||(X([we(q.current.openingMessage()),we(_),we(T.message)]),T.checklist?(Ge(T.checklist),(ne=(J=q.current).seedChecklist)==null||ne.call(J,T.checklist)):me(),re(T.phase??$.running),Me(),pe())})(),()=>{d=!0}},[s,v,t,me,Me,pe]);const Os=a.useCallback(d=>{Re(Ja(d))},[]),tn=L??t,Ut=xe==null?void 0:xe.chatSessions,Rn=Ut!=null&&Ut.length?Ut.reduce((d,_)=>Date.parse(_.timestamp)<Date.parse(d.timestamp)?_:d).sessionId:void 0,nn=a.useCallback(()=>{R("chat"),G(!1),ue!==tn&&(be(tn),X([]),he(d=>d+1))},[ue,tn]),Ls=a.useCallback(d=>{if(d===Rn){nn();return}be(d),G(!0),R("chat"),X([]),he(_=>_+1)},[Rn,nn]),Ps=a.useCallback(d=>{Re(null),tt(d),he(_=>_+1)},[]),Ms=a.useCallback(async()=>{var d;Q(null),Tt(!0);try{await q.current.pause(),ft.current+=1,re($.paused),pt(!0);const _={...qe.current,status:N.paused};qe.current=_,(d=oe.current)==null||d.call(oe,_)}catch{Q(Xs)}finally{Tt(!1)}},[]),Us=a.useCallback(async()=>{var _;Q(null),u(!0);let d=!1;try{await q.current.resume(),d=!0,ft.current+=1,re($.running),pt(!1);const T={...qe.current,status:N["generating-a-response"]};qe.current=T,(_=oe.current)==null||_.call(oe,T),_t(!0);const J={id:`wake-${Date.now()}`,author:se.user,text:Tn};X(Ve=>[...Ve,we(J)]);const ne=await q.current.sendMessage(Tn);X(Ve=>[...Ve,we(ne.message)]),en(ne)}catch{Q(d?ua:ca)}finally{u(!1),_t(!1)}},[en]),Ds=a.useCallback(async()=>{Q(null),le(null),S(!0);try{await We(t),ge(!1),ce==null||ce(),r()}catch{le(dn),Q(dn)}finally{S(!1)}},[t,We,ce,r]),$s=a.useCallback(async()=>{Q(null),It(null),wn(!0);try{await Xe(t),Nn(null),re($.paused),pt(!0),R("chat"),Zt(!1),U==null||U()}catch{It(hn),Q(hn)}finally{wn(!1)}},[t,Xe,U]),Hs=a.useCallback(async()=>{Q(null),Ot(null),yn(!0);try{await te(t),Qt(!1),ee==null||ee(),r()}catch(d){Ot(ps(d))}finally{yn(!1)}},[t,te,ee,r]),Bs=a.useCallback(d=>{const _=d.trim(),T=Ee;if(Qe(null),!_){Ze(J=>J+1);return}_!==T&&(_e(_),(async()=>{try{await Se(t,_)}catch{_e(T),Ze(J=>J+1),Qe(da)}})())},[Ee,t,Se]),Fs=a.useCallback(()=>{if(!I||ct||ut)return;const d=++Ke.current;dt(!0),ht(null),(async()=>{try{const _=await yt(t);if(Ke.current!==d)return;Et(_),jt(!0)}catch{Ke.current===d&&ht(Js)}finally{Ke.current===d&&dt(!1)}})()},[I,ct,ut,yt,t]),Gs=Pe;return n.jsxs(n.Fragment,{children:[n.jsxs(c.Modal,{open:s,closeHandler:r,hideCloseButton:!0,className:"agent-workspace",children:[n.jsxs(c.Modal.Header,{className:"agent-workspace__header",children:[n.jsxs("div",{className:"agent-workspace__header-title",children:[n.jsx("span",{className:"agent-workspace__header-avatar","aria-hidden":"true",children:n.jsx(c.Icon,{name:"ask-arbor",size:24})}),n.jsx(c.Modal.Title,{children:H?n.jsx("span",{className:"agent-workspace__header-name",children:Ee}):n.jsx(c.EditableText,{className:"agent-workspace__header-name",text:Ee,onEditSave:Bs},Be)}),n.jsx("span",{className:W("agent-workspace__phase",`agent-workspace__phase--${K}`),children:ma[K]}),H?n.jsx("span",{className:"agent-workspace__phase agent-workspace__phase--archived",children:"Archived"}):null,je&&n.jsx("p",{className:"agent-workspace__error agent-workspace__name-error",role:"alert",children:je})]}),n.jsxs("div",{className:"agent-workspace__header-actions",children:[n.jsx(c.Button,{variant:Pt?"secondary":"primary",size:"S",iconLeftName:"clipboard-list",iconLeftScreenReaderText:"Toggle checklist","aria-pressed":!Pt,onClick:()=>Es(d=>!d),children:"Checklist"}),n.jsx(c.Button,{variant:Mt?"secondary":"primary",size:"S",iconLeftName:"files",iconLeftScreenReaderText:"Toggle resources","aria-pressed":!Mt,onClick:()=>js(d=>!d),children:"Resources"}),n.jsx(c.Button,{variant:"secondary",size:"S",iconLeftName:"x",iconLeftScreenReaderText:"Close",onClick:r,children:"Close"})]})]}),n.jsxs(c.Modal.Body,{className:W("agent-workspace__body",{"agent-workspace__body--no-checklist":Pt,"agent-workspace__body--no-resources":Mt}),children:[n.jsxs("section",{className:W("agent-workspace__panel","agent-workspace__panel--chat",{"agent-workspace__panel--timeline":!!k&&(H||y==="timeline")}),"aria-label":"Agent",children:[n.jsxs("div",{className:"agent-workspace__panel-header",children:[n.jsx(c.Heading,{level:4,children:"Agent"}),A&&!H&&K===$.running&&n.jsx(c.Button,{className:"agent-workspace__panel-header-action",variant:"secondary-destructive",size:"S",iconLeftName:"circle-x",iconLeftScreenReaderText:"Pause",disabled:Rt,onClick:()=>void Ms(),children:Rt?"Pausing…":"Pause agent"}),E&&!H&&K===$.paused&&bs&&n.jsx(c.Button,{className:"agent-workspace__panel-header-action",variant:"secondary",size:"S",iconLeftName:"iteration-ccw",iconLeftScreenReaderText:"Resume",disabled:gt,onClick:()=>void Us(),children:gt?"Resuming…":"Resume agent"}),p&&!H&&n.jsx(c.Button,{className:"agent-workspace__panel-header-action",variant:"secondary",size:"S",iconLeftName:"archive",iconLeftScreenReaderText:"Archive",onClick:()=>{le(null),Q(null),ge(!0)},children:"Archive agent"}),C&&H&&n.jsx(c.Button,{className:"agent-workspace__panel-header-action",variant:"secondary",size:"S",onClick:()=>{It(null),Q(null),Zt(!0)},children:"Unarchive agent"}),I&&H&&n.jsx(c.Button,{className:"agent-workspace__panel-header-action",variant:"secondary-destructive",size:"S",onClick:()=>{Ot(null),Q(null),Qt(!0)},children:"Delete agent"})]}),kn&&n.jsx("p",{className:"agent-workspace__error agent-workspace__lifecycle-error",role:"alert",children:kn}),k&&!H&&n.jsxs(c.Tabs,{className:"agent-workspace__center-tabs","aria-label":"Center panel",children:[n.jsx(c.Tabs.Item,{active:y==="chat",tabElementProps:{id:"agent-center-tab-chat",onClick:()=>R("chat")},children:"Chat"}),n.jsx(c.Tabs.Item,{active:y==="timeline",tabElementProps:{id:"agent-center-tab-timeline",onClick:()=>R("timeline")},children:"Timeline"})]}),k&&!H&&y==="chat"&&P&&n.jsx("div",{className:"agent-workspace__center-back",children:n.jsx(c.Button,{variant:"tertiary",size:"S",iconLeftName:"arrow-left",iconLeftScreenReaderText:"Back to main chat",onClick:nn,children:"Back to main chat"})}),k&&(H||y==="timeline")&&n.jsx(Ka,{timeline:xe,isLoading:Jt,error:Ct,onOpenChatSession:H?void 0:Ls}),!H&&n.jsx("div",{className:"agent-workspace__chat-keep-alive",hidden:!!k&&y!=="chat",children:n.jsx(Ra,{connector:D,phase:K,chatHistory:et,chatSessionKey:zt,startQuery:qt,clarificationMessage:Fe,enableUpload:M,onTurn:en,onAwaitingChange:_t,onClarificationPrompt:Ps,onDismissClarification:()=>Re(null)})}),H&&!k&&n.jsx("p",{className:"agent-workspace__timeline-status",role:"status",children:"Chat is not available for archived agents."})]}),!Pt&&n.jsx(Ta,{checklist:Gs,isLoading:bt,error:Yt,phase:K,canRequestInput:!H&&K===$.running&&!Lt,onAttentionItemClick:Os,adminMode:I,context:Wt,contextLoaded:ct,contextLoading:ut,contextError:Xt,onContextSelect:Fs},t),!Mt&&n.jsx(La,{resources:nt,isLoading:Kt,error:Ie,onOpenResource:Is}),n.jsx(Ia,{resource:at,html:Vt,isLoading:kt,error:Nt,onClose:Ts})]})]}),n.jsx(Xn,{open:Z,isInProgress:K===$.running||K===$.paused&&!es(Pe??void 0),isArchiving:b,error:ze,onCancel:()=>{b||(le(null),ge(!1))},onConfirm:()=>{Ds()}}),n.jsx(Qn,{open:ys,isUnarchiving:mt,error:ks,onCancel:()=>{mt||(It(null),Zt(!1))},onConfirm:()=>{$s()}}),n.jsx(Zn,{open:Ns,isDeleting:An,error:Cs,onCancel:()=>{An||(Ot(null),Qt(!1))},onConfirm:()=>{Hs()}})]})},Cr="Unable to load agent definitions. Please try again.",br="Unable to start the agent.",Gn="Loading agents…",xs=({open:e,onClose:t,onStart:s,agentDefinitions:r,definitionsState:i="idle",definitionsError:o=null,onRetryDefinitions:l,embedded:m=!1})=>{const[h,k]=a.useState(void 0),[f,w]=a.useState(""),[A,E]=a.useState(!1),[p,C]=a.useState(null),L=[...r].sort((j,O)=>j.display_name.localeCompare(O.display_name)).map(j=>({value:j.ref,label:j.display_name}));a.useEffect(()=>{e&&(k(void 0),w(""),E(!1),C(null))},[e]);const M=h!==void 0&&f.trim().length>0,I=a.useCallback(j=>{const O=r.find(Y=>Y.ref===j[0]);O&&k(O)},[r]),v=a.useCallback(async()=>{if(!(!h||!M||A)){E(!0),C(null);try{await s({definition:h,invocationName:f.trim()})}catch(j){C(j instanceof Error?j.message:br)}finally{E(!1)}}},[M,h,f,A,s]);if(i==="idle"&&r.length===0||!e)return null;const g=n.jsxs("div",{className:"new-agent__header-title",children:[n.jsx("span",{className:"new-agent__header-avatar","aria-hidden":"true",children:n.jsx(c.Icon,{name:"ask-arbor",size:24})}),m?n.jsx("h2",{className:"new-agent__title",children:"Start an agent"}):n.jsx(c.Modal.Title,{children:"Start an agent"})]});let x;return i==="loading"?x=n.jsxs("div",{className:"new-agent__state","aria-live":"polite",children:[n.jsx(c.Icon,{name:"loader",size:24,color:"var(--color-brand-600)",className:"new-agent__spinner",screenReaderText:Gn}),n.jsx("p",{className:"new-agent__state-message",children:Gn})]}):i==="error"?x=n.jsxs("div",{className:"new-agent__state new-agent__state--error",role:"alert",children:[n.jsx(c.Icon,{name:"triangle-alert",size:24,color:"var(--color-semantic-destructive-600)"}),n.jsx("p",{className:"new-agent__state-message",children:o??Cr}),l?n.jsx(c.Button,{variant:"secondary",size:"S",onClick:l,children:"Try again"}):null]}):x=n.jsxs("form",{className:"new-agent__form","aria-label":"Start an agent",onSubmit:j=>{j.preventDefault(),M&&!A&&v()},children:[n.jsxs("div",{className:"new-agent__type-field",children:[n.jsx("label",{className:"new-agent__type-label",htmlFor:"new-agent-type",children:"What would you like your agent to do?"}),n.jsx(c.SelectDropdown,{id:"new-agent-type",placeholder:"Which agent would you like to start?",options:L,selectedValues:h?[h.ref]:[],onSelectionChange:I})]}),n.jsxs("div",{className:"new-agent__type-field",children:[n.jsx("label",{className:"new-agent__type-label",htmlFor:"new-agent-invocation-name",children:"Name"}),n.jsx(c.TextInput,{id:"new-agent-invocation-name",value:f,placeholder:"What would you like to call your agent?",onChange:j=>w(j.target.value)})]}),p?n.jsx("p",{className:"new-agent__error",role:"alert",children:p}):null,n.jsx("div",{className:"new-agent__actions",children:n.jsx(c.Button,{type:"submit",variant:"primary",className:W("new-agent__start-button",{"new-agent__start-button--starting":A}),disabled:!M||A,iconLeftName:A?"loader":"sparkles",iconLeftScreenReaderText:A?"Starting":void 0,children:A?"Starting…":"Start"})})]}),m?n.jsxs("div",{className:W("new-agent","new-agent--embedded"),children:[n.jsx("div",{className:"new-agent__header",children:g}),n.jsx("div",{className:"new-agent__body",children:x})]}):n.jsxs(c.Modal,{open:e,closeHandler:t,className:"new-agent",children:[n.jsx(c.Modal.Header,{className:"new-agent__header",children:g}),n.jsx(c.Modal.Body,{className:"new-agent__body",children:x})]})},zn=e=>{window.location.assign(e)},Sr=({open:e,authToken:t,headers:s,agentDefinitionsUrl:r,agentsUrl:i,closeUrl:o,successUrl:l,onClose:m,onStart:h,embedded:k=!1})=>{const f=JSON.stringify(s??{}),w=a.useMemo(()=>new Gt({token:t,headers:s,urls:{agentDefinitions:r,agents:i}}),[t,r,i,f]),[A,E]=a.useState([]),[p,C]=a.useState("loading"),[L,M]=a.useState(null),[I,v]=a.useState(0);a.useEffect(()=>{if(!e)return;let O=!1;return C("loading"),M(null),(async()=>{try{const Y=await w.listAgentDefinitions();if(O)return;E(Y.map(_n)),C("idle")}catch(Y){if(O)return;E([]),M(ms(Y)),C("error")}})(),()=>{O=!0}},[w,e,I]);const g=a.useCallback(()=>{m==null||m(),o&&zn(o)},[o,m]),x=a.useCallback(async O=>{await w.createAgent(O.definition.ref,{invocationName:O.invocationName}),h==null||h(O),l&&zn(l)},[w,h,l]),j=a.useCallback(()=>{v(O=>O+1)},[]);return n.jsx(xs,{open:e,onClose:g,onStart:x,agentDefinitions:A,definitionsState:p,definitionsError:L,onRetryDefinitions:j,embedded:k})},Er=e=>"agentDefinitionsUrl"in e,ws=e=>Er(e)?n.jsx(Sr,{...e}):n.jsx(xs,{...e}),jr=e=>e.archivedAt?"archived":e.status===N.paused?"paused":null,Rr=e=>{if(e==="archived")return zs;if(e==="paused")return wt[N.paused].statusIcon},Tr=({column:e,overlayIcon:t,label:s})=>{const r=t??e.statusIcon;return r?n.jsx("span",{className:"agent-view__status-indicator",children:n.jsx(c.Icon,{name:r.name,size:16,color:r.color,className:W({"agent-view__progress-icon--spinning":r.spin}),screenReaderText:s})}):n.jsx("span",{className:W("agent-view__dot",{[`agent-view__dot--${e.dotModifier}`]:e.dotModifier}),children:n.jsx(c.Dot,{colour:e.dotColour,label:s})})},As=({agent:e,agentName:t,column:s,isExpanded:r,isLoading:i,checklist:o,error:l,canArchive:m,canUnarchive:h=!1,canDelete:k=!1,onToggle:f,onViewAgent:w,onArchive:A,onUnarchive:E,onDelete:p})=>{const{id:C,invocation_name:L}=e,M=`agent-card-${C}-header`,I=`agent-card-${C}-progress`,v=jr(e),g=Rr(v);return n.jsx("li",{className:W("agent-view__card",{"agent-view__card--expanded":r,"agent-view__card--paused":v==="paused","agent-view__card--archived":v==="archived"}),children:n.jsxs(c.Card,{spacing:"dense",children:[n.jsx("button",{type:"button",className:"agent-view__card-toggle","aria-expanded":r,"aria-controls":I,"aria-label":L,id:M,onClick:()=>f(C),children:n.jsxs("div",{className:"agent-view__card-content",children:[n.jsx(Tr,{column:s,overlayIcon:g}),n.jsx("span",{className:"agent-view__card-invocation-name",children:L}),n.jsx("span",{className:"agent-view__card-agent-name",children:t}),v==="paused"?n.jsx("span",{className:"agent-view__card-state-pill",children:"Paused"}):null,v==="archived"?n.jsx("span",{className:"agent-view__card-state-pill",children:"Archived"}):null,n.jsx(c.Icon,{name:r?"chevron-up":"chevron-down",size:16,className:"agent-view__card-chevron"})]})}),r&&n.jsxs("div",{id:I,"aria-labelledby":M,className:"agent-view__card-progress",children:[i&&n.jsxs("div",{className:"agent-view__progress-loading","aria-live":"polite",children:[n.jsx(c.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-view__progress-icon--spinning",screenReaderText:Je}),n.jsx("span",{children:Je})]}),!i&&l&&n.jsx("p",{className:"agent-view__progress-error",role:"alert",children:l}),!i&&!l&&o!==null&&n.jsx(ba,{checklist:o}),!i&&!l&&o===null&&n.jsxs("div",{className:"agent-view__progress-loading","aria-live":"polite",children:[n.jsx(c.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-view__progress-icon--spinning",screenReaderText:Je}),n.jsx("span",{children:Je})]}),n.jsxs("div",{className:"agent-view__card-actions",children:[m?n.jsx(c.Button,{variant:"secondary",size:"S",iconLeftName:"archive",iconLeftScreenReaderText:"Archive",onClick:()=>A==null?void 0:A(e),children:"Archive"}):h?n.jsx(c.Button,{variant:"secondary",size:"S",onClick:()=>E==null?void 0:E(e),children:"Unarchive"}):k?n.jsx(c.Button,{variant:"secondary-destructive",size:"S",onClick:()=>p==null?void 0:p(e),children:"Delete"}):n.jsx("span",{}),h&&k?n.jsx(c.Button,{variant:"secondary-destructive",size:"S",onClick:()=>p==null?void 0:p(e),children:"Delete"}):null,n.jsx(c.Button,{variant:"secondary",size:"S",onClick:()=>w==null?void 0:w(e),children:"View agent"})]})]})]})})},Ir=({column:e,agents:t,expandedAgentId:s,loadingAgentId:r,checklistByInvocationId:i,errorByAgentId:o,definitionNameByRef:l,onToggleAgent:m,onViewAgent:h,onArchiveAgent:k,canArchive:f})=>n.jsxs("section",{className:"agent-view__column","aria-label":e.title,children:[n.jsxs("div",{className:"agent-view__column-header",children:[n.jsx(c.Heading,{level:4,children:e.title}),n.jsx("span",{className:"agent-view__column-count",children:t.length})]}),n.jsx("ul",{className:"agent-view__card-list",children:t.map(w=>n.jsx(As,{agent:w,agentName:Bt(w,l),column:e,isExpanded:s===w.id,isLoading:r===w.id,checklist:i[w.invocation_id]??null,error:o[w.id]??null,canArchive:f&&!w.archivedAt,onToggle:m,onViewAgent:h,onArchive:k},w.id))})]}),Bt=(e,t)=>t.get(e.agent_definition_ref)??e.agent_definition_ref.replace(/_/g," "),Or=({jwt:e,headers:t,agentDefinitionsUrl:s,agentsUrl:r,agentUrl:i,agentChecklistUrl:o,agentResourcesUrl:l,agentTimelineUrl:m,agentChatUrl:h,agentConversationUrl:k,pauseAgentUrl:f,resumeAgentUrl:w,archiveAgentUrl:A,unarchiveAgentUrl:E,enableUpload:p,adminMode:C=!1,showHeader:L=!1,institutions:M,usePusherToRepoll:I=!1,pusherChannelPrefix:v=pn,subscribeToPusher:g})=>{var gt;const x=a.useMemo(()=>({agentDefinitions:s,agents:r,agent:i,agentChecklist:o,...l?{agentResources:l}:{},...m?{agentTimeline:m}:{},agentChat:h,agentConversation:k,...A?{archiveAgent:A}:{},...E?{unarchiveAgent:E}:{}}),[s,r,i,o,l,m,h,k,A,E]),[j,O]=a.useState(null),Y=j?(gt=M==null?void 0:M.find(u=>u.applicationId===j.application_id))==null?void 0:gt.applicationUrl:void 0,ce=a.useMemo(()=>{const u={...t??{}};return Y?u[Ue.arborApplicationUrl]=Y:delete u[Ue.arborApplicationUrl],u},[t,Y]),{agents:U,agentDefinitions:ee,loadState:Ce,loadError:ue,reload:be,refresh:y,fetchAgentChecklist:R,createAgent:P,archiveAgent:G,unarchiveAgent:D,deleteAgent:V,removeAgent:ae,replaceAgent:yt}=_s({jwt:e,headers:ce,urls:x}),[$e,He]=a.useState(!1),[de,Se]=a.useState(null),[We,Xe]=a.useState(null),[te,q]=a.useState({}),[Ee,_e]=a.useState({}),[Be,Ze]=a.useState([]),[je,Qe]=a.useState([]),[K,re]=a.useState(null),[et,X]=a.useState(!1),[zt,he]=a.useState(null),[qt,tt]=a.useState(!1),[Fe,Re]=a.useState(null),[nt,st]=a.useState(!1),[Kt,Te]=a.useState(null),[Ie,Oe]=a.useState(null),[at,rt]=a.useState(!1),[Vt,fe]=a.useState(null);a.useEffect(()=>{O(u=>u?U.find(b=>b.id===u.id)??u:null)},[U]);const kt=a.useMemo(()=>{const u=new Set(U.map(S=>S.application_id)),b=new Map((M??[]).map(S=>[S.applicationId,S.name]));return[...u].sort((S,Z)=>(b.get(S)??S).localeCompare(b.get(Z)??Z)).map(S=>({value:S,label:b.get(S)??S}))},[U,M]),ie=a.useMemo(()=>new Map(ee.map(u=>[u.ref,u.display_name])),[ee]),Nt=a.useMemo(()=>[...new Set(U.map(b=>Bt(b,ie)))].sort((b,S)=>b.localeCompare(S)).map(b=>({value:b,label:b})),[U,ie]),ve=a.useMemo(()=>U.filter(u=>!(Be.length>0&&!Be.includes(u.application_id)||je.length>0&&!je.includes(Bt(u,ie)))),[U,ie,je,Be]),xe=kt.length>1,it=Nt.length>1,Jt=xe||it;a.useEffect(()=>{const u=window.setInterval(()=>{y()},6e4);return()=>{window.clearInterval(u)}},[y]),a.useEffect(()=>{if(U.length===0)return;let u=!1;return(async()=>{const b=await Promise.allSettled(U.map(async S=>{const Z=await R(S.invocation_id);return{agentId:S.id,invocationId:S.invocation_id,checklist:Z.checklist}}));u||(q(S=>{const Z={...S};let ge=!1;for(const ze of b){if(ze.status!=="fulfilled")continue;const{invocationId:le,checklist:mt}=ze.value;JSON.stringify(S[le])!==JSON.stringify(mt)&&(Z[le]=mt,ge=!0)}return ge?Z:S}),_e(S=>{const Z={...S};let ge=!1;return b.forEach((ze,le)=>{ze.status==="rejected"&&Z[U[le].id]!==Ht&&(Z[U[le].id]=Ht,ge=!0)}),ge?Z:S}))})(),()=>{u=!0}},[U,R]);const lt=a.useCallback(async u=>{if(!te[u.invocation_id]){Xe(u.id),_e(b=>{const S={...b};return delete S[u.id],S});try{const b=await R(u.invocation_id);q(S=>({...S,[u.invocation_id]:b.checklist}))}catch{_e(b=>({...b,[u.id]:Ht}))}finally{Xe(b=>b===u.id?null:b)}}},[R,te]),Ct=a.useCallback(u=>{if(de===u){Se(null);return}const b=U.find(({id:S})=>S===u);b&&(Se(u),lt(b))},[U,de,lt]),Le=a.useMemo(()=>ve.filter(u=>!!u.archivedAt),[ve]),Pe=a.useMemo(()=>ve.filter(u=>!u.archivedAt),[ve]),Ge=a.useMemo(()=>{const u={};for(const b of Pe){const S=ln(b,te[b.invocation_id]);(u[S]??(u[S]=[])).push(b)}return u},[Pe,te]),bt=a.useCallback(u=>{O(u)},[]),St=a.useCallback(u=>{he(null),re(u)},[]),Yt=a.useCallback(()=>{et||(he(null),re(null))},[et]),ot=a.useCallback(async()=>{if(K){X(!0),he(null),_e(u=>{const b={...u};return delete b[K.id],b});try{await G(K.invocation_id),O(u=>(u==null?void 0:u.id)===K.id?null:u),Se(K.id),tt(!0),re(null)}catch{he(dn)}finally{X(!1)}}},[K,G]),Wt=a.useCallback(u=>{Te(null),Re(u)},[]),Et=a.useCallback(()=>{nt||(Te(null),Re(null))},[nt]),ct=a.useCallback(async()=>{if(Fe){st(!0),Te(null);try{await D(Fe.invocation_id),Re(null)}catch{Te(hn)}finally{st(!1)}}},[Fe,D]),jt=K?ln(K,te[K.invocation_id])!==N.complete:!1,ut=a.useCallback(async u=>{const b=await P(u);O(b),He(!1)},[P]),dt=a.useCallback(u=>{fe(null),Oe(u)},[]),Xt=a.useCallback(()=>{at||(fe(null),Oe(null))},[at]),ht=a.useCallback(async()=>{if(Ie){rt(!0),fe(null);try{await V(Ie.invocation_id),O(u=>(u==null?void 0:u.id)===Ie.id?null:u),Oe(null)}catch(u){fe(ps(u))}finally{rt(!1)}}},[Ie,V]),Rt=a.useCallback(()=>{O(null)},[]),Tt={expandedAgentId:de,loadingAgentId:We,checklistByInvocationId:te,errorByAgentId:Ee,definitionNameByRef:ie,onToggleAgent:Ct,onViewAgent:bt,onArchiveAgent:St,canArchive:!!A};return n.jsxs("div",{className:"agent-view-frontend agent-view",children:[L&&n.jsxs("div",{className:"agent-view__header",children:[n.jsx(c.Heading,{level:1,children:"Agents"}),n.jsx(c.Button,{variant:"primary",size:"S",iconLeftName:"sparkles",iconLeftScreenReaderText:"Start an agent",onClick:()=>He(!0),children:"Start an agent"})]}),U.length>0&&Jt&&n.jsxs("div",{className:"agent-view__filters",children:[xe&&n.jsxs("div",{className:"agent-view__filter",children:[n.jsx("label",{className:"agent-view__filter-label",htmlFor:"agent-view-institution-filter",children:"Institution"}),n.jsx(c.Combobox,{id:"agent-view-institution-filter",triggerVariant:"button",multiple:!0,searchType:"substring",placeholder:"All institutions",options:kt,value:Be,onValueChange:Ze,showSelectionCountBadge:!0,showClearAll:!0,clearAllLabel:"Clear institutions"})]}),it&&n.jsxs("div",{className:"agent-view__filter",children:[n.jsx("label",{className:"agent-view__filter-label",htmlFor:"agent-view-agent-filter",children:"Agent"}),n.jsx(c.Combobox,{id:"agent-view-agent-filter",triggerVariant:"button",multiple:!0,searchType:"substring",placeholder:"All agents",options:Nt,value:je,onValueChange:Qe,showSelectionCountBadge:!0,showClearAll:!0,clearAllLabel:"Clear agents"})]})]}),Ce==="error"?n.jsxs("div",{className:"agent-view__state agent-view__state--error",role:"alert",children:[n.jsx(c.Icon,{name:"triangle-alert",size:24,color:"var(--color-semantic-destructive-600)"}),n.jsx("p",{className:"agent-view__state-message",children:ue??Yn}),n.jsx(c.Button,{variant:"secondary",size:"S",onClick:be,children:"Try again"})]}):Ce==="loading"&&U.length===0?n.jsxs("div",{className:"agent-view__state","aria-live":"polite",children:[n.jsx(c.Icon,{name:"loader",size:24,color:"var(--color-brand-600)",className:"agent-view__progress-icon--spinning",screenReaderText:In}),n.jsx("p",{className:"agent-view__state-message",children:In})]}):U.length===0?n.jsx(xa,{}):n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"agent-view__board",children:qs.map(u=>n.jsx(Ir,{column:wt[u],agents:Ge[u]??[],...Tt},u))}),Le.length>0?n.jsxs("details",{className:"agent-view__archived",open:qt,onToggle:u=>{tt(u.currentTarget.open)},children:[n.jsxs("summary",{className:"agent-view__archived-summary",children:[n.jsx(c.Heading,{level:4,children:"Archived"}),n.jsx("span",{className:"agent-view__column-count",children:Le.length})]}),n.jsx("ul",{className:"agent-view__card-list agent-view__archived-list",children:Le.map(u=>n.jsx(As,{agent:u,agentName:Bt(u,ie),column:wt[ln(u,te[u.invocation_id])],isExpanded:de===u.id,isLoading:We===u.id,checklist:te[u.invocation_id]??null,error:Ee[u.id]??null,canArchive:!1,canUnarchive:!!E,canDelete:C,onToggle:Ct,onViewAgent:bt,onUnarchive:Wt,onDelete:dt},u.id))})]}):null]}),j&&n.jsx(vs,{agent:j,invocationId:j.invocation_id,open:!0,jwt:e,headers:ce,agentUrl:i,agentChecklistUrl:o,agentResourcesUrl:l,agentTimelineUrl:m,agentChatUrl:h,agentConversationUrl:k,pauseAgentUrl:f,resumeAgentUrl:w,archiveAgentUrl:A,unarchiveAgentUrl:E,enableUpload:p,adminMode:C,initialChecklist:te[j.invocation_id]??null,usePusherToRepoll:I,pusherChannelPrefix:v,subscribeToPusher:g,onClose:Rt,onAgentUpdated:yt,onArchived:()=>{Se(j.id),tt(!0),y()},onUnarchived:()=>{y()},onDeleted:()=>{ae(j.invocation_id)}},j.id),n.jsx(Xn,{open:!!K,isInProgress:jt,isArchiving:et,error:zt,onCancel:Yt,onConfirm:()=>{ot()}}),n.jsx(Qn,{open:!!Fe,isUnarchiving:nt,error:Kt,onCancel:Et,onConfirm:()=>{ct()}}),n.jsx(Zn,{open:!!Ie,isDeleting:at,error:Vt,onCancel:Xt,onConfirm:()=>{ht()}}),n.jsx(ws,{open:$e,onClose:()=>He(!1),onStart:ut,agentDefinitions:ee})]})},Lr=(e,t)=>{const s=Date.now(),r=t.trim()||e.agent_intent;return{id:`agent-${s}`,invocation_id:`inv-${s}`,agent_definition_ref:e.ref,agent_intent:e.agent_intent,invocation_name:r,application_id:Ks,created_by:Vs,status:N["generating-a-response"],archivedAt:null,context_ref:null,checklist_ref:null}};exports.AgentMonitorKanban=Or;exports.AgentServiceClient=Gt;exports.AgentServiceError=De;exports.AgentView=vs;exports.DEFAULT_PUSHER_CHANNEL_PREFIX=pn;exports.HttpChatConnector=gs;exports.MESSAGE_TYPE_REPOLL=mn;exports.NewAgentModal=ws;exports.PUSHER_AGENT_MESSAGE_EVENT=ss;exports.REPOLL_TARGET=ke;exports.buildAgentFromDefinition=Lr;exports.buildAgentPusherChannel=as;exports.createHttpChatConnectorFactory=xn;exports.formatUserFileChatCardText=ur;exports.mapApiAgent=Ne;exports.mapApiAgentDefinition=_n;exports.mapApiAgentStatus=is;exports.mapApiAgentTimelineResponse=us;exports.mapApiChecklistEndpointResponse=vn;exports.mapApiChecklistItem=fn;exports.mapApiChecklistResponse=ds;exports.mapApiChecklistStatus=ls;exports.mapApiConversationMessages=hs;exports.mapApiOpeningMessage=At;exports.mapApiResource=os;exports.mapApiResourcesEndpointResponse=cs;exports.mapApiTripOption=rr;exports.parseConversationContentCaption=cr;exports.parseRepollMessages=rs;exports.useAgentService=_s;exports.useAgentWorkspace=fs;
6
+ `);c=f.pop()??"";for(const w of f)p(w)}if(c.trim()&&p(c),!l)throw new De(502,null,"Chat stream ended without any events");return l}}const mr=e=>{let t=null;const n=[];for(const r of e.split(`
7
+ `)){const i=r.trimEnd();i.startsWith("event:")?t=i.slice(6).trim():i.startsWith("data:")&&n.push(i.slice(5).trim())}return{event:t,data:n.length>0?n.join(`
8
+ `):null}},$s=e=>{try{return JSON.parse(e)}catch{return}};function _r(e,t){const n=new FormData;n.append("body",JSON.stringify(e));for(const r of t)n.append("files",r,r.name);return n}const fr={id:Vs,author:ne.agent,text:"Type a question or upload a file. You can ask it how it's progressing, or send an instruction and it'll act on it."};let Hs=0;const vr=e=>(Hs+=1,`${e}-${Date.now()}-${Hs}`),xr=e=>{const t=e.destination?` to ${e.destination}`:"";return`Let's get started on ${e.tripName.trim()||e.destination.trim()||"this task"}${t}. What will you do first?`};class gn{constructor(t,n,r={}){this.seededChecklist=[],this.client=t,this.agentId=n,this.chatId=r.chatId??n,this.opening=r.openingMessage??fr,this.model=r.model}openingMessage(){return this.opening}async bootstrapConversation(){const t=await this.client.getConversation(this.chatId),n=hn(t.messages);return n.length===0?[this.opening]:n}async start(t){return{...await this.exchange(xr(t)),phase:H.running}}sendMessage(t,n){return this.exchange(t,n)}async pause(){await this.client.pauseAgent(this.agentId)}async resume(){await this.client.resumeAgent(this.agentId)}seedChecklist(t){this.seededChecklist=t}async exchange(t,n){var l;const r=[{role:nr.user,content:t}],i=await this.client.chat(this.agentId,{messages:r,chat_id:this.chatId,...this.model?{model:this.model}:{},moderation_enabled:!0,meta:{feature_id:"agent_view",source:"agent_view_frontend"}},...n&&n.length>0?[{uploadFiles:n}]:[]),c={id:i.event_id||vr("msg-agent"),author:ne.agent,text:i.message.content,...(l=i.follow_up_prompts)!=null&&l.length?{followUpPrompts:i.follow_up_prompts}:{}};try{const p=await this.client.getAgentChecklist(this.agentId),{checklist:h}=qt(this.agentId,p);return h.length===0?{message:c}:(this.seededChecklist=h,{message:c,checklist:h})}catch{return{message:c,...this.seededChecklist.length?{checklist:this.seededChecklist}:{}}}}}const xs=(e,t)=>n=>{var r,i;return new gn(e,n.invocation_id,{model:t==null?void 0:t.model,chatId:((r=t==null?void 0:t.resolveChatId)==null?void 0:r.call(t,n))??(t==null?void 0:t.chatId)??n.invocation_id,openingMessage:((i=t==null?void 0:t.resolveOpeningMessage)==null?void 0:i.call(t,n))??(t==null?void 0:t.openingMessage)})},pn=e=>e instanceof De?e.message:e instanceof TypeError?"Network error while contacting the agent service.":e instanceof Error&&e.message?e.message:Ys,mn=e=>{if(e instanceof De){if(e.status===403)return aa;if(e.status===409)return ra;if(e.status===404)return ia}return na},wr=e=>{const t={};for(const n of e){const r=yt(n);if(!r)continue;const i=n.invocation_id??n.id;t[i]=r,t[n.id]=r}return t},Ar=e=>JSON.stringify(e),Bt=(e,t)=>JSON.stringify(e)===JSON.stringify(t),_n=e=>{const{jwt:t,headers:n,urls:r}=e,i=JSON.stringify(n??{}),c=Ar(r),l=a.useMemo(()=>new Kt({token:t,headers:n,urls:r}),[t,c]);a.useLayoutEffect(()=>{l.setHeaders(n)},[l,i]);const[p,h]=a.useState([]),[y,f]=a.useState([]),[w,A]=a.useState({}),[j,g]=a.useState("loading"),[C,L]=a.useState(null),[U,I]=a.useState(0),v=a.useCallback((k,R)=>{const P=k.map(ke),G=R.map(fs),$=wr(k);h(V=>Bt(V,P)?V:P),f(V=>Bt(V,G)?V:G),A(V=>Bt(V,$)?V:$),g("idle"),L(null)},[]);a.useEffect(()=>{let k=!1;return g("loading"),L(null),(async()=>{try{const[R,P]=await Promise.all([l.listAgents(),l.listAgentDefinitions()]);if(k)return;v(R,P)}catch(R){if(k)return;h([]),f([]),A({}),g("error"),L(pn(R))}})(),()=>{k=!0}},[v,l,U]);const m=a.useCallback(()=>{I(k=>k+1)},[]),x=a.useCallback(async()=>{try{const[k,R]=await Promise.all([l.listAgents(),l.listAgentDefinitions()]);v(k,R)}catch{}},[v,l]),E=a.useCallback(async k=>{const[R,P]=await Promise.all([l.getAgentChecklist(k),l.getAgent(k).catch(()=>null)]);return qt(k,R,P??void 0)},[l]),O=a.useCallback(async k=>l.listAllAgentResources(k),[l]),J=a.useCallback(async({definition:k,invocationName:R})=>{const P=await l.createAgent(k.ref,{invocationName:R}),G=await l.getAgent(P.id),$=ke(G),V=yt(G);return h(ae=>[$,...ae]),V&&A(ae=>({...ae,[$.invocation_id]:V,[$.id]:V})),$},[l]),ce=a.useCallback(async k=>{const R=await l.archiveAgent(k),P=ke(R);return h(G=>G.map($=>$.id===P.id||$.id===k||$.invocation_id===k?P:$)),P},[l]),D=a.useCallback(async k=>{const R=await l.unarchiveAgent(k),P=ke(R);return h(G=>G.map($=>$.id===P.id||$.id===k||$.invocation_id===k?P:$)),P},[l]),ee=a.useCallback(k=>{h(R=>R.filter(P=>P.id!==k&&P.invocation_id!==k))},[]),ye=a.useCallback(k=>{h(R=>{const P=R.map(G=>G.id===k.id||G.invocation_id===k.invocation_id?{...G,...k}:G);return Bt(R,P)?R:P})},[]),ue=a.useCallback(async k=>{await l.deleteAgent(k),ee(k)},[l,ee]),Ne=a.useMemo(()=>xs(l,{resolveOpeningMessage:k=>w[k.invocation_id]??w[k.id]}),[l,w]);return{agents:p,agentDefinitions:y,loadState:j,loadError:C,reload:m,refresh:x,fetchAgentChecklist:E,fetchAgentResources:O,createAgent:J,archiveAgent:ce,unarchiveAgent:D,deleteAgent:ue,removeAgent:ee,replaceAgent:ye,chatConnector:Ne}},kr=e=>JSON.stringify(e),fn=e=>{const{agent:t,jwt:n,headers:r,urls:i,chatId:c}=e,l=JSON.stringify(r??{}),p=kr(i),h=a.useMemo(()=>new Kt({token:n,headers:r,urls:{agent:i.agentUrl,agentChecklist:i.agentChecklistUrl,...i.agentResourcesUrl?{agentResources:i.agentResourcesUrl}:{},...i.agentTimelineUrl?{agentTimeline:i.agentTimelineUrl}:{},agentChat:i.agentChatUrl,agentConversation:i.agentConversationUrl,...i.pauseAgentUrl?{pauseAgent:i.pauseAgentUrl}:{},...i.resumeAgentUrl?{resumeAgent:i.resumeAgentUrl}:{},...i.archiveAgentUrl?{archiveAgent:i.archiveAgentUrl}:{},...i.unarchiveAgentUrl?{unarchiveAgent:i.unarchiveAgentUrl}:{}}}),[n,p]);a.useLayoutEffect(()=>{h.setHeaders(r)},[h,l]);const y=a.useCallback(async m=>ke(await h.getAgent(m)),[h]),f=a.useCallback(async m=>{const[x,E]=await Promise.all([h.getAgentChecklist(m),h.getAgent(m).catch(()=>null)]);return qt(m,x,E??void 0)},[h]),w=a.useCallback(async m=>h.listAllAgentResources(m),[h]),A=a.useCallback(async m=>h.getAgentContext(m),[h]),j=a.useCallback(async(m,x)=>h.getAgentResourceHtml(m,x),[h]),g=a.useCallback(async m=>{const x=await h.getAgentTimeline(m);return dn(x)},[h]),C=a.useCallback(async(m,x)=>{await h.updateAgent(m,{invocationName:x})},[h]),L=a.useCallback(async m=>ke(await h.archiveAgent(m)),[h]),U=a.useCallback(async m=>ke(await h.unarchiveAgent(m)),[h]),I=a.useCallback(async m=>{await h.deleteAgent(m)},[h]);return{connector:a.useMemo(()=>xs(h,{chatId:c??t.invocation_id})(t),[h,t.invocation_id,c]),fetchAgent:y,fetchAgentChecklist:f,fetchAgentContext:A,fetchAgentResources:w,fetchAgentResourceHtml:j,fetchAgentTimeline:g,updateAgentInvocationName:C,archiveAgent:L,unarchiveAgent:U,deleteAgent:I}},yr=3e4,Nr=(e,t)=>{const n=e.hasRunBefore?t||"This trip":e.tripName.trim()||"A new trip",r=e.destination?` to ${e.destination}`:"",i=e.hasRunBefore?" It has run before.":"";return`${n}${r}.${i}`.trim()},Bs=e=>{switch(e){case N.paused:return H.paused;case N.complete:return H.complete;default:return H.running}},ds=e=>e===N.paused,Fs=(e,t)=>{t([xe(e)])},Cr=(e,t)=>e.length===t.length&&e.every((n,r)=>{const i=t[r];return i!==void 0&&n.id===i.id&&n.text===i.text}),vn=({agent:e,invocationId:t,open:n,onClose:r,jwt:i,headers:c,agentUrl:l,agentChecklistUrl:p,agentResourcesUrl:h,agentTimelineUrl:y,agentChatUrl:f,agentConversationUrl:w,pauseAgentUrl:A,resumeAgentUrl:j,archiveAgentUrl:g,unarchiveAgentUrl:C,chatId:L,enableUpload:U,adminMode:I=!1,initialBrief:v,initialPhase:m,initialChecklist:x,usePusherToRepoll:E=!1,pusherChannelPrefix:O=_s,subscribeToPusher:J,onArchived:ce,onUnarchived:D,onDeleted:ee,onAgentUpdated:ye})=>{const[ue,Ne]=a.useState(L??t),[k,R]=a.useState("chat"),[P,G]=a.useState(!1),{connector:$,fetchAgent:V,fetchAgentChecklist:ae,fetchAgentContext:Nt,fetchAgentResources:$e,fetchAgentResourceHtml:He,fetchAgentTimeline:de,updateAgentInvocationName:Ce,archiveAgent:Ye,unarchiveAgent:We,deleteAgent:te}=fn({agent:{...e,invocation_id:t},jwt:i,headers:c,chatId:ue,urls:{agentUrl:l,agentChecklistUrl:p,agentResourcesUrl:h,agentTimelineUrl:y,agentChatUrl:f,agentConversationUrl:w,pauseAgentUrl:A,resumeAgentUrl:j,archiveAgentUrl:g,unarchiveAgentUrl:C}}),K=a.useRef($),[be,me]=a.useState(e.invocation_name),[Be,Xe]=a.useState(0),[Se,Ze]=a.useState(null),[q,re]=a.useState(m??(v?H.running:Bs(e.status))),[Qe,X]=a.useState([]),[Vt,he]=a.useState(0),[Jt,et]=a.useState(),[Fe,je]=a.useState(null),[tt,st]=a.useState([]),[Yt,Ee]=a.useState(!1),[Re,Te]=a.useState(null),[nt,at]=a.useState(null),[Wt,_e]=a.useState(null),[Ct,ie]=a.useState(!1),[bt,fe]=a.useState(null),[ve,rt]=a.useState(null),[Xt,it]=a.useState(!1),[St,Ie]=a.useState(null),[Oe,lt]=a.useState(x??null),[jt,Et]=a.useState(!1),[Zt,ot]=a.useState(null),[Qt,Rt]=a.useState(void 0),[ct,Tt]=a.useState(!1),[ut,dt]=a.useState(!1),[es,ht]=a.useState(null),[It,Ot]=a.useState(!1),[gt,u]=a.useState(!1),[b,S]=a.useState(!1),[Z,ge]=a.useState(!1),[Ge,le]=a.useState(null),[pt,ws]=a.useState(!1),[kn,ts]=a.useState(!1),[yn,Lt]=a.useState(null),[As,ks]=a.useState(!1),[Nn,ss]=a.useState(!1),[Cn,Pt]=a.useState(null),[ys,Q]=a.useState(null),[bn,mt]=a.useState(()=>ds(e.status)),[Sn,Ns]=a.useState(e.archivedAt??null),B=!!Sn,[Mt,_t]=a.useState(!1),[Ut,jn]=a.useState(!1),[Dt,En]=a.useState(!1),Cs=a.useRef(Mt),bs=a.useRef(e.invocation_name),ze=a.useRef(e),oe=a.useRef(ye),Ss=a.useRef(0),js=a.useRef(0),qe=a.useRef(0),ft=a.useRef(0);oe.current=ye,a.useEffect(()=>{Ns(e.archivedAt??null)},[e.archivedAt]),a.useEffect(()=>{K.current=$},[$]),a.useEffect(()=>{bs.current=e.invocation_name},[e.invocation_name]),a.useEffect(()=>{ze.current=e},[e]),a.useEffect(()=>{Cs.current=Mt},[Mt]),a.useEffect(()=>{Ne(L??t),R("chat"),G(!1),X([]),he(d=>d+1),Ze(null)},[t,L]),a.useEffect(()=>(qe.current+=1,Rt(void 0),Tt(!1),dt(!1),ht(null),()=>{qe.current+=1}),[t]),a.useEffect(()=>{mt(ds(e.status))},[e.status,t]),a.useEffect(()=>{if(!n||v||B)return;const d=++ft.current;return(async()=>{var _;try{const T=await V(t);if(d!==ft.current)return;re(Bs(T.status)),mt(ds(T.status)),ze.current=T,(_=oe.current)==null||_.call(oe,T)}catch{}})(),()=>{ft.current+=1}},[n,t,v,B,V]),a.useEffect(()=>{me(e.invocation_name),Xe(d=>d+1)},[e.invocation_name]),a.useEffect(()=>{B&&R("timeline")},[B]),a.useEffect(()=>{if(!n||v||B)return;const d=K.current.bootstrapConversation;if(!d){Fs(K.current.openingMessage(),X);return}let _=!1;return _t(!0),(async()=>{try{const T=await d.call(K.current);if(_)return;X(T.map(xe))}catch{_||Fs(K.current.openingMessage(),X)}finally{_||_t(!1)}})(),()=>{_=!0}},[n,v,B,t,ue]);const Le=a.useCallback(()=>{const d=++Ss.current;(async()=>{var _,T;try{const Y=await ae(t);if(d!==Ss.current)return;lt(se=>Y.checklist.length===0&&Array.isArray(se)&&se.length>0||JSON.stringify(se)===JSON.stringify(Y.checklist)?se:Y.checklist),ot(null),(T=(_=K.current).seedChecklist)==null||T.call(_,Y.checklist)}catch{}})()},[ae,t]),Pe=a.useCallback(()=>{h&&(async()=>{try{const d=await $e(t);st(d),Te(null)}catch{}})()},[h,$e,t]),pe=a.useCallback(()=>{if(!y)return;const d=++js.current;(async()=>{try{const _=await de(t);if(d!==js.current)return;rt(T=>JSON.stringify(T)===JSON.stringify(_)?T:_),Ie(null)}catch{}})()},[y,de,t]),vt=a.useCallback(d=>{const _=K.current.bootstrapConversation;_&&(async()=>{try{const T=await _.call(K.current);if(Cs.current)return;const Y=T.map(xe);let se=!1;X(Ke=>Cr(Ke,Y)?Ke:(se=!0,Y)),se&&(d!=null&&d.refreshSidePanelsOnChange)&&(Le(),pe())}catch{}})()},[Le,pe]),Rn=a.useCallback(d=>{switch(d){case Ae.checklist:Le();return;case Ae.resources:Pe();return;case Ae.chat:vt();return;case Ae.timeline:pe();return;case Ae.all:default:Le(),Pe(),vt(),pe()}},[Le,vt,Pe,pe]),Es=er({enabled:n&&E,channelPrefix:O,agentId:e.id,subscribeToPusher:J,onRepoll:Rn});a.useEffect(()=>{if(!n||v||B||Es)return;const d=window.setInterval(()=>{vt({refreshSidePanelsOnChange:!0})},yr);return()=>{window.clearInterval(d)}},[n,v,B,Es,t,ue,vt]);const $t=a.useCallback(d=>{var _,T;if(d&&d.length>0){lt(d),(T=(_=K.current).seedChecklist)==null||T.call(_,d);return}Le()},[Le]),ns=a.useCallback(d=>{$t(d.checklist),d.phase&&re(d.phase),Pe(),pe()},[$t,Pe,pe]);a.useEffect(()=>{var d,_;!n||v||x&&x.length>0&&((_=(d=K.current).seedChecklist)==null||_.call(d,x))},[n,v,x]),a.useEffect(()=>{if(!n||v)return;let d=!1;return Et(_=>x!=null&&x.length?!1:_||Oe===null||Oe.length===0),ot(null),(async()=>{var _,T;try{const Y=await ae(t);if(d)return;x!=null&&x.length||(lt(Y.checklist),(T=(_=K.current).seedChecklist)==null||T.call(_,Y.checklist))}catch{!d&&!(x!=null&&x.length)&&ot(Ft)}finally{d||Et(!1)}})(),()=>{d=!0}},[n,t,v,x,ae]),a.useEffect(()=>{if(!n||!h)return;let d=!1;return Ee(!0),Te(null),(async()=>{try{const _=await $e(t);d||st(_)}catch{d||Te(Yn)}finally{d||Ee(!1)}})(),()=>{d=!0}},[n,t,h,$e]);const Tn=a.useCallback(()=>{at(null),_e(null),fe(null),ie(!1)},[]),In=a.useCallback(d=>{if(d.misRecordUrl){window.open(d.misRecordUrl,"_blank","noopener,noreferrer");return}at(d),_e(null),fe(null),ie(!0),(async()=>{try{const _=await He(t,d.id);_e(_)}catch{fe(Wn)}finally{ie(!1)}})()},[He,t]);a.useEffect(()=>{if(!n||!y)return;let d=!1;return it(_=>_||ve===null),Ie(null),(async()=>{try{const _=await de(t);d||rt(_)}catch{d||Ie(Js)}finally{d||it(!1)}})(),()=>{d=!0}},[n,t,y,de]),a.useEffect(()=>{if(!n||!v)return;let d=!1;const _={id:`user-brief-${Date.now()}`,author:ne.user,text:Nr(v,bs.current)};return(async()=>{const T=await K.current.start(v);d||(X([xe(K.current.openingMessage()),xe(_),xe(T.message)]),$t(T.checklist),re(T.phase??H.running),Pe(),pe())})(),()=>{d=!0}},[n,v,t,$t,Pe,pe]);const On=a.useCallback(d=>{je(Ja(d))},[]),as=L??t,Ht=ve==null?void 0:ve.chatSessions,Rs=Ht!=null&&Ht.length?Ht.reduce((d,_)=>Date.parse(_.timestamp)<Date.parse(d.timestamp)?_:d).sessionId:void 0,rs=a.useCallback(()=>{R("chat"),G(!1),ue!==as&&(Ne(as),X([]),he(d=>d+1))},[ue,as]),Ln=a.useCallback(d=>{if(d===Rs){rs();return}Ne(d),G(!0),R("chat"),X([]),he(_=>_+1)},[Rs,rs]),Pn=a.useCallback(d=>{je(null),et(d),he(_=>_+1)},[]),Mn=a.useCallback(async()=>{var d;Q(null),Ot(!0);try{await K.current.pause(),ft.current+=1,re(H.paused),mt(!0);const _={...ze.current,status:N.paused};ze.current=_,(d=oe.current)==null||d.call(oe,_)}catch{Q(Xn)}finally{Ot(!1)}},[]),Un=a.useCallback(async()=>{var _;Q(null),u(!0);let d=!1;try{await K.current.resume(),d=!0,ft.current+=1,re(H.running),mt(!1);const T={...ze.current,status:N["generating-a-response"]};ze.current=T,(_=oe.current)==null||_.call(oe,T),_t(!0);const Y={id:`wake-${Date.now()}`,author:ne.user,text:Ts};X(Ke=>[...Ke,xe(Y)]);const se=await K.current.sendMessage(Ts);X(Ke=>[...Ke,xe(se.message)]),ns(se)}catch{Q(d?ua:ca)}finally{u(!1),_t(!1)}},[ns]),Dn=a.useCallback(async()=>{Q(null),le(null),S(!0);try{await Ye(t),ge(!1),ce==null||ce(),r()}catch{le(hs),Q(hs)}finally{S(!1)}},[t,Ye,ce,r]),$n=a.useCallback(async()=>{Q(null),Lt(null),ws(!0);try{await We(t),Ns(null),re(H.paused),mt(!0),R("chat"),ts(!1),D==null||D()}catch{Lt(gs),Q(gs)}finally{ws(!1)}},[t,We,D]),Hn=a.useCallback(async()=>{Q(null),Pt(null),ks(!0);try{await te(t),ss(!1),ee==null||ee(),r()}catch(d){Pt(mn(d))}finally{ks(!1)}},[t,te,ee,r]),Bn=a.useCallback(d=>{const _=d.trim(),T=be;if(Ze(null),!_){Xe(Y=>Y+1);return}_!==T&&(me(_),(async()=>{try{await Ce(t,_)}catch{me(T),Xe(Y=>Y+1),Ze(da)}})())},[be,t,Ce]),Fn=a.useCallback(()=>{if(!I||ct||ut)return;const d=++qe.current;dt(!0),ht(null),(async()=>{try{const _=await Nt(t);if(qe.current!==d)return;Rt(_),Tt(!0)}catch{qe.current===d&&ht(Jn)}finally{qe.current===d&&dt(!1)}})()},[I,ct,ut,Nt,t]),Gn=Oe;return s.jsxs(s.Fragment,{children:[s.jsxs(o.Modal,{open:n,closeHandler:r,hideCloseButton:!0,className:"agent-workspace",children:[s.jsxs(o.Modal.Header,{className:"agent-workspace__header",children:[s.jsxs("div",{className:"agent-workspace__header-title",children:[s.jsx("span",{className:"agent-workspace__header-avatar","aria-hidden":"true",children:s.jsx(o.Icon,{name:"ask-arbor",size:24})}),s.jsx(o.Modal.Title,{children:B?s.jsx("span",{className:"agent-workspace__header-name",children:be}):s.jsx(o.EditableText,{className:"agent-workspace__header-name",text:be,onEditSave:Bn},Be)}),s.jsx("span",{className:W("agent-workspace__phase",`agent-workspace__phase--${q}`),children:pa[q]}),B?s.jsx("span",{className:"agent-workspace__phase agent-workspace__phase--archived",children:"Archived"}):null,Se&&s.jsx("p",{className:"agent-workspace__error agent-workspace__name-error",role:"alert",children:Se})]}),s.jsxs("div",{className:"agent-workspace__header-actions",children:[s.jsx(o.Button,{variant:Ut?"secondary":"primary",size:"S",iconLeftName:"clipboard-list",iconLeftScreenReaderText:"Toggle checklist","aria-pressed":!Ut,onClick:()=>jn(d=>!d),children:"Checklist"}),s.jsx(o.Button,{variant:Dt?"secondary":"primary",size:"S",iconLeftName:"files",iconLeftScreenReaderText:"Toggle resources","aria-pressed":!Dt,onClick:()=>En(d=>!d),children:"Resources"}),s.jsx(o.Button,{variant:"secondary",size:"S",iconLeftName:"x",iconLeftScreenReaderText:"Close",onClick:r,children:"Close"})]})]}),s.jsxs(o.Modal.Body,{className:W("agent-workspace__body",{"agent-workspace__body--no-checklist":Ut,"agent-workspace__body--no-resources":Dt}),children:[s.jsxs("section",{className:W("agent-workspace__panel","agent-workspace__panel--chat",{"agent-workspace__panel--timeline":!!y&&(B||k==="timeline")}),"aria-label":"Agent",children:[s.jsxs("div",{className:"agent-workspace__panel-header",children:[s.jsx(o.Heading,{level:4,children:"Agent"}),A&&!B&&q===H.running&&s.jsx(o.Button,{className:"agent-workspace__panel-header-action",variant:"secondary-destructive",size:"S",iconLeftName:"circle-x",iconLeftScreenReaderText:"Pause",disabled:It,onClick:()=>void Mn(),children:It?"Pausing…":"Pause agent"}),j&&!B&&q===H.paused&&bn&&s.jsx(o.Button,{className:"agent-workspace__panel-header-action",variant:"secondary",size:"S",iconLeftName:"iteration-ccw",iconLeftScreenReaderText:"Resume",disabled:gt,onClick:()=>void Un(),children:gt?"Resuming…":"Resume agent"}),g&&!B&&s.jsx(o.Button,{className:"agent-workspace__panel-header-action",variant:"secondary",size:"S",iconLeftName:"archive",iconLeftScreenReaderText:"Archive",onClick:()=>{le(null),Q(null),ge(!0)},children:"Archive agent"}),C&&B&&s.jsx(o.Button,{className:"agent-workspace__panel-header-action",variant:"secondary",size:"S",onClick:()=>{Lt(null),Q(null),ts(!0)},children:"Unarchive agent"}),I&&B&&s.jsx(o.Button,{className:"agent-workspace__panel-header-action",variant:"secondary-destructive",size:"S",onClick:()=>{Pt(null),Q(null),ss(!0)},children:"Delete agent"})]}),ys&&s.jsx("p",{className:"agent-workspace__error agent-workspace__lifecycle-error",role:"alert",children:ys}),y&&!B&&s.jsxs(o.Tabs,{className:"agent-workspace__center-tabs","aria-label":"Center panel",children:[s.jsx(o.Tabs.Item,{active:k==="chat",tabElementProps:{id:"agent-center-tab-chat",onClick:()=>R("chat")},children:"Chat"}),s.jsx(o.Tabs.Item,{active:k==="timeline",tabElementProps:{id:"agent-center-tab-timeline",onClick:()=>R("timeline")},children:"Timeline"})]}),y&&!B&&k==="chat"&&P&&s.jsx("div",{className:"agent-workspace__center-back",children:s.jsx(o.Button,{variant:"tertiary",size:"S",iconLeftName:"arrow-left",iconLeftScreenReaderText:"Back to main chat",onClick:rs,children:"Back to main chat"})}),y&&(B||k==="timeline")&&s.jsx(Ka,{timeline:ve,isLoading:Xt,error:St,onOpenChatSession:B?void 0:Ln}),!B&&s.jsx("div",{className:"agent-workspace__chat-keep-alive",hidden:!!y&&k!=="chat",children:s.jsx(Ra,{connector:$,phase:q,chatHistory:Qe,chatSessionKey:Vt,startQuery:Jt,clarificationMessage:Fe,enableUpload:U,onTurn:ns,onAwaitingChange:_t,onClarificationPrompt:Pn,onDismissClarification:()=>je(null)})}),B&&!y&&s.jsx("p",{className:"agent-workspace__timeline-status",role:"status",children:"Chat is not available for archived agents."})]}),!Ut&&s.jsx(Ta,{checklist:Gn,isLoading:jt,error:Zt,phase:q,canRequestInput:!B&&q===H.running&&!Mt,onAttentionItemClick:On,adminMode:I,context:Qt,contextLoaded:ct,contextLoading:ut,contextError:es,onContextSelect:Fn},t),!Dt&&s.jsx(La,{resources:tt,isLoading:Yt,error:Re,onOpenResource:In}),s.jsx(Ia,{resource:nt,html:Wt,isLoading:Ct,error:bt,onClose:Tn})]})]}),s.jsx(Xs,{open:Z,isInProgress:q===H.running||q===H.paused&&!en(Oe??void 0),isArchiving:b,error:Ge,onCancel:()=>{b||(le(null),ge(!1))},onConfirm:()=>{Dn()}}),s.jsx(Qs,{open:kn,isUnarchiving:pt,error:yn,onCancel:()=>{pt||(Lt(null),ts(!1))},onConfirm:()=>{$n()}}),s.jsx(Zs,{open:Nn,isDeleting:As,error:Cn,onCancel:()=>{As||(Pt(null),ss(!1))},onConfirm:()=>{Hn()}})]})},br="Unable to load agent definitions. Please try again.",Sr="Unable to start the agent.",Gs="Loading agents…",xn=({open:e,onClose:t,onStart:n,agentDefinitions:r,definitionsState:i="idle",definitionsError:c=null,onRetryDefinitions:l,embedded:p=!1})=>{const[h,y]=a.useState(void 0),[f,w]=a.useState(""),[A,j]=a.useState(!1),[g,C]=a.useState(null),L=[...r].sort((E,O)=>E.display_name.localeCompare(O.display_name)).map(E=>({value:E.ref,label:E.display_name}));a.useEffect(()=>{e&&(y(void 0),w(""),j(!1),C(null))},[e]);const U=h!==void 0&&f.trim().length>0,I=a.useCallback(E=>{const O=r.find(J=>J.ref===E[0]);O&&y(O)},[r]),v=a.useCallback(async()=>{if(!(!h||!U||A)){j(!0),C(null);try{await n({definition:h,invocationName:f.trim()})}catch(E){C(E instanceof Error?E.message:Sr)}finally{j(!1)}}},[U,h,f,A,n]);if(i==="idle"&&r.length===0||!e)return null;const m=s.jsxs("div",{className:"new-agent__header-title",children:[s.jsx("span",{className:"new-agent__header-avatar","aria-hidden":"true",children:s.jsx(o.Icon,{name:"ask-arbor",size:24})}),p?s.jsx("h2",{className:"new-agent__title",children:"Start an agent"}):s.jsx(o.Modal.Title,{children:"Start an agent"})]});let x;return i==="loading"?x=s.jsxs("div",{className:"new-agent__state","aria-live":"polite",children:[s.jsx(o.Icon,{name:"loader",size:24,color:"var(--color-brand-600)",className:"new-agent__spinner",screenReaderText:Gs}),s.jsx("p",{className:"new-agent__state-message",children:Gs})]}):i==="error"?x=s.jsxs("div",{className:"new-agent__state new-agent__state--error",role:"alert",children:[s.jsx(o.Icon,{name:"triangle-alert",size:24,color:"var(--color-semantic-destructive-600)"}),s.jsx("p",{className:"new-agent__state-message",children:c??br}),l?s.jsx(o.Button,{variant:"secondary",size:"S",onClick:l,children:"Try again"}):null]}):x=s.jsxs("form",{className:"new-agent__form","aria-label":"Start an agent",onSubmit:E=>{E.preventDefault(),U&&!A&&v()},children:[s.jsxs("div",{className:"new-agent__type-field",children:[s.jsx("label",{className:"new-agent__type-label",htmlFor:"new-agent-type",children:"What would you like your agent to do?"}),s.jsx(o.SelectDropdown,{id:"new-agent-type",placeholder:"Which agent would you like to start?",options:L,selectedValues:h?[h.ref]:[],onSelectionChange:I})]}),s.jsxs("div",{className:"new-agent__type-field",children:[s.jsx("label",{className:"new-agent__type-label",htmlFor:"new-agent-invocation-name",children:"Name"}),s.jsx(o.TextInput,{id:"new-agent-invocation-name",value:f,placeholder:"What would you like to call your agent?",onChange:E=>w(E.target.value)})]}),g?s.jsx("p",{className:"new-agent__error",role:"alert",children:g}):null,s.jsx("div",{className:"new-agent__actions",children:s.jsx(o.Button,{type:"submit",variant:"primary",className:W("new-agent__start-button",{"new-agent__start-button--starting":A}),disabled:!U||A,iconLeftName:A?"loader":"sparkles",iconLeftScreenReaderText:A?"Starting":void 0,children:A?"Starting…":"Start"})})]}),p?s.jsxs("div",{className:W("new-agent","new-agent--embedded"),children:[s.jsx("div",{className:"new-agent__header",children:m}),s.jsx("div",{className:"new-agent__body",children:x})]}):s.jsxs(o.Modal,{open:e,closeHandler:t,className:"new-agent",children:[s.jsx(o.Modal.Header,{className:"new-agent__header",children:m}),s.jsx(o.Modal.Body,{className:"new-agent__body",children:x})]})},zs=e=>{window.location.assign(e)},jr=({open:e,authToken:t,headers:n,agentDefinitionsUrl:r,agentsUrl:i,closeUrl:c,successUrl:l,onClose:p,onStart:h,embedded:y=!1})=>{const f=JSON.stringify(n??{}),w=a.useMemo(()=>new Kt({token:t,headers:n,urls:{agentDefinitions:r,agents:i}}),[t,r,i,f]),[A,j]=a.useState([]),[g,C]=a.useState("loading"),[L,U]=a.useState(null),[I,v]=a.useState(0);a.useEffect(()=>{if(!e)return;let O=!1;return C("loading"),U(null),(async()=>{try{const J=await w.listAgentDefinitions();if(O)return;j(J.map(fs)),C("idle")}catch(J){if(O)return;j([]),U(pn(J)),C("error")}})(),()=>{O=!0}},[w,e,I]);const m=a.useCallback(()=>{p==null||p(),c&&zs(c)},[c,p]),x=a.useCallback(async O=>{await w.createAgent(O.definition.ref,{invocationName:O.invocationName}),h==null||h(O),l&&zs(l)},[w,h,l]),E=a.useCallback(()=>{v(O=>O+1)},[]);return s.jsx(xn,{open:e,onClose:m,onStart:x,agentDefinitions:A,definitionsState:g,definitionsError:L,onRetryDefinitions:E,embedded:y})},Er=e=>"agentDefinitionsUrl"in e,wn=e=>Er(e)?s.jsx(jr,{...e}):s.jsx(xn,{...e}),Rr=e=>e.archivedAt?"archived":e.status===N.paused?"paused":null,Tr=e=>{if(e==="archived")return zn;if(e==="paused")return kt[N.paused].statusIcon},Ir=({column:e,overlayIcon:t,label:n})=>{const r=t??e.statusIcon;return r?s.jsx("span",{className:"agent-view__status-indicator",children:s.jsx(o.Icon,{name:r.name,size:16,color:r.color,className:W({"agent-view__progress-icon--spinning":r.spin}),screenReaderText:n})}):s.jsx("span",{className:W("agent-view__dot",{[`agent-view__dot--${e.dotModifier}`]:e.dotModifier}),children:s.jsx(o.Dot,{colour:e.dotColour,label:n})})},An=({agent:e,agentName:t,column:n,isExpanded:r,isLoading:i,checklist:c,error:l,canArchive:p,canUnarchive:h=!1,canDelete:y=!1,onToggle:f,onViewAgent:w,onArchive:A,onUnarchive:j,onDelete:g})=>{const{id:C,invocation_name:L}=e,U=`agent-card-${C}-header`,I=`agent-card-${C}-progress`,v=Rr(e),m=Tr(v);return s.jsx("li",{className:W("agent-view__card",{"agent-view__card--expanded":r,"agent-view__card--paused":v==="paused","agent-view__card--archived":v==="archived"}),children:s.jsxs(o.Card,{spacing:"dense",children:[s.jsx("button",{type:"button",className:"agent-view__card-toggle","aria-expanded":r,"aria-controls":I,"aria-label":L,id:U,onClick:()=>f(C),children:s.jsxs("div",{className:"agent-view__card-content",children:[s.jsx(Ir,{column:n,overlayIcon:m}),s.jsx("span",{className:"agent-view__card-invocation-name",children:L}),s.jsx("span",{className:"agent-view__card-agent-name",children:t}),v==="paused"?s.jsx("span",{className:"agent-view__card-state-pill",children:"Paused"}):null,v==="archived"?s.jsx("span",{className:"agent-view__card-state-pill",children:"Archived"}):null,s.jsx(o.Icon,{name:r?"chevron-up":"chevron-down",size:16,className:"agent-view__card-chevron"})]})}),r&&s.jsxs("div",{id:I,"aria-labelledby":U,className:"agent-view__card-progress",children:[i&&s.jsxs("div",{className:"agent-view__progress-loading","aria-live":"polite",children:[s.jsx(o.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-view__progress-icon--spinning",screenReaderText:Ve}),s.jsx("span",{children:Ve})]}),!i&&l&&s.jsx("p",{className:"agent-view__progress-error",role:"alert",children:l}),!i&&!l&&c!==null&&s.jsx(ba,{checklist:c}),!i&&!l&&c===null&&s.jsxs("div",{className:"agent-view__progress-loading","aria-live":"polite",children:[s.jsx(o.Icon,{name:"loader",size:16,color:"var(--color-brand-600)",className:"agent-view__progress-icon--spinning",screenReaderText:Ve}),s.jsx("span",{children:Ve})]}),s.jsxs("div",{className:"agent-view__card-actions",children:[p?s.jsx(o.Button,{variant:"secondary",size:"S",iconLeftName:"archive",iconLeftScreenReaderText:"Archive",onClick:()=>A==null?void 0:A(e),children:"Archive"}):h?s.jsx(o.Button,{variant:"secondary",size:"S",onClick:()=>j==null?void 0:j(e),children:"Unarchive"}):y?s.jsx(o.Button,{variant:"secondary-destructive",size:"S",onClick:()=>g==null?void 0:g(e),children:"Delete"}):s.jsx("span",{}),h&&y?s.jsx(o.Button,{variant:"secondary-destructive",size:"S",onClick:()=>g==null?void 0:g(e),children:"Delete"}):null,s.jsx(o.Button,{variant:"secondary",size:"S",onClick:()=>w==null?void 0:w(e),children:"View agent"})]})]})]})})},Or=({column:e,agents:t,expandedAgentId:n,loadingAgentId:r,checklistByInvocationId:i,errorByAgentId:c,definitionNameByRef:l,onToggleAgent:p,onViewAgent:h,onArchiveAgent:y,canArchive:f})=>s.jsxs("section",{className:"agent-view__column","aria-label":e.title,children:[s.jsxs("div",{className:"agent-view__column-header",children:[s.jsx(o.Heading,{level:4,children:e.title}),s.jsx("span",{className:"agent-view__column-count",children:t.length})]}),s.jsx("ul",{className:"agent-view__card-list",children:t.map(w=>s.jsx(An,{agent:w,agentName:Gt(w,l),column:e,isExpanded:n===w.id,isLoading:r===w.id,checklist:i[w.invocation_id]??null,error:c[w.id]??null,canArchive:f&&!w.archivedAt,onToggle:p,onViewAgent:h,onArchive:y},w.id))})]}),Gt=(e,t)=>t.get(e.agent_definition_ref)??e.agent_definition_ref.replace(/_/g," "),Lr=({jwt:e,headers:t,agentDefinitionsUrl:n,agentsUrl:r,agentUrl:i,agentChecklistUrl:c,agentResourcesUrl:l,agentTimelineUrl:p,agentChatUrl:h,agentConversationUrl:y,pauseAgentUrl:f,resumeAgentUrl:w,archiveAgentUrl:A,unarchiveAgentUrl:j,enableUpload:g,adminMode:C=!1,showHeader:L=!1,institutions:U,usePusherToRepoll:I=!1,pusherChannelPrefix:v=_s,subscribeToPusher:m})=>{var gt;const x=a.useMemo(()=>({agentDefinitions:n,agents:r,agent:i,agentChecklist:c,...l?{agentResources:l}:{},...p?{agentTimeline:p}:{},agentChat:h,agentConversation:y,...A?{archiveAgent:A}:{},...j?{unarchiveAgent:j}:{}}),[n,r,i,c,l,p,h,y,A,j]),[E,O]=a.useState(null),J=E?(gt=U==null?void 0:U.find(u=>u.applicationId===E.application_id))==null?void 0:gt.applicationUrl:void 0,ce=a.useMemo(()=>{const u={...t??{}};return J?u[Ue.arborApplicationUrl]=J:delete u[Ue.arborApplicationUrl],u},[t,J]),{agents:D,agentDefinitions:ee,loadState:ye,loadError:ue,reload:Ne,refresh:k,fetchAgentChecklist:R,createAgent:P,archiveAgent:G,unarchiveAgent:$,deleteAgent:V,removeAgent:ae,replaceAgent:Nt}=_n({jwt:e,headers:ce,urls:x}),[$e,He]=a.useState(!1),[de,Ce]=a.useState(null),[Ye,We]=a.useState(null),[te,K]=a.useState({}),[be,me]=a.useState({}),[Be,Xe]=a.useState([]),[Se,Ze]=a.useState([]),[q,re]=a.useState(null),[Qe,X]=a.useState(!1),[Vt,he]=a.useState(null),[Jt,et]=a.useState(!1),[Fe,je]=a.useState(null),[tt,st]=a.useState(!1),[Yt,Ee]=a.useState(null),[Re,Te]=a.useState(null),[nt,at]=a.useState(!1),[Wt,_e]=a.useState(null);a.useEffect(()=>{O(u=>u?D.find(b=>b.id===u.id)??u:null)},[D]);const Ct=a.useMemo(()=>{const u=new Set(D.map(S=>S.application_id)),b=new Map((U??[]).map(S=>[S.applicationId,S.name]));return[...u].sort((S,Z)=>(b.get(S)??S).localeCompare(b.get(Z)??Z)).map(S=>({value:S,label:b.get(S)??S}))},[D,U]),ie=a.useMemo(()=>new Map(ee.map(u=>[u.ref,u.display_name])),[ee]),bt=a.useMemo(()=>[...new Set(D.map(b=>Gt(b,ie)))].sort((b,S)=>b.localeCompare(S)).map(b=>({value:b,label:b})),[D,ie]),fe=a.useMemo(()=>D.filter(u=>!(Be.length>0&&!Be.includes(u.application_id)||Se.length>0&&!Se.includes(Gt(u,ie)))),[D,ie,Se,Be]),ve=Ct.length>1,rt=bt.length>1,Xt=ve||rt;a.useEffect(()=>{const u=window.setInterval(()=>{k()},6e4);return()=>{window.clearInterval(u)}},[k]),a.useEffect(()=>{if(D.length===0)return;let u=!1;return(async()=>{const b=await Promise.allSettled(D.map(async S=>{const Z=await R(S.invocation_id);return{agentId:S.id,invocationId:S.invocation_id,checklist:Z.checklist}}));u||(K(S=>{const Z={...S};let ge=!1;for(const Ge of b){if(Ge.status!=="fulfilled")continue;const{invocationId:le,checklist:pt}=Ge.value;JSON.stringify(S[le])!==JSON.stringify(pt)&&(Z[le]=pt,ge=!0)}return ge?Z:S}),me(S=>{const Z={...S};let ge=!1;return b.forEach((Ge,le)=>{Ge.status==="rejected"&&Z[D[le].id]!==Ft&&(Z[D[le].id]=Ft,ge=!0)}),ge?Z:S}))})(),()=>{u=!0}},[D,R]);const it=a.useCallback(async u=>{if(!te[u.invocation_id]){We(u.id),me(b=>{const S={...b};return delete S[u.id],S});try{const b=await R(u.invocation_id);K(S=>({...S,[u.invocation_id]:b.checklist}))}catch{me(b=>({...b,[u.id]:Ft}))}finally{We(b=>b===u.id?null:b)}}},[R,te]),St=a.useCallback(u=>{if(de===u){Ce(null);return}const b=D.find(({id:S})=>S===u);b&&(Ce(u),it(b))},[D,de,it]),Ie=a.useMemo(()=>fe.filter(u=>!!u.archivedAt),[fe]),Oe=a.useMemo(()=>fe.filter(u=>!u.archivedAt),[fe]),lt=a.useMemo(()=>{const u={};for(const b of Oe){const S=os(b,te[b.invocation_id]);(u[S]??(u[S]=[])).push(b)}return u},[Oe,te]),jt=a.useCallback(u=>{O(u)},[]),Et=a.useCallback(u=>{he(null),re(u)},[]),Zt=a.useCallback(()=>{Qe||(he(null),re(null))},[Qe]),ot=a.useCallback(async()=>{if(q){X(!0),he(null),me(u=>{const b={...u};return delete b[q.id],b});try{await G(q.invocation_id),O(u=>(u==null?void 0:u.id)===q.id?null:u),Ce(q.id),et(!0),re(null)}catch{he(hs)}finally{X(!1)}}},[q,G]),Qt=a.useCallback(u=>{Ee(null),je(u)},[]),Rt=a.useCallback(()=>{tt||(Ee(null),je(null))},[tt]),ct=a.useCallback(async()=>{if(Fe){st(!0),Ee(null);try{await $(Fe.invocation_id),je(null)}catch{Ee(gs)}finally{st(!1)}}},[Fe,$]),Tt=q?os(q,te[q.invocation_id])!==N.complete:!1,ut=a.useCallback(async u=>{const b=await P(u);O(b),He(!1)},[P]),dt=a.useCallback(u=>{_e(null),Te(u)},[]),es=a.useCallback(()=>{nt||(_e(null),Te(null))},[nt]),ht=a.useCallback(async()=>{if(Re){at(!0),_e(null);try{await V(Re.invocation_id),O(u=>(u==null?void 0:u.id)===Re.id?null:u),Te(null)}catch(u){_e(mn(u))}finally{at(!1)}}},[Re,V]),It=a.useCallback(()=>{O(null)},[]),Ot={expandedAgentId:de,loadingAgentId:Ye,checklistByInvocationId:te,errorByAgentId:be,definitionNameByRef:ie,onToggleAgent:St,onViewAgent:jt,onArchiveAgent:Et,canArchive:!!A};return s.jsxs("div",{className:"agent-view-frontend agent-view",children:[L&&s.jsxs("div",{className:"agent-view__header",children:[s.jsx(o.Heading,{level:1,children:"Agents"}),s.jsx(o.Button,{variant:"primary",size:"S",iconLeftName:"sparkles",iconLeftScreenReaderText:"Start an agent",onClick:()=>He(!0),children:"Start an agent"})]}),D.length>0&&Xt&&s.jsxs("div",{className:"agent-view__filters",children:[ve&&s.jsxs("div",{className:"agent-view__filter",children:[s.jsx("label",{className:"agent-view__filter-label",htmlFor:"agent-view-institution-filter",children:"Institution"}),s.jsx(o.Combobox,{id:"agent-view-institution-filter",triggerVariant:"button",multiple:!0,searchType:"substring",placeholder:"All institutions",options:Ct,value:Be,onValueChange:Xe,showSelectionCountBadge:!0,showClearAll:!0,clearAllLabel:"Clear institutions"})]}),rt&&s.jsxs("div",{className:"agent-view__filter",children:[s.jsx("label",{className:"agent-view__filter-label",htmlFor:"agent-view-agent-filter",children:"Agent"}),s.jsx(o.Combobox,{id:"agent-view-agent-filter",triggerVariant:"button",multiple:!0,searchType:"substring",placeholder:"All agents",options:bt,value:Se,onValueChange:Ze,showSelectionCountBadge:!0,showClearAll:!0,clearAllLabel:"Clear agents"})]})]}),ye==="error"?s.jsxs("div",{className:"agent-view__state agent-view__state--error",role:"alert",children:[s.jsx(o.Icon,{name:"triangle-alert",size:24,color:"var(--color-semantic-destructive-600)"}),s.jsx("p",{className:"agent-view__state-message",children:ue??Ys}),s.jsx(o.Button,{variant:"secondary",size:"S",onClick:Ne,children:"Try again"})]}):ye==="loading"&&D.length===0?s.jsxs("div",{className:"agent-view__state","aria-live":"polite",children:[s.jsx(o.Icon,{name:"loader",size:24,color:"var(--color-brand-600)",className:"agent-view__progress-icon--spinning",screenReaderText:Is}),s.jsx("p",{className:"agent-view__state-message",children:Is})]}):D.length===0?s.jsx(xa,{}):s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"agent-view__board",children:qn.map(u=>s.jsx(Or,{column:kt[u],agents:lt[u]??[],...Ot},u))}),Ie.length>0?s.jsxs("details",{className:"agent-view__archived",open:Jt,onToggle:u=>{et(u.currentTarget.open)},children:[s.jsxs("summary",{className:"agent-view__archived-summary",children:[s.jsx(o.Heading,{level:4,children:"Archived"}),s.jsx("span",{className:"agent-view__column-count",children:Ie.length})]}),s.jsx("ul",{className:"agent-view__card-list agent-view__archived-list",children:Ie.map(u=>s.jsx(An,{agent:u,agentName:Gt(u,ie),column:kt[os(u,te[u.invocation_id])],isExpanded:de===u.id,isLoading:Ye===u.id,checklist:te[u.invocation_id]??null,error:be[u.id]??null,canArchive:!1,canUnarchive:!!j,canDelete:C,onToggle:St,onViewAgent:jt,onUnarchive:Qt,onDelete:dt},u.id))})]}):null]}),E&&s.jsx(vn,{agent:E,invocationId:E.invocation_id,open:!0,jwt:e,headers:ce,agentUrl:i,agentChecklistUrl:c,agentResourcesUrl:l,agentTimelineUrl:p,agentChatUrl:h,agentConversationUrl:y,pauseAgentUrl:f,resumeAgentUrl:w,archiveAgentUrl:A,unarchiveAgentUrl:j,enableUpload:g,adminMode:C,initialChecklist:te[E.invocation_id]??null,usePusherToRepoll:I,pusherChannelPrefix:v,subscribeToPusher:m,onClose:It,onAgentUpdated:Nt,onArchived:()=>{Ce(E.id),et(!0),k()},onUnarchived:()=>{k()},onDeleted:()=>{ae(E.invocation_id)}},E.id),s.jsx(Xs,{open:!!q,isInProgress:Tt,isArchiving:Qe,error:Vt,onCancel:Zt,onConfirm:()=>{ot()}}),s.jsx(Qs,{open:!!Fe,isUnarchiving:tt,error:Yt,onCancel:Rt,onConfirm:()=>{ct()}}),s.jsx(Zs,{open:!!Re,isDeleting:nt,error:Wt,onCancel:es,onConfirm:()=>{ht()}}),s.jsx(wn,{open:$e,onClose:()=>He(!1),onStart:ut,agentDefinitions:ee})]})},Pr=(e,t)=>{const n=Date.now(),r=t.trim()||e.agent_intent;return{id:`agent-${n}`,invocation_id:`inv-${n}`,agent_definition_ref:e.ref,agent_intent:e.agent_intent,invocation_name:r,application_id:Kn,created_by:Vn,status:N["generating-a-response"],archivedAt:null,context_ref:null,checklist_ref:null}};exports.AgentMonitorKanban=Lr;exports.AgentServiceClient=Kt;exports.AgentServiceError=De;exports.AgentView=vn;exports.DEFAULT_PUSHER_CHANNEL_PREFIX=_s;exports.HttpChatConnector=gn;exports.MESSAGE_TYPE_REPOLL=ms;exports.NewAgentModal=wn;exports.PUSHER_AGENT_MESSAGE_EVENT=nn;exports.REPOLL_TARGET=Ae;exports.buildAgentFromDefinition=Pr;exports.buildAgentPusherChannel=an;exports.createHttpChatConnectorFactory=xs;exports.formatUserFileChatCardText=dr;exports.mapApiAgent=ke;exports.mapApiAgentDefinition=fs;exports.mapApiAgentStatus=ln;exports.mapApiAgentTimelineResponse=dn;exports.mapApiChecklistEndpointResponse=qt;exports.mapApiChecklistItem=vs;exports.mapApiChecklistResponse=cr;exports.mapApiChecklistStatus=on;exports.mapApiConversationMessages=hn;exports.mapApiOpeningMessage=yt;exports.mapApiResource=cn;exports.mapApiResourcesEndpointResponse=un;exports.mapApiTripOption=rr;exports.parseConversationContentCaption=ur;exports.parseRepollMessages=rn;exports.useAgentService=_n;exports.useAgentWorkspace=fn;
package/dist/index.d.ts CHANGED
@@ -48,7 +48,7 @@ export declare type AgentChecklistItem = {
48
48
  children?: AgentChecklistItem[];
49
49
  };
50
50
 
51
- export declare type AgentChecklistItemStatus = 'generating-a-response' | 'hitl' | 'complete' | 'failed';
51
+ export declare type AgentChecklistItemStatus = 'generating-a-response' | 'to_do' | 'hitl' | 'complete' | 'failed';
52
52
 
53
53
  export declare type AgentChecklistResponse = {
54
54
  invocation_id: string;
@@ -417,7 +417,7 @@ export declare type ApiChecklistItem = {
417
417
  follow_up_prompts?: string[];
418
418
  };
419
419
 
420
- export declare type ApiChecklistItemStatus = 'in_progress' | 'requires_attention' | 'failed' | 'complete' | 'available' | 'generating-a-response' | 'hitl';
420
+ export declare type ApiChecklistItemStatus = 'in_progress' | 'to_do' | 'requires_attention' | 'waiting_on_human' | 'failed' | 'complete' | 'available' | 'generating-a-response' | 'hitl';
421
421
 
422
422
  export declare type ApiConversationMessage = {
423
423
  message_id: string;