@hotmeshio/long-tail 0.2.10 → 0.3.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 (241) hide show
  1. package/build/api/topics.d.ts +22 -0
  2. package/build/api/topics.js +104 -0
  3. package/build/index.d.ts +3 -1
  4. package/build/index.js +7 -2
  5. package/build/lib/db/schemas/007_topic_catalog.sql +27 -0
  6. package/build/routes/index.js +2 -0
  7. package/build/routes/topics.d.ts +2 -0
  8. package/build/routes/topics.js +90 -0
  9. package/build/services/topics/index.d.ts +77 -0
  10. package/build/services/topics/index.js +116 -0
  11. package/build/services/topics/sql.d.ts +10 -0
  12. package/build/services/topics/sql.js +80 -0
  13. package/build/services/topics/system-topics.d.ts +11 -0
  14. package/build/services/topics/system-topics.js +270 -0
  15. package/build/start/workers.js +5 -0
  16. package/build/system/mcp-servers/events.js +73 -1
  17. package/build/system/seed/tool-manifests-events.d.ts +75 -0
  18. package/build/system/seed/tool-manifests-events.js +27 -0
  19. package/build/tsconfig.tsbuildinfo +1 -1
  20. package/build/types/index.d.ts +2 -2
  21. package/build/types/startup.d.ts +27 -0
  22. package/dashboard/dist/assets/AdminDashboard-CbeSejVX.js +2 -0
  23. package/dashboard/dist/assets/{AdminDashboard-45Ya2uzl.js.map → AdminDashboard-CbeSejVX.js.map} +1 -1
  24. package/dashboard/dist/assets/AgentConfigPage-CFJNOrlg.js +13 -0
  25. package/dashboard/dist/assets/AgentConfigPage-CFJNOrlg.js.map +1 -0
  26. package/dashboard/dist/assets/AgentDetailPage-Dbx2t-Uk.js +4 -0
  27. package/dashboard/dist/assets/AgentDetailPage-Dbx2t-Uk.js.map +1 -0
  28. package/dashboard/dist/assets/{AgentsPage--I4d5y9J.js → AgentsPage-Bz61Nl-x.js} +2 -2
  29. package/dashboard/dist/assets/{AgentsPage--I4d5y9J.js.map → AgentsPage-Bz61Nl-x.js.map} +1 -1
  30. package/dashboard/dist/assets/AvailableEscalationsPage-DdrzePy4.js +2 -0
  31. package/dashboard/dist/assets/AvailableEscalationsPage-DdrzePy4.js.map +1 -0
  32. package/dashboard/dist/assets/{BotPicker-DgbzCesR.js → BotPicker-kKBifD1w.js} +2 -2
  33. package/dashboard/dist/assets/{BotPicker-DgbzCesR.js.map → BotPicker-kKBifD1w.js.map} +1 -1
  34. package/dashboard/dist/assets/{CapabilitiesPage-B2S8_Gsc.js → CapabilitiesPage-Ch5qY0I7.js} +2 -2
  35. package/dashboard/dist/assets/{CapabilitiesPage-B2S8_Gsc.js.map → CapabilitiesPage-Ch5qY0I7.js.map} +1 -1
  36. package/dashboard/dist/assets/{CollapsibleSection-4Eo3b5ha.js → CollapsibleSection-kYTBL7dT.js} +2 -2
  37. package/dashboard/dist/assets/{CollapsibleSection-4Eo3b5ha.js.map → CollapsibleSection-kYTBL7dT.js.map} +1 -1
  38. package/dashboard/dist/assets/{ConfirmDeleteModal-Bac7RmDD.js → ConfirmDeleteModal-CcaAapMl.js} +2 -2
  39. package/dashboard/dist/assets/{ConfirmDeleteModal-Bac7RmDD.js.map → ConfirmDeleteModal-CcaAapMl.js.map} +1 -1
  40. package/dashboard/dist/assets/{CopyableId-BhwdwAJN.js → CopyableId-B4CL12pv.js} +2 -2
  41. package/dashboard/dist/assets/{CopyableId-BhwdwAJN.js.map → CopyableId-B4CL12pv.js.map} +1 -1
  42. package/dashboard/dist/assets/{CredentialsPage-CSEBaYx1.js → CredentialsPage-D1VAlwid.js} +2 -2
  43. package/dashboard/dist/assets/{CredentialsPage-CSEBaYx1.js.map → CredentialsPage-D1VAlwid.js.map} +1 -1
  44. package/dashboard/dist/assets/{CronLabel-DV2v2FlP.js → CronLabel-DRmO5rH0.js} +2 -2
  45. package/dashboard/dist/assets/{CronLabel-DV2v2FlP.js.map → CronLabel-DRmO5rH0.js.map} +1 -1
  46. package/dashboard/dist/assets/CustomDurationPicker-C06QDDir.js +2 -0
  47. package/dashboard/dist/assets/{CustomDurationPicker-B_Oxq_nK.js.map → CustomDurationPicker-C06QDDir.js.map} +1 -1
  48. package/dashboard/dist/assets/{DataTable-etck0Zmp.js → DataTable-J5R6mepB.js} +2 -2
  49. package/dashboard/dist/assets/{DataTable-etck0Zmp.js.map → DataTable-J5R6mepB.js.map} +1 -1
  50. package/dashboard/dist/assets/{DropZone-BDpzHWsI.js → DropZone-DwNj3GiG.js} +2 -2
  51. package/dashboard/dist/assets/{DropZone-BDpzHWsI.js.map → DropZone-DwNj3GiG.js.map} +1 -1
  52. package/dashboard/dist/assets/{ElapsedCell-D35Z-HSJ.js → ElapsedCell-ChyMzl9n.js} +2 -2
  53. package/dashboard/dist/assets/{ElapsedCell-D35Z-HSJ.js.map → ElapsedCell-ChyMzl9n.js.map} +1 -1
  54. package/dashboard/dist/assets/{EmptyState-Bk3_P-b8.js → EmptyState-BXGvOADa.js} +2 -2
  55. package/dashboard/dist/assets/{EmptyState-Bk3_P-b8.js.map → EmptyState-BXGvOADa.js.map} +1 -1
  56. package/dashboard/dist/assets/{EscalationsOverview-Bt6gGFW4.js → EscalationsOverview-DM6zmE4g.js} +2 -2
  57. package/dashboard/dist/assets/{EscalationsOverview-Bt6gGFW4.js.map → EscalationsOverview-DM6zmE4g.js.map} +1 -1
  58. package/dashboard/dist/assets/{EventTable-BMk93q8A.js → EventTable-CvJ98E8s.js} +2 -2
  59. package/dashboard/dist/assets/{EventTable-BMk93q8A.js.map → EventTable-CvJ98E8s.js.map} +1 -1
  60. package/dashboard/dist/assets/{EventTopicPill-9LcMnLF0.js → EventTopicPill-CB_rIGlL.js} +2 -2
  61. package/dashboard/dist/assets/{EventTopicPill-9LcMnLF0.js.map → EventTopicPill-CB_rIGlL.js.map} +1 -1
  62. package/dashboard/dist/assets/{FilterBar-CZGTOMoo.js → FilterBar-Bdssa-Xn.js} +2 -2
  63. package/dashboard/dist/assets/{FilterBar-CZGTOMoo.js.map → FilterBar-Bdssa-Xn.js.map} +1 -1
  64. package/dashboard/dist/assets/{HomePage-Dtk7mgmf.js → HomePage-BuZkdXZt.js} +2 -2
  65. package/dashboard/dist/assets/{HomePage-Dtk7mgmf.js.map → HomePage-BuZkdXZt.js.map} +1 -1
  66. package/dashboard/dist/assets/{ListToolbar-CJEzypCM.js → ListToolbar-jy8NL6ll.js} +2 -2
  67. package/dashboard/dist/assets/{ListToolbar-CJEzypCM.js.map → ListToolbar-jy8NL6ll.js.map} +1 -1
  68. package/dashboard/dist/assets/{McpOverview-ChUa4l3t.js → McpOverview-xkaKuHbX.js} +2 -2
  69. package/dashboard/dist/assets/{McpOverview-ChUa4l3t.js.map → McpOverview-xkaKuHbX.js.map} +1 -1
  70. package/dashboard/dist/assets/{McpQueryDetailPage-04CTIN0v.js → McpQueryDetailPage-D5ICn6cR.js} +2 -2
  71. package/dashboard/dist/assets/{McpQueryDetailPage-04CTIN0v.js.map → McpQueryDetailPage-D5ICn6cR.js.map} +1 -1
  72. package/dashboard/dist/assets/{McpQueryPage-DFnHFdbr.js → McpQueryPage-C46fzfm5.js} +2 -2
  73. package/dashboard/dist/assets/{McpQueryPage-DFnHFdbr.js.map → McpQueryPage-C46fzfm5.js.map} +1 -1
  74. package/dashboard/dist/assets/McpRunDetailPage-Znsl4Yc-.js +2 -0
  75. package/dashboard/dist/assets/{McpRunDetailPage-B95c3bFw.js.map → McpRunDetailPage-Znsl4Yc-.js.map} +1 -1
  76. package/dashboard/dist/assets/{McpRunsPage-DS43YmLU.js → McpRunsPage-DT-armx5.js} +2 -2
  77. package/dashboard/dist/assets/{McpRunsPage-DS43YmLU.js.map → McpRunsPage-DT-armx5.js.map} +1 -1
  78. package/dashboard/dist/assets/{Modal-EUrK2c_A.js → Modal-C6k6_5KB.js} +2 -2
  79. package/dashboard/dist/assets/{Modal-EUrK2c_A.js.map → Modal-C6k6_5KB.js.map} +1 -1
  80. package/dashboard/dist/assets/{OperatorDashboard-DBF_AbRH.js → OperatorDashboard-e5N3_dVl.js} +2 -2
  81. package/dashboard/dist/assets/{OperatorDashboard-DBF_AbRH.js.map → OperatorDashboard-e5N3_dVl.js.map} +1 -1
  82. package/dashboard/dist/assets/{PageHeader-BuUnJ5NY.js → PageHeader-COcgWWf-.js} +2 -2
  83. package/dashboard/dist/assets/{PageHeader-BuUnJ5NY.js.map → PageHeader-COcgWWf-.js.map} +1 -1
  84. package/dashboard/dist/assets/{PageHeaderWithStats-cQKaJBAM.js → PageHeaderWithStats-C0PCY3aJ.js} +2 -2
  85. package/dashboard/dist/assets/{PageHeaderWithStats-cQKaJBAM.js.map → PageHeaderWithStats-C0PCY3aJ.js.map} +1 -1
  86. package/dashboard/dist/assets/{PriorityBadge-Bl0_pgex.js → PriorityBadge-BQCsYMpM.js} +2 -2
  87. package/dashboard/dist/assets/{PriorityBadge-Bl0_pgex.js.map → PriorityBadge-BQCsYMpM.js.map} +1 -1
  88. package/dashboard/dist/assets/ProcessDetailPage-C03LOgI0.js +2 -0
  89. package/dashboard/dist/assets/{ProcessDetailPage-DgeXrHon.js.map → ProcessDetailPage-C03LOgI0.js.map} +1 -1
  90. package/dashboard/dist/assets/{ProcessesListPage-BGiiH4dW.js → ProcessesListPage-iyPsmlhm.js} +2 -2
  91. package/dashboard/dist/assets/{ProcessesListPage-BGiiH4dW.js.map → ProcessesListPage-iyPsmlhm.js.map} +1 -1
  92. package/dashboard/dist/assets/{RolePill-DsYF2JN9.js → RolePill-CHwys1f9.js} +2 -2
  93. package/dashboard/dist/assets/{RolePill-DsYF2JN9.js.map → RolePill-CHwys1f9.js.map} +1 -1
  94. package/dashboard/dist/assets/{RolesPage-CQ7vPamb.js → RolesPage-Bmc3XaUk.js} +2 -2
  95. package/dashboard/dist/assets/{RolesPage-CQ7vPamb.js.map → RolesPage-Bmc3XaUk.js.map} +1 -1
  96. package/dashboard/dist/assets/{RowActions-DBpvm3Jy.js → RowActions-Bs4PF-Gd.js} +2 -2
  97. package/dashboard/dist/assets/{RowActions-DBpvm3Jy.js.map → RowActions-Bs4PF-Gd.js.map} +1 -1
  98. package/dashboard/dist/assets/{RunAsSelector-ZLKGTYP_.js → RunAsSelector-DXzAr2WW.js} +2 -2
  99. package/dashboard/dist/assets/{RunAsSelector-ZLKGTYP_.js.map → RunAsSelector-DXzAr2WW.js.map} +1 -1
  100. package/dashboard/dist/assets/{ServerName-B5-E7gZD.js → ServerName-BIdLC1Ay.js} +2 -2
  101. package/dashboard/dist/assets/{ServerName-B5-E7gZD.js.map → ServerName-BIdLC1Ay.js.map} +1 -1
  102. package/dashboard/dist/assets/{StatCard-B7ySTryP.js → StatCard-OKzRSSx4.js} +2 -2
  103. package/dashboard/dist/assets/{StatCard-B7ySTryP.js.map → StatCard-OKzRSSx4.js.map} +1 -1
  104. package/dashboard/dist/assets/{StatusBadge-DNXTk01O.js → StatusBadge-CQlF46RR.js} +2 -2
  105. package/dashboard/dist/assets/{StatusBadge-DNXTk01O.js.map → StatusBadge-CQlF46RR.js.map} +1 -1
  106. package/dashboard/dist/assets/{StepIndicator-ftNmaJsu.js → StepIndicator-CP7eycjI.js} +2 -2
  107. package/dashboard/dist/assets/{StepIndicator-ftNmaJsu.js.map → StepIndicator-CP7eycjI.js.map} +1 -1
  108. package/dashboard/dist/assets/{StickyPagination-CI5AyVVd.js → StickyPagination-CGk8VAKt.js} +2 -2
  109. package/dashboard/dist/assets/{StickyPagination-CI5AyVVd.js.map → StickyPagination-CGk8VAKt.js.map} +1 -1
  110. package/dashboard/dist/assets/{SwimlaneTimeline-BA4aFrHf.js → SwimlaneTimeline-MEUPc3yJ.js} +2 -2
  111. package/dashboard/dist/assets/{SwimlaneTimeline-BA4aFrHf.js.map → SwimlaneTimeline-MEUPc3yJ.js.map} +1 -1
  112. package/dashboard/dist/assets/{TagInput-DfbVwc27.js → TagInput-BGxXKiWD.js} +2 -2
  113. package/dashboard/dist/assets/{TagInput-DfbVwc27.js.map → TagInput-BGxXKiWD.js.map} +1 -1
  114. package/dashboard/dist/assets/{TaskDetailPage-A_kHjYRn.js → TaskDetailPage-pN5BXzYA.js} +2 -2
  115. package/dashboard/dist/assets/{TaskDetailPage-A_kHjYRn.js.map → TaskDetailPage-pN5BXzYA.js.map} +1 -1
  116. package/dashboard/dist/assets/{TaskQueuePill-Dtsa8CPO.js → TaskQueuePill-bw8ieKsf.js} +2 -2
  117. package/dashboard/dist/assets/{TaskQueuePill-Dtsa8CPO.js.map → TaskQueuePill-bw8ieKsf.js.map} +1 -1
  118. package/dashboard/dist/assets/{TasksListPage-Cw46VTuA.js → TasksListPage-D1INzcrA.js} +2 -2
  119. package/dashboard/dist/assets/{TasksListPage-Cw46VTuA.js.map → TasksListPage-D1INzcrA.js.map} +1 -1
  120. package/dashboard/dist/assets/{TimeAgo-Cx1kK1id.js → TimeAgo-CywLVIBA.js} +2 -2
  121. package/dashboard/dist/assets/{TimeAgo-Cx1kK1id.js.map → TimeAgo-CywLVIBA.js.map} +1 -1
  122. package/dashboard/dist/assets/{TimestampCell-VDp4nVn6.js → TimestampCell-B4Pc6f3A.js} +2 -2
  123. package/dashboard/dist/assets/{TimestampCell-VDp4nVn6.js.map → TimestampCell-B4Pc6f3A.js.map} +1 -1
  124. package/dashboard/dist/assets/{ToolPill-BNaTJhu8.js → ToolPill-DdLN3JOT.js} +2 -2
  125. package/dashboard/dist/assets/{ToolPill-BNaTJhu8.js.map → ToolPill-DdLN3JOT.js.map} +1 -1
  126. package/dashboard/dist/assets/{ToolTestPanel-BickLBjP.js → ToolTestPanel-DusbUka5.js} +2 -2
  127. package/dashboard/dist/assets/{ToolTestPanel-BickLBjP.js.map → ToolTestPanel-DusbUka5.js.map} +1 -1
  128. package/dashboard/dist/assets/TopicDetailPage-DadwM52Y.js +9 -0
  129. package/dashboard/dist/assets/TopicDetailPage-DadwM52Y.js.map +1 -0
  130. package/dashboard/dist/assets/TopicsPage-DbtrnQON.js +2 -0
  131. package/dashboard/dist/assets/TopicsPage-DbtrnQON.js.map +1 -0
  132. package/dashboard/dist/assets/{UserName-DCdb6xnk.js → UserName-CLbusknU.js} +2 -2
  133. package/dashboard/dist/assets/{UserName-DCdb6xnk.js.map → UserName-CLbusknU.js.map} +1 -1
  134. package/dashboard/dist/assets/{WorkflowExecutionPage-BZfxY1iB.js → WorkflowExecutionPage-C61R-3Gg.js} +2 -2
  135. package/dashboard/dist/assets/{WorkflowExecutionPage-BZfxY1iB.js.map → WorkflowExecutionPage-C61R-3Gg.js.map} +1 -1
  136. package/dashboard/dist/assets/{WorkflowPill-BzhfqGa-.js → WorkflowPill-7vt2F6wR.js} +2 -2
  137. package/dashboard/dist/assets/{WorkflowPill-BzhfqGa-.js.map → WorkflowPill-7vt2F6wR.js.map} +1 -1
  138. package/dashboard/dist/assets/{WorkflowsDashboard-B7M8kPoH.js → WorkflowsDashboard-BWiUNvyl.js} +2 -2
  139. package/dashboard/dist/assets/{WorkflowsDashboard-B7M8kPoH.js.map → WorkflowsDashboard-BWiUNvyl.js.map} +1 -1
  140. package/dashboard/dist/assets/{WorkflowsOverview-1V8vQ-mo.js → WorkflowsOverview-DA2ZOs7D.js} +2 -2
  141. package/dashboard/dist/assets/{WorkflowsOverview-1V8vQ-mo.js.map → WorkflowsOverview-DA2ZOs7D.js.map} +1 -1
  142. package/dashboard/dist/assets/YamlWorkflowsPage-CLebf2eL.js +2 -0
  143. package/dashboard/dist/assets/YamlWorkflowsPage-CLebf2eL.js.map +1 -0
  144. package/dashboard/dist/assets/{agents-SXs4tMLb.js → agents-Dga6NU7U.js} +2 -2
  145. package/dashboard/dist/assets/{agents-SXs4tMLb.js.map → agents-Dga6NU7U.js.map} +1 -1
  146. package/dashboard/dist/assets/{bots-Ci5aCzDK.js → bots-CtU4i4OQ.js} +2 -2
  147. package/dashboard/dist/assets/{bots-Ci5aCzDK.js.map → bots-CtU4i4OQ.js.map} +1 -1
  148. package/dashboard/dist/assets/{controlplane-BiPTCZeL.js → controlplane-BVoALhbL.js} +2 -2
  149. package/dashboard/dist/assets/{controlplane-BiPTCZeL.js.map → controlplane-BVoALhbL.js.map} +1 -1
  150. package/dashboard/dist/assets/escalation-_N5GfuIi.js +2 -0
  151. package/dashboard/dist/assets/escalation-_N5GfuIi.js.map +1 -0
  152. package/dashboard/dist/assets/{escalation-columns-Bpp7Sdbd.js → escalation-columns-CoTmTpHp.js} +2 -2
  153. package/dashboard/dist/assets/escalation-columns-CoTmTpHp.js.map +1 -0
  154. package/dashboard/dist/assets/{helpers-CQZkvg6D.js → helpers-Dz2U3Ctb.js} +2 -2
  155. package/dashboard/dist/assets/{helpers-CQZkvg6D.js.map → helpers-Dz2U3Ctb.js.map} +1 -1
  156. package/dashboard/dist/assets/{index-C7FUIcaY.js → index-6Kd78p_v.js} +2 -2
  157. package/dashboard/dist/assets/{index-C7FUIcaY.js.map → index-6Kd78p_v.js.map} +1 -1
  158. package/dashboard/dist/assets/{index-DOE7HCzb.js → index-B9ealjkt.js} +4 -4
  159. package/dashboard/dist/assets/{index-DOE7HCzb.js.map → index-B9ealjkt.js.map} +1 -1
  160. package/dashboard/dist/assets/index-BIUHY2Jz.css +1 -0
  161. package/dashboard/dist/assets/{index-hfravTJF.js → index-BWHDW_CF.js} +2 -2
  162. package/dashboard/dist/assets/{index-hfravTJF.js.map → index-BWHDW_CF.js.map} +1 -1
  163. package/dashboard/dist/assets/{index-DtbAmRkr.js → index-BYwPVJv0.js} +2 -2
  164. package/dashboard/dist/assets/{index-DtbAmRkr.js.map → index-BYwPVJv0.js.map} +1 -1
  165. package/dashboard/dist/assets/index-CCOSf1PY.js +281 -0
  166. package/dashboard/dist/assets/index-CCOSf1PY.js.map +1 -0
  167. package/dashboard/dist/assets/{index-DV0_tQW3.js → index-CS61sh5q.js} +2 -2
  168. package/dashboard/dist/assets/{index-DV0_tQW3.js.map → index-CS61sh5q.js.map} +1 -1
  169. package/dashboard/dist/assets/index-CtbG3UN-.js +5 -0
  170. package/dashboard/dist/assets/index-CtbG3UN-.js.map +1 -0
  171. package/dashboard/dist/assets/{index-CSsOukxa.js → index-DWUunWxh.js} +2 -2
  172. package/dashboard/dist/assets/{index-CSsOukxa.js.map → index-DWUunWxh.js.map} +1 -1
  173. package/dashboard/dist/assets/{index-COiEQlp9.js → index-D_H_Prht.js} +2 -2
  174. package/dashboard/dist/assets/{index-COiEQlp9.js.map → index-D_H_Prht.js.map} +1 -1
  175. package/dashboard/dist/assets/{index-q4T_i7zT.js → index-Dpjguclc.js} +2 -2
  176. package/dashboard/dist/assets/{index-q4T_i7zT.js.map → index-Dpjguclc.js.map} +1 -1
  177. package/dashboard/dist/assets/{index-OTsFiHXP.js → index-QicYdUsl.js} +2 -2
  178. package/dashboard/dist/assets/index-QicYdUsl.js.map +1 -0
  179. package/dashboard/dist/assets/{index-Bp5f2OWJ.js → index-dM-OgCY3.js} +2 -2
  180. package/dashboard/dist/assets/{index-Bp5f2OWJ.js.map → index-dM-OgCY3.js.map} +1 -1
  181. package/dashboard/dist/assets/{knowledge-D8osen1O.js → knowledge-DJlebU82.js} +2 -2
  182. package/dashboard/dist/assets/{knowledge-D8osen1O.js.map → knowledge-DJlebU82.js.map} +1 -1
  183. package/dashboard/dist/assets/{mcp-CUFhWTyT.js → mcp-CsLJ5SRm.js} +2 -2
  184. package/dashboard/dist/assets/{mcp-CUFhWTyT.js.map → mcp-CsLJ5SRm.js.map} +1 -1
  185. package/dashboard/dist/assets/{mcp-query-n1t4sNm7.js → mcp-query-WNK1ItRV.js} +2 -2
  186. package/dashboard/dist/assets/{mcp-query-n1t4sNm7.js.map → mcp-query-WNK1ItRV.js.map} +1 -1
  187. package/dashboard/dist/assets/{mcp-runs-BkRnXbcq.js → mcp-runs-DtTTsuPH.js} +2 -2
  188. package/dashboard/dist/assets/{mcp-runs-BkRnXbcq.js.map → mcp-runs-DtTTsuPH.js.map} +1 -1
  189. package/dashboard/dist/assets/{namespaces-CacF05ft.js → namespaces-iRejH3_A.js} +2 -2
  190. package/dashboard/dist/assets/{namespaces-CacF05ft.js.map → namespaces-iRejH3_A.js.map} +1 -1
  191. package/dashboard/dist/assets/{roles-CjLCgM_6.js → roles-3Jm5KtKc.js} +2 -2
  192. package/dashboard/dist/assets/{roles-CjLCgM_6.js.map → roles-3Jm5KtKc.js.map} +1 -1
  193. package/dashboard/dist/assets/settings-DmN2I-c6.js +2 -0
  194. package/dashboard/dist/assets/settings-DmN2I-c6.js.map +1 -0
  195. package/dashboard/dist/assets/{tasks-BLCzIHol.js → tasks-Cc-QoITQ.js} +2 -2
  196. package/dashboard/dist/assets/{tasks-BLCzIHol.js.map → tasks-Cc-QoITQ.js.map} +1 -1
  197. package/dashboard/dist/assets/topics-p8anbgi0.js +2 -0
  198. package/dashboard/dist/assets/topics-p8anbgi0.js.map +1 -0
  199. package/dashboard/dist/assets/{useEventHooks-AwwZnweF.js → useEventHooks-VaJ52jMm.js} +2 -2
  200. package/dashboard/dist/assets/{useEventHooks-AwwZnweF.js.map → useEventHooks-VaJ52jMm.js.map} +1 -1
  201. package/dashboard/dist/assets/{useYamlActivityEvents-9Zs0PXY6.js → useYamlActivityEvents-BU4Uhksl.js} +2 -2
  202. package/dashboard/dist/assets/{useYamlActivityEvents-9Zs0PXY6.js.map → useYamlActivityEvents-BU4Uhksl.js.map} +1 -1
  203. package/dashboard/dist/assets/{users-BtLRzvZE.js → users-oXOlnold.js} +2 -2
  204. package/dashboard/dist/assets/{users-BtLRzvZE.js.map → users-oXOlnold.js.map} +1 -1
  205. package/dashboard/dist/assets/{vendor-icons-1qQ3NKfa.js → vendor-icons-CBOM6Es0.js} +99 -94
  206. package/dashboard/dist/assets/vendor-icons-CBOM6Es0.js.map +1 -0
  207. package/dashboard/dist/assets/{workflows-B9xdIsfM.js → workflows-Yq7cK-vR.js} +2 -2
  208. package/dashboard/dist/assets/{workflows-B9xdIsfM.js.map → workflows-Yq7cK-vR.js.map} +1 -1
  209. package/dashboard/dist/assets/{yaml-workflows-xOJxyEsQ.js → yaml-workflows-Ch53yD43.js} +2 -2
  210. package/dashboard/dist/assets/{yaml-workflows-xOJxyEsQ.js.map → yaml-workflows-Ch53yD43.js.map} +1 -1
  211. package/dashboard/dist/index.html +3 -3
  212. package/docs/agents.md +6 -0
  213. package/docs/api/http/topics.md +164 -0
  214. package/docs/api/sdk/topics.md +204 -0
  215. package/docs/dashboard.md +22 -0
  216. package/docs/events.md +7 -0
  217. package/docs/sdk.md +15 -0
  218. package/docs/topics.md +154 -0
  219. package/package.json +2 -2
  220. package/dashboard/dist/assets/AdminDashboard-45Ya2uzl.js +0 -2
  221. package/dashboard/dist/assets/AgentConfigPage-BOASC5vi.js +0 -13
  222. package/dashboard/dist/assets/AgentConfigPage-BOASC5vi.js.map +0 -1
  223. package/dashboard/dist/assets/AgentDetailPage-5M7JTcFz.js +0 -4
  224. package/dashboard/dist/assets/AgentDetailPage-5M7JTcFz.js.map +0 -1
  225. package/dashboard/dist/assets/AvailableEscalationsPage-CXUkRz18.js +0 -2
  226. package/dashboard/dist/assets/AvailableEscalationsPage-CXUkRz18.js.map +0 -1
  227. package/dashboard/dist/assets/CustomDurationPicker-B_Oxq_nK.js +0 -2
  228. package/dashboard/dist/assets/McpRunDetailPage-B95c3bFw.js +0 -2
  229. package/dashboard/dist/assets/ProcessDetailPage-DgeXrHon.js +0 -2
  230. package/dashboard/dist/assets/YamlWorkflowsPage-BteCRoV5.js +0 -2
  231. package/dashboard/dist/assets/YamlWorkflowsPage-BteCRoV5.js.map +0 -1
  232. package/dashboard/dist/assets/escalation-D-zr9D9G.js +0 -2
  233. package/dashboard/dist/assets/escalation-D-zr9D9G.js.map +0 -1
  234. package/dashboard/dist/assets/escalation-columns-Bpp7Sdbd.js.map +0 -1
  235. package/dashboard/dist/assets/index-BciXgS35.css +0 -1
  236. package/dashboard/dist/assets/index-Da8R5Fn_.js +0 -281
  237. package/dashboard/dist/assets/index-Da8R5Fn_.js.map +0 -1
  238. package/dashboard/dist/assets/index-DzL5pT70.js +0 -5
  239. package/dashboard/dist/assets/index-DzL5pT70.js.map +0 -1
  240. package/dashboard/dist/assets/index-OTsFiHXP.js.map +0 -1
  241. package/dashboard/dist/assets/vendor-icons-1qQ3NKfa.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{j as e}from"./index-Da8R5Fn_.js";function o({title:m="No data",description:t,icon:s}){return e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-20",children:[s&&e.jsxDEV("div",{className:"w-12 h-12 rounded-full bg-accent/[0.06] flex items-center justify-center mb-4",children:e.jsxDEV(s,{className:"w-5 h-5 text-accent/50"},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:16,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:15,columnNumber:9},this),e.jsxDEV("p",{className:"text-sm text-text-secondary",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:19,columnNumber:7},this),t&&e.jsxDEV("p",{className:"text-xs text-text-tertiary mt-1",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:21,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:13,columnNumber:5},this)}export{o as E};
2
- //# sourceMappingURL=EmptyState-Bk3_P-b8.js.map
1
+ import{j as e}from"./index-CCOSf1PY.js";function o({title:m="No data",description:t,icon:s}){return e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-20",children:[s&&e.jsxDEV("div",{className:"w-12 h-12 rounded-full bg-accent/[0.06] flex items-center justify-center mb-4",children:e.jsxDEV(s,{className:"w-5 h-5 text-accent/50"},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:16,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:15,columnNumber:9},this),e.jsxDEV("p",{className:"text-sm text-text-secondary",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:19,columnNumber:7},this),t&&e.jsxDEV("p",{className:"text-xs text-text-tertiary mt-1",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:21,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/EmptyState.tsx",lineNumber:13,columnNumber:5},this)}export{o as E};
2
+ //# sourceMappingURL=EmptyState-BXGvOADa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyState-Bk3_P-b8.js","sources":["../../src/components/common/display/EmptyState.tsx"],"sourcesContent":["import type { LucideIcon } from 'lucide-react';\n\nexport function EmptyState({\n title = 'No data',\n description,\n icon: Icon,\n}: {\n title?: string;\n description?: string;\n icon?: LucideIcon;\n}) {\n return (\n <div className=\"flex flex-col items-center justify-center py-20\">\n {Icon && (\n <div className=\"w-12 h-12 rounded-full bg-accent/[0.06] flex items-center justify-center mb-4\">\n <Icon className=\"w-5 h-5 text-accent/50\" />\n </div>\n )}\n <p className=\"text-sm text-text-secondary\">{title}</p>\n {description && (\n <p className=\"text-xs text-text-tertiary mt-1\">{description}</p>\n )}\n </div>\n );\n}\n"],"names":["EmptyState","title","description","Icon","jsxDEV"],"mappings":"wCAEO,SAASA,EAAW,CACzB,MAAAC,EAAQ,UACR,YAAAC,EACA,KAAMC,CACR,EAIG,CACD,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,kDACZ,SAAA,CAAAD,YACE,MAAA,CAAI,UAAU,gFACb,SAAAC,SAACD,EAAA,CAAK,UAAU,wBAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAyC,CAAA,EAD3C,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAEFC,SAAC,IAAA,CAAE,UAAU,8BAA+B,SAAAH,CAAA,EAA5C,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAkD,EACjDC,GACCE,EAAAA,OAAC,IAAA,CAAE,UAAU,kCAAmC,SAAAF,CAAA,EAAhD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA4D,CAAA,CAAA,EARhE,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAUA,CAEJ"}
1
+ {"version":3,"file":"EmptyState-BXGvOADa.js","sources":["../../src/components/common/display/EmptyState.tsx"],"sourcesContent":["import type { LucideIcon } from 'lucide-react';\n\nexport function EmptyState({\n title = 'No data',\n description,\n icon: Icon,\n}: {\n title?: string;\n description?: string;\n icon?: LucideIcon;\n}) {\n return (\n <div className=\"flex flex-col items-center justify-center py-20\">\n {Icon && (\n <div className=\"w-12 h-12 rounded-full bg-accent/[0.06] flex items-center justify-center mb-4\">\n <Icon className=\"w-5 h-5 text-accent/50\" />\n </div>\n )}\n <p className=\"text-sm text-text-secondary\">{title}</p>\n {description && (\n <p className=\"text-xs text-text-tertiary mt-1\">{description}</p>\n )}\n </div>\n );\n}\n"],"names":["EmptyState","title","description","Icon","jsxDEV"],"mappings":"wCAEO,SAASA,EAAW,CACzB,MAAAC,EAAQ,UACR,YAAAC,EACA,KAAMC,CACR,EAIG,CACD,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,kDACZ,SAAA,CAAAD,YACE,MAAA,CAAI,UAAU,gFACb,SAAAC,SAACD,EAAA,CAAK,UAAU,wBAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAyC,CAAA,EAD3C,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,EAEFC,SAAC,IAAA,CAAE,UAAU,8BAA+B,SAAAH,CAAA,EAA5C,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAkD,EACjDC,GACCE,EAAAA,OAAC,IAAA,CAAE,UAAU,kCAAmC,SAAAF,CAAA,EAAhD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA4D,CAAA,CAAA,EARhE,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAUA,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{i as u,j as e}from"./index-Da8R5Fn_.js";import{a as b}from"./vendor-query-DLp59M9_.js";import{e as v}from"./useEventHooks-AwwZnweF.js";import{P as N}from"./PageHeader-BuUnJ5NY.js";import{S as c}from"./StatCard-B7ySTryP.js";import{c as h}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-1qQ3NKfa.js";const x=[{label:"1h",value:"1h"},{label:"24h",value:"24h"},{label:"7d",value:"7d"},{label:"30d",value:"30d"}];function i({value:o,colorClass:l,onClick:n}){return o===0?e.jsxDEV("span",{className:"text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:31,columnNumber:12},this):e.jsxDEV("button",{onClick:n,className:`${l} hover:underline tabular-nums font-medium`,children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:34,columnNumber:5},this)}function w(){var m,d;v();const o=h(),[l,n]=b.useState("24h"),{data:s}=u(l),r=a=>{const p=new URLSearchParams(a).toString();o(`/escalations/available${p?`?${p}`:""}`)},t="pb-2 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary";return e.jsxDEV("div",{children:[e.jsxDEV(N,{title:"Escalations",docsHash:"#docs:dashboard.md:escalations-overview"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:61,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-1 mb-6",children:x.map(a=>e.jsxDEV("button",{onClick:()=>n(a.value),className:`px-3 py-1 text-xs rounded-full transition-colors ${l===a.value?"bg-accent text-text-inverse":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:a.label},a.value,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:66,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:64,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-4 gap-4 mb-8",children:[e.jsxDEV(c,{label:"Open",value:(s==null?void 0:s.pending)??"—",colorClass:"text-status-pending",onClick:()=>r()},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:82,columnNumber:9},this),e.jsxDEV(c,{label:"Claimed",value:(s==null?void 0:s.claimed)??"—",colorClass:"text-status-active",onClick:()=>r()},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:83,columnNumber:9},this),e.jsxDEV(c,{label:"Created",value:(s==null?void 0:s.created)??"—",onClick:()=>r()},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:84,columnNumber:9},this),e.jsxDEV(c,{label:"Resolved",value:(s==null?void 0:s.resolved)??"—",colorClass:"text-status-success",onClick:()=>r()},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:85,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:81,columnNumber:7},this),(((m=s==null?void 0:s.by_role)==null?void 0:m.length)??0)>0&&e.jsxDEV("div",{className:"mb-8",children:e.jsxDEV("table",{className:"w-full text-left",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b border-surface-border",children:[e.jsxDEV("th",{className:t,children:"Role"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:94,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:95,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Claimed"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:96,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:93,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:92,columnNumber:13},this),e.jsxDEV("tbody",{children:s.by_role.map(a=>e.jsxDEV("tr",{className:"border-b border-surface-border last:border-b-0",children:[e.jsxDEV("td",{className:"py-3 text-sm font-mono text-text-primary",children:e.jsxDEV("button",{onClick:()=>r({role:a.role}),className:"hover:text-accent hover:underline",children:a.role},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:103,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:102,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.pending,colorClass:"text-status-pending",onClick:()=>r({role:a.role})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:111,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:110,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.claimed,colorClass:"text-status-active",onClick:()=>r({role:a.role})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:118,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:117,columnNumber:19},this)]},a.role,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:101,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:99,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:91,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:90,columnNumber:9},this),(((d=s==null?void 0:s.by_type)==null?void 0:d.length)??0)>0&&e.jsxDEV("div",{children:e.jsxDEV("table",{className:"w-full text-left",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b border-surface-border",children:[e.jsxDEV("th",{className:t,children:"Type"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:137,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:138,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Claimed"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:139,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Resolved"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:140,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:136,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:135,columnNumber:13},this),e.jsxDEV("tbody",{children:s.by_type.map(a=>e.jsxDEV("tr",{className:"border-b border-surface-border last:border-b-0",children:[e.jsxDEV("td",{className:"py-3 text-sm font-mono text-text-primary",children:e.jsxDEV("button",{onClick:()=>r({type:a.type}),className:"hover:text-accent hover:underline",children:a.type},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:147,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:146,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.pending,colorClass:"text-status-pending",onClick:()=>r({type:a.type})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:155,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:154,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.claimed,colorClass:"text-status-active",onClick:()=>r({type:a.type})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:162,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:161,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.resolved,colorClass:"text-status-success",onClick:()=>r({type:a.type})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:169,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:168,columnNumber:19},this)]},a.type,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:145,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:143,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:134,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:133,columnNumber:9},this),s&&s.by_role.length===0&&s.by_type.length===0&&e.jsxDEV("div",{className:"py-16 text-center",children:e.jsxDEV("p",{className:"text-sm text-text-tertiary",children:["No escalation activity in the last ",l]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:185,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:184,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:60,columnNumber:5},this)}export{w as EscalationsOverview};
2
- //# sourceMappingURL=EscalationsOverview-Bt6gGFW4.js.map
1
+ import{h as u,j as e}from"./index-CCOSf1PY.js";import{a as b}from"./vendor-query-DLp59M9_.js";import{e as v}from"./useEventHooks-VaJ52jMm.js";import{P as N}from"./PageHeader-COcgWWf-.js";import{S as c}from"./StatCard-OKzRSSx4.js";import{c as h}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-CBOM6Es0.js";const x=[{label:"1h",value:"1h"},{label:"24h",value:"24h"},{label:"7d",value:"7d"},{label:"30d",value:"30d"}];function i({value:o,colorClass:l,onClick:n}){return o===0?e.jsxDEV("span",{className:"text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:31,columnNumber:12},this):e.jsxDEV("button",{onClick:n,className:`${l} hover:underline tabular-nums font-medium`,children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:34,columnNumber:5},this)}function w(){var m,d;v();const o=h(),[l,n]=b.useState("24h"),{data:s}=u(l),r=a=>{const p=new URLSearchParams(a).toString();o(`/escalations/available${p?`?${p}`:""}`)},t="pb-2 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary";return e.jsxDEV("div",{children:[e.jsxDEV(N,{title:"Escalations",docsHash:"#docs:dashboard.md:escalations-overview"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:61,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-1 mb-6",children:x.map(a=>e.jsxDEV("button",{onClick:()=>n(a.value),className:`px-3 py-1 text-xs rounded-full transition-colors ${l===a.value?"bg-accent text-text-inverse":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:a.label},a.value,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:66,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:64,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-4 gap-4 mb-8",children:[e.jsxDEV(c,{label:"Open",value:(s==null?void 0:s.pending)??"—",colorClass:"text-status-pending",onClick:()=>r()},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:82,columnNumber:9},this),e.jsxDEV(c,{label:"Claimed",value:(s==null?void 0:s.claimed)??"—",colorClass:"text-status-active",onClick:()=>r()},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:83,columnNumber:9},this),e.jsxDEV(c,{label:"Created",value:(s==null?void 0:s.created)??"—",onClick:()=>r()},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:84,columnNumber:9},this),e.jsxDEV(c,{label:"Resolved",value:(s==null?void 0:s.resolved)??"—",colorClass:"text-status-success",onClick:()=>r()},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:85,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:81,columnNumber:7},this),(((m=s==null?void 0:s.by_role)==null?void 0:m.length)??0)>0&&e.jsxDEV("div",{className:"mb-8",children:e.jsxDEV("table",{className:"w-full text-left",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b border-surface-border",children:[e.jsxDEV("th",{className:t,children:"Role"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:94,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:95,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Claimed"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:96,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:93,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:92,columnNumber:13},this),e.jsxDEV("tbody",{children:s.by_role.map(a=>e.jsxDEV("tr",{className:"border-b border-surface-border last:border-b-0",children:[e.jsxDEV("td",{className:"py-3 text-sm font-mono text-text-primary",children:e.jsxDEV("button",{onClick:()=>r({role:a.role}),className:"hover:text-accent hover:underline",children:a.role},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:103,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:102,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.pending,colorClass:"text-status-pending",onClick:()=>r({role:a.role})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:111,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:110,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.claimed,colorClass:"text-status-active",onClick:()=>r({role:a.role})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:118,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:117,columnNumber:19},this)]},a.role,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:101,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:99,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:91,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:90,columnNumber:9},this),(((d=s==null?void 0:s.by_type)==null?void 0:d.length)??0)>0&&e.jsxDEV("div",{children:e.jsxDEV("table",{className:"w-full text-left",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b border-surface-border",children:[e.jsxDEV("th",{className:t,children:"Type"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:137,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:138,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Claimed"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:139,columnNumber:17},this),e.jsxDEV("th",{className:`${t} text-right w-24`,children:"Resolved"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:140,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:136,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:135,columnNumber:13},this),e.jsxDEV("tbody",{children:s.by_type.map(a=>e.jsxDEV("tr",{className:"border-b border-surface-border last:border-b-0",children:[e.jsxDEV("td",{className:"py-3 text-sm font-mono text-text-primary",children:e.jsxDEV("button",{onClick:()=>r({type:a.type}),className:"hover:text-accent hover:underline",children:a.type},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:147,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:146,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.pending,colorClass:"text-status-pending",onClick:()=>r({type:a.type})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:155,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:154,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.claimed,colorClass:"text-status-active",onClick:()=>r({type:a.type})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:162,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:161,columnNumber:19},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(i,{value:a.resolved,colorClass:"text-status-success",onClick:()=>r({type:a.type})},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:169,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:168,columnNumber:19},this)]},a.type,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:145,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:143,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:134,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:133,columnNumber:9},this),s&&s.by_role.length===0&&s.by_type.length===0&&e.jsxDEV("div",{className:"py-16 text-center",children:e.jsxDEV("p",{className:"text-sm text-text-tertiary",children:["No escalation activity in the last ",l]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:185,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:184,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/EscalationsOverview.tsx",lineNumber:60,columnNumber:5},this)}export{w as EscalationsOverview};
2
+ //# sourceMappingURL=EscalationsOverview-DM6zmE4g.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EscalationsOverview-Bt6gGFW4.js","sources":["../../src/pages/operator/EscalationsOverview.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useEscalationStats } from '../../api/escalations';\nimport { useEscalationStatsEvents } from '../../hooks/useEventHooks';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { StatCard } from '../../components/common/data/StatCard';\n\n// ── Duration filter ──────────────────────────────────────────────────────────\n\nconst DURATIONS = [\n { label: '1h', value: '1h' },\n { label: '24h', value: '24h' },\n { label: '7d', value: '7d' },\n { label: '30d', value: '30d' },\n] as const;\n\ntype DurationValue = (typeof DURATIONS)[number]['value'];\n\n// ── Clickable stat cell ──────────────────────────────────────────────────────\n\nfunction StatCell({\n value,\n colorClass,\n onClick,\n}: {\n value: number;\n colorClass: string;\n onClick: () => void;\n}) {\n if (value === 0) {\n return <span className=\"text-text-tertiary\">0</span>;\n }\n return (\n <button\n onClick={onClick}\n className={`${colorClass} hover:underline tabular-nums font-medium`}\n >\n {value}\n </button>\n );\n}\n\n// ── Page ─────────────────────────────────────────────────────────────────────\n\nexport function EscalationsOverview() {\n useEscalationStatsEvents();\n const navigate = useNavigate();\n const [duration, setDuration] = useState<DurationValue>('24h');\n\n const { data: stats } = useEscalationStats(duration);\n\n const goToList = (params?: Record<string, string>) => {\n const qs = new URLSearchParams(params).toString();\n navigate(`/escalations/available${qs ? `?${qs}` : ''}`);\n };\n\n const thCls = 'pb-2 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary';\n\n return (\n <div>\n <PageHeader title=\"Escalations\" docsHash=\"#docs:dashboard.md:escalations-overview\" />\n\n {/* Duration tabs */}\n <div className=\"flex items-center gap-1 mb-6\">\n {DURATIONS.map((d) => (\n <button\n key={d.value}\n onClick={() => setDuration(d.value)}\n className={`px-3 py-1 text-xs rounded-full transition-colors ${\n duration === d.value\n ? 'bg-accent text-text-inverse'\n : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n {d.label}\n </button>\n ))}\n </div>\n\n {/* Summary cards */}\n <div className=\"grid grid-cols-4 gap-4 mb-8\">\n <StatCard label=\"Open\" value={stats?.pending ?? '—'} colorClass=\"text-status-pending\" onClick={() => goToList()} />\n <StatCard label=\"Claimed\" value={stats?.claimed ?? '—'} colorClass=\"text-status-active\" onClick={() => goToList()} />\n <StatCard label=\"Created\" value={stats?.created ?? '—'} onClick={() => goToList()} />\n <StatCard label=\"Resolved\" value={stats?.resolved ?? '—'} colorClass=\"text-status-success\" onClick={() => goToList()} />\n </div>\n\n {/* By-role table */}\n {(stats?.by_role?.length ?? 0) > 0 && (\n <div className=\"mb-8\">\n <table className=\"w-full text-left\">\n <thead>\n <tr className=\"border-b border-surface-border\">\n <th className={thCls}>Role</th>\n <th className={`${thCls} text-right w-24`}>Pending</th>\n <th className={`${thCls} text-right w-24`}>Claimed</th>\n </tr>\n </thead>\n <tbody>\n {stats!.by_role.map((row) => (\n <tr key={row.role} className=\"border-b border-surface-border last:border-b-0\">\n <td className=\"py-3 text-sm font-mono text-text-primary\">\n <button\n onClick={() => goToList({ role: row.role })}\n className=\"hover:text-accent hover:underline\"\n >\n {row.role}\n </button>\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.pending}\n colorClass=\"text-status-pending\"\n onClick={() => goToList({ role: row.role })}\n />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.claimed}\n colorClass=\"text-status-active\"\n onClick={() => goToList({ role: row.role })}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n\n {/* By-type table */}\n {(stats?.by_type?.length ?? 0) > 0 && (\n <div>\n <table className=\"w-full text-left\">\n <thead>\n <tr className=\"border-b border-surface-border\">\n <th className={thCls}>Type</th>\n <th className={`${thCls} text-right w-24`}>Pending</th>\n <th className={`${thCls} text-right w-24`}>Claimed</th>\n <th className={`${thCls} text-right w-24`}>Resolved</th>\n </tr>\n </thead>\n <tbody>\n {stats!.by_type.map((row) => (\n <tr key={row.type} className=\"border-b border-surface-border last:border-b-0\">\n <td className=\"py-3 text-sm font-mono text-text-primary\">\n <button\n onClick={() => goToList({ type: row.type })}\n className=\"hover:text-accent hover:underline\"\n >\n {row.type}\n </button>\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.pending}\n colorClass=\"text-status-pending\"\n onClick={() => goToList({ type: row.type })}\n />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.claimed}\n colorClass=\"text-status-active\"\n onClick={() => goToList({ type: row.type })}\n />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.resolved}\n colorClass=\"text-status-success\"\n onClick={() => goToList({ type: row.type })}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n\n {/* Empty state */}\n {stats && stats.by_role.length === 0 && stats.by_type.length === 0 && (\n <div className=\"py-16 text-center\">\n <p className=\"text-sm text-text-tertiary\">\n No escalation activity in the last {duration}\n </p>\n </div>\n )}\n </div>\n );\n}\n"],"names":["DURATIONS","StatCell","value","colorClass","onClick","jsxDEV","EscalationsOverview","useEscalationStatsEvents","navigate","useNavigate","duration","setDuration","useState","stats","useEscalationStats","goToList","params","qs","thCls","PageHeader","d","StatCard","_a","row","_b"],"mappings":"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"}
1
+ {"version":3,"file":"EscalationsOverview-DM6zmE4g.js","sources":["../../src/pages/operator/EscalationsOverview.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useEscalationStats } from '../../api/escalations';\nimport { useEscalationStatsEvents } from '../../hooks/useEventHooks';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { StatCard } from '../../components/common/data/StatCard';\n\n// ── Duration filter ──────────────────────────────────────────────────────────\n\nconst DURATIONS = [\n { label: '1h', value: '1h' },\n { label: '24h', value: '24h' },\n { label: '7d', value: '7d' },\n { label: '30d', value: '30d' },\n] as const;\n\ntype DurationValue = (typeof DURATIONS)[number]['value'];\n\n// ── Clickable stat cell ──────────────────────────────────────────────────────\n\nfunction StatCell({\n value,\n colorClass,\n onClick,\n}: {\n value: number;\n colorClass: string;\n onClick: () => void;\n}) {\n if (value === 0) {\n return <span className=\"text-text-tertiary\">0</span>;\n }\n return (\n <button\n onClick={onClick}\n className={`${colorClass} hover:underline tabular-nums font-medium`}\n >\n {value}\n </button>\n );\n}\n\n// ── Page ─────────────────────────────────────────────────────────────────────\n\nexport function EscalationsOverview() {\n useEscalationStatsEvents();\n const navigate = useNavigate();\n const [duration, setDuration] = useState<DurationValue>('24h');\n\n const { data: stats } = useEscalationStats(duration);\n\n const goToList = (params?: Record<string, string>) => {\n const qs = new URLSearchParams(params).toString();\n navigate(`/escalations/available${qs ? `?${qs}` : ''}`);\n };\n\n const thCls = 'pb-2 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary';\n\n return (\n <div>\n <PageHeader title=\"Escalations\" docsHash=\"#docs:dashboard.md:escalations-overview\" />\n\n {/* Duration tabs */}\n <div className=\"flex items-center gap-1 mb-6\">\n {DURATIONS.map((d) => (\n <button\n key={d.value}\n onClick={() => setDuration(d.value)}\n className={`px-3 py-1 text-xs rounded-full transition-colors ${\n duration === d.value\n ? 'bg-accent text-text-inverse'\n : 'text-text-tertiary hover:text-text-primary hover:bg-surface-hover'\n }`}\n >\n {d.label}\n </button>\n ))}\n </div>\n\n {/* Summary cards */}\n <div className=\"grid grid-cols-4 gap-4 mb-8\">\n <StatCard label=\"Open\" value={stats?.pending ?? '—'} colorClass=\"text-status-pending\" onClick={() => goToList()} />\n <StatCard label=\"Claimed\" value={stats?.claimed ?? '—'} colorClass=\"text-status-active\" onClick={() => goToList()} />\n <StatCard label=\"Created\" value={stats?.created ?? '—'} onClick={() => goToList()} />\n <StatCard label=\"Resolved\" value={stats?.resolved ?? '—'} colorClass=\"text-status-success\" onClick={() => goToList()} />\n </div>\n\n {/* By-role table */}\n {(stats?.by_role?.length ?? 0) > 0 && (\n <div className=\"mb-8\">\n <table className=\"w-full text-left\">\n <thead>\n <tr className=\"border-b border-surface-border\">\n <th className={thCls}>Role</th>\n <th className={`${thCls} text-right w-24`}>Pending</th>\n <th className={`${thCls} text-right w-24`}>Claimed</th>\n </tr>\n </thead>\n <tbody>\n {stats!.by_role.map((row) => (\n <tr key={row.role} className=\"border-b border-surface-border last:border-b-0\">\n <td className=\"py-3 text-sm font-mono text-text-primary\">\n <button\n onClick={() => goToList({ role: row.role })}\n className=\"hover:text-accent hover:underline\"\n >\n {row.role}\n </button>\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.pending}\n colorClass=\"text-status-pending\"\n onClick={() => goToList({ role: row.role })}\n />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.claimed}\n colorClass=\"text-status-active\"\n onClick={() => goToList({ role: row.role })}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n\n {/* By-type table */}\n {(stats?.by_type?.length ?? 0) > 0 && (\n <div>\n <table className=\"w-full text-left\">\n <thead>\n <tr className=\"border-b border-surface-border\">\n <th className={thCls}>Type</th>\n <th className={`${thCls} text-right w-24`}>Pending</th>\n <th className={`${thCls} text-right w-24`}>Claimed</th>\n <th className={`${thCls} text-right w-24`}>Resolved</th>\n </tr>\n </thead>\n <tbody>\n {stats!.by_type.map((row) => (\n <tr key={row.type} className=\"border-b border-surface-border last:border-b-0\">\n <td className=\"py-3 text-sm font-mono text-text-primary\">\n <button\n onClick={() => goToList({ type: row.type })}\n className=\"hover:text-accent hover:underline\"\n >\n {row.type}\n </button>\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.pending}\n colorClass=\"text-status-pending\"\n onClick={() => goToList({ type: row.type })}\n />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.claimed}\n colorClass=\"text-status-active\"\n onClick={() => goToList({ type: row.type })}\n />\n </td>\n <td className=\"py-3 text-sm text-right\">\n <StatCell\n value={row.resolved}\n colorClass=\"text-status-success\"\n onClick={() => goToList({ type: row.type })}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n\n {/* Empty state */}\n {stats && stats.by_role.length === 0 && stats.by_type.length === 0 && (\n <div className=\"py-16 text-center\">\n <p className=\"text-sm text-text-tertiary\">\n No escalation activity in the last {duration}\n </p>\n </div>\n )}\n </div>\n );\n}\n"],"names":["DURATIONS","StatCell","value","colorClass","onClick","jsxDEV","EscalationsOverview","useEscalationStatsEvents","navigate","useNavigate","duration","setDuration","useState","stats","useEscalationStats","goToList","params","qs","thCls","PageHeader","d","StatCard","_a","row","_b"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{a as u}from"./vendor-query-DLp59M9_.js";import{j as t,f as j,C as V}from"./index-Da8R5Fn_.js";import{F as C,b as h}from"./FilterBar-CZGTOMoo.js";import{E as $}from"./SwimlaneTimeline-BA4aFrHf.js";const N="lt-collapsed-sections";function F(r){try{const a=localStorage.getItem(`${N}:${r}`);return a?new Set(JSON.parse(a)):new Set}catch{return new Set}}function O(r,a){localStorage.setItem(`${N}:${r}`,JSON.stringify([...a]))}function B(r){const[a,n]=u.useState(()=>F(r)),f=u.useCallback(i=>a.has(i),[a]),d=u.useCallback(i=>{n(m=>{const c=new Set(m);return c.has(i)?c.delete(i):c.add(i),O(r,c),c})},[r]);return{isCollapsed:f,toggle:d}}const P=new Set(["activity_task_scheduled","timer_started","child_workflow_execution_started","signal_wait_started"]),A=new Set(["activity_task_completed","activity_task_failed","timer_fired","child_workflow_execution_completed","child_workflow_execution_failed","workflow_execution_signaled"]);function L(r){const a=new Set;for(const n of r)A.has(n.event_type)&&n.attributes.timeline_key&&a.add(n.attributes.timeline_key);return a}function G({events:r,childTasks:a}){const[n,f]=u.useState(""),[d,i]=u.useState(""),[m,c]=u.useState("asc"),[b,p]=u.useState(new Set),v=[...new Set(r.map(e=>e.category))].sort(),g=[...new Set(r.map(e=>e.event_type))].sort(),k=L(r),E=e=>{if(e.duration_ms!==null||!P.has(e.event_type))return!1;const s=e.attributes.timeline_key;return!(s&&k.has(s))};let o=r;n&&(o=o.filter(e=>e.category===n)),d&&(o=o.filter(e=>e.event_type===d)),o=[...o].sort((e,s)=>m==="asc"?e.event_id-s.event_id:s.event_id-e.event_id);const _=e=>{switch(e){case"activity":return"bg-blue-500";case"signal":return"bg-emerald-500";case"timer":return"bg-status-warning";case"child_workflow":return"bg-violet-500";default:return"bg-text-tertiary"}},y=e=>{const s=e.event_type;if(e.attributes.activity_type)return`${s} — ${e.attributes.activity_type}`;if(e.attributes.signal_name)return`${s} — ${e.attributes.signal_name}`;if(e.attributes.child_workflow_id){const l=e.attributes.child_workflow_id,S=l.length>24?`${l.slice(0,24)}...`:l;return`${s} — ${S}`}return s},T=e=>{if(!(a!=null&&a.length))return;const s=e.attributes.activity_type;if(s)return a.find(l=>l.workflow_type===s)},w=e=>{p(s=>{const l=new Set(s);return l.has(e)?l.delete(e):l.add(e),l})},x=o.length>0&&o.every(e=>b.has(e.event_id)),D=()=>{p(x?new Set:new Set(o.map(e=>e.event_id)))};return t.jsxDEV("div",{children:[t.jsxDEV("div",{className:"px-6 py-4 border-b border-surface-border flex items-center justify-between flex-wrap gap-3",children:[t.jsxDEV("div",{className:"flex items-center gap-4",children:[t.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:["Events (",o.length,")"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:135,columnNumber:11},this),o.length>0&&t.jsxDEV("button",{onClick:D,className:"text-[10px] text-accent hover:underline",children:x?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:139,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:134,columnNumber:9},this),t.jsxDEV(C,{children:[t.jsxDEV(h,{label:"Category",value:n,onChange:f,options:v.map(e=>({value:e,label:e}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:145,columnNumber:11},this),t.jsxDEV(h,{label:"Type",value:d,onChange:i,options:g.map(e=>({value:e,label:e}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:151,columnNumber:11},this),t.jsxDEV("button",{onClick:()=>c(e=>e==="asc"?"desc":"asc"),className:"btn-ghost text-xs",children:m==="asc"?"Oldest first":"Newest first"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:157,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:144,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:133,columnNumber:7},this),t.jsxDEV("div",{children:o.length===0?t.jsxDEV("div",{className:"px-6 py-8 text-center",children:t.jsxDEV("p",{className:"text-sm text-text-tertiary",children:"No events match the current filters"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:169,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:168,columnNumber:11},this):o.map(e=>{const s=b.has(e.event_id),l=E(e);return t.jsxDEV("div",{className:"border-b border-surface-border last:border-b-0",children:[t.jsxDEV("div",{className:"px-6 py-3 flex items-center gap-4 cursor-pointer hover:bg-surface-hover transition-colors duration-200",onClick:()=>w(e.event_id),children:[t.jsxDEV("span",{className:`text-[10px] text-text-tertiary transition-transform duration-300 ${s?"rotate-90":""}`,children:"▶"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:187,columnNumber:19},this),t.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary w-8 shrink-0",children:e.event_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:193,columnNumber:19},this),t.jsxDEV("span",{className:`w-2 h-2 rounded-full shrink-0 ${_(e.category)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:196,columnNumber:19},this),t.jsxDEV("span",{className:"text-sm text-text-primary flex-1 truncate",children:y(e)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:199,columnNumber:19},this),t.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary shrink-0",children:l?t.jsxDEV("span",{className:"inline-flex items-center gap-1 text-status-warning",children:[t.jsxDEV("span",{className:"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:205,columnNumber:25},this),"Pending"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:204,columnNumber:23},this):e.duration_ms!==null?j(e.duration_ms):"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:202,columnNumber:19},this),t.jsxDEV("time",{className:"text-[10px] font-mono text-text-tertiary shrink-0",children:new Date(e.event_time).toLocaleTimeString()},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:214,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:182,columnNumber:17},this),t.jsxDEV(V,{open:s&&!!e.attributes,children:t.jsxDEV("div",{className:"px-6 pb-4 pl-16",children:t.jsxDEV($,{event:e,childTask:T(e),pending:l,onClose:()=>w(e.event_id)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:222,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:221,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:220,columnNumber:17},this)]},e.event_id,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:177,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:166,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:132,columnNumber:5},this)}export{G as E,B as u};
2
- //# sourceMappingURL=EventTable-BMk93q8A.js.map
1
+ import{a as u}from"./vendor-query-DLp59M9_.js";import{j as t,f as j,C as V}from"./index-CCOSf1PY.js";import{F as C,b as h}from"./FilterBar-Bdssa-Xn.js";import{E as $}from"./SwimlaneTimeline-MEUPc3yJ.js";const N="lt-collapsed-sections";function F(r){try{const a=localStorage.getItem(`${N}:${r}`);return a?new Set(JSON.parse(a)):new Set}catch{return new Set}}function O(r,a){localStorage.setItem(`${N}:${r}`,JSON.stringify([...a]))}function B(r){const[a,n]=u.useState(()=>F(r)),f=u.useCallback(i=>a.has(i),[a]),d=u.useCallback(i=>{n(m=>{const c=new Set(m);return c.has(i)?c.delete(i):c.add(i),O(r,c),c})},[r]);return{isCollapsed:f,toggle:d}}const P=new Set(["activity_task_scheduled","timer_started","child_workflow_execution_started","signal_wait_started"]),A=new Set(["activity_task_completed","activity_task_failed","timer_fired","child_workflow_execution_completed","child_workflow_execution_failed","workflow_execution_signaled"]);function L(r){const a=new Set;for(const n of r)A.has(n.event_type)&&n.attributes.timeline_key&&a.add(n.attributes.timeline_key);return a}function G({events:r,childTasks:a}){const[n,f]=u.useState(""),[d,i]=u.useState(""),[m,c]=u.useState("asc"),[b,p]=u.useState(new Set),v=[...new Set(r.map(e=>e.category))].sort(),g=[...new Set(r.map(e=>e.event_type))].sort(),k=L(r),E=e=>{if(e.duration_ms!==null||!P.has(e.event_type))return!1;const s=e.attributes.timeline_key;return!(s&&k.has(s))};let o=r;n&&(o=o.filter(e=>e.category===n)),d&&(o=o.filter(e=>e.event_type===d)),o=[...o].sort((e,s)=>m==="asc"?e.event_id-s.event_id:s.event_id-e.event_id);const _=e=>{switch(e){case"activity":return"bg-blue-500";case"signal":return"bg-emerald-500";case"timer":return"bg-status-warning";case"child_workflow":return"bg-violet-500";default:return"bg-text-tertiary"}},y=e=>{const s=e.event_type;if(e.attributes.activity_type)return`${s} — ${e.attributes.activity_type}`;if(e.attributes.signal_name)return`${s} — ${e.attributes.signal_name}`;if(e.attributes.child_workflow_id){const l=e.attributes.child_workflow_id,S=l.length>24?`${l.slice(0,24)}...`:l;return`${s} — ${S}`}return s},T=e=>{if(!(a!=null&&a.length))return;const s=e.attributes.activity_type;if(s)return a.find(l=>l.workflow_type===s)},w=e=>{p(s=>{const l=new Set(s);return l.has(e)?l.delete(e):l.add(e),l})},x=o.length>0&&o.every(e=>b.has(e.event_id)),D=()=>{p(x?new Set:new Set(o.map(e=>e.event_id)))};return t.jsxDEV("div",{children:[t.jsxDEV("div",{className:"px-6 py-4 border-b border-surface-border flex items-center justify-between flex-wrap gap-3",children:[t.jsxDEV("div",{className:"flex items-center gap-4",children:[t.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:["Events (",o.length,")"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:135,columnNumber:11},this),o.length>0&&t.jsxDEV("button",{onClick:D,className:"text-[10px] text-accent hover:underline",children:x?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:139,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:134,columnNumber:9},this),t.jsxDEV(C,{children:[t.jsxDEV(h,{label:"Category",value:n,onChange:f,options:v.map(e=>({value:e,label:e}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:145,columnNumber:11},this),t.jsxDEV(h,{label:"Type",value:d,onChange:i,options:g.map(e=>({value:e,label:e}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:151,columnNumber:11},this),t.jsxDEV("button",{onClick:()=>c(e=>e==="asc"?"desc":"asc"),className:"btn-ghost text-xs",children:m==="asc"?"Oldest first":"Newest first"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:157,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:144,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:133,columnNumber:7},this),t.jsxDEV("div",{children:o.length===0?t.jsxDEV("div",{className:"px-6 py-8 text-center",children:t.jsxDEV("p",{className:"text-sm text-text-tertiary",children:"No events match the current filters"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:169,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:168,columnNumber:11},this):o.map(e=>{const s=b.has(e.event_id),l=E(e);return t.jsxDEV("div",{className:"border-b border-surface-border last:border-b-0",children:[t.jsxDEV("div",{className:"px-6 py-3 flex items-center gap-4 cursor-pointer hover:bg-surface-hover transition-colors duration-200",onClick:()=>w(e.event_id),children:[t.jsxDEV("span",{className:`text-[10px] text-text-tertiary transition-transform duration-300 ${s?"rotate-90":""}`,children:"▶"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:187,columnNumber:19},this),t.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary w-8 shrink-0",children:e.event_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:193,columnNumber:19},this),t.jsxDEV("span",{className:`w-2 h-2 rounded-full shrink-0 ${_(e.category)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:196,columnNumber:19},this),t.jsxDEV("span",{className:"text-sm text-text-primary flex-1 truncate",children:y(e)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:199,columnNumber:19},this),t.jsxDEV("span",{className:"text-xs font-mono text-text-tertiary shrink-0",children:l?t.jsxDEV("span",{className:"inline-flex items-center gap-1 text-status-warning",children:[t.jsxDEV("span",{className:"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:205,columnNumber:25},this),"Pending"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:204,columnNumber:23},this):e.duration_ms!==null?j(e.duration_ms):"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:202,columnNumber:19},this),t.jsxDEV("time",{className:"text-[10px] font-mono text-text-tertiary shrink-0",children:new Date(e.event_time).toLocaleTimeString()},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:214,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:182,columnNumber:17},this),t.jsxDEV(V,{open:s&&!!e.attributes,children:t.jsxDEV("div",{className:"px-6 pb-4 pl-16",children:t.jsxDEV($,{event:e,childTask:T(e),pending:l,onClose:()=>w(e.event_id)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:222,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:221,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:220,columnNumber:17},this)]},e.event_id,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:177,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:166,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventTable.tsx",lineNumber:132,columnNumber:5},this)}export{G as E,B as u};
2
+ //# sourceMappingURL=EventTable-CvJ98E8s.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventTable-BMk93q8A.js","sources":["../../src/hooks/useCollapsedSections.ts","../../src/pages/workflows/workflow-execution/EventTable.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\n\nconst STORAGE_KEY = 'lt-collapsed-sections';\n\nfunction load(pageKey: string): Set<string> {\n try {\n const raw = localStorage.getItem(`${STORAGE_KEY}:${pageKey}`);\n if (!raw) return new Set();\n return new Set(JSON.parse(raw));\n } catch {\n return new Set();\n }\n}\n\nfunction save(pageKey: string, set: Set<string>) {\n localStorage.setItem(`${STORAGE_KEY}:${pageKey}`, JSON.stringify([...set]));\n}\n\nexport function useCollapsedSections(pageKey: string) {\n const [collapsed, setCollapsed] = useState<Set<string>>(() => load(pageKey));\n\n const isCollapsed = useCallback(\n (section: string) => collapsed.has(section),\n [collapsed],\n );\n\n const toggle = useCallback(\n (section: string) => {\n setCollapsed((prev) => {\n const next = new Set(prev);\n if (next.has(section)) {\n next.delete(section);\n } else {\n next.add(section);\n }\n save(pageKey, next);\n return next;\n });\n },\n [pageKey],\n );\n\n return { isCollapsed, toggle };\n}\n","import { useState } from 'react';\nimport { FilterBar, FilterSelect } from '../../../components/common/data/FilterBar';\nimport { Collapsible } from '../../../components/common/layout/Collapsible';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { EventDetailPanel } from './EventDetailPanel';\nimport { formatDuration } from './utils';\n\ninterface EventTableProps {\n events: WorkflowExecutionEvent[];\n childTasks?: LTTaskRecord[];\n}\n\n/** Event types that represent the \"start\" phase of a paired operation */\nconst STARTED_TYPES = new Set([\n 'activity_task_scheduled',\n 'timer_started',\n 'child_workflow_execution_started',\n 'signal_wait_started',\n]);\n\n/** Completion event types that close a paired operation */\nconst COMPLETED_TYPES = new Set([\n 'activity_task_completed',\n 'activity_task_failed',\n 'timer_fired',\n 'child_workflow_execution_completed',\n 'child_workflow_execution_failed',\n 'workflow_execution_signaled',\n]);\n\n/**\n * Build a set of timeline_keys that have a matching completion event.\n * A \"scheduled\" event is only truly pending if no completion exists.\n */\nfunction buildCompletedKeys(events: WorkflowExecutionEvent[]): Set<string> {\n const keys = new Set<string>();\n for (const e of events) {\n if (COMPLETED_TYPES.has(e.event_type) && e.attributes.timeline_key) {\n keys.add(e.attributes.timeline_key);\n }\n }\n return keys;\n}\n\nexport function EventTable({ events, childTasks }: EventTableProps) {\n const [categoryFilter, setCategoryFilter] = useState('');\n const [typeFilter, setTypeFilter] = useState('');\n const [sortOrder, setSortOrder] = useState<'asc' | 'desc'>('asc');\n const [expandedEvents, setExpandedEvents] = useState<Set<number>>(new Set());\n\n const categories = [...new Set(events.map((e) => e.category))].sort();\n const eventTypes = [...new Set(events.map((e) => e.event_type))].sort();\n const completedKeys = buildCompletedKeys(events);\n\n /** True only when a \"started/scheduled\" event has no matching completion */\n const isPending = (evt: WorkflowExecutionEvent): boolean => {\n if (evt.duration_ms !== null) return false;\n if (!STARTED_TYPES.has(evt.event_type)) return false;\n const tlk = evt.attributes.timeline_key;\n if (tlk && completedKeys.has(tlk)) return false;\n return true;\n };\n\n let filtered = events;\n if (categoryFilter) filtered = filtered.filter((e) => e.category === categoryFilter);\n if (typeFilter) filtered = filtered.filter((e) => e.event_type === typeFilter);\n\n filtered = [...filtered].sort((a, b) =>\n sortOrder === 'asc' ? a.event_id - b.event_id : b.event_id - a.event_id,\n );\n\n const categoryDot = (category: string) => {\n switch (category) {\n case 'activity':\n return 'bg-blue-500';\n case 'signal':\n return 'bg-emerald-500';\n case 'timer':\n return 'bg-status-warning';\n case 'child_workflow':\n return 'bg-violet-500';\n default:\n return 'bg-text-tertiary';\n }\n };\n\n /** Build a descriptive label for an event row */\n const eventLabel = (evt: WorkflowExecutionEvent): string => {\n const base = evt.event_type;\n if (evt.attributes.activity_type) {\n return `${base} — ${evt.attributes.activity_type}`;\n }\n if (evt.attributes.signal_name) {\n return `${base} — ${evt.attributes.signal_name}`;\n }\n if (evt.attributes.child_workflow_id) {\n const id = evt.attributes.child_workflow_id;\n const truncated = id.length > 24 ? `${id.slice(0, 24)}...` : id;\n return `${base} — ${truncated}`;\n }\n return base;\n };\n\n /** Find a matching child task for an event's activity_type */\n const findChildTask = (evt: WorkflowExecutionEvent): LTTaskRecord | undefined => {\n if (!childTasks?.length) return undefined;\n const activityType = evt.attributes.activity_type;\n if (!activityType) return undefined;\n return childTasks.find((t) => t.workflow_type === activityType);\n };\n\n const toggleEvent = (id: number) => {\n setExpandedEvents((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n };\n\n const allExpanded = filtered.length > 0 && filtered.every((e) => expandedEvents.has(e.event_id));\n\n const toggleAll = () => {\n if (allExpanded) {\n setExpandedEvents(new Set());\n } else {\n setExpandedEvents(new Set(filtered.map((e) => e.event_id)));\n }\n };\n\n return (\n <div>\n <div className=\"px-6 py-4 border-b border-surface-border flex items-center justify-between flex-wrap gap-3\">\n <div className=\"flex items-center gap-4\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Events ({filtered.length})\n </p>\n {filtered.length > 0 && (\n <button onClick={toggleAll} className=\"text-[10px] text-accent hover:underline\">\n {allExpanded ? 'Collapse all' : 'Expand all'}\n </button>\n )}\n </div>\n <FilterBar>\n <FilterSelect\n label=\"Category\"\n value={categoryFilter}\n onChange={setCategoryFilter}\n options={categories.map((c) => ({ value: c, label: c }))}\n />\n <FilterSelect\n label=\"Type\"\n value={typeFilter}\n onChange={setTypeFilter}\n options={eventTypes.map((t) => ({ value: t, label: t }))}\n />\n <button\n onClick={() => setSortOrder((s) => (s === 'asc' ? 'desc' : 'asc'))}\n className=\"btn-ghost text-xs\"\n >\n {sortOrder === 'asc' ? 'Oldest first' : 'Newest first'}\n </button>\n </FilterBar>\n </div>\n\n <div>\n {filtered.length === 0 ? (\n <div className=\"px-6 py-8 text-center\">\n <p className=\"text-sm text-text-tertiary\">No events match the current filters</p>\n </div>\n ) : (\n filtered.map((evt) => {\n const isExpanded = expandedEvents.has(evt.event_id);\n const pending = isPending(evt);\n\n return (\n <div\n key={evt.event_id}\n className=\"border-b border-surface-border last:border-b-0\"\n >\n {/* Row header */}\n <div\n className=\"px-6 py-3 flex items-center gap-4 cursor-pointer hover:bg-surface-hover transition-colors duration-200\"\n onClick={() => toggleEvent(evt.event_id)}\n >\n {/* Expand chevron */}\n <span\n className={`text-[10px] text-text-tertiary transition-transform duration-300 ${isExpanded ? 'rotate-90' : ''}`}\n >\n &#9654;\n </span>\n\n <span className=\"text-xs font-mono text-text-tertiary w-8 shrink-0\">\n {evt.event_id}\n </span>\n <span\n className={`w-2 h-2 rounded-full shrink-0 ${categoryDot(evt.category)}`}\n />\n <span className=\"text-sm text-text-primary flex-1 truncate\">\n {eventLabel(evt)}\n </span>\n <span className=\"text-xs font-mono text-text-tertiary shrink-0\">\n {pending ? (\n <span className=\"inline-flex items-center gap-1 text-status-warning\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse\" />\n Pending\n </span>\n ) : evt.duration_ms !== null ? (\n formatDuration(evt.duration_ms)\n ) : (\n '--'\n )}\n </span>\n <time className=\"text-[10px] font-mono text-text-tertiary shrink-0\">\n {new Date(evt.event_time).toLocaleTimeString()}\n </time>\n </div>\n\n {/* Inline detail panel — directly below the clicked row */}\n <Collapsible open={isExpanded && !!evt.attributes}>\n <div className=\"px-6 pb-4 pl-16\">\n <EventDetailPanel\n event={evt}\n childTask={findChildTask(evt)}\n pending={pending}\n onClose={() => toggleEvent(evt.event_id)}\n />\n </div>\n </Collapsible>\n </div>\n );\n })\n )}\n </div>\n </div>\n );\n}\n"],"names":["STORAGE_KEY","load","pageKey","raw","save","set","useCollapsedSections","collapsed","setCollapsed","useState","isCollapsed","useCallback","section","toggle","prev","next","STARTED_TYPES","COMPLETED_TYPES","buildCompletedKeys","events","keys","e","EventTable","childTasks","categoryFilter","setCategoryFilter","typeFilter","setTypeFilter","sortOrder","setSortOrder","expandedEvents","setExpandedEvents","categories","eventTypes","completedKeys","isPending","evt","tlk","filtered","a","b","categoryDot","category","eventLabel","base","id","truncated","findChildTask","activityType","t","toggleEvent","allExpanded","toggleAll","jsxDEV","FilterBar","FilterSelect","c","s","isExpanded","pending","formatDuration","Collapsible","EventDetailPanel"],"mappings":"2MAEA,MAAMA,EAAc,wBAEpB,SAASC,EAAKC,EAA8B,CAC1C,GAAI,CACF,MAAMC,EAAM,aAAa,QAAQ,GAAGH,CAAW,IAAIE,CAAO,EAAE,EAC5D,OAAKC,EACE,IAAI,IAAI,KAAK,MAAMA,CAAG,CAAC,EADb,IAAI,GAEvB,MAAQ,CACN,WAAW,GACb,CACF,CAEA,SAASC,EAAKF,EAAiBG,EAAkB,CAC/C,aAAa,QAAQ,GAAGL,CAAW,IAAIE,CAAO,GAAI,KAAK,UAAU,CAAC,GAAGG,CAAG,CAAC,CAAC,CAC5E,CAEO,SAASC,EAAqBJ,EAAiB,CACpD,KAAM,CAACK,EAAWC,CAAY,EAAIC,EAAAA,SAAsB,IAAMR,EAAKC,CAAO,CAAC,EAErEQ,EAAcC,EAAAA,YACjBC,GAAoBL,EAAU,IAAIK,CAAO,EAC1C,CAACL,CAAS,CAAA,EAGNM,EAASF,EAAAA,YACZC,GAAoB,CACnBJ,EAAcM,GAAS,CACrB,MAAMC,EAAO,IAAI,IAAID,CAAI,EACzB,OAAIC,EAAK,IAAIH,CAAO,EAClBG,EAAK,OAAOH,CAAO,EAEnBG,EAAK,IAAIH,CAAO,EAElBR,EAAKF,EAASa,CAAI,EACXA,CACT,CAAC,CACH,EACA,CAACb,CAAO,CAAA,EAGV,MAAO,CAAE,YAAAQ,EAAa,OAAAG,CAAA,CACxB,CC9BA,MAAMG,MAAoB,IAAI,CAC5B,0BACA,gBACA,mCACA,qBACF,CAAC,EAGKC,MAAsB,IAAI,CAC9B,0BACA,uBACA,cACA,qCACA,kCACA,6BACF,CAAC,EAMD,SAASC,EAAmBC,EAA+C,CACzE,MAAMC,MAAW,IACjB,UAAWC,KAAKF,EACVF,EAAgB,IAAII,EAAE,UAAU,GAAKA,EAAE,WAAW,cACpDD,EAAK,IAAIC,EAAE,WAAW,YAAY,EAGtC,OAAOD,CACT,CAEO,SAASE,EAAW,CAAE,OAAAH,EAAQ,WAAAI,GAA+B,CAClE,KAAM,CAACC,EAAgBC,CAAiB,EAAIhB,EAAAA,SAAS,EAAE,EACjD,CAACiB,EAAYC,CAAa,EAAIlB,EAAAA,SAAS,EAAE,EACzC,CAACmB,EAAWC,CAAY,EAAIpB,EAAAA,SAAyB,KAAK,EAC1D,CAACqB,EAAgBC,CAAiB,EAAItB,EAAAA,SAAsB,IAAI,GAAK,EAErEuB,EAAa,CAAC,GAAG,IAAI,IAAIb,EAAO,IAAK,GAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAA,EACzDc,EAAa,CAAC,GAAG,IAAI,IAAId,EAAO,IAAK,GAAM,EAAE,UAAU,CAAC,CAAC,EAAE,KAAA,EAC3De,EAAgBhB,EAAmBC,CAAM,EAGzCgB,EAAaC,GAAyC,CAE1D,GADIA,EAAI,cAAgB,MACpB,CAACpB,EAAc,IAAIoB,EAAI,UAAU,EAAG,MAAO,GAC/C,MAAMC,EAAMD,EAAI,WAAW,aAC3B,MAAI,EAAAC,GAAOH,EAAc,IAAIG,CAAG,EAElC,EAEA,IAAIC,EAAWnB,EACXK,MAA2Bc,EAAS,OAAQ,GAAM,EAAE,WAAad,CAAc,GAC/EE,MAAuBY,EAAS,OAAQ,GAAM,EAAE,aAAeZ,CAAU,GAE7EY,EAAW,CAAC,GAAGA,CAAQ,EAAE,KAAK,CAACC,EAAGC,IAChCZ,IAAc,MAAQW,EAAE,SAAWC,EAAE,SAAWA,EAAE,SAAWD,EAAE,QAAA,EAGjE,MAAME,EAAeC,GAAqB,CACxC,OAAQA,EAAA,CACN,IAAK,WACH,MAAO,cACT,IAAK,SACH,MAAO,iBACT,IAAK,QACH,MAAO,oBACT,IAAK,iBACH,MAAO,gBACT,QACE,MAAO,kBAAA,CAEb,EAGMC,EAAcP,GAAwC,CAC1D,MAAMQ,EAAOR,EAAI,WACjB,GAAIA,EAAI,WAAW,cACjB,MAAO,GAAGQ,CAAI,MAAMR,EAAI,WAAW,aAAa,GAElD,GAAIA,EAAI,WAAW,YACjB,MAAO,GAAGQ,CAAI,MAAMR,EAAI,WAAW,WAAW,GAEhD,GAAIA,EAAI,WAAW,kBAAmB,CACpC,MAAMS,EAAKT,EAAI,WAAW,kBACpBU,EAAYD,EAAG,OAAS,GAAK,GAAGA,EAAG,MAAM,EAAG,EAAE,CAAC,MAAQA,EAC7D,MAAO,GAAGD,CAAI,MAAME,CAAS,EAC/B,CACA,OAAOF,CACT,EAGMG,EAAiBX,GAA0D,CAC/E,GAAI,EAACb,GAAA,MAAAA,EAAY,QAAQ,OACzB,MAAMyB,EAAeZ,EAAI,WAAW,cACpC,GAAKY,EACL,OAAOzB,EAAW,KAAM0B,GAAMA,EAAE,gBAAkBD,CAAY,CAChE,EAEME,EAAeL,GAAe,CAClCd,EAAmBjB,GAAS,CAC1B,MAAMC,EAAO,IAAI,IAAID,CAAI,EACzB,OAAIC,EAAK,IAAI8B,CAAE,EAAG9B,EAAK,OAAO8B,CAAE,EAC3B9B,EAAK,IAAI8B,CAAE,EACT9B,CACT,CAAC,CACH,EAEMoC,EAAcb,EAAS,OAAS,GAAKA,EAAS,MAAO,GAAMR,EAAe,IAAI,EAAE,QAAQ,CAAC,EAEzFsB,EAAY,IAAM,CAEpBrB,EADEoB,EACgB,IAAI,IAEJ,IAAI,IAAIb,EAAS,IAAK,GAAM,EAAE,QAAQ,CAAC,CAF9B,CAI/B,EAEA,gBACG,MAAA,CACC,SAAA,CAAAe,EAAAA,OAAC,MAAA,CAAI,UAAU,6FACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,IAAA,CAAE,UAAU,yEAAyE,SAAA,CAAA,WAC3Ef,EAAS,OAAO,GAAA,CAAA,EAD3B,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACCA,EAAS,OAAS,GACjBe,EAAAA,OAAC,SAAA,CAAO,QAASD,EAAW,UAAU,0CACnC,SAAAD,EAAc,eAAiB,YAAA,EADlC,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAPJ,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IASA,WACCG,EAAA,CACC,SAAA,CAAAD,EAAAA,OAACE,EAAA,CACC,MAAM,WACN,MAAO/B,EACP,SAAUC,EACV,QAASO,EAAW,IAAKwB,IAAO,CAAE,MAAOA,EAAG,MAAOA,GAAI,CAAA,EAJzD,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAMAH,EAAAA,OAACE,EAAA,CACC,MAAM,OACN,MAAO7B,EACP,SAAUC,EACV,QAASM,EAAW,IAAKgB,IAAO,CAAE,MAAOA,EAAG,MAAOA,GAAI,CAAA,EAJzD,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAMAI,EAAAA,OAAC,SAAA,CACC,QAAS,IAAMxB,EAAc4B,GAAOA,IAAM,MAAQ,OAAS,KAAM,EACjE,UAAU,oBAET,SAAA7B,IAAc,MAAQ,eAAiB,cAAA,EAJ1C,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAlBF,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAmBA,CAAA,CAAA,EA9BF,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA+BA,EAEAyB,SAAC,MAAA,CACE,SAAAf,EAAS,SAAW,EACnBe,EAAAA,OAAC,MAAA,CAAI,UAAU,wBACb,SAAAA,EAAAA,OAAC,IAAA,CAAE,UAAU,6BAA6B,SAAA,qCAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA6E,CAAA,EAD/E,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EAEAf,EAAS,IAAKF,GAAQ,CACpB,MAAMsB,EAAa5B,EAAe,IAAIM,EAAI,QAAQ,EAC5CuB,EAAUxB,EAAUC,CAAG,EAE7B,OACEiB,EAAAA,OAAC,MAAA,CAEC,UAAU,iDAGV,SAAA,CAAAA,EAAAA,OAAC,MAAA,CACC,UAAU,yGACV,QAAS,IAAMH,EAAYd,EAAI,QAAQ,EAGvC,SAAA,CAAAiB,EAAAA,OAAC,OAAA,CACC,UAAW,oEAAoEK,EAAa,YAAc,EAAE,GAC7G,SAAA,GAAA,EAFD,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAMAL,SAAC,OAAA,CAAK,UAAU,oDACb,WAAI,QAAA,EADP,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAA,EAAAA,OAAC,OAAA,CACC,UAAW,iCAAiCZ,EAAYL,EAAI,QAAQ,CAAC,EAAA,EADvE,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,WAGC,OAAA,CAAK,UAAU,4CACb,SAAAO,EAAWP,CAAG,CAAA,EADjB,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAiB,EAAAA,OAAC,QAAK,UAAU,gDACb,WACCA,EAAAA,OAAC,OAAA,CAAK,UAAU,qDACd,SAAA,CAAAA,EAAAA,OAAC,OAAA,CAAK,UAAU,0DAAA,EAAhB,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2E,EAAE,SAAA,CAAA,EAD/E,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,EACEjB,EAAI,cAAgB,KACtBwB,EAAexB,EAAI,WAAW,EAE9B,MATJ,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAWA,EACAiB,EAAAA,OAAC,OAAA,CAAK,UAAU,oDACb,SAAA,IAAI,KAAKjB,EAAI,UAAU,EAAE,mBAAA,CAAmB,EAD/C,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAlCF,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAsCAiB,EAAAA,OAACQ,EAAA,CAAY,KAAMH,GAAc,CAAC,CAACtB,EAAI,WACrC,SAAAiB,EAAAA,OAAC,MAAA,CAAI,UAAU,kBACb,SAAAA,EAAAA,OAACS,EAAA,CACC,MAAO1B,EACP,UAAWW,EAAcX,CAAG,EAC5B,QAAAuB,EACA,QAAS,IAAMT,EAAYd,EAAI,QAAQ,CAAA,EAJzC,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,EANF,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAOA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IASA,CAAA,CAAA,EAnDKA,EAAI,SADX,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAuDJ,CAAC,CAAA,EAlEL,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAoEA,CAAA,CAAA,EAtGF,OAAA,GAAA,CAAA,SAAA,uEAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAuGA,CAEJ"}
1
+ {"version":3,"file":"EventTable-CvJ98E8s.js","sources":["../../src/hooks/useCollapsedSections.ts","../../src/pages/workflows/workflow-execution/EventTable.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\n\nconst STORAGE_KEY = 'lt-collapsed-sections';\n\nfunction load(pageKey: string): Set<string> {\n try {\n const raw = localStorage.getItem(`${STORAGE_KEY}:${pageKey}`);\n if (!raw) return new Set();\n return new Set(JSON.parse(raw));\n } catch {\n return new Set();\n }\n}\n\nfunction save(pageKey: string, set: Set<string>) {\n localStorage.setItem(`${STORAGE_KEY}:${pageKey}`, JSON.stringify([...set]));\n}\n\nexport function useCollapsedSections(pageKey: string) {\n const [collapsed, setCollapsed] = useState<Set<string>>(() => load(pageKey));\n\n const isCollapsed = useCallback(\n (section: string) => collapsed.has(section),\n [collapsed],\n );\n\n const toggle = useCallback(\n (section: string) => {\n setCollapsed((prev) => {\n const next = new Set(prev);\n if (next.has(section)) {\n next.delete(section);\n } else {\n next.add(section);\n }\n save(pageKey, next);\n return next;\n });\n },\n [pageKey],\n );\n\n return { isCollapsed, toggle };\n}\n","import { useState } from 'react';\nimport { FilterBar, FilterSelect } from '../../../components/common/data/FilterBar';\nimport { Collapsible } from '../../../components/common/layout/Collapsible';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { EventDetailPanel } from './EventDetailPanel';\nimport { formatDuration } from './utils';\n\ninterface EventTableProps {\n events: WorkflowExecutionEvent[];\n childTasks?: LTTaskRecord[];\n}\n\n/** Event types that represent the \"start\" phase of a paired operation */\nconst STARTED_TYPES = new Set([\n 'activity_task_scheduled',\n 'timer_started',\n 'child_workflow_execution_started',\n 'signal_wait_started',\n]);\n\n/** Completion event types that close a paired operation */\nconst COMPLETED_TYPES = new Set([\n 'activity_task_completed',\n 'activity_task_failed',\n 'timer_fired',\n 'child_workflow_execution_completed',\n 'child_workflow_execution_failed',\n 'workflow_execution_signaled',\n]);\n\n/**\n * Build a set of timeline_keys that have a matching completion event.\n * A \"scheduled\" event is only truly pending if no completion exists.\n */\nfunction buildCompletedKeys(events: WorkflowExecutionEvent[]): Set<string> {\n const keys = new Set<string>();\n for (const e of events) {\n if (COMPLETED_TYPES.has(e.event_type) && e.attributes.timeline_key) {\n keys.add(e.attributes.timeline_key);\n }\n }\n return keys;\n}\n\nexport function EventTable({ events, childTasks }: EventTableProps) {\n const [categoryFilter, setCategoryFilter] = useState('');\n const [typeFilter, setTypeFilter] = useState('');\n const [sortOrder, setSortOrder] = useState<'asc' | 'desc'>('asc');\n const [expandedEvents, setExpandedEvents] = useState<Set<number>>(new Set());\n\n const categories = [...new Set(events.map((e) => e.category))].sort();\n const eventTypes = [...new Set(events.map((e) => e.event_type))].sort();\n const completedKeys = buildCompletedKeys(events);\n\n /** True only when a \"started/scheduled\" event has no matching completion */\n const isPending = (evt: WorkflowExecutionEvent): boolean => {\n if (evt.duration_ms !== null) return false;\n if (!STARTED_TYPES.has(evt.event_type)) return false;\n const tlk = evt.attributes.timeline_key;\n if (tlk && completedKeys.has(tlk)) return false;\n return true;\n };\n\n let filtered = events;\n if (categoryFilter) filtered = filtered.filter((e) => e.category === categoryFilter);\n if (typeFilter) filtered = filtered.filter((e) => e.event_type === typeFilter);\n\n filtered = [...filtered].sort((a, b) =>\n sortOrder === 'asc' ? a.event_id - b.event_id : b.event_id - a.event_id,\n );\n\n const categoryDot = (category: string) => {\n switch (category) {\n case 'activity':\n return 'bg-blue-500';\n case 'signal':\n return 'bg-emerald-500';\n case 'timer':\n return 'bg-status-warning';\n case 'child_workflow':\n return 'bg-violet-500';\n default:\n return 'bg-text-tertiary';\n }\n };\n\n /** Build a descriptive label for an event row */\n const eventLabel = (evt: WorkflowExecutionEvent): string => {\n const base = evt.event_type;\n if (evt.attributes.activity_type) {\n return `${base} — ${evt.attributes.activity_type}`;\n }\n if (evt.attributes.signal_name) {\n return `${base} — ${evt.attributes.signal_name}`;\n }\n if (evt.attributes.child_workflow_id) {\n const id = evt.attributes.child_workflow_id;\n const truncated = id.length > 24 ? `${id.slice(0, 24)}...` : id;\n return `${base} — ${truncated}`;\n }\n return base;\n };\n\n /** Find a matching child task for an event's activity_type */\n const findChildTask = (evt: WorkflowExecutionEvent): LTTaskRecord | undefined => {\n if (!childTasks?.length) return undefined;\n const activityType = evt.attributes.activity_type;\n if (!activityType) return undefined;\n return childTasks.find((t) => t.workflow_type === activityType);\n };\n\n const toggleEvent = (id: number) => {\n setExpandedEvents((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n };\n\n const allExpanded = filtered.length > 0 && filtered.every((e) => expandedEvents.has(e.event_id));\n\n const toggleAll = () => {\n if (allExpanded) {\n setExpandedEvents(new Set());\n } else {\n setExpandedEvents(new Set(filtered.map((e) => e.event_id)));\n }\n };\n\n return (\n <div>\n <div className=\"px-6 py-4 border-b border-surface-border flex items-center justify-between flex-wrap gap-3\">\n <div className=\"flex items-center gap-4\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Events ({filtered.length})\n </p>\n {filtered.length > 0 && (\n <button onClick={toggleAll} className=\"text-[10px] text-accent hover:underline\">\n {allExpanded ? 'Collapse all' : 'Expand all'}\n </button>\n )}\n </div>\n <FilterBar>\n <FilterSelect\n label=\"Category\"\n value={categoryFilter}\n onChange={setCategoryFilter}\n options={categories.map((c) => ({ value: c, label: c }))}\n />\n <FilterSelect\n label=\"Type\"\n value={typeFilter}\n onChange={setTypeFilter}\n options={eventTypes.map((t) => ({ value: t, label: t }))}\n />\n <button\n onClick={() => setSortOrder((s) => (s === 'asc' ? 'desc' : 'asc'))}\n className=\"btn-ghost text-xs\"\n >\n {sortOrder === 'asc' ? 'Oldest first' : 'Newest first'}\n </button>\n </FilterBar>\n </div>\n\n <div>\n {filtered.length === 0 ? (\n <div className=\"px-6 py-8 text-center\">\n <p className=\"text-sm text-text-tertiary\">No events match the current filters</p>\n </div>\n ) : (\n filtered.map((evt) => {\n const isExpanded = expandedEvents.has(evt.event_id);\n const pending = isPending(evt);\n\n return (\n <div\n key={evt.event_id}\n className=\"border-b border-surface-border last:border-b-0\"\n >\n {/* Row header */}\n <div\n className=\"px-6 py-3 flex items-center gap-4 cursor-pointer hover:bg-surface-hover transition-colors duration-200\"\n onClick={() => toggleEvent(evt.event_id)}\n >\n {/* Expand chevron */}\n <span\n className={`text-[10px] text-text-tertiary transition-transform duration-300 ${isExpanded ? 'rotate-90' : ''}`}\n >\n &#9654;\n </span>\n\n <span className=\"text-xs font-mono text-text-tertiary w-8 shrink-0\">\n {evt.event_id}\n </span>\n <span\n className={`w-2 h-2 rounded-full shrink-0 ${categoryDot(evt.category)}`}\n />\n <span className=\"text-sm text-text-primary flex-1 truncate\">\n {eventLabel(evt)}\n </span>\n <span className=\"text-xs font-mono text-text-tertiary shrink-0\">\n {pending ? (\n <span className=\"inline-flex items-center gap-1 text-status-warning\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse\" />\n Pending\n </span>\n ) : evt.duration_ms !== null ? (\n formatDuration(evt.duration_ms)\n ) : (\n '--'\n )}\n </span>\n <time className=\"text-[10px] font-mono text-text-tertiary shrink-0\">\n {new Date(evt.event_time).toLocaleTimeString()}\n </time>\n </div>\n\n {/* Inline detail panel — directly below the clicked row */}\n <Collapsible open={isExpanded && !!evt.attributes}>\n <div className=\"px-6 pb-4 pl-16\">\n <EventDetailPanel\n event={evt}\n childTask={findChildTask(evt)}\n pending={pending}\n onClose={() => toggleEvent(evt.event_id)}\n />\n </div>\n </Collapsible>\n </div>\n );\n })\n )}\n </div>\n </div>\n );\n}\n"],"names":["STORAGE_KEY","load","pageKey","raw","save","set","useCollapsedSections","collapsed","setCollapsed","useState","isCollapsed","useCallback","section","toggle","prev","next","STARTED_TYPES","COMPLETED_TYPES","buildCompletedKeys","events","keys","e","EventTable","childTasks","categoryFilter","setCategoryFilter","typeFilter","setTypeFilter","sortOrder","setSortOrder","expandedEvents","setExpandedEvents","categories","eventTypes","completedKeys","isPending","evt","tlk","filtered","a","b","categoryDot","category","eventLabel","base","id","truncated","findChildTask","activityType","t","toggleEvent","allExpanded","toggleAll","jsxDEV","FilterBar","FilterSelect","c","s","isExpanded","pending","formatDuration","Collapsible","EventDetailPanel"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e}from"./index-Da8R5Fn_.js";import{R as i}from"./vendor-icons-1qQ3NKfa.js";const a={task:"text-blue-400",workflow:"text-accent",escalation:"text-amber-400",activity:"text-cyan-400",knowledge:"text-violet-400",agent:"text-emerald-400",app:"text-rose-400",milestone:"text-violet-400"};function c({topic:t}){const o=t.split(".")[0],s=a[o]??"text-text-quaternary",n=t.split(".").slice(-2).join(".");return e.jsxDEV("span",{className:"inline-flex items-center gap-1 text-[11px] font-mono text-text-secondary",children:[e.jsxDEV(i,{className:`w-2.5 h-2.5 shrink-0 ${s}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EventTopicPill.tsx",lineNumber:31,columnNumber:7},this),n]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/EventTopicPill.tsx",lineNumber:30,columnNumber:5},this)}export{c as E};
2
- //# sourceMappingURL=EventTopicPill-9LcMnLF0.js.map
1
+ import{j as e}from"./index-CCOSf1PY.js";import{R as i}from"./vendor-icons-CBOM6Es0.js";const a={task:"text-blue-400",workflow:"text-accent",escalation:"text-amber-400",activity:"text-cyan-400",knowledge:"text-violet-400",agent:"text-emerald-400",app:"text-rose-400",milestone:"text-violet-400"};function c({topic:t}){const o=t.split(".")[0],s=a[o]??"text-text-quaternary",n=t.split(".").slice(-2).join(".");return e.jsxDEV("span",{className:"inline-flex items-center gap-1 text-[11px] font-mono text-text-secondary",children:[e.jsxDEV(i,{className:`w-2.5 h-2.5 shrink-0 ${s}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/EventTopicPill.tsx",lineNumber:31,columnNumber:7},this),n]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/EventTopicPill.tsx",lineNumber:30,columnNumber:5},this)}export{c as E};
2
+ //# sourceMappingURL=EventTopicPill-CB_rIGlL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventTopicPill-9LcMnLF0.js","sources":["../../src/components/common/display/EventTopicPill.tsx"],"sourcesContent":["import { Radio } from 'lucide-react';\n\n/**\n * Universal event topic display — Radio icon + monotype text.\n * Used everywhere an event subscription topic is rendered.\n * No border, no background — matches CronLabel's simplicity.\n */\n\nconst CATEGORY_COLORS: Record<string, string> = {\n task: 'text-blue-400',\n workflow: 'text-accent',\n escalation: 'text-amber-400',\n activity: 'text-cyan-400',\n knowledge: 'text-violet-400',\n agent: 'text-emerald-400',\n app: 'text-rose-400',\n milestone: 'text-violet-400',\n};\n\ninterface EventTopicPillProps {\n topic: string;\n}\n\nexport function EventTopicPill({ topic }: EventTopicPillProps) {\n const category = topic.split('.')[0];\n const iconColor = CATEGORY_COLORS[category] ?? 'text-text-quaternary';\n const shortTopic = topic.split('.').slice(-2).join('.');\n\n return (\n <span className=\"inline-flex items-center gap-1 text-[11px] font-mono text-text-secondary\">\n <Radio className={`w-2.5 h-2.5 shrink-0 ${iconColor}`} strokeWidth={1.5} />\n {shortTopic}\n </span>\n );\n}\n"],"names":["CATEGORY_COLORS","EventTopicPill","topic","category","iconColor","shortTopic","jsxDEV","Radio"],"mappings":"uFAQA,MAAMA,EAA0C,CAC9C,KAAY,gBACZ,SAAY,cACZ,WAAY,iBACZ,SAAY,gBACZ,UAAY,kBACZ,MAAY,mBACZ,IAAY,gBACZ,UAAY,iBACd,EAMO,SAASC,EAAe,CAAE,MAAAC,GAA8B,CAC7D,MAAMC,EAAWD,EAAM,MAAM,GAAG,EAAE,CAAC,EAC7BE,EAAYJ,EAAgBG,CAAQ,GAAK,uBACzCE,EAAaH,EAAM,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,EAEtD,OACEI,EAAAA,OAAC,OAAA,CAAK,UAAU,2EACd,SAAA,CAAAA,EAAAA,OAACC,GAAM,UAAW,wBAAwBH,CAAS,GAAI,YAAa,KAApE,OAAA,GAAA,CAAA,SAAA,kEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAyE,EACxEC,CAAA,CAAA,EAFH,OAAA,GAAA,CAAA,SAAA,kEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ"}
1
+ {"version":3,"file":"EventTopicPill-CB_rIGlL.js","sources":["../../src/components/common/display/EventTopicPill.tsx"],"sourcesContent":["import { Radio } from 'lucide-react';\n\n/**\n * Universal event topic display — Radio icon + monotype text.\n * Used everywhere an event subscription topic is rendered.\n * No border, no background — matches CronLabel's simplicity.\n */\n\nconst CATEGORY_COLORS: Record<string, string> = {\n task: 'text-blue-400',\n workflow: 'text-accent',\n escalation: 'text-amber-400',\n activity: 'text-cyan-400',\n knowledge: 'text-violet-400',\n agent: 'text-emerald-400',\n app: 'text-rose-400',\n milestone: 'text-violet-400',\n};\n\ninterface EventTopicPillProps {\n topic: string;\n}\n\nexport function EventTopicPill({ topic }: EventTopicPillProps) {\n const category = topic.split('.')[0];\n const iconColor = CATEGORY_COLORS[category] ?? 'text-text-quaternary';\n const shortTopic = topic.split('.').slice(-2).join('.');\n\n return (\n <span className=\"inline-flex items-center gap-1 text-[11px] font-mono text-text-secondary\">\n <Radio className={`w-2.5 h-2.5 shrink-0 ${iconColor}`} strokeWidth={1.5} />\n {shortTopic}\n </span>\n );\n}\n"],"names":["CATEGORY_COLORS","EventTopicPill","topic","category","iconColor","shortTopic","jsxDEV","Radio"],"mappings":"uFAQA,MAAMA,EAA0C,CAC9C,KAAY,gBACZ,SAAY,cACZ,WAAY,iBACZ,SAAY,gBACZ,UAAY,kBACZ,MAAY,mBACZ,IAAY,gBACZ,UAAY,iBACd,EAMO,SAASC,EAAe,CAAE,MAAAC,GAA8B,CAC7D,MAAMC,EAAWD,EAAM,MAAM,GAAG,EAAE,CAAC,EAC7BE,EAAYJ,EAAgBG,CAAQ,GAAK,uBACzCE,EAAaH,EAAM,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,EAEtD,OACEI,EAAAA,OAAC,OAAA,CAAK,UAAU,2EACd,SAAA,CAAAA,EAAAA,OAACC,GAAM,UAAW,wBAAwBH,CAAS,GAAI,YAAa,KAApE,OAAA,GAAA,CAAA,SAAA,kEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAyE,EACxEC,CAAA,CAAA,EAFH,OAAA,GAAA,CAAA,SAAA,kEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{j as e}from"./index-Da8R5Fn_.js";import{a as m}from"./vendor-query-DLp59M9_.js";function p({children:r,actions:t}){return e.jsxDEV("div",{className:"sticky top-0 z-20 bg-surface -mx-10 px-10 py-1.5 pb-4 border-b border-surface-border/50",children:e.jsxDEV("div",{className:"flex items-center gap-2 flex-wrap",children:[r,t&&e.jsxDEV("div",{className:"ml-auto flex items-center gap-2",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:13,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:11,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:10,columnNumber:5},this)}function x({label:r,value:t,onChange:l,options:n,required:i,placeholder:s}){return e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("label",{className:"text-[10px] text-text-tertiary",children:r},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:32,columnNumber:7},this),e.jsxDEV("select",{value:t,onChange:a=>l(a.target.value),className:"select text-[11px] py-1 px-2",children:[!i&&e.jsxDEV("option",{value:"",children:s||"All"},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:38,columnNumber:23},this),n.map(a=>e.jsxDEV("option",{value:a.value,children:a.label},a.value,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:40,columnNumber:11},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:33,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:31,columnNumber:5},this)}function b({label:r,value:t,onChange:l,placeholder:n}){const[i,s]=m.useState(t),a=m.useRef(void 0);m.useEffect(()=>{s(t)},[t]);const c=o=>{s(o),clearTimeout(a.current),a.current=setTimeout(()=>l(o),300)};return m.useEffect(()=>()=>clearTimeout(a.current),[]),e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("label",{className:"text-[10px] text-text-tertiary whitespace-nowrap",children:r},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:74,columnNumber:7},this),e.jsxDEV("input",{type:"text",value:i,onChange:o=>c(o.target.value),placeholder:n,className:"input text-[11px] py-1 px-2 w-48 font-mono"},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:75,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:73,columnNumber:5},this)}export{p as F,b as a,x as b};
2
- //# sourceMappingURL=FilterBar-CZGTOMoo.js.map
1
+ import{j as e}from"./index-CCOSf1PY.js";import{a as m}from"./vendor-query-DLp59M9_.js";function p({children:r,actions:t}){return e.jsxDEV("div",{className:"sticky top-0 z-20 bg-surface -mx-10 px-10 py-1.5 pb-4 border-b border-surface-border/50",children:e.jsxDEV("div",{className:"flex items-center gap-2 flex-wrap",children:[r,t&&e.jsxDEV("div",{className:"ml-auto flex items-center gap-2",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:13,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:11,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:10,columnNumber:5},this)}function x({label:r,value:t,onChange:l,options:n,required:i,placeholder:s}){return e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("label",{className:"text-[10px] text-text-tertiary",children:r},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:32,columnNumber:7},this),e.jsxDEV("select",{value:t,onChange:a=>l(a.target.value),className:"select text-[11px] py-1 px-2",children:[!i&&e.jsxDEV("option",{value:"",children:s||"All"},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:38,columnNumber:23},this),n.map(a=>e.jsxDEV("option",{value:a.value,children:a.label},a.value,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:40,columnNumber:11},this))]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:33,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:31,columnNumber:5},this)}function b({label:r,value:t,onChange:l,placeholder:n}){const[i,s]=m.useState(t),a=m.useRef(void 0);m.useEffect(()=>{s(t)},[t]);const c=o=>{s(o),clearTimeout(a.current),a.current=setTimeout(()=>l(o),300)};return m.useEffect(()=>()=>clearTimeout(a.current),[]),e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("label",{className:"text-[10px] text-text-tertiary whitespace-nowrap",children:r},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:74,columnNumber:7},this),e.jsxDEV("input",{type:"text",value:i,onChange:o=>c(o.target.value),placeholder:n,className:"input text-[11px] py-1 px-2 w-48 font-mono"},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:75,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/FilterBar.tsx",lineNumber:73,columnNumber:5},this)}export{p as F,b as a,x as b};
2
+ //# sourceMappingURL=FilterBar-Bdssa-Xn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBar-CZGTOMoo.js","sources":["../../src/components/common/data/FilterBar.tsx"],"sourcesContent":["import { useState, useEffect, useRef, type ReactNode } from 'react';\n\ninterface FilterBarProps {\n children: ReactNode;\n actions?: ReactNode;\n}\n\nexport function FilterBar({ children, actions }: FilterBarProps) {\n return (\n <div className=\"sticky top-0 z-20 bg-surface -mx-10 px-10 py-1.5 pb-4 border-b border-surface-border/50\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n {children}\n {actions && <div className=\"ml-auto flex items-center gap-2\">{actions}</div>}\n </div>\n </div>\n );\n}\n\ninterface FilterSelectProps {\n label: string;\n value: string;\n onChange: (value: string) => void;\n options: { value: string; label: string }[];\n /** When true, omit the default \"All\" option — a value is always required. */\n required?: boolean;\n placeholder?: string;\n}\n\nexport function FilterSelect({ label, value, onChange, options, required, placeholder }: FilterSelectProps) {\n return (\n <div className=\"flex items-center gap-1.5\">\n <label className=\"text-[10px] text-text-tertiary\">{label}</label>\n <select\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"select text-[11px] py-1 px-2\"\n >\n {!required && <option value=\"\">{placeholder || 'All'}</option>}\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n );\n}\n\ninterface FilterInputProps {\n label: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n}\n\nexport function FilterInput({ label, value, onChange, placeholder }: FilterInputProps) {\n const [local, setLocal] = useState(value);\n const timerRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n // Sync from parent when the URL-driven value changes externally\n useEffect(() => { setLocal(value); }, [value]);\n\n const handleChange = (v: string) => {\n setLocal(v);\n clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => onChange(v), 300);\n };\n\n // Flush on unmount\n useEffect(() => () => clearTimeout(timerRef.current), []);\n\n return (\n <div className=\"flex items-center gap-1.5\">\n <label className=\"text-[10px] text-text-tertiary whitespace-nowrap\">{label}</label>\n <input\n type=\"text\"\n value={local}\n onChange={(e) => handleChange(e.target.value)}\n placeholder={placeholder}\n className=\"input text-[11px] py-1 px-2 w-48 font-mono\"\n />\n </div>\n );\n}\n"],"names":["FilterBar","children","actions","jsxDEV","FilterSelect","label","value","onChange","options","required","placeholder","e","opt","FilterInput","local","setLocal","useState","timerRef","useRef","useEffect","handleChange","v"],"mappings":"uFAOO,SAASA,EAAU,CAAE,SAAAC,EAAU,QAAAC,GAA2B,CAC/D,gBACG,MAAA,CAAI,UAAU,0FACb,SAAAC,EAAAA,OAAC,MAAA,CAAI,UAAU,oCACZ,SAAA,CAAAF,EACAC,GAAWC,EAAAA,OAAC,MAAA,CAAI,UAAU,kCAAmC,SAAAD,CAAA,EAAlD,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA0D,CAAA,CAAA,EAFxE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,CAEJ,CAYO,SAASE,EAAa,CAAE,MAAAC,EAAO,MAAAC,EAAO,SAAAC,EAAU,QAAAC,EAAS,SAAAC,EAAU,YAAAC,GAAkC,CAC1G,OACEP,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,iCAAkC,SAAAE,CAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAyD,EACzDF,EAAAA,OAAC,SAAA,CACC,MAAAG,EACA,SAAWK,GAAMJ,EAASI,EAAE,OAAO,KAAK,EACxC,UAAU,+BAET,SAAA,CAAA,CAACF,GAAYN,EAAAA,OAAC,SAAA,CAAO,MAAM,GAAI,YAAe,OAAjC,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAuC,EACpDK,EAAQ,IAAKI,GACZT,EAAAA,OAAC,SAAA,CAAuB,MAAOS,EAAI,MAChC,SAAAA,EAAI,KAAA,EADMA,EAAI,MAAjB,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CACD,CAAA,CAAA,EAVH,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAWA,CAAA,EAbF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAcA,CAEJ,CASO,SAASC,EAAY,CAAE,MAAAR,EAAO,MAAAC,EAAO,SAAAC,EAAU,YAAAG,GAAiC,CACrF,KAAM,CAACI,EAAOC,CAAQ,EAAIC,EAAAA,SAASV,CAAK,EAClCW,EAAWC,EAAAA,OAAsC,MAAS,EAGhEC,EAAAA,UAAU,IAAM,CAAEJ,EAAST,CAAK,CAAG,EAAG,CAACA,CAAK,CAAC,EAE7C,MAAMc,EAAgBC,GAAc,CAClCN,EAASM,CAAC,EACV,aAAaJ,EAAS,OAAO,EAC7BA,EAAS,QAAU,WAAW,IAAMV,EAASc,CAAC,EAAG,GAAG,CACtD,EAGAF,OAAAA,EAAAA,UAAU,IAAM,IAAM,aAAaF,EAAS,OAAO,EAAG,CAAA,CAAE,EAGtDd,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,mDAAoD,SAAAE,CAAA,EAArE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA2E,EAC3EF,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,MAAOW,EACP,SAAWH,GAAMS,EAAaT,EAAE,OAAO,KAAK,EAC5C,YAAAD,EACA,UAAU,4CAAA,EALZ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAMA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,CAEJ"}
1
+ {"version":3,"file":"FilterBar-Bdssa-Xn.js","sources":["../../src/components/common/data/FilterBar.tsx"],"sourcesContent":["import { useState, useEffect, useRef, type ReactNode } from 'react';\n\ninterface FilterBarProps {\n children: ReactNode;\n actions?: ReactNode;\n}\n\nexport function FilterBar({ children, actions }: FilterBarProps) {\n return (\n <div className=\"sticky top-0 z-20 bg-surface -mx-10 px-10 py-1.5 pb-4 border-b border-surface-border/50\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n {children}\n {actions && <div className=\"ml-auto flex items-center gap-2\">{actions}</div>}\n </div>\n </div>\n );\n}\n\ninterface FilterSelectProps {\n label: string;\n value: string;\n onChange: (value: string) => void;\n options: { value: string; label: string }[];\n /** When true, omit the default \"All\" option — a value is always required. */\n required?: boolean;\n placeholder?: string;\n}\n\nexport function FilterSelect({ label, value, onChange, options, required, placeholder }: FilterSelectProps) {\n return (\n <div className=\"flex items-center gap-1.5\">\n <label className=\"text-[10px] text-text-tertiary\">{label}</label>\n <select\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"select text-[11px] py-1 px-2\"\n >\n {!required && <option value=\"\">{placeholder || 'All'}</option>}\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n );\n}\n\ninterface FilterInputProps {\n label: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n}\n\nexport function FilterInput({ label, value, onChange, placeholder }: FilterInputProps) {\n const [local, setLocal] = useState(value);\n const timerRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n // Sync from parent when the URL-driven value changes externally\n useEffect(() => { setLocal(value); }, [value]);\n\n const handleChange = (v: string) => {\n setLocal(v);\n clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => onChange(v), 300);\n };\n\n // Flush on unmount\n useEffect(() => () => clearTimeout(timerRef.current), []);\n\n return (\n <div className=\"flex items-center gap-1.5\">\n <label className=\"text-[10px] text-text-tertiary whitespace-nowrap\">{label}</label>\n <input\n type=\"text\"\n value={local}\n onChange={(e) => handleChange(e.target.value)}\n placeholder={placeholder}\n className=\"input text-[11px] py-1 px-2 w-48 font-mono\"\n />\n </div>\n );\n}\n"],"names":["FilterBar","children","actions","jsxDEV","FilterSelect","label","value","onChange","options","required","placeholder","e","opt","FilterInput","local","setLocal","useState","timerRef","useRef","useEffect","handleChange","v"],"mappings":"uFAOO,SAASA,EAAU,CAAE,SAAAC,EAAU,QAAAC,GAA2B,CAC/D,gBACG,MAAA,CAAI,UAAU,0FACb,SAAAC,EAAAA,OAAC,MAAA,CAAI,UAAU,oCACZ,SAAA,CAAAF,EACAC,GAAWC,EAAAA,OAAC,MAAA,CAAI,UAAU,kCAAmC,SAAAD,CAAA,EAAlD,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA0D,CAAA,CAAA,EAFxE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,CAEJ,CAYO,SAASE,EAAa,CAAE,MAAAC,EAAO,MAAAC,EAAO,SAAAC,EAAU,QAAAC,EAAS,SAAAC,EAAU,YAAAC,GAAkC,CAC1G,OACEP,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,iCAAkC,SAAAE,CAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAyD,EACzDF,EAAAA,OAAC,SAAA,CACC,MAAAG,EACA,SAAWK,GAAMJ,EAASI,EAAE,OAAO,KAAK,EACxC,UAAU,+BAET,SAAA,CAAA,CAACF,GAAYN,EAAAA,OAAC,SAAA,CAAO,MAAM,GAAI,YAAe,OAAjC,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAuC,EACpDK,EAAQ,IAAKI,GACZT,EAAAA,OAAC,SAAA,CAAuB,MAAOS,EAAI,MAChC,SAAAA,EAAI,KAAA,EADMA,EAAI,MAAjB,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CACD,CAAA,CAAA,EAVH,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAWA,CAAA,EAbF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAcA,CAEJ,CASO,SAASC,EAAY,CAAE,MAAAR,EAAO,MAAAC,EAAO,SAAAC,EAAU,YAAAG,GAAiC,CACrF,KAAM,CAACI,EAAOC,CAAQ,EAAIC,EAAAA,SAASV,CAAK,EAClCW,EAAWC,EAAAA,OAAsC,MAAS,EAGhEC,EAAAA,UAAU,IAAM,CAAEJ,EAAST,CAAK,CAAG,EAAG,CAACA,CAAK,CAAC,EAE7C,MAAMc,EAAgBC,GAAc,CAClCN,EAASM,CAAC,EACV,aAAaJ,EAAS,OAAO,EAC7BA,EAAS,QAAU,WAAW,IAAMV,EAASc,CAAC,EAAG,GAAG,CACtD,EAGAF,OAAAA,EAAAA,UAAU,IAAM,IAAM,aAAaF,EAAS,OAAO,EAAG,CAAA,CAAE,EAGtDd,EAAAA,OAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,mDAAoD,SAAAE,CAAA,EAArE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA2E,EAC3EF,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,MAAOW,EACP,SAAWH,GAAMS,EAAaT,EAAE,OAAO,KAAK,EAC5C,YAAAD,EACA,UAAU,4CAAA,EALZ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAMA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{l as Z,s as I,j as e,d as P,c as ee,N as se,J as ae}from"./index-Da8R5Fn_.js";import{a as c}from"./vendor-query-DLp59M9_.js";import{b as oe}from"./workflows-B9xdIsfM.js";import{u as te}from"./mcp-runs-BkRnXbcq.js";import{a as re}from"./controlplane-BiPTCZeL.js";import{u as ie}from"./tasks-BLCzIHol.js";import{e as me,b as le,u as ne}from"./useEventHooks-AwwZnweF.js";import{R as T}from"./RolePill-DsYF2JN9.js";import{W as x}from"./WorkflowPill-BzhfqGa-.js";import{L as f}from"./ListToolbar-CJEzypCM.js";import{E as ce}from"./EventTopicPill-9LcMnLF0.js";import{s as z,a0 as p,L as B,W as M,C as Q,I as J,R as O,B as de,h as pe}from"./vendor-icons-1qQ3NKfa.js";import{c as G,f as ue}from"./vendor-react-Co3Y8ikm.js";const he={completed:"bg-status-success",active:"bg-status-active",running:"bg-status-active",pending:"bg-status-pending",error:"bg-status-error",failed:"bg-status-error"};function U(a){return he[a]??"bg-text-tertiary"}let be=0;function Ne(a=5){const[o,t]=c.useState([]),[r,i]=c.useState(!1),n=c.useRef(null),m=c.useCallback(l=>{var d,N,v;if((d=l.type)!=null&&d.startsWith("mesh."))return;const b=l.activityName||l.workflowName||((N=l.data)==null?void 0:N.domain)||((v=l.workflowId)==null?void 0:v.slice(0,16))||"";t(D=>[{id:++be,type:l.type,timestamp:l.timestamp,label:b,data:l},...D].slice(0,a)),i(!0),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>i(!1),2e3)},[a]);return ee(`${se}.>`,m),{events:o,pulse:r}}function u({icon:a,color:o,docsHash:t,children:r,actions:i}){return e.jsxDEV("div",{className:"flex items-center justify-between mb-4 pb-2 border-b border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(a,{className:`w-4.5 h-4.5 ${o||"text-accent/60"}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:66,columnNumber:9},this),e.jsxDEV("h2",{className:"text-sm font-semibold uppercase tracking-widest text-accent/80",children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:65,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-2",children:[t&&e.jsxDEV("button",{onClick:()=>{window.location.hash=t},className:"text-text-quaternary hover:text-accent transition-colors",title:"Docs",children:e.jsxDEV(de,{className:"w-2.5 h-2.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:72,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:71,columnNumber:11},this),i]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:69,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:64,columnNumber:5},this)}function h({icon:a,text:o}){return e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-10 text-center",children:[e.jsxDEV(a,{className:"w-6 h-6 text-text-quaternary/50 mb-2",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:84,columnNumber:7},this),e.jsxDEV("p",{className:"text-xs text-text-quaternary",children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:85,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:83,columnNumber:5},this)}function xe(a,o=37){if(!a||a.length<=o)return a;const t=Math.floor((o-3)/2);return`${a.slice(0,t)}...${a.slice(-t)}`}function y({dot:a,pill:o,id:t,date:r,onClick:i}){return e.jsxDEV("button",{onClick:i,className:"w-full text-left hover:bg-surface-hover/50 rounded-md px-1 py-1.5 transition-colors",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${a}`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:108,columnNumber:9},this),e.jsxDEV("span",{className:"text-[12px] text-text-primary font-mono truncate max-w-[60%]",children:xe(t)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:109,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0 ml-auto whitespace-nowrap",children:e.jsxDEV(P,{date:r},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:110,columnNumber:95},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:110,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:107,columnNumber:7},this),e.jsxDEV("div",{className:"pl-3.5 flex items-center gap-1 overflow-hidden",children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:112,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:106,columnNumber:5},this)}function g({to:a,icon:o,title:t}){const r=G();return e.jsxDEV("button",{onClick:()=>r(a),className:"text-text-quaternary hover:text-accent transition-colors",title:t,children:e.jsxDEV(o,{className:"w-2.5 h-2.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:125,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:120,columnNumber:5},this)}function X({appIds:a,selected:o,onSelect:t}){const[r,i]=c.useState(!1),n=c.useRef(null);return c.useEffect(()=>{if(!r)return;const m=l=>{n.current&&!n.current.contains(l.target)&&i(!1)};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[r]),a.length<=1?null:e.jsxDEV("div",{className:"relative mb-3 -mt-2",ref:n,children:[e.jsxDEV("button",{onClick:()=>i(m=>!m),className:"flex items-center gap-1 px-2 py-0.5 text-[10px] rounded bg-accent/10 text-accent hover:bg-accent/20 transition-colors",children:[o,e.jsxDEV("svg",{className:`w-2.5 h-2.5 transition-transform ${r?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:159,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:158,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:153,columnNumber:7},this),r&&e.jsxDEV("div",{className:"absolute top-full left-0 mt-1 bg-surface-raised border border-surface-border rounded-md shadow-lg z-30 py-1 min-w-[120px]",children:a.map(m=>e.jsxDEV("button",{onClick:()=>{t(m),i(!1)},className:`w-full text-left px-3 py-1.5 text-[11px] transition-colors ${o===m?"text-accent bg-accent/5":"text-text-secondary hover:bg-surface-hover"}`,children:m},m,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:165,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:163,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:152,columnNumber:5},this)}function fe({event:a}){const[o,t]=c.useState(!1);return e.jsxDEV("div",{children:[e.jsxDEV("button",{onClick:()=>t(!o),className:"w-full text-left px-1 py-2 hover:bg-surface-hover/50 rounded-md transition-colors flex items-center gap-2",children:[e.jsxDEV(pe,{className:`w-2.5 h-2.5 text-text-quaternary shrink-0 transition-transform ${o?"rotate-0":"-rotate-90"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:188,columnNumber:9},this),e.jsxDEV(ce,{topic:a.type},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:189,columnNumber:9},this),e.jsxDEV("span",{className:"text-[11px] text-text-secondary font-mono truncate flex-1",children:a.label||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:190,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0",children:e.jsxDEV(P,{date:a.timestamp,format:"time"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:191,columnNumber:69},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:191,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:187,columnNumber:7},this),o&&e.jsxDEV("div",{className:"pl-5 pb-2",children:e.jsxDEV(ae,{data:a.data,defaultCollapsed:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:195,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:194,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:186,columnNumber:5},this)}function Se(){var $,q,A,F,L;const a=G(),{user:o}=Z(),[t,r]=ue(),i=t.get("pipelinenamespace")||"longtail",n=t.get("durablenamespace")||"durable",m=c.useCallback((s,E)=>{r(Y=>{const W=new URLSearchParams(Y);return W.set(s,E),W},{replace:!1})},[r]);me(),le(),ne();const l=ie({limit:5}),b=oe({limit:5,sort_by:"updated_at",order:"desc",namespace:n}),{data:d}=re(),N=((d==null?void 0:d.apps)??[]).map(s=>s.appId),v=N,D=N,H=te({limit:5,app_id:i,sort_by:"updated_at",order:"desc"}),j=I({status:"pending",limit:5,sort_by:"updated_at",order:"desc"}),V=I({assigned_to:o==null?void 0:o.userId,status:"pending",limit:5,sort_by:"updated_at",order:"desc"}),{events:w,pulse:K}=Ne(),k=(($=l.data)==null?void 0:$.processes)??[],_=((q=b.data)==null?void 0:q.jobs)??[],C=((A=H.data)==null?void 0:A.jobs)??[],S=((F=j.data)==null?void 0:F.escalations)??[],R=((L=V.data)==null?void 0:L.escalations)??[];return e.jsxDEV("div",{children:[e.jsxDEV("h1",{className:"text-3xl font-light text-text-primary mb-10",children:"Recent Activity"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:240,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-x-14 gap-y-14",children:[e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:z,color:"text-emerald-400",docsHash:"#docs:dashboard.md:processes-overview",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>l.refetch(),isFetching:l.isFetching,apiPath:"/tasks/processes?limit=5"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:249,columnNumber:15},this),e.jsxDEV(g,{to:"/processes/all",icon:p,title:"All processes"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:250,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:248,columnNumber:13},this),children:"Certified Processes"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:247,columnNumber:11},this),e.jsxDEV("div",{className:"mb-3 -mt-2",children:e.jsxDEV("span",{className:"px-2 py-0.5 text-[10px] rounded text-text-quaternary uppercase tracking-widest",children:"all namespaces"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:256,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:255,columnNumber:11},this),k.length===0?e.jsxDEV(h,{icon:z,text:"No recent processes"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:259,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:k.map(s=>e.jsxDEV(y,{dot:(s.task_count??0)>0&&(s.completed??0)>=(s.task_count??0)?"bg-status-success":(s.escalated??0)>0?"border border-status-error":"bg-status-active",pill:e.jsxDEV(e.Fragment,{children:(s.workflow_types??[s.workflow_type]).filter(Boolean).map(E=>e.jsxDEV(x,{type:E,size:"xs"},E,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:266,columnNumber:104},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:266,columnNumber:25},this),id:s.origin_id,date:s.last_activity??s.started_at,onClick:()=>a(`/processes/detail/${s.origin_id}`)},s.origin_id,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:263,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:261,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:246,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:B,color:"text-blue-400",docsHash:"#docs:dashboard.md:durable-executions",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>b.refetch(),isFetching:b.isFetching,apiPath:`/workflow-states/jobs?namespace=${n}&limit=5`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:280,columnNumber:15},this),e.jsxDEV(g,{to:"/workflows/executions",icon:p,title:"All durable executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:281,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:279,columnNumber:13},this),children:"Durable Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:278,columnNumber:11},this),e.jsxDEV(X,{appIds:v,selected:n,onSelect:s=>m("durablenamespace",s)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:286,columnNumber:11},this),_.length===0?e.jsxDEV(h,{icon:B,text:"No recent executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:288,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:_.map(s=>e.jsxDEV(y,{dot:U(s.status),pill:e.jsxDEV(x,{type:s.entity||s.type||"workflow",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:295,columnNumber:25},this),id:s.workflow_id,date:s.updated_at??s.created_at,onClick:()=>a(`/workflows/executions/${s.workflow_id}`)},s.workflow_id,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:292,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:290,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:277,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:M,color:"text-violet-400",docsHash:"#docs:dashboard.md:mcp-pipeline-tools",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>H.refetch(),isFetching:H.isFetching,apiPath:`/mcp-runs?app_id=${i}&limit=5`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:309,columnNumber:15},this),e.jsxDEV(g,{to:"/mcp/executions",icon:p,title:"All pipeline executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:310,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:308,columnNumber:13},this),children:"Pipeline Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:307,columnNumber:11},this),e.jsxDEV(X,{appIds:D,selected:i,onSelect:s=>m("pipelinenamespace",s)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:315,columnNumber:11},this),C.length===0?e.jsxDEV(h,{icon:M,text:"No recent pipeline runs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:317,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:C.map(s=>e.jsxDEV(y,{dot:U(s.status),pill:e.jsxDEV(x,{type:s.entity||s.workflow_name||"pipeline",variant:"pipeline",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:324,columnNumber:25},this),id:s.workflow_id,date:s.updated_at??s.created_at,onClick:()=>a(`/mcp/executions/${s.workflow_id}?namespace=${i}`)},s.workflow_id,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:321,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:319,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:306,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:243,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-x-14 mt-14",children:[e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:Q,color:"text-amber-400",docsHash:"#docs:dashboard.md:all-escalations",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>j.refetch(),isFetching:j.isFetching,apiPath:"/escalations?status=pending&limit=5&sort_by=priority&order=asc"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:342,columnNumber:15},this),e.jsxDEV(g,{to:"/escalations/available",icon:p,title:"All available escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:343,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:341,columnNumber:13},this),children:"All Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:340,columnNumber:11},this),S.length===0?e.jsxDEV(h,{icon:Q,text:"No pending escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:349,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:S.map(s=>e.jsxDEV("button",{onClick:()=>a(`/escalations/detail/${s.id}`),className:"w-full text-left hover:bg-surface-hover/50 rounded-md px-1 py-1.5 transition-colors",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsxDEV("span",{className:"text-[9px] text-text-quaternary font-medium shrink-0",children:["P",s.priority??2]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:359,columnNumber:21},this),e.jsxDEV("span",{className:"text-[12px] text-text-primary truncate flex-1 max-w-[65%]",children:s.description||s.subtype||s.type},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:360,columnNumber:21},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0 ml-auto",children:e.jsxDEV(P,{date:s.updated_at??s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:361,columnNumber:89},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:361,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:358,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-2 pl-5",children:[e.jsxDEV(x,{type:s.type||"unknown",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:364,columnNumber:21},this),e.jsxDEV("span",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:365,columnNumber:21},this),e.jsxDEV(T,{role:s.role},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:366,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:363,columnNumber:19},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:353,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:351,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:339,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:J,color:"text-orange-400",docsHash:"#docs:dashboard.md:escalations-overview",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>V.refetch(),isFetching:V.isFetching,apiPath:`/escalations?assigned_to=${(o==null?void 0:o.userId)??""}&status=pending&limit=5`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:378,columnNumber:15},this),e.jsxDEV(g,{to:"/escalations/queue",icon:p,title:"My escalation queue"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:379,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:377,columnNumber:13},this),children:"My Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:376,columnNumber:11},this),R.length===0?e.jsxDEV(h,{icon:J,text:"No assigned escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:385,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:R.map(s=>e.jsxDEV("button",{onClick:()=>a(`/escalations/detail/${s.id}`),className:"w-full text-left hover:bg-surface-hover/50 rounded-md px-1 py-1.5 transition-colors",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsxDEV("span",{className:"text-[9px] text-text-quaternary font-medium shrink-0",children:["P",s.priority??2]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:395,columnNumber:21},this),e.jsxDEV("span",{className:"text-[12px] text-text-primary truncate flex-1 max-w-[65%]",children:s.description||s.subtype||s.type},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:396,columnNumber:21},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0 ml-auto",children:e.jsxDEV(P,{date:s.updated_at??s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:397,columnNumber:89},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:397,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:394,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-2 pl-5",children:[e.jsxDEV(x,{type:s.type||"unknown",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:400,columnNumber:21},this),e.jsxDEV("span",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:401,columnNumber:21},this),e.jsxDEV(T,{role:s.role},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:402,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:399,columnNumber:19},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:389,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:387,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:375,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:O,color:"text-emerald-400",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full transition-colors duration-500 ${K?"bg-emerald-400":"bg-zinc-600"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:415,columnNumber:17},this),e.jsxDEV("button",{onClick:()=>{const s=document.querySelector('[title="Fullscreen"]');s==null||s.click()},className:"text-text-quaternary hover:text-accent transition-colors",title:"View all events",children:e.jsxDEV(p,{className:"w-2.5 h-2.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:421,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:416,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:414,columnNumber:15},this),children:"Event Stream"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:412,columnNumber:11},this),w.length===0?e.jsxDEV(h,{icon:O,text:"Events appear here in real time"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:429,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/20",children:w.map(s=>e.jsxDEV(fe,{event:s},s.id,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:433,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:431,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:411,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:336,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:239,columnNumber:5},this)}export{Se as HomePage};
2
- //# sourceMappingURL=HomePage-Dtk7mgmf.js.map
1
+ import{i as Z,r as I,j as e,c as P,u as ee,N as se,J as ae}from"./index-CCOSf1PY.js";import{a as c}from"./vendor-query-DLp59M9_.js";import{b as oe}from"./workflows-Yq7cK-vR.js";import{u as te}from"./mcp-runs-DtTTsuPH.js";import{a as re}from"./controlplane-BVoALhbL.js";import{u as ie}from"./tasks-Cc-QoITQ.js";import{e as me,b as le,u as ne}from"./useEventHooks-VaJ52jMm.js";import{R as T}from"./RolePill-CHwys1f9.js";import{W as x}from"./WorkflowPill-7vt2F6wR.js";import{L as f}from"./ListToolbar-jy8NL6ll.js";import{E as ce}from"./EventTopicPill-CB_rIGlL.js";import{s as z,a0 as p,L as B,W as M,C as Q,I as J,R as O,B as de,h as pe}from"./vendor-icons-CBOM6Es0.js";import{c as G,f as ue}from"./vendor-react-Co3Y8ikm.js";const he={completed:"bg-status-success",active:"bg-status-active",running:"bg-status-active",pending:"bg-status-pending",error:"bg-status-error",failed:"bg-status-error"};function U(a){return he[a]??"bg-text-tertiary"}let be=0;function Ne(a=5){const[o,t]=c.useState([]),[r,i]=c.useState(!1),n=c.useRef(null),m=c.useCallback(l=>{var d,N,v;if((d=l.type)!=null&&d.startsWith("mesh."))return;const b=l.activityName||l.workflowName||((N=l.data)==null?void 0:N.domain)||((v=l.workflowId)==null?void 0:v.slice(0,16))||"";t(D=>[{id:++be,type:l.type,timestamp:l.timestamp,label:b,data:l},...D].slice(0,a)),i(!0),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>i(!1),2e3)},[a]);return ee(`${se}.>`,m),{events:o,pulse:r}}function u({icon:a,color:o,docsHash:t,children:r,actions:i}){return e.jsxDEV("div",{className:"flex items-center justify-between mb-4 pb-2 border-b border-surface-border",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(a,{className:`w-4.5 h-4.5 ${o||"text-accent/60"}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:66,columnNumber:9},this),e.jsxDEV("h2",{className:"text-sm font-semibold uppercase tracking-widest text-accent/80",children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:65,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-2",children:[t&&e.jsxDEV("button",{onClick:()=>{window.location.hash=t},className:"text-text-quaternary hover:text-accent transition-colors",title:"Docs",children:e.jsxDEV(de,{className:"w-2.5 h-2.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:72,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:71,columnNumber:11},this),i]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:69,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:64,columnNumber:5},this)}function h({icon:a,text:o}){return e.jsxDEV("div",{className:"flex flex-col items-center justify-center py-10 text-center",children:[e.jsxDEV(a,{className:"w-6 h-6 text-text-quaternary/50 mb-2",strokeWidth:1},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:84,columnNumber:7},this),e.jsxDEV("p",{className:"text-xs text-text-quaternary",children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:85,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:83,columnNumber:5},this)}function xe(a,o=37){if(!a||a.length<=o)return a;const t=Math.floor((o-3)/2);return`${a.slice(0,t)}...${a.slice(-t)}`}function y({dot:a,pill:o,id:t,date:r,onClick:i}){return e.jsxDEV("button",{onClick:i,className:"w-full text-left hover:bg-surface-hover/50 rounded-md px-1 py-1.5 transition-colors",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${a}`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:108,columnNumber:9},this),e.jsxDEV("span",{className:"text-[12px] text-text-primary font-mono truncate max-w-[60%]",children:xe(t)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:109,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0 ml-auto whitespace-nowrap",children:e.jsxDEV(P,{date:r},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:110,columnNumber:95},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:110,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:107,columnNumber:7},this),e.jsxDEV("div",{className:"pl-3.5 flex items-center gap-1 overflow-hidden",children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:112,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:106,columnNumber:5},this)}function g({to:a,icon:o,title:t}){const r=G();return e.jsxDEV("button",{onClick:()=>r(a),className:"text-text-quaternary hover:text-accent transition-colors",title:t,children:e.jsxDEV(o,{className:"w-2.5 h-2.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:125,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:120,columnNumber:5},this)}function X({appIds:a,selected:o,onSelect:t}){const[r,i]=c.useState(!1),n=c.useRef(null);return c.useEffect(()=>{if(!r)return;const m=l=>{n.current&&!n.current.contains(l.target)&&i(!1)};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[r]),a.length<=1?null:e.jsxDEV("div",{className:"relative mb-3 -mt-2",ref:n,children:[e.jsxDEV("button",{onClick:()=>i(m=>!m),className:"flex items-center gap-1 px-2 py-0.5 text-[10px] rounded bg-accent/10 text-accent hover:bg-accent/20 transition-colors",children:[o,e.jsxDEV("svg",{className:`w-2.5 h-2.5 transition-transform ${r?"rotate-180":""}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:159,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:158,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:153,columnNumber:7},this),r&&e.jsxDEV("div",{className:"absolute top-full left-0 mt-1 bg-surface-raised border border-surface-border rounded-md shadow-lg z-30 py-1 min-w-[120px]",children:a.map(m=>e.jsxDEV("button",{onClick:()=>{t(m),i(!1)},className:`w-full text-left px-3 py-1.5 text-[11px] transition-colors ${o===m?"text-accent bg-accent/5":"text-text-secondary hover:bg-surface-hover"}`,children:m},m,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:165,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:163,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:152,columnNumber:5},this)}function fe({event:a}){const[o,t]=c.useState(!1);return e.jsxDEV("div",{children:[e.jsxDEV("button",{onClick:()=>t(!o),className:"w-full text-left px-1 py-2 hover:bg-surface-hover/50 rounded-md transition-colors flex items-center gap-2",children:[e.jsxDEV(pe,{className:`w-2.5 h-2.5 text-text-quaternary shrink-0 transition-transform ${o?"rotate-0":"-rotate-90"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:188,columnNumber:9},this),e.jsxDEV(ce,{topic:a.type},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:189,columnNumber:9},this),e.jsxDEV("span",{className:"text-[11px] text-text-secondary font-mono truncate flex-1",children:a.label||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:190,columnNumber:9},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0",children:e.jsxDEV(P,{date:a.timestamp,format:"time"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:191,columnNumber:69},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:191,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:187,columnNumber:7},this),o&&e.jsxDEV("div",{className:"pl-5 pb-2",children:e.jsxDEV(ae,{data:a.data,defaultCollapsed:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:195,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:194,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:186,columnNumber:5},this)}function Se(){var $,q,A,F,L;const a=G(),{user:o}=Z(),[t,r]=ue(),i=t.get("pipelinenamespace")||"longtail",n=t.get("durablenamespace")||"durable",m=c.useCallback((s,E)=>{r(Y=>{const W=new URLSearchParams(Y);return W.set(s,E),W},{replace:!1})},[r]);me(),le(),ne();const l=ie({limit:5}),b=oe({limit:5,sort_by:"updated_at",order:"desc",namespace:n}),{data:d}=re(),N=((d==null?void 0:d.apps)??[]).map(s=>s.appId),v=N,D=N,H=te({limit:5,app_id:i,sort_by:"updated_at",order:"desc"}),j=I({status:"pending",limit:5,sort_by:"updated_at",order:"desc"}),V=I({assigned_to:o==null?void 0:o.userId,status:"pending",limit:5,sort_by:"updated_at",order:"desc"}),{events:w,pulse:K}=Ne(),k=(($=l.data)==null?void 0:$.processes)??[],_=((q=b.data)==null?void 0:q.jobs)??[],C=((A=H.data)==null?void 0:A.jobs)??[],S=((F=j.data)==null?void 0:F.escalations)??[],R=((L=V.data)==null?void 0:L.escalations)??[];return e.jsxDEV("div",{children:[e.jsxDEV("h1",{className:"text-3xl font-light text-text-primary mb-10",children:"Recent Activity"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:240,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-x-14 gap-y-14",children:[e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:z,color:"text-emerald-400",docsHash:"#docs:dashboard.md:processes-overview",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>l.refetch(),isFetching:l.isFetching,apiPath:"/tasks/processes?limit=5"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:249,columnNumber:15},this),e.jsxDEV(g,{to:"/processes/all",icon:p,title:"All processes"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:250,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:248,columnNumber:13},this),children:"Certified Processes"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:247,columnNumber:11},this),e.jsxDEV("div",{className:"mb-3 -mt-2",children:e.jsxDEV("span",{className:"px-2 py-0.5 text-[10px] rounded text-text-quaternary uppercase tracking-widest",children:"all namespaces"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:256,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:255,columnNumber:11},this),k.length===0?e.jsxDEV(h,{icon:z,text:"No recent processes"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:259,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:k.map(s=>e.jsxDEV(y,{dot:(s.task_count??0)>0&&(s.completed??0)>=(s.task_count??0)?"bg-status-success":(s.escalated??0)>0?"border border-status-error":"bg-status-active",pill:e.jsxDEV(e.Fragment,{children:(s.workflow_types??[s.workflow_type]).filter(Boolean).map(E=>e.jsxDEV(x,{type:E,size:"xs"},E,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:266,columnNumber:104},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:266,columnNumber:25},this),id:s.origin_id,date:s.last_activity??s.started_at,onClick:()=>a(`/processes/detail/${s.origin_id}`)},s.origin_id,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:263,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:261,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:246,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:B,color:"text-blue-400",docsHash:"#docs:dashboard.md:durable-executions",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>b.refetch(),isFetching:b.isFetching,apiPath:`/workflow-states/jobs?namespace=${n}&limit=5`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:280,columnNumber:15},this),e.jsxDEV(g,{to:"/workflows/executions",icon:p,title:"All durable executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:281,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:279,columnNumber:13},this),children:"Durable Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:278,columnNumber:11},this),e.jsxDEV(X,{appIds:v,selected:n,onSelect:s=>m("durablenamespace",s)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:286,columnNumber:11},this),_.length===0?e.jsxDEV(h,{icon:B,text:"No recent executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:288,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:_.map(s=>e.jsxDEV(y,{dot:U(s.status),pill:e.jsxDEV(x,{type:s.entity||s.type||"workflow",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:295,columnNumber:25},this),id:s.workflow_id,date:s.updated_at??s.created_at,onClick:()=>a(`/workflows/executions/${s.workflow_id}`)},s.workflow_id,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:292,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:290,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:277,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:M,color:"text-violet-400",docsHash:"#docs:dashboard.md:mcp-pipeline-tools",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>H.refetch(),isFetching:H.isFetching,apiPath:`/mcp-runs?app_id=${i}&limit=5`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:309,columnNumber:15},this),e.jsxDEV(g,{to:"/mcp/executions",icon:p,title:"All pipeline executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:310,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:308,columnNumber:13},this),children:"Pipeline Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:307,columnNumber:11},this),e.jsxDEV(X,{appIds:D,selected:i,onSelect:s=>m("pipelinenamespace",s)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:315,columnNumber:11},this),C.length===0?e.jsxDEV(h,{icon:M,text:"No recent pipeline runs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:317,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:C.map(s=>e.jsxDEV(y,{dot:U(s.status),pill:e.jsxDEV(x,{type:s.entity||s.workflow_name||"pipeline",variant:"pipeline",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:324,columnNumber:25},this),id:s.workflow_id,date:s.updated_at??s.created_at,onClick:()=>a(`/mcp/executions/${s.workflow_id}?namespace=${i}`)},s.workflow_id,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:321,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:319,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:306,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:243,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-x-14 mt-14",children:[e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:Q,color:"text-amber-400",docsHash:"#docs:dashboard.md:all-escalations",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>j.refetch(),isFetching:j.isFetching,apiPath:"/escalations?status=pending&limit=5&sort_by=priority&order=asc"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:342,columnNumber:15},this),e.jsxDEV(g,{to:"/escalations/available",icon:p,title:"All available escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:343,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:341,columnNumber:13},this),children:"All Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:340,columnNumber:11},this),S.length===0?e.jsxDEV(h,{icon:Q,text:"No pending escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:349,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:S.map(s=>e.jsxDEV("button",{onClick:()=>a(`/escalations/detail/${s.id}`),className:"w-full text-left hover:bg-surface-hover/50 rounded-md px-1 py-1.5 transition-colors",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsxDEV("span",{className:"text-[9px] text-text-quaternary font-medium shrink-0",children:["P",s.priority??2]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:359,columnNumber:21},this),e.jsxDEV("span",{className:"text-[12px] text-text-primary truncate flex-1 max-w-[65%]",children:s.description||s.subtype||s.type},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:360,columnNumber:21},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0 ml-auto",children:e.jsxDEV(P,{date:s.updated_at??s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:361,columnNumber:89},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:361,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:358,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-2 pl-5",children:[e.jsxDEV(x,{type:s.type||"unknown",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:364,columnNumber:21},this),e.jsxDEV("span",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:365,columnNumber:21},this),e.jsxDEV(T,{role:s.role},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:366,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:363,columnNumber:19},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:353,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:351,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:339,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:J,color:"text-orange-400",docsHash:"#docs:dashboard.md:escalations-overview",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(f,{onRefresh:()=>V.refetch(),isFetching:V.isFetching,apiPath:`/escalations?assigned_to=${(o==null?void 0:o.userId)??""}&status=pending&limit=5`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:378,columnNumber:15},this),e.jsxDEV(g,{to:"/escalations/queue",icon:p,title:"My escalation queue"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:379,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:377,columnNumber:13},this),children:"My Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:376,columnNumber:11},this),R.length===0?e.jsxDEV(h,{icon:J,text:"No assigned escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:385,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-1",children:R.map(s=>e.jsxDEV("button",{onClick:()=>a(`/escalations/detail/${s.id}`),className:"w-full text-left hover:bg-surface-hover/50 rounded-md px-1 py-1.5 transition-colors",children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsxDEV("span",{className:"text-[9px] text-text-quaternary font-medium shrink-0",children:["P",s.priority??2]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:395,columnNumber:21},this),e.jsxDEV("span",{className:"text-[12px] text-text-primary truncate flex-1 max-w-[65%]",children:s.description||s.subtype||s.type},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:396,columnNumber:21},this),e.jsxDEV("span",{className:"text-[10px] text-text-quaternary shrink-0 ml-auto",children:e.jsxDEV(P,{date:s.updated_at??s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:397,columnNumber:89},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:397,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:394,columnNumber:19},this),e.jsxDEV("div",{className:"flex items-center gap-2 pl-5",children:[e.jsxDEV(x,{type:s.type||"unknown",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:400,columnNumber:21},this),e.jsxDEV("span",{className:"flex-1"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:401,columnNumber:21},this),e.jsxDEV(T,{role:s.role},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:402,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:399,columnNumber:19},this)]},s.id,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:389,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:387,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:375,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV(u,{icon:O,color:"text-emerald-400",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full transition-colors duration-500 ${K?"bg-emerald-400":"bg-zinc-600"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:415,columnNumber:17},this),e.jsxDEV("button",{onClick:()=>{const s=document.querySelector('[title="Fullscreen"]');s==null||s.click()},className:"text-text-quaternary hover:text-accent transition-colors",title:"View all events",children:e.jsxDEV(p,{className:"w-2.5 h-2.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:421,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:416,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:414,columnNumber:15},this),children:"Event Stream"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:412,columnNumber:11},this),w.length===0?e.jsxDEV(h,{icon:O,text:"Events appear here in real time"},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:429,columnNumber:13},this):e.jsxDEV("div",{className:"divide-y divide-surface-border/20",children:w.map(s=>e.jsxDEV(fe,{event:s},s.id,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:433,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:431,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:411,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:336,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/home/HomePage.tsx",lineNumber:239,columnNumber:5},this)}export{Se as HomePage};
2
+ //# sourceMappingURL=HomePage-BuZkdXZt.js.map