@hotmeshio/long-tail 0.1.8 → 0.1.9

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 (201) hide show
  1. package/build/api/escalations.js +40 -5
  2. package/build/api/tasks.d.ts +25 -1
  3. package/build/api/tasks.js +49 -0
  4. package/build/api/workflows.js +8 -1
  5. package/build/examples/seed.js +18 -0
  6. package/build/examples/types/envelopes.d.ts +8 -0
  7. package/build/examples/types/index.d.ts +1 -1
  8. package/build/examples/workers.js +2 -0
  9. package/build/examples/workflows/basic-signal/activities.d.ts +17 -0
  10. package/build/examples/workflows/basic-signal/activities.js +18 -0
  11. package/build/examples/workflows/basic-signal/index.d.ts +17 -0
  12. package/build/examples/workflows/basic-signal/index.js +116 -0
  13. package/build/index.d.ts +1 -0
  14. package/build/index.js +4 -1
  15. package/build/lib/db/schemas/002_seed.sql +9 -1
  16. package/build/modules/ltconfig.d.ts +8 -1
  17. package/build/modules/ltconfig.js +12 -2
  18. package/build/routes/tasks.js +23 -0
  19. package/build/routes/workflows/invocation.js +1 -1
  20. package/build/sdk/index.d.ts +15 -0
  21. package/build/sdk/index.js +1 -0
  22. package/build/services/interceptor/index.js +9 -3
  23. package/build/services/orchestrator/condition.d.ts +34 -0
  24. package/build/services/orchestrator/condition.js +92 -0
  25. package/build/services/workflow-invocation.d.ts +1 -1
  26. package/build/services/workflow-invocation.js +4 -1
  27. package/build/start/index.d.ts +24 -0
  28. package/build/start/index.js +24 -0
  29. package/build/start/workers.d.ts +6 -8
  30. package/build/start/workers.js +25 -2
  31. package/build/system/mcp-servers/admin/workflows.js +5 -0
  32. package/build/tsconfig.tsbuildinfo +1 -1
  33. package/build/types/envelope.d.ts +7 -0
  34. package/build/types/sdk.d.ts +2 -0
  35. package/build/types/startup.d.ts +29 -2
  36. package/dashboard/dist/assets/{AdminDashboard-B15jSEV2.js → AdminDashboard-DUrSBQOl.js} +2 -2
  37. package/dashboard/dist/assets/{AdminDashboard-B15jSEV2.js.map → AdminDashboard-DUrSBQOl.js.map} +1 -1
  38. package/dashboard/dist/assets/{AvailableEscalationsPage-0V2yvKak.js → AvailableEscalationsPage-Dbd1qUK_.js} +2 -2
  39. package/dashboard/dist/assets/{AvailableEscalationsPage-0V2yvKak.js.map → AvailableEscalationsPage-Dbd1qUK_.js.map} +1 -1
  40. package/dashboard/dist/assets/{BotPicker-B4UxHcek.js → BotPicker-Cg5iNEkm.js} +2 -2
  41. package/dashboard/dist/assets/{BotPicker-B4UxHcek.js.map → BotPicker-Cg5iNEkm.js.map} +1 -1
  42. package/dashboard/dist/assets/{CollapsibleSection-BBexNWVd.js → CollapsibleSection-Kd9UIyeU.js} +2 -2
  43. package/dashboard/dist/assets/{CollapsibleSection-BBexNWVd.js.map → CollapsibleSection-Kd9UIyeU.js.map} +1 -1
  44. package/dashboard/dist/assets/{ConfirmDeleteModal-DlPDJSq_.js → ConfirmDeleteModal-DZMgmlof.js} +2 -2
  45. package/dashboard/dist/assets/{ConfirmDeleteModal-DlPDJSq_.js.map → ConfirmDeleteModal-DZMgmlof.js.map} +1 -1
  46. package/dashboard/dist/assets/{CopyableId-BxHW1ahb.js → CopyableId-cPFTRm8q.js} +2 -2
  47. package/dashboard/dist/assets/{CopyableId-BxHW1ahb.js.map → CopyableId-cPFTRm8q.js.map} +1 -1
  48. package/dashboard/dist/assets/{CredentialsPage-Bp_Y1Szk.js → CredentialsPage-DJablIbs.js} +2 -2
  49. package/dashboard/dist/assets/{CredentialsPage-Bp_Y1Szk.js.map → CredentialsPage-DJablIbs.js.map} +1 -1
  50. package/dashboard/dist/assets/{CustomDurationPicker-ByBFqXSO.js → CustomDurationPicker-NgIP6YDW.js} +2 -2
  51. package/dashboard/dist/assets/{CustomDurationPicker-ByBFqXSO.js.map → CustomDurationPicker-NgIP6YDW.js.map} +1 -1
  52. package/dashboard/dist/assets/{DataTable-DyIXg-tQ.js → DataTable-CTRhTAfT.js} +2 -2
  53. package/dashboard/dist/assets/{DataTable-DyIXg-tQ.js.map → DataTable-CTRhTAfT.js.map} +1 -1
  54. package/dashboard/dist/assets/{ElapsedCell-BgnA0qpS.js → ElapsedCell-HcSJ_MMs.js} +2 -2
  55. package/dashboard/dist/assets/{ElapsedCell-BgnA0qpS.js.map → ElapsedCell-HcSJ_MMs.js.map} +1 -1
  56. package/dashboard/dist/assets/{EmptyState-DlMImvgm.js → EmptyState-joNbd4gg.js} +2 -2
  57. package/dashboard/dist/assets/{EmptyState-DlMImvgm.js.map → EmptyState-joNbd4gg.js.map} +1 -1
  58. package/dashboard/dist/assets/{EscalationsOverview-D90kdfw1.js → EscalationsOverview-DpXDnQux.js} +2 -2
  59. package/dashboard/dist/assets/{EscalationsOverview-D90kdfw1.js.map → EscalationsOverview-DpXDnQux.js.map} +1 -1
  60. package/dashboard/dist/assets/{EventTable-BNxtlgNz.js → EventTable-CYem3v8n.js} +2 -2
  61. package/dashboard/dist/assets/{EventTable-BNxtlgNz.js.map → EventTable-CYem3v8n.js.map} +1 -1
  62. package/dashboard/dist/assets/{FilterBar-BTiaAhCx.js → FilterBar-BiO8SOzc.js} +2 -2
  63. package/dashboard/dist/assets/{FilterBar-BTiaAhCx.js.map → FilterBar-BiO8SOzc.js.map} +1 -1
  64. package/dashboard/dist/assets/{ListToolbar-BUcagSCn.js → ListToolbar-6yRDh2e9.js} +2 -2
  65. package/dashboard/dist/assets/{ListToolbar-BUcagSCn.js.map → ListToolbar-6yRDh2e9.js.map} +1 -1
  66. package/dashboard/dist/assets/{McpOverview-B-tCvz8C.js → McpOverview-CUgSxkQe.js} +2 -2
  67. package/dashboard/dist/assets/{McpOverview-B-tCvz8C.js.map → McpOverview-CUgSxkQe.js.map} +1 -1
  68. package/dashboard/dist/assets/{McpQueryDetailPage-DPlF1wYb.js → McpQueryDetailPage-BWbinTM_.js} +2 -2
  69. package/dashboard/dist/assets/{McpQueryDetailPage-DPlF1wYb.js.map → McpQueryDetailPage-BWbinTM_.js.map} +1 -1
  70. package/dashboard/dist/assets/{McpQueryPage-Bz7AdcfR.js → McpQueryPage-lV6kfDG5.js} +2 -2
  71. package/dashboard/dist/assets/{McpQueryPage-Bz7AdcfR.js.map → McpQueryPage-lV6kfDG5.js.map} +1 -1
  72. package/dashboard/dist/assets/{McpRunDetailPage-Di_qpL2V.js → McpRunDetailPage-D6gaxH3_.js} +2 -2
  73. package/dashboard/dist/assets/{McpRunDetailPage-Di_qpL2V.js.map → McpRunDetailPage-D6gaxH3_.js.map} +1 -1
  74. package/dashboard/dist/assets/{McpRunsPage-BBgybBEa.js → McpRunsPage-DKvTklh9.js} +2 -2
  75. package/dashboard/dist/assets/{McpRunsPage-BBgybBEa.js.map → McpRunsPage-DKvTklh9.js.map} +1 -1
  76. package/dashboard/dist/assets/{Modal-CaJ0gTEa.js → Modal-BuTvD0pz.js} +2 -2
  77. package/dashboard/dist/assets/{Modal-CaJ0gTEa.js.map → Modal-BuTvD0pz.js.map} +1 -1
  78. package/dashboard/dist/assets/{OperatorDashboard-DDfMmrmR.js → OperatorDashboard-C9SSV96T.js} +2 -2
  79. package/dashboard/dist/assets/{OperatorDashboard-DDfMmrmR.js.map → OperatorDashboard-C9SSV96T.js.map} +1 -1
  80. package/dashboard/dist/assets/{PageHeader-C5D-G5rp.js → PageHeader-BcTVF9ul.js} +2 -2
  81. package/dashboard/dist/assets/{PageHeader-C5D-G5rp.js.map → PageHeader-BcTVF9ul.js.map} +1 -1
  82. package/dashboard/dist/assets/{PageHeaderWithStats-DCa2eZh2.js → PageHeaderWithStats-BI7JG5x6.js} +2 -2
  83. package/dashboard/dist/assets/{PageHeaderWithStats-DCa2eZh2.js.map → PageHeaderWithStats-BI7JG5x6.js.map} +1 -1
  84. package/dashboard/dist/assets/{PriorityBadge-DTHq6OUZ.js → PriorityBadge-DqVaOU65.js} +2 -2
  85. package/dashboard/dist/assets/{PriorityBadge-DTHq6OUZ.js.map → PriorityBadge-DqVaOU65.js.map} +1 -1
  86. package/dashboard/dist/assets/{ProcessDetailPage-fC4dhrd0.js → ProcessDetailPage-hFMhf9qa.js} +2 -2
  87. package/dashboard/dist/assets/{ProcessDetailPage-fC4dhrd0.js.map → ProcessDetailPage-hFMhf9qa.js.map} +1 -1
  88. package/dashboard/dist/assets/{ProcessesListPage-CL2MY8uD.js → ProcessesListPage-ByVoBCQ3.js} +2 -2
  89. package/dashboard/dist/assets/{ProcessesListPage-CL2MY8uD.js.map → ProcessesListPage-ByVoBCQ3.js.map} +1 -1
  90. package/dashboard/dist/assets/{RolePill-kgKPANly.js → RolePill-D9ZIkYiu.js} +2 -2
  91. package/dashboard/dist/assets/{RolePill-kgKPANly.js.map → RolePill-D9ZIkYiu.js.map} +1 -1
  92. package/dashboard/dist/assets/{RolesPage-Be2lXTHD.js → RolesPage-SMedMuqa.js} +2 -2
  93. package/dashboard/dist/assets/{RolesPage-Be2lXTHD.js.map → RolesPage-SMedMuqa.js.map} +1 -1
  94. package/dashboard/dist/assets/{RowActions-DIzJCwqR.js → RowActions-yDhwwDbU.js} +2 -2
  95. package/dashboard/dist/assets/{RowActions-DIzJCwqR.js.map → RowActions-yDhwwDbU.js.map} +1 -1
  96. package/dashboard/dist/assets/{StatCard-CRi2Jy6t.js → StatCard-BrBnQFxh.js} +2 -2
  97. package/dashboard/dist/assets/{StatCard-CRi2Jy6t.js.map → StatCard-BrBnQFxh.js.map} +1 -1
  98. package/dashboard/dist/assets/{StatusBadge-BETI_8Mr.js → StatusBadge-xgb-lZku.js} +2 -2
  99. package/dashboard/dist/assets/{StatusBadge-BETI_8Mr.js.map → StatusBadge-xgb-lZku.js.map} +1 -1
  100. package/dashboard/dist/assets/{StepIndicator-DjpMqCjz.js → StepIndicator-B9ps2SvM.js} +2 -2
  101. package/dashboard/dist/assets/{StepIndicator-DjpMqCjz.js.map → StepIndicator-B9ps2SvM.js.map} +1 -1
  102. package/dashboard/dist/assets/{StickyPagination-BZbExQ9t.js → StickyPagination-DTIjBKN3.js} +2 -2
  103. package/dashboard/dist/assets/{StickyPagination-BZbExQ9t.js.map → StickyPagination-DTIjBKN3.js.map} +1 -1
  104. package/dashboard/dist/assets/{SwimlaneTimeline-DZthQyhR.js → SwimlaneTimeline-RK4Yu66z.js} +2 -2
  105. package/dashboard/dist/assets/{SwimlaneTimeline-DZthQyhR.js.map → SwimlaneTimeline-RK4Yu66z.js.map} +1 -1
  106. package/dashboard/dist/assets/{TagInput-CukbOfYn.js → TagInput-CdNUuqk4.js} +2 -2
  107. package/dashboard/dist/assets/{TagInput-CukbOfYn.js.map → TagInput-CdNUuqk4.js.map} +1 -1
  108. package/dashboard/dist/assets/{TaskDetailPage-CIZHIKo9.js → TaskDetailPage-C-nzaNea.js} +2 -2
  109. package/dashboard/dist/assets/{TaskDetailPage-CIZHIKo9.js.map → TaskDetailPage-C-nzaNea.js.map} +1 -1
  110. package/dashboard/dist/assets/{TaskQueuePill-Q7DGoysj.js → TaskQueuePill-Lvr2-NzS.js} +2 -2
  111. package/dashboard/dist/assets/{TaskQueuePill-Q7DGoysj.js.map → TaskQueuePill-Lvr2-NzS.js.map} +1 -1
  112. package/dashboard/dist/assets/{TasksListPage-CsC9wjb0.js → TasksListPage-DSUmD84y.js} +2 -2
  113. package/dashboard/dist/assets/{TasksListPage-CsC9wjb0.js.map → TasksListPage-DSUmD84y.js.map} +1 -1
  114. package/dashboard/dist/assets/{TimeAgo-BcOOnJeH.js → TimeAgo-BZdLdrIh.js} +2 -2
  115. package/dashboard/dist/assets/{TimeAgo-BcOOnJeH.js.map → TimeAgo-BZdLdrIh.js.map} +1 -1
  116. package/dashboard/dist/assets/{TimestampCell-CEMapYDQ.js → TimestampCell-QX_0i5FK.js} +2 -2
  117. package/dashboard/dist/assets/{TimestampCell-CEMapYDQ.js.map → TimestampCell-QX_0i5FK.js.map} +1 -1
  118. package/dashboard/dist/assets/{UserName-BHoN7iRL.js → UserName-DyZMXcBm.js} +2 -2
  119. package/dashboard/dist/assets/{UserName-BHoN7iRL.js.map → UserName-DyZMXcBm.js.map} +1 -1
  120. package/dashboard/dist/assets/{WorkflowExecutionPage-DawKl1LT.js → WorkflowExecutionPage-DjVxfZaF.js} +2 -2
  121. package/dashboard/dist/assets/{WorkflowExecutionPage-DawKl1LT.js.map → WorkflowExecutionPage-DjVxfZaF.js.map} +1 -1
  122. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +2 -0
  123. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +1 -0
  124. package/dashboard/dist/assets/WorkflowsDashboard-DZjuiFZ0.js +2 -0
  125. package/dashboard/dist/assets/WorkflowsDashboard-DZjuiFZ0.js.map +1 -0
  126. package/dashboard/dist/assets/{WorkflowsOverview-DuhAi_OY.js → WorkflowsOverview-CLnLRpOu.js} +2 -2
  127. package/dashboard/dist/assets/{WorkflowsOverview-DuhAi_OY.js.map → WorkflowsOverview-CLnLRpOu.js.map} +1 -1
  128. package/dashboard/dist/assets/{YamlWorkflowsPage-Dc9xw82a.js → YamlWorkflowsPage-VjdhnLmO.js} +2 -2
  129. package/dashboard/dist/assets/{YamlWorkflowsPage-Dc9xw82a.js.map → YamlWorkflowsPage-VjdhnLmO.js.map} +1 -1
  130. package/dashboard/dist/assets/{bots-Dny-rmmI.js → bots-DIM6lBoY.js} +2 -2
  131. package/dashboard/dist/assets/{bots-Dny-rmmI.js.map → bots-DIM6lBoY.js.map} +1 -1
  132. package/dashboard/dist/assets/{escalation-CV0sKNH5.js → escalation-JOTuOqjq.js} +2 -2
  133. package/dashboard/dist/assets/{escalation-CV0sKNH5.js.map → escalation-JOTuOqjq.js.map} +1 -1
  134. package/dashboard/dist/assets/{escalation-columns-30CKyoWI.js → escalation-columns-Cyg58nkg.js} +2 -2
  135. package/dashboard/dist/assets/{escalation-columns-30CKyoWI.js.map → escalation-columns-Cyg58nkg.js.map} +1 -1
  136. package/dashboard/dist/assets/{helpers-C1-30CzH.js → helpers-B1BDxBZd.js} +2 -2
  137. package/dashboard/dist/assets/{helpers-C1-30CzH.js.map → helpers-B1BDxBZd.js.map} +1 -1
  138. package/dashboard/dist/assets/{helpers-C1jaRD-d.js → helpers-BCix9c_m.js} +2 -2
  139. package/dashboard/dist/assets/{helpers-C1jaRD-d.js.map → helpers-BCix9c_m.js.map} +1 -1
  140. package/dashboard/dist/assets/{index-D_aJBEAG.js → index-BUK3qR-1.js} +2 -2
  141. package/dashboard/dist/assets/{index-D_aJBEAG.js.map → index-BUK3qR-1.js.map} +1 -1
  142. package/dashboard/dist/assets/{index-DnmZbNxk.js → index-BYZX9tOb.js} +5 -5
  143. package/dashboard/dist/assets/index-BYZX9tOb.js.map +1 -0
  144. package/dashboard/dist/assets/{index-D-oCWCAS.js → index-BcR6PfpY.js} +2 -2
  145. package/dashboard/dist/assets/{index-D-oCWCAS.js.map → index-BcR6PfpY.js.map} +1 -1
  146. package/dashboard/dist/assets/index-BizfauqT.js +6 -0
  147. package/dashboard/dist/assets/index-BizfauqT.js.map +1 -0
  148. package/dashboard/dist/assets/{index-CxVB7F4X.js → index-Cf60K3x9.js} +2 -2
  149. package/dashboard/dist/assets/{index-CxVB7F4X.js.map → index-Cf60K3x9.js.map} +1 -1
  150. package/dashboard/dist/assets/{index-D0wPM3Ck.js → index-Cg5nfiYX.js} +2 -2
  151. package/dashboard/dist/assets/{index-D0wPM3Ck.js.map → index-Cg5nfiYX.js.map} +1 -1
  152. package/dashboard/dist/assets/index-D1wVX50Z.js +15 -0
  153. package/dashboard/dist/assets/index-D1wVX50Z.js.map +1 -0
  154. package/dashboard/dist/assets/{index-DHgnkykj.js → index-DDYFpi4l.js} +4 -4
  155. package/dashboard/dist/assets/index-DDYFpi4l.js.map +1 -0
  156. package/dashboard/dist/assets/{index-_RBvi7s6.js → index-Di12t56M.js} +2 -2
  157. package/dashboard/dist/assets/{index-_RBvi7s6.js.map → index-Di12t56M.js.map} +1 -1
  158. package/dashboard/dist/assets/{index-Dd_U4mLm.js → index-Ds0JoXS2.js} +2 -2
  159. package/dashboard/dist/assets/{index-Dd_U4mLm.js.map → index-Ds0JoXS2.js.map} +1 -1
  160. package/dashboard/dist/assets/{mcp-CRFr4L9W.js → mcp-B_xbczAt.js} +2 -2
  161. package/dashboard/dist/assets/{mcp-CRFr4L9W.js.map → mcp-B_xbczAt.js.map} +1 -1
  162. package/dashboard/dist/assets/{mcp-query-DHY2mZBQ.js → mcp-query-B8-P_QoG.js} +2 -2
  163. package/dashboard/dist/assets/{mcp-query-DHY2mZBQ.js.map → mcp-query-B8-P_QoG.js.map} +1 -1
  164. package/dashboard/dist/assets/{mcp-runs-BqPHqwAO.js → mcp-runs-CWeZinoF.js} +2 -2
  165. package/dashboard/dist/assets/{mcp-runs-BqPHqwAO.js.map → mcp-runs-CWeZinoF.js.map} +1 -1
  166. package/dashboard/dist/assets/{namespaces-TG1aIpo_.js → namespaces-C3WtdO_9.js} +2 -2
  167. package/dashboard/dist/assets/{namespaces-TG1aIpo_.js.map → namespaces-C3WtdO_9.js.map} +1 -1
  168. package/dashboard/dist/assets/{roles-DhhLTvXg.js → roles-BDAsPpZG.js} +2 -2
  169. package/dashboard/dist/assets/{roles-DhhLTvXg.js.map → roles-BDAsPpZG.js.map} +1 -1
  170. package/dashboard/dist/assets/{settings-D9MBzEeB.js → settings-Ife_UwAp.js} +2 -2
  171. package/dashboard/dist/assets/{settings-D9MBzEeB.js.map → settings-Ife_UwAp.js.map} +1 -1
  172. package/dashboard/dist/assets/{tasks-BxmcZoev.js → tasks-BquNDHDI.js} +2 -2
  173. package/dashboard/dist/assets/{tasks-BxmcZoev.js.map → tasks-BquNDHDI.js.map} +1 -1
  174. package/dashboard/dist/assets/{useEventHooks-BylecvvI.js → useEventHooks-anv_B2Yy.js} +2 -2
  175. package/dashboard/dist/assets/{useEventHooks-BylecvvI.js.map → useEventHooks-anv_B2Yy.js.map} +1 -1
  176. package/dashboard/dist/assets/{useYamlActivityEvents-ocmj11e_.js → useYamlActivityEvents-DN-PTgVx.js} +2 -2
  177. package/dashboard/dist/assets/{useYamlActivityEvents-ocmj11e_.js.map → useYamlActivityEvents-DN-PTgVx.js.map} +1 -1
  178. package/dashboard/dist/assets/{users-Ce5r-JAv.js → users-CFcxB4v6.js} +2 -2
  179. package/dashboard/dist/assets/{users-Ce5r-JAv.js.map → users-CFcxB4v6.js.map} +1 -1
  180. package/dashboard/dist/assets/{vendor-icons-D1DdudfH.js → vendor-icons-T4r2DSPD.js} +2 -2
  181. package/dashboard/dist/assets/{vendor-icons-D1DdudfH.js.map → vendor-icons-T4r2DSPD.js.map} +1 -1
  182. package/dashboard/dist/assets/{workflows-ykIeVbRJ.js → workflows-CeRci9z3.js} +2 -2
  183. package/dashboard/dist/assets/{workflows-ykIeVbRJ.js.map → workflows-CeRci9z3.js.map} +1 -1
  184. package/dashboard/dist/assets/{yaml-workflows-WypmKYht.js → yaml-workflows-DLwd2BOX.js} +2 -2
  185. package/dashboard/dist/assets/{yaml-workflows-WypmKYht.js.map → yaml-workflows-DLwd2BOX.js.map} +1 -1
  186. package/dashboard/dist/index.html +2 -2
  187. package/docs/api/http/escalations.md +99 -0
  188. package/docs/api/http/tasks.md +47 -0
  189. package/docs/api/sdk/escalations.md +137 -0
  190. package/docs/api/sdk/tasks.md +40 -1
  191. package/package.json +1 -1
  192. package/dashboard/dist/assets/WorkflowPill-CP84Vqeg.js +0 -2
  193. package/dashboard/dist/assets/WorkflowPill-CP84Vqeg.js.map +0 -1
  194. package/dashboard/dist/assets/WorkflowsDashboard-QrvVFxtQ.js +0 -2
  195. package/dashboard/dist/assets/WorkflowsDashboard-QrvVFxtQ.js.map +0 -1
  196. package/dashboard/dist/assets/index-BUVQ6wmy.js +0 -6
  197. package/dashboard/dist/assets/index-BUVQ6wmy.js.map +0 -1
  198. package/dashboard/dist/assets/index-DHgnkykj.js.map +0 -1
  199. package/dashboard/dist/assets/index-DnmZbNxk.js.map +0 -1
  200. package/dashboard/dist/assets/index-n7td8zgX.js +0 -17
  201. package/dashboard/dist/assets/index-n7td8zgX.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{j as e}from"./index-DnmZbNxk.js";import{P as v}from"./PageHeader-C5D-G5rp.js";import{D as P}from"./DataTable-DyIXg-tQ.js";import{F as k,b as N}from"./FilterBar-BTiaAhCx.js";import{S as w}from"./StickyPagination-BZbExQ9t.js";import{L as D}from"./ListToolbar-BUcagSCn.js";import{T as f}from"./TimestampCell-CEMapYDQ.js";import{E as M}from"./ElapsedCell-BgnA0qpS.js";import{W as E}from"./WorkflowPill-CP84Vqeg.js";import{E as Q}from"./EmptyState-DlMImvgm.js";import{R as c}from"./RowActions-DIzJCwqR.js";import{u as j}from"./useFilterParams-BUyLHcx_.js";import{b as V}from"./useEventHooks-BylecvvI.js";import{u as _}from"./mcp-query-DHY2mZBQ.js";import{c as C,o as $,p as h,q as g,S as W,r as S}from"./vendor-icons-D1DdudfH.js";import{c as T}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";const q={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"};function m(t){return t.status==="completed"||Number(t.status)===0?"completed":t.is_live?"in_progress":"failed"}function B(t){return[{key:"workflow_id",label:"Workflow ID / Type",render:s=>{const a=m(s),r=q[a]??"bg-status-pending",l=a==="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 mt-1 ${r}${l}`,title:a},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:43,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:45,columnNumber:15},this),e.jsxDEV("div",{className:"mt-0.5",children:e.jsxDEV(E,{type:s.entity||"unknown"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:49,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:48,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:44,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:42,columnNumber:11},this)}},{key:"created_at",label:"Created",render:s=>e.jsxDEV(f,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:59,columnNumber:24},this),className:"w-40",sortable:!0},{key:"updated_at",label:"Updated",render:s=>e.jsxDEV(f,{date:s.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:66,columnNumber:24},this),className:"w-40",sortable:!0},{key:"duration",label:"Duration",render:s=>{const a=m(s);return e.jsxDEV(M,{startDate:s.created_at,endDate:a==="in_progress"?null:s.updated_at,isLive:a==="in_progress"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:76,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(),t(`${i}&step=1`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all",title:"Plan",children:e.jsxDEV($,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:106,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:101,columnNumber:15},this),e.jsxDEV("button",{onClick:p=>{p.stopPropagation(),t(`${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(h,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:114,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:108,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:100,columnNumber:13},this)}return l?e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(g,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:128,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:123,columnNumber:15},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(W,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:136,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:130,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:122,columnNumber:13},this):e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(g,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:149,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:144,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(S,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:156,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:151,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(h,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:164,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:143,columnNumber:11},this)}}]}function ae(){const t=T(),s=B(t),{filters:a,setFilter:r,pagination:l,sort:u,setSort:i}=j({filters:{search:"",status:"",type:""},pageSize:20}),{data:p,isLoading:n,refetch:x}=_({limit:l.pageSize,offset:l.offset,search:a.search,status:a.status,entity:a.type||void 0});V();const d=(p==null?void 0:p.jobs)??[],b=(p==null?void 0:p.total)??0;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(v,{title:"MCP Tool Designer",actions:e.jsxDEV("button",{onClick:()=>t("/mcp/queries/new"),className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(C,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:204,columnNumber:13},this),"Create New MCP Tool"]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:200,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:197,columnNumber:7},this),e.jsxDEV(k,{actions:e.jsxDEV(D,{onRefresh:()=>x(),apiPath:`/workflow-states/jobs?entity=${a.type||"mcpQuery,mcpTriage,mcpWorkflowBuilder,mcpWorkflowPlanner"}&limit=${l.pageSize}&offset=${l.offset}&sort_by=created_at&order=desc${a.status?`&status=${a.status}`:""}${a.search?`&search=${a.search}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:211,columnNumber:9},this),children:[e.jsxDEV(N,{label:"Type",value:a.type,onChange:o=>r("type",o),options:[{value:"mcpQuery",label:"Discovery"},{value:"mcpWorkflowBuilder",label:"Direct Build"},{value:"mcpWorkflowPlanner",label:"Plan Build"},{value:"mcpTriage",label:"Triage"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:216,columnNumber:11},this),e.jsxDEV(N,{label:"Status",value:a.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:227,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:210,columnNumber:7},this),e.jsxDEV(P,{columns:s,data:d,keyFn:o=>o.workflow_id,onRowClick:o=>{if(o.entity==="mcpWorkflowPlanner"){const y=o.set_id?`/mcp/queries/${o.workflow_id}?mode=plan&set_id=${o.set_id}`:`/mcp/queries/${o.workflow_id}?mode=plan`;t(y)}else o.entity==="mcpWorkflowBuilder"?t(`/mcp/queries/${o.workflow_id}?mode=builder`):t(`/mcp/queries/${o.workflow_id}`)},isLoading:n,emptyMessage:"",sort:u,onSort:i},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:239,columnNumber:7},this),!n&&d.length===0&&e.jsxDEV(Q,{title:"No tool designs yet",description:'Click "Create New MCP Tool" to start'},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:262,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:265,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:196,columnNumber:5},this)}export{ae as McpQueryPage};
2
- //# sourceMappingURL=McpQueryPage-Bz7AdcfR.js.map
1
+ import{j as e}from"./index-BYZX9tOb.js";import{P as v}from"./PageHeader-BcTVF9ul.js";import{D as P}from"./DataTable-CTRhTAfT.js";import{F as k,b as N}from"./FilterBar-BiO8SOzc.js";import{S as w}from"./StickyPagination-DTIjBKN3.js";import{L as D}from"./ListToolbar-6yRDh2e9.js";import{T as f}from"./TimestampCell-QX_0i5FK.js";import{E as M}from"./ElapsedCell-HcSJ_MMs.js";import{W as E}from"./WorkflowPill-CZqGslD6.js";import{E as Q}from"./EmptyState-joNbd4gg.js";import{R as c}from"./RowActions-yDhwwDbU.js";import{u as j}from"./useFilterParams-BUyLHcx_.js";import{b as V}from"./useEventHooks-anv_B2Yy.js";import{u as _}from"./mcp-query-B8-P_QoG.js";import{c as C,o as $,p as h,q as g,S as W,r as S}from"./vendor-icons-T4r2DSPD.js";import{c as T}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";const q={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"};function m(t){return t.status==="completed"||Number(t.status)===0?"completed":t.is_live?"in_progress":"failed"}function B(t){return[{key:"workflow_id",label:"Workflow ID / Type",render:s=>{const a=m(s),r=q[a]??"bg-status-pending",l=a==="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 mt-1 ${r}${l}`,title:a},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:43,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:45,columnNumber:15},this),e.jsxDEV("div",{className:"mt-0.5",children:e.jsxDEV(E,{type:s.entity||"unknown"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:49,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:48,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:44,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:42,columnNumber:11},this)}},{key:"created_at",label:"Created",render:s=>e.jsxDEV(f,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:59,columnNumber:24},this),className:"w-40",sortable:!0},{key:"updated_at",label:"Updated",render:s=>e.jsxDEV(f,{date:s.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:66,columnNumber:24},this),className:"w-40",sortable:!0},{key:"duration",label:"Duration",render:s=>{const a=m(s);return e.jsxDEV(M,{startDate:s.created_at,endDate:a==="in_progress"?null:s.updated_at,isLive:a==="in_progress"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:76,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(),t(`${i}&step=1`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all",title:"Plan",children:e.jsxDEV($,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:106,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:101,columnNumber:15},this),e.jsxDEV("button",{onClick:p=>{p.stopPropagation(),t(`${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(h,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:114,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:108,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:100,columnNumber:13},this)}return l?e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(g,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:128,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:123,columnNumber:15},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(W,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:136,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:130,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:122,columnNumber:13},this):e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(g,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:149,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:144,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(S,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:156,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:151,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/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(h,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:164,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:143,columnNumber:11},this)}}]}function ae(){const t=T(),s=B(t),{filters:a,setFilter:r,pagination:l,sort:u,setSort:i}=j({filters:{search:"",status:"",type:""},pageSize:20}),{data:p,isLoading:n,refetch:x}=_({limit:l.pageSize,offset:l.offset,search:a.search,status:a.status,entity:a.type||void 0});V();const d=(p==null?void 0:p.jobs)??[],b=(p==null?void 0:p.total)??0;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(v,{title:"MCP Tool Designer",actions:e.jsxDEV("button",{onClick:()=>t("/mcp/queries/new"),className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(C,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:204,columnNumber:13},this),"Create New MCP Tool"]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:200,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:197,columnNumber:7},this),e.jsxDEV(k,{actions:e.jsxDEV(D,{onRefresh:()=>x(),apiPath:`/workflow-states/jobs?entity=${a.type||"mcpQuery,mcpTriage,mcpWorkflowBuilder,mcpWorkflowPlanner"}&limit=${l.pageSize}&offset=${l.offset}&sort_by=created_at&order=desc${a.status?`&status=${a.status}`:""}${a.search?`&search=${a.search}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:211,columnNumber:9},this),children:[e.jsxDEV(N,{label:"Type",value:a.type,onChange:o=>r("type",o),options:[{value:"mcpQuery",label:"Discovery"},{value:"mcpWorkflowBuilder",label:"Direct Build"},{value:"mcpWorkflowPlanner",label:"Plan Build"},{value:"mcpTriage",label:"Triage"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:216,columnNumber:11},this),e.jsxDEV(N,{label:"Status",value:a.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:227,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:210,columnNumber:7},this),e.jsxDEV(P,{columns:s,data:d,keyFn:o=>o.workflow_id,onRowClick:o=>{if(o.entity==="mcpWorkflowPlanner"){const y=o.set_id?`/mcp/queries/${o.workflow_id}?mode=plan&set_id=${o.set_id}`:`/mcp/queries/${o.workflow_id}?mode=plan`;t(y)}else o.entity==="mcpWorkflowBuilder"?t(`/mcp/queries/${o.workflow_id}?mode=builder`):t(`/mcp/queries/${o.workflow_id}`)},isLoading:n,emptyMessage:"",sort:u,onSort:i},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:239,columnNumber:7},this),!n&&d.length===0&&e.jsxDEV(Q,{title:"No tool designs yet",description:'Click "Create New MCP Tool" to start'},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:262,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:265,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:196,columnNumber:5},this)}export{ae as McpQueryPage};
2
+ //# sourceMappingURL=McpQueryPage-lV6kfDG5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpQueryPage-Bz7AdcfR.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 { 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 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 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={`/workflow-states/jobs?entity=${filters.type || 'mcpQuery,mcpTriage,mcpWorkflowBuilder,mcpWorkflowPlanner'}&limit=${pagination.pageSize}&offset=${pagination.offset}&sort_by=created_at&order=desc${filters.status ? `&status=${filters.status}` : ''}${filters.search ? `&search=${filters.search}` : ''}`}\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: 'mcpWorkflowBuilder', label: 'Direct Build' },\n { value: 'mcpWorkflowPlanner', label: 'Plan 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 <EmptyState title=\"No tool designs yet\" description=\"Click &quot;Create New MCP Tool&quot; to start\" />\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","FilterSelect","v","DataTable","url","EmptyState","StickyPagination"],"mappings":"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"}
1
+ {"version":3,"file":"McpQueryPage-lV6kfDG5.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 { 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 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 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={`/workflow-states/jobs?entity=${filters.type || 'mcpQuery,mcpTriage,mcpWorkflowBuilder,mcpWorkflowPlanner'}&limit=${pagination.pageSize}&offset=${pagination.offset}&sort_by=created_at&order=desc${filters.status ? `&status=${filters.status}` : ''}${filters.search ? `&search=${filters.search}` : ''}`}\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: 'mcpWorkflowBuilder', label: 'Direct Build' },\n { value: 'mcpWorkflowPlanner', label: 'Plan 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 <EmptyState title=\"No tool designs yet\" description=\"Click &quot;Create New MCP Tool&quot; to start\" />\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","FilterSelect","v","DataTable","url","EmptyState","StickyPagination"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{u as _,j as e,D as S,c as E,J as P,N as T}from"./index-DnmZbNxk.js";import{b as k,a as C}from"./vendor-query-DLp59M9_.js";import{b as I}from"./mcp-runs-BqPHqwAO.js";import{u as K}from"./settings-D9MBzEeB.js";import{S as U}from"./StatusBadge-BETI_8Mr.js";import{P as R}from"./PageHeader-C5D-G5rp.js";import{C as $}from"./CopyableId-BxHW1ahb.js";import{C as N}from"./CollapsibleSection-BBexNWVd.js";import{u as J,E as L}from"./EventTable-BNxtlgNz.js";import{L as q}from"./ListToolbar-BUcagSCn.js";import{S as B}from"./SwimlaneTimeline-DZthQyhR.js";import{e as F,f as H}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-D1DdudfH.js";import"./FilterBar-BTiaAhCx.js";const Q={running:"in_progress",completed:"completed",failed:"failed"};function re(){var f,D;const{jobId:t}=F(),[p]=H(),r=p.get("namespace")||"longtail",x=k(),{data:a,isLoading:j,error:i,refetch:M,isFetching:V}=I(t,r),{data:n}=K(),{isCollapsed:u,toggle:o}=J("mcp-run-detail"),h=((f=n==null?void 0:n.telemetry)==null?void 0:f.traceUrl)??null,y=C.useCallback(c=>{!t||c.workflowId!==t||x.invalidateQueries({queryKey:["mcpRunExecution",t]})},[t,x]);if(_(`${T}.activity.>`,y),j)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:53,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:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:52,columnNumber:7},this);if(i||!a)return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:62,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:(D=i==null?void 0:i.message)!=null&&D.includes("expired")?"Execution data is no longer available":"Unable to load execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:64,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:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:61,columnNumber:7},this);const{events:d,summary:s}=a,b=d.find(c=>{var v;return c.category==="activity"&&((v=c.attributes.kind)==null?void 0:v.includes("completed"))}),w=(b==null?void 0:b.attributes.result)??null,m=a.result,g=(m==null?void 0:m.data)??m??null;return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution",actions:e.jsxDEV(q,{onRefresh:()=>M(),isFetching:V,apiPath:`/mcp-runs/${t}/execution?app_id=${r}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:95,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:92,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-raised border border-surface-border 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:107,columnNumber:11},this),e.jsxDEV(U,{status:Q[a.status]??a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:108,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:106,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-5 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:"Tool Server"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:114,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:115,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:113,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:"Pipeline Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:118,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:119,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:117,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:122,columnNumber:13},this),e.jsxDEV(S,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:123,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:121,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:126,columnNumber:13},this),a.start_time?e.jsxDEV(E,{date:a.start_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:128,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:129,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:125,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:132,columnNumber:13},this),a.close_time?e.jsxDEV(E,{date:a.close_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:134,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:135,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:131,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:112,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center mt-4 pt-3 border-t border-surface-border",children:[e.jsxDEV("div",{className:"flex-1",children:a.trace_id?e.jsxDEV($,{label:"Trace",value:a.trace_id,href:h?h.replace("{traceId}",a.trace_id):void 0,external:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:143,columnNumber:15},this):e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"No trace"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:150,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:141,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-5",children:[e.jsxDEV(l,{label:"Tools",value:s.activities.user},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:154,columnNumber:13},this),e.jsxDEV(l,{label:"System",value:s.activities.system,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:155,columnNumber:13},this),s.child_workflows.total>0&&e.jsxDEV(l,{label:"Children",value:s.child_workflows.total},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:157,columnNumber:15},this),s.timers>0&&e.jsxDEV(l,{label:"Timers",value:s.timers},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:159,columnNumber:36},this),s.signals>0&&e.jsxDEV(l,{label:"Signals",value:s.signals},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:160,columnNumber:37},this),e.jsxDEV(l,{label:"Total",value:s.total_events,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:161,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:153,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:140,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:104,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV(N,{title:"Details",sectionKey:"details",isCollapsed:u("details"),onToggle:o,children:e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[e.jsxDEV("div",{children:e.jsxDEV(P,{data:w??{},label:"Input"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:172,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:171,columnNumber:13},this),g!==null&&e.jsxDEV("div",{children:e.jsxDEV(P,{data:g,label:"Result"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:176,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:175,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:170,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:169,columnNumber:9},this),e.jsxDEV(N,{title:"Execution Timeline",sectionKey:"timeline",isCollapsed:u("timeline"),onToggle:o,children:e.jsxDEV(B,{events:d,outline:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:184,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:183,columnNumber:9},this),e.jsxDEV(N,{title:"Events",sectionKey:"events",isCollapsed:u("events"),onToggle:o,children:e.jsxDEV(L,{events:d},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:189,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:188,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:167,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:91,columnNumber:5},this)}function l({label:t,value:p,muted:r}){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:201,columnNumber:7},this),e.jsxDEV("span",{className:`font-medium tabular-nums ${r?"text-text-tertiary":"text-text-primary"}`,children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:202,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:200,columnNumber:5},this)}export{re as McpRunDetailPage};
2
- //# sourceMappingURL=McpRunDetailPage-Di_qpL2V.js.map
1
+ import{u as _,j as e,D as S,c as E,J as P,N as T}from"./index-BYZX9tOb.js";import{b as k,a as C}from"./vendor-query-DLp59M9_.js";import{b as I}from"./mcp-runs-CWeZinoF.js";import{u as K}from"./settings-Ife_UwAp.js";import{S as U}from"./StatusBadge-xgb-lZku.js";import{P as R}from"./PageHeader-BcTVF9ul.js";import{C as $}from"./CopyableId-cPFTRm8q.js";import{C as N}from"./CollapsibleSection-Kd9UIyeU.js";import{u as J,E as L}from"./EventTable-CYem3v8n.js";import{L as q}from"./ListToolbar-6yRDh2e9.js";import{S as B}from"./SwimlaneTimeline-RK4Yu66z.js";import{e as F,f as H}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-T4r2DSPD.js";import"./FilterBar-BiO8SOzc.js";const Q={running:"in_progress",completed:"completed",failed:"failed"};function re(){var f,D;const{jobId:t}=F(),[p]=H(),r=p.get("namespace")||"longtail",x=k(),{data:a,isLoading:j,error:i,refetch:M,isFetching:V}=I(t,r),{data:n}=K(),{isCollapsed:u,toggle:o}=J("mcp-run-detail"),h=((f=n==null?void 0:n.telemetry)==null?void 0:f.traceUrl)??null,y=C.useCallback(c=>{!t||c.workflowId!==t||x.invalidateQueries({queryKey:["mcpRunExecution",t]})},[t,x]);if(_(`${T}.activity.>`,y),j)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:53,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:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:52,columnNumber:7},this);if(i||!a)return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:62,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:(D=i==null?void 0:i.message)!=null&&D.includes("expired")?"Execution data is no longer available":"Unable to load execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:64,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:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:61,columnNumber:7},this);const{events:d,summary:s}=a,b=d.find(c=>{var v;return c.category==="activity"&&((v=c.attributes.kind)==null?void 0:v.includes("completed"))}),w=(b==null?void 0:b.attributes.result)??null,m=a.result,g=(m==null?void 0:m.data)??m??null;return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution",actions:e.jsxDEV(q,{onRefresh:()=>M(),isFetching:V,apiPath:`/mcp-runs/${t}/execution?app_id=${r}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:95,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:92,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-raised border border-surface-border 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:107,columnNumber:11},this),e.jsxDEV(U,{status:Q[a.status]??a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:108,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:106,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-5 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:"Tool Server"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:114,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:115,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:113,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:"Pipeline Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:118,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:119,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:117,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:122,columnNumber:13},this),e.jsxDEV(S,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:123,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:121,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:126,columnNumber:13},this),a.start_time?e.jsxDEV(E,{date:a.start_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:128,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:129,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:125,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:132,columnNumber:13},this),a.close_time?e.jsxDEV(E,{date:a.close_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:134,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:135,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:131,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:112,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center mt-4 pt-3 border-t border-surface-border",children:[e.jsxDEV("div",{className:"flex-1",children:a.trace_id?e.jsxDEV($,{label:"Trace",value:a.trace_id,href:h?h.replace("{traceId}",a.trace_id):void 0,external:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:143,columnNumber:15},this):e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"No trace"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:150,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:141,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-5",children:[e.jsxDEV(l,{label:"Tools",value:s.activities.user},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:154,columnNumber:13},this),e.jsxDEV(l,{label:"System",value:s.activities.system,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:155,columnNumber:13},this),s.child_workflows.total>0&&e.jsxDEV(l,{label:"Children",value:s.child_workflows.total},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:157,columnNumber:15},this),s.timers>0&&e.jsxDEV(l,{label:"Timers",value:s.timers},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:159,columnNumber:36},this),s.signals>0&&e.jsxDEV(l,{label:"Signals",value:s.signals},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:160,columnNumber:37},this),e.jsxDEV(l,{label:"Total",value:s.total_events,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:161,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:153,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:140,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:104,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV(N,{title:"Details",sectionKey:"details",isCollapsed:u("details"),onToggle:o,children:e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[e.jsxDEV("div",{children:e.jsxDEV(P,{data:w??{},label:"Input"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:172,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:171,columnNumber:13},this),g!==null&&e.jsxDEV("div",{children:e.jsxDEV(P,{data:g,label:"Result"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:176,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:175,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:170,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:169,columnNumber:9},this),e.jsxDEV(N,{title:"Execution Timeline",sectionKey:"timeline",isCollapsed:u("timeline"),onToggle:o,children:e.jsxDEV(B,{events:d,outline:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:184,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:183,columnNumber:9},this),e.jsxDEV(N,{title:"Events",sectionKey:"events",isCollapsed:u("events"),onToggle:o,children:e.jsxDEV(L,{events:d},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:189,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:188,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:167,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:91,columnNumber:5},this)}function l({label:t,value:p,muted:r}){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:201,columnNumber:7},this),e.jsxDEV("span",{className:`font-medium tabular-nums ${r?"text-text-tertiary":"text-text-primary"}`,children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:202,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:200,columnNumber:5},this)}export{re as McpRunDetailPage};
2
+ //# sourceMappingURL=McpRunDetailPage-D6gaxH3_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpRunDetailPage-Di_qpL2V.js","sources":["../../src/pages/mcp/McpRunDetailPage.tsx"],"sourcesContent":["import { useParams, useSearchParams } from 'react-router-dom';\nimport { useCallback } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useMcpRunExecution } from '../../api/mcp-runs';\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// ── Main page ────────────────────────────────────────────────────────────────\n\nexport function McpRunDetailPage() {\n const { jobId } = useParams<{ jobId: string }>();\n const [searchParams] = useSearchParams();\n const namespace = searchParams.get('namespace') || 'longtail';\n const queryClient = useQueryClient();\n const { data: execution, isLoading, error, refetch, isFetching } = useMcpRunExecution(jobId!, namespace);\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}.activity.>`, 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 <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/mcp-runs/${jobId}/execution?app_id=${namespace}`}\n />\n }\n />\n\n {/* ── Header card ─────────────────────────────────── */}\n <div className=\"bg-surface-raised border border-surface-border rounded-md p-5 mb-8\">\n {/* Row 0: Job ID + 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 <StatusBadge status={statusMap[execution.status] ?? execution.status} />\n </div>\n\n {/* Row 1: Namespace, Topic, Duration, Started, Completed */}\n <div className=\"grid grid-cols-5 gap-x-6\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool 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\">Pipeline 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\n {/* Row 2: Trace (left) + Stats (right) */}\n <div className=\"flex items-center mt-4 pt-3 border-t border-surface-border\">\n <div className=\"flex-1\">\n {execution.trace_id ? (\n <CopyableId\n label=\"Trace\"\n value={execution.trace_id}\n href={traceUrl ? traceUrl.replace('{traceId}', execution.trace_id) : undefined}\n external\n />\n ) : (\n <span className=\"text-[10px] text-text-tertiary\">No trace</span>\n )}\n </div>\n <div className=\"flex items-center gap-5\">\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 <Stat label=\"Total\" value={summary.total_events} muted />\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 />\n </CollapsibleSection>\n\n {/* Events (table) */}\n <CollapsibleSection title=\"Events\" sectionKey=\"events\" isCollapsed={isCollapsed('events')} onToggle={toggle}>\n <EventTable events={events} />\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","McpRunDetailPage","jobId","useParams","searchParams","useSearchParams","namespace","queryClient","useQueryClient","execution","isLoading","error","refetch","isFetching","useMcpRunExecution","settings","useSettings","isCollapsed","toggle","useCollapsedSections","traceUrl","_a","activityHandler","useCallback","event","useEventSubscription","NATS_SUBJECT_PREFIX","jsxDEV","PageHeader","_b","events","summary","triggerCompleted","e","triggerInput","rawResult","result","ListToolbar","StatusBadge","DurationValue","DateValue","CopyableId","Stat","CollapsibleSection","JsonViewer","SwimlaneTimeline","EventTable","label","value","muted"],"mappings":"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"}
1
+ {"version":3,"file":"McpRunDetailPage-D6gaxH3_.js","sources":["../../src/pages/mcp/McpRunDetailPage.tsx"],"sourcesContent":["import { useParams, useSearchParams } from 'react-router-dom';\nimport { useCallback } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useMcpRunExecution } from '../../api/mcp-runs';\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// ── Main page ────────────────────────────────────────────────────────────────\n\nexport function McpRunDetailPage() {\n const { jobId } = useParams<{ jobId: string }>();\n const [searchParams] = useSearchParams();\n const namespace = searchParams.get('namespace') || 'longtail';\n const queryClient = useQueryClient();\n const { data: execution, isLoading, error, refetch, isFetching } = useMcpRunExecution(jobId!, namespace);\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}.activity.>`, 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 <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/mcp-runs/${jobId}/execution?app_id=${namespace}`}\n />\n }\n />\n\n {/* ── Header card ─────────────────────────────────── */}\n <div className=\"bg-surface-raised border border-surface-border rounded-md p-5 mb-8\">\n {/* Row 0: Job ID + 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 <StatusBadge status={statusMap[execution.status] ?? execution.status} />\n </div>\n\n {/* Row 1: Namespace, Topic, Duration, Started, Completed */}\n <div className=\"grid grid-cols-5 gap-x-6\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool 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\">Pipeline 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\n {/* Row 2: Trace (left) + Stats (right) */}\n <div className=\"flex items-center mt-4 pt-3 border-t border-surface-border\">\n <div className=\"flex-1\">\n {execution.trace_id ? (\n <CopyableId\n label=\"Trace\"\n value={execution.trace_id}\n href={traceUrl ? traceUrl.replace('{traceId}', execution.trace_id) : undefined}\n external\n />\n ) : (\n <span className=\"text-[10px] text-text-tertiary\">No trace</span>\n )}\n </div>\n <div className=\"flex items-center gap-5\">\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 <Stat label=\"Total\" value={summary.total_events} muted />\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 />\n </CollapsibleSection>\n\n {/* Events (table) */}\n <CollapsibleSection title=\"Events\" sectionKey=\"events\" isCollapsed={isCollapsed('events')} onToggle={toggle}>\n <EventTable events={events} />\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","McpRunDetailPage","jobId","useParams","searchParams","useSearchParams","namespace","queryClient","useQueryClient","execution","isLoading","error","refetch","isFetching","useMcpRunExecution","settings","useSettings","isCollapsed","toggle","useCollapsedSections","traceUrl","_a","activityHandler","useCallback","event","useEventSubscription","NATS_SUBJECT_PREFIX","jsxDEV","PageHeader","_b","events","summary","triggerCompleted","e","triggerInput","rawResult","result","ListToolbar","StatusBadge","DurationValue","DateValue","CopyableId","Stat","CollapsibleSection","JsonViewer","SwimlaneTimeline","EventTable","label","value","muted"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as a}from"./index-DnmZbNxk.js";import{a as m}from"./vendor-query-DLp59M9_.js";import{a as C,u as w}from"./mcp-runs-BqPHqwAO.js";import{a as T}from"./yaml-workflows-WypmKYht.js";import{u as $}from"./namespaces-TG1aIpo_.js";import{u as F}from"./useFilterParams-BUyLHcx_.js";import{D as z}from"./DataTable-DyIXg-tQ.js";import{W as A}from"./WorkflowPill-CP84Vqeg.js";import{T as y}from"./TimestampCell-CEMapYDQ.js";import{E as L}from"./ElapsedCell-BgnA0qpS.js";import{P as U}from"./PageHeader-C5D-G5rp.js";import{F as O,b as f}from"./FilterBar-BTiaAhCx.js";import{S as I}from"./StickyPagination-BZbExQ9t.js";import{L as W}from"./ListToolbar-BUcagSCn.js";import{R as B,a as q}from"./RowActions-DIzJCwqR.js";import{n as G}from"./vendor-icons-D1DdudfH.js";import{c as H}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-DlMImvgm.js";const Y={running:"in_progress",completed:"completed",failed:"failed"},J={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"},K={running:"text-status-active",completed:"text-status-success",failed:"text-status-error"};function Q(g,t){return[{key:"workflow_id",label:"Run ID / Tool",render:e=>{const u=J[Y[e.status]??e.status]??"bg-status-pending",i=e.status==="running"?" animate-pulse":"";return a.jsxDEV("div",{className:"flex items-start gap-2 min-w-0",children:[a.jsxDEV("span",{className:`w-[9px] h-[9px] shrink-0 rounded-full mt-1 ${u}${i}`,title:e.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:50,columnNumber:13},this),a.jsxDEV("div",{className:"min-w-0",children:[a.jsxDEV("span",{className:"font-mono text-xs text-text-primary truncate block",children:e.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:52,columnNumber:15},this),a.jsxDEV("div",{className:"mt-0.5",children:e.entity?a.jsxDEV(A,{type:e.entity,variant:"pipeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:57,columnNumber:21},this):a.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:58,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:55,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:51,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:49,columnNumber:11},this)}},{key:"created_at",label:"Created",render:e=>a.jsxDEV(y,{date:e.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:68,columnNumber:24},this),className:"w-40"},{key:"updated_at",label:"Updated",render:e=>a.jsxDEV(y,{date:e.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:74,columnNumber:24},this),className:"w-40"},{key:"duration",label:"Duration",render:e=>a.jsxDEV(L,{startDate:e.created_at,endDate:e.status==="running"?null:e.updated_at,isLive:e.status==="running"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:81,columnNumber:9},this),className:"w-28"},{key:"actions",label:"",render:e=>a.jsxDEV(B,{children:[a.jsxDEV(q,{icon:G,title:`Filter by ${e.entity}`,onClick:()=>g(e.entity)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:94,columnNumber:11},this),a.jsxDEV("button",{onClick:u=>{u.stopPropagation(),t(e.status)},className:"opacity-0 group-hover/row:opacity-100 transition-opacity",title:`Filter by ${e.status}`,children:a.jsxDEV("svg",{className:`w-[18px] h-[18px] ${K[e.status]??"text-text-tertiary"} hover:opacity-70`,viewBox:"0 0 24 24",fill:"currentColor",children:a.jsxDEV("circle",{cx:"12",cy:"12",r:"6"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:105,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:104,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:99,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:93,columnNumber:9},this),className:"w-24 text-right"}]}function fe(){const g=H(),{filters:t,setFilter:e,setFilters:u,pagination:i}=F({filters:{search:"",entity:"",status:"",namespace:""}}),[d,R]=m.useState(t.search);m.useEffect(()=>{if(d===t.search)return;const s=setTimeout(()=>e("search",d),300);return()=>clearTimeout(s)},[d,e,t.search]);const{data:l}=T(),{data:c}=$(),b=m.useMemo(()=>{const s=new Set((l==null?void 0:l.app_ids)??[]);for(const n of(c==null?void 0:c.namespaces)??[])s.add(n.name);return[...s].sort()},[l==null?void 0:l.app_ids,c==null?void 0:c.namespaces]),M=b.includes("longtail")?"longtail":b[0]??"",o=t.namespace||M,{data:p}=C(o),{data:r,isLoading:E,refetch:j,isFetching:V}=w({app_id:o,limit:i.pageSize,offset:i.offset,entity:t.entity||void 0,search:t.search||void 0,status:t.status||void 0}),N=(r==null?void 0:r.total)??0,D=m.useMemo(()=>{const s=(r==null?void 0:r.jobs)??[],n={running:0,failed:1,completed:2};return[...s].sort((h,x)=>{const v=n[h.status]??9,P=n[x.status]??9;return v!==P?v-P:new Date(x.created_at).getTime()-new Date(h.created_at).getTime()})},[r==null?void 0:r.jobs]),S=Q(s=>e("entity",s),s=>e("status",s)),_=m.useMemo(()=>{const s=new Set(b);return o&&s.add(o),[...s].sort().map(n=>({value:n,label:n}))},[b,o]),k=m.useMemo(()=>{const s=new Set((p==null?void 0:p.entities)??[]);return t.entity&&!s.has(t.entity)&&s.add(t.entity),[...s].sort().map(n=>({value:n,label:n}))},[p==null?void 0:p.entities,t.entity]);return a.jsxDEV("div",{children:[a.jsxDEV(U,{title:"Pipeline Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:188,columnNumber:7},this),a.jsxDEV(O,{actions:a.jsxDEV(W,{onRefresh:()=>j(),isFetching:V,apiPath:`/mcp-runs?app_id=${o||"longtail"}&limit=${i.pageSize}&offset=${i.offset}${t.entity?`&entity=${t.entity}`:""}${t.status?`&status=${t.status}`:""}${t.search?`&search=${t.search}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:191,columnNumber:9},this),children:[a.jsxDEV(f,{label:"Namespace",value:o,onChange:s=>{u({namespace:s,entity:""})},options:_,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:s=>R(s.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(f,{label:"Tool",value:t.entity,onChange:s=>e("entity",s),options:k},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:213,columnNumber:9},this),a.jsxDEV(f,{label:"Status",value:t.status,onChange:s=>e("status",s),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:190,columnNumber:7},this),a.jsxDEV(z,{columns:S,data:D,keyFn:s=>s.workflow_id,onRowClick:s=>g(`/mcp/executions/${encodeURIComponent(s.workflow_id)}?namespace=${o}`),isLoading:E,emptyMessage:"No pipeline executions found"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:231,columnNumber:7},this),a.jsxDEV(I,{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:240,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:187,columnNumber:5},this)}export{fe as McpRunsPage};
2
- //# sourceMappingURL=McpRunsPage-BBgybBEa.js.map
1
+ import{j as a}from"./index-BYZX9tOb.js";import{a as m}from"./vendor-query-DLp59M9_.js";import{a as C,u as w}from"./mcp-runs-CWeZinoF.js";import{a as T}from"./yaml-workflows-DLwd2BOX.js";import{u as $}from"./namespaces-C3WtdO_9.js";import{u as F}from"./useFilterParams-BUyLHcx_.js";import{D as z}from"./DataTable-CTRhTAfT.js";import{W as A}from"./WorkflowPill-CZqGslD6.js";import{T as y}from"./TimestampCell-QX_0i5FK.js";import{E as L}from"./ElapsedCell-HcSJ_MMs.js";import{P as U}from"./PageHeader-BcTVF9ul.js";import{F as O,b as f}from"./FilterBar-BiO8SOzc.js";import{S as I}from"./StickyPagination-DTIjBKN3.js";import{L as W}from"./ListToolbar-6yRDh2e9.js";import{R as B,a as q}from"./RowActions-yDhwwDbU.js";import{n as G}from"./vendor-icons-T4r2DSPD.js";import{c as H}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-joNbd4gg.js";const Y={running:"in_progress",completed:"completed",failed:"failed"},J={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"},K={running:"text-status-active",completed:"text-status-success",failed:"text-status-error"};function Q(g,t){return[{key:"workflow_id",label:"Run ID / Tool",render:e=>{const u=J[Y[e.status]??e.status]??"bg-status-pending",i=e.status==="running"?" animate-pulse":"";return a.jsxDEV("div",{className:"flex items-start gap-2 min-w-0",children:[a.jsxDEV("span",{className:`w-[9px] h-[9px] shrink-0 rounded-full mt-1 ${u}${i}`,title:e.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:50,columnNumber:13},this),a.jsxDEV("div",{className:"min-w-0",children:[a.jsxDEV("span",{className:"font-mono text-xs text-text-primary truncate block",children:e.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:52,columnNumber:15},this),a.jsxDEV("div",{className:"mt-0.5",children:e.entity?a.jsxDEV(A,{type:e.entity,variant:"pipeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:57,columnNumber:21},this):a.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:58,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:55,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:51,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:49,columnNumber:11},this)}},{key:"created_at",label:"Created",render:e=>a.jsxDEV(y,{date:e.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:68,columnNumber:24},this),className:"w-40"},{key:"updated_at",label:"Updated",render:e=>a.jsxDEV(y,{date:e.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:74,columnNumber:24},this),className:"w-40"},{key:"duration",label:"Duration",render:e=>a.jsxDEV(L,{startDate:e.created_at,endDate:e.status==="running"?null:e.updated_at,isLive:e.status==="running"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:81,columnNumber:9},this),className:"w-28"},{key:"actions",label:"",render:e=>a.jsxDEV(B,{children:[a.jsxDEV(q,{icon:G,title:`Filter by ${e.entity}`,onClick:()=>g(e.entity)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:94,columnNumber:11},this),a.jsxDEV("button",{onClick:u=>{u.stopPropagation(),t(e.status)},className:"opacity-0 group-hover/row:opacity-100 transition-opacity",title:`Filter by ${e.status}`,children:a.jsxDEV("svg",{className:`w-[18px] h-[18px] ${K[e.status]??"text-text-tertiary"} hover:opacity-70`,viewBox:"0 0 24 24",fill:"currentColor",children:a.jsxDEV("circle",{cx:"12",cy:"12",r:"6"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:105,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:104,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:99,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:93,columnNumber:9},this),className:"w-24 text-right"}]}function fe(){const g=H(),{filters:t,setFilter:e,setFilters:u,pagination:i}=F({filters:{search:"",entity:"",status:"",namespace:""}}),[d,R]=m.useState(t.search);m.useEffect(()=>{if(d===t.search)return;const s=setTimeout(()=>e("search",d),300);return()=>clearTimeout(s)},[d,e,t.search]);const{data:l}=T(),{data:c}=$(),b=m.useMemo(()=>{const s=new Set((l==null?void 0:l.app_ids)??[]);for(const n of(c==null?void 0:c.namespaces)??[])s.add(n.name);return[...s].sort()},[l==null?void 0:l.app_ids,c==null?void 0:c.namespaces]),M=b.includes("longtail")?"longtail":b[0]??"",o=t.namespace||M,{data:p}=C(o),{data:r,isLoading:E,refetch:j,isFetching:V}=w({app_id:o,limit:i.pageSize,offset:i.offset,entity:t.entity||void 0,search:t.search||void 0,status:t.status||void 0}),N=(r==null?void 0:r.total)??0,D=m.useMemo(()=>{const s=(r==null?void 0:r.jobs)??[],n={running:0,failed:1,completed:2};return[...s].sort((h,x)=>{const v=n[h.status]??9,P=n[x.status]??9;return v!==P?v-P:new Date(x.created_at).getTime()-new Date(h.created_at).getTime()})},[r==null?void 0:r.jobs]),S=Q(s=>e("entity",s),s=>e("status",s)),_=m.useMemo(()=>{const s=new Set(b);return o&&s.add(o),[...s].sort().map(n=>({value:n,label:n}))},[b,o]),k=m.useMemo(()=>{const s=new Set((p==null?void 0:p.entities)??[]);return t.entity&&!s.has(t.entity)&&s.add(t.entity),[...s].sort().map(n=>({value:n,label:n}))},[p==null?void 0:p.entities,t.entity]);return a.jsxDEV("div",{children:[a.jsxDEV(U,{title:"Pipeline Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:188,columnNumber:7},this),a.jsxDEV(O,{actions:a.jsxDEV(W,{onRefresh:()=>j(),isFetching:V,apiPath:`/mcp-runs?app_id=${o||"longtail"}&limit=${i.pageSize}&offset=${i.offset}${t.entity?`&entity=${t.entity}`:""}${t.status?`&status=${t.status}`:""}${t.search?`&search=${t.search}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:191,columnNumber:9},this),children:[a.jsxDEV(f,{label:"Namespace",value:o,onChange:s=>{u({namespace:s,entity:""})},options:_,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:s=>R(s.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(f,{label:"Tool",value:t.entity,onChange:s=>e("entity",s),options:k},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:213,columnNumber:9},this),a.jsxDEV(f,{label:"Status",value:t.status,onChange:s=>e("status",s),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:190,columnNumber:7},this),a.jsxDEV(z,{columns:S,data:D,keyFn:s=>s.workflow_id,onRowClick:s=>g(`/mcp/executions/${encodeURIComponent(s.workflow_id)}?namespace=${o}`),isLoading:E,emptyMessage:"No pipeline executions found"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:231,columnNumber:7},this),a.jsxDEV(I,{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:240,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:187,columnNumber:5},this)}export{fe as McpRunsPage};
2
+ //# sourceMappingURL=McpRunsPage-DKvTklh9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpRunsPage-BBgybBEa.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/mcp-runs';\nimport { useYamlWorkflowAppIds } from '../../api/yaml-workflows';\nimport { useNamespaces } from '../../api/namespaces';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\nimport { TimestampCell } from '../../components/common/display/TimestampCell';\nimport { ElapsedCell } from '../../components/common/display/ElapsedCell';\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 / Tool',\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-start gap-2 min-w-0\">\n <span className={`w-[9px] h-[9px] shrink-0 rounded-full mt-1 ${dotClass}${pulseClass}`} title={row.status} />\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 {row.entity\n ? <WorkflowPill type={row.entity} variant=\"pipeline\" />\n : <span className=\"text-[10px] text-text-tertiary\">—</span>}\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 },\n {\n key: 'updated_at',\n label: 'Updated',\n render: (row) => <TimestampCell date={row.updated_at} />,\n className: 'w-40',\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=\"currentColor\">\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 { filters, setFilter, setFilters, pagination } = 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 const { data: nsData } = useNamespaces();\n\n const allNamespaceNames = useMemo(() => {\n const set = new Set(appIdData?.app_ids ?? []);\n for (const ns of nsData?.namespaces ?? []) {\n set.add(ns.name);\n }\n return [...set].sort();\n }, [appIdData?.app_ids, nsData?.namespaces]);\n\n // Default: URL param > 'longtail' (if exists) > first in list\n const defaultNamespace = allNamespaceNames.includes('longtail')\n ? 'longtail'\n : allNamespaceNames[0] ?? '';\n const activeNamespace = filters.namespace || defaultNamespace;\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 });\n\n const total = runsData?.total ?? 0;\n\n const jobs = useMemo(() => {\n const raw = runsData?.jobs ?? [];\n const STATUS_ORDER: Record<string, number> = { running: 0, failed: 1, completed: 2 };\n return [...raw].sort((a, b) => {\n const sa = STATUS_ORDER[a.status] ?? 9;\n const sb = STATUS_ORDER[b.status] ?? 9;\n if (sa !== sb) return sa - sb;\n return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();\n });\n }, [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\" />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/mcp-runs?app_id=${activeNamespace || 'longtail'}&limit=${pagination.pageSize}&offset=${pagination.offset}${filters.entity ? `&entity=${filters.entity}` : ''}${filters.status ? `&status=${filters.status}` : ''}${filters.search ? `&search=${filters.search}` : ''}`}\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 />\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","TimestampCell","ElapsedCell","RowActionGroup","RowAction","Filter","e","McpRunsPage","navigate","useNavigate","filters","setFilter","setFilters","pagination","useFilterParams","searchInput","setSearchInput","useState","useEffect","timer","appIdData","useYamlWorkflowAppIds","nsData","useNamespaces","allNamespaceNames","useMemo","set","ns","defaultNamespace","activeNamespace","entitiesData","useMcpEntities","runsData","isLoading","refetch","isFetching","useMcpRuns","total","jobs","raw","STATUS_ORDER","a","b","sa","sb","columns","entity","status","namespaces","id","entities","known","PageHeader","FilterBar","ListToolbar","FilterSelect","v","DataTable","StickyPagination"],"mappings":"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"}
1
+ {"version":3,"file":"McpRunsPage-DKvTklh9.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/mcp-runs';\nimport { useYamlWorkflowAppIds } from '../../api/yaml-workflows';\nimport { useNamespaces } from '../../api/namespaces';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\nimport { TimestampCell } from '../../components/common/display/TimestampCell';\nimport { ElapsedCell } from '../../components/common/display/ElapsedCell';\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 / Tool',\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-start gap-2 min-w-0\">\n <span className={`w-[9px] h-[9px] shrink-0 rounded-full mt-1 ${dotClass}${pulseClass}`} title={row.status} />\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 {row.entity\n ? <WorkflowPill type={row.entity} variant=\"pipeline\" />\n : <span className=\"text-[10px] text-text-tertiary\">—</span>}\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 },\n {\n key: 'updated_at',\n label: 'Updated',\n render: (row) => <TimestampCell date={row.updated_at} />,\n className: 'w-40',\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=\"currentColor\">\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 { filters, setFilter, setFilters, pagination } = 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 const { data: nsData } = useNamespaces();\n\n const allNamespaceNames = useMemo(() => {\n const set = new Set(appIdData?.app_ids ?? []);\n for (const ns of nsData?.namespaces ?? []) {\n set.add(ns.name);\n }\n return [...set].sort();\n }, [appIdData?.app_ids, nsData?.namespaces]);\n\n // Default: URL param > 'longtail' (if exists) > first in list\n const defaultNamespace = allNamespaceNames.includes('longtail')\n ? 'longtail'\n : allNamespaceNames[0] ?? '';\n const activeNamespace = filters.namespace || defaultNamespace;\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 });\n\n const total = runsData?.total ?? 0;\n\n const jobs = useMemo(() => {\n const raw = runsData?.jobs ?? [];\n const STATUS_ORDER: Record<string, number> = { running: 0, failed: 1, completed: 2 };\n return [...raw].sort((a, b) => {\n const sa = STATUS_ORDER[a.status] ?? 9;\n const sb = STATUS_ORDER[b.status] ?? 9;\n if (sa !== sb) return sa - sb;\n return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();\n });\n }, [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\" />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/mcp-runs?app_id=${activeNamespace || 'longtail'}&limit=${pagination.pageSize}&offset=${pagination.offset}${filters.entity ? `&entity=${filters.entity}` : ''}${filters.status ? `&status=${filters.status}` : ''}${filters.search ? `&search=${filters.search}` : ''}`}\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 />\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","TimestampCell","ElapsedCell","RowActionGroup","RowAction","Filter","e","McpRunsPage","navigate","useNavigate","filters","setFilter","setFilters","pagination","useFilterParams","searchInput","setSearchInput","useState","useEffect","timer","appIdData","useYamlWorkflowAppIds","nsData","useNamespaces","allNamespaceNames","useMemo","set","ns","defaultNamespace","activeNamespace","entitiesData","useMcpEntities","runsData","isLoading","refetch","isFetching","useMcpRuns","total","jobs","raw","STATUS_ORDER","a","b","sa","sb","columns","entity","status","namespaces","id","entities","known","PageHeader","FilterBar","ListToolbar","FilterSelect","v","DataTable","StickyPagination"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as e}from"./index-DnmZbNxk.js";import{a as n}from"./vendor-query-DLp59M9_.js";import{a as d}from"./vendor-react-Co3Y8ikm.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-CaJ0gTEa.js.map
1
+ import{j as e}from"./index-BYZX9tOb.js";import{a as n}from"./vendor-query-DLp59M9_.js";import{a as d}from"./vendor-react-Co3Y8ikm.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-BuTvD0pz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal-CaJ0gTEa.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"}
1
+ {"version":3,"file":"Modal-BuTvD0pz.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"}
@@ -1,2 +1,2 @@
1
- import{i as v,r as D,p as E,q as O,j as s}from"./index-DnmZbNxk.js";import{e as S}from"./useEventHooks-BylecvvI.js";import{u as P}from"./roles-DhhLTvXg.js";import{u as j}from"./useFilterParams-BUyLHcx_.js";import{D as C}from"./DataTable-DyIXg-tQ.js";import{P as V}from"./PageHeader-C5D-G5rp.js";import{S as $}from"./StickyPagination-BZbExQ9t.js";import{R as L,a as R}from"./RowActions-DIzJCwqR.js";import{a as _,T as w,E as F}from"./escalation-columns-30CKyoWI.js";import{L as T}from"./ListToolbar-BUcagSCn.js";import{V as k}from"./vendor-icons-D1DdudfH.js";import{c as z}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./EmptyState-DlMImvgm.js";import"./FilterBar-BTiaAhCx.js";import"./PriorityBadge-DTHq6OUZ.js";import"./RolePill-kgKPANly.js";import"./WorkflowPill-CP84Vqeg.js";import"./TimestampCell-CEMapYDQ.js";import"./escalation-CV0sKNH5.js";function te(){S();const d=z(),{user:p}=v(),{filters:e,setFilter:c,pagination:a,sort:t,setSort:u}=j({filters:{role:"",type:"",priority:""}}),b=D(),{data:l}=P(),{data:n}=E(),{data:r,isLoading:f,error:i,refetch:g,isFetching:h}=O({assigned_to:p==null?void 0:p.userId,status:"pending",role:e.role||void 0,type:e.type||void 0,priority:e.priority?parseInt(e.priority):void 0,limit:a.pageSize,offset:a.offset,sort_by:t.sort_by||void 0,order:t.sort_by?t.order:void 0}),N=((r==null?void 0:r.escalations)??[]).filter(o=>o.assigned_until&&new Date(o.assigned_until)>new Date),m=(r==null?void 0:r.total)??0,x={key:"actions",label:"",render:o=>s.jsxDEV(L,{children:s.jsxDEV(R,{icon:k,title:"Release escalation",onClick:()=>b.mutate(o.id),colorClass:"text-text-tertiary hover:text-status-warning"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:50,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:49,columnNumber:7},this),className:"w-16 text-right"},y=[w,...F,x];return s.jsxDEV("div",{children:[s.jsxDEV(V,{title:"My Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:70,columnNumber:7},this),s.jsxDEV(_,{filters:e,setFilter:c,roles:(l==null?void 0:l.roles)??[],types:(n==null?void 0:n.types)??[],actions:s.jsxDEV(T,{onRefresh:()=>g(),isFetching:h,apiPath:`/escalations?status=claimed&limit=${a.pageSize}&offset=${a.offset}${e.role?`&role=${e.role}`:""}${e.type?`&type=${e.type}`:""}${e.priority?`&priority=${e.priority}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:78,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:72,columnNumber:7},this),i&&s.jsxDEV("div",{className:"mb-4 px-4 py-3 rounded-md bg-status-error/10 border border-status-error/20 text-xs text-status-error",children:i.message==="Session expired"?"Your session has expired. Please log in again.":`Failed to load escalations: ${i.message}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:87,columnNumber:9},this),s.jsxDEV(C,{columns:y,data:N,keyFn:o=>o.id,onRowClick:o=>d(`/escalations/detail/${o.id}`,{state:{from:"/escalations/queue"}}),isLoading:f,emptyMessage:i?"Unable to load data":"No assigned escalations",sort:t,onSort:u},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:94,columnNumber:7},this),s.jsxDEV($,{page:a.page,totalPages:a.totalPages(m),onPageChange:a.setPage,total:m,pageSize:a.pageSize,onPageSizeChange:a.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:105,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:69,columnNumber:5},this)}export{te as OperatorDashboard};
2
- //# sourceMappingURL=OperatorDashboard-DDfMmrmR.js.map
1
+ import{i as v,r as D,p as E,q as O,j as s}from"./index-BYZX9tOb.js";import{e as S}from"./useEventHooks-anv_B2Yy.js";import{u as P}from"./roles-BDAsPpZG.js";import{u as j}from"./useFilterParams-BUyLHcx_.js";import{D as C}from"./DataTable-CTRhTAfT.js";import{P as V}from"./PageHeader-BcTVF9ul.js";import{S as $}from"./StickyPagination-DTIjBKN3.js";import{R as L,a as R}from"./RowActions-yDhwwDbU.js";import{a as _,T as w,E as F}from"./escalation-columns-Cyg58nkg.js";import{L as T}from"./ListToolbar-6yRDh2e9.js";import{V as k}from"./vendor-icons-T4r2DSPD.js";import{c as z}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./EmptyState-joNbd4gg.js";import"./FilterBar-BiO8SOzc.js";import"./PriorityBadge-DqVaOU65.js";import"./RolePill-D9ZIkYiu.js";import"./WorkflowPill-CZqGslD6.js";import"./TimestampCell-QX_0i5FK.js";import"./escalation-JOTuOqjq.js";function te(){S();const d=z(),{user:p}=v(),{filters:e,setFilter:c,pagination:a,sort:t,setSort:u}=j({filters:{role:"",type:"",priority:""}}),b=D(),{data:l}=P(),{data:n}=E(),{data:r,isLoading:f,error:i,refetch:g,isFetching:h}=O({assigned_to:p==null?void 0:p.userId,status:"pending",role:e.role||void 0,type:e.type||void 0,priority:e.priority?parseInt(e.priority):void 0,limit:a.pageSize,offset:a.offset,sort_by:t.sort_by||void 0,order:t.sort_by?t.order:void 0}),N=((r==null?void 0:r.escalations)??[]).filter(o=>o.assigned_until&&new Date(o.assigned_until)>new Date),m=(r==null?void 0:r.total)??0,x={key:"actions",label:"",render:o=>s.jsxDEV(L,{children:s.jsxDEV(R,{icon:k,title:"Release escalation",onClick:()=>b.mutate(o.id),colorClass:"text-text-tertiary hover:text-status-warning"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:50,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:49,columnNumber:7},this),className:"w-16 text-right"},y=[w,...F,x];return s.jsxDEV("div",{children:[s.jsxDEV(V,{title:"My Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:70,columnNumber:7},this),s.jsxDEV(_,{filters:e,setFilter:c,roles:(l==null?void 0:l.roles)??[],types:(n==null?void 0:n.types)??[],actions:s.jsxDEV(T,{onRefresh:()=>g(),isFetching:h,apiPath:`/escalations?status=claimed&limit=${a.pageSize}&offset=${a.offset}${e.role?`&role=${e.role}`:""}${e.type?`&type=${e.type}`:""}${e.priority?`&priority=${e.priority}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:78,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:72,columnNumber:7},this),i&&s.jsxDEV("div",{className:"mb-4 px-4 py-3 rounded-md bg-status-error/10 border border-status-error/20 text-xs text-status-error",children:i.message==="Session expired"?"Your session has expired. Please log in again.":`Failed to load escalations: ${i.message}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:87,columnNumber:9},this),s.jsxDEV(C,{columns:y,data:N,keyFn:o=>o.id,onRowClick:o=>d(`/escalations/detail/${o.id}`,{state:{from:"/escalations/queue"}}),isLoading:f,emptyMessage:i?"Unable to load data":"No assigned escalations",sort:t,onSort:u},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:94,columnNumber:7},this),s.jsxDEV($,{page:a.page,totalPages:a.totalPages(m),onPageChange:a.setPage,total:m,pageSize:a.pageSize,onPageSizeChange:a.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:105,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:69,columnNumber:5},this)}export{te as OperatorDashboard};
2
+ //# sourceMappingURL=OperatorDashboard-C9SSV96T.js.map