@hotmeshio/long-tail 0.8.0 → 0.8.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 (332) hide show
  1. package/dashboard/dist/assets/AdminDashboard-Ck5-jV9T.js +2 -0
  2. package/dashboard/dist/assets/{AdminDashboard-9JLg41f-.js.map → AdminDashboard-Ck5-jV9T.js.map} +1 -1
  3. package/dashboard/dist/assets/AgentConfigPage-DFiXRBWs.js +16 -0
  4. package/dashboard/dist/assets/AgentConfigPage-DFiXRBWs.js.map +1 -0
  5. package/dashboard/dist/assets/AgentDetailPage-BBgM_pMe.js +4 -0
  6. package/dashboard/dist/assets/AgentDetailPage-BBgM_pMe.js.map +1 -0
  7. package/dashboard/dist/assets/AgentsPage-DxwFuedf.js +2 -0
  8. package/dashboard/dist/assets/AgentsPage-DxwFuedf.js.map +1 -0
  9. package/dashboard/dist/assets/AvailableEscalationsPage-DNQbeIcn.js +2 -0
  10. package/dashboard/dist/assets/{AvailableEscalationsPage-CoZ4Lufr.js.map → AvailableEscalationsPage-DNQbeIcn.js.map} +1 -1
  11. package/dashboard/dist/assets/BotPicker-mqwKVOE3.js +2 -0
  12. package/dashboard/dist/assets/{BotPicker-xGUCxJo-.js.map → BotPicker-mqwKVOE3.js.map} +1 -1
  13. package/dashboard/dist/assets/CapabilitiesPage-Biffm0kW.js +2 -0
  14. package/dashboard/dist/assets/CapabilitiesPage-Biffm0kW.js.map +1 -0
  15. package/dashboard/dist/assets/CollapsibleSection-Bn6Ks79X.js +2 -0
  16. package/dashboard/dist/assets/{CollapsibleSection-CXMPecjj.js.map → CollapsibleSection-Bn6Ks79X.js.map} +1 -1
  17. package/dashboard/dist/assets/ConfirmDeleteModal-no0-c_1G.js +2 -0
  18. package/dashboard/dist/assets/{ConfirmDeleteModal-D9_1b4MW.js.map → ConfirmDeleteModal-no0-c_1G.js.map} +1 -1
  19. package/dashboard/dist/assets/CopyableId-DS6IDMIX.js +2 -0
  20. package/dashboard/dist/assets/{CopyableId-blg-gZvT.js.map → CopyableId-DS6IDMIX.js.map} +1 -1
  21. package/dashboard/dist/assets/CredentialsPage-C3NyncEB.js +2 -0
  22. package/dashboard/dist/assets/CredentialsPage-C3NyncEB.js.map +1 -0
  23. package/dashboard/dist/assets/CronLabel-DQWBx57H.js +2 -0
  24. package/dashboard/dist/assets/CronLabel-DQWBx57H.js.map +1 -0
  25. package/dashboard/dist/assets/CustomDurationPicker-DV42oZ1G.js +2 -0
  26. package/dashboard/dist/assets/{CustomDurationPicker-id6Tq64R.js.map → CustomDurationPicker-DV42oZ1G.js.map} +1 -1
  27. package/dashboard/dist/assets/DataTable-Bf4dgxll.js +2 -0
  28. package/dashboard/dist/assets/{DataTable-ZWgVQg7F.js.map → DataTable-Bf4dgxll.js.map} +1 -1
  29. package/dashboard/dist/assets/DropZone-CTSXBb3c.js +2 -0
  30. package/dashboard/dist/assets/{DropZone-CZDmNBn-.js.map → DropZone-CTSXBb3c.js.map} +1 -1
  31. package/dashboard/dist/assets/ElapsedCell-roy4G5SQ.js +2 -0
  32. package/dashboard/dist/assets/{ElapsedCell-B8TrnyT5.js.map → ElapsedCell-roy4G5SQ.js.map} +1 -1
  33. package/dashboard/dist/assets/EmptyState-CLVm9KmA.js +2 -0
  34. package/dashboard/dist/assets/{EmptyState-BcsfPq9T.js.map → EmptyState-CLVm9KmA.js.map} +1 -1
  35. package/dashboard/dist/assets/EscalationSchemaPage-DulCCxea.js +9 -0
  36. package/dashboard/dist/assets/EscalationSchemaPage-DulCCxea.js.map +1 -0
  37. package/dashboard/dist/assets/EscalationsOverview-DDwxn_mT.js +2 -0
  38. package/dashboard/dist/assets/{EscalationsOverview-CjLyujJ3.js.map → EscalationsOverview-DDwxn_mT.js.map} +1 -1
  39. package/dashboard/dist/assets/EventTable-BaLNvCew.js +2 -0
  40. package/dashboard/dist/assets/EventTable-BaLNvCew.js.map +1 -0
  41. package/dashboard/dist/assets/FilterBar-DEAbNQqp.js +2 -0
  42. package/dashboard/dist/assets/FilterBar-DEAbNQqp.js.map +1 -0
  43. package/dashboard/dist/assets/GraphInvokePage-BmM8r0R3.js +2 -0
  44. package/dashboard/dist/assets/GraphInvokePage-BmM8r0R3.js.map +1 -0
  45. package/dashboard/dist/assets/HomePage-Ds3PzWWr.js +2 -0
  46. package/dashboard/dist/assets/HomePage-Ds3PzWWr.js.map +1 -0
  47. package/dashboard/dist/assets/ListToolbar-Dviaskni.js +2 -0
  48. package/dashboard/dist/assets/{ListToolbar--FkPpYDY.js.map → ListToolbar-Dviaskni.js.map} +1 -1
  49. package/dashboard/dist/assets/McpOverview-BBm66wbF.js +2 -0
  50. package/dashboard/dist/assets/{McpOverview-CtAFXv-T.js.map → McpOverview-BBm66wbF.js.map} +1 -1
  51. package/dashboard/dist/assets/McpQueryDetailPage-B6GJOMcz.js +5 -0
  52. package/dashboard/dist/assets/McpQueryDetailPage-B6GJOMcz.js.map +1 -0
  53. package/dashboard/dist/assets/McpQueryPage-C-8nIdBL.js +2 -0
  54. package/dashboard/dist/assets/McpQueryPage-C-8nIdBL.js.map +1 -0
  55. package/dashboard/dist/assets/McpRunDetailPage-CSq_0qqi.js +2 -0
  56. package/dashboard/dist/assets/{McpRunDetailPage-BYIxBcA7.js.map → McpRunDetailPage-CSq_0qqi.js.map} +1 -1
  57. package/dashboard/dist/assets/McpRunsPage-BdK8ahX7.js +2 -0
  58. package/dashboard/dist/assets/McpRunsPage-BdK8ahX7.js.map +1 -0
  59. package/dashboard/dist/assets/Modal-C6HI6btY.js +2 -0
  60. package/dashboard/dist/assets/{Modal-CSrxpXeM.js.map → Modal-C6HI6btY.js.map} +1 -1
  61. package/dashboard/dist/assets/NamespacePill-eGsbJBFa.js +2 -0
  62. package/dashboard/dist/assets/{NamespacePill-DlqBTvFR.js.map → NamespacePill-eGsbJBFa.js.map} +1 -1
  63. package/dashboard/dist/assets/OperationsPage-DODPFmf2.js +2 -0
  64. package/dashboard/dist/assets/OperationsPage-DODPFmf2.js.map +1 -0
  65. package/dashboard/dist/assets/OperatorDashboard-BbmgsOmQ.js +2 -0
  66. package/dashboard/dist/assets/{OperatorDashboard-DMQwodfo.js.map → OperatorDashboard-BbmgsOmQ.js.map} +1 -1
  67. package/dashboard/dist/assets/PageHeader-DcgGV0Y2.js +2 -0
  68. package/dashboard/dist/assets/{PageHeader-CFta2VaS.js.map → PageHeader-DcgGV0Y2.js.map} +1 -1
  69. package/dashboard/dist/assets/PageHeaderWithStats-Cf8TYFRh.js +2 -0
  70. package/dashboard/dist/assets/PageHeaderWithStats-Cf8TYFRh.js.map +1 -0
  71. package/dashboard/dist/assets/PriorityBadge-a7u8C9uY.js +2 -0
  72. package/dashboard/dist/assets/{PriorityBadge-B4ykBH7f.js.map → PriorityBadge-a7u8C9uY.js.map} +1 -1
  73. package/dashboard/dist/assets/ProcessDetailPage-D80w44rV.js +2 -0
  74. package/dashboard/dist/assets/ProcessDetailPage-D80w44rV.js.map +1 -0
  75. package/dashboard/dist/assets/ProcessesListPage-BjW5xUkv.js +2 -0
  76. package/dashboard/dist/assets/{ProcessesListPage-BVtkWVLY.js.map → ProcessesListPage-BjW5xUkv.js.map} +1 -1
  77. package/dashboard/dist/assets/RoleDetailPage-oahg0cdT.js +11 -0
  78. package/dashboard/dist/assets/RoleDetailPage-oahg0cdT.js.map +1 -0
  79. package/dashboard/dist/assets/RolePill-BAeaQUXX.js +2 -0
  80. package/dashboard/dist/assets/RolePill-BAeaQUXX.js.map +1 -0
  81. package/dashboard/dist/assets/RolesPage-BI1Xtqq_.js +2 -0
  82. package/dashboard/dist/assets/RolesPage-BI1Xtqq_.js.map +1 -0
  83. package/dashboard/dist/assets/RowActions--m4F6GW8.js +2 -0
  84. package/dashboard/dist/assets/{RowActions-BA9L9djf.js.map → RowActions--m4F6GW8.js.map} +1 -1
  85. package/dashboard/dist/assets/RunAsSelector-DiGzSfiG.js +2 -0
  86. package/dashboard/dist/assets/{RunAsSelector-Cc1i017Z.js.map → RunAsSelector-DiGzSfiG.js.map} +1 -1
  87. package/dashboard/dist/assets/StatCard-DCPGFzCv.js +2 -0
  88. package/dashboard/dist/assets/StatCard-DCPGFzCv.js.map +1 -0
  89. package/dashboard/dist/assets/StatusBadge-mk-dJwPT.js +2 -0
  90. package/dashboard/dist/assets/{StatusBadge-D9MeQHrh.js.map → StatusBadge-mk-dJwPT.js.map} +1 -1
  91. package/dashboard/dist/assets/StickyPagination-Clm9H840.js +2 -0
  92. package/dashboard/dist/assets/{StickyPagination-GQKFFTjL.js.map → StickyPagination-Clm9H840.js.map} +1 -1
  93. package/dashboard/dist/assets/StreamMessageDetail-Bikvs1Cz.js +2 -0
  94. package/dashboard/dist/assets/StreamMessageDetail-Bikvs1Cz.js.map +1 -0
  95. package/dashboard/dist/assets/SwimlaneTimeline-C9X3IVqI.js +2 -0
  96. package/dashboard/dist/assets/SwimlaneTimeline-C9X3IVqI.js.map +1 -0
  97. package/dashboard/dist/assets/TagInput-DmJLnghg.js +2 -0
  98. package/dashboard/dist/assets/{TagInput-CQg-TrV9.js.map → TagInput-DmJLnghg.js.map} +1 -1
  99. package/dashboard/dist/assets/TaskDetailPage-C0tbiUi7.js +2 -0
  100. package/dashboard/dist/assets/TaskDetailPage-C0tbiUi7.js.map +1 -0
  101. package/dashboard/dist/assets/TaskQueuePill--1OX6egx.js +2 -0
  102. package/dashboard/dist/assets/{TaskQueuePill-DyvtL8X4.js.map → TaskQueuePill--1OX6egx.js.map} +1 -1
  103. package/dashboard/dist/assets/TasksListPage-DcYV-GMA.js +2 -0
  104. package/dashboard/dist/assets/{TasksListPage-DpqevgTz.js.map → TasksListPage-DcYV-GMA.js.map} +1 -1
  105. package/dashboard/dist/assets/TimeAgo-pYn3T9IZ.js +2 -0
  106. package/dashboard/dist/assets/{TimeAgo-CftB8aJE.js.map → TimeAgo-pYn3T9IZ.js.map} +1 -1
  107. package/dashboard/dist/assets/TimestampCell-BPMCscic.js +2 -0
  108. package/dashboard/dist/assets/{TimestampCell-BSKj1jqT.js.map → TimestampCell-BPMCscic.js.map} +1 -1
  109. package/dashboard/dist/assets/ToolPill-BnF9lCUX.js +2 -0
  110. package/dashboard/dist/assets/{ToolPill-miuRcj1Q.js.map → ToolPill-BnF9lCUX.js.map} +1 -1
  111. package/dashboard/dist/assets/ToolTestPanel-Bw4z_Tya.js +2 -0
  112. package/dashboard/dist/assets/{ToolTestPanel-DVQICZUQ.js.map → ToolTestPanel-Bw4z_Tya.js.map} +1 -1
  113. package/dashboard/dist/assets/TopicDetailPage-CtFztOnn.js +9 -0
  114. package/dashboard/dist/assets/TopicDetailPage-CtFztOnn.js.map +1 -0
  115. package/dashboard/dist/assets/TopicsPage-BXdc6pAU.js +2 -0
  116. package/dashboard/dist/assets/TopicsPage-BXdc6pAU.js.map +1 -0
  117. package/dashboard/dist/assets/UserName-R96NG6xB.js +2 -0
  118. package/dashboard/dist/assets/{UserName-Ce9gvlT5.js.map → UserName-R96NG6xB.js.map} +1 -1
  119. package/dashboard/dist/assets/WorkflowExecutionPage-DmRJabMQ.js +2 -0
  120. package/dashboard/dist/assets/{WorkflowExecutionPage-BI9NzeaH.js.map → WorkflowExecutionPage-DmRJabMQ.js.map} +1 -1
  121. package/dashboard/dist/assets/WorkflowPill-Cc2MlYbB.js +2 -0
  122. package/dashboard/dist/assets/WorkflowPill-Cc2MlYbB.js.map +1 -0
  123. package/dashboard/dist/assets/WorkflowsDashboard-uLU5ZToY.js +2 -0
  124. package/dashboard/dist/assets/WorkflowsDashboard-uLU5ZToY.js.map +1 -0
  125. package/dashboard/dist/assets/WorkflowsOverview-BhgE0RS8.js +2 -0
  126. package/dashboard/dist/assets/{WorkflowsOverview-CjBWlwlH.js.map → WorkflowsOverview-BhgE0RS8.js.map} +1 -1
  127. package/dashboard/dist/assets/YamlWorkflowDetailPage-CvIgB5y7.js +33 -0
  128. package/dashboard/dist/assets/{YamlWorkflowDetailPage-Ds5o1UK9.js.map → YamlWorkflowDetailPage-CvIgB5y7.js.map} +1 -1
  129. package/dashboard/dist/assets/YamlWorkflowsPage-DWnsgl2v.js +2 -0
  130. package/dashboard/dist/assets/{YamlWorkflowsPage-ChwvZS4Z.js.map → YamlWorkflowsPage-DWnsgl2v.js.map} +1 -1
  131. package/dashboard/dist/assets/{agents-A1U43853.js → agents-BpYMwrsB.js} +2 -2
  132. package/dashboard/dist/assets/{agents-A1U43853.js.map → agents-BpYMwrsB.js.map} +1 -1
  133. package/dashboard/dist/assets/{bots-CyzN6Uxi.js → bots-DI6Wqp5X.js} +2 -2
  134. package/dashboard/dist/assets/{bots-CyzN6Uxi.js.map → bots-DI6Wqp5X.js.map} +1 -1
  135. package/dashboard/dist/assets/capabilities-BKZZb8eM.js +2 -0
  136. package/dashboard/dist/assets/{capabilities-BE1X5FVI.js.map → capabilities-BKZZb8eM.js.map} +1 -1
  137. package/dashboard/dist/assets/{controlplane-BrwK_MT8.js → controlplane-Djshb7fm.js} +2 -2
  138. package/dashboard/dist/assets/{controlplane-BrwK_MT8.js.map → controlplane-Djshb7fm.js.map} +1 -1
  139. package/dashboard/dist/assets/escalation-D8mrXtjS.js +2 -0
  140. package/dashboard/dist/assets/{escalation-DDdt7UdU.js.map → escalation-D8mrXtjS.js.map} +1 -1
  141. package/dashboard/dist/assets/escalation-columns-CyLzgPkz.js +2 -0
  142. package/dashboard/dist/assets/escalation-columns-CyLzgPkz.js.map +1 -0
  143. package/dashboard/dist/assets/index-B5MAG4Uv.js +2 -0
  144. package/dashboard/dist/assets/{index-BNWKksZ6.js.map → index-B5MAG4Uv.js.map} +1 -1
  145. package/dashboard/dist/assets/index-BfxiRwk2.js +6 -0
  146. package/dashboard/dist/assets/index-BfxiRwk2.js.map +1 -0
  147. package/dashboard/dist/assets/index-C71I-f5G.js +2 -0
  148. package/dashboard/dist/assets/{index-BtrNxebh.js.map → index-C71I-f5G.js.map} +1 -1
  149. package/dashboard/dist/assets/index-CC4g-6QE.css +1 -0
  150. package/dashboard/dist/assets/index-CJb3dXku.js +2 -0
  151. package/dashboard/dist/assets/index-CJb3dXku.js.map +1 -0
  152. package/dashboard/dist/assets/index-CQtv2rj6.js +2 -0
  153. package/dashboard/dist/assets/index-CQtv2rj6.js.map +1 -0
  154. package/dashboard/dist/assets/index-CphzO7b8.js +2 -0
  155. package/dashboard/dist/assets/{index-D4U--3Xo.js.map → index-CphzO7b8.js.map} +1 -1
  156. package/dashboard/dist/assets/index-CwAmiy_j.js +2 -0
  157. package/dashboard/dist/assets/index-CwAmiy_j.js.map +1 -0
  158. package/dashboard/dist/assets/index-DgCS2Frb.js +281 -0
  159. package/dashboard/dist/assets/index-DgCS2Frb.js.map +1 -0
  160. package/dashboard/dist/assets/index-DkbnD-Te.js +2 -0
  161. package/dashboard/dist/assets/{index-C-rJQ-vB.js.map → index-DkbnD-Te.js.map} +1 -1
  162. package/dashboard/dist/assets/index-Y6yj36QR.js +9 -0
  163. package/dashboard/dist/assets/index-Y6yj36QR.js.map +1 -0
  164. package/dashboard/dist/assets/index-eshNd6NY.js +6 -0
  165. package/dashboard/dist/assets/{index-CGUBekEU.js.map → index-eshNd6NY.js.map} +1 -1
  166. package/dashboard/dist/assets/index-xn9fmkHC.js +2 -0
  167. package/dashboard/dist/assets/index-xn9fmkHC.js.map +1 -0
  168. package/dashboard/dist/assets/index-yxnQew1X.js +2 -0
  169. package/dashboard/dist/assets/index-yxnQew1X.js.map +1 -0
  170. package/dashboard/dist/assets/{knowledge-B3ZIRTeu.js → knowledge-C_1r0faY.js} +2 -2
  171. package/dashboard/dist/assets/{knowledge-B3ZIRTeu.js.map → knowledge-C_1r0faY.js.map} +1 -1
  172. package/dashboard/dist/assets/{mcp-BJjWiHdc.js → mcp-BtG54ZAx.js} +2 -2
  173. package/dashboard/dist/assets/{mcp-BJjWiHdc.js.map → mcp-BtG54ZAx.js.map} +1 -1
  174. package/dashboard/dist/assets/{mcp-query-ksjBztwq.js → mcp-query-CSdQWxmv.js} +2 -2
  175. package/dashboard/dist/assets/{mcp-query-ksjBztwq.js.map → mcp-query-CSdQWxmv.js.map} +1 -1
  176. package/dashboard/dist/assets/{pipelines-DT1astmP.js → pipelines-DVkwxN64.js} +2 -2
  177. package/dashboard/dist/assets/{pipelines-DT1astmP.js.map → pipelines-DVkwxN64.js.map} +1 -1
  178. package/dashboard/dist/assets/{roles-UboiQxXT.js → roles-CpRcUIMm.js} +2 -2
  179. package/dashboard/dist/assets/{roles-UboiQxXT.js.map → roles-CpRcUIMm.js.map} +1 -1
  180. package/dashboard/dist/assets/{tasks-aL0K8WW3.js → tasks-DNdvW5H6.js} +2 -2
  181. package/dashboard/dist/assets/{tasks-aL0K8WW3.js.map → tasks-DNdvW5H6.js.map} +1 -1
  182. package/dashboard/dist/assets/{topics-CZO06VJl.js → topics-DNC77Chw.js} +2 -2
  183. package/dashboard/dist/assets/{topics-CZO06VJl.js.map → topics-DNC77Chw.js.map} +1 -1
  184. package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js → useCollapsedSections-CGNA5oKV.js} +2 -2
  185. package/dashboard/dist/assets/{useCollapsedSections-BU5HULGs.js.map → useCollapsedSections-CGNA5oKV.js.map} +1 -1
  186. package/dashboard/dist/assets/{useDebouncedValue-BA5S7V54.js → useDebouncedValue-DmL3uNt_.js} +2 -2
  187. package/dashboard/dist/assets/{useDebouncedValue-BA5S7V54.js.map → useDebouncedValue-DmL3uNt_.js.map} +1 -1
  188. package/dashboard/dist/assets/{useEventHooks-DlWkui_n.js → useEventHooks-CUUeBSH1.js} +2 -2
  189. package/dashboard/dist/assets/{useEventHooks-DlWkui_n.js.map → useEventHooks-CUUeBSH1.js.map} +1 -1
  190. package/dashboard/dist/assets/{useFilterParams-x-Dg0Vgz.js → useFilterParams-Ch-a71bE.js} +2 -2
  191. package/dashboard/dist/assets/{useFilterParams-x-Dg0Vgz.js.map → useFilterParams-Ch-a71bE.js.map} +1 -1
  192. package/dashboard/dist/assets/{useNamespace-BBzCmCIN.js → useNamespace-D-AjLnPK.js} +2 -2
  193. package/dashboard/dist/assets/{useNamespace-BBzCmCIN.js.map → useNamespace-D-AjLnPK.js.map} +1 -1
  194. package/dashboard/dist/assets/{useYamlActivityEvents-ZS6wRSSc.js → useYamlActivityEvents-DRdetOb_.js} +2 -2
  195. package/dashboard/dist/assets/{useYamlActivityEvents-ZS6wRSSc.js.map → useYamlActivityEvents-DRdetOb_.js.map} +1 -1
  196. package/dashboard/dist/assets/{users-Dzh04pRB.js → users-BUgdEsec.js} +2 -2
  197. package/dashboard/dist/assets/{users-Dzh04pRB.js.map → users-BUgdEsec.js.map} +1 -1
  198. package/dashboard/dist/assets/{vendor-icons-BaQqUm-e.js → vendor-icons-CNyYGNsk.js} +3 -3
  199. package/dashboard/dist/assets/{vendor-icons-BaQqUm-e.js.map → vendor-icons-CNyYGNsk.js.map} +1 -1
  200. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
  201. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
  202. package/dashboard/dist/assets/vendor-react-zA2lQFDs.js +26 -0
  203. package/dashboard/dist/assets/vendor-react-zA2lQFDs.js.map +1 -0
  204. package/dashboard/dist/assets/{workflows-BTkHs6VT.js → workflows-BfyR5VJt.js} +2 -2
  205. package/dashboard/dist/assets/{workflows-BTkHs6VT.js.map → workflows-BfyR5VJt.js.map} +1 -1
  206. package/dashboard/dist/assets/{yaml-workflows-Df8u3lgx.js → yaml-workflows-Bz7yEnhl.js} +2 -2
  207. package/dashboard/dist/assets/{yaml-workflows-Df8u3lgx.js.map → yaml-workflows-Bz7yEnhl.js.map} +1 -1
  208. package/dashboard/dist/index.html +5 -5
  209. package/package.json +1 -1
  210. package/dashboard/dist/assets/AdminDashboard-9JLg41f-.js +0 -2
  211. package/dashboard/dist/assets/AgentConfigPage-D5P1hcOc.js +0 -16
  212. package/dashboard/dist/assets/AgentConfigPage-D5P1hcOc.js.map +0 -1
  213. package/dashboard/dist/assets/AgentDetailPage-DrijeAV8.js +0 -4
  214. package/dashboard/dist/assets/AgentDetailPage-DrijeAV8.js.map +0 -1
  215. package/dashboard/dist/assets/AgentsPage-BW5d0JOt.js +0 -2
  216. package/dashboard/dist/assets/AgentsPage-BW5d0JOt.js.map +0 -1
  217. package/dashboard/dist/assets/AvailableEscalationsPage-CoZ4Lufr.js +0 -2
  218. package/dashboard/dist/assets/BotPicker-xGUCxJo-.js +0 -2
  219. package/dashboard/dist/assets/CapabilitiesPage-ChaRJiyg.js +0 -2
  220. package/dashboard/dist/assets/CapabilitiesPage-ChaRJiyg.js.map +0 -1
  221. package/dashboard/dist/assets/CollapsibleSection-CXMPecjj.js +0 -2
  222. package/dashboard/dist/assets/ConfirmDeleteModal-D9_1b4MW.js +0 -2
  223. package/dashboard/dist/assets/CopyableId-blg-gZvT.js +0 -2
  224. package/dashboard/dist/assets/CredentialsPage-BbdfZh1D.js +0 -2
  225. package/dashboard/dist/assets/CredentialsPage-BbdfZh1D.js.map +0 -1
  226. package/dashboard/dist/assets/CronLabel-CJUL50eO.js +0 -2
  227. package/dashboard/dist/assets/CronLabel-CJUL50eO.js.map +0 -1
  228. package/dashboard/dist/assets/CustomDurationPicker-id6Tq64R.js +0 -2
  229. package/dashboard/dist/assets/DataTable-ZWgVQg7F.js +0 -2
  230. package/dashboard/dist/assets/DropZone-CZDmNBn-.js +0 -2
  231. package/dashboard/dist/assets/ElapsedCell-B8TrnyT5.js +0 -2
  232. package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +0 -2
  233. package/dashboard/dist/assets/EscalationSchemaPage-C6UuZgCD.js +0 -9
  234. package/dashboard/dist/assets/EscalationSchemaPage-C6UuZgCD.js.map +0 -1
  235. package/dashboard/dist/assets/EscalationsOverview-CjLyujJ3.js +0 -2
  236. package/dashboard/dist/assets/EventTable-D_rNmyGG.js +0 -2
  237. package/dashboard/dist/assets/EventTable-D_rNmyGG.js.map +0 -1
  238. package/dashboard/dist/assets/FilterBar-BQ2JGg8U.js +0 -2
  239. package/dashboard/dist/assets/FilterBar-BQ2JGg8U.js.map +0 -1
  240. package/dashboard/dist/assets/GraphInvokePage-BMyrTnI6.js +0 -2
  241. package/dashboard/dist/assets/GraphInvokePage-BMyrTnI6.js.map +0 -1
  242. package/dashboard/dist/assets/HomePage-MBv6pwk4.js +0 -2
  243. package/dashboard/dist/assets/HomePage-MBv6pwk4.js.map +0 -1
  244. package/dashboard/dist/assets/ListToolbar--FkPpYDY.js +0 -2
  245. package/dashboard/dist/assets/McpOverview-CtAFXv-T.js +0 -2
  246. package/dashboard/dist/assets/McpQueryDetailPage-5Jzz2q2g.js +0 -5
  247. package/dashboard/dist/assets/McpQueryDetailPage-5Jzz2q2g.js.map +0 -1
  248. package/dashboard/dist/assets/McpQueryPage-DveeRF5I.js +0 -2
  249. package/dashboard/dist/assets/McpQueryPage-DveeRF5I.js.map +0 -1
  250. package/dashboard/dist/assets/McpRunDetailPage-BYIxBcA7.js +0 -2
  251. package/dashboard/dist/assets/McpRunsPage-Cgke6ask.js +0 -2
  252. package/dashboard/dist/assets/McpRunsPage-Cgke6ask.js.map +0 -1
  253. package/dashboard/dist/assets/Modal-CSrxpXeM.js +0 -2
  254. package/dashboard/dist/assets/NamespacePill-DlqBTvFR.js +0 -2
  255. package/dashboard/dist/assets/OperationsPage-D2i7xrAI.js +0 -2
  256. package/dashboard/dist/assets/OperationsPage-D2i7xrAI.js.map +0 -1
  257. package/dashboard/dist/assets/OperatorDashboard-DMQwodfo.js +0 -2
  258. package/dashboard/dist/assets/PageHeader-CFta2VaS.js +0 -2
  259. package/dashboard/dist/assets/PageHeaderWithStats-CcVAji-7.js +0 -2
  260. package/dashboard/dist/assets/PageHeaderWithStats-CcVAji-7.js.map +0 -1
  261. package/dashboard/dist/assets/PriorityBadge-B4ykBH7f.js +0 -2
  262. package/dashboard/dist/assets/ProcessDetailPage-Dodrk5-z.js +0 -2
  263. package/dashboard/dist/assets/ProcessDetailPage-Dodrk5-z.js.map +0 -1
  264. package/dashboard/dist/assets/ProcessesListPage-BVtkWVLY.js +0 -2
  265. package/dashboard/dist/assets/RoleDetailPage-8NldZI49.js +0 -11
  266. package/dashboard/dist/assets/RoleDetailPage-8NldZI49.js.map +0 -1
  267. package/dashboard/dist/assets/RolePill-CXEyPMqb.js +0 -2
  268. package/dashboard/dist/assets/RolePill-CXEyPMqb.js.map +0 -1
  269. package/dashboard/dist/assets/RolesPage-BJBjtFNY.js +0 -2
  270. package/dashboard/dist/assets/RolesPage-BJBjtFNY.js.map +0 -1
  271. package/dashboard/dist/assets/RowActions-BA9L9djf.js +0 -2
  272. package/dashboard/dist/assets/RunAsSelector-Cc1i017Z.js +0 -2
  273. package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
  274. package/dashboard/dist/assets/StatCard-DlgF0CJC.js.map +0 -1
  275. package/dashboard/dist/assets/StatusBadge-D9MeQHrh.js +0 -2
  276. package/dashboard/dist/assets/StickyPagination-GQKFFTjL.js +0 -2
  277. package/dashboard/dist/assets/StreamMessageDetail-BYzfjWe_.js +0 -2
  278. package/dashboard/dist/assets/StreamMessageDetail-BYzfjWe_.js.map +0 -1
  279. package/dashboard/dist/assets/SwimlaneTimeline-DLVmRrd-.js +0 -2
  280. package/dashboard/dist/assets/SwimlaneTimeline-DLVmRrd-.js.map +0 -1
  281. package/dashboard/dist/assets/TagInput-CQg-TrV9.js +0 -2
  282. package/dashboard/dist/assets/TaskDetailPage-HzQpzp6D.js +0 -2
  283. package/dashboard/dist/assets/TaskDetailPage-HzQpzp6D.js.map +0 -1
  284. package/dashboard/dist/assets/TaskQueuePill-DyvtL8X4.js +0 -2
  285. package/dashboard/dist/assets/TasksListPage-DpqevgTz.js +0 -2
  286. package/dashboard/dist/assets/TimeAgo-CftB8aJE.js +0 -2
  287. package/dashboard/dist/assets/TimestampCell-BSKj1jqT.js +0 -2
  288. package/dashboard/dist/assets/ToolPill-miuRcj1Q.js +0 -2
  289. package/dashboard/dist/assets/ToolTestPanel-DVQICZUQ.js +0 -2
  290. package/dashboard/dist/assets/TopicDetailPage-B2LAQDEg.js +0 -9
  291. package/dashboard/dist/assets/TopicDetailPage-B2LAQDEg.js.map +0 -1
  292. package/dashboard/dist/assets/TopicsPage-SwPAnN2C.js +0 -2
  293. package/dashboard/dist/assets/TopicsPage-SwPAnN2C.js.map +0 -1
  294. package/dashboard/dist/assets/UserName-Ce9gvlT5.js +0 -2
  295. package/dashboard/dist/assets/WorkflowExecutionPage-BI9NzeaH.js +0 -2
  296. package/dashboard/dist/assets/WorkflowPill-BuNkWUVM.js +0 -2
  297. package/dashboard/dist/assets/WorkflowPill-BuNkWUVM.js.map +0 -1
  298. package/dashboard/dist/assets/WorkflowsDashboard-CvWSgQdE.js +0 -2
  299. package/dashboard/dist/assets/WorkflowsDashboard-CvWSgQdE.js.map +0 -1
  300. package/dashboard/dist/assets/WorkflowsOverview-CjBWlwlH.js +0 -2
  301. package/dashboard/dist/assets/YamlWorkflowDetailPage-Ds5o1UK9.js +0 -33
  302. package/dashboard/dist/assets/YamlWorkflowsPage-ChwvZS4Z.js +0 -2
  303. package/dashboard/dist/assets/capabilities-BE1X5FVI.js +0 -2
  304. package/dashboard/dist/assets/escalation-DDdt7UdU.js +0 -2
  305. package/dashboard/dist/assets/escalation-columns-D_zFY1zF.js +0 -2
  306. package/dashboard/dist/assets/escalation-columns-D_zFY1zF.js.map +0 -1
  307. package/dashboard/dist/assets/index-6MALVAEY.js +0 -2
  308. package/dashboard/dist/assets/index-6MALVAEY.js.map +0 -1
  309. package/dashboard/dist/assets/index-BNWKksZ6.js +0 -2
  310. package/dashboard/dist/assets/index-BtrNxebh.js +0 -2
  311. package/dashboard/dist/assets/index-C-rJQ-vB.js +0 -2
  312. package/dashboard/dist/assets/index-CGUBekEU.js +0 -6
  313. package/dashboard/dist/assets/index-CKXSKsVZ.js +0 -63
  314. package/dashboard/dist/assets/index-CKXSKsVZ.js.map +0 -1
  315. package/dashboard/dist/assets/index-CZ6-l8_0.css +0 -1
  316. package/dashboard/dist/assets/index-D2dDPGNk.js +0 -2
  317. package/dashboard/dist/assets/index-D2dDPGNk.js.map +0 -1
  318. package/dashboard/dist/assets/index-D4U--3Xo.js +0 -2
  319. package/dashboard/dist/assets/index-D4gAsCGh.js +0 -2
  320. package/dashboard/dist/assets/index-D4gAsCGh.js.map +0 -1
  321. package/dashboard/dist/assets/index-DEXouwBQ.js +0 -2
  322. package/dashboard/dist/assets/index-DEXouwBQ.js.map +0 -1
  323. package/dashboard/dist/assets/index-NnGsWGNS.js +0 -2
  324. package/dashboard/dist/assets/index-NnGsWGNS.js.map +0 -1
  325. package/dashboard/dist/assets/index-U27KBbTV.js +0 -9
  326. package/dashboard/dist/assets/index-U27KBbTV.js.map +0 -1
  327. package/dashboard/dist/assets/index-fwHQSJCp.js +0 -6
  328. package/dashboard/dist/assets/index-fwHQSJCp.js.map +0 -1
  329. package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
  330. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
  331. package/dashboard/dist/assets/vendor-react-CXumBFUA.js +0 -22
  332. package/dashboard/dist/assets/vendor-react-CXumBFUA.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./index-DgCS2Frb.js";import{P}from"./PageHeader-DcgGV0Y2.js";import{D as k}from"./DataTable-Bf4dgxll.js";import{F as D,b as N}from"./FilterBar-DEAbNQqp.js";import{S as w}from"./StickyPagination-Clm9H840.js";import{L as M}from"./ListToolbar-Dviaskni.js";import{b as E}from"./api-path-u2Jf9QXS.js";import{T as h}from"./TimestampCell-BPMCscic.js";import{E as Q}from"./ElapsedCell-roy4G5SQ.js";import{W as j}from"./WorkflowPill-Cc2MlYbB.js";import{E as V}from"./EmptyState-CLVm9KmA.js";import{R as c}from"./RowActions--m4F6GW8.js";import{u as _}from"./useFilterParams-Ch-a71bE.js";import{b as C}from"./useEventHooks-CUUeBSH1.js";import{u as $}from"./mcp-query-CSdQWxmv.js";import{c as f,v as W,w as g,x,y as S,z as q}from"./vendor-icons-CNyYGNsk.js";import{c as T}from"./vendor-react-zA2lQFDs.js";import"./vendor-query-DLp59M9_.js";const B={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"};function m(a){return a.status==="completed"||Number(a.status)===0?"completed":a.is_live?"in_progress":"failed"}function F(a){return[{key:"workflow_id",label:"Workflow ID / Type",render:s=>{const t=m(s),r=B[t]??"bg-status-pending",l=t==="in_progress"?" animate-pulse":"";return e.jsxDEV("div",{className:"flex items-start gap-2 min-w-0",children:[e.jsxDEV("span",{className:`w-[9px] h-[9px] shrink-0 rounded-full dot-ring mt-1 ${r}${l}`,title:t},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:44,columnNumber:13},this),e.jsxDEV("div",{className:"min-w-0",children:[e.jsxDEV("span",{className:"font-mono text-xs text-text-primary truncate block",children:s.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:46,columnNumber:15},this),e.jsxDEV("div",{className:"mt-0.5",children:e.jsxDEV(j,{type:s.entity||"unknown"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:50,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:49,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:45,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:43,columnNumber:11},this)}},{key:"created_at",label:"Created",render:s=>e.jsxDEV(h,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:60,columnNumber:24},this),className:"w-40",sortable:!0},{key:"updated_at",label:"Updated",render:s=>e.jsxDEV(h,{date:s.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:67,columnNumber:24},this),className:"w-40",sortable:!0},{key:"duration",label:"Duration",render:s=>{const t=m(s);return e.jsxDEV(Q,{startDate:s.created_at,endDate:t==="in_progress"?null:s.updated_at,isLive:t==="in_progress"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:77,columnNumber:11},this)},className:"w-28"},{key:"actions",label:"",className:"w-28",render:s=>{const r=m(s)==="completed",l=s.entity==="mcpWorkflowBuilder";if(s.entity==="mcpWorkflowPlanner"){const i=s.set_id?`/mcp/queries/${s.workflow_id}?mode=plan&set_id=${s.set_id}`:`/mcp/queries/${s.workflow_id}?mode=plan`;return e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:p=>{p.stopPropagation(),a(`${i}&step=1`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all",title:"Plan",children:e.jsxDEV(W,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:107,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:102,columnNumber:15},this),e.jsxDEV("button",{onClick:p=>{p.stopPropagation(),a(`${i}&step=2`)},className:`opacity-0 group-hover/row:opacity-100 transition-all ${r?"text-text-tertiary hover:text-status-success":"text-text-tertiary/30 cursor-not-allowed"}`,title:r?"Build":"Planning...",disabled:!r,children:e.jsxDEV(g,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:115,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:109,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:101,columnNumber:13},this)}return l?e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),a(`/mcp/queries/${s.workflow_id}?mode=builder&step=1`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all",title:"Describe",children:e.jsxDEV(x,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:129,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:124,columnNumber:15},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),a(`/mcp/queries/${s.workflow_id}?mode=builder&step=2`)},className:`opacity-0 group-hover/row:opacity-100 transition-all ${r?"text-text-tertiary hover:text-status-success":"text-text-tertiary/30 cursor-not-allowed"}`,title:r?"Profile":"Building...",disabled:!r,children:e.jsxDEV(S,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:137,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:131,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:123,columnNumber:13},this):e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),a(`/mcp/queries/${s.workflow_id}?step=1`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all",title:"Describe",children:e.jsxDEV(x,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:150,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:145,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),a(`/mcp/queries/${s.workflow_id}?step=2`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-status-warning transition-all",title:"Discover",children:e.jsxDEV(q,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:157,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:152,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),a(`/mcp/queries/${s.workflow_id}?step=3`)},className:`opacity-0 group-hover/row:opacity-100 transition-all ${r?"text-text-tertiary hover:text-status-success":"text-text-tertiary/30 cursor-not-allowed"}`,title:r?"Compile":"Complete discovery first",disabled:!r,children:e.jsxDEV(g,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:165,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:159,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:144,columnNumber:11},this)}}]}function re(){const a=T(),s=F(a),{filters:t,setFilter:r,pagination:l,sort:u,setSort:i}=_({filters:{search:"",status:"",type:""},pageSize:20}),{data:p,isLoading:n,refetch:y}=$({limit:l.pageSize,offset:l.offset,search:t.search,status:t.status,entity:t.type||void 0});C();const d=(p==null?void 0:p.jobs)??[],b=(p==null?void 0:p.total)??0;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(P,{title:"MCP Tool Designer",docsHash:"#docs:dashboard.md:mcp-tool-designer",actions:e.jsxDEV("button",{onClick:()=>a("/mcp/queries/new"),className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(f,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:206,columnNumber:13},this),"Create New MCP Tool"]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:202,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:198,columnNumber:7},this),e.jsxDEV(D,{actions:e.jsxDEV(M,{onRefresh:()=>y(),apiPath:E("/workflow-states/jobs",{entity:t.type||"mcpQuery,mcpTriage,mcpWorkflowPlanner",limit:l.pageSize,offset:l.offset,sort_by:"created_at",order:"desc",status:t.status||void 0,search:t.search||void 0})},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:213,columnNumber:9},this),children:[e.jsxDEV(N,{label:"Type",value:t.type,onChange:o=>r("type",o),options:[{value:"mcpQuery",label:"Discovery"},{value:"mcpWorkflowPlanner",label:"Build"},{value:"mcpTriage",label:"Triage"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:226,columnNumber:11},this),e.jsxDEV(N,{label:"Status",value:t.status,onChange:o=>r("status",o),options:[{value:"completed",label:"Completed"},{value:"running",label:"Running"},{value:"failed",label:"Failed"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:236,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:212,columnNumber:7},this),e.jsxDEV(k,{columns:s,data:d,keyFn:o=>o.workflow_id,onRowClick:o=>{if(o.entity==="mcpWorkflowPlanner"){const v=o.set_id?`/mcp/queries/${o.workflow_id}?mode=plan&set_id=${o.set_id}`:`/mcp/queries/${o.workflow_id}?mode=plan`;a(v)}else o.entity==="mcpWorkflowBuilder"?a(`/mcp/queries/${o.workflow_id}?mode=builder`):a(`/mcp/queries/${o.workflow_id}`)},isLoading:n,emptyMessage:"",sort:u,onSort:i},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:248,columnNumber:7},this),!n&&d.length===0&&e.jsxDEV("div",{className:"cursor-pointer",onClick:()=>a("/mcp/queries/new"),children:e.jsxDEV(V,{icon:f,title:"No tool designs yet",description:"Click to create your first MCP tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:272,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:271,columnNumber:9},this),e.jsxDEV(w,{page:l.page,pageSize:l.pageSize,total:b,totalPages:l.totalPages(b),onPageChange:l.setPage},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:276,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:197,columnNumber:5},this)}export{re as McpQueryPage};
2
+ //# sourceMappingURL=McpQueryPage-C-8nIdBL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpQueryPage-C-8nIdBL.js","sources":["../../src/pages/mcp/McpQueryPage.tsx"],"sourcesContent":["import { useNavigate } from 'react-router-dom';\nimport { MessageSquare, Lightbulb, Layers, Wand2, Settings, GitBranch } from 'lucide-react';\n\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { FilterBar, FilterSelect } from '../../components/common/data/FilterBar';\nimport { StickyPagination } from '../../components/common/data/StickyPagination';\nimport { ListToolbar } from '../../components/common/data/ListToolbar';\nimport { buildApiPath } from '../../lib/api-path';\nimport { TimestampCell } from '../../components/common/display/TimestampCell';\nimport { ElapsedCell } from '../../components/common/display/ElapsedCell';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\nimport { EmptyState } from '../../components/common/display/EmptyState';\nimport { RowActionGroup } from '../../components/common/layout/RowActions';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { useWorkflowListEvents } from '../../hooks/useEventHooks';\nimport { useMcpQueryJobs } from '../../api/mcp-query';\nimport type { LTJob } from '../../api/types';\n\nconst STATUS_DOT: Record<string, string> = {\n in_progress: 'bg-status-active',\n completed: 'bg-status-success',\n failed: 'bg-status-error',\n};\n\nfunction mapStatus(job: LTJob): string {\n if (job.status === 'completed') return 'completed';\n if (Number(job.status) === 0) return 'completed';\n if (job.is_live) return 'in_progress';\n return 'failed';\n}\n\nfunction buildColumns(navigate: ReturnType<typeof useNavigate>): Column<LTJob>[] {\n return [\n {\n key: 'workflow_id',\n label: 'Workflow ID / Type',\n render: (row) => {\n const s = mapStatus(row);\n const dotClass = STATUS_DOT[s] ?? 'bg-status-pending';\n const pulseClass = s === 'in_progress' ? ' animate-pulse' : '';\n return (\n <div className=\"flex items-start gap-2 min-w-0\">\n <span className={`w-[9px] h-[9px] shrink-0 rounded-full dot-ring mt-1 ${dotClass}${pulseClass}`} title={s} />\n <div className=\"min-w-0\">\n <span className=\"font-mono text-xs text-text-primary truncate block\">\n {row.workflow_id}\n </span>\n <div className=\"mt-0.5\">\n <WorkflowPill type={row.entity || 'unknown'} />\n </div>\n </div>\n </div>\n );\n },\n },\n {\n key: 'created_at',\n label: 'Created',\n render: (row) => <TimestampCell date={row.created_at} />,\n className: 'w-40',\n sortable: true,\n },\n {\n key: 'updated_at',\n label: 'Updated',\n render: (row) => <TimestampCell date={row.updated_at} />,\n className: 'w-40',\n sortable: true,\n },\n {\n key: 'duration',\n label: 'Duration',\n render: (row) => {\n const s = mapStatus(row);\n return (\n <ElapsedCell\n startDate={row.created_at}\n endDate={s === 'in_progress' ? null : row.updated_at}\n isLive={s === 'in_progress'}\n />\n );\n },\n className: 'w-28',\n },\n {\n key: 'actions',\n label: '',\n className: 'w-28',\n render: (row) => {\n const s = mapStatus(row);\n const isComplete = s === 'completed';\n const isBuilder = row.entity === 'mcpWorkflowBuilder';\n const isPlanner = row.entity === 'mcpWorkflowPlanner';\n\n if (isPlanner) {\n const planUrl = row.set_id\n ? `/mcp/queries/${row.workflow_id}?mode=plan&set_id=${row.set_id}`\n : `/mcp/queries/${row.workflow_id}?mode=plan`;\n return (\n <RowActionGroup>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`${planUrl}&step=1`); }}\n className=\"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all\"\n title=\"Plan\"\n >\n <GitBranch className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`${planUrl}&step=2`); }}\n className={`opacity-0 group-hover/row:opacity-100 transition-all ${isComplete ? 'text-text-tertiary hover:text-status-success' : 'text-text-tertiary/30 cursor-not-allowed'}`}\n title={isComplete ? 'Build' : 'Planning...'}\n disabled={!isComplete}\n >\n <Layers className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n </RowActionGroup>\n );\n }\n\n if (isBuilder) {\n return (\n <RowActionGroup>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`/mcp/queries/${row.workflow_id}?mode=builder&step=1`); }}\n className=\"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all\"\n title=\"Describe\"\n >\n <MessageSquare className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`/mcp/queries/${row.workflow_id}?mode=builder&step=2`); }}\n className={`opacity-0 group-hover/row:opacity-100 transition-all ${isComplete ? 'text-text-tertiary hover:text-status-success' : 'text-text-tertiary/30 cursor-not-allowed'}`}\n title={isComplete ? 'Profile' : 'Building...'}\n disabled={!isComplete}\n >\n <Settings className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n </RowActionGroup>\n );\n }\n\n return (\n <RowActionGroup>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`/mcp/queries/${row.workflow_id}?step=1`); }}\n className=\"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all\"\n title=\"Describe\"\n >\n <MessageSquare className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`/mcp/queries/${row.workflow_id}?step=2`); }}\n className=\"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-status-warning transition-all\"\n title=\"Discover\"\n >\n <Lightbulb className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`/mcp/queries/${row.workflow_id}?step=3`); }}\n className={`opacity-0 group-hover/row:opacity-100 transition-all ${isComplete ? 'text-text-tertiary hover:text-status-success' : 'text-text-tertiary/30 cursor-not-allowed'}`}\n title={isComplete ? 'Compile' : 'Complete discovery first'}\n disabled={!isComplete}\n >\n <Layers className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n </RowActionGroup>\n );\n },\n },\n ];\n}\n\nexport function McpQueryPage() {\n const navigate = useNavigate();\n const columns = buildColumns(navigate);\n\n const { filters, setFilter, pagination, sort, setSort } = useFilterParams({\n filters: { search: '', status: '', type: '' },\n pageSize: 20,\n });\n\n const { data, isLoading, refetch } = useMcpQueryJobs({\n limit: pagination.pageSize,\n offset: pagination.offset,\n search: filters.search,\n status: filters.status,\n entity: filters.type || undefined,\n });\n\n useWorkflowListEvents();\n\n const jobs = data?.jobs ?? [];\n const total = data?.total ?? 0;\n\n return (\n <>\n <PageHeader\n title=\"MCP Tool Designer\"\n docsHash=\"#docs:dashboard.md:mcp-tool-designer\"\n actions={\n <button\n onClick={() => navigate('/mcp/queries/new')}\n className=\"btn-primary text-xs inline-flex items-center gap-1.5\"\n >\n <Wand2 className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n Create New MCP Tool\n </button>\n }\n />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n apiPath={buildApiPath('/workflow-states/jobs', {\n entity: filters.type || 'mcpQuery,mcpTriage,mcpWorkflowPlanner',\n limit: pagination.pageSize,\n offset: pagination.offset,\n sort_by: 'created_at',\n order: 'desc',\n status: filters.status || undefined,\n search: filters.search || undefined,\n })}\n />\n }>\n <FilterSelect\n label=\"Type\"\n value={filters.type}\n onChange={(v) => setFilter('type', v)}\n options={[\n { value: 'mcpQuery', label: 'Discovery' },\n { value: 'mcpWorkflowPlanner', label: 'Build' },\n { value: 'mcpTriage', label: 'Triage' },\n ]}\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'completed', label: 'Completed' },\n { value: 'running', label: 'Running' },\n { value: 'failed', label: 'Failed' },\n ]}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={jobs}\n keyFn={(row) => row.workflow_id}\n onRowClick={(row) => {\n if (row.entity === 'mcpWorkflowPlanner') {\n const url = row.set_id\n ? `/mcp/queries/${row.workflow_id}?mode=plan&set_id=${row.set_id}`\n : `/mcp/queries/${row.workflow_id}?mode=plan`;\n navigate(url);\n } else if (row.entity === 'mcpWorkflowBuilder') {\n navigate(`/mcp/queries/${row.workflow_id}?mode=builder`);\n } else {\n navigate(`/mcp/queries/${row.workflow_id}`);\n }\n }}\n isLoading={isLoading}\n emptyMessage=\"\"\n sort={sort}\n onSort={setSort}\n />\n\n {!isLoading && jobs.length === 0 && (\n <div className=\"cursor-pointer\" onClick={() => navigate('/mcp/queries/new')}>\n <EmptyState icon={Wand2} title=\"No tool designs yet\" description=\"Click to create your first MCP tool\" />\n </div>\n )}\n\n <StickyPagination\n page={pagination.page}\n pageSize={pagination.pageSize}\n total={total}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n />\n </>\n );\n}\n"],"names":["STATUS_DOT","mapStatus","job","buildColumns","navigate","row","s","dotClass","pulseClass","jsxDEV","WorkflowPill","TimestampCell","ElapsedCell","isComplete","isBuilder","planUrl","RowActionGroup","e","GitBranch","Layers","MessageSquare","Settings","Lightbulb","McpQueryPage","useNavigate","columns","filters","setFilter","pagination","sort","setSort","useFilterParams","data","isLoading","refetch","useMcpQueryJobs","useWorkflowListEvents","jobs","total","Fragment","PageHeader","Wand2","FilterBar","ListToolbar","buildApiPath","FilterSelect","v","DataTable","url","EmptyState","StickyPagination"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{u as _,c as T,j as e,D as C,b as j,J as M,N as I}from"./index-DgCS2Frb.js";import{b as L,a as o}from"./vendor-query-DLp59M9_.js";import{b as J,c as K}from"./pipelines-DVkwxN64.js";import{S as U}from"./StatusBadge-mk-dJwPT.js";import{P as V}from"./PageHeader-DcgGV0Y2.js";import{C as $}from"./CopyableId-DS6IDMIX.js";import{C as f}from"./CollapsibleSection-Bn6Ks79X.js";import{u as A}from"./useCollapsedSections-CGNA5oKV.js";import{L as q}from"./ListToolbar-Dviaskni.js";import{S as B}from"./SwimlaneTimeline-C9X3IVqI.js";import{E as F}from"./EventTable-BaLNvCew.js";import{e as H,f as Q}from"./vendor-react-zA2lQFDs.js";import"./vendor-icons-CNyYGNsk.js";import"./StreamMessageDetail-Bikvs1Cz.js";import"./FilterBar-DEAbNQqp.js";const z={running:"in_progress",completed:"completed",failed:"failed"};function O({isRunning:t,onTerminate:m}){const[s,l]=o.useState(!1),a=o.useRef(null);return o.useEffect(()=>{if(!s)return;const n=i=>{a.current&&!a.current.contains(i.target)&&l(!1)};return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[s]),t?e.jsxDEV("div",{className:"relative",ref:a,children:[e.jsxDEV("button",{onClick:()=>l(!s),className:"btn-primary text-xs",children:"Actions"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:51,columnNumber:7},this),s&&e.jsxDEV("div",{className:"absolute right-0 mt-1 w-44 bg-surface-raised border border-surface-border rounded-md shadow-lg z-10",children:e.jsxDEV("button",{onClick:()=>{m(),l(!1)},className:"block w-full text-left px-4 py-2 text-xs text-status-error hover:bg-surface-hover",children:"Terminate"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:56,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:55,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:50,columnNumber:5},this):null}function pe(){var E,P;const{jobId:t}=H(),[m]=Q(),s=m.get("namespace")||"",l=L(),{data:a,isLoading:n,error:i,refetch:g,isFetching:y}=J(t,s),w=K(),{data:d}=_(),{isCollapsed:b,toggle:N}=A("mcp-run-detail"),D=((E=d==null?void 0:d.telemetry)==null?void 0:E.traceUrl)??null,k=o.useCallback(u=>{!t||u.workflowId!==t||l.invalidateQueries({queryKey:["mcpRunExecution",t]})},[t,l]);if(T(`${I}.system.>`,k),n)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-64"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:93,columnNumber:9},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:94,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:92,columnNumber:7},this);if(i||!a)return e.jsxDEV("div",{children:[e.jsxDEV(V,{title:"Pipeline Execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:102,columnNumber:9},this),e.jsxDEV("div",{className:"mt-4 text-center py-8",children:[e.jsxDEV("p",{className:"text-sm text-text-primary mb-1",children:(P=i==null?void 0:i.message)!=null&&P.includes("expired")?"Execution data is no longer available":"Unable to load execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:104,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:(i==null?void 0:i.message)??"The run could not be resolved."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:109,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:103,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:101,columnNumber:7},this);const{events:x,summary:r}=a,h=x.find(u=>{var R;return u.category==="activity"&&((R=u.attributes.kind)==null?void 0:R.includes("completed"))}),S=(h==null?void 0:h.attributes.result)??null,p=a.result,v=(p==null?void 0:p.data)??p??null;return e.jsxDEV("div",{children:[e.jsxDEV(V,{title:"Pipeline Execution",actions:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(q,{onRefresh:()=>g(),isFetching:y,apiPath:`/pipelines/${t}/execution?app_id=${s}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:136,columnNumber:13},this),e.jsxDEV(O,{isRunning:a.status==="running",onTerminate:()=>{confirm("Interrupt this pipeline execution? This cannot be undone.")&&w.mutate({jobId:a.workflow_id,topic:a.workflow_type,appId:s},{onSuccess:()=>g()})}},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:141,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:135,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:132,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-sunken/50 rounded-md p-5 mb-8",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-4",children:[e.jsxDEV("h2",{className:"text-sm font-mono text-text-primary truncate flex-1",children:a.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:160,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-4 shrink-0",children:[e.jsxDEV(c,{label:"Tools",value:r.activities.user},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:162,columnNumber:13},this),e.jsxDEV(c,{label:"System",value:r.activities.system,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:163,columnNumber:13},this),r.child_workflows.total>0&&e.jsxDEV(c,{label:"Children",value:r.child_workflows.total},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:165,columnNumber:15},this),r.timers>0&&e.jsxDEV(c,{label:"Timers",value:r.timers},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:167,columnNumber:36},this),r.signals>0&&e.jsxDEV(c,{label:"Signals",value:r.signals},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:168,columnNumber:37},this),e.jsxDEV(U,{status:z[a.status]??a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:169,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:161,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:159,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-6 gap-x-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Server"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:176,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:177,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:175,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:180,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:a.workflow_type||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:181,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:179,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Duration"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:184,columnNumber:13},this),e.jsxDEV(C,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:185,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:183,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Started"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:188,columnNumber:13},this),a.start_time?e.jsxDEV(j,{date:a.start_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:190,columnNumber:17},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:191,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:187,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Completed"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:194,columnNumber:13},this),a.close_time?e.jsxDEV(j,{date:a.close_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:196,columnNumber:17},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:197,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:193,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Trace"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:200,columnNumber:13},this),a.trace_id?e.jsxDEV($,{label:"",value:a.trace_id,href:D?D.replace("{traceId}",a.trace_id):void 0,external:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:202,columnNumber:15},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:209,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:199,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:174,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:157,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV(f,{title:"Details",sectionKey:"details",isCollapsed:b("details"),onToggle:N,children:e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[e.jsxDEV("div",{children:e.jsxDEV(M,{data:S??{},label:"Input"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:221,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:220,columnNumber:13},this),v!==null&&e.jsxDEV("div",{children:e.jsxDEV(M,{data:v,label:"Result"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:225,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:224,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:219,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:218,columnNumber:9},this),e.jsxDEV(f,{title:"Execution Timeline",sectionKey:"timeline",isCollapsed:b("timeline"),onToggle:N,children:e.jsxDEV(B,{events:x,outline:!0,jid:t,appId:s||"durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:233,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:232,columnNumber:9},this),e.jsxDEV(f,{title:"Events",sectionKey:"events",isCollapsed:b("events"),onToggle:N,children:e.jsxDEV(F,{events:x,jid:t,appId:s||"durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:238,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:237,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:216,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:131,columnNumber:5},this)}function c({label:t,value:m,muted:s}){return e.jsxDEV("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsxDEV("span",{className:"text-text-tertiary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:250,columnNumber:7},this),e.jsxDEV("span",{className:`font-medium tabular-nums ${s?"text-text-tertiary":"text-text-primary"}`,children:m},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:251,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:249,columnNumber:5},this)}export{pe as McpRunDetailPage};
2
+ //# sourceMappingURL=McpRunDetailPage-CSq_0qqi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpRunDetailPage-BYIxBcA7.js","sources":["../../src/pages/mcp/McpRunDetailPage.tsx"],"sourcesContent":["import { useState, useRef, useEffect, useCallback } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useMcpRunExecution, useInterruptJob } from '../../api/pipelines';\nimport { useSettings } from '../../api/settings';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\nimport { JsonViewer } from '../../components/common/data/JsonViewer';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { CopyableId } from '../../components/common/display/CopyableId';\nimport { CollapsibleSection } from '../../components/common/layout/CollapsibleSection';\nimport { useCollapsedSections } from '../../hooks/useCollapsedSections';\nimport { useEventSubscription } from '../../hooks/useEventContext';\nimport { NATS_SUBJECT_PREFIX } from '../../lib/nats/config';\nimport { DateValue } from '../../components/common/display/DateValue';\nimport { DurationValue } from '../../components/common/display/DurationValue';\nimport { ListToolbar } from '../../components/common/data/ListToolbar';\n\nimport { SwimlaneTimeline } from '../workflows/workflow-execution/SwimlaneTimeline';\nimport { EventTable } from '../workflows/workflow-execution/EventTable';\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nconst statusMap: Record<string, string> = {\n running: 'in_progress',\n completed: 'completed',\n failed: 'failed',\n};\n\n// ── Actions dropdown ────────────────────────────────────────────────────────\n\nfunction ActionsDropdown({ isRunning, onTerminate }: {\n isRunning: boolean;\n onTerminate: () => void;\n}) {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [open]);\n\n if (!isRunning) return null;\n\n return (\n <div className=\"relative\" ref={ref}>\n <button onClick={() => setOpen(!open)} className=\"btn-primary text-xs\">\n Actions\n </button>\n {open && (\n <div className=\"absolute right-0 mt-1 w-44 bg-surface-raised border border-surface-border rounded-md shadow-lg z-10\">\n <button\n onClick={() => { onTerminate(); setOpen(false); }}\n className=\"block w-full text-left px-4 py-2 text-xs text-status-error hover:bg-surface-hover\"\n >\n Terminate\n </button>\n </div>\n )}\n </div>\n );\n}\n\n// ── Main page ────────────────────────────────────────────────────────────────\n\nexport function McpRunDetailPage() {\n const { jobId } = useParams<{ jobId: string }>();\n const [searchParams] = useSearchParams();\n const namespace = searchParams.get('namespace') || '';\n const queryClient = useQueryClient();\n const { data: execution, isLoading, error, refetch, isFetching } = useMcpRunExecution(jobId!, namespace);\n const interruptMutation = useInterruptJob();\n const { data: settings } = useSettings();\n const { isCollapsed, toggle } = useCollapsedSections('mcp-run-detail');\n\n\n const traceUrl = settings?.telemetry?.traceUrl ?? null;\n\n // Subscribe to activity events for this job — refetch execution on each step\n const activityHandler = useCallback((event: any) => {\n if (!jobId || event.workflowId !== jobId) return;\n queryClient.invalidateQueries({ queryKey: ['mcpRunExecution', jobId] });\n }, [jobId, queryClient]);\n useEventSubscription(`${NATS_SUBJECT_PREFIX}.system.>`, activityHandler);\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-8 bg-surface-sunken rounded w-64\" />\n <div className=\"h-60 bg-surface-sunken rounded\" />\n </div>\n );\n }\n\n if (error || !execution) {\n return (\n <div>\n <PageHeader title=\"Pipeline Execution\" />\n <div className=\"mt-4 text-center py-8\">\n <p className=\"text-sm text-text-primary mb-1\">\n {(error as Error)?.message?.includes('expired')\n ? 'Execution data is no longer available'\n : 'Unable to load execution'}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {(error as Error)?.message ?? 'The run could not be resolved.'}\n </p>\n </div>\n </div>\n );\n }\n\n const { events, summary } = execution;\n\n // The trigger activity's result is the effective input to the flow —\n // it accepts outside job input and provides it to descendant activities.\n const triggerCompleted = events.find(\n (e) => e.category === 'activity' && e.attributes.kind?.includes('completed'),\n );\n const triggerInput = triggerCompleted?.attributes.result ?? null;\n\n // Unwrap result — the `data` field is what users care about\n const rawResult = execution.result as Record<string, unknown> | null | undefined;\n const result = rawResult?.data ?? rawResult ?? null;\n\n return (\n <div>\n <PageHeader\n title=\"Pipeline Execution\"\n actions={\n <div className=\"flex items-center gap-2\">\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/pipelines/${jobId}/execution?app_id=${namespace}`}\n />\n <ActionsDropdown\n isRunning={execution.status === 'running'}\n onTerminate={() => {\n if (confirm('Interrupt this pipeline execution? This cannot be undone.')) {\n interruptMutation.mutate(\n { jobId: execution.workflow_id, topic: execution.workflow_type, appId: namespace },\n { onSuccess: () => refetch() },\n );\n }\n }}\n />\n </div>\n }\n />\n\n {/* ── Header card ─────────────────────────────────── */}\n <div className=\"bg-surface-sunken/50 rounded-md p-5 mb-8\">\n {/* Row 1: Job ID + stats + status */}\n <div className=\"flex items-center gap-4 mb-4\">\n <h2 className=\"text-sm font-mono text-text-primary truncate flex-1\">{execution.workflow_id}</h2>\n <div className=\"flex items-center gap-4 shrink-0\">\n <Stat label=\"Tools\" value={summary.activities.user} />\n <Stat label=\"System\" value={summary.activities.system} muted />\n {summary.child_workflows.total > 0 && (\n <Stat label=\"Children\" value={summary.child_workflows.total} />\n )}\n {summary.timers > 0 && <Stat label=\"Timers\" value={summary.timers} />}\n {summary.signals > 0 && <Stat label=\"Signals\" value={summary.signals} />}\n <StatusBadge status={statusMap[execution.status] ?? execution.status} />\n </div>\n </div>\n\n {/* Row 2: Namespace, Topic, Duration, Started, Trace */}\n <div className=\"grid grid-cols-6 gap-x-6\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Server</p>\n <p className=\"text-xs font-mono text-text-primary truncate\">{namespace}</p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool</p>\n <p className=\"text-xs font-mono text-text-primary truncate\">{execution.workflow_type || '—'}</p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Duration</p>\n <DurationValue ms={execution.duration_ms} className=\"font-mono text-text-primary\" />\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Started</p>\n {execution.start_time\n ? <DateValue date={execution.start_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n : <span className=\"text-xs text-text-tertiary\">--</span>}\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Completed</p>\n {execution.close_time\n ? <DateValue date={execution.close_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n : <span className=\"text-xs text-text-tertiary\">--</span>}\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Trace</p>\n {execution.trace_id ? (\n <CopyableId\n label=\"\"\n value={execution.trace_id}\n href={traceUrl ? traceUrl.replace('{traceId}', execution.trace_id) : undefined}\n external\n />\n ) : (\n <span className=\"text-xs text-text-tertiary\">—</span>\n )}\n </div>\n </div>\n </div>\n\n {/* ── Sections ────────────────────────────────────── */}\n <div className=\"space-y-6\">\n {/* Details: Input + Result */}\n <CollapsibleSection title=\"Details\" sectionKey=\"details\" isCollapsed={isCollapsed('details')} onToggle={toggle}>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6\">\n <div>\n <JsonViewer data={triggerInput ?? {}} label=\"Input\" />\n </div>\n {result !== null && (\n <div>\n <JsonViewer data={result} label=\"Result\" />\n </div>\n )}\n </div>\n </CollapsibleSection>\n\n {/* Execution Timeline (swimlane) */}\n <CollapsibleSection title=\"Execution Timeline\" sectionKey=\"timeline\" isCollapsed={isCollapsed('timeline')} onToggle={toggle}>\n <SwimlaneTimeline events={events} outline jid={jobId} appId={namespace || 'durable'} />\n </CollapsibleSection>\n\n {/* Events (table) */}\n <CollapsibleSection title=\"Events\" sectionKey=\"events\" isCollapsed={isCollapsed('events')} onToggle={toggle}>\n <EventTable events={events} jid={jobId} appId={namespace || 'durable'} />\n </CollapsibleSection>\n </div>\n </div>\n );\n}\n\n// ── Stat pill ────────────────────────────────────────────────────────────────\n\nfunction Stat({ label, value, muted }: { label: string; value: number; muted?: boolean }) {\n return (\n <div className=\"flex items-center gap-1.5 text-xs\">\n <span className=\"text-text-tertiary\">{label}</span>\n <span className={`font-medium tabular-nums ${muted ? 'text-text-tertiary' : 'text-text-primary'}`}>{value}</span>\n </div>\n );\n}\n"],"names":["statusMap","ActionsDropdown","isRunning","onTerminate","open","setOpen","useState","ref","useRef","useEffect","handler","e","jsxs","jsx","McpRunDetailPage","jobId","useParams","searchParams","useSearchParams","namespace","queryClient","useQueryClient","execution","isLoading","error","refetch","isFetching","useMcpRunExecution","interruptMutation","useInterruptJob","settings","useSettings","isCollapsed","toggle","useCollapsedSections","traceUrl","_a","activityHandler","useCallback","event","useEventSubscription","NATS_SUBJECT_PREFIX","PageHeader","_b","events","summary","triggerCompleted","triggerInput","rawResult","result","ListToolbar","Stat","StatusBadge","DurationValue","DateValue","CopyableId","CollapsibleSection","JsonViewer","SwimlaneTimeline","EventTable","label","value","muted"],"mappings":"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"}
1
+ {"version":3,"file":"McpRunDetailPage-CSq_0qqi.js","sources":["../../src/pages/mcp/McpRunDetailPage.tsx"],"sourcesContent":["import { useState, useRef, useEffect, useCallback } from 'react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useMcpRunExecution, useInterruptJob } from '../../api/pipelines';\nimport { useSettings } from '../../api/settings';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\nimport { JsonViewer } from '../../components/common/data/JsonViewer';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { CopyableId } from '../../components/common/display/CopyableId';\nimport { CollapsibleSection } from '../../components/common/layout/CollapsibleSection';\nimport { useCollapsedSections } from '../../hooks/useCollapsedSections';\nimport { useEventSubscription } from '../../hooks/useEventContext';\nimport { NATS_SUBJECT_PREFIX } from '../../lib/nats/config';\nimport { DateValue } from '../../components/common/display/DateValue';\nimport { DurationValue } from '../../components/common/display/DurationValue';\nimport { ListToolbar } from '../../components/common/data/ListToolbar';\n\nimport { SwimlaneTimeline } from '../workflows/workflow-execution/SwimlaneTimeline';\nimport { EventTable } from '../workflows/workflow-execution/EventTable';\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nconst statusMap: Record<string, string> = {\n running: 'in_progress',\n completed: 'completed',\n failed: 'failed',\n};\n\n// ── Actions dropdown ────────────────────────────────────────────────────────\n\nfunction ActionsDropdown({ isRunning, onTerminate }: {\n isRunning: boolean;\n onTerminate: () => void;\n}) {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [open]);\n\n if (!isRunning) return null;\n\n return (\n <div className=\"relative\" ref={ref}>\n <button onClick={() => setOpen(!open)} className=\"btn-primary text-xs\">\n Actions\n </button>\n {open && (\n <div className=\"absolute right-0 mt-1 w-44 bg-surface-raised border border-surface-border rounded-md shadow-lg z-10\">\n <button\n onClick={() => { onTerminate(); setOpen(false); }}\n className=\"block w-full text-left px-4 py-2 text-xs text-status-error hover:bg-surface-hover\"\n >\n Terminate\n </button>\n </div>\n )}\n </div>\n );\n}\n\n// ── Main page ────────────────────────────────────────────────────────────────\n\nexport function McpRunDetailPage() {\n const { jobId } = useParams<{ jobId: string }>();\n const [searchParams] = useSearchParams();\n const namespace = searchParams.get('namespace') || '';\n const queryClient = useQueryClient();\n const { data: execution, isLoading, error, refetch, isFetching } = useMcpRunExecution(jobId!, namespace);\n const interruptMutation = useInterruptJob();\n const { data: settings } = useSettings();\n const { isCollapsed, toggle } = useCollapsedSections('mcp-run-detail');\n\n\n const traceUrl = settings?.telemetry?.traceUrl ?? null;\n\n // Subscribe to activity events for this job — refetch execution on each step\n const activityHandler = useCallback((event: any) => {\n if (!jobId || event.workflowId !== jobId) return;\n queryClient.invalidateQueries({ queryKey: ['mcpRunExecution', jobId] });\n }, [jobId, queryClient]);\n useEventSubscription(`${NATS_SUBJECT_PREFIX}.system.>`, activityHandler);\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-8 bg-surface-sunken rounded w-64\" />\n <div className=\"h-60 bg-surface-sunken rounded\" />\n </div>\n );\n }\n\n if (error || !execution) {\n return (\n <div>\n <PageHeader title=\"Pipeline Execution\" />\n <div className=\"mt-4 text-center py-8\">\n <p className=\"text-sm text-text-primary mb-1\">\n {(error as Error)?.message?.includes('expired')\n ? 'Execution data is no longer available'\n : 'Unable to load execution'}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {(error as Error)?.message ?? 'The run could not be resolved.'}\n </p>\n </div>\n </div>\n );\n }\n\n const { events, summary } = execution;\n\n // The trigger activity's result is the effective input to the flow —\n // it accepts outside job input and provides it to descendant activities.\n const triggerCompleted = events.find(\n (e) => e.category === 'activity' && e.attributes.kind?.includes('completed'),\n );\n const triggerInput = triggerCompleted?.attributes.result ?? null;\n\n // Unwrap result — the `data` field is what users care about\n const rawResult = execution.result as Record<string, unknown> | null | undefined;\n const result = rawResult?.data ?? rawResult ?? null;\n\n return (\n <div>\n <PageHeader\n title=\"Pipeline Execution\"\n actions={\n <div className=\"flex items-center gap-2\">\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/pipelines/${jobId}/execution?app_id=${namespace}`}\n />\n <ActionsDropdown\n isRunning={execution.status === 'running'}\n onTerminate={() => {\n if (confirm('Interrupt this pipeline execution? This cannot be undone.')) {\n interruptMutation.mutate(\n { jobId: execution.workflow_id, topic: execution.workflow_type, appId: namespace },\n { onSuccess: () => refetch() },\n );\n }\n }}\n />\n </div>\n }\n />\n\n {/* ── Header card ─────────────────────────────────── */}\n <div className=\"bg-surface-sunken/50 rounded-md p-5 mb-8\">\n {/* Row 1: Job ID + stats + status */}\n <div className=\"flex items-center gap-4 mb-4\">\n <h2 className=\"text-sm font-mono text-text-primary truncate flex-1\">{execution.workflow_id}</h2>\n <div className=\"flex items-center gap-4 shrink-0\">\n <Stat label=\"Tools\" value={summary.activities.user} />\n <Stat label=\"System\" value={summary.activities.system} muted />\n {summary.child_workflows.total > 0 && (\n <Stat label=\"Children\" value={summary.child_workflows.total} />\n )}\n {summary.timers > 0 && <Stat label=\"Timers\" value={summary.timers} />}\n {summary.signals > 0 && <Stat label=\"Signals\" value={summary.signals} />}\n <StatusBadge status={statusMap[execution.status] ?? execution.status} />\n </div>\n </div>\n\n {/* Row 2: Namespace, Topic, Duration, Started, Trace */}\n <div className=\"grid grid-cols-6 gap-x-6\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Server</p>\n <p className=\"text-xs font-mono text-text-primary truncate\">{namespace}</p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool</p>\n <p className=\"text-xs font-mono text-text-primary truncate\">{execution.workflow_type || '—'}</p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Duration</p>\n <DurationValue ms={execution.duration_ms} className=\"font-mono text-text-primary\" />\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Started</p>\n {execution.start_time\n ? <DateValue date={execution.start_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n : <span className=\"text-xs text-text-tertiary\">--</span>}\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Completed</p>\n {execution.close_time\n ? <DateValue date={execution.close_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n : <span className=\"text-xs text-text-tertiary\">--</span>}\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Trace</p>\n {execution.trace_id ? (\n <CopyableId\n label=\"\"\n value={execution.trace_id}\n href={traceUrl ? traceUrl.replace('{traceId}', execution.trace_id) : undefined}\n external\n />\n ) : (\n <span className=\"text-xs text-text-tertiary\">—</span>\n )}\n </div>\n </div>\n </div>\n\n {/* ── Sections ────────────────────────────────────── */}\n <div className=\"space-y-6\">\n {/* Details: Input + Result */}\n <CollapsibleSection title=\"Details\" sectionKey=\"details\" isCollapsed={isCollapsed('details')} onToggle={toggle}>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6\">\n <div>\n <JsonViewer data={triggerInput ?? {}} label=\"Input\" />\n </div>\n {result !== null && (\n <div>\n <JsonViewer data={result} label=\"Result\" />\n </div>\n )}\n </div>\n </CollapsibleSection>\n\n {/* Execution Timeline (swimlane) */}\n <CollapsibleSection title=\"Execution Timeline\" sectionKey=\"timeline\" isCollapsed={isCollapsed('timeline')} onToggle={toggle}>\n <SwimlaneTimeline events={events} outline jid={jobId} appId={namespace || 'durable'} />\n </CollapsibleSection>\n\n {/* Events (table) */}\n <CollapsibleSection title=\"Events\" sectionKey=\"events\" isCollapsed={isCollapsed('events')} onToggle={toggle}>\n <EventTable events={events} jid={jobId} appId={namespace || 'durable'} />\n </CollapsibleSection>\n </div>\n </div>\n );\n}\n\n// ── Stat pill ────────────────────────────────────────────────────────────────\n\nfunction Stat({ label, value, muted }: { label: string; value: number; muted?: boolean }) {\n return (\n <div className=\"flex items-center gap-1.5 text-xs\">\n <span className=\"text-text-tertiary\">{label}</span>\n <span className={`font-medium tabular-nums ${muted ? 'text-text-tertiary' : 'text-text-primary'}`}>{value}</span>\n </div>\n );\n}\n"],"names":["statusMap","ActionsDropdown","isRunning","onTerminate","open","setOpen","useState","ref","useRef","useEffect","handler","e","jsxDEV","McpRunDetailPage","jobId","useParams","searchParams","useSearchParams","namespace","queryClient","useQueryClient","execution","isLoading","error","refetch","isFetching","useMcpRunExecution","interruptMutation","useInterruptJob","settings","useSettings","isCollapsed","toggle","useCollapsedSections","traceUrl","_a","activityHandler","useCallback","event","useEventSubscription","NATS_SUBJECT_PREFIX","PageHeader","_b","events","summary","triggerCompleted","triggerInput","rawResult","result","ListToolbar","Stat","StatusBadge","DurationValue","DateValue","CopyableId","CollapsibleSection","JsonViewer","SwimlaneTimeline","EventTable","label","value","muted"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as a,b as x}from"./index-DgCS2Frb.js";import{a as u}from"./vendor-query-DLp59M9_.js";import{a as k,u as S}from"./pipelines-DVkwxN64.js";import{a as w}from"./yaml-workflows-Bz7yEnhl.js";import{u as C}from"./useFilterParams-Ch-a71bE.js";import{u as F}from"./useNamespace-D-AjLnPK.js";import{b as T}from"./api-path-u2Jf9QXS.js";import{D as z}from"./DataTable-Bf4dgxll.js";import{W as $}from"./WorkflowPill-Cc2MlYbB.js";import{E as A}from"./ElapsedCell-roy4G5SQ.js";import{P as L}from"./PageHeader-DcgGV0Y2.js";import{F as U,b as g}from"./FilterBar-DEAbNQqp.js";import{S as W}from"./StickyPagination-Clm9H840.js";import{L as I}from"./ListToolbar-Dviaskni.js";import{R as O,a as B}from"./RowActions--m4F6GW8.js";import{u as H}from"./vendor-icons-CNyYGNsk.js";import{c as q}from"./vendor-react-zA2lQFDs.js";import"./controlplane-Djshb7fm.js";import"./EmptyState-CLVm9KmA.js";const G={running:"in_progress",completed:"completed",failed:"failed"},Y={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"},J={running:"text-status-active",completed:"text-status-success",failed:"text-status-error"};function K(b,f){return[{key:"workflow_id",label:"Run ID",render:s=>{const t=Y[G[s.status]??s.status]??"bg-status-pending",r=s.status==="running"?" animate-pulse":"";return a.jsxDEV("div",{className:"flex items-center gap-2 min-w-0",children:[a.jsxDEV("span",{className:`w-1.5 h-1.5 shrink-0 rounded-full dot-ring ${t}${r}`,title:s.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:51,columnNumber:13},this),a.jsxDEV("span",{className:"font-mono text-xs text-text-primary truncate",children:s.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:50,columnNumber:11},this)}},{key:"entity",label:"Tool",render:s=>s.entity?a.jsxDEV($,{type:s.entity,variant:"pipeline",size:"xs"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:61,columnNumber:11},this):a.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:62,columnNumber:11},this),className:"w-44 shrink-0"},{key:"created_at",label:"Created",sortable:!0,render:s=>a.jsxDEV(x,{date:s.created_at,format:"relative",className:"text-xs text-text-secondary whitespace-nowrap"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:69,columnNumber:24},this),className:"w-32"},{key:"updated_at",label:"Updated",sortable:!0,render:s=>a.jsxDEV(x,{date:s.updated_at,format:"relative",className:"text-xs text-text-secondary whitespace-nowrap"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:76,columnNumber:24},this),className:"w-32"},{key:"duration",label:"Duration",render:s=>a.jsxDEV(A,{startDate:s.created_at,endDate:s.status==="running"?null:s.updated_at,isLive:s.status==="running"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:83,columnNumber:9},this),className:"w-28"},{key:"actions",label:"",render:s=>a.jsxDEV(O,{children:[a.jsxDEV(B,{icon:H,title:`Filter by ${s.entity}`,onClick:()=>b(s.entity)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:96,columnNumber:11},this),a.jsxDEV("button",{onClick:t=>{t.stopPropagation(),f(s.status)},className:"opacity-0 group-hover/row:opacity-100 transition-opacity",title:`Filter by ${s.status}`,children:a.jsxDEV("svg",{className:`w-[18px] h-[18px] ${J[s.status]??"text-text-tertiary"} hover:opacity-70`,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,children:a.jsxDEV("circle",{cx:"12",cy:"12",r:"6"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:107,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:106,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:101,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:95,columnNumber:9},this),className:"w-24 text-right"}]}function ge(){const b=q(),{namespace:f,available:s}=F("namespace"),{filters:t,setFilter:r,setFilters:v,pagination:i,sort:m,setSort:y}=C({filters:{search:"",entity:"",status:"",namespace:""}}),[d,P]=u.useState(t.search);u.useEffect(()=>{if(d===t.search)return;const e=setTimeout(()=>r("search",d),300);return()=>clearTimeout(e)},[d,r,t.search]);const{data:l}=w(),h=u.useMemo(()=>{const e=new Set(s);for(const n of(l==null?void 0:l.app_ids)??[])e.add(n);return[...e].sort()},[s,l==null?void 0:l.app_ids]),o=t.namespace||f,{data:p}=k(o),{data:c,isLoading:R,refetch:M,isFetching:E}=S({app_id:o,limit:i.pageSize,offset:i.offset,entity:t.entity||void 0,search:t.search||void 0,status:t.status||void 0,sort_by:m.sort_by||"created_at",order:m.order||"desc"}),N=(c==null?void 0:c.total)??0,j=(c==null?void 0:c.jobs)??[],D=K(e=>r("entity",e),e=>r("status",e)),V=u.useMemo(()=>{const e=new Set(h);return o&&e.add(o),[...e].sort().map(n=>({value:n,label:n}))},[h,o]),_=u.useMemo(()=>{const e=new Set((p==null?void 0:p.entities)??[]);return t.entity&&!e.has(t.entity)&&e.add(t.entity),[...e].sort().map(n=>({value:n,label:n}))},[p==null?void 0:p.entities,t.entity]);return a.jsxDEV("div",{children:[a.jsxDEV(L,{title:"Pipeline Executions",docsHash:"#docs:dashboard.md:pipeline-executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:179,columnNumber:7},this),a.jsxDEV(U,{actions:a.jsxDEV(I,{onRefresh:()=>M(),isFetching:E,apiPath:T("/pipelines",{app_id:o,limit:i.pageSize,offset:i.offset,entity:t.entity||void 0,status:t.status||void 0,search:t.search||void 0,sort_by:m.sort_by||"created_at",order:m.order||"desc"})},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:182,columnNumber:9},this),children:[a.jsxDEV(g,{label:"Namespace",value:o,onChange:e=>{v({namespace:e,entity:""})},options:V,required:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:197,columnNumber:9},this),a.jsxDEV("input",{type:"text",placeholder:"Search run ID...",value:d,onChange:e=>P(e.target.value),className:"input text-[11px] py-1 px-2 w-56"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:206,columnNumber:9},this),a.jsxDEV(g,{label:"Tool",value:t.entity,onChange:e=>r("entity",e),options:_},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:213,columnNumber:9},this),a.jsxDEV(g,{label:"Status",value:t.status,onChange:e=>r("status",e),options:[{value:"running",label:"Running"},{value:"completed",label:"Completed"},{value:"failed",label:"Failed"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:219,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:181,columnNumber:7},this),a.jsxDEV(z,{columns:D,data:j,keyFn:e=>e.workflow_id,onRowClick:e=>b(`/mcp/executions/${encodeURIComponent(e.workflow_id)}?namespace=${o}`),isLoading:R,emptyMessage:"No pipeline executions found",sort:m,onSort:y},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:231,columnNumber:7},this),a.jsxDEV(W,{page:i.page,totalPages:i.totalPages(N),onPageChange:i.setPage,total:N,pageSize:i.pageSize,onPageSizeChange:i.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:242,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:178,columnNumber:5},this)}export{ge as McpRunsPage};
2
+ //# sourceMappingURL=McpRunsPage-BdK8ahX7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpRunsPage-BdK8ahX7.js","sources":["../../src/pages/mcp/McpRunsPage.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Filter } from 'lucide-react';\nimport { useMcpRuns, useMcpEntities } from '../../api/pipelines';\nimport { useYamlWorkflowAppIds } from '../../api/yaml-workflows';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { useNamespace } from '../../hooks/useNamespace';\nimport { buildApiPath } from '../../lib/api-path';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\nimport { ElapsedCell } from '../../components/common/display/ElapsedCell';\nimport { DateValue } from '../../components/common/display/DateValue';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { FilterBar, FilterSelect } from '../../components/common/data/FilterBar';\nimport { StickyPagination } from '../../components/common/data/StickyPagination';\nimport { ListToolbar } from '../../components/common/data/ListToolbar';\nimport { RowAction, RowActionGroup } from '../../components/common/layout/RowActions';\nimport type { LTJob } from '../../api/types';\n\nconst statusMap: Record<string, string> = {\n running: 'in_progress',\n completed: 'completed',\n failed: 'failed',\n};\n\nconst STATUS_DOT: Record<string, string> = {\n in_progress: 'bg-status-active',\n completed: 'bg-status-success',\n failed: 'bg-status-error',\n};\n\nconst STATUS_COLORS: Record<string, string> = {\n running: 'text-status-active',\n completed: 'text-status-success',\n failed: 'text-status-error',\n};\n\nfunction buildColumns(\n onFilterEntity: (entity: string) => void,\n onFilterStatus: (status: string) => void,\n): Column<LTJob>[] {\n return [\n {\n key: 'workflow_id',\n label: 'Run ID',\n render: (row) => {\n const dotClass = STATUS_DOT[statusMap[row.status] ?? row.status] ?? 'bg-status-pending';\n const pulseClass = row.status === 'running' ? ' animate-pulse' : '';\n return (\n <div className=\"flex items-center gap-2 min-w-0\">\n <span className={`w-1.5 h-1.5 shrink-0 rounded-full dot-ring ${dotClass}${pulseClass}`} title={row.status} />\n <span className=\"font-mono text-xs text-text-primary truncate\">{row.workflow_id}</span>\n </div>\n );\n },\n },\n {\n key: 'entity',\n label: 'Tool',\n render: (row) => row.entity\n ? <WorkflowPill type={row.entity} variant=\"pipeline\" size=\"xs\" />\n : <span className=\"text-[10px] text-text-tertiary\">—</span>,\n className: 'w-44 shrink-0',\n },\n {\n key: 'created_at',\n label: 'Created',\n sortable: true,\n render: (row) => <DateValue date={row.created_at} format=\"relative\" className=\"text-xs text-text-secondary whitespace-nowrap\" />,\n className: 'w-32',\n },\n {\n key: 'updated_at',\n label: 'Updated',\n sortable: true,\n render: (row) => <DateValue date={row.updated_at} format=\"relative\" className=\"text-xs text-text-secondary whitespace-nowrap\" />,\n className: 'w-32',\n },\n {\n key: 'duration',\n label: 'Duration',\n render: (row) => (\n <ElapsedCell\n startDate={row.created_at}\n endDate={row.status === 'running' ? null : row.updated_at}\n isLive={row.status === 'running'}\n />\n ),\n className: 'w-28',\n },\n {\n key: 'actions',\n label: '',\n render: (row) => (\n <RowActionGroup>\n <RowAction\n icon={Filter}\n title={`Filter by ${row.entity}`}\n onClick={() => onFilterEntity(row.entity)}\n />\n <button\n onClick={(e) => { e.stopPropagation(); onFilterStatus(row.status); }}\n className=\"opacity-0 group-hover/row:opacity-100 transition-opacity\"\n title={`Filter by ${row.status}`}\n >\n <svg className={`w-[18px] h-[18px] ${STATUS_COLORS[row.status] ?? 'text-text-tertiary'} hover:opacity-70`} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={1.5}>\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n </button>\n </RowActionGroup>\n ),\n className: 'w-24 text-right',\n },\n ];\n}\n\nexport function McpRunsPage() {\n const navigate = useNavigate();\n const { namespace: hookNamespace, available } = useNamespace('namespace');\n const { filters, setFilter, setFilters, pagination, sort, setSort } = useFilterParams({\n filters: { search: '', entity: '', status: '', namespace: '' },\n });\n\n const [searchInput, setSearchInput] = useState(filters.search);\n\n useEffect(() => {\n if (searchInput === filters.search) return;\n const timer = setTimeout(() => setFilter('search', searchInput), 300);\n return () => clearTimeout(timer);\n }, [searchInput, setFilter, filters.search]);\n\n const { data: appIdData } = useYamlWorkflowAppIds();\n\n // Merge real HotMesh namespaces (from controlplane/apps) with YAML workflow app_ids\n const allNamespaceNames = useMemo(() => {\n const set = new Set(available);\n for (const id of appIdData?.app_ids ?? []) {\n set.add(id);\n }\n return [...set].sort();\n }, [available, appIdData?.app_ids]);\n\n const activeNamespace = filters.namespace || hookNamespace;\n const { data: entitiesData } = useMcpEntities(activeNamespace);\n\n const { data: runsData, isLoading, refetch, isFetching } = useMcpRuns({\n app_id: activeNamespace,\n limit: pagination.pageSize,\n offset: pagination.offset,\n entity: filters.entity || undefined,\n search: filters.search || undefined,\n status: filters.status || undefined,\n sort_by: sort.sort_by || 'created_at',\n order: sort.order || 'desc',\n });\n\n const total = runsData?.total ?? 0;\n const jobs = runsData?.jobs ?? [];\n\n const columns = buildColumns(\n (entity) => setFilter('entity', entity),\n (status) => setFilter('status', status),\n );\n\n const namespaces = useMemo(() => {\n const set = new Set(allNamespaceNames);\n if (activeNamespace) set.add(activeNamespace);\n return [...set].sort().map((id) => ({ value: id, label: id }));\n }, [allNamespaceNames, activeNamespace]);\n\n const entities = useMemo(() => {\n const known = new Set(entitiesData?.entities ?? []);\n if (filters.entity && !known.has(filters.entity)) known.add(filters.entity);\n return [...known].sort().map((e) => ({ value: e, label: e }));\n }, [entitiesData?.entities, filters.entity]);\n\n return (\n <div>\n <PageHeader title=\"Pipeline Executions\" docsHash=\"#docs:dashboard.md:pipeline-executions\" />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={buildApiPath('/pipelines', {\n app_id: activeNamespace,\n limit: pagination.pageSize,\n offset: pagination.offset,\n entity: filters.entity || undefined,\n status: filters.status || undefined,\n search: filters.search || undefined,\n sort_by: sort.sort_by || 'created_at',\n order: sort.order || 'desc',\n })}\n />\n }>\n <FilterSelect\n label=\"Namespace\"\n value={activeNamespace}\n onChange={(v) => {\n setFilters({ namespace: v, entity: '' });\n }}\n options={namespaces}\n required\n />\n <input\n type=\"text\"\n placeholder=\"Search run ID...\"\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n className=\"input text-[11px] py-1 px-2 w-56\"\n />\n <FilterSelect\n label=\"Tool\"\n value={filters.entity}\n onChange={(v) => setFilter('entity', v)}\n options={entities}\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'running', label: 'Running' },\n { value: 'completed', label: 'Completed' },\n { value: 'failed', label: 'Failed' },\n ]}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={jobs}\n keyFn={(row) => row.workflow_id}\n onRowClick={(row) => navigate(`/mcp/executions/${encodeURIComponent(row.workflow_id)}?namespace=${activeNamespace}`)}\n isLoading={isLoading}\n emptyMessage=\"No pipeline executions found\"\n sort={sort}\n onSort={setSort}\n />\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n </div>\n );\n}\n"],"names":["statusMap","STATUS_DOT","STATUS_COLORS","buildColumns","onFilterEntity","onFilterStatus","row","dotClass","pulseClass","jsxDEV","WorkflowPill","DateValue","ElapsedCell","RowActionGroup","RowAction","Filter","e","McpRunsPage","navigate","useNavigate","hookNamespace","available","useNamespace","filters","setFilter","setFilters","pagination","sort","setSort","useFilterParams","searchInput","setSearchInput","useState","useEffect","timer","appIdData","useYamlWorkflowAppIds","allNamespaceNames","useMemo","set","id","activeNamespace","entitiesData","useMcpEntities","runsData","isLoading","refetch","isFetching","useMcpRuns","total","jobs","columns","entity","status","namespaces","entities","known","PageHeader","FilterBar","ListToolbar","buildApiPath","FilterSelect","v","DataTable","StickyPagination"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./index-DgCS2Frb.js";import{a as n}from"./vendor-query-DLp59M9_.js";import{a as d}from"./vendor-react-zA2lQFDs.js";function x({open:r,onClose:o,title:m,children:t,maxWidth:s}){return n.useEffect(()=>{if(!r)return;const a=l=>{l.key==="Escape"&&o()};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[r,o]),r?d.createPortal(e.jsxDEV("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsxDEV("div",{className:"absolute inset-0 bg-text-primary/30",onClick:o},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:27,columnNumber:7},this),e.jsxDEV("div",{className:`relative bg-surface-raised border border-surface-border rounded-lg shadow-xl w-full ${s??"max-w-md"} mx-4 max-h-[85vh] flex flex-col`,children:[e.jsxDEV("div",{className:"flex items-center justify-between px-6 py-4 border-b shrink-0",children:[e.jsxDEV("h2",{className:"text-sm font-medium text-text-primary",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:34,columnNumber:11},this),e.jsxDEV("button",{onClick:o,className:"text-text-tertiary hover:text-text-primary text-lg leading-none",children:"×"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:35,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:33,columnNumber:9},this),e.jsxDEV("div",{className:"px-6 py-5 overflow-y-auto",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:42,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:32,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:25,columnNumber:5},this),document.body):null}export{x as M};
2
+ //# sourceMappingURL=Modal-C6HI6btY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal-CSrxpXeM.js","sources":["../../src/components/common/modal/Modal.tsx"],"sourcesContent":["import { useEffect, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface ModalProps {\n open: boolean;\n onClose: () => void;\n title: string;\n children: ReactNode;\n maxWidth?: string;\n}\n\nexport function Modal({ open, onClose, title, children, maxWidth }: ModalProps) {\n useEffect(() => {\n if (!open) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return createPortal(\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-text-primary/30\"\n onClick={onClose}\n />\n {/* Dialog */}\n <div className={`relative bg-surface-raised border border-surface-border rounded-lg shadow-xl w-full ${maxWidth ?? 'max-w-md'} mx-4 max-h-[85vh] flex flex-col`}>\n <div className=\"flex items-center justify-between px-6 py-4 border-b shrink-0\">\n <h2 className=\"text-sm font-medium text-text-primary\">{title}</h2>\n <button\n onClick={onClose}\n className=\"text-text-tertiary hover:text-text-primary text-lg leading-none\"\n >\n &times;\n </button>\n </div>\n <div className=\"px-6 py-5 overflow-y-auto\">{children}</div>\n </div>\n </div>,\n document.body,\n );\n}\n"],"names":["Modal","open","onClose","title","children","maxWidth","useEffect","handler","e","createPortal","jsxs","jsx"],"mappings":"qGAWO,SAASA,EAAM,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,EAAO,SAAAC,EAAU,SAAAC,GAAwB,CAU9E,OATAC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACL,EAAM,OACX,MAAMM,EAAWC,GAAqB,CAChCA,EAAE,MAAQ,UAAUN,EAAA,CAC1B,EACA,gBAAS,iBAAiB,UAAWK,CAAO,EACrC,IAAM,SAAS,oBAAoB,UAAWA,CAAO,CAC9D,EAAG,CAACN,EAAMC,CAAO,CAAC,EAEbD,EAEEQ,EAAAA,aACLC,EAAAA,KAAC,MAAA,CAAI,UAAU,sDAEb,SAAA,CAAAC,EAAAA,IAAC,MAAA,CACC,UAAU,sCACV,QAAST,CAAA,CAAA,SAGV,MAAA,CAAI,UAAW,uFAAuFG,GAAY,UAAU,mCAC3H,SAAA,CAAAK,EAAAA,KAAC,MAAA,CAAI,UAAU,gEACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,wCAAyC,SAAAR,EAAM,EAC7DQ,EAAAA,IAAC,SAAA,CACC,QAAST,EACT,UAAU,kEACX,SAAA,GAAA,CAAA,CAED,EACF,EACAS,EAAAA,IAAC,MAAA,CAAI,UAAU,4BAA6B,SAAAP,CAAA,CAAS,CAAA,CAAA,CACvD,CAAA,EACF,EACA,SAAS,IAAA,EAvBO,IAyBpB"}
1
+ {"version":3,"file":"Modal-C6HI6btY.js","sources":["../../src/components/common/modal/Modal.tsx"],"sourcesContent":["import { useEffect, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface ModalProps {\n open: boolean;\n onClose: () => void;\n title: string;\n children: ReactNode;\n maxWidth?: string;\n}\n\nexport function Modal({ open, onClose, title, children, maxWidth }: ModalProps) {\n useEffect(() => {\n if (!open) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return createPortal(\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-text-primary/30\"\n onClick={onClose}\n />\n {/* Dialog */}\n <div className={`relative bg-surface-raised border border-surface-border rounded-lg shadow-xl w-full ${maxWidth ?? 'max-w-md'} mx-4 max-h-[85vh] flex flex-col`}>\n <div className=\"flex items-center justify-between px-6 py-4 border-b shrink-0\">\n <h2 className=\"text-sm font-medium text-text-primary\">{title}</h2>\n <button\n onClick={onClose}\n className=\"text-text-tertiary hover:text-text-primary text-lg leading-none\"\n >\n &times;\n </button>\n </div>\n <div className=\"px-6 py-5 overflow-y-auto\">{children}</div>\n </div>\n </div>,\n document.body,\n );\n}\n"],"names":["Modal","open","onClose","title","children","maxWidth","useEffect","handler","e","createPortal","jsxDEV"],"mappings":"sIAWO,SAASA,EAAM,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,EAAO,SAAAC,EAAU,SAAAC,GAAwB,CAU9E,OATAC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACL,EAAM,OACX,MAAMM,EAAWC,GAAqB,CAChCA,EAAE,MAAQ,UAAUN,EAAA,CAC1B,EACA,gBAAS,iBAAiB,UAAWK,CAAO,EACrC,IAAM,SAAS,oBAAoB,UAAWA,CAAO,CAC9D,EAAG,CAACN,EAAMC,CAAO,CAAC,EAEbD,EAEEQ,EAAAA,aACLC,EAAAA,OAAC,MAAA,CAAI,UAAU,sDAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CACC,UAAU,sCACV,QAASR,CAAA,EAFX,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,WAKC,MAAA,CAAI,UAAW,uFAAuFG,GAAY,UAAU,mCAC3H,SAAA,CAAAK,EAAAA,OAAC,MAAA,CAAI,UAAU,gEACb,SAAA,CAAAA,SAAC,KAAA,CAAG,UAAU,wCAAyC,SAAAP,CAAA,EAAvD,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA6D,EAC7DO,EAAAA,OAAC,SAAA,CACC,QAASR,EACT,UAAU,kEACX,SAAA,GAAA,EAHD,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAPF,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAQA,EACAQ,EAAAA,OAAC,MAAA,CAAI,UAAU,4BAA6B,SAAAN,CAAA,EAA5C,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAqD,CAAA,CAAA,EAVvD,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAWA,CAAA,CAAA,EAlBF,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAmBA,EACA,SAAS,IAAA,EAvBO,IAyBpB"}
@@ -0,0 +1,2 @@
1
+ import{j as s}from"./index-DgCS2Frb.js";import{w as n}from"./vendor-icons-CNyYGNsk.js";function i({namespace:t,size:e="sm"}){const a=e==="md"?"px-2 py-0.5 text-[12px] gap-1.5":"px-1.5 py-px text-[11px] gap-1",m=e==="md"?"w-2.5 h-2.5":"w-2 h-2";return s.jsxDEV("span",{className:`inline-flex items-center ${a} font-mono text-text-tertiary bg-surface-sunken/50 rounded-md`,children:[s.jsxDEV(n,{className:`${m} shrink-0 text-text-quaternary`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/NamespacePill.tsx",lineNumber:20,columnNumber:7},this),t]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/NamespacePill.tsx",lineNumber:19,columnNumber:5},this)}export{i as N};
2
+ //# sourceMappingURL=NamespacePill-eGsbJBFa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NamespacePill-DlqBTvFR.js","sources":["../../src/components/common/display/NamespacePill.tsx"],"sourcesContent":["import { Layers } from 'lucide-react';\n\ninterface NamespacePillProps {\n namespace: string;\n size?: 'sm' | 'md';\n}\n\n/**\n * The namespace a workflow belongs to — `graph` for graph flows in the graph\n * app, `durable` for procedural workflows. A subtle attribute pill, never a card.\n */\nexport function NamespacePill({ namespace, size = 'sm' }: NamespacePillProps) {\n const sizeClass = size === 'md'\n ? 'px-2 py-0.5 text-[12px] gap-1.5'\n : 'px-1.5 py-px text-[11px] gap-1';\n const iconClass = size === 'md' ? 'w-2.5 h-2.5' : 'w-2 h-2';\n\n return (\n <span className={`inline-flex items-center ${sizeClass} font-mono text-text-tertiary bg-surface-sunken/50 rounded-md`}>\n <Layers className={`${iconClass} shrink-0 text-text-quaternary`} strokeWidth={1.5} />\n {namespace}\n </span>\n );\n}\n"],"names":["NamespacePill","namespace","size","sizeClass","iconClass","jsxs","jsx","Layers"],"mappings":"8FAWO,SAASA,EAAc,CAAE,UAAAC,EAAW,KAAAC,EAAO,MAA4B,CAC5E,MAAMC,EAAYD,IAAS,KACvB,kCACA,iCACEE,EAAYF,IAAS,KAAO,cAAgB,UAElD,OACEG,EAAAA,KAAC,OAAA,CAAK,UAAW,4BAA4BF,CAAS,gEACpD,SAAA,CAAAG,MAACC,GAAO,UAAW,GAAGH,CAAS,iCAAkC,YAAa,IAAK,EAClFH,CAAA,EACH,CAEJ"}
1
+ {"version":3,"file":"NamespacePill-eGsbJBFa.js","sources":["../../src/components/common/display/NamespacePill.tsx"],"sourcesContent":["import { Layers } from 'lucide-react';\n\ninterface NamespacePillProps {\n namespace: string;\n size?: 'sm' | 'md';\n}\n\n/**\n * The namespace a workflow belongs to — `graph` for graph flows in the graph\n * app, `durable` for procedural workflows. A subtle attribute pill, never a card.\n */\nexport function NamespacePill({ namespace, size = 'sm' }: NamespacePillProps) {\n const sizeClass = size === 'md'\n ? 'px-2 py-0.5 text-[12px] gap-1.5'\n : 'px-1.5 py-px text-[11px] gap-1';\n const iconClass = size === 'md' ? 'w-2.5 h-2.5' : 'w-2 h-2';\n\n return (\n <span className={`inline-flex items-center ${sizeClass} font-mono text-text-tertiary bg-surface-sunken/50 rounded-md`}>\n <Layers className={`${iconClass} shrink-0 text-text-quaternary`} strokeWidth={1.5} />\n {namespace}\n </span>\n );\n}\n"],"names":["NamespacePill","namespace","size","sizeClass","iconClass","jsxDEV","Layers"],"mappings":"uFAWO,SAASA,EAAc,CAAE,UAAAC,EAAW,KAAAC,EAAO,MAA4B,CAC5E,MAAMC,EAAYD,IAAS,KACvB,kCACA,iCACEE,EAAYF,IAAS,KAAO,cAAgB,UAElD,OACEG,EAAAA,OAAC,OAAA,CAAK,UAAW,4BAA4BF,CAAS,gEACpD,SAAA,CAAAE,EAAAA,OAACC,GAAO,UAAW,GAAGF,CAAS,iCAAkC,YAAa,KAA9E,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAmF,EAClFH,CAAA,CAAA,EAFH,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as e,L as Ne}from"./index-DgCS2Frb.js";import{a as j}from"./vendor-query-DLp59M9_.js";import{b as ke}from"./roles-CpRcUIMm.js";import{i as $e}from"./useEventHooks-CUUeBSH1.js";import{P as Ce}from"./PageHeader-DcgGV0Y2.js";import{X as Oe,ae as le,at as we,ar as Re}from"./vendor-icons-CNyYGNsk.js";import{L as U,f as _e,c as Me}from"./vendor-react-zA2lQFDs.js";const fe=800,ge=270,A=40,Le=76,pe=24,qe=72,oe=fe-A-Le,ve=ge-pe-qe,E=pe+ve,xe=A+oe,g="0.5s cubic-bezier(0.4, 0, 0.2, 1)",he=9;function De(a){return`M ${(a.x-he).toFixed(1)} ${a.y.toFixed(1)} L ${(a.x+he).toFixed(1)} ${a.y.toFixed(1)}`}function Fe(a){return a.length===0?"":a.length===1?De(a[0]):a.map((s,o)=>`${o===0?"M":"L"} ${s.x.toFixed(1)} ${s.y.toFixed(1)}`).join(" ")}function Q(a){if(a.length===0)return"";if(a.length===1)return De(a[0]);const s=[];for(let o=0;o<a.length-1;o++){const l=a[Math.max(0,o-1)],p=a[o],m=a[o+1],r=a[Math.min(a.length-1,o+2)],d=(p.x+(m.x-l.x)/6).toFixed(1),u=(p.y+(m.y-l.y)/6).toFixed(1),n=(m.x-(r.x-p.x)/6).toFixed(1),c=(m.y-(r.y-p.y)/6).toFixed(1);o===0&&s.push(`M ${p.x.toFixed(1)} ${p.y.toFixed(1)}`),s.push(`C ${d} ${u}, ${n} ${c}, ${m.x.toFixed(1)} ${m.y.toFixed(1)}`)}return s.join(" ")}function Ae(a,s){if(a.length<2||s.length<2)return"";const o=Q(a),l=[...s].reverse(),p=Q(l),m=p.slice(p.indexOf("C"));return`${o} L ${l[0].x.toFixed(1)} ${l[0].y.toFixed(1)} ${m} Z`}function We(a){return a>=1e4?`${Math.round(a/1e3)}k`:a>=1e3?`${(a/1e3).toFixed(1)}k`:String(a)}function se(a){return a.length>0?a[a.length-1]:void 0}const M="#6366f1",W="#0ea5e9",R="#1E3A8A",X="#059669",ye="#b0e0e6",L="#5b93ad",Ie=13;function Te(a,s){const o=[...a].sort((r,d)=>r.y-d.y);let l=-1/0;const p=o.map(r=>{const d=Math.max(r.y+3,l+Ie);return l=d,{...r,labelY:d}}),m=p.length>0?p[p.length-1].labelY-s:0;if(m>0)for(const r of p)r.labelY-=m;return p}function Be({stations:a,selectedRole:s,onSelect:o,onUpstreamSelect:l,onPrioritySelect:p,periodHours:m}){const[r,d]=j.useState(null),u=a.length;if(u===0)return null;const n=t=>u===1?A+oe/2:A+t/(u-1)*oe,c=new Map(a.map((t,x)=>[t.role,n(x)])),N=a.map((t,x)=>{var k,H,Y,G;const b=t.target_per_hour??null,C=b!=null?b*m:null;return{idx:x,x:n(x),expected:C,actual:((k=t.metric)==null?void 0:k.resolved)??0,active:((H=t.metric)==null?void 0:H.claimed)??0,pending:((Y=t.metric)==null?void 0:Y.pending)??0,priorityCount:((G=t.metric)==null?void 0:G.priority_count)??0}}),v=N.some(t=>t.expected!=null),D=Math.max(1,...N.map(t=>t.expected??0),...N.map(t=>t.actual),...N.map(t=>t.expected!=null?t.pending:0))*1.15,$=t=>pe+ve*(1-Math.max(0,Math.min(t,D))/D),y=N.filter(t=>t.expected!=null),O=y.map(t=>({...t,y:$(t.expected)})),V=y.map(t=>({...t,y:$(t.actual)})),S=y.map(t=>({...t,y:$(t.active)})),P=y.map(t=>({...t,y:$(t.pending)})),I=Fe(O),T=Q(V),B=Q(S),Z=Q(P),_=se(V),K=se(O),q=se(S),J=se(P),ee=V.length>=2&&_?`${T} L ${_.x.toFixed(1)} ${E} L ${V[0].x.toFixed(1)} ${E} Z`:"",F=y.some(t=>t.pending>0||t.active>0),ae=F&&S.length>=2&&q?`${B} L ${q.x.toFixed(1)} ${E} L ${S[0].x.toFixed(1)} ${E} Z`:"",z=F?Ae(P,S):"",i=y.some(t=>t.active>0),h=y.some(t=>t.pending>t.active),w=Te([K?{key:"target",text:"Target",color:X,y:K.y}:null,_?{key:"actual",text:"Resolved",color:R,y:_.y}:null,i&&q?{key:"active",text:"Claimed",color:M,y:q.y}:null,h&&J?{key:"queued",text:"Pending",color:W,y:J.y}:null].filter(Boolean),E+4);return e.jsxDEV("svg",{viewBox:`0 0 ${fe} ${ge}`,className:"w-full h-full",preserveAspectRatio:"xMidYMid meet",style:{display:"block"},children:[a.map(t=>{if(!t.parent_role)return null;const x=c.get(t.parent_role);if(x==null)return null;const b=n(a.findIndex(C=>C.role===t.role));return e.jsxDEV("line",{x1:x,y1:E,x2:b,y2:E,stroke:"#e2e8f0",strokeWidth:.75},`dep-${t.role}`,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:239,columnNumber:16},this)}),ee&&e.jsxDEV("path",{d:ee,fill:R,opacity:.05,style:{transition:`d ${g}`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:243,columnNumber:20},this),ae&&e.jsxDEV("path",{d:ae,fill:M,opacity:.12,style:{transition:`d ${g}`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:249,columnNumber:9},this),z&&e.jsxDEV("path",{d:z,fill:W,opacity:.12,style:{transition:`d ${g}`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:252,columnNumber:9},this),I&&e.jsxDEV("path",{d:I,fill:"none",stroke:X,strokeWidth:.5,strokeLinejoin:"round",opacity:.9,style:{transition:`d ${g}`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:257,columnNumber:9},this),O.map(t=>e.jsxDEV("text",{x:t.x,y:t.y-3.5,textAnchor:"middle",fontSize:6.5,fill:X,fontFamily:"ui-monospace, monospace",fontWeight:"500",opacity:.7,style:{transition:`y ${g}`},children:Math.round(t.expected)},`tval-${t.idx}`,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:262,columnNumber:9},this)),F&&Z&&e.jsxDEV("path",{d:Z,fill:"none",stroke:W,strokeWidth:.75,strokeDasharray:"2 3",strokeLinecap:"round",opacity:.55,style:{transition:`d ${g}`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:280,columnNumber:9},this),B&&e.jsxDEV("path",{d:B,fill:"none",stroke:M,strokeWidth:.75,strokeDasharray:"2 3",strokeLinecap:"round",opacity:.5,style:{transition:`d ${g}`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:285,columnNumber:9},this),T&&e.jsxDEV("path",{d:T,fill:"none",stroke:R,strokeWidth:.6,strokeLinejoin:"round",strokeLinecap:"round",opacity:.65,style:{transition:`d ${g}`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:290,columnNumber:9},this),S.map((t,x)=>{if(t.pending<=0&&t.active<=0)return null;const b=Math.max(2.5,Math.min(5,2.5+t.active/10)),C=t.pending>t.active,k=Math.min(P[x].y-4,t.y-b-4);return e.jsxDEV("g",{children:[t.pending>0&&e.jsxDEV("text",{x:t.x,y:k,textAnchor:"middle",fontSize:7.5,fill:C?W:"#64748b",fontFamily:"ui-monospace, monospace",fontWeight:"600",style:{transition:`y ${g}`},children:t.pending},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:307,columnNumber:15},this),e.jsxDEV("g",{transform:`translate(${t.x} ${t.y})`,style:{transition:`transform ${g}`},children:[e.jsxDEV("circle",{r:b,fill:M,opacity:.85},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:321,columnNumber:15},this),t.active>0&&e.jsxDEV("text",{y:b+9,textAnchor:"middle",fontSize:7.5,fill:M,fontFamily:"ui-monospace, monospace",fontWeight:"600",children:t.active},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:323,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:320,columnNumber:13},this)]},`active-${t.idx}`,!0,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:305,columnNumber:11},this)}),N.map(t=>{var ue;const x=a[t.idx],b=t.x,C=t.expected!=null?$(t.actual):E,k=Math.max(2.25,Math.min(4,2.25+t.actual/160)),H=x.role===s,Y=r===t.idx,G=t.expected==null?"idle · set a target rate to plot pace":`${t.actual} resolved · target ${Math.round(t.expected)}`+(t.pending>t.active?` · ${t.pending-t.active} pending`:"")+(t.active>0?` · ${t.active} claimed`:"")+(t.priorityCount>0?` · ${t.priorityCount} priority`:""),te=G.length*5.5+20,de=Math.max(A+te/2+4,Math.min(xe-te/2-4,b)),me=C-k-10;return e.jsxDEV("g",{onClick:()=>o(x.role),onMouseEnter:()=>d(t.idx),onMouseLeave:()=>d(null),style:{cursor:"pointer"},children:[e.jsxDEV("g",{transform:`translate(${b} ${C})`,style:{transition:`transform ${g}`},children:[e.jsxDEV("circle",{r:22,fill:"transparent"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:365,columnNumber:15},this),e.jsxDEV("circle",{r:k,fill:R,opacity:.9,style:{transition:`r ${g}`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:366,columnNumber:15},this),t.expected!=null&&e.jsxDEV("text",{y:-k-5,textAnchor:"middle",fontSize:9.5,fill:R,fontFamily:"ui-monospace, monospace",fontWeight:"500",children:We(t.actual)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:368,columnNumber:17},this),Y&&!H&&e.jsxDEV("circle",{r:k+3,fill:"none",stroke:R,strokeWidth:1,opacity:.4},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:372,columnNumber:44},this),H&&e.jsxDEV("circle",{r:k+4,fill:"none",stroke:"#6366f1",strokeWidth:2},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:373,columnNumber:30},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:364,columnNumber:13},this),t.priorityCount>0&&e.jsxDEV("g",{transform:`translate(${b+15} ${Math.max(C-15,12)})`,onClick:ne=>{ne.stopPropagation(),p==null||p(x.role)},style:{cursor:"pointer",transition:`transform ${g}`},children:[e.jsxDEV("title",{children:`${t.priorityCount} past the priority threshold — click to pull oldest first`},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:389,columnNumber:17},this),e.jsxDEV("circle",{r:6.5+(String(t.priorityCount).length-1)*2,fill:ye,opacity:.9},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:390,columnNumber:17},this),e.jsxDEV("text",{y:2.5,textAnchor:"middle",fontSize:7,fill:L,fontFamily:"ui-monospace, monospace",fontWeight:"700",children:t.priorityCount},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:395,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:381,columnNumber:15},this),(((ue=x.upstream_roles)==null?void 0:ue.length)??0)>0&&e.jsxDEV("g",{transform:`translate(${b-20} ${E})`,onClick:ne=>{ne.stopPropagation(),l==null||l(x.upstream_roles[0])},style:{cursor:"pointer"},children:[e.jsxDEV("title",{children:`Fed by ${x.upstream_roles.join(", ")} — click to view that sequence`},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:421,columnNumber:17},this),e.jsxDEV("circle",{r:9,cy:-6,fill:"transparent"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:422,columnNumber:17},this),e.jsxDEV("path",{d:"M -7 -14 C -3 -14 -1 -9 0 -2",fill:"none",stroke:"#94a3b8",strokeWidth:1,strokeDasharray:"2 2",strokeLinecap:"round"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:423,columnNumber:17},this),e.jsxDEV("path",{d:"M 0 -2 L 8 -2",stroke:"#94a3b8",strokeWidth:1,strokeLinecap:"round"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:424,columnNumber:17},this),e.jsxDEV("path",{d:"M 8 -2 l -3.5 -2 v 4 z",fill:"#94a3b8"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:425,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:413,columnNumber:15},this),e.jsxDEV("text",{x:b,y:E+14,textAnchor:"middle",fontSize:9.5,fill:"#475569",fontFamily:"ui-sans-serif, sans-serif",fontWeight:"500",children:x.title??x.role},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:430,columnNumber:13},this),e.jsxDEV("text",{x:b,y:E+26,textAnchor:"middle",fontSize:8,fill:"#94a3b8",fontFamily:"ui-monospace, monospace",children:x.role},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:433,columnNumber:13},this),Y&&e.jsxDEV("g",{children:[e.jsxDEV("rect",{x:de-te/2,y:me-16,width:te,height:19,rx:3,fill:"#0f172a",opacity:.88},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:440,columnNumber:17},this),e.jsxDEV("text",{x:de,y:me-3,textAnchor:"middle",fontSize:8.5,fill:"white",fontFamily:"ui-monospace, monospace",children:G},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:441,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:439,columnNumber:15},this)]},x.role,!0,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:356,columnNumber:11},this)}),!v&&e.jsxDEV("text",{x:A+oe/2,y:E+48,textAnchor:"middle",fontSize:8.5,fill:"#94a3b8",fontFamily:"ui-sans-serif, sans-serif",children:"Set target_per_hour on each role in Admin → Roles to enable the pace chart"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:452,columnNumber:9},this),w.map(t=>e.jsxDEV("text",{x:xe+6,y:t.labelY,fontSize:8,fill:t.color,fontFamily:"ui-sans-serif, sans-serif",fontWeight:t.key==="actual"?700:500,opacity:t.key==="active"?.85:1,style:{transition:`y ${g}`},children:t.text},t.key,!1,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:459,columnNumber:9},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/PaceChart.tsx",lineNumber:232,columnNumber:5},this)}function ce(a){const s=`/escalations/available?role=${encodeURIComponent(a.role)}`;if(a.priority_facet){const o=JSON.stringify([{field:`metadata.${a.priority_facet}`,direction:"asc"}]);return`${s}&orderBy=${encodeURIComponent(o)}`}return`${s}&sort_by=created_at&order=asc`}const Pe=["15m","1h","24h","7d","30d"],ze=a=>Pe.includes(a);function re(a){if(a==null)return"—";if(a<1){const s=Math.round(a*60);return s<=0?"< 1s":`${s}s`}return a<60?`${a.toFixed(0)}m`:`${(a/60).toFixed(1)}h`}function ie({label:a,value:s}){return e.jsxDEV("div",{className:"flex items-center justify-between py-1",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary uppercase tracking-wider",children:a},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:38,columnNumber:7},this),e.jsxDEV("span",{className:"text-xs font-mono font-medium text-text-primary tabular-nums",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:39,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:37,columnNumber:5},this)}function He({period:a,onChange:s}){return e.jsxDEV("div",{className:"flex items-center gap-1 mb-4",children:Pe.map(o=>e.jsxDEV("button",{onClick:()=>s(o),className:`px-2 py-0.5 text-[10px] font-mono rounded transition-colors ${a===o?"bg-accent/10 text-accent font-semibold":"text-text-quaternary hover:text-text-secondary"}`,children:o},o,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:48,columnNumber:9},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:46,columnNumber:5},this)}function Ye({role:a,globalPeriod:s,onClose:o}){const[l,p]=j.useState(ze(s)?s:"24h"),{data:m}=Ne(l),r=m==null?void 0:m.stations.find(c=>c.role===a.role),d=a.sla_minutes??void 0,u=a.target_per_hour??void 0,n=a.worker_count??void 0;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex items-start justify-between mb-1",children:[e.jsxDEV("div",{className:"min-w-0 flex-1",children:[e.jsxDEV("div",{className:"flex items-baseline gap-1.5 flex-wrap",children:[e.jsxDEV("span",{className:"text-sm font-mono font-bold text-text-primary",children:a.role},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:80,columnNumber:13},this),a.title&&e.jsxDEV("span",{className:"text-[10px] text-text-secondary",children:a.title},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:82,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:79,columnNumber:11},this),a.description&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5 line-clamp-2 leading-relaxed",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:86,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:78,columnNumber:9},this),e.jsxDEV("button",{onClick:o,className:"text-text-quaternary hover:text-text-secondary transition-colors mt-0.5 shrink-0 ml-2",children:e.jsxDEV(Oe,{className:"w-4 h-4"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:95,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:91,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:77,columnNumber:7},this),e.jsxDEV(U,{to:`/admin/roles/${encodeURIComponent(a.role)}`,className:"flex items-center gap-1 text-[10px] text-accent hover:underline mb-4",children:[e.jsxDEV(le,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:103,columnNumber:9},this),"Edit in Roles"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:99,columnNumber:7},this),e.jsxDEV(He,{period:l,onChange:p},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:107,columnNumber:7},this),(u||d||n)&&e.jsxDEV("div",{className:"flex items-center gap-4 mb-4 text-[10px]",children:[u&&e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"font-mono font-semibold text-text-primary",children:[u,"/h"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:114,columnNumber:15},this),e.jsxDEV("div",{className:"text-text-quaternary uppercase tracking-wider text-[8.5px]",children:"target"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:115,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:113,columnNumber:13},this),d&&e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"font-mono font-semibold text-text-primary",children:[d,"m"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:120,columnNumber:15},this),e.jsxDEV("div",{className:"text-text-quaternary uppercase tracking-wider text-[8.5px]",children:"SLA"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:121,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:119,columnNumber:13},this),n&&e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"font-mono font-semibold text-text-primary",children:n},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:126,columnNumber:15},this),e.jsxDEV("div",{className:"text-text-quaternary uppercase tracking-wider text-[8.5px]",children:"workers"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:127,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:125,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:111,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-2 gap-x-3",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] text-text-quaternary uppercase tracking-wider mb-1.5",children:"Wait (queue)"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:136,columnNumber:11},this),e.jsxDEV(ie,{label:"P99",value:re((r==null?void 0:r.wait.p99)??null)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:137,columnNumber:11},this),e.jsxDEV(ie,{label:"avg",value:re((r==null?void 0:r.wait.avg)??null)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:138,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:135,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] text-text-quaternary uppercase tracking-wider mb-1.5",children:"Work (proc.)"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:141,columnNumber:11},this),e.jsxDEV(ie,{label:"P99",value:re((r==null?void 0:r.work.p99)??null)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:142,columnNumber:11},this),e.jsxDEV(ie,{label:"avg",value:re((r==null?void 0:r.work.avg)??null)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:143,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:140,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:134,columnNumber:7},this),e.jsxDEV("div",{className:"border-t border-surface-border/40 pt-2 mt-3 space-y-1.5",children:[d&&e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"SLA target"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:151,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs font-mono text-text-secondary",children:[d,"m"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:152,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:150,columnNumber:11},this),r&&r.priority_count>0&&e.jsxDEV(U,{to:ce(a),className:"flex items-center justify-between group",children:[e.jsxDEV("span",{className:"text-[10px]",style:{color:L},children:[r.priority_count," priority — pull oldest first"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:160,columnNumber:13},this),e.jsxDEV(le,{className:"w-3 h-3 transition-colors",style:{color:L}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:163,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:156,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:148,columnNumber:7},this),e.jsxDEV("div",{className:"mt-4 border-t border-surface-border/40 pt-3",children:e.jsxDEV(U,{to:`/escalations/available?role=${encodeURIComponent(a.role)}`,className:"flex items-center gap-1.5 text-[10px] text-accent hover:underline",children:["View full queue",e.jsxDEV(le,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:177,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:172,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:171,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:75,columnNumber:5},this)}function Ge({allMetrics:a,orderedRoles:s,period:o}){const l=a.reduce((n,c)=>n+c.pending,0),p=a.reduce((n,c)=>n+c.resolved,0),m=a.reduce((n,c)=>n+c.priority_count,0),r=new Map(a.map(n=>[n.role,n])),d=a.filter(n=>n.priority_count>0).length,u=a.filter(n=>n.pending>0).length;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("p",{className:"text-[9px] text-text-quaternary uppercase tracking-wider mb-3",children:["Pipeline · ",o]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:203,columnNumber:7},this),e.jsxDEV("div",{className:"mb-4",children:d>0?e.jsxDEV("p",{className:"text-[11px]",style:{color:L},children:[d," station",d>1?"s":""," with priority items"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:210,columnNumber:11},this):u>0?e.jsxDEV("p",{className:"text-[11px] text-status-warning",children:[u," station",u>1?"s":""," with backlog"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:214,columnNumber:11},this):p>0?e.jsxDEV("p",{className:"text-[11px] text-status-success",children:"Flowing — queue clear"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:218,columnNumber:11},this):e.jsxDEV("p",{className:"text-[11px] text-text-quaternary",children:"Quiet — awaiting work"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:220,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:208,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-1.5 mb-4",children:[e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV("span",{className:"text-[9px] text-text-quaternary uppercase tracking-wider",children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:227,columnNumber:11},this),e.jsxDEV("span",{className:`text-xs font-mono tabular-nums ${l>0?"text-text-primary font-semibold":"text-text-quaternary"}`,children:l},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:228,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:226,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV("span",{className:"text-[9px] text-text-quaternary uppercase tracking-wider",children:["Resolved · ",o]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:233,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs font-mono tabular-nums text-text-secondary",children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:234,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:232,columnNumber:9},this),m>0&&e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV("span",{className:"text-[9px] text-text-quaternary uppercase tracking-wider",children:"Priority"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:238,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs font-mono tabular-nums font-semibold",style:{color:L},children:m},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:239,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:237,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:225,columnNumber:7},this),e.jsxDEV("div",{className:"border-t border-surface-border/40 pt-2 mb-1",children:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-[8px] text-text-quaternary uppercase tracking-wider flex-1",children:"Station"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:249,columnNumber:11},this),e.jsxDEV("span",{className:"text-[8px] text-text-quaternary uppercase tracking-wider w-8 text-right shrink-0",children:"pend"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:250,columnNumber:11},this),e.jsxDEV("span",{className:"text-[8px] text-text-quaternary uppercase tracking-wider w-8 text-right shrink-0",children:"clmd"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:251,columnNumber:11},this),e.jsxDEV("span",{className:"text-[8px] text-text-quaternary uppercase tracking-wider w-8 text-right shrink-0",children:"res"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:252,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:248,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:247,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-0.5",children:s.map(n=>{const c=r.get(n.role),N=(c==null?void 0:c.pending)??0,v=(c==null?void 0:c.claimed)??0,f=(c==null?void 0:c.resolved)??0,D=(c==null?void 0:c.priority_count)??0,$=n.title||n.role,y=D>0,O=N>0;return e.jsxDEV("div",{className:"flex items-center gap-2 py-0.5",children:[e.jsxDEV("span",{className:`text-[10px] font-mono flex-1 truncate ${O?"text-text-primary":"text-text-quaternary"}`,children:[$,y&&e.jsxDEV("span",{className:"ml-1 text-[8px] font-semibold",style:{color:L},children:[D," PRIORITY"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:277,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:270,columnNumber:15},this),e.jsxDEV("span",{className:`text-[10px] font-mono tabular-nums w-8 text-right shrink-0 ${O?"text-text-primary font-semibold":"text-text-quaternary"}`,children:N>0?N:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:282,columnNumber:15},this),e.jsxDEV("span",{className:`text-[10px] font-mono tabular-nums w-8 text-right shrink-0 ${v>0?"text-accent":"text-text-quaternary"}`,children:v>0?v:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:289,columnNumber:15},this),e.jsxDEV("span",{className:`text-[10px] font-mono tabular-nums w-8 text-right shrink-0 ${f>0?"text-text-secondary":"text-text-quaternary"}`,children:f>0?f:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:292,columnNumber:15},this)]},n.role,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:269,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:257,columnNumber:7},this),e.jsxDEV("p",{className:"text-[9px] text-text-quaternary mt-5",children:"Select a station for queue detail."},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:300,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:202,columnNumber:5},this)}function Ue({role:a,allMetrics:s,orderedRoles:o,globalPeriod:l,onClose:p}){return e.jsxDEV("div",{className:"w-[280px] shrink-0 px-6 py-8 flex flex-col overflow-y-auto min-h-0",children:a?e.jsxDEV(Ye,{role:a,globalPeriod:l,onClose:p},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:317,columnNumber:9},this):e.jsxDEV(Ge,{allMetrics:s,orderedRoles:o,period:l},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:319,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/StationDetailPanel.tsx",lineNumber:315,columnNumber:5},this)}const Ee=`${X}14`,je=`${W}14`,Ve=`${M}14`,Se=`${R}14`,Qe=["15m","1h","24h","7d","30d"],Xe={"15m":.25,"1h":1,"24h":24,"7d":168,"30d":720};function Ze(a){const s=a.filter(r=>r.ops_visible),o=new Map(s.map(r=>[r.role,r])),l=new Set,m=s.filter(r=>!r.parent_role||!o.has(r.parent_role)).map(r=>{const d=[],u=[{role:r,depth:0}];for(;u.length>0;){const n=u.shift();l.has(n.role.role)||(l.add(n.role.role),d.push(n),s.filter(c=>c.parent_role===n.role.role&&!l.has(c.role)).forEach(c=>u.push({role:c,depth:n.depth+1})))}return{origin:r,stations:d}});return s.filter(r=>!l.has(r.role)).forEach(r=>m.push({origin:r,stations:[{role:r,depth:0}]})),m.sort((r,d)=>d.stations.length-r.stations.length||r.origin.role.localeCompare(d.origin.role))}function be(a){if(a==null)return"—";if(a<1){const s=Math.round(a*60);return s<=0?"< 1s":`${s}s`}return a<60?`${a.toFixed(0)}m`:`${(a/60).toFixed(1)}h`}function Ke(a,s){if(!s||a===0)return{pct:null,color:"bg-surface-border"};const o=a/s,l=Math.round(o*100),p=o>1?"bg-status-warning":o<.2?"bg-status-draft":"bg-status-success";return{pct:l,color:p}}function Je({role:a,metric:s,selected:o,onClick:l}){var v;const p=(s==null?void 0:s.pending)??0,m=(s==null?void 0:s.claimed)??0,r=(s==null?void 0:s.resolved)??0,d=(s==null?void 0:s.priority_count)??0,u=a.target_per_hour??null,{pct:n,color:c}=Ke(p,u),N=n!=null?Math.min(100,n):0;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{role:"button",tabIndex:0,onClick:l,onKeyDown:f=>{f.key==="Enter"&&l()},className:`grid items-center gap-4 pr-3 cursor-pointer transition-colors ${o?"border-l-2 !border-l-accent pl-2.5":"pl-3"}`,style:{gridTemplateColumns:"1fr 64px 56px 56px 60px 72px 72px 104px"},children:[e.jsxDEV("div",{className:"flex items-center gap-1.5 min-w-0 py-1.5",children:[e.jsxDEV("span",{className:"font-mono font-bold text-text-primary truncate text-[11px]",children:a.role},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:156,columnNumber:11},this),a.title&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary truncate",children:a.title},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:162,columnNumber:13},this),(((v=a.upstream_roles)==null?void 0:v.length)??0)>0&&e.jsxDEV("span",{title:`Fed by ${a.upstream_roles.join(", ")}`,className:"shrink-0 leading-none",children:e.jsxDEV(Re,{className:"w-3 h-3 text-text-quaternary"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:166,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:165,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:155,columnNumber:9},this),e.jsxDEV("div",{className:"self-stretch flex items-center justify-end px-1.5",style:{backgroundColor:Ee},children:e.jsxDEV("span",{className:`text-xs font-mono tabular-nums ${u!=null?"text-text-secondary":"text-text-quaternary"}`,children:u??"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:176,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:172,columnNumber:9},this),e.jsxDEV("div",{className:"self-stretch flex items-center justify-end px-1.5",style:{backgroundColor:je},children:e.jsxDEV("span",{className:`text-xs font-mono tabular-nums ${p>0?"text-text-primary font-semibold":"text-text-quaternary"}`,children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:190,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:186,columnNumber:9},this),e.jsxDEV("div",{className:"self-stretch flex items-center justify-end px-1.5",style:{backgroundColor:Ve},children:e.jsxDEV("span",{className:`text-xs font-mono tabular-nums ${m>0?"text-accent font-semibold":"text-text-quaternary"}`,children:m},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:204,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:200,columnNumber:9},this),e.jsxDEV("div",{className:"self-stretch flex items-center justify-end px-1.5",style:{backgroundColor:Se},children:e.jsxDEV("span",{className:"text-xs font-mono tabular-nums text-text-quaternary",children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:218,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:214,columnNumber:9},this),e.jsxDEV("span",{className:"text-xs font-mono tabular-nums text-right py-1.5 text-text-secondary",children:be((s==null?void 0:s.wait.p99)??null)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:224,columnNumber:9},this),e.jsxDEV("span",{className:"text-xs font-mono tabular-nums text-right py-1.5 text-text-secondary",children:be((s==null?void 0:s.work.p99)??null)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:229,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-2 py-1.5",children:[e.jsxDEV("div",{className:"w-12 h-1.5 bg-surface-sunken rounded-full overflow-hidden shrink-0",children:e.jsxDEV("div",{className:`h-full rounded-full ${c}`,style:{width:`${N}%`}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:236,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:235,columnNumber:11},this),e.jsxDEV("span",{className:`text-[10px] font-mono tabular-nums ${n!=null&&n>100?"text-status-warning font-semibold":"text-text-quaternary"}`,children:n!=null?`${n}%`:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:238,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:234,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:144,columnNumber:7},this),d>0&&e.jsxDEV("div",{className:"flex items-center gap-1.5 pb-2 pl-3.5",children:[e.jsxDEV("span",{className:"w-2.5 h-2.5 rounded-full dot-ring shrink-0",style:{backgroundColor:ye}},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:253,columnNumber:11},this),e.jsxDEV(U,{to:ce(a),className:"text-[10px] hover:underline",style:{color:L},onClick:f=>f.stopPropagation(),children:[d," priority — pull oldest first →"]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:257,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:252,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:143,columnNumber:5},this)}function ea(){const a=[{label:"ROLE"},{label:"TARGET/H",band:Ee,hue:X},{label:"PENDING",band:je,hue:W},{label:"CLAIMED",band:Ve,hue:M},{label:"RESOLVED",band:Se,hue:R},{label:"P99 WAIT"},{label:"P99 WORK"},{label:"TREND"}];return e.jsxDEV("div",{className:"grid items-center gap-4 px-3 border-b border-surface-border mb-0.5",style:{gridTemplateColumns:"1fr 64px 56px 56px 60px 72px 72px 104px"},children:a.map((s,o)=>s.band?e.jsxDEV("div",{className:"self-stretch flex items-center justify-end px-1.5",style:{backgroundColor:s.band},children:e.jsxDEV("span",{className:"text-[9px] font-semibold uppercase tracking-wider",style:{color:s.hue},children:s.label},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:297,columnNumber:13},this)},s.label,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:292,columnNumber:11},this):e.jsxDEV("span",{className:`text-[9px] font-semibold uppercase tracking-wider text-text-quaternary py-1.5 ${o>0&&o<7?"text-right":""}`,children:s.label},s.label,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:305,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:286,columnNumber:5},this)}function la(){var z;const[a,s]=j.useState("1h"),[o,l]=j.useState(null),[p,m]=j.useState(!1);$e();const{data:r,isLoading:d,refetch:u}=ke(),{data:n,isLoading:c,refetch:N}=Ne(a),v=(r==null?void 0:r.roles)??[],f=(n==null?void 0:n.stations)??[],D=j.useMemo(()=>Ze(v),[v]),[$,y]=_e(),O=$.get("fragment"),V=D.find(i=>i.origin.role===O)??D[0]??null,S=j.useCallback(i=>{l(null),y(h=>{const w=new URLSearchParams(h);return w.set("fragment",i),w})},[y]),P=(V==null?void 0:V.stations)??[],I=j.useMemo(()=>new Set(P.map(({role:i})=>i.role)),[P]),T=j.useMemo(()=>f.filter(i=>I.has(i.role)),[f,I]),B=j.useMemo(()=>P.map(({role:i})=>({role:i.role,title:i.title,parent_role:i.parent_role,target_per_hour:i.target_per_hour??null,upstream_roles:i.upstream_roles??[],metric:f.find(h=>h.role===i.role)})),[P,f]),Z=j.useCallback(i=>{const h=D.find(w=>w.stations.some(({role:t})=>t.role===i));h&&S(h.origin.role)},[D,S]),_=Me(),K=j.useCallback(i=>{const h=v.find(w=>w.role===i);h&&_(ce(h))},[v,_]),q=((z=P.find(({role:i})=>i.role===o))==null?void 0:z.role)??null,J=d||c,ee=async()=>{m(!0),await Promise.all([u(),N()]),m(!1)},F=i=>l(h=>h===i?null:i),ae=e.jsxDEV("div",{className:"flex items-center gap-0.5",children:Qe.map(i=>e.jsxDEV("button",{onClick:()=>s(i),className:`px-2.5 py-1 text-[10px] font-mono rounded transition-colors ${a===i?"bg-accent/10 text-accent font-semibold":"text-text-quaternary hover:text-text-secondary"}`,children:i},i,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:425,columnNumber:9},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:423,columnNumber:5},this);return e.jsxDEV("div",{className:"flex flex-col flex-1 min-h-0",children:[e.jsxDEV(Ce,{title:"Pace Board",docsHash:"#docs:dashboard.md:pace-board",center:ae,actions:e.jsxDEV("button",{onClick:ee,disabled:p,className:"text-text-quaternary hover:text-text-secondary transition-colors disabled:opacity-40",children:e.jsxDEV(we,{className:`w-3.5 h-3.5 ${p?"animate-spin":""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:452,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:447,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:442,columnNumber:7},this),J?e.jsxDEV("div",{className:"animate-pulse space-y-6 mt-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-64"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:459,columnNumber:11},this),e.jsxDEV("div",{className:"h-64 bg-surface-sunken rounded w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:460,columnNumber:11},this),e.jsxDEV("div",{className:"space-y-3",children:[1,2,3].map(i=>e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-full"},i,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:463,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:461,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:458,columnNumber:9},this):D.length===0?e.jsxDEV("div",{className:"mt-8",children:[e.jsxDEV("p",{className:"text-sm text-text-secondary mb-2",children:"Stations appear here once roles are marked visible in Operations."},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:469,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:["Go to"," ",e.jsxDEV(U,{to:"/admin/roles",className:"text-accent hover:underline",children:"Roles"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:472,columnNumber:13},this)," ","and enable ",e.jsxDEV("strong",{children:"Visible in Operations"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:475,columnNumber:24},this)," on roles that represent pipeline stations."]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:470,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:468,columnNumber:9},this):e.jsxDEV("div",{className:"flex flex-col flex-1 min-h-0",children:[D.length>1&&e.jsxDEV("div",{className:"flex items-center gap-0.5 px-4 pt-2",children:D.map(i=>{const h=i.origin.role===(V==null?void 0:V.origin.role);return e.jsxDEV("button",{onClick:()=>S(i.origin.role),className:`px-2.5 py-1 text-[10px] font-mono rounded transition-colors ${h?"bg-accent/10 text-accent font-semibold":"text-text-quaternary hover:text-text-secondary"}`,children:[i.origin.title??i.origin.role,e.jsxDEV("span",{className:`ml-1.5 tabular-nums ${h?"text-accent/60":"text-text-quaternary/60"}`,children:i.stations.length},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:500,columnNumber:21},this)]},i.origin.role,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:490,columnNumber:19},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:486,columnNumber:13},this),e.jsxDEV("div",{className:"flex-1 min-h-0 flex items-stretch overflow-hidden",children:[e.jsxDEV("div",{className:"flex-1 min-w-0 min-h-0 flex flex-col justify-center overflow-hidden p-4",children:e.jsxDEV(Be,{stations:B,selectedRole:o,onSelect:F,onUpstreamSelect:Z,onPrioritySelect:K,periodHours:Xe[a]},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:513,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:512,columnNumber:13},this),e.jsxDEV("div",{className:"w-px bg-surface-border shrink-0 self-stretch"},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:523,columnNumber:13},this),e.jsxDEV(Ue,{role:q,allMetrics:T,orderedRoles:P.map(i=>i.role),globalPeriod:a,onClose:()=>l(null)},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:525,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:510,columnNumber:11},this),e.jsxDEV("div",{className:"max-h-[45vh] flex-none flex flex-col border-t border-surface-border overflow-hidden",children:[e.jsxDEV(ea,{},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:536,columnNumber:13},this),e.jsxDEV("div",{className:"flex-1 min-h-0 overflow-y-auto divide-y divide-surface-border/30",children:P.map(({role:i})=>e.jsxDEV(Je,{role:i,metric:f.find(h=>h.role===i.role),selected:o===i.role,onClick:()=>F(i.role)},i.role,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:539,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:537,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:535,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:481,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operations/OperationsPage.tsx",lineNumber:441,columnNumber:5},this)}export{la as OperationsPage};
2
+ //# sourceMappingURL=OperationsPage-DODPFmf2.js.map