@runfusion/fusion 0.76.0-beta.3 → 0.77.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +13802 -9587
- package/dist/child-process-worker.js +6472 -4028
- package/dist/client/.vite/manifest.json +280 -269
- package/dist/client/assets/AgentDetailView-0G9qFd4j.js +13 -0
- package/dist/client/assets/{AgentDetailView-Cc3ATg8a.css → AgentDetailView-jzgy1BAS.css} +1 -1
- package/dist/client/assets/{AgentPermissionPolicyEditor--u9jyUf2.js → AgentPermissionPolicyEditor-BM68g7wo.js} +1 -1
- package/dist/client/assets/AgentsView-DkOUZWw4.js +24 -0
- package/dist/client/assets/ChatView-BPSm2JIH.js +13 -0
- package/dist/client/assets/{CommandCenter-CSRYoveB.js → CommandCenter-DxRSFWNc.js} +26 -26
- package/dist/client/assets/CommandCenter-ilm-DbtI.css +1 -0
- package/dist/client/assets/{DevServerView-B9So_oYx.js → DevServerView-DO-bqJFE.js} +1 -1
- package/dist/client/assets/{DirectoryPicker-BhyDL_2m.js → DirectoryPicker-Cp2gddTE.js} +1 -1
- package/dist/client/assets/DocumentsView-D0E-3G96.js +1 -0
- package/dist/client/assets/EvalsView-BoFVq5hw.js +1 -0
- package/dist/client/assets/ExperimentalAgentOnboardingModal-CS1Sdogm.js +1 -0
- package/dist/client/assets/{GoalsView-B6X5_0Ve.js → GoalsView-sybf7JY4.js} +1 -1
- package/dist/client/assets/InsightsView-nHa7aShn.js +11 -0
- package/dist/client/assets/{MemoryView-DN_3IFmA.css → MemoryView-CdpQqPJJ.css} +1 -1
- package/dist/client/assets/MemoryView-D0IG44za.js +3 -0
- package/dist/client/assets/{PiExtensionsManager-B8At6fO8.js → PiExtensionsManager-CU76weJe.js} +2 -2
- package/dist/client/assets/PluginManager-DyT8XbcG.js +1 -0
- package/dist/client/assets/{PullRequestView-B1hZFrWo.js → PullRequestView-CnxWUSen.js} +2 -2
- package/dist/client/assets/{ReportModal-C46V_zEa.js → ReportModal-CMrmMQjD.js} +5 -5
- package/dist/client/assets/{ResearchView-D8G85BYN.js → ResearchView-BTytQSgy.js} +2 -2
- package/dist/client/assets/{SecretsView-CTri9LRK.js → SecretsView-BuSH5J87.js} +1 -1
- package/dist/client/assets/SessionTerminal-D04kYRrT.js +2 -0
- package/dist/client/assets/SettingsModal-C0FY8MPW.css +1 -0
- package/dist/client/assets/{SettingsModal-rUQcSTJp.js → SettingsModal-Dm-ngbRr.js} +1 -1
- package/dist/client/assets/{SettingsModal-DmfMotcd.css → SettingsModal-Ds0Yj47X.css} +1 -1
- package/dist/client/assets/SettingsModal-xSLhH7Tr.js +21 -0
- package/dist/client/assets/{SettingsTextareaRow-BirlBcem.js → SettingsTextareaRow-CHPgocEp.js} +1 -1
- package/dist/client/assets/{SetupWizardModal-xnCBM9EL.js → SetupWizardModal-y88aXNIQ.js} +2 -2
- package/dist/client/assets/{SkillsView-O5U0ep50.js → SkillsView-CYyQW1Hv.js} +1 -1
- package/dist/client/assets/{WorkflowNodeEditor-BX4d2qqF.js → WorkflowNodeEditor-hYeoz1X8.js} +3 -3
- package/dist/client/assets/{agent-import-generation-DnqVkPkz.js → agent-import-generation-CjiYXzCr.js} +1 -1
- package/dist/client/assets/agentsOrgChartLayout-C0UP_X3z.js +1 -0
- package/dist/client/assets/app-BgpuMvTU.js +13 -0
- package/dist/client/assets/app-BlexHhbW.js +13 -0
- package/dist/client/assets/app-BsuUOR0P.js +13 -0
- package/dist/client/assets/app-DQVOujmO.js +13 -0
- package/dist/client/assets/app-DjyTRx1N.js +5 -0
- package/dist/client/assets/app-Dniggype.js +13 -0
- package/dist/client/assets/app-EV-lyZ0T.js +5 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-gi467xY0.js → architectureDiagram-3BPJPVTR-Dd6GPcqM.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-B_gpcYiR.js → blockDiagram-GPEHLZMM-CC6pLxlz.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-DeylEYsQ.js → c4Diagram-AAUBKEIU-DxMP_l6y.js} +1 -1
- package/dist/client/assets/channel-DlCEMoEf.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-BL2WY0HN.js → chunk-2J33WTMH-BKYToL43.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-BkLExGMe.js → chunk-4BX2VUAB-Bg6rjQb3.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CSTvCF5T.js → chunk-55IACEB6-CPUwbbGa.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-9J8pKk4x.js → chunk-727SXJPM-DScQBCvv.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-DXC1vPWr.js → chunk-AQP2D5EJ-DbX7uaXK.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-CFRUb-zD.js → chunk-FMBD7UC4-DvYKea1c.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-B87HFYS8.js → chunk-ND2GUHAM-CH-Tvw7w.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-CTjHiGbd.js → chunk-QZHKN3VN-CbyEvOoM.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-Bc92O8Ks.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Bc92O8Ks.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-D3Edq3L9.js → cose-bilkent-S5V4N54A-BPB5fV3A.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-CwwbeQfN.js → dagre-BM42HDAG-CilYJ3rR.js} +1 -1
- package/dist/client/assets/{dashboard-view-QxQwJFLz.js → dashboard-view-BnGe8cWo.js} +1 -1
- package/dist/client/assets/{dashboard-view-BLAoW3D4.js → dashboard-view-DnVf3tmI.js} +1 -1
- package/dist/client/assets/{dashboard-view-DAlJxqiJ.js → dashboard-view-DoLU6FxZ.js} +1 -1
- package/dist/client/assets/{dashboard-view-aPzfv99T.js → dashboard-view-dChSM_So.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-koJWWXE4.js → diagram-2AECGRRQ-m9u1Qhyx.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-Yob5cOKT.js → diagram-5GNKFQAL-DVr7Kf0N.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-DelvFSkK.js → diagram-KO2AKTUF-D7sgJDFx.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-CMput2h2.js → diagram-LMA3HP47-DNKNDS6r.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-04VXDl79.js → diagram-OG6HWLK6-1Bff4FWn.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-C9iP8Uyp.js → erDiagram-TEJ5UH35-DGua1UHN.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-DENQvu_t.js → flowDiagram-I6XJVG4X-UDfDtwsE.js} +1 -1
- package/dist/client/assets/{folder-open-D-554oji.js → folder-open-CteOypVk.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-BqOttZAT.js → ganttDiagram-6RSMTGT7-COdmD328.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CDcydi-5.js → gitGraphDiagram-PVQCEYII-SUSls7Kw.js} +1 -1
- package/dist/client/assets/index-0ovTXt3t.css +1 -0
- package/dist/client/assets/index-DpCHwyiD.js +2818 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-B5LQQnxt.js → infoDiagram-5YYISTIA-e_DloXj7.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DpFEt7D2.js → ishikawaDiagram-YF4QCWOH-DVWqihXg.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-MELtgu22.js → journeyDiagram-JHISSGLW-BcPY-XP0.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-h33PLATd.js → kanban-definition-UN3LZRKU-BCFG2Jle.js} +1 -1
- package/dist/client/assets/{mermaid.core-Dk2mUPOq.js → mermaid.core-5yPje9Bi.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-B_T4O2-B.js → mindmap-definition-RKZ34NQL-DDApeT3K.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-B1YIFkRl.js → pieDiagram-4H26LBE5-N61_jyeP.js} +1 -1
- package/dist/client/assets/{puzzle-hvecxlpJ.js → puzzle-BkaCP30D.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-BoGQR_hO.js → quadrantDiagram-W4KKPZXB-C5qHiApF.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-BSDmUBIx.js → requirementDiagram-4Y6WPE33-C71okgzt.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Dz_GqOa5.js → sankeyDiagram-5OEKKPKP-B2iKyLjB.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-B6twjYUH.js → sequenceDiagram-3UESZ5HK-DfdoYKKk.js} +1 -1
- package/dist/client/assets/{shield-alert-BX4WRJOv.js → shield-alert-BNSeDB8l.js} +1 -1
- package/dist/client/assets/standing-instructions-template-pZtzo1lK.js +20 -0
- package/dist/client/assets/standing-instructions-template-w7Ouw_37.css +1 -0
- package/dist/client/assets/{stateDiagram-AJRCARHV-DuwqWLx-.js → stateDiagram-AJRCARHV-lS-sUi12.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-Bu8Sk187.js → stateDiagram-v2-BHNVJYJU-DXJNDrV9.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-BS6VnqSI.js → timeline-definition-PNZ67QCA-CCwvX81K.js} +1 -1
- package/dist/client/assets/{upload-CaDoyaMW.js → upload-CDovVbu2.js} +1 -1
- package/dist/client/assets/useDiscoveredSkillsCache-BYqP-afh.js +1 -0
- package/dist/client/assets/{users-C5uCLwVM.js → users-CTqECGLo.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CUbzqT5Y.js → vennDiagram-CIIHVFJN-DaiR5nv9.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-Mv-NotFS.js → wardley-L42UT6IY-hA5IHyPW.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DuYpvLZX.js → wardleyDiagram-YWT4CUSO-CILUNESc.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-24_7QXdw.js → xychartDiagram-2RQKCTM6-72eNMmjz.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +1 -1
- package/dist/extension.js +10671 -6904
- package/dist/migrations/0059_fn_9037_tasks_source_agent_index.sql +3 -0
- package/dist/migrations/0060_fn_9059_workspace_coordination_leases.sql +10 -0
- package/dist/pi-claude-cli/package.json +1 -1
- package/dist/plugin-sdk/index.d.ts +190 -9
- package/dist/plugin-sdk/index.js +74 -28
- package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +83 -29
- package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-claude-runtime/bundled.js +83 -29
- package/dist/plugins/fusion-plugin-claude-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
- package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
- package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +1096 -73
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +83 -29
- package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +302 -71
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-linear-import/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
- package/dist/plugins/fusion-plugin-omp-runtime/bundled.js +83 -29
- package/dist/plugins/fusion-plugin-omp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-quality/bundled.js +176 -46
- package/dist/plugins/fusion-plugin-quality/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-reports/package.json +1 -1
- package/dist/plugins/fusion-plugin-roadmap/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-todos/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-todos/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/package.json +1 -1
- package/skill/fusion/references/extension-tools.md +2 -0
- package/dist/client/assets/AgentDetailView-T767kKTg.js +0 -13
- package/dist/client/assets/AgentsView-6Ifu7qDr.js +0 -24
- package/dist/client/assets/ChatView-BV3lixQi.js +0 -13
- package/dist/client/assets/CommandCenter-CE4rYjHn.css +0 -1
- package/dist/client/assets/DocumentsView-pbERA7O-.js +0 -1
- package/dist/client/assets/EvalsView-DJQ4ltCg.js +0 -1
- package/dist/client/assets/ExperimentalAgentOnboardingModal-BwJuzkzB.js +0 -1
- package/dist/client/assets/InsightsView-CJgI0J7S.js +0 -11
- package/dist/client/assets/MemoryView-BHq1AHPu.js +0 -3
- package/dist/client/assets/PluginManager-k7hV7_9e.js +0 -1
- package/dist/client/assets/SessionTerminal-BRf6r4Vp.js +0 -2
- package/dist/client/assets/SettingsModal-B30rPfYC.css +0 -1
- package/dist/client/assets/SettingsModal-D0RBeZik.js +0 -21
- package/dist/client/assets/agentsOrgChartLayout-CKuzbhFf.js +0 -1
- package/dist/client/assets/app-B2FwULu2.js +0 -5
- package/dist/client/assets/app-B6nJaqAl.js +0 -13
- package/dist/client/assets/app-CGXZeIRc.js +0 -13
- package/dist/client/assets/app-CGtkeBF5.js +0 -13
- package/dist/client/assets/app-CNzN1Plu.js +0 -13
- package/dist/client/assets/app-DLs-f5yM.js +0 -13
- package/dist/client/assets/app-DsvtcRUG.js +0 -5
- package/dist/client/assets/channel-BoE8DeM4.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-qnbLX_9_.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-qnbLX_9_.js +0 -1
- package/dist/client/assets/index-CXTd3LAB.css +0 -1
- package/dist/client/assets/index-CtYRoouR.js +0 -2818
- package/dist/client/assets/standing-instructions-template-BJY317CC.js +0 -20
- package/dist/client/assets/standing-instructions-template-Ddi_4TIk.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
.agent-detail-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;height:100%;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg)}.agent-detail-inline-shell{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden}.agent-detail-inline{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border)}.agent-detail-inline-loading{width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.agent-detail-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:calc(var(--space-xl) * 2 + var(--space-md));color:var(--text-muted)}.agent-detail-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);padding:var(--space-md) calc(var(--space-lg) + var(--space-xs));border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-shrink:0}.agent-detail-identity{display:flex;align-items:center;gap:var(--space-md);flex:1 1 auto;min-width:0}.agent-detail-inline-back{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs));padding:calc(var(--space-sm) - var(--space-xs) * .5) calc(var(--space-sm) + var(--space-xs) * .5);flex-shrink:0}.agent-detail-icon{width:calc(var(--space-lg) * 2 + var(--space-xs));height:calc(var(--space-lg) * 2 + var(--space-xs));display:flex;align-items:center;justify-content:center;color:var(--text);flex-shrink:0}.agent-detail-info{min-width:0}.agent-detail-info h2{font-size:calc(var(--space-md) + var(--space-xs));font-weight:600;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-detail-badges{display:flex;gap:var(--space-xs);margin-top:calc(var(--space-xs) * .5)}.agent-detail-header-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--space-sm);flex:0 1 auto;min-width:0}.agent-detail-controls{display:flex;align-items:center;flex-wrap:wrap;gap:calc(var(--space-xs) + var(--space-sm) * .25);flex-shrink:0}.btn--compact{padding:calc(var(--space-xs) + var(--space-xs) * .25) calc(var(--space-sm) + var(--space-xs) * .5);font-size:var(--space-md);gap:var(--space-xs)}.agent-detail-utility-actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.agent-detail-bulk-menu{position:relative}.agent-detail-bulk-menu-popover{position:absolute;right:0;top:calc(100% + var(--space-xs));min-width:calc(var(--space-xl) * 9);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:2;padding:var(--space-xs);display:flex;flex-direction:column;gap:var(--space-xs)}.agent-detail-bulk-menu-item{width:100%;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);text-align:left;padding:var(--space-sm);display:flex;flex-direction:column;gap:calc(var(--space-xs) * .5);cursor:pointer}.agent-detail-bulk-menu-item:hover:not(:disabled),.agent-detail-bulk-menu-item:focus-visible{outline:none;background:var(--card-hover)}.agent-detail-bulk-menu-item:disabled{color:var(--text-muted);cursor:not-allowed}.agent-detail-bulk-menu-item-hint{font-size:calc(var(--space-sm) + var(--space-xs) * .5);color:var(--text-muted)}.agent-detail-import-btn{min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-title{display:flex;align-items:center;gap:var(--space-lg)}.agent-detail-actions{display:flex;align-items:center;gap:var(--space-sm)}.agent-detail-tabs{display:flex;gap:var(--space-xs);padding:0 calc(var(--space-lg) + var(--space-xs));border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-shrink:0;overflow-x:auto;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:none}.agent-detail-tabs::-webkit-scrollbar{display:none}.agent-detail-tab{display:flex;flex:0 0 auto;touch-action:pan-x pan-y;align-items:center;gap:var(--space-xs);padding:calc(var(--space-sm) + var(--space-xs) * .5) var(--space-md);background:none;border:none;border-bottom:calc(var(--space-xs) * .5) solid transparent;color:var(--text-muted);font-size:.875rem;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.agent-detail-tab:hover{color:var(--text);background:var(--card-hover)}.agent-detail-tab.active{color:var(--todo);border-bottom-color:var(--todo)}.agent-detail-tab:focus-visible{outline:none;box-shadow:var(--focus-ring-strong);background:color-mix(in srgb,var(--todo) 12%,transparent);color:var(--text);border-radius:var(--radius-sm)}.agent-detail-content{flex:1;min-height:0;overflow-y:auto;padding:var(--space-xl)}.agent-detail-footer{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);border-top:1px solid var(--border);background:var(--bg-secondary);font-size:var(--space-md);color:var(--text-muted);flex-shrink:0}.agent-detail-id{font-family:var(--font-mono);cursor:pointer}.agent-detail-id:hover{color:var(--text)}.dashboard-tab{display:flex;flex-direction:column;gap:var(--space-xl)}.dashboard-summary-layout{padding-bottom:var(--space-md)}.dashboard-summary-health-reason{margin-left:var(--space-xs);font-size:calc(var(--space-sm) + var(--space-xs))}.dashboard-summary-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.budget-warning-banner{display:flex;gap:var(--space-sm);align-items:flex-start;border:1px solid var(--color-warning);background:color-mix(in srgb,var(--color-warning) 12%,transparent);border-radius:var(--radius-md);padding:var(--space-md)}.dashboard-summary-hero__heading{display:flex;align-items:center;gap:var(--space-sm)}.dashboard-summary-hero__heading h3{margin:0;font-size:calc(var(--space-lg) + var(--space-xs) * .5);font-weight:600}.dashboard-summary-hero__meta{display:flex;flex-wrap:wrap;gap:var(--space-md);color:var(--text-muted)}.agent-detail-approval-badge{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--color-warning)}.dashboard-summary-skills{display:inline-flex;align-items:center;gap:var(--space-sm)}.dashboard-summary-skill-badges{display:inline-flex;flex-wrap:wrap;gap:var(--space-xs)}.dashboard-summary-skill-badge{max-width:calc(var(--space-xl) * 8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-summary-skill-badge-btn{cursor:pointer}.dashboard-summary-skill-badge-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.dashboard-summary-skill-badge--selected{border-color:var(--todo);background:color-mix(in srgb,var(--todo) 20%,transparent)}.dashboard-summary-skill-detail{margin-top:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.dashboard-summary-skill-detail-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.dashboard-summary-skill-detail-title{font-weight:600;color:var(--text)}.dashboard-summary-skill-detail-loading,.dashboard-summary-skill-detail-empty{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--text-muted)}.dashboard-summary-skill-detail-error{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs);color:var(--color-error)}.dashboard-summary-skill-detail-content{margin:0;padding:var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);color:var(--text);white-space:pre-wrap;word-break:break-word;max-height:calc(var(--space-2xl) * 6);overflow:auto}.dashboard-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(calc(var(--space-xl) * 6 + var(--space-sm)),1fr));gap:var(--space-md)}.dashboard-summary-grid p{margin:0}.dashboard-summary-label{font-size:calc(var(--space-sm) + var(--space-xs) * .5);color:var(--text-muted)}.dashboard-summary-health-row{display:inline-flex;align-items:center;gap:var(--space-xs)}.dashboard-summary-health-reason{margin-left:var(--space-xs);font-size:var(--space-md)}.runs-list{display:flex;flex-direction:column;gap:var(--space-sm)}.run-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-sm)}.dashboard-section{background:var(--bg-secondary);border-radius:var(--radius-md);padding:calc(var(--space-lg) + var(--space-xs))}.dashboard-section h3{font-size:calc(var(--space-md) + var(--space-xs) * .5);font-weight:600;margin:0 0 var(--space-lg) 0;color:var(--text-muted);text-transform:uppercase;letter-spacing:calc(var(--space-xs) * .125)}.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--space-xl) * 7 + var(--space-sm)),1fr));gap:var(--space-lg)}.info-item{display:flex;flex-direction:column;gap:var(--space-xs)}.info-label{font-size:var(--space-md);color:var(--text-muted)}.info-value{font-size:calc(var(--space-md) + var(--space-xs) * .5);font-weight:500}.inline-badge{display:inline-block;padding:calc(var(--space-xs) * .5) var(--space-sm);border-radius:var(--radius-sm);font-size:var(--space-md);text-transform:capitalize}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-lg)}.stat-card{background:var(--surface);border-radius:var(--radius-md);padding:var(--space-lg);text-align:center}.stat-value{font-size:calc(var(--space-lg) + var(--space-xs) * .5);font-weight:700;color:var(--todo)}.stat-label{font-size:calc(var(--space-sm) + var(--space-xs) * .5);color:var(--text-muted);margin-top:var(--space-xs)}.current-task{display:flex;align-items:center;gap:var(--space-md)}.task-badge{font-family:var(--font-mono);background:var(--surface);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:calc(var(--space-md) + var(--space-xs) * .25)}.metadata-json{background:var(--surface);padding:var(--space-md);border-radius:var(--radius-sm);font-size:var(--space-md);overflow-x:auto;margin:0}.logs-tab{display:flex;flex-direction:column;height:100%}.logs-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-md);margin-bottom:var(--space-md);border-bottom:1px solid var(--border)}.logs-count{font-size:var(--space-md);color:var(--text-muted)}.log-window-loader{display:flex;justify-content:center;padding-bottom:var(--space-sm)}.streaming-indicator{display:flex;align-items:center;gap:calc(var(--space-xs) + var(--space-sm) * .25);font-size:var(--space-md);color:var(--color-success)}.streaming-dot{width:var(--space-sm);height:var(--space-sm);background:var(--color-success);border-radius:50%;animation:pulse 1.5s infinite}.logs-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(var(--space-2xl) + var(--space-lg));color:var(--text-muted);text-align:center}.logs-empty p{margin:var(--space-sm) 0 0 0}.agent-mail-tab{display:flex;flex-direction:column;gap:var(--space-md)}.agent-mail-tab-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.agent-mail-tab-header h3{margin:0;font-size:calc(var(--space-md) + var(--space-xs) * .5)}.agent-mail-tab-error{display:flex;align-items:center;gap:var(--space-xs);color:var(--color-error)}.agent-detail-loading--inline{flex-direction:row;justify-content:flex-start;padding:var(--space-md) 0}.agent-mail-tab .agent-mail-tab-message{width:100%;border:0;background:transparent;text-align:left;color:inherit;cursor:pointer}.agent-mail-tab .agent-mail-tab-message:hover{background:var(--card-hover)}.agent-mail-tab .agent-mail-tab-message:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.agent-mail-tab .agent-mail-tab-message--selected{background:color-mix(in srgb,var(--todo) 12%,transparent)}.agent-mail-tab .agent-mail-tab-detail{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.agent-mail-tab .agent-mail-tab-back{align-self:flex-start}.agent-mail-tab .agent-mail-tab-detail-meta{display:flex;flex-direction:column;gap:var(--space-sm)}.agent-mail-tab .agent-mail-tab-detail-row{display:flex;flex-wrap:wrap;gap:var(--space-md)}.agent-mail-tab .agent-mail-tab-detail-label{color:var(--text-muted);min-width:calc(var(--space-2xl) * 2)}.agent-mail-tab .agent-mail-tab-reply-context{color:var(--text-muted)}.agent-mail-tab .agent-mail-tab-detail-body{white-space:pre-wrap;word-break:break-word}.runs-tab{display:flex;flex-direction:column;gap:var(--space-md)}.runs-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(var(--space-2xl) + var(--space-lg));color:var(--text-muted);text-align:center}.runs-empty p{margin:var(--space-sm) 0 0 0}.run-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg)}.run-card--active{border-color:var(--in-progress);background:color-mix(in srgb,var(--in-progress) 5%,transparent)}.run-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-sm)}.run-live-indicator{display:flex;align-items:center;gap:calc(var(--space-xs) + var(--space-sm) * .25);font-weight:600;color:var(--in-progress)}.live-dot{width:var(--space-sm);height:var(--space-sm);background:var(--in-progress);border-radius:50%;animation:pulse 1.5s infinite}.run-id{font-family:var(--font-mono);font-size:calc(var(--space-md) + var(--space-xs) * .25);color:var(--text-muted)}.run-status{display:flex;align-items:center;gap:calc(var(--space-xs) + var(--space-sm) * .25);font-size:calc(var(--space-md) + var(--space-xs) * .25);text-transform:capitalize}.run-status.active{color:var(--in-progress)}.run-status.completed{color:var(--color-success)}.run-status.failed{color:var(--color-error)}.run-status.terminated{color:var(--text-muted)}.run-details{display:flex;gap:var(--space-sm);font-size:var(--space-md);color:var(--text-muted)}.run-logs-container{padding:var(--space-md);background:var(--bg-secondary);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.run-details-loading-state{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0}.run-output-sections{margin-bottom:var(--space-md)}.run-output-section{margin-bottom:var(--space-sm)}.run-output-label{margin-bottom:var(--space-xs);color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs));font-weight:600;letter-spacing:calc(var(--space-xs) * .1);text-transform:uppercase}.run-output-label--error{color:var(--color-error)}.run-output-panel{margin:0;max-height:calc(var(--space-2xl) * 6.25);overflow:auto;border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);background:var(--surface);border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;font-size:calc(var(--space-sm) + var(--space-xs));line-height:1.5}.run-output-panel--error{color:var(--color-error);border-color:color-mix(in srgb,var(--color-error) 35%,var(--border));background:color-mix(in srgb,var(--color-error) 10%,transparent)}.run-context-grid{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);font-size:calc(var(--space-sm) + var(--space-xs))}.run-context-item{line-height:1.5}.run-output-empty{padding:var(--space-sm) 0;font-style:italic;font-size:calc(var(--space-sm) + var(--space-xs))}.prompt-size-summary{display:flex;align-items:center;gap:var(--space-sm)}.prompt-size-sparkline{width:calc(var(--space-2xl) * 2);height:calc(var(--space-xl) + var(--space-md));border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.prompt-size-sparkline-grid{fill:none;stroke:var(--text-muted);stroke-width:1}.prompt-size-sparkline-line{fill:none;stroke:var(--accent);stroke-width:2}.prompt-size-values{font-family:var(--font-mono);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted)}.run-agent-logs-section{margin-top:var(--space-xs);padding-top:var(--space-sm);border-top:1px solid var(--border)}.agent-tasks-list{display:flex;flex-direction:column;gap:var(--space-sm)}.agent-task-item{display:flex;flex-direction:column;gap:calc(var(--space-xs) + var(--space-sm) * .25);padding:var(--space-md) calc(var(--space-md) + var(--space-xs) * .5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-secondary);text-decoration:none;transition:background var(--transition-fast),border-color var(--transition-fast)}.agent-task-item:hover{background:var(--card-hover);border-color:var(--text-dim)}.agent-task-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.agent-task-id{font-family:var(--font-mono);font-size:var(--space-md);font-weight:600;color:var(--todo)}.agent-task-title{font-size:calc(var(--space-md) + var(--space-xs) * .5);font-weight:500;color:var(--text);line-height:1.4}.agent-task-status{font-size:var(--space-md);color:var(--text-muted)}.agent-task-column{display:inline-flex;align-items:center;padding:calc(var(--space-xs) * .5) var(--space-sm);border-radius:var(--radius-pill);font-size:calc(var(--space-sm) + var(--space-xs) * .5);font-weight:700;text-transform:uppercase;letter-spacing:calc(var(--space-xs) * .1)}.agent-task-column.column-triage{color:var(--triage);background:color-mix(in srgb,var(--triage) 18%,transparent)}.agent-task-column.column-todo{color:var(--todo);background:color-mix(in srgb,var(--todo) 18%,transparent)}.agent-task-column.column-in-progress{color:var(--in-progress);background:color-mix(in srgb,var(--in-progress) 18%,transparent)}.agent-task-column.column-in-review{color:var(--in-review);background:color-mix(in srgb,var(--in-review) 18%,transparent)}.agent-task-column.column-done{color:var(--done);background:color-mix(in srgb,var(--done) 18%,transparent)}.agent-task-column.column-archived{color:var(--text-muted);background:color-mix(in srgb,var(--text-muted) 18%,transparent)}.agent-tasks-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:calc(var(--space-2xl) + var(--space-lg));color:var(--text-muted);text-align:center}.agent-tasks-empty p{margin:0}.config-tab{display:flex;flex-direction:column;gap:var(--space-xl);color:var(--text)}.config-section{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:calc(var(--space-md) + var(--space-sm));color:var(--text)}.config-section .input,.config-section .select,.config-section textarea{background:var(--surface);color:var(--text);border-color:var(--border)}.config-section .input::placeholder,.config-section textarea::placeholder{color:var(--text-dim)}.config-section .input:hover:not(:disabled):not([readonly]),.config-section .select:hover:not(:disabled),.config-section textarea:hover:not(:disabled):not([readonly]){border-color:var(--text-muted)}.config-section .input:focus-visible,.config-section .select:focus-visible,.config-section textarea:focus-visible,.config-section input[type=checkbox]:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.config-section .input:disabled,.config-section .select:disabled,.config-section textarea:disabled,.config-section .btn:disabled,.config-runtime-tab:disabled,.agent-avatar-editor-action:disabled{opacity:var(--opacity-disabled, .6);color:var(--text-muted);cursor:not-allowed}.config-section .input[readonly],.config-section textarea[readonly]{background:var(--surface-muted);color:var(--text-muted)}.config-section input[type=checkbox]{accent-color:var(--todo)}.agent-avatar-editor-actions .agent-avatar-editor-action{background:var(--card);color:var(--text);border-color:var(--border)}.agent-avatar-editor-actions .agent-avatar-editor-action:hover:not(:disabled){background:var(--card-hover);border-color:var(--text-muted)}.agent-avatar-editor-actions .agent-avatar-editor-action:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.config-section h3{font-size:calc(var(--space-md) + var(--space-xs));font-weight:600;margin:0 0 var(--space-sm) 0}.config-section--danger{border:1px solid color-mix(in srgb,var(--color-error) 40%,transparent)}.config-danger-note{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted)}.agent-content-toolbar{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.agent-content-mode-toggle{display:flex;align-items:center;gap:var(--space-xs)}.agent-content-mode-toggle .btn{display:inline-flex;align-items:center;gap:calc(var(--space-xs) + var(--space-sm) * .25)}.agent-content-preview{overflow-y:auto;padding:var(--space-lg);min-height:150px}.agent-content-placeholder{color:var(--text-muted);text-align:center;padding:var(--space-xl);min-height:150px;display:flex;align-items:center;justify-content:center}.config-description{font-size:calc(var(--space-md) + var(--space-xs) * .5);color:var(--text-muted);margin:0 0 calc(var(--space-md) + var(--space-sm)) 0}.config-actions-row{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.config-fields{display:flex;flex-direction:column;gap:var(--space-lg)}.config-field{display:flex;flex-direction:column;gap:calc(var(--space-xs) + var(--space-sm) * .25)}.config-field label{font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:500}.config-role-tags{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:0;padding:var(--space-sm);border:var(--border-width) solid var(--border);border-radius:var(--radius-md)}.config-role-tags legend{padding-inline:var(--space-xs)}.agent-avatar-editor{display:flex;align-items:center;gap:var(--space-md)}.agent-avatar-editor-preview{background:var(--card)}.agent-avatar-editor-actions{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.config-runtime-tabs{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-bottom:var(--space-md)}.config-runtime-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)}.config-runtime-tab:hover{border-color:var(--todo);color:var(--text);background:var(--card-hover)}.config-runtime-tab:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.config-runtime-tab.active{border-color:var(--todo);color:var(--text);background:color-mix(in srgb,var(--todo) 12%,transparent)}.config-hint{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);font-style:italic}.config-error{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--color-error)}.input--error{border-color:var(--color-error)!important}.config-actions{display:flex;align-items:center;gap:var(--space-md);margin-top:calc(var(--space-md) + var(--space-sm));padding-top:var(--space-lg);border-top:1px solid var(--border)}.config-saved-indicator{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)}.config-saved-indicator--error{color:var(--color-error)}.heartbeat-procedure-actions{margin-top:var(--space-sm)}.heartbeat-procedure-viewer{margin-top:var(--space-lg)}.heartbeat-procedure-status{display:inline-flex;align-items:center;gap:var(--space-xs);margin-left:auto}.heartbeat-procedure-status--warning{color:var(--color-warning)}.rating-summary-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:calc(var(--space-md) + var(--space-sm));display:flex;flex-direction:column;gap:var(--space-md)}.rating-score-display{display:flex;align-items:center;gap:var(--space-md)}.rating-average{font-size:var(--space-2xl);font-weight:700;line-height:1}.rating-stats{display:flex;align-items:center;gap:var(--space-md)}.rating-count{font-size:calc(var(--space-md) + var(--space-xs) * .5);color:var(--text-muted)}.rating-trend-badge{font-size:var(--space-md);padding:var(--space-xs) calc(var(--space-md) - var(--space-xs) * .5);border-radius:var(--radius-lg);font-weight:500}.trend-improving{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.trend-declining{background:color-mix(in srgb,var(--color-error) 15%,transparent);color:var(--color-error)}.trend-stable{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.trend-insufficient{background:var(--bg-tertiary);color:var(--text-muted)}.category-breakdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg)}.category-breakdown h4{margin:0 0 var(--space-md) 0;font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:600}.category-breakdown .category-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) 0;border-bottom:1px solid var(--border)}.category-breakdown .category-item:last-child{border-bottom:none}.category-name{text-transform:capitalize;font-size:calc(var(--space-md) + var(--space-xs) * .25)}.category-score{font-weight:600;font-size:calc(var(--space-md) + var(--space-xs) * .25)}.add-rating-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.add-rating-form h4{margin:0;font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:600}.star-selector{display:flex;gap:var(--space-xs)}.star-btn{background:none;border:none;padding:var(--space-xs);cursor:pointer;border-radius:var(--radius-sm);color:var(--text-muted);transition:background-color var(--transition-fast),color var(--transition-fast)}.star-btn:hover{background:var(--card-hover)}.star-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.rating-stars{display:inline-flex;gap:var(--space-xs)}.rating-stars .star-filled{color:var(--color-warning)}.rating-stars .star-empty{color:var(--text-muted)}.add-rating-form .add-rating-category-select,.add-rating-form .add-rating-comment-input{width:100%}.add-rating-form .add-rating-comment-input{resize:vertical;min-height:calc(var(--space-xl) + var(--space-2xl))}.rating-history{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);max-height:calc(var(--space-xl) * 12 + var(--space-md));overflow-y:auto}.rating-history h4{margin:0 0 var(--space-md) 0;font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:600}.rating-history .no-ratings{color:var(--text-muted);font-size:calc(var(--space-md) + var(--space-xs) * .25);text-align:center;padding:var(--space-lg)}.rating-history-item{padding:var(--space-md) 0;border-bottom:1px solid var(--border)}.rating-history-item:last-child{border-bottom:none}.rating-item-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.rating-category-badge{font-size:calc(var(--space-sm) + var(--space-xs) * .5);padding:calc(var(--space-xs) * .5) var(--space-sm);background:var(--card-hover);border-radius:var(--radius-pill);text-transform:capitalize}.rating-time{font-size:calc(var(--space-sm) + var(--space-xs) * .5);color:var(--text-muted);margin-left:auto}.rating-delete-btn{background:none;border:none;padding:var(--space-xs);cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:color var(--transition-fast),background-color var(--transition-fast)}.rating-delete-btn:hover{color:var(--color-error);background:color-mix(in srgb,var(--color-error) 10%,transparent)}.rating-comment{margin:var(--space-sm) 0 0 0;font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted);line-height:1.4}.runs-loading-row{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xl)}.runs-toolbar{padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--border)}.runs-toolbar--between{display:flex;justify-content:space-between;align-items:center}.runs-toolbar-meta{font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted)}.run-card--clickable{cursor:pointer}.run-card--clickable:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.run-header-group{display:flex;align-items:center;gap:var(--space-sm)}.run-badge--compact{font-size:calc(var(--space-sm) + var(--space-xs) * .5);padding:calc(var(--space-xs) * .25) calc(var(--space-sm) * .75)}.run-output-summary{cursor:pointer;user-select:none}.run-live-indicator--with-margin{margin-left:var(--space-sm)}.detail-section-body--loading{display:flex;align-items:center;gap:var(--space-sm)}.agent-empty--padded{padding:var(--space-xl)}.logs-fallback-label{font-size:calc(var(--space-sm) + var(--space-xs))}.config-textarea-mono{font-family:var(--font-mono);font-size:calc(var(--space-md) + var(--space-xs) * .25);resize:vertical}.config-textarea-top-spacing{margin-top:var(--space-sm)}.config-hint--block-spacing{margin-bottom:var(--space-md)}.config-hint--block{display:block;margin-bottom:var(--space-sm)}.config-hint--top-spacing{margin-top:var(--space-sm)}.config-hint--inline-loader{display:inline-flex;gap:var(--space-xs);margin-top:var(--space-sm)}.config-inline-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm)}.config-hint--inline-tight{display:flex;align-items:center;gap:var(--space-xs)}.config-hint--warning{color:var(--color-warning)}.agent-heartbeat-auto-claim-card{background:color-mix(in srgb,var(--surface) 60%,transparent);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md)}.agent-heartbeat-preset-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-sm)}.agent-heartbeat-preset-label{display:block;color:var(--text);font-size:calc(var(--space-sm) + var(--space-xs));font-weight:600;margin-bottom:calc(var(--space-xs) * .5)}.agent-heartbeat-preset-btn{min-height:calc(var(--space-xl) + var(--space-md));flex-shrink:0}@media(max-width:768px){.agent-heartbeat-preset-row{flex-direction:column;align-items:stretch}.agent-heartbeat-preset-btn{width:100%;min-height:calc(var(--space-xl) + var(--space-md))}.config-runtime-tabs{grid-template-columns:1fr}.config-runtime-tab{min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-avatar-editor-actions{flex-direction:column;align-items:stretch}.agent-avatar-editor-actions .agent-avatar-editor-action{width:100%;justify-content:center}.skill-multiselect,.skill-multiselect-dropdown,.skill-multiselect-chips{width:100%}.skill-chip{max-width:100%}@media(max-width:767.98px){.agent-detail-modal{min-width:0!important;min-height:0!important;width:100vw!important;height:100dvh!important;max-width:100vw!important;max-height:100dvh;margin:0;border-radius:0;border:none;resize:none}}.agent-detail-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:var(--space-sm);row-gap:var(--space-sm);padding:var(--space-md);padding-top:max(var(--space-md),env(safe-area-inset-top,0))}.agent-detail-identity{grid-column:1;grid-row:1;flex:1 1 auto;min-width:0;gap:var(--space-md)}.agent-detail-icon{width:calc(var(--space-lg) * 2);height:calc(var(--space-lg) * 2);flex-shrink:0}.agent-detail-icon svg{width:calc(var(--space-sm) + var(--space-xs) * 2);height:calc(var(--space-sm) + var(--space-xs) * 2)}.agent-detail-info h2{font-size:calc(var(--space-md) + var(--space-xs) * .75);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-detail-badges{flex-wrap:wrap;row-gap:var(--space-xs);column-gap:var(--space-sm);margin-top:var(--space-xs)}.agent-detail-header-actions{grid-column:2;grid-row:1;flex:0 0 auto;justify-content:flex-end;gap:calc(var(--space-xs) * .5)}.agent-detail-controls{flex:0 0 auto;gap:calc(var(--space-xs) * .5)}.agent-detail-controls .btn--compact{padding:calc(var(--space-sm) - var(--space-xs) * .5) calc(var(--space-md) - var(--space-xs) * .5);font-size:var(--space-md);min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-controls .agent-detail-mobile-icon-control{min-width:calc(var(--space-lg) + var(--space-md) + var(--space-xs));padding-left:calc(var(--space-sm) - var(--space-xs) * .5);padding-right:calc(var(--space-sm) - var(--space-xs) * .5)}.agent-detail-controls .agent-detail-mobile-icon-control .agent-detail-control-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.agent-detail-controls .btn--compact svg{width:calc(var(--space-md) + var(--space-xs) * .5);height:calc(var(--space-md) + var(--space-xs) * .5)}.agent-detail-utility-actions{flex-shrink:0;margin-left:0}.agent-detail-bulk-menu-popover{right:0}.agent-detail-utility-actions .btn-icon{min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs));min-width:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-import-btn{min-width:calc(var(--space-xl) * 3 + var(--space-xs))}.agent-detail-title{flex:1 1 auto;min-width:0;gap:var(--space-md)}.agent-detail-actions{flex:1 1 100%;flex-wrap:wrap;gap:calc(var(--space-xs) + var(--space-sm) * .25)}.agent-detail-actions .btn{padding:calc(var(--space-sm) - var(--space-xs) * .5) calc(var(--space-md) - var(--space-xs) * .5);font-size:calc(var(--space-md) + var(--space-xs) * .25);min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-actions .btn svg{width:calc(var(--space-sm) + var(--space-xs) * 1.5);height:calc(var(--space-sm) + var(--space-xs) * 1.5)}.agent-detail-actions .btn-icon{min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs));min-width:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-tabs{padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.agent-detail-tabs::-webkit-scrollbar{display:none}.agent-detail-tab{padding:var(--space-md) calc(var(--space-md) + var(--space-xs) * .5);font-size:.875rem;touch-action:pan-x pan-y;white-space:nowrap;min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-content{padding:var(--space-lg);-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.agent-detail-footer{flex-wrap:wrap;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);padding-bottom:max(var(--space-sm),env(safe-area-inset-bottom,0));font-size:calc(var(--space-sm) + var(--space-xs) * .75)}.agent-detail-id{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-tab{gap:var(--space-lg)}.dashboard-summary-hero__heading{flex-wrap:wrap;row-gap:var(--space-sm);column-gap:var(--space-md)}.dashboard-summary-hero__meta{align-items:flex-start;row-gap:var(--space-lg);column-gap:var(--space-md)}.dashboard-summary-hero__health{overflow-wrap:anywhere}.dashboard-summary-skills{flex-direction:column;align-items:flex-start;row-gap:var(--space-sm)}.dashboard-summary-skill-detail-header{flex-direction:column;align-items:flex-start}.dashboard-section{padding:var(--space-lg)}.info-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-md)}.stats-grid{grid-template-columns:repeat(3,1fr);gap:var(--space-md)}.stat-value{font-size:calc(var(--space-lg) + var(--space-xs) * .5)}.logs-empty{padding:var(--space-2xl) var(--space-lg)}.agent-mail-tab-header{flex-direction:column;align-items:flex-start}.agent-mail-tab .mailbox-agent-subtabs{width:100%}.agent-mail-tab .mailbox-agent-subtab{flex:1}.agent-mail-tab .agent-mail-tab-detail{width:100%;padding:var(--space-md)}.agent-mail-tab .agent-mail-tab-back{min-height:calc(var(--space-lg) * 2 + var(--space-xs))}.run-card{padding:var(--space-md)}.run-header{flex-wrap:wrap;gap:calc(var(--space-xs) + var(--space-sm) * .25)}.run-details{flex-wrap:wrap}.run-logs-container{padding:var(--space-sm)}.run-output-panel{max-height:calc(var(--space-2xl) * 5)}.run-context-grid{flex-direction:column;gap:var(--space-xs)}.run-details .text-muted{min-width:0;overflow-wrap:anywhere}.config-tab{gap:var(--space-lg)}.config-section{padding:var(--space-lg)}.config-section .input,.config-section .select,.config-section textarea{font-size:calc(var(--space-md) + var(--space-xs));min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.config-actions{flex-direction:column;align-items:stretch;gap:var(--space-sm)}.config-actions .btn{width:100%;justify-content:center}.heartbeat-procedure-status{margin-left:0}}@media(max-width:480px){.dashboard-summary-card{padding:var(--space-md)}.dashboard-summary-hero__heading{row-gap:var(--space-md)}.dashboard-summary-hero__meta{row-gap:var(--space-lg);column-gap:var(--space-sm)}.info-grid,.stats-grid{grid-template-columns:1fr}.agent-detail-actions{flex-direction:column;width:100%}.agent-detail-actions .btn{width:100%;justify-content:center}.agent-detail-actions .btn-icon{align-self:flex-end}.config-actions,.agent-avatar-editor-actions{width:100%}.config-runtime-tabs,.skill-multiselect{gap:var(--space-xs)}.agent-detail-footer .divider,.agent-detail-footer .text-muted,.agent-detail-footer .link{display:none}}@media(max-width:768px){.agent-avatar-editor{flex-direction:column;align-items:flex-start}.agent-avatar-editor-actions{width:100%}.agent-avatar-editor-actions .btn{min-height:calc(var(--space-lg) * 2 + var(--space-xs))}.agent-dialog-overlay{padding:0;align-items:stretch}.agent-dialog{width:100vw!important;height:100dvh;max-width:100%!important;max-height:100dvh;border-radius:0;border:none}.agent-dialog-header{padding:max(var(--space-md),env(safe-area-inset-top,0px)) var(--space-lg) var(--space-md) var(--space-lg);flex-shrink:0}.agent-dialog-body{padding:var(--space-lg);-webkit-overflow-scrolling:touch}.agent-dialog-footer{padding:var(--space-md) var(--space-lg);padding-bottom:max(var(--space-md),env(safe-area-inset-bottom,0px));flex-wrap:wrap;gap:var(--space-sm)}.agent-dialog-field .input,.agent-dialog-field .select,.agent-dialog-field textarea{font-size:calc(var(--space-md) + var(--space-xs));min-height:calc(var(--space-lg) * 2 + var(--space-xs))}.agent-dialog-summary-row{flex-direction:column;gap:calc(var(--space-xs) * .5)}.agent-dialog-summary-row>span:first-child,.agent-dialog-summary-row-label{width:auto}.agent-dialog-steps{padding:var(--space-sm) var(--space-lg)}.agent-dialog-step{flex:1;width:auto;height:calc(var(--space-xs) - var(--space-xs) * .25)}.agent-dialog-tabs{grid-template-columns:1fr;gap:calc(var(--space-sm) - var(--space-xs) * .5);margin-bottom:var(--space-md)}.agent-dialog-tab{min-height:calc(var(--space-lg) * 2 + var(--space-xs));text-align:left}.agent-import-file-upload{flex-direction:column;align-items:stretch;gap:var(--space-sm)}.agent-import-textarea{font-size:calc(var(--space-md) + var(--space-xs));min-height:calc(var(--space-xl) * 4 + var(--space-xs))}.agent-import-agent-list{max-height:calc(100dvh - (var(--space-xl) * 10 + var(--space-lg)))}.agent-import-result-stats{flex-direction:column;gap:var(--space-sm);align-items:center}.agent-import-browse-list{max-height:calc(100dvh - (var(--space-xl) * 10 + var(--space-lg)))}.agent-import-skill-list{max-height:calc(100dvh - (var(--space-xl) * 15 + var(--space-md)))}}@media(max-width:480px){.agent-dialog-body{padding:var(--space-md)}.agent-dialog-footer{flex-direction:column}.agent-dialog-footer .btn{width:100%;justify-content:center}}.agent-permission-inherit-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);margin-bottom:var(--space-sm)}.agent-capability-grants{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-md)}.agent-capability-grants h4{margin:0;color:var(--text-primary);font-size:var(--font-size-md)}.agent-capability-grants-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--size-card-min, 16rem)),1fr));gap:var(--space-sm)}.agent-capability-grant-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.agent-capability-grant-name{display:block;color:var(--text-primary);font-weight:600}@media(max-width:768px){.agent-capability-grants-grid{grid-template-columns:1fr}.agent-capability-grant-row,.agent-permission-inherit-banner{align-items:flex-start;flex-direction:column}}.agent-memory-file-editor{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;display:flex;flex-direction:column;min-height:320px;max-height:55vh}.agent-memory-file-editor .cm-editor{height:100%;min-height:0}.agent-memory-file-editor .cm-scroller{overflow:auto}.memory-consolidation-history{margin-block:var(--space-md);padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.memory-consolidation-history__heading,.memory-consolidation-history__row{display:flex;align-items:center;gap:var(--space-sm);justify-content:space-between}.memory-consolidation-history__heading h4{margin:0;color:var(--text-primary)}.memory-consolidation-history__list{display:grid;gap:var(--space-sm);margin:var(--space-sm) 0 0;padding:0;list-style:none}.memory-consolidation-history__row{flex-wrap:wrap;padding:var(--space-sm);border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--text-muted)}.memory-consolidation-history__row--completed strong{color:var(--color-success)}.memory-consolidation-history__row--skipped strong{color:var(--color-warning)}.memory-consolidation-history__row--failed strong{color:var(--color-error)}.reflections-tab{padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-lg)}.reflections-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.reflections-header h3{display:flex;align-items:center;gap:var(--space-sm);font-size:1rem;font-weight:600;color:var(--text)}.reflections-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-md)}.reflections-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md);text-align:center}.reflections-stat-card .stat-value{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);font-size:1.5rem;font-weight:700;color:var(--text);margin-bottom:var(--space-xs)}.reflections-stat-card .stat-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.reflections-no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xl);color:var(--text-muted);text-align:center}.reflections-list{display:flex;flex-direction:column;gap:var(--space-md)}.reflections-loading-indicator{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-lg)}.reflections-ratings-section{display:flex;flex-direction:column;gap:var(--space-md)}.reflections-ratings-section>h4,.reflections-list h4{font-size:.875rem;font-weight:600;color:var(--text);margin-bottom:var(--space-xs)}.reflection-cards{display:flex;flex-direction:column;gap:var(--space-sm)}.reflection-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md);cursor:pointer;transition:border-color .15s,background-color .15s}.reflection-card:hover{border-color:var(--border);background:var(--card-hover)}.reflection-card:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.reflection-card--expanded{border-color:var(--accent)}.reflection-card-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}.reflection-trigger-badge{font-size:.7rem;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.05em}.reflection-trigger-periodic{background:color-mix(in srgb,var(--color-info) 15%,transparent);color:var(--color-info)}.reflection-trigger-post-task{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.reflection-trigger-manual{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.reflection-trigger-user-requested{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.reflection-timestamp{font-size:.75rem;color:var(--text-muted);flex:1}.reflection-chevron{color:var(--text-muted)}.reflection-summary{font-size:.875rem;color:var(--text);line-height:1.5}.reflection-details{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:var(--space-md)}.reflection-insights h5,.reflection-suggestions h5{display:flex;align-items:center;gap:var(--space-xs);font-size:.8rem;font-weight:600;color:var(--text);margin-bottom:var(--space-xs)}.reflection-insights ul,.reflection-suggestions ul{list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.reflection-insights li,.reflection-suggestions li{font-size:.8rem;color:var(--text-muted);padding-left:var(--space-md);position:relative}.reflection-insights li:before{content:"•";position:absolute;left:4px;color:var(--color-success)}.reflection-suggestions li:before{content:"→";position:absolute;left:0;color:var(--accent)}.reflection-metrics{background:var(--bg);border-radius:var(--radius-sm);padding:var(--space-sm)}.reflection-metrics h5{font-size:.75rem;font-weight:600;color:var(--text-muted);margin-bottom:var(--space-xs)}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--space-sm)}.metric{display:flex;flex-direction:column;gap:2px}.metric-label{font-size:.7rem;color:var(--text-muted)}.metric-value{font-size:.875rem;font-weight:600;color:var(--text)}.reflection-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-2xl);color:var(--text-muted);text-align:center}.reflection-empty p{font-size:.875rem}@media(max-width:768px){.reflections-header{flex-wrap:wrap;align-items:flex-start}.reflections-header .btn{width:100%;justify-content:center}}.budget-progress-container{margin-top:var(--space-xs)}.budget-progress-bar{width:100%;height:var(--space-sm);background:var(--surface);border-radius:var(--radius-sm);overflow:hidden;margin-top:var(--space-xs)}.budget-progress-bar__fill{height:100%;border-radius:var(--radius-sm);transition:width var(--transition-slow),background-color var(--transition-slow)}.budget-progress-bar__fill--green{background:var(--color-success)}.budget-progress-bar__fill--amber{background:var(--color-warning)}.budget-progress-bar__fill--red{background:var(--color-error)}.budget-progress-label{font-size:.75rem;color:var(--text-muted);margin-top:var(--space-xs);display:block}.budget-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:calc(var(--space-xs) / 2) var(--space-sm);border-radius:var(--radius-pill);font-size:.75rem;font-weight:500}.budget-warning-banner{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--state-error-bg, color-mix(in srgb, var(--color-error) 15%, transparent));color:var(--state-error-text);border:1px solid var(--state-error-border);font-size:.875rem;margin-bottom:var(--space-md)}.btn-reset-budget{margin-top:var(--space-sm)}
|
|
1
|
+
.agent-detail-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;height:100%;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg)}.agent-detail-inline-shell{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden}.agent-detail-inline{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border)}.agent-detail-inline-loading{width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.agent-detail-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:calc(var(--space-xl) * 2 + var(--space-md));color:var(--text-muted)}.agent-detail-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);padding:var(--space-md) calc(var(--space-lg) + var(--space-xs));border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-shrink:0}.agent-detail-identity{display:flex;align-items:center;gap:var(--space-md);flex:1 1 auto;min-width:0}.agent-detail-inline-back{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs));padding:calc(var(--space-sm) - var(--space-xs) * .5) calc(var(--space-sm) + var(--space-xs) * .5);flex-shrink:0}.agent-detail-icon{width:calc(var(--space-lg) * 2 + var(--space-xs));height:calc(var(--space-lg) * 2 + var(--space-xs));display:flex;align-items:center;justify-content:center;color:var(--text);flex-shrink:0}.agent-detail-info{min-width:0}.agent-detail-info h2{font-size:calc(var(--space-md) + var(--space-xs));font-weight:600;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-detail-badges{display:flex;gap:var(--space-xs);margin-top:calc(var(--space-xs) * .5)}.agent-detail-header-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--space-sm);flex:0 1 auto;min-width:0}.agent-detail-controls{display:flex;align-items:center;flex-wrap:wrap;gap:calc(var(--space-xs) + var(--space-sm) * .25);flex-shrink:0}.btn--compact{padding:calc(var(--space-xs) + var(--space-xs) * .25) calc(var(--space-sm) + var(--space-xs) * .5);font-size:var(--space-md);gap:var(--space-xs)}.agent-detail-utility-actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.agent-detail-bulk-menu{position:relative}.agent-detail-bulk-menu-popover{position:absolute;right:0;top:calc(100% + var(--space-xs));min-width:calc(var(--space-xl) * 9);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:2;padding:var(--space-xs);display:flex;flex-direction:column;gap:var(--space-xs)}.agent-detail-bulk-menu-item{width:100%;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);text-align:left;padding:var(--space-sm);display:flex;flex-direction:column;gap:calc(var(--space-xs) * .5);cursor:pointer}.agent-detail-bulk-menu-item:hover:not(:disabled),.agent-detail-bulk-menu-item:focus-visible{outline:none;background:var(--card-hover)}.agent-detail-bulk-menu-item:disabled{color:var(--text-muted);cursor:not-allowed}.agent-detail-bulk-menu-item-hint{font-size:calc(var(--space-sm) + var(--space-xs) * .5);color:var(--text-muted)}.agent-detail-import-btn{min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-title{display:flex;align-items:center;gap:var(--space-lg)}.agent-detail-actions{display:flex;align-items:center;gap:var(--space-sm)}.agent-detail-tabs{display:flex;gap:var(--space-xs);padding:0 calc(var(--space-lg) + var(--space-xs));border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-shrink:0;overflow-x:auto;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:none}.agent-detail-tabs::-webkit-scrollbar{display:none}.agent-detail-tab{display:flex;flex:0 0 auto;touch-action:pan-x pan-y;align-items:center;gap:var(--space-xs);padding:calc(var(--space-sm) + var(--space-xs) * .5) var(--space-md);background:none;border:none;border-bottom:calc(var(--space-xs) * .5) solid transparent;color:var(--text-muted);font-size:.875rem;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.agent-detail-tab:hover{color:var(--text);background:var(--card-hover)}.agent-detail-tab.active{color:var(--todo);border-bottom-color:var(--todo)}.agent-detail-tab:focus-visible{outline:none;box-shadow:var(--focus-ring-strong);background:color-mix(in srgb,var(--todo) 12%,transparent);color:var(--text);border-radius:var(--radius-sm)}.agent-detail-content{flex:1;min-height:0;overflow-y:auto;padding:var(--space-xl)}.agent-detail-footer{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);border-top:1px solid var(--border);background:var(--bg-secondary);font-size:var(--space-md);color:var(--text-muted);flex-shrink:0}.agent-detail-id{font-family:var(--font-mono);cursor:pointer}.agent-detail-id:hover{color:var(--text)}.dashboard-tab{display:flex;flex-direction:column;gap:var(--space-xl)}.dashboard-summary-layout{padding-bottom:var(--space-md)}.dashboard-summary-health-reason{margin-left:var(--space-xs);font-size:calc(var(--space-sm) + var(--space-xs))}.dashboard-summary-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.budget-warning-banner{display:flex;gap:var(--space-sm);align-items:flex-start;border:1px solid var(--color-warning);background:color-mix(in srgb,var(--color-warning) 12%,transparent);border-radius:var(--radius-md);padding:var(--space-md)}.dashboard-summary-hero__heading{display:flex;align-items:center;gap:var(--space-sm)}.dashboard-summary-hero__heading h3{margin:0;font-size:calc(var(--space-lg) + var(--space-xs) * .5);font-weight:600}.dashboard-summary-hero__meta{display:flex;flex-wrap:wrap;gap:var(--space-md);color:var(--text-muted)}.agent-detail-approval-badge{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--color-warning)}.dashboard-summary-skills{display:inline-flex;align-items:center;gap:var(--space-sm)}.dashboard-summary-skill-badges{display:inline-flex;flex-wrap:wrap;gap:var(--space-xs)}.dashboard-summary-skill-badge{max-width:calc(var(--space-xl) * 8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-summary-skill-badge-btn{cursor:pointer}.dashboard-summary-skill-badge-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.dashboard-summary-skill-badge--selected{border-color:var(--todo);background:color-mix(in srgb,var(--todo) 20%,transparent)}.dashboard-summary-skill-detail{margin-top:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.dashboard-summary-skill-detail-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.dashboard-summary-skill-detail-title{font-weight:600;color:var(--text)}.dashboard-summary-skill-detail-loading,.dashboard-summary-skill-detail-empty{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--text-muted)}.dashboard-summary-skill-detail-error{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs);color:var(--color-error)}.dashboard-summary-skill-detail-content{margin:0;padding:var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);color:var(--text);white-space:pre-wrap;word-break:break-word;max-height:calc(var(--space-2xl) * 6);overflow:auto}.dashboard-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(calc(var(--space-xl) * 6 + var(--space-sm)),1fr));gap:var(--space-md)}.dashboard-summary-grid p{margin:0}.dashboard-summary-label{font-size:calc(var(--space-sm) + var(--space-xs) * .5);color:var(--text-muted)}.dashboard-summary-health-row{display:inline-flex;align-items:center;gap:var(--space-xs)}.dashboard-summary-health-reason{margin-left:var(--space-xs);font-size:var(--space-md)}.runs-list{display:flex;flex-direction:column;gap:var(--space-sm)}.run-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-sm)}.dashboard-section{background:var(--bg-secondary);border-radius:var(--radius-md);padding:calc(var(--space-lg) + var(--space-xs))}.dashboard-section h3{font-size:calc(var(--space-md) + var(--space-xs) * .5);font-weight:600;margin:0 0 var(--space-lg) 0;color:var(--text-muted);text-transform:uppercase;letter-spacing:calc(var(--space-xs) * .125)}.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--space-xl) * 7 + var(--space-sm)),1fr));gap:var(--space-lg)}.info-item{display:flex;flex-direction:column;gap:var(--space-xs)}.info-label{font-size:var(--space-md);color:var(--text-muted)}.info-value{font-size:calc(var(--space-md) + var(--space-xs) * .5);font-weight:500}.inline-badge{display:inline-block;padding:calc(var(--space-xs) * .5) var(--space-sm);border-radius:var(--radius-sm);font-size:var(--space-md);text-transform:capitalize}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-lg)}.stat-card{background:var(--surface);border-radius:var(--radius-md);padding:var(--space-lg);text-align:center}.stat-value{font-size:calc(var(--space-lg) + var(--space-xs) * .5);font-weight:700;color:var(--todo)}.stat-label{font-size:calc(var(--space-sm) + var(--space-xs) * .5);color:var(--text-muted);margin-top:var(--space-xs)}.current-task{display:flex;align-items:center;gap:var(--space-md)}.task-badge{font-family:var(--font-mono);background:var(--surface);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:calc(var(--space-md) + var(--space-xs) * .25)}.metadata-json{background:var(--surface);padding:var(--space-md);border-radius:var(--radius-sm);font-size:var(--space-md);overflow-x:auto;margin:0}.logs-tab{display:flex;flex-direction:column;height:100%}.logs-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-md);margin-bottom:var(--space-md);border-bottom:1px solid var(--border)}.logs-count{font-size:var(--space-md);color:var(--text-muted)}.log-window-loader{display:flex;justify-content:center;padding-bottom:var(--space-sm)}.streaming-indicator{display:flex;align-items:center;gap:calc(var(--space-xs) + var(--space-sm) * .25);font-size:var(--space-md);color:var(--color-success)}.streaming-dot{width:var(--space-sm);height:var(--space-sm);background:var(--color-success);border-radius:50%;animation:pulse 1.5s infinite}.logs-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(var(--space-2xl) + var(--space-lg));color:var(--text-muted);text-align:center}.logs-empty p{margin:var(--space-sm) 0 0 0}.agent-mail-tab{display:flex;flex-direction:column;gap:var(--space-md)}.agent-mail-tab-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.agent-mail-tab-header h3{margin:0;font-size:calc(var(--space-md) + var(--space-xs) * .5)}.agent-mail-tab-error{display:flex;align-items:center;gap:var(--space-xs);color:var(--color-error)}.agent-detail-loading--inline{flex-direction:row;justify-content:flex-start;padding:var(--space-md) 0}.agent-mail-tab .agent-mail-tab-message{width:100%;border:0;background:transparent;text-align:left;color:inherit;cursor:pointer}.agent-mail-tab .agent-mail-tab-message:hover{background:var(--card-hover)}.agent-mail-tab .agent-mail-tab-message:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.agent-mail-tab .agent-mail-tab-message--selected{background:color-mix(in srgb,var(--todo) 12%,transparent)}.agent-mail-tab .agent-mail-tab-detail{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.agent-mail-tab .agent-mail-tab-back{align-self:flex-start}.agent-mail-tab .agent-mail-tab-detail-meta{display:flex;flex-direction:column;gap:var(--space-sm)}.agent-mail-tab .agent-mail-tab-detail-row{display:flex;flex-wrap:wrap;gap:var(--space-md)}.agent-mail-tab .agent-mail-tab-detail-label{color:var(--text-muted);min-width:calc(var(--space-2xl) * 2)}.agent-mail-tab .agent-mail-tab-reply-context{color:var(--text-muted)}.agent-mail-tab .agent-mail-tab-detail-body{white-space:pre-wrap;word-break:break-word}.runs-tab{display:flex;flex-direction:column;gap:var(--space-md)}.runs-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(var(--space-2xl) + var(--space-lg));color:var(--text-muted);text-align:center}.runs-empty p{margin:var(--space-sm) 0 0 0}.run-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg)}.run-card--active{border-color:var(--in-progress);background:color-mix(in srgb,var(--in-progress) 5%,transparent)}.run-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-sm)}.run-live-indicator{display:flex;align-items:center;gap:calc(var(--space-xs) + var(--space-sm) * .25);font-weight:600;color:var(--in-progress)}.live-dot{width:var(--space-sm);height:var(--space-sm);background:var(--in-progress);border-radius:50%;animation:pulse 1.5s infinite}.run-id{font-family:var(--font-mono);font-size:calc(var(--space-md) + var(--space-xs) * .25);color:var(--text-muted)}.run-status{display:flex;align-items:center;gap:calc(var(--space-xs) + var(--space-sm) * .25);font-size:calc(var(--space-md) + var(--space-xs) * .25);text-transform:capitalize}.run-status.active{color:var(--in-progress)}.run-status.completed{color:var(--color-success)}.run-status.failed{color:var(--color-error)}.run-status.terminated{color:var(--text-muted)}.run-details{display:flex;gap:var(--space-sm);font-size:var(--space-md);color:var(--text-muted)}.run-logs-container{padding:var(--space-md);background:var(--bg-secondary);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.run-details-loading-state{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0}.run-output-sections{margin-bottom:var(--space-md)}.run-output-section{margin-bottom:var(--space-sm)}.run-output-label{margin-bottom:var(--space-xs);color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs));font-weight:600;letter-spacing:calc(var(--space-xs) * .1);text-transform:uppercase}.run-output-label--error{color:var(--color-error)}.run-output-panel{margin:0;max-height:calc(var(--space-2xl) * 6.25);overflow:auto;border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);background:var(--surface);border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;font-size:calc(var(--space-sm) + var(--space-xs));line-height:1.5}.run-output-panel--error{color:var(--color-error);border-color:color-mix(in srgb,var(--color-error) 35%,var(--border));background:color-mix(in srgb,var(--color-error) 10%,transparent)}.run-context-grid{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);font-size:calc(var(--space-sm) + var(--space-xs))}.run-context-item{line-height:1.5}.run-output-empty{padding:var(--space-sm) 0;font-style:italic;font-size:calc(var(--space-sm) + var(--space-xs))}.prompt-size-summary{display:flex;align-items:center;gap:var(--space-sm)}.prompt-size-sparkline{width:calc(var(--space-2xl) * 2);height:calc(var(--space-xl) + var(--space-md));border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.prompt-size-sparkline-grid{fill:none;stroke:var(--text-muted);stroke-width:1}.prompt-size-sparkline-line{fill:none;stroke:var(--accent);stroke-width:2}.prompt-size-values{font-family:var(--font-mono);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted)}.run-agent-logs-section{margin-top:var(--space-xs);padding-top:var(--space-sm);border-top:1px solid var(--border)}.agent-tasks-list{display:flex;flex-direction:column;gap:var(--space-sm)}.agent-task-item{display:flex;flex-direction:column;gap:calc(var(--space-xs) + var(--space-sm) * .25);padding:var(--space-md) calc(var(--space-md) + var(--space-xs) * .5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-secondary);text-decoration:none;transition:background var(--transition-fast),border-color var(--transition-fast)}.agent-task-item:hover{background:var(--card-hover);border-color:var(--text-dim)}.agent-task-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.agent-task-id{font-family:var(--font-mono);font-size:var(--space-md);font-weight:600;color:var(--todo)}.agent-task-title{font-size:calc(var(--space-md) + var(--space-xs) * .5);font-weight:500;color:var(--text);line-height:1.4}.agent-task-status{font-size:var(--space-md);color:var(--text-muted)}.agent-task-column{display:inline-flex;align-items:center;padding:calc(var(--space-xs) * .5) var(--space-sm);border-radius:var(--radius-pill);font-size:calc(var(--space-sm) + var(--space-xs) * .5);font-weight:700;text-transform:uppercase;letter-spacing:calc(var(--space-xs) * .1)}.agent-task-column.column-triage{color:var(--triage);background:color-mix(in srgb,var(--triage) 18%,transparent)}.agent-task-column.column-todo{color:var(--todo);background:color-mix(in srgb,var(--todo) 18%,transparent)}.agent-task-column.column-in-progress{color:var(--in-progress);background:color-mix(in srgb,var(--in-progress) 18%,transparent)}.agent-task-column.column-in-review{color:var(--in-review);background:color-mix(in srgb,var(--in-review) 18%,transparent)}.agent-task-column.column-done{color:var(--done);background:color-mix(in srgb,var(--done) 18%,transparent)}.agent-task-column.column-archived{color:var(--text-muted);background:color-mix(in srgb,var(--text-muted) 18%,transparent)}.agent-tasks-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:calc(var(--space-2xl) + var(--space-lg));color:var(--text-muted);text-align:center}.agent-tasks-empty p{margin:0}.config-tab{display:flex;flex-direction:column;gap:var(--space-xl);color:var(--text)}.config-section{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:calc(var(--space-md) + var(--space-sm));color:var(--text)}.config-section .input,.config-section .select,.config-section textarea{background:var(--surface);color:var(--text);border-color:var(--border)}.config-section .input::placeholder,.config-section textarea::placeholder{color:var(--text-dim)}.config-section .input:hover:not(:disabled):not([readonly]),.config-section .select:hover:not(:disabled),.config-section textarea:hover:not(:disabled):not([readonly]){border-color:var(--text-muted)}.config-section .input:focus-visible,.config-section .select:focus-visible,.config-section textarea:focus-visible,.config-section input[type=checkbox]:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.config-section .input:disabled,.config-section .select:disabled,.config-section textarea:disabled,.config-section .btn:disabled,.config-runtime-tab:disabled,.agent-avatar-editor-action:disabled{opacity:var(--opacity-disabled, .6);color:var(--text-muted);cursor:not-allowed}.config-section .input[readonly],.config-section textarea[readonly]{background:var(--surface-muted);color:var(--text-muted)}.config-section input[type=checkbox]{accent-color:var(--todo)}.agent-avatar-editor-actions .agent-avatar-editor-action{background:var(--card);color:var(--text);border-color:var(--border)}.agent-avatar-editor-actions .agent-avatar-editor-action:hover:not(:disabled){background:var(--card-hover);border-color:var(--text-muted)}.agent-avatar-editor-actions .agent-avatar-editor-action:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.config-section h3{font-size:calc(var(--space-md) + var(--space-xs));font-weight:600;margin:0 0 var(--space-sm) 0}.config-section--danger{border:1px solid color-mix(in srgb,var(--color-error) 40%,transparent)}.config-danger-note{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted)}.agent-content-toolbar{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.agent-content-mode-toggle{display:flex;align-items:center;gap:var(--space-xs)}.agent-content-mode-toggle .btn{display:inline-flex;align-items:center;gap:calc(var(--space-xs) + var(--space-sm) * .25)}.agent-content-preview{overflow-y:auto;padding:var(--space-lg);min-height:150px}.agent-content-placeholder{color:var(--text-muted);text-align:center;padding:var(--space-xl);min-height:150px;display:flex;align-items:center;justify-content:center}.config-description{font-size:calc(var(--space-md) + var(--space-xs) * .5);color:var(--text-muted);margin:0 0 calc(var(--space-md) + var(--space-sm)) 0}.config-actions-row{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.config-fields{display:flex;flex-direction:column;gap:var(--space-lg)}.config-field{display:flex;flex-direction:column;gap:calc(var(--space-xs) + var(--space-sm) * .25)}.config-field label{font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:500}.config-role-tags{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:0;padding:var(--space-sm);border:var(--border-width) solid var(--border);border-radius:var(--radius-md)}.config-role-tags legend{padding-inline:var(--space-xs)}.agent-avatar-editor{display:flex;align-items:center;gap:var(--space-md)}.agent-avatar-editor-preview{background:var(--card)}.agent-avatar-editor-actions{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.config-runtime-tabs{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-bottom:var(--space-md)}.config-runtime-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)}.config-runtime-tab:hover{border-color:var(--todo);color:var(--text);background:var(--card-hover)}.config-runtime-tab:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.config-runtime-tab.active{border-color:var(--todo);color:var(--text);background:color-mix(in srgb,var(--todo) 12%,transparent)}.config-hint{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);font-style:italic}.config-error{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--color-error)}.input--error{border-color:var(--color-error)!important}.config-actions{display:flex;align-items:center;gap:var(--space-md);margin-top:calc(var(--space-md) + var(--space-sm));padding-top:var(--space-lg);border-top:1px solid var(--border)}.config-saved-indicator{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)}.config-saved-indicator--error{color:var(--color-error)}.heartbeat-procedure-actions{margin-top:var(--space-sm)}.heartbeat-procedure-viewer{margin-top:var(--space-lg)}.heartbeat-procedure-status{display:inline-flex;align-items:center;gap:var(--space-xs);margin-left:auto}.heartbeat-procedure-status--warning{color:var(--color-warning)}.rating-summary-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:calc(var(--space-md) + var(--space-sm));display:flex;flex-direction:column;gap:var(--space-md)}.rating-score-display{display:flex;align-items:center;gap:var(--space-md)}.rating-average{font-size:var(--space-2xl);font-weight:700;line-height:1}.rating-stats{display:flex;align-items:center;gap:var(--space-md)}.rating-count{font-size:calc(var(--space-md) + var(--space-xs) * .5);color:var(--text-muted)}.rating-trend-badge{font-size:var(--space-md);padding:var(--space-xs) calc(var(--space-md) - var(--space-xs) * .5);border-radius:var(--radius-lg);font-weight:500}.trend-improving{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.trend-declining{background:color-mix(in srgb,var(--color-error) 15%,transparent);color:var(--color-error)}.trend-stable{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.trend-insufficient{background:var(--bg-tertiary);color:var(--text-muted)}.category-breakdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg)}.category-breakdown h4{margin:0 0 var(--space-md) 0;font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:600}.category-breakdown .category-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) 0;border-bottom:1px solid var(--border)}.category-breakdown .category-item:last-child{border-bottom:none}.category-name{text-transform:capitalize;font-size:calc(var(--space-md) + var(--space-xs) * .25)}.category-score{font-weight:600;font-size:calc(var(--space-md) + var(--space-xs) * .25)}.add-rating-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.add-rating-form h4{margin:0;font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:600}.star-selector{display:flex;gap:var(--space-xs)}.star-btn{background:none;border:none;padding:var(--space-xs);cursor:pointer;border-radius:var(--radius-sm);color:var(--text-muted);transition:background-color var(--transition-fast),color var(--transition-fast)}.star-btn:hover{background:var(--card-hover)}.star-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.rating-stars{display:inline-flex;gap:var(--space-xs)}.rating-stars .star-filled{color:var(--color-warning)}.rating-stars .star-empty{color:var(--text-muted)}.add-rating-form .add-rating-category-select,.add-rating-form .add-rating-comment-input{width:100%}.add-rating-form .add-rating-comment-input{resize:vertical;min-height:calc(var(--space-xl) + var(--space-2xl))}.rating-history{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);max-height:calc(var(--space-xl) * 12 + var(--space-md));overflow-y:auto}.rating-history h4{margin:0 0 var(--space-md) 0;font-size:calc(var(--space-md) + var(--space-xs) * .25);font-weight:600}.rating-history .no-ratings{color:var(--text-muted);font-size:calc(var(--space-md) + var(--space-xs) * .25);text-align:center;padding:var(--space-lg)}.rating-history-item{padding:var(--space-md) 0;border-bottom:1px solid var(--border)}.rating-history-item:last-child{border-bottom:none}.rating-item-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.rating-category-badge{font-size:calc(var(--space-sm) + var(--space-xs) * .5);padding:calc(var(--space-xs) * .5) var(--space-sm);background:var(--card-hover);border-radius:var(--radius-pill);text-transform:capitalize}.rating-time{font-size:calc(var(--space-sm) + var(--space-xs) * .5);color:var(--text-muted);margin-left:auto}.rating-delete-btn{background:none;border:none;padding:var(--space-xs);cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:color var(--transition-fast),background-color var(--transition-fast)}.rating-delete-btn:hover{color:var(--color-error);background:color-mix(in srgb,var(--color-error) 10%,transparent)}.rating-comment{margin:var(--space-sm) 0 0 0;font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted);line-height:1.4}.runs-loading-row{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xl)}.runs-toolbar{padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--border)}.runs-toolbar--between{display:flex;justify-content:space-between;align-items:center}.runs-toolbar-meta{font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted)}.run-card--clickable{cursor:pointer}.run-card--clickable:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.run-header-group{display:flex;align-items:center;gap:var(--space-sm)}.run-badge--compact{font-size:calc(var(--space-sm) + var(--space-xs) * .5);padding:calc(var(--space-xs) * .25) calc(var(--space-sm) * .75)}.run-output-summary{cursor:pointer;user-select:none}.run-live-indicator--with-margin{margin-left:var(--space-sm)}.detail-section-body--loading{display:flex;align-items:center;gap:var(--space-sm)}.agent-empty--padded{padding:var(--space-xl)}.logs-fallback-label{font-size:calc(var(--space-sm) + var(--space-xs))}.config-textarea-mono{font-family:var(--font-mono);font-size:calc(var(--space-md) + var(--space-xs) * .25);resize:vertical}.config-textarea-top-spacing{margin-top:var(--space-sm)}.config-hint--block-spacing{margin-bottom:var(--space-md)}.config-hint--block{display:block;margin-bottom:var(--space-sm)}.config-hint--top-spacing{margin-top:var(--space-sm)}.config-hint--inline-loader{display:inline-flex;gap:var(--space-xs);margin-top:var(--space-sm)}.config-inline-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm)}.config-hint--inline-tight{display:flex;align-items:center;gap:var(--space-xs)}.config-hint--warning{color:var(--color-warning)}.agent-heartbeat-auto-claim-card{background:color-mix(in srgb,var(--surface) 60%,transparent);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md)}.agent-heartbeat-preset-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-sm)}.agent-heartbeat-preset-label{display:block;color:var(--text);font-size:calc(var(--space-sm) + var(--space-xs));font-weight:600;margin-bottom:calc(var(--space-xs) * .5)}.agent-heartbeat-preset-btn{min-height:calc(var(--space-xl) + var(--space-md));flex-shrink:0}@media(max-width:768px){.agent-heartbeat-preset-row{flex-direction:column;align-items:stretch}.agent-heartbeat-preset-btn{width:100%;min-height:calc(var(--space-xl) + var(--space-md))}.config-runtime-tabs{grid-template-columns:1fr}.config-runtime-tab{min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-avatar-editor-actions{flex-direction:column;align-items:stretch}.agent-avatar-editor-actions .agent-avatar-editor-action{width:100%;justify-content:center}.skill-multiselect,.skill-multiselect-filter,.skill-multiselect-list,.skill-multiselect-chips{width:100%}.skill-chip{max-width:100%}@media(max-width:767.98px){.agent-detail-modal{min-width:0!important;min-height:0!important;width:100vw!important;height:100dvh!important;max-width:100vw!important;max-height:100dvh;margin:0;border-radius:0;border:none;resize:none}}.agent-detail-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:var(--space-sm);row-gap:var(--space-sm);padding:var(--space-md);padding-top:max(var(--space-md),env(safe-area-inset-top,0))}.agent-detail-identity{grid-column:1;grid-row:1;flex:1 1 auto;min-width:0;gap:var(--space-md)}.agent-detail-icon{width:calc(var(--space-lg) * 2);height:calc(var(--space-lg) * 2);flex-shrink:0}.agent-detail-icon svg{width:calc(var(--space-sm) + var(--space-xs) * 2);height:calc(var(--space-sm) + var(--space-xs) * 2)}.agent-detail-info h2{font-size:calc(var(--space-md) + var(--space-xs) * .75);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-detail-badges{flex-wrap:wrap;row-gap:var(--space-xs);column-gap:var(--space-sm);margin-top:var(--space-xs)}.agent-detail-header-actions{grid-column:2;grid-row:1;flex:0 0 auto;justify-content:flex-end;gap:calc(var(--space-xs) * .5)}.agent-detail-controls{flex:0 0 auto;gap:calc(var(--space-xs) * .5)}.agent-detail-controls .btn--compact{padding:calc(var(--space-sm) - var(--space-xs) * .5) calc(var(--space-md) - var(--space-xs) * .5);font-size:var(--space-md);min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-controls .agent-detail-mobile-icon-control{min-width:calc(var(--space-lg) + var(--space-md) + var(--space-xs));padding-left:calc(var(--space-sm) - var(--space-xs) * .5);padding-right:calc(var(--space-sm) - var(--space-xs) * .5)}.agent-detail-controls .agent-detail-mobile-icon-control .agent-detail-control-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.agent-detail-controls .btn--compact svg{width:calc(var(--space-md) + var(--space-xs) * .5);height:calc(var(--space-md) + var(--space-xs) * .5)}.agent-detail-utility-actions{flex-shrink:0;margin-left:0}.agent-detail-bulk-menu-popover{right:0}.agent-detail-utility-actions .btn-icon{min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs));min-width:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-import-btn{min-width:calc(var(--space-xl) * 3 + var(--space-xs))}.agent-detail-title{flex:1 1 auto;min-width:0;gap:var(--space-md)}.agent-detail-actions{flex:1 1 100%;flex-wrap:wrap;gap:calc(var(--space-xs) + var(--space-sm) * .25)}.agent-detail-actions .btn{padding:calc(var(--space-sm) - var(--space-xs) * .5) calc(var(--space-md) - var(--space-xs) * .5);font-size:calc(var(--space-md) + var(--space-xs) * .25);min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-actions .btn svg{width:calc(var(--space-sm) + var(--space-xs) * 1.5);height:calc(var(--space-sm) + var(--space-xs) * 1.5)}.agent-detail-actions .btn-icon{min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs));min-width:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-tabs{padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.agent-detail-tabs::-webkit-scrollbar{display:none}.agent-detail-tab{padding:var(--space-md) calc(var(--space-md) + var(--space-xs) * .5);font-size:.875rem;touch-action:pan-x pan-y;white-space:nowrap;min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.agent-detail-content{padding:var(--space-lg);-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.agent-detail-footer{flex-wrap:wrap;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);padding-bottom:max(var(--space-sm),env(safe-area-inset-bottom,0));font-size:calc(var(--space-sm) + var(--space-xs) * .75)}.agent-detail-id{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-tab{gap:var(--space-lg)}.dashboard-summary-hero__heading{flex-wrap:wrap;row-gap:var(--space-sm);column-gap:var(--space-md)}.dashboard-summary-hero__meta{align-items:flex-start;row-gap:var(--space-lg);column-gap:var(--space-md)}.dashboard-summary-hero__health{overflow-wrap:anywhere}.dashboard-summary-skills{flex-direction:column;align-items:flex-start;row-gap:var(--space-sm)}.dashboard-summary-skill-detail-header{flex-direction:column;align-items:flex-start}.dashboard-section{padding:var(--space-lg)}.info-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-md)}.stats-grid{grid-template-columns:repeat(3,1fr);gap:var(--space-md)}.stat-value{font-size:calc(var(--space-lg) + var(--space-xs) * .5)}.logs-empty{padding:var(--space-2xl) var(--space-lg)}.agent-mail-tab-header{flex-direction:column;align-items:flex-start}.agent-mail-tab .mailbox-agent-subtabs{width:100%}.agent-mail-tab .mailbox-agent-subtab{flex:1}.agent-mail-tab .agent-mail-tab-detail{width:100%;padding:var(--space-md)}.agent-mail-tab .agent-mail-tab-back{min-height:calc(var(--space-lg) * 2 + var(--space-xs))}.run-card{padding:var(--space-md)}.run-header{flex-wrap:wrap;gap:calc(var(--space-xs) + var(--space-sm) * .25)}.run-details{flex-wrap:wrap}.run-logs-container{padding:var(--space-sm)}.run-output-panel{max-height:calc(var(--space-2xl) * 5)}.run-context-grid{flex-direction:column;gap:var(--space-xs)}.run-details .text-muted{min-width:0;overflow-wrap:anywhere}.config-tab{gap:var(--space-lg)}.config-section{padding:var(--space-lg)}.config-section .input,.config-section .select,.config-section textarea{font-size:calc(var(--space-md) + var(--space-xs));min-height:calc(var(--space-lg) + var(--space-md) + var(--space-xs))}.config-actions{flex-direction:column;align-items:stretch;gap:var(--space-sm)}.config-actions .btn{width:100%;justify-content:center}.heartbeat-procedure-status{margin-left:0}}@media(max-width:480px){.dashboard-summary-card{padding:var(--space-md)}.dashboard-summary-hero__heading{row-gap:var(--space-md)}.dashboard-summary-hero__meta{row-gap:var(--space-lg);column-gap:var(--space-sm)}.info-grid,.stats-grid{grid-template-columns:1fr}.agent-detail-actions{flex-direction:column;width:100%}.agent-detail-actions .btn{width:100%;justify-content:center}.agent-detail-actions .btn-icon{align-self:flex-end}.config-actions,.agent-avatar-editor-actions{width:100%}.config-runtime-tabs,.skill-multiselect{gap:var(--space-xs)}.agent-detail-footer .divider,.agent-detail-footer .text-muted,.agent-detail-footer .link{display:none}}@media(max-width:768px){.agent-avatar-editor{flex-direction:column;align-items:flex-start}.agent-avatar-editor-actions{width:100%}.agent-avatar-editor-actions .btn{min-height:calc(var(--space-lg) * 2 + var(--space-xs))}.agent-dialog-overlay{padding:0;align-items:stretch}.agent-dialog{width:100vw!important;height:100dvh;max-width:100%!important;max-height:100dvh;border-radius:0;border:none}.agent-dialog-header{padding:max(var(--space-md),env(safe-area-inset-top,0px)) var(--space-lg) var(--space-md) var(--space-lg);flex-shrink:0}.agent-dialog-body{padding:var(--space-lg);-webkit-overflow-scrolling:touch}.agent-dialog-footer{padding:var(--space-md) var(--space-lg);padding-bottom:max(var(--space-md),env(safe-area-inset-bottom,0px));flex-wrap:wrap;gap:var(--space-sm)}.agent-dialog-field .input,.agent-dialog-field .select,.agent-dialog-field textarea{font-size:calc(var(--space-md) + var(--space-xs));min-height:calc(var(--space-lg) * 2 + var(--space-xs))}.agent-dialog-summary-row{flex-direction:column;gap:calc(var(--space-xs) * .5)}.agent-dialog-summary-row>span:first-child,.agent-dialog-summary-row-label{width:auto}.agent-dialog-steps{padding:var(--space-sm) var(--space-lg)}.agent-dialog-step{flex:1;width:auto;height:calc(var(--space-xs) - var(--space-xs) * .25)}.agent-dialog-tabs{grid-template-columns:1fr;gap:calc(var(--space-sm) - var(--space-xs) * .5);margin-bottom:var(--space-md)}.agent-dialog-tab{min-height:calc(var(--space-lg) * 2 + var(--space-xs));text-align:left}.agent-import-file-upload{flex-direction:column;align-items:stretch;gap:var(--space-sm)}.agent-import-textarea{font-size:calc(var(--space-md) + var(--space-xs));min-height:calc(var(--space-xl) * 4 + var(--space-xs))}.agent-import-agent-list{max-height:calc(100dvh - (var(--space-xl) * 10 + var(--space-lg)))}.agent-import-result-stats{flex-direction:column;gap:var(--space-sm);align-items:center}.agent-import-browse-list{max-height:calc(100dvh - (var(--space-xl) * 10 + var(--space-lg)))}.agent-import-skill-list{max-height:calc(100dvh - (var(--space-xl) * 15 + var(--space-md)))}}@media(max-width:480px){.agent-dialog-body{padding:var(--space-md)}.agent-dialog-footer{flex-direction:column}.agent-dialog-footer .btn{width:100%;justify-content:center}}.agent-permission-inherit-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);margin-bottom:var(--space-sm)}.agent-capability-grants{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-md)}.agent-capability-grants h4{margin:0;color:var(--text-primary);font-size:var(--font-size-md)}.agent-capability-grants-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--size-card-min, 16rem)),1fr));gap:var(--space-sm)}.agent-capability-grant-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.agent-capability-grant-name{display:block;color:var(--text-primary);font-weight:600}@media(max-width:768px){.agent-capability-grants-grid{grid-template-columns:1fr}.agent-capability-grant-row,.agent-permission-inherit-banner{align-items:flex-start;flex-direction:column}}.agent-memory-file-editor{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;display:flex;flex-direction:column;min-height:320px;max-height:55vh}.agent-memory-file-editor .cm-editor{height:100%;min-height:0}.agent-memory-file-editor .cm-scroller{overflow:auto}.memory-consolidation-history{margin-block:var(--space-md);padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.memory-consolidation-history__heading,.memory-consolidation-history__row{display:flex;align-items:center;gap:var(--space-sm);justify-content:space-between}.memory-consolidation-history__heading h4{margin:0;color:var(--text-primary)}.memory-consolidation-history__list{display:grid;gap:var(--space-sm);margin:var(--space-sm) 0 0;padding:0;list-style:none}.memory-consolidation-history__row{flex-wrap:wrap;padding:var(--space-sm);border-radius:var(--radius-sm);background:var(--surface-muted);color:var(--text-muted)}.memory-consolidation-history__row--completed strong{color:var(--color-success)}.memory-consolidation-history__row--skipped strong{color:var(--color-warning)}.memory-consolidation-history__row--failed strong{color:var(--color-error)}.dashboard-summary-skill-badge[data-skill-state=disabled]{border-color:var(--color-warning)}.dashboard-summary-skill-badge[data-skill-state=unknown]{border-color:var(--color-error)}.reflections-tab{padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-lg)}.reflections-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.reflections-header h3{display:flex;align-items:center;gap:var(--space-sm);font-size:1rem;font-weight:600;color:var(--text)}.reflections-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-md)}.reflections-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md);text-align:center}.reflections-stat-card .stat-value{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);font-size:1.5rem;font-weight:700;color:var(--text);margin-bottom:var(--space-xs)}.reflections-stat-card .stat-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.reflections-no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xl);color:var(--text-muted);text-align:center}.reflections-list{display:flex;flex-direction:column;gap:var(--space-md)}.reflections-loading-indicator{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-lg)}.reflections-ratings-section{display:flex;flex-direction:column;gap:var(--space-md)}.reflections-ratings-section>h4,.reflections-list h4{font-size:.875rem;font-weight:600;color:var(--text);margin-bottom:var(--space-xs)}.reflection-cards{display:flex;flex-direction:column;gap:var(--space-sm)}.reflection-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md);cursor:pointer;transition:border-color .15s,background-color .15s}.reflection-card:hover{border-color:var(--border);background:var(--card-hover)}.reflection-card:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.reflection-card--expanded{border-color:var(--accent)}.reflection-card-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}.reflection-trigger-badge{font-size:.7rem;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.05em}.reflection-trigger-periodic{background:color-mix(in srgb,var(--color-info) 15%,transparent);color:var(--color-info)}.reflection-trigger-post-task{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.reflection-trigger-manual{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.reflection-trigger-user-requested{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.reflection-timestamp{font-size:.75rem;color:var(--text-muted);flex:1}.reflection-chevron{color:var(--text-muted)}.reflection-summary{font-size:.875rem;color:var(--text);line-height:1.5}.reflection-details{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:var(--space-md)}.reflection-insights h5,.reflection-suggestions h5{display:flex;align-items:center;gap:var(--space-xs);font-size:.8rem;font-weight:600;color:var(--text);margin-bottom:var(--space-xs)}.reflection-insights ul,.reflection-suggestions ul{list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.reflection-insights li,.reflection-suggestions li{font-size:.8rem;color:var(--text-muted);padding-left:var(--space-md);position:relative}.reflection-insights li:before{content:"•";position:absolute;left:4px;color:var(--color-success)}.reflection-suggestions li:before{content:"→";position:absolute;left:0;color:var(--accent)}.reflection-metrics{background:var(--bg);border-radius:var(--radius-sm);padding:var(--space-sm)}.reflection-metrics h5{font-size:.75rem;font-weight:600;color:var(--text-muted);margin-bottom:var(--space-xs)}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--space-sm)}.metric{display:flex;flex-direction:column;gap:2px}.metric-label{font-size:.7rem;color:var(--text-muted)}.metric-value{font-size:.875rem;font-weight:600;color:var(--text)}.reflection-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-2xl);color:var(--text-muted);text-align:center}.reflection-empty p{font-size:.875rem}@media(max-width:768px){.reflections-header{flex-wrap:wrap;align-items:flex-start}.reflections-header .btn{width:100%;justify-content:center}}.budget-progress-container{margin-top:var(--space-xs)}.budget-progress-bar{width:100%;height:var(--space-sm);background:var(--surface);border-radius:var(--radius-sm);overflow:hidden;margin-top:var(--space-xs)}.budget-progress-bar__fill{height:100%;border-radius:var(--radius-sm);transition:width var(--transition-slow),background-color var(--transition-slow)}.budget-progress-bar__fill--green{background:var(--color-success)}.budget-progress-bar__fill--amber{background:var(--color-warning)}.budget-progress-bar__fill--red{background:var(--color-error)}.budget-progress-label{font-size:.75rem;color:var(--text-muted);margin-top:var(--space-xs);display:block}.budget-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:calc(var(--space-xs) / 2) var(--space-sm);border-radius:var(--radius-pill);font-size:.75rem;font-weight:500}.budget-warning-banner{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--state-error-bg, color-mix(in srgb, var(--color-error) 15%, transparent));color:var(--state-error-text);border:1px solid var(--state-error-border);font-size:.875rem;margin-bottom:var(--space-md)}.btn-reset-budget{margin-top:var(--space-sm)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as B,b5 as N,b6 as R,b7 as O}from"./index-
|
|
1
|
+
import{c as B,b5 as N,b6 as R,b7 as O}from"./index-DpCHwyiD.js";import{r as b,j as e}from"./vendor-react-SZ_qB27O.js";import{u as F}from"./vendor-i18n-Duky4gdQ.js";/**
|
|
2
2
|
* @license lucide-react v1.7.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AgentDetailView-0G9qFd4j.js","assets/vendor-react-SZ_qB27O.js","assets/index-DpCHwyiD.js","assets/vendor-i18n-Duky4gdQ.js","assets/vendor-codemirror-CcrtqoCy.js","assets/vendor-reactflow-BlIeoTu4.js","assets/vendor-reactflow-BnuhLJ6X.css","assets/vendor-xterm-BNq00GSj.js","assets/vendor-xterm-LZoznX6r.css","assets/index-0ovTXt3t.css","assets/standing-instructions-template-pZtzo1lK.js","assets/standing-instructions-template-w7Ouw_37.css","assets/useDiscoveredSkillsCache-BYqP-afh.js","assets/ExperimentalAgentOnboardingModal-CS1Sdogm.js","assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css","assets/AgentPermissionPolicyEditor-BM68g7wo.js","assets/AgentPermissionPolicyEditor-CXib-igK.css","assets/AgentDetailView-jzgy1BAS.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as ma,bW as bt,eb as Vs,as as zt,Z as Bs,ec as Ws,bh as ns,bN as Us,ed as Ks,ca as na,ee as Gs,c2 as ls,ef as la,aI as ia,aA as Ys,C as Xs,k as is,c3 as ra,d6 as rs,K as os,cn as qs,cq as Zs,bS as Ot,eg as Js,ai as Qs,ao as en,dj as tn,I as an,ar as Vt,dZ as Da,c8 as sn,aK as Fa,cv as nn,ap as ln,aq as rn,eh as on,aJ as cn,L as Gt,a$ as kt,R as ht,X as $a,dR as dn,ei as un,dy as At,ag as gn,dA as Yt,aY as mn,da as hn,bL as ge,bT as De,ej as pn,cm as pt,dd as bn,ek as xn,el as za,V as fn,em as vn,P as Oa,en as jn,bX as Ft,bV as wt,F as Va,eo as yn,cB as Nn,ep as kn,eq as wn,dJ as Cn,c4 as Ba,cs as ut,cr as Ct,a8 as Sn,aZ as An,c6 as Rn,er as En,cb as Wa,c5 as Tn}from"./index-DpCHwyiD.js";import{r as s,j as e,b as In}from"./vendor-react-SZ_qB27O.js";import{w as Ua,a as Mn,c as Ka,f as _n,r as Pn}from"./standing-instructions-template-pZtzo1lK.js";import{u as Te}from"./vendor-i18n-Duky4gdQ.js";import{g as Ln,i as Hn,p as Dn,w as Fn,c as Ga,a as $n,A as zn,F as On,O as Xt,b as Ya,r as Vn,d as Bn,e as Wn,o as Un}from"./agentsOrgChartLayout-C0UP_X3z.js";import{c as qt,s as Kn,g as Gn,f as Xa}from"./agent-import-generation-CjiYXzCr.js";import{ExperimentalAgentOnboardingModal as Yn}from"./ExperimentalAgentOnboardingModal-CS1Sdogm.js";import{U as oa}from"./upload-CDovVbu2.js";import{F as Xn}from"./folder-open-CteOypVk.js";import{u as qn}from"./useDiscoveredSkillsCache-BYqP-afh.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";/**
|
|
3
|
+
* @license lucide-react v1.7.0 - ISC
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the ISC license.
|
|
6
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/const Zn=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],qa=ma("network",Zn);/**
|
|
8
|
+
* @license lucide-react v1.7.0 - ISC
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the ISC license.
|
|
11
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/const Jn=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],Qn=ma("zoom-in",Jn);/**
|
|
13
|
+
* @license lucide-react v1.7.0 - ISC
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the ISC license.
|
|
16
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/const el=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]],tl=ma("zoom-out",el);function Za(n){return typeof n=="number"&&Number.isFinite(n)?n:0}function gt(n){return n.toLocaleString()}function al({agents:n}){const{t:l}=Te("app"),{rows:g,totalInputTokens:u,totalOutputTokens:h,totalTokens:a}=s.useMemo(()=>{const b=n.map(i=>{const x=Za(i.totalInputTokens),y=Za(i.totalOutputTokens);return{id:i.id,name:i.name,inputTokens:x,outputTokens:y,totalTokens:x+y}}).sort((i,x)=>x.totalTokens-i.totalTokens||i.name.localeCompare(x.name)||i.id.localeCompare(x.id));return{rows:b,totalInputTokens:b.reduce((i,x)=>i+x.inputTokens,0),totalOutputTokens:b.reduce((i,x)=>i+x.outputTokens,0),totalTokens:b.reduce((i,x)=>i+x.totalTokens,0)}},[n]),C=a>0;return e.jsxs("section",{className:"agent-token-stats-panel","aria-label":l("agents.tokenStatistics","Agent token usage statistics"),children:[e.jsx("header",{className:"agent-token-stats-panel__header",children:e.jsx("h3",{className:"agent-token-stats-panel__title",children:l("agents.tokenUsageByAgent","Token Usage by Agent")})}),e.jsxs("div",{className:"agent-token-stats-panel__totals",role:"list","aria-label":l("agents.tokenUsageTotals","Token usage totals"),children:[e.jsxs("div",{className:"agent-token-stats-panel__total-card",role:"listitem",children:[e.jsx("span",{className:"agent-token-stats-panel__total-label",children:l("agents.inputTokens","Input Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:gt(u)})]}),e.jsxs("div",{className:"agent-token-stats-panel__total-card",role:"listitem",children:[e.jsx("span",{className:"agent-token-stats-panel__total-label",children:l("agents.outputTokens","Output Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:gt(h)})]}),e.jsxs("div",{className:"agent-token-stats-panel__total-card",role:"listitem",children:[e.jsx("span",{className:"agent-token-stats-panel__total-label",children:l("agents.combinedTokens","Combined Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:gt(a)})]})]}),C?e.jsx("div",{className:"agent-token-stats-panel__table-wrapper",children:e.jsxs("table",{className:"agent-token-stats-panel__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:l("agents.agent","Agent")}),e.jsx("th",{scope:"col",children:l("agents.input","Input")}),e.jsx("th",{scope:"col",children:l("agents.output","Output")}),e.jsx("th",{scope:"col",children:l("agents.total","Total")})]})}),e.jsx("tbody",{children:g.map(b=>e.jsxs("tr",{children:[e.jsxs("th",{scope:"row",className:"agent-token-stats-panel__agent-cell",children:[e.jsx("span",{className:"agent-token-stats-panel__agent-name",children:b.name}),e.jsx("span",{className:"agent-token-stats-panel__agent-id",children:b.id})]}),e.jsx("td",{children:gt(b.inputTokens)}),e.jsx("td",{children:gt(b.outputTokens)}),e.jsx("td",{className:"agent-token-stats-panel__total-cell",children:gt(b.totalTokens)})]},b.id))})]})}):e.jsx("div",{className:"agent-token-stats-panel__empty",role:"status",children:l("agents.noTokenUsageYet","No token usage recorded yet. Token totals appear here once agents run.")})]})}const sl=[{icon:bt,label:"Active Agents",valueKey:"activeCount",className:"agent-metric-card--active"},{icon:Vs,label:"Assigned Tasks",valueKey:"assignedTaskCount",className:"agent-metric-card--tasks"},{icon:zt,label:"Success Rate",valueKey:"successRate",className:"agent-metric-card--success"},{icon:Bs,label:"Total Runs",valueKey:"completedRuns",className:"agent-metric-card--runs"}];function nl({stats:n,className:l=""}){return n?e.jsx("div",{className:`agent-metrics-bar ${l}`.trim(),children:sl.map(g=>{const u=g.valueKey==="successRate"?`${Math.round(n.successRate*100)}%`:n[g.valueKey];return e.jsxs("div",{className:`agent-metric-card ${g.className}`,children:[e.jsx(g.icon,{size:18}),e.jsxs("div",{className:"agent-metric-info",children:[e.jsx("span",{className:"agent-metric-value",children:u}),e.jsx("span",{className:"agent-metric-label",children:g.label})]})]},g.label)})}):null}const Rt=200;function Zt(n){return n.slice(-Rt).reverse().map(l=>({type:l.type??"text",text:l.text??"",timestamp:l.timestamp||void 0,...l.content!==void 0?{content:l.content}:{}}))}function ll(n,l){const[g,u]=s.useState([]),[h,a]=s.useState(!1),C=s.useRef(null),b=s.useRef(!1),i=s.useRef([]),x=s.useRef(0),y=s.useRef(n),S=s.useRef(l);return(y.current!==n||S.current!==l)&&(y.current=n,S.current=l,x.current++,C.current&&(C.current(),C.current=null),b.current=!1,i.current=[],u([]),a(!1)),s.useEffect(()=>{if(!n){u([]),a(!1);return}const N=x.current;let P=`/api/tasks/${encodeURIComponent(n)}/logs/stream`;l&&(P+=`?projectId=${encodeURIComponent(l)}`);const I=()=>x.current!==N,W=Ws({run:async()=>{if(b.current||I())return;b.current=!0,i.current=[];let R=!1;try{const k=await Us(n,l,{limit:Rt});if(I())return;const L=i.current;i.current=[],R=!0,u(Zt(Ks(k.entries,L)))}finally{if(b.current=!1,!R&&!I()){const k=i.current;i.current=[],k.length>0&&u(L=>[...Zt(k),...L].slice(0,Rt))}}}}),$=ns(P,{onReconnect:()=>W.trigger(),events:{"agent:log":R=>{if(!I())try{const k=JSON.parse(R.data),L={type:k.type??"text",text:k.text??k.content??"",timestamp:k.timestamp??"",taskId:n,...k.content!==void 0?{content:k.content}:{}};if(b.current){i.current.push(L);return}u(M=>{const H=[...Zt([L]),...M];return H.length>Rt?H.slice(0,Rt):H})}catch{}}},onOpen:()=>{x.current===N&&a(!0)},onError:()=>{x.current===N&&a(!1)}});return C.current=$,()=>{W.dispose(),$(),C.current=null,x.current===N&&a(!1)}},[n,l]),{entries:g,isConnected:h}}const Ja=200,il=1e3;class rl{listeners=new Set;retainers=new Map;events=[];activityByAgentId=new Map;seenIds=new Set;unsubscribe=null;abortController=null;expiryTimer=null;projectId;contextVersion=0;closeVersion=0;snapshot={events:[],activityByAgentId:new Map,nowTick:Date.now()};subscribe=l=>(this.listeners.add(l),()=>this.listeners.delete(l));getSnapshot=()=>this.snapshot;retain(l,g){const u=this.projectId;if(this.retainers.set(l,g),this.closeVersion++,u!==g){this.switchProject(g);return}if(this.retainers.size===1){if(this.unsubscribe)return;this.open(g)}}release(l){if(this.retainers.delete(l),this.retainers.size!==0)return;const g=++this.closeVersion;queueMicrotask(()=>{this.retainers.size===0&&this.closeVersion===g&&this.close()})}switchProject(l){this.closeTransport(),this.projectId=l,this.contextVersion++,this.events=[],this.activityByAgentId.clear(),this.seenIds.clear(),this.publish(),this.openTransport()}open(l){this.projectId=l,this.contextVersion++,this.openTransport()}openTransport(){const l=this.contextVersion,g=this.projectId?`?projectId=${encodeURIComponent(this.projectId)}`:"",u=this.projectId;this.unsubscribe=ns(`/api/events${g}`,{events:{"agent:activity":h=>this.handleFrame(h,l,u)},onReconnect:()=>this.seed(l,u)}),this.seed(l,u)}closeTransport(){this.unsubscribe?.(),this.unsubscribe=null,this.abortController?.abort(),this.abortController=null,this.stopExpiryClock()}close(){this.closeTransport()}async seed(l,g){this.abortController?.abort();const u=new AbortController;this.abortController=u;try{const h=await Ln({limit:Ja,projectId:g},{signal:u.signal});if(u.signal.aborted||l!==this.contextVersion||g!==this.projectId)return;let a=!1;for(const C of h.events)a=this.mergeEvent(C,g)||a;a&&this.publish(),this.updateExpiryClock()}catch{}finally{this.abortController===u&&(this.abortController=null)}}handleFrame(l,g,u){if(!(g!==this.contextVersion||u!==this.projectId))try{const h=JSON.parse(String(l.data));if("truncated"in h){this.seed(g,u);return}this.mergeEvent(h,u)&&this.publish(),this.updateExpiryClock()}catch{}}mergeEvent(l,g){if(g!==void 0&&l?.projectId!==g||!l||Hn(l.type)||typeof l.eventId!="string"||this.seenIds.has(l.eventId)||Dn(l.occurredAt)===null)return!1;this.seenIds.add(l.eventId),this.events.push(Fn(l,Date.now())),this.events.sort(Ga),this.events.length>Ja&&this.events.pop(),this.activityByAgentId.clear();for(const u of this.events){const h=this.activityByAgentId.get(u.agentId);(!h||Ga(u,h)<0)&&this.activityByAgentId.set(u.agentId,u)}return!0}canExpire(l){return this.events.some(g=>{const u=$n(g,l);return u!==null&&(u<zn||u<On)})}updateExpiryClock(){this.retainers.size===0||!this.canExpire(Date.now())||this.expiryTimer||(this.expiryTimer=setInterval(()=>{const l=Date.now();this.publish(l),this.canExpire(l)||this.stopExpiryClock()},il))}stopExpiryClock(){this.expiryTimer&&(clearInterval(this.expiryTimer),this.expiryTimer=null)}publish(l=Date.now()){this.snapshot={events:[...this.events],activityByAgentId:new Map(this.activityByAgentId),nowTick:l};for(const g of this.listeners)g()}resetForTests(){this.closeTransport(),this.listeners.clear(),this.retainers.clear(),this.events=[],this.activityByAgentId.clear(),this.seenIds.clear(),this.projectId=void 0,this.contextVersion=0,this.closeVersion++,this.snapshot={events:[],activityByAgentId:new Map,nowTick:Date.now()}}}const St=new rl;let ol=0;function cs(n){const l=s.useRef(null);return l.current||(l.current=`agent-activity-${++ol}`),s.useEffect(()=>{const g=l.current;return St.retain(g,n),()=>St.release(g)},[n]),s.useSyncExternalStore(St.subscribe,St.getSnapshot,St.getSnapshot)}const cl=5e3;function dl({agent:n,projectId:l,onSelect:g,onOpenTaskLogs:u,activity:h}){const{t:a}=Te("app"),{entries:C,isConnected:b}=ll(n.taskId,l),[i,x]=s.useState(null),y=s.useRef(null),[S,T]=s.useState(!1);s.useEffect(()=>{if(typeof IntersectionObserver>"u"){T(!0);return}const E=y.current;if(!E)return;const z=new IntersectionObserver(([Y])=>{T(Y?.isIntersecting??!0)},{rootMargin:"200px"});return z.observe(E),()=>z.disconnect()},[n.id]),s.useEffect(()=>{if(!n.taskId){x(null);return}if(!S)return;let E=!1,z;const Y=async()=>{try{const X=await Ys(n.taskId,l);E||x(X)}catch{}finally{E||(z=setTimeout(Y,cl))}};return Y(),()=>{E=!0,z&&clearTimeout(z)}},[n.taskId,S,l]);const N=n.lastHeartbeatAt?Math.floor((Date.now()-new Date(n.lastHeartbeatAt).getTime())/1e3):0,P=(()=>{if(!n.lastHeartbeatAt)return null;const E=na(n.runtimeConfig?.heartbeatIntervalMs),z=new Date(n.lastHeartbeatAt).getTime()+E,Y=Math.round((z-Date.now())/1e3);return Number.isFinite(Y)?Y<=0?a("agents.heartbeatOverdue","Heartbeat overdue {{elapsed}}",{elapsed:Jt(-Y)}):a("agents.nextHeartbeat","Next heartbeat in {{elapsed}}",{elapsed:Jt(Y)}):null})(),{stepNumber:I,totalSteps:_,hasSteps:W}=Gs(i),$=i?.steps?.[I],R=W?i?.steps?.slice(0,I).map((E,z)=>({step:E,index:z})).filter(({step:E})=>E.status==="done"||E.status==="skipped").at(-1):void 0,k=i?.modelId,L=()=>{g&&g(n.id)},M=E=>{E.stopPropagation(),n.taskId&&u&&u(n.taskId)},H=E=>{(E.key==="Enter"||E.key===" ")&&(E.preventDefault(),L())};return e.jsxs("div",{ref:y,className:"live-agent-card",onClick:L,onKeyDown:H,role:"button",tabIndex:0,"aria-label":a("agents.selectAgent","Select agent {{name}}",{name:n.name}),children:[e.jsxs("div",{className:"live-agent-card-header",children:[e.jsxs("div",{className:"live-agent-card-name",children:[e.jsx("span",{className:`status-dot ${n.state==="running"?"status-dot--pending":"status-dot--online"}`,"aria-hidden":"true"}),e.jsx("span",{children:n.name})]}),n.taskId&&e.jsx("span",{className:"live-agent-task badge",children:e.jsx(ls,{taskId:n.taskId,taskColumn:n.taskColumn})}),n.taskId&&e.jsx(la,{taskId:n.taskId,isInViewport:S,projectId:l})]}),(h?.summary||R)&&e.jsxs("div",{className:"live-agent-card-activity",children:[h?.summary&&e.jsx("div",{className:"live-agent-card-now-doing",children:h.summary}),R&&e.jsxs("div",{className:"live-agent-card-last-step",children:["Last completed Step ",R.index,": ",R.step.name]})]}),e.jsx("div",{className:"live-agent-card-transcript",children:C.length===0?e.jsx("div",{className:"live-agent-card-empty",children:n.taskId?$?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"live-agent-card-status",children:a("agents.step","Step {{number}}{{total}}: {{name}}",{number:I,total:_?`/${_}`:"",name:$.name})}),k&&e.jsx("div",{className:"live-agent-card-status-sub",children:k}),e.jsx("div",{className:"live-agent-card-status-sub",children:b?a("agents.waitingOutput","Waiting for output..."):a("agents.connectingStream","Connecting to log stream...")})]}):e.jsx("span",{children:b?a("agents.waitingOutput","Waiting for output..."):a("agents.connecting","Connecting...")}):e.jsx("span",{children:n.state==="running"?a("agents.starting","Starting..."):a("agents.idleNoTask","Idle — no task assigned")})}):C.slice(0,20).map((E,z)=>e.jsx("div",{className:"live-agent-card-line",children:E.text},z))}),e.jsxs("div",{className:"live-agent-card-footer",children:[e.jsxs("div",{className:"live-agent-card-footer-meta",children:[e.jsx("span",{className:"text-secondary",title:a("agents.timeSinceLastHeartbeat","Time since last heartbeat"),children:Jt(N)}),P&&e.jsx("span",{className:"live-agent-card-next-heartbeat",title:P,children:P})]}),e.jsxs("div",{className:"live-agent-card-footer-actions",children:[n.taskId&&u&&e.jsxs("button",{type:"button",className:"live-agent-card-logs-btn",onClick:M,title:a("agents.viewLiveLogs","View live run logs"),"aria-label":a("agents.viewLogsFor","View live logs for {{taskId}}",{taskId:n.taskId}),children:[e.jsx(ia,{size:12}),e.jsx("span",{children:a("agents.liveLogs","Live logs")})]}),b&&e.jsx(bt,{size:12,className:"live-agent-streaming-dot"})]})]})]})}function Jt(n){return n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${n%60}s`:`${Math.floor(n/3600)}h ${Math.floor(n%3600/60)}m`}function ul({agents:n,projectId:l,onAgentSelect:g,onOpenTaskLogs:u,className:h=""}){const{t:a}=Te("app"),C=cs(l),b=Array.from(new Map(n.map(i=>[i.id,i])).values());return b.length===0?null:e.jsxs("div",{className:`active-agents-panel ${h}`.trim(),children:[e.jsxs("div",{className:"active-agents-panel-header",children:[e.jsx(bt,{size:16}),e.jsx("span",{children:a("agents.activeAgents","Active Agents ({{count}})",{count:b.length})})]}),e.jsx("div",{className:"active-agents-grid",children:b.map(i=>e.jsx(dl,{agent:i,projectId:l,onSelect:g,onOpenTaskLogs:u,activity:C.activityByAgentId.get(i.id)},i.id))})]})}function gl({stats:n,activeAgents:l,projectId:g,isOpen:u,onToggle:h,onSelectAgent:a,onOpenTaskLogs:C}){const{t:b}=Te("app"),i=l.filter(y=>y.state==="active").length,x=l.filter(y=>y.state==="running").length;return e.jsxs("section",{className:"agents-overview-bar","aria-label":b("agents.overviewLabel","Agents overview"),children:[e.jsxs("button",{type:"button",className:"agents-overview-bar__toggle","aria-expanded":u,onClick:h,children:[e.jsxs("span",{className:"agents-overview-bar__title-wrap",children:[u?e.jsx(Xs,{size:16,"aria-hidden":"true"}):e.jsx(is,{size:16,"aria-hidden":"true"}),e.jsx("span",{className:"agents-overview-bar__title",children:b("agents.overview","Overview")})]}),e.jsx("span",{className:"agents-overview-bar__meta text-secondary",children:b("agents.statusCount","{{activeCount}} active · {{runningCount}} running",{activeCount:i,runningCount:x})})]}),u?e.jsxs("div",{className:"agents-overview-bar__content",children:[e.jsx(nl,{stats:n,className:"agents-overview-bar__metrics"}),e.jsx(ul,{agents:l,projectId:g,onAgentSelect:a,onOpenTaskLogs:C,className:"agents-overview-bar__active-panel"})]}):null]})}function Qt({title:n="No agents found",description:l="Create an agent to get started",ctaLabel:g="Create Agent",onCtaClick:u}){return e.jsxs("div",{className:"agent-empty",children:[e.jsx(ra,{size:48,opacity:.3,className:"agent-empty-state__icon"}),e.jsx("p",{className:"agent-empty-state__title",children:n}),e.jsx("p",{className:"agent-empty-state__description text-secondary",children:l}),u?e.jsx("button",{type:"button",className:"btn btn-task-create btn-sm",onClick:u,children:g}):null]})}const Qa=3,ea=1e3;function ml({isOpen:n,onClose:l,onGenerated:g,projectId:u}){const{t:h}=Te("app");rs(n);const[a,C]=s.useState(""),[b,i]=s.useState({type:"input"}),[x,y]=s.useState(null),[S,T]=s.useState(!1),N=s.useRef(null),P=s.useRef(null);s.useEffect(()=>{n&&b.type==="input"&&P.current?.focus()},[n,b.type]),s.useEffect(()=>{if(!n&&N.current){const k=N.current;N.current=null,qt(k,u).catch(()=>{})}},[n,u]),s.useEffect(()=>{if(!n)return;const k=L=>{L.key==="Escape"&&I()};return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[n]);const I=s.useCallback(()=>{if(N.current){const k=N.current;N.current=null,qt(k,u).catch(()=>{})}C(""),i({type:"input"}),y(null),T(!1),l()},[l,u]),_=s.useCallback(async()=>{if(!(!a.trim()||a.trim().length<Qa)){y(null),i({type:"loading"});try{const{sessionId:k}=await Kn(a.trim(),u);N.current=k;const{spec:L}=await Gn(k,u);i({type:"preview",spec:L,sessionId:k})}catch(k){const L=k instanceof Error?k.message:"Failed to generate agent specification";L.includes("429")||L.toLowerCase().includes("rate limit")?y(h("agents.generation.rateLimited","Too many requests. Please wait a moment and try again.")):y(L),i({type:"input"}),N.current=null}}},[a,u]),W=s.useCallback(async()=>{if(N.current){const k=N.current;N.current=null;try{await qt(k,u)}catch{}}await _()},[_,u]),$=s.useCallback(()=>{b.type==="preview"&&(N.current=null,g(b.spec),C(""),i({type:"input"}),y(null),T(!1),l())},[b,g,l]);if(!n)return null;const R=a.trim().length>=Qa&&a.trim().length<=ea;return e.jsx(os,{windowKey:"agent-generation",modal:!0,title:h("agents.generation.title","Generate Agent"),ariaLabel:h("agents.generateWithAiLabel","Generate agent with AI"),onClose:I,hideHeader:!0,dragHandleSelector:".agent-generation-modal .agent-dialog-header",className:"floating-window--agent-generation",defaultSize:{width:640,height:560},minSize:{width:400,height:300},persistGeometryKey:"floating-window:agent-generation",suspendGeometryPersistenceOnMobile:!0,suspendGeometryPersistenceOnShortViewport:!0,closeOnOutsidePointerDown:!0,children:e.jsxs("div",{className:"agent-dialog agent-generation-modal",children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsxs("span",{className:"agent-dialog-header-title",children:[e.jsx("span",{className:"agent-dialog-header-sparkle",children:"✨"}),h("agents.generation.title","Generate Agent")]}),e.jsx("button",{className:"modal-close",onClick:I,"aria-label":h("actions.close","Close"),children:"×"})]}),e.jsxs("div",{className:"agent-dialog-body",children:[x&&e.jsx("div",{className:"agent-dialog-error-banner",children:x}),b.type==="input"&&e.jsxs("div",{children:[e.jsx("p",{className:"agent-dialog-info",children:h("agents.generation.info","Describe your agent's role and the AI will generate a complete specification including system prompt, suggested configuration, and more.")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-role-description",children:h("agents.generation.roleLabel","Role Description")}),e.jsx("textarea",{ref:P,id:"agent-role-description",className:"input agent-dialog-textarea",rows:4,placeholder:h("agents.generation.rolePlaceholder",'e.g. "Senior frontend code reviewer who specializes in React accessibility"'),value:a,onChange:k=>C(k.target.value),onKeyDown:k=>{k.key==="Enter"&&!k.shiftKey&&R&&(k.preventDefault(),_())},maxLength:ea,"aria-describedby":"role-description-hint"}),e.jsxs("div",{id:"role-description-hint",className:"agent-dialog-hint",children:[e.jsx("span",{children:h("agents.generation.roleHint","Describe what your agent should do")}),e.jsxs("span",{children:[a.length,"/",ea]})]})]})]}),b.type==="loading"&&e.jsxs("div",{className:"agent-dialog-loading-center",children:[e.jsx("div",{className:"agent-dialog-spinner spin"}),e.jsx("p",{className:"agent-dialog-loading-text",children:h("agents.generation.loading","Generating agent specification...")})]}),b.type==="preview"&&e.jsxs("div",{children:[e.jsxs("div",{className:"agent-dialog-summary agent-dialog-summary--spaced",children:[e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:h("agents.generation.previewTitle","Title")}),e.jsxs("span",{className:"agent-dialog-summary-row-value",children:[b.spec.icon," ",b.spec.title]})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:h("agents.generation.previewRole","Role")}),e.jsx("span",{children:b.spec.role})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:h("agents.generation.previewDescription","Description")}),e.jsx("span",{className:"agent-dialog-summary-row-value agent-dialog-summary-row-value--body",children:b.spec.description})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:h("agents.generation.previewThinking","Thinking")}),e.jsx("span",{className:"agent-dialog-summary-row-value agent-dialog-summary-row-value--capitalize",children:b.spec.thinkingLevel})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:h("agents.generation.previewMaxTurns","Max Turns")}),e.jsx("span",{children:b.spec.maxTurns})]})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{children:[h("agents.generation.systemPrompt","System Prompt"),e.jsx("button",{type:"button",className:"agent-dialog-expand-btn",onClick:()=>T(!S),children:S?h("agents.generation.collapse","Collapse"):h("agents.generation.expand","Expand")})]}),e.jsxs("div",{className:`agent-generation-prompt-box${S?"":" agent-generation-prompt-box--collapsed"}`,children:[b.spec.systemPrompt,!S&&b.spec.systemPrompt.length>500&&e.jsx("div",{className:"agent-generation-prompt-fade"})]})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[e.jsx("button",{className:"btn",onClick:I,children:h("actions.cancel","Cancel")}),b.type==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void _(),disabled:!R,children:h("agents.generation.generate","Generate")}),b.type==="preview"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"btn",onClick:()=>void W(),children:h("agents.generation.regenerate","Regenerate")}),e.jsx("button",{className:"btn btn-task-create",onClick:$,children:h("agents.generation.useThis","Use This")})]})]})]})})}const ta=[{value:"triage"},{value:"executor"},{value:"reviewer"},{value:"merger"},{value:"scheduler"},{value:"engineer"},{value:"custom"}];function hl({isOpen:n,onClose:l,onCreated:g,projectId:u,prefillDraft:h=null,agentOnboardingEnabled:a=!1,existingAgents:C=[],onPrefillDraft:b}){const{t:i}=Te("app"),x=o=>({triage:i("agents.roleTriage","Triage"),executor:i("agents.roleExecutor","Executor"),reviewer:i("agents.roleReviewer","Reviewer"),merger:i("agents.roleMerger","Merger"),scheduler:i("agents.roleScheduler","Scheduler"),engineer:i("agents.roleEngineer","Engineer"),custom:i("agents.roleCustom","Custom")})[o]??o,[y,S]=s.useState(0),[T,N]=s.useState("presets"),[P,I]=s.useState(""),[_,W]=s.useState(""),[$,R]=s.useState(""),[k,L]=s.useState("custom"),[M,H]=s.useState([]),[E,z]=s.useState(""),[Y,X]=s.useState(""),[ve,te]=s.useState(""),[V,U]=s.useState(""),[A,ce]=s.useState(""),[Ae,pe]=s.useState(""),[ne,de]=s.useState({model:"",thinkingLevel:"off",maxTurns:1e3}),[q,Re]=s.useState(null),[me,Fe]=s.useState([]),[ae,ke]=s.useState(!1),[Ee,we]=s.useState(null),[$e,le]=s.useState(!1),[Ie,K]=s.useState(!1),{favoriteProviders:ze,favoriteModels:Ce,toggleFavoriteProvider:Je,toggleFavoriteModel:Me}=qs(),[Oe,Be]=s.useState([]),[Qe,he]=s.useState(!1),[G,be]=s.useState("model"),[Q,_e]=s.useState(""),[Ve,je]=s.useState([]),[et,c]=s.useState(!1),[w,D]=s.useState([]),[xe,ee]=s.useState(!1);s.useEffect(()=>{n&&(he(!0),Zs().then(o=>{Be(o.models)}).catch(()=>{}).finally(()=>he(!1)))},[n]),s.useEffect(()=>{n&&(ee(!0),D([]),Ot(void 0,u).then(o=>{D(o)}).catch(()=>{D([])}).finally(()=>ee(!1)))},[n,u]),s.useEffect(()=>{if(!n)return;const o=sn;if(typeof o!="function"){je([]),c(!1);return}c(!0),je([]),o(u).then(j=>{je(j)}).catch(()=>{je([])}).finally(()=>c(!1))},[n,u]);const B=ne.model.includes("/")?ne.model:"",tt=B?B.split("/")[0]:"default",at=s.useCallback(o=>{const j=Js.has(o.role)?o.role:"custom";I(o.title),W(o.description),R(o.icon),L(j),H([]),te(o.systemPrompt),de(re=>({...re,thinkingLevel:o.thinkingLevel,maxTurns:o.maxTurns})),le(!1),S(1)},[]),Et=s.useCallback(o=>{de(j=>({...j,model:o}))},[]),xt=s.useCallback(o=>{be(o),o==="model"&&_e("")},[]),ie=s.useCallback(o=>{const j=Qs(o);Re(o.id),I(j.name),R(j.icon??""),W(j.title??""),L(j.role),H([]),ce(j.soul??""),te(j.instructionsText??""),S(1)},[]),J=s.useCallback(o=>{const j=en(o);S(1),N("custom"),I(j.name),W(j.title??""),R(j.icon??""),L(j.role),H([]),z(j.reportsTo??""),te(Ua(j.instructionsText??"")),U(j.heartbeatProcedurePath??""),ce(j.soul??""),pe(j.memory??""),Fe(j.skills??[]),de(re=>({...re,model:j.model??"",thinkingLevel:j.thinkingLevel??re.thinkingLevel,maxTurns:j.maxTurns??re.maxTurns})),j.runtimeHint?(be("runtime"),_e(j.runtimeHint)):(be("model"),_e(""))},[]);s.useEffect(()=>{!n||!h||J(h)},[n,h,J]);const We=()=>{S(0),N("presets"),I(""),W(""),R(""),L("custom"),z(""),X(""),te(""),U(""),ce(""),pe(""),de({model:"",thinkingLevel:"off",maxTurns:1e3}),be("model"),_e(""),Re(null),Fe([]),H([]),we(null),le(!1),K(!1),l()},Tt=tn(We,{enabled:!0});if(!n)return null;const It=async()=>{if(P.trim()){ke(!0),we(null);try{await ln(rn({name:P,role:k,roles:[k,...M],title:_,icon:$,reportsTo:E,instructionsPath:Y,instructionsText:ve,heartbeatProcedurePath:V,soul:A,memory:Ae,model:G==="model"?ne.model:"",runtimeHint:G==="runtime"?Q:"",thinkingLevel:ne.thinkingLevel,maxTurns:ne.maxTurns,skills:me}),u),We(),g()}catch(o){we(o instanceof Error?o.message:i("agents.createError","Failed to create agent"))}finally{ke(!1)}}},Pe=ta.find(o=>o.value===k),Le=E.trim(),Ue=Le?w.find(o=>o.id===Le):void 0,st=Q?Ve.find(o=>o.runtimeId===Q):void 0,fe=o=>e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{id:o,children:i("agents.runtimeSource","Runtime Source")}),e.jsxs("div",{className:"agent-runtime-mode-toggle",role:"radiogroup","aria-labelledby":o,children:[e.jsxs("label",{className:`agent-runtime-mode-option${G==="model"?" agent-runtime-mode-option--active":""}`,children:[e.jsx("input",{type:"radio",name:o,value:"model",checked:G==="model",onChange:()=>xt("model")}),e.jsx("span",{children:i("agents.runtimeSourceBuiltIn","Built-in Model")})]}),e.jsxs("label",{className:`agent-runtime-mode-option${G==="runtime"?" agent-runtime-mode-option--active":""}`,children:[e.jsx("input",{type:"radio",name:o,value:"runtime",checked:G==="runtime",onChange:()=>xt("runtime")}),e.jsx("span",{children:i("agents.runtimeSourcePlugin","Plugin Runtime")})]})]})]}),G==="model"?e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{children:i("agents.model","Model")}),Qe?e.jsx("div",{className:"agent-dialog-loading",children:e.jsx(Fa,{label:i("agents.loadingModels","Loading models…")})}):e.jsx(nn,{id:"agent-model",label:i("agents.model","Model"),value:B,onChange:Et,models:Oe,placeholder:i("agents.modelPlaceholder","Select a model…"),favoriteProviders:ze,onToggleFavorite:Je,favoriteModels:Ce,onToggleModelFavorite:Me,thinkingLevel:ne.thinkingLevel,onThinkingLevelChange:j=>de(re=>({...re,thinkingLevel:j}))})]}):e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-runtime-hint",children:i("agents.runtime","Runtime")}),et?e.jsx("div",{className:"agent-dialog-loading",children:e.jsx(Fa,{label:i("agents.loadingRuntimes","Loading runtimes…")})}):e.jsxs("select",{id:"agent-runtime-hint",className:"select",value:Q,onChange:j=>_e(j.target.value),children:[e.jsx("option",{value:"",children:Ve.length>0?i("agents.runtimePlaceholder","Select a plugin runtime…"):i("agents.runtimeEmpty","No plugin runtimes available")}),Ve.map(j=>e.jsx("option",{value:j.runtimeId,children:j.description?`${j.name} — ${j.description}`:j.name},`${j.pluginId}:${j.runtimeId}`))]})]})]});return In.createPortal(e.jsxs("div",{className:"agent-dialog-overlay",...Tt,children:[e.jsxs("div",{className:"agent-dialog",role:"dialog","aria-modal":"true","aria-label":i("agents.dialogAriaLabel","Create new agent"),children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsx("span",{className:"agent-dialog-header-title",children:i("agents.dialogTitle","New Agent")}),e.jsx("button",{className:"btn-icon",onClick:We,"aria-label":i("agents.closeAriaLabel","Close"),children:"×"})]}),e.jsx("div",{className:"agent-dialog-steps",children:[0,1,2].map(o=>e.jsx("div",{className:`agent-dialog-step${o===y?" active":o<y?" completed":""}`,"aria-label":i("agents.stepAriaLabel","Step {{step}}",{step:o+1})},o))}),e.jsxs("div",{className:"agent-dialog-body",children:[y===0&&e.jsxs("div",{children:[a&&e.jsx("div",{className:"agent-dialog-step-zero-actions",children:e.jsx("button",{type:"button",className:"btn agent-dialog-interview-btn",onClick:()=>K(!0),children:i("agents.aiInterview","AI Interview")})}),e.jsxs("div",{className:"agent-dialog-tabs",role:"tablist","aria-label":i("agents.setupModeAriaLabel","Agent setup mode"),children:[e.jsx("button",{id:"agent-dialog-tab-presets",type:"button",role:"tab","aria-controls":"agent-dialog-panel-presets","aria-selected":T==="presets",tabIndex:T==="presets"?0:-1,className:`agent-dialog-tab${T==="presets"?" active":""}`,onClick:()=>N("presets"),"data-testid":"agent-dialog-tab-presets",children:i("agents.tabPresets","Preset personas")}),e.jsx("button",{id:"agent-dialog-tab-custom",type:"button",role:"tab","aria-controls":"agent-dialog-panel-custom","aria-selected":T==="custom",tabIndex:T==="custom"?0:-1,className:`agent-dialog-tab${T==="custom"?" active":""}`,onClick:()=>{N("custom"),te(o=>Ua(o))},"data-testid":"agent-dialog-tab-custom",children:i("agents.tabCustom","Custom agent")})]}),T==="presets"&&e.jsx("div",{id:"agent-dialog-panel-presets",className:"agent-dialog-tab-panel",role:"tabpanel","aria-labelledby":"agent-dialog-tab-presets",children:e.jsxs("div",{className:"agent-presets",children:[e.jsx("div",{className:"agent-presets-header",children:i("agents.presetsHeader","Choose a preset persona to prefill role, identity, soul, and instructions")}),e.jsx("div",{className:"agent-presets-grid",children:an.map(o=>e.jsxs("button",{type:"button",className:`agent-preset-card${q===o.id?" selected":""}`,"data-testid":`preset-${o.id}`,onClick:()=>ie(o),title:o.title,children:[e.jsx("span",{className:"agent-preset-icon",children:e.jsx(Vt,{agent:{id:o.id,icon:o.icon,name:o.name},size:28})}),e.jsx("span",{className:"agent-preset-name",children:o.name}),e.jsx("span",{className:"agent-preset-role",children:o.role}),o.description&&e.jsx("span",{className:"agent-preset-description",children:o.description})]},o.id))})]})}),T==="custom"&&e.jsxs("div",{id:"agent-dialog-panel-custom",className:"agent-dialog-tab-panel",role:"tabpanel","aria-labelledby":"agent-dialog-tab-custom",children:[e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:i("agents.sectionIdentity","Identity")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-name",children:[i("agents.fieldName","Name")," ",!q&&e.jsx("span",{className:"agent-dialog-required",children:"*"})]}),e.jsx("input",{id:"agent-name",type:"text",className:"input",placeholder:i("agents.namePlaceholder","e.g. Frontend Reviewer"),value:P,onChange:o=>I(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field agent-dialog-field--title",children:[e.jsxs("label",{htmlFor:"agent-title",children:[i("agents.fieldTitle","Title")," ",e.jsx("span",{className:"agent-dialog-optional",children:i("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-title",type:"text",className:"input",placeholder:i("agents.titlePlaceholder","e.g. Senior Code Reviewer"),value:_,onChange:o=>W(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-icon",children:[i("agents.fieldIcon","Icon")," ",e.jsx("span",{className:"agent-dialog-optional",children:i("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-icon",type:"text",className:"input",placeholder:i("agents.iconPlaceholder","e.g. 🤖"),value:$,onChange:o=>R(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{children:i("agents.fieldRole","Primary role")}),e.jsx("div",{className:"agent-role-grid",children:ta.map(o=>e.jsxs("button",{type:"button",className:`agent-role-option${k===o.value?" selected":""}`,onClick:()=>{L(o.value),H(j=>j.filter(re=>re!==o.value))},children:[e.jsx("span",{className:"agent-role-option-icon","aria-hidden":"true",children:e.jsx(Da,{provider:tt,size:"sm"})}),e.jsx("span",{className:"agent-role-option-label",children:x(o.value)})]},o.value))}),e.jsxs("fieldset",{className:"agent-dialog-field","aria-label":i("agents.additionalRoles","Additional workflow roles"),children:[e.jsx("legend",{children:i("agents.additionalRoles","Additional workflow roles")}),ta.filter(o=>o.value!==k).map(o=>e.jsxs("label",{className:"checkbox-label",children:[e.jsx("input",{type:"checkbox",checked:M.includes(o.value),onChange:()=>H(j=>j.includes(o.value)?j.filter(re=>re!==o.value):[...j,o.value])}),x(o.value)]},o.value))]})]})]}),e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:i("agents.sectionConfiguration","Configuration")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-reports-to",children:[i("agents.fieldReportsTo","Reports To")," ",e.jsx("span",{className:"agent-dialog-optional",children:i("agents.optional","(optional)")})]}),e.jsxs("select",{id:"agent-reports-to",className:"select",value:E,onChange:o=>z(o.target.value),disabled:xe,children:[e.jsx("option",{value:"",children:i("agents.noManager","No manager")}),w.map(o=>e.jsxs("option",{value:o.id,children:[o.name," (",o.id,")"]},o.id))]})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-soul",children:[i("agents.fieldSoul","Soul")," ",e.jsx("span",{className:"agent-dialog-optional",children:i("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-soul",className:"input",rows:2,placeholder:i("agents.soulPlaceholder","Describe the agent's personality and communication style..."),value:A,onChange:o=>ce(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-memory",children:[i("agents.fieldMemory","Agent Memory")," ",e.jsx("span",{className:"agent-dialog-optional",children:i("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-memory",className:"input",rows:2,placeholder:i("agents.memoryPlaceholder","Private to this agent — durable preferences, operating habits, and context it should carry across tasks..."),value:Ae,onChange:o=>pe(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-instructions-path",children:[i("agents.fieldInstructionsPath","Instructions Path")," ",e.jsx("span",{className:"agent-dialog-optional",children:i("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-instructions-path",type:"text",className:"input",placeholder:i("agents.instructionsPathPlaceholder","e.g. .fusion/agents/reviewer.md"),value:Y,onChange:o=>X(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-heartbeat-procedure-path",children:[i("agents.fieldHeartbeatPath","Heartbeat Procedure Path")," ",e.jsx("span",{className:"agent-dialog-optional",children:i("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-heartbeat-procedure-path",type:"text",className:"input",placeholder:i("agents.heartbeatPathPlaceholder","e.g. .fusion/agents/ceo-agent2736/HEARTBEAT.md"),value:V,onChange:o=>U(o.target.value)}),e.jsx("p",{className:"agent-dialog-optional agent-dialog-field-hint",children:i("agents.heartbeatPathHint","Path to the agent's heartbeat procedure path, typically .fusion/agents/ceo-agent2736/HEARTBEAT.md. Legacy id-only default paths still work.")})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-instructions-text",children:[i("agents.fieldInstructionsText","Inline Instructions")," ",e.jsx("span",{className:"agent-dialog-optional",children:i("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-instructions-text",className:"input",rows:4,placeholder:i("agents.instructionsTextPlaceholder","Add custom behavior instructions..."),value:ve,onChange:o=>te(o.target.value)})]})]}),e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:i("agents.sectionRuntime","Runtime")}),fe("agent-runtime-source-step-0")]}),e.jsxs("div",{className:"agent-dialog-ai-generate",children:[e.jsxs("button",{type:"button",className:"btn btn--ai-generate",onClick:()=>le(!0),children:[e.jsx("span",{children:"✨"}),i("agents.generateWithAI","Generate with AI")]}),e.jsx("p",{className:"agent-dialog-ai-hint",children:i("agents.generateHint","Describe your agent's role and let AI generate a specification")})]})]})]}),y===1&&e.jsxs("div",{children:[fe("agent-runtime-source-step-1"),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-max-turns",children:i("agents.fieldMaxTurns","Max Turns")}),e.jsx("input",{id:"agent-max-turns",type:"number",className:"input",min:1,max:2e3,value:ne.maxTurns,onChange:o=>de(j=>({...j,maxTurns:Math.max(1,parseInt(o.target.value,10)||1)}))})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx(Mn,{id:"agent-skills",label:i("agents.fieldSkills","Skills"),value:me,onChange:Fe,projectId:u,ariaDescribedBy:"agent-skills-hint"}),e.jsx("p",{id:"agent-skills-hint",className:"agent-dialog-optional agent-dialog-skills-hint",children:i("agents.skillsHint","All enabled skills are available automatically. Select skills to force this agent to read them before starting work.")})]})]}),y===2&&e.jsxs("div",{children:[e.jsx("p",{className:"agent-dialog-info",children:i("agents.reviewHint","Review your agent configuration before creating.")}),e.jsxs("div",{className:"agent-dialog-summary",children:[e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-name",children:i("agents.fieldName","Name")}),e.jsx("input",{id:"agent-review-name",type:"text",className:"input",placeholder:i("agents.namePlaceholder","e.g. Frontend Reviewer"),value:P,onChange:o=>I(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable agent-dialog-summary-row--title",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-title",children:i("agents.fieldTitle","Title")}),e.jsx("input",{id:"agent-review-title",type:"text",className:"input",placeholder:i("agents.titlePlaceholder","e.g. Senior Code Reviewer"),value:_,onChange:o=>W(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:i("agents.fieldRole","Role")}),e.jsx("span",{children:Pe?x(Pe.value):""})]}),Le&&e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:i("agents.fieldReportsTo","Reports To")}),e.jsx("span",{children:Ue?`${Ue.name} (${Ue.id})`:Le})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-soul",children:i("agents.fieldSoul","Soul")}),e.jsx("textarea",{id:"agent-review-soul",className:"input",rows:2,placeholder:i("agents.soulPlaceholder","Describe the agent's personality and communication style..."),value:A,onChange:o=>ce(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-heartbeat-procedure-path",children:i("agents.fieldHeartbeatPath","Heartbeat Procedure Path")}),e.jsx("input",{id:"agent-review-heartbeat-procedure-path",type:"text",className:"input",placeholder:i("agents.heartbeatPathPlaceholder","e.g. .fusion/agents/ceo-agent2736/HEARTBEAT.md"),value:V,onChange:o=>U(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-instructions-path",children:i("agents.fieldInstructionsPath","Instructions Path")}),e.jsx("input",{id:"agent-review-instructions-path",type:"text",className:"input",placeholder:i("agents.instructionsPathPlaceholder","e.g. .fusion/agents/reviewer.md"),value:Y,onChange:o=>X(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row agent-dialog-summary-row--editable",children:[e.jsx("label",{className:"agent-dialog-summary-row-label",htmlFor:"agent-review-instructions-text",children:i("agents.fieldInstructionsText","Inline Instructions")}),e.jsx("textarea",{id:"agent-review-instructions-text",className:"input",rows:4,placeholder:i("agents.instructionsTextPlaceholder","Add custom behavior instructions..."),value:ve,onChange:o=>te(o.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:G==="runtime"?i("agents.runtime","Runtime"):i("agents.model","Model")}),e.jsx("span",{children:G==="runtime"?st?st.name:e.jsx("em",{className:"agent-dialog-summary-row-value--muted",children:i("agents.notSelected","Not selected")}):B?e.jsxs(e.Fragment,{children:[e.jsx(Da,{provider:B.split("/")[0],size:"sm"})," ",(()=>{const o=B.indexOf("/"),j=B.slice(0,o),re=B.slice(o+1);return Oe.find(nt=>nt.provider===j&&nt.id===re)?.name||B})()]}):e.jsx("em",{className:"agent-dialog-summary-row-value--muted",children:i("agents.modelDefault","default")})})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:i("agents.fieldThinking","Thinking")}),e.jsx("span",{className:"agent-dialog-summary-row-value--capitalize",children:ne.thinkingLevel})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:i("agents.fieldMaxTurns","Max Turns")}),e.jsx("span",{children:ne.maxTurns})]}),me.length>0&&e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:i("agents.fieldSkills","Skills")}),e.jsx("span",{children:i("agents.skillsSelected","{{count}} skill selected",{count:me.length,defaultValue_one:"{{count}} skill selected",defaultValue_other:"{{count}} skills selected"})})]})]}),Ee&&e.jsx("p",{className:"agent-dialog-error",children:Ee})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[y>0&&e.jsx("button",{className:"btn",onClick:()=>S(o=>o-1),disabled:ae,children:i("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:We,disabled:ae,children:i("agents.cancel","Cancel")}),y<2?e.jsx("button",{className:"btn btn--primary",onClick:()=>S(o=>o+1),disabled:y===0&&!P.trim()&&!q,children:i("agents.next","Next")}):e.jsx("button",{className:"btn btn--primary",onClick:()=>void It(),disabled:ae||!P.trim(),children:ae?i("agents.creating","Creating..."):i("agents.create","Create")})]})]}),e.jsx(ml,{isOpen:$e,onClose:()=>le(!1),onGenerated:at,projectId:u}),e.jsx(Yn,{isOpen:Ie,onClose:()=>K(!1),onUseDraft:o=>{b?.(o),b||J(o),K(!1)},projectId:u,existingAgents:C,mode:"create"})]}),document.body)}function pl(n){const l=n.match(/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n([\s\S]*))?$/);if(!l)throw new Error("Missing YAML frontmatter delimiters (---)");const g=l[1].split(/\r?\n/),u=l[2]??"",h={name:""},a=[];let C=!1;for(const b of g){const x=b.trimEnd().trim();if(!x)continue;if(x.startsWith("skills:")){C=!0;continue}if(C&&x.startsWith("- ")){a.push(x.slice(2).trim());continue}C=!1;const[y,...S]=x.split(":"),N=S.join(":").trim().replace(/^['"]|['"]$/g,"");y==="name"&&(h.name=N),y==="title"&&(h.title=N),y==="icon"&&(h.icon=N),y==="role"&&(h.role=N),y==="reportsTo"&&(h.reportsTo=N)}if(!h.name)throw new Error("Missing required field: name");return a.length>0&&(h.skills=a),u.trim().length>0&&(h.instructionBody=u),h}function bl({isOpen:n,onClose:l,onImported:g,projectId:u,initialInputMethod:h="paste"}){const{t:a}=Te("app");rs(n);const[C,b]=s.useState("input"),[i,x]=s.useState(h),[y,S]=s.useState(""),[T,N]=s.useState([]),[P,I]=s.useState("Unknown"),[_,W]=s.useState([]),[$,R]=s.useState([]),[k,L]=s.useState([]),[M,H]=s.useState([]),[E,z]=s.useState([]),[Y,X]=s.useState(!1),[ve,te]=s.useState(!1),[V,U]=s.useState(null),[A,ce]=s.useState(null),[Ae,pe]=s.useState(null),ne=s.useRef(null),de=s.useRef(null),[q,Re]=s.useState([]),[me,Fe]=s.useState(""),[ae,ke]=s.useState(null),[Ee,we]=s.useState(!1),[$e,le]=s.useState(null),Ie=s.useRef(!1);s.useEffect(()=>{i==="browse"&&!Ie.current&&!Ee&&(Ie.current=!0,we(!0),le(null),Xa().then(c=>{c.error?le(c.error):c.companies.length>0?Re(c.companies):le(a("agents.noCompaniesAvailable","No companies available"))}).catch(c=>{le(c instanceof Error?c.message:a("agents.failedToLoadCompanies","Failed to load companies"))}).finally(()=>{we(!1)}))},[i,Ee,a]);const K=s.useCallback(()=>{Ie.current=!0,le(null),Re([]),ke(null),we(!0),Xa().then(c=>{c.error?le(c.error):c.companies.length>0?Re(c.companies):le(a("agents.noCompaniesAvailable","No companies available"))}).catch(c=>{le(c instanceof Error?c.message:a("agents.failedToLoadCompanies","Failed to load companies"))}).finally(()=>{we(!1)})},[a]),ze=s.useCallback(()=>{b("input"),x(h),S(""),N([]),I("Unknown"),W([]),R([]),L([]),H([]),z([]),X(!1),te(!1),U(null),ce(null),pe(null),Re([]),Fe(""),ke(null),we(!1),le(null),Ie.current=!1},[h]),Ce=s.useCallback(()=>{ze(),l()},[ze,l]),Je=s.useCallback(c=>{const w=c.target.files?.[0];if(!w)return;const D=new FileReader;D.onload=xe=>{const ee=xe.target?.result;x("file"),N([]),S(ee),U(null)},D.onerror=()=>{U(a("agents.failedToReadFile","Failed to read file"))},D.readAsText(w),c.target.value=""},[a]),Me=s.useCallback(async c=>{const w=Array.from(c.target.files??[]);if(w.length!==0)try{const D=w.filter(ee=>(ee.webkitRelativePath||ee.name).toLowerCase().endsWith("agents.md")).sort((ee,B)=>{const tt=ee.webkitRelativePath||ee.name,at=B.webkitRelativePath||B.name;return tt.localeCompare(at)});if(D.length===0){U(a("agents.noAgentsMdFiles","Selected directory has no AGENTS.md files"));return}const xe=[];for(const ee of D){const B=await ee.text();xe.push(pl(B))}x("directory"),N(xe),S(""),U(null)}catch{U(a("agents.failedToParseDirectory","Failed to parse AGENTS.md files from selected directory"))}finally{c.target.value=""}},[a]);function Oe(c){if(!u)return`/api${c}`;const w=c.includes("?")?"&":"?";return`/api${c}${w}projectId=${encodeURIComponent(u)}`}const Be=s.useCallback(async()=>{if(i==="directory"&&T.length===0){U(a("agents.selectDirectory","Please select a directory containing AGENTS.md files"));return}if(i==="browse"&&!ae){U(a("agents.selectCompany","Please select a company from the catalog"));return}if(i!=="directory"&&i!=="browse"&&!y.trim()){U(a("agents.provideManifest","Please provide manifest content"));return}X(!0),U(null);try{let c;i==="directory"?c={agents:T,dryRun:!0}:i==="browse"&&ae?c={importSource:"companies.sh",companySlug:ae.slug,dryRun:!0}:c={manifest:y,dryRun:!0};const w=await fetch(Oe("/agents/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!w.ok){const B=await w.json();throw new Error(B.error??`Parse failed (${w.status})`)}const D=await w.json(),xe=D.agents&&D.agents.length>0?D.agents:D.created.map(B=>({name:B,role:"custom"})),ee=Array.isArray(D.skills)?D.skills:[];I(D.companyName??"Unknown"),W(xe),R(ee),L(Array.isArray(D.warnings)?D.warnings:[]),H(xe.map(B=>B.name)),z(ee.map(B=>B.name)),b("preview")}catch(c){U(c instanceof Error?c.message:a("agents.failedToParseManifest","Failed to parse manifest"))}finally{X(!1)}},[i,T,y,ae,u,a]),Qe=s.useCallback(async()=>{te(!0),pe(null);try{let c;i==="directory"?c={agents:T,skipExisting:!0,selectedAgents:M,selectedSkills:E}:i==="browse"&&ae?c={importSource:"companies.sh",companySlug:ae.slug,skipExisting:!0,selectedAgents:M,selectedSkills:E}:c={manifest:y,skipExisting:!0,selectedAgents:M,selectedSkills:E};const w=await fetch(Oe("/agents/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!w.ok){const xe=await w.json();throw new Error(xe.error??`Import failed (${w.status})`)}const D=await w.json();ce(D),b("result"),g()}catch(c){pe(c instanceof Error?c.message:a("agents.failedToImport","Failed to import agents"))}finally{te(!1)}},[i,T,y,ae,M,E,u,g,a]),he=M.length,G=E.length,be=a("agents.selectedAgentLabel","{{count}} Agent{{plural}}",{count:he,plural:he!==1?"s":""}),Q=a("agents.selectedSkillLabel","{{count}} Skill{{plural}}",{count:G,plural:G!==1?"s":""}),_e=he>0&&G>0?`${be} + ${Q}`:G>0?Q:be,Ve=he>0&&G>0?a("agents.importingAgentsAndSkills","Importing {{agentCount}} agent{{agentPlural}} and {{skillCount}} skill{{skillPlural}}...",{agentCount:he,agentPlural:he!==1?"s":"",skillCount:G,skillPlural:G!==1?"s":""}):G>0?a("agents.importingSkills","Importing {{count}} skill{{plural}}...",{count:G,plural:G!==1?"s":""}):a("agents.importingAgents","Importing {{count}} agent{{plural}}...",{count:he,plural:he!==1?"s":""}),je=c=>{H(w=>w.includes(c)?w.filter(D=>D!==c):[...w,c])},et=c=>{z(w=>w.includes(c)?w.filter(D=>D!==c):[...w,c])};return n?e.jsx(os,{windowKey:"agent-import",modal:!0,title:a("agents.importAgents","Import Agents"),ariaLabel:a("agents.importAgents","Import agents"),onClose:Ce,hideHeader:!0,dragHandleSelector:".agent-import-dialog .agent-dialog-header",className:"floating-window--agent-import",defaultSize:{width:720,height:640},minSize:{width:420,height:320},persistGeometryKey:"floating-window:agent-import",suspendGeometryPersistenceOnMobile:!0,suspendGeometryPersistenceOnShortViewport:!0,closeOnOutsidePointerDown:!0,children:e.jsxs("div",{className:"agent-dialog agent-import-dialog",children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsx("span",{className:"agent-dialog-header-title",children:a("agents.importAgents","Import Agents")}),e.jsx("button",{className:"modal-close",onClick:Ce,"aria-label":a("agents.close","Close"),children:"×"})]}),e.jsxs("div",{className:"agent-dialog-body",children:[C==="input"&&e.jsxs("div",{className:"agent-import-input",children:[e.jsx("p",{className:"agent-import-description",children:a("agents.importDescription","Import agents from an Agent Companies package. Browse the companies.sh catalog to discover published agents, upload an AGENTS.md file, select a directory, or paste manifest content.")}),e.jsxs("div",{className:"agent-import-file-upload",children:[e.jsx("input",{ref:ne,type:"file",accept:".md,.txt",onChange:Je,className:"agent-import-file-input","aria-label":"Upload agent manifest file"}),e.jsx("input",{ref:de,type:"file",webkitdirectory:"",multiple:!0,onChange:Me,className:"agent-import-file-input","aria-label":"Select directory"}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>ne.current?.click(),children:[e.jsx(oa,{size:16}),a("agents.chooseFile","Choose File")]}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>de.current?.click(),children:[e.jsx(Xn,{size:16}),a("agents.selectDirectory","Select Directory")]}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>{x("browse"),N([]),S(""),ke(null),U(null)},children:[e.jsx(on,{size:16}),a("agents.browseCatalog","Browse Catalog")]}),e.jsx("span",{className:"agent-import-file-hint",children:a("agents.fileHint",".md and .txt files supported")})]}),i==="browse"&&e.jsxs("div",{className:"agent-import-browse",children:[e.jsxs("div",{className:"agent-import-browse-header",children:[e.jsxs("div",{className:"agent-import-browse-search",children:[e.jsx(cn,{size:16,className:"agent-import-browse-search-icon"}),e.jsx("input",{type:"text",className:"agent-import-browse-search-input",placeholder:a("agents.searchCompanies","Search companies..."),value:me,onChange:c=>Fe(c.target.value),"aria-label":a("agents.searchCompanies","Search companies")})]}),ae&&e.jsxs("div",{className:"agent-import-browse-selected",children:[e.jsxs("span",{className:"agent-import-browse-selected-label",children:[a("agents.selected","Selected:")," "]}),e.jsx("span",{className:"agent-import-browse-selected-name",children:ae.name}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ke(null),children:a("agents.change","Change")})]})]}),Ee&&e.jsxs("div",{className:"agent-import-browse-loading",children:[e.jsx(Gt,{size:20,className:"spin"}),e.jsx("span",{children:a("agents.loadingCompanies","Loading companies...")})]}),$e&&e.jsxs("div",{className:"agent-import-browse-error",children:[e.jsx(kt,{size:16}),e.jsx("span",{children:$e}),e.jsxs("button",{type:"button",className:"btn btn-sm",onClick:K,children:[e.jsx(ht,{size:14}),a("agents.retry","Retry")]})]}),!Ee&&!$e&&e.jsxs("div",{className:"agent-import-browse-list",children:[q.filter(c=>me===""||c.name.toLowerCase().includes(me.toLowerCase())||(c.tagline?.toLowerCase().includes(me.toLowerCase())??!1)).map(c=>e.jsxs("div",{className:`agent-import-browse-item ${ae?.slug===c.slug?"agent-import-browse-item--selected":""}`,onClick:()=>ke(c),role:"button",tabIndex:0,onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&ke(c)},children:[e.jsxs("div",{className:"agent-import-browse-item-header",children:[e.jsx("span",{className:"agent-import-browse-item-name",children:c.name}),c.installs!==void 0&&e.jsxs("span",{className:"agent-import-browse-item-installs",children:[c.installs.toLocaleString()," ",a("agents.installs","installs")]})]}),c.tagline&&e.jsx("span",{className:"agent-import-browse-item-tagline",children:c.tagline}),c.repo&&e.jsx("span",{className:"agent-import-browse-item-repo",children:c.repo})]},c.slug)),q.filter(c=>me===""||c.name.toLowerCase().includes(me.toLowerCase())||(c.tagline?.toLowerCase().includes(me.toLowerCase())??!1)).length===0&&e.jsx("p",{className:"agent-import-browse-empty",children:me?a("agents.noCompaniesMatch","No companies match your search"):a("agents.noCompaniesAvailable","No companies available")})]})]}),i!=="browse"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-divider",children:e.jsx("span",{children:a("agents.orPasteManifest","or paste manifest content")})}),e.jsx("textarea",{className:"agent-import-textarea",placeholder:a("agents.manifestPlaceholder",`---
|
|
18
|
+
name: CEO
|
|
19
|
+
title: Chief Executive Officer
|
|
20
|
+
reportsTo: null
|
|
21
|
+
skills:
|
|
22
|
+
- review
|
|
23
|
+
---
|
|
24
|
+
Agent instructions go here...`),value:y,onChange:c=>{x("paste"),N([]),S(c.target.value),U(null)},rows:8,"aria-label":a("agents.manifestContent","Manifest content")})]}),e.jsx("p",{className:"agent-import-file-hint",children:a("agents.currentInput","Current input: {{method}}",{method:i})}),V&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(kt,{size:14}),V]})]}),C==="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:a("agents.company","Company")}),e.jsx("span",{className:"agent-import-company-name",children:P})]}),k.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:k.map((c,w)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(kt,{size:12}),e.jsx("span",{children:c})]},w))}),e.jsxs("div",{className:"agent-import-count",children:[e.jsx(ia,{size:14}),e.jsx("span",{children:a("agents.agentsFound","{{count}} agent{{plural}} found",{count:_.length,plural:_.length!==1?"s":""})})]}),_.length>0&&e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>H(_.map(c=>c.name)),children:a("agents.selectAllAgents","Select all agents")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>H([]),children:a("agents.clearAgents","Clear agents")})]}),_.length>0?e.jsx("div",{className:"agent-import-agent-list",children:_.map((c,w)=>e.jsxs("div",{className:"agent-import-agent-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":a("agents.selectAgent","Select agent {{name}}",{name:c.name}),checked:M.includes(c.name),onChange:()=>je(c.name)})}),e.jsx("span",{className:"agent-import-agent-icon",children:c.icon||"🤖"}),e.jsxs("div",{className:"agent-import-agent-details",children:[e.jsx("span",{className:"agent-import-agent-name",children:c.name}),e.jsxs("span",{className:"agent-import-agent-meta",children:[c.title&&e.jsxs("span",{className:"agent-import-agent-title",children:[c.title," · "]}),e.jsx("span",{className:"agent-import-agent-role",children:c.role}),c.reportsTo&&e.jsx("span",{className:"agent-import-agent-reports",children:a("agents.importReportsTo"," · reports to {{agent}}",{agent:c.reportsTo})}),c.skills&&c.skills.length>0&&e.jsx("span",{className:"agent-import-agent-model",children:a("agents.importSkills"," · skills: {{skills}}",{skills:c.skills.join(", ")})})]}),c.instructionsText&&e.jsxs("span",{className:"agent-import-agent-instructions",children:[c.instructionsText.slice(0,100),c.instructionsText.length>100?"...":""]})]})]},w))}):e.jsx("p",{className:"agent-import-empty",children:a("agents.noAgentsFound","No agents found in the manifest.")}),$.length>0&&e.jsxs("div",{className:"agent-import-skills-section",children:[e.jsxs("div",{className:"agent-import-count",children:[e.jsx(ia,{size:14}),e.jsx("span",{children:a("agents.skillsFound","{{count}} skill{{plural}} found",{count:$.length,plural:$.length!==1?"s":""})})]}),e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>z($.map(c=>c.name)),children:a("agents.selectAllSkills","Select all skills")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>z([]),children:a("agents.clearSkills","Clear skills")})]}),e.jsx("div",{className:"agent-import-skill-list",children:$.map((c,w)=>e.jsxs("div",{className:"agent-import-skill-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":a("agents.selectSkill","Select skill {{name}}",{name:c.name}),checked:E.includes(c.name),onChange:()=>et(c.name)})}),e.jsx("span",{className:"agent-import-skill-icon",children:"⚡"}),e.jsxs("div",{className:"agent-import-skill-details",children:[e.jsx("span",{className:"agent-import-skill-name",children:c.name}),c.description&&e.jsx("span",{className:"agent-import-skill-description",children:c.description})]})]},`${c.name}-${w}`))})]}),Ae&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(kt,{size:14}),Ae]})]}),C==="result"&&A&&e.jsxs("div",{className:"agent-import-result",children:[e.jsx("div",{className:"agent-import-result-icon",children:e.jsx(zt,{size:32})}),e.jsx("h3",{className:"agent-import-result-title",children:a("agents.importComplete","Import Complete")}),e.jsxs("p",{className:"agent-import-result-company",children:[a("agents.from","From")," ",e.jsx("strong",{children:A.companyName??"Unknown"})]}),e.jsxs("div",{className:"agent-import-result-stats",children:[A.created.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:a("agents.resultCreated","{{count}} created",{count:A.created.length})})}),A.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:a("agents.resultSkipped","{{count}} skipped (already exist)",{count:A.skipped.length})})}),A.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:a("agents.resultErrors","{{count}} error{{plural}}",{count:A.errors.length,plural:A.errors.length!==1?"s":""})})})]}),A.created.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:A.created.map((c,w)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(zt,{size:12}),e.jsx("span",{children:c.name})]},w))}),A.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:A.errors.map((c,w)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx($a,{size:12}),e.jsxs("span",{children:[c.name,": ",c.error]})]},w))}),A.warnings&&A.warnings.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:A.warnings.map((c,w)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(kt,{size:12}),e.jsx("span",{children:c})]},w))}),A.skills&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-result-divider"}),e.jsx("h4",{className:"agent-import-result-section-title",children:a("agents.skills","Skills")}),e.jsxs("div",{className:"agent-import-result-stats",children:[A.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:a("agents.skillsImported","{{count}} skill{{plural}} imported",{count:A.skills.imported.length,plural:A.skills.imported.length!==1?"s":""})})}),A.skills.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:a("agents.skillsSkipped","{{count}} skill{{plural}} skipped (already exist)",{count:A.skills.skipped.length,plural:A.skills.skipped.length!==1?"s":""})})}),A.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:a("agents.skillsErrors","{{count}} skill{{plural}} error{{pluralError}}",{count:A.skills.errors.length,plural:A.skills.errors.length!==1?"s":"",pluralError:A.skills.errors.length!==1?"s":""})})}),A.skills.imported.length===0&&A.skills.skipped.length===0&&A.skills.errors.length===0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:a("agents.noSkillsInPackage","No skills in package")})})]}),A.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:A.skills.imported.map((c,w)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(zt,{size:12}),e.jsx("span",{children:c.name})]},w))}),A.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:A.skills.errors.map((c,w)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx($a,{size:12}),e.jsxs("span",{children:[c.name,": ",c.error]})]},w))})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[C==="preview"&&e.jsx("button",{className:"btn",onClick:()=>b("input"),disabled:ve,children:a("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:Ce,disabled:ve,children:C==="result"?a("agents.close","Close"):a("agents.cancel","Cancel")}),C==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void Be(),disabled:Y||(i==="directory"?T.length===0:i==="browse"?!ae:!y.trim()),children:Y?e.jsxs(e.Fragment,{children:[e.jsx(Gt,{size:14,className:"spin"}),a("agents.parsing","Parsing...")]}):a("agents.preview","Preview")}),C==="preview"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void Qe(),disabled:ve||he===0&&G===0,children:ve?e.jsxs(e.Fragment,{children:[e.jsx(Gt,{size:14,className:"spin"}),Ve]}):a("agents.importButton","Import {{label}}",{label:_e})})]})]})}):null}const es="(prefers-reduced-motion: reduce)";function xl(){const[n,l]=s.useState(()=>typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia(es).matches);return s.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const g=window.matchMedia(es),u=()=>l(g.matches);return u(),g.addEventListener("change",u),()=>g.removeEventListener("change",u)},[]),n}const ts=s.lazy(()=>Sn(()=>import("./AgentDetailView-0G9qFd4j.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])).then(n=>({default:n.AgentDetailView})));function fl(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 aa=[.1,.25,.5,1,2,3,5,10],sa="__disabled__",vl=.25,jl=3,$t=16,mt=32,as=320,ds=260,us=520,gs="kb-dashboard-agents-sidebar-width";function ca(n){return Math.max(ds,Math.min(us,n))}function ss(n){if(typeof window>"u")return as;const l=At(gs,n),g=l?Number(l):NaN;return Number.isFinite(g)?ca(g):as}function da(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 ua(n,l){switch(l){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 yl(n,l){const g=n.runtimeConfig??{},u=typeof g.runtimeHint=="string"?g.runtimeHint:"";if(u)return{label:u,isRuntime:!0};const h=typeof g.modelProvider=="string"?g.modelProvider:"",a=typeof g.modelId=="string"?g.modelId:"";if(h&&a)return{label:`${h}/${a}`,isRuntime:!1};const C=typeof g.model=="string"?g.model:"";if(C.includes("/")){const i=C.indexOf("/");return{label:C.slice(i+1),isRuntime:!1}}const b=Pn(n,l);return{label:b.provider&&b.modelId?`${b.provider}/${b.modelId}`:null,isRuntime:!1}}function ms(n){return n.children.length===0?1:n.children.reduce((l,g)=>l+ms(g),0)}function hs(n,l){for(const g of n){if(g.agent.id===l)return g.agent;const u=hs(g.children,l);if(u)return u}}function ga(n,l,g){return n.state==="error"?{title:void 0,label:g("agents.healthError","Error")}:{title:l.reason??l.label,label:l.stateDerived?null:l.label}}function Nl({agent:n,pending:l,onToggle:g}){const{t:u}=Te("app");if(De(n))return null;const h=pt(n),a=h?u("agents.disableHeartbeat","Disable heartbeat"):u("agents.enableHeartbeat","Enable heartbeat");return e.jsx("button",{type:"button",className:"btn btn-sm agent-heartbeat-toggle",disabled:l,"aria-pressed":h,"aria-label":u("agents.heartbeatActionForAgent","{{action}} for {{name}}",{action:a,name:n.name}),onClick:C=>{C.stopPropagation(),g(n)},children:l?u("agents.heartbeatUpdating","Updating heartbeat…"):a})}function ps({node:n,onSelect:l,getHealthStatus:g,selectedAgentId:u,registerNodeElement:h,linksRef:a,activityByAgentId:C,nowTick:b}){const{t:i}=Te("app"),{agent:x,children:y}=n,S=g(x),T=ga(x,S,i),N=da(x.state),P=ua("org-chart-node-card",x.state),I=ms(n),_=Bn(x,C.get(x.id),b,S),W=_==="unknown"?"":` org-chart-node-card--activity-${_}`,$={"--org-chart-subtree-leaves":String(I)};return e.jsxs("div",{className:`org-chart-node${y.length>0?" org-chart-node--has-children":""}`,style:$,children:[e.jsxs("div",{ref:R=>h(x.id,R),"data-agent-id":x.id,className:`org-chart-node-card ${P}${W}${u===x.id?" agent-card--selected":""}`,..._==="unknown"?{}:{"data-activity-state":_,"aria-label":`${x.name}: ${_}`},onClick:()=>l(x.id),role:"button",tabIndex:0,onKeyDown:R=>{(R.key==="Enter"||R.key===" ")&&(R.key===" "&&R.preventDefault(),l(x.id))},children:[e.jsxs("div",{className:"org-chart-node__header",children:[e.jsx("span",{className:"org-chart-node__icon",children:e.jsx(Vt,{agent:x,size:20})}),e.jsx("span",{className:"org-chart-node__name",children:x.name})]}),e.jsxs("div",{className:"org-chart-node__meta",children:[e.jsx("span",{className:`org-chart-node__badge ${N}`,children:x.state}),e.jsxs("span",{className:"org-chart-node__health",style:{color:S.color},title:T.title,children:[S.icon,T.label&&e.jsx("span",{className:"text-secondary",children:T.label})]})]})]}),y.length>0&&e.jsx("div",{className:"org-chart-children",role:"group","aria-label":i("agents.orgChartEmployees","{{name}} employees",{name:x.name}),children:y.map(R=>(a.current.push({parentId:x.id,childId:R.agent.id}),e.jsx(ps,{node:R,onSelect:l,getHealthStatus:g,selectedAgentId:u,registerNodeElement:h,linksRef:a,activityByAgentId:C,nowTick:b},R.agent.id)))})]})}function kl({links:n,nodeElements:l,canvasRef:g,viewportRef:u,layoutMode:h,transform:a,activityEvents:C,nowTick:b}){const[i,x]=s.useState([]),y=xl(),S=s.useMemo(()=>Wn(n,C,b),[C,n,b]);return s.useLayoutEffect(()=>{const T=g.current,N=u.current;if(!T||!N||n.length===0){x([]);return}const P=()=>{const _=T.getBoundingClientRect(),W=n.flatMap(({parentId:$,childId:R})=>{const k=l.get($),L=l.get(R);if(!k||!L)return[];const M=k.getBoundingClientRect(),H=L.getBoundingClientRect(),E=(M.left-_.left)/a.scale,z=(M.top-_.top)/a.scale,Y=(H.left-_.left)/a.scale,X=(H.top-_.top)/a.scale;if(h==="vertical"){const ce=E,Ae=z+M.height/a.scale/2,pe=Y,ne=X+H.height/a.scale/2,de=ce-(ce-pe)/2;return[{d:`M ${ce} ${Ae} L ${de} ${Ae} L ${de} ${ne} L ${pe} ${ne}`,link:{parentId:$,childId:R}}]}const ve=E+M.width/a.scale/2,te=z+M.height/a.scale,V=Y+H.width/a.scale/2,U=X,A=te+(U-te)/2;return[{d:`M ${ve} ${te} L ${ve} ${A} L ${V} ${A} L ${V} ${U}`,link:{parentId:$,childId:R}}]});x(W)};P();const I=new ResizeObserver(P);return I.observe(T),I.observe(N),l.forEach(_=>I.observe(_)),()=>I.disconnect()},[g,h,n,l,a.scale,u]),e.jsx("svg",{className:"agent-org-chart-connectors","aria-hidden":"true",children:i.map(({d:T,link:N})=>{const P=S.get(Un(N.parentId,N.childId)),I=P?` agent-org-chart-connectors__flow--${y?"static ":""}${P}`:"";return e.jsx("path",{d:T,className:I||void 0,...P?{"data-flow-direction":P}:{}},`${N.parentId}-${N.childId}-${T}`)})})}function Dl({addToast:n,projectId:l,onOpenTaskLogs:g,agentOnboardingEnabled:u=!1,focusAgent:h}){const{t:a}=Te("app"),{skills:C,loading:b,error:i}=qn(l),x=cs(l),y=fl(a),[S,T]=s.useState(!1),N=s.useRef(new Map),P=s.useRef(new Map),I=s.useRef(new Map),[_,W]=s.useState(new Set),$=s.useRef(null);s.useEffect(()=>{if(typeof IntersectionObserver>"u")return;const t=new IntersectionObserver(r=>{W(d=>{let m=!1;const f=new Set(d);for(const v of r){const F=P.current.get(v.target);F&&(v.isIntersecting?f.has(F)||(f.add(F),m=!0):f.has(F)&&(f.delete(F),m=!0))}return m?f:d})},{rootMargin:"200px"});return $.current=t,N.current.forEach(r=>t.observe(r)),()=>{t.disconnect(),$.current=null}},[]);const R=s.useCallback(t=>{const r=I.current.get(t);if(r)return r;const d=m=>{const f=N.current.get(t);f&&($.current?.unobserve(f),P.current.delete(f)),m?(N.current.set(t,m),P.current.set(m,t),$.current?$.current.observe(m):W(v=>v.has(t)?v:new Set(v).add(t))):(N.current.delete(t),I.current.delete(t),W(v=>{if(!v.has(t))return v;const F=new Set(v);return F.delete(t),F}))};return I.current.set(t,d),d},[]),k=s.useCallback(t=>typeof IntersectionObserver>"u"?!0:_.has(t),[_]),M=dn()==="mobile",[H,E]=s.useState(()=>ss(l)),[z,Y]=s.useState("all"),{agents:X,stats:ve,isLoading:te,loadAgents:V,refreshAgents:U}=un(l,{filterState:z,showSystemAgents:S}),[A,ce]=s.useState(!1),[Ae,pe]=s.useState(null),[ne,de]=s.useState(!1),[q,Re]=s.useState(null),[me,Fe]=s.useState(null),ae=M&&!!q,[ke,Ee]=s.useState("dashboard"),[we,$e]=s.useState(null),[le,Ie]=s.useState(!1),[K,ze]=s.useState(()=>{if(typeof window>"u")return"list";const t=At("fn-agent-view",l);return t==="list"||t==="board"||t==="org"?t:"list"}),[Ce,Je]=s.useState(()=>{if(typeof window>"u")return"auto";const t=At(Xt,l);return Ya(t)?t:"auto"}),[Me,Oe]=s.useState([]),[Be,Qe]=s.useState(!1),[he,G]=s.useState(0),[be,Q]=s.useState(!1),[_e,Ve]=s.useState(!1),[je,et]=s.useState(!1),[c,w]=s.useState(!1),[D,xe]=s.useState(0),[ee,B]=s.useState(0),[tt,at]=s.useState(0),[Et,xt]=s.useState(0),[ie,J]=s.useState({scale:1,x:0,y:0}),[We,Tt]=s.useState(!1),It=s.useRef(null),Pe=s.useRef(null),Le=s.useRef(null),Ue=s.useRef(new Map),st=s.useRef([]),fe=s.useRef(new Map),o=s.useRef(null),j=s.useRef(null),re=s.useRef(!1),{confirm:Mt}=gn(),nt=s.useRef(null),ha=s.useId();s.useEffect(()=>{E(ss(l))},[l]),s.useEffect(()=>{const t=At("fn-agent-view",l);if(t==="list"||t==="board"||t==="org"){ze(t);return}ze("list")},[l]),s.useEffect(()=>{Yt("fn-agent-view",K,l)},[K,l]),s.useEffect(()=>{const t=At(Xt,l);Je(Ya(t)?t:"auto")},[l]),s.useEffect(()=>{Yt(Xt,Ce,l)},[Ce,l]);const _t=s.useCallback(t=>{try{Yt(gs,String(t),l)}catch{}},[l]),bs=s.useCallback(t=>{if(M)return;t.preventDefault(),t.stopPropagation();const r=t.currentTarget;typeof r.setPointerCapture=="function"&&r.setPointerCapture(t.pointerId);const d=t.clientX,m=H;let f=m;document.body.style.userSelect="none";const v=Z=>{const ue=Z.clientX-d,se=ca(m+ue);f=se,E(se)},F=Z=>{typeof r.releasePointerCapture=="function"&&r.releasePointerCapture(Z.pointerId),document.body.style.userSelect="",document.removeEventListener("pointermove",v),document.removeEventListener("pointerup",F),_t(f)};document.addEventListener("pointermove",v),document.addEventListener("pointerup",F)},[M,_t,H]),xs=s.useCallback(t=>{if(M||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;t.preventDefault();const r=t.shiftKey?50:10,d=t.key==="ArrowLeft"?-r:r,m=ca(H+d);E(m),_t(m)},[M,_t,H]),[fs,lt]=s.useState(null),vs=s.useRef(null),[js,it]=s.useState(null),[Ke,pa]=s.useState(new Set),[He,ba]=s.useState(!1),[xa,rt]=s.useState(null),[fa,Ge]=s.useState({}),[ft,va]=s.useState(1),[ys,Ns]=s.useState({}),[ja,ya]=s.useState(!1),[Ye,Na]=s.useState(new Set),[Bt,ot]=s.useState(new Map),Pt=s.useRef(!0);s.useEffect(()=>(Pt.current=!0,()=>{Pt.current=!1}),[]),s.useEffect(()=>{mn(l).then(t=>{Pt.current&&(va(t.heartbeatMultiplier??1),Ns(t))}).catch(()=>{})},[l]);const ka=s.useCallback(async t=>{const r=Number.isFinite(t)&&t>0?t:1;va(r),ya(!0);try{await hn({heartbeatMultiplier:r},l),n(a("agents.heartbeatSpeedSet","Heartbeat speed set to ×{{value}}",{value:r.toFixed(1)}),"success")}catch(d){n(a("agents.heartbeatSpeedSaveFailed","Failed to save heartbeat multiplier: {{error}}",{error:ge(d)}),"error")}finally{Pt.current&&ya(!1)}},[l,n]),Lt=s.useMemo(()=>Bt.size===0?X:X.map(t=>{const r=Bt.get(t.id);return r?{...t,state:r}:t}),[X,Bt]),vt=s.useMemo(()=>Lt.filter(t=>S||!De(t)),[Lt,S]),ks=s.useMemo(()=>Lt.filter(t=>t.state!=="active"&&t.state!=="running"?!1:S||!De(t)),[Lt,S]),Xe=s.useMemo(()=>{if(S)return Me;const t=r=>De(r.agent)?null:{...r,children:r.children.map(t).filter(d=>d!==null)};return Me.map(t).filter(r=>r!==null)},[Me,S]);s.useEffect(()=>{if(K!=="org")return;const t=Pe.current;if(!t)return;const r=()=>{G(t.clientWidth)};r();const d=typeof ResizeObserver<"u"?new ResizeObserver(r):null;return d?.observe(t),window.addEventListener("resize",r),()=>{d?.disconnect(),window.removeEventListener("resize",r)}},[K,Xe.length]),s.useEffect(()=>{if(K!=="org")return;let t=!1;return Qe(!0),pn(l,{includeEphemeral:S}).then(r=>{t||Oe(r)}).catch(r=>{t||(n(a("agents.orgChartLoadFailed","Failed to load org chart: {{error}}",{error:ge(r)}),"error"),Oe([]))}).finally(()=>{t||Qe(!1)}),()=>{t=!0}},[K,l,S,n]),s.useEffect(()=>{const t=setInterval(()=>{V()},3e4);return()=>{clearInterval(t)}},[V]),s.useEffect(()=>{if(!be)return;let t=!1;w(!0),Ot(void 0,l).then(m=>{if(t)return;const f=m.filter(v=>!De(v));xe(f.filter(v=>v.state==="active"||v.state==="running").length),B(f.filter(v=>v.state==="paused").length),at(f.filter(v=>!pt(v)).length),xt(f.filter(v=>pt(v)).length)}).catch(m=>{t||(xe(0),B(0),at(0),xt(0),n(a("agents.bulkActionsLoadFailed","Failed to load bulk agent actions: {{error}}",{error:ge(m)}),"error"))}).finally(()=>{t||w(!1)});const r=m=>{const f=m.target;f&&(It.current?.contains(f)||nt.current?.contains(f)||Cn(f)||Q(!1))},d=m=>{m.key==="Escape"&&(Q(!1),nt.current?.focus())};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),document.addEventListener("keydown",d),()=>{t=!0,document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r),document.removeEventListener("keydown",d)}},[n,be,l]);const wa=async t=>{if(!je){et(!0);try{const d=(await Ot(void 0,l)).filter(p=>!De(p)),m=d.filter(p=>t==="paused"?p.state==="active"||p.state==="running":p.state==="paused"),f=d.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 Mt({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 F=await Promise.allSettled(m.map(p=>Ba(p.id,t,l))),Z=F.map((p,O)=>({result:p,agent:m[O]})).filter(p=>p.result.status==="rejected"),ue=F.length-Z.length,se=Z.length,Ne=t==="paused"?a("agents.pausedSummary",{count:ue,skipped:f,defaultValue_one:"Paused {{count}} agent; skipped {{skipped}}",defaultValue_other:"Paused {{count}} agents; skipped {{skipped}}"}):a("agents.resumedSummary",{count:ue,skipped:f,defaultValue_one:"Resumed {{count}} agent; skipped {{skipped}}",defaultValue_other:"Resumed {{count}} agents; skipped {{skipped}}"});if(se>0){const p=Z.slice(0,3).map(({agent:O,result:Se})=>`${O.name||O.id}: ${ge(Se.reason)}`).join("; ");n(`${Ne}; failed ${se}${p?` (${p})`:""}`,"error")}else n(Ne,"success");await V()}catch(r){n(t==="paused"?a("agents.pauseAgentsFailed","Failed to pause agents: {{error}}",{error:ge(r)}):a("agents.resumeAgentsFailed","Failed to resume agents: {{error}}",{error:ge(r)}),"error")}finally{et(!1)}}},Ca=async t=>{if(!(He||je||Ke.size>0)){ba(!0);try{const r=await Ot(void 0,l),m=r.filter(p=>!De(p)).filter(p=>pt(p)!==t),f=r.length-m.length;if(m.length===0){n(t?a("agents.noHeartbeatsToEnable","No agent heartbeats need enabling"):a("agents.noHeartbeatsToDisable","No agent heartbeats need disabling"),"error");return}if(!await Mt({title:t?a("agents.enableAllHeartbeats","Enable all heartbeats"):a("agents.disableAllHeartbeats","Disable all heartbeats"),message:t?a("agents.enableAllHeartbeatsConfirm","Enable heartbeats for {{count}} project agents?",{count:m.length}):a("agents.disableAllHeartbeatsConfirm","Disable heartbeats for {{count}} project agents?",{count:m.length}),danger:!t}))return;const F=await Promise.allSettled(m.map(p=>ut(p.id,{runtimeConfig:Ct(p,t)},l))),Z=F.map((p,O)=>({result:p,agent:m[O]})).filter(p=>p.result.status==="rejected"),ue=F.length-Z.length,se=t?a("agents.enableHeartbeatsSummary","Enabled {{count}} heartbeats; skipped {{skipped}}",{count:ue,skipped:f}):a("agents.disableHeartbeatsSummary","Disabled {{count}} heartbeats; skipped {{skipped}}",{count:ue,skipped:f}),Ne=Z.slice(0,3).map(({agent:p,result:O})=>`${p.name||p.id}: ${ge(O.reason)}`).join("; ");n(Z.length?`${se}; ${a("agents.bulkFailures","failed {{count}}",{count:Z.length})}${Ne?` (${Ne})`:""}`:se,Z.length?"error":"success"),await V()}catch(r){n(a("agents.heartbeatUpdateFailed","Failed to update heartbeat: {{error}}",{error:ge(r)}),"error")}finally{ba(!1)}}},jt=async(t,r)=>{if(!Ye.has(t)){Na(d=>new Set(d).add(t)),ot(d=>{const m=new Map(d);return m.set(t,r),m});try{await Ba(t,r,l),n(a("agents.stateUpdated","Agent state updated to {{state}}",{state:r}),"success"),await V(),ot(d=>{const m=new Map(d);return m.delete(t),m})}catch(d){ot(m=>{const f=new Map(m);return f.delete(t),f}),n(a("agents.stateUpdateFailed","Failed to update state: {{error}}",{error:ge(d)}),"error")}finally{Na(d=>{const m=new Set(d);return m.delete(t),m})}}},Sa=async(t,r)=>{if(await Mt({title:a("agents.deleteTitle","Delete Agent"),message:a("agents.deleteConfirm",'Delete agent "{{name}}"? This cannot be undone.',{name:r}),danger:!0}))try{await Rn(t,l),n(a("agents.deleted",'Agent "{{name}}" deleted',{name:r}),"success"),await V()}catch(m){n(a("agents.deleteFailed","Failed to delete agent: {{error}}",{error:ge(m)}),"error")}},ws=async(t,r)=>{const d=X.find(m=>m.id===t);if(d){if(d.role===r){lt(null);return}try{await ut(t,{role:r},l),n(a("agents.roleUpdated","Agent role updated to {{role}}",{role:y.find(m=>m.value===r)?.label??r}),"success"),lt(null),V()}catch(m){n(a("agents.roleUpdateFailed","Failed to update role: {{error}}",{error:ge(m)}),"error")}}},Cs=(t,r)=>{t.key==="Escape"&<(null)},Ss=async(t,r)=>{if(!(He||Ke.has(t.id))){xa===t.id&&(rt(null),Ge(d=>{const m={...d};return delete m[t.id],m})),it(t.id);try{await ut(t.id,{runtimeConfig:{...Ct(t,!0),heartbeatIntervalMs:r}},l),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:Wa(r),name:t.name}),"success"),V()}catch(d){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:ge(d)}),"error")}finally{it(null)}}},Aa=async(t,r)=>{if(!(De(t)||He||Ke.has(t.id))){pa(d=>new Set(d).add(t.id));try{await ut(t.id,{runtimeConfig:Ct(t,r)},l),n(r?a("agents.heartbeatEnabledForAgent","Heartbeat enabled for {{name}}",{name:t.name}):a("agents.heartbeatDisabled","Heartbeat disabled for {{name}}",{name:t.name}),"success"),await V()}catch(d){n(a("agents.heartbeatUpdateFailed","Failed to update heartbeat: {{error}}",{error:ge(d)}),"error")}finally{pa(d=>{const m=new Set(d);return m.delete(t.id),m})}}},As=t=>Aa(t,!1),Ra=async t=>{if(He||Ke.has(t.id))return;const r=fa[t.id]??"";if(r.trim()===""){n(a("agents.heartbeatEnterMinutes","Please enter a heartbeat interval in minutes"),"error");return}const d=Number(r);if(isNaN(d)){n(a("agents.heartbeatMustBeNumber","Heartbeat interval must be a valid number"),"error");return}if(d<=0){n(a("agents.heartbeatMustBePositive","Heartbeat interval must be greater than 0"),"error");return}if(d>=1&&d<5){it(t.id);try{await ut(t.id,{runtimeConfig:{...Ct(t,!0),heartbeatIntervalMs:En}},l),n(a("agents.heartbeatClampedToMin",{count:d,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"),rt(null),Ge(f=>{const v={...f};return delete v[t.id],v}),V()}catch(f){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:ge(f)}),"error")}finally{it(null)}return}const m=Math.round(d*6e4);it(t.id);try{await ut(t.id,{runtimeConfig:{...Ct(t,!0),heartbeatIntervalMs:m}},l),n(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:Wa(m),name:t.name}),"success"),rt(null),Ge(f=>{const v={...f};return delete v[t.id],v}),V()}catch(f){n(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:ge(f)}),"error")}finally{it(null)}},Rs=t=>{if(He||Ke.has(t.id))return;const r=na(t.runtimeConfig?.heartbeatIntervalMs),d=Math.round(r/6e4);rt(t.id),Ge(m=>({...m,[t.id]:String(d)}))},ye=s.useCallback((t,r)=>{Re(t),Ee(r?.initialTab??"dashboard"),$e(r?.initialRunId??null),Ie(r?.preferActiveRun??!1)},[]),qe=s.useCallback(()=>{Re(null),Ee("dashboard"),$e(null),Ie(!1)},[]),Ea=s.useCallback(t=>{ye(t)},[ye]),Es=s.useCallback(t=>{Fe(t),ye(t);const r=X.find(d=>d.id===t)?.taskId??hs(Me,t)?.taskId;r&&g&&g(r)},[X,g,ye,Me]),Ts=s.useCallback(async({agentId:t,deleted:r})=>{await U(),r&&q===t&&qe()},[U,q,qe]),Wt=s.useCallback(t=>{ye(t),M&&Ve(!1)},[M,ye]),Ta=s.useRef(void 0);s.useEffect(()=>{!h||Ta.current===h.requestId||(Ta.current=h.requestId,Wt(h.agentId))},[h,Wt]);const Is=async(t,r)=>{ot(d=>{const m=new Map(d);return m.set(t,"running"),m});try{await Tn(t,l,{source:"on_demand",triggerDetail:"Triggered from dashboard"}),n(a("agents.heartbeatRunStarted","Heartbeat run started for {{name}}",{name:r}),"success"),await V(),ot(d=>{const m=new Map(d);return m.delete(t),m})}catch(d){ot(m=>{const f=new Map(m);return f.delete(t),f}),n(a("agents.heartbeatRunFailed","Failed to start heartbeat run: {{error}}",{error:ge(d)}),"error")}},Ze=s.useCallback(t=>Math.min(jl,Math.max(vl,t)),[]),oe=s.useCallback(t=>{const r=Pe.current,d=Le.current?.querySelector(".agent-org-chart");if(!r||!d)return{...t,scale:Ze(t.scale)};const m=Ze(t.scale),f=d.scrollWidth*m,v=d.scrollHeight*m,F=r.clientWidth,Z=r.clientHeight,ue=Math.min(mt,F-f-mt),se=mt,Ne=Math.min(mt,Z-v-mt),p=mt;return{scale:m,x:Math.max(ue,Math.min(se,t.x)),y:Math.max(Ne,Math.min(p,t.y))}},[Ze]),Ht=s.useCallback((t,r,d)=>{const m=Pe.current;m&&J(f=>{const v=Ze(t),F=m.getBoundingClientRect(),Z=r-F.left,ue=d-F.top,se=(Z-f.x)/f.scale,Ne=(ue-f.y)/f.scale;return oe({scale:v,x:Z-se*v,y:ue-Ne*v})})},[Ze,oe]),ct=s.useCallback(()=>{const t=Pe.current,r=Le.current?.querySelector(".agent-org-chart");if(!t||!r)return;const d=t.clientWidth,m=t.clientHeight,f=r.scrollWidth,v=r.scrollHeight;if(f<=0||v<=0)return;const F=Ze(Math.min(d/f,m/v,1)),Z=(d-f*F)/2,ue=(m-v*F)/2;J(oe({scale:F,x:Z,y:ue}))},[Ze,oe]),Ut=s.useCallback(t=>{ze(t),t!=="org"&&J({scale:1,x:0,y:0}),M&&q&&qe()},[qe,M,q]),Ia=t=>y.find(r=>r.value===t)?.label??t,Dt=s.useMemo(()=>Vn({tree:Xe,availableWidth:he,preference:Ce}),[Xe,Ce,he]),Ma=s.useCallback(t=>{Je(t),J({scale:1,x:0,y:0})},[]);s.useEffect(()=>{J({scale:1,x:0,y:0}),re.current=!1},[l,Dt]),s.useLayoutEffect(()=>{K!=="org"||Be||Xe.length===0||re.current||(ct(),re.current=!0)},[K,Xe.length,ct,Be]);const Ms=s.useCallback((t,r)=>{r?Ue.current.set(t,r):Ue.current.delete(t)},[]),_a=s.useCallback(()=>e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>J(t=>oe({...t,scale:t.scale*.9})),"aria-label":a("agents.orgChartZoomOut","Zoom out org chart"),title:a("agents.zoomOut","Zoom out"),children:e.jsx(tl,{size:16})}),e.jsxs("span",{className:"agent-org-chart-controls__zoom-label","aria-live":"polite",children:[Math.round(ie.scale*100),"%"]}),e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>J(t=>oe({...t,scale:t.scale*1.1})),"aria-label":a("agents.orgChartZoomIn","Zoom in org chart"),title:a("agents.zoomIn","Zoom in"),children:e.jsx(Qn,{size:16})}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm agent-org-chart-controls__fit-btn",onClick:ct,"aria-label":a("agents.orgChartFit","Fit org chart"),title:a("agents.orgChartFit","Fit org chart"),children:[e.jsx(bn,{size:16}),a("agents.fit","Fit")]}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm",onClick:()=>J(t=>oe({...t,x:0,y:0})),"aria-label":a("agents.orgChartCenter","Center org chart"),title:a("agents.orgChartCenter","Center org chart"),children:[e.jsx(xn,{size:16}),a("agents.center","Center")]})]}),[oe,ct,ie.scale]),_s=s.useCallback(t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();const r=t.deltaY>0?.9:1.1;Ht(ie.scale*r,t.clientX,t.clientY)},[ie.scale,Ht]),Ps=s.useCallback(t=>{if(t.target.closest(".org-chart-node-card"))return;if(t.currentTarget.setPointerCapture?.(t.pointerId),fe.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),fe.current.size===1){o.current={x:t.clientX-ie.x,y:t.clientY-ie.y,pointerId:t.pointerId},Tt(!0);return}if(fe.current.size===2){const d=Array.from(fe.current.values()),m=d[0].x-d[1].x,f=d[0].y-d[1].y;j.current={distance:Math.hypot(m,f),scale:ie.scale,centerX:(d[0].x+d[1].x)/2,centerY:(d[0].y+d[1].y)/2},o.current=null}},[ie.scale,ie.x,ie.y]),Ls=s.useCallback(t=>{if(fe.current.has(t.pointerId)){if(fe.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),fe.current.size>=2){const r=Array.from(fe.current.values()),d=j.current;if(!d)return;const m=r[0].x-r[1].x,f=r[0].y-r[1].y,v=Math.hypot(m,f),F=d.scale*(v/d.distance);Ht(F,d.centerX,d.centerY);return}!o.current||o.current.pointerId!==t.pointerId||J(r=>oe({...r,x:t.clientX-o.current.x,y:t.clientY-o.current.y}))}},[oe,Ht]),Pa=s.useCallback(t=>{fe.current.delete(t.pointerId),fe.current.size<2&&(j.current=null),fe.current.size===0&&(o.current=null,Tt(!1))},[]),Hs=s.useCallback(t=>{if(t.key==="ArrowLeft")J(r=>oe({...r,x:r.x+$t}));else if(t.key==="ArrowRight")J(r=>oe({...r,x:r.x-$t}));else if(t.key==="ArrowUp")J(r=>oe({...r,y:r.y+$t}));else if(t.key==="ArrowDown")J(r=>oe({...r,y:r.y-$t}));else if(t.key==="+"||t.key==="=")J(r=>oe({...r,scale:r.scale*1.1}));else if(t.key==="-")J(r=>oe({...r,scale:r.scale*.9}));else if(t.key==="0")ct();else if(t.key==="Home")J({scale:1,x:0,y:0});else return;t.preventDefault()},[oe,ct]),La=s.useCallback(()=>{const t=[{value:"horizontal",label:a("agents.layoutHorizontal","Horizontal"),icon:e.jsx(qa,{size:16}),ariaLabel:a("agents.layoutHorizontalAria","Horizontal layout")},{value:"vertical",label:a("agents.layoutVertical","Vertical"),icon:e.jsx(za,{size:16}),ariaLabel:a("agents.layoutVerticalAria","Vertical layout")},{value:"auto",label:a("agents.layoutAuto","Auto"),icon:e.jsx(ht,{size:16}),ariaLabel:a("agents.layoutAutoAria","Automatic layout")}];return e.jsx("div",{className:"agent-org-chart-layout-toggle","data-testid":"agent-org-chart-layout-toggle",children:t.map(r=>{const d=Ce===r.value;return e.jsxs("button",{type:"button",className:`btn-icon touch-target agent-org-chart-layout-toggle__button${d?" btn-icon--active":""}`,onClick:()=>Ma(r.value),"aria-pressed":d,"aria-label":r.ariaLabel,title:r.ariaLabel,"data-layout-value":r.value,children:[r.icon,e.jsx("span",{className:"agent-org-chart-layout-toggle__text",children:r.label})]},r.value)})})},[Ma,Ce]),Ds=t=>Array.isArray(t.metadata?.skills)?t.metadata.skills:[],Kt=t=>An(t,ft),Fs=c||je||D===0,$s=c||je||ee===0,zs=c||je||He||tt===0,Os=c||je||He||Et===0,Ha=te&&X.length===0,yt=s.useCallback(()=>{ce(!0)},[]);return e.jsxs("div",{className:"agents-view",children:[e.jsx(fn,{icon:ra,title:a("agents.title","Agents"),actions:e.jsxs("div",{className:"agents-view-controls",children:[e.jsxs("div",{className:"view-toggle",children:[e.jsx("button",{className:`view-toggle-btn${K==="list"?" active":""}`,onClick:()=>Ut("list"),title:a("agents.listView","List view"),"aria-label":a("agents.listView","List view"),"aria-pressed":K==="list",children:e.jsx(za,{size:16})}),e.jsx("button",{className:`view-toggle-btn${K==="board"?" active":""}`,onClick:()=>Ut("board"),title:a("agents.boardView","Board view"),"aria-label":a("agents.boardView","Board view"),"aria-pressed":K==="board",children:e.jsx(bt,{size:16})}),e.jsx("button",{className:`view-toggle-btn${K==="org"?" active":""}`,onClick:()=>Ut("org"),title:a("agents.orgChartView","Org Chart view"),"aria-label":a("agents.orgChartView","Org Chart view"),"aria-pressed":K==="org",children:e.jsx(qa,{size:16})})]}),e.jsxs("div",{className:`agents-view-primary-actions${be?" agents-view-primary-actions--controls-open":""}`,children:[e.jsx("button",{ref:nt,className:`btn-icon agent-controls-trigger${be?" agent-controls-trigger--active":""}`,onClick:()=>Q(t=>!t),title:a("agents.controls","Controls"),"aria-label":a("agents.controls","Controls"),"aria-haspopup":"dialog","aria-expanded":be,"aria-controls":ha,children:e.jsx(vn,{size:16})}),e.jsx("button",{className:"btn-icon",onClick:()=>void V(),title:a("agents.refresh","Refresh"),"aria-label":a("agents.refresh","Refresh"),children:e.jsx(ht,{size:16,className:te?"spin":void 0})}),!M&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{de(!0),Q(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(oa,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{yt(),Q(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(Oa,{size:16}),a("agents.newAgent","New Agent")]})]}),be&&e.jsxs("div",{ref:It,id:ha,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(jn,{size:14}),e.jsxs("select",{className:"agent-state-filter-select",value:z,onChange:t=>Y(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:S,onChange:t=>T(t.target.checked),"aria-label":a("agents.showSystemAgents","Show system agents")}),a("agents.showSystemAgents","Show system agents")]})]})}),M&&e.jsxs("div",{className:"agent-controls-mobile-actions",children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{de(!0),Q(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx(oa,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{yt(),Q(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(Oa,{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:Fs,onClick:()=>{Q(!1),wa("paused")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Ft,{}),e.jsx("span",{children:a("agents.pauseAllAgents","Pause All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:c?a("agents.loadingEligibility","Loading eligibility…"):D===0?a("agents.noAgentsToPauseHint","No active or running project agents to pause"):a("agents.pauseCountHint",{count:D,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:zs,onClick:()=>{Q(!1),Ca(!0)},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(wt,{}),e.jsx("span",{children:a("agents.enableAllHeartbeats","Enable all heartbeats")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:a("agents.enableHeartbeatsCountHint","Enable {{count}} disabled project heartbeats",{count:tt})})]}),e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:Os,onClick:()=>{Q(!1),Ca(!1)},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Ft,{}),e.jsx("span",{children:a("agents.disableAllHeartbeats","Disable all heartbeats")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:a("agents.disableHeartbeatsCountHint","Disable {{count}} enabled project heartbeats",{count:Et})})]}),e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:$s,onClick:()=>{Q(!1),wa("active")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(wt,{}),e.jsx("span",{children:a("agents.resumeAllAgents","Resume All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:c?a("agents.loadingEligibility","Loading eligibility…"):ee===0?a("agents.noAgentsToResumeHint","No paused project agents to resume"):a("agents.resumeCountHint",{count:ee,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:ft,onChange:t=>{const r=Number(t.target.value);ka(Number.isFinite(r)&&r>0?r:1)},disabled:ja}),e.jsxs("span",{className:"heartbeat-multiplier-value",children:["×",ft.toFixed(1)]}),e.jsx("select",{className:"heartbeat-multiplier-preset",value:String(aa.reduce((t,r)=>Math.abs(r-ft)<Math.abs(t-ft)?r:t,aa[0])),onChange:t=>{const r=Number(t.target.value);ka(Number.isFinite(r)&&r>0?r:1)},disabled:ja,"aria-label":a("agents.heartbeatSpeedPreset","Heartbeat speed preset"),children:aa.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(al,{agents:vt})]})]})]})}),e.jsx(hl,{isOpen:A,onClose:()=>{ce(!1),pe(null)},onCreated:()=>{ce(!1),pe(null),V()},projectId:l,prefillDraft:Ae,agentOnboardingEnabled:u,existingAgents:X,onPrefillDraft:pe}),e.jsx(bl,{isOpen:ne,onClose:()=>de(!1),onImported:()=>void V(),projectId:l}),e.jsx(gl,{stats:ve,activeAgents:ks,projectId:l,isOpen:_e,onToggle:()=>Ve(t=>!t),onSelectAgent:Wt,onOpenTaskLogs:g}),K==="org"?e.jsx("div",{className:"agents-org-full-view",children:e.jsx("div",{className:"agents-view-content agents-view-content--org-full",children:q?e.jsxs("div",{className:"agents-org-detail-view","data-testid":"agents-org-detail-view",children:[e.jsx("button",{type:"button",className:"btn btn-sm agents-org-detail-back",onClick:qe,"aria-label":a("agents.backToOrgChart","Back to org chart"),children:a("agents.backToOrgChart","Back to org chart")}),e.jsx(s.Suspense,{fallback:null,children:e.jsx(ts,{inline:!0,showInlineBackButton:!1,agentId:q,projectId:l,onClose:qe,addToast:n,onChildClick:Ea,initialTab:ke,initialRunId:we,preferActiveRun:le},q)})]}):Ha?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(ht,{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:[M?e.jsxs("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:[La(),_a()]}):e.jsxs("div",{className:"agent-org-chart-toolbar",children:[La(),e.jsx("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:_a()})]}),e.jsx("div",{ref:Pe,className:"agent-org-chart-viewport","data-testid":"agent-org-chart-viewport",tabIndex:0,role:"region","aria-label":a("agents.orgChartCanvas","Org chart canvas"),onWheel:_s,onPointerDown:Ps,onPointerMove:Ls,onPointerUp:Pa,onPointerCancel:Pa,onKeyDown:Hs,"data-panning":We?"true":"false",children:e.jsxs("div",{ref:Le,className:`agent-org-chart-canvas agent-org-chart-canvas--zoom-${Math.round((ie.scale??1)*100)}`,"data-panning":We?"true":"false",style:{transform:`translate(${ie.x}px, ${ie.y}px) scale(${ie.scale})`},children:[e.jsx("div",{className:`agent-org-chart${Dt==="vertical"?" agent-org-chart--vertical":""}`,"data-testid":"agent-org-chart","data-layout-mode":Dt,children:Be?e.jsxs("div",{className:"agent-org-chart__loading",role:"status","aria-live":"polite",children:[e.jsx(ht,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingOrgChart","Loading org chart...")})]}):Xe.length===0?e.jsx(Qt,{onCtaClick:yt}):(st.current=[],Xe.map(t=>e.jsx(ps,{node:t,onSelect:Es,getHealthStatus:Kt,selectedAgentId:me,registerNodeElement:Ms,linksRef:st,activityByAgentId:x.activityByAgentId,nowTick:x.nowTick},t.agent.id)))}),e.jsx(kl,{links:st.current,nodeElements:Ue.current,canvasRef:Le,viewportRef:Pe,layoutMode:Dt,transform:ie,activityEvents:x.events,nowTick:x.nowTick})]})})]})})}):e.jsxs("div",{className:"agents-split-layout",style:M?void 0:{gridTemplateColumns:`${H}px var(--space-sm) minmax(0, 1fr)`},children:[e.jsx("div",{className:`agents-split-sidebar${ae?" agents-split-sidebar--hidden-mobile":""}`,children:e.jsx("div",{className:"agents-view-content",children:Ha?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(ht,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):K==="board"?e.jsx("div",{className:"agent-board",children:vt.length===0?e.jsx(Qt,{onCtaClick:yt}):vt.map(t=>{const r=Kt(t),d=ga(t,r,a),m=da(t.state),f=ua("agent-board-card",t.state);return e.jsxs("div",{className:`agent-board-card ${f}${q===t.id?" agent-card--selected":""}`,children:[e.jsxs("div",{ref:R(`board:${t.id}`),className:"agent-board-clickable",onClick:()=>ye(t.id),role:"button",tabIndex:0,onKeyDown:v=>{(v.key==="Enter"||v.key===" ")&&(v.key===" "&&v.preventDefault(),ye(t.id))},children:[e.jsxs("div",{className:"agent-board-header",children:[e.jsx("span",{className:"agent-board-icon",children:e.jsx(Vt,{agent:t,size:20})}),e.jsx("span",{className:"agent-board-badge badge text-secondary",children:Ia(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}),t.taskId&&e.jsx(la,{taskId:t.taskId,isInViewport:k(`board:${t.id}`),projectId:l}),e.jsxs("div",{className:"agent-board-health",style:{color:r.color},title:d.title,children:[r.icon,d.label?` ${d.label}`:""]})]}),e.jsxs("div",{className:"agent-board-actions",children:[e.jsx(Nl,{agent:t,pending:He||Ke.has(t.id),onToggle:v=>void Aa(v,!pt(v))}),(t.state==="idle"||t.state==="paused"||t.state==="error")&&e.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>void Sa(t.id,t.name),title:a("agents.delete","Delete"),children:e.jsx(Va,{size:14})})]})]},t.id)})}):e.jsx("div",{className:"agent-list",children:vt.length===0?e.jsx(Qt,{onCtaClick:yt}):vt.map(t=>{const r=Kt(t),d=ga(t,r,a),m=da(t.state),f=ua("agent-card",t.state),v=na(t.runtimeConfig?.heartbeatIntervalMs),F=yn(v),ue=!pt(t)?sa:String(v),se=He||js===t.id||Ke.has(t.id),Ne=yl(t,ys);return e.jsxs("div",{ref:R(`list:${t.id}`),className:`agent-card agent-card--clickable ${f}${q===t.id?" agent-card--selected":""}`,onClick:p=>{const O=p.target;if(O===p.currentTarget){ye(t.id);return}const Se=O.closest('button, select, input, [role="button"]');Se&&Se!==p.currentTarget||ye(t.id)},role:"button",tabIndex:0,onKeyDown:p=>{p.target===p.currentTarget&&(p.key==="Enter"||p.key===" ")&&(p.key===" "&&p.preventDefault(),ye(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:[fs===t.id?e.jsx("select",{ref:vs,className:"select agent-role-select",value:t.role,onChange:p=>void ws(t.id,p.target.value),onKeyDown:p=>Cs(p,t.id),onBlur:()=>lt(null),autoFocus:!0,children:y.map(p=>e.jsxs("option",{value:p.value,children:[p.icon," ",p.label]},p.value))}):e.jsx("span",{className:"agent-icon agent-icon--clickable",onClick:p=>{p.stopPropagation(),lt(t.id)},title:a("agents.clickToChangeRole","Click to change role"),role:"button",tabIndex:0,onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.stopPropagation(),lt(t.id))},children:e.jsx(Vt,{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(is,{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:r.color},title:d.title,children:[r.icon,d.label?` ${d.label}`:""]}),e.jsx("span",{className:"badge text-secondary",children:Ia(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 p=Ds(t);if(p.length===0)return null;const O=p.slice(0,2),Se=p.length-2;return e.jsxs(e.Fragment,{children:[O.map(dt=>{const Nt=Ka(dt,b||i?null:C,{forced:!0});return e.jsxs("span",{className:"badge badge-skill","data-skill-state":Nt.state,title:`${dt}: ${a(Nt.titleKey,Nt.defaultTitle)}`,children:[_n(dt)," ",e.jsx("span",{className:"skill-state-marker",children:a(Nt.labelKey,Nt.defaultLabel)})," ",e.jsx("span",{className:"skill-state-marker skill-state-marker--forced",children:a("skills.forced","Forced")})]},dt)}),Se>0&&e.jsxs("span",{className:"badge badge-skill",title:p.slice(2).some(dt=>["disabled","unknown"].includes(Ka(dt,b||i?null:C,{forced:!0}).state))?a("skills.hiddenUnavailable","Hidden skills include disabled or not-discovered entries"):void 0,children:["+",Se]})]})})()]})]}),e.jsxs("div",{className:"agent-card-body",children:[e.jsxs("div",{className:"agent-model-runtime",children:[e.jsxs("span",{className:"text-secondary",children:[Ne.isRuntime?a("agents.runtime","Runtime"):a("agents.model","Model"),":"]}),e.jsx("span",{className:"badge agent-model-runtime__value",title:Ne.label??a("agents.auto","Auto"),children:Ne.label??a("agents.auto","Auto")})]}),t.state==="error"&&t.lastError?e.jsx(Nn,{errorText:t.lastError,issueContext:{surface:"AgentsView list",agentId:t.id,agentName:t.name,agentState:t.state,taskId:t.taskId}}):null,t.taskId&&e.jsxs("div",{className:"agent-task",children:[e.jsx("span",{className:"text-secondary",children:a("agents.workingOn","Working on:")}),e.jsx("span",{className:"badge",children:e.jsx(ls,{taskId:t.taskId,taskColumn:t.taskColumn})}),e.jsx(la,{taskId:t.taskId,isInViewport:k(`list:${t.id}`),projectId:l})]}),!De(t)&&e.jsxs("div",{className:"agent-heartbeat-control",children:[e.jsx("span",{className:"text-secondary",children:a("agents.heartbeat","Heartbeat:")}),xa===t.id?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"input agent-heartbeat-custom-input",value:fa[t.id]??"",onChange:p=>Ge(O=>({...O,[t.id]:p.target.value})),onKeyDown:p=>{p.key==="Enter"?Ra(t):p.key==="Escape"&&(rt(null),Ge(O=>{const Se={...O};return delete Se[t.id],Se}))},disabled:se,"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 Ra(t),disabled:se,title:a("agents.saveCustomInterval","Save custom interval"),children:a("agents.save","Save")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>{rt(null),Ge(p=>{const O={...p};return delete O[t.id],O})},disabled:se,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:ue,onChange:p=>{const O=p.target.value;O===sa?As(t):O==="__custom__"?Rs(t):Ss(t,Number(O))},disabled:se,"aria-label":a("agents.setHeartbeatAria","Set heartbeat interval for {{name}}",{name:t.name}),children:[e.jsx("option",{value:sa,children:a("agents.heartbeatDisabledOption","Disabled")}),F.map(p=>e.jsx("option",{value:p.value,children:p.label},p.value)),kn.some(p=>p.value===v)&&e.jsx("option",{value:"__custom__",children:a("agents.customHeartbeatOption","Custom...")})]})}),se&&e.jsx("span",{className:"agent-heartbeat-saving text-secondary",children:a("agents.saving","Saving…")}),t.lastHeartbeatAt&&(()=>{const p=new Date(t.lastHeartbeatAt),O=new Date(p.getTime()+v),Se=t.state==="active"||t.state==="running";return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"agent-heartbeat-last text-secondary",title:p.toLocaleString(),children:a("agents.lastHeartbeatAt","Last: {{time}}",{time:p.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})}),Se&&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 jt(t.id,"active"),disabled:Ye.has(t.id),title:a("agents.activate","Activate"),children:[e.jsx(wt,{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 Is(t.id,t.name),disabled:Ye.has(t.id),title:a("agents.runNow","Run Now"),"aria-label":a("agents.runNowAria","Run now for {{name}}",{name:t.name}),children:[e.jsx(bt,{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 jt(t.id,"paused"),disabled:Ye.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Ft,{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 jt(t.id,"active"),disabled:Ye.has(t.id),title:a("agents.resume","Resume"),children:[e.jsx(wt,{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:()=>ye(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(bt,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.running","Running")})]}),e.jsxs("button",{className:"btn btn-sm",onClick:()=>void jt(t.id,"paused"),disabled:Ye.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Ft,{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 jt(t.id,"active"),disabled:Ye.has(t.id),title:a("agents.retry","Retry"),children:[e.jsx(wt,{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:()=>ye(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(wn,{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 Sa(t.id,t.name),title:a("agents.delete","Delete"),children:[e.jsx(Va,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.delete","Delete")})]})]})]})]},t.id)})})})}),!M&&e.jsx("div",{className:"agents-split-resize-handle","data-testid":"agents-sidebar-resize-handle",role:"separator","aria-orientation":"vertical","aria-valuemin":ds,"aria-valuemax":us,"aria-valuenow":H,"aria-label":a("agents.resizeSidebar","Resize agents sidebar"),tabIndex:0,onPointerDown:bs,onKeyDown:xs}),e.jsx("div",{className:`agents-split-detail${M&&!q?" agents-split-detail--hidden-mobile":""}`,children:q?e.jsx(s.Suspense,{fallback:null,children:e.jsx(ts,{inline:!0,showInlineBackButton:M,agentId:q,projectId:l,onClose:qe,addToast:n,onChildClick:Ea,initialTab:ke,initialRunId:we,preferActiveRun:le,onMutationSuccess:Ts},q)}):e.jsxs("div",{className:"agents-detail-empty-state",children:[e.jsx(ra,{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{Dl as AgentsView};
|