hive-am 1.2.0 → 1.2.1

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.
Files changed (61) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/package.json +1 -1
  3. package/server/dist/http/routes/agents.js +21 -0
  4. package/server/dist/providers/opencode-server.js +45 -0
  5. package/server/dist/providers/opencode.js +50 -4
  6. package/server/dist/terminals.js +10 -2
  7. package/web/.next/BUILD_ID +1 -1
  8. package/web/.next/app-build-manifest.json +56 -56
  9. package/web/.next/app-path-routes-manifest.json +6 -6
  10. package/web/.next/build-manifest.json +2 -2
  11. package/web/.next/prerender-manifest.json +55 -55
  12. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/web/.next/server/app/_not-found.html +1 -1
  14. package/web/.next/server/app/_not-found.rsc +3 -3
  15. package/web/.next/server/app/agents/[id]/page.js +1 -1
  16. package/web/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  17. package/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  18. package/web/.next/server/app/agents.html +1 -1
  19. package/web/.next/server/app/agents.rsc +4 -4
  20. package/web/.next/server/app/connections/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/connections.html +1 -1
  22. package/web/.next/server/app/connections.rsc +4 -4
  23. package/web/.next/server/app/index.html +1 -1
  24. package/web/.next/server/app/index.rsc +4 -4
  25. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  26. package/web/.next/server/app/relations/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/relations.html +1 -1
  28. package/web/.next/server/app/relations.rsc +4 -4
  29. package/web/.next/server/app/resources/[id]/page_client-reference-manifest.js +1 -1
  30. package/web/.next/server/app/resources/page_client-reference-manifest.js +1 -1
  31. package/web/.next/server/app/resources.html +1 -1
  32. package/web/.next/server/app/resources.rsc +4 -4
  33. package/web/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
  34. package/web/.next/server/app/schedules.html +1 -1
  35. package/web/.next/server/app/schedules.rsc +4 -4
  36. package/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/sessions.html +1 -1
  38. package/web/.next/server/app/sessions.rsc +4 -4
  39. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  40. package/web/.next/server/app/skills.html +1 -1
  41. package/web/.next/server/app/skills.rsc +4 -4
  42. package/web/.next/server/app/types/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/types.html +1 -1
  44. package/web/.next/server/app/types.rsc +4 -4
  45. package/web/.next/server/app-paths-manifest.json +6 -6
  46. package/web/.next/server/chunks/274.js +1 -1
  47. package/web/.next/server/chunks/612.js +1 -1
  48. package/web/.next/server/pages/404.html +1 -1
  49. package/web/.next/server/pages/500.html +1 -1
  50. package/web/.next/server/server-reference-manifest.json +1 -1
  51. package/web/.next/static/chunks/705-c7e75806f77b880c.js +1 -0
  52. package/web/.next/static/chunks/839-4aefe6e71be6e1ef.js +1 -0
  53. package/web/.next/static/chunks/app/agents/[id]/{page-4af6c246c4ca7a97.js → page-3faf40800981a736.js} +1 -1
  54. package/web/.next/static/chunks/app/layout-99620746d028dda8.js +1 -0
  55. package/web/.next/static/css/{dd4e32c285f75776.css → b7a03c62468f4263.css} +1 -1
  56. package/web/.next/trace +29 -29
  57. package/web/.next/static/chunks/705-a16e1fe09be1ac7f.js +0 -1
  58. package/web/.next/static/chunks/839-23c5508622fae942.js +0 -1
  59. package/web/.next/static/chunks/app/layout-87ebb70bd9cb8443.js +0 -1
  60. /package/web/.next/static/{p4S3i9kvO359GW91DQiHu → Bz7onClw1BajMUCwqpU8o}/_buildManifest.js +0 -0
  61. /package/web/.next/static/{p4S3i9kvO359GW91DQiHu → Bz7onClw1BajMUCwqpU8o}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[705],{51705:(e,t,s)=>{s.d(t,{ry:()=>O,BZ:()=>H});var a=s(94799),n=s(34023),l=s(6458),r=s(53983),i=s(14214),c=s(84611),o=s(8089),d=s(50352),u=s(46325),h=s(79141),m=s(4713),p=s(70665),x=s(83372),g=s(75014),j=s(97541),f=s(50703),v=s(3749),b=s(48538),y=s(77021),N=s(47890),k=s(86606),z=s(10969),A=s(49731),w=s(7697),C=s(18853);let T=/^\[hive:channel\] (.+?) · Place: (.+?) · Thread: (.+?) · From: (.+?)((?: · (?:Addressed|Muted): \w+| · To: [^·\n]+)*)(?: · Now: [^\n]*)?\nMessage:\n([\s\S]*)$/,R="\n\n[hive:context]\n",E="\n\n[hive:files]\n";var F=s(69654);function D(e){let{text:t,badge:s,agentId:n}=e,{t:l}=(0,F.s9)(),r=function(e){let t=T.exec(e);if(!t)return null;let[s,...a]=t[6].split(R),[n,...l]=s.split(E),r=l.join(E).split("\n").flatMap(e=>{let t=/^- (.+) \(([^()]*)\)$/.exec(e);return t?[{path:t[1],name:t[1].replace(/^.*[\\/]/,"").replace(/^\d+-\d+-/,""),detail:t[2]}]:[]});return{platform:t[1],place:t[2],thread:t[3],from:t[4],body:n,files:r,overheard:/Addressed: no/.test(t[5]),muted:/Muted: yes/.test(t[5]),context:a.join(R)}}(t),i=r?null:function(e){let t=e.indexOf(E);if(t<0)return null;let s=e.slice(t+E.length).split("\n").flatMap(e=>{let t=/^- (.+) \(([^()]*)\)$/.exec(e);return t?[{path:t[1],name:t[1].replace(/^.*[\\/]/,"").replace(/^web-\d+-\d+-/,""),detail:t[2]}]:[]});return s.length?{body:e.slice(0,t),files:s}:null}(t);return i?(0,a.jsxs)("div",{className:"msg user".concat(s?" queued":""),children:[(0,a.jsxs)("div",{className:"bubble",children:[i.body.trim()&&"(no text)"!==i.body.trim()&&(0,a.jsx)("div",{children:i.body.trim()}),(0,a.jsx)("div",{className:"bubble-imgs",children:i.files.map(e=>{let t=n?"/api/agents/".concat(n,"/inbox?path=").concat(encodeURIComponent(e.path)):void 0;return n&&/\.(png|jpe?g|gif|webp)$/i.test(e.path)?(0,a.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",title:e.name,children:(0,a.jsx)("img",{src:t,alt:e.name,loading:"lazy"})},e.path):(0,a.jsxs)("a",{className:"chfile",href:t,download:e.name,title:e.path,children:[(0,a.jsx)(m.A,{size:11,"aria-hidden":!0}),e.name,(0,a.jsx)("i",{children:e.detail.split(", ").pop()})]},e.path)})})]}),s&&(0,a.jsxs)("span",{className:"queued-tag",children:[(0,a.jsx)(A.A,{size:11,"aria-hidden":!0}),s]})]}):r?(0,a.jsx)("div",{className:"msg user",children:(0,a.jsxs)("div",{className:"bubble channel",children:[(0,a.jsxs)("div",{className:"chhead",children:[(0,a.jsx)(w.A,{size:12,"aria-hidden":!0}),(0,a.jsx)("b",{children:r.platform}),(0,a.jsx)("span",{children:r.place}),r.overheard&&(0,a.jsxs)("span",{className:"chtag",title:l("chat.channel.overheard.hint"),children:[(0,a.jsx)(C.A,{size:11,"aria-hidden":!0}),l("chat.channel.overheard")]}),(0,a.jsx)("span",{className:"chfrom",children:r.from.replace(/\s*\(.*\)$/,"")})]}),(0,a.jsx)("div",{className:"chbody",children:r.body}),r.files.length>0&&(0,a.jsx)("div",{className:"chfiles",children:r.files.map(e=>(0,a.jsxs)("span",{className:"chfile",title:e.path,children:[(0,a.jsx)(m.A,{size:11,"aria-hidden":!0}),e.name,(0,a.jsx)("i",{children:e.detail.split(", ").pop()})]},e.path))}),r.context&&(0,a.jsxs)("details",{className:"chctx",children:[(0,a.jsx)("summary",{children:l("chat.channel.context",{n:r.context.split("\n").filter(e=>e.startsWith("- ")).length})}),(0,a.jsx)("pre",{children:r.context.replace(/^[^\n]*\n/,"")})]})]})}):(0,a.jsxs)("div",{className:"msg user".concat(s?" queued":""),children:[(0,a.jsx)("div",{className:"bubble",children:t}),s&&(0,a.jsxs)("span",{className:"queued-tag",children:[(0,a.jsx)(A.A,{size:11,"aria-hidden":!0}),s]})]})}var M=s(56072);function P(e){var t,s,n;let{m:l}=e,{t:r}=(0,F.s9)(),u=null==(t=l.meta)?void 0:t.usage,h=l.blocks.filter(e=>"tool"===e.type).length;if(!u&&!l.durationMs&&!h)return null;let m=(0,M.RP)(u);return(0,a.jsxs)("div",{className:"replymeta",children:[(null==(s=l.meta)?void 0:s.model)&&(0,a.jsx)("span",{className:"mono",children:l.meta.model.replace(/^claude-/,"").replace(/-\d{8}$/,"")}),m>0&&(0,a.jsxs)("span",{title:u?r("chat.tokenDetail",{input:u.input,output:u.output,cacheRead:u.cacheRead,cacheWrite:u.cacheWrite}):"",children:[(0,a.jsx)(i.A,{size:12}),r("chat.inOut",{in:(0,M.yj)(u.input+u.cacheRead+u.cacheWrite),out:(0,M.yj)(u.output)})]}),(null==u?void 0:u.credits)?(0,a.jsxs)("span",{children:[(0,a.jsx)(c.A,{size:12}),r("chat.credits",{value:u.credits.toFixed(2)})]}):null,(null==(n=l.meta)?void 0:n.cost)!==void 0&&(0,a.jsxs)("span",{title:r(l.meta.costEstimated?"stats.costEstimated":"stats.costReported"),children:[(0,a.jsx)(c.A,{size:12}),l.meta.costEstimated?"≈ ":"",(0,M.F0)(l.meta.cost)]}),h>0&&(0,a.jsxs)("span",{children:[(0,a.jsx)(o.A,{size:12}),r("chat.tools",{count:h})]}),l.durationMs?(0,a.jsxs)("span",{children:[(0,a.jsx)(d.A,{size:12}),(0,M.nc)(l.durationMs)]}):null]})}function S(e){var t,s,l,r,c;let{turn:u}=e,{t:h}=(0,F.s9)(),[,m]=(0,n.useState)(0);(0,n.useEffect)(()=>{let e=setInterval(()=>m(e=>e+1),500);return()=>clearInterval(e)},[]);let p=u.usage,x=u.blocks.filter(e=>"tool"===e.type).length;return(0,a.jsxs)("div",{className:"replymeta live",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)(d.A,{size:12}),(0,M.nc)(Date.now()-u.startedAt)]}),x>0&&(0,a.jsxs)("span",{children:[(0,a.jsx)(o.A,{size:12}),h("chat.tools",{count:x})]}),p&&(null!=(t=p.output)?t:0)>0&&(0,a.jsxs)("span",{children:[(0,a.jsx)(i.A,{size:12}),h("chat.inOut",{in:(0,M.yj)((null!=(s=p.input)?s:0)+(null!=(l=p.cacheRead)?l:0)+(null!=(r=p.cacheWrite)?r:0)),out:(0,M.yj)(null!=(c=p.output)?c:0)})]}),(null==p?void 0:p.contextPct)!==void 0&&(0,a.jsx)("span",{children:h("chat.contextPct",{pct:p.contextPct.toFixed(1)})})]})}let q=(0,n.memo)(function(e){let{text:t}=e;return(0,a.jsx)("div",{className:"md",children:(0,a.jsx)(l.oz,{remarkPlugins:[r.A],children:t})})}),_=(0,n.memo)(function(e){let{blocks:t,streaming:s}=e,{t:n}=(0,F.s9)();return(0,a.jsxs)(a.Fragment,{children:[t.map((e,l)=>"text"===e.type?(0,a.jsx)(q,{text:e.text},l):"thinking"===e.type?(0,a.jsxs)("details",{className:"fold think",children:[(0,a.jsxs)("summary",{children:[(0,a.jsx)(u.A,{size:14}),s&&l===t.length-1?n("activity.thinking"):n("chat.thought"),(0,a.jsx)(h.A,{size:14,className:"chev"})]}),(0,a.jsx)("pre",{children:e.text})]},l):(0,a.jsx)(z.Dm,{tool:e,streaming:s},l)),(0,a.jsx)(z.Kt,{blocks:t})]})}),H=(0,n.memo)(function(e){let{msgs:t,agent:s}=e;(0,F.s9)();let l=(0,n.useMemo)(()=>(function(e){let t=[],s=null;for(let n of e){var a;let e;if("user"===n.role){s=n.ts,t.push(n);continue}let l=t[t.length-1],r=(e,t)=>{var s,a,n,l,r,i,c;if(!e)return t;if(!t)return e;let o=e.usage,d=t.usage;return{model:null!=(s=t.model)?s:e.model,endTs:null!=(a=t.endTs)?a:e.endTs,cost:void 0!==e.cost||void 0!==t.cost?(null!=(n=e.cost)?n:0)+(null!=(l=t.cost)?l:0):void 0,costEstimated:e.costEstimated||t.costEstimated,usage:o&&d?{input:o.input+d.input,output:o.output+d.output,cacheRead:o.cacheRead+d.cacheRead,cacheWrite:o.cacheWrite+d.cacheWrite,reasoning:o.reasoning+d.reasoning,credits:(null!=(r=o.credits)?r:0)+(null!=(i=d.credits)?i:0)||void 0,contextPct:null!=(c=d.contextPct)?c:o.contextPct}:null!=o?o:d}};(null==l?void 0:l.role)==="assistant"?(e={...l,blocks:[...l.blocks,...n.blocks],meta:r(l.meta,n.meta)},t[t.length-1]=e):(e={...n},t.push(e));let i=null==(a=e.meta)?void 0:a.endTs;e.durationMs=s&&i?Math.max(0,i-s):void 0}return t})(t),[t]);return(0,a.jsx)(a.Fragment,{children:l.map(e=>"user"===e.role?(0,a.jsx)(D,{agentId:s.id,text:e.blocks.map(e=>"text"===e.type?e.text:"").join("")},e.id):(0,a.jsxs)("div",{className:"msg assistant",children:[(0,a.jsxs)("div",{className:"who",children:[(0,a.jsx)(k._h,{agent:s,size:"sm"}),s.name,(0,a.jsx)("span",{className:"stamp",children:e.ts?(0,N.KN)(e.ts):""})]}),(0,a.jsx)(_,{blocks:e.blocks}),(0,a.jsx)(P,{m:e})]},e.id))})},(e,t)=>e.msgs===t.msgs&&e.agent.id===t.agent.id&&e.agent.name===t.agent.name&&e.agent.provider===t.agent.provider&&e.agent.role===t.agent.role),I=(0,n.memo)(function(e){let{agentId:t,name:s,running:l,queued:r,readOnly:i,onSend:c,onStop:o,toolsOpen:d,onToggleTools:u}=e,{t:h}=(0,F.s9)(),[j,f]=(0,y.ud)("hive-am.draft.".concat(t),""),[v,b]=(0,n.useState)([]),[N,z]=(0,n.useState)(!1),A=(0,k.dj)(),w=(0,n.useRef)(null),C=(0,n.useRef)(null),T=()=>{let e=w.current;e&&(e.style.height="auto",e.style.height=Math.min(e.scrollHeight,200)+"px")},R=async e=>{let t=e.slice(0,Math.max(0,5-v.length));t.length<e.length&&A(h("chat.img.max",{n:5}),"err");let s=t.filter(e=>e.size<=0x1400000&&e.size>0);s.length<t.length&&A(h("chat.img.big",{mb:20}),"err");let a=await Promise.all(s.map((e,t)=>new Promise((s,a)=>{let n=new FileReader;n.onload=()=>s({id:"".concat(Date.now(),"-").concat(t),name:e.name&&"image.png"!==e.name?e.name:"pasted-".concat(t+1,".png"),data:String(n.result),type:e.type,size:e.size}),n.onerror=()=>a(n.error),n.readAsDataURL(e)})));b(e=>[...e,...a])},E=async()=>{let e=j.trim();(e||v.length)&&(f(""),b([]),requestAnimationFrame(T),await c(e,v.map(e=>{let{name:t,data:s,type:a}=e;return{name:t,data:s,type:a}}))||(f(e),b(v),requestAnimationFrame(T)))};return(0,a.jsxs)("div",{className:"composer",children:[i?(0,a.jsx)("div",{className:"composer-box chat-readonly",children:(0,a.jsx)("span",{className:"muted",children:h("chat.readOnly")})}):(0,a.jsxs)("div",{className:"composer-box ".concat(N?"over":""),onDragOver:e=>{[...e.dataTransfer.types].includes("Files")&&(e.preventDefault(),z(!0))},onDragLeave:()=>z(!1),onDrop:e=>{z(!1);let t=[...e.dataTransfer.files];t.length&&(e.preventDefault(),R(t))},children:[v.length>0&&(0,a.jsx)("div",{className:"cmp-imgs",children:v.map(e=>{let t;return(0,a.jsxs)("span",{className:"cmp-img".concat(e.type.startsWith("image/")?"":" file"),title:e.name,children:[e.type.startsWith("image/")?(0,a.jsx)("img",{src:e.data,alt:e.name}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(m.A,{size:14,"aria-hidden":!0}),(0,a.jsx)("b",{children:e.name}),(0,a.jsx)("i",{children:(t=e.size)<1024?"".concat(t," B"):t<1048576?"".concat(Math.round(t/1024)," KB"):"".concat((t/1024/1024).toFixed(1)," MB")})]}),(0,a.jsx)("button",{type:"button",onClick:()=>b(t=>t.filter(t=>t.id!==e.id)),"aria-label":h("chat.img.remove",{name:e.name}),title:h("chat.img.remove",{name:e.name}),children:(0,a.jsx)(p.A,{size:12})})]},e.id)})}),(0,a.jsx)("input",{ref:C,type:"file",multiple:!0,hidden:!0,onChange:e=>{var t;R([...null!=(t=e.target.files)?t:[]]),e.target.value=""}}),(0,a.jsx)("button",{type:"button",className:"btn ghost icon",onClick:()=>{var e;return null==(e=C.current)?void 0:e.click()},"aria-label":h("chat.img.attach"),title:h("chat.img.attach"),children:(0,a.jsx)(m.A,{size:18})}),(0,a.jsx)("textarea",{ref:w,rows:1,onPaste:e=>{let t=[...e.clipboardData.files];!t.length||e.clipboardData.getData("text/plain").trim()||(e.preventDefault(),R(t))},value:j,placeholder:l?h("chat.queuePlaceholder"):h("chat.placeholder",{name:s}),"aria-label":h("chat.messageLabel"),onChange:e=>{f(e.target.value),T()},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),E())}}),l&&(0,a.jsxs)("button",{className:"btn",onClick:o,"aria-label":h("chat.stop"),children:[(0,a.jsx)(x.A,{size:14,fill:"currentColor"}),h("chat.stop")]}),(0,a.jsx)("button",{className:"btn primary icon",onClick:()=>void E(),disabled:!j.trim()&&!v.length,"aria-label":h("chat.send"),children:(0,a.jsx)(g.A,{size:18})})]}),(0,a.jsxs)("div",{className:"composer-meta",children:[(0,a.jsx)("span",{children:h("chat.keys")}),(0,a.jsx)("button",{type:"button",className:"linkbtn",onClick:u,children:d?h("chat.collapseTools"):h("chat.expandTools")}),r>0&&(0,a.jsx)("span",{children:h("queue.count",{count:r})})]})]})});function O(e){var t,s,l,r;let{agent:i,sessionOverride:c}=e,{t:o}=(0,F.s9)(),{agents:d}=(0,b.q5)(),{clearLive:u}=(0,b.zd)(),h=(0,k.dj)(),[m,p]=(0,n.useState)([]),[x,g]=(0,n.useState)(!1),[y,N]=(0,n.useState)(60),[A,w]=(0,n.useState)(0),C=(0,n.useRef)(null),[T,R]=(0,n.useState)([]),[E,M]=(0,n.useState)(null),P=(0,n.useRef)(null),q=(0,n.useRef)(!0),O=(0,n.useRef)(0),W=(0,n.useRef)(0),K=(0,n.useCallback)(()=>{W.current=performance.now()},[]),[$,B]=(0,n.useState)(!1),L=(0,n.useCallback)(()=>{q.current=!1,B(!0)},[]),U=(0,n.useCallback)(()=>{let e=P.current;q.current=!0,B(!1),e&&(e.scrollTop=e.scrollHeight)},[]),Y=(0,b.M_)(i.id),Z="running"===i.status||!!Y,Q=void 0!==c&&c!==i.session_id,V=(0,n.useCallback)(()=>{let e=Q?c:i.session_id;return e?v.FH.get("/agents/".concat(i.id,"/history?session=").concat(encodeURIComponent(e),"&limit=").concat(y)).then(e=>{var t;p(e.messages),w(null!=(t=e.total)?t:e.messages.length),g(!0)}).catch(e=>{h(e.message,"err"),g(!0)}):(p([]),g(!0),Promise.resolve())},[i.id,i.session_id,Q,c,h,y]);(0,n.useEffect)(()=>{g(!1),N(60)},[i.id,i.session_id,c]),(0,n.useEffect)(()=>{V()},[V]),(0,n.useLayoutEffect)(()=>{let e=P.current;e&&null!==C.current&&(e.scrollTop+=e.scrollHeight-C.current,C.current=null)},[m]);let G=(0,n.useCallback)(()=>{var e,t;C.current=null!=(t=null==(e=P.current)?void 0:e.scrollHeight)?t:null,L(),N(e=>e+120)},[L]),J=(0,b.SV)(i.id),X=(0,n.useRef)(!0);X.current=!Y&&"running"!==i.status&&!(null!=(s=i.queued)?s:0),(0,n.useEffect)(()=>{J&&V().then(()=>{X.current&&R(e=>e.length?[]:e)})},[J]),(0,n.useEffect)(()=>{R(e=>{let t=e.filter(e=>!m.some(t=>"user"===t.role&&t.blocks.some(t=>"text"===t.type&&t.text.trim()===e.trim())));return t.length===e.length?e:t})},[m]),(0,n.useEffect)(()=>{let e=P.current,t=null==e?void 0:e.firstElementChild;if(!e||!t)return;let s=()=>{q.current&&(e.scrollTop=e.scrollHeight)},a=new ResizeObserver(s);return a.observe(t),s(),()=>a.disconnect()},[x,i.id]);let ee=(0,n.useCallback)(async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(Q)return!1;R(t=>[...t,e]),U();try{let s=await v.FH.post("/agents/".concat(i.id,"/messages"),{prompt:e,...t.length?{files:t}:{}});return s.prompt&&s.prompt!==e&&R(t=>{let a=t.lastIndexOf(e);return a<0?t:t.map((e,t)=>t===a?s.prompt:e)}),!0}catch(t){return R(t=>{let s=t.lastIndexOf(e);return s<0?t:t.filter((e,t)=>t!==s)}),h(t instanceof Error?t.message:o("chat.sendFailed"),"err"),!1}},[i.id,Q,h,o,U]),et=(0,n.useCallback)(()=>{v.FH.post("/agents/".concat(i.id,"/stop")).catch(()=>void 0)},[i.id]),es=(0,n.useCallback)(()=>M(e=>!e),[]),ea=T.filter((e,t)=>!(Y&&t===T.findIndex(e=>e.trim()===Y.prompt.trim()))),en=x&&!m.length&&!Y&&!T.length;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(z.Qh.Provider,{value:E,children:(0,a.jsxs)("div",{className:"thread-wrap",children:[(0,a.jsx)("div",{className:"thread",ref:P,role:"log","aria-label":o("fa.chat.log",{name:i.name}),"aria-live":Y?"off":"polite","aria-relevant":"additions",tabIndex:-1,onWheel:e=>{e.deltaY<0&&L()},onTouchStart:K,onTouchMove:K,onPointerDown:K,onPointerMove:e=>{e.buttons&&K()},onKeyDown:e=>{!["PageUp","ArrowUp","Home"].includes(e.key)||e.target instanceof HTMLTextAreaElement||L()},onScroll:e=>{let t=e.currentTarget;t.scrollHeight-t.scrollTop-t.clientHeight<40?(q.current=!0,B(!1)):t.scrollTop<O.current-1&&performance.now()-W.current<700&&L(),O.current=t.scrollTop},children:(0,a.jsxs)("div",{className:"thread-inner",children:[en&&(0,a.jsx)("div",{className:"mt-l",children:(0,a.jsx)(k.pp,{icon:(0,a.jsx)(k._h,{agent:i,size:"lg"}),title:o("chat.empty.title",{name:i.name}),body:"orchestrator"===i.role?o("chat.empty.orchestrator"):o("chat.empty.worker")})}),A>m.length&&(0,a.jsx)("button",{type:"button",className:"btn sm chat-earlier",onClick:G,children:o("chat.earlier",{n:A-m.length})}),(0,a.jsx)(H,{msgs:m,agent:i}),Y&&(0,a.jsxs)(a.Fragment,{children:["dispatch"===Y.source?(0,a.jsxs)("div",{className:"delegation-card",children:[(0,a.jsxs)("div",{className:"head",children:[(0,a.jsx)(j.A,{size:14}),o("chat.delegatedFrom",{name:null!=(l=null==(t=d.find(e=>e.id===Y.from))?void 0:t.name)?l:o("chat.anOrchestrator")})]}),(0,a.jsx)("p",{children:Y.prompt}),(0,a.jsx)("span",{className:"hint",children:o("chat.delegatedNote")})]}):!m.some(e=>"user"===e.role&&e.blocks.some(e=>"text"===e.type&&e.text.trim()===Y.prompt.trim()))&&(0,a.jsx)(D,{text:Y.prompt,agentId:i.id}),(0,a.jsxs)("div",{className:"msg assistant",children:[(0,a.jsxs)("div",{className:"who",children:[(0,a.jsx)(k._h,{agent:i,size:"sm"}),i.name]}),(0,a.jsx)(_,{blocks:Y.blocks,streaming:!0}),!Y.error&&(0,a.jsxs)("span",{className:"typing","aria-label":o("common.working"),children:[(0,a.jsx)("i",{}),(0,a.jsx)("i",{}),(0,a.jsx)("i",{})]}),(0,a.jsx)(S,{turn:Y}),Y.error&&(0,a.jsx)(k.lZ,{kind:"err",onDismiss:()=>u(i.id),children:(0,F.YF)(Y.error)})]})]}),ea.map((e,t)=>(0,a.jsx)(D,{agentId:i.id,text:e,badge:Y?o("chat.queuedBadge"):void 0},"".concat(t,":").concat(e)))]})}),$&&(0,a.jsxs)("button",{type:"button",className:"btn sm chat-jump",onClick:U,children:[(0,a.jsx)(f.A,{size:14,"aria-hidden":!0}),o("fa.chat.jump")]})]})}),(0,a.jsx)("span",{className:"chat-sr",role:"status",children:Y?o("fa.chat.working",{name:i.name}):J?o("fa.chat.done",{name:i.name}):""}),(0,a.jsx)(I,{agentId:i.id,name:i.name,running:Z,queued:null!=(r=i.queued)?r:0,readOnly:Q,onSend:ee,onStop:et,toolsOpen:E,onToggleTools:es})]})}}}]);