@hotmeshio/long-tail 0.1.16 → 0.1.17

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 (359) hide show
  1. package/build/api/escalations/resolve.js +1 -0
  2. package/build/api/files.d.ts +4 -0
  3. package/build/api/files.js +14 -0
  4. package/build/api/workflows/config.js +5 -0
  5. package/build/index.d.ts +0 -1
  6. package/build/index.js +1 -4
  7. package/build/lib/db/schemas/002_seed.sql +3 -81
  8. package/build/lib/storage/mime.js +20 -0
  9. package/build/routes/file-browser.js +30 -0
  10. package/build/routes/files.js +20 -18
  11. package/build/services/config/sql.d.ts +3 -0
  12. package/build/services/config/sql.js +15 -1
  13. package/build/services/config/write.d.ts +6 -0
  14. package/build/services/config/write.js +64 -0
  15. package/build/services/cron/index.d.ts +5 -0
  16. package/build/services/cron/index.js +30 -0
  17. package/build/services/insight/index.js +3 -0
  18. package/build/services/interceptor/activities/task.d.ts +1 -0
  19. package/build/services/interceptor/activities/task.js +2 -1
  20. package/build/services/interceptor/activities/workflow.js +1 -0
  21. package/build/services/interceptor/index.js +4 -4
  22. package/build/services/interceptor/lifecycle.js +1 -1
  23. package/build/services/mcp/db.d.ts +17 -0
  24. package/build/services/mcp/db.js +50 -0
  25. package/build/services/mcp/sql.d.ts +4 -1
  26. package/build/services/mcp/sql.js +9 -2
  27. package/build/services/oauth/index.js +4 -1
  28. package/build/services/oauth/providers/google.js +7 -2
  29. package/build/services/orchestrator/index.js +5 -0
  30. package/build/services/task/crud.js +1 -0
  31. package/build/services/task/sql.d.ts +1 -1
  32. package/build/services/task/sql.js +2 -2
  33. package/build/services/task/types.d.ts +2 -0
  34. package/build/services/workers/registry.js +3 -1
  35. package/build/services/workflow-invocation.js +8 -1
  36. package/build/start/workers.d.ts +2 -1
  37. package/build/start/workers.js +66 -6
  38. package/build/system/index.d.ts +12 -10
  39. package/build/system/index.js +240 -67
  40. package/build/system/mcp-servers/playwright/schemas.d.ts +12 -12
  41. package/build/system/seed/index.d.ts +0 -7
  42. package/build/system/seed/index.js +5 -46
  43. package/build/tsconfig.tsbuildinfo +1 -1
  44. package/build/types/index.d.ts +1 -1
  45. package/build/types/startup.d.ts +59 -2
  46. package/dashboard/dist/assets/AdminDashboard-CsTOErp1.js +2 -0
  47. package/dashboard/dist/assets/{AdminDashboard-Bprul9Eb.js.map → AdminDashboard-CsTOErp1.js.map} +1 -1
  48. package/dashboard/dist/assets/AvailableEscalationsPage-BqQA3IJp.js +2 -0
  49. package/dashboard/dist/assets/{AvailableEscalationsPage-H_z5mC10.js.map → AvailableEscalationsPage-BqQA3IJp.js.map} +1 -1
  50. package/dashboard/dist/assets/BotPicker-C2xR1xay.js +2 -0
  51. package/dashboard/dist/assets/{BotPicker-DcvILNUf.js.map → BotPicker-C2xR1xay.js.map} +1 -1
  52. package/dashboard/dist/assets/CollapsibleSection-CRtHQsAv.js +2 -0
  53. package/dashboard/dist/assets/{CollapsibleSection-BWPbzgEe.js.map → CollapsibleSection-CRtHQsAv.js.map} +1 -1
  54. package/dashboard/dist/assets/ConfirmDeleteModal-dOxidrSR.js +2 -0
  55. package/dashboard/dist/assets/{ConfirmDeleteModal-Cy6KVLfC.js.map → ConfirmDeleteModal-dOxidrSR.js.map} +1 -1
  56. package/dashboard/dist/assets/CopyableId-DmLF-RqZ.js +2 -0
  57. package/dashboard/dist/assets/{CopyableId-CRED8hvk.js.map → CopyableId-DmLF-RqZ.js.map} +1 -1
  58. package/dashboard/dist/assets/CredentialsPage-C7XT1bnO.js +2 -0
  59. package/dashboard/dist/assets/CredentialsPage-C7XT1bnO.js.map +1 -0
  60. package/dashboard/dist/assets/CustomDurationPicker-BABUv1V2.js +2 -0
  61. package/dashboard/dist/assets/{CustomDurationPicker-eOk2EqQ5.js.map → CustomDurationPicker-BABUv1V2.js.map} +1 -1
  62. package/dashboard/dist/assets/DataTable-D3-wSEf0.js +2 -0
  63. package/dashboard/dist/assets/{DataTable-bd2PTBJd.js.map → DataTable-D3-wSEf0.js.map} +1 -1
  64. package/dashboard/dist/assets/DropZone-DHKmMqRA.js +2 -0
  65. package/dashboard/dist/assets/DropZone-DHKmMqRA.js.map +1 -0
  66. package/dashboard/dist/assets/ElapsedCell-DrJif03B.js +2 -0
  67. package/dashboard/dist/assets/{ElapsedCell-BGo8vyus.js.map → ElapsedCell-DrJif03B.js.map} +1 -1
  68. package/dashboard/dist/assets/EmptyState-BcsfPq9T.js +2 -0
  69. package/dashboard/dist/assets/EmptyState-BcsfPq9T.js.map +1 -0
  70. package/dashboard/dist/assets/EscalationsOverview-H6CwfeR-.js +2 -0
  71. package/dashboard/dist/assets/EscalationsOverview-H6CwfeR-.js.map +1 -0
  72. package/dashboard/dist/assets/EventTable-Dh3_9DAY.js +2 -0
  73. package/dashboard/dist/assets/{EventTable-CmFhswLW.js.map → EventTable-Dh3_9DAY.js.map} +1 -1
  74. package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +2 -0
  75. package/dashboard/dist/assets/{FilterBar-BQNzsd3A.js.map → FilterBar-Ck4K4rzu.js.map} +1 -1
  76. package/dashboard/dist/assets/ListToolbar-CyEkulVR.js +2 -0
  77. package/dashboard/dist/assets/{ListToolbar-OWOn-HiC.js.map → ListToolbar-CyEkulVR.js.map} +1 -1
  78. package/dashboard/dist/assets/McpOverview-ChLa6Gl7.js +2 -0
  79. package/dashboard/dist/assets/{McpOverview-OkEzvClD.js.map → McpOverview-ChLa6Gl7.js.map} +1 -1
  80. package/dashboard/dist/assets/McpQueryDetailPage-5Dsj6PlL.js +5 -0
  81. package/dashboard/dist/assets/McpQueryDetailPage-5Dsj6PlL.js.map +1 -0
  82. package/dashboard/dist/assets/McpQueryPage-D2DmDFPu.js +2 -0
  83. package/dashboard/dist/assets/McpQueryPage-D2DmDFPu.js.map +1 -0
  84. package/dashboard/dist/assets/McpRunDetailPage-ERVuNEEK.js +2 -0
  85. package/dashboard/dist/assets/{McpRunDetailPage-DMeiG4i_.js.map → McpRunDetailPage-ERVuNEEK.js.map} +1 -1
  86. package/dashboard/dist/assets/McpRunsPage-BKba-3Wl.js +2 -0
  87. package/dashboard/dist/assets/McpRunsPage-BKba-3Wl.js.map +1 -0
  88. package/dashboard/dist/assets/Modal-DEODGeqx.js +2 -0
  89. package/dashboard/dist/assets/{Modal-Dir9Rlnx.js.map → Modal-DEODGeqx.js.map} +1 -1
  90. package/dashboard/dist/assets/OperatorDashboard-CJm_BTPU.js +2 -0
  91. package/dashboard/dist/assets/{OperatorDashboard-OqWC6Azy.js.map → OperatorDashboard-CJm_BTPU.js.map} +1 -1
  92. package/dashboard/dist/assets/PageHeader-B-SN5GZ2.js +2 -0
  93. package/dashboard/dist/assets/PageHeader-B-SN5GZ2.js.map +1 -0
  94. package/dashboard/dist/assets/PageHeaderWithStats-BZ3AGT5s.js +2 -0
  95. package/dashboard/dist/assets/PageHeaderWithStats-BZ3AGT5s.js.map +1 -0
  96. package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +2 -0
  97. package/dashboard/dist/assets/{PriorityBadge-C7D5d_HY.js.map → PriorityBadge-DfQY9St9.js.map} +1 -1
  98. package/dashboard/dist/assets/ProcessDetailPage-vfnCDyQK.js +2 -0
  99. package/dashboard/dist/assets/{ProcessDetailPage-DZIP6grw.js.map → ProcessDetailPage-vfnCDyQK.js.map} +1 -1
  100. package/dashboard/dist/assets/ProcessesListPage-DcAN6AJK.js +2 -0
  101. package/dashboard/dist/assets/ProcessesListPage-DcAN6AJK.js.map +1 -0
  102. package/dashboard/dist/assets/RolePill-BhVC0cc3.js +2 -0
  103. package/dashboard/dist/assets/{RolePill-D6nMxMvp.js.map → RolePill-BhVC0cc3.js.map} +1 -1
  104. package/dashboard/dist/assets/RolesPage-DYSt2aAr.js +2 -0
  105. package/dashboard/dist/assets/RolesPage-DYSt2aAr.js.map +1 -0
  106. package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +2 -0
  107. package/dashboard/dist/assets/{RowActions-JqgAB0p3.js.map → RowActions-Dg-Fsm5O.js.map} +1 -1
  108. package/dashboard/dist/assets/RunAsSelector-CD7_Dmb0.js +2 -0
  109. package/dashboard/dist/assets/{RunAsSelector-KAlKtitB.js.map → RunAsSelector-CD7_Dmb0.js.map} +1 -1
  110. package/dashboard/dist/assets/StatCard-DlgF0CJC.js +2 -0
  111. package/dashboard/dist/assets/{StatCard-B-WLhOaH.js.map → StatCard-DlgF0CJC.js.map} +1 -1
  112. package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js +2 -0
  113. package/dashboard/dist/assets/StatusBadge-XQlNFwmH.js.map +1 -0
  114. package/dashboard/dist/assets/StepIndicator-CuUIGxKk.js +2 -0
  115. package/dashboard/dist/assets/{StepIndicator-D9Xvdf18.js.map → StepIndicator-CuUIGxKk.js.map} +1 -1
  116. package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +2 -0
  117. package/dashboard/dist/assets/{StickyPagination-CJHMzYJj.js.map → StickyPagination-F9FZsRy9.js.map} +1 -1
  118. package/dashboard/dist/assets/SwimlaneTimeline-CUl5RdXU.js +2 -0
  119. package/dashboard/dist/assets/SwimlaneTimeline-CUl5RdXU.js.map +1 -0
  120. package/dashboard/dist/assets/TagInput-DftaRHDV.js +2 -0
  121. package/dashboard/dist/assets/{TagInput-DcPnUnSJ.js.map → TagInput-DftaRHDV.js.map} +1 -1
  122. package/dashboard/dist/assets/TaskDetailPage-BoA-cfwW.js +2 -0
  123. package/dashboard/dist/assets/TaskDetailPage-BoA-cfwW.js.map +1 -0
  124. package/dashboard/dist/assets/TaskQueuePill-Ce8KlXtR.js +2 -0
  125. package/dashboard/dist/assets/TaskQueuePill-Ce8KlXtR.js.map +1 -0
  126. package/dashboard/dist/assets/TasksListPage-g6XIbhju.js +2 -0
  127. package/dashboard/dist/assets/{TasksListPage-DeewV4Gp.js.map → TasksListPage-g6XIbhju.js.map} +1 -1
  128. package/dashboard/dist/assets/TimeAgo-BihIwEbB.js +2 -0
  129. package/dashboard/dist/assets/{TimeAgo-DJZq-e4R.js.map → TimeAgo-BihIwEbB.js.map} +1 -1
  130. package/dashboard/dist/assets/TimestampCell-GOFcvE-i.js +2 -0
  131. package/dashboard/dist/assets/{TimestampCell-Dx5uwGfS.js.map → TimestampCell-GOFcvE-i.js.map} +1 -1
  132. package/dashboard/dist/assets/UserName-CmMVt4vS.js +2 -0
  133. package/dashboard/dist/assets/{UserName-CnGk7MgL.js.map → UserName-CmMVt4vS.js.map} +1 -1
  134. package/dashboard/dist/assets/WorkflowExecutionPage-soRFz_30.js +2 -0
  135. package/dashboard/dist/assets/{WorkflowExecutionPage-CPQ0fIwf.js.map → WorkflowExecutionPage-soRFz_30.js.map} +1 -1
  136. package/dashboard/dist/assets/WorkflowPill-DUDDyBsj.js +2 -0
  137. package/dashboard/dist/assets/{WorkflowPill-BrD5d1AG.js.map → WorkflowPill-DUDDyBsj.js.map} +1 -1
  138. package/dashboard/dist/assets/WorkflowsDashboard-Be1A1zAT.js +2 -0
  139. package/dashboard/dist/assets/WorkflowsDashboard-Be1A1zAT.js.map +1 -0
  140. package/dashboard/dist/assets/WorkflowsOverview-z3Ztiz1y.js +2 -0
  141. package/dashboard/dist/assets/{WorkflowsOverview-lBp2E6rN.js.map → WorkflowsOverview-z3Ztiz1y.js.map} +1 -1
  142. package/dashboard/dist/assets/YamlWorkflowsPage-C6qzcQcJ.js +2 -0
  143. package/dashboard/dist/assets/YamlWorkflowsPage-C6qzcQcJ.js.map +1 -0
  144. package/dashboard/dist/assets/{bots-fc_O_YIq.js → bots-BZPXDh_y.js} +2 -2
  145. package/dashboard/dist/assets/{bots-fc_O_YIq.js.map → bots-BZPXDh_y.js.map} +1 -1
  146. package/dashboard/dist/assets/escalation-DBUIq1Z4.js +2 -0
  147. package/dashboard/dist/assets/{escalation-BYhLYHBz.js.map → escalation-DBUIq1Z4.js.map} +1 -1
  148. package/dashboard/dist/assets/escalation-columns-DL4zsR8Y.js +2 -0
  149. package/dashboard/dist/assets/{escalation-columns-DjJyuC1g.js.map → escalation-columns-DL4zsR8Y.js.map} +1 -1
  150. package/dashboard/dist/assets/helpers-D50KFFkI.js +2 -0
  151. package/dashboard/dist/assets/{helpers-CQG3Rh2y.js.map → helpers-D50KFFkI.js.map} +1 -1
  152. package/dashboard/dist/assets/index-B-ioA6yv.js +2 -0
  153. package/dashboard/dist/assets/index-B-ioA6yv.js.map +1 -0
  154. package/dashboard/dist/assets/index-B-jzKfuv.js +2 -0
  155. package/dashboard/dist/assets/index-B-jzKfuv.js.map +1 -0
  156. package/dashboard/dist/assets/index-BMpoMc4A.js +2 -0
  157. package/dashboard/dist/assets/{index-D51PaQZY.js.map → index-BMpoMc4A.js.map} +1 -1
  158. package/dashboard/dist/assets/index-BU04qgJt.js +15 -0
  159. package/dashboard/dist/assets/index-BU04qgJt.js.map +1 -0
  160. package/dashboard/dist/assets/index-BUjxYyxc.js +63 -0
  161. package/dashboard/dist/assets/index-BUjxYyxc.js.map +1 -0
  162. package/dashboard/dist/assets/index-BpoHVMV7.js +2 -0
  163. package/dashboard/dist/assets/index-BpoHVMV7.js.map +1 -0
  164. package/dashboard/dist/assets/index-CEnDYJOO.js +2 -0
  165. package/dashboard/dist/assets/index-CEnDYJOO.js.map +1 -0
  166. package/dashboard/dist/assets/index-CbuH92vk.js +6 -0
  167. package/dashboard/dist/assets/index-CbuH92vk.js.map +1 -0
  168. package/dashboard/dist/assets/index-D9_hZmsW.js +5 -0
  169. package/dashboard/dist/assets/{index-KYpLvJKB.js.map → index-D9_hZmsW.js.map} +1 -1
  170. package/dashboard/dist/assets/index-DrouIN-M.js +2 -0
  171. package/dashboard/dist/assets/{index-DR4qQvlW.js.map → index-DrouIN-M.js.map} +1 -1
  172. package/dashboard/dist/assets/index-DzICLMI7.js +2 -0
  173. package/dashboard/dist/assets/{index-DNtXXy1o.js.map → index-DzICLMI7.js.map} +1 -1
  174. package/dashboard/dist/assets/index-efS5gKpv.css +1 -0
  175. package/dashboard/dist/assets/index-qT78AZDq.js +2 -0
  176. package/dashboard/dist/assets/index-qT78AZDq.js.map +1 -0
  177. package/dashboard/dist/assets/mcp-D0GrHRFe.js +2 -0
  178. package/dashboard/dist/assets/{mcp-D2XfRh8v.js.map → mcp-D0GrHRFe.js.map} +1 -1
  179. package/dashboard/dist/assets/{mcp-query-CIx_mIC7.js → mcp-query-DC5woQn5.js} +2 -2
  180. package/dashboard/dist/assets/{mcp-query-CIx_mIC7.js.map → mcp-query-DC5woQn5.js.map} +1 -1
  181. package/dashboard/dist/assets/{mcp-runs-C9_J4LIH.js → mcp-runs-CsoVQoPB.js} +2 -2
  182. package/dashboard/dist/assets/{mcp-runs-C9_J4LIH.js.map → mcp-runs-CsoVQoPB.js.map} +1 -1
  183. package/dashboard/dist/assets/namespaces-unpIb4gX.js +2 -0
  184. package/dashboard/dist/assets/{namespaces-BwMljx6f.js.map → namespaces-unpIb4gX.js.map} +1 -1
  185. package/dashboard/dist/assets/{roles-Bd_sTV6I.js → roles--kBaFljg.js} +2 -2
  186. package/dashboard/dist/assets/{roles-Bd_sTV6I.js.map → roles--kBaFljg.js.map} +1 -1
  187. package/dashboard/dist/assets/settings-B96YkawY.js +2 -0
  188. package/dashboard/dist/assets/{settings-BCb8eFyA.js.map → settings-B96YkawY.js.map} +1 -1
  189. package/dashboard/dist/assets/{tasks-Bq54qGGq.js → tasks-D_1NCfOZ.js} +2 -2
  190. package/dashboard/dist/assets/{tasks-Bq54qGGq.js.map → tasks-D_1NCfOZ.js.map} +1 -1
  191. package/dashboard/dist/assets/{useEventHooks-BTbGf536.js → useEventHooks-BPjEkCpD.js} +2 -2
  192. package/dashboard/dist/assets/{useEventHooks-BTbGf536.js.map → useEventHooks-BPjEkCpD.js.map} +1 -1
  193. package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js → useExpandedRows-CkcEntB-.js} +2 -2
  194. package/dashboard/dist/assets/{useExpandedRows-Cg9iq6Vy.js.map → useExpandedRows-CkcEntB-.js.map} +1 -1
  195. package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js → useFilterParams-DZCAaBC7.js} +2 -2
  196. package/dashboard/dist/assets/{useFilterParams-CGRYFw_A.js.map → useFilterParams-DZCAaBC7.js.map} +1 -1
  197. package/dashboard/dist/assets/{useYamlActivityEvents-CsYP09W5.js → useYamlActivityEvents-D3RQjfzo.js} +2 -2
  198. package/dashboard/dist/assets/{useYamlActivityEvents-CsYP09W5.js.map → useYamlActivityEvents-D3RQjfzo.js.map} +1 -1
  199. package/dashboard/dist/assets/{users-BTBhafGc.js → users-e2oatvoj.js} +2 -2
  200. package/dashboard/dist/assets/{users-BTBhafGc.js.map → users-e2oatvoj.js.map} +1 -1
  201. package/dashboard/dist/assets/{vendor-icons-CWl44VA6.js → vendor-icons-BkK55L-1.js} +103 -88
  202. package/dashboard/dist/assets/vendor-icons-BkK55L-1.js.map +1 -0
  203. package/dashboard/dist/assets/vendor-query-B2UbickB.js +18 -0
  204. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +1 -0
  205. package/dashboard/dist/assets/vendor-react-CX88sFS5.js +22 -0
  206. package/dashboard/dist/assets/vendor-react-CX88sFS5.js.map +1 -0
  207. package/dashboard/dist/assets/{workflows-BkzA4ahe.js → workflows-D6diL54s.js} +2 -2
  208. package/dashboard/dist/assets/{workflows-BkzA4ahe.js.map → workflows-D6diL54s.js.map} +1 -1
  209. package/dashboard/dist/assets/{yaml-workflows-Cs0EYp0F.js → yaml-workflows-CAKU7LUu.js} +2 -2
  210. package/dashboard/dist/assets/{yaml-workflows-Cs0EYp0F.js.map → yaml-workflows-CAKU7LUu.js.map} +1 -1
  211. package/dashboard/dist/index.html +5 -5
  212. package/docs/dashboard.md +233 -65
  213. package/package.json +3 -2
  214. package/build/examples/external-mcp-server/server.d.ts +0 -17
  215. package/build/examples/external-mcp-server/server.js +0 -116
  216. package/build/examples/index.d.ts +0 -2
  217. package/build/examples/index.js +0 -7
  218. package/build/examples/seed-data.d.ts +0 -55
  219. package/build/examples/seed-data.js +0 -161
  220. package/build/examples/seed.d.ts +0 -5
  221. package/build/examples/seed.js +0 -132
  222. package/build/examples/types/envelopes.d.ts +0 -69
  223. package/build/examples/types/envelopes.js +0 -8
  224. package/build/examples/types/index.d.ts +0 -10
  225. package/build/examples/types/index.js +0 -9
  226. package/build/examples/types/resolvers.d.ts +0 -27
  227. package/build/examples/types/resolvers.js +0 -9
  228. package/build/examples/workers.d.ts +0 -10
  229. package/build/examples/workers.js +0 -59
  230. package/build/examples/workflows/assembly-line/activities.d.ts +0 -28
  231. package/build/examples/workflows/assembly-line/activities.js +0 -53
  232. package/build/examples/workflows/assembly-line/index.d.ts +0 -17
  233. package/build/examples/workflows/assembly-line/index.js +0 -60
  234. package/build/examples/workflows/assembly-line/iterator.d.ts +0 -12
  235. package/build/examples/workflows/assembly-line/iterator.js +0 -54
  236. package/build/examples/workflows/assembly-line/reverter.d.ts +0 -18
  237. package/build/examples/workflows/assembly-line/reverter.js +0 -89
  238. package/build/examples/workflows/assembly-line/types.d.ts +0 -25
  239. package/build/examples/workflows/assembly-line/types.js +0 -8
  240. package/build/examples/workflows/assembly-line/worker.d.ts +0 -13
  241. package/build/examples/workflows/assembly-line/worker.js +0 -81
  242. package/build/examples/workflows/basic-echo/activities.d.ts +0 -20
  243. package/build/examples/workflows/basic-echo/activities.js +0 -55
  244. package/build/examples/workflows/basic-echo/index.d.ts +0 -14
  245. package/build/examples/workflows/basic-echo/index.js +0 -66
  246. package/build/examples/workflows/basic-signal/activities.d.ts +0 -17
  247. package/build/examples/workflows/basic-signal/activities.js +0 -18
  248. package/build/examples/workflows/basic-signal/index.d.ts +0 -17
  249. package/build/examples/workflows/basic-signal/index.js +0 -116
  250. package/build/examples/workflows/kitchen-sink/activities.d.ts +0 -40
  251. package/build/examples/workflows/kitchen-sink/activities.js +0 -46
  252. package/build/examples/workflows/kitchen-sink/index.d.ts +0 -22
  253. package/build/examples/workflows/kitchen-sink/index.js +0 -123
  254. package/build/examples/workflows/review-content/activities.d.ts +0 -10
  255. package/build/examples/workflows/review-content/activities.js +0 -44
  256. package/build/examples/workflows/review-content/index.d.ts +0 -10
  257. package/build/examples/workflows/review-content/index.js +0 -95
  258. package/build/examples/workflows/review-content/types.d.ts +0 -28
  259. package/build/examples/workflows/review-content/types.js +0 -2
  260. package/build/lib/db/schemas/schemas/001_schema.sql +0 -485
  261. package/build/lib/db/schemas/schemas/002_seed.sql +0 -92
  262. package/build/system/seed/server-definitions.d.ts +0 -3210
  263. package/build/system/seed/server-definitions.js +0 -232
  264. package/dashboard/dist/assets/AdminDashboard-Bprul9Eb.js +0 -2
  265. package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js +0 -2
  266. package/dashboard/dist/assets/BotPicker-DcvILNUf.js +0 -2
  267. package/dashboard/dist/assets/CollapsibleSection-BWPbzgEe.js +0 -2
  268. package/dashboard/dist/assets/ConfirmDeleteModal-Cy6KVLfC.js +0 -2
  269. package/dashboard/dist/assets/CopyableId-CRED8hvk.js +0 -2
  270. package/dashboard/dist/assets/CredentialsPage-BUdvxiE3.js +0 -2
  271. package/dashboard/dist/assets/CredentialsPage-BUdvxiE3.js.map +0 -1
  272. package/dashboard/dist/assets/CustomDurationPicker-eOk2EqQ5.js +0 -2
  273. package/dashboard/dist/assets/DataTable-bd2PTBJd.js +0 -2
  274. package/dashboard/dist/assets/ElapsedCell-BGo8vyus.js +0 -2
  275. package/dashboard/dist/assets/EmptyState-BygtU-Rh.js +0 -2
  276. package/dashboard/dist/assets/EmptyState-BygtU-Rh.js.map +0 -1
  277. package/dashboard/dist/assets/EscalationsOverview-DUEcN5MP.js +0 -2
  278. package/dashboard/dist/assets/EscalationsOverview-DUEcN5MP.js.map +0 -1
  279. package/dashboard/dist/assets/EventTable-CmFhswLW.js +0 -2
  280. package/dashboard/dist/assets/FilterBar-BQNzsd3A.js +0 -2
  281. package/dashboard/dist/assets/ListToolbar-OWOn-HiC.js +0 -2
  282. package/dashboard/dist/assets/McpOverview-OkEzvClD.js +0 -2
  283. package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js +0 -5
  284. package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js.map +0 -1
  285. package/dashboard/dist/assets/McpQueryPage-BAuOf5TL.js +0 -2
  286. package/dashboard/dist/assets/McpQueryPage-BAuOf5TL.js.map +0 -1
  287. package/dashboard/dist/assets/McpRunDetailPage-DMeiG4i_.js +0 -2
  288. package/dashboard/dist/assets/McpRunsPage-CG3cNJh8.js +0 -2
  289. package/dashboard/dist/assets/McpRunsPage-CG3cNJh8.js.map +0 -1
  290. package/dashboard/dist/assets/Modal-Dir9Rlnx.js +0 -2
  291. package/dashboard/dist/assets/OperatorDashboard-OqWC6Azy.js +0 -2
  292. package/dashboard/dist/assets/PageHeader-FJIemmrC.js +0 -2
  293. package/dashboard/dist/assets/PageHeader-FJIemmrC.js.map +0 -1
  294. package/dashboard/dist/assets/PageHeaderWithStats-Br5y9qNO.js +0 -2
  295. package/dashboard/dist/assets/PageHeaderWithStats-Br5y9qNO.js.map +0 -1
  296. package/dashboard/dist/assets/PriorityBadge-C7D5d_HY.js +0 -2
  297. package/dashboard/dist/assets/ProcessDetailPage-DZIP6grw.js +0 -2
  298. package/dashboard/dist/assets/ProcessesListPage-BQoPYkeB.js +0 -2
  299. package/dashboard/dist/assets/ProcessesListPage-BQoPYkeB.js.map +0 -1
  300. package/dashboard/dist/assets/RolePill-D6nMxMvp.js +0 -2
  301. package/dashboard/dist/assets/RolesPage-CwLnJFhy.js +0 -2
  302. package/dashboard/dist/assets/RolesPage-CwLnJFhy.js.map +0 -1
  303. package/dashboard/dist/assets/RowActions-JqgAB0p3.js +0 -2
  304. package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js +0 -2
  305. package/dashboard/dist/assets/StatCard-B-WLhOaH.js +0 -2
  306. package/dashboard/dist/assets/StatusBadge-DVCf2ncM.js +0 -2
  307. package/dashboard/dist/assets/StatusBadge-DVCf2ncM.js.map +0 -1
  308. package/dashboard/dist/assets/StepIndicator-D9Xvdf18.js +0 -2
  309. package/dashboard/dist/assets/StickyPagination-CJHMzYJj.js +0 -2
  310. package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js +0 -2
  311. package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js.map +0 -1
  312. package/dashboard/dist/assets/TagInput-DcPnUnSJ.js +0 -2
  313. package/dashboard/dist/assets/TaskDetailPage-DftmYWD7.js +0 -2
  314. package/dashboard/dist/assets/TaskDetailPage-DftmYWD7.js.map +0 -1
  315. package/dashboard/dist/assets/TaskQueuePill-BzduBqwy.js +0 -2
  316. package/dashboard/dist/assets/TaskQueuePill-BzduBqwy.js.map +0 -1
  317. package/dashboard/dist/assets/TasksListPage-DeewV4Gp.js +0 -2
  318. package/dashboard/dist/assets/TimeAgo-DJZq-e4R.js +0 -2
  319. package/dashboard/dist/assets/TimestampCell-Dx5uwGfS.js +0 -2
  320. package/dashboard/dist/assets/UserName-CnGk7MgL.js +0 -2
  321. package/dashboard/dist/assets/WorkflowExecutionPage-CPQ0fIwf.js +0 -2
  322. package/dashboard/dist/assets/WorkflowPill-BrD5d1AG.js +0 -2
  323. package/dashboard/dist/assets/WorkflowsDashboard-BzjhABZP.js +0 -2
  324. package/dashboard/dist/assets/WorkflowsDashboard-BzjhABZP.js.map +0 -1
  325. package/dashboard/dist/assets/WorkflowsOverview-lBp2E6rN.js +0 -2
  326. package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js +0 -2
  327. package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js.map +0 -1
  328. package/dashboard/dist/assets/escalation-BYhLYHBz.js +0 -2
  329. package/dashboard/dist/assets/escalation-columns-DjJyuC1g.js +0 -2
  330. package/dashboard/dist/assets/helpers-CQG3Rh2y.js +0 -2
  331. package/dashboard/dist/assets/index-2nBhR7Dg.js +0 -2
  332. package/dashboard/dist/assets/index-2nBhR7Dg.js.map +0 -1
  333. package/dashboard/dist/assets/index-4IUoh_hd.js +0 -2
  334. package/dashboard/dist/assets/index-4IUoh_hd.js.map +0 -1
  335. package/dashboard/dist/assets/index-B2CqPzLK.js +0 -2
  336. package/dashboard/dist/assets/index-B2CqPzLK.js.map +0 -1
  337. package/dashboard/dist/assets/index-B78xalb4.js +0 -2
  338. package/dashboard/dist/assets/index-B78xalb4.js.map +0 -1
  339. package/dashboard/dist/assets/index-BI8r69O_.js +0 -2
  340. package/dashboard/dist/assets/index-BI8r69O_.js.map +0 -1
  341. package/dashboard/dist/assets/index-C5TUqJu0.css +0 -1
  342. package/dashboard/dist/assets/index-CUqCBBZG.js +0 -6
  343. package/dashboard/dist/assets/index-CUqCBBZG.js.map +0 -1
  344. package/dashboard/dist/assets/index-D51PaQZY.js +0 -2
  345. package/dashboard/dist/assets/index-DNtXXy1o.js +0 -2
  346. package/dashboard/dist/assets/index-DR4qQvlW.js +0 -2
  347. package/dashboard/dist/assets/index-Dh0PCbR-.js +0 -15
  348. package/dashboard/dist/assets/index-Dh0PCbR-.js.map +0 -1
  349. package/dashboard/dist/assets/index-KYpLvJKB.js +0 -5
  350. package/dashboard/dist/assets/index-sNrqYt0Q.js +0 -281
  351. package/dashboard/dist/assets/index-sNrqYt0Q.js.map +0 -1
  352. package/dashboard/dist/assets/mcp-D2XfRh8v.js +0 -2
  353. package/dashboard/dist/assets/namespaces-BwMljx6f.js +0 -2
  354. package/dashboard/dist/assets/settings-BCb8eFyA.js +0 -2
  355. package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +0 -1
  356. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +0 -35
  357. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +0 -1
  358. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +0 -26
  359. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-sNrqYt0Q.js";import{P as v}from"./PageHeader-FJIemmrC.js";import{D as P}from"./DataTable-bd2PTBJd.js";import{F as k,b as N}from"./FilterBar-BQNzsd3A.js";import{S as D}from"./StickyPagination-CJHMzYJj.js";import{L as w}from"./ListToolbar-OWOn-HiC.js";import{T as h}from"./TimestampCell-Dx5uwGfS.js";import{E as M}from"./ElapsedCell-BGo8vyus.js";import{W as E}from"./WorkflowPill-BrD5d1AG.js";import{E as Q}from"./EmptyState-BygtU-Rh.js";import{R as c}from"./RowActions-JqgAB0p3.js";import{u as j}from"./useFilterParams-CGRYFw_A.js";import{b as V}from"./useEventHooks-BTbGf536.js";import{u as _}from"./mcp-query-CIx_mIC7.js";import{b as C,q as $,r as f,s as g,S,t as W}from"./vendor-icons-CWl44VA6.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(h,{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(h,{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(f,{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(S,{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(W,{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(f,{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(w,{onRefresh:()=>x(),apiPath:`/workflow-states/jobs?entity=${a.type||"mcpQuery,mcpTriage,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:"mcpWorkflowPlanner",label:"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:226,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:238,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:261,columnNumber:9},this),e.jsxDEV(D,{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:264,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-BAuOf5TL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"McpQueryPage-BAuOf5TL.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,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: 'mcpWorkflowPlanner', label: 'Build' },\n { value: 'mcpTriage', label: 'Triage' },\n ]}\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'completed', label: 'Completed' },\n { value: 'running', label: 'Running' },\n { value: 'failed', label: 'Failed' },\n ]}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={jobs}\n keyFn={(row) => row.workflow_id}\n onRowClick={(row) => {\n if (row.entity === 'mcpWorkflowPlanner') {\n const url = row.set_id\n ? `/mcp/queries/${row.workflow_id}?mode=plan&set_id=${row.set_id}`\n : `/mcp/queries/${row.workflow_id}?mode=plan`;\n navigate(url);\n } else if (row.entity === 'mcpWorkflowBuilder') {\n navigate(`/mcp/queries/${row.workflow_id}?mode=builder`);\n } else {\n navigate(`/mcp/queries/${row.workflow_id}`);\n }\n }}\n isLoading={isLoading}\n emptyMessage=\"\"\n sort={sort}\n onSort={setSort}\n />\n\n {!isLoading && jobs.length === 0 && (\n <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 +0,0 @@
1
- import{u as k,j as e,D as S,c as E,J as P,N as _}from"./index-sNrqYt0Q.js";import{b as C,a as T}from"./vendor-query-DLp59M9_.js";import{b as I}from"./mcp-runs-C9_J4LIH.js";import{u as K}from"./settings-BCb8eFyA.js";import{S as U}from"./StatusBadge-DVCf2ncM.js";import{P as R}from"./PageHeader-FJIemmrC.js";import{C as $}from"./CopyableId-CRED8hvk.js";import{C as x}from"./CollapsibleSection-BWPbzgEe.js";import{u as J,E as L}from"./EventTable-CmFhswLW.js";import{L as q}from"./ListToolbar-OWOn-HiC.js";import{S as B}from"./SwimlaneTimeline-YiXPDyEL.js";import{e as F,f as H}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-CWl44VA6.js";import"./FilterBar-BQNzsd3A.js";const Q={running:"in_progress",completed:"completed",failed:"failed"};function re(){var f,D;const{jobId:s}=F(),[p]=H(),l=p.get("namespace")||"longtail",N=C(),{data:a,isLoading:j,error:i,refetch:M,isFetching:V}=I(s,l),{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=T.useCallback(c=>{!s||c.workflowId!==s||N.invalidateQueries({queryKey:["mcpRunExecution",s]})},[s,N]);if(k(`${_}.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:t}=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/${s}/execution?app_id=${l}`},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("div",{className:"flex items-center gap-4 shrink-0",children:[e.jsxDEV(r,{label:"Tools",value:t.activities.user},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:109,columnNumber:13},this),e.jsxDEV(r,{label:"System",value:t.activities.system,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:110,columnNumber:13},this),t.child_workflows.total>0&&e.jsxDEV(r,{label:"Children",value:t.child_workflows.total},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:112,columnNumber:15},this),t.timers>0&&e.jsxDEV(r,{label:"Timers",value:t.timers},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:114,columnNumber:36},this),t.signals>0&&e.jsxDEV(r,{label:"Signals",value:t.signals},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:115,columnNumber:37},this),e.jsxDEV(U,{status:Q[a.status]??a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:116,columnNumber:13},this)]},void 0,!0,{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-6 gap-x-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Server"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:123,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:l},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:124,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:122,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:127,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:128,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:126,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:131,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:132,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:130,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:135,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:137,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:138,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:134,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:141,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:143,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:144,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:140,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Trace"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:147,columnNumber:13},this),a.trace_id?e.jsxDEV($,{label:"",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:149,columnNumber:15},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:156,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:146,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:121,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(x,{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:168,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:167,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:172,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:171,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:166,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:165,columnNumber:9},this),e.jsxDEV(x,{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:180,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:179,columnNumber:9},this),e.jsxDEV(x,{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:185,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:184,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:163,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:91,columnNumber:5},this)}function r({label:s,value:p,muted:l}){return e.jsxDEV("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsxDEV("span",{className:"text-text-tertiary",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:197,columnNumber:7},this),e.jsxDEV("span",{className:`font-medium tabular-nums ${l?"text-text-tertiary":"text-text-primary"}`,children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:198,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:196,columnNumber:5},this)}export{re as McpRunDetailPage};
2
- //# sourceMappingURL=McpRunDetailPage-DMeiG4i_.js.map
@@ -1,2 +0,0 @@
1
- import{j as a}from"./index-sNrqYt0Q.js";import{a as u}from"./vendor-query-DLp59M9_.js";import{a as _,u as k}from"./mcp-runs-C9_J4LIH.js";import{a as C}from"./yaml-workflows-Cs0EYp0F.js";import{u as $}from"./namespaces-BwMljx6f.js";import{u as w}from"./useFilterParams-CGRYFw_A.js";import{D as T}from"./DataTable-bd2PTBJd.js";import{W as F}from"./WorkflowPill-BrD5d1AG.js";import{T as x}from"./TimestampCell-Dx5uwGfS.js";import{E as z}from"./ElapsedCell-BGo8vyus.js";import{P as A}from"./PageHeader-FJIemmrC.js";import{F as L,b as N}from"./FilterBar-BQNzsd3A.js";import{S as U}from"./StickyPagination-CJHMzYJj.js";import{L as I}from"./ListToolbar-OWOn-HiC.js";import{R as O,a as W}from"./RowActions-JqgAB0p3.js";import{p as B}from"./vendor-icons-CWl44VA6.js";import{c as q}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-BygtU-Rh.js";const G={running:"in_progress",completed:"completed",failed:"failed"},H={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"},Y={running:"text-status-active",completed:"text-status-success",failed:"text-status-error"};function J(f,t){return[{key:"workflow_id",label:"Run ID / Tool",render:e=>{const m=H[G[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 ${m}${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(F,{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",sortable:!0,render:e=>a.jsxDEV(x,{date:e.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:69,columnNumber:24},this),className:"w-40"},{key:"updated_at",label:"Updated",sortable:!0,render:e=>a.jsxDEV(x,{date:e.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:76,columnNumber:24},this),className:"w-40"},{key:"duration",label:"Duration",render:e=>a.jsxDEV(z,{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:83,columnNumber:9},this),className:"w-28"},{key:"actions",label:"",render:e=>a.jsxDEV(O,{children:[a.jsxDEV(W,{icon:B,title:`Filter by ${e.entity}`,onClick:()=>f(e.entity)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:96,columnNumber:11},this),a.jsxDEV("button",{onClick:m=>{m.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] ${Y[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:107,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:106,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:101,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:95,columnNumber:9},this),className:"w-24 text-right"}]}function be(){const f=q(),{filters:t,setFilter:e,setFilters:m,pagination:i,sort:g,setSort:v}=w({filters:{search:"",entity:"",status:"",namespace:""}}),[d,y]=u.useState(t.search);u.useEffect(()=>{if(d===t.search)return;const s=setTimeout(()=>e("search",d),300);return()=>clearTimeout(s)},[d,e,t.search]);const{data:o}=C(),{data:l}=$(),b=u.useMemo(()=>{const s=new Set((o==null?void 0:o.app_ids)??[]);for(const n of(l==null?void 0:l.namespaces)??[])s.add(n.name);return[...s].sort()},[o==null?void 0:o.app_ids,l==null?void 0:l.namespaces]),P=b.includes("longtail")?"longtail":b[0]??"",r=t.namespace||P,{data:p}=_(r),{data:c,isLoading:R,refetch:M,isFetching:E}=k({app_id:r,limit:i.pageSize,offset:i.offset,entity:t.entity||void 0,search:t.search||void 0,status:t.status||void 0,sort_by:g.sort_by||void 0,order:g.order||void 0}),h=(c==null?void 0:c.total)??0,j=(c==null?void 0:c.jobs)??[],V=J(s=>e("entity",s),s=>e("status",s)),S=u.useMemo(()=>{const s=new Set(b);return r&&s.add(r),[...s].sort().map(n=>({value:n,label:n}))},[b,r]),D=u.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(A,{title:"Pipeline Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:182,columnNumber:7},this),a.jsxDEV(L,{actions:a.jsxDEV(I,{onRefresh:()=>M(),isFetching:E,apiPath:`/mcp-runs?app_id=${r||"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:185,columnNumber:9},this),children:[a.jsxDEV(N,{label:"Namespace",value:r,onChange:s=>{m({namespace:s,entity:""})},options:S,required:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:191,columnNumber:9},this),a.jsxDEV("input",{type:"text",placeholder:"Search run ID...",value:d,onChange:s=>y(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:200,columnNumber:9},this),a.jsxDEV(N,{label:"Tool",value:t.entity,onChange:s=>e("entity",s),options:D},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:207,columnNumber:9},this),a.jsxDEV(N,{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:213,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:184,columnNumber:7},this),a.jsxDEV(T,{columns:V,data:j,keyFn:s=>s.workflow_id,onRowClick:s=>f(`/mcp/executions/${encodeURIComponent(s.workflow_id)}?namespace=${r}`),isLoading:R,emptyMessage:"No pipeline executions found",sort:g,onSort:v},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:225,columnNumber:7},this),a.jsxDEV(U,{page:i.page,totalPages:i.totalPages(h),onPageChange:i.setPage,total:h,pageSize:i.pageSize,onPageSizeChange:i.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:236,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:181,columnNumber:5},this)}export{be as McpRunsPage};
2
- //# sourceMappingURL=McpRunsPage-CG3cNJh8.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"McpRunsPage-CG3cNJh8.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 sortable: true,\n render: (row) => <TimestampCell date={row.created_at} />,\n className: 'w-40',\n },\n {\n key: 'updated_at',\n label: 'Updated',\n sortable: true,\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, sort, setSort } = useFilterParams({\n filters: { search: '', entity: '', status: '', namespace: '' },\n });\n\n const [searchInput, setSearchInput] = useState(filters.search);\n\n useEffect(() => {\n if (searchInput === filters.search) return;\n const timer = setTimeout(() => setFilter('search', searchInput), 300);\n return () => clearTimeout(timer);\n }, [searchInput, setFilter, filters.search]);\n\n const { data: appIdData } = useYamlWorkflowAppIds();\n 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 sort_by: sort.sort_by || undefined,\n order: sort.order || undefined,\n });\n\n const total = runsData?.total ?? 0;\n const jobs = runsData?.jobs ?? [];\n\n const columns = buildColumns(\n (entity) => setFilter('entity', entity),\n (status) => setFilter('status', status),\n );\n\n const namespaces = useMemo(() => {\n const set = new Set(allNamespaceNames);\n if (activeNamespace) set.add(activeNamespace);\n return [...set].sort().map((id) => ({ value: id, label: id }));\n }, [allNamespaceNames, activeNamespace]);\n\n const entities = useMemo(() => {\n const known = new Set(entitiesData?.entities ?? []);\n if (filters.entity && !known.has(filters.entity)) known.add(filters.entity);\n return [...known].sort().map((e) => ({ value: e, label: e }));\n }, [entitiesData?.entities, filters.entity]);\n\n return (\n <div>\n <PageHeader title=\"Pipeline Executions\" />\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 sort={sort}\n onSort={setSort}\n />\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n </div>\n );\n}\n"],"names":["statusMap","STATUS_DOT","STATUS_COLORS","buildColumns","onFilterEntity","onFilterStatus","row","dotClass","pulseClass","jsxDEV","WorkflowPill","TimestampCell","ElapsedCell","RowActionGroup","RowAction","Filter","e","McpRunsPage","navigate","useNavigate","filters","setFilter","setFilters","pagination","sort","setSort","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","columns","entity","status","namespaces","id","entities","known","PageHeader","FilterBar","ListToolbar","FilterSelect","v","DataTable","StickyPagination"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-sNrqYt0Q.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-Dir9Rlnx.js.map
@@ -1,2 +0,0 @@
1
- import{i as v,r as D,p as E,q as O,j as s}from"./index-sNrqYt0Q.js";import{f as S}from"./useEventHooks-BTbGf536.js";import{u as P}from"./roles-Bd_sTV6I.js";import{u as j}from"./useFilterParams-CGRYFw_A.js";import{D as C}from"./DataTable-bd2PTBJd.js";import{P as $}from"./PageHeader-FJIemmrC.js";import{S as L}from"./StickyPagination-CJHMzYJj.js";import{R,a as V}from"./RowActions-JqgAB0p3.js";import{a as _,T as w,E as F}from"./escalation-columns-DjJyuC1g.js";import{L as T}from"./ListToolbar-OWOn-HiC.js";import{Z as k}from"./vendor-icons-CWl44VA6.js";import{c as z}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./EmptyState-BygtU-Rh.js";import"./FilterBar-BQNzsd3A.js";import"./PriorityBadge-C7D5d_HY.js";import"./RolePill-D6nMxMvp.js";import"./WorkflowPill-BrD5d1AG.js";import"./TimestampCell-Dx5uwGfS.js";import"./escalation-BYhLYHBz.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(R,{children:s.jsxDEV(V,{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($,{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(L,{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-OqWC6Azy.js.map
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-sNrqYt0Q.js";function r({title:m,actions:a}){return e.jsxDEV("div",{className:"flex items-center gap-4 mb-10",children:[e.jsxDEV("h1",{className:"text-3xl font-light text-text-primary flex-1",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeader.tsx",lineNumber:11,columnNumber:7},this),a&&e.jsxDEV("div",{className:"flex items-center gap-3",children:a},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeader.tsx",lineNumber:12,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeader.tsx",lineNumber:10,columnNumber:5},this)}export{r as P};
2
- //# sourceMappingURL=PageHeader-FJIemmrC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageHeader-FJIemmrC.js","sources":["../../src/components/common/layout/PageHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\ninterface PageHeaderProps {\n title: string;\n actions?: ReactNode;\n}\n\nexport function PageHeader({ title, actions }: PageHeaderProps) {\n return (\n <div className=\"flex items-center gap-4 mb-10\">\n <h1 className=\"text-3xl font-light text-text-primary flex-1\">{title}</h1>\n {actions && <div className=\"flex items-center gap-3\">{actions}</div>}\n </div>\n );\n}\n"],"names":["PageHeader","title","actions","jsxDEV"],"mappings":"wCAOO,SAASA,EAAW,CAAE,MAAAC,EAAO,QAAAC,GAA4B,CAC9D,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,gCACb,SAAA,CAAAA,SAAC,KAAA,CAAG,UAAU,+CAAgD,SAAAF,CAAA,EAA9D,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAoE,EACnEC,GAAWC,EAAAA,OAAC,MAAA,CAAI,UAAU,0BAA2B,SAAAD,CAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,CAAA,CAAA,EAFhE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-sNrqYt0Q.js";function l({title:o,subtitle:s,stats:t,actions:m}){return e.jsxDEV("div",{className:"flex items-baseline justify-between mb-10",children:[e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV("h1",{className:"text-3xl font-light text-text-primary",children:o},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:25,columnNumber:9},this),s&&e.jsxDEV("span",{className:"text-sm text-text-tertiary font-light",children:s},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:24,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-5",children:[t==null?void 0:t.map(a=>e.jsxDEV("div",{className:"flex items-center gap-1.5 text-xs text-text-tertiary",children:[a.dotClass&&e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full ${a.dotClass}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:33,columnNumber:28},this),e.jsxDEV("span",{children:a.label},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:34,columnNumber:13},this),e.jsxDEV("span",{className:"font-medium text-text-secondary",children:a.value},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:35,columnNumber:13},this)]},a.label,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:32,columnNumber:11},this)),m&&e.jsxDEV("div",{className:"flex items-center gap-3",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:38,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:30,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:23,columnNumber:5},this)}export{l as P};
2
- //# sourceMappingURL=PageHeaderWithStats-Br5y9qNO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageHeaderWithStats-Br5y9qNO.js","sources":["../../src/components/common/layout/PageHeaderWithStats.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport interface InlineStat {\n label: string;\n value: string | number;\n dotClass?: string;\n}\n\ninterface PageHeaderWithStatsProps {\n title: string;\n subtitle?: string;\n stats?: InlineStat[];\n actions?: ReactNode;\n}\n\nexport function PageHeaderWithStats({\n title,\n subtitle,\n stats,\n actions,\n}: PageHeaderWithStatsProps) {\n return (\n <div className=\"flex items-baseline justify-between mb-10\">\n <div className=\"flex items-center gap-4\">\n <h1 className=\"text-3xl font-light text-text-primary\">{title}</h1>\n {subtitle && (\n <span className=\"text-sm text-text-tertiary font-light\">{subtitle}</span>\n )}\n </div>\n <div className=\"flex items-center gap-5\">\n {stats?.map((s) => (\n <div key={s.label} className=\"flex items-center gap-1.5 text-xs text-text-tertiary\">\n {s.dotClass && <span className={`w-1.5 h-1.5 rounded-full ${s.dotClass}`} />}\n <span>{s.label}</span>\n <span className=\"font-medium text-text-secondary\">{s.value}</span>\n </div>\n ))}\n {actions && <div className=\"flex items-center gap-3\">{actions}</div>}\n </div>\n </div>\n );\n}\n"],"names":["PageHeaderWithStats","title","subtitle","stats","actions","jsxDEV","s"],"mappings":"wCAeO,SAASA,EAAoB,CAClC,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,QAAAC,CACF,EAA6B,CAC3B,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,4CACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,SAAC,KAAA,CAAG,UAAU,wCAAyC,SAAAJ,CAAA,EAAvD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA6D,EAC5DC,GACCG,EAAAA,OAAC,OAAA,CAAK,UAAU,wCAAyC,SAAAH,CAAA,EAAzD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkE,CAAA,CAAA,EAHtE,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EACAG,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAF,GAAA,YAAAA,EAAO,IAAKG,GACXD,EAAAA,OAAC,MAAA,CAAkB,UAAU,uDAC1B,SAAA,CAAAC,EAAE,UAAYD,EAAAA,OAAC,OAAA,CAAK,UAAW,4BAA4BC,EAAE,QAAQ,IAAvD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2D,EAC1ED,EAAAA,OAAC,OAAA,CAAM,SAAAC,EAAE,KAAA,EAAT,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAe,EACfD,SAAC,OAAA,CAAK,UAAU,kCAAmC,WAAE,KAAA,EAArD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2D,CAAA,GAHnDC,EAAE,MAAZ,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAIA,GAEDF,GAAWC,EAAAA,OAAC,MAAA,CAAI,UAAU,0BAA2B,SAAAD,CAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,CAAA,CAAA,EARhE,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,CAAA,CAAA,EAhBF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiBA,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-sNrqYt0Q.js";const r={1:"P1",2:"P2",3:"P3",4:"P4"},s={1:"text-text-primary font-semibold",2:"text-text-primary font-medium",3:"text-text-secondary",4:"text-text-tertiary"};function a({priority:t}){return e.jsxDEV("span",{className:`text-xs ${s[t]??"text-text-secondary"}`,children:r[t]??`P${t}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/PriorityBadge.tsx",lineNumber:17,columnNumber:5},this)}export{a as P};
2
- //# sourceMappingURL=PriorityBadge-C7D5d_HY.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,D as _,f as y,C as U,a as z,J as M,S}from"./index-sNrqYt0Q.js";import{a as D}from"./vendor-query-DLp59M9_.js";import{a as J}from"./tasks-Bq54qGGq.js";import{a as q}from"./useEventHooks-BTbGf536.js";import{u as G}from"./settings-BCb8eFyA.js";import{P as K}from"./PageHeaderWithStats-Br5y9qNO.js";import{S as I}from"./StatusBadge-DVCf2ncM.js";import{W as Q}from"./WorkflowPill-BrD5d1AG.js";import{T as V}from"./TimestampCell-Dx5uwGfS.js";import{L as k,e as X}from"./vendor-react-Co3Y8ikm.js";import{R as Y}from"./RolePill-D6nMxMvp.js";import{U as Z}from"./UserName-CnGk7MgL.js";import"./vendor-icons-CWl44VA6.js";import"./users-BTBhafGc.js";const ee="bg-stripes animate-pulse opacity-70";function L(s){switch(s){case"completed":return"text-status-success";case"in_progress":case"pending":return"text-status-warning";case"needs_intervention":return"text-status-error";case"cancelled":return"text-text-tertiary";default:return"text-text-tertiary"}}function C(s){switch(s){case"resolved":return"text-status-success";case"pending":return"text-status-warning";case"cancelled":return"text-text-tertiary";default:return"text-text-tertiary"}}function se(s,t,n){return`${s==="task"?"Task":n?"Notification":"Escalation"} is ${t.replace(/_/g," ")}`}function ae(s,t){if(t)return ee;switch(s){case"completed":case"resolved":return"bg-status-success";case"pending":case"in_progress":case"needs_intervention":return"bg-status-warning";case"cancelled":return"bg-status-error";default:return"bg-text-tertiary"}}function te(s){return s.startsWith("mcp")||s.startsWith("Mcp")}function $(s){return!s.workflow_type}function R(s,t){if(s.length<=t)return s;const n=Math.floor((t-1)/2);return`${s.slice(0,n)}…${s.slice(s.length-n)}`}function re(s,t){const n=Date.now(),c=new Map,p=[];for(const a of t)a.task_id?(c.has(a.task_id)||c.set(a.task_id,[]),c.get(a.task_id).push(a)):p.push(a);const i=[...s].sort((a,m)=>new Date(a.created_at).getTime()-new Date(m.created_at).getTime()),l=[];for(const a of s)l.push(new Date(a.created_at).getTime()),a.completed_at&&l.push(new Date(a.completed_at).getTime());for(const a of t)l.push(new Date(a.created_at).getTime()),a.resolved_at&&l.push(new Date(a.resolved_at).getTime()),a.claimed_at&&l.push(new Date(a.claimed_at).getTime());if(l.length===0)return{lanes:[],timeMin:0,timeMax:1};const o=Math.min(...l),N=s.some(a=>!a.completed_at)||t.some(a=>!a.resolved_at)?Math.max(n,Math.max(...l)):Math.max(...l),b=N-o||1,d=a=>(a-o)/b*100,h=[];for(const a of i){const m=new Date(a.created_at).getTime(),f=a.completed_at?new Date(a.completed_at).getTime():n,x=!a.completed_at;h.push({kind:"task",id:a.id,label:a.workflow_type,taskId:a.id,startMs:m,endMs:f,startPct:d(m),widthPct:Math.max((f-m)/b*100,.5),durationMs:f-m,isOpen:x,task:a});const g=(c.get(a.id)||[]).sort((r,u)=>new Date(r.created_at).getTime()-new Date(u.created_at).getTime());for(const r of g){const u=new Date(r.created_at).getTime(),v=r.resolved_at?new Date(r.resolved_at).getTime():n,P=!r.resolved_at;let w=null;if(r.claimed_at){const O=new Date(r.claimed_at).getTime(),F=v-u||1;w=(O-u)/F*100}h.push({kind:"escalation",id:r.id,label:r.role,taskId:a.id,startMs:u,endMs:v,startPct:d(u),widthPct:Math.max((v-u)/b*100,.5),durationMs:v-u,isOpen:P,escalation:r,claimPct:w})}}for(const a of p){const m=new Date(a.created_at).getTime(),f=a.resolved_at?new Date(a.resolved_at).getTime():n;let x=null;if(a.claimed_at){const g=new Date(a.claimed_at).getTime(),r=f-m||1;x=(g-m)/r*100}h.push({kind:"escalation",id:a.id,label:a.role,taskId:"",startMs:m,endMs:f,startPct:d(m),widthPct:Math.max((f-m)/b*100,.5),durationMs:f-m,isOpen:!a.resolved_at,escalation:a,claimPct:x})}return{lanes:h,timeMin:o,timeMax:N}}function ie(s,t,n,c=500){const[p,i]=D.useState(0),l=D.useRef(null),o=n-t||1;D.useEffect(()=>{if(s===0)return;l.current=null,i(0);let N;const b=d=>{l.current===null&&(l.current=d);const h=d-l.current,a=Math.min(h/c,1),m=1-Math.pow(1-a,3);i(m),a<1&&(N=requestAnimationFrame(b))};return N=requestAnimationFrame(b),()=>cancelAnimationFrame(N)},[s,c]);const E=D.useCallback(N=>{const b=(N.startMs-t)/o,d=(N.endMs-t)/o;if(p<b)return{width:0,opacity:0};const h=d-b||.001,a=Math.min((p-b)/h,1),m=N.widthPct*a,f=Math.min(a/.1,1);return{width:m,opacity:f}},[p,t,o]);return{progress:p,animatedBar:E}}function H({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:4,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:3,columnNumber:5},this)}function A({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 00-2.455 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:13,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:12,columnNumber:5},this)}function W({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:22,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:21,columnNumber:5},this)}function B({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:30,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:29,columnNumber:5},this)}function le({allExpanded:s,onToggleAll:t}){return e.jsxDEV("div",{className:"flex items-center gap-4 mb-4 flex-wrap",children:[e.jsxDEV("button",{onClick:t,className:"text-[10px] text-accent hover:underline",children:s?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:11,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-4 ml-auto",children:[e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(H,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:18,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Task"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:19,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:17,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(A,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:22,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"AI Task"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:23,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(B,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:26,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Escalation"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:25,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(W,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:30,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Notification"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:31,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:29,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:34,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Done"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:35,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:33,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-warning"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:38,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Active"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:39,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:37,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:16,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:10,columnNumber:5},this)}function oe({ticks:s}){return e.jsxDEV("div",{className:"flex",children:[e.jsxDEV("div",{className:"w-52 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1 relative h-6 border-b border-surface-border",children:s.map(t=>e.jsxDEV("span",{className:"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1 whitespace-nowrap",style:{left:`${t.pct}%`},children:t.label},t.pct,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:16,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:14,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:12,columnNumber:5},this)}function j({label:s,children:t}){return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:11,columnNumber:7},this),e.jsxDEV("div",{className:"text-xs text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:14,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:10,columnNumber:5},this)}function ne({traceId:s,href:t}){const[n,c]=D.useState(!1),p=l=>{l.stopPropagation(),navigator.clipboard.writeText(s),c(!0),setTimeout(()=>c(!1),1500)},i=l=>{l.stopPropagation(),t&&window.open(t,"_blank","noopener,noreferrer")};return e.jsxDEV("span",{className:"group/trace inline-flex items-center gap-1.5",children:[t&&e.jsxDEV("button",{onClick:i,title:"Open trace",className:"opacity-0 group-hover/trace:opacity-100 transition-opacity p-0.5",children:e.jsxDEV("svg",{className:"w-3 h-3 text-text-tertiary hover:text-accent",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-4.5-4.5h6m0 0v6m0-6L10.5 15"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:27,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:26,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("button",{onClick:p,title:"Copy trace ID",className:"opacity-0 group-hover/trace:opacity-100 transition-opacity p-0.5",children:e.jsxDEV("svg",{className:`w-3 h-3 transition-colors ${n?"text-status-success":"text-text-tertiary hover:text-accent"}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:n?e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:41,columnNumber:15},this):e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:42,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:36,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:31,columnNumber:7},this),e.jsxDEV("span",{className:"text-[11px] text-accent",children:"Trace Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:46,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:19,columnNumber:5},this)}function ce({task:s,traceUrl:t}){const n=s.completed_at?new Date(s.completed_at).getTime()-new Date(s.created_at).getTime():Date.now()-new Date(s.created_at).getTime();return e.jsxDEV("div",{className:"grid grid-cols-[3fr_1fr] gap-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(I,{status:s.status},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:26,columnNumber:11},this),e.jsxDEV(Q,{type:s.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:25,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxDEV(j,{label:"Started",children:e.jsxDEV(V,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:32,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:31,columnNumber:11},this),e.jsxDEV(j,{label:"Completed",children:s.completed_at?e.jsxDEV(V,{date:s.completed_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:37,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"In progress"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:39,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:35,columnNumber:11},this),e.jsxDEV(j,{label:"Duration",children:e.jsxDEV(_,{ms:n,className:"font-mono text-sm"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:44,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:43,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:30,columnNumber:9},this),s.milestones.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Milestones"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:50,columnNumber:13},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5",children:s.milestones.map((c,p)=>e.jsxDEV("span",{className:"px-2 py-0.5 text-[10px] font-mono bg-accent-faint/50 rounded text-text-secondary",children:[c.name,": ",String(c.value)]},p,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:55,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:53,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:49,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:24,columnNumber:7},this),e.jsxDEV("div",{className:"flex flex-col items-end gap-2",children:[e.jsxDEV(k,{to:`/workflows/executions/${encodeURIComponent(s.workflow_id)}`,className:"block text-[11px] text-accent hover:underline",children:"Execution Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:69,columnNumber:9},this),e.jsxDEV(k,{to:`/workflows/tasks/detail/${s.id}`,className:"block text-[11px] text-accent hover:underline",children:"Task Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:75,columnNumber:9},this),s.trace_id&&e.jsxDEV(ne,{traceId:s.trace_id,href:t?t.replace("{traceId}",s.trace_id):void 0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:82,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:68,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:22,columnNumber:5},this)}function me({escalation:s}){const t=new Date(s.created_at).getTime(),n=s.claimed_at?new Date(s.claimed_at).getTime()-t:null,c=s.resolved_at?new Date(s.resolved_at).getTime()-t:null;return e.jsxDEV("div",{className:"grid grid-cols-[3fr_1fr] gap-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(I,{status:s.status},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:28,columnNumber:11},this),e.jsxDEV(Y,{role:s.role},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:29,columnNumber:11},this),s.type&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:[s.type,s.subtype?` / ${s.subtype}`:""]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:31,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxDEV(j,{label:"Created",children:e.jsxDEV(V,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:40,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:39,columnNumber:11},this),e.jsxDEV(j,{label:"Claimed",children:s.claimed_at?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(V,{date:s.claimed_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:46,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:["after ",e.jsxDEV(_,{ms:n},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:48,columnNumber:25},this),s.assigned_to&&e.jsxDEV(e.Fragment,{children:[" ","by"," ",e.jsxDEV("span",{className:"text-text-secondary font-medium",children:e.jsxDEV(Z,{userId:s.assigned_to},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:53,columnNumber:25},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:52,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:50,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:47,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:45,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"Unclaimed"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:60,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:43,columnNumber:11},this),e.jsxDEV(j,{label:"Resolved",children:s.resolved_at?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(V,{date:s.resolved_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:67,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:[e.jsxDEV(_,{ms:c},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:69,columnNumber:19},this)," total"]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:68,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:66,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:73,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:64,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:38,columnNumber:9},this),s.description&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:80,columnNumber:13},this),e.jsxDEV("p",{className:"text-[11px] text-text-secondary leading-relaxed",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:83,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:79,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:26,columnNumber:7},this),e.jsxDEV("div",{className:"flex flex-col items-end gap-2",children:[s.workflow_id&&e.jsxDEV(k,{to:`/workflows/executions/${encodeURIComponent(s.workflow_id)}`,className:"block text-[11px] text-accent hover:underline",children:"Execution Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:93,columnNumber:11},this),e.jsxDEV(k,{to:`/escalations/detail/${s.id}`,className:"block text-[11px] text-accent hover:underline",children:"Escalation Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:100,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:91,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:24,columnNumber:5},this)}function pe({lane:s,ticks:t,isExpanded:n,onToggle:c,anim:p,animDone:i,traceUrl:l}){var d,h;const o=s.kind==="task",E=o?s.task.status:s.escalation.status,N=ae(E,s.isOpen),b=p.opacity>0;return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center border-b border-surface-border cursor-pointer hover:bg-surface-sunken/40 transition-colors",onClick:c,children:[e.jsxDEV("div",{className:`w-52 shrink-0 py-3 pr-4 flex items-center gap-2 ${o?"":"pl-6"}`,style:{opacity:b?1:0,transition:"opacity 0.15s ease-out"},children:[o?te(s.task.workflow_type)?e.jsxDEV(A,{className:`w-4 h-4 shrink-0 ${L(s.task.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:59,columnNumber:15},this):e.jsxDEV(H,{className:`w-4 h-4 shrink-0 ${L(s.task.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:63,columnNumber:15},this):$(s.escalation)?e.jsxDEV(W,{className:`w-4 h-4 shrink-0 ${C(s.escalation.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:68,columnNumber:13},this):e.jsxDEV(B,{className:`w-4 h-4 shrink-0 ${C(s.escalation.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:72,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden",title:se(s.kind,o?s.task.status:s.escalation.status,!o&&$(s.escalation)),children:o?R(s.label,24):R(((d=s.escalation)==null?void 0:d.role)??s.label,20)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:76,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:51,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 relative h-10",children:[t.map(a=>e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${a.pct}%`}},a.pct,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:90,columnNumber:13},this)),e.jsxDEV("div",{className:`absolute top-2 h-6 rounded-sm ${n?`${N} ring-2 ring-accent ring-offset-1`:`${N} hover:opacity-80`}`,style:{left:`${s.startPct}%`,width:b?`${Math.max(p.width,.3)}%`:"0%",minWidth:b?"4px":"0px",opacity:p.opacity},title:`${s.label} — ${y(s.durationMs)} — ${new Date(s.startMs).toLocaleTimeString()}`,children:[p.width>8&&i&&e.jsxDEV("span",{className:"absolute inset-0 flex items-center px-1.5 text-[9px] font-mono text-white truncate",children:y(s.durationMs)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:114,columnNumber:15},this),s.claimPct!=null&&i&&e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px border-l border-dashed border-white/70",style:{left:`${s.claimPct}%`},title:(h=s.escalation)!=null&&h.assigned_to?`Claimed by ${s.escalation.assigned_to}`:"Claimed",children:e.jsxDEV("div",{className:"absolute -top-1 -left-[3px] w-[7px] h-[7px] rounded-full bg-white border border-amber-600"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:131,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:121,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:98,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:87,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:46,columnNumber:7},this),e.jsxDEV(U,{open:n,children:e.jsxDEV("div",{className:"py-4 px-6 pl-52 border-b border-surface-border bg-surface-sunken/20",children:o&&s.task?e.jsxDEV(ce,{task:s.task,traceUrl:l},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:142,columnNumber:13},this):s.escalation?e.jsxDEV(me,{escalation:s.escalation},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:144,columnNumber:13},this):null},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:140,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:139,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:44,columnNumber:5},this)}function de({tasks:s,escalations:t,traceUrl:n}){const[c,p]=D.useState(new Set),{lanes:i,timeMin:l,timeMax:o}=D.useMemo(()=>re(s,t),[s,t]),E=o-l||1,{progress:N,animatedBar:b}=ie(i.length,l,o);if(i.length===0)return e.jsxDEV("p",{className:"text-sm text-text-tertiary py-8 text-center",children:"No events in this process."},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:27,columnNumber:7},this);const d=5,h=Array.from({length:d+1},(r,u)=>({pct:u/d*100,label:y(Math.round(u/d*E))})),a=r=>{p(u=>{const v=new Set(u);return v.has(r)?v.delete(r):v.add(r),v})},m=i.map(r=>r.id),f=m.length>0&&m.every(r=>c.has(r)),x=()=>{p(f?new Set:new Set(m))},g=N>=1;return e.jsxDEV("div",{className:"py-2",children:[e.jsxDEV(le,{allExpanded:f,onToggleAll:x},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:60,columnNumber:7},this),e.jsxDEV(oe,{ticks:h},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:61,columnNumber:7},this),i.map(r=>e.jsxDEV(pe,{lane:r,ticks:h,isExpanded:c.has(r.id),onToggle:()=>a(r.id),anim:b(r),animDone:g,traceUrl:n},`${r.kind}-${r.id}`,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:64,columnNumber:9},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:59,columnNumber:5},this)}function T(s){if(!s)return null;try{return JSON.parse(s)}catch{return null}}function ue(s){return s.length===0?null:[...s].sort((t,n)=>new Date(t.created_at).getTime()-new Date(n.created_at).getTime())[0]}function Se(){var f;const{originId:s}=X();q(s);const{data:t,isLoading:n}=J(s??""),{data:c}=G(),p=((f=c==null?void 0:c.telemetry)==null?void 0:f.traceUrl)??null,i=(t==null?void 0:t.tasks)??[],l=(t==null?void 0:t.escalations)??[],o=D.useMemo(()=>ue(i),[i]),E=D.useMemo(()=>T(o==null?void 0:o.envelope),[o]),N=D.useMemo(()=>{if(o!=null&&o.data)return T(o.data);const x=i.filter(g=>g.status==="completed"&&g.data).sort((g,r)=>new Date(r.completed_at).getTime()-new Date(g.completed_at).getTime());return x.length>0?T(x[0].data):null},[o,i]),b=D.useMemo(()=>i.length>0&&i.some(x=>x.status!=="completed"&&x.status!=="cancelled"),[i]),d=D.useMemo(()=>{const x=i.filter(u=>u.status==="completed").length,g=i.filter(u=>u.status==="needs_intervention").length,r=l.filter(u=>u.status==="resolved").length;return{tasks:i.length,completed:x,escalated:g,escalations:l.length,resolved:r}},[i,l]),h=D.useMemo(()=>{if(i.length===0&&l.length===0)return null;const g=[...i.map(w=>w.created_at),...l.map(w=>w.created_at)].sort()[0],r=i.every(w=>w.status==="completed"||w.status==="cancelled"),u=l.every(w=>w.status==="resolved"),v=i.length>0&&r&&u,P=v?[...i.map(w=>w.completed_at),...l.map(w=>w.resolved_at)].filter(Boolean).sort().pop()??null:null;return{startIso:g,endIso:P,isFinished:v,elapsed:z(g,P)}},[i,l]),a=D.useMemo(()=>{const x=[];return h&&x.push({label:h.isFinished?"Completed":"Running",value:h.elapsed,dotClass:h.isFinished?"bg-status-success":"bg-status-pending animate-pulse"}),x.push({label:"Tasks",value:`${d.completed}/${d.tasks}`},{label:"Escalations",value:`${d.resolved}/${d.escalations}`}),x},[h,d]);if(n&&i.length===0)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:96,columnNumber:9},this),e.jsxDEV("div",{className:"h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:97,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:95,columnNumber:7},this);const m=E||N||b;return e.jsxDEV("div",{children:[e.jsxDEV(K,{title:"Process Detail",subtitle:s,stats:a},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:106,columnNumber:7},this),m&&e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-10",children:[e.jsxDEV("div",{children:E?e.jsxDEV(M,{data:E,label:"Input",defaultMode:"json",defaultCollapsed:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:116,columnNumber:15},this):e.jsxDEV("div",{children:[e.jsxDEV(S,{children:"Input"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:119,columnNumber:17},this),e.jsxDEV("div",{className:"font-mono text-xs bg-surface-sunken rounded-md p-4 text-text-tertiary italic mt-2",children:"Waiting for task..."},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:120,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:118,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:114,columnNumber:11},this),e.jsxDEV("div",{children:N?e.jsxDEV(M,{data:N,label:"Output",defaultMode:"json",defaultCollapsed:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:128,columnNumber:15},this):b?e.jsxDEV("div",{children:[e.jsxDEV(S,{children:"Output"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:131,columnNumber:17},this),e.jsxDEV("div",{className:"flex items-center gap-2 font-mono text-xs bg-surface-sunken rounded-md p-4 text-text-secondary mt-2",children:[e.jsxDEV("span",{className:"w-1.5 h-1.5 rounded-full bg-status-pending animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:133,columnNumber:19},this),"Processing..."]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:132,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:130,columnNumber:15},this):null},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:126,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:113,columnNumber:9},this),e.jsxDEV(S,{className:"mb-6",children:"Timeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:142,columnNumber:7},this),e.jsxDEV(de,{tasks:i,escalations:l,traceUrl:p},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:144,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:105,columnNumber:5},this)}export{Se as ProcessDetailPage};
2
- //# sourceMappingURL=ProcessDetailPage-DZIP6grw.js.map
@@ -1,2 +0,0 @@
1
- import{j as s}from"./index-sNrqYt0Q.js";import{u as N}from"./tasks-Bq54qGGq.js";import{u as h}from"./workflows-BkzA4ahe.js";import{u as P}from"./useEventHooks-BTbGf536.js";import{u as x}from"./useFilterParams-CGRYFw_A.js";import{a as n}from"./vendor-query-DLp59M9_.js";import{D as v}from"./DataTable-bd2PTBJd.js";import{T as p}from"./TimestampCell-Dx5uwGfS.js";import{S as w}from"./StickyPagination-CJHMzYJj.js";import{F as k,a as y,b as m}from"./FilterBar-BQNzsd3A.js";import{P as D}from"./PageHeader-FJIemmrC.js";import{L as E}from"./ListToolbar-OWOn-HiC.js";import{W as L}from"./WorkflowPill-BrD5d1AG.js";import{c as _}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-CWl44VA6.js";import"./EmptyState-BygtU-Rh.js";function j(e,a=300){const[i,t]=n.useState(e);return n.useEffect(()=>{const l=setTimeout(()=>t(e),a);return()=>clearTimeout(l)},[e,a]),i}const V=[{value:"active",label:"Active"},{value:"completed",label:"Completed"},{value:"escalated",label:"Escalated"}],S=[{key:"origin_id",label:"Origin",render:e=>s.jsxDEV("span",{className:"font-mono text-xs",title:e.origin_id,children:e.origin_id.length>40?`${e.origin_id.slice(0,40)}…`:e.origin_id},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:26,columnNumber:7},void 0)},{key:"workflow_types",label:"Workflows",render:e=>s.jsxDEV("div",{className:"flex flex-wrap gap-1",children:e.workflow_types.map(a=>s.jsxDEV(L,{type:a},a,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:37,columnNumber:11},void 0))},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:35,columnNumber:7},void 0)},{key:"task_count",label:"Tasks",render:e=>s.jsxDEV("span",{children:e.task_count},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:45,columnNumber:22},void 0),className:"w-20 text-right"},{key:"completed",label:"Completed",render:e=>e.completed>0?s.jsxDEV("span",{className:"text-status-success",children:e.completed},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:53,columnNumber:11},void 0):s.jsxDEV("span",{className:"text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:54,columnNumber:11},void 0),className:"w-24 text-right"},{key:"escalated",label:"Escalated",render:e=>e.escalated>0?s.jsxDEV("span",{className:"text-status-error",children:e.escalated},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:62,columnNumber:11},void 0):s.jsxDEV("span",{className:"text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:63,columnNumber:11},void 0),className:"w-24 text-right"},{key:"started_at",label:"Started",render:e=>s.jsxDEV(p,{date:e.started_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:69,columnNumber:22},void 0),className:"w-44"},{key:"last_activity",label:"Last Activity",render:e=>s.jsxDEV(p,{date:e.last_activity},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:75,columnNumber:22},void 0),className:"w-44"}];function J(){P();const e=_(),{filters:a,setFilter:i,pagination:t}=x({filters:{workflow_type:"",status:"",search:""}}),l=j(a.search,300),{data:d}=h(),u=[...new Set((d??[]).map(r=>r.workflow_type))].sort(),{data:o,isLoading:f,refetch:g,isFetching:b}=N({workflow_type:a.workflow_type||void 0,status:a.status||void 0,search:l||void 0,limit:t.pageSize,offset:t.offset}),c=(o==null?void 0:o.total)??0;return s.jsxDEV("div",{children:[s.jsxDEV(D,{title:"All Processes"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:104,columnNumber:7},this),s.jsxDEV(k,{actions:s.jsxDEV(E,{onRefresh:()=>g(),isFetching:b,apiPath:`/tasks/processes?limit=${t.pageSize}&offset=${t.offset}${a.workflow_type?`&workflow_type=${a.workflow_type}`:""}${a.status?`&status=${a.status}`:""}${l?`&search=${l}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:107,columnNumber:9},this),children:[s.jsxDEV(y,{label:"Search",value:a.search,onChange:r=>i("search",r),placeholder:"origin, workflow, or trace ID"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:113,columnNumber:9},this),s.jsxDEV(m,{label:"Status",value:a.status,onChange:r=>i("status",r),options:V},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:119,columnNumber:9},this),s.jsxDEV(m,{label:"Workflow Type",value:a.workflow_type,onChange:r=>i("workflow_type",r),options:u.map(r=>({value:r,label:r}))},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:125,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:106,columnNumber:7},this),s.jsxDEV(v,{columns:S,data:(o==null?void 0:o.processes)??[],keyFn:r=>r.origin_id,onRowClick:r=>e(`/processes/detail/${encodeURIComponent(r.origin_id)}`),isLoading:f,emptyMessage:"No business processes found"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:133,columnNumber:7},this),s.jsxDEV(w,{page:t.page,totalPages:t.totalPages(c),onPageChange:t.setPage,total:c,pageSize:t.pageSize,onPageSizeChange:t.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:142,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessesListPage.tsx",lineNumber:103,columnNumber:5},this)}export{J as ProcessesListPage};
2
- //# sourceMappingURL=ProcessesListPage-BQoPYkeB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProcessesListPage-BQoPYkeB.js","sources":["../../src/hooks/useDebouncedValue.ts","../../src/pages/processes/ProcessesListPage.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * Returns a debounced copy of `value` that only updates\n * after `delay` ms of inactivity.\n */\nexport function useDebouncedValue<T>(value: T, delay = 300): T {\n const [debounced, setDebounced] = useState(value);\n useEffect(() => {\n const timer = setTimeout(() => setDebounced(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n return debounced;\n}\n","import { useNavigate } from 'react-router-dom';\nimport { useProcesses, type ProcessSummary } from '../../api/tasks';\nimport { useWorkflowConfigs } from '../../api/workflows';\nimport { useProcessListEvents } from '../../hooks/useEventHooks';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { useDebouncedValue } from '../../hooks/useDebouncedValue';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { TimestampCell } from '../../components/common/display/TimestampCell';\nimport { StickyPagination } from '../../components/common/data/StickyPagination';\nimport { FilterBar, FilterSelect, FilterInput } from '../../components/common/data/FilterBar';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { ListToolbar } from '../../components/common/data/ListToolbar';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\n\nconst STATUS_OPTIONS = [\n { value: 'active', label: 'Active' },\n { value: 'completed', label: 'Completed' },\n { value: 'escalated', label: 'Escalated' },\n];\n\nconst columns: Column<ProcessSummary>[] = [\n {\n key: 'origin_id',\n label: 'Origin',\n render: (row) => (\n <span className=\"font-mono text-xs\" title={row.origin_id}>\n {row.origin_id.length > 40 ? `${row.origin_id.slice(0, 40)}…` : row.origin_id}\n </span>\n ),\n },\n {\n key: 'workflow_types',\n label: 'Workflows',\n render: (row) => (\n <div className=\"flex flex-wrap gap-1\">\n {row.workflow_types.map((wt) => (\n <WorkflowPill key={wt} type={wt} />\n ))}\n </div>\n ),\n },\n {\n key: 'task_count',\n label: 'Tasks',\n render: (row) => <span>{row.task_count}</span>,\n className: 'w-20 text-right',\n },\n {\n key: 'completed',\n label: 'Completed',\n render: (row) =>\n row.completed > 0\n ? <span className=\"text-status-success\">{row.completed}</span>\n : <span className=\"text-text-tertiary\">0</span>,\n className: 'w-24 text-right',\n },\n {\n key: 'escalated',\n label: 'Escalated',\n render: (row) =>\n row.escalated > 0\n ? <span className=\"text-status-error\">{row.escalated}</span>\n : <span className=\"text-text-tertiary\">0</span>,\n className: 'w-24 text-right',\n },\n {\n key: 'started_at',\n label: 'Started',\n render: (row) => <TimestampCell date={row.started_at} />,\n className: 'w-44',\n },\n {\n key: 'last_activity',\n label: 'Last Activity',\n render: (row) => <TimestampCell date={row.last_activity} />,\n className: 'w-44',\n },\n];\n\nexport function ProcessesListPage() {\n useProcessListEvents();\n const navigate = useNavigate();\n const { filters, setFilter, pagination } = useFilterParams({\n filters: { workflow_type: '', status: '', search: '' },\n });\n\n const debouncedSearch = useDebouncedValue(filters.search, 300);\n\n const { data: configs } = useWorkflowConfigs();\n const workflowTypes = [...new Set((configs ?? []).map((c) => c.workflow_type))].sort();\n\n const { data, isLoading, refetch, isFetching } = useProcesses({\n workflow_type: filters.workflow_type || undefined,\n status: filters.status || undefined,\n search: debouncedSearch || undefined,\n limit: pagination.pageSize,\n offset: pagination.offset,\n });\n\n const total = data?.total ?? 0;\n\n return (\n <div>\n <PageHeader title=\"All Processes\" />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/tasks/processes?limit=${pagination.pageSize}&offset=${pagination.offset}${filters.workflow_type ? `&workflow_type=${filters.workflow_type}` : ''}${filters.status ? `&status=${filters.status}` : ''}${debouncedSearch ? `&search=${debouncedSearch}` : ''}`}\n />\n }>\n <FilterInput\n label=\"Search\"\n value={filters.search}\n onChange={(v) => setFilter('search', v)}\n placeholder=\"origin, workflow, or trace ID\"\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={STATUS_OPTIONS}\n />\n <FilterSelect\n label=\"Workflow Type\"\n value={filters.workflow_type}\n onChange={(v) => setFilter('workflow_type', v)}\n options={workflowTypes.map((t) => ({ value: t, label: t }))}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={data?.processes ?? []}\n keyFn={(row) => row.origin_id}\n onRowClick={(row) => navigate(`/processes/detail/${encodeURIComponent(row.origin_id)}`)}\n isLoading={isLoading}\n emptyMessage=\"No business processes 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":["useDebouncedValue","value","delay","debounced","setDebounced","useState","useEffect","timer","STATUS_OPTIONS","columns","row","jsxDEV","this","wt","WorkflowPill","TimestampCell","ProcessesListPage","useProcessListEvents","navigate","useNavigate","filters","setFilter","pagination","useFilterParams","debouncedSearch","configs","useWorkflowConfigs","workflowTypes","c","data","isLoading","refetch","isFetching","useProcesses","total","PageHeader","FilterBar","ListToolbar","FilterInput","v","FilterSelect","t","DataTable","StickyPagination"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as s}from"./index-sNrqYt0Q.js";import{U as a}from"./vendor-icons-CWl44VA6.js";function i({role:t,size:e="sm"}){const o=e==="md"?"px-2.5 py-0.5 text-[11px] gap-1.5":"px-2 py-0.5 text-[10px] gap-1",n=e==="md"?"w-3 h-3":"w-2.5 h-2.5";return s.jsxDEV("span",{className:`inline-flex items-center ${o} bg-accent/[0.06] text-text-secondary rounded-lg`,children:[s.jsxDEV(a,{className:`${n} shrink-0 text-accent/75`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/RolePill.tsx",lineNumber:16,columnNumber:7},this),t]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/RolePill.tsx",lineNumber:15,columnNumber:5},this)}export{i as R};
2
- //# sourceMappingURL=RolePill-D6nMxMvp.js.map
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-sNrqYt0Q.js";import{a as n}from"./vendor-query-DLp59M9_.js";import{b,c as h,d as f,e as g,f as E,g as v}from"./roles-Bd_sTV6I.js";import{D}from"./DataTable-bd2PTBJd.js";import{C as j}from"./ConfirmDeleteModal-Cy6KVLfC.js";import{P as V}from"./PageHeader-FJIemmrC.js";import{M as C}from"./Modal-Dir9Rlnx.js";import{R}from"./RolePill-D6nMxMvp.js";import{R as P,a as y}from"./RowActions-JqgAB0p3.js";import{l as k}from"./vendor-icons-CWl44VA6.js";import"./vendor-react-Co3Y8ikm.js";import"./EmptyState-BygtU-Rh.js";function w({open:s,onClose:r}){const l=b(),[i,c]=n.useState(""),[t,m]=n.useState(s);s!==t&&(m(s),s&&(c(""),l.reset()));const d=()=>{const o=i.trim().toLowerCase();o&&l.mutate(o,{onSuccess:r})};return e.jsxDEV(C,{open:s,onClose:r,title:"Create Role",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Role Name (required)"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:34,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:i,onChange:o=>c(o.target.value),placeholder:"e.g., reviewer",className:"input text-xs w-full",onKeyDown:o=>{o.key==="Enter"&&d()}},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:37,columnNumber:11},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1",children:"Lowercase letters, numbers, hyphens, and underscores only."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:47,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:33,columnNumber:9},this),l.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:l.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:53,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:r,className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:57,columnNumber:11},this),e.jsxDEV("button",{onClick:d,disabled:!i.trim()||l.isPending,className:"btn-primary text-xs",children:l.isPending?"Creating...":"Create"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:60,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:56,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:32,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/CreateRoleModal.tsx",lineNumber:31,columnNumber:5},this)}function _({selectedRole:s,allRoles:r}){const{data:l}=h(),i=f(),c=g(),[t,m]=n.useState(""),d=(l==null?void 0:l.chains)??[],o=n.useMemo(()=>s?d.filter(a=>a.source_role===s).map(a=>a.target_role):[],[d,s]),u=n.useMemo(()=>s?r.filter(a=>a!==s&&a!=="superadmin"&&!o.includes(a)):[],[r,s,o]),p=()=>{!s||!t.trim()||i.mutate({source_role:s,target_role:t.trim()},{onSuccess:()=>m("")})},N=a=>{s&&c.mutate({source_role:s,target_role:a})},x=s==="superadmin";return e.jsxDEV("div",{className:"border-l border-surface-border pl-6 min-h-[300px]",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"Escalation Routing"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:49,columnNumber:7},this),s?x?e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm font-mono text-text-primary mb-2",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:59,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Superadmins can escalate to any role implicitly."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:60,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:58,columnNumber:9},this):e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm font-mono text-text-primary",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:67,columnNumber:13},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:"Can escalate to:"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:68,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:66,columnNumber:11},this),o.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"No escalation targets configured."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:72,columnNumber:13},this):e.jsxDEV("div",{className:"flex flex-wrap gap-2",children:o.map(a=>e.jsxDEV("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs bg-surface-sunken rounded-full text-text-secondary font-mono",children:[a,e.jsxDEV("button",{onClick:()=>N(a),className:"text-text-tertiary hover:text-status-error transition-colors",title:`Remove ${a}`,children:"×"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:83,columnNumber:19},this)]},a,!0,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:78,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:76,columnNumber:13},this),u.length>0&&e.jsxDEV("div",{className:"pt-3 border-t border-surface-border",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Add Target"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:97,columnNumber:15},this),e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("select",{value:t,onChange:a=>m(a.target.value),className:"select text-xs font-mono flex-1",children:[e.jsxDEV("option",{value:"",children:"Select a role..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:106,columnNumber:19},this),u.map(a=>e.jsxDEV("option",{value:a,children:a},a,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:108,columnNumber:21},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:101,columnNumber:17},this),e.jsxDEV("button",{onClick:p,disabled:!t||i.isPending,className:"btn-primary text-xs",children:i.isPending?"Adding...":"Add"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:111,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:100,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:96,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:65,columnNumber:9},this):e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Select a role to manage its escalation targets."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/EscalationPanel.tsx",lineNumber:48,columnNumber:5},this)}function M(s){return[{key:"role",label:"Role",render:r=>e.jsxDEV(R,{role:r.role},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:14,columnNumber:24},this)},{key:"user_count",label:"Users",render:r=>r.user_count>0?e.jsxDEV("span",{className:"text-text-primary",children:r.user_count},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:21,columnNumber:13},this):e.jsxDEV("span",{className:"text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:22,columnNumber:13},this),className:"w-24 text-right"},{key:"chain_count",label:"Escalations",render:r=>r.chain_count>0?e.jsxDEV("span",{className:"text-text-primary",children:r.chain_count},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:30,columnNumber:13},this):e.jsxDEV("span",{className:"text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:31,columnNumber:13},this),className:"w-28 text-right"},{key:"workflow_count",label:"Workflows",render:r=>r.workflow_count>0?e.jsxDEV("span",{className:"text-text-primary",children:r.workflow_count},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:39,columnNumber:13},this):e.jsxDEV("span",{className:"text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:40,columnNumber:13},this),className:"w-28 text-right"},{key:"actions",label:"",render:r=>r.user_count>0||r.chain_count>0||r.workflow_count>0?null:e.jsxDEV(P,{children:e.jsxDEV(y,{icon:k,title:"Delete role",onClick:()=>s(r),colorClass:"text-text-tertiary hover:text-status-error"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:51,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RoleColumns.tsx",lineNumber:50,columnNumber:11},this),className:"w-16 text-right"}]}function $(){const{data:s,isLoading:r}=E(),l=v(),[i,c]=n.useState(!1),[t,m]=n.useState(null),[d,o]=n.useState(null),u=(s==null?void 0:s.roles)??[],p=n.useMemo(()=>u.map(a=>a.role),[u]),N=M(a=>m(a)),x=()=>{t&&l.mutate(t.role,{onSuccess:()=>m(null)})};return e.jsxDEV("div",{children:[e.jsxDEV(V,{title:"Roles",actions:e.jsxDEV("button",{onClick:()=>c(!0),className:"btn-primary text-xs",children:"Add Role"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:35,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:32,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_320px] gap-6",children:[e.jsxDEV("div",{children:e.jsxDEV(D,{columns:N,data:u,keyFn:a=>a.role,isLoading:r,emptyMessage:"No roles found",onRowClick:a=>o(a.role),activeRowKey:d},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:43,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:42,columnNumber:9},this),e.jsxDEV(_,{selectedRole:d,allRoles:p},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:41,columnNumber:7},this),e.jsxDEV(w,{open:i,onClose:()=>c(!1)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:57,columnNumber:7},this),e.jsxDEV(j,{open:!!t,onClose:()=>m(null),onConfirm:x,title:"Delete Role",description:e.jsxDEV(e.Fragment,{children:["Delete role"," ",e.jsxDEV("span",{className:"font-medium font-mono text-text-primary",children:t==null?void 0:t.role},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:67,columnNumber:13},this),"? This action cannot be undone."]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:65,columnNumber:11},this),isPending:l.isPending,error:l.error},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:59,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/roles/RolesPage.tsx",lineNumber:31,columnNumber:5},this)}export{$ as RolesPage};
2
- //# sourceMappingURL=RolesPage-CwLnJFhy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RolesPage-CwLnJFhy.js","sources":["../../src/pages/admin/roles/CreateRoleModal.tsx","../../src/pages/admin/roles/EscalationPanel.tsx","../../src/pages/admin/roles/RoleColumns.tsx","../../src/pages/admin/roles/RolesPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useCreateRole } from '../../../api/roles';\nimport { Modal } from '../../../components/common/modal/Modal';\n\nexport function CreateRoleModal({\n open,\n onClose,\n}: {\n open: boolean;\n onClose: () => void;\n}) {\n const createRole = useCreateRole();\n const [roleName, setRoleName] = useState('');\n\n const [prevOpen, setPrevOpen] = useState(open);\n if (open !== prevOpen) {\n setPrevOpen(open);\n if (open) {\n setRoleName('');\n createRole.reset();\n }\n }\n\n const handleCreate = () => {\n const trimmed = roleName.trim().toLowerCase();\n if (!trimmed) return;\n createRole.mutate(trimmed, { onSuccess: onClose });\n };\n\n return (\n <Modal open={open} onClose={onClose} title=\"Create Role\">\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">\n Role Name (required)\n </label>\n <input\n type=\"text\"\n value={roleName}\n onChange={(e) => setRoleName(e.target.value)}\n placeholder=\"e.g., reviewer\"\n className=\"input text-xs w-full\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleCreate();\n }}\n />\n <p className=\"text-[10px] text-text-tertiary mt-1\">\n Lowercase letters, numbers, hyphens, and underscores only.\n </p>\n </div>\n\n {createRole.error && (\n <p className=\"text-xs text-status-error\">{(createRole.error as Error).message}</p>\n )}\n\n <div className=\"flex justify-end gap-3 pt-2\">\n <button onClick={onClose} className=\"btn-secondary text-xs\">\n Cancel\n </button>\n <button\n onClick={handleCreate}\n disabled={!roleName.trim() || createRole.isPending}\n className=\"btn-primary text-xs\"\n >\n {createRole.isPending ? 'Creating...' : 'Create'}\n </button>\n </div>\n </div>\n </Modal>\n );\n}\n","import { useState, useMemo } from 'react';\nimport {\n useEscalationChains,\n useAddEscalationChain,\n useRemoveEscalationChain,\n} from '../../../api/roles';\n\nexport function EscalationPanel({\n selectedRole,\n allRoles,\n}: {\n selectedRole: string | null;\n allRoles: string[];\n}) {\n const { data: chainsData } = useEscalationChains();\n const addChain = useAddEscalationChain();\n const removeChain = useRemoveEscalationChain();\n const [newTarget, setNewTarget] = useState('');\n\n const chains = chainsData?.chains ?? [];\n\n const targets = useMemo(() => {\n if (!selectedRole) return [];\n return chains.filter((c) => c.source_role === selectedRole).map((c) => c.target_role);\n }, [chains, selectedRole]);\n\n const available = useMemo(() => {\n if (!selectedRole) return [];\n return allRoles.filter((r) => r !== selectedRole && r !== 'superadmin' && !targets.includes(r));\n }, [allRoles, selectedRole, targets]);\n\n const handleAdd = () => {\n if (!selectedRole || !newTarget.trim()) return;\n addChain.mutate(\n { source_role: selectedRole, target_role: newTarget.trim() },\n { onSuccess: () => setNewTarget('') },\n );\n };\n\n const handleRemove = (target: string) => {\n if (!selectedRole) return;\n removeChain.mutate({ source_role: selectedRole, target_role: target });\n };\n\n const isSuperAdmin = selectedRole === 'superadmin';\n\n return (\n <div className=\"border-l border-surface-border pl-6 min-h-[300px]\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4\">\n Escalation Routing\n </p>\n\n {!selectedRole ? (\n <p className=\"text-xs text-text-tertiary\">\n Select a role to manage its escalation targets.\n </p>\n ) : isSuperAdmin ? (\n <div>\n <p className=\"text-sm font-mono text-text-primary mb-2\">{selectedRole}</p>\n <p className=\"text-xs text-text-tertiary\">\n Superadmins can escalate to any role implicitly.\n </p>\n </div>\n ) : (\n <div className=\"space-y-4\">\n <div>\n <p className=\"text-sm font-mono text-text-primary\">{selectedRole}</p>\n <p className=\"text-[10px] text-text-tertiary mt-0.5\">Can escalate to:</p>\n </div>\n\n {targets.length === 0 ? (\n <p className=\"text-xs text-text-tertiary\">\n No escalation targets configured.\n </p>\n ) : (\n <div className=\"flex flex-wrap gap-2\">\n {targets.map((target) => (\n <span\n key={target}\n className=\"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs bg-surface-sunken rounded-full text-text-secondary font-mono\"\n >\n {target}\n <button\n onClick={() => handleRemove(target)}\n className=\"text-text-tertiary hover:text-status-error transition-colors\"\n title={`Remove ${target}`}\n >\n &times;\n </button>\n </span>\n ))}\n </div>\n )}\n\n {available.length > 0 && (\n <div className=\"pt-3 border-t border-surface-border\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2\">\n Add Target\n </p>\n <div className=\"flex items-center gap-2\">\n <select\n value={newTarget}\n onChange={(e) => setNewTarget(e.target.value)}\n className=\"select text-xs font-mono flex-1\"\n >\n <option value=\"\">Select a role...</option>\n {available.map((r) => (\n <option key={r} value={r}>{r}</option>\n ))}\n </select>\n <button\n onClick={handleAdd}\n disabled={!newTarget || addChain.isPending}\n className=\"btn-primary text-xs\"\n >\n {addChain.isPending ? 'Adding...' : 'Add'}\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { Trash2 } from 'lucide-react';\nimport { type RoleDetail } from '../../../api/roles';\nimport { type Column } from '../../../components/common/data/DataTable';\nimport { RolePill } from '../../../components/common/display/RolePill';\nimport { RowAction, RowActionGroup } from '../../../components/common/layout/RowActions';\n\nexport function getRoleColumns(\n onDelete: (row: RoleDetail) => void,\n): Column<RoleDetail>[] {\n return [\n {\n key: 'role',\n label: 'Role',\n render: (row) => <RolePill role={row.role} />,\n },\n {\n key: 'user_count',\n label: 'Users',\n render: (row) =>\n row.user_count > 0\n ? <span className=\"text-text-primary\">{row.user_count}</span>\n : <span className=\"text-text-tertiary\">0</span>,\n className: 'w-24 text-right',\n },\n {\n key: 'chain_count',\n label: 'Escalations',\n render: (row) =>\n row.chain_count > 0\n ? <span className=\"text-text-primary\">{row.chain_count}</span>\n : <span className=\"text-text-tertiary\">0</span>,\n className: 'w-28 text-right',\n },\n {\n key: 'workflow_count',\n label: 'Workflows',\n render: (row) =>\n row.workflow_count > 0\n ? <span className=\"text-text-primary\">{row.workflow_count}</span>\n : <span className=\"text-text-tertiary\">0</span>,\n className: 'w-28 text-right',\n },\n {\n key: 'actions',\n label: '',\n render: (row) => {\n const inUse = row.user_count > 0 || row.chain_count > 0 || row.workflow_count > 0;\n if (inUse) return null;\n return (\n <RowActionGroup>\n <RowAction\n icon={Trash2}\n title=\"Delete role\"\n onClick={() => onDelete(row)}\n colorClass=\"text-text-tertiary hover:text-status-error\"\n />\n </RowActionGroup>\n );\n },\n className: 'w-16 text-right',\n },\n ];\n}\n","import { useState, useMemo } from 'react';\nimport { useRoleDetails, useDeleteRole, type RoleDetail } from '../../../api/roles';\nimport { DataTable } from '../../../components/common/data/DataTable';\nimport { ConfirmDeleteModal } from '../../../components/common/modal/ConfirmDeleteModal';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { CreateRoleModal } from './CreateRoleModal';\nimport { EscalationPanel } from './EscalationPanel';\nimport { getRoleColumns } from './RoleColumns';\n\nexport function RolesPage() {\n const { data, isLoading } = useRoleDetails();\n const deleteRole = useDeleteRole();\n\n const [showCreate, setShowCreate] = useState(false);\n const [confirmDelete, setConfirmDelete] = useState<RoleDetail | null>(null);\n const [selectedRole, setSelectedRole] = useState<string | null>(null);\n\n const roles = data?.roles ?? [];\n const allRoleNames = useMemo(() => roles.map((r) => r.role), [roles]);\n\n const columns = getRoleColumns((row) => setConfirmDelete(row));\n\n const handleDelete = () => {\n if (!confirmDelete) return;\n deleteRole.mutate(confirmDelete.role, {\n onSuccess: () => setConfirmDelete(null),\n });\n };\n\n return (\n <div>\n <PageHeader\n title=\"Roles\"\n actions={\n <button onClick={() => setShowCreate(true)} className=\"btn-primary text-xs\">\n Add Role\n </button>\n }\n />\n\n <div className=\"grid grid-cols-1 lg:grid-cols-[1fr_320px] gap-6\">\n <div>\n <DataTable\n columns={columns}\n data={roles}\n keyFn={(row) => row.role}\n isLoading={isLoading}\n emptyMessage=\"No roles found\"\n onRowClick={(row) => setSelectedRole(row.role)}\n activeRowKey={selectedRole}\n />\n </div>\n\n <EscalationPanel selectedRole={selectedRole} allRoles={allRoleNames} />\n </div>\n\n <CreateRoleModal open={showCreate} onClose={() => setShowCreate(false)} />\n\n <ConfirmDeleteModal\n open={!!confirmDelete}\n onClose={() => setConfirmDelete(null)}\n onConfirm={handleDelete}\n title=\"Delete Role\"\n description={\n <>\n Delete role{' '}\n <span className=\"font-medium font-mono text-text-primary\">\n {confirmDelete?.role}\n </span>\n ? This action cannot be undone.\n </>\n }\n isPending={deleteRole.isPending}\n error={deleteRole.error as Error | null}\n />\n </div>\n );\n}\n"],"names":["CreateRoleModal","open","onClose","createRole","useCreateRole","roleName","setRoleName","useState","prevOpen","setPrevOpen","handleCreate","trimmed","jsxDEV","Modal","e","EscalationPanel","selectedRole","allRoles","chainsData","useEscalationChains","addChain","useAddEscalationChain","removeChain","useRemoveEscalationChain","newTarget","setNewTarget","chains","targets","useMemo","c","available","r","handleAdd","handleRemove","target","isSuperAdmin","getRoleColumns","onDelete","row","RolePill","RowActionGroup","RowAction","Trash2","RolesPage","data","isLoading","useRoleDetails","deleteRole","useDeleteRole","showCreate","setShowCreate","confirmDelete","setConfirmDelete","setSelectedRole","roles","allRoleNames","columns","handleDelete","PageHeader","DataTable","ConfirmDeleteModal","Fragment"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as t}from"./index-sNrqYt0Q.js";function r({icon:o,title:s,onClick:a,colorClass:n="text-text-tertiary hover:text-accent",alwaysVisible:i}){return t.jsxDEV("button",{onClick:e=>{e.stopPropagation(),a(e)},className:`transition-opacity ${i?"opacity-100":"opacity-0 group-hover/row:opacity-100"} ${n}`,title:s,children:t.jsxDEV(o,{className:"w-[18px] h-[18px]",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/RowActions.tsx",lineNumber:32,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/RowActions.tsx",lineNumber:22,columnNumber:5},this)}function m({children:o}){return t.jsxDEV("span",{className:"flex items-center justify-end gap-2.5",children:o},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/RowActions.tsx",lineNumber:42,columnNumber:5},this)}export{m as R,r as a};
2
- //# sourceMappingURL=RowActions-JqgAB0p3.js.map
@@ -1,2 +0,0 @@
1
- import{i as a,j as o}from"./index-sNrqYt0Q.js";import{B as i}from"./BotPicker-DcvILNUf.js";import{a4 as c,a5 as l}from"./vendor-icons-CWl44VA6.js";const N=["Describe","Discover","Compile","Deploy","Test","Verify"];function b(e){return e?e.status==="completed"?"completed":e.status==="failed"?"failed":"in_progress":"pending"}function x(e){const s=e.match(/```json\s*([\s\S]*?)```/)||e.match(/\{[\s\S]*?\n\}/);if(!s)return null;try{return JSON.parse((s[1]??s[0]).trim())}catch{return null}}const u=new Set(["token","authorization","bearer_token","access_token","api_token"]);function h(e){if(!(e!=null&&e.properties))return{};const s={},r=sessionStorage.getItem("lt_token")||"";for(const[n,m]of Object.entries(e.properties)){const t=m;t.default!==void 0?s[n]=t.default:u.has(n.toLowerCase())&&t.type==="string"?s[n]=r:t.type==="string"?s[n]="":t.type==="number"||t.type==="integer"?s[n]=t.minimum??0:t.type==="boolean"?s[n]=!1:t.type==="object"?s[n]={}:t.type==="array"?s[n]=[]:s[n]=null}return s}function S({selected:e,onChange:s}){const{user:r,isSuperAdmin:n,hasRoleType:m}=a(),t=n||m("admin");return o.jsxDEV("div",{className:"px-2.5 py-2 rounded-md bg-accent/[0.06] border border-accent/20",children:t?o.jsxDEV("div",{className:"space-y-1",children:[o.jsxDEV("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Run as"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:18,columnNumber:11},this),o.jsxDEV(i,{selected:e,onChange:s},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:19,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:17,columnNumber:9},this):o.jsxDEV("div",{className:"flex items-center gap-1.5",children:e?o.jsxDEV(o.Fragment,{children:[o.jsxDEV(c,{className:"w-3 h-3 text-accent/75 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:25,columnNumber:15},this),o.jsxDEV("span",{className:"text-[10px] text-text-secondary",children:["Running as ",o.jsxDEV("span",{className:"font-medium text-accent font-mono",children:e},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:27,columnNumber:28},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:26,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:24,columnNumber:13},this):o.jsxDEV(o.Fragment,{children:[o.jsxDEV(l,{className:"w-3 h-3 text-accent/75 shrink-0",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:32,columnNumber:15},this),o.jsxDEV("span",{className:"text-[10px] text-text-secondary",children:["Running as ",o.jsxDEV("span",{className:"font-medium text-accent",children:(r==null?void 0:r.displayName)||(r==null?void 0:r.userId)||"you"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:34,columnNumber:28},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:33,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:31,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:22,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/RunAsSelector.tsx",lineNumber:15,columnNumber:5},this)}export{S as R,N as S,h as b,x as e,b as m};
2
- //# sourceMappingURL=RunAsSelector-KAlKtitB.js.map
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-sNrqYt0Q.js";function i({label:m,value:n,sub:a,dotClass:t,colorClass:d="text-text-primary",onClick:r}){const s=e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{className:"flex items-center gap-2 mb-1",children:[t&&e.jsxDEV("span",{className:`w-2 h-2 rounded-full ${t}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/StatCard.tsx",lineNumber:21,columnNumber:22},this),e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/StatCard.tsx",lineNumber:22,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/StatCard.tsx",lineNumber:20,columnNumber:7},this),e.jsxDEV("p",{className:`text-2xl font-light tabular-nums ${d}`,children:n},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/StatCard.tsx",lineNumber:26,columnNumber:7},this),a&&e.jsxDEV("p",{className:"text-xs text-text-tertiary mt-1",children:a},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/StatCard.tsx",lineNumber:27,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/StatCard.tsx",lineNumber:19,columnNumber:5},this),o="bg-surface-raised border border-surface-border rounded-md p-4 text-left";return r?e.jsxDEV("button",{onClick:r,className:`${o} hover:border-accent/40 transition-colors`,children:s},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/StatCard.tsx",lineNumber:35,columnNumber:7},this):e.jsxDEV("div",{className:o,children:s},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/StatCard.tsx",lineNumber:41,columnNumber:10},this)}export{i as S};
2
- //# sourceMappingURL=StatCard-B-WLhOaH.js.map
@@ -1,2 +0,0 @@
1
- import{j as s}from"./index-sNrqYt0Q.js";const n={pending:"bg-status-pending",in_progress:"bg-status-active animate-pulse",completed:"bg-status-success",resolved:"bg-status-success",needs_intervention:"bg-status-error",failed:"bg-status-error",cancelled:"bg-accent-muted",draft:"bg-status-draft",deployed:"bg-status-active",active:"bg-status-success",archived:"bg-text-tertiary"},d={pending:"Pending",in_progress:"In Progress",completed:"Completed",resolved:"Resolved",needs_intervention:"Needs Intervention",failed:"Failed",cancelled:"Cancelled",draft:"Draft",deployed:"Deployed",active:"Active",archived:"Archived"};function r({status:e}){const t=n[e]??"bg-status-pending",a=d[e]??e;return s.jsxDEV("span",{className:"inline-flex items-center gap-2",children:[s.jsxDEV("span",{className:`w-2 h-2 rounded-full ${t}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/StatusBadge.tsx",lineNumber:39,columnNumber:7},this),s.jsxDEV("span",{className:"text-xs text-text-secondary",children:a},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/StatusBadge.tsx",lineNumber:40,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/StatusBadge.tsx",lineNumber:38,columnNumber:5},this)}export{r as S};
2
- //# sourceMappingURL=StatusBadge-DVCf2ncM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusBadge-DVCf2ncM.js","sources":["../../src/components/common/display/StatusBadge.tsx"],"sourcesContent":["import type { LTTaskStatus, LTEscalationStatus } from '../../../api/types';\n\ntype Status = LTTaskStatus | LTEscalationStatus | string;\n\nconst statusStyles: Record<string, string> = {\n pending: 'bg-status-pending',\n in_progress: 'bg-status-active animate-pulse',\n completed: 'bg-status-success',\n resolved: 'bg-status-success',\n needs_intervention: 'bg-status-error',\n failed: 'bg-status-error',\n cancelled: 'bg-accent-muted',\n draft: 'bg-status-draft',\n deployed: 'bg-status-active',\n active: 'bg-status-success',\n archived: 'bg-text-tertiary',\n};\n\nconst statusLabels: Record<string, string> = {\n pending: 'Pending',\n in_progress: 'In Progress',\n completed: 'Completed',\n resolved: 'Resolved',\n needs_intervention: 'Needs Intervention',\n failed: 'Failed',\n cancelled: 'Cancelled',\n draft: 'Draft',\n deployed: 'Deployed',\n active: 'Active',\n archived: 'Archived',\n};\n\nexport function StatusBadge({ status }: { status: Status }) {\n const dotClass = statusStyles[status] ?? 'bg-status-pending';\n const label = statusLabels[status] ?? status;\n\n return (\n <span className=\"inline-flex items-center gap-2\">\n <span className={`w-2 h-2 rounded-full ${dotClass}`} />\n <span className=\"text-xs text-text-secondary\">{label}</span>\n </span>\n );\n}\n"],"names":["statusStyles","statusLabels","StatusBadge","status","dotClass","label","jsxDEV"],"mappings":"wCAIA,MAAMA,EAAuC,CAC3C,QAAS,oBACT,YAAa,iCACb,UAAW,oBACX,SAAU,oBACV,mBAAoB,kBACpB,OAAQ,kBACR,UAAW,kBACX,MAAO,kBACP,SAAU,mBACV,OAAQ,oBACR,SAAU,kBACZ,EAEMC,EAAuC,CAC3C,QAAS,UACT,YAAa,cACb,UAAW,YACX,SAAU,WACV,mBAAoB,qBACpB,OAAQ,SACR,UAAW,YACX,MAAO,QACP,SAAU,WACV,OAAQ,SACR,SAAU,UACZ,EAEO,SAASC,EAAY,CAAE,OAAAC,GAA8B,CAC1D,MAAMC,EAAWJ,EAAaG,CAAM,GAAK,oBACnCE,EAAQJ,EAAaE,CAAM,GAAKA,EAEtC,OACEG,EAAAA,OAAC,OAAA,CAAK,UAAU,iCACd,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAW,wBAAwBF,CAAQ,EAAA,EAAjD,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAqD,EACrDE,SAAC,OAAA,CAAK,UAAU,8BAA+B,SAAAD,CAAA,EAA/C,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAqD,CAAA,CAAA,EAFvD,OAAA,GAAA,CAAA,SAAA,+DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-sNrqYt0Q.js";function l({steps:m,currentStep:s,onStepClick:a}){return e.jsxDEV("div",{className:"flex items-center justify-center gap-1 pb-4 border-b border-surface-border mb-4",children:m.map((n,t)=>{const c=t<s,o=t===s,r=!!a;return e.jsxDEV("div",{className:"flex items-center gap-1",children:[t>0&&e.jsxDEV("div",{className:`w-4 h-px ${c?"bg-accent":"bg-surface-border"}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/StepIndicator.tsx",lineNumber:17,columnNumber:15},this),e.jsxDEV("button",{type:"button",onClick:r?()=>a(t):void 0,className:`flex items-center gap-1 ${r?"cursor-pointer":"cursor-default"}`,children:[e.jsxDEV("span",{className:`w-5 h-5 rounded-full text-[10px] font-semibold flex items-center justify-center shrink-0 transition-colors ${o?"bg-accent text-text-inverse":c?"bg-accent-muted text-accent":"bg-surface-sunken text-text-tertiary"} ${r&&!o?"hover:bg-accent-muted hover:text-accent":""}`,children:t+1},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/StepIndicator.tsx",lineNumber:24,columnNumber:15},this),e.jsxDEV("span",{className:`text-[10px] font-semibold uppercase tracking-wider whitespace-nowrap transition-colors ${o?"text-text-primary":"text-text-tertiary"} ${r&&!o?"hover:text-text-primary":""}`,children:n},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/StepIndicator.tsx",lineNumber:35,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/StepIndicator.tsx",lineNumber:19,columnNumber:13},this)]},n,!0,{fileName:"/app/dashboard/src/components/common/layout/StepIndicator.tsx",lineNumber:15,columnNumber:11},this)})},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/StepIndicator.tsx",lineNumber:9,columnNumber:5},this)}export{l as S};
2
- //# sourceMappingURL=StepIndicator-D9Xvdf18.js.map