@wrongstack/webui 0.297.0 → 0.298.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/dist/assets/AgentRosterView-C26RCdot.js +11 -0
  2. package/dist/assets/{AnalyticsDashboard-CkceglT6.js → AnalyticsDashboard-CEjjV3bX.js} +1 -1
  3. package/dist/assets/AudienceMemoryPanel-CnfZC8x0.js +3 -0
  4. package/dist/assets/{ChangesView-DouwIaDk.js → ChangesView-D0BiTbs8.js} +1 -1
  5. package/dist/assets/ChronicleDashboard-BZ4XOcvf.js +1 -0
  6. package/dist/assets/CodeEditor-BlqaT56D.js +1 -0
  7. package/dist/assets/CodeMap-Bj5tjjW5.js +1 -0
  8. package/dist/assets/{CronJobsPanel-CAImDL8t.js → CronJobsPanel-F6nhZtfg.js} +1 -1
  9. package/dist/assets/DeadCodeScanPanel-C9sLNUUc.js +2 -0
  10. package/dist/assets/{DebugDashboard-DLNPZIEI.js → DebugDashboard-D8BLcLjI.js} +1 -1
  11. package/dist/assets/{DesignGalleryView-D0azMq2e.js → DesignGalleryView-B8mE5nGy.js} +1 -1
  12. package/dist/assets/GoalView-DIx7Zr4a.js +1 -0
  13. package/dist/assets/KanbanView-DshzDwq1.js +3 -0
  14. package/dist/assets/MailboxDetailView-BJXpXjtm.js +1 -0
  15. package/dist/assets/MemoryManager-B-S5oREO.js +1 -0
  16. package/dist/assets/{ModelPicker-CN-UD3lc.js → ModelPicker-CNHhT2SO.js} +1 -1
  17. package/dist/assets/OfficeMapPanel-CBN9uG80.js +4 -0
  18. package/dist/assets/{ProcessMonitor-ButM8C0T.js → ProcessMonitor-Cc8LsfTh.js} +1 -1
  19. package/dist/assets/QueuePanel-B0NXFwEt.js +1 -0
  20. package/dist/assets/{RefreshDebugView-DVvWsh9A.js → RefreshDebugView-DLst_piS.js} +1 -1
  21. package/dist/assets/SageTabs-NwMcr4Pq.js +2 -0
  22. package/dist/assets/SddHub-CpRHXmjm.js +2 -0
  23. package/dist/assets/SessionsDashboard-C5dXb0iJ.js +1 -0
  24. package/dist/assets/SetupScreen-B81fcNgP.js +1 -0
  25. package/dist/assets/SkillDetailView-BTvgE_MD.js +3 -0
  26. package/dist/assets/{SpecsView-BJs_okSx.js → SpecsView-DhuaZcOl.js} +1 -1
  27. package/dist/assets/TechStackView-BXmfl2qY.js +1 -0
  28. package/dist/assets/{TerminalPanel-W2V0X7b9.js → TerminalPanel-DjruTcb6.js} +1 -1
  29. package/dist/assets/{Toaster-CbcX_Cou.js → Toaster-BmyghnqJ.js} +1 -1
  30. package/dist/assets/{activity-CbbZyUMG.js → activity-Bo6DncWg.js} +1 -1
  31. package/dist/assets/{activity-C4z6-WoZ.js → activity-C34aPcFU.js} +1 -1
  32. package/dist/assets/{activity-B4Ngvkan.js → activity-CBdzUJQ_.js} +1 -1
  33. package/dist/assets/{activity-B8uejnae.js → activity-CLYyxeC6.js} +1 -1
  34. package/dist/assets/{activity-qoJ3grs0.js → activity-Cv_EIWjY.js} +1 -1
  35. package/dist/assets/{activity-B5MvPWYV.js → activity-Wr0_Gb8A.js} +1 -1
  36. package/dist/assets/{activity-D57y5l1T.js → activity-kCY0dGRC.js} +1 -1
  37. package/dist/assets/{button-uGqXvobk.js → button-BMECp1cg.js} +1 -1
  38. package/dist/assets/{chat-Du7n7HZ7.js → chat-CRmMDzCb.js} +1 -1
  39. package/dist/assets/{chat-VkTBQmmx.js → chat-CwnuX7tG.js} +1 -1
  40. package/dist/assets/{chat-BJzPxfyr.js → chat-DLn1hY01.js} +1 -1
  41. package/dist/assets/{chat-IRKmQ6we.js → chat-DSEq1Bdz.js} +1 -1
  42. package/dist/assets/{chat-C7ybebfi.js → chat-DxLD17ER.js} +1 -1
  43. package/dist/assets/{chat-BRBVFl4h.js → chat-DzPxYALH.js} +1 -1
  44. package/dist/assets/{chat-Bkom8vQo.js → chat-OunddzYy.js} +1 -1
  45. package/dist/assets/chat-store-B2CjP2Zl.js +17 -0
  46. package/dist/assets/{codemap-activity-store-DP3mCZu1.js → codemap-activity-store-Cz0_AHqt.js} +1 -1
  47. package/dist/assets/codemap-index-store-B-XLZpJu.js +1 -0
  48. package/dist/assets/common-BfVFjVhf.js +1 -0
  49. package/dist/assets/common-C5hY-d_0.js +1 -0
  50. package/dist/assets/{dialog-CT1PTjzK.js → dialog-BJef9ZZo.js} +1 -1
  51. package/dist/assets/{empty-state-CdyXy96A.js → empty-state-BGzRrNXI.js} +1 -1
  52. package/dist/assets/{i18n-1BkaqMgr.js → i18n-2wGPPdl_.js} +2 -2
  53. package/dist/assets/index-DeA8UyiB.css +1 -0
  54. package/dist/assets/index-x6-rLl5H.js +132 -0
  55. package/dist/assets/{input-B-VCX2sG.js → input-Bd10nfMj.js} +1 -1
  56. package/dist/assets/{mailbox-store-DVoNbOZr.js → mailbox-store-D3omLzBk.js} +1 -1
  57. package/dist/assets/markdown-sSmz-Ua_.js +44 -0
  58. package/dist/assets/progress-ring-BEULkQ1r.js +1 -0
  59. package/dist/assets/{roster-ws-DXm0krqH.js → roster-ws-BmV_3U6w.js} +1 -1
  60. package/dist/assets/session-store-ZMNU48xK.js +1 -0
  61. package/dist/assets/settings-BF0lRxlj.js +1 -0
  62. package/dist/assets/settings-CP6cwqHD.js +1 -0
  63. package/dist/assets/settings-D0rWEhMg.js +1 -0
  64. package/dist/assets/settings-DFCaP02p.js +1 -0
  65. package/dist/assets/settings-DHix1ZPL.js +1 -0
  66. package/dist/assets/{settings-DEmKlLmn.js → settings-eEzjNzsC.js} +1 -1
  67. package/dist/assets/settings-kp_aIgcX.js +1 -0
  68. package/dist/assets/{shared-jvJxtKc5.js → shared-CrX8iE-U.js} +1 -1
  69. package/dist/assets/stores-DyQOSkkD.js +7 -0
  70. package/dist/assets/ui-store-di6oY7cy.js +1 -0
  71. package/dist/assets/useWebSocket-BVFPigcY.js +28 -0
  72. package/dist/assets/{utils-CN2sfDVP.js → utils-CwJvjOcH.js} +1 -1
  73. package/dist/assets/{vendor-2VBBgNb5.js → vendor-BTTkQ9Tn.js} +28 -28
  74. package/dist/assets/{view-navigation-Cgy5xh9q.js → view-navigation-BMRzqGbq.js} +1 -1
  75. package/dist/assets/ws-client-B0-KwuTK.js +1 -0
  76. package/dist/components/ChatInput/refine-panel-host.d.ts +9 -1
  77. package/dist/components/DeadCodeScanPanel/DeadCodeScanPanel.d.ts +1 -3
  78. package/dist/components/MemoryManager/MemoryInjectorPanel.d.ts +19 -0
  79. package/dist/components/PanelSuspense.d.ts +8 -0
  80. package/dist/components/SettingsPanel/DisplaySection.d.ts +20 -0
  81. package/dist/components/SettingsPanel/PluginToggleList.d.ts +11 -1
  82. package/dist/components/ViewRouter.d.ts +12 -0
  83. package/dist/components/WorkbenchTopbar.d.ts +53 -0
  84. package/dist/components/codemap-model.d.ts +2 -0
  85. package/dist/hooks/useViewport.d.ts +38 -0
  86. package/dist/hooks/useWebSocket.d.ts +1 -0
  87. package/dist/hooks/ws-handlers/misc-handlers.d.ts +1 -0
  88. package/dist/index.html +25 -26
  89. package/dist/index.js +58857 -57378
  90. package/dist/lib/sage-block.d.ts +18 -23
  91. package/dist/lib/view-navigation.d.ts +1 -1
  92. package/dist/lib/ws-client.d.ts +16 -8
  93. package/dist/providers.json +10 -0
  94. package/dist/stores/chat-store.d.ts +36 -3
  95. package/dist/stores/config-store.d.ts +0 -2
  96. package/dist/stores/local-prefs.d.ts +22 -2
  97. package/dist/stores/session-store.d.ts +3 -0
  98. package/dist/stores/types.d.ts +2 -1
  99. package/dist/stores/ui-store.d.ts +8 -1
  100. package/dist/types/client-message.d.ts +1 -0
  101. package/dist/types/connections.d.ts +7 -1
  102. package/dist/types/server-message.d.ts +11 -0
  103. package/dist/types/system.d.ts +4 -0
  104. package/package.json +11 -9
  105. package/dist/App.d.ts.map +0 -1
  106. package/dist/assets/AgentRosterView-Cje2NBtU.js +0 -11
  107. package/dist/assets/AudienceMemoryPanel-DB-8ISNP.js +0 -3
  108. package/dist/assets/ChronicleDashboard-B4Khm6hu.js +0 -1
  109. package/dist/assets/CodeEditor-CrKbA5s8.js +0 -1
  110. package/dist/assets/CodeMap-Dz8yNlUe.js +0 -1
  111. package/dist/assets/DeadCodeScanPanel-C5ehBTQF.js +0 -2
  112. package/dist/assets/GoalView-gtQRK78W.js +0 -1
  113. package/dist/assets/KanbanView-BXKe19EI.js +0 -3
  114. package/dist/assets/LazyMarkdown-BGwFjYKr.js +0 -3
  115. package/dist/assets/MailboxDetailView-D4fXipos.js +0 -1
  116. package/dist/assets/MemoryManager-D_rquas9.js +0 -1
  117. package/dist/assets/OfficeMapPanel-CJFrTNmg.js +0 -4
  118. package/dist/assets/QueuePanel-C5oihwYM.js +0 -1
  119. package/dist/assets/SageTabs-C9vAgvCD.js +0 -2
  120. package/dist/assets/SddHub-D_nsWjuM.js +0 -2
  121. package/dist/assets/SessionsDashboard-DdwU3Ma5.js +0 -1
  122. package/dist/assets/SetupScreen-CQCfLdPI.js +0 -1
  123. package/dist/assets/SkillDetailView-mVxi-9jo.js +0 -3
  124. package/dist/assets/TechStackView-BZ4M7TYc.js +0 -1
  125. package/dist/assets/chat-store-CM1dMeuY.js +0 -17
  126. package/dist/assets/codemap-index-store-DyAe3ZYJ.js +0 -1
  127. package/dist/assets/common-D8_r1x8x.js +0 -1
  128. package/dist/assets/common-suUxW9sA.js +0 -1
  129. package/dist/assets/index-BPfIz78e.js +0 -131
  130. package/dist/assets/index-BlceaIyu.css +0 -1
  131. package/dist/assets/markdown-L6DLSM7f.js +0 -44
  132. package/dist/assets/progress-ring-CFOvGxw7.js +0 -1
  133. package/dist/assets/session-store-BsNYnfOc.js +0 -1
  134. package/dist/assets/settings-C5F2tQ7C.js +0 -1
  135. package/dist/assets/settings-Cdk8i_p6.js +0 -1
  136. package/dist/assets/settings-D6wFOw5n.js +0 -1
  137. package/dist/assets/settings-DCEOkxYE.js +0 -1
  138. package/dist/assets/settings-DsflqNn0.js +0 -1
  139. package/dist/assets/settings-skShEZ2B.js +0 -1
  140. package/dist/assets/stores-mpa0202y.js +0 -6
  141. package/dist/assets/ui-store-CS-njcmT.js +0 -1
  142. package/dist/assets/useWebSocket-Dh3aAFDE.js +0 -28
  143. package/dist/assets/ws-client-WVGn8ORh.js +0 -1
  144. package/dist/components/AgentOfficeDetails.d.ts.map +0 -1
  145. package/dist/components/AgentOfficeView/model.d.ts.map +0 -1
  146. package/dist/components/AgentOfficeView.d.ts.map +0 -1
  147. package/dist/components/AgentRosterCatalogTab.d.ts.map +0 -1
  148. package/dist/components/AgentRosterChrome.d.ts.map +0 -1
  149. package/dist/components/AgentRosterLiveTab.d.ts.map +0 -1
  150. package/dist/components/AgentRosterSelfLearningTab.d.ts.map +0 -1
  151. package/dist/components/AgentRosterView.d.ts.map +0 -1
  152. package/dist/components/AgentRuntimePolicyEditor.d.ts.map +0 -1
  153. package/dist/components/AgentTranscript.d.ts.map +0 -1
  154. package/dist/components/AgentsMonitor.d.ts.map +0 -1
  155. package/dist/components/AgentsPage/format.d.ts.map +0 -1
  156. package/dist/components/AgentsPage.d.ts.map +0 -1
  157. package/dist/components/AnalyticsDashboard.d.ts.map +0 -1
  158. package/dist/components/AudienceMemoryPanel.d.ts.map +0 -1
  159. package/dist/components/AutonomyPicker.d.ts.map +0 -1
  160. package/dist/components/AvailabilityCalendarEditor.d.ts.map +0 -1
  161. package/dist/components/BoardView.d.ts.map +0 -1
  162. package/dist/components/ChangesView.d.ts.map +0 -1
  163. package/dist/components/ChatInput/code-detect.d.ts.map +0 -1
  164. package/dist/components/ChatInput/draft-token-counter.d.ts.map +0 -1
  165. package/dist/components/ChatInput/file-mention-picker.d.ts.map +0 -1
  166. package/dist/components/ChatInput/image-attach-control.d.ts.map +0 -1
  167. package/dist/components/ChatInput/image-attachments.d.ts.map +0 -1
  168. package/dist/components/ChatInput/queued-messages.d.ts.map +0 -1
  169. package/dist/components/ChatInput/refine-panel-host.d.ts.map +0 -1
  170. package/dist/components/ChatInput/slash-commands.d.ts.map +0 -1
  171. package/dist/components/ChatInput/slash-popup.d.ts.map +0 -1
  172. package/dist/components/ChatInput/slash-routing.d.ts.map +0 -1
  173. package/dist/components/ChatInput/stop-controls.d.ts.map +0 -1
  174. package/dist/components/ChatInput/use-paste-drop.d.ts.map +0 -1
  175. package/dist/components/ChatInput.d.ts.map +0 -1
  176. package/dist/components/ChatView/ThinkingBubble.d.ts.map +0 -1
  177. package/dist/components/ChatView/index.d.ts.map +0 -1
  178. package/dist/components/ChatView/utils.d.ts.map +0 -1
  179. package/dist/components/ChatView.d.ts.map +0 -1
  180. package/dist/components/CheckpointTimeline.d.ts.map +0 -1
  181. package/dist/components/ChipMultiSelect.d.ts.map +0 -1
  182. package/dist/components/ChronicleDashboard.d.ts.map +0 -1
  183. package/dist/components/ChroniclePipelineStrip.d.ts.map +0 -1
  184. package/dist/components/CodeEditor.d.ts.map +0 -1
  185. package/dist/components/CodeMap.d.ts.map +0 -1
  186. package/dist/components/CodeMapActivityDrawer.d.ts.map +0 -1
  187. package/dist/components/CodeMapActivityHelpers.d.ts.map +0 -1
  188. package/dist/components/CodeMapActivityStreamPanel.d.ts.map +0 -1
  189. package/dist/components/CodeMapCanvasSurface.d.ts.map +0 -1
  190. package/dist/components/CodeMapCanvasToolbar.d.ts.map +0 -1
  191. package/dist/components/CodeMapConfig.d.ts.map +0 -1
  192. package/dist/components/CodeMapDirectoryTree.d.ts.map +0 -1
  193. package/dist/components/CodeMapFlowState.d.ts.map +0 -1
  194. package/dist/components/CodeMapHeader.d.ts.map +0 -1
  195. package/dist/components/CodeMapLiveOverlay.d.ts.map +0 -1
  196. package/dist/components/CodeMapRelationInspector.d.ts.map +0 -1
  197. package/dist/components/CodeMapRelations.d.ts.map +0 -1
  198. package/dist/components/CodeMapSearchResults.d.ts.map +0 -1
  199. package/dist/components/CodeMapSelectedNodeSummary.d.ts.map +0 -1
  200. package/dist/components/CodeMapTreeSidebar.d.ts.map +0 -1
  201. package/dist/components/CodeMapVisuals.d.ts.map +0 -1
  202. package/dist/components/CollabPanel.d.ts.map +0 -1
  203. package/dist/components/CommandPalette/export-utils.d.ts.map +0 -1
  204. package/dist/components/CommandPalette/index.d.ts.map +0 -1
  205. package/dist/components/CommandPalette.d.ts.map +0 -1
  206. package/dist/components/ConfirmDialog.d.ts.map +0 -1
  207. package/dist/components/ConfirmModal.d.ts.map +0 -1
  208. package/dist/components/ConnectionBanner.d.ts.map +0 -1
  209. package/dist/components/ContextBar.d.ts.map +0 -1
  210. package/dist/components/ContextBreakdownModal.d.ts.map +0 -1
  211. package/dist/components/ContextDashboard.d.ts.map +0 -1
  212. package/dist/components/ContextMemoryMonitor.d.ts.map +0 -1
  213. package/dist/components/ContextModePicker.d.ts.map +0 -1
  214. package/dist/components/CostChip.d.ts.map +0 -1
  215. package/dist/components/CronJobsPanel.d.ts.map +0 -1
  216. package/dist/components/CronTrigger.d.ts.map +0 -1
  217. package/dist/components/CustomRosterPanel.d.ts.map +0 -1
  218. package/dist/components/DeadCodeScanPanel/DeadCodeScanPanel.d.ts.map +0 -1
  219. package/dist/components/DebugDashboard.d.ts.map +0 -1
  220. package/dist/components/DependencyGraph.d.ts.map +0 -1
  221. package/dist/components/DesignGalleryView.d.ts.map +0 -1
  222. package/dist/components/DiffView.d.ts.map +0 -1
  223. package/dist/components/ErrorBoundary.d.ts.map +0 -1
  224. package/dist/components/FallbackEditor.d.ts.map +0 -1
  225. package/dist/components/FileActivityDrawer.d.ts.map +0 -1
  226. package/dist/components/FileExplorer.d.ts.map +0 -1
  227. package/dist/components/FilePicker.d.ts.map +0 -1
  228. package/dist/components/FileReferenceChip.d.ts.map +0 -1
  229. package/dist/components/FleetMonitor.d.ts.map +0 -1
  230. package/dist/components/FleetPanel.d.ts.map +0 -1
  231. package/dist/components/GoalPanel.d.ts.map +0 -1
  232. package/dist/components/GoalView.d.ts.map +0 -1
  233. package/dist/components/InspectorPanel.d.ts.map +0 -1
  234. package/dist/components/KanbanAgentRunPanel.d.ts.map +0 -1
  235. package/dist/components/KanbanBoardChrome.d.ts.map +0 -1
  236. package/dist/components/KanbanBoardSidebar.d.ts.map +0 -1
  237. package/dist/components/KanbanBoardState.d.ts.map +0 -1
  238. package/dist/components/KanbanBoundaryEditor.d.ts.map +0 -1
  239. package/dist/components/KanbanCleanerAlert.d.ts.map +0 -1
  240. package/dist/components/KanbanColumnView.d.ts.map +0 -1
  241. package/dist/components/KanbanDecompositionPanel.d.ts.map +0 -1
  242. package/dist/components/KanbanQueueHealthBar.d.ts.map +0 -1
  243. package/dist/components/KanbanRunControls.d.ts.map +0 -1
  244. package/dist/components/KanbanTaskActivityRecorder.d.ts.map +0 -1
  245. package/dist/components/KanbanTaskCompletionChecks.d.ts.map +0 -1
  246. package/dist/components/KanbanTaskFields.d.ts.map +0 -1
  247. package/dist/components/KanbanTaskInspector.d.ts.map +0 -1
  248. package/dist/components/KanbanTaskOptions.d.ts.map +0 -1
  249. package/dist/components/KanbanTaskTree.d.ts.map +0 -1
  250. package/dist/components/KanbanVerificationDashboard.d.ts.map +0 -1
  251. package/dist/components/KanbanView.d.ts.map +0 -1
  252. package/dist/components/KanbanViewModeTabs.d.ts.map +0 -1
  253. package/dist/components/MailboxDetailView.d.ts.map +0 -1
  254. package/dist/components/MailboxPanel.d.ts.map +0 -1
  255. package/dist/components/MemoryManager/DeleteMemoryDialog.d.ts.map +0 -1
  256. package/dist/components/MemoryManager/MemoryDetail.d.ts.map +0 -1
  257. package/dist/components/MemoryManager/MemoryDrawer.d.ts.map +0 -1
  258. package/dist/components/MemoryManager/MemoryEditor.d.ts.map +0 -1
  259. package/dist/components/MemoryManager/MemoryFilters.d.ts.map +0 -1
  260. package/dist/components/MemoryManager/MemoryGraph.d.ts.map +0 -1
  261. package/dist/components/MemoryManager/MemoryInjectorTrace.d.ts +0 -3
  262. package/dist/components/MemoryManager/MemoryInjectorTrace.d.ts.map +0 -1
  263. package/dist/components/MemoryManager/MemoryLifecycleTrace.d.ts.map +0 -1
  264. package/dist/components/MemoryManager/MemoryList.d.ts.map +0 -1
  265. package/dist/components/MemoryManager/MemoryManagerEmpty.d.ts.map +0 -1
  266. package/dist/components/MemoryManager/SageTabs.d.ts.map +0 -1
  267. package/dist/components/MemoryManager/index.d.ts.map +0 -1
  268. package/dist/components/MemoryManager/selectors.d.ts.map +0 -1
  269. package/dist/components/MemoryManager/shared.d.ts.map +0 -1
  270. package/dist/components/MessageBubble/AttachmentGallery.d.ts.map +0 -1
  271. package/dist/components/MessageBubble/CopyButton.d.ts.map +0 -1
  272. package/dist/components/MessageBubble/ErrorBody.d.ts.map +0 -1
  273. package/dist/components/MessageBubble/LazyMarkdown.d.ts.map +0 -1
  274. package/dist/components/MessageBubble/StreamingMarkdown.d.ts.map +0 -1
  275. package/dist/components/MessageBubble/ToolInputView.d.ts.map +0 -1
  276. package/dist/components/MessageBubble/ToolLedgerCard.d.ts.map +0 -1
  277. package/dist/components/MessageBubble/index.d.ts.map +0 -1
  278. package/dist/components/MessageBubble/utils.d.ts.map +0 -1
  279. package/dist/components/MessageBubble.d.ts.map +0 -1
  280. package/dist/components/ModePicker.d.ts.map +0 -1
  281. package/dist/components/ModelPickDialog.d.ts.map +0 -1
  282. package/dist/components/ModelPicker.d.ts.map +0 -1
  283. package/dist/components/ModelSelectDialog.d.ts.map +0 -1
  284. package/dist/components/MonacoDiffView.d.ts.map +0 -1
  285. package/dist/components/NextStepsBar.d.ts.map +0 -1
  286. package/dist/components/OfficeMapCanvas/CanvasPanels.d.ts.map +0 -1
  287. package/dist/components/OfficeMapCanvas/Hud.d.ts.map +0 -1
  288. package/dist/components/OfficeMapCanvas/Overlays.d.ts.map +0 -1
  289. package/dist/components/OfficeMapCanvas/SelectedNodeDetailPanel.d.ts.map +0 -1
  290. package/dist/components/OfficeMapCanvas/edges.d.ts.map +0 -1
  291. package/dist/components/OfficeMapCanvas/nodes.d.ts.map +0 -1
  292. package/dist/components/OfficeMapCanvas/resolve.d.ts.map +0 -1
  293. package/dist/components/OfficeMapCanvas/use-recently-finished.d.ts.map +0 -1
  294. package/dist/components/OfficeMapCanvas/utils.d.ts.map +0 -1
  295. package/dist/components/OfficeMapCanvas.d.ts.map +0 -1
  296. package/dist/components/OfficeMapPanel.d.ts.map +0 -1
  297. package/dist/components/OfficeMapSettingsPanel.d.ts.map +0 -1
  298. package/dist/components/PhasePanel.d.ts.map +0 -1
  299. package/dist/components/PlanPanel.d.ts.map +0 -1
  300. package/dist/components/ProcessMonitor.d.ts.map +0 -1
  301. package/dist/components/PromptLibraryModal.d.ts.map +0 -1
  302. package/dist/components/ProviderWaitingRoom.d.ts.map +0 -1
  303. package/dist/components/QueuePanel.d.ts.map +0 -1
  304. package/dist/components/QuickModelSwitcher.d.ts.map +0 -1
  305. package/dist/components/QuickModelSwitcher.filter.d.ts.map +0 -1
  306. package/dist/components/RefinePanel.d.ts.map +0 -1
  307. package/dist/components/RefreshDebugView.d.ts.map +0 -1
  308. package/dist/components/SageMemoryCard.d.ts +0 -19
  309. package/dist/components/SageMemoryCard.d.ts.map +0 -1
  310. package/dist/components/SddActivityFeed.d.ts.map +0 -1
  311. package/dist/components/SddBoardView.d.ts.map +0 -1
  312. package/dist/components/SddDestroyDialog.d.ts.map +0 -1
  313. package/dist/components/SddFlowGraph.d.ts.map +0 -1
  314. package/dist/components/SddHub.d.ts.map +0 -1
  315. package/dist/components/SddKanbanView.d.ts.map +0 -1
  316. package/dist/components/SddTaskDrawer.d.ts.map +0 -1
  317. package/dist/components/SddWizard.d.ts.map +0 -1
  318. package/dist/components/SearchOverlay.d.ts.map +0 -1
  319. package/dist/components/SendButton.d.ts.map +0 -1
  320. package/dist/components/SessionWatchPanel.d.ts.map +0 -1
  321. package/dist/components/SessionsDashboard.d.ts.map +0 -1
  322. package/dist/components/SettingsPanel/BasicSettingsTabs.d.ts.map +0 -1
  323. package/dist/components/SettingsPanel/BrainSection.d.ts.map +0 -1
  324. package/dist/components/SettingsPanel/ChimeraSettingsPanel.d.ts.map +0 -1
  325. package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts.map +0 -1
  326. package/dist/components/SettingsPanel/ConnectionsHealthSection.d.ts.map +0 -1
  327. package/dist/components/SettingsPanel/FallbacksSection.d.ts.map +0 -1
  328. package/dist/components/SettingsPanel/FleetSection.d.ts.map +0 -1
  329. package/dist/components/SettingsPanel/IntegrationsSection.d.ts.map +0 -1
  330. package/dist/components/SettingsPanel/MCPSection.d.ts.map +0 -1
  331. package/dist/components/SettingsPanel/ModelSection.d.ts.map +0 -1
  332. package/dist/components/SettingsPanel/OAuthLoginSection.d.ts.map +0 -1
  333. package/dist/components/SettingsPanel/PluginToggleList.d.ts.map +0 -1
  334. package/dist/components/SettingsPanel/PreferenceControls.d.ts.map +0 -1
  335. package/dist/components/SettingsPanel/PreferenceToggle.d.ts.map +0 -1
  336. package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts.map +0 -1
  337. package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts.map +0 -1
  338. package/dist/components/SettingsPanel/ProviderSection.d.ts.map +0 -1
  339. package/dist/components/SettingsPanel/RoutingSection.d.ts.map +0 -1
  340. package/dist/components/SettingsPanel/SecuritySection.d.ts.map +0 -1
  341. package/dist/components/SettingsPanel/ShadowSection.d.ts.map +0 -1
  342. package/dist/components/SettingsPanel/ToolsSection.d.ts.map +0 -1
  343. package/dist/components/SettingsPanel/brain-section-options.d.ts.map +0 -1
  344. package/dist/components/SettingsPanel/index.d.ts.map +0 -1
  345. package/dist/components/SettingsPanel/local-presets.d.ts.map +0 -1
  346. package/dist/components/SettingsPanel/official-servers.d.ts.map +0 -1
  347. package/dist/components/SettingsPanel/settings-panel-reducers.d.ts.map +0 -1
  348. package/dist/components/SettingsPanel/undo-send-decision.d.ts.map +0 -1
  349. package/dist/components/SettingsPanel.d.ts.map +0 -1
  350. package/dist/components/SetupScreen/CustomProviderSection.d.ts.map +0 -1
  351. package/dist/components/SetupScreen/ModelEditor.d.ts.map +0 -1
  352. package/dist/components/SetupScreen/ProviderKeyCard.d.ts.map +0 -1
  353. package/dist/components/SetupScreen/key-operation.d.ts.map +0 -1
  354. package/dist/components/SetupScreen/popular-providers.d.ts.map +0 -1
  355. package/dist/components/SetupScreen/relative-time.d.ts.map +0 -1
  356. package/dist/components/SetupScreen/types.d.ts.map +0 -1
  357. package/dist/components/SetupScreen.d.ts.map +0 -1
  358. package/dist/components/ShortcutsOverlay.d.ts.map +0 -1
  359. package/dist/components/SideEffectTimeline.d.ts.map +0 -1
  360. package/dist/components/SidePanel/AgentsPanel.d.ts.map +0 -1
  361. package/dist/components/SidePanel/ChangesPanel.d.ts.map +0 -1
  362. package/dist/components/SidePanel/DesignStudioPanel.d.ts.map +0 -1
  363. package/dist/components/SidePanel/SessionList.d.ts.map +0 -1
  364. package/dist/components/SidePanel/SessionPanel.d.ts.map +0 -1
  365. package/dist/components/SidePanel/SkillsList.d.ts.map +0 -1
  366. package/dist/components/SidePanel/WorktreesPanel.d.ts.map +0 -1
  367. package/dist/components/SidePanel/index.d.ts.map +0 -1
  368. package/dist/components/SkillDetailView.d.ts.map +0 -1
  369. package/dist/components/SpecsView.d.ts.map +0 -1
  370. package/dist/components/TaskActivityTimeline.d.ts.map +0 -1
  371. package/dist/components/TaskBoard.d.ts.map +0 -1
  372. package/dist/components/TaskCard.d.ts.map +0 -1
  373. package/dist/components/TaskExecutionAttempts.d.ts.map +0 -1
  374. package/dist/components/TaskIntelligencePanel.d.ts.map +0 -1
  375. package/dist/components/TaskRiskPanel.d.ts.map +0 -1
  376. package/dist/components/TaskVerificationSection.d.ts.map +0 -1
  377. package/dist/components/TasksPanel.d.ts.map +0 -1
  378. package/dist/components/TechStackView/DependencyDetail.d.ts.map +0 -1
  379. package/dist/components/TechStackView/DependencyTable.d.ts.map +0 -1
  380. package/dist/components/TechStackView/FindingsPanel.d.ts.map +0 -1
  381. package/dist/components/TechStackView/TechStackToolbar.d.ts.map +0 -1
  382. package/dist/components/TechStackView/index.d.ts.map +0 -1
  383. package/dist/components/TechStackView/shared.d.ts.map +0 -1
  384. package/dist/components/TerminalPanel.d.ts.map +0 -1
  385. package/dist/components/ThemeProvider.d.ts.map +0 -1
  386. package/dist/components/Toaster.d.ts.map +0 -1
  387. package/dist/components/TodosPanel.d.ts.map +0 -1
  388. package/dist/components/ToolGroup.d.ts.map +0 -1
  389. package/dist/components/ToolResult.d.ts.map +0 -1
  390. package/dist/components/UpdateBanner.d.ts.map +0 -1
  391. package/dist/components/VerificationReportPanel.d.ts.map +0 -1
  392. package/dist/components/WatchMessageBubble.d.ts.map +0 -1
  393. package/dist/components/WelcomeScreen.d.ts.map +0 -1
  394. package/dist/components/WorkDashboard.d.ts.map +0 -1
  395. package/dist/components/WorkspaceDock.d.ts.map +0 -1
  396. package/dist/components/WorktreeGraph.d.ts.map +0 -1
  397. package/dist/components/WorktreeLanes.d.ts.map +0 -1
  398. package/dist/components/WorktreeOrphans.d.ts.map +0 -1
  399. package/dist/components/activity-bar/index.d.ts.map +0 -1
  400. package/dist/components/activity-bar/nav.d.ts.map +0 -1
  401. package/dist/components/agent-roster-data.d.ts.map +0 -1
  402. package/dist/components/agents/AgentDetailSection.d.ts.map +0 -1
  403. package/dist/components/agents/AgentRosterCard.d.ts.map +0 -1
  404. package/dist/components/agents/FleetSummaryBar.d.ts.map +0 -1
  405. package/dist/components/codemap-model.d.ts.map +0 -1
  406. package/dist/components/context-editor/ContextWindowEditor.d.ts.map +0 -1
  407. package/dist/components/dashboard-primitives.d.ts.map +0 -1
  408. package/dist/components/index.d.ts.map +0 -1
  409. package/dist/components/monaco-theme.d.ts.map +0 -1
  410. package/dist/components/toaster-helpers.d.ts.map +0 -1
  411. package/dist/components/ui/PickerCardList.d.ts.map +0 -1
  412. package/dist/components/ui/api-key-display.d.ts.map +0 -1
  413. package/dist/components/ui/badge.d.ts.map +0 -1
  414. package/dist/components/ui/button.d.ts.map +0 -1
  415. package/dist/components/ui/concurrency-gauge.d.ts.map +0 -1
  416. package/dist/components/ui/dialog.d.ts.map +0 -1
  417. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  418. package/dist/components/ui/empty-state.d.ts.map +0 -1
  419. package/dist/components/ui/event-timeline.d.ts.map +0 -1
  420. package/dist/components/ui/fleet-agent-row.d.ts.map +0 -1
  421. package/dist/components/ui/index.d.ts.map +0 -1
  422. package/dist/components/ui/input.d.ts.map +0 -1
  423. package/dist/components/ui/pagination.d.ts.map +0 -1
  424. package/dist/components/ui/progress-ring.d.ts.map +0 -1
  425. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  426. package/dist/components/ui/sheet.d.ts.map +0 -1
  427. package/dist/components/ui/sparkline.d.ts.map +0 -1
  428. package/dist/components/ui/tabs.d.ts.map +0 -1
  429. package/dist/components/useAgentRosterData.d.ts.map +0 -1
  430. package/dist/components/useKanbanRegistrySessionIds.d.ts.map +0 -1
  431. package/dist/hooks/index.d.ts.map +0 -1
  432. package/dist/hooks/use-ws-handlers.d.ts.map +0 -1
  433. package/dist/hooks/useDesktopBridge.d.ts.map +0 -1
  434. package/dist/hooks/useF5Resilience.d.ts.map +0 -1
  435. package/dist/hooks/useFieldKeyboardNav.d.ts.map +0 -1
  436. package/dist/hooks/useFleetPolling.d.ts.map +0 -1
  437. package/dist/hooks/useGitInfo.d.ts.map +0 -1
  438. package/dist/hooks/useGlobalKeyboardShortcuts.d.ts.map +0 -1
  439. package/dist/hooks/useHorizontalScroll.d.ts.map +0 -1
  440. package/dist/hooks/useKanbanMeta.d.ts.map +0 -1
  441. package/dist/hooks/useMemoryForFile.d.ts.map +0 -1
  442. package/dist/hooks/usePagination.d.ts.map +0 -1
  443. package/dist/hooks/useProviderModels.d.ts.map +0 -1
  444. package/dist/hooks/useScrollPosition.d.ts.map +0 -1
  445. package/dist/hooks/useWebSocket.d.ts.map +0 -1
  446. package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +0 -1
  447. package/dist/hooks/ws-handlers/coordinator-handlers.d.ts.map +0 -1
  448. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts.map +0 -1
  449. package/dist/hooks/ws-handlers/fleet-handlers.d.ts.map +0 -1
  450. package/dist/hooks/ws-handlers/misc-handlers.d.ts.map +0 -1
  451. package/dist/hooks/ws-handlers/session-handlers.d.ts.map +0 -1
  452. package/dist/hooks/ws-handlers/techstack-handlers.d.ts.map +0 -1
  453. package/dist/hooks/ws-handlers.d.ts.map +0 -1
  454. package/dist/i18n/index.d.ts.map +0 -1
  455. package/dist/i18n/languages.d.ts.map +0 -1
  456. package/dist/index.css.map +0 -7
  457. package/dist/index.js.map +0 -7
  458. package/dist/lib/accent-colors.d.ts.map +0 -1
  459. package/dist/lib/agent-office.d.ts.map +0 -1
  460. package/dist/lib/agent-status.d.ts.map +0 -1
  461. package/dist/lib/chime.d.ts.map +0 -1
  462. package/dist/lib/color.d.ts.map +0 -1
  463. package/dist/lib/completion.d.ts.map +0 -1
  464. package/dist/lib/core-browser-shim.d.ts.map +0 -1
  465. package/dist/lib/default-prompt-pools.d.ts.map +0 -1
  466. package/dist/lib/desktop-host.d.ts.map +0 -1
  467. package/dist/lib/desktop-shell.d.ts.map +0 -1
  468. package/dist/lib/fallback-ref.d.ts.map +0 -1
  469. package/dist/lib/favicon.d.ts.map +0 -1
  470. package/dist/lib/file-icons.d.ts.map +0 -1
  471. package/dist/lib/goal.d.ts.map +0 -1
  472. package/dist/lib/index.d.ts.map +0 -1
  473. package/dist/lib/kanban-cleaner.d.ts.map +0 -1
  474. package/dist/lib/kanban-metadata.d.ts.map +0 -1
  475. package/dist/lib/kanban-verification.d.ts.map +0 -1
  476. package/dist/lib/model-calendar.d.ts.map +0 -1
  477. package/dist/lib/model-matrix-routes.d.ts.map +0 -1
  478. package/dist/lib/notify.d.ts.map +0 -1
  479. package/dist/lib/plugin-enablement.d.ts.map +0 -1
  480. package/dist/lib/roster-ws.d.ts.map +0 -1
  481. package/dist/lib/sage-block.d.ts.map +0 -1
  482. package/dist/lib/sdd-theme.d.ts.map +0 -1
  483. package/dist/lib/stream-coalescer.d.ts.map +0 -1
  484. package/dist/lib/terminal-dock.d.ts.map +0 -1
  485. package/dist/lib/tool-icon.d.ts.map +0 -1
  486. package/dist/lib/tool-summary.d.ts.map +0 -1
  487. package/dist/lib/utils.d.ts.map +0 -1
  488. package/dist/lib/view-navigation.d.ts.map +0 -1
  489. package/dist/lib/ws-client-actions.d.ts.map +0 -1
  490. package/dist/lib/ws-client-contracts.d.ts.map +0 -1
  491. package/dist/lib/ws-client-helpers.d.ts.map +0 -1
  492. package/dist/lib/ws-client-utils.d.ts.map +0 -1
  493. package/dist/lib/ws-client.d.ts.map +0 -1
  494. package/dist/main.d.ts.map +0 -1
  495. package/dist/protocol-compatibility.d.ts.map +0 -1
  496. package/dist/stores/auto-submit-streak.d.ts.map +0 -1
  497. package/dist/stores/chat-store.d.ts.map +0 -1
  498. package/dist/stores/codemap-activity-store.d.ts.map +0 -1
  499. package/dist/stores/codemap-index-store.d.ts.map +0 -1
  500. package/dist/stores/config-store.d.ts.map +0 -1
  501. package/dist/stores/context-editor-store.d.ts.map +0 -1
  502. package/dist/stores/coordinator-monitor-store.d.ts.map +0 -1
  503. package/dist/stores/cron-store.d.ts.map +0 -1
  504. package/dist/stores/file-reference-store.d.ts.map +0 -1
  505. package/dist/stores/file-store.d.ts.map +0 -1
  506. package/dist/stores/fleet-store.d.ts.map +0 -1
  507. package/dist/stores/git-changes-store.d.ts.map +0 -1
  508. package/dist/stores/git-info-store.d.ts.map +0 -1
  509. package/dist/stores/goal-assess-store.d.ts.map +0 -1
  510. package/dist/stores/goal-run-store.d.ts.map +0 -1
  511. package/dist/stores/goal-state-store.d.ts.map +0 -1
  512. package/dist/stores/goal-store.d.ts.map +0 -1
  513. package/dist/stores/history-store.d.ts.map +0 -1
  514. package/dist/stores/index.d.ts.map +0 -1
  515. package/dist/stores/kanban-store.d.ts.map +0 -1
  516. package/dist/stores/local-prefs.d.ts.map +0 -1
  517. package/dist/stores/mailbox-store.d.ts.map +0 -1
  518. package/dist/stores/memory-injector-store.d.ts.map +0 -1
  519. package/dist/stores/memory-lifecycle-store.d.ts.map +0 -1
  520. package/dist/stores/monitor-store.d.ts.map +0 -1
  521. package/dist/stores/office-map-store.d.ts.map +0 -1
  522. package/dist/stores/provider-status-store.d.ts.map +0 -1
  523. package/dist/stores/sdd-board-store.d.ts.map +0 -1
  524. package/dist/stores/sdd-wizard-store.d.ts.map +0 -1
  525. package/dist/stores/session-store.d.ts.map +0 -1
  526. package/dist/stores/side-effect-store.d.ts.map +0 -1
  527. package/dist/stores/specs-store.d.ts.map +0 -1
  528. package/dist/stores/techstack-store.d.ts.map +0 -1
  529. package/dist/stores/types.d.ts.map +0 -1
  530. package/dist/stores/ui-store.d.ts.map +0 -1
  531. package/dist/stores/viz-store.d.ts.map +0 -1
  532. package/dist/stores/worktree-store.d.ts.map +0 -1
  533. package/dist/types/brain.d.ts.map +0 -1
  534. package/dist/types/chronicle.d.ts.map +0 -1
  535. package/dist/types/client-message.d.ts.map +0 -1
  536. package/dist/types/collab.d.ts.map +0 -1
  537. package/dist/types/connections.d.ts.map +0 -1
  538. package/dist/types/goal-kanban-worktree.d.ts.map +0 -1
  539. package/dist/types/protocol-core.d.ts.map +0 -1
  540. package/dist/types/runtime.d.ts.map +0 -1
  541. package/dist/types/sage.d.ts.map +0 -1
  542. package/dist/types/server-message.d.ts.map +0 -1
  543. package/dist/types/skills-design.d.ts.map +0 -1
  544. package/dist/types/system.d.ts.map +0 -1
  545. package/dist/types.d.ts.map +0 -1
  546. package/dist/types.js.map +0 -7
@@ -1,3 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Ct as t,Dt as n,Ht as r,Sa as i,Zt as a,at as o,cn as s,et as c,ni as l,pn as u,vt as d,wr as f}from"./vendor-2VBBgNb5.js";import{t as p}from"./useWebSocket-Dh3aAFDE.js";import{t as m}from"./utils-CN2sfDVP.js";import{a as h,i as g,n as _,o as v,r as y,t as b}from"./dialog-CT1PTjzK.js";import{t as x}from"./button-uGqXvobk.js";import{t as S}from"./input-B-VCX2sG.js";import{f as C,p as w}from"./index-BPfIz78e.js";import{g as T,i as E,r as D,y as O}from"./shared-jvJxtKc5.js";var k=e(i(),1),A=c();function j(e){if(!Array.isArray(e))return;let t=[...new Set(e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean))];return t.length>0?t:void 0}function M(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n={roles:j(t.roles),taskTypes:j(t.taskTypes),modes:j(t.modes)};return n.roles||n.taskTypes||n.modes?n:void 0}function N(e){let t=e.trim().replace(/^```(?:json)?\s*/i,``).replace(/\s*```$/,``),n=JSON.parse(t);if(!Array.isArray(n))throw Error(`Input must be a JSON array.`);let r=[],i=0;for(let e of n){if(!e||typeof e!=`object`||Array.isArray(e)){i++;continue}let t=e,n=typeof t.text==`string`?t.text.trim():``,a=M(t.audience);if(!n||!a){i++;continue}let o=typeof t.kind==`string`&&E.some(e=>e===t.kind)?t.kind:void 0,s=j(t.tags);r.push({text:n,audience:a,kind:o,tags:s,importance:typeof t.importance==`number`?t.importance:void 0,confidence:typeof t.confidence==`number`?t.confidence:void 0})}return{entries:r,skipped:i}}function P(e,t){if(!t)return!0;let n=e.audience;return[e.text,e.kind,e.status,...n?.roles??[],...n?.taskTypes??[],...n?.modes??[]].join(` `).toLocaleLowerCase().includes(t.toLocaleLowerCase())}function F(e,t){return[...new Set(e.flatMap(e=>e.audience?.[t]??[]).filter(e=>e.length>0))].sort((e,t)=>e.localeCompare(t))}function I(){let e=p(),[r,i]=(0,k.useState)([]),[c,E]=(0,k.useState)(!0),[D,O]=(0,k.useState)(null),[j,M]=(0,k.useState)(``),[I,z]=(0,k.useState)(!1),[B,V]=(0,k.useState)(!1),[H,U]=(0,k.useState)(null),[W,G]=(0,k.useState)(!1),[K,q]=(0,k.useState)(!1),J=(0,k.useRef)(null),Y=(0,k.useCallback)(()=>{E(!0),O(null),e.listSageMemories({echoToChat:!1})},[e.listSageMemories]);(0,k.useEffect)(()=>{let t=e.client,n=t.on(`memory.sage.list`,e=>{let t=e.payload;t.error?O({tone:`error`,text:t.error}):i(t.memories??[]),E(!1)}),r=t.on(`memory.sage.remember`,e=>{let t=e.payload;if(G(!1),t.error){O({tone:`error`,text:t.error});return}t.memory&&(i(e=>[t.memory,...e.filter(e=>e.id!==t.memory.id)]),z(!1))}),a=t.on(`memory.sage.update`,e=>{let t=e.payload;t.error?O({tone:`error`,text:t.error}):t.memory&&(i(e=>e.map(e=>e.id===t.memory.id?t.memory:e)),t.memory.audience||O({tone:`success`,text:`Audience scope removed. The memory is now general.`}))}),o=t.on(`memory.sage.delete`,e=>{let t=e.payload,n=J.current;t.success&&n?(i(e=>e.filter(e=>e.id!==n)),O({tone:`success`,text:`Audience memory deleted.`}),U(null),q(!1),J.current=null):t.success?Y():(O({tone:`error`,text:t.message??`Could not delete the memory.`}),q(!1),J.current=null)});return Y(),()=>{n(),r(),a(),o()}},[Y,e.client]);let X=(0,k.useMemo)(()=>r.filter(e=>{let t=e.audience;return!!(t&&(t.roles?.length||t.taskTypes?.length||t.modes?.length))}),[r]),Z=j.trim(),Q=(0,k.useMemo)(()=>X.filter(e=>P(e,Z)),[Z,X]),$=w(Q,16,Z),ie=(0,k.useMemo)(()=>F(X,`roles`),[X]),ae=(0,k.useMemo)(()=>F(X,`taskTypes`),[X]),oe=(0,k.useMemo)(()=>F(X,`modes`),[X]),se=t=>{O(null),e.updateSage(t,{audience:void 0},{echoToChat:!1})},ce=()=>{H&&(J.current=H,q(!0),O(null),e.deleteSage(H,`Removed from the audience memory panel.`))},le=async()=>{let e=X.map(e=>({id:e.id,text:e.text,kind:e.kind,status:e.status,audience:e.audience,tags:e.tags,importance:e.importance,confidence:e.confidence}));try{if(!navigator.clipboard)throw Error(`Clipboard access is unavailable.`);await navigator.clipboard.writeText(JSON.stringify(e,null,2)),O({tone:`success`,text:`${e.length} audience memor${e.length===1?`y`:`ies`} copied as JSON.`})}catch(e){O({tone:`error`,text:e instanceof Error?e.message:`Failed to copy JSON to the clipboard.`})}};return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`section`,{className:`flex h-full min-h-0 flex-col bg-card/20`,"aria-labelledby":`audience-memory-title`,children:[(0,A.jsxs)(`div`,{className:`shrink-0 border-b border-border/60 p-3`,children:[(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,A.jsx)(`div`,{className:`min-w-0`,children:(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md border border-primary/20 bg-primary/10 text-primary`,children:(0,A.jsx)(n,{className:`size-3.5`})}),(0,A.jsxs)(`div`,{className:`min-w-0`,children:[(0,A.jsx)(`h2`,{id:`audience-memory-title`,className:`truncate text-sm font-semibold`,children:`Audience Memory`}),(0,A.jsx)(`p`,{className:`truncate text-[10px] text-muted-foreground`,children:`Guidance routed to matching agents`})]})]})}),(0,A.jsxs)(x,{variant:`default`,size:`sm`,className:`h-7 shrink-0 gap-1 px-2 text-xs`,onClick:()=>z(!0),children:[(0,A.jsx)(u,{className:`size-3`}),`Add`]})]}),(0,A.jsxs)(`div`,{className:`mt-3 grid grid-cols-4 gap-px overflow-hidden rounded-md border border-border/60 bg-border/60`,children:[(0,A.jsx)(L,{value:X.length,label:`Memories`}),(0,A.jsx)(L,{value:ie.length,label:`Roles`}),(0,A.jsx)(L,{value:ae.length,label:`Tasks`}),(0,A.jsx)(L,{value:oe.length,label:`Modes`})]}),(0,A.jsxs)(`div`,{className:`mt-3 flex items-center gap-1.5`,children:[(0,A.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,A.jsx)(a,{className:`pointer-events-none absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,A.jsx)(S,{value:j,onChange:e=>M(e.target.value),placeholder:`Search text, role, task or mode…`,"aria-label":`Search audience memories`,className:`h-8 pl-8 pr-8 text-xs`}),j&&(0,A.jsx)(`button`,{type:`button`,className:`absolute right-2 top-1/2 -translate-y-1/2 rounded-sm p-0.5 text-muted-foreground hover:text-foreground`,onClick:()=>M(``),"aria-label":`Clear audience memory search`,children:(0,A.jsx)(o,{className:`size-3`})})]}),(0,A.jsx)(x,{variant:`ghost`,size:`icon`,className:`size-8 shrink-0`,onClick:Y,"aria-label":`Refresh audience memories`,title:`Refresh`,children:(0,A.jsx)(s,{className:m(`size-3.5`,c&&`animate-spin`)})}),(0,A.jsx)(x,{variant:`ghost`,size:`icon`,className:`size-8 shrink-0`,onClick:()=>V(!0),"aria-label":`Import audience memories`,title:`Import JSON`,children:(0,A.jsx)(d,{className:`size-3.5`})}),(0,A.jsx)(x,{variant:`ghost`,size:`icon`,className:`size-8 shrink-0`,onClick:()=>void le(),"aria-label":`Copy audience memories as JSON`,title:`Copy JSON`,disabled:X.length===0,children:(0,A.jsx)(l,{className:`size-3.5`})})]})]}),D&&(0,A.jsxs)(`div`,{role:D.tone===`error`?`alert`:`status`,className:m(`mx-3 mt-3 flex shrink-0 items-start justify-between gap-2 rounded-md border px-2.5 py-2 text-[11px]`,D.tone===`error`?`border-destructive/30 bg-destructive/5 text-destructive`:`border-success/30 bg-success/5 text-success`),children:[(0,A.jsx)(`span`,{children:D.text}),(0,A.jsx)(`button`,{type:`button`,onClick:()=>O(null),className:`shrink-0 rounded-sm opacity-70 hover:opacity-100`,"aria-label":`Dismiss message`,children:(0,A.jsx)(o,{className:`size-3`})})]}),(0,A.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[!c&&X.length>0&&(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between px-3 pb-1.5 pt-3 text-[10px] text-muted-foreground`,children:[(0,A.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,A.jsx)(f,{className:`size-3`}),Z?`${Q.length} of ${X.length}`:`${X.length} scoped`]}),Z&&(0,A.jsx)(`button`,{type:`button`,className:`hover:text-foreground`,onClick:()=>M(``),children:`Clear filter`})]}),(0,A.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-3`,children:[c?(0,A.jsx)(ee,{}):X.length===0?(0,A.jsx)(te,{onAdd:()=>z(!0)}):Q.length===0?(0,A.jsxs)(`div`,{className:`flex h-full min-h-32 flex-col items-center justify-center px-4 text-center`,children:[(0,A.jsx)(a,{className:`mb-2 size-5 text-muted-foreground/60`}),(0,A.jsx)(`p`,{className:`text-xs font-medium`,children:`No matching memories`}),(0,A.jsx)(`p`,{className:`mt-1 text-[10px] text-muted-foreground`,children:`Try another role, task, mode, or phrase.`}),(0,A.jsx)(x,{variant:`ghost`,size:`sm`,className:`mt-2 h-7 text-xs`,onClick:()=>M(``),children:`Clear search`})]}):(0,A.jsx)(`ul`,{className:`space-y-2`,children:$.pageItems.map(e=>(0,A.jsx)(R,{memory:e,onFilter:M,onClearScope:()=>se(e.id),onDelete:()=>U(e.id)},e.id))}),(0,A.jsx)(C,{page:$.page,pageSize:$.pageSize,totalItems:$.totalItems,onPageChange:$.setPage,compact:!0,itemLabel:`memories`})]})]})]}),(0,A.jsx)(ne,{open:I,busy:W,onOpenChange:e=>{W||z(e)},onCreate:t=>{O(null),G(!0),e.rememberSage({text:t.text,kind:t.kind,audience:{roles:t.roles.length>0?t.roles:void 0,taskTypes:t.taskTypes.length>0?t.taskTypes:void 0,modes:t.modes.length>0?t.modes:void 0}},{echoToChat:!1})}}),(0,A.jsx)(re,{open:B,onOpenChange:V,onImport:t=>{try{let{entries:n,skipped:r}=N(t);if(n.length===0)return O({tone:`error`,text:`No valid audience-scoped memories were found in the JSON.`}),!1;for(let t of n)e.rememberSage(t,{echoToChat:!1});return O({tone:`success`,text:`${n.length} memor${n.length===1?`y`:`ies`} queued for import${r?`; ${r} invalid ${r===1?`entry was`:`entries were`} skipped`:``}.`}),V(!1),!0}catch(e){return O({tone:`error`,text:e instanceof Error?e.message:`Invalid JSON.`}),!1}}}),(0,A.jsx)(b,{open:!!H,onOpenChange:e=>{!e&&!K&&U(null)},children:(0,A.jsxs)(_,{className:`max-w-md`,children:[(0,A.jsxs)(h,{children:[(0,A.jsx)(v,{children:`Delete this audience memory?`}),(0,A.jsx)(y,{children:`This removes the memory from active use. To keep it as general project guidance, cancel and use the un-scope action instead.`})]}),(0,A.jsx)(`div`,{className:`rounded-md border border-border/70 bg-background/45 p-3 text-xs text-muted-foreground`,children:T(r.find(e=>e.id===H)?.text??``,180)}),(0,A.jsxs)(g,{children:[(0,A.jsx)(x,{variant:`outline`,onClick:()=>U(null),disabled:K,children:`Cancel`}),(0,A.jsxs)(x,{variant:`destructive`,onClick:ce,disabled:K,children:[(0,A.jsx)(t,{className:`size-4`}),K?`Deleting…`:`Delete memory`]})]})]})})]})}function L({value:e,label:t}){return(0,A.jsxs)(`div`,{className:`bg-card/95 px-1.5 py-2 text-center`,children:[(0,A.jsx)(`p`,{className:`text-sm font-semibold tabular-nums`,children:e}),(0,A.jsx)(`p`,{className:`truncate text-[9px] uppercase tracking-wide text-muted-foreground`,children:t})]})}function R({memory:e,onFilter:n,onClearScope:i,onDelete:a}){return(0,A.jsxs)(`li`,{className:`group rounded-md border border-border/65 bg-card/55 p-2.5 transition-colors hover:border-border hover:bg-card/85`,children:[(0,A.jsx)(`p`,{className:`break-words text-xs leading-5`,children:e.text}),e.audience&&(0,A.jsx)(z,{audience:e.audience,onFilter:n}),(0,A.jsxs)(`div`,{className:`mt-2 flex items-center justify-between gap-2 border-t border-border/45 pt-2`,children:[(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5 text-[9px] uppercase tracking-wide text-muted-foreground`,children:[(0,A.jsx)(`span`,{className:`truncate`,children:D[e.kind]??e.kind}),(0,A.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,A.jsx)(`span`,{children:e.status})]}),(0,A.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[(0,A.jsx)(x,{variant:`ghost`,size:`icon`,className:`size-6`,onClick:i,"aria-label":`Remove audience scope from ${T(e.text,42)}`,title:`Make general memory`,children:(0,A.jsx)(r,{className:`size-3`})}),(0,A.jsx)(x,{variant:`ghost`,size:`icon`,className:`size-6 text-destructive hover:text-destructive`,onClick:a,"aria-label":`Delete ${T(e.text,42)}`,title:`Delete`,children:(0,A.jsx)(t,{className:`size-3`})})]})]})]})}function z({audience:e,onFilter:t}){return(0,A.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:[...(e.roles??[]).map(e=>({label:`role`,value:e})),...(e.taskTypes??[]).map(e=>({label:`task`,value:e})),...(e.modes??[]).map(e=>({label:`mode`,value:e}))].map(({label:e,value:n})=>(0,A.jsxs)(`button`,{type:`button`,className:`max-w-full truncate rounded border border-primary/15 bg-primary/7 px-1.5 py-0.5 font-mono text-[9px] text-primary/90 transition-colors hover:border-primary/35 hover:bg-primary/12`,onClick:()=>t(n),title:`Filter by ${e}: ${n}`,children:[e,`:`,n]},`${e}:${n}`))})}function ee(){return(0,A.jsx)(`div`,{className:`space-y-2 pt-3`,role:`status`,"aria-label":`Loading audience memories`,children:[0,1,2].map(e=>(0,A.jsxs)(`div`,{className:`animate-pulse rounded-md border border-border/50 p-3`,children:[(0,A.jsx)(`div`,{className:`h-2.5 w-full rounded bg-muted`}),(0,A.jsx)(`div`,{className:`mt-2 h-2.5 w-2/3 rounded bg-muted`}),(0,A.jsx)(`div`,{className:`mt-3 h-4 w-24 rounded bg-muted`})]},e))})}function te({onAdd:e}){return(0,A.jsxs)(`div`,{className:`flex h-full min-h-44 flex-col items-center justify-center px-5 text-center`,children:[(0,A.jsx)(`span`,{className:`mb-3 flex size-10 items-center justify-center rounded-full border border-dashed border-primary/35 bg-primary/5 text-primary`,children:(0,A.jsx)(n,{className:`size-4`})}),(0,A.jsx)(`p`,{className:`text-xs font-medium`,children:`Route guidance to the right agents`}),(0,A.jsx)(`p`,{className:`mt-1 max-w-52 text-[10px] leading-4 text-muted-foreground`,children:`Scope a memory by role, task type, or operating mode. Matching agents receive it automatically.`}),(0,A.jsxs)(x,{variant:`outline`,size:`sm`,className:`mt-3 h-7 gap-1 text-xs`,onClick:e,children:[(0,A.jsx)(u,{className:`size-3`}),`Add scoped memory`]})]})}function ne({open:e,busy:t,onOpenChange:n,onCreate:r}){let[i,a]=(0,k.useState)(``),[o,s]=(0,k.useState)(`workflow`),[c,l]=(0,k.useState)(``),[u,d]=(0,k.useState)(``),[f,p]=(0,k.useState)(``);(0,k.useEffect)(()=>{e||(a(``),s(`workflow`),l(``),d(``),p(``))},[e]);let m=O(c),S=O(u),C=O(f),w=i.trim().length>0&&(m.length>0||S.length>0||C.length>0);return(0,A.jsx)(b,{open:e,onOpenChange:n,children:(0,A.jsxs)(_,{className:`max-w-xl`,children:[(0,A.jsxs)(h,{children:[(0,A.jsx)(v,{children:`Add audience-scoped memory`}),(0,A.jsx)(y,{children:`This guidance is injected only when an agent matches at least one supplied selector.`})]}),(0,A.jsxs)(`div`,{className:`space-y-4`,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`label`,{htmlFor:`audience-memory-text`,className:`mb-1.5 block text-xs font-medium`,children:`Memory`}),(0,A.jsx)(`textarea`,{id:`audience-memory-text`,value:i,onChange:e=>a(e.target.value),placeholder:`What should matching agents remember?`,rows:4,autoFocus:!0,className:`w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-sm outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring`})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`label`,{htmlFor:`audience-memory-kind`,className:`mb-1.5 block text-xs font-medium`,children:`Kind`}),(0,A.jsx)(`select`,{id:`audience-memory-kind`,value:o,onChange:e=>s(e.target.value),className:`h-9 w-full rounded-md border border-input bg-background px-3 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:E.map(e=>(0,A.jsx)(`option`,{value:e,children:D[e]??e},e))})]}),(0,A.jsxs)(`fieldset`,{className:`space-y-3 rounded-md border border-border/70 bg-background/35 p-3`,children:[(0,A.jsx)(`legend`,{className:`px-1 text-xs font-medium`,children:`Audience selectors`}),(0,A.jsx)(B,{id:`audience-memory-roles`,label:`Roles`,value:c,onChange:l,placeholder:`reviewer, refactor-planner`}),(0,A.jsx)(B,{id:`audience-memory-task-types`,label:`Task types`,value:u,onChange:d,placeholder:`review, refactor, bugfix`}),(0,A.jsx)(B,{id:`audience-memory-modes`,label:`Modes`,value:f,onChange:p,placeholder:`teach, code-review`}),(0,A.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Comma-separate multiple values. At least one selector is required.`})]})]}),(0,A.jsxs)(g,{children:[(0,A.jsx)(x,{variant:`outline`,onClick:()=>n(!1),disabled:t,children:`Cancel`}),(0,A.jsx)(x,{onClick:()=>r({text:i.trim(),kind:o,roles:m,taskTypes:S,modes:C}),disabled:!w||t,children:t?`Remembering…`:`Remember`})]})]})})}function B({id:e,label:t,value:n,placeholder:r,onChange:i}){return(0,A.jsxs)(`div`,{className:`grid gap-1.5 sm:grid-cols-[6rem_1fr] sm:items-center`,children:[(0,A.jsx)(`label`,{htmlFor:e,className:`text-[11px] font-medium text-muted-foreground`,children:t}),(0,A.jsx)(S,{id:e,value:n,onChange:e=>i(e.target.value),placeholder:r,className:`h-8 font-mono text-xs`})]})}function re({open:e,onOpenChange:t,onImport:n}){let[r,i]=(0,k.useState)(``);return(0,k.useEffect)(()=>{e||i(``)},[e]),(0,A.jsx)(b,{open:e,onOpenChange:t,children:(0,A.jsxs)(_,{className:`max-w-xl`,children:[(0,A.jsxs)(h,{children:[(0,A.jsx)(v,{children:`Import audience memories`}),(0,A.jsxs)(y,{children:[`Paste the JSON produced here or by `,(0,A.jsx)(`code`,{children:`/memory audience export`}),`. Entries without a valid audience selector are skipped.`]})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`label`,{htmlFor:`audience-memory-import`,className:`mb-1.5 block text-xs font-medium`,children:`JSON array`}),(0,A.jsx)(`textarea`,{id:`audience-memory-import`,value:r,onChange:e=>i(e.target.value),placeholder:`[
2
- { "text": "…", "audience": { "roles": ["reviewer"] } }
3
- ]`,rows:10,autoFocus:!0,spellCheck:!1,className:`w-full resize-y rounded-md border border-input bg-background p-3 font-mono text-xs outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring`})]}),(0,A.jsxs)(g,{children:[(0,A.jsx)(x,{variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,A.jsxs)(x,{onClick:()=>n(r),disabled:!r.trim(),children:[(0,A.jsx)(d,{className:`size-4`}),`Import memories`]})]})]})})}export{I as AudienceMemoryPanel};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Ii as t,Ki as n,Kr as r,Nt as i,Qn as a,Sa as o,Ut as s,Yi as c,Zt as l,_i as ee,at as u,br as d,bt as f,cn as p,et as m,ii as h,in as te,ma as g,wr as ne}from"./vendor-2VBBgNb5.js";import{t as re}from"./ws-client-WVGn8ORh.js";import{t as _}from"./utils-CN2sfDVP.js";import{f as v,p as y}from"./index-BPfIz78e.js";var b=e(o(),1),x=m();function S({status:e}){return(0,x.jsxs)(`section`,{className:`flex flex-wrap gap-x-5 gap-y-1 border-b border-border/60 bg-primary/[0.025] px-4 py-1.5 font-mono text-[9px] text-muted-foreground`,title:e.chronicleDirectory,children:[(0,x.jsx)(`span`,{className:`font-sans font-semibold uppercase tracking-wider text-primary`,children:`Chronicle ownership`}),(0,x.jsxs)(`span`,{children:[`collect `,(0,x.jsx)(`b`,{className:`text-foreground`,children:e.pipeline.collection})]}),(0,x.jsxs)(`span`,{children:[`process `,(0,x.jsx)(`b`,{className:`text-foreground`,children:e.pipeline.processing})]}),(0,x.jsxs)(`span`,{children:[`serve `,(0,x.jsx)(`b`,{className:`text-foreground`,children:e.pipeline.serving})]}),(0,x.jsxs)(`span`,{children:[`PID `,(0,x.jsx)(`b`,{className:`text-foreground`,children:e.pid}),` · `,e.clients,` clients`]}),(0,x.jsxs)(`span`,{children:[`watcher`,` `,(0,x.jsx)(`b`,{className:_(e.watcher.active?`text-success`:`text-warning`),children:e.watcher.active?`active`:`inactive`}),` `,`· `,e.watcher.watchedFiles,` files`]}),(0,x.jsxs)(`span`,{children:[`store `,(0,x.jsx)(`b`,{className:`text-foreground`,children:C(e.pipeline.storage)})]}),e.mode===`inline`&&(0,x.jsx)(`span`,{className:`font-sans font-semibold text-warning`,children:`INLINE FALLBACK`})]})}function C(e){return e.replaceAll(`\\`,`/`).split(`/`).filter(Boolean).slice(-3).join(`/`)}var w=[`eventType`,`providerId`,`modelId`,`outcome`,`resourceKind`],T=1440*60*1e3;function E(){return{limit:300,order:`desc`,from:new Date(Date.now()-T).toISOString()}}var ie=[{id:`all`,label:`All signals`,icon:(0,x.jsx)(g,{})},{id:`llm`,label:`LLM`,icon:(0,x.jsx)(n,{})},{id:`agents`,label:`Agents`,icon:(0,x.jsx)(c,{})},{id:`tools`,label:`Tools`,icon:(0,x.jsx)(i,{})},{id:`files`,label:`Files`,icon:(0,x.jsx)(r,{})},{id:`failures`,label:`Failures`,icon:(0,x.jsx)(f,{})}];function D(){let e=re(),[t,o]=(0,b.useState)([]),[s,d]=(0,b.useState)(null),[f,m]=(0,b.useState)({}),[h,g]=(0,b.useState)(E()),[C,T]=(0,b.useState)({text:``,path:``,providerId:``,modelId:``,sessionId:``}),[D,O]=(0,b.useState)(`all`),[A,P]=(0,b.useState)({total:0,scannedEvents:0,sourceFiles:0,invalidLines:0}),[I,de]=(0,b.useState)(k),[L,R]=(0,b.useState)(!0),[z,B]=(0,b.useState)(null),[V,H]=(0,b.useState)(null),[U,fe]=(0,b.useState)([]),[W,pe]=(0,b.useState)([]),[G,me]=(0,b.useState)(null),K=(0,b.useCallback)(t=>{if(!e.supportsCapability(`chronicle.query`)){R(!1),B(`Restart the backend once to activate Chronicle protocol support.`);return}if(R(!0),B(null),g(t),m({}),e.send({type:`chronicle.query`,payload:{query:t}}),e.supportsCapability(`chronicle.facets`))e.send({type:`chronicle.facets`,payload:{fields:[...w],query:t,limit:12}});else for(let n of w)e.send({type:`chronicle.facet`,payload:{field:n,query:t,limit:12}})},[e]),q=(0,b.useCallback)(()=>{e.supportsCapability(`chronicle.metrics`)&&(e.send({type:`chronicle.metrics`,payload:{view:`providers`}}),e.send({type:`chronicle.metrics`,payload:{view:`tasks`,limit:200}}))},[e]),J=(0,b.useCallback)(()=>{e.supportsCapability(`chronicle.status`)&&e.send({type:`chronicle.status`})},[e]);(0,b.useEffect)(()=>{let t=e.on(`chronicle.query_result`,e=>{e.type===`chronicle.query_result`&&(o(e.payload.events),P(e.payload),de(e.payload.summary??k),R(!1))}),n=e.on(`chronicle.facet_result`,e=>{e.type===`chronicle.facet_result`&&m(t=>({...t,[e.payload.field]:e.payload.values}))}),r=e.on(`chronicle.facets_result`,e=>{e.type===`chronicle.facets_result`&&m(e.payload.values)}),i=e.on(`chronicle.error`,e=>{e.type===`chronicle.error`&&(B(e.payload.message),R(!1))}),a=e.on(`chronicle.graph_result`,e=>{e.type===`chronicle.graph_result`&&H(e.payload)}),s=e.on(`chronicle.metrics_result`,e=>{e.type===`chronicle.metrics_result`&&(e.payload.view===`providers`?fe(e.payload.data):e.payload.view===`tasks`&&pe(e.payload.data))}),c=e.on(`chronicle.status_result`,e=>{e.type===`chronicle.status_result`&&me(e.payload)});return K(E()),q(),J(),()=>{t(),n(),r(),i(),a(),s(),c()}},[e,K,q,J]);let Y=(0,b.useMemo)(()=>t.filter(e=>se(e,D)),[t,D]),X=y(Y,25,D),Z=(0,b.useMemo)(()=>{let e=t.find(e=>e.eventType===`metrics.rollup`&&e.attributes?.signal===`runtime.health`)?.attributes?.stats;if(!e)return;let n=t=>e[t]?.last;return{eventLoop:{utilization:n(`eventLoop.utilization`),delayP95Ms:n(`eventLoop.delayP95Ms`)},memory:{heapUsedBytes:n(`memory.heapUsedBytes`)},chronicle:{pendingEvents:n(`chronicle.pendingEvents`),rejectedEvents:n(`chronicle.rejectedEvents`)}}},[t]),Q=(0,b.useMemo)(()=>{let e={};for(let t of W)e[t.status]=(e[t.status]??0)+1;let t=(e.completed??0)+(e.merged??0)+(e.failed??0)+(e.conflict??0),n=(e.completed??0)+(e.merged??0),r=[...W].sort((e,t)=>(t.endedAt??t.startedAt??``).localeCompare(e.endedAt??e.startedAt??``)).slice(0,8);return{counts:e,total:W.length,terminal:t,successRate:t>0?n/t*100:100,recent:r}},[W]),$=()=>K({...E(),...C.text?{text:C.text}:{},...C.path?{path:C.path}:{},...C.providerId?{providerId:C.providerId}:{},...C.modelId?{modelId:C.modelId}:{},...C.sessionId?{sessionId:C.sessionId}:{}}),he=()=>{T({text:``,path:``,providerId:``,modelId:``,sessionId:``}),O(`all`),K(E())},ge=t=>{d(t),H(null),e.supportsCapability(`chronicle.graph`)&&e.send({type:`chronicle.graph`,payload:{seed:{eventId:t.eventId},hops:2,maxNodes:250}})};return(0,x.jsxs)(`div`,{className:`flex h-full min-h-0 bg-background`,"data-testid":`chronicle-dashboard`,children:[(0,x.jsxs)(`main`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,x.jsx)(`header`,{className:`border-b border-border/70 bg-gradient-to-r from-primary/[0.045] via-background to-background px-5 py-4`,children:(0,x.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(n,{className:`h-5 w-5 text-primary`}),(0,x.jsx)(`h1`,{className:`text-lg font-semibold tracking-tight`,children:`Coding Intelligence`}),(0,x.jsx)(`span`,{className:`rounded-full border border-primary/20 bg-primary/10 px-2 py-0.5 text-[9px] font-semibold tracking-wider text-primary`,children:`CHRONICLE`})]}),(0,x.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`LLM, agent, tool and file evidence — connected from decision to code change.`})]}),(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:_(`h-2 w-2 rounded-full`,z?`bg-destructive`:L?`animate-pulse bg-warning`:`bg-success`)}),(0,x.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:L?`Reading journal`:z?`Unavailable`:`Live evidence`}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>{K(h),q(),J()},className:`ml-2 rounded-md border border-border bg-card p-2 hover:bg-muted`,title:`Refresh evidence`,children:(0,x.jsx)(p,{className:_(`h-4 w-4`,L&&`animate-spin`)})})]})]})}),(0,x.jsxs)(`section`,{className:`grid grid-cols-2 border-b border-border/70 xl:grid-cols-6`,children:[(0,x.jsx)(N,{icon:(0,x.jsx)(n,{}),label:`LLM requests`,value:I.logicalRequests,detail:`${I.modelAttempts} attempts · ${I.providers} providers · ${I.models} models`}),(0,x.jsx)(N,{icon:(0,x.jsx)(c,{}),label:`Agent work`,value:I.agentEvents,detail:`${I.uniqueAgents} correlated agents · ${I.decisions} decisions`}),(0,x.jsx)(N,{icon:(0,x.jsx)(i,{}),label:`Tool calls`,value:I.toolCalls,detail:`${I.failedTools} failed · ${I.processes} processes`}),(0,x.jsx)(N,{icon:(0,x.jsx)(r,{}),label:`File evidence`,value:I.fileEvents,detail:`${I.uniqueFiles} unique paths`}),(0,x.jsx)(N,{icon:(0,x.jsx)(te,{}),label:`Retries`,value:I.scheduledRetries,detail:`${I.failures} failures · ${I.fallbacks} fallbacks`,tone:I.failures?`danger`:`normal`}),(0,x.jsx)(N,{icon:(0,x.jsx)(ee,{}),label:`Provider p95`,value:j(I.providerP95DurationMs),detail:`${j(I.providerAvgDurationMs)} average · all matches`})]}),(0,x.jsxs)(`section`,{className:`flex flex-wrap gap-x-6 gap-y-1 border-b border-border/60 bg-primary/[0.018] px-4 py-1.5 font-mono text-[9px] text-muted-foreground`,children:[(0,x.jsx)(`span`,{className:`font-sans font-semibold uppercase tracking-wider text-primary`,children:`Token economics`}),(0,x.jsxs)(`span`,{children:[`fresh input `,(0,x.jsx)(`b`,{className:`text-foreground`,children:I.inputTokens.toLocaleString()})]}),(0,x.jsxs)(`span`,{children:[`output `,(0,x.jsx)(`b`,{className:`text-foreground`,children:I.outputTokens.toLocaleString()})]}),(0,x.jsxs)(`span`,{children:[`cache read `,(0,x.jsx)(`b`,{className:`text-foreground`,children:I.cacheReadTokens.toLocaleString()})]}),(0,x.jsxs)(`span`,{children:[`cache write`,` `,(0,x.jsx)(`b`,{className:`text-foreground`,children:I.cacheWriteTokens.toLocaleString()})]}),(0,x.jsxs)(`span`,{children:[`cache hit `,(0,x.jsxs)(`b`,{className:`text-foreground`,children:[oe(I).toFixed(1),`%`]})]}),(0,x.jsxs)(`span`,{children:[`estimated cost `,(0,x.jsxs)(`b`,{className:`text-foreground`,children:[`$`,I.estimatedCostUsd.toFixed(4)]})]})]}),U.length>0&&(0,x.jsxs)(`section`,{className:`flex items-center gap-3 overflow-x-auto border-b border-border/60 bg-muted/[0.14] px-4 py-1.5`,children:[(0,x.jsx)(`span`,{className:`shrink-0 text-[9px] font-semibold uppercase tracking-wider text-muted-foreground`,children:`Model reliability`}),U.slice(0,6).map(e=>{let t=e.completed+e.failed,n=t>0?e.completed/t*100:100;return(0,x.jsxs)(`span`,{className:`flex shrink-0 items-center gap-2 rounded-full border border-border bg-card px-2.5 py-0.5 font-mono text-[9px]`,title:`${e.day} · ${e.attempts} attempts · avg ${j(e.avgDurationMs)} · ${e.inputTokens.toLocaleString()} in / ${e.outputTokens.toLocaleString()} out`,children:[(0,x.jsx)(`span`,{className:_(`h-1.5 w-1.5 rounded-full`,n>=99?`bg-success`:n>=90?`bg-warning`:`bg-destructive`)}),(0,x.jsxs)(`span`,{className:`max-w-[180px] truncate`,children:[e.providerId,`/`,e.modelId]}),(0,x.jsxs)(`b`,{className:`text-foreground`,children:[n.toFixed(0),`%`]}),(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:e.day.slice(5)})]},`${e.day}-${e.providerId}-${e.modelId}`)})]}),Q.total>0&&(0,x.jsxs)(`section`,{className:`flex items-center gap-3 overflow-x-auto border-b border-border/60 bg-muted/[0.10] px-4 py-1.5`,children:[(0,x.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1 text-[9px] font-semibold uppercase tracking-wider text-muted-foreground`,children:[(0,x.jsx)(a,{className:`h-3 w-3`}),`Task outcomes`]}),(0,x.jsxs)(`span`,{className:`flex shrink-0 items-center gap-2 rounded-full border border-border bg-card px-2.5 py-0.5 font-mono text-[9px]`,title:`${Q.total} tasks tracked · ${Q.terminal} finished`,children:[(0,x.jsx)(`span`,{className:_(`h-1.5 w-1.5 rounded-full`,Q.successRate>=90?`bg-success`:Q.successRate>=60?`bg-warning`:`bg-destructive`)}),(0,x.jsxs)(`b`,{className:`text-foreground`,children:[Q.successRate.toFixed(0),`%`]}),(0,x.jsxs)(`span`,{className:`text-muted-foreground`,children:[`success · `,Q.total,` tasks`]})]}),[`completed`,`merged`,`failed`,`conflict`,`started`].filter(e=>Q.counts[e]).map(e=>(0,x.jsxs)(`span`,{className:`shrink-0 font-mono text-[9px] text-muted-foreground`,children:[e,` `,(0,x.jsx)(`b`,{className:_(e===`failed`||e===`conflict`?`text-destructive`:`text-foreground`),children:Q.counts[e]})]},e)),(0,x.jsx)(`span`,{className:`mx-1 h-3 w-px shrink-0 bg-border`}),Q.recent.map(e=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>K({limit:300,order:`desc`,taskId:e.taskId}),className:`flex shrink-0 items-center gap-1.5 rounded-full border border-border bg-card px-2 py-0.5 font-mono text-[9px] hover:border-primary/50`,title:`${e.taskId}${e.boardId?` · board ${e.boardId}`:``}${e.sessionId?` · ${e.sessionId}`:``} · ${e.filesTouched} files${e.retries?` · ${e.retries} retries`:``}${e.verificationFailures?` · ${e.verificationFailures} verify-fails`:``}`,children:[(0,x.jsx)(`span`,{className:_(`h-1.5 w-1.5 rounded-full`,e.status===`completed`||e.status===`merged`?`bg-success`:e.status===`failed`||e.status===`conflict`?`bg-destructive`:`bg-primary`)}),(0,x.jsx)(`span`,{className:`max-w-[84px] truncate`,children:e.taskId}),e.durationMs!==null&&(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:j(e.durationMs)}),e.filesTouched>0&&(0,x.jsxs)(`span`,{className:`flex items-center gap-0.5 text-muted-foreground`,children:[(0,x.jsx)(r,{className:`h-2.5 w-2.5`}),e.filesTouched]})]},e.taskId))]}),(0,x.jsx)(`section`,{className:`border-b border-border/70 px-4 py-3`,children:(0,x.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 xl:grid-cols-[1.35fr_1fr_1fr_1fr_1fr_auto]`,children:[(0,x.jsx)(M,{icon:(0,x.jsx)(l,{}),placeholder:`Search event evidence`,value:C.text,onChange:e=>T(t=>({...t,text:e})),onEnter:$}),(0,x.jsx)(M,{placeholder:`File or directory`,value:C.path,onChange:e=>T(t=>({...t,path:e})),onEnter:$}),(0,x.jsx)(M,{placeholder:`Provider`,value:C.providerId,onChange:e=>T(t=>({...t,providerId:e})),onEnter:$}),(0,x.jsx)(M,{placeholder:`Model`,value:C.modelId,onChange:e=>T(t=>({...t,modelId:e})),onEnter:$}),(0,x.jsx)(M,{placeholder:`Session`,value:C.sessionId,onChange:e=>T(t=>({...t,sessionId:e})),onEnter:$}),(0,x.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,x.jsxs)(`button`,{type:`button`,onClick:$,className:`rounded-md bg-primary px-3 text-xs font-medium text-primary-foreground`,children:[(0,x.jsx)(ne,{className:`mr-1 inline h-3 w-3`}),`Apply`]}),(0,x.jsx)(`button`,{type:`button`,onClick:he,className:`rounded-md border border-border px-2.5 text-xs hover:bg-muted`,children:`Clear`})]})]})}),(0,x.jsxs)(`section`,{className:`flex items-center gap-1 overflow-x-auto border-b border-border/70 px-4 py-2`,children:[ie.map(e=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>O(e.id),className:_(`flex shrink-0 items-center gap-1.5 rounded-md px-2.5 py-1.5 text-[11px] transition-colors [&>svg]:h-3.5 [&>svg]:w-3.5`,D===e.id?`bg-primary/10 font-medium text-primary`:`text-muted-foreground hover:bg-muted hover:text-foreground`),children:[e.icon,e.label,(0,x.jsx)(`span`,{className:`ml-1 rounded bg-background/70 px-1 font-mono text-[9px]`,children:ae(I,e.id,A.total)})]},e.id)),(0,x.jsxs)(`div`,{className:`ml-auto hidden items-center gap-3 pl-4 text-[9px] text-muted-foreground lg:flex`,children:[(0,x.jsxs)(`span`,{children:[A.total.toLocaleString(),` matched`]}),(0,x.jsxs)(`span`,{children:[A.sourceFiles,` journal files`]}),A.invalidLines>0&&(0,x.jsxs)(`span`,{className:`text-warning`,children:[A.invalidLines,` invalid lines`]})]})]}),G&&(0,x.jsx)(S,{status:G}),Z&&(0,x.jsx)(ce,{health:Z}),(0,x.jsx)(`section`,{className:`flex gap-4 overflow-x-auto border-b border-border/60 bg-muted/[0.18] px-4 py-2`,children:[`providerId`,`modelId`,`outcome`].map(e=>(0,x.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,x.jsx)(`span`,{className:`mr-1 text-[9px] font-semibold uppercase tracking-wider text-muted-foreground`,children:e.replace(`Id`,``)}),(f[e]??[]).slice(0,4).map(t=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>K({...h,[e]:t.value}),className:`rounded-full border border-border bg-card px-2 py-0.5 text-[9px] hover:border-primary/50`,children:[t.value,` `,(0,x.jsx)(`b`,{children:t.count})]},t.value))]},e))}),(0,x.jsxs)(`div`,{className:`grid grid-cols-[92px_minmax(190px,1.25fr)_110px_minmax(180px,1fr)_minmax(140px,.8fr)_24px] gap-3 border-b border-border/60 bg-muted/20 px-4 py-1.5 text-[9px] font-semibold uppercase tracking-wider text-muted-foreground`,children:[(0,x.jsx)(`span`,{children:`Time`}),(0,x.jsx)(`span`,{children:`Signal`}),(0,x.jsx)(`span`,{children:`Outcome`}),(0,x.jsx)(`span`,{children:`Model / agent`}),(0,x.jsx)(`span`,{children:`Resource`}),(0,x.jsx)(`span`,{})]}),(0,x.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:z?(0,x.jsx)(F,{text:z}):!L&&Y.length===0?(0,x.jsx)(F,{text:`No coding evidence matches these filters.`}):(0,x.jsx)(`div`,{className:`divide-y divide-border/40`,children:X.pageItems.map(e=>(0,x.jsx)(le,{event:e,active:s?.eventId===e.eventId,onClick:()=>ge(e)},e.eventId))})}),(0,x.jsx)(v,{page:X.page,pageSize:X.pageSize,totalItems:X.totalItems,onPageChange:X.setPage,itemLabel:`events`})]}),s&&(0,x.jsxs)(`aside`,{className:`w-[440px] max-w-[48vw] shrink-0 overflow-auto border-l border-border bg-card/60 shadow-[-12px_0_32px_hsl(var(--background)/.35)]`,children:[(0,x.jsxs)(`div`,{className:`sticky top-0 z-10 flex items-center justify-between border-b border-border bg-card/95 px-4 py-3 backdrop-blur`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`div`,{className:`text-xs font-semibold`,children:`Evidence & lineage`}),(0,x.jsxs)(`div`,{className:`mt-0.5 font-mono text-[9px] text-muted-foreground`,children:[`#`,s.sequence,` · `,s.eventId]})]}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>d(null),className:`rounded p-1 hover:bg-muted`,children:(0,x.jsx)(u,{className:`h-4 w-4`})})]}),(0,x.jsx)(ue,{event:s,graph:V})]})]})}var O={llm:0,agent:0,tool:0,file:0,memory:0,task:0,decision:0,runtime:0},k={logicalRequests:0,modelAttempts:0,completedAttempts:0,failedAttempts:0,scheduledRetries:0,fallbacks:0,providers:0,models:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,estimatedCostUsd:0,providerAvgDurationMs:0,providerP95DurationMs:0,toolCalls:0,completedTools:0,failedTools:0,toolAvgDurationMs:0,processes:0,failedProcesses:0,fileEvents:0,uniqueFiles:0,agentEvents:0,uniqueAgents:0,decisions:0,escalations:0,failures:0,cancellations:0,families:{...O},failuresByFamily:{...O}};function ae(e,t,n){return t===`all`?n:t===`llm`?e.families.llm:t===`agents`?e.families.agent:t===`tools`?e.families.tool:t===`files`?e.families.file:e.failures}function oe(e){let t=e.inputTokens+e.cacheReadTokens;return t?e.cacheReadTokens/t*100:0}function se(e,t){return t===`all`?!0:t===`llm`?/^(provider|token|context|compaction)\./.test(e.eventType):t===`agents`?/^(agent|subagent|delegate|fleet|sdd)\./.test(e.eventType):t===`tools`?/^(tool|process|mcp|network)\./.test(e.eventType):t===`files`?e.resource?.kind===`file`||/^(file|worktree|storage)\./.test(e.eventType):e.outcome===`failure`||/(?:failed|error|retry|fallback|blocked|conflict)/i.test(e.eventType)}function A(e){if(!e)return`—`;let t=e/1e6;return t<1?`${(e/1e3).toFixed(0)}µs`:t<1e3?`${t.toFixed(1)}ms`:`${(t/1e3).toFixed(1)}s`}function j(e){return e?e<1?`${(e*1e3).toFixed(0)}µs`:e<1e3?`${e.toFixed(1)}ms`:`${(e/1e3).toFixed(1)}s`:`—`}function M({placeholder:e,value:t,onChange:n,onEnter:r,icon:i}){return(0,x.jsxs)(`label`,{className:`flex items-center gap-2 rounded-md border border-border bg-card px-2.5 py-2 focus-within:border-primary/60`,children:[i&&(0,x.jsx)(`span`,{className:`text-muted-foreground [&>svg]:h-3.5 [&>svg]:w-3.5`,children:i}),(0,x.jsx)(`input`,{className:`w-full bg-transparent text-xs outline-none placeholder:text-muted-foreground/70`,placeholder:e,value:t,onChange:e=>n(e.target.value),onKeyDown:e=>{e.key===`Enter`&&r()}})]})}function N({icon:e,label:t,value:n,detail:r,tone:i=`normal`}){return(0,x.jsxs)(`div`,{className:`min-w-0 border-r border-border/60 px-4 py-3`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:[(0,x.jsx)(`span`,{className:`text-primary [&>svg]:h-3.5 [&>svg]:w-3.5`,children:e}),t]}),(0,x.jsx)(`div`,{className:_(`mt-1 text-xl font-semibold tabular-nums`,i===`danger`&&`text-destructive`),children:typeof n==`number`?n.toLocaleString():n}),(0,x.jsx)(`div`,{className:`mt-0.5 truncate text-[9px] text-muted-foreground`,children:r})]})}function ce({health:e}){return(0,x.jsxs)(`section`,{className:`flex flex-wrap gap-x-5 gap-y-1 border-b border-border/60 bg-success/[0.025] px-4 py-1.5 font-mono text-[9px] text-muted-foreground`,children:[(0,x.jsx)(`span`,{className:`font-sans font-semibold uppercase tracking-wider text-success`,children:`Collector healthy`}),(0,x.jsxs)(`span`,{children:[`ELU`,` `,(0,x.jsxs)(`b`,{className:`text-foreground`,children:[((e.eventLoop?.utilization??0)*100).toFixed(1),`%`]})]}),(0,x.jsxs)(`span`,{children:[`p95 `,(0,x.jsxs)(`b`,{className:`text-foreground`,children:[(e.eventLoop?.delayP95Ms??0).toFixed(1),`ms`]})]}),(0,x.jsxs)(`span`,{children:[`heap`,` `,(0,x.jsxs)(`b`,{className:`text-foreground`,children:[((e.memory?.heapUsedBytes??0)/1048576).toFixed(0),`MB`]})]}),(0,x.jsxs)(`span`,{children:[`queue `,(0,x.jsx)(`b`,{className:`text-foreground`,children:e.chronicle?.pendingEvents??0})]}),(0,x.jsxs)(`span`,{children:[`dropped`,` `,(0,x.jsx)(`b`,{className:_((e.chronicle?.rejectedEvents??0)>0&&`text-destructive`),children:e.chronicle?.rejectedEvents??0})]})]})}function le({event:e,active:n,onClick:r}){let i=e.occurredAt??e.observedAt,a=e.runtime?.modelId??e.scope.agentId??e.runtime?.providerId??`—`,o=e.resource?.path??e.resource?.id??e.correlation.toolCallId??`—`;return(0,x.jsxs)(`button`,{type:`button`,onClick:r,className:_(`grid w-full grid-cols-[92px_minmax(190px,1.25fr)_110px_minmax(180px,1fr)_minmax(140px,.8fr)_24px] items-center gap-3 px-4 py-2.5 text-left hover:bg-muted/45`,n&&`bg-primary/[0.07]`),children:[(0,x.jsx)(`span`,{className:`font-mono text-[9px] text-muted-foreground`,children:new Date(i).toLocaleTimeString()}),(0,x.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,x.jsx)(`span`,{className:_(`h-1.5 w-1.5 shrink-0 rounded-full`,e.outcome===`failure`?`bg-destructive`:e.outcome===`success`?`bg-success`:`bg-primary`)}),(0,x.jsx)(`span`,{className:`truncate font-mono text-[11px] font-medium`,children:e.eventType})]}),(0,x.jsx)(`span`,{className:_(`w-fit rounded px-1.5 py-0.5 text-[9px]`,I(e.outcome)),children:e.outcome??`unknown`}),(0,x.jsx)(`span`,{className:`truncate font-mono text-[9px] text-muted-foreground`,children:a}),(0,x.jsx)(`span`,{className:`truncate font-mono text-[9px] text-muted-foreground`,children:o}),(0,x.jsx)(t,{className:`h-3.5 w-3.5 text-muted-foreground`})]})}function ue({event:e,graph:t}){let n=(0,b.useMemo)(()=>[[`Scope`,e.scope],[`Correlation`,e.correlation],[`Runtime`,e.runtime],[`Resource`,e.resource],[`Attributes`,e.attributes],[`Tags`,e.tags]],[e]);return(0,x.jsxs)(`div`,{className:`p-4`,children:[(0,x.jsxs)(`div`,{className:`mb-4 rounded-lg border border-border bg-background/60 p-3`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:_(`h-2 w-2 rounded-full`,e.outcome===`failure`?`bg-destructive`:e.outcome===`success`?`bg-success`:`bg-primary`)}),(0,x.jsx)(`span`,{className:`font-mono text-xs font-semibold`,children:e.eventType})]}),(0,x.jsxs)(`div`,{className:`mt-2 flex gap-4 text-[9px] text-muted-foreground`,children:[(0,x.jsx)(`span`,{children:new Date(e.occurredAt??e.observedAt).toLocaleString()}),(0,x.jsx)(`span`,{children:A(Number(e.durationNs??0))})]})]}),(0,x.jsxs)(`div`,{className:`mb-4 grid grid-cols-2 gap-2`,children:[(0,x.jsx)(P,{icon:(0,x.jsx)(s,{}),label:`Evidence hash`,value:e.hash.slice(0,16)}),(0,x.jsx)(P,{icon:(0,x.jsx)(h,{}),label:`Sequence`,value:String(e.sequence)})]}),t&&(0,x.jsxs)(`section`,{className:`mb-4`,children:[(0,x.jsxs)(`h3`,{className:`mb-1.5 flex items-center gap-1 text-[9px] font-semibold uppercase tracking-wider text-muted-foreground`,children:[(0,x.jsx)(d,{className:`h-3 w-3`}),`Lineage · `,t.nodes.length,` nodes · `,t.edges.length,` edges`]}),(0,x.jsx)(`div`,{className:`space-y-1 rounded-md border border-border bg-background/70 p-2`,children:t.edges.slice(0,40).map((e,n)=>(0,x.jsxs)(`div`,{className:`flex items-center gap-2 font-mono text-[9px]`,children:[(0,x.jsx)(`span`,{className:_(`rounded px-1`,e.confidence===`explicit`?`bg-success/10 text-success`:e.confidence===`inferred`?`bg-warning/10 text-warning`:`bg-primary/10 text-primary`),children:e.confidence}),(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:e.kind}),(0,x.jsxs)(`span`,{className:`truncate`,children:[t.nodes.find(t=>t.eventId===e.from)?.eventType,` →`,` `,t.nodes.find(t=>t.eventId===e.to)?.eventType]})]},`${e.from}-${e.to}-${e.kind}-${n}`))}),t.truncated&&(0,x.jsx)(`p`,{className:`mt-1 text-[9px] text-warning`,children:`Lineage truncated at safety limit.`})]}),n.map(([e,t])=>t&&(0,x.jsxs)(`section`,{className:`mb-4`,children:[(0,x.jsx)(`h3`,{className:`mb-1.5 text-[9px] font-semibold uppercase tracking-wider text-muted-foreground`,children:e}),(0,x.jsx)(`pre`,{className:`overflow-auto rounded-md border border-border bg-background/70 p-3 font-mono text-[9px] leading-relaxed`,children:JSON.stringify(t,null,2)})]},e))]})}function P({icon:e,label:t,value:n}){return(0,x.jsxs)(`div`,{className:`rounded-md border border-border p-2`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-1 text-[8px] uppercase text-muted-foreground`,children:[(0,x.jsx)(`span`,{className:`[&>svg]:h-3 [&>svg]:w-3`,children:e}),t]}),(0,x.jsx)(`div`,{className:`mt-1 truncate font-mono text-[9px]`,children:n})]})}function F({text:e}){return(0,x.jsx)(`div`,{className:`flex h-48 items-center justify-center text-sm text-muted-foreground`,children:e})}function I(e){return e===`failure`?`bg-destructive/10 text-destructive`:e===`success`?`bg-success/10 text-success`:e===`started`?`bg-primary/10 text-primary`:`bg-muted text-muted-foreground`}export{D as ChronicleDashboard};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Fi as t,Ir as n,Kn as r,Nt as i,Ri as a,Sa as o,Ur as s,Wt as c,Xt as l,Yi as u,_a as d,at as f,br as p,cn as m,et as h,ft as g,ki as _,ma as v,qn as y,qr as b,xi as x,y as S}from"./vendor-2VBBgNb5.js";import"./i18n-1BkaqMgr.js";import{a as C,i as w,n as T,o as E,r as D,t as O}from"./monaco-BLUV5g0U.js";import{t as ee}from"./ws-client-WVGn8ORh.js";import{t as k}from"./utils-CN2sfDVP.js";import{i as te}from"./codemap-activity-store-DP3mCZu1.js";import{D as A,M as ne,k as j,o as re,u as ie}from"./stores-mpa0202y.js";import{o as M}from"./view-navigation-Cgy5xh9q.js";import{T as N,d as P,w as ae}from"./index-BPfIz78e.js";import{t as F}from"./empty-state-CdyXy96A.js";import{t as I}from"./monaco-theme-DSeCDzQy.js";var L={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,json:`json`,css:`css`,html:`html`,svg:`xml`,md:`markdown`,yml:`yaml`,yaml:`yaml`,toml:`toml`,sh:`shell`,bash:`shell`,ps1:`powershell`,py:`python`,rs:`rust`,go:`go`,rb:`ruby`,java:`java`,c:`c`,cpp:`cpp`,h:`c`,hpp:`cpp`,sql:`sql`,xml:`xml`},R=Array.from(new Set(Object.values(L))).filter(e=>e!==`plaintext`),z=12e3,B=4e3,oe=5e3,V=1e4;function H(e){return L[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function U(e){return e.match(/([A-Za-z_$][\w$]*)$/)?.[1]??``}function W(e,t){return e.triggerCharacter?!0:t.length>=3}function G(e,t){return e.triggerCharacter===`.`||!e.triggerCharacter&&/^(findBy|findAllBy|create|update|delete|remove|get[A-Z_]|set[A-Z_]|use[A-Z_])/.test(t)}function K(e){return[e.filePath,e.language,e.lineNumber,e.column,e.versionId??``,e.triggerCharacter??``,e.linePrefix.slice(-160),e.suffix.slice(0,160)].join(`\0`)}var q=e(o(),1),J=h();function se(e){let t=new Set,n=new Set,r=new Set,i=new Set,a=new Set,o,s;for(let c of e)c.sessionId&&t.add(c.sessionId),c.taskId&&n.add(c.taskId),c.boardId&&r.add(c.boardId),c.toolName&&i.add(c.toolName),c.modelId&&a.add(c.modelId),(!o||c.occurredAt<o)&&(o=c.occurredAt),(!s||c.occurredAt>s)&&(s=c.occurredAt);return{mutations:e.length,sessions:t.size,tasks:n.size,boards:r.size,tools:[...i],models:[...a],firstAt:o,lastAt:s}}var Y=150,ce=224,le=38,X=/(write|edit|update|create|delete|rename|modified|changed)/i;function Z(e){return e.replace(/\\/g,`/`).replace(/^\.\//,``).replace(/\/{2,}/g,`/`).toLowerCase()}function Q(e,t){let n=Z(e),r=Z(t);return n===r||n.endsWith(`/${r}`)||r.endsWith(`/${n}`)}function ue(e,t=Date.now()){let n=e.filter(e=>t-e.at<=30*6e4),r=n.filter(e=>X.test(e.action)),i=new Set(n.map(e=>e.sessionId).filter(Boolean)).size,a=new Set(n.map(e=>e.actor).filter(Boolean)).size,o=new Set(n.map(e=>e.taskId).filter(Boolean)).size;return{level:r.length>=8||r.length>=4&&a>=3?`churn`:r.length>0?`active`:`quiet`,mutationCount:r.length,sessionCount:i,actorCount:a,taskCount:o}}function $(e){return typeof e==`string`&&e.length>0?e:void 0}function de(e){let t=Date.parse(e.occurredAt??e.observedAt);return Number.isFinite(t)?t:Date.now()}function fe(e){let t=e.attributes??{},n=$(t.operation)??e.eventType,r=e.scope.agentId,i=e.runtime?.providerId,a=e.runtime?.modelId;return{id:e.eventId,at:de(e),action:n,actor:r??i??$(t.actor)??`external`,source:$(t.source)??e.tags?.collector??`chronicle`,summary:[e.eventType,i&&a?`${i}/${a}`:i,e.outcome].filter(Boolean).join(` · `),sessionId:e.scope.sessionId,agentId:r,taskId:e.scope.taskId??$(t.taskId),boardId:$(t.boardId)??e.scope.boardId,tool:$(t.toolName),status:e.outcome,raw:e}}function pe(e){return{id:e.id??`${e.filePath}:${e.timestamp}:${e.type}`,at:e.timestamp,action:e.type,actor:e.agentName??e.agent??e.agentId??`external`,source:e.source??`live`,summary:e.summary,sessionId:e.sessionId,agentId:e.agentId,tool:e.toolName,status:e.status,raw:e}}function me(e){let t=new Set;return e.sort((e,t)=>t.at-e.at).filter(e=>{let n=`${e.id}:${e.at}`;return t.has(n)?!1:(t.add(n),!0)})}function he(e){return e?e.split(/\r?\n/).length:0}function ge(e){return new TextEncoder().encode(e).length}function _e(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function ve(e){return e.length>18?`${e.slice(0,8)}…${e.slice(-6)}`:e}function ye(e,t){let n=N(e,t);return n?{added:n.filter(e=>e.kind===`add`).length,removed:n.filter(e=>e.kind===`del`).length,large:!1}:{added:0,removed:0,large:!0}}function be({file:e}){let{t:n}=d(),[r,o]=(0,q.useState)(!0),[c,l]=(0,q.useState)(ce),[u,f]=(0,q.useState)(`overview`),[h,g]=(0,q.useState)([]),[x,S]=(0,q.useState)([]),[C,w]=(0,q.useState)(!1),[T,E]=(0,q.useState)(null),[D,O]=(0,q.useState)(null),A=(0,q.useRef)(null),j=ne(e=>e.wsUrl),M=te(e=>e.history),N=te(e=>e.activeOperations),P=ie(e=>e.activeBoard),F=re(e=>e.snapshot),I=(0,q.useMemo)(()=>ee(j),[j]),L=(0,q.useCallback)(()=>{E(null),w(!0),typeof I.getGitDiff==`function`&&I.getGitDiff(e.path);let t=typeof I.supportsCapability==`function`?I.supportsCapability.bind(I):null;t?.(`chronicle.query`)?I.send({type:`chronicle.query`,payload:{query:{path:e.path,resourceKind:`file`,order:`desc`,limit:150}}}):w(!1),t?.(`chronicle.metrics`)&&I.send({type:`chronicle.metrics`,payload:{view:`files`,path:e.path,limit:1e3}})},[I,e.path]);(0,q.useEffect)(()=>{g([]),S([]),O(null);let t=I.on(`chronicle.query_result`,t=>{if(t.type!==`chronicle.query_result`)return;let n=t.payload.events.filter(t=>t.resource?.path&&Q(t.resource.path,e.path));t.payload.events.length>0&&n.length===0||(g(n),w(!1))}),n=I.on(`chronicle.metrics_result`,t=>{t.type!==`chronicle.metrics_result`||t.payload.view!==`files`||S(t.payload.data.filter(t=>Q(t.path,e.path)))}),r=I.on(`chronicle.error`,e=>{e.type===`chronicle.error`&&(E(e.payload.message),w(!1))}),i=I.on(`git.diff`,t=>{if(t.type!==`git.diff`||!Q(t.payload.path,e.path))return;let n=t.payload;if(n.error||n.binary||n.tooLarge){O({text:e.savedContent,available:!1,error:n.error});return}O({text:n.oldText??``,available:!0})});return L(),()=>{t(),n(),r(),i()}},[I,e.path,e.savedContent,L]),(0,q.useEffect)(()=>{let e=e=>{if(!A.current)return;let t=A.current.startY-e.clientY,n=Math.max(Y,Math.floor(window.innerHeight*.62));l(Math.min(n,Math.max(Y,A.current.startHeight+t)))},t=()=>{A.current=null,document.body.style.cursor=``,document.body.style.userSelect=``};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,t),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,t)}},[]);let R=(0,q.useMemo)(()=>{let t=[];for(let[n,r]of M)Q(n,e.path)&&t.push(...r);for(let n of N.values())t.push(...n.filter(t=>Q(t.filePath,e.path)));return t},[N,e.path,M]),z=(0,q.useMemo)(()=>me([...R.map(pe),...h.map(fe)]),[h,R]),B=(0,q.useMemo)(()=>ue(z),[z]),oe=(0,q.useMemo)(()=>se(x),[x]),V=D?.text??e.savedContent,H=(0,q.useMemo)(()=>ye(V,e.content),[V,e.content]),U=(0,q.useMemo)(()=>[...new Set(z.map(e=>e.sessionId).filter(e=>!!e))],[z]),W=(0,q.useMemo)(()=>[...new Set(z.map(e=>e.actor).filter(Boolean))],[z]),G=(0,q.useMemo)(()=>[...new Set(z.map(e=>e.taskId).filter(e=>!!e))],[z]),K=(0,q.useCallback)(e=>{let t=P?.tasks.find(t=>t.id===e),n=F?.tasks.find(t=>t.id===e||t.shortId===e);return t?.title??n?.title??e},[P,F]),X=e=>{r||o(!0),A.current={startY:e.clientY,startHeight:r?c:Y},document.body.style.cursor=`ns-resize`,document.body.style.userSelect=`none`},Z=[{id:`overview`,label:n(`activity:fileActivity.overview`),icon:(0,J.jsx)(v,{})},{id:`changes`,label:n(`activity:fileActivity.changes`),icon:(0,J.jsx)(s,{})},{id:`context`,label:n(`activity:fileActivity.context`),icon:(0,J.jsx)(y,{})},{id:`logs`,label:n(`activity:fileActivity.logs`),icon:(0,J.jsx)(i,{})}];return(0,J.jsxs)(`section`,{className:`flex shrink-0 flex-col overflow-hidden border-t border-border bg-card/95 shadow-[0_-10px_30px_hsl(var(--background)/0.24)] backdrop-blur`,style:{height:r?c:le},"data-testid":`file-activity-drawer`,children:[(0,J.jsx)(`button`,{type:`button`,"aria-label":n(`activity:fileActivity.resizeHint`),className:`group relative block h-2 w-full cursor-ns-resize touch-none`,onPointerDown:X,onDoubleClick:()=>{o(!0),l(ce)},title:n(`activity:fileActivity.resizeHint`),children:(0,J.jsx)(`span`,{className:`absolute left-1/2 top-0.5 h-1 w-10 -translate-x-1/2 rounded-full bg-border transition-colors group-hover:bg-primary/60`})}),(0,J.jsxs)(`header`,{className:`flex h-[30px] min-w-0 items-center gap-2 border-b border-border/70 px-2.5`,children:[(0,J.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:`inline-flex min-w-0 items-center gap-1.5 rounded px-1.5 py-1 text-[11px] font-semibold hover:bg-muted`,"aria-expanded":r,children:[(0,J.jsx)(b,{className:`h-3.5 w-3.5 shrink-0 text-primary`}),(0,J.jsx)(`span`,{className:`truncate`,children:n(`activity:fileActivity.title`)}),r?(0,J.jsx)(a,{className:`h-3 w-3`}):(0,J.jsx)(t,{className:`h-3 w-3`})]}),(0,J.jsx)(`span`,{className:`hidden h-3 w-px bg-border sm:block`}),(0,J.jsx)(xe,{label:`${he(e.content)} ${n(`activity:fileActivity.lines`)}`}),(0,J.jsx)(xe,{label:_e(ge(e.content))}),!H.large&&(H.added>0||H.removed>0)&&(0,J.jsxs)(`span`,{className:`hidden items-center gap-1 font-mono text-[10px] md:flex`,children:[(0,J.jsxs)(`span`,{className:`text-success`,children:[`+`,H.added]}),(0,J.jsxs)(`span`,{className:`text-destructive`,children:[`−`,H.removed]})]}),(0,J.jsxs)(`span`,{className:k(`ml-auto inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[9px] font-semibold uppercase tracking-wide`,B.level===`churn`&&`bg-destructive/10 text-destructive`,B.level===`active`&&`bg-warning/10 text-warning`,B.level===`quiet`&&`bg-success/10 text-success`),children:[(0,J.jsx)(_,{className:`h-2.5 w-2.5`}),n(`activity:fileActivity.level.${B.level}`)]}),(0,J.jsx)(`span`,{className:`hidden text-[9px] text-muted-foreground lg:inline`,children:n(`activity:fileActivity.evidenceCount`,{count:z.length})}),r&&(0,J.jsx)(`button`,{type:`button`,onClick:L,className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,title:n(`activity:fileActivity.refresh`),children:(0,J.jsx)(m,{className:k(`h-3.5 w-3.5`,C&&`animate-spin`)})})]}),r&&(0,J.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,J.jsxs)(`nav`,{className:`flex shrink-0 items-center gap-0.5 border-b border-border/60 bg-muted/20 px-2`,children:[Z.map(e=>(0,J.jsxs)(`button`,{type:`button`,onClick:()=>f(e.id),className:k(`inline-flex h-7 items-center gap-1.5 border-b-2 px-2 text-[10px] transition-colors [&>svg]:h-3 [&>svg]:w-3`,u===e.id?`border-primary font-medium text-foreground`:`border-transparent text-muted-foreground hover:text-foreground`),children:[e.icon,e.label]},e.id)),T&&(0,J.jsx)(`span`,{className:`ml-auto truncate px-2 text-[9px] text-warning`,children:T})]}),(0,J.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:[u===`overview`&&(0,J.jsx)(Se,{analysis:B,lifetime:oe,records:z,sessions:U,agents:W,tasks:G,taskLabel:K}),u===`changes`&&(0,J.jsxs)(`div`,{className:`h-full min-h-[120px] p-2`,children:[(0,J.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-2 text-[9px] text-muted-foreground`,children:[(0,J.jsx)(p,{className:`h-3 w-3`}),(0,J.jsx)(`span`,{children:D?.available?n(`activity:fileActivity.gitToBuffer`):n(`activity:fileActivity.savedToBuffer`)}),e.dirty&&(0,J.jsx)(`span`,{className:`rounded bg-warning/10 px-1.5 py-0.5 text-warning`,children:n(`activity:fileActivity.unsaved`)}),D?.error&&(0,J.jsx)(`span`,{className:`truncate text-warning`,children:D.error})]}),(0,J.jsx)(`div`,{className:`h-[calc(100%-24px)] min-h-[90px]`,children:(0,J.jsx)(ae,{oldText:V,newText:e.content,caption:e.path,fill:!0})})]}),u===`context`&&(0,J.jsx)(we,{sessions:U,agents:W,tasks:G,records:z,taskLabel:K,boardTitle:P?.title??F?.title}),u===`logs`&&(0,J.jsx)(De,{records:z,loading:C})]})]})]})}function xe({label:e}){return(0,J.jsx)(`span`,{className:`hidden whitespace-nowrap font-mono text-[9px] text-muted-foreground sm:inline`,children:e})}function Se({analysis:e,lifetime:t,records:n,sessions:r,agents:i,tasks:a,taskLabel:o}){let{t:l}=d();return(0,J.jsxs)(`div`,{className:`grid min-h-full grid-cols-1 gap-2 p-2 lg:grid-cols-[minmax(360px,.9fr)_minmax(420px,1.35fr)]`,children:[(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(`div`,{className:`grid grid-cols-4 gap-1.5`,children:[{label:l(`activity:fileActivity.mutations30m`),value:e.mutationCount,icon:(0,J.jsx)(s,{})},{label:l(`activity:fileActivity.sessions`),value:r.length,icon:(0,J.jsx)(g,{})},{label:l(`activity:fileActivity.actors`),value:i.length,icon:(0,J.jsx)(u,{})},{label:l(`activity:fileActivity.linkedWork`),value:a.length,icon:(0,J.jsx)(y,{})}].map(e=>(0,J.jsxs)(`div`,{className:`rounded-md border border-border/70 bg-background/45 px-2 py-1.5`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1 text-[9px] text-muted-foreground [&>svg]:h-3 [&>svg]:w-3`,children:[e.icon,(0,J.jsx)(`span`,{className:`truncate`,children:e.label})]}),(0,J.jsx)(`div`,{className:`mt-0.5 font-mono text-sm font-semibold`,children:e.value})]},e.label))}),t.mutations>0&&(0,J.jsx)(Ce,{lifetime:t}),(0,J.jsxs)(`div`,{className:k(`flex items-start gap-2 rounded-md border px-2.5 py-2 text-[10px]`,e.level===`churn`?`border-destructive/25 bg-destructive/[0.055]`:`border-border/70 bg-background/45`),children:[(0,J.jsx)(c,{className:k(`mt-0.5 h-3.5 w-3.5 shrink-0`,e.level===`churn`?`text-destructive`:`text-primary`)}),(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`div`,{className:`font-semibold`,children:l(`activity:fileActivity.analysisTitle.${e.level}`)}),(0,J.jsx)(`p`,{className:`mt-0.5 text-muted-foreground`,children:l(`activity:fileActivity.analysisBody.${e.level}`,{mutations:e.mutationCount,actors:e.actorCount,sessions:e.sessionCount})})]})]}),a.length>0&&(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 text-[9px]`,children:[(0,J.jsxs)(`span`,{className:`text-muted-foreground`,children:[l(`activity:fileActivity.workLinks`),`:`]}),a.slice(0,4).map(e=>(0,J.jsx)(`span`,{className:`max-w-[180px] truncate rounded border border-primary/20 bg-primary/5 px-1.5 py-0.5 text-primary`,title:e,children:o(e)},e))]})]}),(0,J.jsxs)(`div`,{className:`min-w-0 rounded-md border border-border/70 bg-background/35`,children:[(0,J.jsx)(`div`,{className:`border-b border-border/60 px-2.5 py-1.5 text-[9px] font-semibold uppercase tracking-wider text-muted-foreground`,children:l(`activity:fileActivity.recentActivity`)}),(0,J.jsx)(`div`,{className:`divide-y divide-border/40`,children:n.length===0?(0,J.jsx)(ke,{text:l(`activity:fileActivity.noEvidence`)}):n.slice(0,5).map(e=>(0,J.jsx)(Oe,{record:e},`${e.id}:${e.at}`))})]})]})}function Ce({lifetime:e}){let{t}=d(),n=[{value:e.mutations,label:t(`activity:fileActivity.lifetimeChanges`)},{value:e.sessions,label:t(`activity:fileActivity.lifetimeSessions`)},{value:e.tasks,label:t(`activity:fileActivity.lifetimeTasks`)},{value:e.boards,label:t(`activity:fileActivity.lifetimeBoards`)}],r=e.firstAt?new Date(e.firstAt).toLocaleDateString():void 0;return(0,J.jsxs)(`div`,{className:`rounded-md border border-primary/15 bg-primary/[0.03] px-2.5 py-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[9px] font-semibold uppercase tracking-wider text-primary [&>svg]:h-3 [&>svg]:w-3`,children:[(0,J.jsx)(b,{}),t(`activity:fileActivity.lifetimeTitle`)]}),(0,J.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[9px] text-muted-foreground`,children:[n.map(e=>(0,J.jsxs)(`span`,{children:[(0,J.jsx)(`b`,{className:`text-foreground`,children:e.value.toLocaleString()}),` `,e.label]},e.label)),r&&(0,J.jsx)(`span`,{children:t(`activity:fileActivity.lifetimeSince`,{date:r})})]}),e.tools.length>0&&(0,J.jsx)(`div`,{className:`mt-1 truncate font-mono text-[8px] text-muted-foreground`,title:e.tools.join(`, `),children:t(`activity:fileActivity.lifetimeTools`,{tools:e.tools.slice(0,6).join(`, `)})})]})}function we({sessions:e,agents:t,tasks:n,records:r,taskLabel:i,boardTitle:a}){let{t:o}=d();return(0,J.jsxs)(`div`,{className:`grid min-h-full grid-cols-1 divide-y divide-border/50 md:grid-cols-3 md:divide-x md:divide-y-0`,children:[(0,J.jsx)(Te,{icon:(0,J.jsx)(g,{}),title:o(`activity:fileActivity.sessions`),empty:o(`activity:fileActivity.noSessions`),children:e.map(e=>(0,J.jsx)(Ee,{title:ve(e),subtitle:`${r.filter(t=>t.sessionId===e).length} ${o(`activity:fileActivity.events`)}`,raw:e},e))}),(0,J.jsx)(Te,{icon:(0,J.jsx)(u,{}),title:o(`activity:fileActivity.actors`),empty:o(`activity:fileActivity.noActors`),children:t.map(e=>(0,J.jsx)(Ee,{title:e,subtitle:`${r.filter(t=>t.actor===e).length} ${o(`activity:fileActivity.events`)}`},e))}),(0,J.jsx)(Te,{icon:(0,J.jsx)(y,{}),title:o(`activity:fileActivity.workLinks`),empty:o(`activity:fileActivity.noWorkLinks`),children:n.map(e=>(0,J.jsx)(Ee,{title:i(e),subtitle:a??o(`activity:fileActivity.taskOrTodo`),raw:e},e))})]})}function Te({icon:e,title:t,empty:n,children:r}){let i=Array.isArray(r)?r.length>0:!!r;return(0,J.jsxs)(`section`,{className:`min-w-0 p-2`,children:[(0,J.jsxs)(`h3`,{className:`mb-1.5 flex items-center gap-1.5 text-[9px] font-semibold uppercase tracking-wider text-muted-foreground [&>svg]:h-3 [&>svg]:w-3`,children:[e,t]}),(0,J.jsx)(`div`,{className:`space-y-1`,children:i?r:(0,J.jsx)(ke,{text:n})})]})}function Ee({title:e,subtitle:t,raw:n}){return(0,J.jsxs)(`div`,{className:`rounded-md border border-border/60 bg-background/45 px-2 py-1.5`,title:n,children:[(0,J.jsx)(`div`,{className:`truncate text-[10px] font-medium`,children:e}),(0,J.jsx)(`div`,{className:`mt-0.5 truncate font-mono text-[8px] text-muted-foreground`,children:t})]})}function De({records:e,loading:t}){let{t:n}=d();return t&&e.length===0?(0,J.jsxs)(`div`,{className:`flex h-full items-center justify-center gap-2 text-[10px] text-muted-foreground`,children:[(0,J.jsx)(r,{className:`h-3.5 w-3.5 animate-spin`}),n(`activity:fileActivity.loadingEvidence`)]}):e.length===0?(0,J.jsx)(ke,{text:n(`activity:fileActivity.noEvidence`)}):(0,J.jsx)(`div`,{className:`divide-y divide-border/40`,children:e.map(e=>(0,J.jsx)(Oe,{record:e,raw:!0},`${e.id}:${e.at}`))})}function Oe({record:e,raw:t=!1}){let n=(0,J.jsxs)(`div`,{className:`grid grid-cols-[62px_74px_minmax(90px,.7fr)_minmax(160px,1.5fr)] items-center gap-2 text-[9px]`,children:[(0,J.jsx)(`span`,{className:`font-mono text-muted-foreground`,children:new Date(e.at).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}),(0,J.jsx)(`span`,{className:k(`w-fit rounded px-1.5 py-0.5 font-mono`,X.test(e.action)?`bg-warning/10 text-warning`:`bg-primary/10 text-primary`),children:e.action}),(0,J.jsx)(`span`,{className:`truncate`,title:e.agentId,children:e.actor}),(0,J.jsx)(`span`,{className:`truncate text-muted-foreground`,title:e.summary,children:e.summary})]});return t?(0,J.jsxs)(`details`,{className:`group cursor-pointer px-2.5 py-1.5`,children:[(0,J.jsx)(`summary`,{className:`list-none [&::-webkit-details-marker]:hidden`,children:n}),(0,J.jsx)(`pre`,{className:`mt-1.5 max-h-48 overflow-auto rounded border border-border/60 bg-background/60 p-2 font-mono text-[8px] leading-relaxed text-muted-foreground`,children:JSON.stringify(e.raw,null,2)})]}):(0,J.jsx)(`div`,{className:`px-2.5 py-1.5`,children:n})}function ke({text:e}){return(0,J.jsx)(`div`,{className:`px-3 py-3 text-center text-[10px] text-muted-foreground`,children:e})}T.config({monaco:O});function Ae(e){switch(e){case`method`:return E.CompletionItemKind.Method;case`function`:return E.CompletionItemKind.Function;case`constructor`:return E.CompletionItemKind.Constructor;case`field`:return E.CompletionItemKind.Field;case`variable`:return E.CompletionItemKind.Variable;case`class`:return E.CompletionItemKind.Class;case`interface`:return E.CompletionItemKind.Interface;case`module`:return E.CompletionItemKind.Module;case`property`:return E.CompletionItemKind.Property;case`unit`:return E.CompletionItemKind.Unit;case`value`:return E.CompletionItemKind.Value;case`enum`:return E.CompletionItemKind.Enum;case`keyword`:return E.CompletionItemKind.Keyword;case`snippet`:return E.CompletionItemKind.Snippet;case`file`:return E.CompletionItemKind.File;case`reference`:return E.CompletionItemKind.Reference;default:return E.CompletionItemKind.Text}}function je(){let e=A(e=>e.openFiles),t=A(e=>e.activeFilePath),n=A(e=>e.setActiveFile),r=A(e=>e.closeFile);return e.length===0?null:(0,J.jsx)(`div`,{className:`flex items-center border-b bg-muted/40 overflow-x-auto shrink-0`,children:e.map(e=>{let i=e.path===t,a=e.path.split(`/`).pop()??e.path;return(0,J.jsxs)(`button`,{type:`button`,onClick:()=>n(e.path),onMouseDown:t=>{t.button===1&&(t.preventDefault(),r(e.path))},className:k(`group flex items-center gap-1.5 px-3 py-1.5 text-[11px] border-r whitespace-nowrap min-w-0 max-w-[180px] transition-colors`,i?`bg-background border-t-2 border-t-primary text-foreground -mb-px`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`),title:e.path,children:[e.dirty&&(0,J.jsx)(x,{className:`h-2 w-2 fill-current text-primary shrink-0`}),(0,J.jsx)(`span`,{className:`truncate`,children:a}),(0,J.jsx)(f,{className:k(`h-3 w-3 shrink-0 rounded-sm hover:bg-muted-foreground/20 opacity-0 group-hover:opacity-100 transition-opacity`,i&&`opacity-100`),onClick:t=>{t.stopPropagation(),r(e.path)}})]},e.path)})})}function Me(){let{t:e}=d(),t=A(e=>e.openFiles),r=A(e=>e.activeFilePath),i=A(e=>e.updateContent),{theme:a}=P(),o=(0,q.useRef)(null),s=(0,q.useRef)(r),c=(0,q.useRef)(new Map),u=(0,q.useMemo)(()=>t.find(e=>e.path===r)??null,[t,r]),f=r?H(r):`plaintext`,p=I(),[m,h]=(0,q.useState)(!1);(0,q.useEffect)(()=>{s.current=r},[r]),(0,q.useEffect)(()=>{let e=I();C.setTheme(e)},[a]),(0,q.useEffect)(()=>{let e=R.map(e=>E.registerCompletionItemProvider(e,{triggerCharacters:[`.`,`_`],provideCompletionItems:async(e,t,n,r)=>{let i=s.current;if(!i)return{suggestions:[]};let a=e.getOffsetAt(t),o=e.getValue(),l=o.slice(Math.max(0,a-z),a),u=o.slice(a,a+B),d=e.getLineContent(t.lineNumber).slice(0,Math.max(0,t.column-1)),f=U(d),p={triggerCharacter:n.triggerCharacter,triggerKind:n.triggerKind};if(!W(p,f))return{suggestions:[]};let m=`cmp_${Date.now()}_${Math.random().toString(36).slice(2)}`,h=e.getWordUntilPosition(t),g={startLineNumber:t.lineNumber,endLineNumber:t.lineNumber,startColumn:h.startColumn,endColumn:t.column},_=ee(ne.getState().wsUrl),v=e=>e.map((e,t)=>({label:e.label,kind:Ae(e.kind),insertText:e.insertText,detail:e.detail??(e.source?`WrongStack ${e.source}`:void 0),documentation:e.documentation,sortText:e.sortText??`${String(t).padStart(3,`0`)}-${e.label}`,range:g,insertTextRules:e.kind===`snippet`?E.CompletionItemInsertTextRule.InsertAsSnippet:void 0})),y=K({filePath:i,language:e.getLanguageId(),lineNumber:t.lineNumber,column:t.column,versionId:e.getVersionId(),triggerCharacter:n.triggerCharacter,linePrefix:d,suffix:u}),b=c.current.get(y);return b&&b.expiresAt>Date.now()?{suggestions:v(b.items)}:await new Promise(a=>{let s=!1,d=()=>{},h=null,g,b=e=>{s||(s=!0,d(),g!==void 0&&window.clearTimeout(g),h?.dispose(),a({suggestions:e}))};d=_.on(`completion.result`,e=>{let t=e;t.payload.requestId===m&&(c.current.set(y,{expiresAt:Date.now()+V,items:t.payload.items}),b(v(t.payload.items)))}),g=window.setTimeout(()=>b([]),oe),h=r.onCancellationRequested(()=>b([])),_.requestCompletion({requestId:m,filePath:i,language:e.getLanguageId(),lineNumber:t.lineNumber,column:t.column,content:o.length<=5e5?o:void 0,prefix:l,suffix:u,triggerCharacter:n.triggerCharacter,triggerKind:n.triggerKind,allowLlm:G(p,f)})})}}));return()=>{e.forEach(e=>{e.dispose()})}},[]);let g=(0,q.useCallback)(()=>{let e=o.current;if(!e)return null;let t=e.getSelection();if(!t||t.isEmpty())return null;let n=e.getModel();if(!n)return null;let r=n.getValueInRange(t);return r.trim()?{content:r,startLine:t.startLineNumber,endLine:t.endLineNumber}:null},[]),_=(0,q.useCallback)(()=>{M(`chat`),requestAnimationFrame(()=>{document.querySelector(`[data-chat-textarea]`)?.focus()})},[]),v=(0,q.useCallback)(()=>{let e=s.current;if(!e)return;let t=g();t&&(j.getState().addRef({kind:`snippet`,path:e,startLine:t.startLine,endLine:t.endLine,content:t.content}),_())},[g,_]),y=(0,q.useCallback)(()=>{let e=s.current;e&&(j.getState().addRef({kind:`file`,path:e}),_())},[_]),b=(0,q.useCallback)(t=>{o.current=t,C.setTheme(I()),t.onDidChangeCursorSelection(()=>{let e=t.getSelection();h(!!e&&!e.isEmpty())}),t.addAction({id:`wrongstack-send-to-chat`,label:e(`activity:codeEditor.sendSelectionAction`),contextMenuGroupId:`wrongstack`,contextMenuOrder:0,precondition:void 0,keybindings:[w.CtrlCmd|w.Shift|D.KeyL],run:e=>{let t=e.getSelection();t&&!t.isEmpty()?v():y()}})},[v,y]),x=(0,q.useCallback)(e=>{r&&e!==void 0&&i(r,e)},[r,i]);return(0,q.useEffect)(()=>{let e=e=>{let t=e.ctrlKey||e.metaKey,n=e.target?.tagName?.toLowerCase()===`textarea`||e.target?.closest(`.monaco-editor`)!==null;!t||!n||(e.key.toLowerCase()===`s`&&(e.preventDefault(),window.dispatchEvent(new CustomEvent(`wrongstack:save-file`,{detail:{filePath:r}}))),e.key.toLowerCase()===`w`&&(e.preventDefault(),r&&A.getState().closeFile(r)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r]),t.length===0?(0,J.jsx)(F,{title:e(`activity:codeEditor.noFilesOpen`),description:e(`activity:codeEditor.selectToEdit`)}):(0,J.jsxs)(`div`,{className:`flex h-full min-w-0 flex-col overflow-hidden`,children:[(0,J.jsx)(je,{}),(0,J.jsxs)(`div`,{className:`relative min-h-0 min-w-0 flex-1 overflow-hidden`,children:[(m||u)&&(0,J.jsx)(`div`,{className:`absolute top-2 right-2 z-10 flex items-center gap-1 rounded-lg border border-border bg-popover/95 backdrop-blur shadow-md p-1`,children:(0,J.jsxs)(`button`,{type:`button`,onClick:m?v:y,className:`inline-flex items-center gap-1.5 rounded-md px-2 py-1 text-[11px] text-foreground hover:bg-accent transition-colors`,title:e(m?`activity:codeEditor.sendSelectedTitle`:`activity:codeEditor.mentionFileTitle`),children:[m?(0,J.jsx)(l,{className:`h-3 w-3`}):(0,J.jsx)(n,{className:`h-3 w-3`}),(0,J.jsx)(`span`,{children:e(m?`activity:codeEditor.sendToChat`:`activity:codeEditor.mentionFile`)})]})}),u?(0,J.jsx)(S,{language:f,value:u.content,onChange:x,theme:p,onMount:b,loading:(0,J.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,J.jsx)(`span`,{className:`text-[11px] text-muted-foreground animate-pulse`,children:e(`activity:codeEditor.loadingEditor`)})}),options:{minimap:{enabled:!1},fontSize:13,fontFamily:`'IBM Plex Mono', 'Cascadia Code', 'Fira Code', 'JetBrains Mono', monospace`,lineNumbers:`on`,renderWhitespace:`selection`,scrollBeyondLastLine:!1,wordWrap:`off`,tabSize:2,smoothScrolling:!0,cursorBlinking:`smooth`,cursorSmoothCaretAnimation:`on`,bracketPairColorization:{enabled:!0},"semanticHighlighting.enabled":!0,automaticLayout:!0,padding:{top:8}}},u.path):(0,J.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,J.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:e(`activity:codeEditor.selectTab`)})})]}),u&&(0,J.jsx)(be,{file:u})]})}export{Me as CodeEditor};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Ar as t,Dn as n,Dr as r,En as i,Et as a,Gr as o,Ii as s,Ji as c,Kn as l,On as u,Ri as d,Sa as f,Ut as p,Zr as m,Zt as h,_ as g,a as _,at as v,br as y,c as b,et as x,f as S,fr as ee,g as C,h as te,i as w,ir as T,ln as E,m as ne,ma as D,mn as O,n as re,p as ie,r as ae,rt as oe,s as se,sa as ce,u as le,yn as ue}from"./vendor-2VBBgNb5.js";import{t as k}from"./utils-CN2sfDVP.js";import{i as de,r as fe,t as pe}from"./codemap-activity-store-DP3mCZu1.js";import{t as me}from"./codemap-index-store-DyAe3ZYJ.js";var A=e(f(),1),j=new Map;function M(e){let t=j.get(e);if(t!==void 0)return t;let n=e.replace(/\\/g,`/`).replace(/^\.\//,``).toLocaleLowerCase();return j.set(e,n),n}function N(e){return e.level===`packages`?`packages`:e.level===`files`?`files:${e.package}`:`symbols:${e.file}`}function he(e){return e.level===`packages`?`/api/codemap/packages`:e.level===`files`?`/api/codemap/files?package=${encodeURIComponent(e.package)}`:`/api/codemap/symbols?file=${encodeURIComponent(e.file)}`}function ge(e,t,n){let r=new Map(e.nodes.map(e=>[e.id,e])),i=[];for(let a of e.edges){let e=n===`incoming`?a.target===t?a.source:void 0:a.source===t?a.target:void 0;if(!e)continue;let o=r.get(e);o&&i.push({node:o,edge:a})}return i.sort((e,t)=>t.edge.weight-e.edge.weight||e.node.label.localeCompare(t.node.label))}function _e(e,t){let n=new Set([t]);for(let r of e.edges)r.source===t&&n.add(r.target),r.target===t&&n.add(r.source);return n}function P(e,t){let n=new Map(e.nodes.map(e=>[e.id,0]));for(let r of e.edges)!t.has(r.source)||!t.has(r.target)||(n.set(r.source,(n.get(r.source)??0)+r.weight),r.target!==r.source&&n.set(r.target,(n.get(r.target)??0)+r.weight));return n}function ve(e){let t=new Set(e.nodes.map(e=>e.id)),n=P(e,t),r=new Map(e.nodes.map(e=>[e.id,0])),i=new Map;for(let n of e.edges){if(!t.has(n.source)||!t.has(n.target)||n.source===n.target)continue;r.set(n.target,(r.get(n.target)??0)+1);let e=i.get(n.source)??[];e.push(n.target),i.set(n.source,e)}let a=new Map,o=e.nodes.filter(e=>(r.get(e.id)??0)===0).sort((e,t)=>(n.get(t.id)??0)-(n.get(e.id)??0)).map(e=>e.id);o.length===0&&e.nodes[0]&&o.push(e.nodes[0].id);for(let e of o)a.set(e,0);let s=new Set,c=0;for(;c<o.length;){let e=o[c++];if(!s.has(e)){s.add(e);for(let t of i.get(e)??[])a.set(t,Math.max(a.get(t)??0,Math.min((a.get(e)??0)+1,7))),r.set(t,(r.get(t)??1)-1),(r.get(t)??0)<=0&&o.push(t)}}let l=e.nodes.filter(e=>!a.has(e.id)).sort((e,t)=>(n.get(t.id)??0)-(n.get(e.id)??0));l.forEach((e,t)=>{a.set(e.id,t%Math.min(4,Math.max(1,l.length)))});let u=new Map;for(let t of e.nodes){let e=a.get(t.id)??0,n=u.get(e)??[];n.push(t),u.set(e,n)}for(let e of u.values())e.sort((e,t)=>Number(e.external)-Number(t.external)||(n.get(t.id)??0)-(n.get(e.id)??0)||e.label.localeCompare(t.label));let d=Math.max(1,...[...u.values()].map(e=>e.length))*160,f=[];for(let[e,t]of[...u.entries()].sort(([e],[t])=>e-t)){let n=(d-t.length*160)/2;t.forEach((t,r)=>{f.push({node:t,position:{x:e*386,y:n+r*160}})})}return f}function ye(e,t){if(e.nodes.length===0)return[];let n=P(e,new Set(e.nodes.map(e=>e.id))),r=e.nodes.find(e=>e.id===t)??[...e.nodes].sort((e,t)=>(n.get(t.id)??0)-(n.get(e.id)??0))[0],i=_e(e,r.id);i.delete(r.id);let a=e.nodes.filter(e=>i.has(e.id)),o=e.nodes.filter(e=>e.id!==r.id&&!i.has(e.id)),s=[{node:r,position:{x:0,y:0}}],c=(e,t,n)=>{e.forEach((r,i)=>{let a=n+Math.PI*2*i/Math.max(1,e.length);s.push({node:r,position:{x:Math.cos(a)*t,y:Math.sin(a)*t}})})};c(a,Math.max(330,a.length*34),-Math.PI/2);for(let e=0;e<o.length;e+=18)c(o.slice(e,e+18),620+Math.floor(e/18)*280,-Math.PI/2+.12);return s}function be(e,t,n){return t===`orbit`?ye(e,n):ve(e)}function F(e,t,n){if(e.length<=n)return e;let r=t?e.filter(e=>e.source===t||e.target===t):[],i=e.filter(e=>!t||e.source!==t&&e.target!==t).sort((e,t)=>t.weight-e.weight||e.source.localeCompare(t.source)||e.target.localeCompare(t.target)),a=Math.max(0,n-r.length);return[...r,...i.slice(0,a)]}function xe(e,t,n){if(n===`all`)return e;let r=e.nodes;if(e.nodes.length>96){let n=new Map(e.nodes.map(e=>[e.id,e])),i=new Map;for(let t of e.edges)i.set(t.source,(i.get(t.source)??0)+t.weight),i.set(t.target,(i.get(t.target)??0)+t.weight);let a=[...e.nodes].sort((e,t)=>(i.get(t.id)??0)-(i.get(e.id)??0)||e.label.localeCompare(t.label)),o=new Set,s=e=>{n.has(e)&&o.size<96&&o.add(e)};if(t&&n.has(t)){s(t);let n=e.edges.filter(e=>e.source===t||e.target===t).sort((e,t)=>t.weight-e.weight);for(let e of n)s(e.source),s(e.target);let r=new Set(o),i=e.edges.filter(e=>r.has(e.source)||r.has(e.target)).sort((e,t)=>t.weight-e.weight);for(let e of i)s(e.source),s(e.target)}else{let e=a.filter(e=>!e.external).slice(0,72),t=a.filter(e=>e.external).slice(0,24);for(let n of[...e,...t])s(n.id)}for(let e of a)s(e.id);r=e.nodes.filter(e=>o.has(e.id))}let i=new Set(r.map(e=>e.id)),a=e.edges.filter(e=>i.has(e.source)&&i.has(e.target));return{nodes:r,edges:F(a,t,180)}}function I(e){let t=(e.file??e.label).replace(/\\/g,`/`),n=e.package??``,r=n.startsWith(`@wrongstack/`)?`/packages/${n.slice(12)}/`:n.startsWith(`app:`)?`/apps/${n.slice(4)}/`:void 0;if(r){let e=t.indexOf(r);if(e>=0)return t.slice(e+r.length)}let i=t.lastIndexOf(`/src/`);return i>=0?t.slice(i+1):t.split(`/`).slice(-3).join(`/`)}var L=new WeakMap;function Se(e){let t=L.get(e);if(t)return t;let n={name:``,path:``,directories:[],files:[]};for(let t of e.filter(e=>e.kind===`file`&&!e.external)){let e=I(t).split(`/`).filter(Boolean),r=e.pop()??t.label,i=n;for(let t of e){let e=i.path?`${i.path}/${t}`:t,n=i.directories.find(e=>e.name===t);n||(n={name:t,path:e,directories:[],files:[]},i.directories.push(n)),i=n}i.files.push({...t,label:r})}let r=e=>{e.directories.sort((e,t)=>e.name.localeCompare(t.name)),e.files.sort((e,t)=>e.label.localeCompare(t.label)),e.directories.forEach(r)};return r(n),L.set(e,n),n}function Ce(e){let t=2166136261,n=e=>{for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)};for(let t of e.nodes)n(t.id);for(let r of e.edges)n(r.source),n(r.target),n(r.refType),t^=r.weight|0,t=Math.imul(t,16777619);return`${e.nodes.length}:${e.edges.length}:${t>>>0}`}function we(e,t,n,r){for(e.has(t)&&e.delete(t),e.set(t,n);e.size>r;){let t=e.keys().next().value;if(t===void 0)break;e.delete(t)}}function Te(e,t){if(!e||!t)return!1;let n=M(e),r=M(t);return n===r||n.endsWith(`/${r}`)||r.endsWith(`/${n}`)}function Ee(e){let t=M(e),n=t.match(/\/packages\/([^/]+)\//);if(n?.[1])return`@wrongstack/${n[1]}`;let r=t.match(/\/apps\/([^/]+)\//);return r?.[1]?`app:${r[1]}`:`(root)`}function De(e,t){return t.kind===`package`?Ee(e.filePath)===(t.package??t.label):Te(e.filePath,t.file)?t.kind!==`symbol`||e.symbol?.id===t.id:!1}function Oe(e){let t=new Map;for(let n of e){let e=M(n.filePath),r=t.get(e);r?r.push(n):t.set(e,[n])}return t}function ke(e,t){let n=new Map;if(t.length===0||e.length===0)return n;let r=Oe(t),i=new Map;for(let a of e){let e;if(a.kind===`package`){let n=a.package??a.label,r=i.get(n);r||(r=t.filter(e=>Ee(e.filePath)===n),i.set(n,r)),e=r}else if(a.file){let t=M(a.file),n=r.get(t);if(!n){n=[];for(let[e,i]of r)(e.endsWith(`/${t}`)||t.endsWith(`/${e}`))&&n.push(...i)}e=a.kind===`symbol`?n.filter(e=>e.symbol?.id===a.id):n}else e=[];e.length>0&&n.set(a.id,e)}return n}function Ae(e){if(e.length===0)return``;let t=`${e.length}`;for(let n=0;n<e.length;n++){let r=e[n];t+=`|${r.id??``}:${r.toolUseId??``}:${r.filePath}:${r.type}:${r.status??``}:${r.symbol?.id??``}:${r.timestamp}`}return t}function je(e,t){let n=t.filter(t=>t.kind===`symbol`&&!t.external&&Te(t.file,e.filePath));if(n.length===0)return;if(e.line)return[...n].sort((e,t)=>(t.line??0)-(e.line??0)).find(t=>(t.line??0)<=e.line)??n[0];let r=e.summary.toLocaleLowerCase();return n.find(e=>e.label.length>2&&(r.includes(e.label.toLocaleLowerCase())||!!(e.signature&&r.includes(e.signature.toLocaleLowerCase()))))}var R=x();function Me({historyFile:e,fileHistory:t,onClose:n}){return(0,R.jsxs)(`div`,{className:`absolute right-0 top-0 z-50 flex h-full w-[390px] max-w-[90%] flex-col border-l bg-card shadow-2xl`,children:[(0,R.jsxs)(`div`,{className:`flex h-12 items-center justify-between border-b px-4`,children:[(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,R.jsx)(D,{className:`h-4 w-4 shrink-0 text-warning`}),(0,R.jsx)(`span`,{className:`truncate font-mono text-[11px] font-semibold`,title:e,children:e})]}),(0,R.jsx)(`button`,{type:`button`,onClick:n,className:`flex h-7 w-7 items-center justify-center border text-muted-foreground hover:bg-muted`,"aria-label":`Close activity`,children:(0,R.jsx)(v,{className:`h-3.5 w-3.5`})})]}),(0,R.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-3`,children:t.length===0?(0,R.jsx)(`p`,{className:`py-12 text-center text-[10px] text-muted-foreground`,children:`No activity recorded for this file yet.`}):t.map((e,t)=>(0,R.jsxs)(`div`,{className:`mb-1 flex items-start gap-2 border p-2 text-[10px]`,children:[(0,R.jsx)(`span`,{className:k(`border px-1.5 py-0.5 font-mono text-[8px] font-bold uppercase`,e.type===`delete`?`border-destructive/40 text-destructive`:e.type===`read`?`border-info/40 text-info`:`border-warning/40 text-warning`),children:e.type}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`div`,{className:`font-mono text-[9px] text-muted-foreground`,children:new Date(e.timestamp).toLocaleTimeString()}),e.toolName&&(0,R.jsxs)(`div`,{className:`mt-1`,children:[`via `,e.toolName]}),e.agent&&(0,R.jsx)(`div`,{className:`text-muted-foreground`,children:e.agent}),e.summary&&(0,R.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:e.summary}),e.change&&(0,R.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 font-mono text-[8px]`,children:[(0,R.jsxs)(`span`,{className:`border border-success/40 bg-success/10 px-1 text-success`,children:[`+`,e.change.added]}),(0,R.jsxs)(`span`,{className:`border border-destructive/40 bg-destructive/10 px-1 text-destructive`,children:[`−`,e.change.removed]}),e.change.before&&(0,R.jsx)(`span`,{className:`ml-1 truncate text-destructive/80`,title:e.change.before,children:e.change.before}),e.change.after&&(0,R.jsxs)(`span`,{className:`truncate text-success/80`,title:e.change.after,children:[`→ `,e.change.after]})]}),(0,R.jsxs)(`div`,{className:`mt-1 flex gap-2 font-mono text-[8px] uppercase text-muted-foreground`,children:[(0,R.jsx)(`span`,{children:e.status??`observed`}),(0,R.jsx)(`span`,{children:e.source??`legacy`}),e.durationMs!==void 0&&(0,R.jsxs)(`span`,{children:[e.durationMs,`ms`]}),e.watcherConfirmed&&(0,R.jsx)(`span`,{className:`text-success`,children:`fs verified`})]})]})]},`${e.timestamp}-${t}`))}),(0,R.jsxs)(`div`,{className:`border-t px-4 py-2 font-mono text-[9px] text-muted-foreground`,children:[t.length,` events · newest first`]})]})}var z={package:{icon:i,accent:`border-l-primary`,iconStyle:`bg-primary/12 text-primary`},file:{icon:o,accent:`border-l-info`,iconStyle:`bg-info/12 text-info`},symbol:{icon:c,accent:`border-l-success`,iconStyle:`bg-success/12 text-success`}},Ne={call:`hsl(var(--primary))`,import:`hsl(var(--info))`,type_ref:`hsl(var(--success))`,inherit:`hsl(var(--warning))`,implement:`hsl(var(--destructive))`},Pe={read:`ring-2 ring-info/60 shadow-info/20`,write:`ring-2 ring-warning/70 shadow-warning/30`,edit:`ring-2 ring-warning/80 shadow-warning/40`,delete:`ring-2 ring-destructive/70 shadow-destructive/30`,search:`ring-2 ring-primary/55 shadow-primary/20`,memory:`ring-2 ring-success/60 shadow-success/30`,index:`ring-2 ring-info/50 shadow-info/20`,execute:`ring-2 ring-primary/55 shadow-primary/25`},Fe=[`bg-primary text-primary-foreground`,`bg-info text-info-foreground`,`bg-success text-success-foreground`,`bg-warning text-warning-foreground`,`bg-destructive text-destructive-foreground`];function Ie(e){let t=e.trim().split(/[\s:_-]+/).filter(Boolean);return(t.length>1?`${t[0]?.[0]??``}${t[1]?.[0]??``}`:e.slice(0,2)).toLocaleUpperCase()}function Le(e){let t=0;for(let n of e)t=t*31+n.charCodeAt(0)|0;return Fe[Math.abs(t)%Fe.length]??Fe[0]}function Re(e){let t=0;for(let n of e)t=t*31+n.charCodeAt(0)|0;return`hsl(${Math.abs(t)%360} 82% 58%)`}function B(e){let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/packages/`),r=t.lastIndexOf(`/apps/`),i=Math.max(n,r);return i>=0?t.slice(i+1):t.split(`/`).slice(-3).join(`/`)}function V(e){return[e.symbol?.name,e.line?`L${e.line}`:void 0].filter(Boolean).join(` · `)}function H({data:e}){let{graphNode:t,selected:n,dimmed:r,incoming:i,outgoing:a,isActive:o,activityType:s,activeOperations:c}=e,l=z[t.kind],u=l.icon,d=t.kind!==`symbol`,f=t.kind===`symbol`?`${t.symbolKind??`symbol`}${t.line?` · L${t.line}`:``}`:t.kind===`file`?I(t):`${t.fileCount??0} files · ${t.symbolCount??0} symbols`;return(0,R.jsxs)(`div`,{className:k(`group relative w-[236px] border border-l-[3px] bg-card text-card-foreground shadow-[0_8px_24px_hsl(var(--shadow-color)/0.08)] transition-[opacity,box-shadow,border-color,background-color]`,l.accent,n&&`border-primary bg-primary/5 shadow-[0_0_0_2px_hsl(var(--primary)/0.18),0_16px_36px_hsl(var(--shadow-color)/0.18)]`,t.external&&`border-dashed bg-muted/75`,r&&`opacity-25 grayscale`,o&&s&&Pe[s]),children:[c.length>0&&(0,R.jsxs)(`div`,{className:`absolute -top-5 left-2 z-20 flex max-w-[210px] items-center gap-1`,children:[c.slice(0,4).map(e=>{let t=e.agentName??e.agent??`External`,n=`${e.sessionId??`none`}:${e.agentId??t}`;return(0,R.jsxs)(`span`,{className:k(`flex h-6 items-center gap-1 border-2 border-background px-1.5 font-mono text-[8px] font-bold shadow-md`,Le(n)),title:`${t} · ${e.type} ${V(e)}`,children:[(0,R.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse bg-current`}),Ie(t),e.symbol&&(0,R.jsx)(`span`,{className:`max-w-[80px] truncate`,children:e.symbol.name})]},e.id??`${n}:${e.filePath}`)}),c.length>4&&(0,R.jsxs)(`span`,{className:`border bg-card px-1 font-mono text-[8px] shadow`,children:[`+`,c.length-4]})]}),(0,R.jsx)(se,{type:`target`,position:g.Left,className:`!h-2.5 !w-2.5 !border-2 !border-card !bg-muted-foreground`}),(0,R.jsxs)(`button`,{type:`button`,className:`block w-full text-left`,onClick:n=>{if(n.shiftKey&&t.file){e.onShowHistory(t.file);return}e.onSelect(t)},onDoubleClick:()=>d&&e.onOpen(t),"aria-label":`${t.kind} ${t.label}`,children:[(0,R.jsxs)(`div`,{className:`flex items-start gap-3 p-3 pr-10`,children:[(0,R.jsx)(`span`,{className:k(`flex h-8 w-8 shrink-0 items-center justify-center border`,l.iconStyle),children:(0,R.jsx)(u,{className:`h-4 w-4`})}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[9px] font-bold uppercase tracking-[0.18em] text-muted-foreground`,children:[(0,R.jsx)(`span`,{children:t.kind}),t.external&&(0,R.jsx)(`span`,{className:`border border-border px-1 py-0.5 text-[8px] text-warning`,children:`external`}),t.lang&&(0,R.jsx)(`span`,{className:`ml-auto font-mono normal-case tracking-normal`,children:t.lang})]}),(0,R.jsx)(`div`,{className:`truncate font-mono text-[13px] font-semibold`,title:t.label,children:t.label}),(0,R.jsx)(`div`,{className:`mt-1 truncate text-[10px] text-muted-foreground`,title:f,children:f})]})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-3 border-t bg-muted/30 px-3 py-1.5 font-mono text-[9px] text-muted-foreground`,children:[(0,R.jsxs)(`span`,{title:`Incoming relationships`,children:[`← `,i]}),(0,R.jsxs)(`span`,{title:`Outgoing relationships`,children:[`→ `,a]}),t.symbolCount!==void 0&&t.kind===`file`&&(0,R.jsxs)(`span`,{className:`ml-auto`,children:[t.symbolCount,` sym`]}),o&&(0,R.jsxs)(`span`,{className:`ml-auto flex items-center gap-1 font-bold text-warning`,children:[(0,R.jsx)(E,{className:`h-2.5 w-2.5 animate-pulse`}),` LIVE`]})]})]}),d&&(0,R.jsx)(`button`,{type:`button`,className:`absolute right-2 top-2 z-10 flex h-7 w-7 items-center justify-center border border-transparent text-muted-foreground opacity-0 transition hover:border-border hover:bg-muted hover:text-foreground group-hover:opacity-100 focus:opacity-100`,onClick:()=>e.onOpen(t),title:t.kind===`package`?`Open file map`:`Open symbol map`,"aria-label":`Open ${t.label} map`,children:(0,R.jsx)(m,{className:`h-3.5 w-3.5`})}),(0,R.jsx)(se,{type:`source`,position:g.Right,className:`!h-2.5 !w-2.5 !border-2 !border-card !bg-muted-foreground`})]})}function ze(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Be(e,t){return e.graphNode===t.graphNode&&e.selected===t.selected&&e.dimmed===t.dimmed&&e.incoming===t.incoming&&e.outgoing===t.outgoing&&e.isActive===t.isActive&&e.activityType===t.activityType&&e.onSelect===t.onSelect&&e.onOpen===t.onOpen&&e.onShowHistory===t.onShowHistory&&ze(e.activeOperations,t.activeOperations)}var U={codemap:(0,A.memo)(H,(e,t)=>Be(e.data,t.data))},Ve={nodes:[],edges:[]};function He({loading:e,error:t,graph:n,canvasNodeCount:r,flowNodes:i,flowEdges:a,onNodesChange:o,onEdgesChange:s,agentTrailCount:c}){return(0,R.jsxs)(R.Fragment,{children:[e&&(0,R.jsxs)(`div`,{className:`absolute inset-0 z-20 flex flex-col items-center justify-center gap-3 bg-background/75 backdrop-blur-sm`,children:[(0,R.jsx)(l,{className:`h-7 w-7 animate-spin text-primary`}),(0,R.jsx)(`span`,{className:`font-mono text-[10px] uppercase tracking-widest text-muted-foreground`,children:`Mapping relationships`})]}),t&&!e&&(0,R.jsxs)(`div`,{className:`absolute inset-0 z-20 flex flex-col items-center justify-center gap-3 p-8 text-center`,children:[(0,R.jsx)(u,{className:`h-10 w-10 text-destructive`}),(0,R.jsx)(`p`,{className:`font-mono text-sm text-destructive`,children:t}),(0,R.jsxs)(`p`,{className:`max-w-md text-xs text-muted-foreground`,children:[`The map needs a codebase index. Run`,` `,(0,R.jsx)(`code`,{className:`border bg-muted px-1.5 py-0.5`,children:`codebase-index`}),` once, then reopen this view.`]})]}),!e&&!t&&n.nodes.length===0&&(0,R.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-2 text-muted-foreground`,children:[(0,R.jsx)(u,{className:`h-8 w-8 opacity-40`}),(0,R.jsx)(`p`,{className:`text-xs`,children:`No indexed nodes at this level.`})]}),!e&&!t&&n.nodes.length>1&&n.edges.length===0&&(0,R.jsxs)(`div`,{className:`pointer-events-none absolute left-1/2 top-14 z-10 -translate-x-1/2 border border-warning/40 bg-warning/10 px-3 py-2 text-center shadow backdrop-blur`,children:[(0,R.jsx)(`div`,{className:`font-mono text-[9px] font-bold uppercase tracking-wider text-warning`,children:`No resolved relations in this scope`}),(0,R.jsx)(`div`,{className:`mt-0.5 text-[8px] text-muted-foreground`,children:`The upgraded index will rebuild and resolve call/import/type links automatically.`})]}),!t&&n.nodes.length>0&&(0,R.jsxs)(S,{nodes:i,edges:a,onNodesChange:o,onEdgesChange:s,nodeTypes:U,nodesConnectable:!1,nodesDraggable:!1,edgesFocusable:!1,elementsSelectable:!1,onlyRenderVisibleElements:!0,minZoom:.08,maxZoom:2.2,proOptions:{hideAttribution:!0},children:[(0,R.jsx)(ae,{variant:w.Dots,gap:r>60?32:22,size:1,color:`hsl(var(--muted-foreground))`,className:`!opacity-25`}),(0,R.jsx)(_,{position:`bottom-left`,showInteractive:!1,className:`!border !border-border !bg-card !shadow-md [&>button]:!border-border [&>button]:!bg-card [&>button]:!fill-foreground`}),r<=48&&(0,R.jsx)(b,{position:`bottom-right`,pannable:!0,zoomable:!0,className:`!h-[112px] !w-[180px] !border !border-border !bg-card !shadow-md`,maskColor:`hsl(var(--background) / 0.72)`,nodeColor:e=>{let t=e.data?.graphNode.kind;return t===`package`?`hsl(var(--primary))`:t===`file`?`hsl(var(--info))`:`hsl(var(--success))`}})]}),(0,R.jsxs)(`div`,{className:`pointer-events-none absolute bottom-3 left-1/2 z-10 flex -translate-x-1/2 items-center gap-3 border bg-card/90 px-3 py-1.5 font-mono text-[8px] text-muted-foreground shadow backdrop-blur`,children:[Object.entries(Ne).map(([e,t])=>(0,R.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,R.jsx)(`span`,{className:`h-0.5 w-3`,style:{backgroundColor:t}}),e.replace(`_`,` `)]},e)),(0,R.jsxs)(`span`,{className:`flex items-center gap-1 text-primary`,"data-testid":`agent-trail-count`,children:[(0,R.jsx)(`span`,{className:`w-4 border-t-2 border-dashed border-primary`}),`agent trail`,c>0?` ×${c}`:``]})]})]})}function Ue({layout:e,canvasMode:t,edgeFilter:r,canvasNodeCount:i,graphNodeCount:a,onLayoutChange:o,onCanvasModeChange:s,onEdgeFilterChange:c}){return(0,R.jsxs)(`div`,{className:`pointer-events-none absolute left-3 right-3 top-3 z-10 flex items-center gap-2`,children:[(0,R.jsxs)(`div`,{className:`pointer-events-auto flex border bg-card/95 shadow-md backdrop-blur`,children:[(0,R.jsxs)(`button`,{type:`button`,className:k(`flex h-8 items-center gap-1.5 border-r px-2.5 text-[9px] font-semibold uppercase tracking-wider`,e===`layers`?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted`),onClick:()=>o(`layers`),children:[(0,R.jsx)(T,{className:`h-3 w-3`}),` Layers`]}),(0,R.jsxs)(`button`,{type:`button`,className:k(`flex h-8 items-center gap-1.5 px-2.5 text-[9px] font-semibold uppercase tracking-wider`,e===`orbit`?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted`),onClick:()=>o(`orbit`),children:[(0,R.jsx)(n,{className:`h-3 w-3`}),` Relations`]})]}),(0,R.jsxs)(`div`,{className:`pointer-events-auto flex border bg-card/95 shadow-md backdrop-blur`,children:[(0,R.jsxs)(`button`,{type:`button`,className:k(`h-8 border-r px-2.5 font-mono text-[9px] font-bold`,t===`smart`?`bg-success text-success-foreground`:`text-muted-foreground hover:bg-muted`),onClick:()=>s(`smart`),title:`Keep the full tree, show the strongest relations and selected neighbourhood`,children:[`SMART `,i,`/`,a]}),(0,R.jsx)(`button`,{type:`button`,className:k(`h-8 px-2.5 font-mono text-[9px] font-bold`,t===`all`?`bg-foreground text-background`:`text-muted-foreground hover:bg-muted`),onClick:()=>s(`all`),title:`Render every node and relation in this scope`,children:`ALL`})]}),(0,R.jsx)(`div`,{className:`pointer-events-auto ml-auto flex max-w-[60%] overflow-x-auto border bg-card/95 shadow-md backdrop-blur`,children:[`all`,`import`,`call`,`type_ref`,`inherit`,`implement`].map(e=>(0,R.jsx)(`button`,{type:`button`,className:k(`h-8 whitespace-nowrap border-r px-2.5 font-mono text-[9px] last:border-r-0`,r===e?`bg-foreground text-background`:`text-muted-foreground hover:bg-muted`),onClick:()=>c(e),children:e===`all`?`ALL LINKS`:e.replace(`_`,` `).toUpperCase()},e))})]})}function We({scope:e,graph:t,agentPresences:n,edgeWeight:r,connectedNodeCount:i,navigate:a}){return(0,R.jsxs)(`header`,{className:`flex h-[62px] shrink-0 items-center gap-4 border-b bg-card px-4`,children:[(0,R.jsxs)(`div`,{className:`flex min-w-[220px] items-center gap-3`,children:[(0,R.jsx)(`span`,{className:`flex h-9 w-9 items-center justify-center border border-primary bg-primary/10 text-primary`,children:(0,R.jsx)(u,{className:`h-4 w-4`})}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h1`,{className:`font-display text-sm font-semibold tracking-tight`,children:`Code Atlas`}),(0,R.jsx)(`p`,{className:`text-[9px] uppercase tracking-[0.18em] text-muted-foreground`,children:`Architecture intelligence`})]})]}),(0,R.jsxs)(`nav`,{className:`flex min-w-0 flex-1 items-center gap-1 font-mono text-[10px]`,"aria-label":`Code map breadcrumb`,children:[e.level!==`packages`&&(0,R.jsx)(`button`,{type:`button`,className:`mr-1 flex h-7 w-7 items-center justify-center border text-muted-foreground hover:bg-muted`,onClick:()=>{e.level===`symbols`?a({level:`files`,package:e.package??`(root)`}):a({level:`packages`})},"aria-label":`Back`,children:(0,R.jsx)(ce,{className:`h-3.5 w-3.5`})}),(0,R.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 px-1.5 py-1 text-muted-foreground hover:text-foreground`,onClick:()=>a({level:`packages`}),children:[(0,R.jsx)(ee,{className:`h-3 w-3`}),` workspace`]}),e.level!==`packages`&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(s,{className:`h-3 w-3 text-muted-foreground`}),(0,R.jsx)(`button`,{type:`button`,className:`max-w-[220px] truncate px-1.5 py-1 hover:text-primary`,onClick:()=>a({level:`files`,package:e.package??`(root)`}),children:e.package??`(root)`})]}),e.level===`symbols`&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(s,{className:`h-3 w-3 text-muted-foreground`}),(0,R.jsx)(`span`,{className:`truncate px-1.5 py-1 text-primary`,children:I({id:``,label:e.file,kind:`file`,file:e.file,package:e.package})})]})]}),(0,R.jsxs)(`div`,{className:`hidden items-center gap-5 xl:flex`,children:[(0,R.jsxs)(`div`,{className:k(`flex h-8 items-center gap-2 border px-2.5`,n.length>0?`border-success/50 bg-success/10 text-success`:`text-muted-foreground`),children:[(0,R.jsx)(E,{className:k(`h-3 w-3`,n.length>0&&`animate-pulse`)}),(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`div`,{className:`font-mono text-[10px] font-bold`,children:[n.length,` LIVE`]}),(0,R.jsx)(`div`,{className:`text-[7px] uppercase tracking-wider`,children:`agents`})]})]}),(0,R.jsxs)(`div`,{className:`text-right`,children:[(0,R.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:t.nodes.length}),(0,R.jsx)(`div`,{className:`text-[8px] uppercase tracking-wider text-muted-foreground`,children:`nodes`})]}),(0,R.jsxs)(`div`,{className:`text-right`,children:[(0,R.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:t.edges.length}),(0,R.jsx)(`div`,{className:`text-[8px] uppercase tracking-wider text-muted-foreground`,children:`links`})]}),(0,R.jsxs)(`div`,{className:`text-right`,children:[(0,R.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:r}),(0,R.jsx)(`div`,{className:`text-[8px] uppercase tracking-wider text-muted-foreground`,children:`references`})]}),(0,R.jsxs)(`div`,{className:`text-right`,children:[(0,R.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:i}),(0,R.jsx)(`div`,{className:`text-[8px] uppercase tracking-wider text-muted-foreground`,children:`connected`})]})]})]})}function Ge({activity:e}){return(0,R.jsx)(`span`,{className:k(`shrink-0 border px-1.5 py-0.5 font-mono text-[8px] font-bold uppercase`,e.type===`delete`?`border-destructive/50 bg-destructive/10 text-destructive`:e.type===`read`?`border-info/50 bg-info/10 text-info`:e.type===`search`||e.type===`index`?`border-primary/50 bg-primary/10 text-primary`:`border-warning/50 bg-warning/10 text-warning`),children:e.filePath.startsWith(`(tool:`)?e.toolName:e.type})}function W({activity:e,onLocate:t,showAgent:n=!1}){let r=e.agentName??e.agent??`External process`,i=`${e.sessionId??`none`}:${e.agentId??r}`;return(0,R.jsxs)(`button`,{type:`button`,className:`group flex w-full items-start gap-2 border-b px-3 py-2 text-left last:border-b-0 hover:bg-muted/70`,onClick:()=>!e.filePath.startsWith(`(`)&&t(e),title:`Locate ${e.filePath}`,children:[n&&(0,R.jsx)(`span`,{className:k(`mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center font-mono text-[8px] font-black`,Le(i)),children:Ie(r)}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsx)(Ge,{activity:e}),n&&(0,R.jsx)(`span`,{className:`truncate text-[9px] font-semibold`,children:r}),e.status===`active`&&(0,R.jsxs)(`span`,{className:`ml-auto flex items-center gap-1 font-mono text-[8px] font-bold text-success`,children:[(0,R.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse bg-success`}),` LIVE`]}),e.watcherConfirmed&&(0,R.jsx)(p,{className:`ml-auto h-3 w-3 text-success`,"aria-label":`Filesystem confirmed`}),e.attribution===`correlated`&&!e.watcherConfirmed&&(0,R.jsx)(`span`,{className:`ml-auto font-mono text-[7px] uppercase text-warning`,title:`Correlated from the only active tool`,children:`~ correlated`}),e.attribution===`external`&&(0,R.jsx)(`span`,{className:`ml-auto font-mono text-[7px] uppercase text-destructive`,children:`external`})]}),(0,R.jsx)(`div`,{className:`mt-1 truncate font-mono text-[9px] font-semibold`,title:e.filePath,children:B(e.filePath)}),(e.symbol||e.line)&&(0,R.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-1 truncate font-mono text-[8px] text-success`,children:[(0,R.jsx)(a,{className:`h-2.5 w-2.5 shrink-0`}),e.symbol?.name??`line ${e.line}`,e.symbol?.kind&&(0,R.jsxs)(`span`,{className:`text-muted-foreground`,children:[`· `,e.symbol.kind]})]}),e.change&&(0,R.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 font-mono text-[8px]`,children:[(0,R.jsxs)(`span`,{className:`border border-success/40 bg-success/10 px-1 text-success`,children:[`+`,e.change.added]}),(0,R.jsxs)(`span`,{className:`border border-destructive/40 bg-destructive/10 px-1 text-destructive`,children:[`−`,e.change.removed]}),e.durationMs!==void 0&&(0,R.jsxs)(`span`,{className:`ml-auto text-muted-foreground`,children:[e.durationMs,`ms`]})]}),e.summary&&e.summary!==e.toolName&&(0,R.jsx)(`div`,{className:`mt-1 line-clamp-2 text-[8px] leading-3 text-muted-foreground`,children:e.summary})]}),!e.filePath.startsWith(`(`)&&(0,R.jsx)(m,{className:`mt-1 h-3 w-3 shrink-0 text-muted-foreground opacity-0 group-hover:opacity-100`})]})}function Ke({presences:e,onLocate:t}){return e.length===0?null:(0,R.jsxs)(`section`,{className:`pointer-events-auto absolute left-3 top-14 z-20 w-[304px] border bg-card/95 shadow-xl backdrop-blur`,children:[(0,R.jsxs)(`div`,{className:`flex h-9 items-center gap-2 border-b px-3`,children:[(0,R.jsx)(E,{className:`h-3.5 w-3.5 animate-pulse text-success`}),(0,R.jsx)(`h2`,{className:`text-[9px] font-black uppercase tracking-[0.18em]`,children:`Live agent operations`}),(0,R.jsxs)(`span`,{className:`ml-auto bg-success px-1.5 py-0.5 font-mono text-[8px] font-bold text-success-foreground`,children:[e.length,` ONLINE`]})]}),(0,R.jsx)(`div`,{className:`max-h-[330px] overflow-y-auto`,children:e.map(e=>(0,R.jsxs)(`div`,{className:`border-b last:border-b-0`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2 bg-muted/35 px-3 py-1.5`,children:[(0,R.jsx)(`span`,{className:k(`flex h-6 w-6 items-center justify-center font-mono text-[8px] font-black`,Le(e.key)),children:Ie(e.agentName)}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`div`,{className:`truncate text-[9px] font-bold`,children:e.agentName}),(0,R.jsxs)(`div`,{className:`truncate font-mono text-[7px] text-muted-foreground`,children:[`session `,e.sessionId.slice(0,12),` · agent `,e.agentId.slice(0,12)]})]}),(0,R.jsxs)(`span`,{className:`font-mono text-[8px] text-success`,children:[e.operations.length,` op`]})]}),e.operations.map(e=>(0,R.jsx)(W,{activity:e,onLocate:t},e.id??`${e.toolUseId}:${e.filePath}`))]},e.key))})]})}function qe({paused:e,followLive:t,agentFilter:n,agents:r,onTogglePaused:i,onToggleFollow:o,onAgentFilter:s}){return(0,R.jsxs)(`div`,{className:`pointer-events-auto absolute right-3 top-14 z-20 flex h-9 items-center border bg-card/95 shadow-lg backdrop-blur`,children:[(0,R.jsxs)(`button`,{type:`button`,className:k(`flex h-full items-center gap-1.5 border-r px-2.5 text-[8px] font-bold uppercase tracking-wider`,t?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted`),onClick:o,title:`Automatically enter the file/function used by the newest visible agent`,children:[(0,R.jsx)(a,{className:`h-3 w-3`}),` Follow`]}),(0,R.jsxs)(`button`,{type:`button`,className:k(`flex h-full items-center gap-1.5 border-r px-2.5 text-[8px] font-bold uppercase tracking-wider`,e?`bg-warning text-warning-foreground`:`text-success hover:bg-success/10`),onClick:i,title:e?`Resume the live telemetry stream`:`Freeze the current telemetry frame`,children:[e?(0,R.jsx)(O,{className:`h-3 w-3`}):(0,R.jsx)(ue,{className:`h-3 w-3`}),e?`Resume`:`Live`]}),(0,R.jsxs)(`label`,{className:`flex h-full items-center gap-1.5 px-2 text-[8px] uppercase text-muted-foreground`,children:[`Agent`,(0,R.jsxs)(`select`,{"aria-label":`Filter CodeMap by agent and session`,className:`h-6 max-w-[170px] border bg-background px-1.5 font-mono text-[8px] text-foreground outline-none focus:border-primary`,value:n,onChange:e=>s(e.target.value),children:[(0,R.jsx)(`option`,{value:`all`,children:`ALL AGENTS`}),r.map(e=>(0,R.jsxs)(`option`,{value:e.key,children:[e.agentName,` · `,e.sessionId.slice(0,10)]},e.key))]})]})]})}function Je({activeOperations:e,recentActivities:t,activityTotalCount:n,onLocate:r}){return(0,R.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[e.length>0&&(0,R.jsxs)(`section`,{className:`border-b`,children:[(0,R.jsxs)(`div`,{className:`flex h-9 items-center gap-2 border-b bg-success/5 px-3`,children:[(0,R.jsx)(E,{className:`h-3 w-3 animate-pulse text-success`}),(0,R.jsx)(`h3`,{className:`text-[9px] font-bold uppercase tracking-[0.16em]`,children:`Active now`}),(0,R.jsx)(`span`,{className:`ml-auto font-mono text-[9px] text-success`,children:e.length})]}),e.map(e=>(0,R.jsx)(W,{activity:e,onLocate:r,showAgent:!0},e.id??`${e.toolUseId}:${e.filePath}`))]}),(0,R.jsxs)(`section`,{children:[(0,R.jsxs)(`div`,{className:`flex h-9 items-center gap-2 border-b px-3`,children:[(0,R.jsx)(D,{className:`h-3 w-3 text-muted-foreground`}),(0,R.jsx)(`h3`,{className:`text-[9px] font-bold uppercase tracking-[0.16em]`,children:`Event stream`}),(0,R.jsxs)(`span`,{className:`ml-auto font-mono text-[8px] text-muted-foreground`,children:[n,` total`]})]}),t.length>0?t.map((e,t)=>(0,R.jsx)(W,{activity:e,onLocate:r,showAgent:!0},e.id??`${e.timestamp}:${t}`)):(0,R.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-7 py-16 text-center`,children:[(0,R.jsx)(`span`,{className:`mb-4 flex h-12 w-12 items-center justify-center border bg-muted text-muted-foreground`,children:(0,R.jsx)(y,{className:`h-5 w-5`})}),(0,R.jsx)(`h3`,{className:`text-xs font-semibold`,children:`Select a node or wait for an agent`}),(0,R.jsx)(`p`,{className:`mt-2 text-[10px] leading-relaxed text-muted-foreground`,children:`Relations appear on selection. Tool calls and external filesystem touches stream here live.`})]})]})]})}function Ye({node:e,incomingCount:t,outgoingCount:n,onOpenNode:r,onOpenActivity:i}){let a=z[e.kind].icon;return(0,R.jsxs)(`div`,{className:`border-b bg-muted/25 p-3`,children:[(0,R.jsxs)(`div`,{className:`mb-2 flex items-center gap-2`,children:[(0,R.jsx)(`span`,{className:k(`flex h-8 w-8 items-center justify-center border`,z[e.kind].iconStyle),children:(0,R.jsx)(a,{className:`h-4 w-4`})}),(0,R.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,R.jsxs)(`div`,{className:`text-[8px] font-bold uppercase tracking-[0.18em] text-muted-foreground`,children:[e.external?`external `:``,e.kind]}),(0,R.jsx)(`div`,{className:`truncate font-mono text-xs font-semibold`,title:e.label,children:e.label})]})]}),(0,R.jsx)(`div`,{className:`break-all font-mono text-[9px] leading-relaxed text-muted-foreground`,children:e.file?I(e):e.package}),e.signature&&(0,R.jsx)(`pre`,{className:`mt-3 overflow-x-auto border bg-background p-2 font-mono text-[9px] leading-relaxed text-foreground`,children:e.signature}),(0,R.jsxs)(`div`,{className:`mt-3 grid grid-cols-3 border`,children:[(0,R.jsx)(Xe,{value:t,label:`incoming`,className:`border-r text-info`}),(0,R.jsx)(Xe,{value:n,label:`outgoing`,className:`border-r text-primary`}),(0,R.jsx)(Xe,{value:e.symbolCount??e.fileCount??e.line??`—`,label:e.kind===`package`?`files`:e.kind===`file`?`symbols`:`line`})]}),(0,R.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[e.kind!==`symbol`&&(0,R.jsxs)(`button`,{type:`button`,className:`flex h-7 flex-1 items-center justify-center gap-1.5 border bg-foreground text-[9px] font-semibold uppercase tracking-wider text-background hover:opacity-90`,onClick:()=>r(e),children:[(0,R.jsx)(m,{className:`h-3 w-3`}),` Open `,e.kind===`package`?`files`:`symbols`]}),e.file&&(0,R.jsxs)(`button`,{type:`button`,className:`flex h-7 items-center justify-center gap-1.5 border px-2 text-[9px] uppercase text-muted-foreground hover:bg-muted`,onClick:()=>i(e.file),children:[(0,R.jsx)(D,{className:`h-3 w-3`}),` Activity`]})]})]})}function Xe({value:e,label:t,className:n}){return(0,R.jsxs)(`div`,{className:k(`p-2 text-center`,n),children:[(0,R.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:e}),(0,R.jsx)(`div`,{className:`text-[8px] uppercase text-muted-foreground`,children:t})]})}function Ze(e){let{title:t,subtitle:n,items:r,graph:i,selectedId:a,expanded:o,onToggle:c,onSelect:l}=e;return(0,R.jsxs)(`section`,{className:`border-b py-3`,children:[(0,R.jsxs)(`div`,{className:`mb-2 flex items-end justify-between px-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h3`,{className:`text-[10px] font-bold uppercase tracking-[0.16em]`,children:t}),(0,R.jsx)(`p`,{className:`mt-0.5 text-[9px] text-muted-foreground`,children:n})]}),(0,R.jsx)(`span`,{className:`border bg-muted px-1.5 py-0.5 font-mono text-[9px]`,children:r.length})]}),r.length===0?(0,R.jsx)(`p`,{className:`px-3 py-2 text-[10px] text-muted-foreground`,children:`No relationships in this view.`}):r.map(e=>{let n=`${t}:${e.node.id}`,r=o.has(n),u=[...ge(i,e.node.id,`incoming`),...ge(i,e.node.id,`outgoing`)].filter((e,t,n)=>e.node.id!==a&&n.findIndex(t=>t.node.id===e.node.id)===t).slice(0,8);return(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`div`,{className:`group flex min-h-9 items-center gap-1 px-2 hover:bg-muted/70`,children:[(0,R.jsx)(`button`,{type:`button`,className:`flex h-6 w-5 shrink-0 items-center justify-center text-muted-foreground`,onClick:()=>u.length>0&&c(n),"aria-label":`${r?`Collapse`:`Expand`} relation ${e.node.label}`,children:u.length>0?r?(0,R.jsx)(d,{className:`h-3 w-3`}):(0,R.jsx)(s,{className:`h-3 w-3`}):(0,R.jsx)(`span`,{className:`h-px w-2 bg-border`})}),(0,R.jsxs)(`button`,{type:`button`,className:`min-w-0 flex-1 py-1 text-left`,onClick:()=>l(e.node),children:[(0,R.jsx)(`span`,{className:`block truncate font-mono text-[10px] font-semibold`,title:e.node.label,children:e.node.label}),(0,R.jsx)(`span`,{className:`block truncate text-[9px] text-muted-foreground`,children:e.node.package??e.node.symbolKind??e.node.kind})]}),(0,R.jsx)(`span`,{className:`border px-1 py-0.5 font-mono text-[8px] text-muted-foreground`,children:e.edge.refType}),(0,R.jsxs)(`span`,{className:`w-5 text-right font-mono text-[9px] text-muted-foreground`,children:[`×`,e.edge.weight]})]}),r&&u.map(e=>(0,R.jsxs)(`button`,{type:`button`,className:`relative flex h-7 w-full items-center gap-2 border-l border-border pl-11 pr-3 text-left text-[9px] text-muted-foreground hover:bg-muted hover:text-foreground`,onClick:()=>l(e.node),children:[(0,R.jsx)(`span`,{className:`absolute left-7 top-1/2 h-px w-3 bg-border`}),(0,R.jsx)(y,{className:`h-3 w-3 shrink-0`}),(0,R.jsx)(`span`,{className:`truncate font-mono`,children:e.node.label}),(0,R.jsx)(`span`,{className:`ml-auto font-mono opacity-70`,children:e.edge.refType})]},`${n}:${e.node.id}`))]},n)})]})}function Qe({selectedNode:e,incoming:t,outgoing:n,filteredGraph:r,expandedRelations:i,activeOperations:a,recentActivities:o,activityTotalCount:s,selectedActivities:c,onClearSelection:l,onOpenNode:u,onOpenActivity:d,onLocateActivity:f,onToggleRelation:p,onSelectNode:m}){return(0,R.jsxs)(`aside`,{className:`flex w-[326px] shrink-0 flex-col border-l bg-card/80`,children:[(0,R.jsxs)(`div`,{className:`flex h-10 items-center justify-between border-b px-3`,children:[(0,R.jsx)(`h2`,{className:`text-[10px] font-bold uppercase tracking-[0.18em]`,children:`Relation inspector`}),e&&(0,R.jsx)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground`,onClick:l,"aria-label":`Clear selection`,children:(0,R.jsx)(v,{className:`h-3.5 w-3.5`})})]}),e?(0,R.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[(0,R.jsx)(Ye,{node:e,incomingCount:t.length,outgoingCount:n.length,onOpenNode:u,onOpenActivity:d}),c.length>0&&(0,R.jsxs)(`section`,{className:`border-b bg-success/5 py-2`,children:[(0,R.jsxs)(`div`,{className:`mb-1 flex items-center gap-2 px-3`,children:[(0,R.jsx)(E,{className:`h-3 w-3 animate-pulse text-success`}),(0,R.jsx)(`h3`,{className:`text-[9px] font-bold uppercase tracking-[0.16em]`,children:`Agents on this node`}),(0,R.jsx)(`span`,{className:`ml-auto font-mono text-[9px] text-success`,children:c.length})]}),c.map(e=>(0,R.jsx)(W,{activity:e,onLocate:f,showAgent:!0},e.id??`${e.toolUseId}:${e.filePath}`))]}),(0,R.jsx)(Ze,{title:`Incoming`,subtitle:`Who depends on this`,items:t,graph:r,selectedId:e.id,expanded:i,onToggle:p,onSelect:m}),(0,R.jsx)(Ze,{title:`Outgoing`,subtitle:`What this depends on`,items:n,graph:r,selectedId:e.id,expanded:i,onToggle:p,onSelect:m})]}):(0,R.jsx)(Je,{activeOperations:a,recentActivities:o,activityTotalCount:s,onLocate:f})]})}function $e({node:e,onSelect:t,virtual:n}){let r=z[e.kind].icon;return(0,R.jsxs)(`button`,{type:`button`,"data-index":n?.index,ref:n?e=>n.measureElement(e):void 0,className:k(`min-h-8 items-center gap-2 px-3 py-1 text-left hover:bg-muted`,n?`absolute left-0 flex w-full`:`flex w-full`),style:n?{transform:`translateY(${n.start}px)`}:void 0,onClick:()=>t(e),children:[(0,R.jsx)(r,{className:k(`h-3.5 w-3.5 shrink-0`,e.kind===`package`?`text-primary`:e.kind===`file`?`text-info`:`text-success`)}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block truncate font-mono text-[10px]`,children:e.label}),(0,R.jsx)(`span`,{className:`block truncate text-[8px] text-muted-foreground`,children:e.file??e.package??e.symbolKind})]}),(0,R.jsx)(`span`,{className:`text-[8px] uppercase text-muted-foreground`,children:e.kind.slice(0,3)})]},e.id)}var et=80,G=40;function tt(e,t){if(!e||t.size===0)return!1;let n=M(e);if(t.has(n))return!0;for(let e of t)if(e.endsWith(`/${n}`)||n.endsWith(`/${e}`))return!0;return!1}var K=(0,A.memo)(function e(n){let{directory:i,packageName:a,depth:u,expandedDirectories:f,expandedFiles:p,loadingBranches:h,graphForFile:g,onToggleDirectory:_,onToggleFile:v,onSelectFile:y,onOpenFile:b,onSelectSymbol:x,selectedId:S,activeFileNorms:ee,activeSymbolIds:C,revealAllKeys:te,onRevealAll:w}=n,T=`files:${a}:${i.path||`.`}`,ne=te.has(T)?i.files:i.files.slice(0,et),D=i.files.length-ne.length;return(0,R.jsxs)(R.Fragment,{children:[i.directories.map(i=>{let o=`${a}:${i.path}`,c=f.has(o);return(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`button`,{type:`button`,className:`flex h-7 w-full items-center gap-1.5 pr-2 text-left text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground`,style:{paddingLeft:8+u*12},onClick:()=>_(o),children:[c?(0,R.jsx)(d,{className:`h-3 w-3`}):(0,R.jsx)(s,{className:`h-3 w-3`}),c?(0,R.jsx)(t,{className:`h-3.5 w-3.5 text-warning`}):(0,R.jsx)(r,{className:`h-3.5 w-3.5 text-warning`}),(0,R.jsx)(`span`,{className:`truncate`,children:i.name})]}),c&&(0,R.jsx)(e,{...n,directory:i,depth:u+1})]},o)}),ne.map(e=>{let t=p.has(e.file??e.id),n=N({level:`symbols`,file:e.file??e.label}),r=(e.file?g(e.file):void 0)?.nodes.filter(t=>t.kind===`symbol`&&t.file===e.file&&!t.external)??[],i=`symbols:${e.file??e.id}`,a=te.has(i)?r:r.slice(0,G),f=r.length-a.length,_=tt(e.file,ee);return(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`div`,{className:k(`group flex h-7 items-center pr-1 text-[11px] hover:bg-muted`,S===e.id&&`bg-primary/10 text-primary`),style:{paddingLeft:8+u*12},children:[(0,R.jsx)(`button`,{type:`button`,className:`flex h-6 w-4 shrink-0 items-center justify-center text-muted-foreground`,onClick:()=>v(e),"aria-label":`${t?`Collapse`:`Expand`} ${e.label}`,children:h.has(n)?(0,R.jsx)(l,{className:`h-3 w-3 animate-spin`}):t?(0,R.jsx)(d,{className:`h-3 w-3`}):(0,R.jsx)(s,{className:`h-3 w-3`})}),(0,R.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-1.5 text-left`,onClick:()=>y(e),onDoubleClick:()=>b(e),children:[(0,R.jsx)(o,{className:`h-3.5 w-3.5 shrink-0 text-info`}),_&&(0,R.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 animate-pulse bg-success`,title:`Live operation`}),(0,R.jsx)(`span`,{className:`truncate font-mono`,title:e.file,children:e.label}),(0,R.jsx)(`span`,{className:`ml-auto text-[9px] text-muted-foreground`,children:e.symbolCount??0})]}),(0,R.jsx)(`button`,{type:`button`,className:`ml-1 hidden h-5 w-5 items-center justify-center text-muted-foreground hover:text-foreground group-hover:flex`,onClick:()=>b(e),title:`Open symbol map`,"aria-label":`Open ${e.label} map`,children:(0,R.jsx)(m,{className:`h-3 w-3`})})]}),t&&a.map(e=>(0,R.jsxs)(`button`,{type:`button`,className:k(`flex h-7 w-full items-center gap-1.5 pr-2 text-left text-[10px] hover:bg-muted`,S===e.id?`bg-primary/10 text-primary`:`text-muted-foreground`),style:{paddingLeft:38+u*12},onClick:()=>x(e),children:[(0,R.jsx)(c,{className:`h-3 w-3 shrink-0 text-success`}),C.has(e.id)&&(0,R.jsx)(E,{className:`h-3 w-3 shrink-0 animate-pulse text-success`}),(0,R.jsx)(`span`,{className:`truncate font-mono`,children:e.label}),e.line&&(0,R.jsxs)(`span`,{className:`ml-auto font-mono text-[8px] opacity-60`,children:[`:`,e.line]})]},e.id)),t&&f>0&&(0,R.jsxs)(`button`,{type:`button`,className:`flex h-7 w-full items-center text-left font-mono text-[9px] text-primary hover:bg-muted`,style:{paddingLeft:38+u*12},onClick:()=>w(i),children:[`Show `,f,` more symbols`]})]},e.id)}),D>0&&(0,R.jsxs)(`button`,{type:`button`,className:`flex h-7 w-full items-center text-left font-mono text-[9px] text-primary hover:bg-muted`,style:{paddingLeft:8+u*12},onClick:()=>w(T),children:[`Show `,D,` more files`]})]})});function nt({rootGraph:e,search:t,searchInput:n,searchResults:r,virtualizeSearch:a,searchVirtualizer:o,treeScrollRef:c,selectedId:u,expandedPackages:f,expandedDirectories:p,expandedFiles:g,loadingBranches:_,activeFileNorms:y,activeSymbolIds:b,revealAllKeys:x,packageGraph:S,graphForFile:ee,navigate:C,togglePackage:te,toggleDirectory:w,toggleFile:T,revealAllTree:E,selectFileFromTree:ne,selectSymbolFromTree:D,selectSearchResult:O,handleOpenNode:re,onSearchInputChange:ie,onSearchChange:ae}){return(0,R.jsxs)(`aside`,{className:`flex w-[286px] shrink-0 flex-col border-r bg-card/70`,children:[(0,R.jsxs)(`div`,{className:`border-b p-3`,children:[(0,R.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,R.jsx)(`h2`,{className:`text-[10px] font-bold uppercase tracking-[0.18em]`,children:`Code tree`}),(0,R.jsxs)(`span`,{className:`font-mono text-[9px] text-muted-foreground`,children:[e.nodes.length,` roots`]})]}),(0,R.jsxs)(`label`,{className:`flex h-8 items-center gap-2 border bg-background px-2 focus-within:border-primary`,children:[(0,R.jsx)(h,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,R.jsx)(`input`,{className:`min-w-0 flex-1 bg-transparent font-mono text-[10px] outline-none placeholder:text-muted-foreground`,value:n,onChange:e=>ie(e.target.value),placeholder:`Find package, file, symbol…`}),n&&(0,R.jsx)(`button`,{type:`button`,onClick:()=>{ie(``),ae(``)},"aria-label":`Clear search`,children:(0,R.jsx)(v,{className:`h-3 w-3 text-muted-foreground`})})]})]}),(0,R.jsx)(`div`,{ref:c,className:`min-h-0 flex-1 overflow-y-auto py-2`,children:t.trim()?(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`div`,{className:`px-3 pb-2 text-[9px] text-muted-foreground`,children:[r.length,` loaded-map results`]}),r.length===0?(0,R.jsxs)(`p`,{className:`px-3 py-8 text-center text-[10px] text-muted-foreground`,children:[`No match in loaded branches.`,(0,R.jsx)(`br`,{}),`Expand a package to search its files.`]}):a?(0,R.jsx)(`div`,{style:{height:`${o.getTotalSize()}px`,width:`100%`,position:`relative`},children:o.getVirtualItems().map(e=>{let t=r[e.index];return t?(0,R.jsx)($e,{node:t,onSelect:O,virtual:{index:e.index,start:e.start,measureElement:o.measureElement}},t.id):null})}):r.map(e=>(0,R.jsx)($e,{node:e,onSelect:O},e.id))]}):e.nodes.map(e=>{let t=e.package??e.label,n=f.has(t),r=N({level:`files`,package:t}),a=S(t),o=a?Se(a.nodes):void 0;return(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`div`,{className:k(`group flex h-8 items-center px-2 hover:bg-muted`,u===e.id&&`bg-primary/10 text-primary`),children:[(0,R.jsx)(`button`,{type:`button`,className:`flex h-6 w-5 items-center justify-center text-muted-foreground`,onClick:()=>te(e),"aria-label":`${n?`Collapse`:`Expand`} ${t}`,children:_.has(r)?(0,R.jsx)(l,{className:`h-3 w-3 animate-spin`}):n?(0,R.jsx)(d,{className:`h-3 w-3`}):(0,R.jsx)(s,{className:`h-3 w-3`})}),(0,R.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-2 text-left`,onClick:()=>C({level:`packages`},e.id),onDoubleClick:()=>C({level:`files`,package:t}),children:[(0,R.jsx)(i,{className:`h-3.5 w-3.5 shrink-0 text-primary`}),(0,R.jsx)(`span`,{className:`truncate font-mono text-[10px] font-semibold`,children:e.label}),(0,R.jsx)(`span`,{className:`ml-auto text-[9px] text-muted-foreground`,children:e.fileCount??0})]}),(0,R.jsx)(`button`,{type:`button`,className:`ml-1 hidden h-5 w-5 items-center justify-center text-muted-foreground hover:text-foreground group-hover:flex`,onClick:()=>C({level:`files`,package:t}),title:`Open file map`,"aria-label":`Open ${t} map`,children:(0,R.jsx)(m,{className:`h-3 w-3`})})]}),n&&o&&(0,R.jsx)(K,{directory:o,packageName:t,depth:1,expandedDirectories:p,expandedFiles:g,loadingBranches:_,graphForFile:ee,onToggleDirectory:w,onToggleFile:T,onSelectFile:ne,onOpenFile:re,onSelectSymbol:D,selectedId:u,activeFileNorms:y,activeSymbolIds:b,revealAllKeys:x,onRevealAll:E})]},e.id)})}),(0,R.jsxs)(`div`,{className:`border-t px-3 py-2 text-[9px] leading-relaxed text-muted-foreground`,children:[`Click to focus · double-click to enter`,(0,R.jsx)(`br`,{}),`Branches stay open while the map changes`]})]})}function rt(e,t){let n=new Map(e.map(e=>[e.id,e])),r=e.length!==t.length,i=t.map((t,i)=>{let a=n.get(t.id);return a?a.type===t.type&&a.position.x===t.position.x&&a.position.y===t.position.y&&Be(a.data,t.data)?(e[i]!==a&&(r=!0),a):(r=!0,{...a,...t,measured:a.measured}):(r=!0,t)});return r?i:e}function it(e){return e.data?.renderKey}function at(e,t){let n=new Map(e.map(e=>[e.id,e])),r=e.length!==t.length,i=t.map((t,i)=>{let a=n.get(t.id);return a&&it(a)===it(t)?(e[i]!==a&&(r=!0),a):(r=!0,t)});return r?i:e}function q(){let[e,t]=(0,A.useState)({level:`packages`}),n=N(e),[r,i]=(0,A.useState)(Ve),[a,o]=(0,A.useState)(!0),[s,c]=(0,A.useState)(null),[l,u]=(0,A.useState)(null),[d,f]=(0,A.useState)(`layers`),[p,m]=(0,A.useState)(`smart`),[h,g]=(0,A.useState)(`all`),[_,v]=(0,A.useState)(``),[y,b]=(0,A.useState)(``),[x,S]=(0,A.useState)(new Set),[ee,w]=(0,A.useState)(new Set),[T,E]=(0,A.useState)(new Set),[D,O]=(0,A.useState)(new Set),[ae,se]=(0,A.useState)(new Set),[ce,le]=(0,A.useState)(new Set),[ue,k]=(0,A.useState)(0),[j,P]=(0,A.useState)(null),[ve,ye]=(0,A.useState)(!1),[F,I]=(0,A.useState)(`all`),[L,Oe]=(0,A.useState)(null),[z,Pe]=(0,A.useState)(null),[Fe,Le]=(0,A.useState)(0),B=(0,A.useRef)(new Map),V=(0,A.useRef)(null),H=(0,A.useRef)(null),ze=(0,A.useRef)(``),Be=(0,A.useRef)(``),U=(0,A.useRef)(null),Ge=(0,A.useRef)(new Set),{history:W,pulses:Je,activeOperationsMap:Ye,activityTotalCount:Xe,resolveActivitySymbol:Ze,getActivityForFile:$e,sweepActivity:et}=de(oe(e=>({history:e.history,pulses:e.pulses,activeOperationsMap:e.activeOperations,activityTotalCount:e.totalCount,resolveActivitySymbol:e.resolveActivitySymbol,getActivityForFile:e.getActivityForFile,sweepActivity:e._sweep}))),G=(0,A.useMemo)(()=>[...Ye.values()].flat(),[Ye]),tt=(0,A.useMemo)(()=>[...Je.keys()].map(e=>W.get(e)?.[0]).filter(e=>!!e),[W,Je]),K=(0,A.useMemo)(()=>{let e=[];for(let t of W.values())e.push(...t.slice(0,16));return e.sort((e,t)=>t.timestamp-e.timestamp).slice(0,16)},[W]),it=(0,A.useMemo)(()=>fe([...G,...K]),[G,K]),q=(0,A.useMemo)(()=>{let e=L??G;return F===`all`?e:e.filter(e=>pe(e)===F)},[G,F,L]),ot=(0,A.useMemo)(()=>{let e=z??K;return F===`all`?e:e.filter(e=>pe(e)===F)},[F,z,K]),J=(0,A.useDeferredValue)(q),st=(0,A.useDeferredValue)(ot),ct=(0,A.useDeferredValue)(tt),lt=(0,A.useMemo)(()=>fe(q),[q]),[ut,dt,ft]=ne([]),[pt,mt,ht]=ie([]),{fitView:gt}=te(),Y=(0,A.useCallback)(async(e,t=!1)=>{let n=N(e),r=B.current.get(n);if(r&&!t)return we(B.current,n,r,48),r;let i=await fetch(he(e));if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error??`HTTP ${i.status}`)}let a=await i.json();return we(B.current,n,a,48),k(e=>e+1),a},[]);(0,A.useEffect)(()=>{let e=window.setTimeout(()=>b(_),150);return()=>window.clearTimeout(e)},[_]);let _t=me(e=>e.generation),vt=(0,A.useRef)(0),yt=(0,A.useRef)(null);(0,A.useEffect)(()=>{let t=!1,n=_t>vt.current;return n&&(vt.current=_t,B.current.clear(),k(e=>e+1),S(new Set),w(new Set),E(new Set),se(new Set)),o(!0),c(null),Y(e,n).then(e=>{if(!t){if(i(e),!n){let t=V.current;V.current=null,u(t&&e.nodes.some(e=>e.id===t)?t:null)}o(!1)}}).catch(e=>{t||(c(e instanceof Error?e.message:String(e)),i(Ve),o(!1))}),()=>{t=!0}},[n,Y,_t,e]);let X=(0,A.useCallback)((e,r)=>{if(V.current=r??null,N(e)===n){u(r??null),V.current=null;return}t(e)},[n]),bt=(0,A.useCallback)(async e=>{let t=N(e);if(!(B.current.has(t)||ce.has(t))){le(e=>new Set(e).add(t));try{await Y(e)}finally{le(e=>{let n=new Set(e);return n.delete(t),n})}}},[Y,ce]);(0,A.useEffect)(()=>{let e=!1,t=0;for(let n of G){if(t>=2)break;if(n.symbol||!n.toolUseId||n.filePath.startsWith(`(`))continue;let r=n.filePath;Ge.current.has(r)||(Ge.current.add(r),t+=1,Y({level:`symbols`,file:r}).then(t=>{if(e)return;let i=je(n,t.nodes);i&&Ze(n.toolUseId,r,{id:i.id,name:i.label,...i.symbolKind?{kind:i.symbolKind}:{},...i.line?{line:i.line}:{}})}).catch(()=>void 0).finally(()=>{Ge.current.delete(r)}))}return()=>{e=!0}},[G,Y,Ze]);let Z=(0,A.useMemo)(()=>({nodes:r.nodes,edges:h===`all`?r.edges:r.edges.filter(e=>e.refType===h)}),[r,h]),Q=r.nodes.find(e=>e.id===l),$=(0,A.useMemo)(()=>xe(Z,l,p),[p,Z,l]),xt=(0,A.useMemo)(()=>l?_e(Z,l):new Set,[Z,l]),{incomingCounts:St,outgoingCounts:Ct}=(0,A.useMemo)(()=>{let e=new Map,t=new Map;for(let n of Z.edges)t.set(n.source,(t.get(n.source)??0)+1),e.set(n.target,(e.get(n.target)??0)+1);return{incomingCounts:e,outgoingCounts:t}},[Z]),wt=d===`orbit`?l??void 0:void 0,Tt=(0,A.useMemo)(()=>be($,d,wt),[$,d,wt]),Et=(0,A.useMemo)(()=>[n,d,d===`orbit`?l??``:``,Ce($)].join(``),[$,n,d,l]),Dt=(0,A.useCallback)(e=>{u(e.id),O(new Set)},[]),Ot=(0,A.useCallback)(e=>{e.kind===`package`&&X({level:`files`,package:e.package??e.label}),e.kind===`file`&&e.file&&X({level:`symbols`,file:e.file,package:e.package})},[X]),kt=(0,A.useMemo)(()=>[Ae(J),Ae(ct),Ae(st)].join(``),[J,ct,st]),At=(0,A.useMemo)(()=>{let e=new Set;for(let t of q)e.add(M(t.filePath));return e},[q]),jt=(0,A.useMemo)(()=>{let e=new Set;for(let t of q)t.symbol?.id&&e.add(t.symbol.id);return e},[q]);(0,A.useEffect)(()=>{let e=()=>{let e=Tt.map(({node:e})=>e),t=ke(e,J),n=ke(e,ct),r=new Set(t.keys()),i=Tt.map(({node:e,position:r})=>{let i=t.get(e.id)??[],a=i[0]??n.get(e.id)?.[0];return{id:e.id,type:`codemap`,position:r,data:{graphNode:e,selected:e.id===l,dimmed:!!l&&!xt.has(e.id),incoming:St.get(e.id)??0,outgoing:Ct.get(e.id)??0,isActive:!!a,...a?{activityType:a.type}:{},activeOperations:i,onSelect:Dt,onOpen:Ot,onShowHistory:P}}});dt(e=>rt(e,i));let a=6,o=$.edges.map((e,t)=>{let n=!!l&&(e.source===l||e.target===l),i=r.has(e.source)||r.has(e.target),o=i&&(n||a>0);o&&--a;let s=Ne[e.refType]??`hsl(var(--muted-foreground))`,c=n||i?`smoothstep`:`default`;return{id:`edge:${e.source}:${e.target}:${t}`,source:e.source,target:e.target,type:c,animated:o,label:n?`${e.refType}${e.weight>1?` ×${e.weight}`:``}`:void 0,markerEnd:{type:C.ArrowClosed,color:s,width:14,height:14},style:{stroke:s,strokeWidth:i?Math.min(2.5+Math.log2(e.weight+1)*.65,5):n?Math.min(1.25+Math.log2(e.weight+1)*.65,4):1,opacity:i?1:l?n?.88:.08:.52},labelStyle:{fontSize:9,fontFamily:`var(--font-mono)`,fill:`hsl(var(--muted-foreground))`},labelBgStyle:{fill:`hsl(var(--card))`,fillOpacity:.92},labelBgPadding:[4,2],zIndex:i?4:n?2:0,data:{renderKey:`${e.refType}:${e.weight}:${l?n?`focused`:`dimmed`:`idle`}:${i?`live`:`still`}:${o?`anim`:`still`}:${c}`}}}),s=new Map,c=new Set(J.map(pe));for(let e of[...st].sort((e,t)=>e.timestamp-t.timestamp)){let t=pe(e),n=s.get(t);n?n.push(e):s.set(t,[e])}let u=[...s.entries()].map(([e,t])=>({agentKey:e,activities:t,live:c.has(e),latest:t[t.length-1]?.timestamp??0})).sort((e,t)=>Number(t.live)-Number(e.live)||t.latest-e.latest).slice(0,4),d=[];for(let{agentKey:e,activities:t,live:n}of u){let r=t.slice(-7).map(e=>({activity:e,node:$.nodes.find(t=>De(e,t))})).filter(e=>!!e.node).filter((e,t,n)=>t===0||e.node.id!==n[t-1]?.node.id),i=Re(e);for(let t=1;t<r.length;t++){let o=r[t-1],s=r[t],c=n&&a>0;c&&--a,d.push({id:`trail:${e}:${o.activity.timestamp}:${s.activity.timestamp}`,source:o.node.id,target:s.node.id,type:`smoothstep`,animated:c,label:t===r.length-1?`${Ie(s.activity.agentName??s.activity.agent??`agent`)} TRAIL`:void 0,markerEnd:{type:C.ArrowClosed,color:i,width:13,height:13},style:{stroke:i,strokeWidth:2.5,strokeDasharray:`7 5`,opacity:.9},labelStyle:{fontSize:8,fontWeight:700,fill:i},labelBgStyle:{fill:`hsl(var(--card))`,fillOpacity:.94},labelBgPadding:[4,2],zIndex:6,data:{renderKey:`${i}:${t===r.length-1?`label`:`plain`}:${n?`live`:`still`}:${c?`anim`:`still`}`}})}}Le(d.length),mt(e=>at(e,[...o,...d]))},t=Et,n=Be.current!==t;Be.current=t,U.current!==null&&(window.clearTimeout(U.current),U.current=null),n?e():U.current=window.setTimeout(()=>{U.current=null,e()},120);let r;return ze.current!==Et&&(r=window.setTimeout(()=>{ze.current=Et;let e=$.nodes.length>48?0:240;gt({padding:.2,duration:e,maxZoom:1.25})},20)),()=>{U.current!==null&&(window.clearTimeout(U.current),U.current=null),r!==void 0&&window.clearTimeout(r)}},[kt,$,l,J,st,ct,Et,xt,gt,Ot,Dt,St,Ct,Tt,mt,dt]),(0,A.useEffect)(()=>{let e=window.setInterval(()=>{et()},2e3);return()=>window.clearInterval(e)},[et]);let Mt=B.current.get(`packages`)??(e.level===`packages`?r:Ve),Nt=(0,A.useCallback)(e=>B.current.get(N({level:`files`,package:e})),[ue]),Pt=(0,A.useCallback)(e=>B.current.get(N({level:`symbols`,file:e})),[ue]),Ft=(0,A.useCallback)(e=>{let t=e.filePath,n=Ee(e.filePath),r=`file:${e.filePath}`;for(let i of B.current.values()){let a=i.nodes.find(t=>t.kind===`file`&&!t.external&&Te(t.file,e.filePath));if(a){t=a.file??t,n=a.package??n,r=a.id;break}}if(e.symbol){X({level:`symbols`,file:t,package:n},e.symbol.id);return}X({level:`files`,package:n},r)},[X]);(0,A.useEffect)(()=>{if(!ve||L)return;let e=[...q].filter(e=>!e.filePath.startsWith(`(`)).sort((e,t)=>t.timestamp-e.timestamp)[0];if(!e)return;let t=`${e.id??e.toolUseId}:${e.filePath}:${e.symbol?.id??`file`}`;H.current!==t&&(H.current=t,Ft(e))},[q,ve,Ft,L]);let It=(0,A.useCallback)(()=>{if(L){Oe(null),Pe(null);return}Oe([...G]),Pe([...K])},[G,L,K]),Lt=(0,A.useCallback)(e=>{let t=e.package??e.label,n=!x.has(t);S(e=>{let r=new Set(e);return n?r.add(t):r.delete(t),r}),n&&bt({level:`files`,package:t}).then(()=>{let e=B.current.get(N({level:`files`,package:t})),n=e?Se(e.nodes):void 0;n?.directories.length===1&&n.directories[0]&&w(e=>new Set(e).add(`${t}:${n.directories[0].path}`))}).catch(()=>void 0)},[bt,x]),Rt=(0,A.useCallback)(e=>{if(!e.file)return;let t=!T.has(e.file);E(n=>{let r=new Set(n);return t?r.add(e.file):r.delete(e.file),r}),t&&bt({level:`symbols`,file:e.file,package:e.package}).catch(()=>void 0)},[bt,T]),zt=(0,A.useCallback)(e=>{w(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Bt=(0,A.useCallback)(e=>{se(t=>new Set(t).add(e))},[]),Vt=(0,A.useCallback)(e=>{X({level:`files`,package:e.package??`(root)`},e.id)},[X]),Ht=(0,A.useCallback)(e=>{e.file&&X({level:`symbols`,file:e.file,package:e.package},e.id)},[X]),Ut=(0,A.useMemo)(()=>{let e=y.trim().toLocaleLowerCase();if(!e)return[];let t=new Map;for(let n of B.current.values())for(let r of n.nodes)`${r.label} ${r.file??``} ${r.signature??``} ${r.package??``}`.toLocaleLowerCase().includes(e)&&t.set(r.id,r);return[...t.values()].sort((e,t)=>e.kind.localeCompare(t.kind)||e.label.localeCompare(t.label)).slice(0,80)},[y,ue]),Wt=Ut.length>40,Gt=re({count:Ut.length,getScrollElement:()=>yt.current,estimateSize:()=>40,overscan:8,enabled:Wt}),Kt=(0,A.useCallback)(e=>{e.kind===`package`?X({level:`packages`},e.id):e.kind===`file`?X({level:`files`,package:e.package??`(root)`},e.id):e.file&&X({level:`symbols`,file:e.file,package:e.package},e.id)},[X]),{incoming:qt,outgoing:Jt}=(0,A.useMemo)(()=>({incoming:Q?ge(Z,Q.id,`incoming`):[],outgoing:Q?ge(Z,Q.id,`outgoing`):[]}),[Z,Q]),{edgeWeight:Yt,connectedNodeCount:Xt}=(0,A.useMemo)(()=>{let e=0,t=new Set;for(let n of Z.edges)e+=n.weight,t.add(n.source),t.add(n.target);return{edgeWeight:e,connectedNodeCount:t.size}},[Z]),Zt=Q?q.filter(e=>De(e,Q)):[],Qt=j?$e(j):[];return(0,R.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background`,children:[(0,R.jsx)(We,{scope:e,graph:r,agentPresences:lt,edgeWeight:Yt,connectedNodeCount:Xt,navigate:X}),(0,R.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,R.jsx)(nt,{rootGraph:Mt,search:y,searchInput:_,searchResults:Ut,virtualizeSearch:Wt,searchVirtualizer:Gt,treeScrollRef:yt,selectedId:l,expandedPackages:x,expandedDirectories:ee,expandedFiles:T,loadingBranches:ce,activeFileNorms:At,activeSymbolIds:jt,revealAllKeys:ae,packageGraph:Nt,graphForFile:Pt,navigate:X,togglePackage:Lt,toggleDirectory:zt,toggleFile:Rt,revealAllTree:Bt,selectFileFromTree:Vt,selectSymbolFromTree:Ht,selectSearchResult:Kt,handleOpenNode:Ot,onSearchInputChange:v,onSearchChange:b}),(0,R.jsxs)(`main`,{className:`relative min-w-0 flex-1 bg-[radial-gradient(circle_at_50%_0%,hsl(var(--primary)/0.055),transparent_38%)]`,children:[(0,R.jsx)(Ue,{layout:d,canvasMode:p,edgeFilter:h,canvasNodeCount:$.nodes.length,graphNodeCount:r.nodes.length,onLayoutChange:f,onCanvasModeChange:m,onEdgeFilterChange:g}),(0,R.jsx)(Ke,{presences:lt,onLocate:Ft}),(0,R.jsx)(qe,{paused:L!==null,followLive:ve,agentFilter:F,agents:it,onTogglePaused:It,onToggleFollow:()=>{H.current=null,ye(e=>!e)},onAgentFilter:e=>{H.current=null,I(e)}}),(0,R.jsx)(He,{loading:a,error:s,graph:r,canvasNodeCount:$.nodes.length,flowNodes:ut,flowEdges:pt,onNodesChange:ft,onEdgesChange:ht,agentTrailCount:Fe})]}),(0,R.jsx)(Qe,{selectedNode:Q,incoming:qt,outgoing:Jt,filteredGraph:Z,expandedRelations:D,activeOperations:q,recentActivities:ot,activityTotalCount:Xe,selectedActivities:Zt,onClearSelection:()=>u(null),onOpenNode:Ot,onOpenActivity:P,onLocateActivity:Ft,onToggleRelation:e=>O(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),onSelectNode:Dt})]}),j&&(0,R.jsx)(Me,{historyFile:j,fileHistory:Qt,onClose:()=>P(null)})]})}function ot(){return(0,R.jsx)(le,{children:(0,R.jsx)(q,{})})}export{ot as CodeMap};
@@ -1,2 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Sa as t,et as n}from"./vendor-2VBBgNb5.js";var r=e(t(),1),i=n(),a={0:`P0 Dead Package`,1:`P1 Dead File`,2:`P2 Dead Symbol`},o={0:`hsl(var(--destructive))`,1:`hsl(var(--warning))`,2:`hsl(var(--info))`};async function s(e){let t=await e.text();try{return JSON.parse(t)}catch{let e=t.length>300?`${t.slice(0,300)}…`:t;throw console.warn(JSON.stringify({level:`warn`,event:`deadcode_parse_error`,preview:e,timestamp:new Date().toISOString()})),Error(`The server returned a non-JSON response (possibly an HTML error page). Check that the backend is running and the /api/deadcode/* routes are wired.`)}}function c({projectRoot:e}){let[t,n]=(0,r.useState)(`idle`),[c,l]=(0,r.useState)(`idle`),[p,m]=(0,r.useState)(null),[h,g]=(0,r.useState)(null),[_,v]=(0,r.useState)(null),y=(0,r.useCallback)(async()=>{n(`scanning`),v(null),m(null),g(null),l(`idle`);try{let e=await fetch(`/api/deadcode/scan`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})});if(!e.ok){let t=await s(e);throw Error(t.detail??t.error??`HTTP ${e.status}`)}let t=await s(e);m(t),n(`done`)}catch(e){v(e instanceof Error?e.message:String(e)),n(`error`)}},[]),b=(0,r.useCallback)(async()=>{if(p){l(`generating`),v(null);try{let e=await fetch(`/api/deadcode/action-plan`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(p)});if(!e.ok){let t=await s(e);throw Error(t.detail??t.error??`HTTP ${e.status}`)}let t=await s(e);g(t),l(`ready`)}catch(e){v(e instanceof Error?e.message:String(e)),l(`idle`)}}},[p]),x=(0,r.useCallback)(()=>{if(!h)return;l(`executing`);let e=[`# Dead-Code Cleanup Plan`,``,h.summary,``,`## Files to address (in priority order)`,...h.files.map((e,t)=>`${t+1}. [${a[e.priority]}] ${e.file} — ${e.symbolCount} symbol(s) to remove`+(e.symbols.length>0?`\n Symbols: ${e.symbols.slice(0,5).join(`, `)}${e.symbols.length>5?` and ${e.symbols.length-5} more`:``}`:``))].join(`
2
- `),t=window.__WS;t&&t.readyState===WebSocket.OPEN?t.send(JSON.stringify({type:`user.message`,payload:{text:e,action:`send`}})):(navigator.clipboard.writeText(e),v(`Agent not connected. Plan copied to clipboard — paste it into the chat.`)),l(`idle`)},[h]);return(0,i.jsxs)(`div`,{style:{padding:`16px`,fontFamily:`var(--font-sans, system-ui, sans-serif)`,color:`hsl(var(--foreground))`,background:`hsl(var(--background))`},children:[(0,i.jsx)(`h2`,{style:{margin:`0 0 16px`,fontSize:`18px`,fontWeight:600,color:`hsl(var(--foreground))`},children:`🔍 Dead-Code Scan`}),(0,i.jsx)(`button`,{onClick:y,disabled:t===`scanning`,style:{padding:`8px 16px`,fontSize:`14px`,fontWeight:500,background:t===`scanning`?`hsl(var(--muted))`:`hsl(var(--primary))`,color:t===`scanning`?`hsl(var(--muted-foreground))`:`hsl(var(--primary-foreground))`,border:`1px solid hsl(var(--border))`,borderRadius:`0`,cursor:t===`scanning`?`not-allowed`:`pointer`},children:t===`scanning`?`Scanning…`:`Scan for Dead Code`}),_&&(0,i.jsxs)(`div`,{style:{marginTop:`12px`,padding:`8px 12px`,background:`hsl(var(--destructive) / 0.1)`,color:`hsl(var(--destructive))`,border:`1px solid hsl(var(--destructive) / 0.3)`,borderRadius:`0`,fontSize:`13px`},children:[_,(0,i.jsx)(`button`,{onClick:()=>v(null),style:{marginLeft:`12px`,background:`none`,border:`none`,cursor:`pointer`,fontWeight:600,color:`hsl(var(--destructive))`},children:`✕`})]}),p&&(0,i.jsxs)(`div`,{style:{marginTop:`16px`},children:[(0,i.jsxs)(`div`,{style:{display:`flex`,gap:`12px`,marginBottom:`12px`},children:[(0,i.jsx)(u,{label:`Total Symbols`,value:p.stats.totalSymbols,token:`info`}),(0,i.jsx)(u,{label:`Alive`,value:p.stats.alive,token:`success`}),(0,i.jsx)(u,{label:`Dead`,value:p.stats.dead,token:`destructive`})]}),p.deadPackages.length>0&&(0,i.jsx)(d,{title:`Dead Packages (${p.deadPackages.length})`,token:`destructive`,children:p.deadPackages.map(e=>(0,i.jsx)(f,{columns:[e.package,e.path,`${e.fileCount} file(s)`]},e.package))}),p.deadFiles.length>0&&(0,i.jsx)(d,{title:`Dead Files (${p.deadFiles.length})`,token:`warning`,children:p.deadFiles.map(e=>(0,i.jsx)(f,{columns:[e.file,`${e.symbolCount} symbol(s)`,e.lang]},e.file))}),p.deadSymbols.length>0&&(0,i.jsxs)(d,{title:`Dead Symbols (${p.deadSymbols.length})`,token:`info`,children:[p.deadSymbols.slice(0,50).map(e=>(0,i.jsx)(f,{columns:[e.name,e.kind,e.file.split(`/`).pop()??e.file,`line ${e.line}`]},`${e.file}:${e.line}:${e.name}`)),p.deadSymbols.length>50&&(0,i.jsxs)(`div`,{style:{padding:`6px 8px`,color:`hsl(var(--muted-foreground))`,fontSize:`12px`},children:[`… and `,p.deadSymbols.length-50,` more`]})]}),t===`done`&&(0,i.jsx)(`button`,{onClick:b,disabled:c===`generating`,style:{marginTop:`12px`,padding:`8px 16px`,fontSize:`14px`,fontWeight:500,background:c===`generating`?`hsl(var(--muted))`:`hsl(var(--accent))`,color:c===`generating`?`hsl(var(--muted-foreground))`:`hsl(var(--accent-foreground))`,border:`1px solid hsl(var(--border))`,borderRadius:`0`,cursor:c===`generating`?`not-allowed`:`pointer`},children:c===`generating`?`Generating…`:`Generate Action Plan`})]}),h&&(0,i.jsxs)(`div`,{style:{marginTop:`16px`,border:`1px solid hsl(var(--border))`,borderRadius:`0`,padding:`12px`,background:`hsl(var(--card))`},children:[(0,i.jsx)(`h3`,{style:{margin:`0 0 8px`,fontSize:`15px`,fontWeight:600,color:`hsl(var(--card-foreground))`},children:`📋 Action Plan`}),(0,i.jsx)(`p`,{style:{fontSize:`13px`,color:`hsl(var(--muted-foreground))`,margin:`0 0 12px`},children:h.summary}),h.files.map((e,t)=>(0,i.jsxs)(`div`,{style:{display:`flex`,alignItems:`flex-start`,gap:`8px`,padding:`6px 0`,borderBottom:t<h.files.length-1?`1px solid hsl(var(--border))`:`none`,fontSize:`13px`},children:[(0,i.jsx)(`span`,{style:{background:o[e.priority]??`hsl(var(--muted-foreground))`,color:`hsl(var(--primary-foreground))`,borderRadius:`0`,padding:`2px 6px`,fontSize:`11px`,fontWeight:600,whiteSpace:`nowrap`,flexShrink:0},children:a[e.priority]??`P${e.priority}`}),(0,i.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,i.jsx)(`div`,{style:{fontWeight:500,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,color:`hsl(var(--foreground))`},children:e.file}),(0,i.jsxs)(`div`,{style:{color:`hsl(var(--muted-foreground))`,fontSize:`12px`},children:[e.symbolCount,` symbol(s)`,e.symbols.length>0&&` · ${e.symbols.slice(0,2).join(`, `)}${e.symbols.length>2?`…`:``}`]})]})]},e.file)),(0,i.jsx)(`button`,{onClick:x,disabled:c===`executing`,style:{marginTop:`12px`,padding:`8px 16px`,fontSize:`14px`,fontWeight:500,background:c===`executing`?`hsl(var(--muted))`:`hsl(var(--success))`,color:`hsl(var(--primary-foreground))`,border:`1px solid hsl(var(--border))`,borderRadius:`0`,cursor:c===`executing`?`not-allowed`:`pointer`},children:c===`executing`?`Sending…`:`Execute Plan via Agent`})]})]})}var l={success:`hsl(var(--success))`,warning:`hsl(var(--warning))`,info:`hsl(var(--info))`,destructive:`hsl(var(--destructive))`,primary:`hsl(var(--primary))`};function u({label:e,value:t,token:n}){let r=l[n];return(0,i.jsxs)(`div`,{style:{flex:1,padding:`10px`,borderRadius:`0`,border:`1px solid hsl(var(--border))`,background:`hsl(var(--card))`,textAlign:`center`},children:[(0,i.jsx)(`div`,{style:{fontSize:`24px`,fontWeight:700,color:r},children:t}),(0,i.jsx)(`div`,{style:{fontSize:`12px`,color:`hsl(var(--muted-foreground))`,marginTop:`2px`},children:e})]})}function d({title:e,token:t,children:n}){let r=l[t];return(0,i.jsxs)(`div`,{style:{marginBottom:`12px`},children:[(0,i.jsx)(`h3`,{style:{margin:`0 0 6px`,fontSize:`14px`,fontWeight:600,color:r,borderLeft:`3px solid ${r}`,paddingLeft:`8px`},children:e}),(0,i.jsx)(`div`,{style:{border:`1px solid hsl(var(--border))`,borderRadius:`0`,overflow:`hidden`,fontSize:`13px`},children:n})]})}function f({columns:e}){return(0,i.jsx)(`div`,{style:{display:`flex`,gap:`8px`,padding:`5px 8px`,borderBottom:`1px solid hsl(var(--border))`,fontSize:`13px`,fontFamily:`var(--font-mono, monospace)`,background:`hsl(var(--card))`,color:`hsl(var(--card-foreground))`},children:e.map((e,t)=>(0,i.jsx)(`span`,{style:{flex:t===0?2:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e},t))})}export{c as DeadCodeScanPanel};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./chat-store-CM1dMeuY.js";import{Ai as n,Kn as r,Mt as i,Sa as a,Si as o,_a as s,an as c,at as l,ba as u,di as d,et as f,gi as p,gt as m,in as h,ir as g,it as _,mn as v,pn as y,tn as b,xi as x,yn as S,yt as C}from"./vendor-2VBBgNb5.js";import"./i18n-1BkaqMgr.js";import{t as ee}from"./useWebSocket-Dh3aAFDE.js";import{t as w}from"./utils-CN2sfDVP.js";import{m as T,p as E,t as D}from"./stores-mpa0202y.js";import{o as O}from"./view-navigation-Cgy5xh9q.js";import{t as k}from"./button-uGqXvobk.js";import{S as A,n as j,r as te,t as ne}from"./index-BPfIz78e.js";var M=e(a(),1),N=f(),P={pending:{icon:(0,N.jsx)(x,{className:`w-4 h-4`}),color:`text-muted-foreground`,label:`Pending`},in_progress:{icon:(0,N.jsx)(p,{className:`w-4 h-4 animate-spin`}),color:`text-primary`,label:`In Progress`},blocked:{icon:(0,N.jsx)(S,{className:`w-4 h-4`}),color:`text-warning`,label:`Blocked`},failed:{icon:(0,N.jsx)(o,{className:`w-4 h-4`}),color:`text-destructive`,label:`Failed`},review:{icon:(0,N.jsx)(h,{className:`w-4 h-4`}),color:`text-info`,label:`Review`},completed:{icon:(0,N.jsx)(n,{className:`w-4 h-4`}),color:`text-success`,label:`Done`}},F={critical:`bg-destructive/15 text-destructive`,high:`bg-warning/15 text-warning`,medium:`bg-info/15 text-info`,low:`bg-muted text-muted-foreground`},I={feature:`bg-success/15 text-success`,bugfix:`bg-destructive/15 text-destructive`,refactor:`bg-primary/15 text-primary`,docs:`bg-info/15 text-info`,test:`bg-primary/15 text-primary`,chore:`bg-muted text-muted-foreground`};function L(e){if(!e)return``;let t=Math.floor(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;return r>0?`${n}h ${r}m`:`${n}h`}function R({task:e,onStatusChange:t,onRetry:n,agents:r,onAssign:i,compact:a,className:o}){let{t:c}=s(),l=P[e.status],[u,d]=(0,M.useState)(!1),f=e.status===`in_progress`;return(0,N.jsxs)(`div`,{className:w(`w-full text-left rounded-lg border p-3 transition-all hover:shadow-sm`,f?`border-primary/40 bg-primary/5`:e.status===`completed`?`border-success/35 bg-success/6`:e.status===`failed`?`border-destructive/40 bg-destructive/5`:`border-border bg-card`,o),children:[(0,N.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,N.jsx)(`span`,{className:w(`mt-0.5`,l.color),role:`img`,"aria-label":f?c(`common:status.inProgress`):void 0,children:l.icon}),(0,N.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,N.jsx)(`span`,{className:`text-sm font-medium`,children:e.title}),(0,N.jsx)(`span`,{className:w(`px-1.5 py-0.5 rounded text-[10px] font-medium`,F[e.priority]),children:e.priority}),(0,N.jsx)(`span`,{className:w(`px-1.5 py-0.5 rounded text-[10px] font-medium`,I[e.type]),children:e.type})]}),e.description&&(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 line-clamp-2`,children:e.description})]})]}),e.assignee&&(0,N.jsxs)(`div`,{className:w(`mt-2 inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[10px] font-medium`,f?`bg-primary/15 text-primary`:`bg-muted text-muted-foreground`),children:[f&&(0,N.jsx)(p,{className:`w-3 h-3 animate-spin`,"aria-label":c(`common:status.working`)}),(0,N.jsx)(`span`,{children:e.assignee})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-3 mt-2 text-xs text-muted-foreground`,children:[e.estimateHours?(0,N.jsxs)(`span`,{children:[`~`,e.estimateHours,`h`]}):null,e.actualHours?(0,N.jsxs)(`span`,{children:[`• `,e.actualHours,`h`]}):null,e.startedAt?(0,N.jsxs)(`span`,{children:[`• `,L(Date.now()-e.startedAt)]}):null]}),e.tags.length>0&&(0,N.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:e.tags.map(e=>(0,N.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] bg-muted text-muted-foreground`,children:e},e))}),!a&&(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 mt-2`,children:[t&&e.status!==`in_progress`&&e.status!==`completed`&&(0,N.jsx)(`button`,{type:`button`,onClick:()=>t(e.id,`in_progress`),className:`px-2 py-0.5 text-[10px] rounded bg-primary/15 text-primary hover:bg-primary/25 transition-colors`,children:c(`activity:task.start`)}),t&&e.status===`in_progress`&&(0,N.jsx)(`button`,{type:`button`,onClick:()=>t(e.id,`completed`),className:`px-2 py-0.5 text-[10px] rounded bg-success/15 text-success hover:bg-success/25 transition-colors`,children:c(`activity:task.complete`)}),n&&(e.status===`failed`||e.status===`completed`)&&(0,N.jsxs)(`button`,{type:`button`,onClick:()=>n(e.id),className:`px-2 py-0.5 text-[10px] rounded bg-muted text-muted-foreground hover:bg-muted/70 transition-colors inline-flex items-center gap-1`,children:[(0,N.jsx)(h,{className:`w-3 h-3`}),` `,c(`activity:task.retry`)]}),i&&r&&r.length>0&&(u?(0,N.jsxs)(`select`,{defaultValue:e.assignee??``,onChange:t=>{i(e.id,t.target.value),d(!1)},onBlur:()=>d(!1),className:`px-1 py-0.5 text-[10px] rounded border border-border bg-card`,children:[(0,N.jsx)(`option`,{value:``,children:c(`activity:task.unassigned`)}),r.map(e=>(0,N.jsx)(`option`,{value:e,children:e},e))]}):(0,N.jsxs)(`button`,{type:`button`,onClick:()=>d(!0),className:`px-2 py-0.5 text-[10px] rounded bg-muted text-muted-foreground hover:bg-muted/70 transition-colors inline-flex items-center gap-1`,title:c(`activity:task.assignTitle`),children:[(0,N.jsx)(m,{className:`w-3 h-3`}),` `,c(`activity:task.assign`)]}))]})]})}var z=[{key:`pending`,label:`Pending`,match:[`pending`,`blocked`]},{key:`in_progress`,label:`In Progress`,match:[`in_progress`]},{key:`review`,label:`Review`,match:[`review`]},{key:`failed`,label:`Failed`,match:[`failed`]},{key:`completed`,label:`Done`,match:[`completed`]}],B={pending:`bg-muted text-muted-foreground`,ready:`bg-info/15 text-info`,running:`bg-primary/15 text-primary`,paused:`bg-warning/15 text-warning`,completed:`bg-success/15 text-success`,failed:`bg-destructive/15 text-destructive`,skipped:`bg-muted text-muted-foreground`};function re(){let{client:e}=ee(),{t}=s(),n=E(e=>e.phases),r=E(e=>e.multiBoard),[i,a]=(0,M.useState)(`phase`),[o,c]=(0,M.useState)(null),[l,u]=(0,M.useState)(null),[f,p]=(0,M.useState)(0),m=Math.min(f,Math.max(0,n.length-1)),h=r?n[m]:void 0,g=(0,M.useMemo)(()=>n.flatMap(e=>(e.tasks??[]).map(t=>({...t,phaseId:e.id}))),[n]),_=(0,M.useMemo)(()=>[...new Set(g.map(e=>e.assignee).filter(e=>!!e))],[g]),v=(0,M.useCallback)(t=>e?.send?.(t),[e]),y=(0,M.useCallback)((e,t)=>v({type:`goal.taskStatus`,payload:{taskId:e,status:t}}),[v]),x=(0,M.useCallback)(e=>v({type:`goal.retryTask`,payload:{taskId:e}}),[v]),S=(0,M.useCallback)((e,t)=>v({type:`goal.assignTask`,payload:{taskId:e,agentName:t||void 0}}),[v]),C=(0,M.useCallback)(e=>{A({title:t(`activity:board.newTaskTitle`),placeholder:t(`activity:board.newTaskPlaceholder`),confirmLabel:t(`activity:board.addTask`)}).then(t=>{t&&v({type:`goal.addTask`,payload:{phaseId:e,title:t}})})},[v]),T=(0,M.useCallback)(e=>{o&&v({type:`goal.moveTask`,payload:{taskId:o,toPhaseId:e}}),c(null),u(null)},[o,v]),D=(0,M.useCallback)(e=>{o&&v({type:`goal.taskStatus`,payload:{taskId:o,status:e}}),c(null),u(null)},[o,v]),O={onStatusChange:y,onRetry:x,agents:_,onAssign:S};function k(e){return{draggable:!0,onDragStart:t=>{c(e),t.dataTransfer.effectAllowed=`move`},onDragEnd:()=>{c(null),u(null)}}}function j(e,t){return{onDragOver:t=>{t.preventDefault(),t.dataTransfer.dropEffect=`move`,l!==e&&u(e)},onDragLeave:()=>u(t=>t===e?null:t),onDrop:e=>{e.preventDefault(),t()},"data-hover":l===e||void 0}}return n.length===0?(0,N.jsx)(`div`,{className:`flex h-full min-h-0 min-w-0 items-center justify-center text-muted-foreground`,children:(0,N.jsx)(`p`,{className:`text-sm`,children:t(`activity:board.empty`)})}):(0,N.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-2`,children:[(0,N.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t(`activity:board.summary`,{phases:n.length,tasks:g.length})}),(0,N.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border p-0.5`,children:[(0,N.jsxs)(`button`,{type:`button`,onClick:()=>a(`phase`),className:w(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors`,i===`phase`?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`),children:[(0,N.jsx)(d,{className:`h-3.5 w-3.5`}),` `,t(`activity:board.phases`)]}),(0,N.jsxs)(`button`,{type:`button`,onClick:()=>a(`status`),className:w(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors`,i===`status`?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`),children:[(0,N.jsx)(b,{className:`h-3.5 w-3.5`}),` `,t(`activity:board.statusTab`)]})]})]}),r&&h?(0,N.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[(0,N.jsx)(`div`,{className:`flex shrink-0 gap-1 overflow-x-auto border-b border-border px-3 py-1.5`,children:n.map((e,t)=>(0,N.jsxs)(`button`,{type:`button`,onClick:()=>p(t),className:w(`shrink-0 rounded-t px-3 py-1.5 text-xs font-medium transition-colors`,t===m?`border-primary/40 bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted hover:text-foreground`),children:[(0,N.jsx)(`span`,{className:`truncate`,children:e.name}),(0,N.jsxs)(`span`,{className:`ml-1.5 text-[10px] text-muted-foreground`,children:[e.completedTasks,`/`,e.taskCount]})]},e.id))}),(0,N.jsx)(U,{phase:h,allTasks:g,layout:i,dragId:o,hoverKey:l,callbacks:O,draggable:k,dropZone:j,dropToPhase:T,dropToStatus:D,onAddTask:C})]}):(0,N.jsx)(H,{phases:n,allTasks:g,layout:i,dragId:o,hoverKey:l,callbacks:O,draggable:k,dropZone:j,dropToPhase:T,dropToStatus:D,onAddTask:C})]})}function V({phase:e,phaseTasks:t,callbacks:n,draggable:r,dropZone:i,dropToPhase:a,onAddTask:o,dragId:c,hoverKey:l}){let{t:u}=s();return(0,N.jsxs)(`div`,{...i(`phase:${e.id}`,()=>a(e.id)),className:w(`flex min-h-0 w-80 shrink-0 flex-col rounded-lg border bg-muted/30 transition-colors`,l===`phase:${e.id}`?`border-primary/60 bg-primary/5`:`border-border`),children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-b border-border px-3 py-2`,children:[(0,N.jsxs)(`div`,{className:`min-w-0`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(`span`,{className:`truncate text-sm font-semibold`,children:e.name}),(0,N.jsx)(`span`,{className:w(`rounded px-1.5 py-0.5 text-[10px] font-medium capitalize`,B[e.status]),children:e.status})]}),(0,N.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[e.completedTasks,`/`,e.taskCount,` · `,e.progressPercent,`%`]})]}),(0,N.jsx)(`button`,{type:`button`,onClick:()=>o(e.id),title:u(`activity:board.addTask`),className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,N.jsx)(y,{className:`h-4 w-4`})})]}),(0,N.jsx)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto overscroll-contain p-2`,children:t.length===0?(0,N.jsx)(`p`,{className:`px-1 py-4 text-center text-[11px] text-muted-foreground`,children:u(`activity:board.dropHere`)}):t.map(e=>(0,N.jsx)(`div`,{...r(e.id),className:w(c===e.id&&`opacity-50`),children:(0,N.jsx)(R,{task:e,...n})},e.id))})]})}function H({phases:e,allTasks:t,layout:n,dragId:r,hoverKey:i,callbacks:a,draggable:o,dropZone:s,dropToPhase:c,dropToStatus:l,onAddTask:u}){return(0,N.jsx)(N.Fragment,{children:n===`phase`?(0,N.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 gap-3 overflow-x-auto p-3`,children:e.map(e=>(0,N.jsx)(V,{phase:e,phaseTasks:t.filter(t=>t.phaseId===e.id),callbacks:a,draggable:o,dropZone:s,dropToPhase:c,onAddTask:u,dragId:r,hoverKey:i},e.id))}):(0,N.jsx)(W,{phases:e,allTasks:t,dragId:r,hoverKey:i,callbacks:a,draggable:o,dropZone:s,dropToStatus:l})})}function U({phase:e,allTasks:t,layout:n,dragId:r,hoverKey:i,callbacks:a,draggable:o,dropZone:c,dropToPhase:l,dropToStatus:u,onAddTask:d}){let f=t.filter(t=>t.phaseId===e.id),{t:p}=s();return n===`phase`?(0,N.jsx)(`div`,{className:`flex min-h-0 min-w-0 flex-1 gap-3 overflow-x-auto p-3`,children:(0,N.jsx)(V,{phase:e,phaseTasks:f,callbacks:a,draggable:o,dropZone:c,dropToPhase:l,onAddTask:d,dragId:r,hoverKey:i})}):(0,N.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-auto overscroll-contain p-3`,children:(0,N.jsxs)(`div`,{className:`grid min-w-[900px] gap-2`,style:{gridTemplateColumns:`9rem repeat(${z.length}, minmax(0, 1fr))`},children:[(0,N.jsx)(`div`,{}),z.map(e=>(0,N.jsx)(`div`,{className:`px-2 pb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:p(`activity:board.status.${e.key}`)},e.key)),(0,N.jsxs)(G,{children:[(0,N.jsx)(`div`,{className:`flex items-center pr-2`,children:(0,N.jsxs)(`div`,{className:`min-w-0`,children:[(0,N.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,N.jsx)(`span`,{className:w(`mt-0.5 inline-block rounded px-1.5 py-0.5 text-[10px] capitalize`,B[e.status]),children:e.status})]})}),z.map(t=>{let n=f.filter(e=>t.match.includes(e.status)),s=`cell:${e.id}:${t.key}`;return(0,N.jsx)(`div`,{...c(s,()=>u(t.key)),className:w(`min-h-[4rem] space-y-2 rounded-md border p-1.5 transition-colors`,i===s?`border-primary/60 bg-primary/5`:`border-border bg-muted/20`),children:n.map(e=>(0,N.jsx)(`div`,{...o(e.id),className:w(r===e.id&&`opacity-50`),children:(0,N.jsx)(R,{task:e,compact:!0,...a})},e.id))},t.key)})]},e.id)]})})}function W({phases:e,allTasks:t,dragId:n,hoverKey:r,callbacks:i,draggable:a,dropZone:o,dropToStatus:c}){let{t:l}=s();return(0,N.jsxs)(`div`,{className:`grid min-w-[900px] gap-2`,style:{gridTemplateColumns:`9rem repeat(${z.length}, minmax(0, 1fr))`},children:[(0,N.jsx)(`div`,{}),z.map(e=>(0,N.jsx)(`div`,{className:`px-2 pb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:l(`activity:board.status.${e.key}`)},e.key)),e.map(e=>(0,N.jsxs)(G,{children:[(0,N.jsx)(`div`,{className:`flex items-center pr-2`,children:(0,N.jsxs)(`div`,{className:`min-w-0`,children:[(0,N.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,N.jsx)(`span`,{className:w(`mt-0.5 inline-block rounded px-1.5 py-0.5 text-[10px] capitalize`,B[e.status]),children:e.status})]})}),z.map(s=>{let l=t.filter(t=>t.phaseId===e.id&&s.match.includes(t.status)),u=`cell:${e.id}:${s.key}`;return(0,N.jsx)(`div`,{...o(u,()=>c(s.key)),className:w(`min-h-[4rem] space-y-2 rounded-md border p-1.5 transition-colors`,r===u?`border-primary/60 bg-primary/5`:`border-border bg-muted/20`),children:l.map(e=>(0,N.jsx)(`div`,{...a(e.id),className:w(n===e.id&&`opacity-50`),children:(0,N.jsx)(R,{task:e,compact:!0,...i})},e.id))},s.key)})]},e.id))]})}function G({children:e}){return(0,N.jsx)(N.Fragment,{children:e})}function K({onClose:e}){let{client:n}=ee(),{t:a}=s(),o=E(e=>e.phases),d=E(e=>e.overallPercent),f=E(e=>e.autonomous),p=E(e=>e.title),m=E(e=>e.goal),h=E(e=>e.status),b=E(e=>e.lastError),x=E(e=>e.graphs);(0,M.useEffect)(()=>{n?.send?.({type:`goal.list`}),n?.send?.({type:`goal.state`})},[n]);let A=D(e=>e.worktrees),P=D(e=>e.baseBranch),[F,I]=(0,M.useState)(``),[L,R]=(0,M.useState)(null),[z,B]=(0,M.useState)(!1),[V,H]=(0,M.useState)(!0),[U,W]=(0,M.useState)(!1),[G,K]=(0,M.useState)(!1),[q,ie]=(0,M.useState)(!1),J=T(e=>e.result),Y=T(e=>e.loading),X=(0,M.useRef)(null);(0,M.useEffect)(()=>{if(X.current&&clearTimeout(X.current),!F.trim()){T.getState().clear();return}return X.current=setTimeout(()=>{T.getState().setLoading();let e=T.getState().nextSeq();n?.send?.({type:`goal.assess`,payload:{goal:F,seq:e}})},800),()=>{X.current&&clearTimeout(X.current)}},[F,n]),(0,M.useEffect)(()=>{!F.trim()&&!L&&T.getState().clear()},[F,L]);let Z=o.length>0,ae=L!=null&&!Z;(0,M.useEffect)(()=>{Z&&R(null)},[Z]);let Q=(0,M.useCallback)(()=>{let e=F.trim();if(!e||L!=null)return;let r=t.getState();r.addMessage({role:`user`,content:e}),r.addMessage({role:`assistant`,content:u.t(`activity:goalRun.planningAck`)}),R(e),I(``),n?.send?.({type:`goal.start`,payload:{title:e,autonomous:!0,worktrees:V,multiBoard:U,verifyTasks:G,chimeraReview:q}}),O(`chat`)},[F,L,n,V]),oe=(0,M.useCallback)(()=>{n?.send?.({type:`goal.stop`,payload:{}}),R(null)},[n]),se=(0,M.useCallback)(()=>{n?.send?.({type:`goal.toggleAutonomous`,payload:{}})},[n]),ce=(0,M.useCallback)(()=>{n?.send?.(h===`paused`?{type:`goal.resume`,payload:{}}:{type:`goal.pause`,payload:{}})},[n,h]),le=(0,M.useCallback)(()=>{n?.send?.({type:`goal.stop`,payload:{}})},[n]),ue=(0,M.useCallback)(()=>{n?.send?.({type:`goal.clear`,payload:{}}),E.getState().clear(),R(null),I(``)},[n]),[de,$]=(0,M.useState)(!1),fe=(0,M.useCallback)(()=>{n?.send?.({type:`goal.revert`,payload:{}}),$(!1)},[n]),pe=h===`running`||h===`paused`,me=h===`stopped`||h===`completed`||h===`failed`,he=(0,M.useCallback)(e=>{e&&n?.send?.({type:`goal.load`,payload:{graphId:e}})},[n]);return(0,N.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,N.jsxs)(`header`,{className:`flex shrink-0 flex-col gap-2 border-b bg-card px-4 py-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,N.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,N.jsx)(g,{className:`h-5 w-5 text-muted-foreground`}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`h1`,{className:`text-lg font-semibold`,children:Z&&p||`Goal`}),Z&&(0,N.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(`activity:goalRun.summary`,{count:o.length,pct:d})})]}),Z&&(0,N.jsx)(`span`,{className:w(`rounded border px-2 py-0.5 text-[11px] font-medium capitalize`,h===`failed`?`border-destructive/40 bg-destructive/10 text-destructive`:h===`paused`||h===`stopped`?`border-warning/40 bg-warning/10 text-warning`:h===`completed`?`border-success/40 bg-success/10 text-success`:`border-primary/30 bg-primary/10 text-primary`),title:b??void 0,children:h})]}),(0,N.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2 sm:justify-end`,children:[x.length>0&&(0,N.jsxs)(`select`,{value:Z?x.find(e=>e.title===p)?.id??``:``,onChange:e=>he(e.target.value),title:a(`activity:goalRun.switchBoard`),className:`min-w-0 flex-1 rounded border border-border bg-card px-2 py-1 text-xs text-foreground sm:w-72 sm:flex-none`,children:[(0,N.jsx)(`option`,{value:``,disabled:!0,children:a(`activity:goalRun.boardsCount`,{count:x.length})}),x.map(e=>(0,N.jsxs)(`option`,{value:e.id,children:[e.title,` · `,e.status]},e.id))]}),Z&&(0,N.jsxs)(`button`,{type:`button`,onClick:se,title:a(`activity:goalRun.toggleAutonomousTitle`),className:w(`inline-flex items-center gap-1 rounded border px-2 py-1 text-xs transition-colors`,f?`border-primary/30 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:[(0,N.jsx)(_,{className:`h-3.5 w-3.5`}),` `,a(f?`activity:goalRun.autonomous`:`activity:goalRun.manual`)]}),pe&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`button`,{type:`button`,onClick:ce,title:a(h===`paused`?`activity:goalRun.resumeTitle`:`activity:goalRun.pauseTitle`),className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,children:[h===`paused`?(0,N.jsx)(v,{className:`h-3.5 w-3.5`}):(0,N.jsx)(S,{className:`h-3.5 w-3.5`}),a(h===`paused`?`activity:goalRun.resume`:`activity:goalRun.pause`)]}),(0,N.jsxs)(`button`,{type:`button`,onClick:le,title:a(`activity:goalRun.stopTitle`),className:`inline-flex items-center gap-1 rounded border border-destructive/40 bg-destructive/10 px-2 py-1 text-xs font-medium text-destructive transition-colors hover:bg-destructive/20`,children:[(0,N.jsx)(i,{className:`h-3.5 w-3.5 fill-current`}),` `,a(`activity:goalRun.stop`)]})]}),Z&&me&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`button`,{type:`button`,onClick:ue,title:a(`activity:goalRun.newTitle`),className:`inline-flex items-center gap-1 rounded border border-primary/30 bg-primary/10 px-2 py-1 text-xs font-medium text-primary transition-colors hover:bg-primary/20`,children:[(0,N.jsx)(y,{className:`h-3.5 w-3.5`}),` `,a(`activity:goalRun.newLabel`)]}),de?(0,N.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-warning/40 bg-warning/10 px-1.5 py-0.5 text-xs`,children:[(0,N.jsx)(`span`,{className:`text-warning`,children:a(`activity:goalRun.revertConfirm`)}),(0,N.jsx)(`button`,{type:`button`,onClick:fe,className:`rounded bg-destructive/15 px-1.5 py-0.5 font-medium text-destructive hover:bg-destructive/25`,children:a(`common:action.yes`)}),(0,N.jsx)(`button`,{type:`button`,onClick:()=>$(!1),className:`rounded px-1.5 py-0.5 text-muted-foreground hover:text-foreground`,children:a(`common:action.no`)})]}):(0,N.jsxs)(`button`,{type:`button`,onClick:()=>$(!0),title:a(`activity:goalRun.revertTitle`),className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,children:[(0,N.jsx)(C,{className:`h-3.5 w-3.5`}),` `,a(`activity:goalRun.revert`)]})]}),(0,N.jsx)(k,{variant:`ghost`,size:`icon`,onClick:e,children:(0,N.jsx)(l,{className:`h-4 w-4`})})]})]}),Z&&m&&(0,N.jsxs)(`div`,{className:`shrink-0 border-b border-border/60 bg-muted/20 px-4 py-2.5`,children:[(0,N.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,N.jsx)(c,{className:`h-3 w-3`}),` `,a(`activity:goalRun.goal`)]}),(0,N.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:m})]}),Z?(0,N.jsx)(`div`,{className:`flex min-h-0 flex-1`,children:(0,N.jsx)(re,{})}):ae?(0,N.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,N.jsxs)(`div`,{className:`max-w-lg w-full space-y-5 text-center`,children:[(0,N.jsx)(r,{className:`h-10 w-10 mx-auto animate-spin text-primary/70`}),(0,N.jsxs)(`div`,{className:`space-y-1`,children:[(0,N.jsx)(`h2`,{className:`text-xl font-semibold`,children:a(`activity:goalRun.planning`)}),(0,N.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(`activity:goalRun.planningBody`)})]}),(0,N.jsxs)(`div`,{className:`rounded-lg border border-border bg-card px-4 py-3 text-left`,children:[(0,N.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,N.jsx)(c,{className:`h-3 w-3`}),` `,a(`activity:goalRun.goal`)]}),(0,N.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:L})]}),(0,N.jsxs)(k,{variant:`outline`,onClick:oe,className:`gap-2`,children:[(0,N.jsx)(i,{className:`h-4 w-4 fill-current`}),` `,a(`common:action.cancel`)]})]})}):(0,N.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,N.jsxs)(`div`,{className:`max-w-lg w-full space-y-6`,children:[(0,N.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,N.jsx)(c,{className:`h-10 w-10 mx-auto text-primary/60`}),(0,N.jsx)(`h2`,{className:`text-xl font-semibold`,children:a(`activity:goalRun.startHeading`)}),(0,N.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(`activity:goalRun.startBody`)})]}),(0,N.jsx)(`textarea`,{value:F,onChange:e=>I(e.target.value),placeholder:a(`activity:goalRun.startPlaceholder`),rows:5,className:`w-full rounded-lg border border-border bg-card px-4 py-3 text-sm resize-none focus:outline-none focus:ring-2 focus:ring-primary/30 placeholder:text-muted-foreground/70`,onKeyDown:e=>{e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),Q())}}),Y&&(0,N.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,N.jsx)(r,{className:`h-3 w-3 animate-spin`}),a(`activity:goalRun.assess.analyzing`)]}),!Y&&J&&!J.parseFailed&&(0,N.jsxs)(`div`,{className:w(`rounded-lg border px-3 py-2 text-xs space-y-1.5`,J.realistic?`border-success/40 bg-success/10`:`border-warning/40 bg-warning/10`),children:[(0,N.jsx)(`div`,{className:`flex items-center gap-1.5 font-medium`,children:J.realistic?(0,N.jsx)(`span`,{className:`text-success`,children:a(`activity:goalRun.assess.realistic`)}):(0,N.jsx)(`span`,{className:`text-warning`,children:a(`activity:goalRun.assess.durationConcern`)})}),J.durationClaimed&&(0,N.jsx)(`p`,{className:`text-muted-foreground`,children:a(`activity:goalRun.assess.durationClaimed`,{duration:J.durationClaimed})}),(0,N.jsx)(`p`,{className:`text-muted-foreground`,children:J.explanation}),J.recommendedDuration&&(0,N.jsx)(`p`,{className:`text-muted-foreground`,children:a(`activity:goalRun.assess.recommendation`,{duration:J.recommendedDuration})}),J.concerns.length>0&&(0,N.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,N.jsx)(`p`,{className:`font-medium text-foreground/80`,children:a(`activity:goalRun.assess.concerns`)}),(0,N.jsx)(`ul`,{className:`list-disc pl-4 space-y-0.5 text-muted-foreground`,children:J.concerns.map((e,t)=>(0,N.jsx)(`li`,{children:e},t))})]})]}),!Y&&J?.parseFailed&&(0,N.jsx)(`div`,{className:`rounded-lg border border-border/40 bg-muted/20 px-3 py-2 text-xs text-muted-foreground`,children:a(`activity:goalRun.assess.analysisFailed`)}),(0,N.jsxs)(`label`,{className:`flex cursor-pointer items-center justify-center gap-2 text-xs text-muted-foreground`,children:[(0,N.jsx)(`input`,{type:`checkbox`,checked:V,onChange:e=>H(e.target.checked),className:`h-3.5 w-3.5 accent-primary`}),a(`activity:goalRun.isolateLabel`)]}),(0,N.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-3 text-xs text-muted-foreground`,children:[(0,N.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5`,children:[(0,N.jsx)(`input`,{type:`checkbox`,checked:U,onChange:e=>W(e.target.checked),className:`h-3.5 w-3.5 accent-primary`}),a(`activity:goalRun.multiBoardLabel`)]}),(0,N.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5`,children:[(0,N.jsx)(`input`,{type:`checkbox`,checked:G,onChange:e=>K(e.target.checked),className:`h-3.5 w-3.5 accent-primary`}),a(`activity:goalRun.verifyTasksLabel`)]}),(0,N.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5`,children:[(0,N.jsx)(`input`,{type:`checkbox`,checked:q,onChange:e=>ie(e.target.checked),className:`h-3.5 w-3.5 accent-primary`}),a(`activity:goalRun.chimeraReviewLabel`)]})]}),(0,N.jsxs)(`div`,{className:`flex items-center gap-3`,children:[!Y&&J&&!J.realistic&&!J.parseFailed&&(0,N.jsx)(`button`,{type:`button`,onClick:()=>T.getState().clear(),className:`shrink-0 rounded border border-border px-2 py-1 text-xs text-muted-foreground hover:text-foreground transition-colors`,title:a(`activity:goalRun.assess.overrideTitle`),children:a(`activity:goalRun.assess.override`)}),(0,N.jsxs)(k,{onClick:Q,disabled:!F.trim()||L!=null||Y||!Y&&J!=null&&!J.parseFailed&&!J.realistic,className:`flex-1 gap-2`,title:F.trim()&&!Y&&J&&!J.parseFailed&&!J.realistic?a(`activity:goalRun.assess.disableTitle`):``,children:[(0,N.jsx)(v,{className:`h-4 w-4`}),a(`activity:goalRun.startButton`)]})]}),(0,N.jsxs)(`p`,{className:`text-xs text-muted-foreground text-center`,children:[a(`activity:goalRun.ctrlHint`),` ·`,` `,a(V?`activity:goalRun.isolateOn`:`activity:goalRun.isolateOff`)]})]})}),A.length>0&&(0,N.jsxs)(`div`,{className:`border-t bg-card/50 shrink-0`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-4 pt-2 text-xs`,children:[(0,N.jsx)(`button`,{type:`button`,onClick:()=>B(!1),className:w(`rounded px-2 py-0.5 border transition-colors`,z?`border-border text-muted-foreground hover:text-foreground`:`bg-primary/10 border-primary/30 text-primary`),children:a(`activity:goalRun.lanes`)}),(0,N.jsx)(`button`,{type:`button`,onClick:()=>B(!0),className:w(`rounded px-2 py-0.5 border transition-colors`,z?`bg-primary/10 border-primary/30 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:a(`activity:goalRun.graph`)})]}),(0,N.jsxs)(`div`,{className:`space-y-2 px-4 pb-3`,children:[(0,N.jsx)(ne,{}),z?(0,N.jsx)(te,{worktrees:A,baseBranch:P}):(0,N.jsx)(j,{worktrees:A,baseBranch:P})]})]})]})}export{K as GoalView};