@runfusion/fusion 0.56.0 → 0.56.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/bin.js +45 -7
  2. package/dist/client/.vite/manifest.json +234 -234
  3. package/dist/client/assets/{AgentDetailView-BPzzEIn1.js → AgentDetailView-BICsleMh.js} +1 -1
  4. package/dist/client/assets/{AgentPermissionPolicyEditor-CqlLF0pf.js → AgentPermissionPolicyEditor-DQDzCWq_.js} +2 -2
  5. package/dist/client/assets/{AgentsView-C4uCWzdt.js → AgentsView-DRpFG7gE.js} +3 -3
  6. package/dist/client/assets/{ChatView-BGV9F2K0.js → ChatView-5vVkIiNh.js} +2 -2
  7. package/dist/client/assets/{CommandCenter-BhIfVVjz.js → CommandCenter-CZ856YOj.js} +1 -1
  8. package/dist/client/assets/{DevServerView-Bd86MWUa.js → DevServerView-BqsnMChS.js} +1 -1
  9. package/dist/client/assets/{DirectoryPicker-BDe9G84f.js → DirectoryPicker-cW1rnVoG.js} +1 -1
  10. package/dist/client/assets/{DocumentsView-BkAHMt19.js → DocumentsView-C6a5tuBQ.js} +1 -1
  11. package/dist/client/assets/{EvalsView-BxxCVaJ8.js → EvalsView-DZd_TM3I.js} +1 -1
  12. package/dist/client/assets/{ExperimentalAgentOnboardingModal-7-BD6W1v.js → ExperimentalAgentOnboardingModal-cA-aWWsB.js} +1 -1
  13. package/dist/client/assets/{GoalsView-B3KICwNu.js → GoalsView-Bzvw1aDV.js} +1 -1
  14. package/dist/client/assets/{InsightsView-DO8qefU1.js → InsightsView-B3WQIXKs.js} +2 -2
  15. package/dist/client/assets/{MemoryView-urkPdqTn.js → MemoryView-BZ2KwFO5.js} +1 -1
  16. package/dist/client/assets/{PiExtensionsManager-BwVKjJIo.js → PiExtensionsManager-D5x6GZOP.js} +2 -2
  17. package/dist/client/assets/{PluginManager-C-OuqDLa.js → PluginManager-YfHRH24B.js} +1 -1
  18. package/dist/client/assets/{PullRequestView-B4q4X5WV.js → PullRequestView-DX3J4hgm.js} +1 -1
  19. package/dist/client/assets/{ResearchView-DlW6z3sm.js → ResearchView-MZV2S2kT.js} +1 -1
  20. package/dist/client/assets/{SecretsView-C-3eC0KB.js → SecretsView--R3u3G4b.js} +1 -1
  21. package/dist/client/assets/SessionTerminal-BQWc1_Ty.js +2 -0
  22. package/dist/client/assets/{SettingsModal-qs8w3rov.js → SettingsModal-CNYosRF3.js} +4 -4
  23. package/dist/client/assets/{SettingsModal-BzXctrhu.js → SettingsModal-Coqvlmud.js} +1 -1
  24. package/dist/client/assets/{SettingsModal-BC_2Y56_.css → SettingsModal-D8AyVDar.css} +1 -1
  25. package/dist/client/assets/{SetupWizardModal-DDJ8PCkH.js → SetupWizardModal-CoReXugb.js} +2 -2
  26. package/dist/client/assets/{ShadcnColorPicker-BcD5fZ_P.js → ShadcnColorPicker-D-u_ECbM.js} +1 -1
  27. package/dist/client/assets/{SkillsView-DojlvxFh.js → SkillsView-D21ils_G.js} +1 -1
  28. package/dist/client/assets/{TodoView-BKZ07WxZ.js → TodoView-BFZQSkv4.js} +2 -2
  29. package/dist/client/assets/{WorkflowNodeEditor-BJNbi4_V.js → WorkflowNodeEditor-E-7d5R9z.js} +3 -3
  30. package/dist/client/assets/{agentSkills-NbIIJy87.js → agentSkills-CM_yYVTx.js} +1 -1
  31. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CJu9RVXs.js → architectureDiagram-3BPJPVTR-DhgVYwmg.js} +1 -1
  32. package/dist/client/assets/{blockDiagram-GPEHLZMM-crZsLLTq.js → blockDiagram-GPEHLZMM-AlG0kVWu.js} +1 -1
  33. package/dist/client/assets/{c4Diagram-AAUBKEIU-D5mmJKvW.js → c4Diagram-AAUBKEIU-BOzpW3F7.js} +1 -1
  34. package/dist/client/assets/channel-DHSVrpL1.js +1 -0
  35. package/dist/client/assets/{chunk-2J33WTMH-BZIDltTX.js → chunk-2J33WTMH-BAmZfsv0.js} +1 -1
  36. package/dist/client/assets/{chunk-4BX2VUAB-ND_SzhUa.js → chunk-4BX2VUAB-Cs587QhG.js} +1 -1
  37. package/dist/client/assets/{chunk-55IACEB6-C3n-Nisk.js → chunk-55IACEB6-qpIQSO06.js} +1 -1
  38. package/dist/client/assets/{chunk-727SXJPM-DfiPA7wv.js → chunk-727SXJPM-DF3vZtMc.js} +1 -1
  39. package/dist/client/assets/{chunk-AQP2D5EJ-CDE0u57Z.js → chunk-AQP2D5EJ-BuETIys5.js} +1 -1
  40. package/dist/client/assets/{chunk-FMBD7UC4-COR53PTE.js → chunk-FMBD7UC4-B8D1TSR9.js} +1 -1
  41. package/dist/client/assets/{chunk-ND2GUHAM-CbcTdl7C.js → chunk-ND2GUHAM-BJv9aIQn.js} +1 -1
  42. package/dist/client/assets/{chunk-QZHKN3VN-DiB3PReK.js → chunk-QZHKN3VN-BJbK2pNR.js} +1 -1
  43. package/dist/client/assets/classDiagram-4FO5ZUOK-CTu3cN1i.js +1 -0
  44. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CTu3cN1i.js +1 -0
  45. package/dist/client/assets/{cose-bilkent-S5V4N54A-Dg3YVyLX.js → cose-bilkent-S5V4N54A-BWRikddb.js} +1 -1
  46. package/dist/client/assets/{dagre-BM42HDAG-D2bK3gNb.js → dagre-BM42HDAG-DpAxJj7T.js} +1 -1
  47. package/dist/client/assets/{dashboard-view-t2UfQxck.js → dashboard-view-Dw8L8k-2.js} +1 -1
  48. package/dist/client/assets/{dashboard-view-BcbTWSCe.js → dashboard-view-qq3ayA0B.js} +1 -1
  49. package/dist/client/assets/{diagram-2AECGRRQ-BWT8KaEl.js → diagram-2AECGRRQ-DRRIILsg.js} +1 -1
  50. package/dist/client/assets/{diagram-5GNKFQAL-DWfJlASD.js → diagram-5GNKFQAL-DSOu28ss.js} +1 -1
  51. package/dist/client/assets/{diagram-KO2AKTUF-DE3hFbLT.js → diagram-KO2AKTUF-CWzbnTBM.js} +1 -1
  52. package/dist/client/assets/{diagram-LMA3HP47-CYCFeD4B.js → diagram-LMA3HP47-CGqf3bt6.js} +1 -1
  53. package/dist/client/assets/{diagram-OG6HWLK6-C0C8lEGv.js → diagram-OG6HWLK6-C1axXteT.js} +1 -1
  54. package/dist/client/assets/{erDiagram-TEJ5UH35-kSo7RjKA.js → erDiagram-TEJ5UH35-bBdlc4OY.js} +1 -1
  55. package/dist/client/assets/{flowDiagram-I6XJVG4X-DxRf1SVH.js → flowDiagram-I6XJVG4X-BTCJ2J3b.js} +1 -1
  56. package/dist/client/assets/{folder-open-DO1rnCxq.js → folder-open-BN3_NdbL.js} +1 -1
  57. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CGtxSeWq.js → ganttDiagram-6RSMTGT7-CiFY9oBj.js} +1 -1
  58. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-BNZv_DFY.js → gitGraphDiagram-PVQCEYII-CxubcP4l.js} +1 -1
  59. package/dist/client/assets/index-CbmH1ED8.css +1 -0
  60. package/dist/client/assets/{index-D7eX7QJk.js → index-rfsTNfpA.js} +271 -271
  61. package/dist/client/assets/{infoDiagram-5YYISTIA-DailohMo.js → infoDiagram-5YYISTIA-ToDlIyOV.js} +1 -1
  62. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-Cy3shDZP.js → ishikawaDiagram-YF4QCWOH-BgO681xo.js} +1 -1
  63. package/dist/client/assets/{journeyDiagram-JHISSGLW-B1rU18Qx.js → journeyDiagram-JHISSGLW-OJZ3op9w.js} +1 -1
  64. package/dist/client/assets/{kanban-definition-UN3LZRKU-CRNUDgkO.js → kanban-definition-UN3LZRKU-q2OOqX8K.js} +1 -1
  65. package/dist/client/assets/{mermaid.core-Cg0po76i.js → mermaid.core-BmDOYmFS.js} +4 -4
  66. package/dist/client/assets/{mindmap-definition-RKZ34NQL-CEjwlhOe.js → mindmap-definition-RKZ34NQL-Dw8JehwG.js} +1 -1
  67. package/dist/client/assets/{pieDiagram-4H26LBE5-70T-php2.js → pieDiagram-4H26LBE5-D5Li6GnX.js} +1 -1
  68. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-ChcpRG7l.js → quadrantDiagram-W4KKPZXB-B4s-2jdZ.js} +1 -1
  69. package/dist/client/assets/{requirementDiagram-4Y6WPE33-9Pzb_Cot.js → requirementDiagram-4Y6WPE33-Drc3rc_E.js} +1 -1
  70. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Bx6DkeKq.js → sankeyDiagram-5OEKKPKP-C_R01GQC.js} +1 -1
  71. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-emWPkPv7.js → sequenceDiagram-3UESZ5HK-gyl7Yhgc.js} +1 -1
  72. package/dist/client/assets/{shield-alert-BdAjnDkU.js → shield-alert-DjhYmFaV.js} +1 -1
  73. package/dist/client/assets/{stateDiagram-AJRCARHV-B_X2-VQy.js → stateDiagram-AJRCARHV-BY53czZh.js} +1 -1
  74. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-DvQssSEq.js → stateDiagram-v2-BHNVJYJU-C53cIaWg.js} +1 -1
  75. package/dist/client/assets/{timeline-definition-PNZ67QCA-CkyhunuI.js → timeline-definition-PNZ67QCA-BYwv2FZJ.js} +1 -1
  76. package/dist/client/assets/{upload-D9-yuO2D.js → upload-BKpOp-Bn.js} +1 -1
  77. package/dist/client/assets/{users-B4aebngl.js → users-BUMHTZuX.js} +1 -1
  78. package/dist/client/assets/{vennDiagram-CIIHVFJN-8OGD6Vb7.js → vennDiagram-CIIHVFJN-Dt94bP0k.js} +1 -1
  79. package/dist/client/assets/{wardley-L42UT6IY-MnRFGNPm.js → wardley-L42UT6IY-536kdB5p.js} +1 -1
  80. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BAEzb08c.js → wardleyDiagram-YWT4CUSO-D8iNQ_MW.js} +1 -1
  81. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DUxideKC.js → xychartDiagram-2RQKCTM6-CXqp8mzh.js} +1 -1
  82. package/dist/client/index.html +2 -2
  83. package/dist/client/version.json +1 -1
  84. package/dist/droid-cli/package.json +1 -1
  85. package/dist/extension.js +10 -4
  86. package/dist/pi-claude-cli/package.json +1 -1
  87. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  88. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  89. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  90. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  91. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  92. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  93. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  94. package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
  95. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  96. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  97. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  98. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  99. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  100. package/package.json +1 -1
  101. package/dist/client/assets/SessionTerminal-DVfyVeS2.js +0 -2
  102. package/dist/client/assets/channel-Zfk0yRN2.js +0 -1
  103. package/dist/client/assets/classDiagram-4FO5ZUOK-BehQ-wnv.js +0 -1
  104. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BehQ-wnv.js +0 -1
  105. package/dist/client/assets/index-BCf32Sgx.css +0 -1
@@ -1,4 +1,4 @@
1
- import{r as a,j as e}from"./vendor-react-SZ_qB27O.js";import{c as Kt,c8 as qs,c9 as Ks,ca as Ys,cb as Zs,L as G,R as Pt,bS as os,Z as Qs,bv as Dt,cc as js,J as lt,o as ys,C as Ns,cd as Xs,ce as ea,cf as ta,af as Ss,cg as sa,ch as aa,br as _,ci as na,cj as ks,ck as Cs,cl as ia,bq as Mt,cm as zt,aj as wt,bu as ws,f as Rs,cn as Ht,bP as Ft,co as cs,cp as Ze,cq as ra,X as Ms,aK as ot,cr as la,bt as Fs,cs as As,ct as oa,a4 as ca,H as da,cu as Ps,ak as Ts,bw as Yt,cv as ua,cw as ds,cx as ma,cy as ga,cz as Gt,cA as Es,cB as ha,l as fa,cC as pa,q as Ls,cD as Ds,be as ba,h as ge,cE as zs,cF as us,cG as ms,cH as xa,cI as va,cJ as ja,cK as ya,cL as ct,F as dt,s as ut,v as mt,aI as Hs,cM as Na,cN as Sa,cO as ka,cP as Ca,cQ as gs,bN as wa,cR as It,cS as Ra,cT as Ma,bR as Fa,am as Aa,cU as qt,cV as Pa,cW as Ta,cX as Ea,cY as La,cZ as Da,c_ as Is,c$ as za,d0 as Ha,d1 as Ia,d2 as Ba,d3 as $a}from"./index-D7eX7QJk.js";import{u as Se}from"./vendor-i18n-GF3RlKbq.js";import{f as Bt,S as Oa}from"./agentSkills-NbIIJy87.js";import{ExperimentalAgentOnboardingModal as _a}from"./ExperimentalAgentOnboardingModal-7-BD6W1v.js";import{B as Ua,A as Va}from"./AgentPermissionPolicyEditor-CqlLF0pf.js";import"./vendor-reactflow-CnI7NMXG.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-xterm-BNq00GSj.js";/**
1
+ import{r as a,j as e}from"./vendor-react-SZ_qB27O.js";import{c as Kt,c9 as qs,ca as Ks,cb as Ys,cc as Zs,L as G,R as Pt,bT as os,Z as Qs,bw as Dt,cd as js,J as lt,o as ys,C as Ns,ce as Xs,cf as ea,cg as ta,ag as Ss,ch as sa,ci as aa,bs as _,cj as na,ck as ks,cl as Cs,cm as ia,br as Mt,cn as zt,ak as wt,bv as ws,f as Rs,co as Ht,bQ as Ft,cp as cs,cq as Ze,cr as ra,X as Ms,aL as ot,cs as la,bu as Fs,ct as As,cu as oa,a4 as ca,H as da,cv as Ps,al as Ts,bx as Yt,cw as ua,cx as ds,cy as ma,cz as ga,cA as Gt,cB as Es,cC as ha,l as fa,cD as pa,q as Ls,cE as Ds,bf as ba,h as ge,cF as zs,cG as us,cH as ms,cI as xa,cJ as va,cK as ja,cL as ya,cM as ct,F as dt,s as ut,v as mt,aJ as Hs,cN as Na,cO as Sa,cP as ka,cQ as Ca,cR as gs,bO as wa,cS as It,cT as Ra,cU as Ma,bS as Fa,an as Aa,cV as qt,cW as Pa,cX as Ta,cY as Ea,cZ as La,c_ as Da,c$ as Is,d0 as za,d1 as Ha,d2 as Ia,d3 as Ba,d4 as $a}from"./index-rfsTNfpA.js";import{u as Se}from"./vendor-i18n-GF3RlKbq.js";import{f as Bt,S as Oa}from"./agentSkills-CM_yYVTx.js";import{ExperimentalAgentOnboardingModal as _a}from"./ExperimentalAgentOnboardingModal-cA-aWWsB.js";import{B as Ua,A as Va}from"./AgentPermissionPolicyEditor-DQDzCWq_.js";import"./vendor-reactflow-CnI7NMXG.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-xterm-BNq00GSj.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,6 +1,6 @@
1
- import{c as F,bf as N,bg as O,bh as R}from"./index-D7eX7QJk.js";import{r as j,j as e}from"./vendor-react-SZ_qB27O.js";import{u as U}from"./vendor-i18n-GF3RlKbq.js";/**
1
+ import{c as F,bg as N,bh as O,bi as R}from"./index-rfsTNfpA.js";import{r as j,j as e}from"./vendor-react-SZ_qB27O.js";import{u as U}from"./vendor-i18n-GF3RlKbq.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
- */const W=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],Z=F("book-open",W),P=["allow","require-approval","block"],f=/^[A-Za-z0-9_-]+$/;function X(){const o=new Set(R),a=new Set;for(const c of Object.values(O))for(const n of c)f.test(n)&&!o.has(n)&&a.add(n);return[...a].sort()}function Y(o){return{git_write:{label:o("agentPolicy.category.gitWrite.label","Git writes"),description:o("agentPolicy.category.gitWrite.description","Commits, branch updates, and merge-affecting git changes.")},file_write_delete:{label:o("agentPolicy.category.fileWriteDelete.label","File writes/deletes"),description:o("agentPolicy.category.fileWriteDelete.description","Create, edit, or remove files in the workspace.")},command_execution:{label:o("agentPolicy.category.commandExecution.label","Command execution"),description:o("agentPolicy.category.commandExecution.description","Runs shell commands and scripts.")},network_api:{label:o("agentPolicy.category.networkApi.label","Network/API"),description:o("agentPolicy.category.networkApi.description","Outbound network or API access.")},task_agent_mutation:{label:o("agentPolicy.category.taskAgentMutation.label","Task/agent mutation"),description:o("agentPolicy.category.taskAgentMutation.description","Task state changes, delegation, or agent lifecycle actions.")}}}function y(o,a){if(a==="require-approval")return o("agentPolicy.requireApproval","Require approval");if(a==="allow")return o("agentPolicy.allow","Allow");if(a==="block")return o("agentPolicy.block","Block");const c=a;return c.charAt(0).toUpperCase()+c.slice(1)}function B(){return{git_write:"allow",file_write_delete:"allow",command_execution:"allow",network_api:"allow",task_agent_mutation:"allow"}}const v={unrestricted:{git_write:"allow",file_write_delete:"allow",command_execution:"allow",network_api:"allow",task_agent_mutation:"allow"},"approval-required":{git_write:"require-approval",file_write_delete:"require-approval",command_execution:"require-approval",network_api:"require-approval",task_agent_mutation:"require-approval"},"locked-down":{git_write:"block",file_write_delete:"block",command_execution:"block",network_api:"block",task_agent_mutation:"block"}};function $(o){return v[o]}function b(o,a){return N.every(c=>o[c]===a[c])}function z(o){return b(o,v.unrestricted)?"unrestricted":b(o,v["approval-required"])?"approval-required":b(o,v["locked-down"])?"locked-down":"custom"}function J({value:o,projectDefault:a,projectDefaultToolRules:c,mode:n,onChange:p,disabled:u=!1}){const{t:l}=U("app"),E=Y(l),I=j.useMemo(()=>X(),[]),[h,A]=j.useState("fn_task_create"),[w,D]=j.useState("block"),S=o?z(o.rules):"unrestricted",q=n==="agent-override"&&!o?"inherit":o?.presetId==="custom"?S:o?.presetId??"unrestricted",m=o?.rules??B(),g=o?.toolRules??{},_=Object.entries(g).sort(([t],[i])=>t.localeCompare(i)),x=t=>({...t,...Object.keys(g).length>0?{toolRules:{...g}}:{}}),C=t=>{if(n==="agent-override"&&t==="inherit"){p(void 0);return}if(t==="custom"){p(x({presetId:"custom",rules:{...m}}));return}p(x({presetId:t,rules:$(t)}))},L=(t,i)=>{if(n==="agent-override"&&i==="inherit"){if(!o)return;const r={...o.rules};r[t]=a?.[t]??"allow",p(x({presetId:"custom",rules:r}));return}const s={...m,[t]:i};p(x({presetId:"custom",rules:s}))},k=(t,i)=>{const s=t.trim();if(!s||!f.test(s))return;const r={...g,[s]:i};p({presetId:"custom",rules:{...m},toolRules:r})},M=t=>{const i={...g};delete i[t],p({presetId:"custom",rules:{...m},...Object.keys(i).length>0?{toolRules:i}:{}})},G=()=>{k(h,w)};return e.jsxs("div",{className:"agent-policy-editor card",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"agent-policy-preset",children:l("agentPolicy.preset","Preset")}),e.jsxs("select",{id:"agent-policy-preset",className:"select",value:q,onChange:t=>C(t.target.value),disabled:u,children:[n==="agent-override"?e.jsx("option",{value:"inherit",children:l("agentPolicy.inheritDefault","Inherit project default")}):null,e.jsx("option",{value:"unrestricted",children:l("agentPolicy.unrestricted","Unrestricted")}),e.jsx("option",{value:"approval-required",children:l("agentPolicy.approvalRequired","Approval Required")}),e.jsx("option",{value:"locked-down",children:l("agentPolicy.lockedDown","Locked Down")}),e.jsx("option",{value:"custom",children:l("agentPolicy.custom","Custom")})]})]}),e.jsx("div",{className:"agent-policy-table",role:"table","aria-label":l("agentPolicy.ariaLabel","Permission policy categories"),children:N.map(t=>{const i=E[t]??{label:t,description:""},s=a?.[t]??"allow",r=m[t]??"allow",T=n==="agent-override"&&!o?"inherit":r;return e.jsxs("div",{className:"agent-policy-row",role:"row","data-category":t,children:[e.jsxs("div",{className:"agent-policy-cell",children:[e.jsx("strong",{children:i.label}),e.jsx("div",{className:"agent-policy-description",children:i.description}),e.jsx("ul",{className:"agent-policy-examples","aria-label":l("agentPolicy.categoryExamples","{{label}} examples",{label:i.label}),children:(O[t]??[]).map(d=>e.jsx("li",{children:e.jsx("code",{children:d})},`${t}-${d}`))})]}),e.jsxs("div",{className:"agent-policy-cell",children:[e.jsxs("select",{className:"select",value:T,onChange:d=>L(t,d.target.value),disabled:u,children:[n==="agent-override"?e.jsx("option",{value:"inherit",children:l("agentPolicy.inherit","Inherit")}):null,P.map(d=>e.jsx("option",{value:d,children:y(l,d)},d))]}),n==="agent-override"&&T==="inherit"?e.jsxs("div",{className:"agent-policy-inherit-note",children:[l("agentPolicy.fromProjectDefault","from project default"),": ",y(l,s)]}):null]})]},t)})}),e.jsxs("section",{className:"agent-policy-tool-rules","aria-labelledby":"agent-policy-tool-rules-heading",children:[e.jsx("div",{className:"agent-policy-tool-rules-header",children:e.jsxs("div",{children:[e.jsx("h4",{id:"agent-policy-tool-rules-heading",children:l("agentPolicy.exactToolOverrides","Exact tool overrides")}),e.jsx("p",{children:l("agentPolicy.exactToolOverridesDescription","Override one governed tool by exact name before its category rule. Heartbeat-critical exempt tools stay non-configurable.")})]})}),_.length===0?e.jsx("div",{className:"agent-policy-tool-empty","data-testid":"agent-policy-tool-empty",children:l("agentPolicy.noExactToolOverrides","No exact tool overrides configured.")}):e.jsx("div",{className:"agent-policy-tool-list","data-testid":"agent-policy-tool-list",children:_.map(([t,i])=>{const s=c?.[t];return e.jsxs("div",{className:"agent-policy-tool-row","data-testid":"agent-policy-tool-row",children:[e.jsxs("label",{children:[e.jsx("span",{children:l("agentPolicy.toolName","Tool name")}),e.jsx("input",{className:"input",value:t,disabled:!0,readOnly:!0})]}),e.jsxs("label",{children:[e.jsx("span",{children:l("agentPolicy.toolDisposition","Disposition")}),e.jsx("select",{className:"select","aria-label":l("agentPolicy.toolDispositionFor","Disposition for {{toolName}}",{toolName:t}),value:i,onChange:r=>k(t,r.target.value),disabled:u,children:P.map(r=>e.jsx("option",{value:r,children:y(l,r)},r))}),n==="agent-override"&&s?e.jsxs("small",{className:"agent-policy-inherit-note",children:[l("agentPolicy.projectDefaultExactTool","project default exact rule"),": ",y(l,s)]}):null]}),e.jsx("button",{type:"button",className:"btn btn-secondary","aria-label":l("agentPolicy.removeToolOverride","Remove exact override for {{toolName}}",{toolName:t}),onClick:()=>M(t),disabled:u,children:l("agentPolicy.remove","Remove")})]},t)})}),e.jsxs("div",{className:"agent-policy-tool-add","data-testid":"agent-policy-tool-add",children:[e.jsxs("label",{children:[e.jsx("span",{children:l("agentPolicy.toolName","Tool name")}),e.jsx("input",{className:"input",list:"agent-policy-known-tools",value:h,onChange:t=>A(t.target.value),disabled:u,"aria-label":l("agentPolicy.toolOverrideTool","Tool override tool")}),e.jsx("datalist",{id:"agent-policy-known-tools",children:I.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("label",{children:[e.jsx("span",{children:l("agentPolicy.toolDisposition","Disposition")}),e.jsx("select",{className:"select",value:w,onChange:t=>D(t.target.value),disabled:u,"aria-label":l("agentPolicy.toolOverrideDisposition","Tool override disposition"),children:P.map(t=>e.jsx("option",{value:t,children:y(l,t)},t))})]}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:G,disabled:u||!f.test(h.trim()),children:g[h.trim()]?l("agentPolicy.updateToolOverride","Update override"):l("agentPolicy.addToolOverride","Add override")})]})]}),e.jsxs("details",{className:"agent-policy-exempt",open:!1,children:[e.jsx("summary",{children:l("agentPolicy.exemptTools","Tools exempt from approval policy")}),e.jsx("p",{children:l("agentPolicy.exemptToolsDescription","These coordination tools bypass approval policy so heartbeats and inter-agent messaging cannot deadlock. They are not user-configurable.")}),e.jsx("ul",{className:"agent-policy-exempt-list",children:R.map(t=>e.jsx("li",{children:e.jsx("code",{children:t})},t))})]})]})}export{J as A,Z as B};
6
+ */const W=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],Z=F("book-open",W),P=["allow","require-approval","block"],w=/^[A-Za-z0-9_-]+$/;function X(){const o=new Set(R),a=new Set;for(const c of Object.values(O))for(const n of c)w.test(n)&&!o.has(n)&&a.add(n);return[...a].sort()}function Y(o){return{git_write:{label:o("agentPolicy.category.gitWrite.label","Git writes"),description:o("agentPolicy.category.gitWrite.description","Commits, branch updates, and merge-affecting git changes.")},file_write_delete:{label:o("agentPolicy.category.fileWriteDelete.label","File writes/deletes"),description:o("agentPolicy.category.fileWriteDelete.description","Create, edit, or remove files in the workspace.")},command_execution:{label:o("agentPolicy.category.commandExecution.label","Command execution"),description:o("agentPolicy.category.commandExecution.description","Runs shell commands and scripts.")},network_api:{label:o("agentPolicy.category.networkApi.label","Network/API"),description:o("agentPolicy.category.networkApi.description","Outbound network or API access.")},task_agent_mutation:{label:o("agentPolicy.category.taskAgentMutation.label","Task/agent mutation"),description:o("agentPolicy.category.taskAgentMutation.description","Task state changes, delegation, or agent lifecycle actions.")}}}function y(o,a){if(a==="require-approval")return o("agentPolicy.requireApproval","Require approval");if(a==="allow")return o("agentPolicy.allow","Allow");if(a==="block")return o("agentPolicy.block","Block");const c=a;return c.charAt(0).toUpperCase()+c.slice(1)}function B(){return{git_write:"allow",file_write_delete:"allow",command_execution:"allow",network_api:"allow",task_agent_mutation:"allow"}}const v={unrestricted:{git_write:"allow",file_write_delete:"allow",command_execution:"allow",network_api:"allow",task_agent_mutation:"allow"},"approval-required":{git_write:"require-approval",file_write_delete:"require-approval",command_execution:"require-approval",network_api:"require-approval",task_agent_mutation:"require-approval"},"locked-down":{git_write:"block",file_write_delete:"block",command_execution:"block",network_api:"block",task_agent_mutation:"block"}};function $(o){return v[o]}function b(o,a){return N.every(c=>o[c]===a[c])}function z(o){return b(o,v.unrestricted)?"unrestricted":b(o,v["approval-required"])?"approval-required":b(o,v["locked-down"])?"locked-down":"custom"}function J({value:o,projectDefault:a,projectDefaultToolRules:c,mode:n,onChange:p,disabled:u=!1}){const{t:l}=U("app"),E=Y(l),I=j.useMemo(()=>X(),[]),[h,A]=j.useState("fn_task_create"),[f,D]=j.useState("block"),S=o?z(o.rules):"unrestricted",q=n==="agent-override"&&!o?"inherit":o?.presetId==="custom"?S:o?.presetId??"unrestricted",m=o?.rules??B(),g=o?.toolRules??{},_=Object.entries(g).sort(([t],[i])=>t.localeCompare(i)),x=t=>({...t,...Object.keys(g).length>0?{toolRules:{...g}}:{}}),C=t=>{if(n==="agent-override"&&t==="inherit"){p(void 0);return}if(t==="custom"){p(x({presetId:"custom",rules:{...m}}));return}p(x({presetId:t,rules:$(t)}))},L=(t,i)=>{if(n==="agent-override"&&i==="inherit"){if(!o)return;const r={...o.rules};r[t]=a?.[t]??"allow",p(x({presetId:"custom",rules:r}));return}const s={...m,[t]:i};p(x({presetId:"custom",rules:s}))},k=(t,i)=>{const s=t.trim();if(!s||!w.test(s))return;const r={...g,[s]:i};p({presetId:"custom",rules:{...m},toolRules:r})},M=t=>{const i={...g};delete i[t],p({presetId:"custom",rules:{...m},...Object.keys(i).length>0?{toolRules:i}:{}})},G=()=>{k(h,f)};return e.jsxs("div",{className:"agent-policy-editor card",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"agent-policy-preset",children:l("agentPolicy.preset","Preset")}),e.jsxs("select",{id:"agent-policy-preset",className:"select",value:q,onChange:t=>C(t.target.value),disabled:u,children:[n==="agent-override"?e.jsx("option",{value:"inherit",children:l("agentPolicy.inheritDefault","Inherit project default")}):null,e.jsx("option",{value:"unrestricted",children:l("agentPolicy.unrestricted","Unrestricted")}),e.jsx("option",{value:"approval-required",children:l("agentPolicy.approvalRequired","Approval Required")}),e.jsx("option",{value:"locked-down",children:l("agentPolicy.lockedDown","Locked Down")}),e.jsx("option",{value:"custom",children:l("agentPolicy.custom","Custom")})]})]}),e.jsx("div",{className:"agent-policy-table",role:"table","aria-label":l("agentPolicy.ariaLabel","Permission policy categories"),children:N.map(t=>{const i=E[t]??{label:t,description:""},s=a?.[t]??"allow",r=m[t]??"allow",T=n==="agent-override"&&!o?"inherit":r;return e.jsxs("div",{className:"agent-policy-row",role:"row","data-category":t,children:[e.jsxs("div",{className:"agent-policy-cell",children:[e.jsx("strong",{children:i.label}),e.jsx("div",{className:"agent-policy-description",children:i.description}),e.jsx("ul",{className:"agent-policy-examples","aria-label":l("agentPolicy.categoryExamples","{{label}} examples",{label:i.label}),children:(O[t]??[]).map(d=>e.jsx("li",{children:e.jsx("code",{children:d})},`${t}-${d}`))})]}),e.jsxs("div",{className:"agent-policy-cell",children:[e.jsxs("select",{className:"select",value:T,onChange:d=>L(t,d.target.value),disabled:u,children:[n==="agent-override"?e.jsx("option",{value:"inherit",children:l("agentPolicy.inherit","Inherit")}):null,P.map(d=>e.jsx("option",{value:d,children:y(l,d)},d))]}),n==="agent-override"&&T==="inherit"?e.jsxs("div",{className:"agent-policy-inherit-note",children:[l("agentPolicy.fromProjectDefault","from project default"),": ",y(l,s)]}):null]})]},t)})}),e.jsxs("section",{className:"agent-policy-tool-rules","aria-labelledby":"agent-policy-tool-rules-heading",children:[e.jsx("div",{className:"agent-policy-tool-rules-header",children:e.jsxs("div",{children:[e.jsx("h4",{id:"agent-policy-tool-rules-heading",children:l("agentPolicy.exactToolOverrides","Exact tool overrides")}),e.jsx("p",{children:l("agentPolicy.exactToolOverridesDescription","Override one governed tool by exact name before its category rule. Heartbeat-critical exempt tools stay non-configurable.")})]})}),_.length===0?e.jsx("div",{className:"agent-policy-tool-empty","data-testid":"agent-policy-tool-empty",children:l("agentPolicy.noExactToolOverrides","No exact tool overrides configured.")}):e.jsx("div",{className:"agent-policy-tool-list","data-testid":"agent-policy-tool-list",children:_.map(([t,i])=>{const s=c?.[t];return e.jsxs("div",{className:"agent-policy-tool-row","data-testid":"agent-policy-tool-row",children:[e.jsxs("label",{children:[e.jsx("span",{children:l("agentPolicy.toolName","Tool name")}),e.jsx("input",{className:"input",value:t,disabled:!0,readOnly:!0})]}),e.jsxs("label",{children:[e.jsx("span",{children:l("agentPolicy.toolDisposition","Disposition")}),e.jsx("select",{className:"select","aria-label":l("agentPolicy.toolDispositionFor","Disposition for {{toolName}}",{toolName:t}),value:i,onChange:r=>k(t,r.target.value),disabled:u,children:P.map(r=>e.jsx("option",{value:r,children:y(l,r)},r))}),n==="agent-override"&&s?e.jsxs("small",{className:"agent-policy-inherit-note",children:[l("agentPolicy.projectDefaultExactTool","project default exact rule"),": ",y(l,s)]}):null]}),e.jsx("button",{type:"button",className:"btn btn-secondary","aria-label":l("agentPolicy.removeToolOverride","Remove exact override for {{toolName}}",{toolName:t}),onClick:()=>M(t),disabled:u,children:l("agentPolicy.remove","Remove")})]},t)})}),e.jsxs("div",{className:"agent-policy-tool-add","data-testid":"agent-policy-tool-add",children:[e.jsxs("label",{children:[e.jsx("span",{children:l("agentPolicy.toolName","Tool name")}),e.jsx("input",{className:"input",list:"agent-policy-known-tools",value:h,onChange:t=>A(t.target.value),disabled:u,"aria-label":l("agentPolicy.toolOverrideTool","Tool override tool")}),e.jsx("datalist",{id:"agent-policy-known-tools",children:I.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("label",{children:[e.jsx("span",{children:l("agentPolicy.toolDisposition","Disposition")}),e.jsx("select",{className:"select",value:f,onChange:t=>D(t.target.value),disabled:u,"aria-label":l("agentPolicy.toolOverrideDisposition","Tool override disposition"),children:P.map(t=>e.jsx("option",{value:t,children:y(l,t)},t))})]}),e.jsx("button",{type:"button",className:"btn btn-primary",onClick:G,disabled:u||!w.test(h.trim()),children:g[h.trim()]?l("agentPolicy.updateToolOverride","Update override"):l("agentPolicy.addToolOverride","Add override")})]})]}),e.jsxs("details",{className:"agent-policy-exempt",open:!1,children:[e.jsx("summary",{children:l("agentPolicy.exemptTools","Tools exempt from approval policy")}),e.jsx("p",{children:l("agentPolicy.exemptToolsDescription","These coordination tools bypass approval policy so heartbeats and inter-agent messaging cannot deadlock. They are not user-configurable.")}),e.jsx("ul",{className:"agent-policy-exempt-list",children:R.map(t=>e.jsx("li",{children:e.jsx("code",{children:t})},t))})]})]})}export{J as A,Z as B};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AgentDetailView-BPzzEIn1.js","assets/vendor-react-SZ_qB27O.js","assets/index-D7eX7QJk.js","assets/vendor-i18n-GF3RlKbq.js","assets/vendor-reactflow-CnI7NMXG.js","assets/vendor-reactflow-C5ap-Sga.css","assets/vendor-codemirror-jBKmHyH0.js","assets/vendor-xterm-BNq00GSj.js","assets/vendor-xterm-LZoznX6r.css","assets/index-BCf32Sgx.css","assets/agentSkills-NbIIJy87.js","assets/agentSkills-bQJ4X1gH.css","assets/ExperimentalAgentOnboardingModal-7-BD6W1v.js","assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css","assets/AgentPermissionPolicyEditor-CqlLF0pf.js","assets/AgentPermissionPolicyEditor-TpdlOWZW.css","assets/AgentDetailView-D7UY2Tup.css"])))=>i.map(i=>d[i]);
2
- import{c as Ut,bP as at,dq as Za,h as jt,Z as qa,aj as Ja,cC as It,cu as Ca,aK as Ft,aH as Qa,o as es,C as wa,bw as zt,c1 as Sa,dr as St,ds as ts,dt as as,cO as ss,bN as ns,bq as Dt,du as ls,m as is,a as rs,A as os,f as Nt,dv as ia,cA as cs,am as ra,bR as ds,b as us,e as gs,dw as oa,dx as ms,aL as hs,L as At,ba as rt,R as tt,X as ca,dy as ps,dz as xs,dA as ct,af as bs,dB as Rt,aT as vs,aX as fs,br as me,cm as ot,dC as js,dk as Ns,dD as ys,dE as da,V as ks,dF as Cs,P as ua,dG as ws,co as Tt,cn as bt,J as ga,dH as Ss,cX as As,dI as Rs,dJ as Ts,cw as ma,_ as Es,cv as Ps,cy as _s,cR as vt,dK as Ms,cD as ha,cx as Ls}from"./index-D7eX7QJk.js";import{r as s,j as e,b as Is}from"./vendor-react-SZ_qB27O.js";import{u as Ee}from"./vendor-i18n-GF3RlKbq.js";import{S as Fs,f as zs}from"./agentSkills-NbIIJy87.js";import{ExperimentalAgentOnboardingModal as Ds}from"./ExperimentalAgentOnboardingModal-7-BD6W1v.js";import{U as Ht}from"./upload-D9-yuO2D.js";import{F as Hs}from"./folder-open-DO1rnCxq.js";import{i as pa,O as Et,r as $s}from"./agentsOrgChartLayout-BMvyuaLA.js";import"./vendor-reactflow-CnI7NMXG.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-xterm-BNq00GSj.js";/**
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AgentDetailView-BICsleMh.js","assets/vendor-react-SZ_qB27O.js","assets/index-rfsTNfpA.js","assets/vendor-i18n-GF3RlKbq.js","assets/vendor-reactflow-CnI7NMXG.js","assets/vendor-reactflow-C5ap-Sga.css","assets/vendor-codemirror-jBKmHyH0.js","assets/vendor-xterm-BNq00GSj.js","assets/vendor-xterm-LZoznX6r.css","assets/index-CbmH1ED8.css","assets/agentSkills-CM_yYVTx.js","assets/agentSkills-bQJ4X1gH.css","assets/ExperimentalAgentOnboardingModal-cA-aWWsB.js","assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css","assets/AgentPermissionPolicyEditor-DQDzCWq_.js","assets/AgentPermissionPolicyEditor-TpdlOWZW.css","assets/AgentDetailView-D7UY2Tup.css"])))=>i.map(i=>d[i]);
2
+ import{c as Ut,bQ as at,dr as Za,h as jt,Z as qa,ak as Ja,cD as It,cv as Ca,aL as Ft,aI as Qa,o as es,C as wa,bx as zt,c2 as Sa,ds as St,dt as ts,du as as,cP as ss,bO as ns,br as Dt,dv as ls,m as is,a as rs,A as os,f as Nt,dw as ia,cB as cs,an as ra,bS as ds,b as us,e as gs,dx as oa,dy as ms,aM as hs,L as At,bb as rt,R as tt,X as ca,dz as ps,dA as xs,dB as ct,ag as bs,dC as Rt,aU as vs,aY as fs,bs as me,cn as ot,dD as js,dl as Ns,dE as ys,dF as da,V as ks,dG as Cs,P as ua,dH as ws,cp as Tt,co as bt,J as ga,dI as Ss,cY as As,dJ as Rs,dK as Ts,cx as ma,_ as Es,cw as Ps,cz as _s,cS as vt,dL as Ms,cE as ha,cy as Ls}from"./index-rfsTNfpA.js";import{r as s,j as e,b as Is}from"./vendor-react-SZ_qB27O.js";import{u as Ee}from"./vendor-i18n-GF3RlKbq.js";import{S as Fs,f as zs}from"./agentSkills-CM_yYVTx.js";import{ExperimentalAgentOnboardingModal as Ds}from"./ExperimentalAgentOnboardingModal-cA-aWWsB.js";import{U as Ht}from"./upload-BKpOp-Bn.js";import{F as Hs}from"./folder-open-BN3_NdbL.js";import{i as pa,O as Et,r as $s}from"./agentsOrgChartLayout-BMvyuaLA.js";import"./vendor-reactflow-CnI7NMXG.js";import"./vendor-codemirror-jBKmHyH0.js";import"./vendor-xterm-BNq00GSj.js";/**
3
3
  * @license lucide-react v1.7.0 - ISC
4
4
  *
5
5
  * This source code is licensed under the ISC license.
@@ -21,4 +21,4 @@ reportsTo: null
21
21
  skills:
22
22
  - review
23
23
  ---
24
- Agent instructions go here...`),value:b,onChange:o=>{h("paste"),w([]),S(o.target.value),$(null)},rows:8,"aria-label":r("agents.manifestContent","Manifest content")})]}),e.jsx("p",{className:"agent-import-file-hint",children:r("agents.currentInput","Current input: {{method}}",{method:n})}),pe&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),pe]})]}),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:r("agents.company","Company")}),e.jsx("span",{className:"agent-import-company-name",children:I})]}),y.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:y.map((o,j)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:o})]},j))}),e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Ft,{size:14}),e.jsx("span",{children:r("agents.agentsFound","{{count}} agent{{plural}} found",{count:H.length,plural:H.length!==1?"s":""})})]}),H.length>0&&e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ie(H.map(o=>o.name)),children:r("agents.selectAllAgents","Select all agents")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ie([]),children:r("agents.clearAgents","Clear agents")})]}),H.length>0?e.jsx("div",{className:"agent-import-agent-list",children:H.map((o,j)=>e.jsxs("div",{className:"agent-import-agent-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":r("agents.selectAgent","Select agent {{name}}",{name:o.name}),checked:q.includes(o.name),onChange:()=>ve(o.name)})}),e.jsx("span",{className:"agent-import-agent-icon",children:o.icon||"🤖"}),e.jsxs("div",{className:"agent-import-agent-details",children:[e.jsx("span",{className:"agent-import-agent-name",children:o.name}),e.jsxs("span",{className:"agent-import-agent-meta",children:[o.title&&e.jsxs("span",{className:"agent-import-agent-title",children:[o.title," · "]}),e.jsx("span",{className:"agent-import-agent-role",children:o.role}),o.reportsTo&&e.jsx("span",{className:"agent-import-agent-reports",children:r("agents.importReportsTo"," · reports to {{agent}}",{agent:o.reportsTo})}),o.skills&&o.skills.length>0&&e.jsx("span",{className:"agent-import-agent-model",children:r("agents.importSkills"," · skills: {{skills}}",{skills:o.skills.join(", ")})})]}),o.instructionsText&&e.jsxs("span",{className:"agent-import-agent-instructions",children:[o.instructionsText.slice(0,100),o.instructionsText.length>100?"...":""]})]})]},j))}):e.jsx("p",{className:"agent-import-empty",children:r("agents.noAgentsFound","No agents found in the manifest.")}),E.length>0&&e.jsxs("div",{className:"agent-import-skills-section",children:[e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Ft,{size:14}),e.jsx("span",{children:r("agents.skillsFound","{{count}} skill{{plural}} found",{count:E.length,plural:E.length!==1?"s":""})})]}),e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L(E.map(o=>o.name)),children:r("agents.selectAllSkills","Select all skills")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L([]),children:r("agents.clearSkills","Clear skills")})]}),e.jsx("div",{className:"agent-import-skill-list",children:E.map((o,j)=>e.jsxs("div",{className:"agent-import-skill-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":r("agents.selectSkill","Select skill {{name}}",{name:o.name}),checked:J.includes(o.name),onChange:()=>Re(o.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:o.name}),o.description&&e.jsx("span",{className:"agent-import-skill-description",children:o.description})]})]},`${o.name}-${j}`))})]}),se&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),se]})]}),v==="result"&&C&&e.jsxs("div",{className:"agent-import-result",children:[e.jsx("div",{className:"agent-import-result-icon",children:e.jsx(jt,{size:32})}),e.jsx("h3",{className:"agent-import-result-title",children:r("agents.importComplete","Import Complete")}),e.jsxs("p",{className:"agent-import-result-company",children:[r("agents.from","From")," ",e.jsx("strong",{children:C.companyName??"Unknown"})]}),e.jsxs("div",{className:"agent-import-result-stats",children:[C.created.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:r("agents.resultCreated","{{count}} created",{count:C.created.length})})}),C.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.resultSkipped","{{count}} skipped (already exist)",{count:C.skipped.length})})}),C.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:r("agents.resultErrors","{{count}} error{{plural}}",{count:C.errors.length,plural:C.errors.length!==1?"s":""})})})]}),C.created.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:C.created.map((o,j)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(jt,{size:12}),e.jsx("span",{children:o.name})]},j))}),C.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:C.errors.map((o,j)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ca,{size:12}),e.jsxs("span",{children:[o.name,": ",o.error]})]},j))}),C.warnings&&C.warnings.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:C.warnings.map((o,j)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:o})]},j))}),C.skills&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-result-divider"}),e.jsx("h4",{className:"agent-import-result-section-title",children:r("agents.skills","Skills")}),e.jsxs("div",{className:"agent-import-result-stats",children:[C.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:r("agents.skillsImported","{{count}} skill{{plural}} imported",{count:C.skills.imported.length,plural:C.skills.imported.length!==1?"s":""})})}),C.skills.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.skillsSkipped","{{count}} skill{{plural}} skipped (already exist)",{count:C.skills.skipped.length,plural:C.skills.skipped.length!==1?"s":""})})}),C.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:r("agents.skillsErrors","{{count}} skill{{plural}} error{{pluralError}}",{count:C.skills.errors.length,plural:C.skills.errors.length!==1?"s":"",pluralError:C.skills.errors.length!==1?"s":""})})}),C.skills.imported.length===0&&C.skills.skipped.length===0&&C.skills.errors.length===0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.noSkillsInPackage","No skills in package")})})]}),C.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:C.skills.imported.map((o,j)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(jt,{size:12}),e.jsx("span",{children:o.name})]},j))}),C.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:C.skills.errors.map((o,j)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ca,{size:12}),e.jsxs("span",{children:[o.name,": ",o.error]})]},j))})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[v==="preview"&&e.jsx("button",{className:"btn",onClick:()=>g("input"),disabled:ce,children:r("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:Le,disabled:ce,children:v==="result"?r("agents.close","Close"):r("agents.cancel","Cancel")}),v==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void $e(),disabled:he||(n==="directory"?A.length===0:n==="browse"?!K:!b.trim()),children:he?e.jsxs(e.Fragment,{children:[e.jsx(At,{size:14,className:"spin"}),r("agents.parsing","Parsing...")]}):r("agents.preview","Preview")}),v==="preview"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void ne(),disabled:ce||ee===0&&M===0,children:ce?e.jsxs(e.Fragment,{children:[e.jsx(At,{size:14,className:"spin"}),Xe]}):r("agents.importButton","Import {{label}}",{label:Ae})})]})]})}):null}const Na=s.lazy(()=>Es(()=>import("./AgentDetailView-BPzzEIn1.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(l=>({default:l.AgentDetailView})));function nn(l){return[{value:"triage",label:l("agents.roleTriage","Triage"),icon:"⊕"},{value:"executor",label:l("agents.roleExecutor","Executor"),icon:"▶"},{value:"reviewer",label:l("agents.roleReviewer","Reviewer"),icon:"⊙"},{value:"merger",label:l("agents.roleMerger","Merger"),icon:"⊞"},{value:"scheduler",label:l("agents.roleScheduler","Scheduler"),icon:"◷"},{value:"engineer",label:l("agents.roleEngineer","Engineer"),icon:"⎔"},{value:"custom",label:l("agents.roleCustom","Custom"),icon:"✦"}]}const Lt=[.1,.25,.5,1,2,3,5,10],ln=.25,rn=3,ft=16,et=32,ya=320,Aa=260,Ra=520,Ta="kb-dashboard-agents-sidebar-width";function $t(l){return Math.max(Aa,Math.min(Ra,l))}function ka(l){if(typeof window>"u")return ya;const d=ct(Ta,l),N=d?Number(d):NaN;return Number.isFinite(N)?$t(N):ya}function Ot(l){switch(l){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 Vt(l,d){switch(d){case"running":return`${l}--running`;case"active":return`${l}--active`;case"paused":return`${l}--paused`;case"error":return`${l}--error`;case"idle":default:return`${l}--idle`}}function on(l){const d=l.runtimeConfig??{},N=typeof d.runtimeHint=="string"?d.runtimeHint:"";if(N)return{label:N,isRuntime:!0};const p=typeof d.modelProvider=="string"?d.modelProvider:"",a=typeof d.modelId=="string"?d.modelId:"";if(p&&a)return{label:`${p}/${a}`,isRuntime:!1};const r=typeof d.model=="string"?d.model:"";if(r.includes("/")){const v=r.indexOf("/");return{label:r.slice(v+1),isRuntime:!1}}return{label:null,isRuntime:!1}}function Ea(l){return l.children.length===0?1:l.children.reduce((d,N)=>d+Ea(N),0)}function Bt(l,d,N){return l.state==="error"?{title:void 0,label:N("agents.healthError","Error")}:{title:d.reason??d.label,label:d.stateDerived?null:d.label}}function Pa({node:l,onSelect:d,getHealthStatus:N,selectedAgentId:p,registerNodeElement:a,linksRef:r}){const{t:v}=Ee("app"),{agent:g,children:n}=l,h=N(g),b=Bt(g,h,v),S=Ot(g.state),A=Vt("org-chart-node-card",g.state),w=Ea(l),I={"--org-chart-subtree-leaves":String(w)};return e.jsxs("div",{className:`org-chart-node${n.length>0?" org-chart-node--has-children":""}`,style:I,children:[e.jsxs("div",{ref:R=>a(g.id,R),"data-agent-id":g.id,className:`org-chart-node-card ${A}${p===g.id?" agent-card--selected":""}`,onClick:()=>d(g.id),role:"button",tabIndex:0,onKeyDown:R=>{(R.key==="Enter"||R.key===" ")&&(R.key===" "&&R.preventDefault(),d(g.id))},children:[e.jsxs("div",{className:"org-chart-node__header",children:[e.jsx("span",{className:"org-chart-node__icon",children:e.jsx(Nt,{agent:g,size:20})}),e.jsx("span",{className:"org-chart-node__name",children:g.name})]}),e.jsxs("div",{className:"org-chart-node__meta",children:[e.jsx("span",{className:`org-chart-node__badge ${S}`,children:g.state}),e.jsxs("span",{className:"org-chart-node__health",style:{color:h.color},title:b.title,children:[h.icon,b.label&&e.jsx("span",{className:"text-secondary",children:b.label})]})]})]}),n.length>0&&e.jsx("div",{className:"org-chart-children",role:"group","aria-label":v("agents.orgChartEmployees","{{name}} employees",{name:g.name}),children:n.map(R=>(r.current.push({parentId:g.id,childId:R.agent.id}),e.jsx(Pa,{node:R,onSelect:d,getHealthStatus:N,selectedAgentId:p,registerNodeElement:a,linksRef:r},R.agent.id)))})]})}function cn({links:l,nodeElements:d,canvasRef:N,viewportRef:p,layoutMode:a,transform:r}){const[v,g]=s.useState([]);return s.useLayoutEffect(()=>{const n=N.current,h=p.current;if(!n||!h||l.length===0){g([]);return}const b=()=>{const A=n.getBoundingClientRect(),w=l.flatMap(({parentId:I,childId:R})=>{const H=d.get(I),_=d.get(R);if(!H||!_)return[];const E=H.getBoundingClientRect(),D=_.getBoundingClientRect(),y=(E.left-A.left)/r.scale,U=(E.top-A.top)/r.scale,q=(D.left-A.left)/r.scale,ie=(D.top-A.top)/r.scale;if(a==="vertical"){const re=y,pe=U+E.height/r.scale/2,$=q,C=ie+D.height/r.scale/2,xe=re-(re-$)/2;return[`M ${re} ${pe} L ${xe} ${pe} L ${xe} ${C} L ${$} ${C}`]}const J=y+E.width/r.scale/2,L=U+E.height/r.scale,he=q+D.width/r.scale/2,ae=ie,ce=L+(ae-L)/2;return[`M ${J} ${L} L ${J} ${ce} L ${he} ${ce} L ${he} ${ae}`]});g(w)};b();const S=new ResizeObserver(b);return S.observe(n),S.observe(h),d.forEach(A=>S.observe(A)),()=>S.disconnect()},[N,a,l,d,r.scale,p]),e.jsx("svg",{className:"agent-org-chart-connectors","aria-hidden":"true",children:v.map((n,h)=>e.jsx("path",{d:n},`${h}-${n}`))})}function Nn({addToast:l,projectId:d,onOpenTaskLogs:N,agentOnboardingEnabled:p=!1}){const{t:a}=Ee("app"),r=nn(a),[v,g]=s.useState(!1),h=ps()==="mobile",[b,S]=s.useState(()=>ka(d)),[A,w]=s.useState("all"),{agents:I,stats:R,isLoading:H,loadAgents:_,refreshAgents:E}=xs(d,{filterState:A,showSystemAgents:v}),[D,y]=s.useState(!1),[U,q]=s.useState(null),[ie,J]=s.useState(!1),[L,he]=s.useState(null),[ae,ce]=s.useState(null),re=h&&!!L,[pe,$]=s.useState("dashboard"),[C,xe]=s.useState(null),[se,de]=s.useState(!1),[W,ke]=s.useState(()=>{if(typeof window>"u")return"list";const t=ct("fn-agent-view",d);return t==="list"||t==="board"||t==="org"?t:"list"}),[oe,fe]=s.useState(()=>{if(typeof window>"u")return"auto";const t=ct(Et,d);return pa(t)?t:"auto"}),[Q,Pe]=s.useState([]),[K,ue]=s.useState(!1),[Ce,be]=s.useState(0),[je,V]=s.useState(!1),[_e,Ge]=s.useState(!1),[Me,Le]=s.useState(!1),[we,Ke]=s.useState(!1),[Ie,$e]=s.useState(0),[ne,ee]=s.useState(0),[M,O]=s.useState({scale:1,x:0,y:0}),[Se,Ae]=s.useState(!1),Xe=s.useRef(null),ve=s.useRef(null),Re=s.useRef(null),o=s.useRef(new Map),j=s.useRef([]),P=s.useRef(new Map),F=s.useRef(null),X=s.useRef(null),Y=s.useRef(!1),{confirm:Ye}=bs(),Fe=s.useRef(null),dt=s.useId();s.useEffect(()=>{S(ka(d))},[d]),s.useEffect(()=>{const t=ct("fn-agent-view",d);if(t==="list"||t==="board"||t==="org"){ke(t);return}ke("list")},[d]),s.useEffect(()=>{Rt("fn-agent-view",W,d)},[W,d]),s.useEffect(()=>{const t=ct(Et,d);fe(pa(t)?t:"auto")},[d]),s.useEffect(()=>{Rt(Et,oe,d)},[oe,d]);const ze=s.useCallback(t=>{try{Rt(Ta,String(t),d)}catch{}},[d]),Ze=s.useCallback(t=>{if(h)return;t.preventDefault(),t.stopPropagation();const i=t.currentTarget;typeof i.setPointerCapture=="function"&&i.setPointerCapture(t.pointerId);const u=t.clientX,m=b;let k=m;document.body.style.userSelect="none";const T=G=>{const le=G.clientX-u,x=$t(m+le);k=x,S(x)},Z=G=>{typeof i.releasePointerCapture=="function"&&i.releasePointerCapture(G.pointerId),document.body.style.userSelect="",document.removeEventListener("pointermove",T),document.removeEventListener("pointerup",Z),ze(k)};document.addEventListener("pointermove",T),document.addEventListener("pointerup",Z)},[h,ze,b]),yt=s.useCallback(t=>{if(h||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;t.preventDefault();const i=t.shiftKey?50:10,u=t.key==="ArrowLeft"?-i:i,m=$t(b+u);S(m),ze(m)},[h,ze,b]),[ut,Ne]=s.useState(null),st=s.useRef(null),[gt,Te]=s.useState(null),[c,f]=s.useState(null),[ye,De]=s.useState({}),[Oe,Wt]=s.useState(1),[Gt,Kt]=s.useState(!1),[Ve,Xt]=s.useState(new Set),[kt,qe]=s.useState(new Map),mt=s.useRef(!0);s.useEffect(()=>(mt.current=!0,()=>{mt.current=!1}),[]),s.useEffect(()=>{vs(d).then(t=>{mt.current&&Wt(t.heartbeatMultiplier??1)}).catch(()=>{})},[d]);const Yt=s.useCallback(async t=>{const i=Number.isFinite(t)&&t>0?t:1;Wt(i),Kt(!0);try{await fs({heartbeatMultiplier:i},d),l(a("agents.heartbeatSpeedSet","Heartbeat speed set to ×{{value}}",{value:i.toFixed(1)}),"success")}catch(u){l(a("agents.heartbeatSpeedSaveFailed","Failed to save heartbeat multiplier: {{error}}",{error:me(u)}),"error")}finally{mt.current&&Kt(!1)}},[d,l]),ht=s.useMemo(()=>kt.size===0?I:I.map(t=>{const i=kt.get(t.id);return i?{...t,state:i}:t}),[I,kt]),nt=s.useMemo(()=>ht.filter(t=>v||!ot(t)),[ht,v]),_a=s.useMemo(()=>ht.filter(t=>t.state!=="active"&&t.state!=="running"?!1:v||!ot(t)),[ht,v]),Be=s.useMemo(()=>{if(v)return Q;const t=i=>ot(i.agent)?null:{...i,children:i.children.map(t).filter(u=>u!==null)};return Q.map(t).filter(i=>i!==null)},[Q,v]);s.useEffect(()=>{if(W!=="org")return;const t=ve.current;if(!t)return;const i=()=>{be(t.clientWidth)};i();const u=typeof ResizeObserver<"u"?new ResizeObserver(i):null;return u?.observe(t),window.addEventListener("resize",i),()=>{u?.disconnect(),window.removeEventListener("resize",i)}},[W,Be.length]),s.useEffect(()=>{if(W!=="org")return;let t=!1;return ue(!0),js(d,{includeEphemeral:v}).then(i=>{t||Pe(i)}).catch(i=>{t||(l(a("agents.orgChartLoadFailed","Failed to load org chart: {{error}}",{error:me(i)}),"error"),Pe([]))}).finally(()=>{t||ue(!1)}),()=>{t=!0}},[W,d,v,l]),s.useEffect(()=>{const t=setInterval(()=>{_()},3e4);return()=>{clearInterval(t)}},[_]),s.useEffect(()=>{if(!je)return;let t=!1;Ke(!0),Dt(void 0,d).then(m=>{if(t)return;const k=m.filter(T=>!ot(T));$e(k.filter(T=>T.state==="active"||T.state==="running").length),ee(k.filter(T=>T.state==="paused").length)}).catch(m=>{t||($e(0),ee(0),l(a("agents.bulkActionsLoadFailed","Failed to load bulk agent actions: {{error}}",{error:me(m)}),"error"))}).finally(()=>{t||Ke(!1)});const i=m=>{const k=m.target;k&&(Xe.current?.contains(k)||Fe.current?.contains(k)||V(!1))},u=m=>{m.key==="Escape"&&(V(!1),Fe.current?.focus())};return document.addEventListener("mousedown",i),document.addEventListener("touchstart",i),document.addEventListener("keydown",u),()=>{t=!0,document.removeEventListener("mousedown",i),document.removeEventListener("touchstart",i),document.removeEventListener("keydown",u)}},[l,je,d]);const Zt=async t=>{if(!Me){Le(!0);try{const u=(await Dt(void 0,d)).filter(z=>!ot(z)),m=u.filter(z=>t==="paused"?z.state==="active"||z.state==="running":z.state==="paused"),k=u.length-m.length;if(m.length===0){l(t==="paused"?a("agents.noAgentsToPause","No agents eligible to pause"):a("agents.noAgentsToResume","No agents eligible to resume"),"error");return}if(!await Ye({title:t==="paused"?a("agents.pauseAllTitle","Pause All Agents"):a("agents.resumeAllTitle","Resume All Agents"),message:t==="paused"?a("agents.pauseAllConfirm",{count:m.length,defaultValue_one:"Pause {{count}} agent in this project?",defaultValue_other:"Pause {{count}} agents in this project?"}):a("agents.resumeAllConfirm",{count:m.length,defaultValue_one:"Resume {{count}} agent in this project?",defaultValue_other:"Resume {{count}} agents in this project?"}),danger:t==="paused"}))return;const Z=await Promise.allSettled(m.map(z=>ma(z.id,t,d))),G=Z.map((z,He)=>({result:z,agent:m[He]})).filter(z=>z.result.status==="rejected"),le=Z.length-G.length,x=G.length,B=t==="paused"?a("agents.pausedSummary",{count:le,skipped:k,defaultValue_one:"Paused {{count}} agent; skipped {{skipped}}",defaultValue_other:"Paused {{count}} agents; skipped {{skipped}}"}):a("agents.resumedSummary",{count:le,skipped:k,defaultValue_one:"Resumed {{count}} agent; skipped {{skipped}}",defaultValue_other:"Resumed {{count}} agents; skipped {{skipped}}"});if(x>0){const z=G.slice(0,3).map(({agent:He,result:Ya})=>`${He.name||He.id}: ${me(Ya.reason)}`).join("; ");l(`${B}; failed ${x}${z?` (${z})`:""}`,"error")}else l(B,"success");await _()}catch(i){l(t==="paused"?a("agents.pauseAgentsFailed","Failed to pause agents: {{error}}",{error:me(i)}):a("agents.resumeAgentsFailed","Failed to resume agents: {{error}}",{error:me(i)}),"error")}finally{Le(!1)}}},lt=async(t,i)=>{if(!Ve.has(t)){Xt(u=>new Set(u).add(t)),qe(u=>{const m=new Map(u);return m.set(t,i),m});try{await ma(t,i,d),l(a("agents.stateUpdated","Agent state updated to {{state}}",{state:i}),"success"),await _(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const k=new Map(m);return k.delete(t),k}),l(a("agents.stateUpdateFailed","Failed to update state: {{error}}",{error:me(u)}),"error")}finally{Xt(u=>{const m=new Set(u);return m.delete(t),m})}}},qt=async(t,i)=>{if(await Ye({title:a("agents.deleteTitle","Delete Agent"),message:a("agents.deleteConfirm",'Delete agent "{{name}}"? This cannot be undone.',{name:i}),danger:!0}))try{await _s(t,d),l(a("agents.deleted",'Agent "{{name}}" deleted',{name:i}),"success"),await _()}catch(m){l(a("agents.deleteFailed","Failed to delete agent: {{error}}",{error:me(m)}),"error")}},Ma=async(t,i)=>{const u=I.find(m=>m.id===t);if(u){if(u.role===i){Ne(null);return}try{await vt(t,{role:i},d),l(a("agents.roleUpdated","Agent role updated to {{role}}",{role:r.find(m=>m.value===i)?.label??i}),"success"),Ne(null),_()}catch(m){l(a("agents.roleUpdateFailed","Failed to update role: {{error}}",{error:me(m)}),"error")}}},La=(t,i)=>{t.key==="Escape"&&Ne(null)},Ia=async(t,i)=>{c===t.id&&(f(null),De(u=>{const m={...u};return delete m[t.id],m})),Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:i}},d),l(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ha(i),name:t.name}),"success"),_()}catch(u){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(u)}),"error")}finally{Te(null)}},Jt=async t=>{const i=ye[t.id]??"";if(i.trim()===""){l(a("agents.heartbeatEnterMinutes","Please enter a heartbeat interval in minutes"),"error");return}const u=Number(i);if(isNaN(u)){l(a("agents.heartbeatMustBeNumber","Heartbeat interval must be a valid number"),"error");return}if(u<=0){l(a("agents.heartbeatMustBePositive","Heartbeat interval must be greater than 0"),"error");return}if(u>=1&&u<5){Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:Ms}},d),l(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"),f(null),De(k=>{const T={...k};return delete T[t.id],T}),_()}catch(k){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(k)}),"error")}finally{Te(null)}return}const m=Math.round(u*6e4);Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:m}},d),l(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ha(m),name:t.name}),"success"),f(null),De(k=>{const T={...k};return delete T[t.id],T}),_()}catch(k){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(k)}),"error")}finally{Te(null)}},Fa=t=>{const i=It(t.runtimeConfig?.heartbeatIntervalMs),u=Math.round(i/6e4);f(t.id),De(m=>({...m,[t.id]:String(u)}))},ge=s.useCallback((t,i)=>{he(t),$(i?.initialTab??"dashboard"),xe(i?.initialRunId??null),de(i?.preferActiveRun??!1)},[]),Ue=s.useCallback(()=>{he(null),$("dashboard"),xe(null),de(!1)},[]),Qt=s.useCallback(t=>{ge(t)},[ge]),za=s.useCallback(t=>{ce(t),ge(t)},[ge]),Da=s.useCallback(async({agentId:t,deleted:i})=>{await E(),i&&L===t&&Ue()},[E,L,Ue]),Ha=s.useCallback(t=>{ge(t),h&&Ge(!1)},[h,ge]),$a=async(t,i)=>{qe(u=>{const m=new Map(u);return m.set(t,"running"),m});try{await Ls(t,d,{source:"on_demand",triggerDetail:"Triggered from dashboard"}),l(a("agents.heartbeatRunStarted","Heartbeat run started for {{name}}",{name:i}),"success"),await _(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const k=new Map(m);return k.delete(t),k}),l(a("agents.heartbeatRunFailed","Failed to start heartbeat run: {{error}}",{error:me(u)}),"error")}},We=s.useCallback(t=>Math.min(rn,Math.max(ln,t)),[]),te=s.useCallback(t=>{const i=ve.current,u=Re.current?.querySelector(".agent-org-chart");if(!i||!u)return{...t,scale:We(t.scale)};const m=We(t.scale),k=u.scrollWidth*m,T=u.scrollHeight*m,Z=i.clientWidth,G=i.clientHeight,le=Math.min(et,Z-k-et),x=et,B=Math.min(et,G-T-et),z=et;return{scale:m,x:Math.max(le,Math.min(x,t.x)),y:Math.max(B,Math.min(z,t.y))}},[We]),pt=s.useCallback((t,i,u)=>{const m=ve.current;m&&O(k=>{const T=We(t),Z=m.getBoundingClientRect(),G=i-Z.left,le=u-Z.top,x=(G-k.x)/k.scale,B=(le-k.y)/k.scale;return te({scale:T,x:G-x*T,y:le-B*T})})},[We,te]),Je=s.useCallback(()=>{const t=ve.current,i=Re.current?.querySelector(".agent-org-chart");if(!t||!i)return;const u=t.clientWidth,m=t.clientHeight,k=i.scrollWidth,T=i.scrollHeight;if(k<=0||T<=0)return;const Z=We(Math.min(u/k,m/T,1)),G=(u-k*Z)/2,le=(m-T*Z)/2;O(te({scale:Z,x:G,y:le}))},[We,te]),Ct=s.useCallback(t=>{ke(t),t!=="org"&&O({scale:1,x:0,y:0}),h&&L&&Ue()},[Ue,h,L]),ea=t=>r.find(i=>i.value===t)?.label??t,xt=s.useMemo(()=>$s({tree:Be,availableWidth:Ce,preference:oe}),[Be,oe,Ce]),ta=s.useCallback(t=>{fe(t),O({scale:1,x:0,y:0})},[]);s.useEffect(()=>{O({scale:1,x:0,y:0}),Y.current=!1},[d,xt]),s.useLayoutEffect(()=>{W!=="org"||K||Be.length===0||Y.current||(Je(),Y.current=!0)},[W,Be.length,Je,K]);const Oa=s.useCallback((t,i)=>{i?o.current.set(t,i):o.current.delete(t)},[]),aa=s.useCallback(()=>e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>O(t=>te({...t,scale:t.scale*.9})),"aria-label":a("agents.orgChartZoomOut","Zoom out org chart"),title:a("agents.zoomOut","Zoom out"),children:e.jsx(Ws,{size:16})}),e.jsxs("span",{className:"agent-org-chart-controls__zoom-label","aria-live":"polite",children:[Math.round(M.scale*100),"%"]}),e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>O(t=>te({...t,scale:t.scale*1.1})),"aria-label":a("agents.orgChartZoomIn","Zoom in org chart"),title:a("agents.zoomIn","Zoom in"),children:e.jsx(Bs,{size:16})}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm agent-org-chart-controls__fit-btn",onClick:Je,"aria-label":a("agents.orgChartFit","Fit org chart"),title:a("agents.orgChartFit","Fit org chart"),children:[e.jsx(Ns,{size:16}),a("agents.fit","Fit")]}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm",onClick:()=>O(t=>te({...t,x:0,y:0})),"aria-label":a("agents.orgChartCenter","Center org chart"),title:a("agents.orgChartCenter","Center org chart"),children:[e.jsx(ys,{size:16}),a("agents.center","Center")]})]}),[te,Je,M.scale]),Va=s.useCallback(t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();const i=t.deltaY>0?.9:1.1;pt(M.scale*i,t.clientX,t.clientY)},[M.scale,pt]),Ba=s.useCallback(t=>{if(t.target.closest(".org-chart-node-card"))return;if(t.currentTarget.setPointerCapture?.(t.pointerId),P.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),P.current.size===1){F.current={x:t.clientX-M.x,y:t.clientY-M.y,pointerId:t.pointerId},Ae(!0);return}if(P.current.size===2){const u=Array.from(P.current.values()),m=u[0].x-u[1].x,k=u[0].y-u[1].y;X.current={distance:Math.hypot(m,k),scale:M.scale,centerX:(u[0].x+u[1].x)/2,centerY:(u[0].y+u[1].y)/2},F.current=null}},[M.scale,M.x,M.y]),Ua=s.useCallback(t=>{if(P.current.has(t.pointerId)){if(P.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),P.current.size>=2){const i=Array.from(P.current.values()),u=X.current;if(!u)return;const m=i[0].x-i[1].x,k=i[0].y-i[1].y,T=Math.hypot(m,k),Z=u.scale*(T/u.distance);pt(Z,u.centerX,u.centerY);return}!F.current||F.current.pointerId!==t.pointerId||O(i=>te({...i,x:t.clientX-F.current.x,y:t.clientY-F.current.y}))}},[te,pt]),sa=s.useCallback(t=>{P.current.delete(t.pointerId),P.current.size<2&&(X.current=null),P.current.size===0&&(F.current=null,Ae(!1))},[]),Wa=s.useCallback(t=>{if(t.key==="ArrowLeft")O(i=>te({...i,x:i.x+ft}));else if(t.key==="ArrowRight")O(i=>te({...i,x:i.x-ft}));else if(t.key==="ArrowUp")O(i=>te({...i,y:i.y+ft}));else if(t.key==="ArrowDown")O(i=>te({...i,y:i.y-ft}));else if(t.key==="+"||t.key==="=")O(i=>te({...i,scale:i.scale*1.1}));else if(t.key==="-")O(i=>te({...i,scale:i.scale*.9}));else if(t.key==="0")Je();else if(t.key==="Home")O({scale:1,x:0,y:0});else return;t.preventDefault()},[te,Je]),na=s.useCallback(()=>{const t=[{value:"horizontal",label:a("agents.layoutHorizontal","Horizontal"),icon:e.jsx(xa,{size:16}),ariaLabel:a("agents.layoutHorizontalAria","Horizontal layout")},{value:"vertical",label:a("agents.layoutVertical","Vertical"),icon:e.jsx(da,{size:16}),ariaLabel:a("agents.layoutVerticalAria","Vertical layout")},{value:"auto",label:a("agents.layoutAuto","Auto"),icon:e.jsx(tt,{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(i=>{const u=oe===i.value;return e.jsxs("button",{type:"button",className:`btn-icon touch-target agent-org-chart-layout-toggle__button${u?" btn-icon--active":""}`,onClick:()=>ta(i.value),"aria-pressed":u,"aria-label":i.ariaLabel,title:i.ariaLabel,"data-layout-value":i.value,children:[i.icon,e.jsx("span",{className:"agent-org-chart-layout-toggle__text",children:i.label})]},i.value)})})},[ta,oe]),Ga=t=>Array.isArray(t.metadata?.skills)?t.metadata.skills:[],wt=t=>Ps(t),Ka=we||Me||Ie===0,Xa=we||Me||ne===0,la=H&&I.length===0,it=s.useCallback(()=>{y(!0)},[]);return e.jsxs("div",{className:"agents-view",children:[e.jsx(ks,{icon:zt,title:a("agents.title","Agents"),actions:e.jsxs("div",{className:"agents-view-controls",children:[e.jsxs("div",{className:"view-toggle",children:[e.jsx("button",{className:`view-toggle-btn${W==="list"?" active":""}`,onClick:()=>Ct("list"),title:a("agents.listView","List view"),"aria-label":a("agents.listView","List view"),"aria-pressed":W==="list",children:e.jsx(da,{size:16})}),e.jsx("button",{className:`view-toggle-btn${W==="board"?" active":""}`,onClick:()=>Ct("board"),title:a("agents.boardView","Board view"),"aria-label":a("agents.boardView","Board view"),"aria-pressed":W==="board",children:e.jsx(at,{size:16})}),e.jsx("button",{className:`view-toggle-btn${W==="org"?" active":""}`,onClick:()=>Ct("org"),title:a("agents.orgChartView","Org Chart view"),"aria-label":a("agents.orgChartView","Org Chart view"),"aria-pressed":W==="org",children:e.jsx(xa,{size:16})})]}),e.jsxs("div",{className:"agents-view-primary-actions",children:[e.jsx("button",{ref:Fe,className:`btn-icon agent-controls-trigger${je?" agent-controls-trigger--active":""}`,onClick:()=>V(t=>!t),title:a("agents.controls","Controls"),"aria-label":a("agents.controls","Controls"),"aria-haspopup":"dialog","aria-expanded":je,"aria-controls":dt,children:e.jsx(Cs,{size:16})}),e.jsx("button",{className:"btn-icon",onClick:()=>void _(),title:a("agents.refresh","Refresh"),"aria-label":a("agents.refresh","Refresh"),children:e.jsx(tt,{size:16,className:H?"spin":void 0})}),!h&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{J(!0),V(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(Ht,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),V(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(ua,{size:16}),a("agents.newAgent","New Agent")]})]}),je&&e.jsxs("div",{ref:Xe,id:dt,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(ws,{size:14}),e.jsxs("select",{className:"agent-state-filter-select",value:A,onChange:t=>w(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=>g(t.target.checked),"aria-label":a("agents.showSystemAgents","Show system agents")}),a("agents.showSystemAgents","Show system agents")]})]})}),h&&e.jsxs("div",{className:"agent-controls-mobile-actions",children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{J(!0),V(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(Ht,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),V(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(ua,{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:Ka,onClick:()=>{V(!1),Zt("paused")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Tt,{}),e.jsx("span",{children:a("agents.pauseAllAgents","Pause All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:we?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:Xa,onClick:()=>{V(!1),Zt("active")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(bt,{}),e.jsx("span",{children:a("agents.resumeAllAgents","Resume All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:we?a("agents.loadingEligibility","Loading eligibility…"):ne===0?a("agents.noAgentsToResumeHint","No paused project agents to resume"):a("agents.resumeCountHint",{count:ne,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:Oe,onChange:t=>{const i=Number(t.target.value);Yt(Number.isFinite(i)&&i>0?i:1)},disabled:Gt}),e.jsxs("span",{className:"heartbeat-multiplier-value",children:["×",Oe.toFixed(1)]}),e.jsx("select",{className:"heartbeat-multiplier-preset",value:String(Lt.reduce((t,i)=>Math.abs(i-Oe)<Math.abs(t-Oe)?i:t,Lt[0])),onChange:t=>{const i=Number(t.target.value);Yt(Number.isFinite(i)&&i>0?i:1)},disabled:Gt,"aria-label":a("agents.heartbeatSpeedPreset","Heartbeat speed preset"),children:Lt.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(Gs,{agents:nt})]})]})]})}),e.jsx(tn,{isOpen:D,onClose:()=>{y(!1),q(null)},onCreated:()=>{y(!1),q(null),_()},projectId:d,prefillDraft:U,agentOnboardingEnabled:p,existingAgents:I,onPrefillDraft:q}),e.jsx(sn,{isOpen:ie,onClose:()=>J(!1),onImported:()=>void _(),projectId:d}),e.jsx(Qs,{stats:R,activeAgents:_a,projectId:d,isOpen:_e,onToggle:()=>Ge(t=>!t),onSelectAgent:Ha,onOpenTaskLogs:N}),W==="org"?e.jsx("div",{className:"agents-org-full-view",children:e.jsx("div",{className:"agents-view-content agents-view-content--org-full",children:L?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:Ue,"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(Na,{inline:!0,showInlineBackButton:!1,agentId:L,projectId:d,onClose:Ue,addToast:l,onChildClick:Qt,initialTab:pe,initialRunId:C,preferActiveRun:se},L)})]}):la?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{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:[h?e.jsxs("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:[na(),aa()]}):e.jsxs("div",{className:"agent-org-chart-toolbar",children:[na(),e.jsx("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:aa()})]}),e.jsx("div",{ref:ve,className:"agent-org-chart-viewport","data-testid":"agent-org-chart-viewport",tabIndex:0,role:"region","aria-label":a("agents.orgChartCanvas","Org chart canvas"),onWheel:Va,onPointerDown:Ba,onPointerMove:Ua,onPointerUp:sa,onPointerCancel:sa,onKeyDown:Wa,"data-panning":Se?"true":"false",children:e.jsxs("div",{ref:Re,className:`agent-org-chart-canvas agent-org-chart-canvas--zoom-${Math.round((M.scale??1)*100)}`,"data-panning":Se?"true":"false",style:{transform:`translate(${M.x}px, ${M.y}px) scale(${M.scale})`},children:[e.jsx("div",{className:`agent-org-chart${xt==="vertical"?" agent-org-chart--vertical":""}`,"data-testid":"agent-org-chart","data-layout-mode":xt,children:K?e.jsxs("div",{className:"agent-org-chart__loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingOrgChart","Loading org chart...")})]}):Be.length===0?e.jsx(_t,{onCtaClick:it}):(j.current=[],Be.map(t=>e.jsx(Pa,{node:t,onSelect:za,getHealthStatus:wt,selectedAgentId:ae,registerNodeElement:Oa,linksRef:j},t.agent.id)))}),e.jsx(cn,{links:j.current,nodeElements:o.current,canvasRef:Re,viewportRef:ve,layoutMode:xt,transform:M})]})})]})})}):e.jsxs("div",{className:"agents-split-layout",style:h?void 0:{gridTemplateColumns:`${b}px var(--space-sm) minmax(0, 1fr)`},children:[e.jsx("div",{className:`agents-split-sidebar${re?" agents-split-sidebar--hidden-mobile":""}`,children:e.jsx("div",{className:"agents-view-content",children:la?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):W==="board"?e.jsx("div",{className:"agent-board",children:nt.length===0?e.jsx(_t,{onCtaClick:it}):nt.map(t=>{const i=wt(t),u=Bt(t,i,a),m=Ot(t.state),k=Vt("agent-board-card",t.state);return e.jsxs("div",{className:`agent-board-card ${k}${L===t.id?" agent-card--selected":""}`,children:[e.jsxs("div",{className:"agent-board-clickable",onClick:()=>ge(t.id),role:"button",tabIndex:0,onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.key===" "&&T.preventDefault(),ge(t.id))},children:[e.jsxs("div",{className:"agent-board-header",children:[e.jsx("span",{className:"agent-board-icon",children:e.jsx(Nt,{agent:t,size:20})}),e.jsx("span",{className:"agent-board-badge badge text-secondary",children:ea(t.role)}),e.jsx("span",{className:`agent-board-badge badge ${m}`,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}),e.jsxs("div",{className:"agent-board-health",style:{color:i.color},title:u.title,children:[i.icon,u.label?` ${u.label}`:""]})]}),(t.state==="idle"||t.state==="paused"||t.state==="error")&&e.jsx("div",{className:"agent-board-actions",children:e.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>void qt(t.id,t.name),title:a("agents.delete","Delete"),children:e.jsx(ga,{size:14})})})]},t.id)})}):e.jsx("div",{className:"agent-list",children:nt.length===0?e.jsx(_t,{onCtaClick:it}):nt.map(t=>{const i=wt(t),u=Bt(t,i,a),m=Ot(t.state),k=Vt("agent-card",t.state),T=It(t.runtimeConfig?.heartbeatIntervalMs),Z=Ss(T),G=gt===t.id,le=on(t);return e.jsxs("div",{className:`agent-card agent-card--clickable ${k}${L===t.id?" agent-card--selected":""}`,onClick:x=>{const B=x.target;if(B===x.currentTarget){ge(t.id);return}const z=B.closest('button, select, input, [role="button"]');z&&z!==x.currentTarget||ge(t.id)},role:"button",tabIndex:0,onKeyDown:x=>{x.target===x.currentTarget&&(x.key==="Enter"||x.key===" ")&&(x.key===" "&&x.preventDefault(),ge(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:[ut===t.id?e.jsx("select",{ref:st,className:"select agent-role-select",value:t.role,onChange:x=>void Ma(t.id,x.target.value),onKeyDown:x=>La(x,t.id),onBlur:()=>Ne(null),autoFocus:!0,children:r.map(x=>e.jsxs("option",{value:x.value,children:[x.icon," ",x.label]},x.value))}):e.jsx("span",{className:"agent-icon agent-icon--clickable",onClick:x=>{x.stopPropagation(),Ne(t.id)},title:a("agents.clickToChangeRole","Click to change role"),role:"button",tabIndex:0,onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.stopPropagation(),Ne(t.id))},children:e.jsx(Nt,{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(wa,{size:20,className:"agent-card-chevron"})]}),e.jsxs("div",{className:"agent-badges",children:[e.jsx("span",{className:`badge ${m}`,children:t.state}),e.jsxs("span",{className:"badge",style:{color:i.color},title:u.title,children:[i.icon,u.label?` ${u.label}`:""]}),e.jsx("span",{className:"badge text-secondary",children:ea(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 x=Ga(t);if(x.length===0)return null;const B=x.slice(0,2),z=x.length-2;return e.jsxs(e.Fragment,{children:[B.map(He=>e.jsx("span",{className:"badge badge-skill",title:He,children:zs(He)},He)),z>0&&e.jsxs("span",{className:"badge badge-skill",children:["+",z]})]})})()]})]}),e.jsxs("div",{className:"agent-card-body",children:[e.jsxs("div",{className:"agent-model-runtime",children:[e.jsxs("span",{className:"text-secondary",children:[le.isRuntime?a("agents.runtime","Runtime"):a("agents.model","Model"),":"]}),e.jsx("span",{className:"badge agent-model-runtime__value",title:le.label??a("agents.auto","Auto"),children:le.label??a("agents.auto","Auto")})]}),t.state==="error"&&t.lastError?e.jsx(As,{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(Ca,{taskId:t.taskId,taskColumn:t.taskColumn})})]}),e.jsxs("div",{className:"agent-heartbeat-control",children:[e.jsx("span",{className:"text-secondary",children:a("agents.heartbeat","Heartbeat:")}),c===t.id?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"input agent-heartbeat-custom-input",value:ye[t.id]??"",onChange:x=>De(B=>({...B,[t.id]:x.target.value})),onKeyDown:x=>{x.key==="Enter"?Jt(t):x.key==="Escape"&&(f(null),De(B=>{const z={...B};return delete z[t.id],z}))},disabled:G,"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 Jt(t),disabled:G,title:a("agents.saveCustomInterval","Save custom interval"),children:a("agents.save","Save")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>{f(null),De(x=>{const B={...x};return delete B[t.id],B})},disabled:G,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:T,onChange:x=>{const B=x.target.value;B==="__custom__"?Fa(t):Ia(t,Number(B))},disabled:G,"aria-label":a("agents.setHeartbeatAria","Set heartbeat interval for {{name}}",{name:t.name}),children:[Z.map(x=>e.jsx("option",{value:x.value,children:x.label},x.value)),Rs.some(x=>x.value===T)&&e.jsx("option",{value:"__custom__",children:a("agents.customHeartbeatOption","Custom...")})]})}),G&&e.jsx("span",{className:"agent-heartbeat-saving text-secondary",children:a("agents.saving","Saving…")}),t.lastHeartbeatAt&&(()=>{const x=new Date(t.lastHeartbeatAt),B=new Date(x.getTime()+T),z=t.state==="active"||t.state==="running";return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"agent-heartbeat-last text-secondary",title:x.toLocaleString(),children:a("agents.lastHeartbeatAt","Last: {{time}}",{time:x.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})}),z&&e.jsx("span",{className:"agent-heartbeat-next text-secondary",title:B.toLocaleString(),children:a("agents.nextHeartbeatAt","Next: {{time}}",{time:B.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 lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.activate","Activate"),children:[e.jsx(bt,{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 $a(t.id,t.name),disabled:Ve.has(t.id),title:a("agents.runNow","Run Now"),"aria-label":a("agents.runNowAria","Run now for {{name}}",{name:t.name}),children:[e.jsx(at,{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 lt(t.id,"paused"),disabled:Ve.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Tt,{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 lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.resume","Resume"),children:[e.jsx(bt,{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:()=>ge(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(at,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.running","Running")})]}),e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"paused"),disabled:Ve.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Tt,{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 lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.retry","Retry"),children:[e.jsx(bt,{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:()=>ge(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(Ts,{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 qt(t.id,t.name),title:a("agents.delete","Delete"),children:[e.jsx(ga,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.delete","Delete")})]})]})]})]},t.id)})})})}),!h&&e.jsx("div",{className:"agents-split-resize-handle","data-testid":"agents-sidebar-resize-handle",role:"separator","aria-orientation":"vertical","aria-valuemin":Aa,"aria-valuemax":Ra,"aria-valuenow":b,"aria-label":a("agents.resizeSidebar","Resize agents sidebar"),tabIndex:0,onPointerDown:Ze,onKeyDown:yt}),e.jsx("div",{className:`agents-split-detail${h&&!L?" agents-split-detail--hidden-mobile":""}`,children:L?e.jsx(s.Suspense,{fallback:null,children:e.jsx(Na,{inline:!0,showInlineBackButton:h,agentId:L,projectId:d,onClose:Ue,addToast:l,onChildClick:Qt,initialTab:pe,initialRunId:C,preferActiveRun:se,onMutationSuccess:Da},L)}):e.jsxs("div",{className:"agents-detail-empty-state",children:[e.jsx(zt,{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{Nn as AgentsView};
24
+ Agent instructions go here...`),value:b,onChange:o=>{h("paste"),w([]),S(o.target.value),$(null)},rows:8,"aria-label":r("agents.manifestContent","Manifest content")})]}),e.jsx("p",{className:"agent-import-file-hint",children:r("agents.currentInput","Current input: {{method}}",{method:n})}),pe&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),pe]})]}),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:r("agents.company","Company")}),e.jsx("span",{className:"agent-import-company-name",children:I})]}),y.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:y.map((o,j)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:o})]},j))}),e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Ft,{size:14}),e.jsx("span",{children:r("agents.agentsFound","{{count}} agent{{plural}} found",{count:H.length,plural:H.length!==1?"s":""})})]}),H.length>0&&e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ie(H.map(o=>o.name)),children:r("agents.selectAllAgents","Select all agents")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ie([]),children:r("agents.clearAgents","Clear agents")})]}),H.length>0?e.jsx("div",{className:"agent-import-agent-list",children:H.map((o,j)=>e.jsxs("div",{className:"agent-import-agent-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":r("agents.selectAgent","Select agent {{name}}",{name:o.name}),checked:q.includes(o.name),onChange:()=>ve(o.name)})}),e.jsx("span",{className:"agent-import-agent-icon",children:o.icon||"🤖"}),e.jsxs("div",{className:"agent-import-agent-details",children:[e.jsx("span",{className:"agent-import-agent-name",children:o.name}),e.jsxs("span",{className:"agent-import-agent-meta",children:[o.title&&e.jsxs("span",{className:"agent-import-agent-title",children:[o.title," · "]}),e.jsx("span",{className:"agent-import-agent-role",children:o.role}),o.reportsTo&&e.jsx("span",{className:"agent-import-agent-reports",children:r("agents.importReportsTo"," · reports to {{agent}}",{agent:o.reportsTo})}),o.skills&&o.skills.length>0&&e.jsx("span",{className:"agent-import-agent-model",children:r("agents.importSkills"," · skills: {{skills}}",{skills:o.skills.join(", ")})})]}),o.instructionsText&&e.jsxs("span",{className:"agent-import-agent-instructions",children:[o.instructionsText.slice(0,100),o.instructionsText.length>100?"...":""]})]})]},j))}):e.jsx("p",{className:"agent-import-empty",children:r("agents.noAgentsFound","No agents found in the manifest.")}),E.length>0&&e.jsxs("div",{className:"agent-import-skills-section",children:[e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Ft,{size:14}),e.jsx("span",{children:r("agents.skillsFound","{{count}} skill{{plural}} found",{count:E.length,plural:E.length!==1?"s":""})})]}),e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L(E.map(o=>o.name)),children:r("agents.selectAllSkills","Select all skills")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L([]),children:r("agents.clearSkills","Clear skills")})]}),e.jsx("div",{className:"agent-import-skill-list",children:E.map((o,j)=>e.jsxs("div",{className:"agent-import-skill-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":r("agents.selectSkill","Select skill {{name}}",{name:o.name}),checked:J.includes(o.name),onChange:()=>Re(o.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:o.name}),o.description&&e.jsx("span",{className:"agent-import-skill-description",children:o.description})]})]},`${o.name}-${j}`))})]}),se&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),se]})]}),v==="result"&&C&&e.jsxs("div",{className:"agent-import-result",children:[e.jsx("div",{className:"agent-import-result-icon",children:e.jsx(jt,{size:32})}),e.jsx("h3",{className:"agent-import-result-title",children:r("agents.importComplete","Import Complete")}),e.jsxs("p",{className:"agent-import-result-company",children:[r("agents.from","From")," ",e.jsx("strong",{children:C.companyName??"Unknown"})]}),e.jsxs("div",{className:"agent-import-result-stats",children:[C.created.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:r("agents.resultCreated","{{count}} created",{count:C.created.length})})}),C.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.resultSkipped","{{count}} skipped (already exist)",{count:C.skipped.length})})}),C.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:r("agents.resultErrors","{{count}} error{{plural}}",{count:C.errors.length,plural:C.errors.length!==1?"s":""})})})]}),C.created.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:C.created.map((o,j)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(jt,{size:12}),e.jsx("span",{children:o.name})]},j))}),C.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:C.errors.map((o,j)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ca,{size:12}),e.jsxs("span",{children:[o.name,": ",o.error]})]},j))}),C.warnings&&C.warnings.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:C.warnings.map((o,j)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:o})]},j))}),C.skills&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-result-divider"}),e.jsx("h4",{className:"agent-import-result-section-title",children:r("agents.skills","Skills")}),e.jsxs("div",{className:"agent-import-result-stats",children:[C.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:r("agents.skillsImported","{{count}} skill{{plural}} imported",{count:C.skills.imported.length,plural:C.skills.imported.length!==1?"s":""})})}),C.skills.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.skillsSkipped","{{count}} skill{{plural}} skipped (already exist)",{count:C.skills.skipped.length,plural:C.skills.skipped.length!==1?"s":""})})}),C.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:r("agents.skillsErrors","{{count}} skill{{plural}} error{{pluralError}}",{count:C.skills.errors.length,plural:C.skills.errors.length!==1?"s":"",pluralError:C.skills.errors.length!==1?"s":""})})}),C.skills.imported.length===0&&C.skills.skipped.length===0&&C.skills.errors.length===0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.noSkillsInPackage","No skills in package")})})]}),C.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:C.skills.imported.map((o,j)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(jt,{size:12}),e.jsx("span",{children:o.name})]},j))}),C.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:C.skills.errors.map((o,j)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ca,{size:12}),e.jsxs("span",{children:[o.name,": ",o.error]})]},j))})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[v==="preview"&&e.jsx("button",{className:"btn",onClick:()=>g("input"),disabled:ce,children:r("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:Le,disabled:ce,children:v==="result"?r("agents.close","Close"):r("agents.cancel","Cancel")}),v==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void $e(),disabled:he||(n==="directory"?A.length===0:n==="browse"?!K:!b.trim()),children:he?e.jsxs(e.Fragment,{children:[e.jsx(At,{size:14,className:"spin"}),r("agents.parsing","Parsing...")]}):r("agents.preview","Preview")}),v==="preview"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void ne(),disabled:ce||ee===0&&M===0,children:ce?e.jsxs(e.Fragment,{children:[e.jsx(At,{size:14,className:"spin"}),Xe]}):r("agents.importButton","Import {{label}}",{label:Ae})})]})]})}):null}const Na=s.lazy(()=>Es(()=>import("./AgentDetailView-BICsleMh.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(l=>({default:l.AgentDetailView})));function nn(l){return[{value:"triage",label:l("agents.roleTriage","Triage"),icon:"⊕"},{value:"executor",label:l("agents.roleExecutor","Executor"),icon:"▶"},{value:"reviewer",label:l("agents.roleReviewer","Reviewer"),icon:"⊙"},{value:"merger",label:l("agents.roleMerger","Merger"),icon:"⊞"},{value:"scheduler",label:l("agents.roleScheduler","Scheduler"),icon:"◷"},{value:"engineer",label:l("agents.roleEngineer","Engineer"),icon:"⎔"},{value:"custom",label:l("agents.roleCustom","Custom"),icon:"✦"}]}const Lt=[.1,.25,.5,1,2,3,5,10],ln=.25,rn=3,ft=16,et=32,ya=320,Aa=260,Ra=520,Ta="kb-dashboard-agents-sidebar-width";function $t(l){return Math.max(Aa,Math.min(Ra,l))}function ka(l){if(typeof window>"u")return ya;const d=ct(Ta,l),N=d?Number(d):NaN;return Number.isFinite(N)?$t(N):ya}function Ot(l){switch(l){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 Vt(l,d){switch(d){case"running":return`${l}--running`;case"active":return`${l}--active`;case"paused":return`${l}--paused`;case"error":return`${l}--error`;case"idle":default:return`${l}--idle`}}function on(l){const d=l.runtimeConfig??{},N=typeof d.runtimeHint=="string"?d.runtimeHint:"";if(N)return{label:N,isRuntime:!0};const p=typeof d.modelProvider=="string"?d.modelProvider:"",a=typeof d.modelId=="string"?d.modelId:"";if(p&&a)return{label:`${p}/${a}`,isRuntime:!1};const r=typeof d.model=="string"?d.model:"";if(r.includes("/")){const v=r.indexOf("/");return{label:r.slice(v+1),isRuntime:!1}}return{label:null,isRuntime:!1}}function Ea(l){return l.children.length===0?1:l.children.reduce((d,N)=>d+Ea(N),0)}function Bt(l,d,N){return l.state==="error"?{title:void 0,label:N("agents.healthError","Error")}:{title:d.reason??d.label,label:d.stateDerived?null:d.label}}function Pa({node:l,onSelect:d,getHealthStatus:N,selectedAgentId:p,registerNodeElement:a,linksRef:r}){const{t:v}=Ee("app"),{agent:g,children:n}=l,h=N(g),b=Bt(g,h,v),S=Ot(g.state),A=Vt("org-chart-node-card",g.state),w=Ea(l),I={"--org-chart-subtree-leaves":String(w)};return e.jsxs("div",{className:`org-chart-node${n.length>0?" org-chart-node--has-children":""}`,style:I,children:[e.jsxs("div",{ref:R=>a(g.id,R),"data-agent-id":g.id,className:`org-chart-node-card ${A}${p===g.id?" agent-card--selected":""}`,onClick:()=>d(g.id),role:"button",tabIndex:0,onKeyDown:R=>{(R.key==="Enter"||R.key===" ")&&(R.key===" "&&R.preventDefault(),d(g.id))},children:[e.jsxs("div",{className:"org-chart-node__header",children:[e.jsx("span",{className:"org-chart-node__icon",children:e.jsx(Nt,{agent:g,size:20})}),e.jsx("span",{className:"org-chart-node__name",children:g.name})]}),e.jsxs("div",{className:"org-chart-node__meta",children:[e.jsx("span",{className:`org-chart-node__badge ${S}`,children:g.state}),e.jsxs("span",{className:"org-chart-node__health",style:{color:h.color},title:b.title,children:[h.icon,b.label&&e.jsx("span",{className:"text-secondary",children:b.label})]})]})]}),n.length>0&&e.jsx("div",{className:"org-chart-children",role:"group","aria-label":v("agents.orgChartEmployees","{{name}} employees",{name:g.name}),children:n.map(R=>(r.current.push({parentId:g.id,childId:R.agent.id}),e.jsx(Pa,{node:R,onSelect:d,getHealthStatus:N,selectedAgentId:p,registerNodeElement:a,linksRef:r},R.agent.id)))})]})}function cn({links:l,nodeElements:d,canvasRef:N,viewportRef:p,layoutMode:a,transform:r}){const[v,g]=s.useState([]);return s.useLayoutEffect(()=>{const n=N.current,h=p.current;if(!n||!h||l.length===0){g([]);return}const b=()=>{const A=n.getBoundingClientRect(),w=l.flatMap(({parentId:I,childId:R})=>{const H=d.get(I),_=d.get(R);if(!H||!_)return[];const E=H.getBoundingClientRect(),D=_.getBoundingClientRect(),y=(E.left-A.left)/r.scale,U=(E.top-A.top)/r.scale,q=(D.left-A.left)/r.scale,ie=(D.top-A.top)/r.scale;if(a==="vertical"){const re=y,pe=U+E.height/r.scale/2,$=q,C=ie+D.height/r.scale/2,xe=re-(re-$)/2;return[`M ${re} ${pe} L ${xe} ${pe} L ${xe} ${C} L ${$} ${C}`]}const J=y+E.width/r.scale/2,L=U+E.height/r.scale,he=q+D.width/r.scale/2,ae=ie,ce=L+(ae-L)/2;return[`M ${J} ${L} L ${J} ${ce} L ${he} ${ce} L ${he} ${ae}`]});g(w)};b();const S=new ResizeObserver(b);return S.observe(n),S.observe(h),d.forEach(A=>S.observe(A)),()=>S.disconnect()},[N,a,l,d,r.scale,p]),e.jsx("svg",{className:"agent-org-chart-connectors","aria-hidden":"true",children:v.map((n,h)=>e.jsx("path",{d:n},`${h}-${n}`))})}function Nn({addToast:l,projectId:d,onOpenTaskLogs:N,agentOnboardingEnabled:p=!1}){const{t:a}=Ee("app"),r=nn(a),[v,g]=s.useState(!1),h=ps()==="mobile",[b,S]=s.useState(()=>ka(d)),[A,w]=s.useState("all"),{agents:I,stats:R,isLoading:H,loadAgents:_,refreshAgents:E}=xs(d,{filterState:A,showSystemAgents:v}),[D,y]=s.useState(!1),[U,q]=s.useState(null),[ie,J]=s.useState(!1),[L,he]=s.useState(null),[ae,ce]=s.useState(null),re=h&&!!L,[pe,$]=s.useState("dashboard"),[C,xe]=s.useState(null),[se,de]=s.useState(!1),[W,ke]=s.useState(()=>{if(typeof window>"u")return"list";const t=ct("fn-agent-view",d);return t==="list"||t==="board"||t==="org"?t:"list"}),[oe,fe]=s.useState(()=>{if(typeof window>"u")return"auto";const t=ct(Et,d);return pa(t)?t:"auto"}),[Q,Pe]=s.useState([]),[K,ue]=s.useState(!1),[Ce,be]=s.useState(0),[je,V]=s.useState(!1),[_e,Ge]=s.useState(!1),[Me,Le]=s.useState(!1),[we,Ke]=s.useState(!1),[Ie,$e]=s.useState(0),[ne,ee]=s.useState(0),[M,O]=s.useState({scale:1,x:0,y:0}),[Se,Ae]=s.useState(!1),Xe=s.useRef(null),ve=s.useRef(null),Re=s.useRef(null),o=s.useRef(new Map),j=s.useRef([]),P=s.useRef(new Map),F=s.useRef(null),X=s.useRef(null),Y=s.useRef(!1),{confirm:Ye}=bs(),Fe=s.useRef(null),dt=s.useId();s.useEffect(()=>{S(ka(d))},[d]),s.useEffect(()=>{const t=ct("fn-agent-view",d);if(t==="list"||t==="board"||t==="org"){ke(t);return}ke("list")},[d]),s.useEffect(()=>{Rt("fn-agent-view",W,d)},[W,d]),s.useEffect(()=>{const t=ct(Et,d);fe(pa(t)?t:"auto")},[d]),s.useEffect(()=>{Rt(Et,oe,d)},[oe,d]);const ze=s.useCallback(t=>{try{Rt(Ta,String(t),d)}catch{}},[d]),Ze=s.useCallback(t=>{if(h)return;t.preventDefault(),t.stopPropagation();const i=t.currentTarget;typeof i.setPointerCapture=="function"&&i.setPointerCapture(t.pointerId);const u=t.clientX,m=b;let k=m;document.body.style.userSelect="none";const T=G=>{const le=G.clientX-u,x=$t(m+le);k=x,S(x)},Z=G=>{typeof i.releasePointerCapture=="function"&&i.releasePointerCapture(G.pointerId),document.body.style.userSelect="",document.removeEventListener("pointermove",T),document.removeEventListener("pointerup",Z),ze(k)};document.addEventListener("pointermove",T),document.addEventListener("pointerup",Z)},[h,ze,b]),yt=s.useCallback(t=>{if(h||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;t.preventDefault();const i=t.shiftKey?50:10,u=t.key==="ArrowLeft"?-i:i,m=$t(b+u);S(m),ze(m)},[h,ze,b]),[ut,Ne]=s.useState(null),st=s.useRef(null),[gt,Te]=s.useState(null),[c,f]=s.useState(null),[ye,De]=s.useState({}),[Oe,Wt]=s.useState(1),[Gt,Kt]=s.useState(!1),[Ve,Xt]=s.useState(new Set),[kt,qe]=s.useState(new Map),mt=s.useRef(!0);s.useEffect(()=>(mt.current=!0,()=>{mt.current=!1}),[]),s.useEffect(()=>{vs(d).then(t=>{mt.current&&Wt(t.heartbeatMultiplier??1)}).catch(()=>{})},[d]);const Yt=s.useCallback(async t=>{const i=Number.isFinite(t)&&t>0?t:1;Wt(i),Kt(!0);try{await fs({heartbeatMultiplier:i},d),l(a("agents.heartbeatSpeedSet","Heartbeat speed set to ×{{value}}",{value:i.toFixed(1)}),"success")}catch(u){l(a("agents.heartbeatSpeedSaveFailed","Failed to save heartbeat multiplier: {{error}}",{error:me(u)}),"error")}finally{mt.current&&Kt(!1)}},[d,l]),ht=s.useMemo(()=>kt.size===0?I:I.map(t=>{const i=kt.get(t.id);return i?{...t,state:i}:t}),[I,kt]),nt=s.useMemo(()=>ht.filter(t=>v||!ot(t)),[ht,v]),_a=s.useMemo(()=>ht.filter(t=>t.state!=="active"&&t.state!=="running"?!1:v||!ot(t)),[ht,v]),Be=s.useMemo(()=>{if(v)return Q;const t=i=>ot(i.agent)?null:{...i,children:i.children.map(t).filter(u=>u!==null)};return Q.map(t).filter(i=>i!==null)},[Q,v]);s.useEffect(()=>{if(W!=="org")return;const t=ve.current;if(!t)return;const i=()=>{be(t.clientWidth)};i();const u=typeof ResizeObserver<"u"?new ResizeObserver(i):null;return u?.observe(t),window.addEventListener("resize",i),()=>{u?.disconnect(),window.removeEventListener("resize",i)}},[W,Be.length]),s.useEffect(()=>{if(W!=="org")return;let t=!1;return ue(!0),js(d,{includeEphemeral:v}).then(i=>{t||Pe(i)}).catch(i=>{t||(l(a("agents.orgChartLoadFailed","Failed to load org chart: {{error}}",{error:me(i)}),"error"),Pe([]))}).finally(()=>{t||ue(!1)}),()=>{t=!0}},[W,d,v,l]),s.useEffect(()=>{const t=setInterval(()=>{_()},3e4);return()=>{clearInterval(t)}},[_]),s.useEffect(()=>{if(!je)return;let t=!1;Ke(!0),Dt(void 0,d).then(m=>{if(t)return;const k=m.filter(T=>!ot(T));$e(k.filter(T=>T.state==="active"||T.state==="running").length),ee(k.filter(T=>T.state==="paused").length)}).catch(m=>{t||($e(0),ee(0),l(a("agents.bulkActionsLoadFailed","Failed to load bulk agent actions: {{error}}",{error:me(m)}),"error"))}).finally(()=>{t||Ke(!1)});const i=m=>{const k=m.target;k&&(Xe.current?.contains(k)||Fe.current?.contains(k)||V(!1))},u=m=>{m.key==="Escape"&&(V(!1),Fe.current?.focus())};return document.addEventListener("mousedown",i),document.addEventListener("touchstart",i),document.addEventListener("keydown",u),()=>{t=!0,document.removeEventListener("mousedown",i),document.removeEventListener("touchstart",i),document.removeEventListener("keydown",u)}},[l,je,d]);const Zt=async t=>{if(!Me){Le(!0);try{const u=(await Dt(void 0,d)).filter(z=>!ot(z)),m=u.filter(z=>t==="paused"?z.state==="active"||z.state==="running":z.state==="paused"),k=u.length-m.length;if(m.length===0){l(t==="paused"?a("agents.noAgentsToPause","No agents eligible to pause"):a("agents.noAgentsToResume","No agents eligible to resume"),"error");return}if(!await Ye({title:t==="paused"?a("agents.pauseAllTitle","Pause All Agents"):a("agents.resumeAllTitle","Resume All Agents"),message:t==="paused"?a("agents.pauseAllConfirm",{count:m.length,defaultValue_one:"Pause {{count}} agent in this project?",defaultValue_other:"Pause {{count}} agents in this project?"}):a("agents.resumeAllConfirm",{count:m.length,defaultValue_one:"Resume {{count}} agent in this project?",defaultValue_other:"Resume {{count}} agents in this project?"}),danger:t==="paused"}))return;const Z=await Promise.allSettled(m.map(z=>ma(z.id,t,d))),G=Z.map((z,He)=>({result:z,agent:m[He]})).filter(z=>z.result.status==="rejected"),le=Z.length-G.length,x=G.length,B=t==="paused"?a("agents.pausedSummary",{count:le,skipped:k,defaultValue_one:"Paused {{count}} agent; skipped {{skipped}}",defaultValue_other:"Paused {{count}} agents; skipped {{skipped}}"}):a("agents.resumedSummary",{count:le,skipped:k,defaultValue_one:"Resumed {{count}} agent; skipped {{skipped}}",defaultValue_other:"Resumed {{count}} agents; skipped {{skipped}}"});if(x>0){const z=G.slice(0,3).map(({agent:He,result:Ya})=>`${He.name||He.id}: ${me(Ya.reason)}`).join("; ");l(`${B}; failed ${x}${z?` (${z})`:""}`,"error")}else l(B,"success");await _()}catch(i){l(t==="paused"?a("agents.pauseAgentsFailed","Failed to pause agents: {{error}}",{error:me(i)}):a("agents.resumeAgentsFailed","Failed to resume agents: {{error}}",{error:me(i)}),"error")}finally{Le(!1)}}},lt=async(t,i)=>{if(!Ve.has(t)){Xt(u=>new Set(u).add(t)),qe(u=>{const m=new Map(u);return m.set(t,i),m});try{await ma(t,i,d),l(a("agents.stateUpdated","Agent state updated to {{state}}",{state:i}),"success"),await _(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const k=new Map(m);return k.delete(t),k}),l(a("agents.stateUpdateFailed","Failed to update state: {{error}}",{error:me(u)}),"error")}finally{Xt(u=>{const m=new Set(u);return m.delete(t),m})}}},qt=async(t,i)=>{if(await Ye({title:a("agents.deleteTitle","Delete Agent"),message:a("agents.deleteConfirm",'Delete agent "{{name}}"? This cannot be undone.',{name:i}),danger:!0}))try{await _s(t,d),l(a("agents.deleted",'Agent "{{name}}" deleted',{name:i}),"success"),await _()}catch(m){l(a("agents.deleteFailed","Failed to delete agent: {{error}}",{error:me(m)}),"error")}},Ma=async(t,i)=>{const u=I.find(m=>m.id===t);if(u){if(u.role===i){Ne(null);return}try{await vt(t,{role:i},d),l(a("agents.roleUpdated","Agent role updated to {{role}}",{role:r.find(m=>m.value===i)?.label??i}),"success"),Ne(null),_()}catch(m){l(a("agents.roleUpdateFailed","Failed to update role: {{error}}",{error:me(m)}),"error")}}},La=(t,i)=>{t.key==="Escape"&&Ne(null)},Ia=async(t,i)=>{c===t.id&&(f(null),De(u=>{const m={...u};return delete m[t.id],m})),Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:i}},d),l(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ha(i),name:t.name}),"success"),_()}catch(u){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(u)}),"error")}finally{Te(null)}},Jt=async t=>{const i=ye[t.id]??"";if(i.trim()===""){l(a("agents.heartbeatEnterMinutes","Please enter a heartbeat interval in minutes"),"error");return}const u=Number(i);if(isNaN(u)){l(a("agents.heartbeatMustBeNumber","Heartbeat interval must be a valid number"),"error");return}if(u<=0){l(a("agents.heartbeatMustBePositive","Heartbeat interval must be greater than 0"),"error");return}if(u>=1&&u<5){Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:Ms}},d),l(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"),f(null),De(k=>{const T={...k};return delete T[t.id],T}),_()}catch(k){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(k)}),"error")}finally{Te(null)}return}const m=Math.round(u*6e4);Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:m}},d),l(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ha(m),name:t.name}),"success"),f(null),De(k=>{const T={...k};return delete T[t.id],T}),_()}catch(k){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(k)}),"error")}finally{Te(null)}},Fa=t=>{const i=It(t.runtimeConfig?.heartbeatIntervalMs),u=Math.round(i/6e4);f(t.id),De(m=>({...m,[t.id]:String(u)}))},ge=s.useCallback((t,i)=>{he(t),$(i?.initialTab??"dashboard"),xe(i?.initialRunId??null),de(i?.preferActiveRun??!1)},[]),Ue=s.useCallback(()=>{he(null),$("dashboard"),xe(null),de(!1)},[]),Qt=s.useCallback(t=>{ge(t)},[ge]),za=s.useCallback(t=>{ce(t),ge(t)},[ge]),Da=s.useCallback(async({agentId:t,deleted:i})=>{await E(),i&&L===t&&Ue()},[E,L,Ue]),Ha=s.useCallback(t=>{ge(t),h&&Ge(!1)},[h,ge]),$a=async(t,i)=>{qe(u=>{const m=new Map(u);return m.set(t,"running"),m});try{await Ls(t,d,{source:"on_demand",triggerDetail:"Triggered from dashboard"}),l(a("agents.heartbeatRunStarted","Heartbeat run started for {{name}}",{name:i}),"success"),await _(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const k=new Map(m);return k.delete(t),k}),l(a("agents.heartbeatRunFailed","Failed to start heartbeat run: {{error}}",{error:me(u)}),"error")}},We=s.useCallback(t=>Math.min(rn,Math.max(ln,t)),[]),te=s.useCallback(t=>{const i=ve.current,u=Re.current?.querySelector(".agent-org-chart");if(!i||!u)return{...t,scale:We(t.scale)};const m=We(t.scale),k=u.scrollWidth*m,T=u.scrollHeight*m,Z=i.clientWidth,G=i.clientHeight,le=Math.min(et,Z-k-et),x=et,B=Math.min(et,G-T-et),z=et;return{scale:m,x:Math.max(le,Math.min(x,t.x)),y:Math.max(B,Math.min(z,t.y))}},[We]),pt=s.useCallback((t,i,u)=>{const m=ve.current;m&&O(k=>{const T=We(t),Z=m.getBoundingClientRect(),G=i-Z.left,le=u-Z.top,x=(G-k.x)/k.scale,B=(le-k.y)/k.scale;return te({scale:T,x:G-x*T,y:le-B*T})})},[We,te]),Je=s.useCallback(()=>{const t=ve.current,i=Re.current?.querySelector(".agent-org-chart");if(!t||!i)return;const u=t.clientWidth,m=t.clientHeight,k=i.scrollWidth,T=i.scrollHeight;if(k<=0||T<=0)return;const Z=We(Math.min(u/k,m/T,1)),G=(u-k*Z)/2,le=(m-T*Z)/2;O(te({scale:Z,x:G,y:le}))},[We,te]),Ct=s.useCallback(t=>{ke(t),t!=="org"&&O({scale:1,x:0,y:0}),h&&L&&Ue()},[Ue,h,L]),ea=t=>r.find(i=>i.value===t)?.label??t,xt=s.useMemo(()=>$s({tree:Be,availableWidth:Ce,preference:oe}),[Be,oe,Ce]),ta=s.useCallback(t=>{fe(t),O({scale:1,x:0,y:0})},[]);s.useEffect(()=>{O({scale:1,x:0,y:0}),Y.current=!1},[d,xt]),s.useLayoutEffect(()=>{W!=="org"||K||Be.length===0||Y.current||(Je(),Y.current=!0)},[W,Be.length,Je,K]);const Oa=s.useCallback((t,i)=>{i?o.current.set(t,i):o.current.delete(t)},[]),aa=s.useCallback(()=>e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>O(t=>te({...t,scale:t.scale*.9})),"aria-label":a("agents.orgChartZoomOut","Zoom out org chart"),title:a("agents.zoomOut","Zoom out"),children:e.jsx(Ws,{size:16})}),e.jsxs("span",{className:"agent-org-chart-controls__zoom-label","aria-live":"polite",children:[Math.round(M.scale*100),"%"]}),e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>O(t=>te({...t,scale:t.scale*1.1})),"aria-label":a("agents.orgChartZoomIn","Zoom in org chart"),title:a("agents.zoomIn","Zoom in"),children:e.jsx(Bs,{size:16})}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm agent-org-chart-controls__fit-btn",onClick:Je,"aria-label":a("agents.orgChartFit","Fit org chart"),title:a("agents.orgChartFit","Fit org chart"),children:[e.jsx(Ns,{size:16}),a("agents.fit","Fit")]}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm",onClick:()=>O(t=>te({...t,x:0,y:0})),"aria-label":a("agents.orgChartCenter","Center org chart"),title:a("agents.orgChartCenter","Center org chart"),children:[e.jsx(ys,{size:16}),a("agents.center","Center")]})]}),[te,Je,M.scale]),Va=s.useCallback(t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();const i=t.deltaY>0?.9:1.1;pt(M.scale*i,t.clientX,t.clientY)},[M.scale,pt]),Ba=s.useCallback(t=>{if(t.target.closest(".org-chart-node-card"))return;if(t.currentTarget.setPointerCapture?.(t.pointerId),P.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),P.current.size===1){F.current={x:t.clientX-M.x,y:t.clientY-M.y,pointerId:t.pointerId},Ae(!0);return}if(P.current.size===2){const u=Array.from(P.current.values()),m=u[0].x-u[1].x,k=u[0].y-u[1].y;X.current={distance:Math.hypot(m,k),scale:M.scale,centerX:(u[0].x+u[1].x)/2,centerY:(u[0].y+u[1].y)/2},F.current=null}},[M.scale,M.x,M.y]),Ua=s.useCallback(t=>{if(P.current.has(t.pointerId)){if(P.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),P.current.size>=2){const i=Array.from(P.current.values()),u=X.current;if(!u)return;const m=i[0].x-i[1].x,k=i[0].y-i[1].y,T=Math.hypot(m,k),Z=u.scale*(T/u.distance);pt(Z,u.centerX,u.centerY);return}!F.current||F.current.pointerId!==t.pointerId||O(i=>te({...i,x:t.clientX-F.current.x,y:t.clientY-F.current.y}))}},[te,pt]),sa=s.useCallback(t=>{P.current.delete(t.pointerId),P.current.size<2&&(X.current=null),P.current.size===0&&(F.current=null,Ae(!1))},[]),Wa=s.useCallback(t=>{if(t.key==="ArrowLeft")O(i=>te({...i,x:i.x+ft}));else if(t.key==="ArrowRight")O(i=>te({...i,x:i.x-ft}));else if(t.key==="ArrowUp")O(i=>te({...i,y:i.y+ft}));else if(t.key==="ArrowDown")O(i=>te({...i,y:i.y-ft}));else if(t.key==="+"||t.key==="=")O(i=>te({...i,scale:i.scale*1.1}));else if(t.key==="-")O(i=>te({...i,scale:i.scale*.9}));else if(t.key==="0")Je();else if(t.key==="Home")O({scale:1,x:0,y:0});else return;t.preventDefault()},[te,Je]),na=s.useCallback(()=>{const t=[{value:"horizontal",label:a("agents.layoutHorizontal","Horizontal"),icon:e.jsx(xa,{size:16}),ariaLabel:a("agents.layoutHorizontalAria","Horizontal layout")},{value:"vertical",label:a("agents.layoutVertical","Vertical"),icon:e.jsx(da,{size:16}),ariaLabel:a("agents.layoutVerticalAria","Vertical layout")},{value:"auto",label:a("agents.layoutAuto","Auto"),icon:e.jsx(tt,{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(i=>{const u=oe===i.value;return e.jsxs("button",{type:"button",className:`btn-icon touch-target agent-org-chart-layout-toggle__button${u?" btn-icon--active":""}`,onClick:()=>ta(i.value),"aria-pressed":u,"aria-label":i.ariaLabel,title:i.ariaLabel,"data-layout-value":i.value,children:[i.icon,e.jsx("span",{className:"agent-org-chart-layout-toggle__text",children:i.label})]},i.value)})})},[ta,oe]),Ga=t=>Array.isArray(t.metadata?.skills)?t.metadata.skills:[],wt=t=>Ps(t),Ka=we||Me||Ie===0,Xa=we||Me||ne===0,la=H&&I.length===0,it=s.useCallback(()=>{y(!0)},[]);return e.jsxs("div",{className:"agents-view",children:[e.jsx(ks,{icon:zt,title:a("agents.title","Agents"),actions:e.jsxs("div",{className:"agents-view-controls",children:[e.jsxs("div",{className:"view-toggle",children:[e.jsx("button",{className:`view-toggle-btn${W==="list"?" active":""}`,onClick:()=>Ct("list"),title:a("agents.listView","List view"),"aria-label":a("agents.listView","List view"),"aria-pressed":W==="list",children:e.jsx(da,{size:16})}),e.jsx("button",{className:`view-toggle-btn${W==="board"?" active":""}`,onClick:()=>Ct("board"),title:a("agents.boardView","Board view"),"aria-label":a("agents.boardView","Board view"),"aria-pressed":W==="board",children:e.jsx(at,{size:16})}),e.jsx("button",{className:`view-toggle-btn${W==="org"?" active":""}`,onClick:()=>Ct("org"),title:a("agents.orgChartView","Org Chart view"),"aria-label":a("agents.orgChartView","Org Chart view"),"aria-pressed":W==="org",children:e.jsx(xa,{size:16})})]}),e.jsxs("div",{className:"agents-view-primary-actions",children:[e.jsx("button",{ref:Fe,className:`btn-icon agent-controls-trigger${je?" agent-controls-trigger--active":""}`,onClick:()=>V(t=>!t),title:a("agents.controls","Controls"),"aria-label":a("agents.controls","Controls"),"aria-haspopup":"dialog","aria-expanded":je,"aria-controls":dt,children:e.jsx(Cs,{size:16})}),e.jsx("button",{className:"btn-icon",onClick:()=>void _(),title:a("agents.refresh","Refresh"),"aria-label":a("agents.refresh","Refresh"),children:e.jsx(tt,{size:16,className:H?"spin":void 0})}),!h&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{J(!0),V(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(Ht,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),V(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(ua,{size:16}),a("agents.newAgent","New Agent")]})]}),je&&e.jsxs("div",{ref:Xe,id:dt,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(ws,{size:14}),e.jsxs("select",{className:"agent-state-filter-select",value:A,onChange:t=>w(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=>g(t.target.checked),"aria-label":a("agents.showSystemAgents","Show system agents")}),a("agents.showSystemAgents","Show system agents")]})]})}),h&&e.jsxs("div",{className:"agent-controls-mobile-actions",children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{J(!0),V(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(Ht,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),V(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(ua,{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:Ka,onClick:()=>{V(!1),Zt("paused")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Tt,{}),e.jsx("span",{children:a("agents.pauseAllAgents","Pause All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:we?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:Xa,onClick:()=>{V(!1),Zt("active")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(bt,{}),e.jsx("span",{children:a("agents.resumeAllAgents","Resume All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:we?a("agents.loadingEligibility","Loading eligibility…"):ne===0?a("agents.noAgentsToResumeHint","No paused project agents to resume"):a("agents.resumeCountHint",{count:ne,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:Oe,onChange:t=>{const i=Number(t.target.value);Yt(Number.isFinite(i)&&i>0?i:1)},disabled:Gt}),e.jsxs("span",{className:"heartbeat-multiplier-value",children:["×",Oe.toFixed(1)]}),e.jsx("select",{className:"heartbeat-multiplier-preset",value:String(Lt.reduce((t,i)=>Math.abs(i-Oe)<Math.abs(t-Oe)?i:t,Lt[0])),onChange:t=>{const i=Number(t.target.value);Yt(Number.isFinite(i)&&i>0?i:1)},disabled:Gt,"aria-label":a("agents.heartbeatSpeedPreset","Heartbeat speed preset"),children:Lt.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(Gs,{agents:nt})]})]})]})}),e.jsx(tn,{isOpen:D,onClose:()=>{y(!1),q(null)},onCreated:()=>{y(!1),q(null),_()},projectId:d,prefillDraft:U,agentOnboardingEnabled:p,existingAgents:I,onPrefillDraft:q}),e.jsx(sn,{isOpen:ie,onClose:()=>J(!1),onImported:()=>void _(),projectId:d}),e.jsx(Qs,{stats:R,activeAgents:_a,projectId:d,isOpen:_e,onToggle:()=>Ge(t=>!t),onSelectAgent:Ha,onOpenTaskLogs:N}),W==="org"?e.jsx("div",{className:"agents-org-full-view",children:e.jsx("div",{className:"agents-view-content agents-view-content--org-full",children:L?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:Ue,"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(Na,{inline:!0,showInlineBackButton:!1,agentId:L,projectId:d,onClose:Ue,addToast:l,onChildClick:Qt,initialTab:pe,initialRunId:C,preferActiveRun:se},L)})]}):la?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{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:[h?e.jsxs("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:[na(),aa()]}):e.jsxs("div",{className:"agent-org-chart-toolbar",children:[na(),e.jsx("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:aa()})]}),e.jsx("div",{ref:ve,className:"agent-org-chart-viewport","data-testid":"agent-org-chart-viewport",tabIndex:0,role:"region","aria-label":a("agents.orgChartCanvas","Org chart canvas"),onWheel:Va,onPointerDown:Ba,onPointerMove:Ua,onPointerUp:sa,onPointerCancel:sa,onKeyDown:Wa,"data-panning":Se?"true":"false",children:e.jsxs("div",{ref:Re,className:`agent-org-chart-canvas agent-org-chart-canvas--zoom-${Math.round((M.scale??1)*100)}`,"data-panning":Se?"true":"false",style:{transform:`translate(${M.x}px, ${M.y}px) scale(${M.scale})`},children:[e.jsx("div",{className:`agent-org-chart${xt==="vertical"?" agent-org-chart--vertical":""}`,"data-testid":"agent-org-chart","data-layout-mode":xt,children:K?e.jsxs("div",{className:"agent-org-chart__loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingOrgChart","Loading org chart...")})]}):Be.length===0?e.jsx(_t,{onCtaClick:it}):(j.current=[],Be.map(t=>e.jsx(Pa,{node:t,onSelect:za,getHealthStatus:wt,selectedAgentId:ae,registerNodeElement:Oa,linksRef:j},t.agent.id)))}),e.jsx(cn,{links:j.current,nodeElements:o.current,canvasRef:Re,viewportRef:ve,layoutMode:xt,transform:M})]})})]})})}):e.jsxs("div",{className:"agents-split-layout",style:h?void 0:{gridTemplateColumns:`${b}px var(--space-sm) minmax(0, 1fr)`},children:[e.jsx("div",{className:`agents-split-sidebar${re?" agents-split-sidebar--hidden-mobile":""}`,children:e.jsx("div",{className:"agents-view-content",children:la?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):W==="board"?e.jsx("div",{className:"agent-board",children:nt.length===0?e.jsx(_t,{onCtaClick:it}):nt.map(t=>{const i=wt(t),u=Bt(t,i,a),m=Ot(t.state),k=Vt("agent-board-card",t.state);return e.jsxs("div",{className:`agent-board-card ${k}${L===t.id?" agent-card--selected":""}`,children:[e.jsxs("div",{className:"agent-board-clickable",onClick:()=>ge(t.id),role:"button",tabIndex:0,onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.key===" "&&T.preventDefault(),ge(t.id))},children:[e.jsxs("div",{className:"agent-board-header",children:[e.jsx("span",{className:"agent-board-icon",children:e.jsx(Nt,{agent:t,size:20})}),e.jsx("span",{className:"agent-board-badge badge text-secondary",children:ea(t.role)}),e.jsx("span",{className:`agent-board-badge badge ${m}`,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}),e.jsxs("div",{className:"agent-board-health",style:{color:i.color},title:u.title,children:[i.icon,u.label?` ${u.label}`:""]})]}),(t.state==="idle"||t.state==="paused"||t.state==="error")&&e.jsx("div",{className:"agent-board-actions",children:e.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>void qt(t.id,t.name),title:a("agents.delete","Delete"),children:e.jsx(ga,{size:14})})})]},t.id)})}):e.jsx("div",{className:"agent-list",children:nt.length===0?e.jsx(_t,{onCtaClick:it}):nt.map(t=>{const i=wt(t),u=Bt(t,i,a),m=Ot(t.state),k=Vt("agent-card",t.state),T=It(t.runtimeConfig?.heartbeatIntervalMs),Z=Ss(T),G=gt===t.id,le=on(t);return e.jsxs("div",{className:`agent-card agent-card--clickable ${k}${L===t.id?" agent-card--selected":""}`,onClick:x=>{const B=x.target;if(B===x.currentTarget){ge(t.id);return}const z=B.closest('button, select, input, [role="button"]');z&&z!==x.currentTarget||ge(t.id)},role:"button",tabIndex:0,onKeyDown:x=>{x.target===x.currentTarget&&(x.key==="Enter"||x.key===" ")&&(x.key===" "&&x.preventDefault(),ge(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:[ut===t.id?e.jsx("select",{ref:st,className:"select agent-role-select",value:t.role,onChange:x=>void Ma(t.id,x.target.value),onKeyDown:x=>La(x,t.id),onBlur:()=>Ne(null),autoFocus:!0,children:r.map(x=>e.jsxs("option",{value:x.value,children:[x.icon," ",x.label]},x.value))}):e.jsx("span",{className:"agent-icon agent-icon--clickable",onClick:x=>{x.stopPropagation(),Ne(t.id)},title:a("agents.clickToChangeRole","Click to change role"),role:"button",tabIndex:0,onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.stopPropagation(),Ne(t.id))},children:e.jsx(Nt,{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(wa,{size:20,className:"agent-card-chevron"})]}),e.jsxs("div",{className:"agent-badges",children:[e.jsx("span",{className:`badge ${m}`,children:t.state}),e.jsxs("span",{className:"badge",style:{color:i.color},title:u.title,children:[i.icon,u.label?` ${u.label}`:""]}),e.jsx("span",{className:"badge text-secondary",children:ea(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 x=Ga(t);if(x.length===0)return null;const B=x.slice(0,2),z=x.length-2;return e.jsxs(e.Fragment,{children:[B.map(He=>e.jsx("span",{className:"badge badge-skill",title:He,children:zs(He)},He)),z>0&&e.jsxs("span",{className:"badge badge-skill",children:["+",z]})]})})()]})]}),e.jsxs("div",{className:"agent-card-body",children:[e.jsxs("div",{className:"agent-model-runtime",children:[e.jsxs("span",{className:"text-secondary",children:[le.isRuntime?a("agents.runtime","Runtime"):a("agents.model","Model"),":"]}),e.jsx("span",{className:"badge agent-model-runtime__value",title:le.label??a("agents.auto","Auto"),children:le.label??a("agents.auto","Auto")})]}),t.state==="error"&&t.lastError?e.jsx(As,{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(Ca,{taskId:t.taskId,taskColumn:t.taskColumn})})]}),e.jsxs("div",{className:"agent-heartbeat-control",children:[e.jsx("span",{className:"text-secondary",children:a("agents.heartbeat","Heartbeat:")}),c===t.id?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"input agent-heartbeat-custom-input",value:ye[t.id]??"",onChange:x=>De(B=>({...B,[t.id]:x.target.value})),onKeyDown:x=>{x.key==="Enter"?Jt(t):x.key==="Escape"&&(f(null),De(B=>{const z={...B};return delete z[t.id],z}))},disabled:G,"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 Jt(t),disabled:G,title:a("agents.saveCustomInterval","Save custom interval"),children:a("agents.save","Save")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>{f(null),De(x=>{const B={...x};return delete B[t.id],B})},disabled:G,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:T,onChange:x=>{const B=x.target.value;B==="__custom__"?Fa(t):Ia(t,Number(B))},disabled:G,"aria-label":a("agents.setHeartbeatAria","Set heartbeat interval for {{name}}",{name:t.name}),children:[Z.map(x=>e.jsx("option",{value:x.value,children:x.label},x.value)),Rs.some(x=>x.value===T)&&e.jsx("option",{value:"__custom__",children:a("agents.customHeartbeatOption","Custom...")})]})}),G&&e.jsx("span",{className:"agent-heartbeat-saving text-secondary",children:a("agents.saving","Saving…")}),t.lastHeartbeatAt&&(()=>{const x=new Date(t.lastHeartbeatAt),B=new Date(x.getTime()+T),z=t.state==="active"||t.state==="running";return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"agent-heartbeat-last text-secondary",title:x.toLocaleString(),children:a("agents.lastHeartbeatAt","Last: {{time}}",{time:x.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})}),z&&e.jsx("span",{className:"agent-heartbeat-next text-secondary",title:B.toLocaleString(),children:a("agents.nextHeartbeatAt","Next: {{time}}",{time:B.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 lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.activate","Activate"),children:[e.jsx(bt,{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 $a(t.id,t.name),disabled:Ve.has(t.id),title:a("agents.runNow","Run Now"),"aria-label":a("agents.runNowAria","Run now for {{name}}",{name:t.name}),children:[e.jsx(at,{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 lt(t.id,"paused"),disabled:Ve.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Tt,{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 lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.resume","Resume"),children:[e.jsx(bt,{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:()=>ge(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(at,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.running","Running")})]}),e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"paused"),disabled:Ve.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Tt,{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 lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.retry","Retry"),children:[e.jsx(bt,{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:()=>ge(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(Ts,{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 qt(t.id,t.name),title:a("agents.delete","Delete"),children:[e.jsx(ga,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.delete","Delete")})]})]})]})]},t.id)})})})}),!h&&e.jsx("div",{className:"agents-split-resize-handle","data-testid":"agents-sidebar-resize-handle",role:"separator","aria-orientation":"vertical","aria-valuemin":Aa,"aria-valuemax":Ra,"aria-valuenow":b,"aria-label":a("agents.resizeSidebar","Resize agents sidebar"),tabIndex:0,onPointerDown:Ze,onKeyDown:yt}),e.jsx("div",{className:`agents-split-detail${h&&!L?" agents-split-detail--hidden-mobile":""}`,children:L?e.jsx(s.Suspense,{fallback:null,children:e.jsx(Na,{inline:!0,showInlineBackButton:h,agentId:L,projectId:d,onClose:Ue,addToast:l,onChildClick:Qt,initialTab:pe,initialRunId:C,preferActiveRun:se,onMutationSuccess:Da},L)}):e.jsxs("div",{className:"agents-detail-empty-state",children:[e.jsx(zt,{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{Nn as AgentsView};