@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";const l=[10,25,50,100];function d({page:t,totalPages:s,onPageChange:i,total:n,pageSize:o,onPageSizeChange:m}){if(n===0)return null;const r=(t-1)*o+1,c=Math.min(t*o,n);return e.jsxDEV("div",{className:"flex items-center justify-between pt-4",children:[e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:[r,"–",c," of ",n]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:28,columnNumber:9},this),m&&e.jsxDEV("select",{value:o,onChange:a=>m(parseInt(a.target.value)),className:"select text-xs py-1",children:l.map(a=>e.jsxDEV("option",{value:a,children:[a," / page"]},a,!0,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:38,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:32,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:27,columnNumber:7},this),s>1&&e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("button",{onClick:()=>i(t-1),disabled:t<=1,className:"btn-ghost text-xs disabled:opacity-30 disabled:cursor-not-allowed",children:"Previous"},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:47,columnNumber:11},this),e.jsxDEV("span",{className:"px-3 text-xs text-text-secondary",children:[t," / ",s]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:54,columnNumber:11},this),e.jsxDEV("button",{onClick:()=>i(t+1),disabled:t>=s,className:"btn-ghost text-xs disabled:opacity-30 disabled:cursor-not-allowed",children:"Next"},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:57,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:46,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/Pagination.tsx",lineNumber:26,columnNumber:5},this)}function b(t){return t.total===0?null:e.jsxDEV("div",{className:"sticky bg-surface/95 backdrop-blur-sm border-t border-surface-border -mx-10 px-10 pt-2 pb-4",style:{bottom:"calc(var(--feed-height, 0px) - 8px)"},children:e.jsxDEV(d,{...t},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/StickyPagination.tsx",lineNumber:17,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/StickyPagination.tsx",lineNumber:16,columnNumber:5},this)}export{b as S};
2
- //# sourceMappingURL=StickyPagination-CJHMzYJj.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,D as O,c as $,J as v,f as M,C as L}from"./index-sNrqYt0Q.js";import{a as W}from"./vendor-query-DLp59M9_.js";import{S as R}from"./StatusBadge-DVCf2ncM.js";import{L as P}from"./vendor-react-Co3Y8ikm.js";function C(a){if(!a)return null;try{return JSON.parse(a)}catch{return a}}function K({event:a}){return e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3",children:[a.attributes.activity_type&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Activity"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:22,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.activity_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:25,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Kind"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:31,columnNumber:9},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.kind},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:34,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:30,columnNumber:7},this),a.duration_ms!==null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Duration"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:40,columnNumber:11},this),e.jsxDEV(O,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:43,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:39,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Time"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:47,columnNumber:9},this),e.jsxDEV($,{date:a.event_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:50,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:46,columnNumber:7},this),a.attributes.signal_name&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Signal"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:55,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.signal_name},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:58,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:54,columnNumber:9},this),a.attributes.awaited!==void 0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Awaited"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:66,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.awaited?"Yes":"No (fire-and-forget)"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:65,columnNumber:9},this),a.attributes.timeline_key&&e.jsxDEV("div",{className:"col-span-2",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Timeline Key"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:77,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",title:a.attributes.timeline_key,children:a.attributes.timeline_key},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:80,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:76,columnNumber:9},this),a.attributes.execution_index!==void 0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Exec Index"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:88,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:a.attributes.execution_index},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:91,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:87,columnNumber:9},this),a.attributes.scheduled_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Scheduled Event"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:99,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["#",a.attributes.scheduled_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:102,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:98,columnNumber:9},this),a.attributes.wait_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Wait Started"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:109,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["Event #",a.attributes.wait_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:112,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:108,columnNumber:9},this),a.attributes.initiated_event_id!=null&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Initiated Event"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:119,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary",children:["#",a.attributes.initiated_event_id]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:122,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:118,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:19,columnNumber:5},this)}function J({event:a,childTask:i}){const o=i?C(i.envelope):null,d=i?C(i.data):null;return!i&&a.attributes.child_workflow_id?e.jsxDEV("div",{className:"border-t border-surface-border pt-3",children:e.jsxDEV("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:143,columnNumber:11},this),e.jsxDEV(P,{to:`/workflows/executions/${a.attributes.child_workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:u=>u.stopPropagation(),children:a.attributes.child_workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:146,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:142,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:141,columnNumber:7},this):i?e.jsxDEV("div",{className:"space-y-3 border-t border-surface-border pt-3",children:[e.jsxDEV("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Child Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:163,columnNumber:11},this),e.jsxDEV(P,{to:`/workflows/executions/${i.workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:u=>u.stopPropagation(),children:i.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:166,columnNumber:11},this),e.jsxDEV(R,{status:i.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:173,columnNumber:11},this),i.completed_at&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:["Completed ",e.jsxDEV($,{date:i.completed_at,format:"relative"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:176,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:175,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:162,columnNumber:9},this),(o!=null||d!=null)&&e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[o!=null?e.jsxDEV(v,{data:o,label:"Input (Envelope)",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:184,columnNumber:15},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:185,columnNumber:17},this),d!=null?e.jsxDEV(v,{data:d,label:"Output (Result)",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:187,columnNumber:15},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:188,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:182,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:161,columnNumber:7},this):null}function B({event:a,childTask:i}){const o=a.attributes.input,d=a.attributes.result,u=a.category==="signal",c=a.category==="activity",l=a.category==="child_workflow",n=o!==void 0&&(c||l),p=!i&&d!==void 0&&(c||l),m=a.attributes.activity_type==="ltSignalParent"?"Signal Payload":"Result";return n||p?e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[n?e.jsxDEV(v,{data:o,label:"Input",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:215,columnNumber:11},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:216,columnNumber:13},this),p?e.jsxDEV(v,{data:d,label:m,variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:218,columnNumber:11},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:219,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:213,columnNumber:7},this):u&&o!==void 0?e.jsxDEV(v,{data:o,label:"Signal Payload",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventMetadataGrid.tsx",lineNumber:225,columnNumber:12},this):null}function Y({event:a,childTask:i,pending:o=!1,onClose:d}){return e.jsxDEV("div",{className:"p-4 bg-surface-sunken rounded-md space-y-4",children:[e.jsxDEV("div",{className:"flex items-center justify-between gap-2",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("p",{className:"font-mono font-medium text-sm text-text-primary",children:a.attributes.activity_type??a.attributes.signal_name??a.attributes.child_workflow_id??a.event_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:30,columnNumber:11},this),o&&e.jsxDEV("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-status-warning/15 text-status-warning",children:[e.jsxDEV("span",{className:"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:38,columnNumber:15},this),"Pending"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:37,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:29,columnNumber:9},this),d&&e.jsxDEV("button",{onClick:d,className:"text-text-tertiary hover:text-text-primary text-xs",children:"Close"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:44,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:28,columnNumber:7},this),e.jsxDEV(K,{event:a},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:54,columnNumber:7},this),e.jsxDEV(J,{event:a,childTask:i},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:57,columnNumber:7},this),e.jsxDEV(B,{event:a,childTask:i},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:60,columnNumber:7},this),a.attributes.failure!==void 0&&e.jsxDEV(v,{data:a.attributes.failure,label:"Failure"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:64,columnNumber:9},this),(()=>{const{kind:u,activity_type:c,result:l,timeline_key:n,execution_index:p,signal_name:m,input:N,child_workflow_id:V,awaited:k,wait_event_id:w,scheduled_event_id:g,initiated_event_id:f,failure:x,trace_id:D,span_id:S,...y}=a.attributes;return Object.keys(y).length>0?e.jsxDEV(v,{data:y,label:"Attributes"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:88,columnNumber:11},this):null})()]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:26,columnNumber:5},this)}const h={activity:{bar:"bg-blue-500",outline:"border-blue-500 bg-transparent",text:"text-blue-500",label:"Activities"},signal:{bar:"bg-emerald-500",outline:"border-emerald-500 bg-transparent",text:"text-emerald-500",label:"Signals"},timer:{bar:"bg-status-warning",outline:"border-status-warning bg-transparent",text:"text-status-warning",label:"Timers"},child_workflow:{bar:"bg-violet-500",outline:"border-violet-500 bg-transparent",text:"text-violet-500",label:"Child Workflows"}},z="bg-stripes animate-pulse opacity-70",F=new Set(["callLLM","callDbTool","callVisionTool","callMcpTool","getDBTools","getVisionTools"]);function H(a,i){if(a.length<=i)return a;const o=Math.floor((i-1)/2);return`${a.slice(0,o)}…${a.slice(a.length-o)}`}function q(a){const i=[],o=new Map,d=new Map;for(const c of a){const l=c.attributes.timeline_key;if(!l)continue;const n=c.event_type;n==="activity_task_scheduled"||n==="timer_started"||n==="child_workflow_execution_started"||n==="signal_wait_started"?o.set(l,c):d.set(l,c)}const u=new Set;for(const c of a){const l=c.attributes.timeline_key;if(l&&u.has(l))continue;l&&u.add(l);const n=l?o.get(l):void 0,p=l?d.get(l):void 0,m=p||n||c,N=m.category,V=m.attributes.activity_type||m.attributes.signal_name||m.attributes.child_workflow_id||m.event_type,k=n||m,w=p,g=new Date(k.event_time).getTime();let f=null,x=null,D=!1;w?(f=new Date(w.event_time).getTime(),x=w.duration_ms??f-g):m.duration_ms!==null?(x=m.duration_ms,f=g+x):D=!0,i.push({category:N,name:V||m.event_type,startTime:g,endTime:f,duration:x,eventId:m.event_id,pending:D})}return i}function ee({events:a,childTasks:i,outline:o}){const[d,u]=W.useState(new Set),l=a.filter(t=>t.category!=="workflow");if(l.length===0)return null;const n=q(l);if(n.length===0)return null;const p=Date.now(),m=n.flatMap(t=>{const r=[t.startTime];return t.endTime?r.push(t.endTime):r.push(p),r}),N=Math.min(...m),k=Math.max(...m)-N||1,w=new Map;for(const t of n){const r=`${t.category}:${t.name}`,s=t.startTime-N,E=(t.endTime?t.endTime-N:p-N)-s,_={eventId:t.eventId,startPct:s/k*100,widthPct:Math.max(E/k*100,.5),duration:t.duration,label:`${t.name} — ${t.duration!==null?M(t.duration):"pending"} — ${new Date(t.startTime).toLocaleTimeString()}`,eventTime:new Date(t.startTime).toISOString(),pending:t.pending};w.has(r)||w.set(r,{name:t.name,category:t.category,segments:[]}),w.get(r).segments.push(_)}const g=Array.from(w.values()),f=5,x=Array.from({length:f+1},(t,r)=>({pct:r/f*100,label:M(Math.round(r/f*k))})),D=[...new Set(n.map(t=>t.category))],S=t=>{if(!(i!=null&&i.length))return;const r=t.attributes.activity_type;if(r)return i.find(s=>s.workflow_type===r)},y=t=>{u(r=>{const s=new Set(r);return s.has(t)?s.delete(t):s.add(t),s})},j=n.map(t=>t.eventId),G=j.length>0&&j.every(t=>d.has(t)),I=()=>{u(G?new Set:new Set(j))},T=(t,r)=>{var s,b;return r?z:o?((s=h[t])==null?void 0:s.outline)??"border-text-tertiary bg-transparent":((b=h[t])==null?void 0:b.bar)??"bg-text-tertiary"},A=t=>{var r;return o?((r=h[t])==null?void 0:r.text)??"text-text-tertiary":"text-white"};return e.jsxDEV("div",{className:"px-6 py-6 mb-6",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-4 flex-wrap",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Execution Timeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:133,columnNumber:9},this),e.jsxDEV("button",{onClick:I,className:"text-[10px] text-accent hover:underline",children:G?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:136,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-3 ml-auto",children:[D.map(t=>{var r,s,b;return e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:`w-2 h-2 rounded-full ${o?`border ${((r=h[t])==null?void 0:r.outline)??"border-text-tertiary"}`:((s=h[t])==null?void 0:s.bar)??"bg-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:144,columnNumber:15},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:((b=h[t])==null?void 0:b.label)??t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:145,columnNumber:15},this)]},t,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:143,columnNumber:13},this)}),n.some(t=>t.pending)&&e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-warning animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:152,columnNumber:15},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:153,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:151,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:141,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:132,columnNumber:7},this),e.jsxDEV("div",{className:"flex",children:[e.jsxDEV("div",{className:"w-56 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:161,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 relative h-6 border-b border-surface-border",children:x.map(t=>e.jsxDEV("span",{className:"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1",style:{left:`${t.pct}%`},children:t.label},t.pct,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:164,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:162,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:160,columnNumber:7},this),g.map(t=>{const r=h[t.category];return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center border-b border-surface-border",children:[e.jsxDEV("div",{className:"w-56 shrink-0 py-3 pr-4 flex items-center gap-2",children:[e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${(r==null?void 0:r.bar)??"bg-text-tertiary"}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:184,columnNumber:17},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden",title:t.name,children:H(t.name,28)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:185,columnNumber:17},this),F.has(t.name)&&e.jsxDEV("span",{className:"shrink-0 text-accent/60",title:"MCP tool interaction",children:e.jsxDEV("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:194,columnNumber:23},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:193,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:192,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:183,columnNumber:15},this),e.jsxDEV("div",{className:"flex-1 relative h-10",children:[x.map(s=>e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${s.pct}%`}},s.pct,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:202,columnNumber:19},this)),t.segments.map(s=>e.jsxDEV("div",{className:`absolute top-2 h-6 rounded-sm cursor-pointer transition-all duration-200 ${o?"border-2":""} ${d.has(s.eventId)?`${T(t.category,s.pending)} ring-2 ring-accent ring-offset-1`:`${T(t.category,s.pending)} hover:opacity-80`}`,style:{left:`${s.startPct}%`,width:`${s.widthPct}%`,minWidth:"4px"},title:s.label,onClick:()=>y(s.eventId),children:s.widthPct>8&&e.jsxDEV("span",{className:`absolute inset-0 flex items-center px-1.5 text-[9px] font-mono ${A(t.category)} truncate`,children:s.duration!==null?M(s.duration):"pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:226,columnNumber:23},this)},s.eventId,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:210,columnNumber:19},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:200,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:182,columnNumber:13},this),t.segments.map(s=>{const b=d.has(s.eventId),E=l.find(_=>_.event_id===s.eventId);return e.jsxDEV(L,{open:b,children:E&&e.jsxDEV("div",{className:"py-3",children:e.jsxDEV(Y,{event:E,childTask:S(E),pending:s.pending,onClose:()=>y(E.event_id)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:243,columnNumber:23},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:242,columnNumber:21},this)},s.eventId,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:240,columnNumber:17},this)})]},`${t.category}:${t.name}`,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:180,columnNumber:11},this)})]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:131,columnNumber:5},this)}export{Y as E,ee as S};
2
- //# sourceMappingURL=SwimlaneTimeline-YiXPDyEL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwimlaneTimeline-YiXPDyEL.js","sources":["../../src/pages/workflows/workflow-execution/EventMetadataGrid.tsx","../../src/pages/workflows/workflow-execution/EventDetailPanel.tsx","../../src/pages/workflows/workflow-execution/utils.ts","../../src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx"],"sourcesContent":["import { Link } from 'react-router-dom';\nimport { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { DurationValue } from '../../../components/common/display/DurationValue';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\n\nfunction safeParseJson(raw: string | null | undefined): unknown {\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n}\n\nexport function EventMetadataGrid({ event }: { event: WorkflowExecutionEvent }) {\n return (\n <div className=\"grid grid-cols-2 sm:grid-cols-4 gap-3\">\n {event.attributes.activity_type && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Activity\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.activity_type}\n </p>\n </div>\n )}\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Kind\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.kind}\n </p>\n </div>\n {event.duration_ms !== null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Duration\n </p>\n <DurationValue ms={event.duration_ms} className=\"font-mono text-text-primary\" />\n </div>\n )}\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Time\n </p>\n <DateValue date={event.event_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n </div>\n\n {event.attributes.signal_name && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Signal\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.signal_name}\n </p>\n </div>\n )}\n\n {event.attributes.awaited !== undefined && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Awaited\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.awaited ? 'Yes' : 'No (fire-and-forget)'}\n </p>\n </div>\n )}\n\n {event.attributes.timeline_key && (\n <div className=\"col-span-2\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Timeline Key\n </p>\n <p className=\"text-xs font-mono text-text-primary truncate\" title={event.attributes.timeline_key}>\n {event.attributes.timeline_key}\n </p>\n </div>\n )}\n\n {event.attributes.execution_index !== undefined && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Exec Index\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n {event.attributes.execution_index}\n </p>\n </div>\n )}\n\n {event.attributes.scheduled_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Scheduled Event\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n #{event.attributes.scheduled_event_id}\n </p>\n </div>\n )}\n {event.attributes.wait_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Wait Started\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n Event #{event.attributes.wait_event_id}\n </p>\n </div>\n )}\n {event.attributes.initiated_event_id != null && (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Initiated Event\n </p>\n <p className=\"text-xs font-mono text-text-primary\">\n #{event.attributes.initiated_event_id}\n </p>\n </div>\n )}\n </div>\n );\n}\n\nexport function ChildWorkflowSection({ event, childTask }: {\n event: WorkflowExecutionEvent;\n childTask?: LTTaskRecord;\n}) {\n const childInput = childTask ? safeParseJson(childTask.envelope) : null;\n const childOutput = childTask ? safeParseJson(childTask.data) : null;\n\n // Link-only (no matching task record)\n if (!childTask && event.attributes.child_workflow_id) {\n return (\n <div className=\"border-t border-surface-border pt-3\">\n <div className=\"flex items-center gap-3 flex-wrap\">\n <span className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Child Workflow\n </span>\n <Link\n to={`/workflows/executions/${event.attributes.child_workflow_id}`}\n className=\"text-xs font-mono text-accent hover:underline\"\n onClick={(e) => e.stopPropagation()}\n >\n {event.attributes.child_workflow_id}\n </Link>\n </div>\n </div>\n );\n }\n\n // Full child task section\n if (childTask) {\n return (\n <div className=\"space-y-3 border-t border-surface-border pt-3\">\n <div className=\"flex items-center gap-3 flex-wrap\">\n <span className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Child Workflow\n </span>\n <Link\n to={`/workflows/executions/${childTask.workflow_id}`}\n className=\"text-xs font-mono text-accent hover:underline\"\n onClick={(e) => e.stopPropagation()}\n >\n {childTask.workflow_id}\n </Link>\n <StatusBadge status={childTask.status} />\n {childTask.completed_at && (\n <span className=\"text-[10px] text-text-tertiary\">\n Completed <DateValue date={childTask.completed_at} format=\"relative\" />\n </span>\n )}\n </div>\n\n {(childInput != null || childOutput != null) && (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {childInput != null ? (\n <JsonViewer data={childInput} label=\"Input (Envelope)\" variant=\"panel\" />\n ) : <div />}\n {childOutput != null ? (\n <JsonViewer data={childOutput} label=\"Output (Result)\" variant=\"panel\" />\n ) : <div />}\n </div>\n )}\n </div>\n );\n }\n\n return null;\n}\n\nexport function EventPayloadSection({ event, childTask }: {\n event: WorkflowExecutionEvent;\n childTask?: LTTaskRecord;\n}) {\n const input = event.attributes.input;\n const result = event.attributes.result;\n const isSignal = event.category === 'signal';\n const isActivity = event.category === 'activity';\n const isChild = event.category === 'child_workflow';\n const hasInput = input !== undefined && (isActivity || isChild);\n const hasResult = !childTask && result !== undefined && (isActivity || isChild);\n const resultLabel = event.attributes.activity_type === 'ltSignalParent' ? 'Signal Payload' : 'Result';\n\n if (hasInput || hasResult) {\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {hasInput ? (\n <JsonViewer data={input} label=\"Input\" variant=\"panel\" />\n ) : <div />}\n {hasResult ? (\n <JsonViewer data={result} label={resultLabel} variant=\"panel\" />\n ) : <div />}\n </div>\n );\n }\n\n if (isSignal && input !== undefined) {\n return <JsonViewer data={input} label=\"Signal Payload\" variant=\"panel\" />;\n }\n\n return null;\n}\n","import { JsonViewer } from '../../../components/common/data/JsonViewer';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { EventMetadataGrid, ChildWorkflowSection, EventPayloadSection } from './EventMetadataGrid';\n\ninterface EventDetailPanelProps {\n event: WorkflowExecutionEvent;\n childTask?: LTTaskRecord;\n /** When true, show a \"Pending\" badge. Caller determines this from the full event list. */\n pending?: boolean;\n onClose?: () => void;\n}\n\n/**\n * Reusable detail panel for a workflow execution event.\n * Renders inline wherever placed — used by both SwimlaneTimeline\n * (below the lane row) and EventTable (below the event row).\n *\n * Shows rich detail for all event categories:\n * - Activities: activity_type, result, scheduled_event_id\n * - Signals: signal_name, payload, wait_event_id\n * - Timers: duration\n * - Child workflows: child_workflow_id link, awaited badge, result\n */\nexport function EventDetailPanel({ event, childTask, pending = false, onClose }: EventDetailPanelProps) {\n return (\n <div className=\"p-4 bg-surface-sunken rounded-md space-y-4\">\n {/* Header */}\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <p className=\"font-mono font-medium text-sm text-text-primary\">\n {event.attributes.activity_type\n ?? event.attributes.signal_name\n ?? event.attributes.child_workflow_id\n ?? event.event_type}\n </p>\n {pending && (\n <span className=\"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-status-warning/15 text-status-warning\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-status-warning animate-pulse\" />\n Pending\n </span>\n )}\n </div>\n {onClose && (\n <button\n onClick={onClose}\n className=\"text-text-tertiary hover:text-text-primary text-xs\"\n >\n Close\n </button>\n )}\n </div>\n\n {/* Metadata grid */}\n <EventMetadataGrid event={event} />\n\n {/* Child workflow sections */}\n <ChildWorkflowSection event={event} childTask={childTask} />\n\n {/* Input / Result payload */}\n <EventPayloadSection event={event} childTask={childTask} />\n\n {/* Failure detail */}\n {event.attributes.failure !== undefined && (\n <JsonViewer data={event.attributes.failure} label=\"Failure\" />\n )}\n\n {/* Remaining attributes (exclude the fields shown above) */}\n {(() => {\n const {\n kind,\n activity_type,\n result,\n timeline_key,\n execution_index,\n signal_name,\n input,\n child_workflow_id,\n awaited,\n wait_event_id,\n scheduled_event_id,\n initiated_event_id,\n failure,\n trace_id,\n span_id,\n ...rest\n } = event.attributes;\n return Object.keys(rest).length > 0 ? (\n <JsonViewer data={rest} label=\"Attributes\" />\n ) : null;\n })()}\n </div>\n );\n}\n","export { formatDuration, formatDateTime } from '../../../lib/format';\n\nimport type { WorkflowExecutionEvent } from '../../../api/types';\n\n// ── Types ────────────────────────────────────────────────────────────────────\n\nexport interface Segment {\n eventId: number;\n startPct: number;\n widthPct: number;\n duration: number | null;\n label: string;\n eventTime: string;\n pending: boolean;\n}\n\nexport interface Lane {\n name: string;\n category: string;\n segments: Segment[];\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────\n\nexport const CATEGORY_COLORS: Record<string, { bar: string; outline: string; text: string; label: string }> = {\n activity: { bar: 'bg-blue-500', outline: 'border-blue-500 bg-transparent', text: 'text-blue-500', label: 'Activities' },\n signal: { bar: 'bg-emerald-500', outline: 'border-emerald-500 bg-transparent', text: 'text-emerald-500', label: 'Signals' },\n timer: { bar: 'bg-status-warning', outline: 'border-status-warning bg-transparent', text: 'text-status-warning', label: 'Timers' },\n child_workflow: { bar: 'bg-violet-500', outline: 'border-violet-500 bg-transparent', text: 'text-violet-500', label: 'Child Workflows' },\n};\n\nexport const PENDING_CLASS = 'bg-stripes animate-pulse opacity-70';\n\n/** Activity names that indicate LLM/MCP tool interaction */\nexport const MCP_ACTIVITY_NAMES = new Set([\n 'callLLM', 'callDbTool', 'callVisionTool', 'callMcpTool', 'getDBTools', 'getVisionTools',\n]);\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\n/** Truncate a string in the middle, keeping the start and end visible. */\nexport function middleTruncate(str: string, maxLen: number): string {\n if (str.length <= maxLen) return str;\n const keep = Math.floor((maxLen - 1) / 2);\n return `${str.slice(0, keep)}…${str.slice(str.length - keep)}`;\n}\n\nexport interface TimelineSpan {\n category: string;\n name: string;\n startTime: number;\n endTime: number | null;\n duration: number | null;\n eventId: number;\n pending: boolean;\n}\n\n/**\n * Group paired events (scheduled→completed, started→fired, wait→signaled)\n * into a single span using timeline_key, or treat standalone events as points.\n */\nexport function buildTimelineSpans(events: WorkflowExecutionEvent[]): TimelineSpan[] {\n const spans: TimelineSpan[] = [];\n\n // Index scheduled/started events by timeline_key for pairing\n const startedMap = new Map<string, WorkflowExecutionEvent>();\n const completedMap = new Map<string, WorkflowExecutionEvent>();\n\n for (const evt of events) {\n const tlKey = evt.attributes.timeline_key;\n if (!tlKey) continue;\n const type = evt.event_type;\n\n if (type === 'activity_task_scheduled'\n || type === 'timer_started'\n || type === 'child_workflow_execution_started'\n || type === 'signal_wait_started') {\n startedMap.set(tlKey, evt);\n } else {\n completedMap.set(tlKey, evt);\n }\n }\n\n // Build spans from pairs\n const seen = new Set<string>();\n\n for (const evt of events) {\n const tlKey = evt.attributes.timeline_key;\n\n // Skip if no timeline_key or already processed\n if (tlKey && seen.has(tlKey)) continue;\n if (tlKey) seen.add(tlKey);\n\n const started = tlKey ? startedMap.get(tlKey) : undefined;\n const completed = tlKey ? completedMap.get(tlKey) : undefined;\n\n // Determine the representative event for this span\n const primary = completed || started || evt;\n const cat = primary.category;\n const name = primary.attributes.activity_type\n || primary.attributes.signal_name\n || primary.attributes.child_workflow_id\n || primary.event_type;\n\n const startEvt = started || primary;\n const endEvt = completed;\n\n const startMs = new Date(startEvt.event_time).getTime();\n let endMs: number | null = null;\n let dur: number | null = null;\n let pending = false;\n\n if (endEvt) {\n endMs = new Date(endEvt.event_time).getTime();\n dur = endEvt.duration_ms ?? (endMs - startMs);\n } else if (primary.duration_ms !== null) {\n dur = primary.duration_ms;\n endMs = startMs + dur;\n } else {\n // Pending — no completion event\n pending = true;\n }\n\n spans.push({\n category: cat,\n name: name || primary.event_type,\n startTime: startMs,\n endTime: endMs,\n duration: dur,\n eventId: primary.event_id,\n pending,\n });\n }\n\n return spans;\n}\n","import { useState } from 'react';\nimport { Collapsible } from '../../../components/common/layout/Collapsible';\nimport type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { EventDetailPanel } from './EventDetailPanel';\nimport {\n formatDuration,\n middleTruncate,\n buildTimelineSpans,\n CATEGORY_COLORS,\n PENDING_CLASS,\n MCP_ACTIVITY_NAMES,\n} from './utils';\nimport type { Segment, Lane } from './utils';\n\ninterface SwimlaneTimelineProps {\n events: WorkflowExecutionEvent[];\n childTasks?: LTTaskRecord[];\n /** Use outline-style bars (border + transparent fill) instead of solid fills */\n outline?: boolean;\n}\n\n// ── Component ────────────────────────────────────────────────────────────────\n\nexport function SwimlaneTimeline({ events, childTasks, outline }: SwimlaneTimelineProps) {\n const [selectedEvents, setSelectedEvents] = useState<Set<number>>(new Set());\n\n // Filter out workflow-level events (started/completed) — they aren't operations\n const timelineEvents = events.filter(\n (e) => e.category !== 'workflow',\n );\n\n // Show all activities (user + system), signals, timers, and child workflows.\n const displayEvents = timelineEvents;\n\n if (displayEvents.length === 0) return null;\n\n const spans = buildTimelineSpans(displayEvents);\n if (spans.length === 0) return null;\n\n // Compute time axis bounds\n const now = Date.now();\n const allTimes = spans.flatMap((s) => {\n const times = [s.startTime];\n if (s.endTime) times.push(s.endTime);\n else times.push(now); // pending extends to now\n return times;\n });\n const timeMin = Math.min(...allTimes);\n const timeMax = Math.max(...allTimes);\n const totalSpan = timeMax - timeMin || 1;\n\n // Group spans into lanes by \"category:name\"\n const laneMap = new Map<string, { name: string; category: string; segments: Segment[] }>();\n\n for (const span of spans) {\n const laneKey = `${span.category}:${span.name}`;\n const startOffset = span.startTime - timeMin;\n const endOffset = span.endTime ? span.endTime - timeMin : (now - timeMin);\n const widthMs = endOffset - startOffset;\n\n const segment: Segment = {\n eventId: span.eventId,\n startPct: (startOffset / totalSpan) * 100,\n widthPct: Math.max((widthMs / totalSpan) * 100, 0.5),\n duration: span.duration,\n label: `${span.name} — ${span.duration !== null ? formatDuration(span.duration) : 'pending'} — ${new Date(span.startTime).toLocaleTimeString()}`,\n eventTime: new Date(span.startTime).toISOString(),\n pending: span.pending,\n };\n\n if (!laneMap.has(laneKey)) {\n laneMap.set(laneKey, { name: span.name, category: span.category, segments: [] });\n }\n laneMap.get(laneKey)!.segments.push(segment);\n }\n\n const lanes: Lane[] = Array.from(laneMap.values());\n\n // Time axis ticks\n const tickCount = 5;\n const ticks = Array.from({ length: tickCount + 1 }, (_, i) => ({\n pct: (i / tickCount) * 100,\n label: formatDuration(Math.round((i / tickCount) * totalSpan)),\n }));\n\n // Active categories for legend\n const activeCategories = [...new Set(spans.map((s) => s.category))];\n\n /** Find a matching child task for an event */\n const findChildTask = (evt: WorkflowExecutionEvent): LTTaskRecord | undefined => {\n if (!childTasks?.length) return undefined;\n const activityType = evt.attributes.activity_type;\n if (!activityType) return undefined;\n return childTasks.find((t) => t.workflow_type === activityType);\n };\n\n const toggleEvent = (id: number) => {\n setSelectedEvents((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n };\n\n const allEventIds = spans.map((s) => s.eventId);\n const allExpanded = allEventIds.length > 0 && allEventIds.every((id) => selectedEvents.has(id));\n\n const toggleAll = () => {\n if (allExpanded) {\n setSelectedEvents(new Set());\n } else {\n setSelectedEvents(new Set(allEventIds));\n }\n };\n\n\n\n const barColor = (cat: string, pending: boolean) => {\n if (pending) return PENDING_CLASS;\n if (outline) return CATEGORY_COLORS[cat]?.outline ?? 'border-text-tertiary bg-transparent';\n return CATEGORY_COLORS[cat]?.bar ?? 'bg-text-tertiary';\n };\n\n const textColor = (cat: string) => {\n if (outline) return CATEGORY_COLORS[cat]?.text ?? 'text-text-tertiary';\n return 'text-white';\n };\n\n return (\n <div className=\"px-6 py-6 mb-6\">\n <div className=\"flex items-center gap-4 mb-4 flex-wrap\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Execution Timeline\n </p>\n <button onClick={toggleAll} className=\"text-[10px] text-accent hover:underline\">\n {allExpanded ? 'Collapse all' : 'Expand all'}\n </button>\n\n {/* Legend */}\n <div className=\"flex items-center gap-3 ml-auto\">\n {activeCategories.map((cat) => (\n <div key={cat} className=\"flex items-center gap-1\">\n <span className={`w-2 h-2 rounded-full ${outline ? `border ${CATEGORY_COLORS[cat]?.outline ?? 'border-text-tertiary'}` : CATEGORY_COLORS[cat]?.bar ?? 'bg-text-tertiary'}`} />\n <span className=\"text-[9px] text-text-tertiary\">\n {CATEGORY_COLORS[cat]?.label ?? cat}\n </span>\n </div>\n ))}\n {spans.some((s) => s.pending) && (\n <div className=\"flex items-center gap-1\">\n <span className=\"w-2 h-2 rounded-full bg-status-warning animate-pulse\" />\n <span className=\"text-[9px] text-text-tertiary\">Pending</span>\n </div>\n )}\n </div>\n </div>\n\n {/* Time axis */}\n <div className=\"flex\">\n <div className=\"w-56 shrink-0\" />\n <div className=\"flex-1 relative h-6 border-b border-surface-border\">\n {ticks.map((tick) => (\n <span\n key={tick.pct}\n className=\"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1\"\n style={{ left: `${tick.pct}%` }}\n >\n {tick.label}\n </span>\n ))}\n </div>\n </div>\n\n {/* Lanes */}\n {lanes.map((lane) => {\n const catColor = CATEGORY_COLORS[lane.category];\n\n return (\n <div key={`${lane.category}:${lane.name}`}>\n {/* Lane row */}\n <div className=\"flex items-center border-b border-surface-border\">\n <div className=\"w-56 shrink-0 py-3 pr-4 flex items-center gap-2\">\n <span className={`w-1.5 h-1.5 rounded-full shrink-0 ${catColor?.bar ?? 'bg-text-tertiary'}`} />\n <p\n className=\"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden\"\n title={lane.name}\n >\n {middleTruncate(lane.name, 28)}\n </p>\n {MCP_ACTIVITY_NAMES.has(lane.name) && (\n <span className=\"shrink-0 text-accent/60\" title=\"MCP tool interaction\">\n <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.663 17h4.674M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z\" />\n </svg>\n </span>\n )}\n </div>\n\n <div className=\"flex-1 relative h-10\">\n {ticks.map((tick) => (\n <div\n key={tick.pct}\n className=\"absolute top-0 bottom-0 w-px bg-surface-border opacity-30\"\n style={{ left: `${tick.pct}%` }}\n />\n ))}\n\n {lane.segments.map((seg) => (\n <div\n key={seg.eventId}\n className={`absolute top-2 h-6 rounded-sm cursor-pointer transition-all duration-200 ${outline ? 'border-2' : ''} ${\n selectedEvents.has(seg.eventId)\n ? `${barColor(lane.category, seg.pending)} ring-2 ring-accent ring-offset-1`\n : `${barColor(lane.category, seg.pending)} hover:opacity-80`\n }`}\n style={{\n left: `${seg.startPct}%`,\n width: `${seg.widthPct}%`,\n minWidth: '4px',\n }}\n title={seg.label}\n onClick={() => toggleEvent(seg.eventId)}\n >\n {seg.widthPct > 8 && (\n <span className={`absolute inset-0 flex items-center px-1.5 text-[9px] font-mono ${textColor(lane.category)} truncate`}>\n {seg.duration !== null ? formatDuration(seg.duration) : 'pending'}\n </span>\n )}\n </div>\n ))}\n </div>\n </div>\n\n {/* Inline detail panels */}\n {lane.segments.map((seg) => {\n const isOpen = selectedEvents.has(seg.eventId);\n const evt = displayEvents.find((e) => e.event_id === seg.eventId);\n return (\n <Collapsible key={seg.eventId} open={isOpen}>\n {evt && (\n <div className=\"py-3\">\n <EventDetailPanel\n event={evt}\n childTask={findChildTask(evt)}\n pending={seg.pending}\n onClose={() => toggleEvent(evt.event_id)}\n />\n </div>\n )}\n </Collapsible>\n );\n })}\n </div>\n );\n })}\n </div>\n );\n}\n"],"names":["safeParseJson","raw","EventMetadataGrid","event","jsxDEV","DurationValue","DateValue","ChildWorkflowSection","childTask","childInput","childOutput","Link","e","StatusBadge","JsonViewer","EventPayloadSection","input","result","isSignal","isActivity","isChild","hasInput","hasResult","resultLabel","EventDetailPanel","pending","onClose","kind","activity_type","timeline_key","execution_index","signal_name","child_workflow_id","awaited","wait_event_id","scheduled_event_id","initiated_event_id","failure","trace_id","span_id","rest","CATEGORY_COLORS","PENDING_CLASS","MCP_ACTIVITY_NAMES","middleTruncate","str","maxLen","keep","buildTimelineSpans","events","spans","startedMap","completedMap","evt","tlKey","type","seen","started","completed","primary","cat","name","startEvt","endEvt","startMs","endMs","dur","SwimlaneTimeline","childTasks","outline","selectedEvents","setSelectedEvents","useState","displayEvents","now","allTimes","s","times","timeMin","totalSpan","laneMap","span","laneKey","startOffset","widthMs","segment","formatDuration","lanes","tickCount","ticks","_","i","activeCategories","findChildTask","activityType","t","toggleEvent","id","prev","next","allEventIds","allExpanded","toggleAll","barColor","_a","_b","textColor","tick","lane","catColor","seg","isOpen","Collapsible"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as o}from"./index-sNrqYt0Q.js";import{a as l}from"./vendor-query-DLp59M9_.js";import{X as d}from"./vendor-icons-CWl44VA6.js";function x(t){return t.toLowerCase().replace(/[^a-z0-9-]/g,"").replace(/^-|-$/g,"")}function g({tags:t,onChange:a,placeholder:p="Add tag...",compact:u}){const[r,s]=l.useState(""),m=l.useRef(null),c=e=>{const n=x(e);n&&!t.includes(n)&&a([...t,n]),s("")},i=e=>{a(t.filter(n=>n!==e))},f=e=>{e.key==="Enter"||e.key===","?(e.preventDefault(),c(r)):e.key==="Backspace"&&!r&&t.length>0&&i(t[t.length-1])};return o.jsxDEV("div",{className:u?"flex flex-wrap items-center gap-1.5":"flex flex-wrap items-center gap-1.5 bg-surface-sunken border border-surface-border rounded-md px-2 py-1.5 focus-within:ring-1 focus-within:ring-accent-primary cursor-text",onClick:()=>{var e;return(e=m.current)==null?void 0:e.focus()},children:[t.map(e=>o.jsxDEV("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent/10 text-accent text-[11px] font-medium",children:[e,o.jsxDEV("button",{type:"button",onClick:n=>{n.stopPropagation(),i(e)},className:"hover:text-status-error transition-colors",children:o.jsxDEV(d,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:61,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:56,columnNumber:11},this)]},e,!0,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:51,columnNumber:9},this)),o.jsxDEV("input",{ref:m,type:"text",value:r,onChange:e=>s(e.target.value),onKeyDown:f,onBlur:()=>{r.trim()&&c(r)},placeholder:t.length===0?p:"",className:"flex-1 min-w-[80px] bg-transparent text-xs text-text-primary outline-none placeholder:text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:65,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/form/TagInput.tsx",lineNumber:42,columnNumber:5},this)}export{g as T};
2
- //# sourceMappingURL=TagInput-DcPnUnSJ.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,S as r,J as o}from"./index-sNrqYt0Q.js";import{d as n}from"./tasks-Bq54qGGq.js";import{S as c}from"./StatusBadge-DVCf2ncM.js";import{P as p}from"./PriorityBadge-C7D5d_HY.js";import{P as u}from"./PageHeader-FJIemmrC.js";import{e as b,L as N}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./vendor-icons-CWl44VA6.js";function s({label:l,value:a}){return e.jsxDEV("div",{children:[e.jsxDEV(r,{className:"mb-1",children:l},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/Field.tsx",lineNumber:12,columnNumber:7},this),e.jsxDEV("div",{className:"text-sm text-text-primary",children:a??"—"},void 0,!1,{fileName:"/app/dashboard/src/components/common/data/Field.tsx",lineNumber:13,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/data/Field.tsx",lineNumber:11,columnNumber:5},this)}function f({items:l}){return l.length===0?null:e.jsxDEV("div",{className:"relative",children:[e.jsxDEV("div",{className:"absolute left-[7px] top-3 bottom-3 w-px bg-surface-border"},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:17,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-0",children:l.map(a=>e.jsxDEV("div",{className:"relative flex gap-4 py-3",children:[e.jsxDEV("div",{className:"relative z-10 mt-1",children:e.jsxDEV("div",{className:`w-[15px] h-[15px] rounded-full border-2 ${a.category==="system"?"border-accent-muted bg-surface-raised":"border-accent bg-accent"}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:24,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:23,columnNumber:13},this),e.jsxDEV("div",{className:"flex-1 min-w-0",children:[e.jsxDEV("div",{className:"flex items-baseline gap-3",children:[e.jsxDEV("p",{className:"text-sm text-text-primary",children:a.label},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:36,columnNumber:17},this),a.timestamp&&e.jsxDEV("time",{className:"text-[10px] text-text-tertiary font-mono shrink-0",children:new Date(a.timestamp).toLocaleTimeString()},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:38,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:35,columnNumber:15},this),a.detail&&e.jsxDEV("div",{className:"mt-1",children:a.detail},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:43,columnNumber:31},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:34,columnNumber:13},this)]},a.id,!0,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:21,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:19,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/Timeline.tsx",lineNumber:15,columnNumber:5},this)}function E(){const{id:l}=b(),{data:a,isLoading:m}=n(l);if(m)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/workflows/TaskDetailPage.tsx",lineNumber:18,columnNumber:9},this),e.jsxDEV("div",{className:"h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:19,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:17,columnNumber:7},this);if(!a)return e.jsxDEV("p",{className:"text-sm text-text-secondary",children:"Task not found."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:25,columnNumber:12},this);const t=(a.milestones??[]).map((i,d)=>({id:d,label:i.name,timestamp:i.created_at,detail:e.jsxDEV("span",{className:"text-xs text-text-secondary font-mono",children:typeof i.value=="object"?JSON.stringify(i.value):String(i.value)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:33,columnNumber:7},this),category:"user"}));return e.jsxDEV("div",{children:[e.jsxDEV(u,{title:"Task Detail"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:42,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-12",children:[e.jsxDEV("div",{className:"lg:col-span-2 space-y-10",children:[e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-6",children:[e.jsxDEV(s,{label:"Status",value:e.jsxDEV(c,{status:a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:48,columnNumber:42},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:48,columnNumber:13},this),e.jsxDEV(s,{label:"Priority",value:e.jsxDEV(p,{priority:a.priority},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:49,columnNumber:44},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:49,columnNumber:13},this),e.jsxDEV(s,{label:"Workflow Type",value:e.jsxDEV("span",{className:"font-mono text-xs",children:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:50,columnNumber:49},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:50,columnNumber:13},this),e.jsxDEV(s,{label:"LT Type",value:e.jsxDEV("span",{className:"font-mono text-xs",children:a.lt_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:51,columnNumber:43},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:51,columnNumber:13},this),e.jsxDEV(s,{label:"Task Queue",value:e.jsxDEV("span",{className:"font-mono text-xs",children:a.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:52,columnNumber:46},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:52,columnNumber:13},this),e.jsxDEV(s,{label:"Workflow ID",value:e.jsxDEV("span",{className:"font-mono text-xs break-all",children:a.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:53,columnNumber:47},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:53,columnNumber:13},this),e.jsxDEV(s,{label:"Started",value:a.started_at?new Date(a.started_at).toLocaleString():"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:54,columnNumber:13},this),e.jsxDEV(s,{label:"Completed",value:a.completed_at?new Date(a.completed_at).toLocaleString():"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:55,columnNumber:13},this),e.jsxDEV(s,{label:"Signal ID",value:e.jsxDEV("span",{className:"font-mono text-xs break-all",children:a.signal_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:56,columnNumber:45},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:56,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:47,columnNumber:11},this),a.error&&e.jsxDEV("div",{children:[e.jsxDEV(r,{className:"mb-2 text-status-error",children:"Error"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:61,columnNumber:15},this),e.jsxDEV("p",{className:"text-sm text-text-primary font-mono",children:a.error},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:62,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:60,columnNumber:13},this),t.length>0&&e.jsxDEV("div",{children:[e.jsxDEV(r,{className:"mb-4",children:"Milestones"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:68,columnNumber:15},this),e.jsxDEV(f,{items:t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:69,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:67,columnNumber:13},this),e.jsxDEV(N,{to:`/workflows/executions/${a.workflow_id}`,className:"btn-secondary inline-block text-xs",children:"View Workflow Execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:73,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:46,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV(o,{data:a.envelope,label:"Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:83,columnNumber:11},this),a.metadata&&e.jsxDEV(o,{data:a.metadata,label:"Metadata"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:84,columnNumber:29},this),a.data&&e.jsxDEV(o,{data:a.data,label:"Result Data"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:85,columnNumber:25},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:82,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:44,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TaskDetailPage.tsx",lineNumber:41,columnNumber:5},this)}export{E as TaskDetailPage};
2
- //# sourceMappingURL=TaskDetailPage-DftmYWD7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskDetailPage-DftmYWD7.js","sources":["../../src/components/common/data/Field.tsx","../../src/components/common/display/Timeline.tsx","../../src/pages/workflows/TaskDetailPage.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { SectionLabel } from '../layout/SectionLabel';\n\ninterface FieldProps {\n label: string;\n value: ReactNode;\n}\n\nexport function Field({ label, value }: FieldProps) {\n return (\n <div>\n <SectionLabel className=\"mb-1\">{label}</SectionLabel>\n <div className=\"text-sm text-text-primary\">{value ?? '—'}</div>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nexport interface TimelineItem {\n id: string | number;\n label: string;\n timestamp?: string;\n detail?: ReactNode;\n category?: 'system' | 'user';\n}\n\nexport function Timeline({ items }: { items: TimelineItem[] }) {\n if (items.length === 0) return null;\n\n return (\n <div className=\"relative\">\n {/* Vertical line */}\n <div className=\"absolute left-[7px] top-3 bottom-3 w-px bg-surface-border\" />\n\n <div className=\"space-y-0\">\n {items.map((item) => (\n <div key={item.id} className=\"relative flex gap-4 py-3\">\n {/* Dot */}\n <div className=\"relative z-10 mt-1\">\n <div\n className={`w-[15px] h-[15px] rounded-full border-2 ${\n item.category === 'system'\n ? 'border-accent-muted bg-surface-raised'\n : 'border-accent bg-accent'\n }`}\n />\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-baseline gap-3\">\n <p className=\"text-sm text-text-primary\">{item.label}</p>\n {item.timestamp && (\n <time className=\"text-[10px] text-text-tertiary font-mono shrink-0\">\n {new Date(item.timestamp).toLocaleTimeString()}\n </time>\n )}\n </div>\n {item.detail && <div className=\"mt-1\">{item.detail}</div>}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { useParams, Link } from 'react-router-dom';\nimport { useTask } from '../../api/tasks';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\nimport { PriorityBadge } from '../../components/common/display/PriorityBadge';\nimport { Field } from '../../components/common/data/Field';\nimport { JsonViewer } from '../../components/common/data/JsonViewer';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { SectionLabel } from '../../components/common/layout/SectionLabel';\nimport { Timeline, type TimelineItem } from '../../components/common/display/Timeline';\n\nexport function TaskDetailPage() {\n const { id } = useParams<{ id: string }>();\n const { data: task, isLoading } = useTask(id!);\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-8 bg-surface-sunken rounded w-48\" />\n <div className=\"h-40 bg-surface-sunken rounded\" />\n </div>\n );\n }\n\n if (!task) {\n return <p className=\"text-sm text-text-secondary\">Task not found.</p>;\n }\n\n const milestoneItems: TimelineItem[] = (task.milestones ?? []).map((m, i) => ({\n id: i,\n label: m.name,\n timestamp: m.created_at,\n detail: (\n <span className=\"text-xs text-text-secondary font-mono\">\n {typeof m.value === 'object' ? JSON.stringify(m.value) : String(m.value)}\n </span>\n ),\n category: 'user' as const,\n }));\n\n return (\n <div>\n <PageHeader title=\"Task Detail\" />\n\n <div className=\"grid grid-cols-1 lg:grid-cols-3 gap-12\">\n {/* Left column — metadata */}\n <div className=\"lg:col-span-2 space-y-10\">\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-6\">\n <Field label=\"Status\" value={<StatusBadge status={task.status} />} />\n <Field label=\"Priority\" value={<PriorityBadge priority={task.priority} />} />\n <Field label=\"Workflow Type\" value={<span className=\"font-mono text-xs\">{task.workflow_type}</span>} />\n <Field label=\"LT Type\" value={<span className=\"font-mono text-xs\">{task.lt_type}</span>} />\n <Field label=\"Task Queue\" value={<span className=\"font-mono text-xs\">{task.task_queue}</span>} />\n <Field label=\"Workflow ID\" value={<span className=\"font-mono text-xs break-all\">{task.workflow_id}</span>} />\n <Field label=\"Started\" value={task.started_at ? new Date(task.started_at).toLocaleString() : '—'} />\n <Field label=\"Completed\" value={task.completed_at ? new Date(task.completed_at).toLocaleString() : '—'} />\n <Field label=\"Signal ID\" value={<span className=\"font-mono text-xs break-all\">{task.signal_id}</span>} />\n </div>\n\n {task.error && (\n <div>\n <SectionLabel className=\"mb-2 text-status-error\">Error</SectionLabel>\n <p className=\"text-sm text-text-primary font-mono\">{task.error}</p>\n </div>\n )}\n\n {milestoneItems.length > 0 && (\n <div>\n <SectionLabel className=\"mb-4\">Milestones</SectionLabel>\n <Timeline items={milestoneItems} />\n </div>\n )}\n\n <Link\n to={`/workflows/executions/${task.workflow_id}`}\n className=\"btn-secondary inline-block text-xs\"\n >\n View Workflow Execution\n </Link>\n </div>\n\n {/* Right column — payloads */}\n <div className=\"space-y-8\">\n <JsonViewer data={task.envelope} label=\"Envelope\" />\n {task.metadata && <JsonViewer data={task.metadata} label=\"Metadata\" />}\n {task.data && <JsonViewer data={task.data} label=\"Result Data\" />}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["Field","label","value","jsxDEV","SectionLabel","Timeline","items","item","TaskDetailPage","id","useParams","task","isLoading","useTask","milestoneItems","m","i","PageHeader","StatusBadge","PriorityBadge","Link","JsonViewer"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as s}from"./index-sNrqYt0Q.js";import{R as n}from"./vendor-icons-CWl44VA6.js";function l({queue:t,size:e="sm"}){const a=e==="md"?"px-2.5 py-0.5 text-[11px] gap-1.5":"px-2 py-0.5 text-[10px] gap-1",o=e==="md"?"w-3 h-3":"w-2.5 h-2.5";return s.jsxDEV("span",{className:`inline-flex items-center ${a} font-mono bg-accent/[0.06] text-text-secondary rounded-lg`,children:[s.jsxDEV(n,{className:`${o} shrink-0 text-accent/75`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/TaskQueuePill.tsx",lineNumber:16,columnNumber:7},this),t]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/TaskQueuePill.tsx",lineNumber:15,columnNumber:5},this)}export{l as T};
2
- //# sourceMappingURL=TaskQueuePill-BzduBqwy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskQueuePill-BzduBqwy.js","sources":["../../src/components/common/display/TaskQueuePill.tsx"],"sourcesContent":["import { Radio } from 'lucide-react';\n\ninterface TaskQueuePillProps {\n queue: string;\n size?: 'sm' | 'md';\n}\n\nexport function TaskQueuePill({ queue, size = 'sm' }: TaskQueuePillProps) {\n const sizeClass = size === 'md'\n ? 'px-2.5 py-0.5 text-[11px] gap-1.5'\n : 'px-2 py-0.5 text-[10px] gap-1';\n const iconClass = size === 'md' ? 'w-3 h-3' : 'w-2.5 h-2.5';\n\n return (\n <span className={`inline-flex items-center ${sizeClass} font-mono bg-accent/[0.06] text-text-secondary rounded-lg`}>\n <Radio className={`${iconClass} shrink-0 text-accent/75`} />\n {queue}\n </span>\n );\n}\n"],"names":["TaskQueuePill","queue","size","sizeClass","iconClass","jsxDEV","Radio"],"mappings":"uFAOO,SAASA,EAAc,CAAE,MAAAC,EAAO,KAAAC,EAAO,MAA4B,CACxE,MAAMC,EAAYD,IAAS,KACvB,oCACA,gCACEE,EAAYF,IAAS,KAAO,UAAY,cAE9C,OACEG,EAAAA,OAAC,OAAA,CAAK,UAAW,4BAA4BF,CAAS,6DACpD,SAAA,CAAAE,SAACC,EAAA,CAAM,UAAW,GAAGF,CAAS,0BAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA0D,EACzDH,CAAA,CAAA,EAFH,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{j as s}from"./index-sNrqYt0Q.js";import{c as u}from"./tasks-Bq54qGGq.js";import{u as g}from"./workflows-BkzA4ahe.js";import{u as w}from"./useFilterParams-CGRYFw_A.js";import{D as b}from"./DataTable-bd2PTBJd.js";import{S as c}from"./StatusBadge-DVCf2ncM.js";import{P as k}from"./PriorityBadge-C7D5d_HY.js";import{T as n}from"./TimeAgo-DJZq-e4R.js";import{S as N}from"./StickyPagination-CJHMzYJj.js";import{F as x,b as m}from"./FilterBar-BQNzsd3A.js";import{P as y}from"./PageHeader-FJIemmrC.js";import{W as P}from"./WorkflowPill-BrD5d1AG.js";import{c as v}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./vendor-icons-CWl44VA6.js";import"./EmptyState-BygtU-Rh.js";const h=[{value:"pending",label:"Pending"},{value:"in_progress",label:"In Progress"},{value:"completed",label:"Completed"},{value:"needs_intervention",label:"Needs Intervention"},{value:"cancelled",label:"Cancelled"}],T=[{key:"status",label:"Status",render:e=>s.jsxDEV(c,{status:e.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:27,columnNumber:22},void 0),className:"w-40"},{key:"workflow_type",label:"Workflow Type",render:e=>s.jsxDEV(P,{type:e.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:33,columnNumber:22},void 0)},{key:"lt_type",label:"LT Type",render:e=>s.jsxDEV("span",{className:"text-text-secondary text-xs",children:e.lt_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:39,columnNumber:7},void 0)},{key:"priority",label:"Priority",render:e=>s.jsxDEV(k,{priority:e.priority},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:45,columnNumber:22},void 0),className:"w-20"},{key:"started_at",label:"Started",render:e=>s.jsxDEV(n,{date:e.started_at},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:51,columnNumber:22},void 0),className:"w-28"},{key:"updated_at",label:"Updated",render:e=>s.jsxDEV(n,{date:e.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:57,columnNumber:22},void 0),className:"w-28"}];function M(){const e=v(),{filters:r,setFilter:l,pagination:o}=w({filters:{status:"",workflow_type:""}}),{data:p}=g(),d=[...new Set((p??[]).map(a=>a.workflow_type))].sort(),{data:t,isLoading:f}=u({status:r.status||void 0,workflow_type:r.workflow_type||void 0,limit:o.pageSize,offset:o.offset}),i=(t==null?void 0:t.total)??0;return s.jsxDEV("div",{children:[s.jsxDEV(y,{title:"Tasks"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:82,columnNumber:7},this),s.jsxDEV(x,{children:[s.jsxDEV(m,{label:"Status",value:r.status,onChange:a=>l("status",a),options:h},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:85,columnNumber:9},this),s.jsxDEV(m,{label:"Workflow Type",value:r.workflow_type,onChange:a=>l("workflow_type",a),options:d.map(a=>({value:a,label:a}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:91,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:84,columnNumber:7},this),s.jsxDEV(b,{columns:T,data:(t==null?void 0:t.tasks)??[],keyFn:a=>a.id,onRowClick:a=>e(`/workflows/tasks/detail/${a.id}`),isLoading:f,emptyMessage:"No tasks found"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:99,columnNumber:7},this),s.jsxDEV(N,{page:o.page,totalPages:o.totalPages(i),onPageChange:o.setPage,total:i,pageSize:o.pageSize,onPageSizeChange:o.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:108,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/TasksListPage.tsx",lineNumber:81,columnNumber:5},this)}export{M as TasksListPage};
2
- //# sourceMappingURL=TasksListPage-DeewV4Gp.js.map
@@ -1,2 +0,0 @@
1
- import{j as a,c as m}from"./index-sNrqYt0Q.js";function r({date:e,className:o=""}){return a.jsxDEV(m,{date:e,format:"relative",className:o},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/TimeAgo.tsx",lineNumber:8,columnNumber:10},this)}export{r as T};
2
- //# sourceMappingURL=TimeAgo-DJZq-e4R.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,c as s}from"./index-sNrqYt0Q.js";function a({date:m}){return e.jsxDEV("div",{children:[e.jsxDEV(s,{date:m,format:"relative"},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/TimestampCell.tsx",lineNumber:14,columnNumber:7},this),e.jsxDEV("p",{className:"text-[9px] font-mono text-text-secondary mt-0.5 whitespace-nowrap",children:[new Date(m).toISOString().replace("T"," ").slice(0,19)," UTC"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/TimestampCell.tsx",lineNumber:15,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/TimestampCell.tsx",lineNumber:13,columnNumber:5},this)}export{a as T};
2
- //# sourceMappingURL=TimestampCell-Dx5uwGfS.js.map
@@ -1,2 +0,0 @@
1
- import{j as s}from"./index-sNrqYt0Q.js";import{a as m}from"./users-BTBhafGc.js";function i({userId:a,fallback:r}){const{data:e}=m(a);return e?s.jsxDEV(s.Fragment,{children:e.display_name||e.email||e.external_id},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/UserName.tsx",lineNumber:11,columnNumber:12},this):s.jsxDEV(s.Fragment,{children:r??`${a.slice(0,8)}…`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/UserName.tsx",lineNumber:15,columnNumber:10},this)}export{i as U};
2
- //# sourceMappingURL=UserName-CnGk7MgL.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,c as v,D as T,J as D,d as C}from"./index-sNrqYt0Q.js";import{a as k}from"./vendor-query-DLp59M9_.js";import{a as I,g as R}from"./workflows-BkzA4ahe.js";import{h as S}from"./useEventHooks-BTbGf536.js";import{u as $,E as L}from"./EventTable-CmFhswLW.js";import{b as A,e as K}from"./tasks-Bq54qGGq.js";import{P as Q}from"./PageHeader-FJIemmrC.js";import{C as g}from"./CollapsibleSection-BWPbzgEe.js";import{L as z}from"./ListToolbar-OWOn-HiC.js";import{S as j}from"./StatusBadge-DVCf2ncM.js";import{L as f,e as B,u as J,c as M}from"./vendor-react-Co3Y8ikm.js";import{S as O}from"./SwimlaneTimeline-YiXPDyEL.js";import"./vendor-icons-CWl44VA6.js";import"./FilterBar-BQNzsd3A.js";function m({label:s,value:t,mono:a,truncate:o,children:r}){return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:22,columnNumber:7},this),r||e.jsxDEV("p",{className:`text-xs text-text-primary ${a?"font-mono":""} ${o?"truncate":""}`,title:o?t:void 0,children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:26,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:21,columnNumber:5},this)}function F(s){const t=s.lastIndexOf("-");return t<=0?{taskQueue:s,workflowType:s}:{taskQueue:s.substring(0,t),workflowType:s.substring(t+1)}}function U({execution:s,task:t,escalations:a}){const r=t&&t.workflow_id===s.workflow_id?t.parent_workflow_id:null,{taskQueue:l,workflowType:d}=F(s.workflow_type);return e.jsxDEV("div",{className:"px-6 py-6 mb-6",children:[e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-y-4 gap-x-8",children:[e.jsxDEV(m,{label:"Workflow Type",value:d,mono:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:69,columnNumber:9},this),e.jsxDEV(m,{label:"Task Queue",value:l,mono:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:70,columnNumber:9},this),e.jsxDEV(m,{label:"Start Time",children:s.start_time?e.jsxDEV(v,{date:s.start_time,format:"datetime",className:"text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:73,columnNumber:15},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:74,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:71,columnNumber:9},this),e.jsxDEV(m,{label:"End Time",children:s.close_time?e.jsxDEV(v,{date:s.close_time,format:"datetime",className:"text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:78,columnNumber:15},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:79,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:76,columnNumber:9},this),e.jsxDEV(m,{label:"Duration",children:e.jsxDEV(T,{ms:s.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:82,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:81,columnNumber:9},this),e.jsxDEV(m,{label:"History Size",value:`${s.summary.total_events} events`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:84,columnNumber:9},this),e.jsxDEV(m,{label:"Activities",value:`${s.summary.activities.completed} / ${s.summary.activities.total}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:88,columnNumber:9},this),e.jsxDEV(m,{label:"Run ID",value:s.workflow_id,mono:!0,truncate:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:92,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:68,columnNumber:7},this),(r||t||a&&a.length>0)&&e.jsxDEV("div",{className:"mt-5 pt-4 border-t border-surface-border space-y-3",children:[r&&e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary shrink-0",children:"Parent"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:106,columnNumber:15},this),e.jsxDEV(f,{to:`/workflows/executions/${r}`,className:"text-xs font-mono text-accent hover:underline truncate",title:r,children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:109,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:105,columnNumber:13},this),!1,a&&a.length>0&&e.jsxDEV("div",{className:"flex items-start gap-2",children:[e.jsxDEV("span",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary shrink-0 mt-0.5",children:a.length===1?"Escalation":"Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:137,columnNumber:15},this),e.jsxDEV("div",{className:"flex flex-wrap gap-x-4 gap-y-1",children:a.map(n=>e.jsxDEV(f,{to:`/escalations/detail/${n.id}`,className:"inline-flex items-center gap-1.5 text-xs font-mono text-accent hover:underline",children:[e.jsxDEV("span",{children:n.type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:147,columnNumber:21},this),e.jsxDEV(j,{status:n.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:148,columnNumber:21},this)]},n.id,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:142,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:140,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:136,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:102,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionHeader.tsx",lineNumber:66,columnNumber:5},this)}function q(s){var o;const t=s.events.find(r=>r.event_type==="workflow_execution_started"),a=(o=t==null?void 0:t.attributes)==null?void 0:o.input;return a&&typeof a=="object"?a:null}function Z({execution:s}){const t=q(s),a=s.result,o=(a==null?void 0:a.data)??a??null;return!t&&!o?null:e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[t!==null&&e.jsxDEV("div",{children:e.jsxDEV(D,{data:t,label:"Input Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionInputResult.tsx",lineNumber:34,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionInputResult.tsx",lineNumber:33,columnNumber:9},this),o!==null&&e.jsxDEV("div",{children:e.jsxDEV(D,{data:o,label:"Result"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionInputResult.tsx",lineNumber:39,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionInputResult.tsx",lineNumber:38,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/ExecutionInputResult.tsx",lineNumber:31,columnNumber:5},this)}function G({isRunning:s,hasToolCalls:t,workflowId:a,onAction:o}){const[r,l]=k.useState(!1),d=k.useRef(null);return k.useEffect(()=>{if(!r)return;const n=x=>{d.current&&!d.current.contains(x.target)&&l(!1)};return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[r]),e.jsxDEV("div",{className:"relative",ref:d,children:[e.jsxDEV("button",{onClick:()=>l(!r),className:"btn-primary text-xs",children:"Actions"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:39,columnNumber:7},this),r&&e.jsxDEV("div",{className:"absolute right-0 mt-1 w-44 bg-surface-raised border border-surface-border rounded-md shadow-lg z-10",children:[e.jsxDEV("button",{onClick:()=>{o("restart"),l(!1)},className:"block w-full text-left px-4 py-2 text-xs text-text-secondary hover:bg-surface-hover",children:"Restart Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:44,columnNumber:11},this),s&&e.jsxDEV("button",{onClick:()=>{o("terminate"),l(!1)},className:"block w-full text-left px-4 py-2 text-xs text-status-error hover:bg-surface-hover",children:"Terminate"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:51,columnNumber:13},this),t&&e.jsxDEV(f,{to:`/mcp/queries/${a}?step=3`,className:"block w-full text-left px-4 py-2 text-xs text-accent hover:bg-surface-hover",onClick:()=>l(!1),children:"Compile into Pipeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:59,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:43,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:38,columnNumber:5},this)}function de(){const{workflowId:s}=B(),{pathname:t}=J();S(s);const a=(t.startsWith("/workflows/durable/"),"Durable Execution"),{data:o,isLoading:r,error:l,refetch:d,isFetching:n}=I(s),{data:x}=A(s),{data:u}=K(s),{data:p}=C(s),V=M(),w=R(),{isCollapsed:b,toggle:N}=$("workflow-execution"),y=c=>{var i;if(c==="terminate")confirm("Are you sure you want to terminate this workflow?")&&w.mutate(s);else if(c==="restart"&&o){const H=o.workflow_id.replace(/-[A-Za-z0-9_-]{20,}$/,""),h=o.events.find(_=>_.event_type==="workflow_execution_started"),E=(i=h==null?void 0:h.attributes)==null?void 0:i.input;E&&sessionStorage.setItem("lt:invoke:prefill",JSON.stringify(E)),V(`/workflows/start?type=${encodeURIComponent(H)}&mode=now`)}};if(r)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/workflows/WorkflowExecutionPage.tsx",lineNumber:110,columnNumber:9},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:111,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:109,columnNumber:7},this);if(l||!o){const c=(l==null?void 0:l.message)??"",i=c.includes("expired")||c.includes("no longer available");return e.jsxDEV("div",{children:[e.jsxDEV(f,{to:"/workflows/executions",className:"text-xs text-text-tertiary hover:text-text-primary",children:"← Workflows"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:122,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:i?"Execution data is no longer available":l?"Unable to load execution":"Execution not found"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:126,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:i?"This workflow's underlying job has expired. The task record is preserved, but the execution timeline has been cleaned up.":c||"The workflow could not be resolved."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:133,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:125,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:121,columnNumber:7},this)}const W=o.status!=="completed"&&o.status!=="failed",P=o.status==="completed"&&o.events.some(c=>{if(c.event_type!=="activity_task_completed")return!1;const i=c.attributes.activity_type;return i==="callDbTool"||i==="callVisionTool"||i==="callMcpTool"||(i==null?void 0:i.startsWith("mcp_"))});return e.jsxDEV("div",{children:[e.jsxDEV(Q,{title:a,actions:e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(z,{onRefresh:()=>d(),isFetching:n,apiPath:`/workflow-states/${s}/execution`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:158,columnNumber:13},this),e.jsxDEV(j,{status:o.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:163,columnNumber:13},this),e.jsxDEV(G,{isRunning:W,hasToolCalls:P,workflowId:s,onAction:y},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:164,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:157,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:154,columnNumber:7},this),e.jsxDEV(U,{execution:o,task:x,childTasks:u==null?void 0:u.tasks,escalations:p==null?void 0:p.escalations},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:174,columnNumber:7},this),w.error&&e.jsxDEV("div",{className:"py-3 mb-6",children:e.jsxDEV("p",{className:"text-xs text-status-error",children:["Terminate failed: ",w.error.message]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:183,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:182,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV(g,{title:"Details",sectionKey:"details",isCollapsed:b("details"),onToggle:N,contentClassName:"mt-4 ml-9",children:e.jsxDEV(Z,{execution:o},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:192,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:191,columnNumber:9},this),e.jsxDEV(g,{title:"Execution Timeline",sectionKey:"timeline",isCollapsed:b("timeline"),onToggle:N,contentClassName:"mt-4 ml-9",children:e.jsxDEV(O,{events:o.events,childTasks:u==null?void 0:u.tasks},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:196,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:195,columnNumber:9},this),e.jsxDEV(g,{title:"Events",sectionKey:"events",isCollapsed:b("events"),onToggle:N,contentClassName:"mt-4 ml-9",children:e.jsxDEV(L,{events:o.events,childTasks:u==null?void 0:u.tasks},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:203,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:202,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:190,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowExecutionPage.tsx",lineNumber:153,columnNumber:5},this)}export{de as WorkflowExecutionPage};
2
- //# sourceMappingURL=WorkflowExecutionPage-CPQ0fIwf.js.map
@@ -1,2 +0,0 @@
1
- import{j as b}from"./index-sNrqYt0Q.js";import{d as p,b as u,S as d,a3 as f}from"./vendor-icons-CWl44VA6.js";const g=[{text:"text-rose-400",bg:"bg-rose-400/[0.08]"},{text:"text-pink-400",bg:"bg-pink-400/[0.08]"},{text:"text-fuchsia-400",bg:"bg-fuchsia-400/[0.08]"},{text:"text-purple-400",bg:"bg-purple-400/[0.08]"},{text:"text-violet-400",bg:"bg-violet-400/[0.08]"},{text:"text-indigo-400",bg:"bg-indigo-400/[0.08]"},{text:"text-blue-400",bg:"bg-blue-400/[0.08]"},{text:"text-sky-400",bg:"bg-sky-400/[0.08]"},{text:"text-cyan-400",bg:"bg-cyan-400/[0.08]"},{text:"text-teal-400",bg:"bg-teal-400/[0.08]"},{text:"text-emerald-400",bg:"bg-emerald-400/[0.08]"},{text:"text-green-400",bg:"bg-green-400/[0.08]"},{text:"text-lime-400",bg:"bg-lime-400/[0.08]"},{text:"text-yellow-400",bg:"bg-yellow-400/[0.08]"},{text:"text-amber-400",bg:"bg-amber-400/[0.08]"},{text:"text-orange-400",bg:"bg-orange-400/[0.08]"},{text:"text-red-400",bg:"bg-red-400/[0.08]"},{text:"text-stone-400",bg:"bg-stone-400/[0.08]"},{text:"text-rose-300",bg:"bg-rose-300/[0.08]"},{text:"text-violet-300",bg:"bg-violet-300/[0.08]"},{text:"text-sky-300",bg:"bg-sky-300/[0.08]"},{text:"text-teal-300",bg:"bg-teal-300/[0.08]"},{text:"text-amber-300",bg:"bg-amber-300/[0.08]"},{text:"text-pink-300",bg:"bg-pink-300/[0.08]"}];function h(t){let e=0;for(let s=0;s<t.length;s++)e=(e<<5)-e+t.charCodeAt(s)|0;return Math.abs(e)}function k(t){return g[h(t)%g.length]}const y={certified:f,configured:d,pipeline:u,durable:p},N={certified:"text-status-success",configured:"text-status-info"};function A({type:t,size:e="sm",certified:s,variant:l}){const r=e==="md"?"px-2.5 py-0.5 text-[11px] gap-1.5":"px-2 py-0.5 text-[10px] gap-1",a=e==="md"?"w-3 h-3":"w-2.5 h-2.5",n=l??(s?"certified":"durable"),i=y[n],x=N[n],o=x?null:k(t),c=x||((o==null?void 0:o.text)??"text-accent/75"),m=(o==null?void 0:o.bg)??"bg-accent/[0.06]";return b.jsxDEV("span",{className:`inline-flex items-center ${r} font-mono ${m} text-text-secondary rounded-lg`,children:[b.jsxDEV(i,{className:`${a} shrink-0 ${c}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/WorkflowPill.tsx",lineNumber:44,columnNumber:7},this),t]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/WorkflowPill.tsx",lineNumber:43,columnNumber:5},this)}export{A as W};
2
- //# sourceMappingURL=WorkflowPill-BrD5d1AG.js.map
@@ -1,2 +0,0 @@
1
- import{i as $,j as a}from"./index-sNrqYt0Q.js";import{a as u}from"./vendor-query-DLp59M9_.js";import{T as k}from"./TimestampCell-Dx5uwGfS.js";import{E as T}from"./ElapsedCell-BGo8vyus.js";import{u as P,e as F,b as R}from"./workflows-BkzA4ahe.js";import{b as z}from"./useEventHooks-BTbGf536.js";import{u as A}from"./useFilterParams-CGRYFw_A.js";import{D as L}from"./DataTable-bd2PTBJd.js";import{W as M}from"./WorkflowPill-BrD5d1AG.js";import{P as I}from"./PageHeader-FJIemmrC.js";import{F as U,b as p}from"./FilterBar-BQNzsd3A.js";import{S as O}from"./StickyPagination-CJHMzYJj.js";import{L as B}from"./ListToolbar-OWOn-HiC.js";import{R as G,a as g}from"./RowActions-JqgAB0p3.js";import{p as H,S as J}from"./vendor-icons-CWl44VA6.js";import{c as q}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-BygtU-Rh.js";const K={running:"in_progress",completed:"completed",failed:"failed"},Q={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"},X={running:"text-status-active",completed:"text-status-success",failed:"text-status-error"};function Y(m,i,c,o,r){return[{key:"workflow_id",label:"Workflow ID / Type",render:e=>{const t=Q[K[e.status]??e.status]??"bg-status-pending",f=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 ${t}${f}`,title:e.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:55,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/workflows/WorkflowsDashboard.tsx",lineNumber:57,columnNumber:15},this),a.jsxDEV("div",{className:"mt-0.5",children:a.jsxDEV(M,{type:e.entity,variant:r.get(e.entity)??"durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:61,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:60,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:56,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:54,columnNumber:11},this)}},{key:"created_at",label:"Created",render:e=>a.jsxDEV(k,{date:e.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:71,columnNumber:24},this),className:"w-40",sortable:!0},{key:"updated_at",label:"Updated",render:e=>a.jsxDEV(k,{date:e.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:78,columnNumber:24},this),className:"w-40",sortable:!0},{key:"duration",label:"Duration",render:e=>a.jsxDEV(T,{startDate:e.created_at,endDate:e.status==="running"?null:e.updated_at,isLive:e.status==="running"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:86,columnNumber:9},this),className:"w-28"},{key:"actions",label:"",render:e=>a.jsxDEV(G,{children:[a.jsxDEV(g,{icon:H,title:`Filter by ${e.entity}`,onClick:()=>m(e.entity)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:99,columnNumber:11},this),a.jsxDEV("button",{onClick:t=>{t.stopPropagation(),i(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] ${X[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/workflows/WorkflowsDashboard.tsx",lineNumber:110,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:109,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:104,columnNumber:11},this),c&&a.jsxDEV(g,{icon:J,title:"View config",onClick:()=>o(`/workflows/registry/${encodeURIComponent(e.entity)}`)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:114,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:98,columnNumber:9},this),className:"w-24 text-right"}]}function he({tier:m="all"}){z();const i=q(),{isSuperAdmin:c}=$(),{filters:o,setFilter:r,pagination:e,sort:t,setSort:f}=A({filters:{search:"",entity:"",status:"",tier:m}}),n=o.tier||"all",x=n==="certified"?"true":n==="durable"?"false":void 0,{data:b}=P(),{data:h}=F(),v=u.useMemo(()=>{const s=new Map;for(const N of h??[])s.set(N.workflow_type,N.tier??"durable");return s},[h]),D=Y(s=>r("entity",s),s=>r("status",s),c,i,v),[d,y]=u.useState(o.search);u.useEffect(()=>{if(d===o.search)return;const s=setTimeout(()=>r("search",d),300);return()=>clearTimeout(s)},[d,r,o.search]);const{data:l,isLoading:E,refetch:W,isFetching:j}=R({limit:e.pageSize,offset:e.offset,entity:o.entity||void 0,search:o.search||void 0,status:o.status||void 0,sort_by:t.sort_by||void 0,order:t.sort_by?t.order:void 0,registered:x}),w=(l==null?void 0:l.total)??0,V=(l==null?void 0:l.jobs)??[],S=u.useMemo(()=>[...new Set((b??[]).map(s=>s.workflow_type))].sort(),[b]),C="Durable Executions",_=n==="certified"?"No certified workflow executions found":n==="durable"?"No durable workflow executions found":"No workflow executions found";return a.jsxDEV("div",{children:[a.jsxDEV(I,{title:C},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:197,columnNumber:7},this),a.jsxDEV(U,{actions:a.jsxDEV(B,{onRefresh:()=>W(),isFetching:j,apiPath:`/workflow-states/jobs?limit=${e.pageSize}&offset=${e.offset}${o.entity?`&entity=${o.entity}`:""}${o.search?`&search=${o.search}`:""}${o.status?`&status=${o.status}`:""}${t.sort_by?`&sort_by=${t.sort_by}&order=${t.order}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:200,columnNumber:9},this),children:[a.jsxDEV("input",{type:"text",placeholder:"Search workflow 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/workflows/WorkflowsDashboard.tsx",lineNumber:206,columnNumber:9},this),a.jsxDEV(p,{label:"Type",value:o.entity,onChange:s=>r("entity",s),options:S.map(s=>({value:s,label:s}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:213,columnNumber:9},this),a.jsxDEV(p,{label:"Status",value:o.status,onChange:s=>r("status",s),options:[{value:"running",label:"Running"},{value:"completed",label:"Completed"},{value:"failed",label:"Failed"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:219,columnNumber:9},this),a.jsxDEV(p,{label:"Tier",value:o.tier==="all"?"":o.tier,onChange:s=>r("tier",s||"all"),options:[{value:"certified",label:"Certified"},{value:"durable",label:"Durable"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:229,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:199,columnNumber:7},this),a.jsxDEV(L,{columns:D,data:V,keyFn:s=>s.workflow_id,onRowClick:s=>i(`/workflows/executions/${s.workflow_id}`),isLoading:E,emptyMessage:_,sort:t,onSort:f},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:240,columnNumber:7},this),a.jsxDEV(O,{page:e.page,totalPages:e.totalPages(w),onPageChange:e.setPage,total:w,pageSize:e.pageSize,onPageSizeChange:e.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:251,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsDashboard.tsx",lineNumber:196,columnNumber:5},this)}export{he as WorkflowsDashboard};
2
- //# sourceMappingURL=WorkflowsDashboard-BzjhABZP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkflowsDashboard-BzjhABZP.js","sources":["../../src/pages/workflows/WorkflowsDashboard.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Filter, Settings } from 'lucide-react';\nimport { TimestampCell } from '../../components/common/display/TimestampCell';\nimport { ElapsedCell } from '../../components/common/display/ElapsedCell';\nimport { useJobs, useWorkflowConfigs, useDiscoveredWorkflows } from '../../api/workflows';\nimport { useAuth } from '../../hooks/useAuth';\nimport { useWorkflowListEvents } from '../../hooks/useEventHooks';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\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, WorkflowTier } from '../../api/types';\n\nexport type ExecutionsTier = 'all' | 'certified' | 'durable';\n\nconst jobStatusMap: 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 isSuperAdmin: boolean,\n navigate: (path: string) => void,\n tierMap: Map<string, WorkflowTier>,\n): Column<LTJob>[] {\n return [\n {\n key: 'workflow_id',\n label: 'Workflow ID / Type',\n render: (row) => {\n const dotClass = STATUS_DOT[jobStatusMap[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 <WorkflowPill type={row.entity} variant={tierMap.get(row.entity) ?? 'durable'} />\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 <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 {isSuperAdmin && (\n <RowAction\n icon={Settings}\n title=\"View config\"\n onClick={() => navigate(`/workflows/registry/${encodeURIComponent(row.entity)}`)}\n />\n )}\n </RowActionGroup>\n ),\n className: 'w-24 text-right',\n },\n ];\n}\n\nexport function WorkflowsDashboard({ tier: initialTier = 'all' }: { tier?: ExecutionsTier }) {\n useWorkflowListEvents();\n const navigate = useNavigate();\n const { isSuperAdmin } = useAuth();\n\n const { filters, setFilter, pagination, sort, setSort } = useFilterParams({\n filters: { search: '', entity: '', status: '', tier: initialTier },\n });\n\n const activeTier = (filters.tier || 'all') as ExecutionsTier;\n\n // Map tier to server-side registered filter\n const registeredFilter = activeTier === 'certified' ? 'true'\n : activeTier === 'durable' ? 'false'\n : undefined;\n\n const { data: configs } = useWorkflowConfigs();\n const { data: discoveredData } = useDiscoveredWorkflows();\n\n const tierMap = useMemo(() => {\n const map = new Map<string, WorkflowTier>();\n for (const dw of discoveredData ?? []) {\n map.set(dw.workflow_type, dw.tier ?? 'durable');\n }\n return map;\n }, [discoveredData]);\n\n const columns = buildColumns(\n (entity) => setFilter('entity', entity),\n (status) => setFilter('status', status),\n isSuperAdmin,\n navigate,\n tierMap,\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: jobsData, isLoading, refetch, isFetching } = useJobs({\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.sort_by ? sort.order : undefined,\n registered: registeredFilter,\n });\n\n const total = jobsData?.total ?? 0;\n const jobs = jobsData?.jobs ?? [];\n\n const entities = useMemo(() => {\n return [...new Set((configs ?? []).map((c) => c.workflow_type))].sort();\n }, [configs]);\n\n const pageTitle = 'Durable Executions';\n\n const emptyMessage = activeTier === 'certified'\n ? 'No certified workflow executions found'\n : activeTier === 'durable'\n ? 'No durable workflow executions found'\n : 'No workflow executions found';\n\n return (\n <div>\n <PageHeader title={pageTitle} />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/workflow-states/jobs?limit=${pagination.pageSize}&offset=${pagination.offset}${filters.entity ? `&entity=${filters.entity}` : ''}${filters.search ? `&search=${filters.search}` : ''}${filters.status ? `&status=${filters.status}` : ''}${sort.sort_by ? `&sort_by=${sort.sort_by}&order=${sort.order}` : ''}`}\n />\n }>\n <input\n type=\"text\"\n placeholder=\"Search workflow 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=\"Type\"\n value={filters.entity}\n onChange={(v) => setFilter('entity', v)}\n options={entities.map((e) => ({ value: e, label: e }))}\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 <FilterSelect\n label=\"Tier\"\n value={filters.tier === 'all' ? '' : filters.tier}\n onChange={(v) => setFilter('tier', v || 'all')}\n options={[\n { value: 'certified', label: 'Certified' },\n { value: 'durable', label: 'Durable' },\n ]}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={jobs}\n keyFn={(row) => row.workflow_id}\n onRowClick={(row) => navigate(`/workflows/executions/${row.workflow_id}`)}\n isLoading={isLoading}\n emptyMessage={emptyMessage}\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":["jobStatusMap","STATUS_DOT","STATUS_COLORS","buildColumns","onFilterEntity","onFilterStatus","isSuperAdmin","navigate","tierMap","row","dotClass","pulseClass","jsxDEV","WorkflowPill","TimestampCell","ElapsedCell","RowActionGroup","RowAction","Filter","e","Settings","WorkflowsDashboard","initialTier","useWorkflowListEvents","useNavigate","useAuth","filters","setFilter","pagination","sort","setSort","useFilterParams","activeTier","registeredFilter","configs","useWorkflowConfigs","discoveredData","useDiscoveredWorkflows","useMemo","map","dw","columns","entity","status","searchInput","setSearchInput","useState","useEffect","timer","jobsData","isLoading","refetch","isFetching","useJobs","total","jobs","entities","c","pageTitle","emptyMessage","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 u}from"./vendor-query-DLp59M9_.js";import{b as D,u as j}from"./workflows-BkzA4ahe.js";import{b as W}from"./useEventHooks-BTbGf536.js";import{P as E}from"./PageHeader-FJIemmrC.js";import{S as p}from"./StatCard-B-WLhOaH.js";import{c as O}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-CWl44VA6.js";const k=[{label:"1h",ms:36e5},{label:"24h",ms:864e5},{label:"7d",ms:6048e5},{label:"30d",ms:2592e6}];function V(o){return o<1e3?`${Math.round(o)}ms`:o<6e4?`${(o/1e3).toFixed(1)}s`:o<36e5?`${(o/6e4).toFixed(1)}m`:`${(o/36e5).toFixed(1)}h`}function w({value:o,colorClass:n,onClick:b}){return o===0?e.jsxDEV("span",{className:"text-text-tertiary",children:"0"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:49,columnNumber:12},this):e.jsxDEV("button",{onClick:b,className:`${n} hover:underline tabular-nums font-medium`,children:o},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:52,columnNumber:5},this)}function L(){W();const o=O(),[n,b]=u.useState("24h"),{data:m}=D({limit:500}),{data:h}=j(),N=u.useMemo(()=>{const s=k.find(i=>i.label===n);return Date.now()-s.ms},[n]),l=u.useMemo(()=>((m==null?void 0:m.jobs)??[]).filter(s=>new Date(s.created_at).getTime()>=N),[m==null?void 0:m.jobs,N]),v=u.useMemo(()=>{const s=new Map;for(const t of l){const r=s.get(t.entity)??{total:0,running:0,completed:0,failed:0,durations:[]};if(r.total++,t.status==="running"&&r.running++,t.status==="completed"){r.completed++;const f=new Date(t.updated_at).getTime()-new Date(t.created_at).getTime();f>0&&r.durations.push(f)}t.status==="failed"&&r.failed++,s.set(t.entity,r)}const i=[];for(const[t,r]of s)i.push({type:t,...r,avgDuration:r.durations.length>0?r.durations.reduce((f,g)=>f+g,0)/r.durations.length:null});return i.sort((t,r)=>r.total-t.total)},[l]),c=u.useMemo(()=>({total:l.length,running:l.filter(s=>s.status==="running").length,completed:l.filter(s=>s.status==="completed").length,failed:l.filter(s=>s.status==="failed").length}),[l]),x=(h==null?void 0:h.length)??0,a=(s,i)=>{const t=new URLSearchParams;s&&t.set("entity",s),i&&t.set("status",i);const r=t.toString();o(`/workflows/executions${r?`?${r}`:""}`)},d="pb-2 text-[10px] font-semibold uppercase tracking-widest text-text-tertiary";return e.jsxDEV("div",{children:[e.jsxDEV(E,{title:"Workflows",actions:e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:[x," certified type",x!==1?"s":""]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:134,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:131,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-1 mb-6",children:k.map(s=>e.jsxDEV("button",{onClick:()=>b(s.label),className:`px-3 py-1 text-xs rounded-full transition-colors ${n===s.label?"bg-accent text-text-inverse":"text-text-tertiary hover:text-text-primary hover:bg-surface-hover"}`,children:s.label},s.label,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:143,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:141,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-4 gap-4 mb-8",children:[e.jsxDEV(p,{label:"Total",value:c.total,onClick:()=>a()},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:159,columnNumber:9},this),e.jsxDEV(p,{label:"Running",value:c.running,colorClass:"text-status-active",onClick:()=>a(void 0,"running")},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:160,columnNumber:9},this),e.jsxDEV(p,{label:"Completed",value:c.completed,colorClass:"text-status-success",onClick:()=>a(void 0,"completed")},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:161,columnNumber:9},this),e.jsxDEV(p,{label:"Failed",value:c.failed,colorClass:"text-status-error",onClick:()=>a(void 0,"failed")},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:162,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:158,columnNumber:7},this),v.length>0&&e.jsxDEV("table",{className:"w-full text-left",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b border-surface-border",children:[e.jsxDEV("th",{className:d,children:"Type"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:170,columnNumber:15},this),e.jsxDEV("th",{className:`${d} text-right w-20`,children:"Total"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:171,columnNumber:15},this),e.jsxDEV("th",{className:`${d} text-right w-20`,children:"Running"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:172,columnNumber:15},this),e.jsxDEV("th",{className:`${d} text-right w-24`,children:"Completed"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:173,columnNumber:15},this),e.jsxDEV("th",{className:`${d} text-right w-20`,children:"Failed"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:174,columnNumber:15},this),e.jsxDEV("th",{className:`${d} text-right w-28`,children:"Avg Duration"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:175,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:169,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:168,columnNumber:11},this),e.jsxDEV("tbody",{children:v.map(s=>e.jsxDEV("tr",{className:"border-b border-surface-border last:border-b-0",children:[e.jsxDEV("td",{className:"py-3 text-sm font-mono text-text-primary",children:e.jsxDEV("button",{onClick:()=>a(s.type),className:"hover:text-accent hover:underline",children:s.type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:182,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:181,columnNumber:17},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(w,{value:s.total,colorClass:"text-text-secondary",onClick:()=>a(s.type)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:190,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:189,columnNumber:17},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(w,{value:s.running,colorClass:"text-status-active",onClick:()=>a(s.type,"running")},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:193,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:192,columnNumber:17},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(w,{value:s.completed,colorClass:"text-status-success",onClick:()=>a(s.type,"completed")},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:196,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:195,columnNumber:17},this),e.jsxDEV("td",{className:"py-3 text-sm text-right",children:e.jsxDEV(w,{value:s.failed,colorClass:"text-status-error",onClick:()=>a(s.type,"failed")},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:199,columnNumber:19},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:198,columnNumber:17},this),e.jsxDEV("td",{className:"py-3 text-sm font-mono text-text-secondary text-right",children:s.avgDuration!==null?V(s.avgDuration):"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:201,columnNumber:17},this)]},s.type,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:180,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:178,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:167,columnNumber:9},this),v.length===0&&e.jsxDEV("div",{className:"py-16 text-center",children:e.jsxDEV("p",{className:"text-sm text-text-tertiary",children:["No workflow activity in the last ",n]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:212,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:211,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/WorkflowsOverview.tsx",lineNumber:130,columnNumber:5},this)}export{L as WorkflowsOverview};
2
- //# sourceMappingURL=WorkflowsOverview-lBp2E6rN.js.map