@runfusion/fusion 0.43.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/bin.js +8264 -1823
  2. package/dist/client/.vite/manifest.json +277 -266
  3. package/dist/client/assets/AgentDetailView-CanIeYHg.css +1 -0
  4. package/dist/client/assets/{AgentDetailView-FUKwQxBP.js → AgentDetailView-DxV8pFHX.js} +3 -3
  5. package/dist/client/assets/{AgentPermissionPolicyEditor-DMDUhF1n.js → AgentPermissionPolicyEditor--YS4iMUY.js} +2 -2
  6. package/dist/client/assets/AgentsView-BVILQjdS.css +1 -0
  7. package/dist/client/assets/{AgentsView-BrQLd-yI.js → AgentsView-CTzbcvhK.js} +3 -3
  8. package/dist/client/assets/ChatView-COygcnyk.js +6 -0
  9. package/dist/client/assets/CommandCenter-CTaopaC0.css +1 -0
  10. package/dist/client/assets/CommandCenter-DoKX2HWm.js +56 -0
  11. package/dist/client/assets/DevServerView-Cyevyvqx.js +1 -0
  12. package/dist/client/assets/{DirectoryPicker-DTKtd8L2.css → DirectoryPicker-0rspvcMz.css} +1 -1
  13. package/dist/client/assets/{DirectoryPicker-BFot4CVM.js → DirectoryPicker-DBdyXEhR.js} +1 -1
  14. package/dist/client/assets/DocumentsView-BzSMyrns.js +1 -0
  15. package/dist/client/assets/{EvalsView-DAXqDqn2.js → EvalsView-ikz00o9g.js} +1 -1
  16. package/dist/client/assets/ExperimentalAgentOnboardingModal-CZ_jbgep.css +1 -0
  17. package/dist/client/assets/{ExperimentalAgentOnboardingModal-B4aZ1y0n.js → ExperimentalAgentOnboardingModal-D-rzCCET.js} +10 -10
  18. package/dist/client/assets/GoalsView-Bfu1Oy2-.js +2 -0
  19. package/dist/client/assets/GoalsView-rg9VSIza.css +1 -0
  20. package/dist/client/assets/{InsightsView-D5fzFy-F.js → InsightsView-Cgmf5nES.js} +1 -1
  21. package/dist/client/assets/InsightsView-LMv1M1dU.css +1 -0
  22. package/dist/client/assets/MemoryView-DkEuDKQs.js +2 -0
  23. package/dist/client/assets/{NodesView-BA3pKMZu.js → NodesView-B_KYfS4o.js} +3 -3
  24. package/dist/client/assets/{PiExtensionsManager-C4I11iKm.js → PiExtensionsManager-Dz69kkKs.js} +2 -2
  25. package/dist/client/assets/PluginManager-DSiHizRD.css +1 -0
  26. package/dist/client/assets/{PluginManager-BzTzTMXZ.js → PluginManager-LHCVcduP.js} +1 -1
  27. package/dist/client/assets/PullRequestView-3AdbS2a1.css +1 -0
  28. package/dist/client/assets/{PullRequestView-11xJ565q.js → PullRequestView-DBJutLLl.js} +2 -2
  29. package/dist/client/assets/{ResearchView-BHiXfjzE.js → ResearchView-gpn1XcVy.js} +1 -1
  30. package/dist/client/assets/{SecretsView-CC5OYoCn.js → SecretsView-B7YqIowt.js} +1 -1
  31. package/dist/client/assets/SecretsView-Djo1rahi.css +1 -0
  32. package/dist/client/assets/SessionTerminal-9l4bdKcn.js +2 -0
  33. package/dist/client/assets/SessionTerminal-BNgtmXb3.css +1 -0
  34. package/dist/client/assets/SettingsModal-BGEK9_9A.js +31 -0
  35. package/dist/client/assets/{SettingsModal-DpAxDq6M.css → SettingsModal-CKv0TJfM.css} +1 -1
  36. package/dist/client/assets/SettingsModal-CXogw-Er.css +1 -0
  37. package/dist/client/assets/{SettingsModal-BKEbtdqR.js → SettingsModal-DIIoHGUH.js} +1 -1
  38. package/dist/client/assets/{SetupWizardModal-CBfItlP6.js → SetupWizardModal-BcVeMxeX.js} +1 -1
  39. package/dist/client/assets/{SkillsView-DbcW87-E.js → SkillsView-BxSJ4PHL.js} +1 -1
  40. package/dist/client/assets/{StashRecoveryView-CH9RPtzX.js → StashRecoveryView-BhFQ2FsP.js} +1 -1
  41. package/dist/client/assets/{TodoView-ToviJ0SV.js → TodoView-BZpewjy0.js} +2 -2
  42. package/dist/client/assets/WorkflowNodeEditor-Yn1FRF2v.css +1 -0
  43. package/dist/client/assets/WorkflowNodeEditor-tWsgCdVt.js +8 -0
  44. package/dist/client/assets/{addon-fit-B4jkcKk4.js → addon-fit-SnYDEvGm.js} +1 -1
  45. package/dist/client/assets/{addon-unicode11-Cdne2Sj4.js → addon-unicode11-s5GoZCpi.js} +1 -1
  46. package/dist/client/assets/{addon-web-links-CRNLzj7m.js → addon-web-links-jjt2f_oV.js} +1 -1
  47. package/dist/client/assets/{addon-webgl-CeCSULF1.js → addon-webgl-Icn-RnEx.js} +1 -1
  48. package/dist/client/assets/{app-sEkTyT-w.js → app-BmGA0Hiz.js} +3 -3
  49. package/dist/client/assets/{app-BffGU_HQ.js → app-CEVYlVuJ.js} +3 -3
  50. package/dist/client/assets/{app-C8AHhs5N.js → app-CbBFax2C.js} +3 -3
  51. package/dist/client/assets/{app-B2ZxMfJT.js → app-DORKrGAz.js} +3 -3
  52. package/dist/client/assets/{app-Ri9Te2Dv.js → app-DQibuQ9z.js} +3 -3
  53. package/dist/client/assets/app-k76GrQP0.js +13 -0
  54. package/dist/client/assets/{createLucideIcon-BYvOGRiO.js → createLucideIcon-DmVITl5d.js} +1 -1
  55. package/dist/client/assets/{dashboard-view-C3SsjXo1.js → dashboard-view-B4LXCv5H.js} +4 -4
  56. package/dist/client/assets/{dashboard-view-DlKsVySD.js → dashboard-view-BFoyhTYF.js} +1 -1
  57. package/dist/client/assets/{dashboard-view-DtgLZ_LM.js → dashboard-view-Cxzm_eqc.js} +1 -1
  58. package/dist/client/assets/dashboard-view-_8yfNwju.css +1 -0
  59. package/dist/client/assets/{folder-open-BlPyIWyf.js → folder-open-33WGVnbp.js} +1 -1
  60. package/dist/client/assets/index-Bglw05rM.js +791 -0
  61. package/dist/client/assets/index-FYgnflWD.css +1 -0
  62. package/dist/client/assets/shield-alert-CqeGWBUK.js +6 -0
  63. package/dist/client/assets/{upload-B-qmm1NH.js → upload-C11J2diI.js} +1 -1
  64. package/dist/client/assets/{users-D6C5TXf2.js → users-a-ELbyyZ.js} +1 -1
  65. package/dist/client/assets/{vendor-i18n-CV0mwX_-.js → vendor-i18n-DYlSUfot.js} +1 -1
  66. package/dist/client/assets/vendor-react-BTgM5bbZ.js +49 -0
  67. package/dist/client/assets/{vendor-reactflow-CRZcPCXF.js → vendor-reactflow-ZasuEfF9.js} +3 -3
  68. package/dist/client/assets/{vendor-xterm-tcedd2Jt.js → vendor-xterm-ea7-K05z.js} +1 -1
  69. package/dist/client/assets/{x-CqNX_9E2.js → x-PItWc-wQ.js} +1 -1
  70. package/dist/client/assets/{zoom-out-CSTHbJgD.js → zoom-out-CzlHv0Kj.js} +1 -1
  71. package/dist/client/icons/icon-192.png +0 -0
  72. package/dist/client/icons/icon-512.png +0 -0
  73. package/dist/client/index.html +6 -6
  74. package/dist/client/sw.js +1 -1
  75. package/dist/client/theme-data.css +288 -285
  76. package/dist/client/version.json +1 -1
  77. package/dist/droid-cli/package.json +1 -1
  78. package/dist/droid-cli/src/__tests__/execsync-guard.test.ts +17 -0
  79. package/dist/droid-cli/src/__tests__/process-manager.test.ts +1 -45
  80. package/dist/extension.js +4946 -820
  81. package/dist/pi-claude-cli/index.ts +47 -8
  82. package/dist/pi-claude-cli/package.json +4 -1
  83. package/dist/pi-claude-cli/src/__tests__/acp-dispatch.test.ts +80 -0
  84. package/dist/pi-claude-cli/src/__tests__/acp-driver.test.ts +423 -0
  85. package/dist/pi-claude-cli/src/__tests__/execsync-guard.test.ts +14 -0
  86. package/dist/pi-claude-cli/src/__tests__/process-manager.test.ts +1 -45
  87. package/dist/pi-claude-cli/src/__tests__/provider.test.ts +0 -1
  88. package/dist/pi-claude-cli/src/acp-driver.ts +585 -0
  89. package/dist/pi-claude-cli/src/event-bridge.ts +7 -0
  90. package/dist/pi-claude-cli/src/mcp-config.ts +29 -0
  91. package/dist/pi-claude-cli/src/process-manager.ts +6 -38
  92. package/dist/plugin-sdk/index.d.ts +5181 -5144
  93. package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +263 -19
  94. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  95. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
  96. package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +37 -7
  97. package/dist/plugins/fusion-plugin-compound-engineering/manifest.json +4 -4
  98. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  99. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  100. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  101. package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +1 -1
  102. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  103. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  104. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  105. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  106. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  107. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  108. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  109. package/dist/plugins/fusion-plugin-whatsapp-chat/src/__tests__/index.test.ts +5 -1
  110. package/package.json +1 -1
  111. package/skill/fusion/references/engine-tools.md +6 -4
  112. package/dist/client/assets/AgentDetailView-DiWELtb1.css +0 -1
  113. package/dist/client/assets/AgentsView-DfznJDek.css +0 -1
  114. package/dist/client/assets/ChatView-Wz_0goif.js +0 -6
  115. package/dist/client/assets/DevServerView-DRqQpHsc.js +0 -1
  116. package/dist/client/assets/DocumentsView-hamhUcvL.js +0 -1
  117. package/dist/client/assets/ExperimentalAgentOnboardingModal-BNpveCEk.css +0 -1
  118. package/dist/client/assets/GoalsView-2QOp9DA0.js +0 -2
  119. package/dist/client/assets/GoalsView-DI66UsjT.css +0 -1
  120. package/dist/client/assets/InsightsView-C9-mqVvf.css +0 -1
  121. package/dist/client/assets/MemoryView-B082KoR-.js +0 -2
  122. package/dist/client/assets/PluginManager-UHVLvWWl.css +0 -1
  123. package/dist/client/assets/PullRequestView-WQIS0zUC.css +0 -1
  124. package/dist/client/assets/ReliabilityView-CpELpGqw.js +0 -1
  125. package/dist/client/assets/ReliabilityView-eoKBhBc4.css +0 -1
  126. package/dist/client/assets/SecretsView-D5bHZ-wM.css +0 -1
  127. package/dist/client/assets/SessionTerminal-BiigPP2l.css +0 -1
  128. package/dist/client/assets/SessionTerminal-G70Jwkzs.js +0 -2
  129. package/dist/client/assets/SettingsModal-C0M1CqOu.js +0 -31
  130. package/dist/client/assets/SettingsModal-nF_GaeeK.css +0 -1
  131. package/dist/client/assets/WorkflowNodeEditor-BTu0D9c5.js +0 -8
  132. package/dist/client/assets/WorkflowNodeEditor-BokhW3de.css +0 -1
  133. package/dist/client/assets/app-CUu1sm3x.js +0 -13
  134. package/dist/client/assets/dashboard-view-Du53JbmQ.css +0 -1
  135. package/dist/client/assets/index-DqhCiU35.css +0 -1
  136. package/dist/client/assets/index-bZCpHtGq.js +0 -793
  137. package/dist/client/assets/vendor-react-D37HfzIf.js +0 -49
@@ -1,6 +1,6 @@
1
- import{c as k,dU as _,eu as b,ev as j}from"./index-bZCpHtGq.js";import{j as t}from"./vendor-react-D37HfzIf.js";import{u as I}from"./vendor-i18n-CV0mwX_-.js";/**
1
+ import{c as k,e8 as _,eK as b,eL as j}from"./index-Bglw05rM.js";import{j as t}from"./vendor-react-BTgM5bbZ.js";import{u as I}from"./vendor-i18n-DYlSUfot.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 E=[["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"}]],C=k("book-open",E),A=["allow","require-approval","block"];function N(e){return{git_write:{label:e("agentPolicy.category.gitWrite.label","Git writes"),description:e("agentPolicy.category.gitWrite.description","Commits, branch updates, and merge-affecting git changes.")},file_write_delete:{label:e("agentPolicy.category.fileWriteDelete.label","File writes/deletes"),description:e("agentPolicy.category.fileWriteDelete.description","Create, edit, or remove files in the workspace.")},command_execution:{label:e("agentPolicy.category.commandExecution.label","Command execution"),description:e("agentPolicy.category.commandExecution.description","Runs shell commands and scripts.")},network_api:{label:e("agentPolicy.category.networkApi.label","Network/API"),description:e("agentPolicy.category.networkApi.description","Outbound network or API access.")},task_agent_mutation:{label:e("agentPolicy.category.taskAgentMutation.label","Task/agent mutation"),description:e("agentPolicy.category.taskAgentMutation.description","Task state changes, delegation, or agent lifecycle actions.")}}}function y(e,a){if(a==="require-approval")return e("agentPolicy.requireApproval","Require approval");if(a==="allow")return e("agentPolicy.allow","Allow");if(a==="block")return e("agentPolicy.block","Block");const l=a;return l.charAt(0).toUpperCase()+l.slice(1)}function R(){return{git_write:"allow",file_write_delete:"allow",command_execution:"allow",network_api:"allow",task_agent_mutation:"allow"}}const d={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 T(e){return d[e]}function g(e,a){return _.every(l=>e[l]===a[l])}function O(e){return g(e,d.unrestricted)?"unrestricted":g(e,d["approval-required"])?"approval-required":g(e,d["locked-down"])?"locked-down":"custom"}function M({value:e,projectDefault:a,mode:l,onChange:c,disabled:m=!1}){const{t:i}=I("app"),w=N(i),x=e?O(e.rules):"unrestricted",P=l==="agent-override"&&!e?"inherit":e?.presetId==="custom"?x:e?.presetId??"unrestricted",u=e?.rules??R(),v=r=>{if(l==="agent-override"&&r==="inherit"){c(void 0);return}if(r==="custom"){c({presetId:"custom",rules:{...u}});return}c({presetId:r,rules:T(r)})},f=(r,n)=>{if(l==="agent-override"&&n==="inherit"){if(!e)return;const s={...e.rules};s[r]=a?.[r]??"allow",c({presetId:"custom",rules:s});return}const p={...u,[r]:n};c({presetId:"custom",rules:p})};return t.jsxs("div",{className:"agent-policy-editor card",children:[t.jsxs("div",{className:"form-group",children:[t.jsx("label",{htmlFor:"agent-policy-preset",children:i("agentPolicy.preset","Preset")}),t.jsxs("select",{id:"agent-policy-preset",className:"select",value:P,onChange:r=>v(r.target.value),disabled:m,children:[l==="agent-override"?t.jsx("option",{value:"inherit",children:i("agentPolicy.inheritDefault","Inherit project default")}):null,t.jsx("option",{value:"unrestricted",children:i("agentPolicy.unrestricted","Unrestricted")}),t.jsx("option",{value:"approval-required",children:i("agentPolicy.approvalRequired","Approval Required")}),t.jsx("option",{value:"locked-down",children:i("agentPolicy.lockedDown","Locked Down")}),t.jsx("option",{value:"custom",children:i("agentPolicy.custom","Custom")})]})]}),t.jsx("div",{className:"agent-policy-table",role:"table","aria-label":i("agentPolicy.ariaLabel","Permission policy categories"),children:_.map(r=>{const n=w[r]??{label:r,description:""},p=a?.[r]??"allow",s=u[r]??"allow",h=l==="agent-override"&&!e?"inherit":s;return t.jsxs("div",{className:"agent-policy-row",role:"row","data-category":r,children:[t.jsxs("div",{className:"agent-policy-cell",children:[t.jsx("strong",{children:n.label}),t.jsx("div",{className:"agent-policy-description",children:n.description}),t.jsx("ul",{className:"agent-policy-examples","aria-label":i("agentPolicy.categoryExamples","{{label}} examples",{label:n.label}),children:(b[r]??[]).map(o=>t.jsx("li",{children:t.jsx("code",{children:o})},`${r}-${o}`))})]}),t.jsxs("div",{className:"agent-policy-cell",children:[t.jsxs("select",{className:"select",value:h,onChange:o=>f(r,o.target.value),disabled:m,children:[l==="agent-override"?t.jsx("option",{value:"inherit",children:i("agentPolicy.inherit","Inherit")}):null,A.map(o=>t.jsx("option",{value:o,children:y(i,o)},o))]}),l==="agent-override"&&h==="inherit"?t.jsxs("div",{className:"agent-policy-inherit-note",children:[i("agentPolicy.fromProjectDefault","from project default"),": ",y(i,p)]}):null]})]},r)})}),t.jsxs("details",{className:"agent-policy-exempt",open:!1,children:[t.jsx("summary",{children:i("agentPolicy.exemptTools","Tools exempt from approval policy")}),t.jsx("p",{children:i("agentPolicy.exemptToolsDescription","These coordination tools bypass approval policy so heartbeats and inter-agent messaging cannot deadlock. They are not user-configurable.")}),t.jsx("ul",{className:"agent-policy-exempt-list",children:j.map(r=>t.jsx("li",{children:t.jsx("code",{children:r})},r))})]})]})}export{M as A,C as B};
6
+ */const E=[["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"}]],C=k("book-open",E),A=["allow","require-approval","block"];function N(e){return{git_write:{label:e("agentPolicy.category.gitWrite.label","Git writes"),description:e("agentPolicy.category.gitWrite.description","Commits, branch updates, and merge-affecting git changes.")},file_write_delete:{label:e("agentPolicy.category.fileWriteDelete.label","File writes/deletes"),description:e("agentPolicy.category.fileWriteDelete.description","Create, edit, or remove files in the workspace.")},command_execution:{label:e("agentPolicy.category.commandExecution.label","Command execution"),description:e("agentPolicy.category.commandExecution.description","Runs shell commands and scripts.")},network_api:{label:e("agentPolicy.category.networkApi.label","Network/API"),description:e("agentPolicy.category.networkApi.description","Outbound network or API access.")},task_agent_mutation:{label:e("agentPolicy.category.taskAgentMutation.label","Task/agent mutation"),description:e("agentPolicy.category.taskAgentMutation.description","Task state changes, delegation, or agent lifecycle actions.")}}}function y(e,a){if(a==="require-approval")return e("agentPolicy.requireApproval","Require approval");if(a==="allow")return e("agentPolicy.allow","Allow");if(a==="block")return e("agentPolicy.block","Block");const l=a;return l.charAt(0).toUpperCase()+l.slice(1)}function R(){return{git_write:"allow",file_write_delete:"allow",command_execution:"allow",network_api:"allow",task_agent_mutation:"allow"}}const d={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 T(e){return d[e]}function g(e,a){return _.every(l=>e[l]===a[l])}function O(e){return g(e,d.unrestricted)?"unrestricted":g(e,d["approval-required"])?"approval-required":g(e,d["locked-down"])?"locked-down":"custom"}function M({value:e,projectDefault:a,mode:l,onChange:c,disabled:m=!1}){const{t:i}=I("app"),w=N(i),x=e?O(e.rules):"unrestricted",P=l==="agent-override"&&!e?"inherit":e?.presetId==="custom"?x:e?.presetId??"unrestricted",p=e?.rules??R(),f=r=>{if(l==="agent-override"&&r==="inherit"){c(void 0);return}if(r==="custom"){c({presetId:"custom",rules:{...p}});return}c({presetId:r,rules:T(r)})},v=(r,n)=>{if(l==="agent-override"&&n==="inherit"){if(!e)return;const s={...e.rules};s[r]=a?.[r]??"allow",c({presetId:"custom",rules:s});return}const u={...p,[r]:n};c({presetId:"custom",rules:u})};return t.jsxs("div",{className:"agent-policy-editor card",children:[t.jsxs("div",{className:"form-group",children:[t.jsx("label",{htmlFor:"agent-policy-preset",children:i("agentPolicy.preset","Preset")}),t.jsxs("select",{id:"agent-policy-preset",className:"select",value:P,onChange:r=>f(r.target.value),disabled:m,children:[l==="agent-override"?t.jsx("option",{value:"inherit",children:i("agentPolicy.inheritDefault","Inherit project default")}):null,t.jsx("option",{value:"unrestricted",children:i("agentPolicy.unrestricted","Unrestricted")}),t.jsx("option",{value:"approval-required",children:i("agentPolicy.approvalRequired","Approval Required")}),t.jsx("option",{value:"locked-down",children:i("agentPolicy.lockedDown","Locked Down")}),t.jsx("option",{value:"custom",children:i("agentPolicy.custom","Custom")})]})]}),t.jsx("div",{className:"agent-policy-table",role:"table","aria-label":i("agentPolicy.ariaLabel","Permission policy categories"),children:_.map(r=>{const n=w[r]??{label:r,description:""},u=a?.[r]??"allow",s=p[r]??"allow",h=l==="agent-override"&&!e?"inherit":s;return t.jsxs("div",{className:"agent-policy-row",role:"row","data-category":r,children:[t.jsxs("div",{className:"agent-policy-cell",children:[t.jsx("strong",{children:n.label}),t.jsx("div",{className:"agent-policy-description",children:n.description}),t.jsx("ul",{className:"agent-policy-examples","aria-label":i("agentPolicy.categoryExamples","{{label}} examples",{label:n.label}),children:(b[r]??[]).map(o=>t.jsx("li",{children:t.jsx("code",{children:o})},`${r}-${o}`))})]}),t.jsxs("div",{className:"agent-policy-cell",children:[t.jsxs("select",{className:"select",value:h,onChange:o=>v(r,o.target.value),disabled:m,children:[l==="agent-override"?t.jsx("option",{value:"inherit",children:i("agentPolicy.inherit","Inherit")}):null,A.map(o=>t.jsx("option",{value:o,children:y(i,o)},o))]}),l==="agent-override"&&h==="inherit"?t.jsxs("div",{className:"agent-policy-inherit-note",children:[i("agentPolicy.fromProjectDefault","from project default"),": ",y(i,u)]}):null]})]},r)})}),t.jsxs("details",{className:"agent-policy-exempt",open:!1,children:[t.jsx("summary",{children:i("agentPolicy.exemptTools","Tools exempt from approval policy")}),t.jsx("p",{children:i("agentPolicy.exemptToolsDescription","These coordination tools bypass approval policy so heartbeats and inter-agent messaging cannot deadlock. They are not user-configurable.")}),t.jsx("ul",{className:"agent-policy-exempt-list",children:j.map(r=>t.jsx("li",{children:t.jsx("code",{children:r})},r))})]})]})}export{M as A,C as B};
@@ -0,0 +1 @@
1
+ .agent-token-stats-panel{margin-bottom:var(--space-lg);padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);box-shadow:var(--shadow-sm)}.agent-token-stats-panel__header{margin-bottom:var(--space-md)}.agent-token-stats-panel__title{margin:0;font-size:calc(var(--space-md) + var(--space-xs));font-weight:600;color:var(--text)}.agent-token-stats-panel__totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(calc(var(--space-2xl) * 4),1fr));gap:var(--space-sm);margin-bottom:var(--space-md)}.agent-token-stats-panel__total-card{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.agent-token-stats-panel__total-label{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs));text-transform:uppercase;letter-spacing:calc(var(--space-xs) / 8)}.agent-token-stats-panel__total-value{color:var(--text);font-size:calc(var(--space-lg) + var(--space-xs));line-height:1.2;font-family:var(--font-mono);font-weight:700}.agent-token-stats-panel__table-wrapper{overflow-x:auto}.agent-token-stats-panel__table{width:100%;border-collapse:collapse}.agent-token-stats-panel__table th,.agent-token-stats-panel__table td{padding:var(--space-sm);border-bottom:1px solid var(--border);color:var(--text);text-align:right;font-size:calc(var(--space-sm) + var(--space-xs))}.agent-token-stats-panel__table thead th{text-transform:uppercase;letter-spacing:calc(var(--space-xs) / 8);color:var(--text-muted);font-weight:600}.agent-token-stats-panel__table th:first-child,.agent-token-stats-panel__table td:first-child{text-align:left}.agent-token-stats-panel__agent-cell{display:flex;flex-direction:column;gap:calc(var(--space-xs) * .5)}.agent-token-stats-panel__agent-name{color:var(--text)}.agent-token-stats-panel__agent-id{color:var(--text-muted);font-family:var(--font-mono);font-size:calc(var(--space-sm) + var(--space-xs) * .75);text-transform:none;letter-spacing:normal}.agent-token-stats-panel__total-cell{font-family:var(--font-mono);font-weight:700}.agent-token-stats-panel__empty{padding:var(--space-md);border:1px dashed var(--border);border-radius:var(--radius-sm);color:var(--text-muted);background:color-mix(in srgb,var(--surface) 85%,transparent);font-size:calc(var(--space-sm) + var(--space-xs))}@media(max-width:768px){.agent-token-stats-panel{padding:var(--space-sm)}.agent-token-stats-panel__totals{grid-template-columns:1fr}.agent-token-stats-panel__table th,.agent-token-stats-panel__table td{padding:var(--space-xs) var(--space-sm)}}.active-agents-panel{margin-top:var(--space-xl);margin-bottom:var(--space-lg)}.active-agents-panel-header{display:flex;align-items:center;gap:var(--space-sm);font-size:13px;font-weight:600;color:var(--text-muted);margin-bottom:var(--space-md)}.active-agents-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-md)}.live-agent-card{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:background .15s,border-color .15s}.live-agent-card:hover{background:var(--surface-hover);border-color:color-mix(in srgb,var(--border) 65%,var(--text) 35%)}.live-agent-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.live-agent-card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.live-agent-card-name{display:flex;align-items:center;gap:var(--space-sm);font-weight:600;font-size:13px}.live-agent-task{font-family:var(--font-mono)}.live-agent-card-transcript{font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--text-muted);max-height:120px;overflow-y:auto}.live-agent-card-empty{display:flex;flex-direction:column;gap:var(--space-xs)}.live-agent-card-status{font-style:normal;font-weight:500;color:var(--text);opacity:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-agent-card-status-sub{font-style:italic;opacity:.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-agent-card-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-agent-card-footer{display:flex;align-items:center;justify-content:space-between;font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);padding-top:var(--space-sm);border-top:1px solid var(--border)}.live-agent-streaming-dot{color:var(--color-success);animation:pulse 1.5s infinite}.live-agent-card-footer-actions{display:flex;align-items:center;gap:var(--space-sm)}.live-agent-card-footer-meta{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;min-width:0}.live-agent-card-next-heartbeat{color:var(--text-muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-agent-card-logs-btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);font-size:11px;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.live-agent-card-logs-btn:hover{background:var(--surface-hover);color:var(--text);border-color:color-mix(in srgb,var(--border) 65%,var(--text) 35%)}@media(max-width:768px){.active-agents-grid{grid-template-columns:1fr}.live-agent-card{min-width:0;overflow:hidden}}.agents-overview-bar{border-bottom:1px solid var(--border);background:var(--surface);padding:var(--space-md) var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.agents-overview-bar__toggle{width:100%;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);color:var(--text);padding:var(--space-sm) var(--space-md);display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.agents-overview-bar__toggle:hover{background:var(--card-hover)}.agents-overview-bar__toggle:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.agents-overview-bar__title-wrap{display:inline-flex;align-items:center;gap:var(--space-xs)}.agents-overview-bar__title{font-weight:600}.agents-overview-bar__meta{font-size:calc(var(--space-sm) + var(--space-xs))}.agents-overview-bar__content{display:flex;flex-direction:column;gap:var(--space-md)}.agents-overview-bar__metrics{margin-bottom:0}.agents-overview-bar__active-panel{margin-top:0;margin-bottom:0}@media(max-width:768px){.agents-overview-bar{padding:var(--space-sm) var(--space-md)}.agents-overview-bar__toggle{min-height:calc(var(--space-2xl) + var(--space-sm))}}.agent-dialog-overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--bg) 60%,transparent);backdrop-filter:blur(var(--space-xs));display:flex;align-items:center;justify-content:center;z-index:100;padding:calc(var(--space-lg) + var(--space-xs))}.agent-dialog{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:calc(var(--space-xl) * 21 + var(--space-md));max-height:calc(100vh - (var(--space-xl) + var(--space-lg)));max-height:calc(100dvh - (var(--space-xl) + var(--space-lg)));display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg)}.agent-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg) calc(var(--space-lg) + var(--space-xs));border-bottom:1px solid var(--border)}.agent-dialog-header-title{font-weight:600;font-size:calc(var(--space-md) + var(--space-xs) * .75)}.agent-dialog-body{flex:1;overflow-y:auto;padding:calc(var(--space-lg) + var(--space-xs))}.agent-dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-sm);padding:var(--space-lg) calc(var(--space-lg) + var(--space-xs));border-top:1px solid var(--border)}.agent-dialog-steps{display:flex;gap:calc(var(--space-sm) - var(--space-xs) * .5);padding:var(--space-md) calc(var(--space-lg) + var(--space-xs));justify-content:center}.agent-dialog-step{width:calc(var(--space-2xl) + var(--space-sm));height:var(--space-xs);border-radius:calc(var(--space-xs) * .5);background:var(--border);transition:background var(--transition-fast)}.agent-dialog-step.active{background:var(--todo)}.agent-dialog-step.completed{background:var(--color-success)}.agent-dialog-field{margin-bottom:var(--space-lg)}.agent-dialog-field label{display:block;font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:500;margin-bottom:calc(var(--space-sm) - var(--space-xs) * .5)}.agent-dialog-field .input,.agent-dialog-field .select{width:100%;box-sizing:border-box}.agent-dialog-field--title .input{font-size:calc(var(--space-md) + var(--space-xs) * .25);line-height:var(--space-lg)}.agent-dialog-section{margin-bottom:var(--space-lg)}.agent-dialog-section-header{font-size:calc(var(--space-sm) + var(--space-xs));font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:var(--space-md);padding-bottom:var(--space-xs);border-bottom:1px solid var(--border)}.agent-dialog-step-zero-actions{display:flex;justify-content:flex-end;margin-bottom:var(--space-sm)}.agent-dialog-interview-btn{font-weight:600}.agent-dialog-interview-btn:disabled{opacity:.7;cursor:not-allowed}.agent-dialog-tabs{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-bottom:var(--space-lg)}.agent-dialog-tab{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);color:var(--text-muted);padding:var(--space-sm) var(--space-md);font-size:calc(var(--space-sm) + var(--space-xs));font-weight:600;cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}.agent-dialog-tab:hover{border-color:var(--todo);color:var(--text);background:var(--card-hover)}.agent-dialog-tab:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.agent-dialog-tab.active{border-color:var(--todo);color:var(--text);background:color-mix(in srgb,var(--todo) 12%,transparent)}.agent-dialog-tab-panel{display:flex;flex-direction:column;gap:var(--space-sm)}.agent-runtime-mode-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.agent-runtime-mode-option{position:relative;margin:0}.agent-runtime-mode-option input{position:absolute;opacity:0;pointer-events:none}.agent-runtime-mode-option span{display:flex;align-items:center;justify-content:center;min-height:calc(var(--space-xl) + var(--space-lg));border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs));font-weight:600;padding:var(--space-sm) var(--space-md);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}.agent-runtime-mode-option span:hover{border-color:var(--todo);color:var(--text);background:var(--card-hover)}.agent-runtime-mode-option input:focus-visible+span{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.agent-runtime-mode-option--active span{border-color:var(--todo);color:var(--text);background:color-mix(in srgb,var(--todo) 12%,transparent)}.agent-role-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--space-xl) * 3 + var(--space-sm)),1fr));gap:var(--space-sm)}.agent-role-option{display:flex;flex-direction:column;align-items:center;padding:var(--space-md) var(--space-sm);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast);font-family:var(--font-primary);color:var(--text)}.agent-role-option:hover{border-color:var(--text-muted);background:var(--card-hover)}.agent-role-option:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.agent-role-option.selected{border-color:var(--todo);background:color-mix(in srgb,var(--todo) 12%,transparent);box-shadow:var(--focus-ring)}.agent-role-option-icon{font-size:calc(var(--space-lg) + var(--space-xs));line-height:1}.agent-role-option-label{font-size:calc(var(--space-sm) + var(--space-xs));margin-top:var(--space-xs)}.agent-dialog-icon-prefix{margin-right:calc(var(--space-sm) - var(--space-xs) * .5)}.agent-dialog-ai-generate{margin-top:var(--space-sm);border-top:1px solid var(--border);padding-top:var(--space-md)}.btn--ai-generate{width:100%;display:flex;align-items:center;justify-content:center;gap:calc(var(--space-sm) - var(--space-xs) * .5);background:var(--cta-bg, var(--todo));color:var(--cta-text, var(--text));font-weight:600;border:1px solid transparent}.btn--ai-generate:hover{opacity:.9;filter:brightness(1.1)}.agent-dialog-ai-hint{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * .75);text-align:center;margin:calc(var(--space-sm) - var(--space-xs) * .5) 0 0}.agent-dialog-summary{display:flex;flex-direction:column;gap:var(--space-sm)}.agent-dialog-summary-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) 0;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.agent-dialog-summary-row:last-child{border-bottom:none}.agent-dialog-summary-row-label{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * .75)}.agent-dialog-summary-row-label--fixed{flex:0 0 calc(var(--space-xl) * 4 - var(--space-xs) * 1.5)}.agent-dialog-summary-row-value{font-weight:600}.agent-dialog-summary-row-value--body{font-weight:400}.agent-dialog-summary--spaced{margin-bottom:var(--space-md)}.agent-dialog-summary-row-value--muted{font-style:italic;color:var(--text-muted)}.agent-dialog-summary-row-value--capitalize{text-transform:capitalize}.agent-dialog-summary-row--editable{flex-direction:column;align-items:stretch;gap:var(--space-xs)}.agent-dialog-summary-row--editable .agent-dialog-summary-row-label{margin-bottom:0}.agent-dialog-summary-row--title .input{font-size:calc(var(--space-md) + var(--space-xs) * .25);line-height:var(--space-lg)}.agent-presets{margin-bottom:var(--space-lg)}.agent-presets-header{font-size:calc(var(--space-md) + var(--space-xs) * .5);font-weight:600;color:var(--text-muted);margin-bottom:var(--space-md);display:flex;align-items:center;gap:var(--space-sm)}.agent-presets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--space-xl) * 5 + var(--space-lg) + var(--space-xs)),1fr));gap:var(--space-sm);margin-bottom:var(--space-lg);max-height:calc(var(--space-xl) * 16 + var(--space-lg));overflow-y:auto}.agent-preset-card{display:flex;flex-direction:column;align-items:center;padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast);background:var(--bg-secondary);font-family:var(--font-primary);color:var(--text)}.agent-preset-card:hover{border-color:var(--todo);background:var(--bg-tertiary)}.agent-preset-card:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.agent-preset-card.selected{border-color:var(--todo);background:color-mix(in srgb,var(--todo) 12%,transparent)}.agent-preset-icon{font-size:var(--space-xl);margin-bottom:var(--space-xs)}.agent-preset-name{font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:500;text-align:center;margin-bottom:var(--space-xs)}.agent-preset-role{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);text-transform:capitalize}.agent-preset-description{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:calc(var(--space-xs) * .5)}.agent-dialog-header-sparkle{margin-right:var(--space-sm)}.agent-dialog-error-banner{color:var(--color-error);font-size:calc(var(--space-md) + var(--space-xs) * .25);padding:var(--space-sm) var(--space-md);background:color-mix(in srgb,var(--color-error) 10%,transparent);border-radius:var(--radius-md);margin-bottom:var(--space-md)}.agent-dialog-textarea{resize:vertical}.agent-dialog-hint{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);margin-top:var(--space-xs);display:flex;justify-content:space-between;gap:var(--space-sm)}.agent-dialog-loading-center{display:flex;flex-direction:column;align-items:center;padding:var(--space-2xl) var(--space-lg);gap:var(--space-md)}.agent-dialog-spinner{width:var(--space-2xl);height:var(--space-2xl);border:calc(var(--space-xs) * .75) solid var(--border);border-top-color:var(--todo);border-radius:50%}.agent-dialog-loading-text{color:var(--text-muted);font-size:calc(var(--space-md) + var(--space-xs) * .25);margin:0}.agent-dialog-expand-btn{background:none;border:none;color:var(--todo);cursor:pointer;font-size:calc(var(--space-sm) + var(--space-xs));margin-left:var(--space-sm);padding:0}.agent-dialog-expand-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong);border-radius:var(--radius-sm)}.agent-generation-prompt-box{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md);font-size:calc(var(--space-sm) + var(--space-xs));font-family:var(--font-mono);line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow:auto;position:relative}.agent-generation-prompt-box--collapsed{max-height:calc(var(--space-xl) * 6 + var(--space-sm) + var(--space-xs) * .5);overflow:hidden}.agent-generation-prompt-fade{position:absolute;bottom:0;left:0;right:0;height:calc(var(--space-lg) + var(--space-xl));background:linear-gradient(transparent,var(--bg-secondary));pointer-events:none}.agent-dialog-required{color:var(--color-error)}.agent-dialog-optional{color:var(--text-muted);font-weight:400}.agent-dialog-error{color:var(--color-error);font-size:calc(var(--space-md) + var(--space-xs) * .25);margin-top:var(--space-md)}.agent-dialog-info{color:var(--text-muted);font-size:calc(var(--space-md) + var(--space-xs) * .25);margin-top:0;margin-bottom:var(--space-md)}.agent-dialog-loading{color:var(--text-muted);font-size:calc(var(--space-md) + var(--space-xs) * .25);padding:var(--space-sm) 0}.agent-dialog-field-hint{margin-top:var(--space-xs);font-size:calc(var(--space-sm) + var(--space-xs) * .75)}@media(max-width:768px){.agent-dialog-overlay{padding:0;align-items:stretch;justify-content:stretch}.agent-dialog{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;border-left:0;border-right:0}.agent-dialog-header{padding:calc(var(--space-md) + env(safe-area-inset-top)) var(--space-md) var(--space-md)}.agent-dialog-footer{padding:var(--space-md) var(--space-md) calc(var(--space-md) + env(safe-area-inset-bottom))}.agent-dialog-steps{padding:var(--space-sm) var(--space-md);overflow-x:auto;flex-wrap:nowrap;flex-shrink:0}.agent-dialog-header,.agent-dialog-footer{flex-shrink:0}.agent-dialog-body{padding:var(--space-md);flex:1 1 auto;min-height:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.agent-dialog-summary-row--editable .input{min-height:calc(var(--space-lg) + var(--space-xl))}.agent-dialog-footer{flex-wrap:wrap;gap:var(--space-xs)}.agent-dialog-footer>.btn{flex:1 1 auto;min-width:0}.agent-dialog-step-zero-actions{justify-content:stretch}.agent-dialog-interview-btn{width:100%}.agent-presets-grid{max-height:none;overflow-y:visible}}.agent-import-skills-section{margin-top:var(--space-lg)}.agent-import-skill-list{display:flex;flex-direction:column;gap:var(--space-xs);max-height:calc(var(--space-2xl) * 6);overflow-y:auto}.agent-import-skill-item{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border)}.agent-import-skill-icon{flex-shrink:0}.agent-import-skill-details{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.agent-import-skill-name{font-weight:500;color:var(--text)}.agent-import-skill-description{color:var(--text-muted)}.agent-import-empty{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * 1.25);text-align:center;padding:var(--space-lg)}.agent-import-result{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-sm)}.agent-import-result-icon{color:var(--color-success);margin-bottom:var(--space-xs)}.agent-import-result-title{margin:0;font-size:calc(var(--space-md) + var(--space-xs));font-weight:600}.agent-import-result-company{color:var(--text-muted);font-size:calc(var(--space-md) + var(--space-xs) * .25);margin:0 0 var(--space-md) 0}.agent-import-result-stats{display:flex;gap:var(--space-lg);margin-bottom:var(--space-md);padding:var(--space-md);background:var(--bg-secondary);border-radius:var(--radius-md)}.agent-import-result-stat{display:flex;align-items:center;gap:var(--space-sm);font-size:calc(var(--space-sm) + var(--space-xs) * 1.25);padding:var(--space-xs) var(--space-sm)}.agent-import-result-stat--success{color:var(--color-success)}.agent-import-result-stat--skipped{color:var(--color-warning)}.agent-import-result-stat--error{color:var(--color-error)}.agent-import-result-stat--success:before,.agent-import-result-stat--skipped:before,.agent-import-result-stat--error:before{content:"";width:var(--space-sm);height:var(--space-sm);border-radius:50%;flex-shrink:0}.agent-import-result-stat--success:before{background:var(--color-success)}.agent-import-result-stat--skipped:before{background:var(--color-warning)}.agent-import-result-stat--error:before{background:var(--color-error)}.agent-import-result-agents{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;text-align:left}.agent-import-result-agent{display:flex;align-items:center;gap:calc(var(--space-sm) - var(--space-xs) * .5);font-size:calc(var(--space-md) + var(--space-xs) * .25);color:var(--color-success);padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--color-success) 8%,transparent);border-radius:var(--radius-sm)}.agent-import-result-errors{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;text-align:left;margin-top:var(--space-sm)}.agent-import-result-error{display:flex;align-items:center;gap:calc(var(--space-sm) - var(--space-xs) * .5);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--color-error);padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--color-error) 8%,transparent);border-radius:var(--radius-sm)}.agent-import-result-warnings{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;text-align:left;margin-top:var(--space-sm)}.agent-import-result-warning{display:flex;align-items:flex-start;gap:calc(var(--space-sm) - var(--space-xs) * .5);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--color-warning, #b8860b);padding:var(--space-xs) var(--space-sm);background:color-mix(in srgb,var(--color-warning, #b8860b) 10%,transparent);border-radius:var(--radius-sm);line-height:1.4}.agent-import-result-warning svg{flex-shrink:0;margin-top:2px}.agent-import-result-divider{align-self:stretch;height:1px;background:var(--border);margin:var(--space-md) 0}.agent-import-result-section-title{font-size:calc(var(--space-sm) + var(--space-xs));font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 var(--space-sm) 0}.agent-import-browse{margin-bottom:var(--space-md)}.agent-import-browse-header{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-md)}.agent-import-browse-search{position:relative;display:flex;align-items:center}.agent-import-browse-search-icon{position:absolute;left:var(--space-sm);color:var(--text-muted);pointer-events:none}.agent-import-browse-search-input{width:100%;padding:var(--space-sm) var(--space-sm) var(--space-sm) calc(var(--space-sm) + var(--space-lg));border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-size:calc(var(--space-md) + var(--space-xs) * .5)}.agent-import-browse-search-input:focus{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring)}.agent-import-browse-selected{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);background:color-mix(in srgb,var(--todo) 10%,transparent);border:1px solid color-mix(in srgb,var(--todo) 30%,transparent);border-radius:var(--radius-md)}.agent-import-browse-selected-label{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs))}.agent-import-browse-selected-name{flex:1;font-weight:500;color:var(--todo)}.agent-import-browse-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xl) 0;color:var(--text-muted)}.agent-import-browse-error{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);background:color-mix(in srgb,var(--color-error) 8%,transparent);border-radius:var(--radius-md);color:var(--color-error);font-size:calc(var(--space-md) + var(--space-xs) * .25)}.agent-import-browse-list{display:flex;flex-direction:column;gap:var(--space-xs);max-height:calc(var(--space-xl) * 12 + var(--space-md));overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.agent-import-browse-item{display:flex;flex-direction:column;gap:calc(var(--space-xs) * .5);padding:var(--space-sm);cursor:pointer;border-bottom:1px solid var(--border);transition:background-color var(--transition-fast)}.agent-import-browse-item:last-child{border-bottom:none}.agent-import-browse-item:hover{background:var(--surface-hover)}.agent-import-browse-item:focus-visible{outline:none;background:var(--surface-hover);box-shadow:var(--focus-ring)}.agent-import-browse-item--selected{background:color-mix(in srgb,var(--todo) 10%,transparent);border-color:var(--todo)}.agent-import-browse-item-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.agent-import-browse-item-name{font-weight:500;color:var(--text)}.agent-import-browse-item-installs{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);white-space:nowrap}.agent-import-browse-item-tagline{font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted);line-height:1.4}.agent-import-browse-item-repo{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);font-family:var(--font-mono)}.agent-import-browse-empty{padding:var(--space-lg);text-align:center;color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * 1.25)}.agent-controls-actions{display:flex;gap:var(--space-sm)}.agent-global-controls{display:flex;align-items:center;padding:var(--space-md) var(--space-lg);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:var(--space-lg)}.heartbeat-multiplier-label{font-weight:500;color:var(--text);white-space:nowrap}.agent-import-dialog{max-width:calc(var(--space-xl) * 23 + var(--space-sm))}.agent-import-description{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * 1.25);margin:0 0 var(--space-md) 0;line-height:1.5}.agent-import-description code{background:var(--surface-hover);padding:calc(var(--space-xs) * .25) var(--space-xs);border-radius:calc(var(--radius-sm) - var(--space-xs) * .25);font-size:calc(var(--space-sm) + var(--space-xs))}.agent-import-file-upload{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.agent-import-file-input{display:none}.agent-import-upload-btn{display:inline-flex;align-items:center;gap:calc(var(--space-sm) - var(--space-xs) * .5)}.agent-import-file-hint{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs))}.agent-import-divider{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs))}.agent-import-divider:before,.agent-import-divider:after{content:"";flex:1;height:1px;background:var(--border)}.agent-import-textarea{width:100%;min-height:calc(var(--space-xl) * 5);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-family:var(--font-mono);font-size:calc(var(--space-sm) + var(--space-xs));line-height:1.5;resize:vertical}.agent-import-textarea:focus{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring)}.agent-import-company{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.agent-import-company-label{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs));text-transform:uppercase;letter-spacing:.04em}.agent-import-company-name{font-weight:600;font-size:calc(var(--space-md) + var(--space-xs) * .5)}.agent-import-count{display:flex;align-items:center;gap:calc(var(--space-sm) - var(--space-xs) * .5);color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * 1.25);margin-bottom:var(--space-md)}.agent-import-selection-controls{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin-bottom:var(--space-md)}.agent-import-agent-list{display:flex;flex-direction:column;gap:calc(var(--space-sm) - var(--space-xs) * .5);max-height:calc(var(--space-xl) * 11 + var(--space-lg));overflow-y:auto}.agent-import-agent-item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.agent-import-agent-icon{font-size:calc(var(--space-md) + var(--space-xs) * 1.5);line-height:1;flex-shrink:0}.agent-import-agent-details{display:flex;flex-direction:column;min-width:0}.agent-import-agent-name{font-weight:500;font-size:calc(var(--space-sm) + var(--space-xs) * 1.25)}.agent-import-agent-meta{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * .75)}.agent-import-agent-title{color:var(--text-muted)}.agent-import-agent-role{text-transform:capitalize}.agent-import-agent-model{color:var(--text-muted)}
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AgentDetailView-FUKwQxBP.js","assets/vendor-react-D37HfzIf.js","assets/index-bZCpHtGq.js","assets/vendor-i18n-CV0mwX_-.js","assets/vendor-reactflow-CRZcPCXF.js","assets/vendor-reactflow-C5ap-Sga.css","assets/vendor-xterm-tcedd2Jt.js","assets/vendor-xterm-LZoznX6r.css","assets/vendor-codemirror-jBKmHyH0.js","assets/index-DqhCiU35.css","assets/ExperimentalAgentOnboardingModal-B4aZ1y0n.js","assets/ExperimentalAgentOnboardingModal-BNpveCEk.css","assets/AgentPermissionPolicyEditor-DMDUhF1n.js","assets/AgentPermissionPolicyEditor-CGxjOr6G.css","assets/AgentDetailView-DiWELtb1.css"])))=>i.map(i=>d[i]);
2
- import{c as jt,A as tt,C as vt,Z as Ha,s as Oa,r as _t,F as Lt,f as $a,a as Da,b as pa,B as It,u as xa,d as wt,e as Va,g as Ba,h as Wa,i as Ua,j as Ft,k as ft,P as Ga,l as Ka,m as Ya,n as Xa,o as Qt,G as qa,S as Za,L as St,T as rt,R as et,X as ea,p as Ja,q as Qa,t as ht,v as es,w as ta,x as ts,y as as,z as me,D as ot,E as ss,M as ns,H as ls,N as aa,I as sa,J as na,K as is,O as At,Q as pt,U as la,V as rs,W as os,Y as cs,_ as ds,$ as ia,a0 as gs,a1 as us,a2 as ms,a3 as xt,a4 as hs,a5 as ra,a6 as ps}from"./index-bZCpHtGq.js";import{r as s,j as e,b as xs}from"./vendor-react-D37HfzIf.js";import{u as Me}from"./vendor-i18n-CV0mwX_-.js";import{A as bs,S as vs,E as fs,f as js}from"./ExperimentalAgentOnboardingModal-B4aZ1y0n.js";import{U as zt}from"./upload-B-qmm1NH.js";import{F as Ns}from"./folder-open-BlPyIWyf.js";import"./vendor-reactflow-CRZcPCXF.js";import"./vendor-xterm-tcedd2Jt.js";import"./vendor-codemirror-jBKmHyH0.js";/**
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AgentDetailView-DxV8pFHX.js","assets/vendor-react-BTgM5bbZ.js","assets/index-Bglw05rM.js","assets/vendor-i18n-DYlSUfot.js","assets/vendor-reactflow-ZasuEfF9.js","assets/vendor-reactflow-C5ap-Sga.css","assets/vendor-xterm-ea7-K05z.js","assets/vendor-xterm-LZoznX6r.css","assets/vendor-codemirror-jBKmHyH0.js","assets/index-FYgnflWD.css","assets/ExperimentalAgentOnboardingModal-D-rzCCET.js","assets/ExperimentalAgentOnboardingModal-CZ_jbgep.css","assets/AgentPermissionPolicyEditor--YS4iMUY.js","assets/AgentPermissionPolicyEditor-CGxjOr6G.css","assets/AgentDetailView-CanIeYHg.css"])))=>i.map(i=>d[i]);
2
+ import{c as jt,A as tt,C as vt,Z as Ha,s as Oa,r as _t,F as Lt,f as $a,a as Da,b as pa,B as It,u as xa,d as wt,e as Va,g as Ba,h as Wa,i as Ua,j as Ft,k as ft,P as Ga,l as Ka,m as Ya,n as Xa,o as Qt,G as qa,S as Za,L as St,T as rt,R as et,X as ea,p as Ja,q as Qa,t as ht,v as es,w as ta,x as ts,y as as,z as me,D as ot,E as ss,M as ns,H as ls,N as aa,I as sa,J as na,K as is,O as At,Q as pt,U as la,V as rs,W as os,Y as cs,_ as ds,$ as ia,a0 as gs,a1 as us,a2 as ms,a3 as xt,a4 as hs,a5 as ra,a6 as ps}from"./index-Bglw05rM.js";import{r as s,j as e,b as xs}from"./vendor-react-BTgM5bbZ.js";import{u as Me}from"./vendor-i18n-DYlSUfot.js";import{A as bs,S as vs,E as fs,f as js}from"./ExperimentalAgentOnboardingModal-D-rzCCET.js";import{U as zt}from"./upload-C11J2diI.js";import{F as Ns}from"./folder-open-33WGVnbp.js";import"./vendor-reactflow-ZasuEfF9.js";import"./vendor-xterm-ea7-K05z.js";import"./vendor-codemirror-jBKmHyH0.js";/**
3
3
  * @license lucide-react v1.7.0 - ISC
4
4
  *
5
5
  * This source code is licensed under the ISC license.
@@ -26,4 +26,4 @@ reportsTo: null
26
26
  skills:
27
27
  - review
28
28
  ---
29
- Agent instructions go here...`),value:j,onChange:r=>{x("paste"),S([]),R(r.target.value),H(null)},rows:8,"aria-label":c("agents.manifestContent","Manifest content")})]}),e.jsx("p",{className:"agent-import-file-hint",children:c("agents.currentInput","Current input: {{method}}",{method:l})}),ce&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),ce]})]}),v==="preview"&&e.jsxs("div",{className:"agent-import-preview",children:[e.jsxs("div",{className:"agent-import-company",children:[e.jsx("span",{className:"agent-import-company-label",children:c("agents.company","Company")}),e.jsx("span",{className:"agent-import-company-name",children:$})]}),y.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:y.map((r,f)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:r})]},f))}),e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Lt,{size:14}),e.jsx("span",{children:c("agents.agentsFound","{{count}} agent{{plural}} found",{count:I.length,plural:I.length!==1?"s":""})})]}),I.length>0&&e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L(I.map(r=>r.name)),children:c("agents.selectAllAgents","Select all agents")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L([]),children:c("agents.clearAgents","Clear agents")})]}),I.length>0?e.jsx("div",{className:"agent-import-agent-list",children:I.map((r,f)=>e.jsxs("div",{className:"agent-import-agent-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":c("agents.selectAgent","Select agent {{name}}",{name:r.name}),checked:K.includes(r.name),onChange:()=>Te(r.name)})}),e.jsx("span",{className:"agent-import-agent-icon",children:r.icon||"🤖"}),e.jsxs("div",{className:"agent-import-agent-details",children:[e.jsx("span",{className:"agent-import-agent-name",children:r.name}),e.jsxs("span",{className:"agent-import-agent-meta",children:[r.title&&e.jsxs("span",{className:"agent-import-agent-title",children:[r.title," · "]}),e.jsx("span",{className:"agent-import-agent-role",children:r.role}),r.reportsTo&&e.jsxs("span",{className:"agent-import-agent-reports",children:[" · reports to ",r.reportsTo]}),r.skills&&r.skills.length>0&&e.jsxs("span",{className:"agent-import-agent-model",children:[" · skills: ",r.skills.join(", ")]})]}),r.instructionsText&&e.jsxs("span",{className:"agent-import-agent-instructions",children:[r.instructionsText.slice(0,100),r.instructionsText.length>100?"...":""]})]})]},f))}):e.jsx("p",{className:"agent-import-empty",children:c("agents.noAgentsFound","No agents found in the manifest.")}),A.length>0&&e.jsxs("div",{className:"agent-import-skills-section",children:[e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Lt,{size:14}),e.jsx("span",{children:c("agents.skillsFound","{{count}} skill{{plural}} found",{count:A.length,plural:A.length!==1?"s":""})})]}),e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>se(A.map(r=>r.name)),children:c("agents.selectAllSkills","Select all skills")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>se([]),children:c("agents.clearSkills","Clear skills")})]}),e.jsx("div",{className:"agent-import-skill-list",children:A.map((r,f)=>e.jsxs("div",{className:"agent-import-skill-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":c("agents.selectSkill","Select skill {{name}}",{name:r.name}),checked:X.includes(r.name),onChange:()=>ze(r.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:r.name}),r.description&&e.jsx("span",{className:"agent-import-skill-description",children:r.description})]})]},`${r.name}-${f}`))})]}),M&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),M]})]}),v==="result"&&k&&e.jsxs("div",{className:"agent-import-result",children:[e.jsx("div",{className:"agent-import-result-icon",children:e.jsx(vt,{size:32})}),e.jsx("h3",{className:"agent-import-result-title",children:c("agents.importComplete","Import Complete")}),e.jsxs("p",{className:"agent-import-result-company",children:[c("agents.from","From")," ",e.jsx("strong",{children:k.companyName??"Unknown"})]}),e.jsxs("div",{className:"agent-import-result-stats",children:[k.created.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:c("agents.resultCreated","{{count}} created",{count:k.created.length})})}),k.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.resultSkipped","{{count}} skipped (already exist)",{count:k.skipped.length})})}),k.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:c("agents.resultErrors","{{count}} error{{plural}}",{count:k.errors.length,plural:k.errors.length!==1?"s":""})})})]}),k.created.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:k.created.map((r,f)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(vt,{size:12}),e.jsx("span",{children:r.name})]},f))}),k.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:k.errors.map((r,f)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ea,{size:12}),e.jsxs("span",{children:[r.name,": ",r.error]})]},f))}),k.warnings&&k.warnings.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:k.warnings.map((r,f)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:r})]},f))}),k.skills&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-result-divider"}),e.jsx("h4",{className:"agent-import-result-section-title",children:c("agents.skills","Skills")}),e.jsxs("div",{className:"agent-import-result-stats",children:[k.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:c("agents.skillsImported","{{count}} skill{{plural}} imported",{count:k.skills.imported.length,plural:k.skills.imported.length!==1?"s":""})})}),k.skills.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.skillsSkipped","{{count}} skill{{plural}} skipped (already exist)",{count:k.skills.skipped.length,plural:k.skills.skipped.length!==1?"s":""})})}),k.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:c("agents.skillsErrors","{{count}} skill{{plural}} error{{pluralError}}",{count:k.skills.errors.length,plural:k.skills.errors.length!==1?"s":"",pluralError:k.skills.errors.length!==1?"s":""})})}),k.skills.imported.length===0&&k.skills.skipped.length===0&&k.skills.errors.length===0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.noSkillsInPackage","No skills in package")})})]}),k.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:k.skills.imported.map((r,f)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(vt,{size:12}),e.jsx("span",{children:r.name})]},f))}),k.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:k.skills.errors.map((r,f)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ea,{size:12}),e.jsxs("span",{children:[r.name,": ",r.error]})]},f))})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[v==="preview"&&e.jsx("button",{className:"btn",onClick:()=>g("input"),disabled:le,children:c("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:_e,disabled:le,children:v==="result"?c("agents.close","Close"):c("agents.cancel","Cancel")}),v==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void $e(),disabled:he||(l==="directory"?C.length===0:l==="browse"?!Z:!j.trim()),children:he?e.jsxs(e.Fragment,{children:[e.jsx(St,{size:14,className:"spin"}),c("agents.parsing","Parsing...")]}):c("agents.preview","Preview")}),v==="preview"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void z(),disabled:le||E===0&&U===0,children:le?e.jsxs(e.Fragment,{children:[e.jsx(St,{size:14,className:"spin"}),Fe]}):c("agents.importButton","Import {{label}}",{label:ge})})]})]})}):null}const Et="fn-agent-org-chart-layout";function ma(n){return n==="auto"||n==="horizontal"||n==="vertical"}const Vs=768,Bs={nodeWidth:220,siblingGap:24,rootGap:24,chartPadding:24},Ws={nodeWidth:160,siblingGap:8,rootGap:8,chartPadding:8};function ba(n){return n.children.length===0?1:n.children.reduce((d,b)=>d+ba(b),0)}function Us(n){return n<=Vs?Ws:Bs}function Gs(n,d){const b=ba(n);return b*d.nodeWidth+Math.max(0,b-1)*d.siblingGap}function Ks(n,d=Number.POSITIVE_INFINITY){const b=Us(d);if(n.length===0)return b.nodeWidth;const a=n.map(v=>Gs(v,b)).reduce((v,g)=>v+g,0),c=Math.max(0,n.length-1)*b.rootGap;return a+c+b.chartPadding*2}function Ys(n){const d=n.preference??"auto";if(d!=="auto")return d;const b=Number.isFinite(n.availableWidth)&&n.availableWidth>0?n.availableWidth:0;return b===0||n.tree.length<=1?"horizontal":Ks(n.tree,b)>b?"vertical":"horizontal"}const ha=s.lazy(()=>gs(()=>import("./AgentDetailView-FUKwQxBP.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])).then(n=>({default:n.AgentDetailView})));function Xs(n){return[{value:"triage",label:n("agents.roleTriage","Triage"),icon:"⊕"},{value:"executor",label:n("agents.roleExecutor","Executor"),icon:"▶"},{value:"reviewer",label:n("agents.roleReviewer","Reviewer"),icon:"⊙"},{value:"merger",label:n("agents.roleMerger","Merger"),icon:"⊞"},{value:"scheduler",label:n("agents.roleScheduler","Scheduler"),icon:"◷"},{value:"engineer",label:n("agents.roleEngineer","Engineer"),icon:"⎔"},{value:"custom",label:n("agents.roleCustom","Custom"),icon:"✦"}]}const Pt=[.1,.25,.5,1,2,3,5,10],qs=.25,Zs=3,bt=16,Qe=32;function Ht(n){switch(n){case"running":return"agent-badge--running";case"active":return"agent-badge--active";case"paused":return"agent-badge--paused";case"error":return"agent-badge--error";case"idle":default:return"agent-badge--idle"}}function Ot(n,d){switch(d){case"running":return`${n}--running`;case"active":return`${n}--active`;case"paused":return`${n}--paused`;case"error":return`${n}--error`;case"idle":default:return`${n}--idle`}}function va(n){return n.children.length===0?1:n.children.reduce((d,b)=>d+va(b),0)}function $t(n,d,b){return n.state==="error"?{title:void 0,label:b("agents.healthError","Error")}:{title:d.reason??d.label,label:d.stateDerived?null:d.label}}function fa({node:n,onSelect:d,getHealthStatus:b,selectedAgentId:p,registerNodeElement:a,linksRef:c}){const{t:v}=Me("app"),{agent:g,children:l}=n,x=b(g),j=$t(g,x,v),R=Ht(g.state),C=Ot("org-chart-node-card",g.state),S=va(n),$={"--org-chart-subtree-leaves":String(S)};return e.jsxs("div",{className:`org-chart-node${l.length>0?" org-chart-node--has-children":""}`,style:$,children:[e.jsxs("div",{ref:N=>a(g.id,N),"data-agent-id":g.id,className:`org-chart-node-card ${C}${p===g.id?" agent-card--selected":""}`,onClick:()=>d(g.id),role:"button",tabIndex:0,onKeyDown:N=>{(N.key==="Enter"||N.key===" ")&&(N.key===" "&&N.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(ft,{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 ${R}`,children:g.state}),e.jsxs("span",{className:"org-chart-node__health",style:{color:x.color},title:j.title,children:[x.icon,j.label&&e.jsx("span",{className:"text-secondary",children:j.label})]})]})]}),l.length>0&&e.jsx("div",{className:"org-chart-children",role:"group","aria-label":v("agents.orgChartEmployees","{{name}} employees",{name:g.name}),children:l.map(N=>(c.current.push({parentId:g.id,childId:N.agent.id}),e.jsx(fa,{node:N,onSelect:d,getHealthStatus:b,selectedAgentId:p,registerNodeElement:a,linksRef:c},N.agent.id)))})]})}function Js({links:n,nodeElements:d,canvasRef:b,viewportRef:p,layoutMode:a,transform:c}){const[v,g]=s.useState([]);return s.useLayoutEffect(()=>{const l=b.current,x=p.current;if(!l||!x||n.length===0){g([]);return}const j=()=>{const C=l.getBoundingClientRect(),S=n.flatMap(({parentId:$,childId:N})=>{const I=d.get($),B=d.get(N);if(!I||!B)return[];const A=I.getBoundingClientRect(),F=B.getBoundingClientRect(),y=(A.left-C.left)/c.scale,D=(A.top-C.top)/c.scale,K=(F.left-C.left)/c.scale,L=(F.top-C.top)/c.scale;if(a==="vertical"){const ie=y,ce=D+A.height/c.scale/2,H=K,k=L+F.height/c.scale/2,pe=ie-(ie-H)/2;return[`M ${ie} ${ce} L ${pe} ${ce} L ${pe} ${k} L ${H} ${k}`]}const X=y+A.width/c.scale/2,se=D+A.height/c.scale,he=K+F.width/c.scale/2,ne=L,le=se+(ne-se)/2;return[`M ${X} ${se} L ${X} ${le} L ${he} ${le} L ${he} ${ne}`]});g(S)};j();const R=new ResizeObserver(j);return R.observe(l),R.observe(x),d.forEach(C=>R.observe(C)),()=>R.disconnect()},[b,a,n,d,c.scale,p]),e.jsx("svg",{className:"agent-org-chart-connectors","aria-hidden":"true",children:v.map((l,x)=>e.jsx("path",{d:l},`${x}-${l}`))})}function cn({addToast:n,projectId:d,onOpenTaskLogs:b,agentOnboardingEnabled:p=!1}){const{t:a}=Me("app"),c=Xs(a),[v,g]=s.useState(!1),x=Ja()==="mobile",[j,R]=s.useState("all"),{agents:C,stats:S,isLoading:$,loadAgents:N,refreshAgents:I}=Qa(d,{filterState:j,showSystemAgents:v}),[B,A]=s.useState(!1),[F,y]=s.useState(null),[D,K]=s.useState(!1),[L,X]=s.useState(null),[se,he]=s.useState(null),ne=x&&!!L,[le,ie]=s.useState("dashboard"),[ce,H]=s.useState(null),[k,pe]=s.useState(!1),[M,oe]=s.useState(()=>{if(typeof window>"u")return"list";const t=ht("fn-agent-view",d);return t==="list"||t==="board"||t==="org"?t:"list"}),[de,Ee]=s.useState(()=>{if(typeof window>"u")return"auto";const t=ht(Et,d);return ma(t)?t:"auto"}),[xe,fe]=s.useState([]),[q,Pe]=s.useState(!1),[Z,be]=s.useState(0),[ve,W]=s.useState(!1),[Oe,J]=s.useState(!1),[Ne,Ke]=s.useState(!1),[Ae,_e]=s.useState(!1),[Le,Ye]=s.useState(0),[Ie,$e]=s.useState(0),[z,E]=s.useState({scale:1,x:0,y:0}),[U,je]=s.useState(!1),Re=s.useRef(null),ge=s.useRef(null),Fe=s.useRef(null),Te=s.useRef(new Map),ze=s.useRef([]),r=s.useRef(new Map),f=s.useRef(null),P=s.useRef(null),V=s.useRef(!1),{confirm:Q}=es(),Y=s.useRef(null),De=s.useId();s.useEffect(()=>{const t=ht("fn-agent-view",d);if(t==="list"||t==="board"||t==="org"){oe(t);return}oe("list")},[d]),s.useEffect(()=>{ta("fn-agent-view",M,d)},[M,d]),s.useEffect(()=>{const t=ht(Et,d);Ee(ma(t)?t:"auto")},[d]),s.useEffect(()=>{ta(Et,de,d)},[de,d]);const[at,ye]=s.useState(null),Xe=s.useRef(null),[Nt,ke]=s.useState(null),[Ve,Ce]=s.useState(null),[st,we]=s.useState({}),[i,_]=s.useState(1),[He,Be]=s.useState(!1),[Se,Dt]=s.useState(new Set),[yt,qe]=s.useState(new Map),ct=s.useRef(!0);s.useEffect(()=>(ct.current=!0,()=>{ct.current=!1}),[]),s.useEffect(()=>{ts(d).then(t=>{ct.current&&_(t.heartbeatMultiplier??1)}).catch(()=>{})},[d]);const Vt=s.useCallback(async t=>{const o=Number.isFinite(t)&&t>0?t:1;_(o),Be(!0);try{await as({heartbeatMultiplier:o},d),n(a("agents.heartbeatSpeedSet","Heartbeat speed set to ×{{value}}",{value:o.toFixed(1)}),"success")}catch(u){n(a("agents.heartbeatSpeedSaveFailed","Failed to save heartbeat multiplier: {{error}}",{error:me(u)}),"error")}finally{ct.current&&Be(!1)}},[d,n]),dt=s.useMemo(()=>yt.size===0?C:C.map(t=>{const o=yt.get(t.id);return o?{...t,state:o}:t}),[C,yt]),nt=s.useMemo(()=>dt.filter(t=>v||!ot(t)),[dt,v]),ja=s.useMemo(()=>dt.filter(t=>t.state!=="active"&&t.state!=="running"?!1:v||!ot(t)),[dt,v]),We=s.useMemo(()=>{if(v)return xe;const t=o=>ot(o.agent)?null:{...o,children:o.children.map(t).filter(u=>u!==null)};return xe.map(t).filter(o=>o!==null)},[xe,v]);s.useEffect(()=>{if(M!=="org")return;const t=ge.current;if(!t)return;const o=()=>{be(t.clientWidth)};o();const u=typeof ResizeObserver<"u"?new ResizeObserver(o):null;return u?.observe(t),window.addEventListener("resize",o),()=>{u?.disconnect(),window.removeEventListener("resize",o)}},[M,We.length]),s.useEffect(()=>{if(M!=="org")return;let t=!1;return Pe(!0),ss(d,{includeEphemeral:v}).then(o=>{t||fe(o)}).catch(o=>{t||(n(a("agents.orgChartLoadFailed","Failed to load org chart: {{error}}",{error:me(o)}),"error"),fe([]))}).finally(()=>{t||Pe(!1)}),()=>{t=!0}},[M,d,v,n]),s.useEffect(()=>{const t=setInterval(()=>{N()},3e4);return()=>{clearInterval(t)}},[N]),s.useEffect(()=>{if(!ve)return;let t=!1;_e(!0),Ft(void 0,d).then(m=>{if(t)return;const w=m.filter(T=>!ot(T));Ye(w.filter(T=>T.state==="active"||T.state==="running").length),$e(w.filter(T=>T.state==="paused").length)}).catch(m=>{t||(Ye(0),$e(0),n(a("agents.bulkActionsLoadFailed","Failed to load bulk agent actions: {{error}}",{error:me(m)}),"error"))}).finally(()=>{t||_e(!1)});const o=m=>{const w=m.target;w&&(Re.current?.contains(w)||Y.current?.contains(w)||W(!1))},u=m=>{m.key==="Escape"&&(W(!1),Y.current?.focus())};return document.addEventListener("mousedown",o),document.addEventListener("touchstart",o),document.addEventListener("keydown",u),()=>{t=!0,document.removeEventListener("mousedown",o),document.removeEventListener("touchstart",o),document.removeEventListener("keydown",u)}},[n,ve,d]);const Bt=async t=>{if(!Ne){Ke(!0);try{const u=(await Ft(void 0,d)).filter(G=>!ot(G)),m=u.filter(G=>t==="paused"?G.state==="active"||G.state==="running":G.state==="paused"),w=u.length-m.length;if(m.length===0){n(t==="paused"?a("agents.noAgentsToPause","No agents eligible to pause"):a("agents.noAgentsToResume","No agents eligible to resume"),"error");return}if(!await Q({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 re=await Promise.allSettled(m.map(G=>ia(G.id,t,d))),ae=re.map((G,mt)=>({result:G,agent:m[mt]})).filter(G=>G.result.status==="rejected"),h=re.length-ae.length,O=ae.length,te=t==="paused"?a("agents.pausedSummary",{count:h,skipped:w,defaultValue_one:"Paused {{count}} agent; skipped {{skipped}}",defaultValue_other:"Paused {{count}} agents; skipped {{skipped}}"}):a("agents.resumedSummary",{count:h,skipped:w,defaultValue_one:"Resumed {{count}} agent; skipped {{skipped}}",defaultValue_other:"Resumed {{count}} agents; skipped {{skipped}}"});if(O>0){const G=ae.slice(0,3).map(({agent:mt,result:za})=>`${mt.name||mt.id}: ${me(za.reason)}`).join("; ");n(`${te}; failed ${O}${G?` (${G})`:""}`,"error")}else n(te,"success");await N()}catch(o){n(t==="paused"?a("agents.pauseAgentsFailed","Failed to pause agents: {{error}}",{error:me(o)}):a("agents.resumeAgentsFailed","Failed to resume agents: {{error}}",{error:me(o)}),"error")}finally{Ke(!1)}}},lt=async(t,o)=>{if(!Se.has(t)){Dt(u=>new Set(u).add(t)),qe(u=>{const m=new Map(u);return m.set(t,o),m});try{await ia(t,o,d),n(a("agents.stateUpdated","Agent state updated to {{state}}",{state:o}),"success"),await N(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const w=new Map(m);return w.delete(t),w}),n(a("agents.stateUpdateFailed","Failed to update state: {{error}}",{error:me(u)}),"error")}finally{Dt(u=>{const m=new Set(u);return m.delete(t),m})}}},Wt=async(t,o)=>{if(await Q({title:a("agents.deleteTitle","Delete Agent"),message:a("agents.deleteConfirm",'Delete agent "{{name}}"? This cannot be undone.',{name:o}),danger:!0}))try{await ms(t,d),n(a("agents.deleted",'Agent "{{name}}" deleted',{name:o}),"success"),await N()}catch(m){n(a("agents.deleteFailed","Failed to delete agent: {{error}}",{error:me(m)}),"error")}},Na=async(t,o)=>{const u=C.find(m=>m.id===t);if(u){if(u.role===o){ye(null);return}try{await xt(t,{role:o},d),n(a("agents.roleUpdated","Agent role updated to {{role}}",{role:c.find(m=>m.value===o)?.label??o}),"success"),ye(null),N()}catch(m){n(a("agents.roleUpdateFailed","Failed to update role: {{error}}",{error:me(m)}),"error")}}},ya=(t,o)=>{t.key==="Escape"&&ye(null)},ka=async(t,o)=>{Ve===t.id&&(Ce(null),we(u=>{const m={...u};return delete m[t.id],m})),ke(t.id);try{await xt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:o}},d),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ra(o),name:t.name}),"success"),N()}catch(u){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(u)}),"error")}finally{ke(null)}},Ut=async t=>{const o=st[t.id]??"";if(o.trim()===""){n(a("agents.heartbeatEnterMinutes","Please enter a heartbeat interval in minutes"),"error");return}const u=Number(o);if(isNaN(u)){n(a("agents.heartbeatMustBeNumber","Heartbeat interval must be a valid number"),"error");return}if(u<=0){n(a("agents.heartbeatMustBePositive","Heartbeat interval must be greater than 0"),"error");return}if(u>=1&&u<5){ke(t.id);try{await xt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:hs}},d),n(a("agents.heartbeatClampedToMin",{count:u,defaultValue_one:"Heartbeat interval set to 5 minutes (minimum). {{count}} minute was below the 5-minute minimum.",defaultValue_other:"Heartbeat interval set to 5 minutes (minimum). {{count}} minutes was below the 5-minute minimum."}),"success"),Ce(null),we(w=>{const T={...w};return delete T[t.id],T}),N()}catch(w){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(w)}),"error")}finally{ke(null)}return}const m=Math.round(u*6e4);ke(t.id);try{await xt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:m}},d),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ra(m),name:t.name}),"success"),Ce(null),we(w=>{const T={...w};return delete T[t.id],T}),N()}catch(w){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(w)}),"error")}finally{ke(null)}},Ca=t=>{const o=_t(t.runtimeConfig?.heartbeatIntervalMs),u=Math.round(o/6e4);Ce(t.id),we(m=>({...m,[t.id]:String(u)}))},ue=s.useCallback((t,o)=>{X(t),ie(o?.initialTab??"dashboard"),H(o?.initialRunId??null),pe(o?.preferActiveRun??!1)},[]),Ue=s.useCallback(()=>{X(null),ie("dashboard"),H(null),pe(!1)},[]),Gt=s.useCallback(t=>{ue(t)},[ue]),wa=s.useCallback(t=>{he(t),ue(t)},[ue]),Sa=s.useCallback(async({agentId:t,deleted:o})=>{await I(),o&&L===t&&Ue()},[I,L,Ue]),Aa=s.useCallback(t=>{ue(t),x&&J(!1)},[x,ue]),Ra=async(t,o)=>{qe(u=>{const m=new Map(u);return m.set(t,"running"),m});try{await ps(t,d,{source:"on_demand",triggerDetail:"Triggered from dashboard"}),n(a("agents.heartbeatRunStarted","Heartbeat run started for {{name}}",{name:o}),"success"),await N(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const w=new Map(m);return w.delete(t),w}),n(a("agents.heartbeatRunFailed","Failed to start heartbeat run: {{error}}",{error:me(u)}),"error")}},Ge=s.useCallback(t=>Math.min(Zs,Math.max(qs,t)),[]),ee=s.useCallback(t=>{const o=ge.current,u=Fe.current?.querySelector(".agent-org-chart");if(!o||!u)return{...t,scale:Ge(t.scale)};const m=Ge(t.scale),w=u.scrollWidth*m,T=u.scrollHeight*m,re=o.clientWidth,ae=o.clientHeight,h=Math.min(Qe,re-w-Qe),O=Qe,te=Math.min(Qe,ae-T-Qe),G=Qe;return{scale:m,x:Math.max(h,Math.min(O,t.x)),y:Math.max(te,Math.min(G,t.y))}},[Ge]),gt=s.useCallback((t,o,u)=>{const m=ge.current;m&&E(w=>{const T=Ge(t),re=m.getBoundingClientRect(),ae=o-re.left,h=u-re.top,O=(ae-w.x)/w.scale,te=(h-w.y)/w.scale;return ee({scale:T,x:ae-O*T,y:h-te*T})})},[Ge,ee]),Ze=s.useCallback(()=>{const t=ge.current,o=Fe.current?.querySelector(".agent-org-chart");if(!t||!o)return;const u=t.clientWidth,m=t.clientHeight,w=o.scrollWidth,T=o.scrollHeight;if(w<=0||T<=0)return;const re=Ge(Math.min(u/w,m/T,1)),ae=(u-w*re)/2,h=(m-T*re)/2;E(ee({scale:re,x:ae,y:h}))},[Ge,ee]),kt=s.useCallback(t=>{oe(t),t!=="org"&&E({scale:1,x:0,y:0}),x&&L&&Ue()},[Ue,x,L]),Kt=t=>c.find(o=>o.value===t)?.label??t,ut=s.useMemo(()=>Ys({tree:We,availableWidth:Z,preference:de}),[We,de,Z]),Yt=s.useCallback(t=>{Ee(t),E({scale:1,x:0,y:0})},[]);s.useEffect(()=>{E({scale:1,x:0,y:0}),V.current=!1},[d,ut]),s.useLayoutEffect(()=>{M!=="org"||q||We.length===0||V.current||(Ze(),V.current=!0)},[M,We.length,Ze,q]);const Ta=s.useCallback((t,o)=>{o?Te.current.set(t,o):Te.current.delete(t)},[]),Xt=s.useCallback(()=>e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>E(t=>ee({...t,scale:t.scale*.9})),"aria-label":a("agents.orgChartZoomOut","Zoom out org chart"),title:a("agents.zoomOut","Zoom out"),children:e.jsx(Ts,{size:16})}),e.jsxs("span",{className:"agent-org-chart-controls__zoom-label","aria-live":"polite",children:[Math.round(z.scale*100),"%"]}),e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>E(t=>ee({...t,scale:t.scale*1.1})),"aria-label":a("agents.orgChartZoomIn","Zoom in org chart"),title:a("agents.zoomIn","Zoom in"),children:e.jsx(As,{size:16})}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm agent-org-chart-controls__fit-btn",onClick:Ze,"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:()=>E(t=>ee({...t,x:0,y:0})),"aria-label":a("agents.orgChartCenter","Center org chart"),title:a("agents.orgChartCenter","Center org chart"),children:[e.jsx(ls,{size:16}),a("agents.center","Center")]})]}),[ee,Ze,z.scale]),Ma=s.useCallback(t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();const o=t.deltaY>0?.9:1.1;gt(z.scale*o,t.clientX,t.clientY)},[z.scale,gt]),Ea=s.useCallback(t=>{if(t.target.closest(".org-chart-node-card"))return;if(t.currentTarget.setPointerCapture?.(t.pointerId),r.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),r.current.size===1){f.current={x:t.clientX-z.x,y:t.clientY-z.y,pointerId:t.pointerId},je(!0);return}if(r.current.size===2){const u=Array.from(r.current.values()),m=u[0].x-u[1].x,w=u[0].y-u[1].y;P.current={distance:Math.hypot(m,w),scale:z.scale,centerX:(u[0].x+u[1].x)/2,centerY:(u[0].y+u[1].y)/2},f.current=null}},[z.scale,z.x,z.y]),Pa=s.useCallback(t=>{if(r.current.has(t.pointerId)){if(r.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),r.current.size>=2){const o=Array.from(r.current.values()),u=P.current;if(!u)return;const m=o[0].x-o[1].x,w=o[0].y-o[1].y,T=Math.hypot(m,w),re=u.scale*(T/u.distance);gt(re,u.centerX,u.centerY);return}!f.current||f.current.pointerId!==t.pointerId||E(o=>ee({...o,x:t.clientX-f.current.x,y:t.clientY-f.current.y}))}},[ee,gt]),qt=s.useCallback(t=>{r.current.delete(t.pointerId),r.current.size<2&&(P.current=null),r.current.size===0&&(f.current=null,je(!1))},[]),_a=s.useCallback(t=>{if(t.key==="ArrowLeft")E(o=>ee({...o,x:o.x+bt}));else if(t.key==="ArrowRight")E(o=>ee({...o,x:o.x-bt}));else if(t.key==="ArrowUp")E(o=>ee({...o,y:o.y+bt}));else if(t.key==="ArrowDown")E(o=>ee({...o,y:o.y-bt}));else if(t.key==="+"||t.key==="=")E(o=>ee({...o,scale:o.scale*1.1}));else if(t.key==="-")E(o=>ee({...o,scale:o.scale*.9}));else if(t.key==="0")Ze();else if(t.key==="Home")E({scale:1,x:0,y:0});else return;t.preventDefault()},[ee,Ze]),Zt=s.useCallback(()=>{const t=[{value:"horizontal",label:a("agents.layoutHorizontal","Horizontal"),icon:e.jsx(aa,{size:16}),ariaLabel:a("agents.layoutHorizontalAria","Horizontal layout")},{value:"vertical",label:a("agents.layoutVertical","Vertical"),icon:e.jsx(sa,{size:16}),ariaLabel:a("agents.layoutVerticalAria","Vertical layout")},{value:"auto",label:a("agents.layoutAuto","Auto"),icon:e.jsx(et,{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(o=>{const u=de===o.value;return e.jsxs("button",{type:"button",className:`btn-icon touch-target agent-org-chart-layout-toggle__button${u?" btn-icon--active":""}`,onClick:()=>Yt(o.value),"aria-pressed":u,"aria-label":o.ariaLabel,title:o.ariaLabel,"data-layout-value":o.value,children:[o.icon,e.jsx("span",{className:"agent-org-chart-layout-toggle__text",children:o.label})]},o.value)})})},[Yt,de]),La=t=>Array.isArray(t.metadata?.skills)?t.metadata.skills:[],Ct=t=>us(t),Ia=Ae||Ne||Le===0,Fa=Ae||Ne||Ie===0,Jt=$&&C.length===0,it=s.useCallback(()=>{A(!0)},[]);return e.jsxs("div",{className:"agents-view",children:[e.jsxs("div",{className:"agents-view-header",children:[e.jsxs("div",{className:"agents-view-title",children:[e.jsx(It,{size:24}),e.jsx("h2",{children:a("agents.title","Agents")})]}),e.jsxs("div",{className:"agents-view-controls",children:[e.jsxs("div",{className:"view-toggle",children:[e.jsx("button",{className:`view-toggle-btn${M==="list"?" active":""}`,onClick:()=>kt("list"),title:a("agents.listView","List view"),"aria-label":a("agents.listView","List view"),"aria-pressed":M==="list",children:e.jsx(sa,{size:16})}),e.jsx("button",{className:`view-toggle-btn${M==="board"?" active":""}`,onClick:()=>kt("board"),title:a("agents.boardView","Board view"),"aria-label":a("agents.boardView","Board view"),"aria-pressed":M==="board",children:e.jsx(tt,{size:16})}),e.jsx("button",{className:`view-toggle-btn${M==="org"?" active":""}`,onClick:()=>kt("org"),title:a("agents.orgChartView","Org Chart view"),"aria-label":a("agents.orgChartView","Org Chart view"),"aria-pressed":M==="org",children:e.jsx(aa,{size:16})})]}),e.jsxs("div",{className:"agents-view-primary-actions",children:[e.jsx("button",{ref:Y,className:`btn-icon agent-controls-trigger${ve?" agent-controls-trigger--active":""}`,onClick:()=>W(t=>!t),title:a("agents.controls","Controls"),"aria-label":a("agents.controls","Controls"),"aria-haspopup":"dialog","aria-expanded":ve,"aria-controls":De,children:e.jsx(ws,{size:16})}),e.jsx("button",{className:"btn-icon",onClick:()=>void N(),title:a("agents.refresh","Refresh"),"aria-label":a("agents.refresh","Refresh"),children:e.jsx(et,{size:16,className:$?"spin":void 0})}),!x&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{K(!0),W(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(zt,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),W(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(na,{size:16}),a("agents.newAgent","New Agent")]})]}),ve&&e.jsxs("div",{ref:Re,id:De,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(is,{size:14}),e.jsxs("select",{className:"agent-state-filter-select",value:j,onChange:t=>R(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")]})]})}),x&&e.jsxs("div",{className:"agent-controls-mobile-actions",children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{K(!0),W(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(zt,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),W(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(na,{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:Ia,onClick:()=>{W(!1),Bt("paused")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(At,{}),e.jsx("span",{children:a("agents.pauseAllAgents","Pause All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:Ae?a("agents.loadingEligibility","Loading eligibility…"):Le===0?a("agents.noAgentsToPauseHint","No active or running project agents to pause"):a("agents.pauseCountHint",{count:Le,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:Fa,onClick:()=>{W(!1),Bt("active")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(pt,{}),e.jsx("span",{children:a("agents.resumeAllAgents","Resume All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:Ae?a("agents.loadingEligibility","Loading eligibility…"):Ie===0?a("agents.noAgentsToResumeHint","No paused project agents to resume"):a("agents.resumeCountHint",{count:Ie,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:i,onChange:t=>{const o=Number(t.target.value);Vt(Number.isFinite(o)&&o>0?o:1)},disabled:He}),e.jsxs("span",{className:"heartbeat-multiplier-value",children:["×",i.toFixed(1)]}),e.jsx("select",{className:"heartbeat-multiplier-preset",value:String(Pt.reduce((t,o)=>Math.abs(o-i)<Math.abs(t-i)?o:t,Pt[0])),onChange:t=>{const o=Number(t.target.value);Vt(Number.isFinite(o)&&o>0?o:1)},disabled:He,"aria-label":a("agents.heartbeatSpeedPreset","Heartbeat speed preset"),children:Pt.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(Ms,{agents:nt})]})]})]})]}),e.jsx(Os,{isOpen:B,onClose:()=>{A(!1),y(null)},onCreated:()=>{A(!1),y(null),N()},projectId:d,prefillDraft:F,agentOnboardingEnabled:p,existingAgents:C,onPrefillDraft:y}),e.jsx(Ds,{isOpen:D,onClose:()=>K(!1),onImported:()=>void N(),projectId:d}),e.jsx(zs,{stats:S,activeAgents:ja,projectId:d,isOpen:Oe,onToggle:()=>J(t=>!t),onSelectAgent:Aa,onOpenTaskLogs:b}),M==="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(ha,{inline:!0,showInlineBackButton:!1,agentId:L,projectId:d,onClose:Ue,addToast:n,onChildClick:Gt,initialTab:le,initialRunId:ce,preferActiveRun:k},L)})]}):Jt?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(et,{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:[x?e.jsxs("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:[Zt(),Xt()]}):e.jsxs("div",{className:"agent-org-chart-toolbar",children:[Zt(),e.jsx("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:Xt()})]}),e.jsx("div",{ref:ge,className:"agent-org-chart-viewport","data-testid":"agent-org-chart-viewport",tabIndex:0,role:"region","aria-label":a("agents.orgChartCanvas","Org chart canvas"),onWheel:Ma,onPointerDown:Ea,onPointerMove:Pa,onPointerUp:qt,onPointerCancel:qt,onKeyDown:_a,"data-panning":U?"true":"false",children:e.jsxs("div",{ref:Fe,className:`agent-org-chart-canvas agent-org-chart-canvas--zoom-${Math.round((z.scale??1)*100)}`,"data-panning":U?"true":"false",style:{transform:`translate(${z.x}px, ${z.y}px) scale(${z.scale})`},children:[e.jsx("div",{className:`agent-org-chart${ut==="vertical"?" agent-org-chart--vertical":""}`,"data-testid":"agent-org-chart","data-layout-mode":ut,children:q?e.jsxs("div",{className:"agent-org-chart__loading",role:"status","aria-live":"polite",children:[e.jsx(et,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingOrgChart","Loading org chart...")})]}):We.length===0?e.jsx(Tt,{onCtaClick:it}):(ze.current=[],We.map(t=>e.jsx(fa,{node:t,onSelect:wa,getHealthStatus:Ct,selectedAgentId:se,registerNodeElement:Ta,linksRef:ze},t.agent.id)))}),e.jsx(Js,{links:ze.current,nodeElements:Te.current,canvasRef:Fe,viewportRef:ge,layoutMode:ut,transform:z})]})})]})})}):e.jsxs("div",{className:"agents-split-layout",children:[e.jsx("div",{className:`agents-split-sidebar${ne?" agents-split-sidebar--hidden-mobile":""}`,children:e.jsx("div",{className:"agents-view-content",children:Jt?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(et,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):M==="board"?e.jsx("div",{className:"agent-board",children:nt.length===0?e.jsx(Tt,{onCtaClick:it}):nt.map(t=>{const o=Ct(t),u=$t(t,o,a),m=Ht(t.state),w=Ot("agent-board-card",t.state);return e.jsxs("div",{className:`agent-board-card ${w}${L===t.id?" agent-card--selected":""}`,children:[e.jsxs("div",{className:"agent-board-clickable",onClick:()=>ue(t.id),role:"button",tabIndex:0,onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.key===" "&&T.preventDefault(),ue(t.id))},children:[e.jsxs("div",{className:"agent-board-header",children:[e.jsx("span",{className:"agent-board-icon",children:e.jsx(ft,{agent:t,size:20})}),e.jsx("span",{className:"agent-board-badge badge text-secondary",children:Kt(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:o.color},title:u.title,children:[o.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 Wt(t.id,t.name),title:a("agents.delete","Delete"),children:e.jsx(la,{size:14})})})]},t.id)})}):e.jsx("div",{className:"agent-list",children:nt.length===0?e.jsx(Tt,{onCtaClick:it}):nt.map(t=>{const o=Ct(t),u=$t(t,o,a),m=Ht(t.state),w=Ot("agent-card",t.state),T=_t(t.runtimeConfig?.heartbeatIntervalMs),re=rs(T),ae=Nt===t.id;return e.jsxs("div",{className:`agent-card agent-card--clickable ${w}${L===t.id?" agent-card--selected":""}`,onClick:h=>{const O=h.target;if(O===h.currentTarget){ue(t.id);return}const te=O.closest('button, select, input, [role="button"]');te&&te!==h.currentTarget||ue(t.id)},role:"button",tabIndex:0,onKeyDown:h=>{h.target===h.currentTarget&&(h.key==="Enter"||h.key===" ")&&(h.key===" "&&h.preventDefault(),ue(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:[at===t.id?e.jsx("select",{ref:Xe,className:"select agent-role-select",value:t.role,onChange:h=>void Na(t.id,h.target.value),onKeyDown:h=>ya(h,t.id),onBlur:()=>ye(null),autoFocus:!0,children:c.map(h=>e.jsxs("option",{value:h.value,children:[h.icon," ",h.label]},h.value))}):e.jsx("span",{className:"agent-icon agent-icon--clickable",onClick:h=>{h.stopPropagation(),ye(t.id)},title:a("agents.clickToChangeRole","Click to change role"),role:"button",tabIndex:0,onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.stopPropagation(),ye(t.id))},children:e.jsx(ft,{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(pa,{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:o.color},title:u.title,children:[o.icon,u.label?` ${u.label}`:""]}),e.jsx("span",{className:"badge text-secondary",children:Kt(t.role)}),(t.pendingApprovalCount??0)>0?e.jsxs("span",{className:"badge agent-approval-badge",title:a("agents.pendingApprovals","Pending approvals"),children:[e.jsx("span",{className:"status-dot status-dot--pending"}),t.pendingApprovalCount]}):null,(()=>{const h=La(t);if(h.length===0)return null;const O=h.slice(0,2),te=h.length-2;return e.jsxs(e.Fragment,{children:[O.map(G=>e.jsx("span",{className:"badge badge-skill",title:G,children:js(G)},G)),te>0&&e.jsxs("span",{className:"badge badge-skill",children:["+",te]})]})})()]})]}),e.jsxs("div",{className:"agent-card-body",children:[t.state==="error"&&t.lastError?e.jsx(os,{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:t.taskId})]}),e.jsxs("div",{className:"agent-heartbeat-control",children:[e.jsx("span",{className:"text-secondary",children:a("agents.heartbeat","Heartbeat:")}),Ve===t.id?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"input agent-heartbeat-custom-input",value:st[t.id]??"",onChange:h=>we(O=>({...O,[t.id]:h.target.value})),onKeyDown:h=>{h.key==="Enter"?Ut(t):h.key==="Escape"&&(Ce(null),we(O=>{const te={...O};return delete te[t.id],te}))},disabled:ae,"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 Ut(t),disabled:ae,title:a("agents.saveCustomInterval","Save custom interval"),children:a("agents.save","Save")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>{Ce(null),we(h=>{const O={...h};return delete O[t.id],O})},disabled:ae,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:h=>{const O=h.target.value;O==="__custom__"?Ca(t):ka(t,Number(O))},disabled:ae,"aria-label":a("agents.setHeartbeatAria","Set heartbeat interval for {{name}}",{name:t.name}),children:[re.map(h=>e.jsx("option",{value:h.value,children:h.label},h.value)),cs.some(h=>h.value===T)&&e.jsx("option",{value:"__custom__",children:a("agents.customHeartbeatOption","Custom...")})]})}),ae&&e.jsx("span",{className:"agent-heartbeat-saving text-secondary",children:a("agents.saving","Saving…")}),t.lastHeartbeatAt&&(()=>{const h=new Date(t.lastHeartbeatAt),O=new Date(h.getTime()+T),te=t.state==="active"||t.state==="running";return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"agent-heartbeat-last text-secondary",title:h.toLocaleString(),children:a("agents.lastHeartbeatAt","Last: {{time}}",{time:h.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})}),te&&e.jsx("span",{className:"agent-heartbeat-next text-secondary",title:O.toLocaleString(),children:a("agents.nextHeartbeatAt","Next: {{time}}",{time:O.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})})]})})()]})]}),e.jsxs("div",{className:"agent-card-actions",children:[e.jsxs("div",{className:"agent-card-actions-group agent-card-actions-group--primary",children:[t.state==="idle"&&e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"active"),disabled:Se.has(t.id),title:a("agents.activate","Activate"),children:[e.jsx(pt,{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 Ra(t.id,t.name),disabled:Se.has(t.id),title:a("agents.runNow","Run Now"),"aria-label":a("agents.runNowAria","Run now for {{name}}",{name:t.name}),children:[e.jsx(tt,{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:Se.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(At,{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:Se.has(t.id),title:a("agents.resume","Resume"),children:[e.jsx(pt,{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:()=>ue(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(tt,{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:Se.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(At,{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:Se.has(t.id),title:a("agents.retry","Retry"),children:[e.jsx(pt,{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:()=>ue(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(ds,{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 Wt(t.id,t.name),title:a("agents.delete","Delete"),children:[e.jsx(la,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.delete","Delete")})]})]})]})]},t.id)})})})}),e.jsx("div",{className:`agents-split-detail${x&&!L?" agents-split-detail--hidden-mobile":""}`,children:L?e.jsx(s.Suspense,{fallback:null,children:e.jsx(ha,{inline:!0,showInlineBackButton:x,agentId:L,projectId:d,onClose:Ue,addToast:n,onChildClick:Gt,initialTab:le,initialRunId:ce,preferActiveRun:k,onMutationSuccess:Sa},L)}):e.jsxs("div",{className:"agents-detail-empty-state",children:[e.jsx(It,{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{cn as AgentsView};
29
+ Agent instructions go here...`),value:j,onChange:r=>{x("paste"),S([]),R(r.target.value),H(null)},rows:8,"aria-label":c("agents.manifestContent","Manifest content")})]}),e.jsx("p",{className:"agent-import-file-hint",children:c("agents.currentInput","Current input: {{method}}",{method:l})}),ce&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),ce]})]}),v==="preview"&&e.jsxs("div",{className:"agent-import-preview",children:[e.jsxs("div",{className:"agent-import-company",children:[e.jsx("span",{className:"agent-import-company-label",children:c("agents.company","Company")}),e.jsx("span",{className:"agent-import-company-name",children:$})]}),y.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:y.map((r,f)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:r})]},f))}),e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Lt,{size:14}),e.jsx("span",{children:c("agents.agentsFound","{{count}} agent{{plural}} found",{count:I.length,plural:I.length!==1?"s":""})})]}),I.length>0&&e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L(I.map(r=>r.name)),children:c("agents.selectAllAgents","Select all agents")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L([]),children:c("agents.clearAgents","Clear agents")})]}),I.length>0?e.jsx("div",{className:"agent-import-agent-list",children:I.map((r,f)=>e.jsxs("div",{className:"agent-import-agent-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":c("agents.selectAgent","Select agent {{name}}",{name:r.name}),checked:K.includes(r.name),onChange:()=>Te(r.name)})}),e.jsx("span",{className:"agent-import-agent-icon",children:r.icon||"🤖"}),e.jsxs("div",{className:"agent-import-agent-details",children:[e.jsx("span",{className:"agent-import-agent-name",children:r.name}),e.jsxs("span",{className:"agent-import-agent-meta",children:[r.title&&e.jsxs("span",{className:"agent-import-agent-title",children:[r.title," · "]}),e.jsx("span",{className:"agent-import-agent-role",children:r.role}),r.reportsTo&&e.jsxs("span",{className:"agent-import-agent-reports",children:[" · reports to ",r.reportsTo]}),r.skills&&r.skills.length>0&&e.jsxs("span",{className:"agent-import-agent-model",children:[" · skills: ",r.skills.join(", ")]})]}),r.instructionsText&&e.jsxs("span",{className:"agent-import-agent-instructions",children:[r.instructionsText.slice(0,100),r.instructionsText.length>100?"...":""]})]})]},f))}):e.jsx("p",{className:"agent-import-empty",children:c("agents.noAgentsFound","No agents found in the manifest.")}),A.length>0&&e.jsxs("div",{className:"agent-import-skills-section",children:[e.jsxs("div",{className:"agent-import-count",children:[e.jsx(Lt,{size:14}),e.jsx("span",{children:c("agents.skillsFound","{{count}} skill{{plural}} found",{count:A.length,plural:A.length!==1?"s":""})})]}),e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>se(A.map(r=>r.name)),children:c("agents.selectAllSkills","Select all skills")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>se([]),children:c("agents.clearSkills","Clear skills")})]}),e.jsx("div",{className:"agent-import-skill-list",children:A.map((r,f)=>e.jsxs("div",{className:"agent-import-skill-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":c("agents.selectSkill","Select skill {{name}}",{name:r.name}),checked:X.includes(r.name),onChange:()=>ze(r.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:r.name}),r.description&&e.jsx("span",{className:"agent-import-skill-description",children:r.description})]})]},`${r.name}-${f}`))})]}),M&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),M]})]}),v==="result"&&k&&e.jsxs("div",{className:"agent-import-result",children:[e.jsx("div",{className:"agent-import-result-icon",children:e.jsx(vt,{size:32})}),e.jsx("h3",{className:"agent-import-result-title",children:c("agents.importComplete","Import Complete")}),e.jsxs("p",{className:"agent-import-result-company",children:[c("agents.from","From")," ",e.jsx("strong",{children:k.companyName??"Unknown"})]}),e.jsxs("div",{className:"agent-import-result-stats",children:[k.created.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:c("agents.resultCreated","{{count}} created",{count:k.created.length})})}),k.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.resultSkipped","{{count}} skipped (already exist)",{count:k.skipped.length})})}),k.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:c("agents.resultErrors","{{count}} error{{plural}}",{count:k.errors.length,plural:k.errors.length!==1?"s":""})})})]}),k.created.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:k.created.map((r,f)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(vt,{size:12}),e.jsx("span",{children:r.name})]},f))}),k.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:k.errors.map((r,f)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ea,{size:12}),e.jsxs("span",{children:[r.name,": ",r.error]})]},f))}),k.warnings&&k.warnings.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:k.warnings.map((r,f)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:r})]},f))}),k.skills&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-result-divider"}),e.jsx("h4",{className:"agent-import-result-section-title",children:c("agents.skills","Skills")}),e.jsxs("div",{className:"agent-import-result-stats",children:[k.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:c("agents.skillsImported","{{count}} skill{{plural}} imported",{count:k.skills.imported.length,plural:k.skills.imported.length!==1?"s":""})})}),k.skills.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.skillsSkipped","{{count}} skill{{plural}} skipped (already exist)",{count:k.skills.skipped.length,plural:k.skills.skipped.length!==1?"s":""})})}),k.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:c("agents.skillsErrors","{{count}} skill{{plural}} error{{pluralError}}",{count:k.skills.errors.length,plural:k.skills.errors.length!==1?"s":"",pluralError:k.skills.errors.length!==1?"s":""})})}),k.skills.imported.length===0&&k.skills.skipped.length===0&&k.skills.errors.length===0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:c("agents.noSkillsInPackage","No skills in package")})})]}),k.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:k.skills.imported.map((r,f)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(vt,{size:12}),e.jsx("span",{children:r.name})]},f))}),k.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:k.skills.errors.map((r,f)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ea,{size:12}),e.jsxs("span",{children:[r.name,": ",r.error]})]},f))})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[v==="preview"&&e.jsx("button",{className:"btn",onClick:()=>g("input"),disabled:le,children:c("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:_e,disabled:le,children:v==="result"?c("agents.close","Close"):c("agents.cancel","Cancel")}),v==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void $e(),disabled:he||(l==="directory"?C.length===0:l==="browse"?!Z:!j.trim()),children:he?e.jsxs(e.Fragment,{children:[e.jsx(St,{size:14,className:"spin"}),c("agents.parsing","Parsing...")]}):c("agents.preview","Preview")}),v==="preview"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void z(),disabled:le||E===0&&U===0,children:le?e.jsxs(e.Fragment,{children:[e.jsx(St,{size:14,className:"spin"}),Fe]}):c("agents.importButton","Import {{label}}",{label:ge})})]})]})}):null}const Et="fn-agent-org-chart-layout";function ma(n){return n==="auto"||n==="horizontal"||n==="vertical"}const Vs=768,Bs={nodeWidth:220,siblingGap:24,rootGap:24,chartPadding:24},Ws={nodeWidth:160,siblingGap:8,rootGap:8,chartPadding:8};function ba(n){return n.children.length===0?1:n.children.reduce((d,b)=>d+ba(b),0)}function Us(n){return n<=Vs?Ws:Bs}function Gs(n,d){const b=ba(n);return b*d.nodeWidth+Math.max(0,b-1)*d.siblingGap}function Ks(n,d=Number.POSITIVE_INFINITY){const b=Us(d);if(n.length===0)return b.nodeWidth;const a=n.map(v=>Gs(v,b)).reduce((v,g)=>v+g,0),c=Math.max(0,n.length-1)*b.rootGap;return a+c+b.chartPadding*2}function Ys(n){const d=n.preference??"auto";if(d!=="auto")return d;const b=Number.isFinite(n.availableWidth)&&n.availableWidth>0?n.availableWidth:0;return b===0||n.tree.length<=1?"horizontal":Ks(n.tree,b)>b?"vertical":"horizontal"}const ha=s.lazy(()=>gs(()=>import("./AgentDetailView-DxV8pFHX.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])).then(n=>({default:n.AgentDetailView})));function Xs(n){return[{value:"triage",label:n("agents.roleTriage","Triage"),icon:"⊕"},{value:"executor",label:n("agents.roleExecutor","Executor"),icon:"▶"},{value:"reviewer",label:n("agents.roleReviewer","Reviewer"),icon:"⊙"},{value:"merger",label:n("agents.roleMerger","Merger"),icon:"⊞"},{value:"scheduler",label:n("agents.roleScheduler","Scheduler"),icon:"◷"},{value:"engineer",label:n("agents.roleEngineer","Engineer"),icon:"⎔"},{value:"custom",label:n("agents.roleCustom","Custom"),icon:"✦"}]}const Pt=[.1,.25,.5,1,2,3,5,10],qs=.25,Zs=3,bt=16,Qe=32;function Ht(n){switch(n){case"running":return"agent-badge--running";case"active":return"agent-badge--active";case"paused":return"agent-badge--paused";case"error":return"agent-badge--error";case"idle":default:return"agent-badge--idle"}}function Ot(n,d){switch(d){case"running":return`${n}--running`;case"active":return`${n}--active`;case"paused":return`${n}--paused`;case"error":return`${n}--error`;case"idle":default:return`${n}--idle`}}function va(n){return n.children.length===0?1:n.children.reduce((d,b)=>d+va(b),0)}function $t(n,d,b){return n.state==="error"?{title:void 0,label:b("agents.healthError","Error")}:{title:d.reason??d.label,label:d.stateDerived?null:d.label}}function fa({node:n,onSelect:d,getHealthStatus:b,selectedAgentId:p,registerNodeElement:a,linksRef:c}){const{t:v}=Me("app"),{agent:g,children:l}=n,x=b(g),j=$t(g,x,v),R=Ht(g.state),C=Ot("org-chart-node-card",g.state),S=va(n),$={"--org-chart-subtree-leaves":String(S)};return e.jsxs("div",{className:`org-chart-node${l.length>0?" org-chart-node--has-children":""}`,style:$,children:[e.jsxs("div",{ref:N=>a(g.id,N),"data-agent-id":g.id,className:`org-chart-node-card ${C}${p===g.id?" agent-card--selected":""}`,onClick:()=>d(g.id),role:"button",tabIndex:0,onKeyDown:N=>{(N.key==="Enter"||N.key===" ")&&(N.key===" "&&N.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(ft,{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 ${R}`,children:g.state}),e.jsxs("span",{className:"org-chart-node__health",style:{color:x.color},title:j.title,children:[x.icon,j.label&&e.jsx("span",{className:"text-secondary",children:j.label})]})]})]}),l.length>0&&e.jsx("div",{className:"org-chart-children",role:"group","aria-label":v("agents.orgChartEmployees","{{name}} employees",{name:g.name}),children:l.map(N=>(c.current.push({parentId:g.id,childId:N.agent.id}),e.jsx(fa,{node:N,onSelect:d,getHealthStatus:b,selectedAgentId:p,registerNodeElement:a,linksRef:c},N.agent.id)))})]})}function Js({links:n,nodeElements:d,canvasRef:b,viewportRef:p,layoutMode:a,transform:c}){const[v,g]=s.useState([]);return s.useLayoutEffect(()=>{const l=b.current,x=p.current;if(!l||!x||n.length===0){g([]);return}const j=()=>{const C=l.getBoundingClientRect(),S=n.flatMap(({parentId:$,childId:N})=>{const I=d.get($),B=d.get(N);if(!I||!B)return[];const A=I.getBoundingClientRect(),F=B.getBoundingClientRect(),y=(A.left-C.left)/c.scale,D=(A.top-C.top)/c.scale,K=(F.left-C.left)/c.scale,L=(F.top-C.top)/c.scale;if(a==="vertical"){const ie=y,ce=D+A.height/c.scale/2,H=K,k=L+F.height/c.scale/2,pe=ie-(ie-H)/2;return[`M ${ie} ${ce} L ${pe} ${ce} L ${pe} ${k} L ${H} ${k}`]}const X=y+A.width/c.scale/2,se=D+A.height/c.scale,he=K+F.width/c.scale/2,ne=L,le=se+(ne-se)/2;return[`M ${X} ${se} L ${X} ${le} L ${he} ${le} L ${he} ${ne}`]});g(S)};j();const R=new ResizeObserver(j);return R.observe(l),R.observe(x),d.forEach(C=>R.observe(C)),()=>R.disconnect()},[b,a,n,d,c.scale,p]),e.jsx("svg",{className:"agent-org-chart-connectors","aria-hidden":"true",children:v.map((l,x)=>e.jsx("path",{d:l},`${x}-${l}`))})}function cn({addToast:n,projectId:d,onOpenTaskLogs:b,agentOnboardingEnabled:p=!1}){const{t:a}=Me("app"),c=Xs(a),[v,g]=s.useState(!1),x=Ja()==="mobile",[j,R]=s.useState("all"),{agents:C,stats:S,isLoading:$,loadAgents:N,refreshAgents:I}=Qa(d,{filterState:j,showSystemAgents:v}),[B,A]=s.useState(!1),[F,y]=s.useState(null),[D,K]=s.useState(!1),[L,X]=s.useState(null),[se,he]=s.useState(null),ne=x&&!!L,[le,ie]=s.useState("dashboard"),[ce,H]=s.useState(null),[k,pe]=s.useState(!1),[M,oe]=s.useState(()=>{if(typeof window>"u")return"list";const t=ht("fn-agent-view",d);return t==="list"||t==="board"||t==="org"?t:"list"}),[de,Ee]=s.useState(()=>{if(typeof window>"u")return"auto";const t=ht(Et,d);return ma(t)?t:"auto"}),[xe,fe]=s.useState([]),[q,Pe]=s.useState(!1),[Z,be]=s.useState(0),[ve,W]=s.useState(!1),[Oe,J]=s.useState(!1),[Ne,Ke]=s.useState(!1),[Ae,_e]=s.useState(!1),[Le,Ye]=s.useState(0),[Ie,$e]=s.useState(0),[z,E]=s.useState({scale:1,x:0,y:0}),[U,je]=s.useState(!1),Re=s.useRef(null),ge=s.useRef(null),Fe=s.useRef(null),Te=s.useRef(new Map),ze=s.useRef([]),r=s.useRef(new Map),f=s.useRef(null),P=s.useRef(null),V=s.useRef(!1),{confirm:Q}=es(),Y=s.useRef(null),De=s.useId();s.useEffect(()=>{const t=ht("fn-agent-view",d);if(t==="list"||t==="board"||t==="org"){oe(t);return}oe("list")},[d]),s.useEffect(()=>{ta("fn-agent-view",M,d)},[M,d]),s.useEffect(()=>{const t=ht(Et,d);Ee(ma(t)?t:"auto")},[d]),s.useEffect(()=>{ta(Et,de,d)},[de,d]);const[at,ye]=s.useState(null),Xe=s.useRef(null),[Nt,ke]=s.useState(null),[Ve,Ce]=s.useState(null),[st,we]=s.useState({}),[i,_]=s.useState(1),[He,Be]=s.useState(!1),[Se,Dt]=s.useState(new Set),[yt,qe]=s.useState(new Map),ct=s.useRef(!0);s.useEffect(()=>(ct.current=!0,()=>{ct.current=!1}),[]),s.useEffect(()=>{ts(d).then(t=>{ct.current&&_(t.heartbeatMultiplier??1)}).catch(()=>{})},[d]);const Vt=s.useCallback(async t=>{const o=Number.isFinite(t)&&t>0?t:1;_(o),Be(!0);try{await as({heartbeatMultiplier:o},d),n(a("agents.heartbeatSpeedSet","Heartbeat speed set to ×{{value}}",{value:o.toFixed(1)}),"success")}catch(u){n(a("agents.heartbeatSpeedSaveFailed","Failed to save heartbeat multiplier: {{error}}",{error:me(u)}),"error")}finally{ct.current&&Be(!1)}},[d,n]),dt=s.useMemo(()=>yt.size===0?C:C.map(t=>{const o=yt.get(t.id);return o?{...t,state:o}:t}),[C,yt]),nt=s.useMemo(()=>dt.filter(t=>v||!ot(t)),[dt,v]),ja=s.useMemo(()=>dt.filter(t=>t.state!=="active"&&t.state!=="running"?!1:v||!ot(t)),[dt,v]),We=s.useMemo(()=>{if(v)return xe;const t=o=>ot(o.agent)?null:{...o,children:o.children.map(t).filter(u=>u!==null)};return xe.map(t).filter(o=>o!==null)},[xe,v]);s.useEffect(()=>{if(M!=="org")return;const t=ge.current;if(!t)return;const o=()=>{be(t.clientWidth)};o();const u=typeof ResizeObserver<"u"?new ResizeObserver(o):null;return u?.observe(t),window.addEventListener("resize",o),()=>{u?.disconnect(),window.removeEventListener("resize",o)}},[M,We.length]),s.useEffect(()=>{if(M!=="org")return;let t=!1;return Pe(!0),ss(d,{includeEphemeral:v}).then(o=>{t||fe(o)}).catch(o=>{t||(n(a("agents.orgChartLoadFailed","Failed to load org chart: {{error}}",{error:me(o)}),"error"),fe([]))}).finally(()=>{t||Pe(!1)}),()=>{t=!0}},[M,d,v,n]),s.useEffect(()=>{const t=setInterval(()=>{N()},3e4);return()=>{clearInterval(t)}},[N]),s.useEffect(()=>{if(!ve)return;let t=!1;_e(!0),Ft(void 0,d).then(m=>{if(t)return;const w=m.filter(T=>!ot(T));Ye(w.filter(T=>T.state==="active"||T.state==="running").length),$e(w.filter(T=>T.state==="paused").length)}).catch(m=>{t||(Ye(0),$e(0),n(a("agents.bulkActionsLoadFailed","Failed to load bulk agent actions: {{error}}",{error:me(m)}),"error"))}).finally(()=>{t||_e(!1)});const o=m=>{const w=m.target;w&&(Re.current?.contains(w)||Y.current?.contains(w)||W(!1))},u=m=>{m.key==="Escape"&&(W(!1),Y.current?.focus())};return document.addEventListener("mousedown",o),document.addEventListener("touchstart",o),document.addEventListener("keydown",u),()=>{t=!0,document.removeEventListener("mousedown",o),document.removeEventListener("touchstart",o),document.removeEventListener("keydown",u)}},[n,ve,d]);const Bt=async t=>{if(!Ne){Ke(!0);try{const u=(await Ft(void 0,d)).filter(G=>!ot(G)),m=u.filter(G=>t==="paused"?G.state==="active"||G.state==="running":G.state==="paused"),w=u.length-m.length;if(m.length===0){n(t==="paused"?a("agents.noAgentsToPause","No agents eligible to pause"):a("agents.noAgentsToResume","No agents eligible to resume"),"error");return}if(!await Q({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 re=await Promise.allSettled(m.map(G=>ia(G.id,t,d))),ae=re.map((G,mt)=>({result:G,agent:m[mt]})).filter(G=>G.result.status==="rejected"),h=re.length-ae.length,O=ae.length,te=t==="paused"?a("agents.pausedSummary",{count:h,skipped:w,defaultValue_one:"Paused {{count}} agent; skipped {{skipped}}",defaultValue_other:"Paused {{count}} agents; skipped {{skipped}}"}):a("agents.resumedSummary",{count:h,skipped:w,defaultValue_one:"Resumed {{count}} agent; skipped {{skipped}}",defaultValue_other:"Resumed {{count}} agents; skipped {{skipped}}"});if(O>0){const G=ae.slice(0,3).map(({agent:mt,result:za})=>`${mt.name||mt.id}: ${me(za.reason)}`).join("; ");n(`${te}; failed ${O}${G?` (${G})`:""}`,"error")}else n(te,"success");await N()}catch(o){n(t==="paused"?a("agents.pauseAgentsFailed","Failed to pause agents: {{error}}",{error:me(o)}):a("agents.resumeAgentsFailed","Failed to resume agents: {{error}}",{error:me(o)}),"error")}finally{Ke(!1)}}},lt=async(t,o)=>{if(!Se.has(t)){Dt(u=>new Set(u).add(t)),qe(u=>{const m=new Map(u);return m.set(t,o),m});try{await ia(t,o,d),n(a("agents.stateUpdated","Agent state updated to {{state}}",{state:o}),"success"),await N(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const w=new Map(m);return w.delete(t),w}),n(a("agents.stateUpdateFailed","Failed to update state: {{error}}",{error:me(u)}),"error")}finally{Dt(u=>{const m=new Set(u);return m.delete(t),m})}}},Wt=async(t,o)=>{if(await Q({title:a("agents.deleteTitle","Delete Agent"),message:a("agents.deleteConfirm",'Delete agent "{{name}}"? This cannot be undone.',{name:o}),danger:!0}))try{await ms(t,d),n(a("agents.deleted",'Agent "{{name}}" deleted',{name:o}),"success"),await N()}catch(m){n(a("agents.deleteFailed","Failed to delete agent: {{error}}",{error:me(m)}),"error")}},Na=async(t,o)=>{const u=C.find(m=>m.id===t);if(u){if(u.role===o){ye(null);return}try{await xt(t,{role:o},d),n(a("agents.roleUpdated","Agent role updated to {{role}}",{role:c.find(m=>m.value===o)?.label??o}),"success"),ye(null),N()}catch(m){n(a("agents.roleUpdateFailed","Failed to update role: {{error}}",{error:me(m)}),"error")}}},ya=(t,o)=>{t.key==="Escape"&&ye(null)},ka=async(t,o)=>{Ve===t.id&&(Ce(null),we(u=>{const m={...u};return delete m[t.id],m})),ke(t.id);try{await xt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:o}},d),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ra(o),name:t.name}),"success"),N()}catch(u){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(u)}),"error")}finally{ke(null)}},Ut=async t=>{const o=st[t.id]??"";if(o.trim()===""){n(a("agents.heartbeatEnterMinutes","Please enter a heartbeat interval in minutes"),"error");return}const u=Number(o);if(isNaN(u)){n(a("agents.heartbeatMustBeNumber","Heartbeat interval must be a valid number"),"error");return}if(u<=0){n(a("agents.heartbeatMustBePositive","Heartbeat interval must be greater than 0"),"error");return}if(u>=1&&u<5){ke(t.id);try{await xt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:hs}},d),n(a("agents.heartbeatClampedToMin",{count:u,defaultValue_one:"Heartbeat interval set to 5 minutes (minimum). {{count}} minute was below the 5-minute minimum.",defaultValue_other:"Heartbeat interval set to 5 minutes (minimum). {{count}} minutes was below the 5-minute minimum."}),"success"),Ce(null),we(w=>{const T={...w};return delete T[t.id],T}),N()}catch(w){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(w)}),"error")}finally{ke(null)}return}const m=Math.round(u*6e4);ke(t.id);try{await xt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:m}},d),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ra(m),name:t.name}),"success"),Ce(null),we(w=>{const T={...w};return delete T[t.id],T}),N()}catch(w){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(w)}),"error")}finally{ke(null)}},Ca=t=>{const o=_t(t.runtimeConfig?.heartbeatIntervalMs),u=Math.round(o/6e4);Ce(t.id),we(m=>({...m,[t.id]:String(u)}))},ue=s.useCallback((t,o)=>{X(t),ie(o?.initialTab??"dashboard"),H(o?.initialRunId??null),pe(o?.preferActiveRun??!1)},[]),Ue=s.useCallback(()=>{X(null),ie("dashboard"),H(null),pe(!1)},[]),Gt=s.useCallback(t=>{ue(t)},[ue]),wa=s.useCallback(t=>{he(t),ue(t)},[ue]),Sa=s.useCallback(async({agentId:t,deleted:o})=>{await I(),o&&L===t&&Ue()},[I,L,Ue]),Aa=s.useCallback(t=>{ue(t),x&&J(!1)},[x,ue]),Ra=async(t,o)=>{qe(u=>{const m=new Map(u);return m.set(t,"running"),m});try{await ps(t,d,{source:"on_demand",triggerDetail:"Triggered from dashboard"}),n(a("agents.heartbeatRunStarted","Heartbeat run started for {{name}}",{name:o}),"success"),await N(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const w=new Map(m);return w.delete(t),w}),n(a("agents.heartbeatRunFailed","Failed to start heartbeat run: {{error}}",{error:me(u)}),"error")}},Ge=s.useCallback(t=>Math.min(Zs,Math.max(qs,t)),[]),ee=s.useCallback(t=>{const o=ge.current,u=Fe.current?.querySelector(".agent-org-chart");if(!o||!u)return{...t,scale:Ge(t.scale)};const m=Ge(t.scale),w=u.scrollWidth*m,T=u.scrollHeight*m,re=o.clientWidth,ae=o.clientHeight,h=Math.min(Qe,re-w-Qe),O=Qe,te=Math.min(Qe,ae-T-Qe),G=Qe;return{scale:m,x:Math.max(h,Math.min(O,t.x)),y:Math.max(te,Math.min(G,t.y))}},[Ge]),gt=s.useCallback((t,o,u)=>{const m=ge.current;m&&E(w=>{const T=Ge(t),re=m.getBoundingClientRect(),ae=o-re.left,h=u-re.top,O=(ae-w.x)/w.scale,te=(h-w.y)/w.scale;return ee({scale:T,x:ae-O*T,y:h-te*T})})},[Ge,ee]),Ze=s.useCallback(()=>{const t=ge.current,o=Fe.current?.querySelector(".agent-org-chart");if(!t||!o)return;const u=t.clientWidth,m=t.clientHeight,w=o.scrollWidth,T=o.scrollHeight;if(w<=0||T<=0)return;const re=Ge(Math.min(u/w,m/T,1)),ae=(u-w*re)/2,h=(m-T*re)/2;E(ee({scale:re,x:ae,y:h}))},[Ge,ee]),kt=s.useCallback(t=>{oe(t),t!=="org"&&E({scale:1,x:0,y:0}),x&&L&&Ue()},[Ue,x,L]),Kt=t=>c.find(o=>o.value===t)?.label??t,ut=s.useMemo(()=>Ys({tree:We,availableWidth:Z,preference:de}),[We,de,Z]),Yt=s.useCallback(t=>{Ee(t),E({scale:1,x:0,y:0})},[]);s.useEffect(()=>{E({scale:1,x:0,y:0}),V.current=!1},[d,ut]),s.useLayoutEffect(()=>{M!=="org"||q||We.length===0||V.current||(Ze(),V.current=!0)},[M,We.length,Ze,q]);const Ta=s.useCallback((t,o)=>{o?Te.current.set(t,o):Te.current.delete(t)},[]),Xt=s.useCallback(()=>e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>E(t=>ee({...t,scale:t.scale*.9})),"aria-label":a("agents.orgChartZoomOut","Zoom out org chart"),title:a("agents.zoomOut","Zoom out"),children:e.jsx(Ts,{size:16})}),e.jsxs("span",{className:"agent-org-chart-controls__zoom-label","aria-live":"polite",children:[Math.round(z.scale*100),"%"]}),e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>E(t=>ee({...t,scale:t.scale*1.1})),"aria-label":a("agents.orgChartZoomIn","Zoom in org chart"),title:a("agents.zoomIn","Zoom in"),children:e.jsx(As,{size:16})}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm agent-org-chart-controls__fit-btn",onClick:Ze,"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:()=>E(t=>ee({...t,x:0,y:0})),"aria-label":a("agents.orgChartCenter","Center org chart"),title:a("agents.orgChartCenter","Center org chart"),children:[e.jsx(ls,{size:16}),a("agents.center","Center")]})]}),[ee,Ze,z.scale]),Ma=s.useCallback(t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();const o=t.deltaY>0?.9:1.1;gt(z.scale*o,t.clientX,t.clientY)},[z.scale,gt]),Ea=s.useCallback(t=>{if(t.target.closest(".org-chart-node-card"))return;if(t.currentTarget.setPointerCapture?.(t.pointerId),r.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),r.current.size===1){f.current={x:t.clientX-z.x,y:t.clientY-z.y,pointerId:t.pointerId},je(!0);return}if(r.current.size===2){const u=Array.from(r.current.values()),m=u[0].x-u[1].x,w=u[0].y-u[1].y;P.current={distance:Math.hypot(m,w),scale:z.scale,centerX:(u[0].x+u[1].x)/2,centerY:(u[0].y+u[1].y)/2},f.current=null}},[z.scale,z.x,z.y]),Pa=s.useCallback(t=>{if(r.current.has(t.pointerId)){if(r.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),r.current.size>=2){const o=Array.from(r.current.values()),u=P.current;if(!u)return;const m=o[0].x-o[1].x,w=o[0].y-o[1].y,T=Math.hypot(m,w),re=u.scale*(T/u.distance);gt(re,u.centerX,u.centerY);return}!f.current||f.current.pointerId!==t.pointerId||E(o=>ee({...o,x:t.clientX-f.current.x,y:t.clientY-f.current.y}))}},[ee,gt]),qt=s.useCallback(t=>{r.current.delete(t.pointerId),r.current.size<2&&(P.current=null),r.current.size===0&&(f.current=null,je(!1))},[]),_a=s.useCallback(t=>{if(t.key==="ArrowLeft")E(o=>ee({...o,x:o.x+bt}));else if(t.key==="ArrowRight")E(o=>ee({...o,x:o.x-bt}));else if(t.key==="ArrowUp")E(o=>ee({...o,y:o.y+bt}));else if(t.key==="ArrowDown")E(o=>ee({...o,y:o.y-bt}));else if(t.key==="+"||t.key==="=")E(o=>ee({...o,scale:o.scale*1.1}));else if(t.key==="-")E(o=>ee({...o,scale:o.scale*.9}));else if(t.key==="0")Ze();else if(t.key==="Home")E({scale:1,x:0,y:0});else return;t.preventDefault()},[ee,Ze]),Zt=s.useCallback(()=>{const t=[{value:"horizontal",label:a("agents.layoutHorizontal","Horizontal"),icon:e.jsx(aa,{size:16}),ariaLabel:a("agents.layoutHorizontalAria","Horizontal layout")},{value:"vertical",label:a("agents.layoutVertical","Vertical"),icon:e.jsx(sa,{size:16}),ariaLabel:a("agents.layoutVerticalAria","Vertical layout")},{value:"auto",label:a("agents.layoutAuto","Auto"),icon:e.jsx(et,{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(o=>{const u=de===o.value;return e.jsxs("button",{type:"button",className:`btn-icon touch-target agent-org-chart-layout-toggle__button${u?" btn-icon--active":""}`,onClick:()=>Yt(o.value),"aria-pressed":u,"aria-label":o.ariaLabel,title:o.ariaLabel,"data-layout-value":o.value,children:[o.icon,e.jsx("span",{className:"agent-org-chart-layout-toggle__text",children:o.label})]},o.value)})})},[Yt,de]),La=t=>Array.isArray(t.metadata?.skills)?t.metadata.skills:[],Ct=t=>us(t),Ia=Ae||Ne||Le===0,Fa=Ae||Ne||Ie===0,Jt=$&&C.length===0,it=s.useCallback(()=>{A(!0)},[]);return e.jsxs("div",{className:"agents-view",children:[e.jsxs("div",{className:"agents-view-header",children:[e.jsxs("div",{className:"agents-view-title",children:[e.jsx(It,{size:24}),e.jsx("h2",{children:a("agents.title","Agents")})]}),e.jsxs("div",{className:"agents-view-controls",children:[e.jsxs("div",{className:"view-toggle",children:[e.jsx("button",{className:`view-toggle-btn${M==="list"?" active":""}`,onClick:()=>kt("list"),title:a("agents.listView","List view"),"aria-label":a("agents.listView","List view"),"aria-pressed":M==="list",children:e.jsx(sa,{size:16})}),e.jsx("button",{className:`view-toggle-btn${M==="board"?" active":""}`,onClick:()=>kt("board"),title:a("agents.boardView","Board view"),"aria-label":a("agents.boardView","Board view"),"aria-pressed":M==="board",children:e.jsx(tt,{size:16})}),e.jsx("button",{className:`view-toggle-btn${M==="org"?" active":""}`,onClick:()=>kt("org"),title:a("agents.orgChartView","Org Chart view"),"aria-label":a("agents.orgChartView","Org Chart view"),"aria-pressed":M==="org",children:e.jsx(aa,{size:16})})]}),e.jsxs("div",{className:"agents-view-primary-actions",children:[e.jsx("button",{ref:Y,className:`btn-icon agent-controls-trigger${ve?" agent-controls-trigger--active":""}`,onClick:()=>W(t=>!t),title:a("agents.controls","Controls"),"aria-label":a("agents.controls","Controls"),"aria-haspopup":"dialog","aria-expanded":ve,"aria-controls":De,children:e.jsx(ws,{size:16})}),e.jsx("button",{className:"btn-icon",onClick:()=>void N(),title:a("agents.refresh","Refresh"),"aria-label":a("agents.refresh","Refresh"),children:e.jsx(et,{size:16,className:$?"spin":void 0})}),!x&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{K(!0),W(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(zt,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),W(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(na,{size:16}),a("agents.newAgent","New Agent")]})]}),ve&&e.jsxs("div",{ref:Re,id:De,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(is,{size:14}),e.jsxs("select",{className:"agent-state-filter-select",value:j,onChange:t=>R(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")]})]})}),x&&e.jsxs("div",{className:"agent-controls-mobile-actions",children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{K(!0),W(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(zt,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),W(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(na,{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:Ia,onClick:()=>{W(!1),Bt("paused")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(At,{}),e.jsx("span",{children:a("agents.pauseAllAgents","Pause All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:Ae?a("agents.loadingEligibility","Loading eligibility…"):Le===0?a("agents.noAgentsToPauseHint","No active or running project agents to pause"):a("agents.pauseCountHint",{count:Le,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:Fa,onClick:()=>{W(!1),Bt("active")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(pt,{}),e.jsx("span",{children:a("agents.resumeAllAgents","Resume All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:Ae?a("agents.loadingEligibility","Loading eligibility…"):Ie===0?a("agents.noAgentsToResumeHint","No paused project agents to resume"):a("agents.resumeCountHint",{count:Ie,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:i,onChange:t=>{const o=Number(t.target.value);Vt(Number.isFinite(o)&&o>0?o:1)},disabled:He}),e.jsxs("span",{className:"heartbeat-multiplier-value",children:["×",i.toFixed(1)]}),e.jsx("select",{className:"heartbeat-multiplier-preset",value:String(Pt.reduce((t,o)=>Math.abs(o-i)<Math.abs(t-i)?o:t,Pt[0])),onChange:t=>{const o=Number(t.target.value);Vt(Number.isFinite(o)&&o>0?o:1)},disabled:He,"aria-label":a("agents.heartbeatSpeedPreset","Heartbeat speed preset"),children:Pt.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(Ms,{agents:nt})]})]})]})]}),e.jsx(Os,{isOpen:B,onClose:()=>{A(!1),y(null)},onCreated:()=>{A(!1),y(null),N()},projectId:d,prefillDraft:F,agentOnboardingEnabled:p,existingAgents:C,onPrefillDraft:y}),e.jsx(Ds,{isOpen:D,onClose:()=>K(!1),onImported:()=>void N(),projectId:d}),e.jsx(zs,{stats:S,activeAgents:ja,projectId:d,isOpen:Oe,onToggle:()=>J(t=>!t),onSelectAgent:Aa,onOpenTaskLogs:b}),M==="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(ha,{inline:!0,showInlineBackButton:!1,agentId:L,projectId:d,onClose:Ue,addToast:n,onChildClick:Gt,initialTab:le,initialRunId:ce,preferActiveRun:k},L)})]}):Jt?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(et,{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:[x?e.jsxs("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:[Zt(),Xt()]}):e.jsxs("div",{className:"agent-org-chart-toolbar",children:[Zt(),e.jsx("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:Xt()})]}),e.jsx("div",{ref:ge,className:"agent-org-chart-viewport","data-testid":"agent-org-chart-viewport",tabIndex:0,role:"region","aria-label":a("agents.orgChartCanvas","Org chart canvas"),onWheel:Ma,onPointerDown:Ea,onPointerMove:Pa,onPointerUp:qt,onPointerCancel:qt,onKeyDown:_a,"data-panning":U?"true":"false",children:e.jsxs("div",{ref:Fe,className:`agent-org-chart-canvas agent-org-chart-canvas--zoom-${Math.round((z.scale??1)*100)}`,"data-panning":U?"true":"false",style:{transform:`translate(${z.x}px, ${z.y}px) scale(${z.scale})`},children:[e.jsx("div",{className:`agent-org-chart${ut==="vertical"?" agent-org-chart--vertical":""}`,"data-testid":"agent-org-chart","data-layout-mode":ut,children:q?e.jsxs("div",{className:"agent-org-chart__loading",role:"status","aria-live":"polite",children:[e.jsx(et,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingOrgChart","Loading org chart...")})]}):We.length===0?e.jsx(Tt,{onCtaClick:it}):(ze.current=[],We.map(t=>e.jsx(fa,{node:t,onSelect:wa,getHealthStatus:Ct,selectedAgentId:se,registerNodeElement:Ta,linksRef:ze},t.agent.id)))}),e.jsx(Js,{links:ze.current,nodeElements:Te.current,canvasRef:Fe,viewportRef:ge,layoutMode:ut,transform:z})]})})]})})}):e.jsxs("div",{className:"agents-split-layout",children:[e.jsx("div",{className:`agents-split-sidebar${ne?" agents-split-sidebar--hidden-mobile":""}`,children:e.jsx("div",{className:"agents-view-content",children:Jt?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(et,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):M==="board"?e.jsx("div",{className:"agent-board",children:nt.length===0?e.jsx(Tt,{onCtaClick:it}):nt.map(t=>{const o=Ct(t),u=$t(t,o,a),m=Ht(t.state),w=Ot("agent-board-card",t.state);return e.jsxs("div",{className:`agent-board-card ${w}${L===t.id?" agent-card--selected":""}`,children:[e.jsxs("div",{className:"agent-board-clickable",onClick:()=>ue(t.id),role:"button",tabIndex:0,onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.key===" "&&T.preventDefault(),ue(t.id))},children:[e.jsxs("div",{className:"agent-board-header",children:[e.jsx("span",{className:"agent-board-icon",children:e.jsx(ft,{agent:t,size:20})}),e.jsx("span",{className:"agent-board-badge badge text-secondary",children:Kt(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:o.color},title:u.title,children:[o.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 Wt(t.id,t.name),title:a("agents.delete","Delete"),children:e.jsx(la,{size:14})})})]},t.id)})}):e.jsx("div",{className:"agent-list",children:nt.length===0?e.jsx(Tt,{onCtaClick:it}):nt.map(t=>{const o=Ct(t),u=$t(t,o,a),m=Ht(t.state),w=Ot("agent-card",t.state),T=_t(t.runtimeConfig?.heartbeatIntervalMs),re=rs(T),ae=Nt===t.id;return e.jsxs("div",{className:`agent-card agent-card--clickable ${w}${L===t.id?" agent-card--selected":""}`,onClick:h=>{const O=h.target;if(O===h.currentTarget){ue(t.id);return}const te=O.closest('button, select, input, [role="button"]');te&&te!==h.currentTarget||ue(t.id)},role:"button",tabIndex:0,onKeyDown:h=>{h.target===h.currentTarget&&(h.key==="Enter"||h.key===" ")&&(h.key===" "&&h.preventDefault(),ue(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:[at===t.id?e.jsx("select",{ref:Xe,className:"select agent-role-select",value:t.role,onChange:h=>void Na(t.id,h.target.value),onKeyDown:h=>ya(h,t.id),onBlur:()=>ye(null),autoFocus:!0,children:c.map(h=>e.jsxs("option",{value:h.value,children:[h.icon," ",h.label]},h.value))}):e.jsx("span",{className:"agent-icon agent-icon--clickable",onClick:h=>{h.stopPropagation(),ye(t.id)},title:a("agents.clickToChangeRole","Click to change role"),role:"button",tabIndex:0,onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.stopPropagation(),ye(t.id))},children:e.jsx(ft,{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(pa,{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:o.color},title:u.title,children:[o.icon,u.label?` ${u.label}`:""]}),e.jsx("span",{className:"badge text-secondary",children:Kt(t.role)}),(t.pendingApprovalCount??0)>0?e.jsxs("span",{className:"badge agent-approval-badge",title:a("agents.pendingApprovals","Pending approvals"),children:[e.jsx("span",{className:"status-dot status-dot--pending"}),t.pendingApprovalCount]}):null,(()=>{const h=La(t);if(h.length===0)return null;const O=h.slice(0,2),te=h.length-2;return e.jsxs(e.Fragment,{children:[O.map(G=>e.jsx("span",{className:"badge badge-skill",title:G,children:js(G)},G)),te>0&&e.jsxs("span",{className:"badge badge-skill",children:["+",te]})]})})()]})]}),e.jsxs("div",{className:"agent-card-body",children:[t.state==="error"&&t.lastError?e.jsx(os,{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:t.taskId})]}),e.jsxs("div",{className:"agent-heartbeat-control",children:[e.jsx("span",{className:"text-secondary",children:a("agents.heartbeat","Heartbeat:")}),Ve===t.id?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"input agent-heartbeat-custom-input",value:st[t.id]??"",onChange:h=>we(O=>({...O,[t.id]:h.target.value})),onKeyDown:h=>{h.key==="Enter"?Ut(t):h.key==="Escape"&&(Ce(null),we(O=>{const te={...O};return delete te[t.id],te}))},disabled:ae,"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 Ut(t),disabled:ae,title:a("agents.saveCustomInterval","Save custom interval"),children:a("agents.save","Save")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>{Ce(null),we(h=>{const O={...h};return delete O[t.id],O})},disabled:ae,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:h=>{const O=h.target.value;O==="__custom__"?Ca(t):ka(t,Number(O))},disabled:ae,"aria-label":a("agents.setHeartbeatAria","Set heartbeat interval for {{name}}",{name:t.name}),children:[re.map(h=>e.jsx("option",{value:h.value,children:h.label},h.value)),cs.some(h=>h.value===T)&&e.jsx("option",{value:"__custom__",children:a("agents.customHeartbeatOption","Custom...")})]})}),ae&&e.jsx("span",{className:"agent-heartbeat-saving text-secondary",children:a("agents.saving","Saving…")}),t.lastHeartbeatAt&&(()=>{const h=new Date(t.lastHeartbeatAt),O=new Date(h.getTime()+T),te=t.state==="active"||t.state==="running";return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"agent-heartbeat-last text-secondary",title:h.toLocaleString(),children:a("agents.lastHeartbeatAt","Last: {{time}}",{time:h.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})}),te&&e.jsx("span",{className:"agent-heartbeat-next text-secondary",title:O.toLocaleString(),children:a("agents.nextHeartbeatAt","Next: {{time}}",{time:O.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})})]})})()]})]}),e.jsxs("div",{className:"agent-card-actions",children:[e.jsxs("div",{className:"agent-card-actions-group agent-card-actions-group--primary",children:[t.state==="idle"&&e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"active"),disabled:Se.has(t.id),title:a("agents.activate","Activate"),children:[e.jsx(pt,{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 Ra(t.id,t.name),disabled:Se.has(t.id),title:a("agents.runNow","Run Now"),"aria-label":a("agents.runNowAria","Run now for {{name}}",{name:t.name}),children:[e.jsx(tt,{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:Se.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(At,{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:Se.has(t.id),title:a("agents.resume","Resume"),children:[e.jsx(pt,{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:()=>ue(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(tt,{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:Se.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(At,{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:Se.has(t.id),title:a("agents.retry","Retry"),children:[e.jsx(pt,{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:()=>ue(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(ds,{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 Wt(t.id,t.name),title:a("agents.delete","Delete"),children:[e.jsx(la,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.delete","Delete")})]})]})]})]},t.id)})})})}),e.jsx("div",{className:`agents-split-detail${x&&!L?" agents-split-detail--hidden-mobile":""}`,children:L?e.jsx(s.Suspense,{fallback:null,children:e.jsx(ha,{inline:!0,showInlineBackButton:x,agentId:L,projectId:d,onClose:Ue,addToast:n,onChildClick:Gt,initialTab:le,initialRunId:ce,preferActiveRun:k,onMutationSuccess:Sa},L)}):e.jsxs("div",{className:"agents-detail-empty-state",children:[e.jsx(It,{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{cn as AgentsView};