@runfusion/fusion 0.75.1-beta.2 → 0.76.0-beta.0

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 (158) hide show
  1. package/dist/bin.js +2883 -1203
  2. package/dist/child-process-worker.js +2345 -1000
  3. package/dist/client/.vite/manifest.json +260 -260
  4. package/dist/client/assets/AgentDetailView-Czb9wfC3.css +1 -0
  5. package/dist/client/assets/AgentDetailView-nsriz_Mw.js +13 -0
  6. package/dist/client/assets/{AgentPermissionPolicyEditor-CC_rrbbG.js → AgentPermissionPolicyEditor-TKuT5ryJ.js} +1 -1
  7. package/dist/client/assets/AgentsView-BBLq03lO.js +24 -0
  8. package/dist/client/assets/{ChatView-mFKfoegS.js → ChatView-BEc5SVfU.js} +1 -1
  9. package/dist/client/assets/{CommandCenter-C2wvDq_N.js → CommandCenter-DBCxo_tI.js} +1 -1
  10. package/dist/client/assets/{DevServerView-0MWEJM7o.js → DevServerView-BaLUl9De.js} +1 -1
  11. package/dist/client/assets/{DirectoryPicker-BjMPhCdh.js → DirectoryPicker-CKj8CfUJ.js} +1 -1
  12. package/dist/client/assets/{DocumentsView-ckH3rjmd.js → DocumentsView-Cu8vlXJT.js} +1 -1
  13. package/dist/client/assets/{EvalsView-NyA644VF.js → EvalsView-CbdRWRjR.js} +1 -1
  14. package/dist/client/assets/{ExperimentalAgentOnboardingModal-D0ZfbBRN.js → ExperimentalAgentOnboardingModal-BVdW0xJ3.js} +1 -1
  15. package/dist/client/assets/{GoalsView-Ctt5P_yo.js → GoalsView-CCbeAvBm.js} +1 -1
  16. package/dist/client/assets/{InsightsView-NDp0bdNB.js → InsightsView-B46ZemSm.js} +1 -1
  17. package/dist/client/assets/{MemoryView-BKbA4Bm4.js → MemoryView-JM1fFU2D.js} +1 -1
  18. package/dist/client/assets/{PiExtensionsManager-V3AFWMHm.js → PiExtensionsManager-KHsw2af9.js} +1 -1
  19. package/dist/client/assets/{PluginManager-D88G_TZh.js → PluginManager-BeKLun0C.js} +1 -1
  20. package/dist/client/assets/{PullRequestView-DQQmFFYC.js → PullRequestView-CwQW2pe4.js} +1 -1
  21. package/dist/client/assets/{ReportModal-Clh1S8RF.js → ReportModal-BC9DhvX4.js} +1 -1
  22. package/dist/client/assets/{ResearchView-kxvq4zp5.js → ResearchView-CuB7IbEB.js} +1 -1
  23. package/dist/client/assets/{SecretsView-Dm0Vk8SA.js → SecretsView-DD8uA6G7.js} +1 -1
  24. package/dist/client/assets/{SessionTerminal-DJO4JTEX.js → SessionTerminal-B0S1e8qf.js} +1 -1
  25. package/dist/client/assets/SettingsModal-BHNEJWD4.js +21 -0
  26. package/dist/client/assets/{SettingsModal-BN5mL_ym.js → SettingsModal-BxrdR4-f.js} +1 -1
  27. package/dist/client/assets/{SettingsTextareaRow-CvKszqO-.js → SettingsTextareaRow-CpJOy-rv.js} +1 -1
  28. package/dist/client/assets/{SetupWizardModal-D5hVZh1G.js → SetupWizardModal-DviAPDlf.js} +2 -2
  29. package/dist/client/assets/{SkillsView-DQVz21w2.js → SkillsView-DeoEN_K0.js} +1 -1
  30. package/dist/client/assets/{WorkflowNodeEditor-CpKIi6Tb.js → WorkflowNodeEditor-CPk8plo1.js} +3 -3
  31. package/dist/client/assets/{agent-import-generation-DGUNF3nd.js → agent-import-generation-D74gC46R.js} +1 -1
  32. package/dist/client/assets/app-64JrFN7_.js +13 -0
  33. package/dist/client/assets/app-BxMYvSHk.js +13 -0
  34. package/dist/client/assets/app-CCgIvcFy.js +5 -0
  35. package/dist/client/assets/app-CVFYXkbM.js +13 -0
  36. package/dist/client/assets/app-Cl4NLAGd.js +13 -0
  37. package/dist/client/assets/app-_gHuSFBp.js +13 -0
  38. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CV83wubP.js → architectureDiagram-3BPJPVTR-DUNXxw_k.js} +1 -1
  39. package/dist/client/assets/{blockDiagram-GPEHLZMM-CNQsA3dD.js → blockDiagram-GPEHLZMM-CTxWMFSZ.js} +1 -1
  40. package/dist/client/assets/{c4Diagram-AAUBKEIU-CXe7ii5H.js → c4Diagram-AAUBKEIU-DI15zO_G.js} +1 -1
  41. package/dist/client/assets/channel-DDHw4Vcu.js +1 -0
  42. package/dist/client/assets/{chunk-2J33WTMH-BS6W9bWv.js → chunk-2J33WTMH-D1X3sNvd.js} +1 -1
  43. package/dist/client/assets/{chunk-4BX2VUAB-DbehRhdW.js → chunk-4BX2VUAB-DYz990rf.js} +1 -1
  44. package/dist/client/assets/{chunk-55IACEB6-DMI5SR42.js → chunk-55IACEB6-BQshFTjv.js} +1 -1
  45. package/dist/client/assets/{chunk-727SXJPM-D1d-GBVj.js → chunk-727SXJPM-DiVH9Rd6.js} +1 -1
  46. package/dist/client/assets/{chunk-AQP2D5EJ-BzO6K3Uf.js → chunk-AQP2D5EJ-Bx8LBEvE.js} +1 -1
  47. package/dist/client/assets/{chunk-FMBD7UC4-BVRLV3lK.js → chunk-FMBD7UC4-7rsNdXy-.js} +1 -1
  48. package/dist/client/assets/{chunk-ND2GUHAM-DdWByQfn.js → chunk-ND2GUHAM-COOZ3ff5.js} +1 -1
  49. package/dist/client/assets/{chunk-QZHKN3VN-1ia12cRV.js → chunk-QZHKN3VN-oL-CU1gN.js} +1 -1
  50. package/dist/client/assets/classDiagram-4FO5ZUOK-C5tnFtxH.js +1 -0
  51. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-C5tnFtxH.js +1 -0
  52. package/dist/client/assets/{cose-bilkent-S5V4N54A-BPDT41HR.js → cose-bilkent-S5V4N54A-CHXhlVh-.js} +1 -1
  53. package/dist/client/assets/{dagre-BM42HDAG-Cktn26EH.js → dagre-BM42HDAG-BJVXidIK.js} +1 -1
  54. package/dist/client/assets/{dashboard-view-zd8GxC49.js → dashboard-view-B8OjndkD.js} +1 -1
  55. package/dist/client/assets/{dashboard-view-8o0EUcRX.js → dashboard-view-BOqEOmsR.js} +1 -1
  56. package/dist/client/assets/{dashboard-view-CkCerlVJ.js → dashboard-view-CCg2wkwd.js} +1 -1
  57. package/dist/client/assets/{dashboard-view-D_HC4lnr.js → dashboard-view-DOWuByTe.js} +1 -1
  58. package/dist/client/assets/{diagram-2AECGRRQ-But4Lvf-.js → diagram-2AECGRRQ-CBS8IBP_.js} +1 -1
  59. package/dist/client/assets/{diagram-5GNKFQAL-2bpQAGFc.js → diagram-5GNKFQAL-Dmyxol5P.js} +1 -1
  60. package/dist/client/assets/{diagram-KO2AKTUF-Ckn9Qd1u.js → diagram-KO2AKTUF-DVF_5fDu.js} +1 -1
  61. package/dist/client/assets/{diagram-LMA3HP47-Bjn8h84N.js → diagram-LMA3HP47-DqbOTb-t.js} +1 -1
  62. package/dist/client/assets/{diagram-OG6HWLK6-BI6541hx.js → diagram-OG6HWLK6-BIhwB3ji.js} +1 -1
  63. package/dist/client/assets/{erDiagram-TEJ5UH35-BqMiwHiM.js → erDiagram-TEJ5UH35-BcYtj6RH.js} +1 -1
  64. package/dist/client/assets/{flowDiagram-I6XJVG4X-Q_SAB10M.js → flowDiagram-I6XJVG4X-CBYrhc7v.js} +1 -1
  65. package/dist/client/assets/{folder-open-CHiAJbTN.js → folder-open-DBW3UhL6.js} +1 -1
  66. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CqWFSfPF.js → ganttDiagram-6RSMTGT7-BtFaOg92.js} +1 -1
  67. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-B1o4uEjO.js → gitGraphDiagram-PVQCEYII-BE5E5ctQ.js} +1 -1
  68. package/dist/client/assets/{index-kwRywd9M.js → index-D6J9uyUx.js} +306 -306
  69. package/dist/client/assets/index-DDdZ20Cz.css +1 -0
  70. package/dist/client/assets/{infoDiagram-5YYISTIA-BzaMa0c2.js → infoDiagram-5YYISTIA-BBpwj0Ir.js} +1 -1
  71. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-I38yge00.js → ishikawaDiagram-YF4QCWOH-CwjmjYav.js} +1 -1
  72. package/dist/client/assets/{journeyDiagram-JHISSGLW-WVQSgx4P.js → journeyDiagram-JHISSGLW-ChnMZl1o.js} +1 -1
  73. package/dist/client/assets/{kanban-definition-UN3LZRKU-BWtPQ3AH.js → kanban-definition-UN3LZRKU-BA_bNZa3.js} +1 -1
  74. package/dist/client/assets/{mermaid.core-D1hnBtbi.js → mermaid.core-CNMqiN_t.js} +4 -4
  75. package/dist/client/assets/{mindmap-definition-RKZ34NQL-DqiSLkW7.js → mindmap-definition-RKZ34NQL-D-8_lEGp.js} +1 -1
  76. package/dist/client/assets/{pieDiagram-4H26LBE5-CcgwbdIN.js → pieDiagram-4H26LBE5-Cz_dYW8h.js} +1 -1
  77. package/dist/client/assets/{puzzle-BhXUaTQl.js → puzzle-Bbsv6mZh.js} +1 -1
  78. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-MsqQQfDN.js → quadrantDiagram-W4KKPZXB-BtXzvuUT.js} +1 -1
  79. package/dist/client/assets/{requirementDiagram-4Y6WPE33-CILGjMMA.js → requirementDiagram-4Y6WPE33-CK29bQbQ.js} +1 -1
  80. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-c14fWbtR.js → sankeyDiagram-5OEKKPKP-DGxLW8W6.js} +1 -1
  81. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BD5bxMom.js → sequenceDiagram-3UESZ5HK-CPOz7wfR.js} +1 -1
  82. package/dist/client/assets/{shield-alert-C9W2WywS.js → shield-alert-BnpS5qUu.js} +1 -1
  83. package/dist/client/assets/{standing-instructions-template-CJdbDSyg.js → standing-instructions-template-jeWwq3Zh.js} +1 -1
  84. package/dist/client/assets/{stateDiagram-AJRCARHV-CZ5YqeOn.js → stateDiagram-AJRCARHV-CxpQ3AE6.js} +1 -1
  85. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-mdMN-PNX.js → stateDiagram-v2-BHNVJYJU-BSImQHUw.js} +1 -1
  86. package/dist/client/assets/{timeline-definition-PNZ67QCA-DHKay9uj.js → timeline-definition-PNZ67QCA-jt74--XQ.js} +1 -1
  87. package/dist/client/assets/{upload-DxEwowRU.js → upload-D2j8N8vC.js} +1 -1
  88. package/dist/client/assets/{users-mNFgW_Zd.js → users-BtzATmoI.js} +1 -1
  89. package/dist/client/assets/{vennDiagram-CIIHVFJN-X29K9hWM.js → vennDiagram-CIIHVFJN-3vOGHb8-.js} +1 -1
  90. package/dist/client/assets/{wardley-L42UT6IY-yEoTrfmN.js → wardley-L42UT6IY-DNuWuyr8.js} +1 -1
  91. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-ny4k3kG0.js → wardleyDiagram-YWT4CUSO-D-kFe8Uz.js} +1 -1
  92. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DC8ODtRJ.js → xychartDiagram-2RQKCTM6-DvDQ30sY.js} +1 -1
  93. package/dist/client/index.html +2 -2
  94. package/dist/client/version.json +1 -1
  95. package/dist/droid-cli/package.json +1 -1
  96. package/dist/extension.js +2702 -1117
  97. package/dist/migrations/0045_fn_8764_multi_role_workflow_agents.sql +20 -0
  98. package/dist/migrations/0046_fn_8764_workflow_principal_fence.sql +49 -0
  99. package/dist/migrations/0047_fn_8829_task_recommendations.sql +3 -0
  100. package/dist/pi-claude-cli/package.json +1 -1
  101. package/dist/plugin-sdk/index.d.ts +43 -0
  102. package/dist/plugin-sdk/index.js +357 -25
  103. package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +357 -25
  104. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  105. package/dist/plugins/fusion-plugin-claude-runtime/bundled.js +357 -25
  106. package/dist/plugins/fusion-plugin-claude-runtime/package.json +1 -1
  107. package/dist/plugins/fusion-plugin-cli-printing-press/bundled.js +357 -25
  108. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  109. package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +357 -25
  110. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  111. package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +357 -25
  112. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  113. package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +357 -25
  114. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  115. package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +357 -25
  116. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  117. package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +357 -25
  118. package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
  119. package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +357 -25
  120. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  121. package/dist/plugins/fusion-plugin-linear-import/bundled.js +357 -25
  122. package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
  123. package/dist/plugins/fusion-plugin-omp-runtime/bundled.js +357 -25
  124. package/dist/plugins/fusion-plugin-omp-runtime/package.json +1 -1
  125. package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +357 -25
  126. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  127. package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +357 -25
  128. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  129. package/dist/plugins/fusion-plugin-quality/bundled.js +357 -25
  130. package/dist/plugins/fusion-plugin-quality/package.json +1 -1
  131. package/dist/plugins/fusion-plugin-reports/bundled.js +357 -25
  132. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  133. package/dist/plugins/fusion-plugin-roadmap/bundled.js +357 -25
  134. package/dist/plugins/fusion-plugin-roadmap/manifest.json +11 -1
  135. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  136. package/dist/plugins/fusion-plugin-todos/bundled.js +357 -25
  137. package/dist/plugins/fusion-plugin-todos/manifest.json +11 -1
  138. package/dist/plugins/fusion-plugin-todos/package.json +1 -1
  139. package/dist/plugins/fusion-plugin-whatsapp-chat/bundled.js +357 -25
  140. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  141. package/package.json +1 -1
  142. package/skill/fusion/SKILL.md +1 -1
  143. package/skill/fusion/references/extension-tools.md +16 -2
  144. package/skill/fusion/references/fusion-capabilities.md +1 -0
  145. package/dist/client/assets/AgentDetailView-C8-9_SOC.css +0 -1
  146. package/dist/client/assets/AgentDetailView-ltOG8f0-.js +0 -13
  147. package/dist/client/assets/AgentsView-DWUdi27N.js +0 -24
  148. package/dist/client/assets/SettingsModal-CTf5voEW.js +0 -21
  149. package/dist/client/assets/app-B4gkbXNS.js +0 -13
  150. package/dist/client/assets/app-BXLZYY_A.js +0 -13
  151. package/dist/client/assets/app-CNFmVt1q.js +0 -13
  152. package/dist/client/assets/app-DCERHstn.js +0 -13
  153. package/dist/client/assets/app-iKAA6v9i.js +0 -5
  154. package/dist/client/assets/app-p_Hq0vGS.js +0 -13
  155. package/dist/client/assets/channel-DoX862zl.js +0 -1
  156. package/dist/client/assets/classDiagram-4FO5ZUOK-mb2IeAGN.js +0 -1
  157. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-mb2IeAGN.js +0 -1
  158. package/dist/client/assets/index-Bdw5eNKV.css +0 -1
@@ -0,0 +1,24 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AgentDetailView-nsriz_Mw.js","assets/vendor-react-SZ_qB27O.js","assets/index-D6J9uyUx.js","assets/vendor-i18n-Duky4gdQ.js","assets/vendor-codemirror-CcrtqoCy.js","assets/vendor-reactflow-BlIeoTu4.js","assets/vendor-reactflow-BnuhLJ6X.css","assets/vendor-xterm-BNq00GSj.js","assets/vendor-xterm-LZoznX6r.css","assets/index-DDdZ20Cz.css","assets/AgentPermissionPolicyEditor-TKuT5ryJ.js","assets/AgentPermissionPolicyEditor-CXib-igK.css","assets/standing-instructions-template-jeWwq3Zh.js","assets/standing-instructions-template-Ddi_4TIk.css","assets/ExperimentalAgentOnboardingModal-BVdW0xJ3.js","assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css","assets/AgentDetailView-Czb9wfC3.css"])))=>i.map(i=>d[i]);
2
+ import{c as ia,bC as gt,df as Cs,an as It,Z as Ss,dg as As,be as Rs,bU as Es,dh as Ts,ch as Jt,di as _s,c8 as Ka,dj as Qt,aH as ea,az as Ps,C as Ms,g as Xa,c9 as ta,cW as Ya,F as Za,ct as Is,bA as Ls,bZ as Lt,dk as Hs,ad as Ds,aj as Fs,B as zs,am as Ht,dl as Ta,cf as $s,aJ as _a,bE as Os,ak as Vs,al as Bs,dm as Us,aI as Ws,L as Ot,a$ as Nt,R as dt,X as Pa,dn as Gs,dp as Ks,dq as wt,ab as Xs,dr as Vt,aX as Ys,aY as Zs,bS as le,b_ as De,ds as qs,cs as ut,c$ as Js,dt as Qs,du as Ma,V as en,dv as tn,P as Ia,dw as an,c1 as Pt,c0 as yt,x as La,dx as sn,cE as nn,dy as ln,dz as rn,cb as Ha,cw as it,cv as kt,a3 as on,ca as cn,cd as dn,dA as un,ci as Da,cc as gn}from"./index-D6J9uyUx.js";import{r as s,j as e,b as mn}from"./vendor-react-SZ_qB27O.js";import{u as Ee}from"./vendor-i18n-Duky4gdQ.js";import{c as Bt,s as hn,g as pn,f as Fa}from"./agent-import-generation-D74gC46R.js";import{w as za,a as bn,f as xn}from"./standing-instructions-template-jeWwq3Zh.js";import{ExperimentalAgentOnboardingModal as fn}from"./ExperimentalAgentOnboardingModal-BVdW0xJ3.js";import{U as aa}from"./upload-D2j8N8vC.js";import{F as vn}from"./folder-open-DBW3UhL6.js";import{O as Ut,i as $a,r as jn}from"./agentsOrgChartLayout-BMvyuaLA.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.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"}]],Oa=ia("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=ia("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 wn=[["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"}]],Cn=ia("zoom-out",wn);function Va(n){return typeof n=="number"&&Number.isFinite(n)?n:0}function ot(n){return n.toLocaleString()}function Sn({agents:n}){const{t:i}=Ee("app"),{rows:w,totalInputTokens:p,totalOutputTokens:a,totalTokens:c}=s.useMemo(()=>{const m=n.map(l=>{const f=Va(l.totalInputTokens),N=Va(l.totalOutputTokens);return{id:l.id,name:l.name,inputTokens:f,outputTokens:N,totalTokens:f+N}}).sort((l,f)=>f.totalTokens-l.totalTokens||l.name.localeCompare(f.name)||l.id.localeCompare(f.id));return{rows:m,totalInputTokens:m.reduce((l,f)=>l+f.inputTokens,0),totalOutputTokens:m.reduce((l,f)=>l+f.outputTokens,0),totalTokens:m.reduce((l,f)=>l+f.totalTokens,0)}},[n]),v=c>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:ot(p)})]}),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:ot(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:ot(c)})]})]}),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:w.map(m=>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:m.name}),e.jsx("span",{className:"agent-token-stats-panel__agent-id",children:m.id})]}),e.jsx("td",{children:ot(m.inputTokens)}),e.jsx("td",{children:ot(m.outputTokens)}),e.jsx("td",{className:"agent-token-stats-panel__total-cell",children:ot(m.totalTokens)})]},m.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:gt,label:"Active Agents",valueKey:"activeCount",className:"agent-metric-card--active"},{icon:Cs,label:"Assigned Tasks",valueKey:"assignedTaskCount",className:"agent-metric-card--tasks"},{icon:It,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(w=>{const p=w.valueKey==="successRate"?`${Math.round(n.successRate*100)}%`:n[w.valueKey];return e.jsxs("div",{className:`agent-metric-card ${w.className}`,children:[e.jsx(w.icon,{size:18}),e.jsxs("div",{className:"agent-metric-info",children:[e.jsx("span",{className:"agent-metric-value",children:p}),e.jsx("span",{className:"agent-metric-label",children:w.label})]})]},w.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 En(n,i){const[w,p]=s.useState([]),[a,c]=s.useState(!1),v=s.useRef(null),m=s.useRef(!1),l=s.useRef([]),f=s.useRef(0),N=s.useRef(n),P=s.useRef(i);return(N.current!==n||P.current!==i)&&(N.current=n,P.current=i,f.current++,v.current&&(v.current(),v.current=null),m.current=!1,l.current=[],p([]),c(!1)),s.useEffect(()=>{if(!n){p([]),c(!1);return}const C=f.current;let B=`/api/tasks/${encodeURIComponent(n)}/logs/stream`;i&&(B+=`?projectId=${encodeURIComponent(i)}`);const R=()=>f.current!==C,T=As({run:async()=>{if(m.current||R())return;m.current=!0,l.current=[];let $=!1;try{const y=await Es(n,i,{limit:Ct});if(R())return;const S=l.current;l.current=[],$=!0,p(Wt(Ts(y.entries,S)))}finally{if(m.current=!1,!$&&!R()){const y=l.current;l.current=[],y.length>0&&p(S=>[...Wt(y),...S].slice(0,Ct))}}}}),H=Rs(B,{onReconnect:()=>T.trigger(),events:{"agent:log":$=>{if(!R())try{const y=JSON.parse($.data),S={type:y.type??"text",text:y.text??y.content??"",timestamp:y.timestamp??"",taskId:n,...y.content!==void 0?{content:y.content}:{}};if(m.current){l.current.push(S);return}p(M=>{const I=[...Wt([S]),...M];return I.length>Ct?I.slice(0,Ct):I})}catch{}}},onOpen:()=>{f.current===C&&c(!0)},onError:()=>{f.current===C&&c(!1)}});return v.current=H,()=>{T.dispose(),H(),v.current=null,f.current===C&&c(!1)}},[n,i]),{entries:w,isConnected:a}}const Tn=5e3;function _n({agent:n,projectId:i,onSelect:w,onOpenTaskLogs:p}){const{t:a}=Ee("app"),{entries:c,isConnected:v}=En(n.taskId,i),[m,l]=s.useState(null),f=s.useRef(null),[N,P]=s.useState(!1);s.useEffect(()=>{if(typeof IntersectionObserver>"u"){P(!0);return}const S=f.current;if(!S)return;const M=new IntersectionObserver(([I])=>{P(I?.isIntersecting??!0)},{rootMargin:"200px"});return M.observe(S),()=>M.disconnect()},[n.id]),s.useEffect(()=>{if(!n.taskId){l(null);return}let S=!1,M;const I=async()=>{try{const Z=await Ps(n.taskId,i);S||l(Z)}catch{}finally{S||(M=setTimeout(I,Tn))}};return I(),()=>{S=!0,M&&clearTimeout(M)}},[n.taskId,i]);const _=n.lastHeartbeatAt?Math.floor((Date.now()-new Date(n.lastHeartbeatAt).getTime())/1e3):0,C=(()=>{if(!n.lastHeartbeatAt)return null;const S=Jt(n.runtimeConfig?.heartbeatIntervalMs),M=new Date(n.lastHeartbeatAt).getTime()+S,I=Math.round((M-Date.now())/1e3);return Number.isFinite(I)?I<=0?a("agents.heartbeatOverdue","Heartbeat overdue {{elapsed}}",{elapsed:Gt(-I)}):a("agents.nextHeartbeat","Next heartbeat in {{elapsed}}",{elapsed:Gt(I)}):null})(),{stepNumber:B,totalSteps:R}=_s(m),W=m?.steps?.[B],T=m?.modelId,H=()=>{w&&w(n.id)},$=S=>{S.stopPropagation(),n.taskId&&p&&p(n.taskId)},y=S=>{(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),H())};return e.jsxs("div",{ref:f,className:"live-agent-card",onClick:H,onKeyDown:y,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(Ka,{taskId:n.taskId,taskColumn:n.taskColumn})}),n.taskId&&e.jsx(Qt,{taskId:n.taskId,isInViewport:N,projectId:i})]}),e.jsx("div",{className:"live-agent-card-transcript",children:c.length===0?e.jsx("div",{className:"live-agent-card-empty",children:n.taskId?W?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"live-agent-card-status",children:a("agents.step","Step {{number}}{{total}}: {{name}}",{number:B,total:R?`/${R}`:"",name:W.name})}),T&&e.jsx("div",{className:"live-agent-card-status-sub",children:T}),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")})}):c.slice(0,20).map((S,M)=>e.jsx("div",{className:"live-agent-card-line",children:S.text},M))}),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(_)}),C&&e.jsx("span",{className:"live-agent-card-next-heartbeat",title:C,children:C})]}),e.jsxs("div",{className:"live-agent-card-footer-actions",children:[n.taskId&&p&&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(ea,{size:12}),e.jsx("span",{children:a("agents.liveLogs","Live logs")})]}),v&&e.jsx(gt,{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:w,onOpenTaskLogs:p,className:a=""}){const{t:c}=Ee("app"),v=Array.from(new Map(n.map(m=>[m.id,m])).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(gt,{size:16}),e.jsx("span",{children:c("agents.activeAgents","Active Agents ({{count}})",{count:v.length})})]}),e.jsx("div",{className:"active-agents-grid",children:v.map(m=>e.jsx(_n,{agent:m,projectId:i,onSelect:w,onOpenTaskLogs:p},m.id))})]})}function Mn({stats:n,activeAgents:i,projectId:w,isOpen:p,onToggle:a,onSelectAgent:c,onOpenTaskLogs:v}){const{t:m}=Ee("app"),l=i.filter(N=>N.state==="active").length,f=i.filter(N=>N.state==="running").length;return e.jsxs("section",{className:"agents-overview-bar","aria-label":m("agents.overviewLabel","Agents overview"),children:[e.jsxs("button",{type:"button",className:"agents-overview-bar__toggle","aria-expanded":p,onClick:a,children:[e.jsxs("span",{className:"agents-overview-bar__title-wrap",children:[p?e.jsx(Ms,{size:16,"aria-hidden":"true"}):e.jsx(Xa,{size:16,"aria-hidden":"true"}),e.jsx("span",{className:"agents-overview-bar__title",children:m("agents.overview","Overview")})]}),e.jsx("span",{className:"agents-overview-bar__meta text-secondary",children:m("agents.statusCount","{{activeCount}} active · {{runningCount}} running",{activeCount:l,runningCount:f})})]}),p?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:w,onAgentSelect:c,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:w="Create Agent",onCtaClick:p}){return e.jsxs("div",{className:"agent-empty",children:[e.jsx(ta,{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}),p?e.jsx("button",{type:"button",className:"btn btn-task-create btn-sm",onClick:p,children:w}):null]})}const Ba=3,Xt=1e3;function In({isOpen:n,onClose:i,onGenerated:w,projectId:p}){const{t:a}=Ee("app");Ya(n);const[c,v]=s.useState(""),[m,l]=s.useState({type:"input"}),[f,N]=s.useState(null),[P,_]=s.useState(!1),C=s.useRef(null),B=s.useRef(null);s.useEffect(()=>{n&&m.type==="input"&&B.current?.focus()},[n,m.type]),s.useEffect(()=>{if(!n&&C.current){const y=C.current;C.current=null,Bt(y,p).catch(()=>{})}},[n,p]),s.useEffect(()=>{if(!n)return;const y=S=>{S.key==="Escape"&&R()};return document.addEventListener("keydown",y),()=>document.removeEventListener("keydown",y)},[n]);const R=s.useCallback(()=>{if(C.current){const y=C.current;C.current=null,Bt(y,p).catch(()=>{})}v(""),l({type:"input"}),N(null),_(!1),i()},[i,p]),W=s.useCallback(async()=>{if(!(!c.trim()||c.trim().length<Ba)){N(null),l({type:"loading"});try{const{sessionId:y}=await hn(c.trim(),p);C.current=y;const{spec:S}=await pn(y,p);l({type:"preview",spec:S,sessionId:y})}catch(y){const S=y instanceof Error?y.message:"Failed to generate agent specification";S.includes("429")||S.toLowerCase().includes("rate limit")?N(a("agents.generation.rateLimited","Too many requests. Please wait a moment and try again.")):N(S),l({type:"input"}),C.current=null}}},[c,p]),T=s.useCallback(async()=>{if(C.current){const y=C.current;C.current=null;try{await Bt(y,p)}catch{}}await W()},[W,p]),H=s.useCallback(()=>{m.type==="preview"&&(C.current=null,w(m.spec),v(""),l({type:"input"}),N(null),_(!1),i())},[m,w,i]);if(!n)return null;const $=c.trim().length>=Ba&&c.trim().length<=Xt;return e.jsx(Za,{windowKey:"agent-generation",modal:!0,title:a("agents.generation.title","Generate Agent"),ariaLabel:a("agents.generateWithAiLabel","Generate agent with AI"),onClose:R,hideHeader:!0,dragHandleSelector:".agent-generation-modal .agent-dialog-header",className:"floating-window--agent-generation",defaultSize:{width:640,height:560},minSize:{width:400,height:300},persistGeometryKey:"floating-window:agent-generation",suspendGeometryPersistenceOnMobile:!0,suspendGeometryPersistenceOnShortViewport:!0,closeOnOutsidePointerDown:!0,children:e.jsxs("div",{className:"agent-dialog agent-generation-modal",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:R,"aria-label":a("actions.close","Close"),children:"×"})]}),e.jsxs("div",{className:"agent-dialog-body",children:[f&&e.jsx("div",{className:"agent-dialog-error-banner",children:f}),m.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:B,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:c,onChange:y=>v(y.target.value),onKeyDown:y=>{y.key==="Enter"&&!y.shiftKey&&$&&(y.preventDefault(),W())},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:[c.length,"/",Xt]})]})]})]}),m.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...")})]}),m.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:[m.spec.icon," ",m.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:m.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:m.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:m.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:m.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:()=>_(!P),children:P?a("agents.generation.collapse","Collapse"):a("agents.generation.expand","Expand")})]}),e.jsxs("div",{className:`agent-generation-prompt-box${P?"":" agent-generation-prompt-box--collapsed"}`,children:[m.spec.systemPrompt,!P&&m.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:R,children:a("actions.cancel","Cancel")}),m.type==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void W(),disabled:!$,children:a("agents.generation.generate","Generate")}),m.type==="preview"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"btn",onClick:()=>void T(),children:a("agents.generation.regenerate","Regenerate")}),e.jsx("button",{className:"btn btn-task-create",onClick:H,children:a("agents.generation.useThis","Use This")})]})]})]})})}const Yt=[{value:"triage"},{value:"executor"},{value:"reviewer"},{value:"merger"},{value:"scheduler"},{value:"engineer"},{value:"custom"}];function Ln({isOpen:n,onClose:i,onCreated:w,projectId:p,prefillDraft:a=null,agentOnboardingEnabled:c=!1,existingAgents:v=[],onPrefillDraft:m}){const{t:l}=Ee("app"),f=o=>({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")})[o]??o,[N,P]=s.useState(0),[_,C]=s.useState("presets"),[B,R]=s.useState(""),[W,T]=s.useState(""),[H,$]=s.useState(""),[y,S]=s.useState("custom"),[M,I]=s.useState([]),[Z,D]=s.useState(""),[xe,fe]=s.useState(""),[re,ee]=s.useState(""),[me,G]=s.useState(""),[A,V]=s.useState(""),[Fe,Te]=s.useState(""),[ce,we]=s.useState({model:"",thinkingLevel:"off",maxTurns:1e3}),[_e,Ce]=s.useState(null),[se,Pe]=s.useState([]),[Y,ve]=s.useState(!1),[U,he]=s.useState(null),[je,te]=s.useState(!1),[Se,Me]=s.useState(!1),{favoriteProviders:ze,favoriteModels:$e,toggleFavoriteProvider:Je,toggleFavoriteModel:mt}=Is(),[Ne,ie]=s.useState([]),[ht,oe]=s.useState(!1),[z,Ae]=s.useState("model"),[de,Re]=s.useState(""),[Ie,Le]=s.useState([]),[Ue,d]=s.useState(!1),[k,F]=s.useState([]),[ue,q]=s.useState(!1);s.useEffect(()=>{n&&(oe(!0),Ls().then(o=>{ie(o.models)}).catch(()=>{}).finally(()=>oe(!1)))},[n]),s.useEffect(()=>{n&&(q(!0),F([]),Lt(void 0,p).then(o=>{F(o)}).catch(()=>{F([])}).finally(()=>q(!1)))},[n,p]),s.useEffect(()=>{if(!n)return;const o=$s;if(typeof o!="function"){Le([]),d(!1);return}d(!0),Le([]),o(p).then(j=>{Le(j)}).catch(()=>{Le([])}).finally(()=>d(!1))},[n,p]);const E=ce.model.includes("/")?ce.model:"",X=E?E.split("/")[0]:"default",Qe=s.useCallback(o=>{const j=Hs.has(o.role)?o.role:"custom";R(o.title),T(o.description),$(o.icon),S(j),I([]),ee(o.systemPrompt),we(J=>({...J,thinkingLevel:o.thinkingLevel,maxTurns:o.maxTurns})),te(!1),P(1)},[]),St=s.useCallback(o=>{we(j=>({...j,model:o}))},[]),pt=s.useCallback(o=>{Ae(o),o==="model"&&Re("")},[]),Oe=s.useCallback(o=>{const j=Ds(o);Ce(o.id),R(j.name),$(j.icon??""),T(j.title??""),S(j.role),I([]),V(j.soul??""),ee(j.instructionsText??""),P(1)},[]),Ve=s.useCallback(o=>{const j=Fs(o);P(1),C("custom"),R(j.name),T(j.title??""),$(j.icon??""),S(j.role),I([]),D(j.reportsTo??""),ee(za(j.instructionsText??"")),G(j.heartbeatProcedurePath??""),V(j.soul??""),Te(j.memory??""),Pe(j.skills??[]),we(J=>({...J,model:j.model??"",thinkingLevel:j.thinkingLevel??J.thinkingLevel,maxTurns:j.maxTurns??J.maxTurns})),j.runtimeHint?(Ae("runtime"),Re(j.runtimeHint)):(Ae("model"),Re(""))},[]);if(s.useEffect(()=>{!n||!a||Ve(a)},[n,a,Ve]),!n)return null;const Be=()=>{P(0),C("presets"),R(""),T(""),$(""),S("custom"),D(""),fe(""),ee(""),G(""),V(""),Te(""),we({model:"",thinkingLevel:"off",maxTurns:1e3}),Ae("model"),Re(""),Ce(null),Pe([]),I([]),he(null),te(!1),Me(!1),i()},bt=async()=>{if(B.trim()){ve(!0),he(null);try{await Vs(Bs({name:B,role:y,roles:[y,...M],title:W,icon:H,reportsTo:Z,instructionsPath:xe,instructionsText:re,heartbeatProcedurePath:me,soul:A,memory:Fe,model:z==="model"?ce.model:"",runtimeHint:z==="runtime"?de:"",thinkingLevel:ce.thinkingLevel,maxTurns:ce.maxTurns,skills:se}),p),Be(),w()}catch(o){he(o instanceof Error?o.message:l("agents.createError","Failed to create agent"))}finally{ve(!1)}}},ge=Yt.find(o=>o.value===y),ye=Z.trim(),We=ye?k.find(o=>o.id===ye):void 0,et=de?Ie.find(o=>o.runtimeId===de):void 0,tt=o=>e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{id:o,children:l("agents.runtimeSource","Runtime Source")}),e.jsxs("div",{className:"agent-runtime-mode-toggle",role:"radiogroup","aria-labelledby":o,children:[e.jsxs("label",{className:`agent-runtime-mode-option${z==="model"?" agent-runtime-mode-option--active":""}`,children:[e.jsx("input",{type:"radio",name:o,value:"model",checked:z==="model",onChange:()=>pt("model")}),e.jsx("span",{children:l("agents.runtimeSourceBuiltIn","Built-in Model")})]}),e.jsxs("label",{className:`agent-runtime-mode-option${z==="runtime"?" agent-runtime-mode-option--active":""}`,children:[e.jsx("input",{type:"radio",name:o,value:"runtime",checked:z==="runtime",onChange:()=>pt("runtime")}),e.jsx("span",{children:l("agents.runtimeSourcePlugin","Plugin Runtime")})]})]})]}),z==="model"?e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{children:l("agents.model","Model")}),ht?e.jsx("div",{className:"agent-dialog-loading",children:e.jsx(_a,{label:l("agents.loadingModels","Loading models…")})}):e.jsx(Os,{id:"agent-model",label:l("agents.model","Model"),value:E,onChange:St,models:Ne,placeholder:l("agents.modelPlaceholder","Select a model…"),favoriteProviders:ze,onToggleFavorite:Je,favoriteModels:$e,onToggleModelFavorite:mt,thinkingLevel:ce.thinkingLevel,onThinkingLevelChange:j=>we(J=>({...J,thinkingLevel:j}))})]}):e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-runtime-hint",children:l("agents.runtime","Runtime")}),Ue?e.jsx("div",{className:"agent-dialog-loading",children:e.jsx(_a,{label:l("agents.loadingRuntimes","Loading runtimes…")})}):e.jsxs("select",{id:"agent-runtime-hint",className:"select",value:de,onChange:j=>Re(j.target.value),children:[e.jsx("option",{value:"",children:Ie.length>0?l("agents.runtimePlaceholder","Select a plugin runtime…"):l("agents.runtimeEmpty","No plugin runtimes available")}),Ie.map(j=>e.jsx("option",{value:j.runtimeId,children:j.description?`${j.name} — ${j.description}`:j.name},`${j.pluginId}:${j.runtimeId}`))]})]})]});return mn.createPortal(e.jsxs("div",{className:"agent-dialog-overlay",onClick:o=>{o.target===o.currentTarget&&Be()},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:Be,"aria-label":l("agents.closeAriaLabel","Close"),children:"×"})]}),e.jsx("div",{className:"agent-dialog-steps",children:[0,1,2].map(o=>e.jsx("div",{className:`agent-dialog-step${o===N?" active":o<N?" completed":""}`,"aria-label":l("agents.stepAriaLabel","Step {{step}}",{step:o+1})},o))}),e.jsxs("div",{className:"agent-dialog-body",children:[N===0&&e.jsxs("div",{children:[c&&e.jsx("div",{className:"agent-dialog-step-zero-actions",children:e.jsx("button",{type:"button",className:"btn agent-dialog-interview-btn",onClick:()=>Me(!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":_==="presets",tabIndex:_==="presets"?0:-1,className:`agent-dialog-tab${_==="presets"?" active":""}`,onClick:()=>C("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":_==="custom",tabIndex:_==="custom"?0:-1,className:`agent-dialog-tab${_==="custom"?" active":""}`,onClick:()=>{C("custom"),ee(o=>za(o))},"data-testid":"agent-dialog-tab-custom",children:l("agents.tabCustom","Custom agent")})]}),_==="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:zs.map(o=>e.jsxs("button",{type:"button",className:`agent-preset-card${_e===o.id?" selected":""}`,"data-testid":`preset-${o.id}`,onClick:()=>Oe(o),title:o.title,children:[e.jsx("span",{className:"agent-preset-icon",children:e.jsx(Ht,{agent:{id:o.id,icon:o.icon,name:o.name},size:28})}),e.jsx("span",{className:"agent-preset-name",children:o.name}),e.jsx("span",{className:"agent-preset-role",children:o.role}),o.description&&e.jsx("span",{className:"agent-preset-description",children:o.description})]},o.id))})]})}),_==="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")," ",!_e&&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:B,onChange:o=>R(o.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:W,onChange:o=>T(o.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:H,onChange:o=>$(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{children:l("agents.fieldRole","Primary role")}),e.jsx("div",{className:"agent-role-grid",children:Yt.map(o=>e.jsxs("button",{type:"button",className:`agent-role-option${y===o.value?" selected":""}`,onClick:()=>{S(o.value),I(j=>j.filter(J=>J!==o.value))},children:[e.jsx("span",{className:"agent-role-option-icon","aria-hidden":"true",children:e.jsx(Ta,{provider:X,size:"sm"})}),e.jsx("span",{className:"agent-role-option-label",children:f(o.value)})]},o.value))}),e.jsxs("fieldset",{className:"agent-dialog-field","aria-label":l("agents.additionalRoles","Additional workflow roles"),children:[e.jsx("legend",{children:l("agents.additionalRoles","Additional workflow roles")}),Yt.filter(o=>o.value!==y).map(o=>e.jsxs("label",{className:"checkbox-label",children:[e.jsx("input",{type:"checkbox",checked:M.includes(o.value),onChange:()=>I(j=>j.includes(o.value)?j.filter(J=>J!==o.value):[...j,o.value])}),f(o.value)]},o.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:Z,onChange:o=>D(o.target.value),disabled:ue,children:[e.jsx("option",{value:"",children:l("agents.noManager","No manager")}),k.map(o=>e.jsxs("option",{value:o.id,children:[o.name," (",o.id,")"]},o.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:A,onChange:o=>V(o.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:Fe,onChange:o=>Te(o.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:xe,onChange:o=>fe(o.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:me,onChange:o=>G(o.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:re,onChange:o=>ee(o.target.value)})]})]}),e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:l("agents.sectionRuntime","Runtime")}),tt("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:()=>te(!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")})]})]})]}),N===1&&e.jsxs("div",{children:[tt("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:o=>we(j=>({...j,maxTurns:Math.max(1,parseInt(o.target.value,10)||1)}))})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx(bn,{id:"agent-skills",label:l("agents.fieldSkills","Skills"),value:se,onChange:Pe,projectId:p}),e.jsx("p",{className:"agent-dialog-optional agent-dialog-skills-hint",children:l("agents.skillsHint","Optional skills to assign to this agent")})]})]}),N===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:B,onChange:o=>R(o.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:W,onChange:o=>T(o.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:ge?f(ge.value):""})]}),ye&&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:We?`${We.name} (${We.id})`:ye})]}),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:A,onChange:o=>V(o.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:me,onChange:o=>G(o.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:xe,onChange:o=>fe(o.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:re,onChange:o=>ee(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:z==="runtime"?l("agents.runtime","Runtime"):l("agents.model","Model")}),e.jsx("span",{children:z==="runtime"?et?et.name:e.jsx("em",{className:"agent-dialog-summary-row-value--muted",children:l("agents.notSelected","Not selected")}):E?e.jsxs(e.Fragment,{children:[e.jsx(Ta,{provider:E.split("/")[0],size:"sm"})," ",(()=>{const o=E.indexOf("/"),j=E.slice(0,o),J=E.slice(o+1);return Ne.find(At=>At.provider===j&&At.id===J)?.name||E})()]}):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})]}),se.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:se.length,defaultValue_one:"{{count}} skill selected",defaultValue_other:"{{count}} skills selected"})})]})]}),U&&e.jsx("p",{className:"agent-dialog-error",children:U})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[N>0&&e.jsx("button",{className:"btn",onClick:()=>P(o=>o-1),disabled:Y,children:l("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:Be,disabled:Y,children:l("agents.cancel","Cancel")}),N<2?e.jsx("button",{className:"btn btn--primary",onClick:()=>P(o=>o+1),disabled:N===0&&!B.trim()&&!_e,children:l("agents.next","Next")}):e.jsx("button",{className:"btn btn--primary",onClick:()=>void bt(),disabled:Y||!B.trim(),children:Y?l("agents.creating","Creating..."):l("agents.create","Create")})]})]}),e.jsx(In,{isOpen:je,onClose:()=>te(!1),onGenerated:Qe,projectId:p}),e.jsx(fn,{isOpen:Se,onClose:()=>Me(!1),onUseDraft:o=>{m?.(o),m||Ve(o),Me(!1)},projectId:p,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 w=i[1].split(/\r?\n/),p=i[2]??"",a={name:""},c=[];let v=!1;for(const m of w){const f=m.trimEnd().trim();if(!f)continue;if(f.startsWith("skills:")){v=!0;continue}if(v&&f.startsWith("- ")){c.push(f.slice(2).trim());continue}v=!1;const[N,...P]=f.split(":"),C=P.join(":").trim().replace(/^['"]|['"]$/g,"");N==="name"&&(a.name=C),N==="title"&&(a.title=C),N==="icon"&&(a.icon=C),N==="role"&&(a.role=C),N==="reportsTo"&&(a.reportsTo=C)}if(!a.name)throw new Error("Missing required field: name");return c.length>0&&(a.skills=c),p.trim().length>0&&(a.instructionBody=p),a}function Dn({isOpen:n,onClose:i,onImported:w,projectId:p,initialInputMethod:a="paste"}){const{t:c}=Ee("app");Ya(n);const[v,m]=s.useState("input"),[l,f]=s.useState(a),[N,P]=s.useState(""),[_,C]=s.useState([]),[B,R]=s.useState("Unknown"),[W,T]=s.useState([]),[H,$]=s.useState([]),[y,S]=s.useState([]),[M,I]=s.useState([]),[Z,D]=s.useState([]),[xe,fe]=s.useState(!1),[re,ee]=s.useState(!1),[me,G]=s.useState(null),[A,V]=s.useState(null),[Fe,Te]=s.useState(null),ce=s.useRef(null),we=s.useRef(null),[_e,Ce]=s.useState([]),[se,Pe]=s.useState(""),[Y,ve]=s.useState(null),[U,he]=s.useState(!1),[je,te]=s.useState(null),Se=s.useRef(!1);s.useEffect(()=>{l==="browse"&&!Se.current&&!U&&(Se.current=!0,he(!0),te(null),Fa().then(d=>{d.error?te(d.error):d.companies.length>0?Ce(d.companies):te(c("agents.noCompaniesAvailable","No companies available"))}).catch(d=>{te(d instanceof Error?d.message:c("agents.failedToLoadCompanies","Failed to load companies"))}).finally(()=>{he(!1)}))},[l,U,c]);const Me=s.useCallback(()=>{Se.current=!0,te(null),Ce([]),ve(null),he(!0),Fa().then(d=>{d.error?te(d.error):d.companies.length>0?Ce(d.companies):te(c("agents.noCompaniesAvailable","No companies available"))}).catch(d=>{te(d instanceof Error?d.message:c("agents.failedToLoadCompanies","Failed to load companies"))}).finally(()=>{he(!1)})},[c]),ze=s.useCallback(()=>{m("input"),f(a),P(""),C([]),R("Unknown"),T([]),$([]),S([]),I([]),D([]),fe(!1),ee(!1),G(null),V(null),Te(null),Ce([]),Pe(""),ve(null),he(!1),te(null),Se.current=!1},[a]),$e=s.useCallback(()=>{ze(),i()},[ze,i]),Je=s.useCallback(d=>{const k=d.target.files?.[0];if(!k)return;const F=new FileReader;F.onload=ue=>{const q=ue.target?.result;f("file"),C([]),P(q),G(null)},F.onerror=()=>{G(c("agents.failedToReadFile","Failed to read file"))},F.readAsText(k),d.target.value=""},[c]),mt=s.useCallback(async d=>{const k=Array.from(d.target.files??[]);if(k.length!==0)try{const F=k.filter(q=>(q.webkitRelativePath||q.name).toLowerCase().endsWith("agents.md")).sort((q,E)=>{const X=q.webkitRelativePath||q.name,Qe=E.webkitRelativePath||E.name;return X.localeCompare(Qe)});if(F.length===0){G(c("agents.noAgentsMdFiles","Selected directory has no AGENTS.md files"));return}const ue=[];for(const q of F){const E=await q.text();ue.push(Hn(E))}f("directory"),C(ue),P(""),G(null)}catch{G(c("agents.failedToParseDirectory","Failed to parse AGENTS.md files from selected directory"))}finally{d.target.value=""}},[c]);function Ne(d){if(!p)return`/api${d}`;const k=d.includes("?")?"&":"?";return`/api${d}${k}projectId=${encodeURIComponent(p)}`}const ie=s.useCallback(async()=>{if(l==="directory"&&_.length===0){G(c("agents.selectDirectory","Please select a directory containing AGENTS.md files"));return}if(l==="browse"&&!Y){G(c("agents.selectCompany","Please select a company from the catalog"));return}if(l!=="directory"&&l!=="browse"&&!N.trim()){G(c("agents.provideManifest","Please provide manifest content"));return}fe(!0),G(null);try{let d;l==="directory"?d={agents:_,dryRun:!0}:l==="browse"&&Y?d={importSource:"companies.sh",companySlug:Y.slug,dryRun:!0}:d={manifest:N,dryRun:!0};const k=await fetch(Ne("/agents/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)});if(!k.ok){const E=await k.json();throw new Error(E.error??`Parse failed (${k.status})`)}const F=await k.json(),ue=F.agents&&F.agents.length>0?F.agents:F.created.map(E=>({name:E,role:"custom"})),q=Array.isArray(F.skills)?F.skills:[];R(F.companyName??"Unknown"),T(ue),$(q),S(Array.isArray(F.warnings)?F.warnings:[]),I(ue.map(E=>E.name)),D(q.map(E=>E.name)),m("preview")}catch(d){G(d instanceof Error?d.message:c("agents.failedToParseManifest","Failed to parse manifest"))}finally{fe(!1)}},[l,_,N,Y,p,c]),ht=s.useCallback(async()=>{ee(!0),Te(null);try{let d;l==="directory"?d={agents:_,skipExisting:!0,selectedAgents:M,selectedSkills:Z}:l==="browse"&&Y?d={importSource:"companies.sh",companySlug:Y.slug,skipExisting:!0,selectedAgents:M,selectedSkills:Z}:d={manifest:N,skipExisting:!0,selectedAgents:M,selectedSkills:Z};const k=await fetch(Ne("/agents/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)});if(!k.ok){const ue=await k.json();throw new Error(ue.error??`Import failed (${k.status})`)}const F=await k.json();V(F),m("result"),w()}catch(d){Te(d instanceof Error?d.message:c("agents.failedToImport","Failed to import agents"))}finally{ee(!1)}},[l,_,N,Y,M,Z,p,w,c]),oe=M.length,z=Z.length,Ae=c("agents.selectedAgentLabel","{{count}} Agent{{plural}}",{count:oe,plural:oe!==1?"s":""}),de=c("agents.selectedSkillLabel","{{count}} Skill{{plural}}",{count:z,plural:z!==1?"s":""}),Re=oe>0&&z>0?`${Ae} + ${de}`:z>0?de:Ae,Ie=oe>0&&z>0?c("agents.importingAgentsAndSkills","Importing {{agentCount}} agent{{agentPlural}} and {{skillCount}} skill{{skillPlural}}...",{agentCount:oe,agentPlural:oe!==1?"s":"",skillCount:z,skillPlural:z!==1?"s":""}):z>0?c("agents.importingSkills","Importing {{count}} skill{{plural}}...",{count:z,plural:z!==1?"s":""}):c("agents.importingAgents","Importing {{count}} agent{{plural}}...",{count:oe,plural:oe!==1?"s":""}),Le=d=>{I(k=>k.includes(d)?k.filter(F=>F!==d):[...k,d])},Ue=d=>{D(k=>k.includes(d)?k.filter(F=>F!==d):[...k,d])};return n?e.jsx(Za,{windowKey:"agent-import",modal:!0,title:c("agents.importAgents","Import Agents"),ariaLabel:c("agents.importAgents","Import agents"),onClose:$e,hideHeader:!0,dragHandleSelector:".agent-import-dialog .agent-dialog-header",className:"floating-window--agent-import",defaultSize:{width:720,height:640},minSize:{width:420,height:320},persistGeometryKey:"floating-window:agent-import",suspendGeometryPersistenceOnMobile:!0,suspendGeometryPersistenceOnShortViewport:!0,closeOnOutsidePointerDown:!0,children:e.jsxs("div",{className:"agent-dialog agent-import-dialog",children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsx("span",{className:"agent-dialog-header-title",children:c("agents.importAgents","Import Agents")}),e.jsx("button",{className:"modal-close",onClick:$e,"aria-label":c("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:c("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:ce,type:"file",accept:".md,.txt",onChange:Je,className:"agent-import-file-input","aria-label":"Upload agent manifest file"}),e.jsx("input",{ref:we,type:"file",webkitdirectory:"",multiple:!0,onChange:mt,className:"agent-import-file-input","aria-label":"Select directory"}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>ce.current?.click(),children:[e.jsx(aa,{size:16}),c("agents.chooseFile","Choose File")]}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>we.current?.click(),children:[e.jsx(vn,{size:16}),c("agents.selectDirectory","Select Directory")]}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>{f("browse"),C([]),P(""),ve(null),G(null)},children:[e.jsx(Us,{size:16}),c("agents.browseCatalog","Browse Catalog")]}),e.jsx("span",{className:"agent-import-file-hint",children:c("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:c("agents.searchCompanies","Search companies..."),value:se,onChange:d=>Pe(d.target.value),"aria-label":c("agents.searchCompanies","Search companies")})]}),Y&&e.jsxs("div",{className:"agent-import-browse-selected",children:[e.jsxs("span",{className:"agent-import-browse-selected-label",children:[c("agents.selected","Selected:")," "]}),e.jsx("span",{className:"agent-import-browse-selected-name",children:Y.name}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ve(null),children:c("agents.change","Change")})]})]}),U&&e.jsxs("div",{className:"agent-import-browse-loading",children:[e.jsx(Ot,{size:20,className:"spin"}),e.jsx("span",{children:c("agents.loadingCompanies","Loading companies...")})]}),je&&e.jsxs("div",{className:"agent-import-browse-error",children:[e.jsx(Nt,{size:16}),e.jsx("span",{children:je}),e.jsxs("button",{type:"button",className:"btn btn-sm",onClick:Me,children:[e.jsx(dt,{size:14}),c("agents.retry","Retry")]})]}),!U&&!je&&e.jsxs("div",{className:"agent-import-browse-list",children:[_e.filter(d=>se===""||d.name.toLowerCase().includes(se.toLowerCase())||(d.tagline?.toLowerCase().includes(se.toLowerCase())??!1)).map(d=>e.jsxs("div",{className:`agent-import-browse-item ${Y?.slug===d.slug?"agent-import-browse-item--selected":""}`,onClick:()=>ve(d),role:"button",tabIndex:0,onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&ve(d)},children:[e.jsxs("div",{className:"agent-import-browse-item-header",children:[e.jsx("span",{className:"agent-import-browse-item-name",children:d.name}),d.installs!==void 0&&e.jsxs("span",{className:"agent-import-browse-item-installs",children:[d.installs.toLocaleString()," ",c("agents.installs","installs")]})]}),d.tagline&&e.jsx("span",{className:"agent-import-browse-item-tagline",children:d.tagline}),d.repo&&e.jsx("span",{className:"agent-import-browse-item-repo",children:d.repo})]},d.slug)),_e.filter(d=>se===""||d.name.toLowerCase().includes(se.toLowerCase())||(d.tagline?.toLowerCase().includes(se.toLowerCase())??!1)).length===0&&e.jsx("p",{className:"agent-import-browse-empty",children:se?c("agents.noCompaniesMatch","No companies match your search"):c("agents.noCompaniesAvailable","No companies available")})]})]}),l!=="browse"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-divider",children:e.jsx("span",{children:c("agents.orPasteManifest","or paste manifest content")})}),e.jsx("textarea",{className:"agent-import-textarea",placeholder:c("agents.manifestPlaceholder",`---
18
+ name: CEO
19
+ title: Chief Executive Officer
20
+ reportsTo: null
21
+ skills:
22
+ - review
23
+ ---
24
+ Agent instructions go here...`),value:N,onChange:d=>{f("paste"),C([]),P(d.target.value),G(null)},rows:8,"aria-label":c("agents.manifestContent","Manifest content")})]}),e.jsx("p",{className:"agent-import-file-hint",children:c("agents.currentInput","Current input: {{method}}",{method:l})}),me&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(Nt,{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:c("agents.company","Company")}),e.jsx("span",{className:"agent-import-company-name",children:B})]}),y.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:y.map((d,k)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(Nt,{size:12}),e.jsx("span",{children:d})]},k))}),e.jsxs("div",{className:"agent-import-count",children:[e.jsx(ea,{size:14}),e.jsx("span",{children:c("agents.agentsFound","{{count}} agent{{plural}} found",{count:W.length,plural:W.length!==1?"s":""})})]}),W.length>0&&e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>I(W.map(d=>d.name)),children:c("agents.selectAllAgents","Select all agents")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>I([]),children:c("agents.clearAgents","Clear agents")})]}),W.length>0?e.jsx("div",{className:"agent-import-agent-list",children:W.map((d,k)=>e.jsxs("div",{className:"agent-import-agent-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":c("agents.selectAgent","Select agent {{name}}",{name:d.name}),checked:M.includes(d.name),onChange:()=>Le(d.name)})}),e.jsx("span",{className:"agent-import-agent-icon",children:d.icon||"🤖"}),e.jsxs("div",{className:"agent-import-agent-details",children:[e.jsx("span",{className:"agent-import-agent-name",children:d.name}),e.jsxs("span",{className:"agent-import-agent-meta",children:[d.title&&e.jsxs("span",{className:"agent-import-agent-title",children:[d.title," · "]}),e.jsx("span",{className:"agent-import-agent-role",children:d.role}),d.reportsTo&&e.jsx("span",{className:"agent-import-agent-reports",children:c("agents.importReportsTo"," · reports to {{agent}}",{agent:d.reportsTo})}),d.skills&&d.skills.length>0&&e.jsx("span",{className:"agent-import-agent-model",children:c("agents.importSkills"," · skills: {{skills}}",{skills:d.skills.join(", ")})})]}),d.instructionsText&&e.jsxs("span",{className:"agent-import-agent-instructions",children:[d.instructionsText.slice(0,100),d.instructionsText.length>100?"...":""]})]})]},k))}):e.jsx("p",{className:"agent-import-empty",children:c("agents.noAgentsFound","No agents found in the manifest.")}),H.length>0&&e.jsxs("div",{className:"agent-import-skills-section",children:[e.jsxs("div",{className:"agent-import-count",children:[e.jsx(ea,{size:14}),e.jsx("span",{children:c("agents.skillsFound","{{count}} skill{{plural}} found",{count:H.length,plural:H.length!==1?"s":""})})]}),e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>D(H.map(d=>d.name)),children:c("agents.selectAllSkills","Select all skills")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>D([]),children:c("agents.clearSkills","Clear skills")})]}),e.jsx("div",{className:"agent-import-skill-list",children:H.map((d,k)=>e.jsxs("div",{className:"agent-import-skill-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":c("agents.selectSkill","Select skill {{name}}",{name:d.name}),checked:Z.includes(d.name),onChange:()=>Ue(d.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:d.name}),d.description&&e.jsx("span",{className:"agent-import-skill-description",children:d.description})]})]},`${d.name}-${k}`))})]}),Fe&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(Nt,{size:14}),Fe]})]}),v==="result"&&A&&e.jsxs("div",{className:"agent-import-result",children:[e.jsx("div",{className:"agent-import-result-icon",children:e.jsx(It,{size:32})}),e.jsx("h3",{className:"agent-import-result-title",children:c("agents.importComplete","Import Complete")}),e.jsxs("p",{className:"agent-import-result-company",children:[c("agents.from","From")," ",e.jsx("strong",{children:A.companyName??"Unknown"})]}),e.jsxs("div",{className:"agent-import-result-stats",children:[A.created.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:c("agents.resultCreated","{{count}} created",{count:A.created.length})})}),A.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.resultSkipped","{{count}} skipped (already exist)",{count:A.skipped.length})})}),A.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:c("agents.resultErrors","{{count}} error{{plural}}",{count:A.errors.length,plural:A.errors.length!==1?"s":""})})})]}),A.created.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:A.created.map((d,k)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(It,{size:12}),e.jsx("span",{children:d.name})]},k))}),A.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:A.errors.map((d,k)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(Pa,{size:12}),e.jsxs("span",{children:[d.name,": ",d.error]})]},k))}),A.warnings&&A.warnings.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:A.warnings.map((d,k)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(Nt,{size:12}),e.jsx("span",{children:d})]},k))}),A.skills&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-result-divider"}),e.jsx("h4",{className:"agent-import-result-section-title",children:c("agents.skills","Skills")}),e.jsxs("div",{className:"agent-import-result-stats",children:[A.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:c("agents.skillsImported","{{count}} skill{{plural}} imported",{count:A.skills.imported.length,plural:A.skills.imported.length!==1?"s":""})})}),A.skills.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.skillsSkipped","{{count}} skill{{plural}} skipped (already exist)",{count:A.skills.skipped.length,plural:A.skills.skipped.length!==1?"s":""})})}),A.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:c("agents.skillsErrors","{{count}} skill{{plural}} error{{pluralError}}",{count:A.skills.errors.length,plural:A.skills.errors.length!==1?"s":"",pluralError:A.skills.errors.length!==1?"s":""})})}),A.skills.imported.length===0&&A.skills.skipped.length===0&&A.skills.errors.length===0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.noSkillsInPackage","No skills in package")})})]}),A.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:A.skills.imported.map((d,k)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(It,{size:12}),e.jsx("span",{children:d.name})]},k))}),A.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:A.skills.errors.map((d,k)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(Pa,{size:12}),e.jsxs("span",{children:[d.name,": ",d.error]})]},k))})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[v==="preview"&&e.jsx("button",{className:"btn",onClick:()=>m("input"),disabled:re,children:c("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:$e,disabled:re,children:v==="result"?c("agents.close","Close"):c("agents.cancel","Cancel")}),v==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void ie(),disabled:xe||(l==="directory"?_.length===0:l==="browse"?!Y:!N.trim()),children:xe?e.jsxs(e.Fragment,{children:[e.jsx(Ot,{size:14,className:"spin"}),c("agents.parsing","Parsing...")]}):c("agents.preview","Preview")}),v==="preview"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void ht(),disabled:re||oe===0&&z===0,children:re?e.jsxs(e.Fragment,{children:[e.jsx(Ot,{size:14,className:"spin"}),Ie]}):c("agents.importButton","Import {{label}}",{label:Re})})]})]})}):null}const Ua=s.lazy(()=>on(()=>import("./AgentDetailView-nsriz_Mw.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 Zt=[.1,.25,.5,1,2,3,5,10],qt="__disabled__",zn=.25,$n=3,Mt=16,ct=32,Wa=320,qa=260,Ja=520,Qa="kb-dashboard-agents-sidebar-width";function sa(n){return Math.max(qa,Math.min(Ja,n))}function Ga(n){if(typeof window>"u")return Wa;const i=wt(Qa,n),w=i?Number(i):NaN;return Number.isFinite(w)?sa(w):Wa}function na(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 la(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??{},w=typeof i.runtimeHint=="string"?i.runtimeHint:"";if(w)return{label:w,isRuntime:!0};const p=typeof i.modelProvider=="string"?i.modelProvider:"",a=typeof i.modelId=="string"?i.modelId:"";if(p&&a)return{label:`${p}/${a}`,isRuntime:!1};const c=typeof i.model=="string"?i.model:"";if(c.includes("/")){const v=c.indexOf("/");return{label:c.slice(v+1),isRuntime:!1}}return{label:null,isRuntime:!1}}function es(n){return n.children.length===0?1:n.children.reduce((i,w)=>i+es(w),0)}function ra(n,i,w){return n.state==="error"?{title:void 0,label:w("agents.healthError","Error")}:{title:i.reason??i.label,label:i.stateDerived?null:i.label}}function Vn({agent:n,pending:i,onToggle:w}){const{t:p}=Ee("app");if(De(n))return null;const a=ut(n),c=a?p("agents.disableHeartbeat","Disable heartbeat"):p("agents.enableHeartbeat","Enable heartbeat");return e.jsx("button",{type:"button",className:"btn btn-sm agent-heartbeat-toggle",disabled:i,"aria-pressed":a,"aria-label":p("agents.heartbeatActionForAgent","{{action}} for {{name}}",{action:c,name:n.name}),onClick:v=>{v.stopPropagation(),w(n)},children:i?p("agents.heartbeatUpdating","Updating heartbeat…"):c})}function ts({node:n,onSelect:i,getHealthStatus:w,selectedAgentId:p,registerNodeElement:a,linksRef:c}){const{t:v}=Ee("app"),{agent:m,children:l}=n,f=w(m),N=ra(m,f,v),P=na(m.state),_=la("org-chart-node-card",m.state),C=es(n),B={"--org-chart-subtree-leaves":String(C)};return e.jsxs("div",{className:`org-chart-node${l.length>0?" org-chart-node--has-children":""}`,style:B,children:[e.jsxs("div",{ref:R=>a(m.id,R),"data-agent-id":m.id,className:`org-chart-node-card ${_}${p===m.id?" agent-card--selected":""}`,onClick:()=>i(m.id),role:"button",tabIndex:0,onKeyDown:R=>{(R.key==="Enter"||R.key===" ")&&(R.key===" "&&R.preventDefault(),i(m.id))},children:[e.jsxs("div",{className:"org-chart-node__header",children:[e.jsx("span",{className:"org-chart-node__icon",children:e.jsx(Ht,{agent:m,size:20})}),e.jsx("span",{className:"org-chart-node__name",children:m.name})]}),e.jsxs("div",{className:"org-chart-node__meta",children:[e.jsx("span",{className:`org-chart-node__badge ${P}`,children:m.state}),e.jsxs("span",{className:"org-chart-node__health",style:{color:f.color},title:N.title,children:[f.icon,N.label&&e.jsx("span",{className:"text-secondary",children:N.label})]})]})]}),l.length>0&&e.jsx("div",{className:"org-chart-children",role:"group","aria-label":v("agents.orgChartEmployees","{{name}} employees",{name:m.name}),children:l.map(R=>(c.current.push({parentId:m.id,childId:R.agent.id}),e.jsx(ts,{node:R,onSelect:i,getHealthStatus:w,selectedAgentId:p,registerNodeElement:a,linksRef:c},R.agent.id)))})]})}function Bn({links:n,nodeElements:i,canvasRef:w,viewportRef:p,layoutMode:a,transform:c}){const[v,m]=s.useState([]);return s.useLayoutEffect(()=>{const l=w.current,f=p.current;if(!l||!f||n.length===0){m([]);return}const N=()=>{const _=l.getBoundingClientRect(),C=n.flatMap(({parentId:B,childId:R})=>{const W=i.get(B),T=i.get(R);if(!W||!T)return[];const H=W.getBoundingClientRect(),$=T.getBoundingClientRect(),y=(H.left-_.left)/c.scale,S=(H.top-_.top)/c.scale,M=($.left-_.left)/c.scale,I=($.top-_.top)/c.scale;if(a==="vertical"){const ee=y,me=S+H.height/c.scale/2,G=M,A=I+$.height/c.scale/2,V=ee-(ee-G)/2;return[`M ${ee} ${me} L ${V} ${me} L ${V} ${A} L ${G} ${A}`]}const Z=y+H.width/c.scale/2,D=S+H.height/c.scale,xe=M+$.width/c.scale/2,fe=I,re=D+(fe-D)/2;return[`M ${Z} ${D} L ${Z} ${re} L ${xe} ${re} L ${xe} ${fe}`]});m(C)};N();const P=new ResizeObserver(N);return P.observe(l),P.observe(f),i.forEach(_=>P.observe(_)),()=>P.disconnect()},[w,a,n,i,c.scale,p]),e.jsx("svg",{className:"agent-org-chart-connectors","aria-hidden":"true",children:v.map((l,f)=>e.jsx("path",{d:l},`${f}-${l}`))})}function al({addToast:n,projectId:i,onOpenTaskLogs:w,agentOnboardingEnabled:p=!1}){const{t:a}=Ee("app"),c=Fn(a),[v,m]=s.useState(!1),l=s.useRef(new Map),f=s.useRef(new Map),N=s.useRef(new Map),[P,_]=s.useState(new Set),C=s.useRef(null);s.useEffect(()=>{if(typeof IntersectionObserver>"u")return;const t=new IntersectionObserver(r=>{_(u=>{let g=!1;const b=new Set(u);for(const x of r){const L=f.current.get(x.target);L&&(x.isIntersecting?b.has(L)||(b.add(L),g=!0):b.has(L)&&(b.delete(L),g=!0))}return g?b:u})},{rootMargin:"200px"});return C.current=t,l.current.forEach(r=>t.observe(r)),()=>{t.disconnect(),C.current=null}},[]);const B=s.useCallback(t=>{const r=N.current.get(t);if(r)return r;const u=g=>{const b=l.current.get(t);b&&(C.current?.unobserve(b),f.current.delete(b)),g?(l.current.set(t,g),f.current.set(g,t),C.current?C.current.observe(g):_(x=>x.has(t)?x:new Set(x).add(t))):(l.current.delete(t),N.current.delete(t),_(x=>{if(!x.has(t))return x;const L=new Set(x);return L.delete(t),L}))};return N.current.set(t,u),u},[]),R=s.useCallback(t=>typeof IntersectionObserver>"u"?!0:P.has(t),[P]),T=Gs()==="mobile",[H,$]=s.useState(()=>Ga(i)),[y,S]=s.useState("all"),{agents:M,stats:I,isLoading:Z,loadAgents:D,refreshAgents:xe}=Ks(i,{filterState:y,showSystemAgents:v}),[fe,re]=s.useState(!1),[ee,me]=s.useState(null),[G,A]=s.useState(!1),[V,Fe]=s.useState(null),[Te,ce]=s.useState(null),we=T&&!!V,[_e,Ce]=s.useState("dashboard"),[se,Pe]=s.useState(null),[Y,ve]=s.useState(!1),[U,he]=s.useState(()=>{if(typeof window>"u")return"list";const t=wt("fn-agent-view",i);return t==="list"||t==="board"||t==="org"?t:"list"}),[je,te]=s.useState(()=>{if(typeof window>"u")return"auto";const t=wt(Ut,i);return $a(t)?t:"auto"}),[Se,Me]=s.useState([]),[ze,$e]=s.useState(!1),[Je,mt]=s.useState(0),[Ne,ie]=s.useState(!1),[ht,oe]=s.useState(!1),[z,Ae]=s.useState(!1),[de,Re]=s.useState(!1),[Ie,Le]=s.useState(0),[Ue,d]=s.useState(0),[k,F]=s.useState(0),[ue,q]=s.useState(0),[E,X]=s.useState({scale:1,x:0,y:0}),[Qe,St]=s.useState(!1),pt=s.useRef(null),Oe=s.useRef(null),Ve=s.useRef(null),Be=s.useRef(new Map),bt=s.useRef([]),ge=s.useRef(new Map),ye=s.useRef(null),We=s.useRef(null),et=s.useRef(!1),{confirm:tt}=Xs(),o=s.useRef(null),j=s.useId();s.useEffect(()=>{$(Ga(i))},[i]),s.useEffect(()=>{const t=wt("fn-agent-view",i);if(t==="list"||t==="board"||t==="org"){he(t);return}he("list")},[i]),s.useEffect(()=>{Vt("fn-agent-view",U,i)},[U,i]),s.useEffect(()=>{const t=wt(Ut,i);te($a(t)?t:"auto")},[i]),s.useEffect(()=>{Vt(Ut,je,i)},[je,i]);const J=s.useCallback(t=>{try{Vt(Qa,String(t),i)}catch{}},[i]),oa=s.useCallback(t=>{if(T)return;t.preventDefault(),t.stopPropagation();const r=t.currentTarget;typeof r.setPointerCapture=="function"&&r.setPointerCapture(t.pointerId);const u=t.clientX,g=H;let b=g;document.body.style.userSelect="none";const x=K=>{const ne=K.clientX-u,Q=sa(g+ne);b=Q,$(Q)},L=K=>{typeof r.releasePointerCapture=="function"&&r.releasePointerCapture(K.pointerId),document.body.style.userSelect="",document.removeEventListener("pointermove",x),document.removeEventListener("pointerup",L),J(b)};document.addEventListener("pointermove",x),document.addEventListener("pointerup",L)},[T,J,H]),At=s.useCallback(t=>{if(T||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;t.preventDefault();const r=t.shiftKey?50:10,u=t.key==="ArrowLeft"?-r:r,g=sa(H+u);$(g),J(g)},[T,J,H]),[as,at]=s.useState(null),ss=s.useRef(null),[ns,st]=s.useState(null),[Ge,ca]=s.useState(new Set),[He,da]=s.useState(!1),[ua,nt]=s.useState(null),[ga,Ke]=s.useState({}),[xt,ma]=s.useState(1),[ha,pa]=s.useState(!1),[Xe,ba]=s.useState(new Set),[Dt,lt]=s.useState(new Map),Rt=s.useRef(!0);s.useEffect(()=>(Rt.current=!0,()=>{Rt.current=!1}),[]),s.useEffect(()=>{Ys(i).then(t=>{Rt.current&&ma(t.heartbeatMultiplier??1)}).catch(()=>{})},[i]);const xa=s.useCallback(async t=>{const r=Number.isFinite(t)&&t>0?t:1;ma(r),pa(!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:le(u)}),"error")}finally{Rt.current&&pa(!1)}},[i,n]),Et=s.useMemo(()=>Dt.size===0?M:M.map(t=>{const r=Dt.get(t.id);return r?{...t,state:r}:t}),[M,Dt]),ft=s.useMemo(()=>Et.filter(t=>v||!De(t)),[Et,v]),ls=s.useMemo(()=>Et.filter(t=>t.state!=="active"&&t.state!=="running"?!1:v||!De(t)),[Et,v]),Ye=s.useMemo(()=>{if(v)return Se;const t=r=>De(r.agent)?null:{...r,children:r.children.map(t).filter(u=>u!==null)};return Se.map(t).filter(r=>r!==null)},[Se,v]);s.useEffect(()=>{if(U!=="org")return;const t=Oe.current;if(!t)return;const r=()=>{mt(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)}},[U,Ye.length]),s.useEffect(()=>{if(U!=="org")return;let t=!1;return $e(!0),qs(i,{includeEphemeral:v}).then(r=>{t||Me(r)}).catch(r=>{t||(n(a("agents.orgChartLoadFailed","Failed to load org chart: {{error}}",{error:le(r)}),"error"),Me([]))}).finally(()=>{t||$e(!1)}),()=>{t=!0}},[U,i,v,n]),s.useEffect(()=>{const t=setInterval(()=>{D()},3e4);return()=>{clearInterval(t)}},[D]),s.useEffect(()=>{if(!Ne)return;let t=!1;Re(!0),Lt(void 0,i).then(g=>{if(t)return;const b=g.filter(x=>!De(x));Le(b.filter(x=>x.state==="active"||x.state==="running").length),d(b.filter(x=>x.state==="paused").length),F(b.filter(x=>!ut(x)).length),q(b.filter(x=>ut(x)).length)}).catch(g=>{t||(Le(0),d(0),F(0),q(0),n(a("agents.bulkActionsLoadFailed","Failed to load bulk agent actions: {{error}}",{error:le(g)}),"error"))}).finally(()=>{t||Re(!1)});const r=g=>{const b=g.target;b&&(pt.current?.contains(b)||o.current?.contains(b)||ie(!1))},u=g=>{g.key==="Escape"&&(ie(!1),o.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,Ne,i]);const fa=async t=>{if(!z){Ae(!0);try{const u=(await Lt(void 0,i)).filter(h=>!De(h)),g=u.filter(h=>t==="paused"?h.state==="active"||h.state==="running":h.state==="paused"),b=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 tt({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 L=await Promise.allSettled(g.map(h=>Ha(h.id,t,i))),K=L.map((h,O)=>({result:h,agent:g[O]})).filter(h=>h.result.status==="rejected"),ne=L.length-K.length,Q=K.length,be=t==="paused"?a("agents.pausedSummary",{count:ne,skipped:b,defaultValue_one:"Paused {{count}} agent; skipped {{skipped}}",defaultValue_other:"Paused {{count}} agents; skipped {{skipped}}"}):a("agents.resumedSummary",{count:ne,skipped:b,defaultValue_one:"Resumed {{count}} agent; skipped {{skipped}}",defaultValue_other:"Resumed {{count}} agents; skipped {{skipped}}"});if(Q>0){const h=K.slice(0,3).map(({agent:O,result:ke})=>`${O.name||O.id}: ${le(ke.reason)}`).join("; ");n(`${be}; failed ${Q}${h?` (${h})`:""}`,"error")}else n(be,"success");await D()}catch(r){n(t==="paused"?a("agents.pauseAgentsFailed","Failed to pause agents: {{error}}",{error:le(r)}):a("agents.resumeAgentsFailed","Failed to resume agents: {{error}}",{error:le(r)}),"error")}finally{Ae(!1)}}},va=async t=>{if(!(He||z||Ge.size>0)){da(!0);try{const r=await Lt(void 0,i),g=r.filter(h=>!De(h)).filter(h=>ut(h)!==t),b=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 tt({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 L=await Promise.allSettled(g.map(h=>it(h.id,{runtimeConfig:kt(h,t)},i))),K=L.map((h,O)=>({result:h,agent:g[O]})).filter(h=>h.result.status==="rejected"),ne=L.length-K.length,Q=t?a("agents.enableHeartbeatsSummary","Enabled {{count}} heartbeats; skipped {{skipped}}",{count:ne,skipped:b}):a("agents.disableHeartbeatsSummary","Disabled {{count}} heartbeats; skipped {{skipped}}",{count:ne,skipped:b}),be=K.slice(0,3).map(({agent:h,result:O})=>`${h.name||h.id}: ${le(O.reason)}`).join("; ");n(K.length?`${Q}; ${a("agents.bulkFailures","failed {{count}}",{count:K.length})}${be?` (${be})`:""}`:Q,K.length?"error":"success"),await D()}catch(r){n(a("agents.heartbeatUpdateFailed","Failed to update heartbeat: {{error}}",{error:le(r)}),"error")}finally{da(!1)}}},vt=async(t,r)=>{if(!Xe.has(t)){ba(u=>new Set(u).add(t)),lt(u=>{const g=new Map(u);return g.set(t,r),g});try{await Ha(t,r,i),n(a("agents.stateUpdated","Agent state updated to {{state}}",{state:r}),"success"),await D(),lt(u=>{const g=new Map(u);return g.delete(t),g})}catch(u){lt(g=>{const b=new Map(g);return b.delete(t),b}),n(a("agents.stateUpdateFailed","Failed to update state: {{error}}",{error:le(u)}),"error")}finally{ba(u=>{const g=new Set(u);return g.delete(t),g})}}},ja=async(t,r)=>{if(await tt({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 D()}catch(g){n(a("agents.deleteFailed","Failed to delete agent: {{error}}",{error:le(g)}),"error")}},rs=async(t,r)=>{const u=M.find(g=>g.id===t);if(u){if(u.role===r){at(null);return}try{await it(t,{role:r},i),n(a("agents.roleUpdated","Agent role updated to {{role}}",{role:c.find(g=>g.value===r)?.label??r}),"success"),at(null),D()}catch(g){n(a("agents.roleUpdateFailed","Failed to update role: {{error}}",{error:le(g)}),"error")}}},is=(t,r)=>{t.key==="Escape"&&at(null)},os=async(t,r)=>{if(!(He||Ge.has(t.id))){ua===t.id&&(nt(null),Ke(u=>{const g={...u};return delete g[t.id],g})),st(t.id);try{await it(t.id,{runtimeConfig:{...kt(t,!0),heartbeatIntervalMs:r}},i),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:Da(r),name:t.name}),"success"),D()}catch(u){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:le(u)}),"error")}finally{st(null)}}},Na=async(t,r)=>{if(!(De(t)||He||Ge.has(t.id))){ca(u=>new Set(u).add(t.id));try{await it(t.id,{runtimeConfig:kt(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 D()}catch(u){n(a("agents.heartbeatUpdateFailed","Failed to update heartbeat: {{error}}",{error:le(u)}),"error")}finally{ca(u=>{const g=new Set(u);return g.delete(t.id),g})}}},cs=t=>Na(t,!1),ya=async t=>{if(He||Ge.has(t.id))return;const r=ga[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){st(t.id);try{await it(t.id,{runtimeConfig:{...kt(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"),nt(null),Ke(b=>{const x={...b};return delete x[t.id],x}),D()}catch(b){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:le(b)}),"error")}finally{st(null)}return}const g=Math.round(u*6e4);st(t.id);try{await it(t.id,{runtimeConfig:{...kt(t,!0),heartbeatIntervalMs:g}},i),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:Da(g),name:t.name}),"success"),nt(null),Ke(b=>{const x={...b};return delete x[t.id],x}),D()}catch(b){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:le(b)}),"error")}finally{st(null)}},ds=t=>{if(He||Ge.has(t.id))return;const r=Jt(t.runtimeConfig?.heartbeatIntervalMs),u=Math.round(r/6e4);nt(t.id),Ke(g=>({...g,[t.id]:String(u)}))},pe=s.useCallback((t,r)=>{Fe(t),Ce(r?.initialTab??"dashboard"),Pe(r?.initialRunId??null),ve(r?.preferActiveRun??!1)},[]),Ze=s.useCallback(()=>{Fe(null),Ce("dashboard"),Pe(null),ve(!1)},[]),ka=s.useCallback(t=>{pe(t)},[pe]),us=s.useCallback(t=>{ce(t),pe(t)},[pe]),gs=s.useCallback(async({agentId:t,deleted:r})=>{await xe(),r&&V===t&&Ze()},[xe,V,Ze]),ms=s.useCallback(t=>{pe(t),T&&oe(!1)},[T,pe]),hs=async(t,r)=>{lt(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 D(),lt(u=>{const g=new Map(u);return g.delete(t),g})}catch(u){lt(g=>{const b=new Map(g);return b.delete(t),b}),n(a("agents.heartbeatRunFailed","Failed to start heartbeat run: {{error}}",{error:le(u)}),"error")}},qe=s.useCallback(t=>Math.min($n,Math.max(zn,t)),[]),ae=s.useCallback(t=>{const r=Oe.current,u=Ve.current?.querySelector(".agent-org-chart");if(!r||!u)return{...t,scale:qe(t.scale)};const g=qe(t.scale),b=u.scrollWidth*g,x=u.scrollHeight*g,L=r.clientWidth,K=r.clientHeight,ne=Math.min(ct,L-b-ct),Q=ct,be=Math.min(ct,K-x-ct),h=ct;return{scale:g,x:Math.max(ne,Math.min(Q,t.x)),y:Math.max(be,Math.min(h,t.y))}},[qe]),Tt=s.useCallback((t,r,u)=>{const g=Oe.current;g&&X(b=>{const x=qe(t),L=g.getBoundingClientRect(),K=r-L.left,ne=u-L.top,Q=(K-b.x)/b.scale,be=(ne-b.y)/b.scale;return ae({scale:x,x:K-Q*x,y:ne-be*x})})},[qe,ae]),rt=s.useCallback(()=>{const t=Oe.current,r=Ve.current?.querySelector(".agent-org-chart");if(!t||!r)return;const u=t.clientWidth,g=t.clientHeight,b=r.scrollWidth,x=r.scrollHeight;if(b<=0||x<=0)return;const L=qe(Math.min(u/b,g/x,1)),K=(u-b*L)/2,ne=(g-x*L)/2;X(ae({scale:L,x:K,y:ne}))},[qe,ae]),Ft=s.useCallback(t=>{he(t),t!=="org"&&X({scale:1,x:0,y:0}),T&&V&&Ze()},[Ze,T,V]),wa=t=>c.find(r=>r.value===t)?.label??t,_t=s.useMemo(()=>jn({tree:Ye,availableWidth:Je,preference:je}),[Ye,je,Je]),Ca=s.useCallback(t=>{te(t),X({scale:1,x:0,y:0})},[]);s.useEffect(()=>{X({scale:1,x:0,y:0}),et.current=!1},[i,_t]),s.useLayoutEffect(()=>{U!=="org"||ze||Ye.length===0||et.current||(rt(),et.current=!0)},[U,Ye.length,rt,ze]);const ps=s.useCallback((t,r)=>{r?Be.current.set(t,r):Be.current.delete(t)},[]),Sa=s.useCallback(()=>e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>X(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(Cn,{size:16})}),e.jsxs("span",{className:"agent-org-chart-controls__zoom-label","aria-live":"polite",children:[Math.round(E.scale*100),"%"]}),e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>X(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:rt,"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:()=>X(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,rt,E.scale]),bs=s.useCallback(t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();const r=t.deltaY>0?.9:1.1;Tt(E.scale*r,t.clientX,t.clientY)},[E.scale,Tt]),xs=s.useCallback(t=>{if(t.target.closest(".org-chart-node-card"))return;if(t.currentTarget.setPointerCapture?.(t.pointerId),ge.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),ge.current.size===1){ye.current={x:t.clientX-E.x,y:t.clientY-E.y,pointerId:t.pointerId},St(!0);return}if(ge.current.size===2){const u=Array.from(ge.current.values()),g=u[0].x-u[1].x,b=u[0].y-u[1].y;We.current={distance:Math.hypot(g,b),scale:E.scale,centerX:(u[0].x+u[1].x)/2,centerY:(u[0].y+u[1].y)/2},ye.current=null}},[E.scale,E.x,E.y]),fs=s.useCallback(t=>{if(ge.current.has(t.pointerId)){if(ge.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),ge.current.size>=2){const r=Array.from(ge.current.values()),u=We.current;if(!u)return;const g=r[0].x-r[1].x,b=r[0].y-r[1].y,x=Math.hypot(g,b),L=u.scale*(x/u.distance);Tt(L,u.centerX,u.centerY);return}!ye.current||ye.current.pointerId!==t.pointerId||X(r=>ae({...r,x:t.clientX-ye.current.x,y:t.clientY-ye.current.y}))}},[ae,Tt]),Aa=s.useCallback(t=>{ge.current.delete(t.pointerId),ge.current.size<2&&(We.current=null),ge.current.size===0&&(ye.current=null,St(!1))},[]),vs=s.useCallback(t=>{if(t.key==="ArrowLeft")X(r=>ae({...r,x:r.x+Mt}));else if(t.key==="ArrowRight")X(r=>ae({...r,x:r.x-Mt}));else if(t.key==="ArrowUp")X(r=>ae({...r,y:r.y+Mt}));else if(t.key==="ArrowDown")X(r=>ae({...r,y:r.y-Mt}));else if(t.key==="+"||t.key==="=")X(r=>ae({...r,scale:r.scale*1.1}));else if(t.key==="-")X(r=>ae({...r,scale:r.scale*.9}));else if(t.key==="0")rt();else if(t.key==="Home")X({scale:1,x:0,y:0});else return;t.preventDefault()},[ae,rt]),Ra=s.useCallback(()=>{const t=[{value:"horizontal",label:a("agents.layoutHorizontal","Horizontal"),icon:e.jsx(Oa,{size:16}),ariaLabel:a("agents.layoutHorizontalAria","Horizontal layout")},{value:"vertical",label:a("agents.layoutVertical","Vertical"),icon:e.jsx(Ma,{size:16}),ariaLabel:a("agents.layoutVerticalAria","Vertical layout")},{value:"auto",label:a("agents.layoutAuto","Auto"),icon:e.jsx(dt,{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=je===r.value;return e.jsxs("button",{type:"button",className:`btn-icon touch-target agent-org-chart-layout-toggle__button${u?" btn-icon--active":""}`,onClick:()=>Ca(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)})})},[Ca,je]),js=t=>Array.isArray(t.metadata?.skills)?t.metadata.skills:[],zt=t=>cn(t,xt),Ns=de||z||Ie===0,ys=de||z||Ue===0,ks=de||z||He||k===0,ws=de||z||He||ue===0,Ea=Z&&M.length===0,jt=s.useCallback(()=>{re(!0)},[]);return e.jsxs("div",{className:"agents-view",children:[e.jsx(en,{icon:ta,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${U==="list"?" active":""}`,onClick:()=>Ft("list"),title:a("agents.listView","List view"),"aria-label":a("agents.listView","List view"),"aria-pressed":U==="list",children:e.jsx(Ma,{size:16})}),e.jsx("button",{className:`view-toggle-btn${U==="board"?" active":""}`,onClick:()=>Ft("board"),title:a("agents.boardView","Board view"),"aria-label":a("agents.boardView","Board view"),"aria-pressed":U==="board",children:e.jsx(gt,{size:16})}),e.jsx("button",{className:`view-toggle-btn${U==="org"?" active":""}`,onClick:()=>Ft("org"),title:a("agents.orgChartView","Org Chart view"),"aria-label":a("agents.orgChartView","Org Chart view"),"aria-pressed":U==="org",children:e.jsx(Oa,{size:16})})]}),e.jsxs("div",{className:`agents-view-primary-actions${Ne?" agents-view-primary-actions--controls-open":""}`,children:[e.jsx("button",{ref:o,className:`btn-icon agent-controls-trigger${Ne?" agent-controls-trigger--active":""}`,onClick:()=>ie(t=>!t),title:a("agents.controls","Controls"),"aria-label":a("agents.controls","Controls"),"aria-haspopup":"dialog","aria-expanded":Ne,"aria-controls":j,children:e.jsx(tn,{size:16})}),e.jsx("button",{className:"btn-icon",onClick:()=>void D(),title:a("agents.refresh","Refresh"),"aria-label":a("agents.refresh","Refresh"),children:e.jsx(dt,{size:16,className:Z?"spin":void 0})}),!T&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{A(!0),ie(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(aa,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{jt(),ie(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(Ia,{size:16}),a("agents.newAgent","New Agent")]})]}),Ne&&e.jsxs("div",{ref:pt,id:j,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:y,onChange:t=>S(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=>m(t.target.checked),"aria-label":a("agents.showSystemAgents","Show system agents")}),a("agents.showSystemAgents","Show system agents")]})]})}),T&&e.jsxs("div",{className:"agent-controls-mobile-actions",children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{A(!0),ie(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(aa,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{jt(),ie(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(Ia,{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:()=>{ie(!1),fa("paused")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Pt,{}),e.jsx("span",{children:a("agents.pauseAllAgents","Pause All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:de?a("agents.loadingEligibility","Loading eligibility…"):Ie===0?a("agents.noAgentsToPauseHint","No active or running project agents to pause"):a("agents.pauseCountHint",{count:Ie,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:()=>{ie(!1),va(!0)},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(yt,{}),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:ws,onClick:()=>{ie(!1),va(!1)},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Pt,{}),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:ue})})]}),e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:ys,onClick:()=>{ie(!1),fa("active")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(yt,{}),e.jsx("span",{children:a("agents.resumeAllAgents","Resume All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:de?a("agents.loadingEligibility","Loading eligibility…"):Ue===0?a("agents.noAgentsToResumeHint","No paused project agents to resume"):a("agents.resumeCountHint",{count:Ue,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:xt,onChange:t=>{const r=Number(t.target.value);xa(Number.isFinite(r)&&r>0?r:1)},disabled:ha}),e.jsxs("span",{className:"heartbeat-multiplier-value",children:["×",xt.toFixed(1)]}),e.jsx("select",{className:"heartbeat-multiplier-preset",value:String(Zt.reduce((t,r)=>Math.abs(r-xt)<Math.abs(t-xt)?r:t,Zt[0])),onChange:t=>{const r=Number(t.target.value);xa(Number.isFinite(r)&&r>0?r:1)},disabled:ha,"aria-label":a("agents.heartbeatSpeedPreset","Heartbeat speed preset"),children:Zt.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:ft})]})]})]})}),e.jsx(Ln,{isOpen:fe,onClose:()=>{re(!1),me(null)},onCreated:()=>{re(!1),me(null),D()},projectId:i,prefillDraft:ee,agentOnboardingEnabled:p,existingAgents:M,onPrefillDraft:me}),e.jsx(Dn,{isOpen:G,onClose:()=>A(!1),onImported:()=>void D(),projectId:i}),e.jsx(Mn,{stats:I,activeAgents:ls,projectId:i,isOpen:ht,onToggle:()=>oe(t=>!t),onSelectAgent:ms,onOpenTaskLogs:w}),U==="org"?e.jsx("div",{className:"agents-org-full-view",children:e.jsx("div",{className:"agents-view-content agents-view-content--org-full",children:V?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:Ze,"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(Ua,{inline:!0,showInlineBackButton:!1,agentId:V,projectId:i,onClose:Ze,addToast:n,onChildClick:ka,initialTab:_e,initialRunId:se,preferActiveRun:Y},V)})]}):Ea?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(dt,{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:[T?e.jsxs("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:[Ra(),Sa()]}):e.jsxs("div",{className:"agent-org-chart-toolbar",children:[Ra(),e.jsx("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:Sa()})]}),e.jsx("div",{ref:Oe,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:Aa,onPointerCancel:Aa,onKeyDown:vs,"data-panning":Qe?"true":"false",children:e.jsxs("div",{ref:Ve,className:`agent-org-chart-canvas agent-org-chart-canvas--zoom-${Math.round((E.scale??1)*100)}`,"data-panning":Qe?"true":"false",style:{transform:`translate(${E.x}px, ${E.y}px) scale(${E.scale})`},children:[e.jsx("div",{className:`agent-org-chart${_t==="vertical"?" agent-org-chart--vertical":""}`,"data-testid":"agent-org-chart","data-layout-mode":_t,children:ze?e.jsxs("div",{className:"agent-org-chart__loading",role:"status","aria-live":"polite",children:[e.jsx(dt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingOrgChart","Loading org chart...")})]}):Ye.length===0?e.jsx(Kt,{onCtaClick:jt}):(bt.current=[],Ye.map(t=>e.jsx(ts,{node:t,onSelect:us,getHealthStatus:zt,selectedAgentId:Te,registerNodeElement:ps,linksRef:bt},t.agent.id)))}),e.jsx(Bn,{links:bt.current,nodeElements:Be.current,canvasRef:Ve,viewportRef:Oe,layoutMode:_t,transform:E})]})})]})})}):e.jsxs("div",{className:"agents-split-layout",style:T?void 0:{gridTemplateColumns:`${H}px var(--space-sm) minmax(0, 1fr)`},children:[e.jsx("div",{className:`agents-split-sidebar${we?" agents-split-sidebar--hidden-mobile":""}`,children:e.jsx("div",{className:"agents-view-content",children:Ea?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(dt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):U==="board"?e.jsx("div",{className:"agent-board",children:ft.length===0?e.jsx(Kt,{onCtaClick:jt}):ft.map(t=>{const r=zt(t),u=ra(t,r,a),g=na(t.state),b=la("agent-board-card",t.state);return e.jsxs("div",{className:`agent-board-card ${b}${V===t.id?" agent-card--selected":""}`,children:[e.jsxs("div",{ref:B(`board:${t.id}`),className:"agent-board-clickable",onClick:()=>pe(t.id),role:"button",tabIndex:0,onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.key===" "&&x.preventDefault(),pe(t.id))},children:[e.jsxs("div",{className:"agent-board-header",children:[e.jsx("span",{className:"agent-board-icon",children:e.jsx(Ht,{agent:t,size:20})}),e.jsx("span",{className:"agent-board-badge badge text-secondary",children:wa(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(Qt,{taskId:t.taskId,isInViewport:R(`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(Vn,{agent:t,pending:He||Ge.has(t.id),onToggle:x=>void Na(x,!ut(x))}),(t.state==="idle"||t.state==="paused"||t.state==="error")&&e.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>void ja(t.id,t.name),title:a("agents.delete","Delete"),children:e.jsx(La,{size:14})})]})]},t.id)})}):e.jsx("div",{className:"agent-list",children:ft.length===0?e.jsx(Kt,{onCtaClick:jt}):ft.map(t=>{const r=zt(t),u=ra(t,r,a),g=na(t.state),b=la("agent-card",t.state),x=Jt(t.runtimeConfig?.heartbeatIntervalMs),L=sn(x),ne=!ut(t)?qt:String(x),Q=He||ns===t.id||Ge.has(t.id),be=On(t);return e.jsxs("div",{ref:B(`list:${t.id}`),className:`agent-card agent-card--clickable ${b}${V===t.id?" agent-card--selected":""}`,onClick:h=>{const O=h.target;if(O===h.currentTarget){pe(t.id);return}const ke=O.closest('button, select, input, [role="button"]');ke&&ke!==h.currentTarget||pe(t.id)},role:"button",tabIndex:0,onKeyDown:h=>{h.target===h.currentTarget&&(h.key==="Enter"||h.key===" ")&&(h.key===" "&&h.preventDefault(),pe(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:h=>void rs(t.id,h.target.value),onKeyDown:h=>is(h,t.id),onBlur:()=>at(null),autoFocus:!0,children:c.map(h=>e.jsxs("option",{value:h.value,children:[h.icon," ",h.label]},h.value))}):e.jsx("span",{className:"agent-icon agent-icon--clickable",onClick:h=>{h.stopPropagation(),at(t.id)},title:a("agents.clickToChangeRole","Click to change role"),role:"button",tabIndex:0,onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.stopPropagation(),at(t.id))},children:e.jsx(Ht,{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(Xa,{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:wa(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 h=js(t);if(h.length===0)return null;const O=h.slice(0,2),ke=h.length-2;return e.jsxs(e.Fragment,{children:[O.map($t=>e.jsx("span",{className:"badge badge-skill",title:$t,children:xn($t)},$t)),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:[be.isRuntime?a("agents.runtime","Runtime"):a("agents.model","Model"),":"]}),e.jsx("span",{className:"badge agent-model-runtime__value",title:be.label??a("agents.auto","Auto"),children:be.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(Ka,{taskId:t.taskId,taskColumn:t.taskColumn})}),e.jsx(Qt,{taskId:t.taskId,isInViewport:R(`list:${t.id}`),projectId:i})]}),!De(t)&&e.jsxs("div",{className:"agent-heartbeat-control",children:[e.jsx("span",{className:"text-secondary",children:a("agents.heartbeat","Heartbeat:")}),ua===t.id?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"input agent-heartbeat-custom-input",value:ga[t.id]??"",onChange:h=>Ke(O=>({...O,[t.id]:h.target.value})),onKeyDown:h=>{h.key==="Enter"?ya(t):h.key==="Escape"&&(nt(null),Ke(O=>{const ke={...O};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 ya(t),disabled:Q,title:a("agents.saveCustomInterval","Save custom interval"),children:a("agents.save","Save")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>{nt(null),Ke(h=>{const O={...h};return delete O[t.id],O})},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:ne,onChange:h=>{const O=h.target.value;O===qt?cs(t):O==="__custom__"?ds(t):os(t,Number(O))},disabled:Q,"aria-label":a("agents.setHeartbeatAria","Set heartbeat interval for {{name}}",{name:t.name}),children:[e.jsx("option",{value:qt,children:a("agents.heartbeatDisabledOption","Disabled")}),L.map(h=>e.jsx("option",{value:h.value,children:h.label},h.value)),ln.some(h=>h.value===x)&&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 h=new Date(t.lastHeartbeatAt),O=new Date(h.getTime()+x),ke=t.state==="active"||t.state==="running";return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"agent-heartbeat-last text-secondary",title:h.toLocaleString(),children:a("agents.lastHeartbeatAt","Last: {{time}}",{time:h.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})}),ke&&e.jsx("span",{className:"agent-heartbeat-next text-secondary",title:O.toLocaleString(),children:a("agents.nextHeartbeatAt","Next: {{time}}",{time:O.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 vt(t.id,"active"),disabled:Xe.has(t.id),title:a("agents.activate","Activate"),children:[e.jsx(yt,{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:Xe.has(t.id),title:a("agents.runNow","Run Now"),"aria-label":a("agents.runNowAria","Run now for {{name}}",{name:t.name}),children:[e.jsx(gt,{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 vt(t.id,"paused"),disabled:Xe.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Pt,{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 vt(t.id,"active"),disabled:Xe.has(t.id),title:a("agents.resume","Resume"),children:[e.jsx(yt,{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:()=>pe(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(gt,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.running","Running")})]}),e.jsxs("button",{className:"btn btn-sm",onClick:()=>void vt(t.id,"paused"),disabled:Xe.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Pt,{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 vt(t.id,"active"),disabled:Xe.has(t.id),title:a("agents.retry","Retry"),children:[e.jsx(yt,{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:()=>pe(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 ja(t.id,t.name),title:a("agents.delete","Delete"),children:[e.jsx(La,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.delete","Delete")})]})]})]})]},t.id)})})})}),!T&&e.jsx("div",{className:"agents-split-resize-handle","data-testid":"agents-sidebar-resize-handle",role:"separator","aria-orientation":"vertical","aria-valuemin":qa,"aria-valuemax":Ja,"aria-valuenow":H,"aria-label":a("agents.resizeSidebar","Resize agents sidebar"),tabIndex:0,onPointerDown:oa,onKeyDown:At}),e.jsx("div",{className:`agents-split-detail${T&&!V?" agents-split-detail--hidden-mobile":""}`,children:V?e.jsx(s.Suspense,{fallback:null,children:e.jsx(Ua,{inline:!0,showInlineBackButton:T,agentId:V,projectId:i,onClose:Ze,addToast:n,onChildClick:ka,initialTab:_e,initialRunId:se,preferActiveRun:Y,onMutationSuccess:gs},V)}):e.jsxs("div",{className:"agents-detail-empty-state",children:[e.jsx(ta,{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{al as AgentsView};
@@ -1,4 +1,4 @@
1
- import{r as a,j as t}from"./vendor-react-SZ_qB27O.js";import{c as ei,ar as Et,ap as bt,aq as wa,bq as Ms,dB as zi,dC as Oi,dD as ra,av as W,dE as Ui,dq as Dt,dF as At,dr as xa,dG as Hi,dH as Ki,dI as Vi,dJ as Wi,dK as Xi,dL as qi,be as Gi,cO as ya,dM as ke,aZ as Yi,bE as ti,c9 as wn,dN as Qi,am as xn,dO as Ji,dP as Zi,bZ as eo,F as to,aJ as no,b3 as vn,Y as ao,cZ as so,dQ as io,dR as oo,f as ro,aX as co,dS as lo,dT as ni,dU as ai,dV as uo,dn as mo,K as ho,dW as fo,dX as go,dY as Ns,dZ as po,d_ as vo,d$ as Rs,y as bo,q as wo,u as xo,dl as ca,C as un,e0 as mn,e1 as js,v as la,P as gt,V as yo,b$ as As,d0 as Ts,c$ as ko,X as Es,aI as Co,e2 as So,x as da,bD as Mo,e3 as ua,e4 as Ds,e5 as ma,e6 as Is,e7 as Ls,e8 as Ps,e9 as No,ea as Ro,bB as Fs}from"./index-kwRywd9M.js";import{u as Be}from"./vendor-i18n-Duky4gdQ.js";import{SessionTerminal as $s}from"./SessionTerminal-DJO4JTEX.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./shield-alert-C9W2WywS.js";/**
1
+ import{r as a,j as t}from"./vendor-react-SZ_qB27O.js";import{c as ei,ar as Et,ap as bt,aq as wa,bq as Ms,dB as zi,dC as Oi,dD as ra,av as W,dE as Ui,dq as Dt,dF as At,dr as xa,dG as Hi,dH as Ki,dI as Vi,dJ as Wi,dK as Xi,dL as qi,be as Gi,cO as ya,dM as ke,aZ as Yi,bE as ti,c9 as wn,dN as Qi,am as xn,dO as Ji,dP as Zi,bZ as eo,F as to,aJ as no,b3 as vn,Y as ao,cZ as so,dQ as io,dR as oo,f as ro,aX as co,dS as lo,dT as ni,dU as ai,dV as uo,dn as mo,K as ho,dW as fo,dX as go,dY as Ns,dZ as po,d_ as vo,d$ as Rs,y as bo,q as wo,u as xo,dl as ca,C as un,e0 as mn,e1 as js,v as la,P as gt,V as yo,b$ as As,d0 as Ts,c$ as ko,X as Es,aI as Co,e2 as So,x as da,bD as Mo,e3 as ua,e4 as Ds,e5 as ma,e6 as Is,e7 as Ls,e8 as Ps,e9 as No,ea as Ro,bB as Fs}from"./index-D6J9uyUx.js";import{u as Be}from"./vendor-i18n-Duky4gdQ.js";import{SessionTerminal as $s}from"./SessionTerminal-B0S1e8qf.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./shield-alert-BnpS5qUu.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{r as f,j as s,g as dn,a as Wx,b as Wl,c as Hx}from"./vendor-react-SZ_qB27O.js";import{c as Jt,gR as Gx,dl as xh,L as Hl,h as Ai,gS as Ei,a as fr,w as mr,aW as fn,gT as Gl,ab as Xl,gU as Tu,R as Ht,ay as Xx,gV as Yx,aL as Zx,aS as _i,gW as jh,ds as Jx,aX as wh,aY as Ch,bS as Qx,aJ as Yl,c0 as Zl,c1 as ej,gX as tj,am as rj,fj as nj,gY as aj,ae as kh,gZ as ij,g_ as sj,bB as Mu,g$ as Iu,fu as oj,gx as ws,h0 as Du,h1 as ha,be as Go,h2 as lj,h3 as cj,h4 as uj,h5 as dj,gy as fj,h6 as mj,h7 as vj,h8 as hj,gu as pj,h9 as yj,y as gj,aM as bj,gz as Sh,ha as xj,c9 as jj,u as wj,hb as Cj,as as kj,hc as Cs,hd as Sj,he as Pj,hf as Nj,hg as Oj,hh as Aj,hi as Ej,hj as Jl,hk as Ql,hl as Ru,cO as za,hm as Lu,hn as Xo,ho as Ph,hp as Yo,bf as Nh,bC as Oh,_ as _j,c2 as Ah,d7 as Tj,x as Zo,cW as Mj,F as ec,C as tc,P as Ka,hq as Ij,hr as Dj,v as Rj,eL as $u,X as Ia,E as Lj,p as $j,b1 as Bu,aH as Bj,hs as Fu,ht as Fj,hu as zj,hv as Kj,hw as Vj,dm as Uj,hx as ks,hy as qj,hz as Wj,hA as Hj}from"./index-kwRywd9M.js";import{u as oe}from"./vendor-i18n-Duky4gdQ.js";import{a as Eh,b as _h,p as Gj,w as Xj}from"./vendor-reactflow-BlIeoTu4.js";import{w as Th,n as Mh,a as Me,A as rc,G as Yj,H as Zj,l as Ih,t as Ti,b as _t,p as Jo,s as Va,c as Dh,q as Jj,r as Qj,u as e0,v as t0,x as r0,y as n0,z as a0,C as i0,D as s0,k as o0,E as l0,F as c0}from"./step-yuy0qJer.js";import{b as u0,p as d0}from"./band-CquvqAHh.js";import{d as Ua,n as f0,e as m0,f as Qo,g as Fr,h as nc,a as ac,i as zu,j as Wt,c as v0,k as Mi,l as h0,m as p0}from"./linear-Dyk9wory.js";import{i as pr,a as Qt}from"./init-Dmth1JHB.js";import{m as Ku,a as Vu,p as y0,q as g0,u as b0,s as x0,r as j0,v as w0,w as C0,x as k0,y as S0,z as P0,A as N0,B as O0,t as A0}from"./time-2wBVBf9F.js";import{f as E0,b as _0}from"./defaultLocale-DX6XiGOO.js";import{i as T0,o as M0}from"./ordinal-DILIJJjt.js";import{r as I0}from"./agentsOrgChartLayout-BMvyuaLA.js";import{U as ic}from"./upload-DxEwowRU.js";import{S as D0}from"./shield-alert-C9W2WywS.js";import{b as R0}from"./agent-import-generation-DGUNF3nd.js";import{r as L0,B as $0,R as B0,b as F0,a as z0}from"./ReportModal-Clh1S8RF.js";import{PluginManager as K0}from"./PluginManager-D88G_TZh.js";import{v as V0}from"./projectDetection-G3XuxD2X.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./DirectoryPicker-BjMPhCdh.js";import"./folder-open-CHiAJbTN.js";/**
1
+ import{r as f,j as s,g as dn,a as Wx,b as Wl,c as Hx}from"./vendor-react-SZ_qB27O.js";import{c as Jt,gR as Gx,dl as xh,L as Hl,h as Ai,gS as Ei,a as fr,w as mr,aW as fn,gT as Gl,ab as Xl,gU as Tu,R as Ht,ay as Xx,gV as Yx,aL as Zx,aS as _i,gW as jh,ds as Jx,aX as wh,aY as Ch,bS as Qx,aJ as Yl,c0 as Zl,c1 as ej,gX as tj,am as rj,fj as nj,gY as aj,ae as kh,gZ as ij,g_ as sj,bB as Mu,g$ as Iu,fu as oj,gx as ws,h0 as Du,h1 as ha,be as Go,h2 as lj,h3 as cj,h4 as uj,h5 as dj,gy as fj,h6 as mj,h7 as vj,h8 as hj,gu as pj,h9 as yj,y as gj,aM as bj,gz as Sh,ha as xj,c9 as jj,u as wj,hb as Cj,as as kj,hc as Cs,hd as Sj,he as Pj,hf as Nj,hg as Oj,hh as Aj,hi as Ej,hj as Jl,hk as Ql,hl as Ru,cO as za,hm as Lu,hn as Xo,ho as Ph,hp as Yo,bf as Nh,bC as Oh,_ as _j,c2 as Ah,d7 as Tj,x as Zo,cW as Mj,F as ec,C as tc,P as Ka,hq as Ij,hr as Dj,v as Rj,eL as $u,X as Ia,E as Lj,p as $j,b1 as Bu,aH as Bj,hs as Fu,ht as Fj,hu as zj,hv as Kj,hw as Vj,dm as Uj,hx as ks,hy as qj,hz as Wj,hA as Hj}from"./index-D6J9uyUx.js";import{u as oe}from"./vendor-i18n-Duky4gdQ.js";import{a as Eh,b as _h,p as Gj,w as Xj}from"./vendor-reactflow-BlIeoTu4.js";import{w as Th,n as Mh,a as Me,A as rc,G as Yj,H as Zj,l as Ih,t as Ti,b as _t,p as Jo,s as Va,c as Dh,q as Jj,r as Qj,u as e0,v as t0,x as r0,y as n0,z as a0,C as i0,D as s0,k as o0,E as l0,F as c0}from"./step-yuy0qJer.js";import{b as u0,p as d0}from"./band-CquvqAHh.js";import{d as Ua,n as f0,e as m0,f as Qo,g as Fr,h as nc,a as ac,i as zu,j as Wt,c as v0,k as Mi,l as h0,m as p0}from"./linear-Dyk9wory.js";import{i as pr,a as Qt}from"./init-Dmth1JHB.js";import{m as Ku,a as Vu,p as y0,q as g0,u as b0,s as x0,r as j0,v as w0,w as C0,x as k0,y as S0,z as P0,A as N0,B as O0,t as A0}from"./time-2wBVBf9F.js";import{f as E0,b as _0}from"./defaultLocale-DX6XiGOO.js";import{i as T0,o as M0}from"./ordinal-DILIJJjt.js";import{r as I0}from"./agentsOrgChartLayout-BMvyuaLA.js";import{U as ic}from"./upload-D2j8N8vC.js";import{S as D0}from"./shield-alert-BnpS5qUu.js";import{b as R0}from"./agent-import-generation-D74gC46R.js";import{r as L0,B as $0,R as B0,b as F0,a as z0}from"./ReportModal-BC9DhvX4.js";import{PluginManager as K0}from"./PluginManager-BeKLun0C.js";import{v as V0}from"./projectDetection-G3XuxD2X.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-xterm-BNq00GSj.js";import"./DirectoryPicker-CKj8CfUJ.js";import"./folder-open-DBW3UhL6.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.