@runfusion/fusion 0.48.0 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/bin.js +43336 -15114
  2. package/dist/client/.vite/manifest.json +250 -249
  3. package/dist/client/assets/AgentDetailView-BzSyldiW.css +1 -0
  4. package/dist/client/assets/{AgentDetailView-CF6isJ51.js → AgentDetailView-D2oYUApl.js} +5 -5
  5. package/dist/client/assets/{AgentPermissionPolicyEditor-DFldf6aS.js → AgentPermissionPolicyEditor-DGgx46f3.js} +1 -1
  6. package/dist/client/assets/AgentsView-Dhf5Vq_T.js +29 -0
  7. package/dist/client/assets/ChatView-DpgpxHva.js +19 -0
  8. package/dist/client/assets/ChatView-DwIIrJxb.css +1 -0
  9. package/dist/client/assets/CommandCenter-B9q-zM9p.css +1 -0
  10. package/dist/client/assets/CommandCenter-DzQhGq_J.js +71 -0
  11. package/dist/client/assets/{DevServerView-D6RFaGPU.js → DevServerView-DjJYp6Jj.js} +1 -1
  12. package/dist/client/assets/{DirectoryPicker-DNBB-viz.js → DirectoryPicker-CYPYp9T4.js} +1 -1
  13. package/dist/client/assets/{DocumentsView-DXG-sctG.js → DocumentsView-CeQVRVdp.js} +1 -1
  14. package/dist/client/assets/{EvalsView-Ol6ECKz5.js → EvalsView-D250mVR5.js} +1 -1
  15. package/dist/client/assets/{ExperimentalAgentOnboardingModal-BQc3GaE_.js → ExperimentalAgentOnboardingModal-B1EEY_bl.js} +1 -1
  16. package/dist/client/assets/{GoalsView-C_m90anC.js → GoalsView-MftVwE9g.js} +1 -1
  17. package/dist/client/assets/{InsightsView-BbFgPsDH.js → InsightsView-CbWItYe8.js} +1 -1
  18. package/dist/client/assets/{MemoryView-CRS7AjWK.js → MemoryView-Ct0nOTES.js} +1 -1
  19. package/dist/client/assets/{PiExtensionsManager-BEj5xu45.js → PiExtensionsManager-DSQwngX-.js} +1 -1
  20. package/dist/client/assets/{PluginManager-CzCM3XUY.js → PluginManager-DqLxCiNg.js} +1 -1
  21. package/dist/client/assets/{PullRequestView-9yNYCunb.js → PullRequestView-D0WgwdAi.js} +1 -1
  22. package/dist/client/assets/{ResearchView-BKdirpiw.js → ResearchView-CJQL9XKC.js} +1 -1
  23. package/dist/client/assets/{SecretsView-qGjo-0Cp.js → SecretsView-ChN9aTbi.js} +1 -1
  24. package/dist/client/assets/{SessionTerminal-C7YlkdGJ.js → SessionTerminal-BVon9kbr.js} +1 -1
  25. package/dist/client/assets/SettingsModal-B4WANQnu.js +21 -0
  26. package/dist/client/assets/{SettingsModal-CvbiSIHS.css → SettingsModal-BzZNPNIh.css} +1 -1
  27. package/dist/client/assets/{SettingsModal-DihNd7g8.js → SettingsModal-CIC5jhgo.js} +1 -1
  28. package/dist/client/assets/SettingsModal-tUDR6nJ9.css +1 -0
  29. package/dist/client/assets/{SetupWizardModal-MovTj5pY.js → SetupWizardModal-C6EGjmbd.js} +2 -2
  30. package/dist/client/assets/{ShadcnColorPicker-Bnf5n5R4.js → ShadcnColorPicker-4e_aXoGX.js} +1 -1
  31. package/dist/client/assets/{ShadcnColorPicker-pqVWCC5-.css → ShadcnColorPicker-CzZo9UOD.css} +1 -1
  32. package/dist/client/assets/SkillsView-Dz8dDwfP.js +1 -0
  33. package/dist/client/assets/SkillsView-tAW7TTCz.css +1 -0
  34. package/dist/client/assets/{TodoView-CIsL_uvQ.css → TodoView--YoVYWvw.css} +1 -1
  35. package/dist/client/assets/{TodoView-BEdk6FTU.js → TodoView-DvJFzoOv.js} +1 -1
  36. package/dist/client/assets/WorkflowNodeEditor-DrdTCstS.js +8 -0
  37. package/dist/client/assets/WorkflowNodeEditor-WYIxHTxY.css +1 -0
  38. package/dist/client/assets/{agentSkills-D5nDZPRY.js → agentSkills-B2dD5Nm5.js} +1 -1
  39. package/dist/client/assets/app-BYq4S7Cb.js +13 -0
  40. package/dist/client/assets/app-D27ewSC0.js +13 -0
  41. package/dist/client/assets/app-DFLDkeOE.js +13 -0
  42. package/dist/client/assets/app-OPrfgjjn.js +13 -0
  43. package/dist/client/assets/app-dATBczl3.js +13 -0
  44. package/dist/client/assets/{app-D_IT9Buz.js → app-k1K9zAjp.js} +3 -3
  45. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BbkXWBni.js → architectureDiagram-3BPJPVTR-ClO0MnzR.js} +1 -1
  46. package/dist/client/assets/{blockDiagram-GPEHLZMM-DhaqpHqZ.js → blockDiagram-GPEHLZMM-C4cyy4WE.js} +1 -1
  47. package/dist/client/assets/{c4Diagram-AAUBKEIU-qC0WSHMZ.js → c4Diagram-AAUBKEIU-NHPC9TJo.js} +1 -1
  48. package/dist/client/assets/channel-Q2WKocEP.js +1 -0
  49. package/dist/client/assets/{chunk-2J33WTMH-Dah9zMeT.js → chunk-2J33WTMH-CGYIKTVR.js} +1 -1
  50. package/dist/client/assets/{chunk-4BX2VUAB-epHwnUb_.js → chunk-4BX2VUAB-BkCCD0tE.js} +1 -1
  51. package/dist/client/assets/{chunk-55IACEB6-DpYBy44g.js → chunk-55IACEB6-Be3yOIDe.js} +1 -1
  52. package/dist/client/assets/{chunk-727SXJPM-B9b8698e.js → chunk-727SXJPM-DxjyMaQQ.js} +1 -1
  53. package/dist/client/assets/{chunk-AQP2D5EJ-DrM8nnhR.js → chunk-AQP2D5EJ-BC0PjN0W.js} +1 -1
  54. package/dist/client/assets/{chunk-FMBD7UC4-jyT6Scwe.js → chunk-FMBD7UC4-DoWxmM8k.js} +1 -1
  55. package/dist/client/assets/{chunk-ND2GUHAM-EoPfF-PK.js → chunk-ND2GUHAM-EOpuc9pP.js} +1 -1
  56. package/dist/client/assets/{chunk-QZHKN3VN-qMwLVfgJ.js → chunk-QZHKN3VN-DiRyx9QZ.js} +1 -1
  57. package/dist/client/assets/classDiagram-4FO5ZUOK-CPFl2Aqd.js +1 -0
  58. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CPFl2Aqd.js +1 -0
  59. package/dist/client/assets/{cose-bilkent-S5V4N54A-DmPFKoVD.js → cose-bilkent-S5V4N54A-CfVoUUxT.js} +1 -1
  60. package/dist/client/assets/{dagre-BM42HDAG-DeHxd-ej.js → dagre-BM42HDAG-BfILvxLb.js} +1 -1
  61. package/dist/client/assets/{dashboard-view-DXjNQ5IF.js → dashboard-view-C9YIcx-O.js} +2 -2
  62. package/dist/client/assets/{dashboard-view-Cw5mMJay.js → dashboard-view-wFC1pe4d.js} +1 -1
  63. package/dist/client/assets/{diagram-2AECGRRQ-C04A2mhr.js → diagram-2AECGRRQ-6mdmbH-5.js} +1 -1
  64. package/dist/client/assets/{diagram-5GNKFQAL-DqtOwADI.js → diagram-5GNKFQAL-CY7MMwO1.js} +1 -1
  65. package/dist/client/assets/{diagram-KO2AKTUF-CH0har-Z.js → diagram-KO2AKTUF-D05XnQqd.js} +1 -1
  66. package/dist/client/assets/{diagram-LMA3HP47-CxN-U-0W.js → diagram-LMA3HP47-B18FTOJG.js} +1 -1
  67. package/dist/client/assets/{diagram-OG6HWLK6-42A7wpwF.js → diagram-OG6HWLK6-xmXlYf5m.js} +1 -1
  68. package/dist/client/assets/{erDiagram-TEJ5UH35-CnZI5YlN.js → erDiagram-TEJ5UH35-4XlgVLCs.js} +1 -1
  69. package/dist/client/assets/{flowDiagram-I6XJVG4X-BKfQhMVF.js → flowDiagram-I6XJVG4X-BYl3ps7f.js} +1 -1
  70. package/dist/client/assets/{folder-open-STXgbemw.js → folder-open-BH6FwmO7.js} +1 -1
  71. package/dist/client/assets/{ganttDiagram-6RSMTGT7-BfA0pME8.js → ganttDiagram-6RSMTGT7-4vxuH9Dx.js} +1 -1
  72. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-BgDFB7PS.js → gitGraphDiagram-PVQCEYII-BESmFgXT.js} +1 -1
  73. package/dist/client/assets/index-B9jtBwFy.css +1 -0
  74. package/dist/client/assets/index-DFeBJ3GM.js +1302 -0
  75. package/dist/client/assets/{infoDiagram-5YYISTIA-Bb5F155s.js → infoDiagram-5YYISTIA-DvjdjtwB.js} +1 -1
  76. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-8Oati7l_.js → ishikawaDiagram-YF4QCWOH-Cis5IoEm.js} +1 -1
  77. package/dist/client/assets/{journeyDiagram-JHISSGLW-DhHTHXTM.js → journeyDiagram-JHISSGLW-C20pB1W8.js} +1 -1
  78. package/dist/client/assets/{kanban-definition-UN3LZRKU-BWB9EtUX.js → kanban-definition-UN3LZRKU-CiVfCeU3.js} +1 -1
  79. package/dist/client/assets/{mermaid.core-BD-L2gUQ.js → mermaid.core-CW0vCXA6.js} +4 -4
  80. package/dist/client/assets/{mindmap-definition-RKZ34NQL-BSKGd7LE.js → mindmap-definition-RKZ34NQL-E5rPHUdw.js} +1 -1
  81. package/dist/client/assets/{pieDiagram-4H26LBE5-BtBFPvSW.js → pieDiagram-4H26LBE5-DVIFbPjH.js} +1 -1
  82. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-aWQWYPto.js → quadrantDiagram-W4KKPZXB-C8qPRe_x.js} +1 -1
  83. package/dist/client/assets/{requirementDiagram-4Y6WPE33-CprlEpIa.js → requirementDiagram-4Y6WPE33-DQ-pwXh3.js} +1 -1
  84. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Cw-AcRAV.js → sankeyDiagram-5OEKKPKP-BnghLuUc.js} +1 -1
  85. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BMW5slyv.js → sequenceDiagram-3UESZ5HK-ChlGxGVk.js} +1 -1
  86. package/dist/client/assets/{shield-alert-Bzf8yNOc.js → shield-alert-BfOnDO6O.js} +1 -1
  87. package/dist/client/assets/{stateDiagram-AJRCARHV-CcxvIVwM.js → stateDiagram-AJRCARHV-ByUvNEch.js} +1 -1
  88. package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-awOfoFOB.js → stateDiagram-v2-BHNVJYJU-Df38ITSP.js} +1 -1
  89. package/dist/client/assets/{timeline-definition-PNZ67QCA-DIEAc2YP.js → timeline-definition-PNZ67QCA-bsAGc83D.js} +1 -1
  90. package/dist/client/assets/{upload-DuwyPTKe.js → upload-BK1crTqn.js} +1 -1
  91. package/dist/client/assets/{users-D1Qhfyro.js → users-DW8jC2Z9.js} +1 -1
  92. package/dist/client/assets/{vennDiagram-CIIHVFJN-DOkqg5Wi.js → vennDiagram-CIIHVFJN-BBIj6LFN.js} +1 -1
  93. package/dist/client/assets/{wardley-L42UT6IY-DoPK1Q6d.js → wardley-L42UT6IY-De6JFroy.js} +1 -1
  94. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-l1vun-m2.js → wardleyDiagram-YWT4CUSO-P1LOLx0_.js} +1 -1
  95. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DcUOUKvl.js → xychartDiagram-2RQKCTM6-v1G4ki6U.js} +1 -1
  96. package/dist/client/index.html +2 -2
  97. package/dist/client/version.json +1 -1
  98. package/dist/droid-cli/package.json +6 -25
  99. package/dist/extension.js +37091 -9900
  100. package/dist/pi-claude-cli/index.ts +26 -22
  101. package/dist/pi-claude-cli/package.json +6 -20
  102. package/dist/pi-claude-cli/src/mcp-config.ts +58 -7
  103. package/dist/plugin-sdk/index.d.ts +246 -186
  104. package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
  105. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +2 -9
  106. package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +250 -19
  107. package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
  108. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  109. package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
  110. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  111. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  112. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  113. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  114. package/dist/plugins/fusion-plugin-reports/package.json +2 -10
  115. package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
  116. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +3 -15
  117. package/package.json +1 -1
  118. package/skill/fusion/references/engine-tools.md +5 -1
  119. package/dist/client/assets/AgentDetailView-CgbB51Iw.css +0 -1
  120. package/dist/client/assets/AgentsView-DiGseTuo.js +0 -29
  121. package/dist/client/assets/ChatView-BjQBbDyo.js +0 -19
  122. package/dist/client/assets/ChatView-BtjkE0V7.css +0 -1
  123. package/dist/client/assets/CommandCenter-DDjpYkPe.css +0 -1
  124. package/dist/client/assets/CommandCenter-DwpiADSX.js +0 -71
  125. package/dist/client/assets/SettingsModal-DpaptT6t.js +0 -21
  126. package/dist/client/assets/SettingsModal-ino68pI2.css +0 -1
  127. package/dist/client/assets/SkillsView-Br2LkA3x.js +0 -1
  128. package/dist/client/assets/SkillsView-CJ8snrma.css +0 -1
  129. package/dist/client/assets/WorkflowNodeEditor-BOouksjw.css +0 -1
  130. package/dist/client/assets/WorkflowNodeEditor-e-eR6yzw.js +0 -8
  131. package/dist/client/assets/app-BM6bAO0b.js +0 -13
  132. package/dist/client/assets/app-BglOELbc.js +0 -13
  133. package/dist/client/assets/app-ChkCVQpq.js +0 -13
  134. package/dist/client/assets/app-DMn7Jt9g.js +0 -13
  135. package/dist/client/assets/app-S8fehQv8.js +0 -13
  136. package/dist/client/assets/channel-CCKvUami.js +0 -1
  137. package/dist/client/assets/classDiagram-4FO5ZUOK-C_HqY7AI.js +0 -1
  138. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-C_HqY7AI.js +0 -1
  139. package/dist/client/assets/index-BnfnLXyO.css +0 -1
  140. package/dist/client/assets/index-CHy0WNjH.js +0 -1301
@@ -54,6 +54,9 @@ These tools are **not** part of the user-invokable extension surface. They are i
54
54
  | `fn_send_message` | executor, step-session, heartbeat | Send inbox messages to agents/users | `to_id` (string), `content` (string), `type?` (`agent-to-agent` \| `agent-to-user`), `reply_to_message_id?` (string) |
55
55
  | `fn_read_messages` | executor, step-session, heartbeat | Read inbox messages | `unread_only?` (boolean), `limit?` (number) |
56
56
  | `fn_post_room_message` | heartbeat | Post a message to a chat room the agent is a member of | `roomId` (string), `content` (string), `replyToMessageId?` (string), `mentions?` (string[]) |
57
+ | `fn_artifact_register` | triage, executor, heartbeat; chat/planning (explicit `task_id`) | Register an artifact (document, image, video, audio, or other) so other agents and tasks can discover it | `type` (string), `title` (string), `description?` (string), `mimeType?` (string), `uri?` (string), `content?` (string), `taskId?` (string); chat/planning also require `task_id` (string) |
58
+ | `fn_artifact_list` | triage, executor, heartbeat; chat/planning (explicit `task_id`) | List registered artifacts across agents and tasks with filters for type, authorId, taskId, search, limit, and offset | `type?` (string), `authorId?` (string), `taskId?` (string), `search?` (string), `limit?` (number), `offset?` (number); chat/planning also require `task_id` (string) |
59
+ | `fn_artifact_view` | triage, executor, heartbeat | View a registered artifact by id, including metadata and inline content or the uri/path reference for media artifacts | `id` (string) |
57
60
 
58
61
  ## Triage-only runtime tools (`triage.ts`)
59
62
 
@@ -61,7 +64,7 @@ These tools are **not** part of the user-invokable extension surface. They are i
61
64
  |---|---|---|
62
65
  | `fn_task_list` | List active tasks during specification (duplicate check, discovery) | none |
63
66
  | `fn_task_search` | Keyword search tasks (including done/archived by default) for duplicate detection | `query` (string), `limit?` (number), `includeDone?` (boolean), `includeArchived?` (boolean) |
64
- | `fn_task_get` | Fetch full task detail including PROMPT.md | `id` (string) |
67
+ | `fn_task_show` | Fetch full task detail including PROMPT.md | `id` (string) |
65
68
  | `fn_review_spec` | Spawn spec reviewer and return `APPROVE`/`REVISE`/`RETHINK`/`UNAVAILABLE` | none |
66
69
 
67
70
  ## Executor-only runtime tools (`executor.ts`)
@@ -75,6 +78,7 @@ Note: step-session execution (`step-session-executor.ts`) reuses executor coordi
75
78
  | `fn_task_done` | Mark task complete and optionally store summary | `summary?` (string) |
76
79
  | `fn_review_step` | Spawn step plan/code reviewer | `step` (number, 0-indexed; matches `### Step N:` in PROMPT.md), `type` (`plan` \| `code`), `step_name` (string), `baseline?` (string) |
77
80
  | `fn_spawn_agent` | Spawn child agent in separate worktree | `name` (string), `role` (enum), `task` (string) |
81
+ | `fn_acquire_repo_worktree` | Acquire an isolated git worktree for a sub-repo in a workspace task (workspace mode only) | `repo` (string — must be one of the workspace's configured repos) |
78
82
 
79
83
  ## Merger-only runtime tools (`merger.ts`)
80
84
 
@@ -1 +0,0 @@
1
- .agent-detail-overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--bg) 60%,transparent);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:var(--space-lg)}.agent-detail-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;min-width:calc(var(--space-xl) * 20);max-width:calc(100vw - var(--space-2xl) - var(--space-xs) * 2);min-height:calc(var(--space-xl) * 13 + var(--space-sm));max-height:calc(100dvh - var(--space-2xl) - var(--space-xs) * 2);display:flex;flex-direction:column;overflow:hidden;resize:both;box-shadow:var(--shadow-lg)}.agent-detail-modal:not([style*=width]){width:min(calc(var(--space-xl) * 37 + var(--space-md)),calc(100vw - var(--space-2xl) - var(--space-xs) * 2))}.agent-detail-modal:not([style*=height]){height:min(85vh,calc(100dvh - var(--space-2xl) - var(--space-xs) * 2))}.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;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)}.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)}.config-section{background:var(--bg-secondary);border-radius:var(--radius-md);padding:calc(var(--space-md) + var(--space-sm))}.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}.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}.agent-detail-overlay{padding:0;align-items:stretch}.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-xs);row-gap:0;padding:var(--space-sm) var(--space-md);padding-top:max(var(--space-sm),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-sm)}.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}.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;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-skills,.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){.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}.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)}.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,29 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AgentDetailView-CF6isJ51.js","assets/vendor-react-SZ_qB27O.js","assets/index-CHy0WNjH.js","assets/vendor-i18n-GF3RlKbq.js","assets/vendor-reactflow-Bg-Qjzh8.js","assets/vendor-reactflow-C5ap-Sga.css","assets/vendor-xterm-BNq00GSj.js","assets/vendor-xterm-LZoznX6r.css","assets/vendor-codemirror-jBKmHyH0.js","assets/index-BnfnLXyO.css","assets/agentSkills-D5nDZPRY.js","assets/agentSkills-bQJ4X1gH.css","assets/ExperimentalAgentOnboardingModal-BQc3GaE_.js","assets/ExperimentalAgentOnboardingModal-3ZEFv8sr.css","assets/AgentPermissionPolicyEditor-DFldf6aS.js","assets/AgentPermissionPolicyEditor-CGxjOr6G.css","assets/AgentDetailView-CgbB51Iw.css"])))=>i.map(i=>d[i]);
2
- import{c as yt,bN as at,h as jt,Z as Ya,ai as Za,cz as Ft,aJ as zt,aG as qa,o as Ja,C as wa,bu as Dt,b$ as Ca,dr as At,ds as Qa,dt as es,cL as ts,bL as as,bo as Ht,du as ss,m as ns,a as ls,A as is,f as Nt,dv as ia,cx as rs,al as ra,bP as os,b as cs,e as ds,dw as oa,dx as us,aK as gs,L as Rt,b7 as rt,R as tt,X as ca,dy as ms,dz as hs,dn as ct,ae as ps,dp as Tt,aR as xs,aV as bs,bp as me,ck as ot,dA as vs,dg as fs,dB as js,dC as da,V as Ns,dD as ys,P as ua,dE as ks,cm as Et,cl as bt,J as ga,dF as ws,cT as Cs,dG as Ss,dH as As,ct as ma,_ as Rs,cs as Ts,cv as Es,cN as vt,dI as _s,cA as ha,cu as Ps}from"./index-CHy0WNjH.js";import{r as s,j as e,b as Ms}from"./vendor-react-SZ_qB27O.js";import{u as Ee}from"./vendor-i18n-GF3RlKbq.js";import{S as Ls,f as Is}from"./agentSkills-D5nDZPRY.js";import{ExperimentalAgentOnboardingModal as Fs}from"./ExperimentalAgentOnboardingModal-BQc3GaE_.js";import{U as $t}from"./upload-DuwyPTKe.js";import{F as zs}from"./folder-open-STXgbemw.js";import{i as pa,O as _t,r as Ds}from"./agentsOrgChartLayout-BMvyuaLA.js";import"./vendor-reactflow-Bg-Qjzh8.js";import"./vendor-xterm-BNq00GSj.js";import"./vendor-codemirror-jBKmHyH0.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 Hs=[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["rect",{x:"3",y:"4",width:"6",height:"6",rx:"1",key:"cif1o7"}]],$s=yt("list-todo",Hs);/**
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 Os=[["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"}]],xa=yt("network",Os);/**
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 Vs=[["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"}]],Bs=yt("zoom-in",Vs);/**
18
- * @license lucide-react v1.7.0 - ISC
19
- *
20
- * This source code is licensed under the ISC license.
21
- * See the LICENSE file in the root directory of this source tree.
22
- */const Us=[["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"}]],Ws=yt("zoom-out",Us);function ba(l){return typeof l=="number"&&Number.isFinite(l)?l:0}function Qe(l){return l.toLocaleString()}function Gs({agents:l}){const{t:d}=Ee("app"),{rows:N,totalInputTokens:p,totalOutputTokens:a,totalTokens:r}=s.useMemo(()=>{const g=l.map(n=>{const h=ba(n.totalInputTokens),b=ba(n.totalOutputTokens);return{id:n.id,name:n.name,inputTokens:h,outputTokens:b,totalTokens:h+b}}).sort((n,h)=>h.totalTokens-n.totalTokens||n.name.localeCompare(h.name)||n.id.localeCompare(h.id));return{rows:g,totalInputTokens:g.reduce((n,h)=>n+h.inputTokens,0),totalOutputTokens:g.reduce((n,h)=>n+h.outputTokens,0),totalTokens:g.reduce((n,h)=>n+h.totalTokens,0)}},[l]),v=r>0;return e.jsxs("section",{className:"agent-token-stats-panel","aria-label":d("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:d("agents.tokenUsageByAgent","Token Usage by Agent")})}),e.jsxs("div",{className:"agent-token-stats-panel__totals",role:"list","aria-label":d("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:d("agents.inputTokens","Input Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:Qe(p)})]}),e.jsxs("div",{className:"agent-token-stats-panel__total-card",role:"listitem",children:[e.jsx("span",{className:"agent-token-stats-panel__total-label",children:d("agents.outputTokens","Output Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:Qe(a)})]}),e.jsxs("div",{className:"agent-token-stats-panel__total-card",role:"listitem",children:[e.jsx("span",{className:"agent-token-stats-panel__total-label",children:d("agents.combinedTokens","Combined Tokens")}),e.jsx("span",{className:"agent-token-stats-panel__total-value",children:Qe(r)})]})]}),v?e.jsx("div",{className:"agent-token-stats-panel__table-wrapper",children:e.jsxs("table",{className:"agent-token-stats-panel__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:d("agents.agent","Agent")}),e.jsx("th",{scope:"col",children:d("agents.input","Input")}),e.jsx("th",{scope:"col",children:d("agents.output","Output")}),e.jsx("th",{scope:"col",children:d("agents.total","Total")})]})}),e.jsx("tbody",{children:N.map(g=>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:g.name}),e.jsx("span",{className:"agent-token-stats-panel__agent-id",children:g.id})]}),e.jsx("td",{children:Qe(g.inputTokens)}),e.jsx("td",{children:Qe(g.outputTokens)}),e.jsx("td",{className:"agent-token-stats-panel__total-cell",children:Qe(g.totalTokens)})]},g.id))})]})}):e.jsx("div",{className:"agent-token-stats-panel__empty",role:"status",children:d("agents.noTokenUsageYet","No token usage recorded yet. Token totals appear here once agents run.")})]})}const Ks=[{icon:at,label:"Active Agents",valueKey:"activeCount",className:"agent-metric-card--active"},{icon:$s,label:"Assigned Tasks",valueKey:"assignedTaskCount",className:"agent-metric-card--tasks"},{icon:jt,label:"Success Rate",valueKey:"successRate",className:"agent-metric-card--success"},{icon:Ya,label:"Total Runs",valueKey:"completedRuns",className:"agent-metric-card--runs"}];function Xs({stats:l,className:d=""}){return l?e.jsx("div",{className:`agent-metrics-bar ${d}`.trim(),children:Ks.map(N=>{const p=N.valueKey==="successRate"?`${Math.round(l.successRate*100)}%`:l[N.valueKey];return e.jsxs("div",{className:`agent-metric-card ${N.className}`,children:[e.jsx(N.icon,{size:18}),e.jsxs("div",{className:"agent-metric-info",children:[e.jsx("span",{className:"agent-metric-value",children:p}),e.jsx("span",{className:"agent-metric-label",children:N.label})]})]},N.label)})}):null}const va=200;function Ys(l,d){const[N,p]=s.useState([]),[a,r]=s.useState(!1),v=s.useRef(null),g=s.useRef(0),n=s.useRef(l),h=s.useRef(d);return(n.current!==l||h.current!==d)&&(n.current=l,h.current=d,g.current++,v.current&&(v.current(),v.current=null),p([]),r(!1)),s.useEffect(()=>{if(!l){p([]),r(!1);return}const S=g.current;let A=`/api/tasks/${encodeURIComponent(l)}/logs/stream`;d&&(A+=`?projectId=${encodeURIComponent(d)}`);const C=Za(A,{events:{"agent:log":I=>{if(g.current===S)try{const R=JSON.parse(I.data),H={type:R.type??"text",text:R.text??R.content??"",timestamp:R.timestamp,content:R.content};p(P=>{const E=[H,...P];return E.length>va?E.slice(0,va):E})}catch{}}},onOpen:()=>{g.current===S&&r(!0)},onError:()=>{g.current===S&&r(!1)}});return v.current=C,()=>{C(),v.current=null,g.current===S&&r(!1)}},[l,d]),{entries:N,isConnected:a}}const Zs=5e3;function qs({agent:l,projectId:d,onSelect:N,onOpenTaskLogs:p}){const{t:a}=Ee("app"),{entries:r,isConnected:v}=Ys(l.taskId,d),[g,n]=s.useState(null);s.useEffect(()=>{if(!l.taskId){n(null);return}let E=!1,D;const y=async()=>{try{const U=await qa(l.taskId,d);E||n(U)}catch{}finally{E||(D=setTimeout(y,Zs))}};return y(),()=>{E=!0,D&&clearTimeout(D)}},[l.taskId,d]);const h=l.lastHeartbeatAt?Math.floor((Date.now()-new Date(l.lastHeartbeatAt).getTime())/1e3):0,b=(()=>{if(!l.lastHeartbeatAt)return null;const E=Ft(l.runtimeConfig?.heartbeatIntervalMs),D=new Date(l.lastHeartbeatAt).getTime()+E,y=Math.round((D-Date.now())/1e3);return Number.isFinite(y)?y<=0?a("agents.heartbeatOverdue","Heartbeat overdue {{elapsed}}",{elapsed:Pt(-y)}):a("agents.nextHeartbeat","Next heartbeat in {{elapsed}}",{elapsed:Pt(y)}):null})(),S=g?.steps?.[g.currentStep??0],A=g?.steps?.length??0,C=(g?.currentStep??0)+1,I=g?.modelId,R=()=>{N&&N(l.id)},H=E=>{E.stopPropagation(),l.taskId&&p&&p(l.taskId)},P=E=>{(E.key==="Enter"||E.key===" ")&&(E.preventDefault(),R())};return e.jsxs("div",{className:"live-agent-card",onClick:R,onKeyDown:P,role:"button",tabIndex:0,"aria-label":a("agents.selectAgent","Select agent {{name}}",{name:l.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 ${l.state==="running"?"status-dot--pending":"status-dot--online"}`,"aria-hidden":"true"}),e.jsx("span",{children:l.name})]}),l.taskId&&e.jsx("span",{className:"live-agent-task badge",children:l.taskId})]}),e.jsx("div",{className:"live-agent-card-transcript",children:r.length===0?e.jsx("div",{className:"live-agent-card-empty",children:l.taskId?S?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"live-agent-card-status",children:a("agents.step","Step {{number}}{{total}}: {{name}}",{number:C,total:A?`/${A}`:"",name:S.name})}),I&&e.jsx("div",{className:"live-agent-card-status-sub",children:I}),e.jsx("div",{className:"live-agent-card-status-sub",children:v?a("agents.waitingOutput","Waiting for output..."):a("agents.connectingStream","Connecting to log stream...")})]}):e.jsx("span",{children:v?a("agents.waitingOutput","Waiting for output..."):a("agents.connecting","Connecting...")}):e.jsx("span",{children:l.state==="running"?a("agents.starting","Starting..."):a("agents.idleNoTask","Idle — no task assigned")})}):r.slice(0,20).map((E,D)=>e.jsx("div",{className:"live-agent-card-line",children:E.text},D))}),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:Pt(h)}),b&&e.jsx("span",{className:"live-agent-card-next-heartbeat",title:b,children:b})]}),e.jsxs("div",{className:"live-agent-card-footer-actions",children:[l.taskId&&p&&e.jsxs("button",{type:"button",className:"live-agent-card-logs-btn",onClick:H,title:a("agents.viewLiveLogs","View live run logs"),"aria-label":a("agents.viewLogsFor","View live logs for {{taskId}}",{taskId:l.taskId}),children:[e.jsx(zt,{size:12}),e.jsx("span",{children:a("agents.liveLogs","Live logs")})]}),v&&e.jsx(at,{size:12,className:"live-agent-streaming-dot"})]})]})]})}function Pt(l){return l<60?`${l}s`:l<3600?`${Math.floor(l/60)}m ${l%60}s`:`${Math.floor(l/3600)}h ${Math.floor(l%3600/60)}m`}function Js({agents:l,projectId:d,onAgentSelect:N,onOpenTaskLogs:p,className:a=""}){const{t:r}=Ee("app"),v=Array.from(new Map(l.map(g=>[g.id,g])).values());return v.length===0?null:e.jsxs("div",{className:`active-agents-panel ${a}`.trim(),children:[e.jsxs("div",{className:"active-agents-panel-header",children:[e.jsx(at,{size:16}),e.jsx("span",{children:r("agents.activeAgents","Active Agents ({{count}})",{count:v.length})})]}),e.jsx("div",{className:"active-agents-grid",children:v.map(g=>e.jsx(qs,{agent:g,projectId:d,onSelect:N,onOpenTaskLogs:p},g.id))})]})}function Qs({stats:l,activeAgents:d,projectId:N,isOpen:p,onToggle:a,onSelectAgent:r,onOpenTaskLogs:v}){const{t:g}=Ee("app"),n=d.filter(b=>b.state==="active").length,h=d.filter(b=>b.state==="running").length;return e.jsxs("section",{className:"agents-overview-bar","aria-label":g("agents.overviewLabel","Agents overview"),children:[e.jsxs("button",{type:"button",className:"agents-overview-bar__toggle","aria-expanded":p,onClick:a,children:[e.jsxs("span",{className:"agents-overview-bar__title-wrap",children:[p?e.jsx(Ja,{size:16,"aria-hidden":"true"}):e.jsx(wa,{size:16,"aria-hidden":"true"}),e.jsx("span",{className:"agents-overview-bar__title",children:g("agents.overview","Overview")})]}),e.jsx("span",{className:"agents-overview-bar__meta text-secondary",children:g("agents.statusCount","{{activeCount}} active · {{runningCount}} running",{activeCount:n,runningCount:h})})]}),p?e.jsxs("div",{className:"agents-overview-bar__content",children:[e.jsx(Xs,{stats:l,className:"agents-overview-bar__metrics"}),e.jsx(Js,{agents:d,projectId:N,onAgentSelect:r,onOpenTaskLogs:v,className:"agents-overview-bar__active-panel"})]}):null]})}function Mt({title:l="No agents found",description:d="Create an agent to get started",ctaLabel:N="Create Agent",onCtaClick:p}){return e.jsxs("div",{className:"agent-empty",children:[e.jsx(Dt,{size:48,opacity:.3,className:"agent-empty-state__icon"}),e.jsx("p",{className:"agent-empty-state__title",children:l}),e.jsx("p",{className:"agent-empty-state__description text-secondary",children:d}),p?e.jsx("button",{type:"button",className:"btn btn-task-create btn-sm",onClick:p,children:N}):null]})}const fa=3,Lt=1e3;function en({isOpen:l,onClose:d,onGenerated:N,projectId:p}){const{t:a}=Ee("app");Ca(l);const[r,v]=s.useState(""),[g,n]=s.useState({type:"input"}),[h,b]=s.useState(null),[S,A]=s.useState(!1),C=s.useRef(null),I=s.useRef(null);s.useEffect(()=>{l&&g.type==="input"&&I.current?.focus()},[l,g.type]),s.useEffect(()=>{if(!l&&C.current){const y=C.current;C.current=null,At(y,p).catch(()=>{})}},[l,p]),s.useEffect(()=>{if(!l)return;const y=U=>{U.key==="Escape"&&R()};return document.addEventListener("keydown",y),()=>document.removeEventListener("keydown",y)},[l]);const R=s.useCallback(()=>{if(C.current){const y=C.current;C.current=null,At(y,p).catch(()=>{})}v(""),n({type:"input"}),b(null),A(!1),d()},[d,p]),H=s.useCallback(async()=>{if(!(!r.trim()||r.trim().length<fa)){b(null),n({type:"loading"});try{const{sessionId:y}=await Qa(r.trim(),p);C.current=y;const{spec:U}=await es(y,p);n({type:"preview",spec:U,sessionId:y})}catch(y){const U=y instanceof Error?y.message:"Failed to generate agent specification";U.includes("429")||U.toLowerCase().includes("rate limit")?b(a("agents.generation.rateLimited","Too many requests. Please wait a moment and try again.")):b(U),n({type:"input"}),C.current=null}}},[r,p]),P=s.useCallback(async()=>{if(C.current){const y=C.current;C.current=null;try{await At(y,p)}catch{}}await H()},[H,p]),E=s.useCallback(()=>{g.type==="preview"&&(C.current=null,N(g.spec),v(""),n({type:"input"}),b(null),A(!1),d())},[g,N,d]);if(!l)return null;const D=r.trim().length>=fa&&r.trim().length<=Lt;return e.jsx("div",{className:"agent-dialog-overlay",onClick:y=>{y.target===y.currentTarget&&R()},children:e.jsxs("div",{className:"agent-dialog",role:"dialog","aria-modal":"true","aria-label":a("agents.generateWithAiLabel","Generate agent with AI"),children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsxs("span",{className:"agent-dialog-header-title",children:[e.jsx("span",{className:"agent-dialog-header-sparkle",children:"✨"}),a("agents.generation.title","Generate Agent")]}),e.jsx("button",{className:"modal-close",onClick:R,"aria-label":a("actions.close","Close"),children:"×"})]}),e.jsxs("div",{className:"agent-dialog-body",children:[h&&e.jsx("div",{className:"agent-dialog-error-banner",children:h}),g.type==="input"&&e.jsxs("div",{children:[e.jsx("p",{className:"agent-dialog-info",children:a("agents.generation.info","Describe your agent's role and the AI will generate a complete specification including system prompt, suggested configuration, and more.")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-role-description",children:a("agents.generation.roleLabel","Role Description")}),e.jsx("textarea",{ref:I,id:"agent-role-description",className:"input agent-dialog-textarea",rows:4,placeholder:a("agents.generation.rolePlaceholder",'e.g. "Senior frontend code reviewer who specializes in React accessibility"'),value:r,onChange:y=>v(y.target.value),onKeyDown:y=>{y.key==="Enter"&&!y.shiftKey&&D&&(y.preventDefault(),H())},maxLength:Lt,"aria-describedby":"role-description-hint"}),e.jsxs("div",{id:"role-description-hint",className:"agent-dialog-hint",children:[e.jsx("span",{children:a("agents.generation.roleHint","Describe what your agent should do")}),e.jsxs("span",{children:[r.length,"/",Lt]})]})]})]}),g.type==="loading"&&e.jsxs("div",{className:"agent-dialog-loading-center",children:[e.jsx("div",{className:"agent-dialog-spinner spin"}),e.jsx("p",{className:"agent-dialog-loading-text",children:a("agents.generation.loading","Generating agent specification...")})]}),g.type==="preview"&&e.jsxs("div",{children:[e.jsxs("div",{className:"agent-dialog-summary agent-dialog-summary--spaced",children:[e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewTitle","Title")}),e.jsxs("span",{className:"agent-dialog-summary-row-value",children:[g.spec.icon," ",g.spec.title]})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewRole","Role")}),e.jsx("span",{children:g.spec.role})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewDescription","Description")}),e.jsx("span",{className:"agent-dialog-summary-row-value agent-dialog-summary-row-value--body",children:g.spec.description})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewThinking","Thinking")}),e.jsx("span",{className:"agent-dialog-summary-row-value agent-dialog-summary-row-value--capitalize",children:g.spec.thinkingLevel})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label agent-dialog-summary-row-label--fixed",children:a("agents.generation.previewMaxTurns","Max Turns")}),e.jsx("span",{children:g.spec.maxTurns})]})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{children:[a("agents.generation.systemPrompt","System Prompt"),e.jsx("button",{type:"button",className:"agent-dialog-expand-btn",onClick:()=>A(!S),children:S?a("agents.generation.collapse","Collapse"):a("agents.generation.expand","Expand")})]}),e.jsxs("div",{className:`agent-generation-prompt-box${S?"":" agent-generation-prompt-box--collapsed"}`,children:[g.spec.systemPrompt,!S&&g.spec.systemPrompt.length>500&&e.jsx("div",{className:"agent-generation-prompt-fade"})]})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[e.jsx("button",{className:"btn",onClick:R,children:a("actions.cancel","Cancel")}),g.type==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void H(),disabled:!D,children:a("agents.generation.generate","Generate")}),g.type==="preview"&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"btn",onClick:()=>void P(),children:a("agents.generation.regenerate","Regenerate")}),e.jsx("button",{className:"btn btn-task-create",onClick:E,children:a("agents.generation.useThis","Use This")})]})]})]})})}const ja=[{value:"triage"},{value:"executor"},{value:"reviewer"},{value:"merger"},{value:"scheduler"},{value:"engineer"},{value:"custom"}];function tn({isOpen:l,onClose:d,onCreated:N,projectId:p,prefillDraft:a=null,agentOnboardingEnabled:r=!1,existingAgents:v=[],onPrefillDraft:g}){const{t:n}=Ee("app"),h=c=>({triage:n("agents.roleTriage","Triage"),executor:n("agents.roleExecutor","Executor"),reviewer:n("agents.roleReviewer","Reviewer"),merger:n("agents.roleMerger","Merger"),scheduler:n("agents.roleScheduler","Scheduler"),engineer:n("agents.roleEngineer","Engineer"),custom:n("agents.roleCustom","Custom")})[c]??c,[b,S]=s.useState(0),[A,C]=s.useState("presets"),[I,R]=s.useState(""),[H,P]=s.useState(""),[E,D]=s.useState(""),[y,U]=s.useState("custom"),[q,ie]=s.useState(""),[J,L]=s.useState(""),[he,ae]=s.useState(""),[ce,re]=s.useState(""),[pe,$]=s.useState(""),[w,xe]=s.useState(""),[se,de]=s.useState({model:"",thinkingLevel:"off",maxTurns:1e3}),[W,ke]=s.useState(null),[oe,fe]=s.useState([]),[Q,_e]=s.useState(!1),[K,ue]=s.useState(null),[we,be]=s.useState(!1),[je,V]=s.useState(!1),{favoriteProviders:Pe,favoriteModels:Ge,toggleFavoriteProvider:Me,toggleFavoriteModel:Le}=ts(),[Ce,Ke]=s.useState([]),[Ie,$e]=s.useState(!1),[ne,ee]=s.useState("model"),[M,O]=s.useState(""),[Se,Ae]=s.useState([]),[Xe,ve]=s.useState(!1),[Re,o]=s.useState([]),[j,_]=s.useState(!1);s.useEffect(()=>{l&&($e(!0),as().then(c=>{Ke(c.models)}).catch(()=>{}).finally(()=>$e(!1)))},[l]),s.useEffect(()=>{l&&(_(!0),o([]),Ht(void 0,p).then(c=>{o(c)}).catch(()=>{o([])}).finally(()=>_(!1)))},[l,p]),s.useEffect(()=>{if(!l)return;const c=rs;if(typeof c!="function"){Ae([]),ve(!1);return}ve(!0),Ae([]),c(p).then(f=>{Ae(f)}).catch(()=>{Ae([])}).finally(()=>ve(!1))},[l,p]);const F=se.model.includes("/")?se.model:"",X=F?F.split("/")[0]:"default",Y=s.useCallback(c=>{const f=ss.has(c.role)?c.role:"custom";R(c.title),P(c.description),D(c.icon),U(f),ae(c.systemPrompt),de(ye=>({...ye,thinkingLevel:c.thinkingLevel,maxTurns:c.maxTurns})),be(!1),S(1)},[]),Ye=s.useCallback(c=>{de(f=>({...f,model:c}))},[]),Fe=s.useCallback(c=>{ee(c),c==="model"&&O("")},[]),dt=s.useCallback(c=>{const f=ns(c);ke(c.id),R(f.name),D(f.icon??""),P(f.title??""),U(f.role),$(f.soul??""),ae(f.instructionsText??""),S(1)},[]),ze=s.useCallback(c=>{const f=ls(c);S(1),C("custom"),R(f.name),P(f.title??""),D(f.icon??""),U(f.role),ie(f.reportsTo??""),ae(f.instructionsText??""),re(f.heartbeatProcedurePath??""),$(f.soul??""),xe(f.memory??""),fe(f.skills??[]),de(ye=>({...ye,model:f.model??"",thinkingLevel:f.thinkingLevel??ye.thinkingLevel,maxTurns:f.maxTurns??ye.maxTurns})),f.runtimeHint?(ee("runtime"),O(f.runtimeHint)):(ee("model"),O(""))},[]);if(s.useEffect(()=>{!l||!a||ze(a)},[l,a,ze]),!l)return null;const Ze=()=>{S(0),C("presets"),R(""),P(""),D(""),U("custom"),ie(""),L(""),ae(""),re(""),$(""),xe(""),de({model:"",thinkingLevel:"off",maxTurns:1e3}),ee("model"),O(""),ke(null),fe([]),ue(null),be(!1),V(!1),d()},kt=async()=>{if(I.trim()){_e(!0),ue(null);try{await cs(ds({name:I,role:y,title:H,icon:E,reportsTo:q,instructionsPath:J,instructionsText:he,heartbeatProcedurePath:ce,soul:pe,memory:w,model:ne==="model"?se.model:"",runtimeHint:ne==="runtime"?M:"",thinkingLevel:se.thinkingLevel,maxTurns:se.maxTurns,skills:oe}),p),Ze(),N()}catch(c){ue(c instanceof Error?c.message:n("agents.createError","Failed to create agent"))}finally{_e(!1)}}},ut=ja.find(c=>c.value===y),Ne=q.trim(),st=Ne?Re.find(c=>c.id===Ne):void 0,gt=M?Se.find(c=>c.runtimeId===M):void 0,Te=c=>e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{id:c,children:n("agents.runtimeSource","Runtime Source")}),e.jsxs("div",{className:"agent-runtime-mode-toggle",role:"radiogroup","aria-labelledby":c,children:[e.jsxs("label",{className:`agent-runtime-mode-option${ne==="model"?" agent-runtime-mode-option--active":""}`,children:[e.jsx("input",{type:"radio",name:c,value:"model",checked:ne==="model",onChange:()=>Fe("model")}),e.jsx("span",{children:n("agents.runtimeSourceBuiltIn","Built-in Model")})]}),e.jsxs("label",{className:`agent-runtime-mode-option${ne==="runtime"?" agent-runtime-mode-option--active":""}`,children:[e.jsx("input",{type:"radio",name:c,value:"runtime",checked:ne==="runtime",onChange:()=>Fe("runtime")}),e.jsx("span",{children:n("agents.runtimeSourcePlugin","Plugin Runtime")})]})]})]}),ne==="model"?e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{children:n("agents.model","Model")}),Ie?e.jsx("div",{className:"agent-dialog-loading",children:e.jsx(ra,{label:n("agents.loadingModels","Loading models…")})}):e.jsx(os,{id:"agent-model",label:n("agents.model","Model"),value:F,onChange:Ye,models:Ce,placeholder:n("agents.modelPlaceholder","Select a model…"),favoriteProviders:Pe,onToggleFavorite:Me,favoriteModels:Ge,onToggleModelFavorite:Le})]}):e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-runtime-hint",children:n("agents.runtime","Runtime")}),Xe?e.jsx("div",{className:"agent-dialog-loading",children:e.jsx(ra,{label:n("agents.loadingRuntimes","Loading runtimes…")})}):e.jsxs("select",{id:"agent-runtime-hint",className:"select",value:M,onChange:f=>O(f.target.value),children:[e.jsx("option",{value:"",children:Se.length>0?n("agents.runtimePlaceholder","Select a plugin runtime…"):n("agents.runtimeEmpty","No plugin runtimes available")}),Se.map(f=>e.jsx("option",{value:f.runtimeId,children:f.description?`${f.name} — ${f.description}`:f.name},`${f.pluginId}:${f.runtimeId}`))]})]})]});return Ms.createPortal(e.jsxs("div",{className:"agent-dialog-overlay",onClick:c=>{c.target===c.currentTarget&&Ze()},children:[e.jsxs("div",{className:"agent-dialog",role:"dialog","aria-modal":"true","aria-label":n("agents.dialogAriaLabel","Create new agent"),children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsx("span",{className:"agent-dialog-header-title",children:n("agents.dialogTitle","New Agent")}),e.jsx("button",{className:"btn-icon",onClick:Ze,"aria-label":n("agents.closeAriaLabel","Close"),children:"×"})]}),e.jsx("div",{className:"agent-dialog-steps",children:[0,1,2].map(c=>e.jsx("div",{className:`agent-dialog-step${c===b?" active":c<b?" completed":""}`,"aria-label":n("agents.stepAriaLabel","Step {{step}}",{step:c+1})},c))}),e.jsxs("div",{className:"agent-dialog-body",children:[b===0&&e.jsxs("div",{children:[r&&e.jsx("div",{className:"agent-dialog-step-zero-actions",children:e.jsx("button",{type:"button",className:"btn agent-dialog-interview-btn",onClick:()=>V(!0),children:n("agents.aiInterview","AI Interview")})}),e.jsxs("div",{className:"agent-dialog-tabs",role:"tablist","aria-label":n("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":A==="presets",tabIndex:A==="presets"?0:-1,className:`agent-dialog-tab${A==="presets"?" active":""}`,onClick:()=>C("presets"),"data-testid":"agent-dialog-tab-presets",children:n("agents.tabPresets","Preset personas")}),e.jsx("button",{id:"agent-dialog-tab-custom",type:"button",role:"tab","aria-controls":"agent-dialog-panel-custom","aria-selected":A==="custom",tabIndex:A==="custom"?0:-1,className:`agent-dialog-tab${A==="custom"?" active":""}`,onClick:()=>C("custom"),"data-testid":"agent-dialog-tab-custom",children:n("agents.tabCustom","Custom agent")})]}),A==="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:n("agents.presetsHeader","Choose a preset persona to prefill role, identity, soul, and instructions")}),e.jsx("div",{className:"agent-presets-grid",children:is.map(c=>e.jsxs("button",{type:"button",className:`agent-preset-card${W===c.id?" selected":""}`,"data-testid":`preset-${c.id}`,onClick:()=>dt(c),title:c.title,children:[e.jsx("span",{className:"agent-preset-icon",children:e.jsx(Nt,{agent:{id:c.id,icon:c.icon,name:c.name},size:28})}),e.jsx("span",{className:"agent-preset-name",children:c.name}),e.jsx("span",{className:"agent-preset-role",children:c.role}),c.description&&e.jsx("span",{className:"agent-preset-description",children:c.description})]},c.id))})]})}),A==="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:n("agents.sectionIdentity","Identity")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-name",children:[n("agents.fieldName","Name")," ",!W&&e.jsx("span",{className:"agent-dialog-required",children:"*"})]}),e.jsx("input",{id:"agent-name",type:"text",className:"input",placeholder:n("agents.namePlaceholder","e.g. Frontend Reviewer"),value:I,onChange:c=>R(c.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field agent-dialog-field--title",children:[e.jsxs("label",{htmlFor:"agent-title",children:[n("agents.fieldTitle","Title")," ",e.jsx("span",{className:"agent-dialog-optional",children:n("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-title",type:"text",className:"input",placeholder:n("agents.titlePlaceholder","e.g. Senior Code Reviewer"),value:H,onChange:c=>P(c.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-icon",children:[n("agents.fieldIcon","Icon")," ",e.jsx("span",{className:"agent-dialog-optional",children:n("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-icon",type:"text",className:"input",placeholder:n("agents.iconPlaceholder","e.g. 🤖"),value:E,onChange:c=>D(c.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{children:n("agents.fieldRole","Role")}),e.jsx("div",{className:"agent-role-grid",children:ja.map(c=>e.jsxs("button",{type:"button",className:`agent-role-option${y===c.value?" selected":""}`,onClick:()=>U(c.value),children:[e.jsx("span",{className:"agent-role-option-icon","aria-hidden":"true",children:e.jsx(ia,{provider:X,size:"sm"})}),e.jsx("span",{className:"agent-role-option-label",children:h(c.value)})]},c.value))})]})]}),e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:n("agents.sectionConfiguration","Configuration")}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-reports-to",children:[n("agents.fieldReportsTo","Reports To")," ",e.jsx("span",{className:"agent-dialog-optional",children:n("agents.optional","(optional)")})]}),e.jsxs("select",{id:"agent-reports-to",className:"select",value:q,onChange:c=>ie(c.target.value),disabled:j,children:[e.jsx("option",{value:"",children:n("agents.noManager","No manager")}),Re.map(c=>e.jsxs("option",{value:c.id,children:[c.name," (",c.id,")"]},c.id))]})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-soul",children:[n("agents.fieldSoul","Soul")," ",e.jsx("span",{className:"agent-dialog-optional",children:n("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-soul",className:"input",rows:2,placeholder:n("agents.soulPlaceholder","Describe the agent's personality and communication style..."),value:pe,onChange:c=>$(c.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-memory",children:[n("agents.fieldMemory","Agent Memory")," ",e.jsx("span",{className:"agent-dialog-optional",children:n("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-memory",className:"input",rows:2,placeholder:n("agents.memoryPlaceholder","Private to this agent — durable preferences, operating habits, and context it should carry across tasks..."),value:w,onChange:c=>xe(c.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-instructions-path",children:[n("agents.fieldInstructionsPath","Instructions Path")," ",e.jsx("span",{className:"agent-dialog-optional",children:n("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-instructions-path",type:"text",className:"input",placeholder:n("agents.instructionsPathPlaceholder","e.g. .fusion/agents/reviewer.md"),value:J,onChange:c=>L(c.target.value)})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsxs("label",{htmlFor:"agent-heartbeat-procedure-path",children:[n("agents.fieldHeartbeatPath","Heartbeat Procedure Path")," ",e.jsx("span",{className:"agent-dialog-optional",children:n("agents.optional","(optional)")})]}),e.jsx("input",{id:"agent-heartbeat-procedure-path",type:"text",className:"input",placeholder:n("agents.heartbeatPathPlaceholder","e.g. .fusion/agents/ceo-agent2736/HEARTBEAT.md"),value:ce,onChange:c=>re(c.target.value)}),e.jsx("p",{className:"agent-dialog-optional agent-dialog-field-hint",children:n("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:[n("agents.fieldInstructionsText","Inline Instructions")," ",e.jsx("span",{className:"agent-dialog-optional",children:n("agents.optional","(optional)")})]}),e.jsx("textarea",{id:"agent-instructions-text",className:"input",rows:4,placeholder:n("agents.instructionsTextPlaceholder","Add custom behavior instructions..."),value:he,onChange:c=>ae(c.target.value)})]})]}),e.jsxs("div",{className:"agent-dialog-section",children:[e.jsx("div",{className:"agent-dialog-section-header",children:n("agents.sectionRuntime","Runtime")}),Te("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:()=>be(!0),children:[e.jsx("span",{children:"✨"}),n("agents.generateWithAI","Generate with AI")]}),e.jsx("p",{className:"agent-dialog-ai-hint",children:n("agents.generateHint","Describe your agent's role and let AI generate a specification")})]})]})]}),b===1&&e.jsxs("div",{children:[Te("agent-runtime-source-step-1"),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-thinking",children:n("agents.fieldThinkingLevel","Thinking Level")}),e.jsxs("select",{id:"agent-thinking",className:"select",value:se.thinkingLevel,onChange:c=>de(f=>({...f,thinkingLevel:c.target.value})),children:[e.jsx("option",{value:"off",children:n("agents.thinkingOff","Off")}),e.jsx("option",{value:"minimal",children:n("agents.thinkingMinimal","Minimal")}),e.jsx("option",{value:"low",children:n("agents.thinkingLow","Low")}),e.jsx("option",{value:"medium",children:n("agents.thinkingMedium","Medium")}),e.jsx("option",{value:"high",children:n("agents.thinkingHigh","High")}),e.jsx("option",{value:"xhigh",children:n("agents.thinkingXhigh","Very High")})]})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx("label",{htmlFor:"agent-max-turns",children:n("agents.fieldMaxTurns","Max Turns")}),e.jsx("input",{id:"agent-max-turns",type:"number",className:"input",min:1,max:2e3,value:se.maxTurns,onChange:c=>de(f=>({...f,maxTurns:Math.max(1,parseInt(c.target.value,10)||1)}))})]}),e.jsxs("div",{className:"agent-dialog-field",children:[e.jsx(Ls,{id:"agent-skills",label:n("agents.fieldSkills","Skills"),value:oe,onChange:fe,projectId:p}),e.jsx("p",{className:"agent-dialog-optional agent-dialog-skills-hint",children:n("agents.skillsHint","Optional skills to assign to this agent")})]})]}),b===2&&e.jsxs("div",{children:[e.jsx("p",{className:"agent-dialog-info",children:n("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:n("agents.fieldName","Name")}),e.jsx("input",{id:"agent-review-name",type:"text",className:"input",placeholder:n("agents.namePlaceholder","e.g. Frontend Reviewer"),value:I,onChange:c=>R(c.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:n("agents.fieldTitle","Title")}),e.jsx("input",{id:"agent-review-title",type:"text",className:"input",placeholder:n("agents.titlePlaceholder","e.g. Senior Code Reviewer"),value:H,onChange:c=>P(c.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:n("agents.fieldRole","Role")}),e.jsx("span",{children:ut?h(ut.value):""})]}),Ne&&e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:n("agents.fieldReportsTo","Reports To")}),e.jsx("span",{children:st?`${st.name} (${st.id})`:Ne})]}),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:n("agents.fieldSoul","Soul")}),e.jsx("textarea",{id:"agent-review-soul",className:"input",rows:2,placeholder:n("agents.soulPlaceholder","Describe the agent's personality and communication style..."),value:pe,onChange:c=>$(c.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:n("agents.fieldHeartbeatPath","Heartbeat Procedure Path")}),e.jsx("input",{id:"agent-review-heartbeat-procedure-path",type:"text",className:"input",placeholder:n("agents.heartbeatPathPlaceholder","e.g. .fusion/agents/ceo-agent2736/HEARTBEAT.md"),value:ce,onChange:c=>re(c.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:n("agents.fieldInstructionsPath","Instructions Path")}),e.jsx("input",{id:"agent-review-instructions-path",type:"text",className:"input",placeholder:n("agents.instructionsPathPlaceholder","e.g. .fusion/agents/reviewer.md"),value:J,onChange:c=>L(c.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:n("agents.fieldInstructionsText","Inline Instructions")}),e.jsx("textarea",{id:"agent-review-instructions-text",className:"input",rows:4,placeholder:n("agents.instructionsTextPlaceholder","Add custom behavior instructions..."),value:he,onChange:c=>ae(c.target.value)})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:ne==="runtime"?n("agents.runtime","Runtime"):n("agents.model","Model")}),e.jsx("span",{children:ne==="runtime"?gt?gt.name:e.jsx("em",{className:"agent-dialog-summary-row-value--muted",children:n("agents.notSelected","Not selected")}):F?e.jsxs(e.Fragment,{children:[e.jsx(ia,{provider:F.split("/")[0],size:"sm"})," ",(()=>{const c=F.indexOf("/"),f=F.slice(0,c),ye=F.slice(c+1);return Ce.find(Oe=>Oe.provider===f&&Oe.id===ye)?.name||F})()]}):e.jsx("em",{className:"agent-dialog-summary-row-value--muted",children:n("agents.modelDefault","default")})})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:n("agents.fieldThinking","Thinking")}),e.jsx("span",{className:"agent-dialog-summary-row-value--capitalize",children:se.thinkingLevel})]}),e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:n("agents.fieldMaxTurns","Max Turns")}),e.jsx("span",{children:se.maxTurns})]}),oe.length>0&&e.jsxs("div",{className:"agent-dialog-summary-row",children:[e.jsx("span",{className:"agent-dialog-summary-row-label",children:n("agents.fieldSkills","Skills")}),e.jsx("span",{children:n("agents.skillsSelected","{{count}} skill selected",{count:oe.length,defaultValue_one:"{{count}} skill selected",defaultValue_other:"{{count}} skills selected"})})]})]}),K&&e.jsx("p",{className:"agent-dialog-error",children:K})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[b>0&&e.jsx("button",{className:"btn",onClick:()=>S(c=>c-1),disabled:Q,children:n("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:Ze,disabled:Q,children:n("agents.cancel","Cancel")}),b<2?e.jsx("button",{className:"btn btn--primary",onClick:()=>S(c=>c+1),disabled:b===0&&!I.trim()&&!W,children:n("agents.next","Next")}):e.jsx("button",{className:"btn btn--primary",onClick:()=>void kt(),disabled:Q||!I.trim(),children:Q?n("agents.creating","Creating..."):n("agents.create","Create")})]})]}),e.jsx(en,{isOpen:we,onClose:()=>be(!1),onGenerated:Y,projectId:p}),e.jsx(Fs,{isOpen:je,onClose:()=>V(!1),onUseDraft:c=>{g?.(c),g||ze(c),V(!1)},projectId:p,existingAgents:v,mode:"create"})]}),document.body)}function an(l){const d=l.match(/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n([\s\S]*))?$/);if(!d)throw new Error("Missing YAML frontmatter delimiters (---)");const N=d[1].split(/\r?\n/),p=d[2]??"",a={name:""},r=[];let v=!1;for(const g of N){const h=g.trimEnd().trim();if(!h)continue;if(h.startsWith("skills:")){v=!0;continue}if(v&&h.startsWith("- ")){r.push(h.slice(2).trim());continue}v=!1;const[b,...S]=h.split(":"),C=S.join(":").trim().replace(/^['"]|['"]$/g,"");b==="name"&&(a.name=C),b==="title"&&(a.title=C),b==="icon"&&(a.icon=C),b==="role"&&(a.role=C),b==="reportsTo"&&(a.reportsTo=C)}if(!a.name)throw new Error("Missing required field: name");return r.length>0&&(a.skills=r),p.trim().length>0&&(a.instructionBody=p),a}function sn({isOpen:l,onClose:d,onImported:N,projectId:p,initialInputMethod:a="paste"}){const{t:r}=Ee("app");Ca(l);const[v,g]=s.useState("input"),[n,h]=s.useState(a),[b,S]=s.useState(""),[A,C]=s.useState([]),[I,R]=s.useState("Unknown"),[H,P]=s.useState([]),[E,D]=s.useState([]),[y,U]=s.useState([]),[q,ie]=s.useState([]),[J,L]=s.useState([]),[he,ae]=s.useState(!1),[ce,re]=s.useState(!1),[pe,$]=s.useState(null),[w,xe]=s.useState(null),[se,de]=s.useState(null),W=s.useRef(null),ke=s.useRef(null),[oe,fe]=s.useState([]),[Q,_e]=s.useState(""),[K,ue]=s.useState(null),[we,be]=s.useState(!1),[je,V]=s.useState(null),Pe=s.useRef(!1);s.useEffect(()=>{n==="browse"&&!Pe.current&&!we&&(Pe.current=!0,be(!0),V(null),oa().then(o=>{o.error?V(o.error):o.companies.length>0?fe(o.companies):V(r("agents.noCompaniesAvailable","No companies available"))}).catch(o=>{V(o instanceof Error?o.message:r("agents.failedToLoadCompanies","Failed to load companies"))}).finally(()=>{be(!1)}))},[n,we,r]);const Ge=s.useCallback(()=>{Pe.current=!0,V(null),fe([]),ue(null),be(!0),oa().then(o=>{o.error?V(o.error):o.companies.length>0?fe(o.companies):V(r("agents.noCompaniesAvailable","No companies available"))}).catch(o=>{V(o instanceof Error?o.message:r("agents.failedToLoadCompanies","Failed to load companies"))}).finally(()=>{be(!1)})},[r]),Me=s.useCallback(()=>{g("input"),h(a),S(""),C([]),R("Unknown"),P([]),D([]),U([]),ie([]),L([]),ae(!1),re(!1),$(null),xe(null),de(null),fe([]),_e(""),ue(null),be(!1),V(null),Pe.current=!1},[a]),Le=s.useCallback(()=>{Me(),d()},[Me,d]),Ce=s.useCallback(o=>{const j=o.target.files?.[0];if(!j)return;const _=new FileReader;_.onload=F=>{const X=F.target?.result;h("file"),C([]),S(X),$(null)},_.onerror=()=>{$(r("agents.failedToReadFile","Failed to read file"))},_.readAsText(j),o.target.value=""},[r]),Ke=s.useCallback(async o=>{const j=Array.from(o.target.files??[]);if(j.length!==0)try{const _=j.filter(X=>(X.webkitRelativePath||X.name).toLowerCase().endsWith("agents.md")).sort((X,Y)=>{const Ye=X.webkitRelativePath||X.name,Fe=Y.webkitRelativePath||Y.name;return Ye.localeCompare(Fe)});if(_.length===0){$(r("agents.noAgentsMdFiles","Selected directory has no AGENTS.md files"));return}const F=[];for(const X of _){const Y=await X.text();F.push(an(Y))}h("directory"),C(F),S(""),$(null)}catch{$(r("agents.failedToParseDirectory","Failed to parse AGENTS.md files from selected directory"))}finally{o.target.value=""}},[r]);function Ie(o){if(!p)return`/api${o}`;const j=o.includes("?")?"&":"?";return`/api${o}${j}projectId=${encodeURIComponent(p)}`}const $e=s.useCallback(async()=>{if(n==="directory"&&A.length===0){$(r("agents.selectDirectory","Please select a directory containing AGENTS.md files"));return}if(n==="browse"&&!K){$(r("agents.selectCompany","Please select a company from the catalog"));return}if(n!=="directory"&&n!=="browse"&&!b.trim()){$(r("agents.provideManifest","Please provide manifest content"));return}ae(!0),$(null);try{let o;n==="directory"?o={agents:A,dryRun:!0}:n==="browse"&&K?o={importSource:"companies.sh",companySlug:K.slug,dryRun:!0}:o={manifest:b,dryRun:!0};const j=await fetch(Ie("/agents/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!j.ok){const Y=await j.json();throw new Error(Y.error??`Parse failed (${j.status})`)}const _=await j.json(),F=_.agents&&_.agents.length>0?_.agents:_.created.map(Y=>({name:Y,role:"custom"})),X=Array.isArray(_.skills)?_.skills:[];R(_.companyName??"Unknown"),P(F),D(X),U(Array.isArray(_.warnings)?_.warnings:[]),ie(F.map(Y=>Y.name)),L(X.map(Y=>Y.name)),g("preview")}catch(o){$(o instanceof Error?o.message:r("agents.failedToParseManifest","Failed to parse manifest"))}finally{ae(!1)}},[n,A,b,K,p,r]),ne=s.useCallback(async()=>{re(!0),de(null);try{let o;n==="directory"?o={agents:A,skipExisting:!0,selectedAgents:q,selectedSkills:J}:n==="browse"&&K?o={importSource:"companies.sh",companySlug:K.slug,skipExisting:!0,selectedAgents:q,selectedSkills:J}:o={manifest:b,skipExisting:!0,selectedAgents:q,selectedSkills:J};const j=await fetch(Ie("/agents/import"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!j.ok){const F=await j.json();throw new Error(F.error??`Import failed (${j.status})`)}const _=await j.json();xe(_),g("result"),N()}catch(o){de(o instanceof Error?o.message:r("agents.failedToImport","Failed to import agents"))}finally{re(!1)}},[n,A,b,K,q,J,p,N,r]),ee=q.length,M=J.length,O=r("agents.selectedAgentLabel","{{count}} Agent{{plural}}",{count:ee,plural:ee!==1?"s":""}),Se=r("agents.selectedSkillLabel","{{count}} Skill{{plural}}",{count:M,plural:M!==1?"s":""}),Ae=ee>0&&M>0?`${O} + ${Se}`:M>0?Se:O,Xe=ee>0&&M>0?r("agents.importingAgentsAndSkills","Importing {{agentCount}} agent{{agentPlural}} and {{skillCount}} skill{{skillPlural}}...",{agentCount:ee,agentPlural:ee!==1?"s":"",skillCount:M,skillPlural:M!==1?"s":""}):M>0?r("agents.importingSkills","Importing {{count}} skill{{plural}}...",{count:M,plural:M!==1?"s":""}):r("agents.importingAgents","Importing {{count}} agent{{plural}}...",{count:ee,plural:ee!==1?"s":""}),ve=o=>{ie(j=>j.includes(o)?j.filter(_=>_!==o):[...j,o])},Re=o=>{L(j=>j.includes(o)?j.filter(_=>_!==o):[...j,o])};return l?e.jsx("div",{className:"agent-dialog-overlay",onClick:o=>{o.target===o.currentTarget&&Le()},children:e.jsxs("div",{className:"agent-dialog agent-import-dialog",role:"dialog","aria-modal":"true","aria-label":r("agents.importAgents","Import agents"),children:[e.jsxs("div",{className:"agent-dialog-header",children:[e.jsx("span",{className:"agent-dialog-header-title",children:r("agents.importAgents","Import Agents")}),e.jsx("button",{className:"modal-close",onClick:Le,"aria-label":r("agents.close","Close"),children:"×"})]}),e.jsxs("div",{className:"agent-dialog-body",children:[v==="input"&&e.jsxs("div",{className:"agent-import-input",children:[e.jsx("p",{className:"agent-import-description",children:r("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:W,type:"file",accept:".md,.txt",onChange:Ce,className:"agent-import-file-input","aria-label":"Upload agent manifest file"}),e.jsx("input",{ref:ke,type:"file",webkitdirectory:"",multiple:!0,onChange:Ke,className:"agent-import-file-input","aria-label":"Select directory"}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>W.current?.click(),children:[e.jsx($t,{size:16}),r("agents.chooseFile","Choose File")]}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>ke.current?.click(),children:[e.jsx(zs,{size:16}),r("agents.selectDirectory","Select Directory")]}),e.jsxs("button",{type:"button",className:"btn agent-import-upload-btn",onClick:()=>{h("browse"),C([]),S(""),ue(null),$(null)},children:[e.jsx(us,{size:16}),r("agents.browseCatalog","Browse Catalog")]}),e.jsx("span",{className:"agent-import-file-hint",children:r("agents.fileHint",".md and .txt files supported")})]}),n==="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(gs,{size:16,className:"agent-import-browse-search-icon"}),e.jsx("input",{type:"text",className:"agent-import-browse-search-input",placeholder:r("agents.searchCompanies","Search companies..."),value:Q,onChange:o=>_e(o.target.value),"aria-label":r("agents.searchCompanies","Search companies")})]}),K&&e.jsxs("div",{className:"agent-import-browse-selected",children:[e.jsxs("span",{className:"agent-import-browse-selected-label",children:[r("agents.selected","Selected:")," "]}),e.jsx("span",{className:"agent-import-browse-selected-name",children:K.name}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ue(null),children:r("agents.change","Change")})]})]}),we&&e.jsxs("div",{className:"agent-import-browse-loading",children:[e.jsx(Rt,{size:20,className:"spin"}),e.jsx("span",{children:r("agents.loadingCompanies","Loading companies...")})]}),je&&e.jsxs("div",{className:"agent-import-browse-error",children:[e.jsx(rt,{size:16}),e.jsx("span",{children:je}),e.jsxs("button",{type:"button",className:"btn btn-sm",onClick:Ge,children:[e.jsx(tt,{size:14}),r("agents.retry","Retry")]})]}),!we&&!je&&e.jsxs("div",{className:"agent-import-browse-list",children:[oe.filter(o=>Q===""||o.name.toLowerCase().includes(Q.toLowerCase())||(o.tagline?.toLowerCase().includes(Q.toLowerCase())??!1)).map(o=>e.jsxs("div",{className:`agent-import-browse-item ${K?.slug===o.slug?"agent-import-browse-item--selected":""}`,onClick:()=>ue(o),role:"button",tabIndex:0,onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&ue(o)},children:[e.jsxs("div",{className:"agent-import-browse-item-header",children:[e.jsx("span",{className:"agent-import-browse-item-name",children:o.name}),o.installs!==void 0&&e.jsxs("span",{className:"agent-import-browse-item-installs",children:[o.installs.toLocaleString()," ",r("agents.installs","installs")]})]}),o.tagline&&e.jsx("span",{className:"agent-import-browse-item-tagline",children:o.tagline}),o.repo&&e.jsx("span",{className:"agent-import-browse-item-repo",children:o.repo})]},o.slug)),oe.filter(o=>Q===""||o.name.toLowerCase().includes(Q.toLowerCase())||(o.tagline?.toLowerCase().includes(Q.toLowerCase())??!1)).length===0&&e.jsx("p",{className:"agent-import-browse-empty",children:Q?r("agents.noCompaniesMatch","No companies match your search"):r("agents.noCompaniesAvailable","No companies available")})]})]}),n!=="browse"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-divider",children:e.jsx("span",{children:r("agents.orPasteManifest","or paste manifest content")})}),e.jsx("textarea",{className:"agent-import-textarea",placeholder:r("agents.manifestPlaceholder",`---
23
- name: CEO
24
- title: Chief Executive Officer
25
- reportsTo: null
26
- skills:
27
- - review
28
- ---
29
- Agent instructions go here...`),value:b,onChange:o=>{h("paste"),C([]),S(o.target.value),$(null)},rows:8,"aria-label":r("agents.manifestContent","Manifest content")})]}),e.jsx("p",{className:"agent-import-file-hint",children:r("agents.currentInput","Current input: {{method}}",{method:n})}),pe&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),pe]})]}),v==="preview"&&e.jsxs("div",{className:"agent-import-preview",children:[e.jsxs("div",{className:"agent-import-company",children:[e.jsx("span",{className:"agent-import-company-label",children:r("agents.company","Company")}),e.jsx("span",{className:"agent-import-company-name",children:I})]}),y.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:y.map((o,j)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:o})]},j))}),e.jsxs("div",{className:"agent-import-count",children:[e.jsx(zt,{size:14}),e.jsx("span",{children:r("agents.agentsFound","{{count}} agent{{plural}} found",{count:H.length,plural:H.length!==1?"s":""})})]}),H.length>0&&e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ie(H.map(o=>o.name)),children:r("agents.selectAllAgents","Select all agents")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>ie([]),children:r("agents.clearAgents","Clear agents")})]}),H.length>0?e.jsx("div",{className:"agent-import-agent-list",children:H.map((o,j)=>e.jsxs("div",{className:"agent-import-agent-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":r("agents.selectAgent","Select agent {{name}}",{name:o.name}),checked:q.includes(o.name),onChange:()=>ve(o.name)})}),e.jsx("span",{className:"agent-import-agent-icon",children:o.icon||"🤖"}),e.jsxs("div",{className:"agent-import-agent-details",children:[e.jsx("span",{className:"agent-import-agent-name",children:o.name}),e.jsxs("span",{className:"agent-import-agent-meta",children:[o.title&&e.jsxs("span",{className:"agent-import-agent-title",children:[o.title," · "]}),e.jsx("span",{className:"agent-import-agent-role",children:o.role}),o.reportsTo&&e.jsx("span",{className:"agent-import-agent-reports",children:r("agents.importReportsTo"," · reports to {{agent}}",{agent:o.reportsTo})}),o.skills&&o.skills.length>0&&e.jsx("span",{className:"agent-import-agent-model",children:r("agents.importSkills"," · skills: {{skills}}",{skills:o.skills.join(", ")})})]}),o.instructionsText&&e.jsxs("span",{className:"agent-import-agent-instructions",children:[o.instructionsText.slice(0,100),o.instructionsText.length>100?"...":""]})]})]},j))}):e.jsx("p",{className:"agent-import-empty",children:r("agents.noAgentsFound","No agents found in the manifest.")}),E.length>0&&e.jsxs("div",{className:"agent-import-skills-section",children:[e.jsxs("div",{className:"agent-import-count",children:[e.jsx(zt,{size:14}),e.jsx("span",{children:r("agents.skillsFound","{{count}} skill{{plural}} found",{count:E.length,plural:E.length!==1?"s":""})})]}),e.jsxs("div",{className:"agent-import-selection-controls",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L(E.map(o=>o.name)),children:r("agents.selectAllSkills","Select all skills")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>L([]),children:r("agents.clearSkills","Clear skills")})]}),e.jsx("div",{className:"agent-import-skill-list",children:E.map((o,j)=>e.jsxs("div",{className:"agent-import-skill-item",children:[e.jsx("label",{className:"checkbox-label",children:e.jsx("input",{type:"checkbox","aria-label":r("agents.selectSkill","Select skill {{name}}",{name:o.name}),checked:J.includes(o.name),onChange:()=>Re(o.name)})}),e.jsx("span",{className:"agent-import-skill-icon",children:"⚡"}),e.jsxs("div",{className:"agent-import-skill-details",children:[e.jsx("span",{className:"agent-import-skill-name",children:o.name}),o.description&&e.jsx("span",{className:"agent-import-skill-description",children:o.description})]})]},`${o.name}-${j}`))})]}),se&&e.jsxs("p",{className:"agent-dialog-error",children:[e.jsx(rt,{size:14}),se]})]}),v==="result"&&w&&e.jsxs("div",{className:"agent-import-result",children:[e.jsx("div",{className:"agent-import-result-icon",children:e.jsx(jt,{size:32})}),e.jsx("h3",{className:"agent-import-result-title",children:r("agents.importComplete","Import Complete")}),e.jsxs("p",{className:"agent-import-result-company",children:[r("agents.from","From")," ",e.jsx("strong",{children:w.companyName??"Unknown"})]}),e.jsxs("div",{className:"agent-import-result-stats",children:[w.created.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:r("agents.resultCreated","{{count}} created",{count:w.created.length})})}),w.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.resultSkipped","{{count}} skipped (already exist)",{count:w.skipped.length})})}),w.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:r("agents.resultErrors","{{count}} error{{plural}}",{count:w.errors.length,plural:w.errors.length!==1?"s":""})})})]}),w.created.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:w.created.map((o,j)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(jt,{size:12}),e.jsx("span",{children:o.name})]},j))}),w.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:w.errors.map((o,j)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ca,{size:12}),e.jsxs("span",{children:[o.name,": ",o.error]})]},j))}),w.warnings&&w.warnings.length>0&&e.jsx("div",{className:"agent-import-result-warnings",children:w.warnings.map((o,j)=>e.jsxs("div",{className:"agent-import-result-warning",children:[e.jsx(rt,{size:12}),e.jsx("span",{children:o})]},j))}),w.skills&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"agent-import-result-divider"}),e.jsx("h4",{className:"agent-import-result-section-title",children:r("agents.skills","Skills")}),e.jsxs("div",{className:"agent-import-result-stats",children:[w.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--success",children:e.jsx("span",{children:r("agents.skillsImported","{{count}} skill{{plural}} imported",{count:w.skills.imported.length,plural:w.skills.imported.length!==1?"s":""})})}),w.skills.skipped.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.skillsSkipped","{{count}} skill{{plural}} skipped (already exist)",{count:w.skills.skipped.length,plural:w.skills.skipped.length!==1?"s":""})})}),w.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--error",children:e.jsx("span",{children:r("agents.skillsErrors","{{count}} skill{{plural}} error{{pluralError}}",{count:w.skills.errors.length,plural:w.skills.errors.length!==1?"s":"",pluralError:w.skills.errors.length!==1?"s":""})})}),w.skills.imported.length===0&&w.skills.skipped.length===0&&w.skills.errors.length===0&&e.jsx("div",{className:"agent-import-result-stat agent-import-result-stat--skipped",children:e.jsx("span",{children:r("agents.noSkillsInPackage","No skills in package")})})]}),w.skills.imported.length>0&&e.jsx("div",{className:"agent-import-result-agents",children:w.skills.imported.map((o,j)=>e.jsxs("div",{className:"agent-import-result-agent",children:[e.jsx(jt,{size:12}),e.jsx("span",{children:o.name})]},j))}),w.skills.errors.length>0&&e.jsx("div",{className:"agent-import-result-errors",children:w.skills.errors.map((o,j)=>e.jsxs("div",{className:"agent-import-result-error",children:[e.jsx(ca,{size:12}),e.jsxs("span",{children:[o.name,": ",o.error]})]},j))})]})]})]}),e.jsxs("div",{className:"agent-dialog-footer",children:[v==="preview"&&e.jsx("button",{className:"btn",onClick:()=>g("input"),disabled:ce,children:r("agents.back","Back")}),e.jsx("button",{className:"btn",onClick:Le,disabled:ce,children:v==="result"?r("agents.close","Close"):r("agents.cancel","Cancel")}),v==="input"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void $e(),disabled:he||(n==="directory"?A.length===0:n==="browse"?!K:!b.trim()),children:he?e.jsxs(e.Fragment,{children:[e.jsx(Rt,{size:14,className:"spin"}),r("agents.parsing","Parsing...")]}):r("agents.preview","Preview")}),v==="preview"&&e.jsx("button",{className:"btn btn-task-create",onClick:()=>void ne(),disabled:ce||ee===0&&M===0,children:ce?e.jsxs(e.Fragment,{children:[e.jsx(Rt,{size:14,className:"spin"}),Xe]}):r("agents.importButton","Import {{label}}",{label:Ae})})]})]})}):null}const Na=s.lazy(()=>Rs(()=>import("./AgentDetailView-CF6isJ51.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(l=>({default:l.AgentDetailView})));function nn(l){return[{value:"triage",label:l("agents.roleTriage","Triage"),icon:"⊕"},{value:"executor",label:l("agents.roleExecutor","Executor"),icon:"▶"},{value:"reviewer",label:l("agents.roleReviewer","Reviewer"),icon:"⊙"},{value:"merger",label:l("agents.roleMerger","Merger"),icon:"⊞"},{value:"scheduler",label:l("agents.roleScheduler","Scheduler"),icon:"◷"},{value:"engineer",label:l("agents.roleEngineer","Engineer"),icon:"⎔"},{value:"custom",label:l("agents.roleCustom","Custom"),icon:"✦"}]}const It=[.1,.25,.5,1,2,3,5,10],ln=.25,rn=3,ft=16,et=32,ya=320,Sa=260,Aa=520,Ra="kb-dashboard-agents-sidebar-width";function Ot(l){return Math.max(Sa,Math.min(Aa,l))}function ka(l){if(typeof window>"u")return ya;const d=ct(Ra,l),N=d?Number(d):NaN;return Number.isFinite(N)?Ot(N):ya}function Vt(l){switch(l){case"running":return"agent-badge--running";case"active":return"agent-badge--active";case"paused":return"agent-badge--paused";case"error":return"agent-badge--error";case"idle":default:return"agent-badge--idle"}}function Bt(l,d){switch(d){case"running":return`${l}--running`;case"active":return`${l}--active`;case"paused":return`${l}--paused`;case"error":return`${l}--error`;case"idle":default:return`${l}--idle`}}function on(l){const d=l.runtimeConfig??{},N=typeof d.runtimeHint=="string"?d.runtimeHint:"";if(N)return{label:N,isRuntime:!0};const p=typeof d.modelProvider=="string"?d.modelProvider:"",a=typeof d.modelId=="string"?d.modelId:"";if(p&&a)return{label:`${p}/${a}`,isRuntime:!1};const r=typeof d.model=="string"?d.model:"";if(r.includes("/")){const v=r.indexOf("/");return{label:r.slice(v+1),isRuntime:!1}}return{label:null,isRuntime:!1}}function Ta(l){return l.children.length===0?1:l.children.reduce((d,N)=>d+Ta(N),0)}function Ut(l,d,N){return l.state==="error"?{title:void 0,label:N("agents.healthError","Error")}:{title:d.reason??d.label,label:d.stateDerived?null:d.label}}function Ea({node:l,onSelect:d,getHealthStatus:N,selectedAgentId:p,registerNodeElement:a,linksRef:r}){const{t:v}=Ee("app"),{agent:g,children:n}=l,h=N(g),b=Ut(g,h,v),S=Vt(g.state),A=Bt("org-chart-node-card",g.state),C=Ta(l),I={"--org-chart-subtree-leaves":String(C)};return e.jsxs("div",{className:`org-chart-node${n.length>0?" org-chart-node--has-children":""}`,style:I,children:[e.jsxs("div",{ref:R=>a(g.id,R),"data-agent-id":g.id,className:`org-chart-node-card ${A}${p===g.id?" agent-card--selected":""}`,onClick:()=>d(g.id),role:"button",tabIndex:0,onKeyDown:R=>{(R.key==="Enter"||R.key===" ")&&(R.key===" "&&R.preventDefault(),d(g.id))},children:[e.jsxs("div",{className:"org-chart-node__header",children:[e.jsx("span",{className:"org-chart-node__icon",children:e.jsx(Nt,{agent:g,size:20})}),e.jsx("span",{className:"org-chart-node__name",children:g.name})]}),e.jsxs("div",{className:"org-chart-node__meta",children:[e.jsx("span",{className:`org-chart-node__badge ${S}`,children:g.state}),e.jsxs("span",{className:"org-chart-node__health",style:{color:h.color},title:b.title,children:[h.icon,b.label&&e.jsx("span",{className:"text-secondary",children:b.label})]})]})]}),n.length>0&&e.jsx("div",{className:"org-chart-children",role:"group","aria-label":v("agents.orgChartEmployees","{{name}} employees",{name:g.name}),children:n.map(R=>(r.current.push({parentId:g.id,childId:R.agent.id}),e.jsx(Ea,{node:R,onSelect:d,getHealthStatus:N,selectedAgentId:p,registerNodeElement:a,linksRef:r},R.agent.id)))})]})}function cn({links:l,nodeElements:d,canvasRef:N,viewportRef:p,layoutMode:a,transform:r}){const[v,g]=s.useState([]);return s.useLayoutEffect(()=>{const n=N.current,h=p.current;if(!n||!h||l.length===0){g([]);return}const b=()=>{const A=n.getBoundingClientRect(),C=l.flatMap(({parentId:I,childId:R})=>{const H=d.get(I),P=d.get(R);if(!H||!P)return[];const E=H.getBoundingClientRect(),D=P.getBoundingClientRect(),y=(E.left-A.left)/r.scale,U=(E.top-A.top)/r.scale,q=(D.left-A.left)/r.scale,ie=(D.top-A.top)/r.scale;if(a==="vertical"){const re=y,pe=U+E.height/r.scale/2,$=q,w=ie+D.height/r.scale/2,xe=re-(re-$)/2;return[`M ${re} ${pe} L ${xe} ${pe} L ${xe} ${w} L ${$} ${w}`]}const J=y+E.width/r.scale/2,L=U+E.height/r.scale,he=q+D.width/r.scale/2,ae=ie,ce=L+(ae-L)/2;return[`M ${J} ${L} L ${J} ${ce} L ${he} ${ce} L ${he} ${ae}`]});g(C)};b();const S=new ResizeObserver(b);return S.observe(n),S.observe(h),d.forEach(A=>S.observe(A)),()=>S.disconnect()},[N,a,l,d,r.scale,p]),e.jsx("svg",{className:"agent-org-chart-connectors","aria-hidden":"true",children:v.map((n,h)=>e.jsx("path",{d:n},`${h}-${n}`))})}function Nn({addToast:l,projectId:d,onOpenTaskLogs:N,agentOnboardingEnabled:p=!1}){const{t:a}=Ee("app"),r=nn(a),[v,g]=s.useState(!1),h=ms()==="mobile",[b,S]=s.useState(()=>ka(d)),[A,C]=s.useState("all"),{agents:I,stats:R,isLoading:H,loadAgents:P,refreshAgents:E}=hs(d,{filterState:A,showSystemAgents:v}),[D,y]=s.useState(!1),[U,q]=s.useState(null),[ie,J]=s.useState(!1),[L,he]=s.useState(null),[ae,ce]=s.useState(null),re=h&&!!L,[pe,$]=s.useState("dashboard"),[w,xe]=s.useState(null),[se,de]=s.useState(!1),[W,ke]=s.useState(()=>{if(typeof window>"u")return"list";const t=ct("fn-agent-view",d);return t==="list"||t==="board"||t==="org"?t:"list"}),[oe,fe]=s.useState(()=>{if(typeof window>"u")return"auto";const t=ct(_t,d);return pa(t)?t:"auto"}),[Q,_e]=s.useState([]),[K,ue]=s.useState(!1),[we,be]=s.useState(0),[je,V]=s.useState(!1),[Pe,Ge]=s.useState(!1),[Me,Le]=s.useState(!1),[Ce,Ke]=s.useState(!1),[Ie,$e]=s.useState(0),[ne,ee]=s.useState(0),[M,O]=s.useState({scale:1,x:0,y:0}),[Se,Ae]=s.useState(!1),Xe=s.useRef(null),ve=s.useRef(null),Re=s.useRef(null),o=s.useRef(new Map),j=s.useRef([]),_=s.useRef(new Map),F=s.useRef(null),X=s.useRef(null),Y=s.useRef(!1),{confirm:Ye}=ps(),Fe=s.useRef(null),dt=s.useId();s.useEffect(()=>{S(ka(d))},[d]),s.useEffect(()=>{const t=ct("fn-agent-view",d);if(t==="list"||t==="board"||t==="org"){ke(t);return}ke("list")},[d]),s.useEffect(()=>{Tt("fn-agent-view",W,d)},[W,d]),s.useEffect(()=>{const t=ct(_t,d);fe(pa(t)?t:"auto")},[d]),s.useEffect(()=>{Tt(_t,oe,d)},[oe,d]);const ze=s.useCallback(t=>{try{Tt(Ra,String(t),d)}catch{}},[d]),Ze=s.useCallback(t=>{if(h)return;t.preventDefault(),t.stopPropagation();const i=t.currentTarget;typeof i.setPointerCapture=="function"&&i.setPointerCapture(t.pointerId);const u=t.clientX,m=b;let k=m;document.body.style.userSelect="none";const T=G=>{const le=G.clientX-u,x=Ot(m+le);k=x,S(x)},Z=G=>{typeof i.releasePointerCapture=="function"&&i.releasePointerCapture(G.pointerId),document.body.style.userSelect="",document.removeEventListener("pointermove",T),document.removeEventListener("pointerup",Z),ze(k)};document.addEventListener("pointermove",T),document.addEventListener("pointerup",Z)},[h,ze,b]),kt=s.useCallback(t=>{if(h||t.key!=="ArrowLeft"&&t.key!=="ArrowRight")return;t.preventDefault();const i=t.shiftKey?50:10,u=t.key==="ArrowLeft"?-i:i,m=Ot(b+u);S(m),ze(m)},[h,ze,b]),[ut,Ne]=s.useState(null),st=s.useRef(null),[gt,Te]=s.useState(null),[c,f]=s.useState(null),[ye,De]=s.useState({}),[Oe,Wt]=s.useState(1),[Gt,Kt]=s.useState(!1),[Ve,Xt]=s.useState(new Set),[wt,qe]=s.useState(new Map),mt=s.useRef(!0);s.useEffect(()=>(mt.current=!0,()=>{mt.current=!1}),[]),s.useEffect(()=>{xs(d).then(t=>{mt.current&&Wt(t.heartbeatMultiplier??1)}).catch(()=>{})},[d]);const Yt=s.useCallback(async t=>{const i=Number.isFinite(t)&&t>0?t:1;Wt(i),Kt(!0);try{await bs({heartbeatMultiplier:i},d),l(a("agents.heartbeatSpeedSet","Heartbeat speed set to ×{{value}}",{value:i.toFixed(1)}),"success")}catch(u){l(a("agents.heartbeatSpeedSaveFailed","Failed to save heartbeat multiplier: {{error}}",{error:me(u)}),"error")}finally{mt.current&&Kt(!1)}},[d,l]),ht=s.useMemo(()=>wt.size===0?I:I.map(t=>{const i=wt.get(t.id);return i?{...t,state:i}:t}),[I,wt]),nt=s.useMemo(()=>ht.filter(t=>v||!ot(t)),[ht,v]),_a=s.useMemo(()=>ht.filter(t=>t.state!=="active"&&t.state!=="running"?!1:v||!ot(t)),[ht,v]),Be=s.useMemo(()=>{if(v)return Q;const t=i=>ot(i.agent)?null:{...i,children:i.children.map(t).filter(u=>u!==null)};return Q.map(t).filter(i=>i!==null)},[Q,v]);s.useEffect(()=>{if(W!=="org")return;const t=ve.current;if(!t)return;const i=()=>{be(t.clientWidth)};i();const u=typeof ResizeObserver<"u"?new ResizeObserver(i):null;return u?.observe(t),window.addEventListener("resize",i),()=>{u?.disconnect(),window.removeEventListener("resize",i)}},[W,Be.length]),s.useEffect(()=>{if(W!=="org")return;let t=!1;return ue(!0),vs(d,{includeEphemeral:v}).then(i=>{t||_e(i)}).catch(i=>{t||(l(a("agents.orgChartLoadFailed","Failed to load org chart: {{error}}",{error:me(i)}),"error"),_e([]))}).finally(()=>{t||ue(!1)}),()=>{t=!0}},[W,d,v,l]),s.useEffect(()=>{const t=setInterval(()=>{P()},3e4);return()=>{clearInterval(t)}},[P]),s.useEffect(()=>{if(!je)return;let t=!1;Ke(!0),Ht(void 0,d).then(m=>{if(t)return;const k=m.filter(T=>!ot(T));$e(k.filter(T=>T.state==="active"||T.state==="running").length),ee(k.filter(T=>T.state==="paused").length)}).catch(m=>{t||($e(0),ee(0),l(a("agents.bulkActionsLoadFailed","Failed to load bulk agent actions: {{error}}",{error:me(m)}),"error"))}).finally(()=>{t||Ke(!1)});const i=m=>{const k=m.target;k&&(Xe.current?.contains(k)||Fe.current?.contains(k)||V(!1))},u=m=>{m.key==="Escape"&&(V(!1),Fe.current?.focus())};return document.addEventListener("mousedown",i),document.addEventListener("touchstart",i),document.addEventListener("keydown",u),()=>{t=!0,document.removeEventListener("mousedown",i),document.removeEventListener("touchstart",i),document.removeEventListener("keydown",u)}},[l,je,d]);const Zt=async t=>{if(!Me){Le(!0);try{const u=(await Ht(void 0,d)).filter(z=>!ot(z)),m=u.filter(z=>t==="paused"?z.state==="active"||z.state==="running":z.state==="paused"),k=u.length-m.length;if(m.length===0){l(t==="paused"?a("agents.noAgentsToPause","No agents eligible to pause"):a("agents.noAgentsToResume","No agents eligible to resume"),"error");return}if(!await Ye({title:t==="paused"?a("agents.pauseAllTitle","Pause All Agents"):a("agents.resumeAllTitle","Resume All Agents"),message:t==="paused"?a("agents.pauseAllConfirm",{count:m.length,defaultValue_one:"Pause {{count}} agent in this project?",defaultValue_other:"Pause {{count}} agents in this project?"}):a("agents.resumeAllConfirm",{count:m.length,defaultValue_one:"Resume {{count}} agent in this project?",defaultValue_other:"Resume {{count}} agents in this project?"}),danger:t==="paused"}))return;const Z=await Promise.allSettled(m.map(z=>ma(z.id,t,d))),G=Z.map((z,He)=>({result:z,agent:m[He]})).filter(z=>z.result.status==="rejected"),le=Z.length-G.length,x=G.length,B=t==="paused"?a("agents.pausedSummary",{count:le,skipped:k,defaultValue_one:"Paused {{count}} agent; skipped {{skipped}}",defaultValue_other:"Paused {{count}} agents; skipped {{skipped}}"}):a("agents.resumedSummary",{count:le,skipped:k,defaultValue_one:"Resumed {{count}} agent; skipped {{skipped}}",defaultValue_other:"Resumed {{count}} agents; skipped {{skipped}}"});if(x>0){const z=G.slice(0,3).map(({agent:He,result:Xa})=>`${He.name||He.id}: ${me(Xa.reason)}`).join("; ");l(`${B}; failed ${x}${z?` (${z})`:""}`,"error")}else l(B,"success");await P()}catch(i){l(t==="paused"?a("agents.pauseAgentsFailed","Failed to pause agents: {{error}}",{error:me(i)}):a("agents.resumeAgentsFailed","Failed to resume agents: {{error}}",{error:me(i)}),"error")}finally{Le(!1)}}},lt=async(t,i)=>{if(!Ve.has(t)){Xt(u=>new Set(u).add(t)),qe(u=>{const m=new Map(u);return m.set(t,i),m});try{await ma(t,i,d),l(a("agents.stateUpdated","Agent state updated to {{state}}",{state:i}),"success"),await P(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const k=new Map(m);return k.delete(t),k}),l(a("agents.stateUpdateFailed","Failed to update state: {{error}}",{error:me(u)}),"error")}finally{Xt(u=>{const m=new Set(u);return m.delete(t),m})}}},qt=async(t,i)=>{if(await Ye({title:a("agents.deleteTitle","Delete Agent"),message:a("agents.deleteConfirm",'Delete agent "{{name}}"? This cannot be undone.',{name:i}),danger:!0}))try{await Es(t,d),l(a("agents.deleted",'Agent "{{name}}" deleted',{name:i}),"success"),await P()}catch(m){l(a("agents.deleteFailed","Failed to delete agent: {{error}}",{error:me(m)}),"error")}},Pa=async(t,i)=>{const u=I.find(m=>m.id===t);if(u){if(u.role===i){Ne(null);return}try{await vt(t,{role:i},d),l(a("agents.roleUpdated","Agent role updated to {{role}}",{role:r.find(m=>m.value===i)?.label??i}),"success"),Ne(null),P()}catch(m){l(a("agents.roleUpdateFailed","Failed to update role: {{error}}",{error:me(m)}),"error")}}},Ma=(t,i)=>{t.key==="Escape"&&Ne(null)},La=async(t,i)=>{c===t.id&&(f(null),De(u=>{const m={...u};return delete m[t.id],m})),Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:i}},d),l(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ha(i),name:t.name}),"success"),P()}catch(u){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(u)}),"error")}finally{Te(null)}},Jt=async t=>{const i=ye[t.id]??"";if(i.trim()===""){l(a("agents.heartbeatEnterMinutes","Please enter a heartbeat interval in minutes"),"error");return}const u=Number(i);if(isNaN(u)){l(a("agents.heartbeatMustBeNumber","Heartbeat interval must be a valid number"),"error");return}if(u<=0){l(a("agents.heartbeatMustBePositive","Heartbeat interval must be greater than 0"),"error");return}if(u>=1&&u<5){Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:_s}},d),l(a("agents.heartbeatClampedToMin",{count:u,defaultValue_one:"Heartbeat interval set to 5 minutes (minimum). {{count}} minute was below the 5-minute minimum.",defaultValue_other:"Heartbeat interval set to 5 minutes (minimum). {{count}} minutes was below the 5-minute minimum."}),"success"),f(null),De(k=>{const T={...k};return delete T[t.id],T}),P()}catch(k){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(k)}),"error")}finally{Te(null)}return}const m=Math.round(u*6e4);Te(t.id);try{await vt(t.id,{runtimeConfig:{...t.runtimeConfig??{},heartbeatIntervalMs:m}},d),l(a("agents.heartbeatIntervalUpdated","Heartbeat interval updated to {{interval}} for {{name}}",{interval:ha(m),name:t.name}),"success"),f(null),De(k=>{const T={...k};return delete T[t.id],T}),P()}catch(k){l(a("agents.heartbeatIntervalUpdateFailed","Failed to update heartbeat interval: {{error}}",{error:me(k)}),"error")}finally{Te(null)}},Ia=t=>{const i=Ft(t.runtimeConfig?.heartbeatIntervalMs),u=Math.round(i/6e4);f(t.id),De(m=>({...m,[t.id]:String(u)}))},ge=s.useCallback((t,i)=>{he(t),$(i?.initialTab??"dashboard"),xe(i?.initialRunId??null),de(i?.preferActiveRun??!1)},[]),Ue=s.useCallback(()=>{he(null),$("dashboard"),xe(null),de(!1)},[]),Qt=s.useCallback(t=>{ge(t)},[ge]),Fa=s.useCallback(t=>{ce(t),ge(t)},[ge]),za=s.useCallback(async({agentId:t,deleted:i})=>{await E(),i&&L===t&&Ue()},[E,L,Ue]),Da=s.useCallback(t=>{ge(t),h&&Ge(!1)},[h,ge]),Ha=async(t,i)=>{qe(u=>{const m=new Map(u);return m.set(t,"running"),m});try{await Ps(t,d,{source:"on_demand",triggerDetail:"Triggered from dashboard"}),l(a("agents.heartbeatRunStarted","Heartbeat run started for {{name}}",{name:i}),"success"),await P(),qe(u=>{const m=new Map(u);return m.delete(t),m})}catch(u){qe(m=>{const k=new Map(m);return k.delete(t),k}),l(a("agents.heartbeatRunFailed","Failed to start heartbeat run: {{error}}",{error:me(u)}),"error")}},We=s.useCallback(t=>Math.min(rn,Math.max(ln,t)),[]),te=s.useCallback(t=>{const i=ve.current,u=Re.current?.querySelector(".agent-org-chart");if(!i||!u)return{...t,scale:We(t.scale)};const m=We(t.scale),k=u.scrollWidth*m,T=u.scrollHeight*m,Z=i.clientWidth,G=i.clientHeight,le=Math.min(et,Z-k-et),x=et,B=Math.min(et,G-T-et),z=et;return{scale:m,x:Math.max(le,Math.min(x,t.x)),y:Math.max(B,Math.min(z,t.y))}},[We]),pt=s.useCallback((t,i,u)=>{const m=ve.current;m&&O(k=>{const T=We(t),Z=m.getBoundingClientRect(),G=i-Z.left,le=u-Z.top,x=(G-k.x)/k.scale,B=(le-k.y)/k.scale;return te({scale:T,x:G-x*T,y:le-B*T})})},[We,te]),Je=s.useCallback(()=>{const t=ve.current,i=Re.current?.querySelector(".agent-org-chart");if(!t||!i)return;const u=t.clientWidth,m=t.clientHeight,k=i.scrollWidth,T=i.scrollHeight;if(k<=0||T<=0)return;const Z=We(Math.min(u/k,m/T,1)),G=(u-k*Z)/2,le=(m-T*Z)/2;O(te({scale:Z,x:G,y:le}))},[We,te]),Ct=s.useCallback(t=>{ke(t),t!=="org"&&O({scale:1,x:0,y:0}),h&&L&&Ue()},[Ue,h,L]),ea=t=>r.find(i=>i.value===t)?.label??t,xt=s.useMemo(()=>Ds({tree:Be,availableWidth:we,preference:oe}),[Be,oe,we]),ta=s.useCallback(t=>{fe(t),O({scale:1,x:0,y:0})},[]);s.useEffect(()=>{O({scale:1,x:0,y:0}),Y.current=!1},[d,xt]),s.useLayoutEffect(()=>{W!=="org"||K||Be.length===0||Y.current||(Je(),Y.current=!0)},[W,Be.length,Je,K]);const $a=s.useCallback((t,i)=>{i?o.current.set(t,i):o.current.delete(t)},[]),aa=s.useCallback(()=>e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>O(t=>te({...t,scale:t.scale*.9})),"aria-label":a("agents.orgChartZoomOut","Zoom out org chart"),title:a("agents.zoomOut","Zoom out"),children:e.jsx(Ws,{size:16})}),e.jsxs("span",{className:"agent-org-chart-controls__zoom-label","aria-live":"polite",children:[Math.round(M.scale*100),"%"]}),e.jsx("button",{type:"button",className:"btn-icon touch-target",onClick:()=>O(t=>te({...t,scale:t.scale*1.1})),"aria-label":a("agents.orgChartZoomIn","Zoom in org chart"),title:a("agents.zoomIn","Zoom in"),children:e.jsx(Bs,{size:16})}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm agent-org-chart-controls__fit-btn",onClick:Je,"aria-label":a("agents.orgChartFit","Fit org chart"),title:a("agents.orgChartFit","Fit org chart"),children:[e.jsx(fs,{size:16}),a("agents.fit","Fit")]}),e.jsxs("button",{type:"button",className:"btn touch-target btn-sm",onClick:()=>O(t=>te({...t,x:0,y:0})),"aria-label":a("agents.orgChartCenter","Center org chart"),title:a("agents.orgChartCenter","Center org chart"),children:[e.jsx(js,{size:16}),a("agents.center","Center")]})]}),[te,Je,M.scale]),Oa=s.useCallback(t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();const i=t.deltaY>0?.9:1.1;pt(M.scale*i,t.clientX,t.clientY)},[M.scale,pt]),Va=s.useCallback(t=>{if(t.target.closest(".org-chart-node-card"))return;if(t.currentTarget.setPointerCapture?.(t.pointerId),_.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),_.current.size===1){F.current={x:t.clientX-M.x,y:t.clientY-M.y,pointerId:t.pointerId},Ae(!0);return}if(_.current.size===2){const u=Array.from(_.current.values()),m=u[0].x-u[1].x,k=u[0].y-u[1].y;X.current={distance:Math.hypot(m,k),scale:M.scale,centerX:(u[0].x+u[1].x)/2,centerY:(u[0].y+u[1].y)/2},F.current=null}},[M.scale,M.x,M.y]),Ba=s.useCallback(t=>{if(_.current.has(t.pointerId)){if(_.current.set(t.pointerId,{x:t.clientX,y:t.clientY}),_.current.size>=2){const i=Array.from(_.current.values()),u=X.current;if(!u)return;const m=i[0].x-i[1].x,k=i[0].y-i[1].y,T=Math.hypot(m,k),Z=u.scale*(T/u.distance);pt(Z,u.centerX,u.centerY);return}!F.current||F.current.pointerId!==t.pointerId||O(i=>te({...i,x:t.clientX-F.current.x,y:t.clientY-F.current.y}))}},[te,pt]),sa=s.useCallback(t=>{_.current.delete(t.pointerId),_.current.size<2&&(X.current=null),_.current.size===0&&(F.current=null,Ae(!1))},[]),Ua=s.useCallback(t=>{if(t.key==="ArrowLeft")O(i=>te({...i,x:i.x+ft}));else if(t.key==="ArrowRight")O(i=>te({...i,x:i.x-ft}));else if(t.key==="ArrowUp")O(i=>te({...i,y:i.y+ft}));else if(t.key==="ArrowDown")O(i=>te({...i,y:i.y-ft}));else if(t.key==="+"||t.key==="=")O(i=>te({...i,scale:i.scale*1.1}));else if(t.key==="-")O(i=>te({...i,scale:i.scale*.9}));else if(t.key==="0")Je();else if(t.key==="Home")O({scale:1,x:0,y:0});else return;t.preventDefault()},[te,Je]),na=s.useCallback(()=>{const t=[{value:"horizontal",label:a("agents.layoutHorizontal","Horizontal"),icon:e.jsx(xa,{size:16}),ariaLabel:a("agents.layoutHorizontalAria","Horizontal layout")},{value:"vertical",label:a("agents.layoutVertical","Vertical"),icon:e.jsx(da,{size:16}),ariaLabel:a("agents.layoutVerticalAria","Vertical layout")},{value:"auto",label:a("agents.layoutAuto","Auto"),icon:e.jsx(tt,{size:16}),ariaLabel:a("agents.layoutAutoAria","Automatic layout")}];return e.jsx("div",{className:"agent-org-chart-layout-toggle","data-testid":"agent-org-chart-layout-toggle",children:t.map(i=>{const u=oe===i.value;return e.jsxs("button",{type:"button",className:`btn-icon touch-target agent-org-chart-layout-toggle__button${u?" btn-icon--active":""}`,onClick:()=>ta(i.value),"aria-pressed":u,"aria-label":i.ariaLabel,title:i.ariaLabel,"data-layout-value":i.value,children:[i.icon,e.jsx("span",{className:"agent-org-chart-layout-toggle__text",children:i.label})]},i.value)})})},[ta,oe]),Wa=t=>Array.isArray(t.metadata?.skills)?t.metadata.skills:[],St=t=>Ts(t),Ga=Ce||Me||Ie===0,Ka=Ce||Me||ne===0,la=H&&I.length===0,it=s.useCallback(()=>{y(!0)},[]);return e.jsxs("div",{className:"agents-view",children:[e.jsx(Ns,{icon:Dt,title:a("agents.title","Agents"),actions:e.jsxs("div",{className:"agents-view-controls",children:[e.jsxs("div",{className:"view-toggle",children:[e.jsx("button",{className:`view-toggle-btn${W==="list"?" active":""}`,onClick:()=>Ct("list"),title:a("agents.listView","List view"),"aria-label":a("agents.listView","List view"),"aria-pressed":W==="list",children:e.jsx(da,{size:16})}),e.jsx("button",{className:`view-toggle-btn${W==="board"?" active":""}`,onClick:()=>Ct("board"),title:a("agents.boardView","Board view"),"aria-label":a("agents.boardView","Board view"),"aria-pressed":W==="board",children:e.jsx(at,{size:16})}),e.jsx("button",{className:`view-toggle-btn${W==="org"?" active":""}`,onClick:()=>Ct("org"),title:a("agents.orgChartView","Org Chart view"),"aria-label":a("agents.orgChartView","Org Chart view"),"aria-pressed":W==="org",children:e.jsx(xa,{size:16})})]}),e.jsxs("div",{className:"agents-view-primary-actions",children:[e.jsx("button",{ref:Fe,className:`btn-icon agent-controls-trigger${je?" agent-controls-trigger--active":""}`,onClick:()=>V(t=>!t),title:a("agents.controls","Controls"),"aria-label":a("agents.controls","Controls"),"aria-haspopup":"dialog","aria-expanded":je,"aria-controls":dt,children:e.jsx(ys,{size:16})}),e.jsx("button",{className:"btn-icon",onClick:()=>void P(),title:a("agents.refresh","Refresh"),"aria-label":a("agents.refresh","Refresh"),children:e.jsx(tt,{size:16,className:H?"spin":void 0})}),!h&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{J(!0),V(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx($t,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),V(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(ua,{size:16}),a("agents.newAgent","New Agent")]})]}),je&&e.jsxs("div",{ref:Xe,id:dt,className:"agent-controls-panel agent-controls-panel--scrollable",role:"dialog","aria-label":a("agents.agentControls","Agent controls"),"aria-modal":"false",children:[e.jsx("div",{className:"agent-controls",children:e.jsxs("div",{className:"agent-controls-filters",children:[e.jsxs("div",{className:"agent-state-filter",children:[e.jsx(ks,{size:14}),e.jsxs("select",{className:"agent-state-filter-select",value:A,onChange:t=>C(t.target.value),"aria-label":a("agents.filterByState","Filter agents by state"),children:[e.jsx("option",{value:"all",children:a("agents.stateAll","All States")}),e.jsx("option",{value:"idle",children:a("agents.stateIdle","Idle")}),e.jsx("option",{value:"active",children:a("agents.stateActive","Active")}),e.jsx("option",{value:"running",children:a("agents.stateRunning","Running")}),e.jsx("option",{value:"paused",children:a("agents.statePaused","Paused")}),e.jsx("option",{value:"error",children:a("agents.stateError","Error")})]})]}),e.jsxs("label",{className:"checkbox-label agent-system-filter",children:[e.jsx("input",{type:"checkbox",checked:v,onChange:t=>g(t.target.checked),"aria-label":a("agents.showSystemAgents","Show system agents")}),a("agents.showSystemAgents","Show system agents")]})]})}),h&&e.jsxs("div",{className:"agent-controls-mobile-actions",children:[e.jsxs("button",{className:"btn btn-sm agent-import-trigger",onClick:()=>{J(!0),V(!1)},"aria-label":a("agents.import","Import"),title:a("agents.import","Import"),children:[e.jsx($t,{size:16}),a("agents.import","Import")]}),e.jsxs("button",{className:"btn btn-task-create btn-sm",onClick:()=>{it(),V(!1)},"aria-label":a("agents.newAgent","New Agent"),title:a("agents.newAgent","New Agent"),children:[e.jsx(ua,{size:16}),a("agents.newAgent","New Agent")]})]}),e.jsxs("div",{className:"agent-controls-bulk-actions",role:"menu","aria-label":a("agents.bulkAgentActions","Bulk agent actions"),children:[e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:Ga,onClick:()=>{V(!1),Zt("paused")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(Et,{}),e.jsx("span",{children:a("agents.pauseAllAgents","Pause All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:Ce?a("agents.loadingEligibility","Loading eligibility…"):Ie===0?a("agents.noAgentsToPauseHint","No active or running project agents to pause"):a("agents.pauseCountHint",{count:Ie,defaultValue_one:"Pause {{count}} active/running agent",defaultValue_other:"Pause {{count}} active/running agents"})})]}),e.jsxs("button",{type:"button",className:"agent-detail-bulk-menu-item",role:"menuitem",disabled:Ka,onClick:()=>{V(!1),Zt("active")},children:[e.jsxs("span",{className:"agent-controls-bulk-actions__label",children:[e.jsx(bt,{}),e.jsx("span",{children:a("agents.resumeAllAgents","Resume All Agents")})]}),e.jsx("span",{className:"agent-detail-bulk-menu-item-hint",children:Ce?a("agents.loadingEligibility","Loading eligibility…"):ne===0?a("agents.noAgentsToResumeHint","No paused project agents to resume"):a("agents.resumeCountHint",{count:ne,defaultValue_one:"Resume {{count}} paused agent",defaultValue_other:"Resume {{count}} paused agents"})})]})]}),e.jsx("div",{className:"agent-global-controls agent-controls-actions",children:e.jsxs("div",{className:"heartbeat-multiplier-group",children:[e.jsxs("div",{className:"heartbeat-multiplier-controls",children:[e.jsx("label",{htmlFor:"globalHeartbeatMultiplier",className:"heartbeat-multiplier-label",children:a("agents.heartbeatSpeed","Heartbeat Speed")}),e.jsx("input",{id:"globalHeartbeatMultiplier",className:"heartbeat-multiplier-slider touch-target",type:"range",min:.1,max:10,step:.1,value:Oe,onChange:t=>{const i=Number(t.target.value);Yt(Number.isFinite(i)&&i>0?i:1)},disabled:Gt}),e.jsxs("span",{className:"heartbeat-multiplier-value",children:["×",Oe.toFixed(1)]}),e.jsx("select",{className:"heartbeat-multiplier-preset",value:String(It.reduce((t,i)=>Math.abs(i-Oe)<Math.abs(t-Oe)?i:t,It[0])),onChange:t=>{const i=Number(t.target.value);Yt(Number.isFinite(i)&&i>0?i:1)},disabled:Gt,"aria-label":a("agents.heartbeatSpeedPreset","Heartbeat speed preset"),children:It.map(t=>e.jsxs("option",{value:String(t),children:["×",t]},t))})]}),e.jsx("small",{className:"text-secondary",children:a("agents.heartbeatSpeedHint","Scales all agent heartbeat intervals. ×0.5 = twice as fast, ×2.0 = twice as slow. Default: ×1.0")})]})}),e.jsx(Gs,{agents:nt})]})]})]})}),e.jsx(tn,{isOpen:D,onClose:()=>{y(!1),q(null)},onCreated:()=>{y(!1),q(null),P()},projectId:d,prefillDraft:U,agentOnboardingEnabled:p,existingAgents:I,onPrefillDraft:q}),e.jsx(sn,{isOpen:ie,onClose:()=>J(!1),onImported:()=>void P(),projectId:d}),e.jsx(Qs,{stats:R,activeAgents:_a,projectId:d,isOpen:Pe,onToggle:()=>Ge(t=>!t),onSelectAgent:Da,onOpenTaskLogs:N}),W==="org"?e.jsx("div",{className:"agents-org-full-view",children:e.jsx("div",{className:"agents-view-content agents-view-content--org-full",children:L?e.jsxs("div",{className:"agents-org-detail-view","data-testid":"agents-org-detail-view",children:[e.jsx("button",{type:"button",className:"btn btn-sm agents-org-detail-back",onClick:Ue,"aria-label":a("agents.backToOrgChart","Back to org chart"),children:a("agents.backToOrgChart","Back to org chart")}),e.jsx(s.Suspense,{fallback:null,children:e.jsx(Na,{inline:!0,showInlineBackButton:!1,agentId:L,projectId:d,onClose:Ue,addToast:l,onChildClick:Qt,initialTab:pe,initialRunId:w,preferActiveRun:se},L)})]}):la?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):e.jsxs("div",{className:"agent-org-chart-shell","data-testid":"agent-org-chart-shell",children:[h?e.jsxs("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:[na(),aa()]}):e.jsxs("div",{className:"agent-org-chart-toolbar",children:[na(),e.jsx("div",{className:"agent-org-chart-controls","data-testid":"agent-org-chart-controls",children:aa()})]}),e.jsx("div",{ref:ve,className:"agent-org-chart-viewport","data-testid":"agent-org-chart-viewport",tabIndex:0,role:"region","aria-label":a("agents.orgChartCanvas","Org chart canvas"),onWheel:Oa,onPointerDown:Va,onPointerMove:Ba,onPointerUp:sa,onPointerCancel:sa,onKeyDown:Ua,"data-panning":Se?"true":"false",children:e.jsxs("div",{ref:Re,className:`agent-org-chart-canvas agent-org-chart-canvas--zoom-${Math.round((M.scale??1)*100)}`,"data-panning":Se?"true":"false",style:{transform:`translate(${M.x}px, ${M.y}px) scale(${M.scale})`},children:[e.jsx("div",{className:`agent-org-chart${xt==="vertical"?" agent-org-chart--vertical":""}`,"data-testid":"agent-org-chart","data-layout-mode":xt,children:K?e.jsxs("div",{className:"agent-org-chart__loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingOrgChart","Loading org chart...")})]}):Be.length===0?e.jsx(Mt,{onCtaClick:it}):(j.current=[],Be.map(t=>e.jsx(Ea,{node:t,onSelect:Fa,getHealthStatus:St,selectedAgentId:ae,registerNodeElement:$a,linksRef:j},t.agent.id)))}),e.jsx(cn,{links:j.current,nodeElements:o.current,canvasRef:Re,viewportRef:ve,layoutMode:xt,transform:M})]})})]})})}):e.jsxs("div",{className:"agents-split-layout",style:h?void 0:{gridTemplateColumns:`${b}px var(--space-sm) minmax(0, 1fr)`},children:[e.jsx("div",{className:`agents-split-sidebar${re?" agents-split-sidebar--hidden-mobile":""}`,children:e.jsx("div",{className:"agents-view-content",children:la?e.jsxs("div",{className:"agents-view-loading",role:"status","aria-live":"polite",children:[e.jsx(tt,{size:18,className:"spin"}),e.jsx("span",{children:a("agents.loadingAgents","Loading agents...")})]}):W==="board"?e.jsx("div",{className:"agent-board",children:nt.length===0?e.jsx(Mt,{onCtaClick:it}):nt.map(t=>{const i=St(t),u=Ut(t,i,a),m=Vt(t.state),k=Bt("agent-board-card",t.state);return e.jsxs("div",{className:`agent-board-card ${k}${L===t.id?" agent-card--selected":""}`,children:[e.jsxs("div",{className:"agent-board-clickable",onClick:()=>ge(t.id),role:"button",tabIndex:0,onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.key===" "&&T.preventDefault(),ge(t.id))},children:[e.jsxs("div",{className:"agent-board-header",children:[e.jsx("span",{className:"agent-board-icon",children:e.jsx(Nt,{agent:t,size:20})}),e.jsx("span",{className:"agent-board-badge badge text-secondary",children:ea(t.role)}),e.jsx("span",{className:`agent-board-badge badge ${m}`,children:t.state}),(t.pendingApprovalCount??0)>0?e.jsxs("span",{className:"agent-board-badge badge agent-approval-badge",title:a("agents.pendingApprovals","Pending approvals"),children:[e.jsx("span",{className:"status-dot status-dot--pending"}),t.pendingApprovalCount]}):null]}),e.jsx("div",{className:"agent-board-name",children:t.name}),e.jsx("div",{className:"agent-board-id",children:t.id}),e.jsxs("div",{className:"agent-board-health",style:{color:i.color},title:u.title,children:[i.icon,u.label?` ${u.label}`:""]})]}),(t.state==="idle"||t.state==="paused"||t.state==="error")&&e.jsx("div",{className:"agent-board-actions",children:e.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>void qt(t.id,t.name),title:a("agents.delete","Delete"),children:e.jsx(ga,{size:14})})})]},t.id)})}):e.jsx("div",{className:"agent-list",children:nt.length===0?e.jsx(Mt,{onCtaClick:it}):nt.map(t=>{const i=St(t),u=Ut(t,i,a),m=Vt(t.state),k=Bt("agent-card",t.state),T=Ft(t.runtimeConfig?.heartbeatIntervalMs),Z=ws(T),G=gt===t.id,le=on(t);return e.jsxs("div",{className:`agent-card agent-card--clickable ${k}${L===t.id?" agent-card--selected":""}`,onClick:x=>{const B=x.target;if(B===x.currentTarget){ge(t.id);return}const z=B.closest('button, select, input, [role="button"]');z&&z!==x.currentTarget||ge(t.id)},role:"button",tabIndex:0,onKeyDown:x=>{x.target===x.currentTarget&&(x.key==="Enter"||x.key===" ")&&(x.key===" "&&x.preventDefault(),ge(t.id))},"aria-label":a("agents.openDetails","Open details for {{name}}",{name:t.name}),children:[e.jsxs("div",{className:"agent-card-header",children:[e.jsxs("div",{className:"agent-info",children:[ut===t.id?e.jsx("select",{ref:st,className:"select agent-role-select",value:t.role,onChange:x=>void Pa(t.id,x.target.value),onKeyDown:x=>Ma(x,t.id),onBlur:()=>Ne(null),autoFocus:!0,children:r.map(x=>e.jsxs("option",{value:x.value,children:[x.icon," ",x.label]},x.value))}):e.jsx("span",{className:"agent-icon agent-icon--clickable",onClick:x=>{x.stopPropagation(),Ne(t.id)},title:a("agents.clickToChangeRole","Click to change role"),role:"button",tabIndex:0,onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.stopPropagation(),Ne(t.id))},children:e.jsx(Nt,{agent:t,size:20})}),e.jsxs("div",{className:"agent-meta",children:[e.jsx("span",{className:"agent-name",children:t.name}),e.jsx("span",{className:"agent-id text-secondary",children:t.id})]}),e.jsx(wa,{size:20,className:"agent-card-chevron"})]}),e.jsxs("div",{className:"agent-badges",children:[e.jsx("span",{className:`badge ${m}`,children:t.state}),e.jsxs("span",{className:"badge",style:{color:i.color},title:u.title,children:[i.icon,u.label?` ${u.label}`:""]}),e.jsx("span",{className:"badge text-secondary",children:ea(t.role)}),(t.pendingApprovalCount??0)>0?e.jsxs("span",{className:"badge agent-approval-badge",title:a("agents.pendingApprovals","Pending approvals"),children:[e.jsx("span",{className:"status-dot status-dot--pending"}),t.pendingApprovalCount]}):null,(()=>{const x=Wa(t);if(x.length===0)return null;const B=x.slice(0,2),z=x.length-2;return e.jsxs(e.Fragment,{children:[B.map(He=>e.jsx("span",{className:"badge badge-skill",title:He,children:Is(He)},He)),z>0&&e.jsxs("span",{className:"badge badge-skill",children:["+",z]})]})})()]})]}),e.jsxs("div",{className:"agent-card-body",children:[e.jsxs("div",{className:"agent-model-runtime",children:[e.jsxs("span",{className:"text-secondary",children:[le.isRuntime?a("agents.runtime","Runtime"):a("agents.model","Model"),":"]}),e.jsx("span",{className:"badge agent-model-runtime__value",title:le.label??a("agents.auto","Auto"),children:le.label??a("agents.auto","Auto")})]}),t.state==="error"&&t.lastError?e.jsx(Cs,{errorText:t.lastError,issueContext:{surface:"AgentsView list",agentId:t.id,agentName:t.name,agentState:t.state,taskId:t.taskId}}):null,t.taskId&&e.jsxs("div",{className:"agent-task",children:[e.jsx("span",{className:"text-secondary",children:a("agents.workingOn","Working on:")}),e.jsx("span",{className:"badge",children:t.taskId})]}),e.jsxs("div",{className:"agent-heartbeat-control",children:[e.jsx("span",{className:"text-secondary",children:a("agents.heartbeat","Heartbeat:")}),c===t.id?e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",inputMode:"numeric",pattern:"[0-9]*",className:"input agent-heartbeat-custom-input",value:ye[t.id]??"",onChange:x=>De(B=>({...B,[t.id]:x.target.value})),onKeyDown:x=>{x.key==="Enter"?Jt(t):x.key==="Escape"&&(f(null),De(B=>{const z={...B};return delete z[t.id],z}))},disabled:G,"aria-label":a("agents.customHeartbeatAria","Custom heartbeat interval in minutes for {{name}}",{name:t.name})}),e.jsx("span",{className:"text-secondary",children:a("agents.minutesUnit","min")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>void Jt(t),disabled:G,title:a("agents.saveCustomInterval","Save custom interval"),children:a("agents.save","Save")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>{f(null),De(x=>{const B={...x};return delete B[t.id],B})},disabled:G,title:a("agents.cancelCustomInterval","Cancel custom interval"),children:a("agents.cancel","Cancel")})]}):e.jsx(e.Fragment,{children:e.jsxs("select",{className:"select agent-heartbeat-select",value:T,onChange:x=>{const B=x.target.value;B==="__custom__"?Ia(t):La(t,Number(B))},disabled:G,"aria-label":a("agents.setHeartbeatAria","Set heartbeat interval for {{name}}",{name:t.name}),children:[Z.map(x=>e.jsx("option",{value:x.value,children:x.label},x.value)),Ss.some(x=>x.value===T)&&e.jsx("option",{value:"__custom__",children:a("agents.customHeartbeatOption","Custom...")})]})}),G&&e.jsx("span",{className:"agent-heartbeat-saving text-secondary",children:a("agents.saving","Saving…")}),t.lastHeartbeatAt&&(()=>{const x=new Date(t.lastHeartbeatAt),B=new Date(x.getTime()+T),z=t.state==="active"||t.state==="running";return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"agent-heartbeat-last text-secondary",title:x.toLocaleString(),children:a("agents.lastHeartbeatAt","Last: {{time}}",{time:x.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})}),z&&e.jsx("span",{className:"agent-heartbeat-next text-secondary",title:B.toLocaleString(),children:a("agents.nextHeartbeatAt","Next: {{time}}",{time:B.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})})})]})})()]})]}),e.jsxs("div",{className:"agent-card-actions",children:[e.jsxs("div",{className:"agent-card-actions-group agent-card-actions-group--primary",children:[t.state==="idle"&&e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.activate","Activate"),children:[e.jsx(bt,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.start","Start")})]}),t.state==="active"&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm",onClick:()=>void Ha(t.id,t.name),disabled:Ve.has(t.id),title:a("agents.runNow","Run Now"),"aria-label":a("agents.runNowAria","Run now for {{name}}",{name:t.name}),children:[e.jsx(at,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.runNow","Run Now")})]}),e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"paused"),disabled:Ve.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Et,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.pause","Pause")})]})]}),t.state==="paused"&&e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.resume","Resume"),children:[e.jsx(bt,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.resume","Resume")})]}),t.state==="running"&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{className:"btn btn-sm",onClick:()=>ge(t.id,{initialTab:"runs",initialRunId:null,preferActiveRun:!0}),title:a("agents.viewLiveRun","View live run details"),"aria-label":a("agents.viewLiveRunAria","View live run details for {{name}}",{name:t.name}),children:[e.jsx(at,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.running","Running")})]}),e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"paused"),disabled:Ve.has(t.id),title:a("agents.pause","Pause"),children:[e.jsx(Et,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.pause","Pause")})]})]}),t.state==="error"&&e.jsxs("button",{className:"btn btn-sm",onClick:()=>void lt(t.id,"active"),disabled:Ve.has(t.id),title:a("agents.retry","Retry"),children:[e.jsx(bt,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.retry","Retry")})]})]}),e.jsxs("div",{className:"agent-card-actions-group agent-card-actions-group--secondary",children:[e.jsxs("button",{className:"btn btn-sm agent-card-details-btn",onClick:()=>ge(t.id),title:a("agents.viewDetailsFor","View details for {{name}}",{name:t.name}),"aria-label":a("agents.viewDetailsFor","View details for {{name}}",{name:t.name}),children:[e.jsx(As,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.details","Details")})]}),(t.state==="idle"||t.state==="paused"||t.state==="error")&&e.jsxs("button",{className:"btn btn-sm btn-danger",onClick:()=>void qt(t.id,t.name),title:a("agents.delete","Delete"),children:[e.jsx(ga,{size:14})," ",e.jsx("span",{className:"agent-card-action-label",children:a("agents.delete","Delete")})]})]})]})]},t.id)})})})}),!h&&e.jsx("div",{className:"agents-split-resize-handle","data-testid":"agents-sidebar-resize-handle",role:"separator","aria-orientation":"vertical","aria-valuemin":Sa,"aria-valuemax":Aa,"aria-valuenow":b,"aria-label":a("agents.resizeSidebar","Resize agents sidebar"),tabIndex:0,onPointerDown:Ze,onKeyDown:kt}),e.jsx("div",{className:`agents-split-detail${h&&!L?" agents-split-detail--hidden-mobile":""}`,children:L?e.jsx(s.Suspense,{fallback:null,children:e.jsx(Na,{inline:!0,showInlineBackButton:h,agentId:L,projectId:d,onClose:Ue,addToast:l,onChildClick:Qt,initialTab:pe,initialRunId:w,preferActiveRun:se,onMutationSuccess:za},L)}):e.jsxs("div",{className:"agents-detail-empty-state",children:[e.jsx(Dt,{size:48}),e.jsx("h3",{children:a("agents.selectAnAgent","Select an agent")}),e.jsx("p",{children:a("agents.selectAgentHint","Choose an agent from the sidebar to view details")})]})})]})]})}export{Nn as AgentsView};