agent-relay-server 0.36.0 → 0.36.2

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 (63) hide show
  1. package/docs/openapi.json +1 -1
  2. package/package.json +1 -1
  3. package/public/assets/{activity-DVdEofAq.js → activity-C3mkM6AU.js} +2 -2
  4. package/public/assets/{activity-DVdEofAq.js.map → activity-C3mkM6AU.js.map} +1 -1
  5. package/public/assets/{agent-profiles-BiQ-5F3l.js → agent-profiles-DS4_jLPT.js} +2 -2
  6. package/public/assets/{agent-profiles-BiQ-5F3l.js.map → agent-profiles-DS4_jLPT.js.map} +1 -1
  7. package/public/assets/{agents-Dt4FBBnk.js → agents-CAhQO7JH.js} +2 -2
  8. package/public/assets/{agents-Dt4FBBnk.js.map → agents-CAhQO7JH.js.map} +1 -1
  9. package/public/assets/{analytics-BeUxZhkP.js → analytics-BwihhhNn.js} +2 -2
  10. package/public/assets/{analytics-BeUxZhkP.js.map → analytics-BwihhhNn.js.map} +1 -1
  11. package/public/assets/{automation--G9ZMkL6.js → automation-BLXToUiU.js} +2 -2
  12. package/public/assets/{automation--G9ZMkL6.js.map → automation-BLXToUiU.js.map} +1 -1
  13. package/public/assets/{branch-state-badge-BTqHF74k.js → branch-state-badge-D8-T2c1K.js} +2 -2
  14. package/public/assets/{branch-state-badge-BTqHF74k.js.map → branch-state-badge-D8-T2c1K.js.map} +1 -1
  15. package/public/assets/{channels-nqTHGf6J.js → channels-ppN8k4hu.js} +2 -2
  16. package/public/assets/{channels-nqTHGf6J.js.map → channels-ppN8k4hu.js.map} +1 -1
  17. package/public/assets/chat-8iIPyww9.js +2 -0
  18. package/public/assets/{chat-DALcMlDH.js.map → chat-8iIPyww9.js.map} +1 -1
  19. package/public/assets/{connectors-ChkEg-0q.js → connectors-CL9BALhF.js} +2 -2
  20. package/public/assets/{connectors-ChkEg-0q.js.map → connectors-CL9BALhF.js.map} +1 -1
  21. package/public/assets/{formatted-body-impl-D1K3GML5.js → formatted-body-impl-BHH0wzY7.js} +2 -2
  22. package/public/assets/{formatted-body-impl-D1K3GML5.js.map → formatted-body-impl-BHH0wzY7.js.map} +1 -1
  23. package/public/assets/{index-DUxpx-Zp.css → index-3pO43nJo.css} +1 -1
  24. package/public/assets/{index-DdB6SVZY.js → index-CaauKXl9.js} +6 -6
  25. package/public/assets/{index-DdB6SVZY.js.map → index-CaauKXl9.js.map} +1 -1
  26. package/public/assets/{integrations-C8839Qa0.js → integrations-DX55ARy0.js} +2 -2
  27. package/public/assets/{integrations-C8839Qa0.js.map → integrations-DX55ARy0.js.map} +1 -1
  28. package/public/assets/{maintenance-Ddl4zgKZ.js → maintenance-9n_rJCHT.js} +2 -2
  29. package/public/assets/{maintenance-Ddl4zgKZ.js.map → maintenance-9n_rJCHT.js.map} +1 -1
  30. package/public/assets/{managed-agents-D-K6vUKj.js → managed-agents-Rp2-xpBx.js} +2 -2
  31. package/public/assets/{managed-agents-D-K6vUKj.js.map → managed-agents-Rp2-xpBx.js.map} +1 -1
  32. package/public/assets/{markdown-preview-impl-BjS4cnc3.js → markdown-preview-impl-YfJsGh6I.js} +2 -2
  33. package/public/assets/{markdown-preview-impl-BjS4cnc3.js.map → markdown-preview-impl-YfJsGh6I.js.map} +1 -1
  34. package/public/assets/{memory-BTV0z4uL.js → memory-BQONtGQS.js} +2 -2
  35. package/public/assets/{memory-BTV0z4uL.js.map → memory-BQONtGQS.js.map} +1 -1
  36. package/public/assets/{messages-CzHsL-om.js → messages-DGqpkH72.js} +2 -2
  37. package/public/assets/{messages-CzHsL-om.js.map → messages-DGqpkH72.js.map} +1 -1
  38. package/public/assets/{orchestrators-PMUp2sUP.js → orchestrators-b8k9QoGv.js} +2 -2
  39. package/public/assets/{orchestrators-PMUp2sUP.js.map → orchestrators-b8k9QoGv.js.map} +1 -1
  40. package/public/assets/{overview-B_od6jh0.js → overview-DSU_CggA.js} +2 -2
  41. package/public/assets/{overview-B_od6jh0.js.map → overview-DSU_CggA.js.map} +1 -1
  42. package/public/assets/{pairs-CaxiFyfY.js → pairs-DGocNC1U.js} +2 -2
  43. package/public/assets/{pairs-CaxiFyfY.js.map → pairs-DGocNC1U.js.map} +1 -1
  44. package/public/assets/{security-BZYHZ4CE.js → security-BSh0QxOl.js} +2 -2
  45. package/public/assets/{security-BZYHZ4CE.js.map → security-BSh0QxOl.js.map} +1 -1
  46. package/public/assets/{settings-RLyewdfK.js → settings-C03CAJgO.js} +2 -2
  47. package/public/assets/{settings-RLyewdfK.js.map → settings-C03CAJgO.js.map} +1 -1
  48. package/public/assets/{store-CMUFZKxf.js → store-DKVWC6Uh.js} +2 -2
  49. package/public/assets/store-DKVWC6Uh.js.map +1 -0
  50. package/public/assets/{tasks-BYTcfYDQ.js → tasks-rKbuUPOk.js} +2 -2
  51. package/public/assets/{tasks-BYTcfYDQ.js.map → tasks-rKbuUPOk.js.map} +1 -1
  52. package/public/assets/{terminal-viewer-impl-B5rPCNkZ.js → terminal-viewer-impl-CA8u4jh3.js} +2 -2
  53. package/public/assets/{terminal-viewer-impl-B5rPCNkZ.js.map → terminal-viewer-impl-CA8u4jh3.js.map} +1 -1
  54. package/public/assets/{work-queue-DYgqkTQD.js → work-queue-DOsA9s4M.js} +2 -2
  55. package/public/assets/{work-queue-DYgqkTQD.js.map → work-queue-DOsA9s4M.js.map} +1 -1
  56. package/public/assets/{workspaces-Dkq9DxCL.js → workspaces-CoC2nflZ.js} +2 -2
  57. package/public/assets/{workspaces-Dkq9DxCL.js.map → workspaces-CoC2nflZ.js.map} +1 -1
  58. package/public/index.html +3 -3
  59. package/src/bus.ts +6 -1
  60. package/src/routes/agents-spawn.ts +2 -3
  61. package/src/security.ts +8 -0
  62. package/public/assets/chat-DALcMlDH.js +0 -2
  63. package/public/assets/store-CMUFZKxf.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{An as t,Hn as n,Kt as r,Pt as i,Zt as a}from"./lucide-react-DLQFnqNm.js";import{i as o,t as s}from"./store-CMUFZKxf.js";import{H as c,Q as l,ct as u,d,h as f}from"./display-ConJ9cJB.js";import{t as p}from"./badge-JVybSpzR.js";import{t as m}from"./button-BsMqBNJb.js";import{s as h}from"./index-DdB6SVZY.js";import{n as g,r as _,t as v}from"./card-I8w4U656.js";var y=e(n(),1),b=t(),x={open:`bg-blue-500/10 text-blue-400 border-blue-500/20`,blocked:`bg-yellow-500/10 text-yellow-400 border-yellow-500/20`,claimed:`bg-emerald-500/10 text-emerald-400 border-emerald-500/20`,in_progress:`bg-purple-500/10 text-purple-400 border-purple-500/20`,done:`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`,failed:`bg-red-500/10 text-red-400 border-red-500/20`,canceled:`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`},S=[`open`,`claimed`,`in_progress`,`blocked`,`done`,`failed`,`canceled`];function C(){let e=o(),t=s(e=>e.tasks),n=s(e=>e.agentsById),i=s(e=>e.taskStatusFilter),a=s(e=>e.taskSourceFilter),c=s(e=>e.set),u=s(e=>e.fetchTasks),f=s(e=>e.doClaimTask),m=s(e=>e.doUpdateTaskStatus),g=s(e=>e.openTaskEvents),_=t.filter(e=>!l.has(e.status)&&!e.claimedBy).length,v=(0,y.useMemo)(()=>[...new Set(t.map(e=>e.source).filter(Boolean))],[t]);function x(e){c(e),setTimeout(()=>u(),0)}function C(e){return n[e]?d(n[e]):e.slice(-10)}return(0,b.jsxs)(`div`,{className:`space-y-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-2`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(r,{className:`w-5 h-5 text-muted-foreground`}),(0,b.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Tasks`}),(0,b.jsx)(p,{variant:`secondary`,children:t.length}),_>0&&(0,b.jsxs)(p,{className:`bg-orange-500/20 text-orange-400 border-orange-500/30 border`,children:[_,` claimable`]})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,b.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:i,onChange:e=>x({taskStatusFilter:e.target.value}),children:[(0,b.jsx)(`option`,{value:``,children:`All statuses`}),S.map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))]}),(0,b.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:a,onChange:e=>x({taskSourceFilter:e.target.value}),children:[(0,b.jsx)(`option`,{value:``,children:`All sources`}),v.map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))]})]})]}),(0,b.jsx)(h,{className:`h-[calc(100dvh-11rem)]`,children:(0,b.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-3 pr-2`,children:[t.length===0&&(0,b.jsx)(`div`,{className:`col-span-full text-center text-muted-foreground py-16 text-sm`,children:`No tasks`}),t.map(t=>(0,b.jsx)(w,{task:t,now:e,agentName:C,onClaim:()=>f(t.id),onEvents:()=>g(t),onStatusChange:e=>m(t,e)},t.id))]})})]})}function w({task:e,now:t,agentName:n,onClaim:r,onEvents:o,onStatusChange:s}){let d=u[e.severity]||u.info,h=x[e.status]||`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`,y=l.has(e.status),S=!y&&!e.claimedBy;return(0,b.jsxs)(v,{className:`flex flex-col ${S?`ring-1 ring-orange-500/20`:``} ${y?`opacity-60`:``}`,children:[(0,b.jsxs)(_,{className:`py-3 px-4 pb-0 space-y-0`,children:[(0,b.jsxs)(`div`,{className:`flex items-start gap-2 justify-between`,children:[(0,b.jsxs)(`div`,{className:`flex gap-1.5 flex-wrap`,children:[(0,b.jsx)(p,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${d}`,children:e.severity}),(0,b.jsx)(p,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${h}`,children:e.status})]}),(0,b.jsxs)(`span`,{className:`text-xs text-muted-foreground shrink-0`,title:f(e.createdAt),children:[`#`,e.id]})]}),(0,b.jsx)(`p`,{className:`font-medium text-sm mt-2 line-clamp-2`,children:e.title})]}),(0,b.jsxs)(g,{className:`px-4 py-3 flex-1 flex flex-col justify-between gap-3`,children:[(0,b.jsxs)(`div`,{children:[e.body&&(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-3 mb-2`,children:e.body}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-0.5 text-xs text-muted-foreground`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`source`}),(0,b.jsx)(`span`,{className:`font-mono truncate`,children:e.source})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`target`}),(0,b.jsx)(`span`,{className:`font-mono truncate`,children:e.target})]}),e.claimedBy&&(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(a,{className:`w-3 h-3 text-emerald-400`}),(0,b.jsx)(`span`,{className:`text-emerald-400`,children:n(e.claimedBy)})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1 mt-0.5`,title:f(e.updatedAt),children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`updated`}),(0,b.jsx)(`span`,{children:c(t,e.updatedAt)})]})]})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[S&&(0,b.jsxs)(m,{size:`sm`,className:`h-7 text-xs bg-orange-600 hover:bg-orange-700 text-white`,onClick:r,children:[(0,b.jsx)(a,{className:`w-3.5 h-3.5 mr-1`}),` Claim`]}),(0,b.jsx)(m,{size:`sm`,variant:`outline`,className:`h-7 text-xs`,onClick:o,children:`Events`}),!y&&(0,b.jsx)(`select`,{className:`rounded-md border border-input bg-background px-2 py-1 text-xs h-7`,value:e.status,onChange:e=>s(e.target.value),onClick:e=>e.stopPropagation(),children:[`open`,`claimed`,`in_progress`,`blocked`,`done`,`failed`,`canceled`].map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))}),e.externalUrl&&(0,b.jsx)(`a`,{href:e.externalUrl,target:`_blank`,rel:`noopener noreferrer`,className:`ml-auto`,children:(0,b.jsx)(m,{size:`sm`,variant:`ghost`,className:`h-7 px-2`,children:(0,b.jsx)(i,{className:`w-3.5 h-3.5`})})})]})]})]})}export{C as TasksView};
2
- //# sourceMappingURL=tasks-BYTcfYDQ.js.map
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{An as t,Hn as n,Kt as r,Pt as i,Zt as a}from"./lucide-react-DLQFnqNm.js";import{i as o,t as s}from"./store-DKVWC6Uh.js";import{H as c,Q as l,ct as u,d,h as f}from"./display-ConJ9cJB.js";import{t as p}from"./badge-JVybSpzR.js";import{t as m}from"./button-BsMqBNJb.js";import{s as h}from"./index-CaauKXl9.js";import{n as g,r as _,t as v}from"./card-I8w4U656.js";var y=e(n(),1),b=t(),x={open:`bg-blue-500/10 text-blue-400 border-blue-500/20`,blocked:`bg-yellow-500/10 text-yellow-400 border-yellow-500/20`,claimed:`bg-emerald-500/10 text-emerald-400 border-emerald-500/20`,in_progress:`bg-purple-500/10 text-purple-400 border-purple-500/20`,done:`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`,failed:`bg-red-500/10 text-red-400 border-red-500/20`,canceled:`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`},S=[`open`,`claimed`,`in_progress`,`blocked`,`done`,`failed`,`canceled`];function C(){let e=o(),t=s(e=>e.tasks),n=s(e=>e.agentsById),i=s(e=>e.taskStatusFilter),a=s(e=>e.taskSourceFilter),c=s(e=>e.set),u=s(e=>e.fetchTasks),f=s(e=>e.doClaimTask),m=s(e=>e.doUpdateTaskStatus),g=s(e=>e.openTaskEvents),_=t.filter(e=>!l.has(e.status)&&!e.claimedBy).length,v=(0,y.useMemo)(()=>[...new Set(t.map(e=>e.source).filter(Boolean))],[t]);function x(e){c(e),setTimeout(()=>u(),0)}function C(e){return n[e]?d(n[e]):e.slice(-10)}return(0,b.jsxs)(`div`,{className:`space-y-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-2`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(r,{className:`w-5 h-5 text-muted-foreground`}),(0,b.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Tasks`}),(0,b.jsx)(p,{variant:`secondary`,children:t.length}),_>0&&(0,b.jsxs)(p,{className:`bg-orange-500/20 text-orange-400 border-orange-500/30 border`,children:[_,` claimable`]})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,b.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:i,onChange:e=>x({taskStatusFilter:e.target.value}),children:[(0,b.jsx)(`option`,{value:``,children:`All statuses`}),S.map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))]}),(0,b.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:a,onChange:e=>x({taskSourceFilter:e.target.value}),children:[(0,b.jsx)(`option`,{value:``,children:`All sources`}),v.map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))]})]})]}),(0,b.jsx)(h,{className:`h-[calc(100dvh-11rem)]`,children:(0,b.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-3 pr-2`,children:[t.length===0&&(0,b.jsx)(`div`,{className:`col-span-full text-center text-muted-foreground py-16 text-sm`,children:`No tasks`}),t.map(t=>(0,b.jsx)(w,{task:t,now:e,agentName:C,onClaim:()=>f(t.id),onEvents:()=>g(t),onStatusChange:e=>m(t,e)},t.id))]})})]})}function w({task:e,now:t,agentName:n,onClaim:r,onEvents:o,onStatusChange:s}){let d=u[e.severity]||u.info,h=x[e.status]||`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`,y=l.has(e.status),S=!y&&!e.claimedBy;return(0,b.jsxs)(v,{className:`flex flex-col ${S?`ring-1 ring-orange-500/20`:``} ${y?`opacity-60`:``}`,children:[(0,b.jsxs)(_,{className:`py-3 px-4 pb-0 space-y-0`,children:[(0,b.jsxs)(`div`,{className:`flex items-start gap-2 justify-between`,children:[(0,b.jsxs)(`div`,{className:`flex gap-1.5 flex-wrap`,children:[(0,b.jsx)(p,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${d}`,children:e.severity}),(0,b.jsx)(p,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${h}`,children:e.status})]}),(0,b.jsxs)(`span`,{className:`text-xs text-muted-foreground shrink-0`,title:f(e.createdAt),children:[`#`,e.id]})]}),(0,b.jsx)(`p`,{className:`font-medium text-sm mt-2 line-clamp-2`,children:e.title})]}),(0,b.jsxs)(g,{className:`px-4 py-3 flex-1 flex flex-col justify-between gap-3`,children:[(0,b.jsxs)(`div`,{children:[e.body&&(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-3 mb-2`,children:e.body}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-0.5 text-xs text-muted-foreground`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`source`}),(0,b.jsx)(`span`,{className:`font-mono truncate`,children:e.source})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`target`}),(0,b.jsx)(`span`,{className:`font-mono truncate`,children:e.target})]}),e.claimedBy&&(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(a,{className:`w-3 h-3 text-emerald-400`}),(0,b.jsx)(`span`,{className:`text-emerald-400`,children:n(e.claimedBy)})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1 mt-0.5`,title:f(e.updatedAt),children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`updated`}),(0,b.jsx)(`span`,{children:c(t,e.updatedAt)})]})]})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[S&&(0,b.jsxs)(m,{size:`sm`,className:`h-7 text-xs bg-orange-600 hover:bg-orange-700 text-white`,onClick:r,children:[(0,b.jsx)(a,{className:`w-3.5 h-3.5 mr-1`}),` Claim`]}),(0,b.jsx)(m,{size:`sm`,variant:`outline`,className:`h-7 text-xs`,onClick:o,children:`Events`}),!y&&(0,b.jsx)(`select`,{className:`rounded-md border border-input bg-background px-2 py-1 text-xs h-7`,value:e.status,onChange:e=>s(e.target.value),onClick:e=>e.stopPropagation(),children:[`open`,`claimed`,`in_progress`,`blocked`,`done`,`failed`,`canceled`].map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))}),e.externalUrl&&(0,b.jsx)(`a`,{href:e.externalUrl,target:`_blank`,rel:`noopener noreferrer`,className:`ml-auto`,children:(0,b.jsx)(m,{size:`sm`,variant:`ghost`,className:`h-7 px-2`,children:(0,b.jsx)(i,{className:`w-3.5 h-3.5`})})})]})]})]})}export{C as TasksView};
2
+ //# sourceMappingURL=tasks-rKbuUPOk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-BYTcfYDQ.js","names":[],"sources":["../../dashboard/src/components/views/tasks.tsx"],"sourcesContent":["import { useRelayStore, useNow } from '@/store'\nimport { Card, CardContent, CardHeader } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { ClipboardList, CheckCircle2, ExternalLink } from 'lucide-react'\nimport { displayName, timeAgo, fmtTime } from '@/lib/display'\nimport { SEVERITY_COLORS, CLOSED_TASK_STATUSES } from '@/lib/constants'\nimport type { Task } from '@/types'\nimport { useMemo } from 'react'\n\nconst STATUS_COLORS: Record<string, string> = {\n open: 'bg-blue-500/10 text-blue-400 border-blue-500/20',\n blocked: 'bg-yellow-500/10 text-yellow-400 border-yellow-500/20',\n claimed: 'bg-emerald-500/10 text-emerald-400 border-emerald-500/20',\n in_progress: 'bg-purple-500/10 text-purple-400 border-purple-500/20',\n done: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20',\n failed: 'bg-red-500/10 text-red-400 border-red-500/20',\n canceled: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20',\n}\n\nconst STATUS_OPTIONS = ['open', 'claimed', 'in_progress', 'blocked', 'done', 'failed', 'canceled']\n\nexport function TasksView() {\n const now = useNow()\n const tasks = useRelayStore((s) => s.tasks)\n const agentsById = useRelayStore((s) => s.agentsById)\n const taskStatusFilter = useRelayStore((s) => s.taskStatusFilter)\n const taskSourceFilter = useRelayStore((s) => s.taskSourceFilter)\n const set = useRelayStore((s) => s.set)\n const fetchTasks = useRelayStore((s) => s.fetchTasks)\n const doClaimTask = useRelayStore((s) => s.doClaimTask)\n const doUpdateTaskStatus = useRelayStore((s) => s.doUpdateTaskStatus)\n const openTaskEvents = useRelayStore((s) => s.openTaskEvents)\n\n const claimableCount = tasks.filter((t) => !CLOSED_TASK_STATUSES.has(t.status) && !t.claimedBy).length\n\n const uniqueSources = useMemo(() => [...new Set(tasks.map((t) => t.source).filter(Boolean))], [tasks])\n\n function handleFilterChange(partial: { taskStatusFilter?: string; taskSourceFilter?: string }) {\n set(partial)\n setTimeout(() => fetchTasks(), 0)\n }\n\n function agentName(id: string) {\n return agentsById[id] ? displayName(agentsById[id]) : id.slice(-10)\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between flex-wrap gap-2\">\n <div className=\"flex items-center gap-2\">\n <ClipboardList className=\"w-5 h-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold\">Tasks</h2>\n <Badge variant=\"secondary\">{tasks.length}</Badge>\n {claimableCount > 0 && (\n <Badge className=\"bg-orange-500/20 text-orange-400 border-orange-500/30 border\">\n {claimableCount} claimable\n </Badge>\n )}\n </div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <select\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n value={taskStatusFilter}\n onChange={(e) => handleFilterChange({ taskStatusFilter: e.target.value })}\n >\n <option value=\"\">All statuses</option>\n {STATUS_OPTIONS.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n <select\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n value={taskSourceFilter}\n onChange={(e) => handleFilterChange({ taskSourceFilter: e.target.value })}\n >\n <option value=\"\">All sources</option>\n {uniqueSources.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n </div>\n </div>\n\n <ScrollArea className=\"h-[calc(100dvh-11rem)]\">\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 pr-2\">\n {tasks.length === 0 && (\n <div className=\"col-span-full text-center text-muted-foreground py-16 text-sm\">No tasks</div>\n )}\n {tasks.map((task) => (\n <TaskCard\n key={task.id}\n task={task}\n now={now}\n agentName={agentName}\n onClaim={() => doClaimTask(task.id)}\n onEvents={() => openTaskEvents(task)}\n onStatusChange={(status) => doUpdateTaskStatus(task, status)}\n />\n ))}\n </div>\n </ScrollArea>\n </div>\n )\n}\n\nfunction TaskCard({\n task, now, agentName, onClaim, onEvents, onStatusChange,\n}: {\n task: Task\n now: number\n agentName: (id: string) => string\n onClaim: () => void\n onEvents: () => void\n onStatusChange: (status: string) => void\n}) {\n const severityClass = SEVERITY_COLORS[task.severity] || SEVERITY_COLORS.info\n const statusClass = STATUS_COLORS[task.status] || 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20'\n const isClosed = CLOSED_TASK_STATUSES.has(task.status)\n const isClaimable = !isClosed && !task.claimedBy\n\n return (\n <Card className={`flex flex-col ${isClaimable ? 'ring-1 ring-orange-500/20' : ''} ${isClosed ? 'opacity-60' : ''}`}>\n <CardHeader className=\"py-3 px-4 pb-0 space-y-0\">\n <div className=\"flex items-start gap-2 justify-between\">\n <div className=\"flex gap-1.5 flex-wrap\">\n <Badge variant=\"outline\" className={`text-xs px-1.5 py-0 border ${severityClass}`}>{task.severity}</Badge>\n <Badge variant=\"outline\" className={`text-xs px-1.5 py-0 border ${statusClass}`}>{task.status}</Badge>\n </div>\n <span className=\"text-xs text-muted-foreground shrink-0\" title={fmtTime(task.createdAt)}>\n #{task.id}\n </span>\n </div>\n <p className=\"font-medium text-sm mt-2 line-clamp-2\">{task.title}</p>\n </CardHeader>\n <CardContent className=\"px-4 py-3 flex-1 flex flex-col justify-between gap-3\">\n <div>\n {task.body && (\n <p className=\"text-xs text-muted-foreground line-clamp-3 mb-2\">{task.body}</p>\n )}\n <div className=\"flex flex-col gap-0.5 text-xs text-muted-foreground\">\n <div className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground/60\">source</span>\n <span className=\"font-mono truncate\">{task.source}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground/60\">target</span>\n <span className=\"font-mono truncate\">{task.target}</span>\n </div>\n {task.claimedBy && (\n <div className=\"flex items-center gap-1\">\n <CheckCircle2 className=\"w-3 h-3 text-emerald-400\" />\n <span className=\"text-emerald-400\">{agentName(task.claimedBy)}</span>\n </div>\n )}\n <div className=\"flex items-center gap-1 mt-0.5\" title={fmtTime(task.updatedAt)}>\n <span className=\"text-muted-foreground/60\">updated</span>\n <span>{timeAgo(now, task.updatedAt)}</span>\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {isClaimable && (\n <Button size=\"sm\" className=\"h-7 text-xs bg-orange-600 hover:bg-orange-700 text-white\" onClick={onClaim}>\n <CheckCircle2 className=\"w-3.5 h-3.5 mr-1\" /> Claim\n </Button>\n )}\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs\" onClick={onEvents}>\n Events\n </Button>\n {!isClosed && (\n <select\n className=\"rounded-md border border-input bg-background px-2 py-1 text-xs h-7\"\n value={task.status}\n onChange={(e) => onStatusChange(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n >\n {['open', 'claimed', 'in_progress', 'blocked', 'done', 'failed', 'canceled'].map((s) => (\n <option key={s} value={s}>{s}</option>\n ))}\n </select>\n )}\n {task.externalUrl && (\n <a href={task.externalUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"ml-auto\">\n <Button size=\"sm\" variant=\"ghost\" className=\"h-7 px-2\">\n <ExternalLink className=\"w-3.5 h-3.5\" />\n </Button>\n </a>\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tasks-rKbuUPOk.js","names":[],"sources":["../../dashboard/src/components/views/tasks.tsx"],"sourcesContent":["import { useRelayStore, useNow } from '@/store'\nimport { Card, CardContent, CardHeader } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { ClipboardList, CheckCircle2, ExternalLink } from 'lucide-react'\nimport { displayName, timeAgo, fmtTime } from '@/lib/display'\nimport { SEVERITY_COLORS, CLOSED_TASK_STATUSES } from '@/lib/constants'\nimport type { Task } from '@/types'\nimport { useMemo } from 'react'\n\nconst STATUS_COLORS: Record<string, string> = {\n open: 'bg-blue-500/10 text-blue-400 border-blue-500/20',\n blocked: 'bg-yellow-500/10 text-yellow-400 border-yellow-500/20',\n claimed: 'bg-emerald-500/10 text-emerald-400 border-emerald-500/20',\n in_progress: 'bg-purple-500/10 text-purple-400 border-purple-500/20',\n done: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20',\n failed: 'bg-red-500/10 text-red-400 border-red-500/20',\n canceled: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20',\n}\n\nconst STATUS_OPTIONS = ['open', 'claimed', 'in_progress', 'blocked', 'done', 'failed', 'canceled']\n\nexport function TasksView() {\n const now = useNow()\n const tasks = useRelayStore((s) => s.tasks)\n const agentsById = useRelayStore((s) => s.agentsById)\n const taskStatusFilter = useRelayStore((s) => s.taskStatusFilter)\n const taskSourceFilter = useRelayStore((s) => s.taskSourceFilter)\n const set = useRelayStore((s) => s.set)\n const fetchTasks = useRelayStore((s) => s.fetchTasks)\n const doClaimTask = useRelayStore((s) => s.doClaimTask)\n const doUpdateTaskStatus = useRelayStore((s) => s.doUpdateTaskStatus)\n const openTaskEvents = useRelayStore((s) => s.openTaskEvents)\n\n const claimableCount = tasks.filter((t) => !CLOSED_TASK_STATUSES.has(t.status) && !t.claimedBy).length\n\n const uniqueSources = useMemo(() => [...new Set(tasks.map((t) => t.source).filter(Boolean))], [tasks])\n\n function handleFilterChange(partial: { taskStatusFilter?: string; taskSourceFilter?: string }) {\n set(partial)\n setTimeout(() => fetchTasks(), 0)\n }\n\n function agentName(id: string) {\n return agentsById[id] ? displayName(agentsById[id]) : id.slice(-10)\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between flex-wrap gap-2\">\n <div className=\"flex items-center gap-2\">\n <ClipboardList className=\"w-5 h-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold\">Tasks</h2>\n <Badge variant=\"secondary\">{tasks.length}</Badge>\n {claimableCount > 0 && (\n <Badge className=\"bg-orange-500/20 text-orange-400 border-orange-500/30 border\">\n {claimableCount} claimable\n </Badge>\n )}\n </div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <select\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n value={taskStatusFilter}\n onChange={(e) => handleFilterChange({ taskStatusFilter: e.target.value })}\n >\n <option value=\"\">All statuses</option>\n {STATUS_OPTIONS.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n <select\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n value={taskSourceFilter}\n onChange={(e) => handleFilterChange({ taskSourceFilter: e.target.value })}\n >\n <option value=\"\">All sources</option>\n {uniqueSources.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n </div>\n </div>\n\n <ScrollArea className=\"h-[calc(100dvh-11rem)]\">\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 pr-2\">\n {tasks.length === 0 && (\n <div className=\"col-span-full text-center text-muted-foreground py-16 text-sm\">No tasks</div>\n )}\n {tasks.map((task) => (\n <TaskCard\n key={task.id}\n task={task}\n now={now}\n agentName={agentName}\n onClaim={() => doClaimTask(task.id)}\n onEvents={() => openTaskEvents(task)}\n onStatusChange={(status) => doUpdateTaskStatus(task, status)}\n />\n ))}\n </div>\n </ScrollArea>\n </div>\n )\n}\n\nfunction TaskCard({\n task, now, agentName, onClaim, onEvents, onStatusChange,\n}: {\n task: Task\n now: number\n agentName: (id: string) => string\n onClaim: () => void\n onEvents: () => void\n onStatusChange: (status: string) => void\n}) {\n const severityClass = SEVERITY_COLORS[task.severity] || SEVERITY_COLORS.info\n const statusClass = STATUS_COLORS[task.status] || 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20'\n const isClosed = CLOSED_TASK_STATUSES.has(task.status)\n const isClaimable = !isClosed && !task.claimedBy\n\n return (\n <Card className={`flex flex-col ${isClaimable ? 'ring-1 ring-orange-500/20' : ''} ${isClosed ? 'opacity-60' : ''}`}>\n <CardHeader className=\"py-3 px-4 pb-0 space-y-0\">\n <div className=\"flex items-start gap-2 justify-between\">\n <div className=\"flex gap-1.5 flex-wrap\">\n <Badge variant=\"outline\" className={`text-xs px-1.5 py-0 border ${severityClass}`}>{task.severity}</Badge>\n <Badge variant=\"outline\" className={`text-xs px-1.5 py-0 border ${statusClass}`}>{task.status}</Badge>\n </div>\n <span className=\"text-xs text-muted-foreground shrink-0\" title={fmtTime(task.createdAt)}>\n #{task.id}\n </span>\n </div>\n <p className=\"font-medium text-sm mt-2 line-clamp-2\">{task.title}</p>\n </CardHeader>\n <CardContent className=\"px-4 py-3 flex-1 flex flex-col justify-between gap-3\">\n <div>\n {task.body && (\n <p className=\"text-xs text-muted-foreground line-clamp-3 mb-2\">{task.body}</p>\n )}\n <div className=\"flex flex-col gap-0.5 text-xs text-muted-foreground\">\n <div className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground/60\">source</span>\n <span className=\"font-mono truncate\">{task.source}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground/60\">target</span>\n <span className=\"font-mono truncate\">{task.target}</span>\n </div>\n {task.claimedBy && (\n <div className=\"flex items-center gap-1\">\n <CheckCircle2 className=\"w-3 h-3 text-emerald-400\" />\n <span className=\"text-emerald-400\">{agentName(task.claimedBy)}</span>\n </div>\n )}\n <div className=\"flex items-center gap-1 mt-0.5\" title={fmtTime(task.updatedAt)}>\n <span className=\"text-muted-foreground/60\">updated</span>\n <span>{timeAgo(now, task.updatedAt)}</span>\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {isClaimable && (\n <Button size=\"sm\" className=\"h-7 text-xs bg-orange-600 hover:bg-orange-700 text-white\" onClick={onClaim}>\n <CheckCircle2 className=\"w-3.5 h-3.5 mr-1\" /> Claim\n </Button>\n )}\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs\" onClick={onEvents}>\n Events\n </Button>\n {!isClosed && (\n <select\n className=\"rounded-md border border-input bg-background px-2 py-1 text-xs h-7\"\n value={task.status}\n onChange={(e) => onStatusChange(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n >\n {['open', 'claimed', 'in_progress', 'blocked', 'done', 'failed', 'canceled'].map((s) => (\n <option key={s} value={s}>{s}</option>\n ))}\n </select>\n )}\n {task.externalUrl && (\n <a href={task.externalUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"ml-auto\">\n <Button size=\"sm\" variant=\"ghost\" className=\"h-7 px-2\">\n <ExternalLink className=\"w-3.5 h-3.5\" />\n </Button>\n </a>\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{An as t,Hn as n,M as r,On as i,R as a,Rn as o,V as s,ft as c,g as l,i as u}from"./lucide-react-DLQFnqNm.js";import{t as d}from"./store-CMUFZKxf.js";import{J as f}from"./display-ConJ9cJB.js";import{t as p}from"./button-BsMqBNJb.js";import{a as m,i as h,o as g}from"./index-DdB6SVZY.js";import{t as _}from"./use-keyboard-viewport-bZ1J-ZnH.js";var v=e(n(),1),y=Object.defineProperty,b=Object.getOwnPropertyDescriptor,x=(e,t)=>{for(var n in t)y(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{for(var i=r>1?void 0:r?b(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&y(t,n,i),i},C=(e,t)=>(n,r)=>t(n,r,e),w=`Terminal input`,T={get:()=>w,set:e=>w=e},ee=`Too much output to announce, navigate to rows manually to read`,E={get:()=>ee,set:e=>ee=e};function te(e){return e.replace(/\r?\n/g,`\r`)}function D(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function ne(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function re(e,t,n,r){e.stopPropagation(),e.clipboardData&&ie(e.clipboardData.getData(`text/plain`),t,n,r)}function ie(e,t,n,r){e=te(e),e=D(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function O(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function k(e,t,n,r,i){O(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function A(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function ae(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var oe=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},se=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},ce=``,le=` `,ue=class e{constructor(){this.fg=0,this.bg=0,this.extended=new de}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},de=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},j=class e extends ue{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new de,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?A(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},fe=`di$target`,pe=`di$dependencies`,me=new Map;function he(e){return e[pe]||[]}function M(e){if(me.has(e))return me.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);ge(t,e,r)};return t._id=e,me.set(e,t),t}function ge(e,t,n){t[fe]===t?t[pe].push({id:e,index:n}):(t[pe]=[{id:e,index:n}],t[fe]=t)}var _e=M(`BufferService`),ve=M(`CoreMouseService`),ye=M(`CoreService`),be=M(`CharsetService`),xe=M(`InstantiationService`),Se=M(`LogService`),Ce=M(`OptionsService`),we=M(`OscLinkService`),Te=M(`UnicodeService`),Ee=M(`DecorationService`),De=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new j,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Oe(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};De=S([C(0,_e),C(1,Ce),C(2,we)],De);function Oe(e,t){if(confirm(`Do you want to navigate to ${t}?
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{An as t,Hn as n,M as r,On as i,R as a,Rn as o,V as s,ft as c,g as l,i as u}from"./lucide-react-DLQFnqNm.js";import{t as d}from"./store-DKVWC6Uh.js";import{J as f}from"./display-ConJ9cJB.js";import{t as p}from"./button-BsMqBNJb.js";import{a as m,i as h,o as g}from"./index-CaauKXl9.js";import{t as _}from"./use-keyboard-viewport-bZ1J-ZnH.js";var v=e(n(),1),y=Object.defineProperty,b=Object.getOwnPropertyDescriptor,x=(e,t)=>{for(var n in t)y(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{for(var i=r>1?void 0:r?b(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&y(t,n,i),i},C=(e,t)=>(n,r)=>t(n,r,e),w=`Terminal input`,T={get:()=>w,set:e=>w=e},ee=`Too much output to announce, navigate to rows manually to read`,E={get:()=>ee,set:e=>ee=e};function te(e){return e.replace(/\r?\n/g,`\r`)}function D(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function ne(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function re(e,t,n,r){e.stopPropagation(),e.clipboardData&&ie(e.clipboardData.getData(`text/plain`),t,n,r)}function ie(e,t,n,r){e=te(e),e=D(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function O(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function k(e,t,n,r,i){O(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function A(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function ae(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var oe=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},se=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},ce=``,le=` `,ue=class e{constructor(){this.fg=0,this.bg=0,this.extended=new de}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},de=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},j=class e extends ue{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new de,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?A(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},fe=`di$target`,pe=`di$dependencies`,me=new Map;function he(e){return e[pe]||[]}function M(e){if(me.has(e))return me.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);ge(t,e,r)};return t._id=e,me.set(e,t),t}function ge(e,t,n){t[fe]===t?t[pe].push({id:e,index:n}):(t[pe]=[{id:e,index:n}],t[fe]=t)}var _e=M(`BufferService`),ve=M(`CoreMouseService`),ye=M(`CoreService`),be=M(`CharsetService`),xe=M(`InstantiationService`),Se=M(`LogService`),Ce=M(`OptionsService`),we=M(`OscLinkService`),Te=M(`UnicodeService`),Ee=M(`DecorationService`),De=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new j,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Oe(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};De=S([C(0,_e),C(1,Ce),C(2,we)],De);function Oe(e,t){if(confirm(`Do you want to navigate to ${t}?
2
2
 
3
3
  WARNING: This link could potentially be dangerous`)){let e=window.open();if(e){try{e.opener=null}catch{}e.location.href=t}else console.warn(`Opening link blocked as opener could not be cleared`)}}var ke=M(`CharSizeService`),Ae=M(`CoreBrowserService`),je=M(`MouseService`),Me=M(`RenderService`),Ne=M(`SelectionService`),Pe=M(`CharacterJoinerService`),Fe=M(`ThemeService`),Ie=M(`LinkProviderService`),Le=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Ue.isErrorNoTelemetry(e)?new Ue(e.message+`
4
4
 
@@ -143,4 +143,4 @@ ${s.join(`
143
143
  `)),e.length=0)},3e3),Vp=new FinalizationRegistry(t=>{typeof t==`string`&&e.push(t)})}var Hp=class{constructor(e){this._size=0,this._options=e,this._leakageMon=jp>0||this._options?.leakWarningThreshold?new Np(e?.onListenerError??qf,this._options?.leakWarningThreshold??jp):void 0,this._perfMon=this._options?._profName?new Ap(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){if(!this._disposed){if(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners){if(Ep){let e=this._listeners;queueMicrotask(()=>{Bp(e,e=>e.stack?.print())})}this._listeners=void 0,this._size=0}this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose()}}get event(){return this._event??=(e,t,n)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let e=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(e);let t=this._leakageMon.getMostFrequentStack()??[`UNKNOWN stack`,-1],n=new Ip(`${e}. HINT: Stack shows most frequent listener (${t[1]}-times)`,t[0]);return(this._options?.onListenerError||qf)(n),xp.None}if(this._disposed)return xp.None;t&&(e=e.bind(t));let r=new Rp(e),i;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(r.stack=Pp.create(),i=this._leakageMon.check(r.stack,this._size+1)),Ep&&(r.stack=Pp.create()),this._listeners?this._listeners instanceof Rp?(this._deliveryQueue??=new Up,this._listeners=[this._listeners,r]):this._listeners.push(r):(this._options?.onWillAddFirstListener?.(this),this._listeners=r,this._options?.onDidAddFirstListener?.(this)),this._size++;let a=vp(()=>{Vp?.unregister(a),i?.(),this._removeListener(r)});if(n instanceof bp?n.add(a):Array.isArray(n)&&n.push(a),Vp){let e=Error().stack.split(`
144
144
  `).slice(2,3).join(`
145
145
  `).trim(),t=/(file:|vscode-file:\/\/vscode-app)?(\/[^:]*:\d+:\d+)/.exec(e);Vp.register(a,t?.[2]??e,a)}return a},this._event}_removeListener(e){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1){this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),this._size=0;return}let t=this._listeners,n=t.indexOf(e);if(n===-1)throw console.log(`disposed?`,this._disposed),console.log(`size?`,this._size),console.log(`arr?`,JSON.stringify(this._listeners)),Error(`Attempted to dispose unknown listener`);this._size--,t[n]=void 0;let r=this._deliveryQueue.current===this;if(this._size*zp<=t.length){let e=0;for(let n=0;n<t.length;n++)t[n]?t[e++]=t[n]:r&&(this._deliveryQueue.end--,e<this._deliveryQueue.i&&this._deliveryQueue.i--);t.length=e}}_deliver(e,t){if(!e)return;let n=this._options?.onListenerError||qf;if(!n){e.value(t);return}try{e.value(t)}catch(e){n(e)}}_deliverQueue(e){let t=e.current._listeners;for(;e.i<e.end;)this._deliver(t[e.i++],e.value);e.reset()}fire(e){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof Rp)this._deliver(this._listeners,e);else{let t=this._deliveryQueue;t.enqueue(this,e,this._listeners.length),this._deliverQueue(t)}this._perfMon?.stop()}hasListeners(){return this._size>0}},Up=class{constructor(){this.i=-1,this.end=0}enqueue(e,t,n){this.i=0,this.end=n,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}},Wp=class e{constructor(){this._providers=Object.create(null),this._active=``,this._onChange=new Hp,this.onChange=this._onChange.event;let e=new Gf;this.register(e),this._active=e.version,this._activeProvider=e}static extractShouldJoin(e){return(e&1)!=0}static extractWidth(e){return e>>1&3}static extractCharKind(e){return e>>3}static createPropertyValue(e,t,n=!1){return(e&16777215)<<3|(t&3)<<1|!!n}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(t){let n=0,r=0,i=t.length;for(let a=0;a<i;++a){let o=t.charCodeAt(a);if(55296<=o&&o<=56319){if(++a>=i)return n+this.wcwidth(o);let e=t.charCodeAt(a);56320<=e&&e<=57343?o=(o-55296)*1024+e-56320+65536:n+=this.wcwidth(e)}let s=this.charProperties(o,r),c=e.extractWidth(s);e.extractShouldJoin(s)&&(c-=e.extractWidth(r)),n+=c,r=s}return n}charProperties(e,t){return this._activeProvider.charProperties(e,t)}},Gp=[[768,879],[1155,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1541],[1552,1562],[1564,1564],[1611,1631],[1648,1648],[1750,1757],[1759,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2045,2045],[2070,2073],[2075,2083],[2085,2087],[2089,2093],[2137,2139],[2259,2306],[2362,2362],[2364,2364],[2369,2376],[2381,2381],[2385,2391],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2558,2558],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2641,2641],[2672,2673],[2677,2677],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2810,2815],[2817,2817],[2876,2876],[2879,2879],[2881,2884],[2893,2893],[2902,2902],[2914,2915],[2946,2946],[3008,3008],[3021,3021],[3072,3072],[3076,3076],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3170,3171],[3201,3201],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3328,3329],[3387,3388],[3393,3396],[3405,3405],[3426,3427],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3981,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4151],[4153,4154],[4157,4158],[4184,4185],[4190,4192],[4209,4212],[4226,4226],[4229,4230],[4237,4237],[4253,4253],[4448,4607],[4957,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6158],[6277,6278],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6683,6683],[6742,6742],[6744,6750],[6752,6752],[6754,6754],[6757,6764],[6771,6780],[6783,6783],[6832,6846],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7040,7041],[7074,7077],[7080,7081],[7083,7085],[7142,7142],[7144,7145],[7149,7149],[7151,7153],[7212,7219],[7222,7223],[7376,7378],[7380,7392],[7394,7400],[7405,7405],[7412,7412],[7416,7417],[7616,7673],[7675,7679],[8203,8207],[8234,8238],[8288,8292],[8294,8303],[8400,8432],[11503,11505],[11647,11647],[11744,11775],[12330,12333],[12441,12442],[42607,42610],[42612,42621],[42654,42655],[42736,42737],[43010,43010],[43014,43014],[43019,43019],[43045,43046],[43204,43205],[43232,43249],[43263,43263],[43302,43309],[43335,43345],[43392,43394],[43443,43443],[43446,43449],[43452,43453],[43493,43493],[43561,43566],[43569,43570],[43573,43574],[43587,43587],[43596,43596],[43644,43644],[43696,43696],[43698,43700],[43703,43704],[43710,43711],[43713,43713],[43756,43757],[43766,43766],[44005,44005],[44008,44008],[44013,44013],[64286,64286],[65024,65039],[65056,65071],[65279,65279],[65529,65531]],Kp=[[66045,66045],[66272,66272],[66422,66426],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[68325,68326],[68900,68903],[69446,69456],[69633,69633],[69688,69702],[69759,69761],[69811,69814],[69817,69818],[69821,69821],[69837,69837],[69888,69890],[69927,69931],[69933,69940],[70003,70003],[70016,70017],[70070,70078],[70089,70092],[70191,70193],[70196,70196],[70198,70199],[70206,70206],[70367,70367],[70371,70378],[70400,70401],[70459,70460],[70464,70464],[70502,70508],[70512,70516],[70712,70719],[70722,70724],[70726,70726],[70750,70750],[70835,70840],[70842,70842],[70847,70848],[70850,70851],[71090,71093],[71100,71101],[71103,71104],[71132,71133],[71219,71226],[71229,71229],[71231,71232],[71339,71339],[71341,71341],[71344,71349],[71351,71351],[71453,71455],[71458,71461],[71463,71467],[71727,71735],[71737,71738],[72148,72151],[72154,72155],[72160,72160],[72193,72202],[72243,72248],[72251,72254],[72263,72263],[72273,72278],[72281,72283],[72330,72342],[72344,72345],[72752,72758],[72760,72765],[72767,72767],[72850,72871],[72874,72880],[72882,72883],[72885,72886],[73009,73014],[73018,73018],[73020,73021],[73023,73029],[73031,73031],[73104,73105],[73109,73109],[73111,73111],[73459,73460],[78896,78904],[92912,92916],[92976,92982],[94031,94031],[94095,94098],[113821,113822],[113824,113827],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[121344,121398],[121403,121452],[121461,121461],[121476,121476],[121499,121503],[121505,121519],[122880,122886],[122888,122904],[122907,122913],[122915,122916],[122918,122922],[123184,123190],[123628,123631],[125136,125142],[125252,125258],[917505,917505],[917536,917631],[917760,917999]],qp=[[4352,4447],[8986,8987],[9001,9002],[9193,9196],[9200,9200],[9203,9203],[9725,9726],[9748,9749],[9800,9811],[9855,9855],[9875,9875],[9889,9889],[9898,9899],[9917,9918],[9924,9925],[9934,9934],[9940,9940],[9962,9962],[9970,9971],[9973,9973],[9978,9978],[9981,9981],[9989,9989],[9994,9995],[10024,10024],[10060,10060],[10062,10062],[10067,10069],[10071,10071],[10133,10135],[10160,10160],[10175,10175],[11035,11036],[11088,11088],[11093,11093],[11904,11929],[11931,12019],[12032,12245],[12272,12283],[12288,12329],[12334,12350],[12353,12438],[12443,12543],[12549,12591],[12593,12686],[12688,12730],[12736,12771],[12784,12830],[12832,12871],[12880,19903],[19968,42124],[42128,42182],[43360,43388],[44032,55203],[63744,64255],[65040,65049],[65072,65106],[65108,65126],[65128,65131],[65281,65376],[65504,65510]],Jp=[[94176,94179],[94208,100343],[100352,101106],[110592,110878],[110928,110930],[110948,110951],[110960,111355],[126980,126980],[127183,127183],[127374,127374],[127377,127386],[127488,127490],[127504,127547],[127552,127560],[127568,127569],[127584,127589],[127744,127776],[127789,127797],[127799,127868],[127870,127891],[127904,127946],[127951,127955],[127968,127984],[127988,127988],[127992,128062],[128064,128064],[128066,128252],[128255,128317],[128331,128334],[128336,128359],[128378,128378],[128405,128406],[128420,128420],[128507,128591],[128640,128709],[128716,128716],[128720,128722],[128725,128725],[128747,128748],[128756,128762],[128992,129003],[129293,129393],[129395,129398],[129402,129442],[129445,129450],[129454,129482],[129485,129535],[129648,129651],[129656,129658],[129664,129666],[129680,129685],[131072,196605],[196608,262141]],Yp;function Xp(e,t){let n=0,r=t.length-1,i;if(e<t[0][0]||e>t[r][1])return!1;for(;r>=n;)if(i=n+r>>1,e>t[i][1])n=i+1;else if(e<t[i][0])r=i-1;else return!0;return!1}var Zp=class{constructor(){if(this.version=`11`,!Yp){Yp=new Uint8Array(65536),Yp.fill(1),Yp[0]=0,Yp.fill(0,1,32),Yp.fill(0,127,160);for(let e=0;e<Gp.length;++e)Yp.fill(0,Gp[e][0],Gp[e][1]+1);for(let e=0;e<qp.length;++e)Yp.fill(2,qp[e][0],qp[e][1]+1)}}wcwidth(e){return e<32?0:e<127?1:e<65536?Yp[e]:Xp(e,Kp)?0:Xp(e,Jp)?2:1}charProperties(e,t){let n=this.wcwidth(e),r=n===0&&t!==0;if(r){let e=Wp.extractWidth(t);e===0?r=!1:e>n&&(n=e)}return Wp.createPropertyValue(0,n,r)}},Qp=class{activate(e){e.unicode.register(new Zp)}dispose(){}},$=t();function $p(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function em(e){if(e)try{let t=document.createElement(`div`);t.style.color=`oklch(${e})`,document.body.appendChild(t);let n=getComputedStyle(t).color;document.body.removeChild(t);let r=n.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);return r?`#${[r[1],r[2],r[3]].map(e=>Number(e).toString(16).padStart(2,`0`)).join(``)}`:void 0}catch{return}}function tm(){let e=em($p(`--background`))??`#09090b`,t=em($p(`--foreground`))??`#e4e4e7`;return{background:e,foreground:t,cursor:t,selectionBackground:em($p(`--muted`))??`#3f3f46`}}function nm({orchestratorId:e,session:t,interactive:n=!1,onClose:m}){let h=d(e=>e.apiCall),g=d(e=>e.theme),_=(0,v.useRef)(null),y=(0,v.useRef)(null),b=(0,v.useRef)(null),x=(0,v.useRef)(null),S=(0,v.useRef)(!1),C=(0,v.useRef)(Promise.resolve()),w=(0,v.useRef)(null),T=(0,v.useRef)(null),ee=(0,v.useRef)(null),E=(0,v.useRef)(!1),te=(0,v.useRef)(!1),D=(0,v.useRef)(!1),[ne,re]=(0,v.useState)(!1),[ie,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(null),[ae,oe]=(0,v.useState)(null),[se,ce]=(0,v.useState)(n),le=(0,v.useRef)(n),[ue,de]=(0,v.useState)(`connecting`),j=(0,v.useRef)(!1),[fe,pe]=(0,v.useState)(!1),me=(0,v.useCallback)(()=>{let e=te.current||D.current;E.current=e;let t=x.current;t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify({type:`pause`,paused:e}))},[]);(0,v.useEffect)(()=>{te.current=ne,me()},[ne,me]),(0,v.useEffect)(()=>{let e=()=>{D.current=document.hidden||!document.hasFocus(),me()};return e(),document.addEventListener(`visibilitychange`,e),window.addEventListener(`blur`,e),window.addEventListener(`focus`,e),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`blur`,e),window.removeEventListener(`focus`,e)}},[me]);let he=(0,v.useCallback)(e=>{let t=y.current;if(t){let n=(e.content||``).replace(/\n$/,``);t.write(`\x1b[H\x1b[2J\x1b[3J${n}`),e.cursorX!=null&&e.cursorY!=null&&t.write(`\x1b[${e.cursorY+1};${e.cursorX+1}H`)}O(e.running),oe(e.capturedAt),A(null)},[]),M=(0,v.useCallback)(async()=>{if(E.current||S.current)return;let n=x.current;if(n?.readyState===WebSocket.OPEN){n.send(JSON.stringify({type:`refresh`}));return}S.current=!0;try{he(await h(`GET`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(t)}`))}catch(e){A(f(e))}finally{S.current=!1}},[e,t,h,he]);function ge(n,r){let i=ee.current;if(i&&i.cols===n&&i.rows===r)return;ee.current={cols:n,rows:r};let a=x.current;if(a?.readyState===WebSocket.OPEN){a.send(JSON.stringify({type:`resize`,cols:n,rows:r}));return}h(`POST`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(t)}/resize`,{cols:n,rows:r}).catch(()=>{})}function _e(){let e=b.current,t=y.current;if(!(!e||!t))try{e.fit(),w.current&&clearTimeout(w.current),w.current=setTimeout(()=>{ge(t.cols,t.rows)},300)}catch{}}function ve(n){if(!n)return;let r=n.match(/[\s\S]{1,2048}/g)??[],i=x.current;if(i?.readyState===WebSocket.OPEN){for(let e of r)i.send(JSON.stringify({type:`input`,data:e}));return}for(let n of r)C.current=C.current.then(()=>h(`POST`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(t)}/input`,{data:n})).then(()=>{A(null)}).catch(e=>{A(f(e))})}function ye(e){if(j.current&&e.length===1){let t=e.toLowerCase().charCodeAt(0);if(t>=97&&t<=122){ve(String.fromCharCode(t-96)),j.current=!1,pe(!1);return}}ve(e)}function be(e){ve(e),y.current?.focus()}function xe(){let e=!j.current;j.current=e,pe(e)}return(0,v.useEffect)(()=>{let e=new nc,t=new $s({convertEol:!0,cursorBlink:!1,disableStdin:!se,fontFamily:`"JetBrains Mono", "SFMono-Regular", Consolas, monospace`,fontSize:13,lineHeight:1.15,scrollback:5e3,scrollSensitivity:3,fastScrollSensitivity:10,theme:tm()});t.loadAddon(e);try{t.loadAddon(new Qp),t.unicode.activeVersion=`11`}catch{}if(y.current=t,b.current=e,_.current){t.open(_.current);let e=0,n=()=>{let t=y.current;if(t)try{let r=new Bf;r.onContextLoss(()=>{r.dispose(),!(e>=3)&&(e+=1,T.current&&clearTimeout(T.current),T.current=setTimeout(n,3e3))}),t.loadAddon(r)}catch{}};n(),requestAnimationFrame(()=>_e())}let n=_.current,r=0,i=0,a=0,o=null;function s(e){e.touches.length===1&&(r=e.touches[0].clientY,i=e.touches[0].clientX,a=0,o=null)}function c(e){if(e.touches.length!==1)return;let t=y.current;if(!t)return;let n=r-e.touches[0].clientY,s=i-e.touches[0].clientX;if(o===null&&(Math.abs(n)>8||Math.abs(s)>8)&&(o=Math.abs(n)>Math.abs(s)),o!==!0)return;a+=n,r=e.touches[0].clientY;let c=Math.trunc(a/15);c!==0&&(t.scrollLines(c),a-=c*15),e.preventDefault(),e.stopPropagation()}n.addEventListener(`touchstart`,s,{capture:!0,passive:!0}),n.addEventListener(`touchmove`,c,{capture:!0,passive:!1});let l=new ResizeObserver(()=>{requestAnimationFrame(()=>_e())});return _.current&&l.observe(_.current),M(),()=>{n.removeEventListener(`touchstart`,s,{capture:!0}),n.removeEventListener(`touchmove`,c,{capture:!0}),l.disconnect(),w.current&&clearTimeout(w.current),T.current&&clearTimeout(T.current),t.dispose(),y.current=null,b.current=null}},[e,t]),(0,v.useEffect)(()=>{let e=y.current;e&&requestAnimationFrame(()=>{e.options.theme=tm()})},[g]),(0,v.useEffect)(()=>{le.current=se;let e=x.current;e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:`interactive`,interactive:se}));let t=y.current;if(t&&(t.options.disableStdin=!se,se)){let e=t.onData(ye);return setTimeout(()=>t.focus(),50),()=>e.dispose()}},[se]),(0,v.useEffect)(()=>{let n=!1,r=!1,i=0,a=null,s=null,c=()=>{if(n||r||a)return;let e=Math.min(1e4,1e3*2**i);i+=1,a=setTimeout(()=>{a=null,l()},e)},l=()=>{if(n||r)return;de(`connecting`);let a=o(e,t);a.binaryType=`arraybuffer`,s=a,x.current=a,a.onopen=()=>{if(n)return;i=0,de(`stream`),A(null),a.send(JSON.stringify({type:`pause`,paused:E.current})),a.send(JSON.stringify({type:`interactive`,interactive:le.current}));let e=y.current;try{b.current?.fit()}catch{}e&&a.send(JSON.stringify({type:`resize`,cols:e.cols,rows:e.rows}))},a.onmessage=e=>{let t=y.current;if(typeof e.data!=`string`){if(!t)return;e.data instanceof ArrayBuffer?t.write(new Uint8Array(e.data)):e.data instanceof Blob&&e.data.arrayBuffer().then(e=>y.current?.write(new Uint8Array(e)));return}try{let n=JSON.parse(e.data);n.type===`reset`?(t&&t.write(`\x1B[H\x1B[2J\x1B[3J`),typeof n.running==`boolean`&&O(n.running),typeof n.capturedAt==`number`&&oe(n.capturedAt),A(null)):n.type===`closed`?n.reason===`backpressure`?(A(`stream reset (backpressure) — reconnecting`),a.close()):(r=!0,O(!1),n.reason&&A(n.reason)):n.type===`error`&&A(n.error||`terminal stream error`)}catch{A(`invalid terminal stream frame`)}},a.onerror=()=>{n||A(`terminal stream failed; falling back to polling`)},a.onclose=()=>{n||(x.current===a&&(x.current=null),de(`polling`),c())}};return l(),()=>{n=!0,a&&clearTimeout(a),x.current===s&&(x.current=null),s?.close()}},[e,t]),(0,v.useEffect)(()=>{if(ue===`stream`||ue===`connecting`)return;let e=setInterval(()=>void M(),se?1e3:1500);return()=>clearInterval(e)},[M,se,ue]),(0,$.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1 px-1.5 py-1.5 border-b border-border bg-background shrink-0 w-full`,children:[(0,$.jsx)(l,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,$.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground truncate min-w-0`,children:t}),(0,$.jsx)(`span`,{className:i(`text-xs shrink-0 ml-auto`,ie===!1?`text-red-400`:ie===!0?`text-emerald-400`:`text-muted-foreground`),children:ie===!1?`stopped`:ie===!0?`live`:`…`}),(0,$.jsx)(`span`,{className:i(`text-xs shrink-0 hidden sm:inline`,ue===`stream`?`text-sky-400`:ue===`polling`?`text-amber-400`:`text-muted-foreground`),children:ue}),(0,$.jsxs)(`div`,{className:`flex items-center shrink-0`,children:[(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>ce(e=>!e),title:se?`Disable input`:`Enable input`,className:i(`h-7 w-7`,se?`text-emerald-400`:``),children:(0,$.jsx)(c,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>re(e=>!e),title:ne?`Resume`:`Pause`,className:`h-7 w-7`,children:ne?(0,$.jsx)(a,{className:`h-3.5 w-3.5`}):(0,$.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>void M(),title:`Refresh`,className:`hidden sm:inline-flex h-7 w-7`,children:(0,$.jsx)(r,{className:`h-3.5 w-3.5`})}),m&&(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:m,title:`Close`,className:`h-7 w-7`,children:(0,$.jsx)(u,{className:`h-3.5 w-3.5`})})]})]}),k&&(0,$.jsx)(`div`,{className:`px-3 py-1 text-xs text-destructive bg-destructive/10 border-b border-destructive/20`,children:k}),(0,$.jsx)(`div`,{className:`flex-1 min-h-0 bg-background p-1 overscroll-contain`,children:(0,$.jsx)(`div`,{ref:_,className:`h-full w-full overscroll-contain`})}),se&&(0,$.jsxs)(`div`,{className:`flex shrink-0 gap-1 overflow-x-auto border-t border-border bg-muted/30 px-1.5 py-1.5`,children:[[{label:`Esc`,seq:`\x1B`},{label:`Tab`,seq:` `},{label:`↑`,seq:`\x1B[A`},{label:`↓`,seq:`\x1B[B`},{label:`←`,seq:`\x1B[D`},{label:`→`,seq:`\x1B[C`},{label:`^C`,seq:``},{label:`^D`,seq:``},{label:`^Z`,seq:``}].map(e=>(0,$.jsx)(`button`,{type:`button`,className:`shrink-0 rounded border border-border bg-background px-2 py-1 font-mono text-xs text-foreground active:bg-accent`,onPointerDown:e=>e.preventDefault(),onClick:()=>be(e.seq),children:e.label},e.label)),(0,$.jsx)(`button`,{type:`button`,className:i(`shrink-0 rounded border px-2 py-1 font-mono text-xs`,fe?`border-primary bg-primary/20 text-primary`:`border-border bg-background text-foreground active:bg-accent`),onPointerDown:e=>e.preventDefault(),onClick:xe,children:`Ctrl`})]})]})}function rm({open:e,onOpenChange:t,orchestratorId:n,session:r,interactive:i}){let a=_(e);return(0,$.jsx)(h,{open:e,onOpenChange:t,children:(0,$.jsxs)(m,{className:`inset-x-0 top-0 translate-x-0 translate-y-0 w-auto max-w-none rounded-none p-0 pt-[var(--sat)] bg-background border-border gap-0 overflow-hidden`,style:{height:a?`${a}px`:`100dvh`},showCloseButton:!1,blurOverlay:!1,onEscapeKeyDown:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,$.jsxs)(g,{className:`sr-only`,children:[`Terminal — `,r]}),(0,$.jsx)(nm,{orchestratorId:n,session:r,interactive:i,onClose:()=>t(!1)})]})})}export{rm as TerminalDialog};
146
- //# sourceMappingURL=terminal-viewer-impl-B5rPCNkZ.js.map
146
+ //# sourceMappingURL=terminal-viewer-impl-CA8u4jh3.js.map