@runfusion/fusion 0.74.0-beta.2 → 0.74.0-beta.4

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 (127) hide show
  1. package/dist/bin.js +5416 -3166
  2. package/dist/child-process-worker.js +3540 -1656
  3. package/dist/client/.vite/manifest.json +272 -272
  4. package/dist/client/assets/AgentDetailView-BGXTnuBR.js +13 -0
  5. package/dist/client/assets/AgentDetailView-CH11Ydji.css +1 -0
  6. package/dist/client/assets/{AgentPermissionPolicyEditor-BycC7HhP.js → AgentPermissionPolicyEditor-DswM202p.js} +1 -1
  7. package/dist/client/assets/AgentsView-CEpZDrmC.js +24 -0
  8. package/dist/client/assets/{ChatView-DAsZY1We.js → ChatView-BXXX0q6G.js} +3 -3
  9. package/dist/client/assets/CommandCenter-CqjN1-9X.js +97 -0
  10. package/dist/client/assets/DevServerView-BUO7JRi6.js +1 -0
  11. package/dist/client/assets/{DirectoryPicker-DsCk3Nsw.js → DirectoryPicker-CiP4h5C7.js} +1 -1
  12. package/dist/client/assets/{DocumentsView-8EI6KNBY.js → DocumentsView-DwLD0h2S.js} +1 -1
  13. package/dist/client/assets/EvalsView-C9juKffD.js +1 -0
  14. package/dist/client/assets/{ExperimentalAgentOnboardingModal-ce6DROKD.js → ExperimentalAgentOnboardingModal-DYvw9TEh.js} +1 -1
  15. package/dist/client/assets/{GoalsView-BVlTtw-u.js → GoalsView-BD1AkfVN.js} +1 -1
  16. package/dist/client/assets/{InsightsView-BKQeROkb.js → InsightsView-Q0mu759R.js} +1 -1
  17. package/dist/client/assets/{MemoryView-DCzTnxsV.js → MemoryView-DCTqPpCG.js} +1 -1
  18. package/dist/client/assets/{PiExtensionsManager-C94HwDz5.js → PiExtensionsManager-CSe_uGfa.js} +1 -1
  19. package/dist/client/assets/{PluginManager-C3DegklW.js → PluginManager-DPm8YQC0.js} +1 -1
  20. package/dist/client/assets/{PullRequestView-CrE89UL7.js → PullRequestView-BpJgNDLH.js} +2 -2
  21. package/dist/client/assets/{ReportModal-BD1ZUDdV.js → ReportModal-iGmTZqiF.js} +1 -1
  22. package/dist/client/assets/ResearchView-BfgKB-6z.js +2 -0
  23. package/dist/client/assets/{SecretsView-6qK8Idb7.js → SecretsView-CqvQLK7z.js} +1 -1
  24. package/dist/client/assets/SessionTerminal-A9di8GAo.js +2 -0
  25. package/dist/client/assets/SettingsModal-BsCUsAXe.js +21 -0
  26. package/dist/client/assets/{SettingsModal-BkOSlfyr.js → SettingsModal-D-iyPGZE.js} +1 -1
  27. package/dist/client/assets/SettingsModal-DmfMotcd.css +1 -0
  28. package/dist/client/assets/{SettingsTextareaRow-Btyx5kaR.js → SettingsTextareaRow-DwgHxMMY.js} +1 -1
  29. package/dist/client/assets/{SetupWizardModal-Blhx-dRt.js → SetupWizardModal-CrSnLN44.js} +2 -2
  30. package/dist/client/assets/{SkillsView-DGE5kYc3.js → SkillsView-C_STy7KI.js} +1 -1
  31. package/dist/client/assets/{TodoView-YSGI7ATd.js → TodoView-BJJNGNLq.js} +1 -1
  32. package/dist/client/assets/{WorkflowNodeEditor-CZiEThu2.js → WorkflowNodeEditor-Jp5i_Vxu.js} +3 -3
  33. package/dist/client/assets/{WorkflowNodeEditor-nCx4nqoL.css → WorkflowNodeEditor-sZ96V3Kd.css} +1 -1
  34. package/dist/client/assets/{agent-import-generation-DQeNZMAm.js → agent-import-generation-DbVrl8ou.js} +1 -1
  35. package/dist/client/assets/{app-Dn1u7zJ9.js → app-BYs5Cx-j.js} +2 -2
  36. package/dist/client/assets/{app-DaikOPcV.js → app-CTV8PCYh.js} +3 -3
  37. package/dist/client/assets/{app-DJIiVHdA.js → app-CwdZxrJI.js} +2 -2
  38. package/dist/client/assets/{app-hQw_x2KJ.js → app-DE-MPJxA.js} +2 -2
  39. package/dist/client/assets/{app-DxTbBEMH.js → app-e8c4wb5t.js} +2 -2
  40. package/dist/client/assets/{app-DMZ_RusZ.js → app-yKugq_Ld.js} +2 -2
  41. package/dist/client/assets/{architectureDiagram-3BPJPVTR-DhaJNKa4.js → architectureDiagram-3BPJPVTR-Ctz8GX1N.js} +1 -1
  42. package/dist/client/assets/{blockDiagram-GPEHLZMM-pKpg7gJU.js → blockDiagram-GPEHLZMM-WI_YPphw.js} +1 -1
  43. package/dist/client/assets/{c4Diagram-AAUBKEIU-DVPXKJnr.js → c4Diagram-AAUBKEIU-BLwS5Zfh.js} +1 -1
  44. package/dist/client/assets/channel-CMMrQrQu.js +1 -0
  45. package/dist/client/assets/{chunk-2J33WTMH-CHt90T5z.js → chunk-2J33WTMH-DeXlX12-.js} +1 -1
  46. package/dist/client/assets/{chunk-4BX2VUAB-DsWFYy0a.js → chunk-4BX2VUAB-zvCEraJR.js} +1 -1
  47. package/dist/client/assets/{chunk-55IACEB6-D8XiXEo8.js → chunk-55IACEB6-BgZq96DR.js} +1 -1
  48. package/dist/client/assets/{chunk-727SXJPM-DlUYBn_Y.js → chunk-727SXJPM-CayoVGXL.js} +1 -1
  49. package/dist/client/assets/{chunk-AQP2D5EJ-BSdPOr9q.js → chunk-AQP2D5EJ-BmaktpVP.js} +1 -1
  50. package/dist/client/assets/{chunk-FMBD7UC4-B9IAeBld.js → chunk-FMBD7UC4-qYWgZPF8.js} +1 -1
  51. package/dist/client/assets/{chunk-ND2GUHAM-CmxnYQrR.js → chunk-ND2GUHAM-DIovauCc.js} +1 -1
  52. package/dist/client/assets/{chunk-QZHKN3VN-Dxp6Po_j.js → chunk-QZHKN3VN-DXWnr9LE.js} +1 -1
  53. package/dist/client/assets/classDiagram-4FO5ZUOK-CqxyehbN.js +1 -0
  54. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CqxyehbN.js +1 -0
  55. package/dist/client/assets/common-13IRj_PO.js +1 -0
  56. package/dist/client/assets/common-BBynATth.js +1 -0
  57. package/dist/client/assets/common-BG-vw0tL.js +1 -0
  58. package/dist/client/assets/common-DSo46rnH.js +1 -0
  59. package/dist/client/assets/common-DbOCE-0i.js +1 -0
  60. package/dist/client/assets/common-DnXF4Jmj.js +1 -0
  61. package/dist/client/assets/{cose-bilkent-S5V4N54A-BNl3bhpS.js → cose-bilkent-S5V4N54A-Dee9mTjK.js} +1 -1
  62. package/dist/client/assets/{dagre-BM42HDAG-DFs7WCcz.js → dagre-BM42HDAG-CU-v2zoi.js} +1 -1
  63. package/dist/client/assets/{dashboard-view-DnoTcnIo.js → dashboard-view-BM790i02.js} +1 -1
  64. package/dist/client/assets/{dashboard-view-ZGxLEL9r.js → dashboard-view-CG4rzThC.js} +1 -1
  65. package/dist/client/assets/{dashboard-view-vc8kgLMs.js → dashboard-view-COary9sK.js} +1 -1
  66. package/dist/client/assets/{diagram-2AECGRRQ-C2PVozvu.js → diagram-2AECGRRQ-DIqdnJ5B.js} +1 -1
  67. package/dist/client/assets/{diagram-5GNKFQAL-DFJ5b9H8.js → diagram-5GNKFQAL-ChpdUlpb.js} +1 -1
  68. package/dist/client/assets/{diagram-KO2AKTUF-D335CW-c.js → diagram-KO2AKTUF-BxmzOp-c.js} +1 -1
  69. package/dist/client/assets/{diagram-LMA3HP47-DSfhroAW.js → diagram-LMA3HP47-DLEx-0rl.js} +1 -1
  70. package/dist/client/assets/{diagram-OG6HWLK6-8iGveM-Z.js → diagram-OG6HWLK6-DEpkJ3cG.js} +1 -1
  71. package/dist/client/assets/{erDiagram-TEJ5UH35-Xc56MEEi.js → erDiagram-TEJ5UH35-C3Rjr78a.js} +1 -1
  72. package/dist/client/assets/{flowDiagram-I6XJVG4X-DjCU9WbD.js → flowDiagram-I6XJVG4X-aPbBbeiH.js} +1 -1
  73. package/dist/client/assets/{folder-open-BRrB44UX.js → folder-open-BnNbfyzc.js} +1 -1
  74. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CXQE1bea.js → ganttDiagram-6RSMTGT7-BEzAwvJ4.js} +1 -1
  75. package/dist/client/assets/{gitGraphDiagram-PVQCEYII--mrSABLC.js → gitGraphDiagram-PVQCEYII-Y4hB2swQ.js} +1 -1
  76. package/dist/client/assets/index-8wtfjIkg.js +2675 -0
  77. package/dist/client/assets/index-Bp3UBLOz.css +1 -0
  78. package/dist/client/assets/{infoDiagram-5YYISTIA-CTS_nljP.js → infoDiagram-5YYISTIA-pd3J7fRT.js} +1 -1
  79. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CpV5x3gk.js → ishikawaDiagram-YF4QCWOH-B968vfOH.js} +1 -1
  80. package/dist/client/assets/{journeyDiagram-JHISSGLW-BK2QCMnt.js → journeyDiagram-JHISSGLW-V4crhYKX.js} +1 -1
  81. package/dist/client/assets/{kanban-definition-UN3LZRKU-B4srpspY.js → kanban-definition-UN3LZRKU-Cl8LxR6k.js} +1 -1
  82. package/dist/client/assets/{mermaid.core-B8DVAt21.js → mermaid.core-rb_bKdHH.js} +4 -4
  83. package/dist/client/assets/{mindmap-definition-RKZ34NQL-CsmmiPpA.js → mindmap-definition-RKZ34NQL-Cnu-LPHz.js} +1 -1
  84. package/dist/client/assets/{pieDiagram-4H26LBE5-BahLDqf4.js → pieDiagram-4H26LBE5-C6hPYepr.js} +1 -1
  85. package/dist/client/assets/{puzzle-BFPQsuIa.js → puzzle-C8AvcmuM.js} +1 -1
  86. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-Bo3u0wTU.js → quadrantDiagram-W4KKPZXB-CUImgAi-.js} +1 -1
  87. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DYkYsz7d.js → requirementDiagram-4Y6WPE33-DzDLxIYz.js} +1 -1
  88. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BCbh0BSY.js → sankeyDiagram-5OEKKPKP-DSr_oIy8.js} +1 -1
  89. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-C2AP9GlE.js → sequenceDiagram-3UESZ5HK-DO2E98Hv.js} +1 -1
  90. package/dist/client/assets/{shield-alert-tlZOi02c.js → shield-alert-Byjz1VmT.js} +1 -1
  91. package/dist/client/assets/{standing-instructions-template-C0Rzv9Mr.js → standing-instructions-template-Cf9fZ8bv.js} +1 -1
  92. package/dist/client/assets/{stateDiagram-AJRCARHV-CARkH0ug.js → stateDiagram-AJRCARHV-BYPlDS4u.js} +1 -1
  93. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-C2He043y.js → stateDiagram-v2-BHNVJYJU-Ce_6vh1Q.js} +1 -1
  94. package/dist/client/assets/{timeline-definition-PNZ67QCA-MvbYneEM.js → timeline-definition-PNZ67QCA-CG1FeaKV.js} +1 -1
  95. package/dist/client/assets/{upload-DWK0F17Z.js → upload-yPsE_DRN.js} +1 -1
  96. package/dist/client/assets/{users-1AkDfM14.js → users-C_YmWx9d.js} +1 -1
  97. package/dist/client/assets/{vennDiagram-CIIHVFJN-DOjzzLqc.js → vennDiagram-CIIHVFJN-JLUXqFyb.js} +1 -1
  98. package/dist/client/assets/{wardley-L42UT6IY-Di70vhu2.js → wardley-L42UT6IY-D_UBzrZ2.js} +1 -1
  99. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-nK6ARhDv.js → wardleyDiagram-YWT4CUSO-BzwMrdpL.js} +1 -1
  100. package/dist/client/assets/{xychartDiagram-2RQKCTM6-C7_y76B7.js → xychartDiagram-2RQKCTM6-C5TjbAcZ.js} +1 -1
  101. package/dist/client/index.html +2 -2
  102. package/dist/client/sw.js +633 -13
  103. package/dist/client/version.json +1 -1
  104. package/dist/extension.js +3999 -2008
  105. package/package.json +1 -1
  106. package/skill/fusion/references/engine-tools.md +1 -1
  107. package/dist/client/assets/AgentDetailView-CoeSgMXS.css +0 -1
  108. package/dist/client/assets/AgentDetailView-DH4Cn5iG.js +0 -13
  109. package/dist/client/assets/AgentsView-Dkij8Sm8.js +0 -24
  110. package/dist/client/assets/CommandCenter-jTzBo-pg.js +0 -97
  111. package/dist/client/assets/DevServerView-CxlacYJp.js +0 -1
  112. package/dist/client/assets/EvalsView-kYnaIk11.js +0 -1
  113. package/dist/client/assets/ResearchView-eMiRw1EM.js +0 -2
  114. package/dist/client/assets/SessionTerminal-DtFLyUaK.js +0 -2
  115. package/dist/client/assets/SettingsModal-BTfZlghk.css +0 -1
  116. package/dist/client/assets/SettingsModal-DSq-_qwo.js +0 -21
  117. package/dist/client/assets/channel-xFBfK0sX.js +0 -1
  118. package/dist/client/assets/classDiagram-4FO5ZUOK-BFBVD968.js +0 -1
  119. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BFBVD968.js +0 -1
  120. package/dist/client/assets/common-BDp2y6CF.js +0 -1
  121. package/dist/client/assets/common-BnEo5fLN.js +0 -1
  122. package/dist/client/assets/common-Bzr_Y8h4.js +0 -1
  123. package/dist/client/assets/common-CvwyFzfv.js +0 -1
  124. package/dist/client/assets/common-CztCXRkz.js +0 -1
  125. package/dist/client/assets/common-DPe2mbb7.js +0 -1
  126. package/dist/client/assets/index-C2xsZoNG.js +0 -2671
  127. package/dist/client/assets/index-Dv-95s50.css +0 -1
@@ -0,0 +1,24 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AgentDetailView-BGXTnuBR.js","assets/vendor-react-SZ_qB27O.js","assets/index-8wtfjIkg.js","assets/vendor-i18n-GF3RlKbq.js","assets/vendor-codemirror-jBKmHyH0.js","assets/vendor-reactflow-9C3XTE7_.js","assets/vendor-reactflow-C5ap-Sga.css","assets/vendor-xterm-BNq00GSj.js","assets/vendor-xterm-LZoznX6r.css","assets/index-Bp3UBLOz.css","assets/AgentPermissionPolicyEditor-DswM202p.js","assets/AgentPermissionPolicyEditor-CXib-igK.css","assets/standing-instructions-template-Cf9fZ8bv.js","assets/standing-instructions-template-Ddi_4TIk.css","assets/ExperimentalAgentOnboardingModal-DYvw9TEh.js","assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css","assets/AgentDetailView-CH11Ydji.css"])))=>i.map(i=>d[i]);
2
+ import{c as ra,bK as ht,dd as ws,am as Pt,Z as Ss,de as As,bd as Rs,b$ as Ts,df as Es,ck as qt,dg as _s,cc as Wa,dh as Jt,aG as Qt,ay as Ps,C as Ms,g as Ga,bw as ea,cZ as Ka,cw as Is,bI as Ls,bp as Mt,di as Hs,ac as Ds,ai as Fs,B as $s,al as It,dj as Aa,ci as zs,aI as Ra,bM as Os,aj as Vs,ak as Bs,dk as Us,aH as Ws,L as Ot,a_ as jt,R as mt,X as Ta,dl as Gs,dm as Ks,bx as kt,aa as Xs,br as Vt,aW as Ys,aX as Zs,bq as ie,c4 as Ie,dn as qs,cv as Qe,d0 as Js,dp as Qs,dq as Ea,V as en,dr as tn,P as _a,ds as an,c6 as Et,c5 as Nt,x as Pa,dt as sn,cH as nn,du as ln,dv as rn,ce as Ma,cz as dt,cy as yt,a2 as on,cd as cn,cg as dn,dw as un,cl as Ia,cf as gn}from"./index-8wtfjIkg.js";import{r as s,j as e,b as mn}from"./vendor-react-SZ_qB27O.js";import{u as Pe}from"./vendor-i18n-GF3RlKbq.js";import{c as Bt,s as hn,g as pn,f as La}from"./agent-import-generation-DbVrl8ou.js";import{w as Ha,a as bn,f as xn}from"./standing-instructions-template-Cf9fZ8bv.js";import{ExperimentalAgentOnboardingModal as fn}from"./ExperimentalAgentOnboardingModal-DYvw9TEh.js";import{U as ta}from"./upload-yPsE_DRN.js";import{F as vn}from"./folder-open-BnNbfyzc.js";import{O as Ut,i as Da,r as jn}from"./agentsOrgChartLayout-BMvyuaLA.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-reactflow-9C3XTE7_.js";import"./vendor-xterm-BNq00GSj.js";/**
3
+ * @license lucide-react v1.7.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */const Nn=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],Fa=ra("network",Nn);/**
8
+ * @license lucide-react v1.7.0 - ISC
9
+ *
10
+ * This source code is licensed under the ISC license.
11
+ * See the LICENSE file in the root directory of this source tree.
12
+ */const yn=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],kn=ra("zoom-in",yn);/**
13
+ * @license lucide-react v1.7.0 - ISC
14
+ *
15
+ * This source code is licensed under the ISC license.
16
+ * See the LICENSE file in the root directory of this source tree.
17
+ */const Cn=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],wn=ra("zoom-out",Cn);function $a(n){return typeof n=="number"&&Number.isFinite(n)?n:0}function ut(n){return n.toLocaleString()}function Sn({agents:n}){const{t:i}=Pe("app"),{rows:y,totalInputTokens:b,totalOutputTokens:a,totalTokens:o}=s.useMemo(()=>{const h=n.map(l=>{const p=$a(l.totalInputTokens),j=$a(l.totalOutputTokens);return{id:l.id,name:l.name,inputTokens:p,outputTokens:j,totalTokens:p+j}}).sort((l,p)=>p.totalTokens-l.totalTokens||l.name.localeCompare(p.name)||l.id.localeCompare(p.id));return{rows:h,totalInputTokens:h.reduce((l,p)=>l+p.inputTokens,0),totalOutputTokens:h.reduce((l,p)=>l+p.outputTokens,0),totalTokens:h.reduce((l,p)=>l+p.totalTokens,0)}},[n]),v=o>0;return e.jsxs("section",{className:"agent-token-stats-panel","aria-label":i("agents.tokenStatistics","Agent token usage statistics"),children:[e.jsx("header",{className:"agent-token-stats-panel__header",children:e.jsx("h3",{className:"agent-token-stats-panel__title",children:i("agents.tokenUsageByAgent","Token Usage by Agent")})}),e.jsxs("div",{className:"agent-token-stats-panel__totals",role:"list","aria-label":i("agents.tokenUsageTotals","Token usage totals"),children:[e.jsxs("div",{className:"agent-token-stats-panel__total-card",role:"listitem",children:[e.jsx("span",{className:"agent-token-stats-panel__total-label",children:i("agents.inputTokens","Input Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:ut(b)})]}),e.jsxs("div",{className:"agent-token-stats-panel__total-card",role:"listitem",children:[e.jsx("span",{className:"agent-token-stats-panel__total-label",children:i("agents.outputTokens","Output Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:ut(a)})]}),e.jsxs("div",{className:"agent-token-stats-panel__total-card",role:"listitem",children:[e.jsx("span",{className:"agent-token-stats-panel__total-label",children:i("agents.combinedTokens","Combined Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:ut(o)})]})]}),v?e.jsx("div",{className:"agent-token-stats-panel__table-wrapper",children:e.jsxs("table",{className:"agent-token-stats-panel__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:i("agents.agent","Agent")}),e.jsx("th",{scope:"col",children:i("agents.input","Input")}),e.jsx("th",{scope:"col",children:i("agents.output","Output")}),e.jsx("th",{scope:"col",children:i("agents.total","Total")})]})}),e.jsx("tbody",{children:y.map(h=>e.jsxs("tr",{children:[e.jsxs("th",{scope:"row",className:"agent-token-stats-panel__agent-cell",children:[e.jsx("span",{className:"agent-token-stats-panel__agent-name",children:h.name}),e.jsx("span",{className:"agent-token-stats-panel__agent-id",children:h.id})]}),e.jsx("td",{children:ut(h.inputTokens)}),e.jsx("td",{children:ut(h.outputTokens)}),e.jsx("td",{className:"agent-token-stats-panel__total-cell",children:ut(h.totalTokens)})]},h.id))})]})}):e.jsx("div",{className:"agent-token-stats-panel__empty",role:"status",children:i("agents.noTokenUsageYet","No token usage recorded yet. Token totals appear here once agents run.")})]})}const An=[{icon:ht,label:"Active Agents",valueKey:"activeCount",className:"agent-metric-card--active"},{icon:ws,label:"Assigned Tasks",valueKey:"assignedTaskCount",className:"agent-metric-card--tasks"},{icon:Pt,label:"Success Rate",valueKey:"successRate",className:"agent-metric-card--success"},{icon:Ss,label:"Total Runs",valueKey:"completedRuns",className:"agent-metric-card--runs"}];function Rn({stats:n,className:i=""}){return n?e.jsx("div",{className:`agent-metrics-bar ${i}`.trim(),children:An.map(y=>{const b=y.valueKey==="successRate"?`${Math.round(n.successRate*100)}%`:n[y.valueKey];return e.jsxs("div",{className:`agent-metric-card ${y.className}`,children:[e.jsx(y.icon,{size:18}),e.jsxs("div",{className:"agent-metric-info",children:[e.jsx("span",{className:"agent-metric-value",children:b}),e.jsx("span",{className:"agent-metric-label",children:y.label})]})]},y.label)})}):null}const Ct=200;function Wt(n){return n.slice(-Ct).reverse().map(i=>({type:i.type??"text",text:i.text??"",timestamp:i.timestamp||void 0,...i.content!==void 0?{content:i.content}:{}}))}function Tn(n,i){const[y,b]=s.useState([]),[a,o]=s.useState(!1),v=s.useRef(null),h=s.useRef(!1),l=s.useRef([]),p=s.useRef(0),j=s.useRef(n),E=s.useRef(i);return(j.current!==n||E.current!==i)&&(j.current=n,E.current=i,p.current++,v.current&&(v.current(),v.current=null),h.current=!1,l.current=[],b([]),o(!1)),s.useEffect(()=>{if(!n){b([]),o(!1);return}const w=p.current;let V=`/api/tasks/${encodeURIComponent(n)}/logs/stream`;i&&(V+=`?projectId=${encodeURIComponent(i)}`);const I=()=>p.current!==w,S=As({run:async()=>{if(h.current||I())return;h.current=!0,l.current=[];let $=!1;try{const N=await Ts(n,i,{limit:Ct});if(I())return;const A=l.current;l.current=[],$=!0,b(Wt(Es(N.entries,A)))}finally{if(h.current=!1,!$&&!I()){const N=l.current;l.current=[],N.length>0&&b(A=>[...Wt(N),...A].slice(0,Ct))}}}}),L=Rs(V,{onReconnect:()=>S.trigger(),events:{"agent:log":$=>{if(!I())try{const N=JSON.parse($.data),A={type:N.type??"text",text:N.text??N.content??"",timestamp:N.timestamp??"",taskId:n,...N.content!==void 0?{content:N.content}:{}};if(h.current){l.current.push(A);return}b(_=>{const D=[...Wt([A]),..._];return D.length>Ct?D.slice(0,Ct):D})}catch{}}},onOpen:()=>{p.current===w&&o(!0)},onError:()=>{p.current===w&&o(!1)}});return v.current=L,()=>{S.dispose(),L(),v.current=null,p.current===w&&o(!1)}},[n,i]),{entries:y,isConnected:a}}const En=5e3;function _n({agent:n,projectId:i,onSelect:y,onOpenTaskLogs:b}){const{t:a}=Pe("app"),{entries:o,isConnected:v}=Tn(n.taskId,i),[h,l]=s.useState(null),p=s.useRef(null),[j,E]=s.useState(!1);s.useEffect(()=>{if(typeof IntersectionObserver>"u"){E(!0);return}const A=p.current;if(!A)return;const _=new IntersectionObserver(([D])=>{E(D?.isIntersecting??!0)},{rootMargin:"200px"});return _.observe(A),()=>_.disconnect()},[n.id]),s.useEffect(()=>{if(!n.taskId){l(null);return}let A=!1,_;const D=async()=>{try{const Z=await Ps(n.taskId,i);A||l(Z)}catch{}finally{A||(_=setTimeout(D,En))}};return D(),()=>{A=!0,_&&clearTimeout(_)}},[n.taskId,i]);const T=n.lastHeartbeatAt?Math.floor((Date.now()-new Date(n.lastHeartbeatAt).getTime())/1e3):0,w=(()=>{if(!n.lastHeartbeatAt)return null;const A=qt(n.runtimeConfig?.heartbeatIntervalMs),_=new Date(n.lastHeartbeatAt).getTime()+A,D=Math.round((_-Date.now())/1e3);return Number.isFinite(D)?D<=0?a("agents.heartbeatOverdue","Heartbeat overdue {{elapsed}}",{elapsed:Gt(-D)}):a("agents.nextHeartbeat","Next heartbeat in {{elapsed}}",{elapsed:Gt(D)}):null})(),{stepNumber:V,totalSteps:I}=_s(h),O=h?.steps?.[V],S=h?.modelId,L=()=>{y&&y(n.id)},$=A=>{A.stopPropagation(),n.taskId&&b&&b(n.taskId)},N=A=>{(A.key==="Enter"||A.key===" ")&&(A.preventDefault(),L())};return e.jsxs("div",{ref:p,className:"live-agent-card",onClick:L,onKeyDown:N,role:"button",tabIndex:0,"aria-label":a("agents.selectAgent","Select agent {{name}}",{name:n.name}),children:[e.jsxs("div",{className:"live-agent-card-header",children:[e.jsxs("div",{className:"live-agent-card-name",children:[e.jsx("span",{className:`status-dot ${n.state==="running"?"status-dot--pending":"status-dot--online"}`,"aria-hidden":"true"}),e.jsx("span",{children:n.name})]}),n.taskId&&e.jsx("span",{className:"live-agent-task badge",children:e.jsx(Wa,{taskId:n.taskId,taskColumn:n.taskColumn})}),n.taskId&&e.jsx(Jt,{taskId:n.taskId,isInViewport:j,projectId:i})]}),e.jsx("div",{className:"live-agent-card-transcript",children:o.length===0?e.jsx("div",{className:"live-agent-card-empty",children:n.taskId?O?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"live-agent-card-status",children:a("agents.step","Step {{number}}{{total}}: {{name}}",{number:V,total:I?`/${I}`:"",name:O.name})}),S&&e.jsx("div",{className:"live-agent-card-status-sub",children:S}),e.jsx("div",{className:"live-agent-card-status-sub",children:v?a("agents.waitingOutput","Waiting for output..."):a("agents.connectingStream","Connecting to log stream...")})]}):e.jsx("span",{children:v?a("agents.waitingOutput","Waiting for output..."):a("agents.connecting","Connecting...")}):e.jsx("span",{children:n.state==="running"?a("agents.starting","Starting..."):a("agents.idleNoTask","Idle — no task assigned")})}):o.slice(0,20).map((A,_)=>e.jsx("div",{className:"live-agent-card-line",children:A.text},_))}),e.jsxs("div",{className:"live-agent-card-footer",children:[e.jsxs("div",{className:"live-agent-card-footer-meta",children:[e.jsx("span",{className:"text-secondary",title:a("agents.timeSinceLastHeartbeat","Time since last heartbeat"),children:Gt(T)}),w&&e.jsx("span",{className:"live-agent-card-next-heartbeat",title:w,children:w})]}),e.jsxs("div",{className:"live-agent-card-footer-actions",children:[n.taskId&&b&&e.jsxs("button",{type:"button",className:"live-agent-card-logs-btn",onClick:$,title:a("agents.viewLiveLogs","View live run logs"),"aria-label":a("agents.viewLogsFor","View live logs for {{taskId}}",{taskId:n.taskId}),children:[e.jsx(Qt,{size:12}),e.jsx("span",{children:a("agents.liveLogs","Live logs")})]}),v&&e.jsx(ht,{size:12,className:"live-agent-streaming-dot"})]})]})]})}function Gt(n){return n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${n%60}s`:`${Math.floor(n/3600)}h ${Math.floor(n%3600/60)}m`}function Pn({agents:n,projectId:i,onAgentSelect:y,onOpenTaskLogs:b,className:a=""}){const{t:o}=Pe("app"),v=Array.from(new Map(n.map(h=>[h.id,h])).values());return v.length===0?null:e.jsxs("div",{className:`active-agents-panel ${a}`.trim(),children:[e.jsxs("div",{className:"active-agents-panel-header",children:[e.jsx(ht,{size:16}),e.jsx("span",{children:o("agents.activeAgents","Active Agents ({{count}})",{count:v.length})})]}),e.jsx("div",{className:"active-agents-grid",children:v.map(h=>e.jsx(_n,{agent:h,projectId:i,onSelect:y,onOpenTaskLogs:b},h.id))})]})}function Mn({stats:n,activeAgents:i,projectId:y,isOpen:b,onToggle:a,onSelectAgent:o,onOpenTaskLogs:v}){const{t:h}=Pe("app"),l=i.filter(j=>j.state==="active").length,p=i.filter(j=>j.state==="running").length;return e.jsxs("section",{className:"agents-overview-bar","aria-label":h("agents.overviewLabel","Agents overview"),children:[e.jsxs("button",{type:"button",className:"agents-overview-bar__toggle","aria-expanded":b,onClick:a,children:[e.jsxs("span",{className:"agents-overview-bar__title-wrap",children:[b?e.jsx(Ms,{size:16,"aria-hidden":"true"}):e.jsx(Ga,{size:16,"aria-hidden":"true"}),e.jsx("span",{className:"agents-overview-bar__title",children:h("agents.overview","Overview")})]}),e.jsx("span",{className:"agents-overview-bar__meta text-secondary",children:h("agents.statusCount","{{activeCount}} active · {{runningCount}} running",{activeCount:l,runningCount:p})})]}),b?e.jsxs("div",{className:"agents-overview-bar__content",children:[e.jsx(Rn,{stats:n,className:"agents-overview-bar__metrics"}),e.jsx(Pn,{agents:i,projectId:y,onAgentSelect:o,onOpenTaskLogs:v,className:"agents-overview-bar__active-panel"})]}):null]})}function Kt({title:n="No agents found",description:i="Create an agent to get started",ctaLabel:y="Create Agent",onCtaClick:b}){return e.jsxs("div",{className:"agent-empty",children:[e.jsx(ea,{size:48,opacity:.3,className:"agent-empty-state__icon"}),e.jsx("p",{className:"agent-empty-state__title",children:n}),e.jsx("p",{className:"agent-empty-state__description text-secondary",children:i}),b?e.jsx("button",{type:"button",className:"btn btn-task-create btn-sm",onClick:b,children:y}):null]})}const za=3,Xt=1e3;function In({isOpen:n,onClose:i,onGenerated:y,projectId:b}){const{t:a}=Pe("app");Ka(n);const[o,v]=s.useState(""),[h,l]=s.useState({type:"input"}),[p,j]=s.useState(null),[E,T]=s.useState(!1),w=s.useRef(null),V=s.useRef(null);s.useEffect(()=>{n&&h.type==="input"&&V.current?.focus()},[n,h.type]),s.useEffect(()=>{if(!n&&w.current){const N=w.current;w.current=null,Bt(N,b).catch(()=>{})}},[n,b]),s.useEffect(()=>{if(!n)return;const N=A=>{A.key==="Escape"&&I()};return document.addEventListener("keydown",N),()=>document.removeEventListener("keydown",N)},[n]);const I=s.useCallback(()=>{if(w.current){const N=w.current;w.current=null,Bt(N,b).catch(()=>{})}v(""),l({type:"input"}),j(null),T(!1),i()},[i,b]),O=s.useCallback(async()=>{if(!(!o.trim()||o.trim().length<za)){j(null),l({type:"loading"});try{const{sessionId:N}=await hn(o.trim(),b);w.current=N;const{spec:A}=await pn(N,b);l({type:"preview",spec:A,sessionId:N})}catch(N){const A=N instanceof Error?N.message:"Failed to generate agent specification";A.includes("429")||A.toLowerCase().includes("rate limit")?j(a("agents.generation.rateLimited","Too many requests. Please wait a moment and try again.")):j(A),l({type:"input"}),w.current=null}}},[o,b]),S=s.useCallback(async()=>{if(w.current){const N=w.current;w.current=null;try{await Bt(N,b)}catch{}}await O()},[O,b]),L=s.useCallback(()=>{h.type==="preview"&&(w.current=null,y(h.spec),v(""),l({type:"input"}),j(null),T(!1),i())},[h,y,i]);if(!n)return null;const $=o.trim().length>=za&&o.trim().length<=Xt;return e.jsx("div",{className:"agent-dialog-overlay",onClick:N=>{N.target===N.currentTarget&&I()},children:e.jsxs("div",{className:"agent-dialog",role:"dialog","aria-modal":"true","aria-label":a("agents.generateWithAiLabel","Generate agent with AI"),children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsxs("span",{className:"agent-dialog-header-title",children:[e.jsx("span",{className:"agent-dialog-header-sparkle",children:"✨"}),a("agents.generation.title","Generate Agent")]}),e.jsx("button",{className:"modal-close",onClick:I,"aria-label":a("actions.close","Close"),children:"×"})]}),e.jsxs("div",{className:"agent-dialog-body",children:[p&&e.jsx("div",{className:"agent-dialog-error-banner",children:p}),h.type==="input"&&e.jsxs("div",{children:[e.jsx("p",{className:"agent-dialog-info",children:a("agents.generation.info","Describe your agent's role and the AI will generate a complete specification including system prompt, suggested configuration, and more.")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-role-description",children:a("agents.generation.roleLabel","Role Description")}),e.jsx("textarea",{ref:V,id:"agent-role-description",className:"input agent-dialog-textarea",rows:4,placeholder:a("agents.generation.rolePlaceholder",'e.g. "Senior frontend code reviewer who specializes in React accessibility"'),value:o,onChange:N=>v(N.target.value),onKeyDown:N=>{N.key==="Enter"&&!N.shiftKey&&$&&(N.preventDefault(),O())},maxLength:Xt,"aria-describedby":"role-description-hint"}),e.jsxs("div",{id:"role-description-hint",className:"agent-dialog-hint",children:[e.jsx("span",{children:a("agents.generation.roleHint","Describe what your agent should do")}),e.jsxs("span",{children:[o.length,"/",Xt]})]})]})]}),h.type==="loading"&&e.jsxs("div",{className:"agent-dialog-loading-center",children:[e.jsx("div",{className:"agent-dialog-spinner spin"}),e.jsx("p",{className:"agent-dialog-loading-text",children:a("agents.generation.loading","Generating agent specification...")})]}),h.type==="preview"&&e.jsxs("div",{children:[e.jsxs("div",{className:"agent-dialog-summary agent-dialog-summary--spaced",children:[e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewTitle","Title")}),e.jsxs("span",{className:"agent-dialog-summary-row-value",children:[h.spec.icon," ",h.spec.title]})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewRole","Role")}),e.jsx("span",{children:h.spec.role})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewDescription","Description")}),e.jsx("span",{className:"agent-dialog-summary-row-value agent-dialog-summary-row-value--body",children:h.spec.description})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewThinking","Thinking")}),e.jsx("span",{className:"agent-dialog-summary-row-value agent-dialog-summary-row-value--capitalize",children:h.spec.thinkingLevel})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewMaxTurns","Max Turns")}),e.jsx("span",{children:h.spec.maxTurns})]})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{children:[a("agents.generation.systemPrompt","System Prompt"),e.jsx("button",{type:"button",className:"agent-dialog-expand-btn",onClick:()=>T(!E),children:E?a("agents.generation.collapse","Collapse"):a("agents.generation.expand","Expand")})]}),e.jsxs("div",{className:`agent-generation-prompt-box${E?"":" agent-generation-prompt-box--collapsed"}`,children:[h.spec.systemPrompt,!E&&h.spec.systemPrompt.length>500&&e.jsx("div",{className:"agent-generation-prompt-fade"})]})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[e.jsx("button",{className:"btn",onClick:I,children:a("actions.cancel","Cancel")}),h.type==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void O(),disabled:!$,children:a("agents.generation.generate","Generate")}),h.type==="preview"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"btn",onClick:()=>void S(),children:a("agents.generation.regenerate","Regenerate")}),e.jsx("button",{className:"btn btn-task-create",onClick:L,children:a("agents.generation.useThis","Use This")})]})]})]})})}const Oa=[{value:"triage"},{value:"executor"},{value:"reviewer"},{value:"merger"},{value:"scheduler"},{value:"engineer"},{value:"custom"}];function Ln({isOpen:n,onClose:i,onCreated:y,projectId:b,prefillDraft:a=null,agentOnboardingEnabled:o=!1,existingAgents:v=[],onPrefillDraft:h}){const{t:l}=Pe("app"),p=d=>({triage:l("agents.roleTriage","Triage"),executor:l("agents.roleExecutor","Executor"),reviewer:l("agents.roleReviewer","Reviewer"),merger:l("agents.roleMerger","Merger"),scheduler:l("agents.roleScheduler","Scheduler"),engineer:l("agents.roleEngineer","Engineer"),custom:l("agents.roleCustom","Custom")})[d]??d,[j,E]=s.useState(0),[T,w]=s.useState("presets"),[V,I]=s.useState(""),[O,S]=s.useState(""),[L,$]=s.useState(""),[N,A]=s.useState("custom"),[_,D]=s.useState(""),[Z,H]=s.useState(""),[je,se]=s.useState(""),[oe,ue]=s.useState(""),[me,B]=s.useState(""),[R,U]=s.useState(""),[ce,Ne]=s.useState({model:"",thinkingLevel:"off",maxTurns:1e3}),[Le,Be]=s.useState(null),[Re,Ce]=s.useState([]),[ne,He]=s.useState(!1),[J,he]=s.useState(null),[W,ge]=s.useState(!1),[ye,Q]=s.useState(!1),{favoriteProviders:Te,favoriteModels:et,toggleFavoriteProvider:De,toggleFavoriteModel:Fe}=Is(),[Ue,pt]=s.useState([]),[we,le]=s.useState(!1),[pe,ee]=s.useState("model"),[G,Se]=s.useState(""),[be,Me]=s.useState([]),[We,$e]=s.useState(!1),[ze,c]=s.useState([]),[k,F]=s.useState(!1);s.useEffect(()=>{n&&(le(!0),Ls().then(d=>{pt(d.models)}).catch(()=>{}).finally(()=>le(!1)))},[n]),s.useEffect(()=>{n&&(F(!0),c([]),Mt(void 0,b).then(d=>{c(d)}).catch(()=>{c([])}).finally(()=>F(!1)))},[n,b]),s.useEffect(()=>{if(!n)return;const d=zs;if(typeof d!="function"){Me([]),$e(!1);return}$e(!0),Me([]),d(b).then(C=>{Me(C)}).catch(()=>{Me([])}).finally(()=>$e(!1))},[n,b]);const K=ce.model.includes("/")?ce.model:"",te=K?K.split("/")[0]:"default",P=s.useCallback(d=>{const C=Hs.has(d.role)?d.role:"custom";I(d.title),S(d.description),$(d.icon),A(C),se(d.systemPrompt),Ne(xe=>({...xe,thinkingLevel:d.thinkingLevel,maxTurns:d.maxTurns})),ge(!1),E(1)},[]),Y=s.useCallback(d=>{Ne(C=>({...C,model:d}))},[]),Ge=s.useCallback(d=>{ee(d),d==="model"&&Se("")},[]),wt=s.useCallback(d=>{const C=Ds(d);Be(d.id),I(C.name),$(C.icon??""),S(C.title??""),A(C.role),B(C.soul??""),se(C.instructionsText??""),E(1)},[]),tt=s.useCallback(d=>{const C=Fs(d);E(1),w("custom"),I(C.name),S(C.title??""),$(C.icon??""),A(C.role),D(C.reportsTo??""),se(Ha(C.instructionsText??"")),ue(C.heartbeatProcedurePath??""),B(C.soul??""),U(C.memory??""),Ce(C.skills??[]),Ne(xe=>({...xe,model:C.model??"",thinkingLevel:C.thinkingLevel??xe.thinkingLevel,maxTurns:C.maxTurns??xe.maxTurns})),C.runtimeHint?(ee("runtime"),Se(C.runtimeHint)):(ee("model"),Se(""))},[]);if(s.useEffect(()=>{!n||!a||tt(a)},[n,a,tt]),!n)return null;const Ae=()=>{E(0),w("presets"),I(""),S(""),$(""),A("custom"),D(""),H(""),se(""),ue(""),B(""),U(""),Ne({model:"",thinkingLevel:"off",maxTurns:1e3}),ee("model"),Se(""),Be(null),Ce([]),he(null),ge(!1),Q(!1),i()},at=async()=>{if(V.trim()){He(!0),he(null);try{await Vs(Bs({name:V,role:N,title:O,icon:L,reportsTo:_,instructionsPath:Z,instructionsText:je,heartbeatProcedurePath:oe,soul:me,memory:R,model:pe==="model"?ce.model:"",runtimeHint:pe==="runtime"?G:"",thinkingLevel:ce.thinkingLevel,maxTurns:ce.maxTurns,skills:Re}),b),Ae(),y()}catch(d){he(d instanceof Error?d.message:l("agents.createError","Failed to create agent"))}finally{He(!1)}}},st=Oa.find(d=>d.value===N),Oe=_.trim(),de=Oe?ze.find(d=>d.id===Oe):void 0,Ee=G?be.find(d=>d.runtimeId===G):void 0,nt=d=>e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{id:d,children:l("agents.runtimeSource","Runtime Source")}),e.jsxs("div",{className:"agent-runtime-mode-toggle",role:"radiogroup","aria-labelledby":d,children:[e.jsxs("label",{className:`agent-runtime-mode-option${pe==="model"?" agent-runtime-mode-option--active":""}`,children:[e.jsx("input",{type:"radio",name:d,value:"model",checked:pe==="model",onChange:()=>Ge("model")}),e.jsx("span",{children:l("agents.runtimeSourceBuiltIn","Built-in Model")})]}),e.jsxs("label",{className:`agent-runtime-mode-option${pe==="runtime"?" agent-runtime-mode-option--active":""}`,children:[e.jsx("input",{type:"radio",name:d,value:"runtime",checked:pe==="runtime",onChange:()=>Ge("runtime")}),e.jsx("span",{children:l("agents.runtimeSourcePlugin","Plugin Runtime")})]})]})]}),pe==="model"?e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{children:l("agents.model","Model")}),we?e.jsx("div",{className:"agent-dialog-loading",children:e.jsx(Ra,{label:l("agents.loadingModels","Loading models…")})}):e.jsx(Os,{id:"agent-model",label:l("agents.model","Model"),value:K,onChange:Y,models:Ue,placeholder:l("agents.modelPlaceholder","Select a model…"),favoriteProviders:Te,onToggleFavorite:De,favoriteModels:et,onToggleModelFavorite:Fe,thinkingLevel:ce.thinkingLevel,onThinkingLevelChange:C=>Ne(xe=>({...xe,thinkingLevel:C}))})]}):e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-runtime-hint",children:l("agents.runtime","Runtime")}),We?e.jsx("div",{className:"agent-dialog-loading",children:e.jsx(Ra,{label:l("agents.loadingRuntimes","Loading runtimes…")})}):e.jsxs("select",{id:"agent-runtime-hint",className:"select",value:G,onChange:C=>Se(C.target.value),children:[e.jsx("option",{value:"",children:be.length>0?l("agents.runtimePlaceholder","Select a plugin runtime…"):l("agents.runtimeEmpty","No plugin runtimes available")}),be.map(C=>e.jsx("option",{value:C.runtimeId,children:C.description?`${C.name} — ${C.description}`:C.name},`${C.pluginId}:${C.runtimeId}`))]})]})]});return mn.createPortal(e.jsxs("div",{className:"agent-dialog-overlay",onClick:d=>{d.target===d.currentTarget&&Ae()},children:[e.jsxs("div",{className:"agent-dialog",role:"dialog","aria-modal":"true","aria-label":l("agents.dialogAriaLabel","Create new agent"),children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsx("span",{className:"agent-dialog-header-title",children:l("agents.dialogTitle","New Agent")}),e.jsx("button",{className:"btn-icon",onClick:Ae,"aria-label":l("agents.closeAriaLabel","Close"),children:"×"})]}),e.jsx("div",{className:"agent-dialog-steps",children:[0,1,2].map(d=>e.jsx("div",{className:`agent-dialog-step${d===j?" active":d<j?" completed":""}`,"aria-label":l("agents.stepAriaLabel","Step {{step}}",{step:d+1})},d))}),e.jsxs("div",{className:"agent-dialog-body",children:[j===0&&e.jsxs("div",{children:[o&&e.jsx("div",{className:"agent-dialog-step-zero-actions",children:e.jsx("button",{type:"button",className:"btn agent-dialog-interview-btn",onClick:()=>Q(!0),children:l("agents.aiInterview","AI Interview")})}),e.jsxs("div",{className:"agent-dialog-tabs",role:"tablist","aria-label":l("agents.setupModeAriaLabel","Agent setup mode"),children:[e.jsx("button",{id:"agent-dialog-tab-presets",type:"button",role:"tab","aria-controls":"agent-dialog-panel-presets","aria-selected":T==="presets",tabIndex:T==="presets"?0:-1,className:`agent-dialog-tab${T==="presets"?" active":""}`,onClick:()=>w("presets"),"data-testid":"agent-dialog-tab-presets",children:l("agents.tabPresets","Preset personas")}),e.jsx("button",{id:"agent-dialog-tab-custom",type:"button",role:"tab","aria-controls":"agent-dialog-panel-custom","aria-selected":T==="custom",tabIndex:T==="custom"?0:-1,className:`agent-dialog-tab${T==="custom"?" active":""}`,onClick:()=>{w("custom"),se(d=>Ha(d))},"data-testid":"agent-dialog-tab-custom",children:l("agents.tabCustom","Custom agent")})]}),T==="presets"&&e.jsx("div",{id:"agent-dialog-panel-presets",className:"agent-dialog-tab-panel",role:"tabpanel","aria-labelledby":"agent-dialog-tab-presets",children:e.jsxs("div",{className:"agent-presets",children:[e.jsx("div",{className:"agent-presets-header",children:l("agents.presetsHeader","Choose a preset persona to prefill role, identity, soul, and instructions")}),e.jsx("div",{className:"agent-presets-grid",children:$s.map(d=>e.jsxs("button",{type:"button",className:`agent-preset-card${Le===d.id?" selected":""}`,"data-testid":`preset-${d.id}`,onClick:()=>wt(d),title:d.title,children:[e.jsx("span",{className:"agent-preset-icon",children:e.jsx(It,{agent:{id:d.id,icon:d.icon,name:d.name},size:28})}),e.jsx("span",{className:"agent-preset-name",children:d.name}),e.jsx("span",{className:"agent-preset-role",children:d.role}),d.description&&e.jsx("span",{className:"agent-preset-description",children:d.description})]},d.id))})]})}),T==="custom"&&e.jsxs("div",{id:"agent-dialog-panel-custom",className:"agent-dialog-tab-panel",role:"tabpanel","aria-labelledby":"agent-dialog-tab-custom",children:[e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:l("agents.sectionIdentity","Identity")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-name",children:[l("agents.fieldName","Name")," ",!Le&&e.jsx("span",{className:"agent-dialog-required",children:"*"})]}),e.jsx("input",{id:"agent-name",type:"text",className:"input",placeholder:l("agents.namePlaceholder","e.g. Frontend Reviewer"),value:V,onChange:d=>I(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field agent-dialog-field--title",children:[e.jsxs("label",{htmlFor:"agent-title",children:[l("agents.fieldTitle","Title")," ",e.jsx("span",{className:"agent-dialog-optional",children:l("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-title",type:"text",className:"input",placeholder:l("agents.titlePlaceholder","e.g. Senior Code Reviewer"),value:O,onChange:d=>S(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-icon",children:[l("agents.fieldIcon","Icon")," ",e.jsx("span",{className:"agent-dialog-optional",children:l("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-icon",type:"text",className:"input",placeholder:l("agents.iconPlaceholder","e.g. 🤖"),value:L,onChange:d=>$(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{children:l("agents.fieldRole","Role")}),e.jsx("div",{className:"agent-role-grid",children:Oa.map(d=>e.jsxs("button",{type:"button",className:`agent-role-option${N===d.value?" selected":""}`,onClick:()=>A(d.value),children:[e.jsx("span",{className:"agent-role-option-icon","aria-hidden":"true",children:e.jsx(Aa,{provider:te,size:"sm"})}),e.jsx("span",{className:"agent-role-option-label",children:p(d.value)})]},d.value))})]})]}),e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:l("agents.sectionConfiguration","Configuration")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-reports-to",children:[l("agents.fieldReportsTo","Reports To")," ",e.jsx("span",{className:"agent-dialog-optional",children:l("agents.optional","(optional)")})]}),e.jsxs("select",{id:"agent-reports-to",className:"select",value:_,onChange:d=>D(d.target.value),disabled:k,children:[e.jsx("option",{value:"",children:l("agents.noManager","No manager")}),ze.map(d=>e.jsxs("option",{value:d.id,children:[d.name," (",d.id,")"]},d.id))]})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-soul",children:[l("agents.fieldSoul","Soul")," ",e.jsx("span",{className:"agent-dialog-optional",children:l("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-soul",className:"input",rows:2,placeholder:l("agents.soulPlaceholder","Describe the agent's personality and communication style..."),value:me,onChange:d=>B(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-memory",children:[l("agents.fieldMemory","Agent Memory")," ",e.jsx("span",{className:"agent-dialog-optional",children:l("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-memory",className:"input",rows:2,placeholder:l("agents.memoryPlaceholder","Private to this agent — durable preferences, operating habits, and context it should carry across tasks..."),value:R,onChange:d=>U(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-instructions-path",children:[l("agents.fieldInstructionsPath","Instructions Path")," ",e.jsx("span",{className:"agent-dialog-optional",children:l("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-instructions-path",type:"text",className:"input",placeholder:l("agents.instructionsPathPlaceholder","e.g. .fusion/agents/reviewer.md"),value:Z,onChange:d=>H(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-heartbeat-procedure-path",children:[l("agents.fieldHeartbeatPath","Heartbeat Procedure Path")," ",e.jsx("span",{className:"agent-dialog-optional",children:l("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-heartbeat-procedure-path",type:"text",className:"input",placeholder:l("agents.heartbeatPathPlaceholder","e.g. .fusion/agents/ceo-agent2736/HEARTBEAT.md"),value:oe,onChange:d=>ue(d.target.value)}),e.jsx("p",{className:"agent-dialog-optional agent-dialog-field-hint",children:l("agents.heartbeatPathHint","Path to the agent's heartbeat procedure path, typically .fusion/agents/ceo-agent2736/HEARTBEAT.md. Legacy id-only default paths still work.")})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-instructions-text",children:[l("agents.fieldInstructionsText","Inline Instructions")," ",e.jsx("span",{className:"agent-dialog-optional",children:l("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-instructions-text",className:"input",rows:4,placeholder:l("agents.instructionsTextPlaceholder","Add custom behavior instructions..."),value:je,onChange:d=>se(d.target.value)})]})]}),e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:l("agents.sectionRuntime","Runtime")}),nt("agent-runtime-source-step-0")]}),e.jsxs("div",{className:"agent-dialog-ai-generate",children:[e.jsxs("button",{type:"button",className:"btn btn--ai-generate",onClick:()=>ge(!0),children:[e.jsx("span",{children:"✨"}),l("agents.generateWithAI","Generate with AI")]}),e.jsx("p",{className:"agent-dialog-ai-hint",children:l("agents.generateHint","Describe your agent's role and let AI generate a specification")})]})]})]}),j===1&&e.jsxs("div",{children:[nt("agent-runtime-source-step-1"),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-max-turns",children:l("agents.fieldMaxTurns","Max Turns")}),e.jsx("input",{id:"agent-max-turns",type:"number",className:"input",min:1,max:2e3,value:ce.maxTurns,onChange:d=>Ne(C=>({...C,maxTurns:Math.max(1,parseInt(d.target.value,10)||1)}))})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx(bn,{id:"agent-skills",label:l("agents.fieldSkills","Skills"),value:Re,onChange:Ce,projectId:b}),e.jsx("p",{className:"agent-dialog-optional agent-dialog-skills-hint",children:l("agents.skillsHint","Optional skills to assign to this agent")})]})]}),j===2&&e.jsxs("div",{children:[e.jsx("p",{className:"agent-dialog-info",children:l("agents.reviewHint","Review your agent configuration before creating.")}),e.jsxs("div",{className:"agent-dialog-summary",children:[e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-name",children:l("agents.fieldName","Name")}),e.jsx("input",{id:"agent-review-name",type:"text",className:"input",placeholder:l("agents.namePlaceholder","e.g. Frontend Reviewer"),value:V,onChange:d=>I(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable agent-dialog-summary-row--title",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-title",children:l("agents.fieldTitle","Title")}),e.jsx("input",{id:"agent-review-title",type:"text",className:"input",placeholder:l("agents.titlePlaceholder","e.g. Senior Code Reviewer"),value:O,onChange:d=>S(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:l("agents.fieldRole","Role")}),e.jsx("span",{children:st?p(st.value):""})]}),Oe&&e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:l("agents.fieldReportsTo","Reports To")}),e.jsx("span",{children:de?`${de.name} (${de.id})`:Oe})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-soul",children:l("agents.fieldSoul","Soul")}),e.jsx("textarea",{id:"agent-review-soul",className:"input",rows:2,placeholder:l("agents.soulPlaceholder","Describe the agent's personality and communication style..."),value:me,onChange:d=>B(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-heartbeat-procedure-path",children:l("agents.fieldHeartbeatPath","Heartbeat Procedure Path")}),e.jsx("input",{id:"agent-review-heartbeat-procedure-path",type:"text",className:"input",placeholder:l("agents.heartbeatPathPlaceholder","e.g. .fusion/agents/ceo-agent2736/HEARTBEAT.md"),value:oe,onChange:d=>ue(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-instructions-path",children:l("agents.fieldInstructionsPath","Instructions Path")}),e.jsx("input",{id:"agent-review-instructions-path",type:"text",className:"input",placeholder:l("agents.instructionsPathPlaceholder","e.g. .fusion/agents/reviewer.md"),value:Z,onChange:d=>H(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-instructions-text",children:l("agents.fieldInstructionsText","Inline Instructions")}),e.jsx("textarea",{id:"agent-review-instructions-text",className:"input",rows:4,placeholder:l("agents.instructionsTextPlaceholder","Add custom behavior instructions..."),value:je,onChange:d=>se(d.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:pe==="runtime"?l("agents.runtime","Runtime"):l("agents.model","Model")}),e.jsx("span",{children:pe==="runtime"?Ee?Ee.name:e.jsx("em",{className:"agent-dialog-summary-row-value--muted",children:l("agents.notSelected","Not selected")}):K?e.jsxs(e.Fragment,{children:[e.jsx(Aa,{provider:K.split("/")[0],size:"sm"})," ",(()=>{const d=K.indexOf("/"),C=K.slice(0,d),xe=K.slice(d+1);return Ue.find(Ke=>Ke.provider===C&&Ke.id===xe)?.name||K})()]}):e.jsx("em",{className:"agent-dialog-summary-row-value--muted",children:l("agents.modelDefault","default")})})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:l("agents.fieldThinking","Thinking")}),e.jsx("span",{className:"agent-dialog-summary-row-value--capitalize",children:ce.thinkingLevel})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:l("agents.fieldMaxTurns","Max Turns")}),e.jsx("span",{children:ce.maxTurns})]}),Re.length>0&&e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:l("agents.fieldSkills","Skills")}),e.jsx("span",{children:l("agents.skillsSelected","{{count}} skill selected",{count:Re.length,defaultValue_one:"{{count}} skill selected",defaultValue_other:"{{count}} skills selected"})})]})]}),J&&e.jsx("p",{className:"agent-dialog-error",children:J})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[j>0&&e.jsx("button",{className:"btn",onClick:()=>E(d=>d-1),disabled:ne,children:l("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:Ae,disabled:ne,children:l("agents.cancel","Cancel")}),j<2?e.jsx("button",{className:"btn btn--primary",onClick:()=>E(d=>d+1),disabled:j===0&&!V.trim()&&!Le,children:l("agents.next","Next")}):e.jsx("button",{className:"btn btn--primary",onClick:()=>void at(),disabled:ne||!V.trim(),children:ne?l("agents.creating","Creating..."):l("agents.create","Create")})]})]}),e.jsx(In,{isOpen:W,onClose:()=>ge(!1),onGenerated:P,projectId:b}),e.jsx(fn,{isOpen:ye,onClose:()=>Q(!1),onUseDraft:d=>{h?.(d),h||tt(d),Q(!1)},projectId:b,existingAgents:v,mode:"create"})]}),document.body)}function Hn(n){const i=n.match(/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n([\s\S]*))?$/);if(!i)throw new Error("Missing YAML frontmatter delimiters (---)");const y=i[1].split(/\r?\n/),b=i[2]??"",a={name:""},o=[];let v=!1;for(const h of y){const p=h.trimEnd().trim();if(!p)continue;if(p.startsWith("skills:")){v=!0;continue}if(v&&p.startsWith("- ")){o.push(p.slice(2).trim());continue}v=!1;const[j,...E]=p.split(":"),w=E.join(":").trim().replace(/^['"]|['"]$/g,"");j==="name"&&(a.name=w),j==="title"&&(a.title=w),j==="icon"&&(a.icon=w),j==="role"&&(a.role=w),j==="reportsTo"&&(a.reportsTo=w)}if(!a.name)throw new Error("Missing required field: name");return o.length>0&&(a.skills=o),b.trim().length>0&&(a.instructionBody=b),a}function Dn({isOpen:n,onClose:i,onImported:y,projectId:b,initialInputMethod:a="paste"}){const{t:o}=Pe("app");Ka(n);const[v,h]=s.useState("input"),[l,p]=s.useState(a),[j,E]=s.useState(""),[T,w]=s.useState([]),[V,I]=s.useState("Unknown"),[O,S]=s.useState([]),[L,$]=s.useState([]),[N,A]=s.useState([]),[_,D]=s.useState([]),[Z,H]=s.useState([]),[je,se]=s.useState(!1),[oe,ue]=s.useState(!1),[me,B]=s.useState(null),[R,U]=s.useState(null),[ce,Ne]=s.useState(null),Le=s.useRef(null),Be=s.useRef(null),[Re,Ce]=s.useState([]),[ne,He]=s.useState(""),[J,he]=s.useState(null),[W,ge]=s.useState(!1),[ye,Q]=s.useState(null),Te=s.useRef(!1);s.useEffect(()=>{l==="browse"&&!Te.current&&!W&&(Te.current=!0,ge(!0),Q(null),La().then(c=>{c.error?Q(c.error):c.companies.length>0?Ce(c.companies):Q(o("agents.noCompaniesAvailable","No companies available"))}).catch(c=>{Q(c instanceof Error?c.message:o("agents.failedToLoadCompanies","Failed to load companies"))}).finally(()=>{ge(!1)}))},[l,W,o]);const et=s.useCallback(()=>{Te.current=!0,Q(null),Ce([]),he(null),ge(!0),La().then(c=>{c.error?Q(c.error):c.companies.length>0?Ce(c.companies):Q(o("agents.noCompaniesAvailable","No companies available"))}).catch(c=>{Q(c instanceof Error?c.message:o("agents.failedToLoadCompanies","Failed to load companies"))}).finally(()=>{ge(!1)})},[o]),De=s.useCallback(()=>{h("input"),p(a),E(""),w([]),I("Unknown"),S([]),$([]),A([]),D([]),H([]),se(!1),ue(!1),B(null),U(null),Ne(null),Ce([]),He(""),he(null),ge(!1),Q(null),Te.current=!1},[a]),Fe=s.useCallback(()=>{De(),i()},[De,i]),Ue=s.useCallback(c=>{const k=c.target.files?.[0];if(!k)return;const F=new FileReader;F.onload=K=>{const te=K.target?.result;p("file"),w([]),E(te),B(null)},F.onerror=()=>{B(o("agents.failedToReadFile","Failed to read file"))},F.readAsText(k),c.target.value=""},[o]),pt=s.useCallback(async c=>{const k=Array.from(c.target.files??[]);if(k.length!==0)try{const F=k.filter(te=>(te.webkitRelativePath||te.name).toLowerCase().endsWith("agents.md")).sort((te,P)=>{const Y=te.webkitRelativePath||te.name,Ge=P.webkitRelativePath||P.name;return Y.localeCompare(Ge)});if(F.length===0){B(o("agents.noAgentsMdFiles","Selected directory has no AGENTS.md files"));return}const K=[];for(const te of F){const P=await te.text();K.push(Hn(P))}p("directory"),w(K),E(""),B(null)}catch{B(o("agents.failedToParseDirectory","Failed to parse AGENTS.md files from selected directory"))}finally{c.target.value=""}},[o]);function we(c){if(!b)return`/api${c}`;const k=c.includes("?")?"&":"?";return`/api${c}${k}projectId=${encodeURIComponent(b)}`}const le=s.useCallback(async()=>{if(l==="directory"&&T.length===0){B(o("agents.selectDirectory","Please select a directory containing AGENTS.md files"));return}if(l==="browse"&&!J){B(o("agents.selectCompany","Please select a company from the catalog"));return}if(l!=="directory"&&l!=="browse"&&!j.trim()){B(o("agents.provideManifest","Please provide manifest content"));return}se(!0),B(null);try{let c;l==="directory"?c={agents:T,dryRun:!0}:l==="browse"&&J?c={importSource:"companies.sh",companySlug:J.slug,dryRun:!0}:c={manifest:j,dryRun:!0};const k=await fetch(we("/agents/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!k.ok){const P=await k.json();throw new Error(P.error??`Parse failed (${k.status})`)}const F=await k.json(),K=F.agents&&F.agents.length>0?F.agents:F.created.map(P=>({name:P,role:"custom"})),te=Array.isArray(F.skills)?F.skills:[];I(F.companyName??"Unknown"),S(K),$(te),A(Array.isArray(F.warnings)?F.warnings:[]),D(K.map(P=>P.name)),H(te.map(P=>P.name)),h("preview")}catch(c){B(c instanceof Error?c.message:o("agents.failedToParseManifest","Failed to parse manifest"))}finally{se(!1)}},[l,T,j,J,b,o]),pe=s.useCallback(async()=>{ue(!0),Ne(null);try{let c;l==="directory"?c={agents:T,skipExisting:!0,selectedAgents:_,selectedSkills:Z}:l==="browse"&&J?c={importSource:"companies.sh",companySlug:J.slug,skipExisting:!0,selectedAgents:_,selectedSkills:Z}:c={manifest:j,skipExisting:!0,selectedAgents:_,selectedSkills:Z};const k=await fetch(we("/agents/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!k.ok){const K=await k.json();throw new Error(K.error??`Import failed (${k.status})`)}const F=await k.json();U(F),h("result"),y()}catch(c){Ne(c instanceof Error?c.message:o("agents.failedToImport","Failed to import agents"))}finally{ue(!1)}},[l,T,j,J,_,Z,b,y,o]),ee=_.length,G=Z.length,Se=o("agents.selectedAgentLabel","{{count}} Agent{{plural}}",{count:ee,plural:ee!==1?"s":""}),be=o("agents.selectedSkillLabel","{{count}} Skill{{plural}}",{count:G,plural:G!==1?"s":""}),Me=ee>0&&G>0?`${Se} + ${be}`:G>0?be:Se,We=ee>0&&G>0?o("agents.importingAgentsAndSkills","Importing {{agentCount}} agent{{agentPlural}} and {{skillCount}} skill{{skillPlural}}...",{agentCount:ee,agentPlural:ee!==1?"s":"",skillCount:G,skillPlural:G!==1?"s":""}):G>0?o("agents.importingSkills","Importing {{count}} skill{{plural}}...",{count:G,plural:G!==1?"s":""}):o("agents.importingAgents","Importing {{count}} agent{{plural}}...",{count:ee,plural:ee!==1?"s":""}),$e=c=>{D(k=>k.includes(c)?k.filter(F=>F!==c):[...k,c])},ze=c=>{H(k=>k.includes(c)?k.filter(F=>F!==c):[...k,c])};return n?e.jsx("div",{className:"agent-dialog-overlay",onClick:c=>{c.target===c.currentTarget&&Fe()},children:e.jsxs("div",{className:"agent-dialog agent-import-dialog",role:"dialog","aria-modal":"true","aria-label":o("agents.importAgents","Import agents"),children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsx("span",{className:"agent-dialog-header-title",children:o("agents.importAgents","Import Agents")}),e.jsx("button",{className:"modal-close",onClick:Fe,"aria-label":o("agents.close","Close"),children:"×"})]}),e.jsxs("div",{className:"agent-dialog-body",children:[v==="input"&&e.jsxs("div",{className:"agent-import-input",children:[e.jsx("p",{className:"agent-import-description",children:o("agents.importDescription","Import agents from an Agent Companies package. Browse the companies.sh catalog to discover published agents, upload an AGENTS.md file, select a directory, or paste manifest content.")}),e.jsxs("div",{className:"agent-import-file-upload",children:[e.jsx("input",{ref:Le,type:"file",accept:".md,.txt",onChange:Ue,className:"agent-import-file-input","aria-label":"Upload agent manifest file"}),e.jsx("input",{ref:Be,type:"file",webkitdirectory:"",multiple:!0,onChange:pt,className:"agent-import-file-input","aria-label":"Select directory"}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>Le.current?.click(),children:[e.jsx(ta,{size:16}),o("agents.chooseFile","Choose File")]}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>Be.current?.click(),children:[e.jsx(vn,{size:16}),o("agents.selectDirectory","Select Directory")]}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>{p("browse"),w([]),E(""),he(null),B(null)},children:[e.jsx(Us,{size:16}),o("agents.browseCatalog","Browse Catalog")]}),e.jsx("span",{className:"agent-import-file-hint",children:o("agents.fileHint",".md and .txt files supported")})]}),l==="browse"&&e.jsxs("div",{className:"agent-import-browse",children:[e.jsxs("div",{className:"agent-import-browse-header",children:[e.jsxs("div",{className:"agent-import-browse-search",children:[e.jsx(Ws,{size:16,className:"agent-import-browse-search-icon"}),e.jsx("input",{type:"text",className:"agent-import-browse-search-input",placeholder:o("agents.searchCompanies","Search companies..."),value:ne,onChange:c=>He(c.target.value),"aria-label":o("agents.searchCompanies","Search companies")})]}),J&&e.jsxs("div",{className:"agent-import-browse-selected",children:[e.jsxs("span",{className:"agent-import-browse-selected-label",children:[o("agents.selected","Selected:")," "]}),e.jsx("span",{className:"agent-import-browse-selected-name",children:J.name}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>he(null),children:o("agents.change","Change")})]})]}),W&&e.jsxs("div",{className:"agent-import-browse-loading",children:[e.jsx(Ot,{size:20,className:"spin"}),e.jsx("span",{children:o("agents.loadingCompanies","Loading companies...")})]}),ye&&e.jsxs("div",{className:"agent-import-browse-error",children:[e.jsx(jt,{size:16}),e.jsx("span",{children:ye}),e.jsxs("button",{type:"button",className:"btn btn-sm",onClick:et,children:[e.jsx(mt,{size:14}),o("agents.retry","Retry")]})]}),!W&&!ye&&e.jsxs("div",{className:"agent-import-browse-list",children:[Re.filter(c=>ne===""||c.name.toLowerCase().includes(ne.toLowerCase())||(c.tagline?.toLowerCase().includes(ne.toLowerCase())??!1)).map(c=>e.jsxs("div",{className:`agent-import-browse-item ${J?.slug===c.slug?"agent-import-browse-item--selected":""}`,onClick:()=>he(c),role:"button",tabIndex:0,onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&he(c)},children:[e.jsxs("div",{className:"agent-import-browse-item-header",children:[e.jsx("span",{className:"agent-import-browse-item-name",children:c.name}),c.installs!==void 0&&e.jsxs("span",{className:"agent-import-browse-item-installs",children:[c.installs.toLocaleString()," ",o("agents.installs","installs")]})]}),c.tagline&&e.jsx("span",{className:"agent-import-browse-item-tagline",children:c.tagline}),c.repo&&e.jsx("span",{className:"agent-import-browse-item-repo",children:c.repo})]},c.slug)),Re.filter(c=>ne===""||c.name.toLowerCase().includes(ne.toLowerCase())||(c.tagline?.toLowerCase().includes(ne.toLowerCase())??!1)).length===0&&e.jsx("p",{className:"agent-import-browse-empty",children:ne?o("agents.noCompaniesMatch","No companies match your search"):o("agents.noCompaniesAvailable","No companies available")})]})]}),l!=="browse"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-divider",children:e.jsx("span",{children:o("agents.orPasteManifest","or paste manifest content")})}),e.jsx("textarea",{className:"agent-import-textarea",placeholder:o("agents.manifestPlaceholder",`---
18
+ name: CEO
19
+ title: Chief Executive Officer
20
+ reportsTo: null
21
+ skills:
22
+ - review
23
+ ---
24
+ Agent instructions go here...`),value:j,onChange:c=>{p("paste"),w([]),E(c.target.value),B(null)},rows:8,"aria-label":o("agents.manifestContent","Manifest content")})]}),e.jsx("p",{className:"agent-import-file-hint",children:o("agents.currentInput","Current input: {{method}}",{method:l})}),me&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(jt,{size:14}),me]})]}),v==="preview"&&e.jsxs("div",{className:"agent-import-preview",children:[e.jsxs("div",{className:"agent-import-company",children:[e.jsx("span",{className:"agent-import-company-label",children:o("agents.company","Company")}),e.jsx("span",{className:"agent-import-company-name",children:V})]}),N.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:N.map((c,k)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(jt,{size:12}),e.jsx("span",{children:c})]},k))}),e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Qt,{size:14}),e.jsx("span",{children:o("agents.agentsFound","{{count}} agent{{plural}} found",{count:O.length,plural:O.length!==1?"s":""})})]}),O.length>0&&e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>D(O.map(c=>c.name)),children:o("agents.selectAllAgents","Select all agents")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>D([]),children:o("agents.clearAgents","Clear agents")})]}),O.length>0?e.jsx("div",{className:"agent-import-agent-list",children:O.map((c,k)=>e.jsxs("div",{className:"agent-import-agent-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":o("agents.selectAgent","Select agent {{name}}",{name:c.name}),checked:_.includes(c.name),onChange:()=>$e(c.name)})}),e.jsx("span",{className:"agent-import-agent-icon",children:c.icon||"🤖"}),e.jsxs("div",{className:"agent-import-agent-details",children:[e.jsx("span",{className:"agent-import-agent-name",children:c.name}),e.jsxs("span",{className:"agent-import-agent-meta",children:[c.title&&e.jsxs("span",{className:"agent-import-agent-title",children:[c.title," · "]}),e.jsx("span",{className:"agent-import-agent-role",children:c.role}),c.reportsTo&&e.jsx("span",{className:"agent-import-agent-reports",children:o("agents.importReportsTo"," · reports to {{agent}}",{agent:c.reportsTo})}),c.skills&&c.skills.length>0&&e.jsx("span",{className:"agent-import-agent-model",children:o("agents.importSkills"," · skills: {{skills}}",{skills:c.skills.join(", ")})})]}),c.instructionsText&&e.jsxs("span",{className:"agent-import-agent-instructions",children:[c.instructionsText.slice(0,100),c.instructionsText.length>100?"...":""]})]})]},k))}):e.jsx("p",{className:"agent-import-empty",children:o("agents.noAgentsFound","No agents found in the manifest.")}),L.length>0&&e.jsxs("div",{className:"agent-import-skills-section",children:[e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Qt,{size:14}),e.jsx("span",{children:o("agents.skillsFound","{{count}} skill{{plural}} found",{count:L.length,plural:L.length!==1?"s":""})})]}),e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>H(L.map(c=>c.name)),children:o("agents.selectAllSkills","Select all skills")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>H([]),children:o("agents.clearSkills","Clear skills")})]}),e.jsx("div",{className:"agent-import-skill-list",children:L.map((c,k)=>e.jsxs("div",{className:"agent-import-skill-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":o("agents.selectSkill","Select skill {{name}}",{name:c.name}),checked:Z.includes(c.name),onChange:()=>ze(c.name)})}),e.jsx("span",{className:"agent-import-skill-icon",children:"⚡"}),e.jsxs("div",{className:"agent-import-skill-details",children:[e.jsx("span",{className:"agent-import-skill-name",children:c.name}),c.description&&e.jsx("span",{className:"agent-import-skill-description",children:c.description})]})]},`${c.name}-${k}`))})]}),ce&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(jt,{size:14}),ce]})]}),v==="result"&&R&&e.jsxs("div",{className:"agent-import-result",children:[e.jsx("div",{className:"agent-import-result-icon",children:e.jsx(Pt,{size:32})}),e.jsx("h3",{className:"agent-import-result-title",children:o("agents.importComplete","Import Complete")}),e.jsxs("p",{className:"agent-import-result-company",children:[o("agents.from","From")," ",e.jsx("strong",{children:R.companyName??"Unknown"})]}),e.jsxs("div",{className:"agent-import-result-stats",children:[R.created.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:o("agents.resultCreated","{{count}} created",{count:R.created.length})})}),R.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:o("agents.resultSkipped","{{count}} skipped (already exist)",{count:R.skipped.length})})}),R.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:o("agents.resultErrors","{{count}} error{{plural}}",{count:R.errors.length,plural:R.errors.length!==1?"s":""})})})]}),R.created.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:R.created.map((c,k)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(Pt,{size:12}),e.jsx("span",{children:c.name})]},k))}),R.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:R.errors.map((c,k)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(Ta,{size:12}),e.jsxs("span",{children:[c.name,": ",c.error]})]},k))}),R.warnings&&R.warnings.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:R.warnings.map((c,k)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(jt,{size:12}),e.jsx("span",{children:c})]},k))}),R.skills&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-result-divider"}),e.jsx("h4",{className:"agent-import-result-section-title",children:o("agents.skills","Skills")}),e.jsxs("div",{className:"agent-import-result-stats",children:[R.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:o("agents.skillsImported","{{count}} skill{{plural}} imported",{count:R.skills.imported.length,plural:R.skills.imported.length!==1?"s":""})})}),R.skills.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:o("agents.skillsSkipped","{{count}} skill{{plural}} skipped (already exist)",{count:R.skills.skipped.length,plural:R.skills.skipped.length!==1?"s":""})})}),R.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:o("agents.skillsErrors","{{count}} skill{{plural}} error{{pluralError}}",{count:R.skills.errors.length,plural:R.skills.errors.length!==1?"s":"",pluralError:R.skills.errors.length!==1?"s":""})})}),R.skills.imported.length===0&&R.skills.skipped.length===0&&R.skills.errors.length===0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:o("agents.noSkillsInPackage","No skills in package")})})]}),R.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:R.skills.imported.map((c,k)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(Pt,{size:12}),e.jsx("span",{children:c.name})]},k))}),R.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:R.skills.errors.map((c,k)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(Ta,{size:12}),e.jsxs("span",{children:[c.name,": ",c.error]})]},k))})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[v==="preview"&&e.jsx("button",{className:"btn",onClick:()=>h("input"),disabled:oe,children:o("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:Fe,disabled:oe,children:v==="result"?o("agents.close","Close"):o("agents.cancel","Cancel")}),v==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void le(),disabled:je||(l==="directory"?T.length===0:l==="browse"?!J:!j.trim()),children:je?e.jsxs(e.Fragment,{children:[e.jsx(Ot,{size:14,className:"spin"}),o("agents.parsing","Parsing...")]}):o("agents.preview","Preview")}),v==="preview"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void pe(),disabled:oe||ee===0&&G===0,children:oe?e.jsxs(e.Fragment,{children:[e.jsx(Ot,{size:14,className:"spin"}),We]}):o("agents.importButton","Import {{label}}",{label:Me})})]})]})}):null}const Va=s.lazy(()=>on(()=>import("./AgentDetailView-BGXTnuBR.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(n=>({default:n.AgentDetailView})));function Fn(n){return[{value:"triage",label:n("agents.roleTriage","Triage"),icon:"⊕"},{value:"executor",label:n("agents.roleExecutor","Executor"),icon:"▶"},{value:"reviewer",label:n("agents.roleReviewer","Reviewer"),icon:"⊙"},{value:"merger",label:n("agents.roleMerger","Merger"),icon:"⊞"},{value:"scheduler",label:n("agents.roleScheduler","Scheduler"),icon:"◷"},{value:"engineer",label:n("agents.roleEngineer","Engineer"),icon:"⎔"},{value:"custom",label:n("agents.roleCustom","Custom"),icon:"✦"}]}const Yt=[.1,.25,.5,1,2,3,5,10],Zt="__disabled__",$n=.25,zn=3,_t=16,gt=32,Ba=320,Xa=260,Ya=520,Za="kb-dashboard-agents-sidebar-width";function aa(n){return Math.max(Xa,Math.min(Ya,n))}function Ua(n){if(typeof window>"u")return Ba;const i=kt(Za,n),y=i?Number(i):NaN;return Number.isFinite(y)?aa(y):Ba}function sa(n){switch(n){case"running":return"agent-badge--running";case"active":return"agent-badge--active";case"paused":return"agent-badge--paused";case"error":return"agent-badge--error";case"idle":default:return"agent-badge--idle"}}function na(n,i){switch(i){case"running":return`${n}--running`;case"active":return`${n}--active`;case"paused":return`${n}--paused`;case"error":return`${n}--error`;case"idle":default:return`${n}--idle`}}function On(n){const i=n.runtimeConfig??{},y=typeof i.runtimeHint=="string"?i.runtimeHint:"";if(y)return{label:y,isRuntime:!0};const b=typeof i.modelProvider=="string"?i.modelProvider:"",a=typeof i.modelId=="string"?i.modelId:"";if(b&&a)return{label:`${b}/${a}`,isRuntime:!1};const o=typeof i.model=="string"?i.model:"";if(o.includes("/")){const v=o.indexOf("/");return{label:o.slice(v+1),isRuntime:!1}}return{label:null,isRuntime:!1}}function qa(n){return n.children.length===0?1:n.children.reduce((i,y)=>i+qa(y),0)}function la(n,i,y){return n.state==="error"?{title:void 0,label:y("agents.healthError","Error")}:{title:i.reason??i.label,label:i.stateDerived?null:i.label}}function Ja({agent:n,pending:i,onToggle:y}){const{t:b}=Pe("app");if(Ie(n))return null;const a=Qe(n),o=a?b("agents.disableHeartbeat","Disable heartbeat"):b("agents.enableHeartbeat","Enable heartbeat");return e.jsx("button",{type:"button",className:"btn btn-sm agent-heartbeat-toggle",disabled:i,"aria-pressed":a,"aria-label":b("agents.heartbeatActionForAgent","{{action}} for {{name}}",{action:o,name:n.name}),onClick:v=>{v.stopPropagation(),y(n)},children:i?b("agents.heartbeatUpdating","Updating heartbeat…"):o})}function Qa({node:n,onSelect:i,onToggleHeartbeat:y,isHeartbeatPending:b,getHealthStatus:a,selectedAgentId:o,registerNodeElement:v,linksRef:h}){const{t:l}=Pe("app"),{agent:p,children:j}=n,E=a(p),T=la(p,E,l),w=sa(p.state),V=na("org-chart-node-card",p.state),I=qa(n),O={"--org-chart-subtree-leaves":String(I)};return e.jsxs("div",{className:`org-chart-node${j.length>0?" org-chart-node--has-children":""}`,style:O,children:[e.jsxs("div",{ref:S=>v(p.id,S),"data-agent-id":p.id,className:`org-chart-node-card ${V}${o===p.id?" agent-card--selected":""}`,onClick:()=>i(p.id),role:"button",tabIndex:0,onKeyDown:S=>{(S.key==="Enter"||S.key===" ")&&(S.key===" "&&S.preventDefault(),i(p.id))},children:[e.jsxs("div",{className:"org-chart-node__header",children:[e.jsx("span",{className:"org-chart-node__icon",children:e.jsx(It,{agent:p,size:20})}),e.jsx("span",{className:"org-chart-node__name",children:p.name})]}),e.jsxs("div",{className:"org-chart-node__meta",children:[e.jsx("span",{className:`org-chart-node__badge ${w}`,children:p.state}),e.jsxs("span",{className:"org-chart-node__health",style:{color:E.color},title:T.title,children:[E.icon,T.label&&e.jsx("span",{className:"text-secondary",children:T.label})]})]})]}),e.jsx("div",{className:"org-chart-node__actions",children:e.jsx(Ja,{agent:p,pending:b(p.id),onToggle:y})}),j.length>0&&e.jsx("div",{className:"org-chart-children",role:"group","aria-label":l("agents.orgChartEmployees","{{name}} employees",{name:p.name}),children:j.map(S=>(h.current.push({parentId:p.id,childId:S.agent.id}),e.jsx(Qa,{node:S,onSelect:i,onToggleHeartbeat:y,isHeartbeatPending:b,getHealthStatus:a,selectedAgentId:o,registerNodeElement:v,linksRef:h},S.agent.id)))})]})}function Vn({links:n,nodeElements:i,canvasRef:y,viewportRef:b,layoutMode:a,transform:o}){const[v,h]=s.useState([]);return s.useLayoutEffect(()=>{const l=y.current,p=b.current;if(!l||!p||n.length===0){h([]);return}const j=()=>{const T=l.getBoundingClientRect(),w=n.flatMap(({parentId:V,childId:I})=>{const O=i.get(V),S=i.get(I);if(!O||!S)return[];const L=O.getBoundingClientRect(),$=S.getBoundingClientRect(),N=(L.left-T.left)/o.scale,A=(L.top-T.top)/o.scale,_=($.left-T.left)/o.scale,D=($.top-T.top)/o.scale;if(a==="vertical"){const ue=N,me=A+L.height/o.scale/2,B=_,R=D+$.height/o.scale/2,U=ue-(ue-B)/2;return[`M ${ue} ${me} L ${U} ${me} L ${U} ${R} L ${B} ${R}`]}const Z=N+L.width/o.scale/2,H=A+L.height/o.scale,je=_+$.width/o.scale/2,se=D,oe=H+(se-H)/2;return[`M ${Z} ${H} L ${Z} ${oe} L ${je} ${oe} L ${je} ${se}`]});h(w)};j();const E=new ResizeObserver(j);return E.observe(l),E.observe(p),i.forEach(T=>E.observe(T)),()=>E.disconnect()},[y,a,n,i,o.scale,b]),e.jsx("svg",{className:"agent-org-chart-connectors","aria-hidden":"true",children:v.map((l,p)=>e.jsx("path",{d:l},`${p}-${l}`))})}function tl({addToast:n,projectId:i,onOpenTaskLogs:y,agentOnboardingEnabled:b=!1}){const{t:a}=Pe("app"),o=Fn(a),[v,h]=s.useState(!1),l=s.useRef(new Map),p=s.useRef(new Map),j=s.useRef(new Map),[E,T]=s.useState(new Set),w=s.useRef(null);s.useEffect(()=>{if(typeof IntersectionObserver>"u")return;const t=new IntersectionObserver(r=>{T(u=>{let g=!1;const x=new Set(u);for(const f of r){const M=p.current.get(f.target);M&&(f.isIntersecting?x.has(M)||(x.add(M),g=!0):x.has(M)&&(x.delete(M),g=!0))}return g?x:u})},{rootMargin:"200px"});return w.current=t,l.current.forEach(r=>t.observe(r)),()=>{t.disconnect(),w.current=null}},[]);const V=s.useCallback(t=>{const r=j.current.get(t);if(r)return r;const u=g=>{const x=l.current.get(t);x&&(w.current?.unobserve(x),p.current.delete(x)),g?(l.current.set(t,g),p.current.set(g,t),w.current?w.current.observe(g):T(f=>f.has(t)?f:new Set(f).add(t))):(l.current.delete(t),j.current.delete(t),T(f=>{if(!f.has(t))return f;const M=new Set(f);return M.delete(t),M}))};return j.current.set(t,u),u},[]),I=s.useCallback(t=>typeof IntersectionObserver>"u"?!0:E.has(t),[E]),S=Gs()==="mobile",[L,$]=s.useState(()=>Ua(i)),[N,A]=s.useState("all"),{agents:_,stats:D,isLoading:Z,loadAgents:H,refreshAgents:je}=Ks(i,{filterState:N,showSystemAgents:v}),[se,oe]=s.useState(!1),[ue,me]=s.useState(null),[B,R]=s.useState(!1),[U,ce]=s.useState(null),[Ne,Le]=s.useState(null),Be=S&&!!U,[Re,Ce]=s.useState("dashboard"),[ne,He]=s.useState(null),[J,he]=s.useState(!1),[W,ge]=s.useState(()=>{if(typeof window>"u")return"list";const t=kt("fn-agent-view",i);return t==="list"||t==="board"||t==="org"?t:"list"}),[ye,Q]=s.useState(()=>{if(typeof window>"u")return"auto";const t=kt(Ut,i);return Da(t)?t:"auto"}),[Te,et]=s.useState([]),[De,Fe]=s.useState(!1),[Ue,pt]=s.useState(0),[we,le]=s.useState(!1),[pe,ee]=s.useState(!1),[G,Se]=s.useState(!1),[be,Me]=s.useState(!1),[We,$e]=s.useState(0),[ze,c]=s.useState(0),[k,F]=s.useState(0),[K,te]=s.useState(0),[P,Y]=s.useState({scale:1,x:0,y:0}),[Ge,wt]=s.useState(!1),tt=s.useRef(null),Ae=s.useRef(null),at=s.useRef(null),st=s.useRef(new Map),Oe=s.useRef([]),de=s.useRef(new Map),Ee=s.useRef(null),nt=s.useRef(null),d=s.useRef(!1),{confirm:C}=Xs(),xe=s.useRef(null),Lt=s.useId();s.useEffect(()=>{$(Ua(i))},[i]),s.useEffect(()=>{const t=kt("fn-agent-view",i);if(t==="list"||t==="board"||t==="org"){ge(t);return}ge("list")},[i]),s.useEffect(()=>{Vt("fn-agent-view",W,i)},[W,i]),s.useEffect(()=>{const t=kt(Ut,i);Q(Da(t)?t:"auto")},[i]),s.useEffect(()=>{Vt(Ut,ye,i)},[ye,i]);const Ke=s.useCallback(t=>{try{Vt(Za,String(t),i)}catch{}},[i]),es=s.useCallback(t=>{if(S)return;t.preventDefault(),t.stopPropagation();const r=t.currentTarget;typeof r.setPointerCapture=="function"&&r.setPointerCapture(t.pointerId);const u=t.clientX,g=L;let x=g;document.body.style.userSelect="none";const f=X=>{const re=X.clientX-u,q=aa(g+re);x=q,$(q)},M=X=>{typeof r.releasePointerCapture=="function"&&r.releasePointerCapture(X.pointerId),document.body.style.userSelect="",document.removeEventListener("pointermove",f),document.removeEventListener("pointerup",M),Ke(x)};document.addEventListener("pointermove",f),document.addEventListener("pointerup",M)},[S,Ke,L]),ts=s.useCallback(t=>{if(S||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;t.preventDefault();const r=t.shiftKey?50:10,u=t.key==="ArrowLeft"?-r:r,g=aa(L+u);$(g),Ke(g)},[S,Ke,L]),[as,lt]=s.useState(null),ss=s.useRef(null),[ns,rt]=s.useState(null),[Ve,ia]=s.useState(new Set),[_e,oa]=s.useState(!1),[ca,it]=s.useState(null),[da,Xe]=s.useState({}),[bt,ua]=s.useState(1),[ga,ma]=s.useState(!1),[Ye,ha]=s.useState(new Set),[Ht,ot]=s.useState(new Map),St=s.useRef(!0);s.useEffect(()=>(St.current=!0,()=>{St.current=!1}),[]),s.useEffect(()=>{Ys(i).then(t=>{St.current&&ua(t.heartbeatMultiplier??1)}).catch(()=>{})},[i]);const pa=s.useCallback(async t=>{const r=Number.isFinite(t)&&t>0?t:1;ua(r),ma(!0);try{await Zs({heartbeatMultiplier:r},i),n(a("agents.heartbeatSpeedSet","Heartbeat speed set to ×{{value}}",{value:r.toFixed(1)}),"success")}catch(u){n(a("agents.heartbeatSpeedSaveFailed","Failed to save heartbeat multiplier: {{error}}",{error:ie(u)}),"error")}finally{St.current&&ma(!1)}},[i,n]),At=s.useMemo(()=>Ht.size===0?_:_.map(t=>{const r=Ht.get(t.id);return r?{...t,state:r}:t}),[_,Ht]),xt=s.useMemo(()=>At.filter(t=>v||!Ie(t)),[At,v]),ls=s.useMemo(()=>At.filter(t=>t.state!=="active"&&t.state!=="running"?!1:v||!Ie(t)),[At,v]),Ze=s.useMemo(()=>{if(v)return Te;const t=r=>Ie(r.agent)?null:{...r,children:r.children.map(t).filter(u=>u!==null)};return Te.map(t).filter(r=>r!==null)},[Te,v]);s.useEffect(()=>{if(W!=="org")return;const t=Ae.current;if(!t)return;const r=()=>{pt(t.clientWidth)};r();const u=typeof ResizeObserver<"u"?new ResizeObserver(r):null;return u?.observe(t),window.addEventListener("resize",r),()=>{u?.disconnect(),window.removeEventListener("resize",r)}},[W,Ze.length]),s.useEffect(()=>{if(W!=="org")return;let t=!1;return Fe(!0),qs(i,{includeEphemeral:v}).then(r=>{t||et(r)}).catch(r=>{t||(n(a("agents.orgChartLoadFailed","Failed to load org chart: {{error}}",{error:ie(r)}),"error"),et([]))}).finally(()=>{t||Fe(!1)}),()=>{t=!0}},[W,i,v,n]),s.useEffect(()=>{const t=setInterval(()=>{H()},3e4);return()=>{clearInterval(t)}},[H]),s.useEffect(()=>{if(!we)return;let t=!1;Me(!0),Mt(void 0,i).then(g=>{if(t)return;const x=g.filter(f=>!Ie(f));$e(x.filter(f=>f.state==="active"||f.state==="running").length),c(x.filter(f=>f.state==="paused").length),F(x.filter(f=>!Qe(f)).length),te(x.filter(f=>Qe(f)).length)}).catch(g=>{t||($e(0),c(0),F(0),te(0),n(a("agents.bulkActionsLoadFailed","Failed to load bulk agent actions: {{error}}",{error:ie(g)}),"error"))}).finally(()=>{t||Me(!1)});const r=g=>{const x=g.target;x&&(tt.current?.contains(x)||xe.current?.contains(x)||le(!1))},u=g=>{g.key==="Escape"&&(le(!1),xe.current?.focus())};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),document.addEventListener("keydown",u),()=>{t=!0,document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r),document.removeEventListener("keydown",u)}},[n,we,i]);const ba=async t=>{if(!G){Se(!0);try{const u=(await Mt(void 0,i)).filter(m=>!Ie(m)),g=u.filter(m=>t==="paused"?m.state==="active"||m.state==="running":m.state==="paused"),x=u.length-g.length;if(g.length===0){n(t==="paused"?a("agents.noAgentsToPause","No agents eligible to pause"):a("agents.noAgentsToResume","No agents eligible to resume"),"error");return}if(!await C({title:t==="paused"?a("agents.pauseAllTitle","Pause All Agents"):a("agents.resumeAllTitle","Resume All Agents"),message:t==="paused"?a("agents.pauseAllConfirm",{count:g.length,defaultValue_one:"Pause {{count}} agent in this project?",defaultValue_other:"Pause {{count}} agents in this project?"}):a("agents.resumeAllConfirm",{count:g.length,defaultValue_one:"Resume {{count}} agent in this project?",defaultValue_other:"Resume {{count}} agents in this project?"}),danger:t==="paused"}))return;const M=await Promise.allSettled(g.map(m=>Ma(m.id,t,i))),X=M.map((m,z)=>({result:m,agent:g[z]})).filter(m=>m.result.status==="rejected"),re=M.length-X.length,q=X.length,ve=t==="paused"?a("agents.pausedSummary",{count:re,skipped:x,defaultValue_one:"Paused {{count}} agent; skipped {{skipped}}",defaultValue_other:"Paused {{count}} agents; skipped {{skipped}}"}):a("agents.resumedSummary",{count:re,skipped:x,defaultValue_one:"Resumed {{count}} agent; skipped {{skipped}}",defaultValue_other:"Resumed {{count}} agents; skipped {{skipped}}"});if(q>0){const m=X.slice(0,3).map(({agent:z,result:ke})=>`${z.name||z.id}: ${ie(ke.reason)}`).join("; ");n(`${ve}; failed ${q}${m?` (${m})`:""}`,"error")}else n(ve,"success");await H()}catch(r){n(t==="paused"?a("agents.pauseAgentsFailed","Failed to pause agents: {{error}}",{error:ie(r)}):a("agents.resumeAgentsFailed","Failed to resume agents: {{error}}",{error:ie(r)}),"error")}finally{Se(!1)}}},xa=async t=>{if(!(_e||G||Ve.size>0)){oa(!0);try{const r=await Mt(void 0,i),g=r.filter(m=>!Ie(m)).filter(m=>Qe(m)!==t),x=r.length-g.length;if(g.length===0){n(t?a("agents.noHeartbeatsToEnable","No agent heartbeats need enabling"):a("agents.noHeartbeatsToDisable","No agent heartbeats need disabling"),"error");return}if(!await C({title:t?a("agents.enableAllHeartbeats","Enable all heartbeats"):a("agents.disableAllHeartbeats","Disable all heartbeats"),message:t?a("agents.enableAllHeartbeatsConfirm","Enable heartbeats for {{count}} project agents?",{count:g.length}):a("agents.disableAllHeartbeatsConfirm","Disable heartbeats for {{count}} project agents?",{count:g.length}),danger:!t}))return;const M=await Promise.allSettled(g.map(m=>dt(m.id,{runtimeConfig:yt(m,t)},i))),X=M.map((m,z)=>({result:m,agent:g[z]})).filter(m=>m.result.status==="rejected"),re=M.length-X.length,q=t?a("agents.enableHeartbeatsSummary","Enabled {{count}} heartbeats; skipped {{skipped}}",{count:re,skipped:x}):a("agents.disableHeartbeatsSummary","Disabled {{count}} heartbeats; skipped {{skipped}}",{count:re,skipped:x}),ve=X.slice(0,3).map(({agent:m,result:z})=>`${m.name||m.id}: ${ie(z.reason)}`).join("; ");n(X.length?`${q}; ${a("agents.bulkFailures","failed {{count}}",{count:X.length})}${ve?` (${ve})`:""}`:q,X.length?"error":"success"),await H()}catch(r){n(a("agents.heartbeatUpdateFailed","Failed to update heartbeat: {{error}}",{error:ie(r)}),"error")}finally{oa(!1)}}},ft=async(t,r)=>{if(!Ye.has(t)){ha(u=>new Set(u).add(t)),ot(u=>{const g=new Map(u);return g.set(t,r),g});try{await Ma(t,r,i),n(a("agents.stateUpdated","Agent state updated to {{state}}",{state:r}),"success"),await H(),ot(u=>{const g=new Map(u);return g.delete(t),g})}catch(u){ot(g=>{const x=new Map(g);return x.delete(t),x}),n(a("agents.stateUpdateFailed","Failed to update state: {{error}}",{error:ie(u)}),"error")}finally{ha(u=>{const g=new Set(u);return g.delete(t),g})}}},fa=async(t,r)=>{if(await C({title:a("agents.deleteTitle","Delete Agent"),message:a("agents.deleteConfirm",'Delete agent "{{name}}"? This cannot be undone.',{name:r}),danger:!0}))try{await dn(t,i),n(a("agents.deleted",'Agent "{{name}}" deleted',{name:r}),"success"),await H()}catch(g){n(a("agents.deleteFailed","Failed to delete agent: {{error}}",{error:ie(g)}),"error")}},rs=async(t,r)=>{const u=_.find(g=>g.id===t);if(u){if(u.role===r){lt(null);return}try{await dt(t,{role:r},i),n(a("agents.roleUpdated","Agent role updated to {{role}}",{role:o.find(g=>g.value===r)?.label??r}),"success"),lt(null),H()}catch(g){n(a("agents.roleUpdateFailed","Failed to update role: {{error}}",{error:ie(g)}),"error")}}},is=(t,r)=>{t.key==="Escape"&&lt(null)},os=async(t,r)=>{if(!(_e||Ve.has(t.id))){ca===t.id&&(it(null),Xe(u=>{const g={...u};return delete g[t.id],g})),rt(t.id);try{await dt(t.id,{runtimeConfig:{...yt(t,!0),heartbeatIntervalMs:r}},i),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:Ia(r),name:t.name}),"success"),H()}catch(u){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:ie(u)}),"error")}finally{rt(null)}}},Dt=async(t,r)=>{if(!(Ie(t)||_e||Ve.has(t.id))){ia(u=>new Set(u).add(t.id));try{await dt(t.id,{runtimeConfig:yt(t,r)},i),n(r?a("agents.heartbeatEnabledForAgent","Heartbeat enabled for {{name}}",{name:t.name}):a("agents.heartbeatDisabled","Heartbeat disabled for {{name}}",{name:t.name}),"success"),await H()}catch(u){n(a("agents.heartbeatUpdateFailed","Failed to update heartbeat: {{error}}",{error:ie(u)}),"error")}finally{ia(u=>{const g=new Set(u);return g.delete(t.id),g})}}},cs=t=>Dt(t,!1),va=async t=>{if(_e||Ve.has(t.id))return;const r=da[t.id]??"";if(r.trim()===""){n(a("agents.heartbeatEnterMinutes","Please enter a heartbeat interval in minutes"),"error");return}const u=Number(r);if(isNaN(u)){n(a("agents.heartbeatMustBeNumber","Heartbeat interval must be a valid number"),"error");return}if(u<=0){n(a("agents.heartbeatMustBePositive","Heartbeat interval must be greater than 0"),"error");return}if(u>=1&&u<5){rt(t.id);try{await dt(t.id,{runtimeConfig:{...yt(t,!0),heartbeatIntervalMs:un}},i),n(a("agents.heartbeatClampedToMin",{count:u,defaultValue_one:"Heartbeat interval set to 5 minutes (minimum). {{count}} minute was below the 5-minute minimum.",defaultValue_other:"Heartbeat interval set to 5 minutes (minimum). {{count}} minutes was below the 5-minute minimum."}),"success"),it(null),Xe(x=>{const f={...x};return delete f[t.id],f}),H()}catch(x){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:ie(x)}),"error")}finally{rt(null)}return}const g=Math.round(u*6e4);rt(t.id);try{await dt(t.id,{runtimeConfig:{...yt(t,!0),heartbeatIntervalMs:g}},i),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:Ia(g),name:t.name}),"success"),it(null),Xe(x=>{const f={...x};return delete f[t.id],f}),H()}catch(x){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:ie(x)}),"error")}finally{rt(null)}},ds=t=>{if(_e||Ve.has(t.id))return;const r=qt(t.runtimeConfig?.heartbeatIntervalMs),u=Math.round(r/6e4);it(t.id),Xe(g=>({...g,[t.id]:String(u)}))},fe=s.useCallback((t,r)=>{ce(t),Ce(r?.initialTab??"dashboard"),He(r?.initialRunId??null),he(r?.preferActiveRun??!1)},[]),qe=s.useCallback(()=>{ce(null),Ce("dashboard"),He(null),he(!1)},[]),ja=s.useCallback(t=>{fe(t)},[fe]),us=s.useCallback(t=>{Le(t),fe(t)},[fe]),gs=s.useCallback(async({agentId:t,deleted:r})=>{await je(),r&&U===t&&qe()},[je,U,qe]),ms=s.useCallback(t=>{fe(t),S&&ee(!1)},[S,fe]),hs=async(t,r)=>{ot(u=>{const g=new Map(u);return g.set(t,"running"),g});try{await gn(t,i,{source:"on_demand",triggerDetail:"Triggered from dashboard"}),n(a("agents.heartbeatRunStarted","Heartbeat run started for {{name}}",{name:r}),"success"),await H(),ot(u=>{const g=new Map(u);return g.delete(t),g})}catch(u){ot(g=>{const x=new Map(g);return x.delete(t),x}),n(a("agents.heartbeatRunFailed","Failed to start heartbeat run: {{error}}",{error:ie(u)}),"error")}},Je=s.useCallback(t=>Math.min(zn,Math.max($n,t)),[]),ae=s.useCallback(t=>{const r=Ae.current,u=at.current?.querySelector(".agent-org-chart");if(!r||!u)return{...t,scale:Je(t.scale)};const g=Je(t.scale),x=u.scrollWidth*g,f=u.scrollHeight*g,M=r.clientWidth,X=r.clientHeight,re=Math.min(gt,M-x-gt),q=gt,ve=Math.min(gt,X-f-gt),m=gt;return{scale:g,x:Math.max(re,Math.min(q,t.x)),y:Math.max(ve,Math.min(m,t.y))}},[Je]),Rt=s.useCallback((t,r,u)=>{const g=Ae.current;g&&Y(x=>{const f=Je(t),M=g.getBoundingClientRect(),X=r-M.left,re=u-M.top,q=(X-x.x)/x.scale,ve=(re-x.y)/x.scale;return ae({scale:f,x:X-q*f,y:re-ve*f})})},[Je,ae]),ct=s.useCallback(()=>{const t=Ae.current,r=at.current?.querySelector(".agent-org-chart");if(!t||!r)return;const u=t.clientWidth,g=t.clientHeight,x=r.scrollWidth,f=r.scrollHeight;if(x<=0||f<=0)return;const M=Je(Math.min(u/x,g/f,1)),X=(u-x*M)/2,re=(g-f*M)/2;Y(ae({scale:M,x:X,y:re}))},[Je,ae]),Ft=s.useCallback(t=>{ge(t),t!=="org"&&Y({scale:1,x:0,y:0}),S&&U&&qe()},[qe,S,U]),Na=t=>o.find(r=>r.value===t)?.label??t,Tt=s.useMemo(()=>jn({tree:Ze,availableWidth:Ue,preference:ye}),[Ze,ye,Ue]),ya=s.useCallback(t=>{Q(t),Y({scale:1,x:0,y:0})},[]);s.useEffect(()=>{Y({scale:1,x:0,y:0}),d.current=!1},[i,Tt]),s.useLayoutEffect(()=>{W!=="org"||De||Ze.length===0||d.current||(ct(),d.current=!0)},[W,Ze.length,ct,De]);const ps=s.useCallback((t,r)=>{r?st.current.set(t,r):st.current.delete(t)},[]),ka=s.useCallback(()=>e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>Y(t=>ae({...t,scale:t.scale*.9})),"aria-label":a("agents.orgChartZoomOut","Zoom out org chart"),title:a("agents.zoomOut","Zoom out"),children:e.jsx(wn,{size:16})}),e.jsxs("span",{className:"agent-org-chart-controls__zoom-label","aria-live":"polite",children:[Math.round(P.scale*100),"%"]}),e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>Y(t=>ae({...t,scale:t.scale*1.1})),"aria-label":a("agents.orgChartZoomIn","Zoom in org chart"),title:a("agents.zoomIn","Zoom in"),children:e.jsx(kn,{size:16})}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm agent-org-chart-controls__fit-btn",onClick:ct,"aria-label":a("agents.orgChartFit","Fit org chart"),title:a("agents.orgChartFit","Fit org chart"),children:[e.jsx(Js,{size:16}),a("agents.fit","Fit")]}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm",onClick:()=>Y(t=>ae({...t,x:0,y:0})),"aria-label":a("agents.orgChartCenter","Center org chart"),title:a("agents.orgChartCenter","Center org chart"),children:[e.jsx(Qs,{size:16}),a("agents.center","Center")]})]}),[ae,ct,P.scale]),bs=s.useCallback(t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();const r=t.deltaY>0?.9:1.1;Rt(P.scale*r,t.clientX,t.clientY)},[P.scale,Rt]),xs=s.useCallback(t=>{if(t.target.closest(".org-chart-node-card"))return;if(t.currentTarget.setPointerCapture?.(t.pointerId),de.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),de.current.size===1){Ee.current={x:t.clientX-P.x,y:t.clientY-P.y,pointerId:t.pointerId},wt(!0);return}if(de.current.size===2){const u=Array.from(de.current.values()),g=u[0].x-u[1].x,x=u[0].y-u[1].y;nt.current={distance:Math.hypot(g,x),scale:P.scale,centerX:(u[0].x+u[1].x)/2,centerY:(u[0].y+u[1].y)/2},Ee.current=null}},[P.scale,P.x,P.y]),fs=s.useCallback(t=>{if(de.current.has(t.pointerId)){if(de.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),de.current.size>=2){const r=Array.from(de.current.values()),u=nt.current;if(!u)return;const g=r[0].x-r[1].x,x=r[0].y-r[1].y,f=Math.hypot(g,x),M=u.scale*(f/u.distance);Rt(M,u.centerX,u.centerY);return}!Ee.current||Ee.current.pointerId!==t.pointerId||Y(r=>ae({...r,x:t.clientX-Ee.current.x,y:t.clientY-Ee.current.y}))}},[ae,Rt]),Ca=s.useCallback(t=>{de.current.delete(t.pointerId),de.current.size<2&&(nt.current=null),de.current.size===0&&(Ee.current=null,wt(!1))},[]),vs=s.useCallback(t=>{if(t.key==="ArrowLeft")Y(r=>ae({...r,x:r.x+_t}));else if(t.key==="ArrowRight")Y(r=>ae({...r,x:r.x-_t}));else if(t.key==="ArrowUp")Y(r=>ae({...r,y:r.y+_t}));else if(t.key==="ArrowDown")Y(r=>ae({...r,y:r.y-_t}));else if(t.key==="+"||t.key==="=")Y(r=>ae({...r,scale:r.scale*1.1}));else if(t.key==="-")Y(r=>ae({...r,scale:r.scale*.9}));else if(t.key==="0")ct();else if(t.key==="Home")Y({scale:1,x:0,y:0});else return;t.preventDefault()},[ae,ct]),wa=s.useCallback(()=>{const t=[{value:"horizontal",label:a("agents.layoutHorizontal","Horizontal"),icon:e.jsx(Fa,{size:16}),ariaLabel:a("agents.layoutHorizontalAria","Horizontal layout")},{value:"vertical",label:a("agents.layoutVertical","Vertical"),icon:e.jsx(Ea,{size:16}),ariaLabel:a("agents.layoutVerticalAria","Vertical layout")},{value:"auto",label:a("agents.layoutAuto","Auto"),icon:e.jsx(mt,{size:16}),ariaLabel:a("agents.layoutAutoAria","Automatic layout")}];return e.jsx("div",{className:"agent-org-chart-layout-toggle","data-testid":"agent-org-chart-layout-toggle",children:t.map(r=>{const u=ye===r.value;return e.jsxs("button",{type:"button",className:`btn-icon touch-target agent-org-chart-layout-toggle__button${u?" btn-icon--active":""}`,onClick:()=>ya(r.value),"aria-pressed":u,"aria-label":r.ariaLabel,title:r.ariaLabel,"data-layout-value":r.value,children:[r.icon,e.jsx("span",{className:"agent-org-chart-layout-toggle__text",children:r.label})]},r.value)})})},[ya,ye]),js=t=>Array.isArray(t.metadata?.skills)?t.metadata.skills:[],$t=t=>cn(t,bt),Ns=be||G||We===0,ys=be||G||ze===0,ks=be||G||_e||k===0,Cs=be||G||_e||K===0,Sa=Z&&_.length===0,vt=s.useCallback(()=>{oe(!0)},[]);return e.jsxs("div",{className:"agents-view",children:[e.jsx(en,{icon:ea,title:a("agents.title","Agents"),actions:e.jsxs("div",{className:"agents-view-controls",children:[e.jsxs("div",{className:"view-toggle",children:[e.jsx("button",{className:`view-toggle-btn${W==="list"?" active":""}`,onClick:()=>Ft("list"),title:a("agents.listView","List view"),"aria-label":a("agents.listView","List view"),"aria-pressed":W==="list",children:e.jsx(Ea,{size:16})}),e.jsx("button",{className:`view-toggle-btn${W==="board"?" active":""}`,onClick:()=>Ft("board"),title:a("agents.boardView","Board view"),"aria-label":a("agents.boardView","Board view"),"aria-pressed":W==="board",children:e.jsx(ht,{size:16})}),e.jsx("button",{className:`view-toggle-btn${W==="org"?" active":""}`,onClick:()=>Ft("org"),title:a("agents.orgChartView","Org Chart view"),"aria-label":a("agents.orgChartView","Org Chart view"),"aria-pressed":W==="org",children:e.jsx(Fa,{size:16})})]}),e.jsxs("div",{className:`agents-view-primary-actions${we?" agents-view-primary-actions--controls-open":""}`,children:[e.jsx("button",{ref:xe,className:`btn-icon agent-controls-trigger${we?" agent-controls-trigger--active":""}`,onClick:()=>le(t=>!t),title:a("agents.controls","Controls"),"aria-label":a("agents.controls","Controls"),"aria-haspopup":"dialog","aria-expanded":we,"aria-controls":Lt,children:e.jsx(tn,{size:16})}),e.jsx("button",{className:"btn-icon",onClick:()=>void H(),title:a("agents.refresh","Refresh"),"aria-label":a("agents.refresh","Refresh"),children:e.jsx(mt,{size:16,className:Z?"spin":void 0})}),!S&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{R(!0),le(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(ta,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{vt(),le(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(_a,{size:16}),a("agents.newAgent","New Agent")]})]}),we&&e.jsxs("div",{ref:tt,id:Lt,className:"agent-controls-panel agent-controls-panel--scrollable",role:"dialog","aria-label":a("agents.agentControls","Agent controls"),"aria-modal":"false",children:[e.jsx("div",{className:"agent-controls",children:e.jsxs("div",{className:"agent-controls-filters",children:[e.jsxs("div",{className:"agent-state-filter",children:[e.jsx(an,{size:14}),e.jsxs("select",{className:"agent-state-filter-select",value:N,onChange:t=>A(t.target.value),"aria-label":a("agents.filterByState","Filter agents by state"),children:[e.jsx("option",{value:"all",children:a("agents.stateAll","All States")}),e.jsx("option",{value:"idle",children:a("agents.stateIdle","Idle")}),e.jsx("option",{value:"active",children:a("agents.stateActive","Active")}),e.jsx("option",{value:"running",children:a("agents.stateRunning","Running")}),e.jsx("option",{value:"paused",children:a("agents.statePaused","Paused")}),e.jsx("option",{value:"error",children:a("agents.stateError","Error")})]})]}),e.jsxs("label",{className:"checkbox-label agent-system-filter",children:[e.jsx("input",{type:"checkbox",checked:v,onChange:t=>h(t.target.checked),"aria-label":a("agents.showSystemAgents","Show system agents")}),a("agents.showSystemAgents","Show system agents")]})]})}),S&&e.jsxs("div",{className:"agent-controls-mobile-actions",children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{R(!0),le(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(ta,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{vt(),le(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(_a,{size:16}),a("agents.newAgent","New Agent")]})]}),e.jsxs("div",{className:"agent-controls-bulk-actions",role:"menu","aria-label":a("agents.bulkAgentActions","Bulk agent actions"),children:[e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:Ns,onClick:()=>{le(!1),ba("paused")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Et,{}),e.jsx("span",{children:a("agents.pauseAllAgents","Pause All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:be?a("agents.loadingEligibility","Loading eligibility…"):We===0?a("agents.noAgentsToPauseHint","No active or running project agents to pause"):a("agents.pauseCountHint",{count:We,defaultValue_one:"Pause {{count}} active/running agent",defaultValue_other:"Pause {{count}} active/running agents"})})]}),e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:ks,onClick:()=>{le(!1),xa(!0)},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Nt,{}),e.jsx("span",{children:a("agents.enableAllHeartbeats","Enable all heartbeats")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:a("agents.enableHeartbeatsCountHint","Enable {{count}} disabled project heartbeats",{count:k})})]}),e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:Cs,onClick:()=>{le(!1),xa(!1)},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Et,{}),e.jsx("span",{children:a("agents.disableAllHeartbeats","Disable all heartbeats")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:a("agents.disableHeartbeatsCountHint","Disable {{count}} enabled project heartbeats",{count:K})})]}),e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:ys,onClick:()=>{le(!1),ba("active")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Nt,{}),e.jsx("span",{children:a("agents.resumeAllAgents","Resume All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:be?a("agents.loadingEligibility","Loading eligibility…"):ze===0?a("agents.noAgentsToResumeHint","No paused project agents to resume"):a("agents.resumeCountHint",{count:ze,defaultValue_one:"Resume {{count}} paused agent",defaultValue_other:"Resume {{count}} paused agents"})})]})]}),e.jsx("div",{className:"agent-global-controls agent-controls-actions",children:e.jsxs("div",{className:"heartbeat-multiplier-group",children:[e.jsxs("div",{className:"heartbeat-multiplier-controls",children:[e.jsx("label",{htmlFor:"globalHeartbeatMultiplier",className:"heartbeat-multiplier-label",children:a("agents.heartbeatSpeed","Heartbeat Speed")}),e.jsx("input",{id:"globalHeartbeatMultiplier",className:"heartbeat-multiplier-slider touch-target",type:"range",min:.1,max:10,step:.1,value:bt,onChange:t=>{const r=Number(t.target.value);pa(Number.isFinite(r)&&r>0?r:1)},disabled:ga}),e.jsxs("span",{className:"heartbeat-multiplier-value",children:["×",bt.toFixed(1)]}),e.jsx("select",{className:"heartbeat-multiplier-preset",value:String(Yt.reduce((t,r)=>Math.abs(r-bt)<Math.abs(t-bt)?r:t,Yt[0])),onChange:t=>{const r=Number(t.target.value);pa(Number.isFinite(r)&&r>0?r:1)},disabled:ga,"aria-label":a("agents.heartbeatSpeedPreset","Heartbeat speed preset"),children:Yt.map(t=>e.jsxs("option",{value:String(t),children:["×",t]},t))})]}),e.jsx("small",{className:"text-secondary",children:a("agents.heartbeatSpeedHint","Scales all agent heartbeat intervals. ×0.5 = twice as fast, ×2.0 = twice as slow. Default: ×1.0")})]})}),e.jsx(Sn,{agents:xt})]})]})]})}),e.jsx(Ln,{isOpen:se,onClose:()=>{oe(!1),me(null)},onCreated:()=>{oe(!1),me(null),H()},projectId:i,prefillDraft:ue,agentOnboardingEnabled:b,existingAgents:_,onPrefillDraft:me}),e.jsx(Dn,{isOpen:B,onClose:()=>R(!1),onImported:()=>void H(),projectId:i}),e.jsx(Mn,{stats:D,activeAgents:ls,projectId:i,isOpen:pe,onToggle:()=>ee(t=>!t),onSelectAgent:ms,onOpenTaskLogs:y}),W==="org"?e.jsx("div",{className:"agents-org-full-view",children:e.jsx("div",{className:"agents-view-content agents-view-content--org-full",children:U?e.jsxs("div",{className:"agents-org-detail-view","data-testid":"agents-org-detail-view",children:[e.jsx("button",{type:"button",className:"btn btn-sm agents-org-detail-back",onClick:qe,"aria-label":a("agents.backToOrgChart","Back to org chart"),children:a("agents.backToOrgChart","Back to org chart")}),e.jsx(s.Suspense,{fallback:null,children:e.jsx(Va,{inline:!0,showInlineBackButton:!1,agentId:U,projectId:i,onClose:qe,addToast:n,onChildClick:ja,initialTab:Re,initialRunId:ne,preferActiveRun:J},U)})]}):Sa?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(mt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):e.jsxs("div",{className:"agent-org-chart-shell","data-testid":"agent-org-chart-shell",children:[S?e.jsxs("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:[wa(),ka()]}):e.jsxs("div",{className:"agent-org-chart-toolbar",children:[wa(),e.jsx("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:ka()})]}),e.jsx("div",{ref:Ae,className:"agent-org-chart-viewport","data-testid":"agent-org-chart-viewport",tabIndex:0,role:"region","aria-label":a("agents.orgChartCanvas","Org chart canvas"),onWheel:bs,onPointerDown:xs,onPointerMove:fs,onPointerUp:Ca,onPointerCancel:Ca,onKeyDown:vs,"data-panning":Ge?"true":"false",children:e.jsxs("div",{ref:at,className:`agent-org-chart-canvas agent-org-chart-canvas--zoom-${Math.round((P.scale??1)*100)}`,"data-panning":Ge?"true":"false",style:{transform:`translate(${P.x}px, ${P.y}px) scale(${P.scale})`},children:[e.jsx("div",{className:`agent-org-chart${Tt==="vertical"?" agent-org-chart--vertical":""}`,"data-testid":"agent-org-chart","data-layout-mode":Tt,children:De?e.jsxs("div",{className:"agent-org-chart__loading",role:"status","aria-live":"polite",children:[e.jsx(mt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingOrgChart","Loading org chart...")})]}):Ze.length===0?e.jsx(Kt,{onCtaClick:vt}):(Oe.current=[],Ze.map(t=>e.jsx(Qa,{node:t,onSelect:us,onToggleHeartbeat:r=>void Dt(r,!Qe(r)),isHeartbeatPending:r=>_e||Ve.has(r),getHealthStatus:$t,selectedAgentId:Ne,registerNodeElement:ps,linksRef:Oe},t.agent.id)))}),e.jsx(Vn,{links:Oe.current,nodeElements:st.current,canvasRef:at,viewportRef:Ae,layoutMode:Tt,transform:P})]})})]})})}):e.jsxs("div",{className:"agents-split-layout",style:S?void 0:{gridTemplateColumns:`${L}px var(--space-sm) minmax(0, 1fr)`},children:[e.jsx("div",{className:`agents-split-sidebar${Be?" agents-split-sidebar--hidden-mobile":""}`,children:e.jsx("div",{className:"agents-view-content",children:Sa?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(mt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):W==="board"?e.jsx("div",{className:"agent-board",children:xt.length===0?e.jsx(Kt,{onCtaClick:vt}):xt.map(t=>{const r=$t(t),u=la(t,r,a),g=sa(t.state),x=na("agent-board-card",t.state);return e.jsxs("div",{className:`agent-board-card ${x}${U===t.id?" agent-card--selected":""}`,children:[e.jsxs("div",{ref:V(`board:${t.id}`),className:"agent-board-clickable",onClick:()=>fe(t.id),role:"button",tabIndex:0,onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.key===" "&&f.preventDefault(),fe(t.id))},children:[e.jsxs("div",{className:"agent-board-header",children:[e.jsx("span",{className:"agent-board-icon",children:e.jsx(It,{agent:t,size:20})}),e.jsx("span",{className:"agent-board-badge badge text-secondary",children:Na(t.role)}),e.jsx("span",{className:`agent-board-badge badge ${g}`,children:t.state}),(t.pendingApprovalCount??0)>0?e.jsxs("span",{className:"agent-board-badge badge agent-approval-badge",title:a("agents.pendingApprovals","Pending approvals"),children:[e.jsx("span",{className:"status-dot status-dot--pending"}),t.pendingApprovalCount]}):null]}),e.jsx("div",{className:"agent-board-name",children:t.name}),e.jsx("div",{className:"agent-board-id",children:t.id}),t.taskId&&e.jsx(Jt,{taskId:t.taskId,isInViewport:I(`board:${t.id}`),projectId:i}),e.jsxs("div",{className:"agent-board-health",style:{color:r.color},title:u.title,children:[r.icon,u.label?` ${u.label}`:""]})]}),e.jsxs("div",{className:"agent-board-actions",children:[e.jsx(Ja,{agent:t,pending:_e||Ve.has(t.id),onToggle:f=>void Dt(f,!Qe(f))}),(t.state==="idle"||t.state==="paused"||t.state==="error")&&e.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>void fa(t.id,t.name),title:a("agents.delete","Delete"),children:e.jsx(Pa,{size:14})})]})]},t.id)})}):e.jsx("div",{className:"agent-list",children:xt.length===0?e.jsx(Kt,{onCtaClick:vt}):xt.map(t=>{const r=$t(t),u=la(t,r,a),g=sa(t.state),x=na("agent-card",t.state),f=qt(t.runtimeConfig?.heartbeatIntervalMs),M=sn(f),re=!Qe(t)?Zt:String(f),q=_e||ns===t.id||Ve.has(t.id),ve=On(t);return e.jsxs("div",{ref:V(`list:${t.id}`),className:`agent-card agent-card--clickable ${x}${U===t.id?" agent-card--selected":""}`,onClick:m=>{const z=m.target;if(z===m.currentTarget){fe(t.id);return}const ke=z.closest('button, select, input, [role="button"]');ke&&ke!==m.currentTarget||fe(t.id)},role:"button",tabIndex:0,onKeyDown:m=>{m.target===m.currentTarget&&(m.key==="Enter"||m.key===" ")&&(m.key===" "&&m.preventDefault(),fe(t.id))},"aria-label":a("agents.openDetails","Open details for {{name}}",{name:t.name}),children:[e.jsxs("div",{className:"agent-card-header",children:[e.jsxs("div",{className:"agent-info",children:[as===t.id?e.jsx("select",{ref:ss,className:"select agent-role-select",value:t.role,onChange:m=>void rs(t.id,m.target.value),onKeyDown:m=>is(m,t.id),onBlur:()=>lt(null),autoFocus:!0,children:o.map(m=>e.jsxs("option",{value:m.value,children:[m.icon," ",m.label]},m.value))}):e.jsx("span",{className:"agent-icon agent-icon--clickable",onClick:m=>{m.stopPropagation(),lt(t.id)},title:a("agents.clickToChangeRole","Click to change role"),role:"button",tabIndex:0,onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.stopPropagation(),lt(t.id))},children:e.jsx(It,{agent:t,size:20})}),e.jsxs("div",{className:"agent-meta",children:[e.jsx("span",{className:"agent-name",children:t.name}),e.jsx("span",{className:"agent-id text-secondary",children:t.id})]}),e.jsx(Ga,{size:20,className:"agent-card-chevron"})]}),e.jsxs("div",{className:"agent-badges",children:[e.jsx("span",{className:`badge ${g}`,children:t.state}),e.jsxs("span",{className:"badge",style:{color:r.color},title:u.title,children:[r.icon,u.label?` ${u.label}`:""]}),e.jsx("span",{className:"badge text-secondary",children:Na(t.role)}),(t.pendingApprovalCount??0)>0?e.jsxs("span",{className:"badge agent-approval-badge",title:a("agents.pendingApprovals","Pending approvals"),children:[e.jsx("span",{className:"status-dot status-dot--pending"}),t.pendingApprovalCount]}):null,(()=>{const m=js(t);if(m.length===0)return null;const z=m.slice(0,2),ke=m.length-2;return e.jsxs(e.Fragment,{children:[z.map(zt=>e.jsx("span",{className:"badge badge-skill",title:zt,children:xn(zt)},zt)),ke>0&&e.jsxs("span",{className:"badge badge-skill",children:["+",ke]})]})})()]})]}),e.jsxs("div",{className:"agent-card-body",children:[e.jsxs("div",{className:"agent-model-runtime",children:[e.jsxs("span",{className:"text-secondary",children:[ve.isRuntime?a("agents.runtime","Runtime"):a("agents.model","Model"),":"]}),e.jsx("span",{className:"badge agent-model-runtime__value",title:ve.label??a("agents.auto","Auto"),children:ve.label??a("agents.auto","Auto")})]}),t.state==="error"&&t.lastError?e.jsx(nn,{errorText:t.lastError,issueContext:{surface:"AgentsView list",agentId:t.id,agentName:t.name,agentState:t.state,taskId:t.taskId}}):null,t.taskId&&e.jsxs("div",{className:"agent-task",children:[e.jsx("span",{className:"text-secondary",children:a("agents.workingOn","Working on:")}),e.jsx("span",{className:"badge",children:e.jsx(Wa,{taskId:t.taskId,taskColumn:t.taskColumn})}),e.jsx(Jt,{taskId:t.taskId,isInViewport:I(`list:${t.id}`),projectId:i})]}),!Ie(t)&&e.jsxs("div",{className:"agent-heartbeat-control",children:[e.jsx("span",{className:"text-secondary",children:a("agents.heartbeat","Heartbeat:")}),ca===t.id?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"input agent-heartbeat-custom-input",value:da[t.id]??"",onChange:m=>Xe(z=>({...z,[t.id]:m.target.value})),onKeyDown:m=>{m.key==="Enter"?va(t):m.key==="Escape"&&(it(null),Xe(z=>{const ke={...z};return delete ke[t.id],ke}))},disabled:q,"aria-label":a("agents.customHeartbeatAria","Custom heartbeat interval in minutes for {{name}}",{name:t.name})}),e.jsx("span",{className:"text-secondary",children:a("agents.minutesUnit","min")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>void va(t),disabled:q,title:a("agents.saveCustomInterval","Save custom interval"),children:a("agents.save","Save")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>{it(null),Xe(m=>{const z={...m};return delete z[t.id],z})},disabled:q,title:a("agents.cancelCustomInterval","Cancel custom interval"),children:a("agents.cancel","Cancel")})]}):e.jsx(e.Fragment,{children:e.jsxs("select",{className:"select agent-heartbeat-select",value:re,onChange:m=>{const z=m.target.value;z===Zt?cs(t):z==="__custom__"?ds(t):os(t,Number(z))},disabled:q,"aria-label":a("agents.setHeartbeatAria","Set heartbeat interval for {{name}}",{name:t.name}),children:[e.jsx("option",{value:Zt,children:a("agents.heartbeatDisabledOption","Disabled")}),M.map(m=>e.jsx("option",{value:m.value,children:m.label},m.value)),ln.some(m=>m.value===f)&&e.jsx("option",{value:"__custom__",children:a("agents.customHeartbeatOption","Custom...")})]})}),q&&e.jsx("span",{className:"agent-heartbeat-saving text-secondary",children:a("agents.saving","Saving…")}),t.lastHeartbeatAt&&(()=>{const m=new Date(t.lastHeartbeatAt),z=new Date(m.getTime()+f),ke=t.state==="active"||t.state==="running";return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"agent-heartbeat-last text-secondary",title:m.toLocaleString(),children:a("agents.lastHeartbeatAt","Last: {{time}}",{time:m.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})}),ke&&e.jsx("span",{className:"agent-heartbeat-next text-secondary",title:z.toLocaleString(),children:a("agents.nextHeartbeatAt","Next: {{time}}",{time:z.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})})]})})()]})]}),e.jsxs("div",{className:"agent-card-actions",children:[e.jsxs("div",{className:"agent-card-actions-group agent-card-actions-group--primary",children:[t.state==="idle"&&e.jsxs("button",{className:"btn btn-sm",onClick:()=>void ft(t.id,"active"),disabled:Ye.has(t.id),title:a("agents.activate","Activate"),children:[e.jsx(Nt,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.start","Start")})]}),t.state==="active"&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm",onClick:()=>void hs(t.id,t.name),disabled:Ye.has(t.id),title:a("agents.runNow","Run Now"),"aria-label":a("agents.runNowAria","Run now for {{name}}",{name:t.name}),children:[e.jsx(ht,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.runNow","Run Now")})]}),e.jsxs("button",{className:"btn btn-sm",onClick:()=>void ft(t.id,"paused"),disabled:Ye.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Et,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.pause","Pause")})]})]}),t.state==="paused"&&e.jsxs("button",{className:"btn btn-sm",onClick:()=>void ft(t.id,"active"),disabled:Ye.has(t.id),title:a("agents.resume","Resume"),children:[e.jsx(Nt,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.resume","Resume")})]}),t.state==="running"&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm",onClick:()=>fe(t.id,{initialTab:"runs",initialRunId:null,preferActiveRun:!0}),title:a("agents.viewLiveRun","View live run details"),"aria-label":a("agents.viewLiveRunAria","View live run details for {{name}}",{name:t.name}),children:[e.jsx(ht,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.running","Running")})]}),e.jsxs("button",{className:"btn btn-sm",onClick:()=>void ft(t.id,"paused"),disabled:Ye.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Et,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.pause","Pause")})]})]}),t.state==="error"&&e.jsxs("button",{className:"btn btn-sm",onClick:()=>void ft(t.id,"active"),disabled:Ye.has(t.id),title:a("agents.retry","Retry"),children:[e.jsx(Nt,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.retry","Retry")})]})]}),e.jsxs("div",{className:"agent-card-actions-group agent-card-actions-group--secondary",children:[e.jsxs("button",{className:"btn btn-sm agent-card-details-btn",onClick:()=>fe(t.id),title:a("agents.viewDetailsFor","View details for {{name}}",{name:t.name}),"aria-label":a("agents.viewDetailsFor","View details for {{name}}",{name:t.name}),children:[e.jsx(rn,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.details","Details")})]}),(t.state==="idle"||t.state==="paused"||t.state==="error")&&e.jsxs("button",{className:"btn btn-sm btn-danger",onClick:()=>void fa(t.id,t.name),title:a("agents.delete","Delete"),children:[e.jsx(Pa,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.delete","Delete")})]})]})]})]},t.id)})})})}),!S&&e.jsx("div",{className:"agents-split-resize-handle","data-testid":"agents-sidebar-resize-handle",role:"separator","aria-orientation":"vertical","aria-valuemin":Xa,"aria-valuemax":Ya,"aria-valuenow":L,"aria-label":a("agents.resizeSidebar","Resize agents sidebar"),tabIndex:0,onPointerDown:es,onKeyDown:ts}),e.jsx("div",{className:`agents-split-detail${S&&!U?" agents-split-detail--hidden-mobile":""}`,children:U?e.jsx(s.Suspense,{fallback:null,children:e.jsx(Va,{inline:!0,showInlineBackButton:S,agentId:U,projectId:i,onClose:qe,addToast:n,onChildClick:ja,initialTab:Re,initialRunId:ne,preferActiveRun:J,onMutationSuccess:gs},U)}):e.jsxs("div",{className:"agents-detail-empty-state",children:[e.jsx(ea,{size:48}),e.jsx("h3",{children:a("agents.selectAnAgent","Select an agent")}),e.jsx("p",{children:a("agents.selectAgentHint","Choose an agent from the sidebar to view details")})]})})]})]})}export{tl as AgentsView};