@hotmeshio/long-tail 0.1.13 → 0.1.15

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 (424) hide show
  1. package/README.md +15 -0
  2. package/build/api/escalations/bulk.d.ts +78 -0
  3. package/build/api/escalations/bulk.js +279 -0
  4. package/build/api/escalations/claim.d.ts +30 -0
  5. package/build/api/escalations/claim.js +121 -0
  6. package/build/api/escalations/create.d.ts +29 -0
  7. package/build/api/escalations/create.js +101 -0
  8. package/build/api/escalations/helpers.d.ts +10 -0
  9. package/build/api/escalations/helpers.js +80 -0
  10. package/build/api/escalations/index.d.ts +6 -0
  11. package/build/api/escalations/index.js +26 -0
  12. package/build/api/escalations/list.d.ts +75 -0
  13. package/build/api/escalations/list.js +170 -0
  14. package/build/api/escalations/resolve.d.ts +18 -0
  15. package/build/api/escalations/resolve.js +243 -0
  16. package/build/api/escalations/single.d.ts +37 -0
  17. package/build/api/escalations/single.js +123 -0
  18. package/build/api/files.d.ts +16 -0
  19. package/build/api/files.js +61 -0
  20. package/build/api/knowledge.d.ts +36 -0
  21. package/build/api/knowledge.js +112 -0
  22. package/build/api/mcp/index.d.ts +2 -0
  23. package/build/api/mcp/index.js +16 -0
  24. package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
  25. package/build/api/{mcp.js → mcp/servers.js} +4 -65
  26. package/build/api/mcp/tools.d.ts +33 -0
  27. package/build/api/mcp/tools.js +64 -0
  28. package/build/api/mcp-runs.d.ts +2 -0
  29. package/build/api/mcp-runs.js +2 -0
  30. package/build/api/settings.js +9 -1
  31. package/build/api/workflow-sets.d.ts +11 -0
  32. package/build/api/workflow-sets.js +62 -0
  33. package/build/api/workflows/config.d.ts +64 -0
  34. package/build/api/workflows/config.js +142 -0
  35. package/build/api/workflows/discovery.d.ts +29 -0
  36. package/build/api/workflows/discovery.js +153 -0
  37. package/build/api/workflows/index.d.ts +3 -0
  38. package/build/api/workflows/index.js +18 -0
  39. package/build/api/workflows/invocation.d.ts +67 -0
  40. package/build/api/workflows/invocation.js +188 -0
  41. package/build/api/yaml-workflows/cron.d.ts +39 -0
  42. package/build/api/yaml-workflows/cron.js +127 -0
  43. package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -137
  44. package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +86 -358
  45. package/build/api/yaml-workflows/deploy.d.ts +71 -0
  46. package/build/api/yaml-workflows/deploy.js +223 -0
  47. package/build/api/yaml-workflows/helpers.d.ts +2 -0
  48. package/build/api/yaml-workflows/helpers.js +8 -0
  49. package/build/api/yaml-workflows/index.d.ts +4 -0
  50. package/build/api/yaml-workflows/index.js +27 -0
  51. package/build/api/yaml-workflows/versions.d.ts +43 -0
  52. package/build/api/yaml-workflows/versions.js +124 -0
  53. package/build/bin/ltc.d.ts +2 -0
  54. package/build/bin/ltc.js +220 -0
  55. package/build/examples/seed-data.d.ts +55 -0
  56. package/build/examples/seed-data.js +161 -0
  57. package/build/examples/seed.js +7 -164
  58. package/build/lib/cli/auth.d.ts +23 -0
  59. package/build/lib/cli/auth.js +167 -0
  60. package/build/lib/cli/client.d.ts +6 -0
  61. package/build/lib/cli/client.js +31 -0
  62. package/build/lib/cli/commands/escalations.d.ts +19 -0
  63. package/build/lib/cli/commands/escalations.js +69 -0
  64. package/build/lib/cli/commands/knowledge.d.ts +18 -0
  65. package/build/lib/cli/commands/knowledge.js +87 -0
  66. package/build/lib/cli/commands/mcp.d.ts +8 -0
  67. package/build/lib/cli/commands/mcp.js +33 -0
  68. package/build/lib/cli/commands/pipelines.d.ts +16 -0
  69. package/build/lib/cli/commands/pipelines.js +67 -0
  70. package/build/lib/cli/commands/status.d.ts +1 -0
  71. package/build/lib/cli/commands/status.js +28 -0
  72. package/build/lib/cli/commands/users.d.ts +7 -0
  73. package/build/lib/cli/commands/users.js +25 -0
  74. package/build/lib/cli/commands/workflows.d.ts +16 -0
  75. package/build/lib/cli/commands/workflows.js +104 -0
  76. package/build/lib/cli/compile.d.ts +2 -0
  77. package/build/lib/cli/compile.js +165 -0
  78. package/build/lib/cli/format.d.ts +23 -0
  79. package/build/lib/cli/format.js +94 -0
  80. package/build/lib/cli/init.d.ts +1 -0
  81. package/build/lib/cli/init.js +61 -0
  82. package/build/lib/cli/output.d.ts +27 -0
  83. package/build/lib/cli/output.js +126 -0
  84. package/build/lib/cli/scanner.d.ts +10 -0
  85. package/build/lib/cli/scanner.js +164 -0
  86. package/build/lib/cli/types.d.ts +16 -0
  87. package/build/lib/cli/types.js +2 -0
  88. package/build/lib/logger/index.d.ts +0 -9
  89. package/build/lib/logger/index.js +9 -4
  90. package/build/lib/storage/index.js +2 -2
  91. package/build/lib/storage/local.d.ts +15 -0
  92. package/build/lib/storage/local.js +63 -0
  93. package/build/lib/storage/mime.d.ts +4 -0
  94. package/build/lib/storage/mime.js +31 -0
  95. package/build/lib/storage/s3.d.ts +16 -0
  96. package/build/lib/storage/s3.js +70 -0
  97. package/build/lib/storage/types.d.ts +18 -0
  98. package/build/modules/utils.d.ts +73 -0
  99. package/build/modules/utils.js +84 -0
  100. package/build/routes/file-browser.d.ts +2 -0
  101. package/build/routes/file-browser.js +126 -0
  102. package/build/routes/files.js +25 -17
  103. package/build/routes/index.js +4 -0
  104. package/build/routes/knowledge.d.ts +2 -0
  105. package/build/routes/knowledge.js +141 -0
  106. package/build/routes/mcp-runs.js +2 -0
  107. package/build/routes/workflow-sets.js +9 -0
  108. package/build/routes/yaml-workflows/crud.js +9 -0
  109. package/build/routes/yaml-workflows/deployment.js +8 -0
  110. package/build/sdk/index.d.ts +17 -0
  111. package/build/sdk/index.js +19 -0
  112. package/build/services/insight/index.d.ts +13 -0
  113. package/build/services/insight/index.js +4 -7
  114. package/build/services/insight/prompts.d.ts +1 -1
  115. package/build/services/insight/prompts.js +1 -1
  116. package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
  117. package/build/services/mcp/client/connection-dispatch.js +78 -0
  118. package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
  119. package/build/services/mcp/client/connection-lifecycle.js +296 -0
  120. package/build/services/mcp/client/connection-test.d.ts +10 -0
  121. package/build/services/mcp/client/connection-test.js +49 -0
  122. package/build/services/mcp/client/connection.d.ts +3 -68
  123. package/build/services/mcp/client/connection.js +15 -393
  124. package/build/services/mcp/server-lifecycle.d.ts +27 -0
  125. package/build/services/mcp/server-lifecycle.js +49 -0
  126. package/build/services/mcp/server-tools.d.ts +13 -0
  127. package/build/services/mcp/server-tools.js +287 -0
  128. package/build/services/mcp/server.d.ts +2 -26
  129. package/build/services/mcp/server.js +7 -315
  130. package/build/services/mcp-runs/queries.d.ts +2 -0
  131. package/build/services/mcp-runs/queries.js +11 -1
  132. package/build/services/mcp-runs/sql.d.ts +1 -1
  133. package/build/services/mcp-runs/sql.js +2 -2
  134. package/build/services/workflow-sets/db.d.ts +1 -0
  135. package/build/services/workflow-sets/db.js +6 -0
  136. package/build/services/workflow-sets/index.d.ts +1 -1
  137. package/build/services/workflow-sets/index.js +2 -1
  138. package/build/services/workflow-sets/sql.d.ts +1 -0
  139. package/build/services/workflow-sets/sql.js +6 -1
  140. package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
  141. package/build/services/yaml-workflow/builder-regenerate.js +111 -0
  142. package/build/services/yaml-workflow/db-versions.d.ts +17 -0
  143. package/build/services/yaml-workflow/db-versions.js +76 -0
  144. package/build/services/yaml-workflow/db.d.ts +14 -12
  145. package/build/services/yaml-workflow/db.js +32 -70
  146. package/build/services/yaml-workflow/deployer-helpers.js +48 -17
  147. package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
  148. package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
  149. package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
  150. package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
  151. package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
  152. package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
  153. package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
  154. package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
  155. package/build/services/yaml-workflow/generator.js +4 -4
  156. package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
  157. package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
  158. package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
  159. package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
  160. package/build/services/yaml-workflow/pipeline/build/index.d.ts +2 -1
  161. package/build/services/yaml-workflow/pipeline/build/index.js +3 -2
  162. package/build/services/yaml-workflow/pipeline/build/utils.d.ts +0 -2
  163. package/build/services/yaml-workflow/pipeline/build/utils.js +0 -8
  164. package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
  165. package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
  166. package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
  167. package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
  168. package/build/services/yaml-workflow/sql.d.ts +2 -1
  169. package/build/services/yaml-workflow/sql.js +10 -3
  170. package/build/start/workers.js +6 -5
  171. package/build/system/activities/file-storage.d.ts +4 -0
  172. package/build/system/activities/file-storage.js +7 -1
  173. package/build/system/activities/knowledge.d.ts +23 -0
  174. package/build/system/activities/knowledge.js +50 -10
  175. package/build/system/activities/schema-exchange.d.ts +50 -0
  176. package/build/system/activities/schema-exchange.js +210 -0
  177. package/build/system/activities/sql.d.ts +4 -1
  178. package/build/system/activities/sql.js +37 -2
  179. package/build/system/index.js +1 -0
  180. package/build/system/mcp-servers/file-storage.js +3 -1
  181. package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
  182. package/build/system/mcp-servers/human-queue-schemas.js +42 -0
  183. package/build/system/mcp-servers/human-queue.d.ts +2 -6
  184. package/build/system/mcp-servers/human-queue.js +9 -51
  185. package/build/system/mcp-servers/knowledge.js +69 -6
  186. package/build/system/mcp-servers/schema-exchange.d.ts +4 -0
  187. package/build/system/mcp-servers/schema-exchange.js +93 -0
  188. package/build/system/mcp-servers/workflow-compiler.js +54 -0
  189. package/build/system/seed/server-definitions.d.ts +112 -1
  190. package/build/system/seed/server-definitions.js +37 -0
  191. package/build/system/seed/tool-manifests-data.d.ts +87 -0
  192. package/build/system/seed/tool-manifests-data.js +37 -1
  193. package/build/system/seed/tool-manifests-knowledge.d.ts +9 -1
  194. package/build/system/seed/tool-manifests-knowledge.js +6 -5
  195. package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
  196. package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
  197. package/build/system/workflows/mcp-triage/index.js +17 -75
  198. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +1 -1
  199. package/build/system/workflows/mcp-workflow-builder/prompts.js +21 -20
  200. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +2 -1
  201. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +4 -3
  202. package/build/system/workflows/mcp-workflow-planner/index.js +41 -5
  203. package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +1 -1
  204. package/build/system/workflows/mcp-workflow-planner/prompts.js +3 -3
  205. package/build/tsconfig.tsbuildinfo +1 -1
  206. package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js → AdminDashboard-NLryl1_B.js} +2 -2
  207. package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js.map → AdminDashboard-NLryl1_B.js.map} +1 -1
  208. package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js +2 -0
  209. package/dashboard/dist/assets/AvailableEscalationsPage-6vexlrk3.js.map +1 -0
  210. package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js → BotPicker-DWhn0tr1.js} +2 -2
  211. package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js.map → BotPicker-DWhn0tr1.js.map} +1 -1
  212. package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js → CollapsibleSection-CgYgQiOc.js} +2 -2
  213. package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js.map → CollapsibleSection-CgYgQiOc.js.map} +1 -1
  214. package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js → ConfirmDeleteModal-DCKAPXD3.js} +2 -2
  215. package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js.map → ConfirmDeleteModal-DCKAPXD3.js.map} +1 -1
  216. package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js → CopyableId-DXkaAOYk.js} +2 -2
  217. package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js.map → CopyableId-DXkaAOYk.js.map} +1 -1
  218. package/dashboard/dist/assets/CredentialsPage-B361BOfU.js +2 -0
  219. package/dashboard/dist/assets/{CredentialsPage-DJablIbs.js.map → CredentialsPage-B361BOfU.js.map} +1 -1
  220. package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js → CustomDurationPicker-D2G1ldiF.js} +2 -2
  221. package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js.map → CustomDurationPicker-D2G1ldiF.js.map} +1 -1
  222. package/dashboard/dist/assets/{DataTable-CTRhTAfT.js → DataTable-DXSUbA26.js} +2 -2
  223. package/dashboard/dist/assets/{DataTable-CTRhTAfT.js.map → DataTable-DXSUbA26.js.map} +1 -1
  224. package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js → ElapsedCell-CQGqkXP_.js} +2 -2
  225. package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js.map → ElapsedCell-CQGqkXP_.js.map} +1 -1
  226. package/dashboard/dist/assets/{EmptyState-joNbd4gg.js → EmptyState-Dep92Wkg.js} +2 -2
  227. package/dashboard/dist/assets/{EmptyState-joNbd4gg.js.map → EmptyState-Dep92Wkg.js.map} +1 -1
  228. package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js → EscalationsOverview-DVEFVjs7.js} +2 -2
  229. package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js.map → EscalationsOverview-DVEFVjs7.js.map} +1 -1
  230. package/dashboard/dist/assets/{EventTable-CYem3v8n.js → EventTable-BMJAPkMi.js} +2 -2
  231. package/dashboard/dist/assets/{EventTable-CYem3v8n.js.map → EventTable-BMJAPkMi.js.map} +1 -1
  232. package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js → FilterBar-DbVbCzH2.js} +2 -2
  233. package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js.map → FilterBar-DbVbCzH2.js.map} +1 -1
  234. package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js → ListToolbar-0XNuXj0M.js} +2 -2
  235. package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js.map → ListToolbar-0XNuXj0M.js.map} +1 -1
  236. package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js → McpOverview-CeYnCzBN.js} +2 -2
  237. package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js.map → McpOverview-CeYnCzBN.js.map} +1 -1
  238. package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js +5 -0
  239. package/dashboard/dist/assets/McpQueryDetailPage-t3qW3QNa.js.map +1 -0
  240. package/dashboard/dist/assets/McpQueryPage-CfUcdzaj.js +2 -0
  241. package/dashboard/dist/assets/{McpQueryPage-lV6kfDG5.js.map → McpQueryPage-CfUcdzaj.js.map} +1 -1
  242. package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js +2 -0
  243. package/dashboard/dist/assets/McpRunDetailPage-CZtodW_Z.js.map +1 -0
  244. package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js +2 -0
  245. package/dashboard/dist/assets/McpRunsPage-Dzgq7HGt.js.map +1 -0
  246. package/dashboard/dist/assets/{Modal-BuTvD0pz.js → Modal-yyhUeKoA.js} +2 -2
  247. package/dashboard/dist/assets/{Modal-BuTvD0pz.js.map → Modal-yyhUeKoA.js.map} +1 -1
  248. package/dashboard/dist/assets/OperatorDashboard-Ceh7OQtZ.js +2 -0
  249. package/dashboard/dist/assets/{OperatorDashboard-C9SSV96T.js.map → OperatorDashboard-Ceh7OQtZ.js.map} +1 -1
  250. package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js → PageHeader-CZ9a8cpr.js} +2 -2
  251. package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js.map → PageHeader-CZ9a8cpr.js.map} +1 -1
  252. package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js → PageHeaderWithStats-BJuNs5NM.js} +2 -2
  253. package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js.map → PageHeaderWithStats-BJuNs5NM.js.map} +1 -1
  254. package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js → PriorityBadge-BrPikMFy.js} +2 -2
  255. package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js.map → PriorityBadge-BrPikMFy.js.map} +1 -1
  256. package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js → ProcessDetailPage-2miaYd8G.js} +2 -2
  257. package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js.map → ProcessDetailPage-2miaYd8G.js.map} +1 -1
  258. package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js → ProcessesListPage-DqpRDqjk.js} +2 -2
  259. package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js.map → ProcessesListPage-DqpRDqjk.js.map} +1 -1
  260. package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js → RolePill-DxbJMfJu.js} +2 -2
  261. package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js.map → RolePill-DxbJMfJu.js.map} +1 -1
  262. package/dashboard/dist/assets/{RolesPage-SMedMuqa.js → RolesPage-CYHRo21-.js} +2 -2
  263. package/dashboard/dist/assets/{RolesPage-SMedMuqa.js.map → RolesPage-CYHRo21-.js.map} +1 -1
  264. package/dashboard/dist/assets/{RowActions-yDhwwDbU.js → RowActions-DurFwIwe.js} +2 -2
  265. package/dashboard/dist/assets/{RowActions-yDhwwDbU.js.map → RowActions-DurFwIwe.js.map} +1 -1
  266. package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js +2 -0
  267. package/dashboard/dist/assets/RunAsSelector-CNKraP6u.js.map +1 -0
  268. package/dashboard/dist/assets/{StatCard-BrBnQFxh.js → StatCard-CKplpK3w.js} +2 -2
  269. package/dashboard/dist/assets/{StatCard-BrBnQFxh.js.map → StatCard-CKplpK3w.js.map} +1 -1
  270. package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js → StatusBadge-Dm0V1dNN.js} +2 -2
  271. package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js.map → StatusBadge-Dm0V1dNN.js.map} +1 -1
  272. package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js → StepIndicator-Dicx0WTZ.js} +2 -2
  273. package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js.map → StepIndicator-Dicx0WTZ.js.map} +1 -1
  274. package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js → StickyPagination-B2jYvU3-.js} +2 -2
  275. package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js.map → StickyPagination-B2jYvU3-.js.map} +1 -1
  276. package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js +2 -0
  277. package/dashboard/dist/assets/SwimlaneTimeline-ClwumkT1.js.map +1 -0
  278. package/dashboard/dist/assets/{TagInput-CdNUuqk4.js → TagInput-CypDZ6Kl.js} +2 -2
  279. package/dashboard/dist/assets/{TagInput-CdNUuqk4.js.map → TagInput-CypDZ6Kl.js.map} +1 -1
  280. package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js → TaskDetailPage-DooDNJGT.js} +2 -2
  281. package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js.map → TaskDetailPage-DooDNJGT.js.map} +1 -1
  282. package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js → TaskQueuePill-C1hZ-j31.js} +2 -2
  283. package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js.map → TaskQueuePill-C1hZ-j31.js.map} +1 -1
  284. package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js → TasksListPage-D7CdkAeg.js} +2 -2
  285. package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js.map → TasksListPage-D7CdkAeg.js.map} +1 -1
  286. package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js → TimeAgo-B5LXB2aj.js} +2 -2
  287. package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js.map → TimeAgo-B5LXB2aj.js.map} +1 -1
  288. package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js → TimestampCell-Crb9b0Gw.js} +2 -2
  289. package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js.map → TimestampCell-Crb9b0Gw.js.map} +1 -1
  290. package/dashboard/dist/assets/{UserName-DyZMXcBm.js → UserName-OPg-nkRa.js} +2 -2
  291. package/dashboard/dist/assets/{UserName-DyZMXcBm.js.map → UserName-OPg-nkRa.js.map} +1 -1
  292. package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js → WorkflowExecutionPage-CcLVrs9b.js} +2 -2
  293. package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js.map → WorkflowExecutionPage-CcLVrs9b.js.map} +1 -1
  294. package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js +2 -0
  295. package/dashboard/dist/assets/WorkflowPill-CCV4MMj7.js.map +1 -0
  296. package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js → WorkflowsDashboard-DB1SncBi.js} +2 -2
  297. package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js.map → WorkflowsDashboard-DB1SncBi.js.map} +1 -1
  298. package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js → WorkflowsOverview-DvShiYJV.js} +2 -2
  299. package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js.map → WorkflowsOverview-DvShiYJV.js.map} +1 -1
  300. package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js +2 -0
  301. package/dashboard/dist/assets/YamlWorkflowsPage-DCBoMeGI.js.map +1 -0
  302. package/dashboard/dist/assets/{bots-DIM6lBoY.js → bots-Dqos20NE.js} +2 -2
  303. package/dashboard/dist/assets/{bots-DIM6lBoY.js.map → bots-Dqos20NE.js.map} +1 -1
  304. package/dashboard/dist/assets/{escalation-JOTuOqjq.js → escalation-A0CsbvNV.js} +2 -2
  305. package/dashboard/dist/assets/{escalation-JOTuOqjq.js.map → escalation-A0CsbvNV.js.map} +1 -1
  306. package/dashboard/dist/assets/escalation-columns-BpBJN6k4.js +2 -0
  307. package/dashboard/dist/assets/{escalation-columns-Cyg58nkg.js.map → escalation-columns-BpBJN6k4.js.map} +1 -1
  308. package/dashboard/dist/assets/{helpers-B1BDxBZd.js → helpers-CmznCuAx.js} +2 -2
  309. package/dashboard/dist/assets/{helpers-B1BDxBZd.js.map → helpers-CmznCuAx.js.map} +1 -1
  310. package/dashboard/dist/assets/index-BIeYV5QK.js +2 -0
  311. package/dashboard/dist/assets/index-BIeYV5QK.js.map +1 -0
  312. package/dashboard/dist/assets/index-BYwD3kHN.js +5 -0
  313. package/dashboard/dist/assets/index-BYwD3kHN.js.map +1 -0
  314. package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
  315. package/dashboard/dist/assets/index-C8-UaN4N.js +2 -0
  316. package/dashboard/dist/assets/{index-Cg5nfiYX.js.map → index-C8-UaN4N.js.map} +1 -1
  317. package/dashboard/dist/assets/index-CAj5LT9H.js +15 -0
  318. package/dashboard/dist/assets/index-CAj5LT9H.js.map +1 -0
  319. package/dashboard/dist/assets/index-CjxHCVxl.js +2 -0
  320. package/dashboard/dist/assets/{index-Cf60K3x9.js.map → index-CjxHCVxl.js.map} +1 -1
  321. package/dashboard/dist/assets/index-Cr0Rqsj7.js +2 -0
  322. package/dashboard/dist/assets/index-Cr0Rqsj7.js.map +1 -0
  323. package/dashboard/dist/assets/index-DZHNte4o.js +2 -0
  324. package/dashboard/dist/assets/{index-Di12t56M.js.map → index-DZHNte4o.js.map} +1 -1
  325. package/dashboard/dist/assets/{index-Ds0JoXS2.js → index-VnYkWW8r.js} +2 -2
  326. package/dashboard/dist/assets/{index-Ds0JoXS2.js.map → index-VnYkWW8r.js.map} +1 -1
  327. package/dashboard/dist/assets/{index-BcR6PfpY.js → index-XGOmZ117.js} +2 -2
  328. package/dashboard/dist/assets/{index-BcR6PfpY.js.map → index-XGOmZ117.js.map} +1 -1
  329. package/dashboard/dist/assets/index-ZjOUzWhc.js +2 -0
  330. package/dashboard/dist/assets/index-ZjOUzWhc.js.map +1 -0
  331. package/dashboard/dist/assets/{index-BYZX9tOb.js → index-puKKZ5l8.js} +77 -77
  332. package/dashboard/dist/assets/index-puKKZ5l8.js.map +1 -0
  333. package/dashboard/dist/assets/{index-BizfauqT.js → index-t5frSddy.js} +4 -4
  334. package/dashboard/dist/assets/{index-BizfauqT.js.map → index-t5frSddy.js.map} +1 -1
  335. package/dashboard/dist/assets/{mcp-B_xbczAt.js → mcp-DrWymhSu.js} +2 -2
  336. package/dashboard/dist/assets/{mcp-B_xbczAt.js.map → mcp-DrWymhSu.js.map} +1 -1
  337. package/dashboard/dist/assets/mcp-query-BhUxVEMS.js +2 -0
  338. package/dashboard/dist/assets/mcp-query-BhUxVEMS.js.map +1 -0
  339. package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js +2 -0
  340. package/dashboard/dist/assets/mcp-runs-DUfz4mLd.js.map +1 -0
  341. package/dashboard/dist/assets/{namespaces-C3WtdO_9.js → namespaces-Cm6AY5sh.js} +2 -2
  342. package/dashboard/dist/assets/{namespaces-C3WtdO_9.js.map → namespaces-Cm6AY5sh.js.map} +1 -1
  343. package/dashboard/dist/assets/{roles-BDAsPpZG.js → roles-2v1Kc7BJ.js} +2 -2
  344. package/dashboard/dist/assets/{roles-BDAsPpZG.js.map → roles-2v1Kc7BJ.js.map} +1 -1
  345. package/dashboard/dist/assets/{settings-Ife_UwAp.js → settings-DTQNp6tH.js} +2 -2
  346. package/dashboard/dist/assets/{settings-Ife_UwAp.js.map → settings-DTQNp6tH.js.map} +1 -1
  347. package/dashboard/dist/assets/{tasks-BquNDHDI.js → tasks-CS1rgG1s.js} +2 -2
  348. package/dashboard/dist/assets/{tasks-BquNDHDI.js.map → tasks-CS1rgG1s.js.map} +1 -1
  349. package/dashboard/dist/assets/useEventHooks-BjXX8x3a.js +2 -0
  350. package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js.map → useEventHooks-BjXX8x3a.js.map} +1 -1
  351. package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js +2 -0
  352. package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js.map +1 -0
  353. package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js +2 -0
  354. package/dashboard/dist/assets/useYamlActivityEvents-BeR-nVWQ.js.map +1 -0
  355. package/dashboard/dist/assets/{users-CFcxB4v6.js → users-DYsdQ7Md.js} +2 -2
  356. package/dashboard/dist/assets/{users-CFcxB4v6.js.map → users-DYsdQ7Md.js.map} +1 -1
  357. package/dashboard/dist/assets/{vendor-icons-T4r2DSPD.js → vendor-icons-CWl44VA6.js} +132 -82
  358. package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
  359. package/dashboard/dist/assets/{workflows-CeRci9z3.js → workflows-2QAXh3UD.js} +2 -2
  360. package/dashboard/dist/assets/{workflows-CeRci9z3.js.map → workflows-2QAXh3UD.js.map} +1 -1
  361. package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js +2 -0
  362. package/dashboard/dist/assets/yaml-workflows-sx8-UEE3.js.map +1 -0
  363. package/dashboard/dist/index.html +3 -3
  364. package/docs/api/http/file-browser.md +101 -0
  365. package/docs/api/http/knowledge.md +203 -0
  366. package/docs/api/http/settings.md +6 -4
  367. package/docs/api/sdk/files.md +68 -0
  368. package/docs/api/sdk/knowledge.md +126 -0
  369. package/docs/api/sdk/settings.md +3 -2
  370. package/docs/cli.md +171 -0
  371. package/docs/compilation.md +16 -0
  372. package/docs/compiler.md +311 -0
  373. package/docs/events.md +19 -0
  374. package/docs/schema-exchange.md +173 -0
  375. package/docs/self-test.md +106 -0
  376. package/docs/workflows.md +19 -0
  377. package/package.json +15 -2
  378. package/build/api/escalations.d.ts +0 -271
  379. package/build/api/escalations.js +0 -932
  380. package/build/api/workflows.d.ts +0 -158
  381. package/build/api/workflows.js +0 -414
  382. package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js +0 -2
  383. package/dashboard/dist/assets/AvailableEscalationsPage-Dbd1qUK_.js.map +0 -1
  384. package/dashboard/dist/assets/CredentialsPage-DJablIbs.js +0 -2
  385. package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js +0 -5
  386. package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js.map +0 -1
  387. package/dashboard/dist/assets/McpQueryPage-lV6kfDG5.js +0 -2
  388. package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js +0 -2
  389. package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js.map +0 -1
  390. package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js +0 -2
  391. package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js.map +0 -1
  392. package/dashboard/dist/assets/OperatorDashboard-C9SSV96T.js +0 -2
  393. package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js +0 -2
  394. package/dashboard/dist/assets/SwimlaneTimeline-RK4Yu66z.js.map +0 -1
  395. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +0 -2
  396. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +0 -1
  397. package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js +0 -2
  398. package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js.map +0 -1
  399. package/dashboard/dist/assets/escalation-columns-Cyg58nkg.js +0 -2
  400. package/dashboard/dist/assets/helpers-BCix9c_m.js +0 -2
  401. package/dashboard/dist/assets/helpers-BCix9c_m.js.map +0 -1
  402. package/dashboard/dist/assets/index-BUK3qR-1.js +0 -2
  403. package/dashboard/dist/assets/index-BUK3qR-1.js.map +0 -1
  404. package/dashboard/dist/assets/index-BYZX9tOb.js.map +0 -1
  405. package/dashboard/dist/assets/index-Cf60K3x9.js +0 -2
  406. package/dashboard/dist/assets/index-Cg5nfiYX.js +0 -2
  407. package/dashboard/dist/assets/index-D1wVX50Z.js +0 -15
  408. package/dashboard/dist/assets/index-D1wVX50Z.js.map +0 -1
  409. package/dashboard/dist/assets/index-DDYFpi4l.js +0 -5
  410. package/dashboard/dist/assets/index-DDYFpi4l.js.map +0 -1
  411. package/dashboard/dist/assets/index-DcIKW-cZ.css +0 -1
  412. package/dashboard/dist/assets/index-Di12t56M.js +0 -2
  413. package/dashboard/dist/assets/mcp-query-B8-P_QoG.js +0 -2
  414. package/dashboard/dist/assets/mcp-query-B8-P_QoG.js.map +0 -1
  415. package/dashboard/dist/assets/mcp-runs-CWeZinoF.js +0 -2
  416. package/dashboard/dist/assets/mcp-runs-CWeZinoF.js.map +0 -1
  417. package/dashboard/dist/assets/useEventHooks-anv_B2Yy.js +0 -2
  418. package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js +0 -2
  419. package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js.map +0 -1
  420. package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js +0 -2
  421. package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js.map +0 -1
  422. package/dashboard/dist/assets/vendor-icons-T4r2DSPD.js.map +0 -1
  423. package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js +0 -2
  424. package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-BYZX9tOb.js";import{P as v}from"./PageHeader-BcTVF9ul.js";import{D as P}from"./DataTable-CTRhTAfT.js";import{F as k,b as N}from"./FilterBar-BiO8SOzc.js";import{S as w}from"./StickyPagination-DTIjBKN3.js";import{L as D}from"./ListToolbar-6yRDh2e9.js";import{T as f}from"./TimestampCell-QX_0i5FK.js";import{E as M}from"./ElapsedCell-HcSJ_MMs.js";import{W as E}from"./WorkflowPill-CZqGslD6.js";import{E as Q}from"./EmptyState-joNbd4gg.js";import{R as c}from"./RowActions-yDhwwDbU.js";import{u as j}from"./useFilterParams-BUyLHcx_.js";import{b as V}from"./useEventHooks-anv_B2Yy.js";import{u as _}from"./mcp-query-B8-P_QoG.js";import{c as C,o as $,p as h,q as g,S as W,r as S}from"./vendor-icons-T4r2DSPD.js";import{c as T}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";const q={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"};function m(t){return t.status==="completed"||Number(t.status)===0?"completed":t.is_live?"in_progress":"failed"}function B(t){return[{key:"workflow_id",label:"Workflow ID / Type",render:s=>{const a=m(s),r=q[a]??"bg-status-pending",l=a==="in_progress"?" animate-pulse":"";return e.jsxDEV("div",{className:"flex items-start gap-2 min-w-0",children:[e.jsxDEV("span",{className:`w-[9px] h-[9px] shrink-0 rounded-full mt-1 ${r}${l}`,title:a},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:43,columnNumber:13},this),e.jsxDEV("div",{className:"min-w-0",children:[e.jsxDEV("span",{className:"font-mono text-xs text-text-primary truncate block",children:s.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:45,columnNumber:15},this),e.jsxDEV("div",{className:"mt-0.5",children:e.jsxDEV(E,{type:s.entity||"unknown"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:49,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:48,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:44,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:42,columnNumber:11},this)}},{key:"created_at",label:"Created",render:s=>e.jsxDEV(f,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:59,columnNumber:24},this),className:"w-40",sortable:!0},{key:"updated_at",label:"Updated",render:s=>e.jsxDEV(f,{date:s.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:66,columnNumber:24},this),className:"w-40",sortable:!0},{key:"duration",label:"Duration",render:s=>{const a=m(s);return e.jsxDEV(M,{startDate:s.created_at,endDate:a==="in_progress"?null:s.updated_at,isLive:a==="in_progress"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:76,columnNumber:11},this)},className:"w-28"},{key:"actions",label:"",className:"w-28",render:s=>{const r=m(s)==="completed",l=s.entity==="mcpWorkflowBuilder";if(s.entity==="mcpWorkflowPlanner"){const i=s.set_id?`/mcp/queries/${s.workflow_id}?mode=plan&set_id=${s.set_id}`:`/mcp/queries/${s.workflow_id}?mode=plan`;return e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:p=>{p.stopPropagation(),t(`${i}&step=1`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all",title:"Plan",children:e.jsxDEV($,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:106,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:101,columnNumber:15},this),e.jsxDEV("button",{onClick:p=>{p.stopPropagation(),t(`${i}&step=2`)},className:`opacity-0 group-hover/row:opacity-100 transition-all ${r?"text-text-tertiary hover:text-status-success":"text-text-tertiary/30 cursor-not-allowed"}`,title:r?"Build":"Planning...",disabled:!r,children:e.jsxDEV(h,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:114,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:108,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:100,columnNumber:13},this)}return l?e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/mcp/queries/${s.workflow_id}?mode=builder&step=1`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all",title:"Describe",children:e.jsxDEV(g,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:128,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:123,columnNumber:15},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/mcp/queries/${s.workflow_id}?mode=builder&step=2`)},className:`opacity-0 group-hover/row:opacity-100 transition-all ${r?"text-text-tertiary hover:text-status-success":"text-text-tertiary/30 cursor-not-allowed"}`,title:r?"Profile":"Building...",disabled:!r,children:e.jsxDEV(W,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:136,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:130,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:122,columnNumber:13},this):e.jsxDEV(c,{children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/mcp/queries/${s.workflow_id}?step=1`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-accent transition-all",title:"Describe",children:e.jsxDEV(g,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:149,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:144,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/mcp/queries/${s.workflow_id}?step=2`)},className:"opacity-0 group-hover/row:opacity-100 text-text-tertiary hover:text-status-warning transition-all",title:"Discover",children:e.jsxDEV(S,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:156,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:151,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/mcp/queries/${s.workflow_id}?step=3`)},className:`opacity-0 group-hover/row:opacity-100 transition-all ${r?"text-text-tertiary hover:text-status-success":"text-text-tertiary/30 cursor-not-allowed"}`,title:r?"Compile":"Complete discovery first",disabled:!r,children:e.jsxDEV(h,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:164,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:143,columnNumber:11},this)}}]}function ae(){const t=T(),s=B(t),{filters:a,setFilter:r,pagination:l,sort:u,setSort:i}=j({filters:{search:"",status:"",type:""},pageSize:20}),{data:p,isLoading:n,refetch:x}=_({limit:l.pageSize,offset:l.offset,search:a.search,status:a.status,entity:a.type||void 0});V();const d=(p==null?void 0:p.jobs)??[],b=(p==null?void 0:p.total)??0;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(v,{title:"MCP Tool Designer",actions:e.jsxDEV("button",{onClick:()=>t("/mcp/queries/new"),className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(C,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:204,columnNumber:13},this),"Create New MCP Tool"]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:200,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:197,columnNumber:7},this),e.jsxDEV(k,{actions:e.jsxDEV(D,{onRefresh:()=>x(),apiPath:`/workflow-states/jobs?entity=${a.type||"mcpQuery,mcpTriage,mcpWorkflowBuilder,mcpWorkflowPlanner"}&limit=${l.pageSize}&offset=${l.offset}&sort_by=created_at&order=desc${a.status?`&status=${a.status}`:""}${a.search?`&search=${a.search}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:211,columnNumber:9},this),children:[e.jsxDEV(N,{label:"Type",value:a.type,onChange:o=>r("type",o),options:[{value:"mcpQuery",label:"Discovery"},{value:"mcpWorkflowBuilder",label:"Direct Build"},{value:"mcpWorkflowPlanner",label:"Plan Build"},{value:"mcpTriage",label:"Triage"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:216,columnNumber:11},this),e.jsxDEV(N,{label:"Status",value:a.status,onChange:o=>r("status",o),options:[{value:"completed",label:"Completed"},{value:"running",label:"Running"},{value:"failed",label:"Failed"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:227,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:210,columnNumber:7},this),e.jsxDEV(P,{columns:s,data:d,keyFn:o=>o.workflow_id,onRowClick:o=>{if(o.entity==="mcpWorkflowPlanner"){const y=o.set_id?`/mcp/queries/${o.workflow_id}?mode=plan&set_id=${o.set_id}`:`/mcp/queries/${o.workflow_id}?mode=plan`;t(y)}else o.entity==="mcpWorkflowBuilder"?t(`/mcp/queries/${o.workflow_id}?mode=builder`):t(`/mcp/queries/${o.workflow_id}`)},isLoading:n,emptyMessage:"",sort:u,onSort:i},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:239,columnNumber:7},this),!n&&d.length===0&&e.jsxDEV(Q,{title:"No tool designs yet",description:'Click "Create New MCP Tool" to start'},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:262,columnNumber:9},this),e.jsxDEV(w,{page:l.page,pageSize:l.pageSize,total:b,totalPages:l.totalPages(b),onPageChange:l.setPage},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:265,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:196,columnNumber:5},this)}export{ae as McpQueryPage};
2
- //# sourceMappingURL=McpQueryPage-lV6kfDG5.js.map
@@ -1,2 +0,0 @@
1
- import{u as _,j as e,D as S,c as E,J as P,N as T}from"./index-BYZX9tOb.js";import{b as k,a as C}from"./vendor-query-DLp59M9_.js";import{b as I}from"./mcp-runs-CWeZinoF.js";import{u as K}from"./settings-Ife_UwAp.js";import{S as U}from"./StatusBadge-xgb-lZku.js";import{P as R}from"./PageHeader-BcTVF9ul.js";import{C as $}from"./CopyableId-cPFTRm8q.js";import{C as N}from"./CollapsibleSection-Kd9UIyeU.js";import{u as J,E as L}from"./EventTable-CYem3v8n.js";import{L as q}from"./ListToolbar-6yRDh2e9.js";import{S as B}from"./SwimlaneTimeline-RK4Yu66z.js";import{e as F,f as H}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-T4r2DSPD.js";import"./FilterBar-BiO8SOzc.js";const Q={running:"in_progress",completed:"completed",failed:"failed"};function re(){var f,D;const{jobId:t}=F(),[p]=H(),r=p.get("namespace")||"longtail",x=k(),{data:a,isLoading:j,error:i,refetch:M,isFetching:V}=I(t,r),{data:n}=K(),{isCollapsed:u,toggle:o}=J("mcp-run-detail"),h=((f=n==null?void 0:n.telemetry)==null?void 0:f.traceUrl)??null,y=C.useCallback(c=>{!t||c.workflowId!==t||x.invalidateQueries({queryKey:["mcpRunExecution",t]})},[t,x]);if(_(`${T}.activity.>`,y),j)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-64"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:53,columnNumber:9},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:52,columnNumber:7},this);if(i||!a)return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:62,columnNumber:9},this),e.jsxDEV("div",{className:"mt-4 text-center py-8",children:[e.jsxDEV("p",{className:"text-sm text-text-primary mb-1",children:(D=i==null?void 0:i.message)!=null&&D.includes("expired")?"Execution data is no longer available":"Unable to load execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:64,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:(i==null?void 0:i.message)??"The run could not be resolved."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:61,columnNumber:7},this);const{events:d,summary:s}=a,b=d.find(c=>{var v;return c.category==="activity"&&((v=c.attributes.kind)==null?void 0:v.includes("completed"))}),w=(b==null?void 0:b.attributes.result)??null,m=a.result,g=(m==null?void 0:m.data)??m??null;return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution",actions:e.jsxDEV(q,{onRefresh:()=>M(),isFetching:V,apiPath:`/mcp-runs/${t}/execution?app_id=${r}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:95,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:92,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-raised border border-surface-border rounded-md p-5 mb-8",children:[e.jsxDEV("div",{className:"flex items-center gap-4 mb-4",children:[e.jsxDEV("h2",{className:"text-sm font-mono text-text-primary truncate flex-1",children:a.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:107,columnNumber:11},this),e.jsxDEV(U,{status:Q[a.status]??a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:108,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:106,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-5 gap-x-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Tool Server"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:114,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:r},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:115,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:113,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Pipeline Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:118,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-primary truncate",children:a.workflow_type||"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:119,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:117,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Duration"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:122,columnNumber:13},this),e.jsxDEV(S,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:123,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:121,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Started"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:126,columnNumber:13},this),a.start_time?e.jsxDEV(E,{date:a.start_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:128,columnNumber:17},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:129,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:125,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:"Completed"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:132,columnNumber:13},this),a.close_time?e.jsxDEV(E,{date:a.close_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:134,columnNumber:17},this):e.jsxDEV("span",{className:"text-xs text-text-tertiary",children:"--"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:135,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:131,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:112,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center mt-4 pt-3 border-t border-surface-border",children:[e.jsxDEV("div",{className:"flex-1",children:a.trace_id?e.jsxDEV($,{label:"Trace",value:a.trace_id,href:h?h.replace("{traceId}",a.trace_id):void 0,external:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:143,columnNumber:15},this):e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"No trace"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:150,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:141,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-5",children:[e.jsxDEV(l,{label:"Tools",value:s.activities.user},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:154,columnNumber:13},this),e.jsxDEV(l,{label:"System",value:s.activities.system,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:155,columnNumber:13},this),s.child_workflows.total>0&&e.jsxDEV(l,{label:"Children",value:s.child_workflows.total},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:157,columnNumber:15},this),s.timers>0&&e.jsxDEV(l,{label:"Timers",value:s.timers},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:159,columnNumber:36},this),s.signals>0&&e.jsxDEV(l,{label:"Signals",value:s.signals},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:160,columnNumber:37},this),e.jsxDEV(l,{label:"Total",value:s.total_events,muted:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:161,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:153,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:140,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:104,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV(N,{title:"Details",sectionKey:"details",isCollapsed:u("details"),onToggle:o,children:e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6",children:[e.jsxDEV("div",{children:e.jsxDEV(P,{data:w??{},label:"Input"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:172,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:171,columnNumber:13},this),g!==null&&e.jsxDEV("div",{children:e.jsxDEV(P,{data:g,label:"Result"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:176,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:175,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:170,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:169,columnNumber:9},this),e.jsxDEV(N,{title:"Execution Timeline",sectionKey:"timeline",isCollapsed:u("timeline"),onToggle:o,children:e.jsxDEV(B,{events:d,outline:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:184,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:183,columnNumber:9},this),e.jsxDEV(N,{title:"Events",sectionKey:"events",isCollapsed:u("events"),onToggle:o,children:e.jsxDEV(L,{events:d},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:189,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:188,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:167,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:91,columnNumber:5},this)}function l({label:t,value:p,muted:r}){return e.jsxDEV("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsxDEV("span",{className:"text-text-tertiary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:201,columnNumber:7},this),e.jsxDEV("span",{className:`font-medium tabular-nums ${r?"text-text-tertiary":"text-text-primary"}`,children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:202,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:200,columnNumber:5},this)}export{re as McpRunDetailPage};
2
- //# sourceMappingURL=McpRunDetailPage-D6gaxH3_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"McpRunDetailPage-D6gaxH3_.js","sources":["../../src/pages/mcp/McpRunDetailPage.tsx"],"sourcesContent":["import { useParams, useSearchParams } from 'react-router-dom';\nimport { useCallback } from 'react';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useMcpRunExecution } from '../../api/mcp-runs';\nimport { useSettings } from '../../api/settings';\nimport { StatusBadge } from '../../components/common/display/StatusBadge';\nimport { JsonViewer } from '../../components/common/data/JsonViewer';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { CopyableId } from '../../components/common/display/CopyableId';\nimport { CollapsibleSection } from '../../components/common/layout/CollapsibleSection';\nimport { useCollapsedSections } from '../../hooks/useCollapsedSections';\nimport { useEventSubscription } from '../../hooks/useEventContext';\nimport { NATS_SUBJECT_PREFIX } from '../../lib/nats/config';\nimport { DateValue } from '../../components/common/display/DateValue';\nimport { DurationValue } from '../../components/common/display/DurationValue';\nimport { ListToolbar } from '../../components/common/data/ListToolbar';\n\nimport { SwimlaneTimeline } from '../workflows/workflow-execution/SwimlaneTimeline';\nimport { EventTable } from '../workflows/workflow-execution/EventTable';\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\nconst statusMap: Record<string, string> = {\n running: 'in_progress',\n completed: 'completed',\n failed: 'failed',\n};\n\n// ── Main page ────────────────────────────────────────────────────────────────\n\nexport function McpRunDetailPage() {\n const { jobId } = useParams<{ jobId: string }>();\n const [searchParams] = useSearchParams();\n const namespace = searchParams.get('namespace') || 'longtail';\n const queryClient = useQueryClient();\n const { data: execution, isLoading, error, refetch, isFetching } = useMcpRunExecution(jobId!, namespace);\n const { data: settings } = useSettings();\n const { isCollapsed, toggle } = useCollapsedSections('mcp-run-detail');\n\n\n const traceUrl = settings?.telemetry?.traceUrl ?? null;\n\n // Subscribe to activity events for this job — refetch execution on each step\n const activityHandler = useCallback((event: any) => {\n if (!jobId || event.workflowId !== jobId) return;\n queryClient.invalidateQueries({ queryKey: ['mcpRunExecution', jobId] });\n }, [jobId, queryClient]);\n useEventSubscription(`${NATS_SUBJECT_PREFIX}.activity.>`, activityHandler);\n\n if (isLoading) {\n return (\n <div className=\"animate-pulse space-y-4\">\n <div className=\"h-8 bg-surface-sunken rounded w-64\" />\n <div className=\"h-60 bg-surface-sunken rounded\" />\n </div>\n );\n }\n\n if (error || !execution) {\n return (\n <div>\n <PageHeader title=\"Pipeline Execution\" />\n <div className=\"mt-4 text-center py-8\">\n <p className=\"text-sm text-text-primary mb-1\">\n {(error as Error)?.message?.includes('expired')\n ? 'Execution data is no longer available'\n : 'Unable to load execution'}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {(error as Error)?.message ?? 'The run could not be resolved.'}\n </p>\n </div>\n </div>\n );\n }\n\n const { events, summary } = execution;\n\n // The trigger activity's result is the effective input to the flow —\n // it accepts outside job input and provides it to descendant activities.\n const triggerCompleted = events.find(\n (e) => e.category === 'activity' && e.attributes.kind?.includes('completed'),\n );\n const triggerInput = triggerCompleted?.attributes.result ?? null;\n\n // Unwrap result — the `data` field is what users care about\n const rawResult = execution.result as Record<string, unknown> | null | undefined;\n const result = rawResult?.data ?? rawResult ?? null;\n\n return (\n <div>\n <PageHeader\n title=\"Pipeline Execution\"\n actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/mcp-runs/${jobId}/execution?app_id=${namespace}`}\n />\n }\n />\n\n {/* ── Header card ─────────────────────────────────── */}\n <div className=\"bg-surface-raised border border-surface-border rounded-md p-5 mb-8\">\n {/* Row 0: Job ID + status */}\n <div className=\"flex items-center gap-4 mb-4\">\n <h2 className=\"text-sm font-mono text-text-primary truncate flex-1\">{execution.workflow_id}</h2>\n <StatusBadge status={statusMap[execution.status] ?? execution.status} />\n </div>\n\n {/* Row 1: Namespace, Topic, Duration, Started, Completed */}\n <div className=\"grid grid-cols-5 gap-x-6\">\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Tool Server</p>\n <p className=\"text-xs font-mono text-text-primary truncate\">{namespace}</p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Pipeline Tool</p>\n <p className=\"text-xs font-mono text-text-primary truncate\">{execution.workflow_type || '—'}</p>\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Duration</p>\n <DurationValue ms={execution.duration_ms} className=\"font-mono text-text-primary\" />\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Started</p>\n {execution.start_time\n ? <DateValue date={execution.start_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n : <span className=\"text-xs text-text-tertiary\">--</span>}\n </div>\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5\">Completed</p>\n {execution.close_time\n ? <DateValue date={execution.close_time} format=\"datetime\" className=\"font-mono text-text-primary\" />\n : <span className=\"text-xs text-text-tertiary\">--</span>}\n </div>\n </div>\n\n {/* Row 2: Trace (left) + Stats (right) */}\n <div className=\"flex items-center mt-4 pt-3 border-t border-surface-border\">\n <div className=\"flex-1\">\n {execution.trace_id ? (\n <CopyableId\n label=\"Trace\"\n value={execution.trace_id}\n href={traceUrl ? traceUrl.replace('{traceId}', execution.trace_id) : undefined}\n external\n />\n ) : (\n <span className=\"text-[10px] text-text-tertiary\">No trace</span>\n )}\n </div>\n <div className=\"flex items-center gap-5\">\n <Stat label=\"Tools\" value={summary.activities.user} />\n <Stat label=\"System\" value={summary.activities.system} muted />\n {summary.child_workflows.total > 0 && (\n <Stat label=\"Children\" value={summary.child_workflows.total} />\n )}\n {summary.timers > 0 && <Stat label=\"Timers\" value={summary.timers} />}\n {summary.signals > 0 && <Stat label=\"Signals\" value={summary.signals} />}\n <Stat label=\"Total\" value={summary.total_events} muted />\n </div>\n </div>\n </div>\n\n {/* ── Sections ────────────────────────────────────── */}\n <div className=\"space-y-6\">\n {/* Details: Input + Result */}\n <CollapsibleSection title=\"Details\" sectionKey=\"details\" isCollapsed={isCollapsed('details')} onToggle={toggle}>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4 mb-6\">\n <div>\n <JsonViewer data={triggerInput ?? {}} label=\"Input\" />\n </div>\n {result !== null && (\n <div>\n <JsonViewer data={result} label=\"Result\" />\n </div>\n )}\n </div>\n </CollapsibleSection>\n\n {/* Execution Timeline (swimlane) */}\n <CollapsibleSection title=\"Execution Timeline\" sectionKey=\"timeline\" isCollapsed={isCollapsed('timeline')} onToggle={toggle}>\n <SwimlaneTimeline events={events} outline />\n </CollapsibleSection>\n\n {/* Events (table) */}\n <CollapsibleSection title=\"Events\" sectionKey=\"events\" isCollapsed={isCollapsed('events')} onToggle={toggle}>\n <EventTable events={events} />\n </CollapsibleSection>\n </div>\n </div>\n );\n}\n\n// ── Stat pill ────────────────────────────────────────────────────────────────\n\nfunction Stat({ label, value, muted }: { label: string; value: number; muted?: boolean }) {\n return (\n <div className=\"flex items-center gap-1.5 text-xs\">\n <span className=\"text-text-tertiary\">{label}</span>\n <span className={`font-medium tabular-nums ${muted ? 'text-text-tertiary' : 'text-text-primary'}`}>{value}</span>\n </div>\n );\n}\n"],"names":["statusMap","McpRunDetailPage","jobId","useParams","searchParams","useSearchParams","namespace","queryClient","useQueryClient","execution","isLoading","error","refetch","isFetching","useMcpRunExecution","settings","useSettings","isCollapsed","toggle","useCollapsedSections","traceUrl","_a","activityHandler","useCallback","event","useEventSubscription","NATS_SUBJECT_PREFIX","jsxDEV","PageHeader","_b","events","summary","triggerCompleted","e","triggerInput","rawResult","result","ListToolbar","StatusBadge","DurationValue","DateValue","CopyableId","Stat","CollapsibleSection","JsonViewer","SwimlaneTimeline","EventTable","label","value","muted"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{j as a}from"./index-BYZX9tOb.js";import{a as m}from"./vendor-query-DLp59M9_.js";import{a as C,u as w}from"./mcp-runs-CWeZinoF.js";import{a as T}from"./yaml-workflows-DLwd2BOX.js";import{u as $}from"./namespaces-C3WtdO_9.js";import{u as F}from"./useFilterParams-BUyLHcx_.js";import{D as z}from"./DataTable-CTRhTAfT.js";import{W as A}from"./WorkflowPill-CZqGslD6.js";import{T as y}from"./TimestampCell-QX_0i5FK.js";import{E as L}from"./ElapsedCell-HcSJ_MMs.js";import{P as U}from"./PageHeader-BcTVF9ul.js";import{F as O,b as f}from"./FilterBar-BiO8SOzc.js";import{S as I}from"./StickyPagination-DTIjBKN3.js";import{L as W}from"./ListToolbar-6yRDh2e9.js";import{R as B,a as q}from"./RowActions-yDhwwDbU.js";import{n as G}from"./vendor-icons-T4r2DSPD.js";import{c as H}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-joNbd4gg.js";const Y={running:"in_progress",completed:"completed",failed:"failed"},J={in_progress:"bg-status-active",completed:"bg-status-success",failed:"bg-status-error"},K={running:"text-status-active",completed:"text-status-success",failed:"text-status-error"};function Q(g,t){return[{key:"workflow_id",label:"Run ID / Tool",render:e=>{const u=J[Y[e.status]??e.status]??"bg-status-pending",i=e.status==="running"?" animate-pulse":"";return a.jsxDEV("div",{className:"flex items-start gap-2 min-w-0",children:[a.jsxDEV("span",{className:`w-[9px] h-[9px] shrink-0 rounded-full mt-1 ${u}${i}`,title:e.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:50,columnNumber:13},this),a.jsxDEV("div",{className:"min-w-0",children:[a.jsxDEV("span",{className:"font-mono text-xs text-text-primary truncate block",children:e.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:52,columnNumber:15},this),a.jsxDEV("div",{className:"mt-0.5",children:e.entity?a.jsxDEV(A,{type:e.entity,variant:"pipeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:57,columnNumber:21},this):a.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"—"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:58,columnNumber:21},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:55,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:51,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:49,columnNumber:11},this)}},{key:"created_at",label:"Created",render:e=>a.jsxDEV(y,{date:e.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:68,columnNumber:24},this),className:"w-40"},{key:"updated_at",label:"Updated",render:e=>a.jsxDEV(y,{date:e.updated_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:74,columnNumber:24},this),className:"w-40"},{key:"duration",label:"Duration",render:e=>a.jsxDEV(L,{startDate:e.created_at,endDate:e.status==="running"?null:e.updated_at,isLive:e.status==="running"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:81,columnNumber:9},this),className:"w-28"},{key:"actions",label:"",render:e=>a.jsxDEV(B,{children:[a.jsxDEV(q,{icon:G,title:`Filter by ${e.entity}`,onClick:()=>g(e.entity)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:94,columnNumber:11},this),a.jsxDEV("button",{onClick:u=>{u.stopPropagation(),t(e.status)},className:"opacity-0 group-hover/row:opacity-100 transition-opacity",title:`Filter by ${e.status}`,children:a.jsxDEV("svg",{className:`w-[18px] h-[18px] ${K[e.status]??"text-text-tertiary"} hover:opacity-70`,viewBox:"0 0 24 24",fill:"currentColor",children:a.jsxDEV("circle",{cx:"12",cy:"12",r:"6"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:105,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:104,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:99,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:93,columnNumber:9},this),className:"w-24 text-right"}]}function fe(){const g=H(),{filters:t,setFilter:e,setFilters:u,pagination:i}=F({filters:{search:"",entity:"",status:"",namespace:""}}),[d,R]=m.useState(t.search);m.useEffect(()=>{if(d===t.search)return;const s=setTimeout(()=>e("search",d),300);return()=>clearTimeout(s)},[d,e,t.search]);const{data:l}=T(),{data:c}=$(),b=m.useMemo(()=>{const s=new Set((l==null?void 0:l.app_ids)??[]);for(const n of(c==null?void 0:c.namespaces)??[])s.add(n.name);return[...s].sort()},[l==null?void 0:l.app_ids,c==null?void 0:c.namespaces]),M=b.includes("longtail")?"longtail":b[0]??"",o=t.namespace||M,{data:p}=C(o),{data:r,isLoading:E,refetch:j,isFetching:V}=w({app_id:o,limit:i.pageSize,offset:i.offset,entity:t.entity||void 0,search:t.search||void 0,status:t.status||void 0}),N=(r==null?void 0:r.total)??0,D=m.useMemo(()=>{const s=(r==null?void 0:r.jobs)??[],n={running:0,failed:1,completed:2};return[...s].sort((h,x)=>{const v=n[h.status]??9,P=n[x.status]??9;return v!==P?v-P:new Date(x.created_at).getTime()-new Date(h.created_at).getTime()})},[r==null?void 0:r.jobs]),S=Q(s=>e("entity",s),s=>e("status",s)),_=m.useMemo(()=>{const s=new Set(b);return o&&s.add(o),[...s].sort().map(n=>({value:n,label:n}))},[b,o]),k=m.useMemo(()=>{const s=new Set((p==null?void 0:p.entities)??[]);return t.entity&&!s.has(t.entity)&&s.add(t.entity),[...s].sort().map(n=>({value:n,label:n}))},[p==null?void 0:p.entities,t.entity]);return a.jsxDEV("div",{children:[a.jsxDEV(U,{title:"Pipeline Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:188,columnNumber:7},this),a.jsxDEV(O,{actions:a.jsxDEV(W,{onRefresh:()=>j(),isFetching:V,apiPath:`/mcp-runs?app_id=${o||"longtail"}&limit=${i.pageSize}&offset=${i.offset}${t.entity?`&entity=${t.entity}`:""}${t.status?`&status=${t.status}`:""}${t.search?`&search=${t.search}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:191,columnNumber:9},this),children:[a.jsxDEV(f,{label:"Namespace",value:o,onChange:s=>{u({namespace:s,entity:""})},options:_,required:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:197,columnNumber:9},this),a.jsxDEV("input",{type:"text",placeholder:"Search run ID...",value:d,onChange:s=>R(s.target.value),className:"input text-[11px] py-1 px-2 w-56"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:206,columnNumber:9},this),a.jsxDEV(f,{label:"Tool",value:t.entity,onChange:s=>e("entity",s),options:k},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:213,columnNumber:9},this),a.jsxDEV(f,{label:"Status",value:t.status,onChange:s=>e("status",s),options:[{value:"running",label:"Running"},{value:"completed",label:"Completed"},{value:"failed",label:"Failed"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:219,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:190,columnNumber:7},this),a.jsxDEV(z,{columns:S,data:D,keyFn:s=>s.workflow_id,onRowClick:s=>g(`/mcp/executions/${encodeURIComponent(s.workflow_id)}?namespace=${o}`),isLoading:E,emptyMessage:"No pipeline executions found"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:231,columnNumber:7},this),a.jsxDEV(I,{page:i.page,totalPages:i.totalPages(N),onPageChange:i.setPage,total:N,pageSize:i.pageSize,onPageSizeChange:i.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:240,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:187,columnNumber:5},this)}export{fe as McpRunsPage};
2
- //# sourceMappingURL=McpRunsPage-DKvTklh9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"McpRunsPage-DKvTklh9.js","sources":["../../src/pages/mcp/McpRunsPage.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Filter } from 'lucide-react';\nimport { useMcpRuns, useMcpEntities } from '../../api/mcp-runs';\nimport { useYamlWorkflowAppIds } from '../../api/yaml-workflows';\nimport { useNamespaces } from '../../api/namespaces';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\nimport { TimestampCell } from '../../components/common/display/TimestampCell';\nimport { ElapsedCell } from '../../components/common/display/ElapsedCell';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { FilterBar, FilterSelect } from '../../components/common/data/FilterBar';\nimport { StickyPagination } from '../../components/common/data/StickyPagination';\nimport { ListToolbar } from '../../components/common/data/ListToolbar';\nimport { RowAction, RowActionGroup } from '../../components/common/layout/RowActions';\nimport type { LTJob } from '../../api/types';\n\nconst statusMap: Record<string, string> = {\n running: 'in_progress',\n completed: 'completed',\n failed: 'failed',\n};\n\nconst STATUS_DOT: Record<string, string> = {\n in_progress: 'bg-status-active',\n completed: 'bg-status-success',\n failed: 'bg-status-error',\n};\n\nconst STATUS_COLORS: Record<string, string> = {\n running: 'text-status-active',\n completed: 'text-status-success',\n failed: 'text-status-error',\n};\n\nfunction buildColumns(\n onFilterEntity: (entity: string) => void,\n onFilterStatus: (status: string) => void,\n): Column<LTJob>[] {\n return [\n {\n key: 'workflow_id',\n label: 'Run ID / Tool',\n render: (row) => {\n const dotClass = STATUS_DOT[statusMap[row.status] ?? row.status] ?? 'bg-status-pending';\n const pulseClass = row.status === 'running' ? ' animate-pulse' : '';\n return (\n <div className=\"flex items-start gap-2 min-w-0\">\n <span className={`w-[9px] h-[9px] shrink-0 rounded-full mt-1 ${dotClass}${pulseClass}`} title={row.status} />\n <div className=\"min-w-0\">\n <span className=\"font-mono text-xs text-text-primary truncate block\">\n {row.workflow_id}\n </span>\n <div className=\"mt-0.5\">\n {row.entity\n ? <WorkflowPill type={row.entity} variant=\"pipeline\" />\n : <span className=\"text-[10px] text-text-tertiary\">—</span>}\n </div>\n </div>\n </div>\n );\n },\n },\n {\n key: 'created_at',\n label: 'Created',\n render: (row) => <TimestampCell date={row.created_at} />,\n className: 'w-40',\n },\n {\n key: 'updated_at',\n label: 'Updated',\n render: (row) => <TimestampCell date={row.updated_at} />,\n className: 'w-40',\n },\n {\n key: 'duration',\n label: 'Duration',\n render: (row) => (\n <ElapsedCell\n startDate={row.created_at}\n endDate={row.status === 'running' ? null : row.updated_at}\n isLive={row.status === 'running'}\n />\n ),\n className: 'w-28',\n },\n {\n key: 'actions',\n label: '',\n render: (row) => (\n <RowActionGroup>\n <RowAction\n icon={Filter}\n title={`Filter by ${row.entity}`}\n onClick={() => onFilterEntity(row.entity)}\n />\n <button\n onClick={(e) => { e.stopPropagation(); onFilterStatus(row.status); }}\n className=\"opacity-0 group-hover/row:opacity-100 transition-opacity\"\n title={`Filter by ${row.status}`}\n >\n <svg className={`w-[18px] h-[18px] ${STATUS_COLORS[row.status] ?? 'text-text-tertiary'} hover:opacity-70`} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n </button>\n </RowActionGroup>\n ),\n className: 'w-24 text-right',\n },\n ];\n}\n\nexport function McpRunsPage() {\n const navigate = useNavigate();\n const { filters, setFilter, setFilters, pagination } = useFilterParams({\n filters: { search: '', entity: '', status: '', namespace: '' },\n });\n\n const [searchInput, setSearchInput] = useState(filters.search);\n\n useEffect(() => {\n if (searchInput === filters.search) return;\n const timer = setTimeout(() => setFilter('search', searchInput), 300);\n return () => clearTimeout(timer);\n }, [searchInput, setFilter, filters.search]);\n\n const { data: appIdData } = useYamlWorkflowAppIds();\n const { data: nsData } = useNamespaces();\n\n const allNamespaceNames = useMemo(() => {\n const set = new Set(appIdData?.app_ids ?? []);\n for (const ns of nsData?.namespaces ?? []) {\n set.add(ns.name);\n }\n return [...set].sort();\n }, [appIdData?.app_ids, nsData?.namespaces]);\n\n // Default: URL param > 'longtail' (if exists) > first in list\n const defaultNamespace = allNamespaceNames.includes('longtail')\n ? 'longtail'\n : allNamespaceNames[0] ?? '';\n const activeNamespace = filters.namespace || defaultNamespace;\n const { data: entitiesData } = useMcpEntities(activeNamespace);\n\n const { data: runsData, isLoading, refetch, isFetching } = useMcpRuns({\n app_id: activeNamespace,\n limit: pagination.pageSize,\n offset: pagination.offset,\n entity: filters.entity || undefined,\n search: filters.search || undefined,\n status: filters.status || undefined,\n });\n\n const total = runsData?.total ?? 0;\n\n const jobs = useMemo(() => {\n const raw = runsData?.jobs ?? [];\n const STATUS_ORDER: Record<string, number> = { running: 0, failed: 1, completed: 2 };\n return [...raw].sort((a, b) => {\n const sa = STATUS_ORDER[a.status] ?? 9;\n const sb = STATUS_ORDER[b.status] ?? 9;\n if (sa !== sb) return sa - sb;\n return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();\n });\n }, [runsData?.jobs]);\n\n const columns = buildColumns(\n (entity) => setFilter('entity', entity),\n (status) => setFilter('status', status),\n );\n\n const namespaces = useMemo(() => {\n const set = new Set(allNamespaceNames);\n if (activeNamespace) set.add(activeNamespace);\n return [...set].sort().map((id) => ({ value: id, label: id }));\n }, [allNamespaceNames, activeNamespace]);\n\n const entities = useMemo(() => {\n const known = new Set(entitiesData?.entities ?? []);\n if (filters.entity && !known.has(filters.entity)) known.add(filters.entity);\n return [...known].sort().map((e) => ({ value: e, label: e }));\n }, [entitiesData?.entities, filters.entity]);\n\n return (\n <div>\n <PageHeader title=\"Pipeline Executions\" />\n\n <FilterBar actions={\n <ListToolbar\n onRefresh={() => refetch()}\n isFetching={isFetching}\n apiPath={`/mcp-runs?app_id=${activeNamespace || 'longtail'}&limit=${pagination.pageSize}&offset=${pagination.offset}${filters.entity ? `&entity=${filters.entity}` : ''}${filters.status ? `&status=${filters.status}` : ''}${filters.search ? `&search=${filters.search}` : ''}`}\n />\n }>\n <FilterSelect\n label=\"Namespace\"\n value={activeNamespace}\n onChange={(v) => {\n setFilters({ namespace: v, entity: '' });\n }}\n options={namespaces}\n required\n />\n <input\n type=\"text\"\n placeholder=\"Search run ID...\"\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n className=\"input text-[11px] py-1 px-2 w-56\"\n />\n <FilterSelect\n label=\"Tool\"\n value={filters.entity}\n onChange={(v) => setFilter('entity', v)}\n options={entities}\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'running', label: 'Running' },\n { value: 'completed', label: 'Completed' },\n { value: 'failed', label: 'Failed' },\n ]}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={jobs}\n keyFn={(row) => row.workflow_id}\n onRowClick={(row) => navigate(`/mcp/executions/${encodeURIComponent(row.workflow_id)}?namespace=${activeNamespace}`)}\n isLoading={isLoading}\n emptyMessage=\"No pipeline executions found\"\n />\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n </div>\n );\n}\n"],"names":["statusMap","STATUS_DOT","STATUS_COLORS","buildColumns","onFilterEntity","onFilterStatus","row","dotClass","pulseClass","jsxDEV","WorkflowPill","TimestampCell","ElapsedCell","RowActionGroup","RowAction","Filter","e","McpRunsPage","navigate","useNavigate","filters","setFilter","setFilters","pagination","useFilterParams","searchInput","setSearchInput","useState","useEffect","timer","appIdData","useYamlWorkflowAppIds","nsData","useNamespaces","allNamespaceNames","useMemo","set","ns","defaultNamespace","activeNamespace","entitiesData","useMcpEntities","runsData","isLoading","refetch","isFetching","useMcpRuns","total","jobs","raw","STATUS_ORDER","a","b","sa","sb","columns","entity","status","namespaces","id","entities","known","PageHeader","FilterBar","ListToolbar","FilterSelect","v","DataTable","StickyPagination"],"mappings":"s0BAkBA,MAAMA,EAAoC,CACxC,QAAS,cACT,UAAW,YACX,OAAQ,QACV,EAEMC,EAAqC,CACzC,YAAa,mBACb,UAAW,oBACX,OAAQ,iBACV,EAEMC,EAAwC,CAC5C,QAAS,qBACT,UAAW,sBACX,OAAQ,mBACV,EAEA,SAASC,EACPC,EACAC,EACiB,CACjB,MAAO,CACL,CACE,IAAK,cACL,MAAO,gBACP,OAASC,GAAQ,CACf,MAAMC,EAAWN,EAAWD,EAAUM,EAAI,MAAM,GAAKA,EAAI,MAAM,GAAK,oBAC9DE,EAAaF,EAAI,SAAW,UAAY,iBAAmB,GACjE,OACEG,EAAAA,OAAC,MAAA,CAAI,UAAU,iCACb,SAAA,CAAAA,EAAAA,OAAC,OAAA,CAAK,UAAW,8CAA8CF,CAAQ,GAAGC,CAAU,GAAI,MAAOF,EAAI,MAAA,EAAnG,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2G,EAC3GG,EAAAA,OAAC,MAAA,CAAI,UAAU,UACb,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,qDACb,SAAAH,EAAI,WAAA,EADP,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACAG,EAAAA,OAAC,MAAA,CAAI,UAAU,SACZ,SAAAH,EAAI,OACDG,EAAAA,OAACC,EAAA,CAAa,KAAMJ,EAAI,OAAQ,QAAQ,UAAA,EAAxC,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmD,EACnDG,SAAC,OAAA,CAAK,UAAU,iCAAiC,SAAA,KAAjD,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,CAAA,EAHxD,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAIA,CAAA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IASA,CAAA,CAAA,EAXF,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAYA,CAEJ,CAAA,EAEF,CACE,IAAK,aACL,MAAO,UACP,OAASH,YAASK,EAAA,CAAc,KAAML,EAAI,UAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqC,EACtD,UAAW,MAAA,EAEb,CACE,IAAK,aACL,MAAO,UACP,OAASA,YAASK,EAAA,CAAc,KAAML,EAAI,UAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAqC,EACtD,UAAW,MAAA,EAEb,CACE,IAAK,WACL,MAAO,WACP,OAASA,GACPG,EAAAA,OAACG,EAAA,CACC,UAAWN,EAAI,WACf,QAASA,EAAI,SAAW,UAAY,KAAOA,EAAI,WAC/C,OAAQA,EAAI,SAAW,SAAA,EAHzB,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EAMF,UAAW,MAAA,EAEb,CACE,IAAK,UACL,MAAO,GACP,OAASA,GACPG,EAAAA,OAACI,EAAA,CACC,SAAA,CAAAJ,EAAAA,OAACK,EAAA,CACC,KAAMC,EACN,MAAO,aAAaT,EAAI,MAAM,GAC9B,QAAS,IAAMF,EAAeE,EAAI,MAAM,CAAA,EAH1C,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,EAKAG,EAAAA,OAAC,SAAA,CACC,QAAUO,GAAM,CAAEA,EAAE,gBAAA,EAAmBX,EAAeC,EAAI,MAAM,CAAG,EACnE,UAAU,2DACV,MAAO,aAAaA,EAAI,MAAM,GAE9B,SAAAG,EAAAA,OAAC,OAAI,UAAW,qBAAqBP,EAAcI,EAAI,MAAM,GAAK,oBAAoB,oBAAqB,QAAQ,YAAY,KAAK,eAClI,SAAAG,EAAAA,OAAC,SAAA,CAAO,GAAG,KAAK,GAAG,KAAK,EAAE,GAAA,EAA1B,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA8B,CAAA,EADhC,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,EAPF,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAQA,CAAA,EAdF,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAeA,EAEF,UAAW,iBAAA,CACb,CAEJ,CAEO,SAASQ,IAAc,CAC5B,MAAMC,EAAWC,EAAA,EACX,CAAE,QAAAC,EAAS,UAAAC,EAAW,WAAAC,EAAY,WAAAC,CAAA,EAAeC,EAAgB,CACrE,QAAS,CAAE,OAAQ,GAAI,OAAQ,GAAI,OAAQ,GAAI,UAAW,EAAA,CAAG,CAC9D,EAEK,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAASP,EAAQ,MAAM,EAE7DQ,EAAAA,UAAU,IAAM,CACd,GAAIH,IAAgBL,EAAQ,OAAQ,OACpC,MAAMS,EAAQ,WAAW,IAAMR,EAAU,SAAUI,CAAW,EAAG,GAAG,EACpE,MAAO,IAAM,aAAaI,CAAK,CACjC,EAAG,CAACJ,EAAaJ,EAAWD,EAAQ,MAAM,CAAC,EAE3C,KAAM,CAAE,KAAMU,CAAA,EAAcC,EAAA,EACtB,CAAE,KAAMC,CAAA,EAAWC,EAAA,EAEnBC,EAAoBC,EAAAA,QAAQ,IAAM,CACtC,MAAMC,EAAM,IAAI,KAAIN,GAAA,YAAAA,EAAW,UAAW,CAAA,CAAE,EAC5C,UAAWO,KAAML,GAAA,YAAAA,EAAQ,aAAc,CAAA,EACrCI,EAAI,IAAIC,EAAG,IAAI,EAEjB,MAAO,CAAC,GAAGD,CAAG,EAAE,KAAA,CAClB,EAAG,CAACN,GAAA,YAAAA,EAAW,QAASE,GAAA,YAAAA,EAAQ,UAAU,CAAC,EAGrCM,EAAmBJ,EAAkB,SAAS,UAAU,EAC1D,WACAA,EAAkB,CAAC,GAAK,GACtBK,EAAkBnB,EAAQ,WAAakB,EACvC,CAAE,KAAME,GAAiBC,EAAeF,CAAe,EAEvD,CAAE,KAAMG,EAAU,UAAAC,EAAW,QAAAC,EAAS,WAAAC,CAAA,EAAeC,EAAW,CACpE,OAAQP,EACR,MAAOhB,EAAW,SAClB,OAAQA,EAAW,OACnB,OAAQH,EAAQ,QAAU,OAC1B,OAAQA,EAAQ,QAAU,OAC1B,OAAQA,EAAQ,QAAU,MAAA,CAC3B,EAEK2B,GAAQL,GAAA,YAAAA,EAAU,QAAS,EAE3BM,EAAOb,EAAAA,QAAQ,IAAM,CACzB,MAAMc,GAAMP,GAAA,YAAAA,EAAU,OAAQ,CAAA,EACxBQ,EAAuC,CAAE,QAAS,EAAG,OAAQ,EAAG,UAAW,CAAA,EACjF,MAAO,CAAC,GAAGD,CAAG,EAAE,KAAK,CAACE,EAAGC,IAAM,CAC7B,MAAMC,EAAKH,EAAaC,EAAE,MAAM,GAAK,EAC/BG,EAAKJ,EAAaE,EAAE,MAAM,GAAK,EACrC,OAAIC,IAAOC,EAAWD,EAAKC,EACpB,IAAI,KAAKF,EAAE,UAAU,EAAE,UAAY,IAAI,KAAKD,EAAE,UAAU,EAAE,QAAA,CACnE,CAAC,CACH,EAAG,CAACT,GAAA,YAAAA,EAAU,IAAI,CAAC,EAEba,EAAUpD,EACbqD,GAAWnC,EAAU,SAAUmC,CAAM,EACrCC,GAAWpC,EAAU,SAAUoC,CAAM,CAAA,EAGlCC,EAAavB,EAAAA,QAAQ,IAAM,CAC/B,MAAMC,EAAM,IAAI,IAAIF,CAAiB,EACrC,OAAIK,GAAiBH,EAAI,IAAIG,CAAe,EACrC,CAAC,GAAGH,CAAG,EAAE,OAAO,IAAKuB,IAAQ,CAAE,MAAOA,EAAI,MAAOA,GAAK,CAC/D,EAAG,CAACzB,EAAmBK,CAAe,CAAC,EAEjCqB,EAAWzB,EAAAA,QAAQ,IAAM,CAC7B,MAAM0B,EAAQ,IAAI,KAAIrB,GAAA,YAAAA,EAAc,WAAY,CAAA,CAAE,EAClD,OAAIpB,EAAQ,QAAU,CAACyC,EAAM,IAAIzC,EAAQ,MAAM,GAAGyC,EAAM,IAAIzC,EAAQ,MAAM,EACnE,CAAC,GAAGyC,CAAK,EAAE,OAAO,IAAK7C,IAAO,CAAE,MAAOA,EAAG,MAAOA,GAAI,CAC9D,EAAG,CAACwB,GAAA,YAAAA,EAAc,SAAUpB,EAAQ,MAAM,CAAC,EAE3C,gBACG,MAAA,CACC,SAAA,CAAAX,EAAAA,OAACqD,EAAA,CAAW,MAAM,qBAAA,EAAlB,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAwC,EAExCrD,SAACsD,GAAU,QACTtD,EAAAA,OAACuD,EAAA,CACC,UAAW,IAAMpB,EAAA,EACjB,WAAAC,EACA,QAAS,oBAAoBN,GAAmB,UAAU,UAAUhB,EAAW,QAAQ,WAAWA,EAAW,MAAM,GAAGH,EAAQ,OAAS,WAAWA,EAAQ,MAAM,GAAK,EAAE,GAAGA,EAAQ,OAAS,WAAWA,EAAQ,MAAM,GAAK,EAAE,GAAGA,EAAQ,OAAS,WAAWA,EAAQ,MAAM,GAAK,EAAE,EAAA,EAHjR,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAMA,SAAA,CAAAX,EAAAA,OAACwD,EAAA,CACC,MAAM,YACN,MAAO1B,EACP,SAAW2B,GAAM,CACf5C,EAAW,CAAE,UAAW4C,EAAG,OAAQ,GAAI,CACzC,EACA,QAASR,EACT,SAAQ,EAAA,EAPV,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EASAjD,EAAAA,OAAC,QAAA,CACC,KAAK,OACL,YAAY,mBACZ,MAAOgB,EACP,SAAWT,GAAMU,EAAeV,EAAE,OAAO,KAAK,EAC9C,UAAU,kCAAA,EALZ,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAOAP,EAAAA,OAACwD,EAAA,CACC,MAAM,OACN,MAAO7C,EAAQ,OACf,SAAW8C,GAAM7C,EAAU,SAAU6C,CAAC,EACtC,QAASN,CAAA,EAJX,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAMAnD,EAAAA,OAACwD,EAAA,CACC,MAAM,SACN,MAAO7C,EAAQ,OACf,SAAW8C,GAAM7C,EAAU,SAAU6C,CAAC,EACtC,QAAS,CACP,CAAE,MAAO,UAAW,MAAO,SAAA,EAC3B,CAAE,MAAO,YAAa,MAAO,WAAA,EAC7B,CAAE,MAAO,SAAU,MAAO,QAAA,CAAS,CACrC,EARF,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CASA,CAAA,EAtCF,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAuCA,EAEAzD,EAAAA,OAAC0D,EAAA,CACC,QAAAZ,EACA,KAAMP,EACN,MAAQ1C,GAAQA,EAAI,YACpB,WAAaA,GAAQY,EAAS,mBAAmB,mBAAmBZ,EAAI,WAAW,CAAC,cAAciC,CAAe,EAAE,EACnH,UAAAI,EACA,aAAa,8BAAA,EANf,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EASAlC,EAAAA,OAAC2D,EAAA,CACC,KAAM7C,EAAW,KACjB,WAAYA,EAAW,WAAWwB,CAAK,EACvC,aAAcxB,EAAW,QACzB,MAAAwB,EACA,SAAUxB,EAAW,SACrB,iBAAkBA,EAAW,WAAA,EAN/B,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAOA,CAAA,EA5DF,OAAA,GAAA,CAAA,SAAA,+CAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA6DA,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{i as v,r as D,p as E,q as O,j as s}from"./index-BYZX9tOb.js";import{e as S}from"./useEventHooks-anv_B2Yy.js";import{u as P}from"./roles-BDAsPpZG.js";import{u as j}from"./useFilterParams-BUyLHcx_.js";import{D as C}from"./DataTable-CTRhTAfT.js";import{P as V}from"./PageHeader-BcTVF9ul.js";import{S as $}from"./StickyPagination-DTIjBKN3.js";import{R as L,a as R}from"./RowActions-yDhwwDbU.js";import{a as _,T as w,E as F}from"./escalation-columns-Cyg58nkg.js";import{L as T}from"./ListToolbar-6yRDh2e9.js";import{V as k}from"./vendor-icons-T4r2DSPD.js";import{c as z}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./EmptyState-joNbd4gg.js";import"./FilterBar-BiO8SOzc.js";import"./PriorityBadge-DqVaOU65.js";import"./RolePill-D9ZIkYiu.js";import"./WorkflowPill-CZqGslD6.js";import"./TimestampCell-QX_0i5FK.js";import"./escalation-JOTuOqjq.js";function te(){S();const d=z(),{user:p}=v(),{filters:e,setFilter:c,pagination:a,sort:t,setSort:u}=j({filters:{role:"",type:"",priority:""}}),b=D(),{data:l}=P(),{data:n}=E(),{data:r,isLoading:f,error:i,refetch:g,isFetching:h}=O({assigned_to:p==null?void 0:p.userId,status:"pending",role:e.role||void 0,type:e.type||void 0,priority:e.priority?parseInt(e.priority):void 0,limit:a.pageSize,offset:a.offset,sort_by:t.sort_by||void 0,order:t.sort_by?t.order:void 0}),N=((r==null?void 0:r.escalations)??[]).filter(o=>o.assigned_until&&new Date(o.assigned_until)>new Date),m=(r==null?void 0:r.total)??0,x={key:"actions",label:"",render:o=>s.jsxDEV(L,{children:s.jsxDEV(R,{icon:k,title:"Release escalation",onClick:()=>b.mutate(o.id),colorClass:"text-text-tertiary hover:text-status-warning"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:50,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:49,columnNumber:7},this),className:"w-16 text-right"},y=[w,...F,x];return s.jsxDEV("div",{children:[s.jsxDEV(V,{title:"My Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:70,columnNumber:7},this),s.jsxDEV(_,{filters:e,setFilter:c,roles:(l==null?void 0:l.roles)??[],types:(n==null?void 0:n.types)??[],actions:s.jsxDEV(T,{onRefresh:()=>g(),isFetching:h,apiPath:`/escalations?status=claimed&limit=${a.pageSize}&offset=${a.offset}${e.role?`&role=${e.role}`:""}${e.type?`&type=${e.type}`:""}${e.priority?`&priority=${e.priority}`:""}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:78,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:72,columnNumber:7},this),i&&s.jsxDEV("div",{className:"mb-4 px-4 py-3 rounded-md bg-status-error/10 border border-status-error/20 text-xs text-status-error",children:i.message==="Session expired"?"Your session has expired. Please log in again.":`Failed to load escalations: ${i.message}`},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:87,columnNumber:9},this),s.jsxDEV(C,{columns:y,data:N,keyFn:o=>o.id,onRowClick:o=>d(`/escalations/detail/${o.id}`,{state:{from:"/escalations/queue"}}),isLoading:f,emptyMessage:i?"Unable to load data":"No assigned escalations",sort:t,onSort:u},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:94,columnNumber:7},this),s.jsxDEV($,{page:a.page,totalPages:a.totalPages(m),onPageChange:a.setPage,total:m,pageSize:a.pageSize,onPageSizeChange:a.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:105,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:69,columnNumber:5},this)}export{te as OperatorDashboard};
2
- //# sourceMappingURL=OperatorDashboard-C9SSV96T.js.map
@@ -1,2 +0,0 @@
1
- import{j as e,D as L,c as C,J as v,f as S,C as R}from"./index-BYZX9tOb.js";import{a as W}from"./vendor-query-DLp59M9_.js";import{S as K}from"./StatusBadge-xgb-lZku.js";import{L as $}from"./vendor-react-Co3Y8ikm.js";function I(a){if(!a)return null;try{return JSON.parse(a)}catch{return a}}function J({event:a,childTask:o,pending:m=!1,onClose:w}){const d=o?I(o.envelope):null,c=o?I(o.data):null;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:45,columnNumber:11},this),m&&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:53,columnNumber:15},this),"Pending"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:52,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:44,columnNumber:9},this),w&&e.jsxDEV("button",{onClick:w,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:59,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:43,columnNumber:7},this),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/EventDetailPanel.tsx",lineNumber:72,columnNumber:13},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/EventDetailPanel.tsx",lineNumber:75,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:71,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:81,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:84,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:80,columnNumber:9},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/EventDetailPanel.tsx",lineNumber:90,columnNumber:13},this),e.jsxDEV(L,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:93,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:89,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:97,columnNumber:11},this),e.jsxDEV(C,{date:a.event_time,format:"datetime",className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:100,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:96,columnNumber:9},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/EventDetailPanel.tsx",lineNumber:106,columnNumber:13},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/EventDetailPanel.tsx",lineNumber:109,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:105,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:118,columnNumber:13},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/EventDetailPanel.tsx",lineNumber:121,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:117,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:130,columnNumber:13},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/EventDetailPanel.tsx",lineNumber:133,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:129,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:142,columnNumber:13},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/EventDetailPanel.tsx",lineNumber:145,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:141,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:154,columnNumber:13},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/EventDetailPanel.tsx",lineNumber:157,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:153,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:164,columnNumber:13},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/EventDetailPanel.tsx",lineNumber:167,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:163,columnNumber:11},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/EventDetailPanel.tsx",lineNumber:174,columnNumber:13},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/EventDetailPanel.tsx",lineNumber:177,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:173,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:69,columnNumber:7},this),!o&&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/EventDetailPanel.tsx",lineNumber:188,columnNumber:13},this),e.jsxDEV($,{to:`/workflows/executions/${a.attributes.child_workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:l=>l.stopPropagation(),children:a.attributes.child_workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:191,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:187,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:186,columnNumber:9},this),o&&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/EventDetailPanel.tsx",lineNumber:207,columnNumber:13},this),e.jsxDEV($,{to:`/workflows/executions/${o.workflow_id}`,className:"text-xs font-mono text-accent hover:underline",onClick:l=>l.stopPropagation(),children:o.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:210,columnNumber:13},this),e.jsxDEV(K,{status:o.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:217,columnNumber:13},this),o.completed_at&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:["Completed ",e.jsxDEV(C,{date:o.completed_at,format:"relative"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:220,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:219,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:206,columnNumber:11},this),(d!=null||c!=null)&&e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[d!=null?e.jsxDEV(v,{data:d,label:"Input (Envelope)",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:229,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:230,columnNumber:19},this),c!=null?e.jsxDEV(v,{data:c,label:"Output (Result)",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:232,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:233,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:227,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:204,columnNumber:9},this),(()=>{const l=a.attributes.input,r=a.attributes.result,b=a.category==="signal",n=a.category==="activity",p=a.category==="child_workflow",g=l!==void 0&&(n||p),f=!o&&r!==void 0&&(n||p),u=a.attributes.activity_type==="ltSignalParent"?"Signal Payload":"Result";return g||f?e.jsxDEV("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[g?e.jsxDEV(v,{data:l,label:"Input",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:254,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:255,columnNumber:19},this),f?e.jsxDEV(v,{data:r,label:u,variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:257,columnNumber:17},this):e.jsxDEV("div",{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:258,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:252,columnNumber:13},this):b&&l!==void 0?e.jsxDEV(v,{data:l,label:"Signal Payload",variant:"panel"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:265,columnNumber:18},this):null})(),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:273,columnNumber:9},this),(()=>{const{kind:l,activity_type:r,result:b,timeline_key:n,execution_index:p,signal_name:g,input:f,child_workflow_id:u,awaited:E,wait_event_id:x,scheduled_event_id:N,initiated_event_id:y,failure:T,trace_id:_,span_id:j,...V}=a.attributes;return Object.keys(V).length>0?e.jsxDEV(v,{data:V,label:"Attributes"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:297,columnNumber:11},this):null})()]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/EventDetailPanel.tsx",lineNumber:41,columnNumber:5},this)}const k={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"}},B="bg-stripes animate-pulse opacity-70",Y=new Set(["callLLM","callDbTool","callVisionTool","callMcpTool","getDBTools","getVisionTools"]);function G(a,o){if(a.length<=o)return a;const m=Math.floor((o-1)/2);return`${a.slice(0,m)}…${a.slice(a.length-m)}`}function z(a){const o=[],m=new Map,w=new Map;for(const c of a){const l=c.attributes.timeline_key;if(!l)continue;const r=c.event_type;r==="activity_task_scheduled"||r==="timer_started"||r==="child_workflow_execution_started"||r==="signal_wait_started"?m.set(l,c):w.set(l,c)}const d=new Set;for(const c of a){const l=c.attributes.timeline_key;if(l&&d.has(l))continue;l&&d.add(l);const r=l?m.get(l):void 0,b=l?w.get(l):void 0,n=b||r||c,p=n.category,g=n.attributes.activity_type||n.attributes.signal_name||n.attributes.child_workflow_id||n.event_type,f=r||n,u=b,E=new Date(f.event_time).getTime();let x=null,N=null,y=!1;u?(x=new Date(u.event_time).getTime(),N=u.duration_ms??x-E):n.duration_ms!==null?(N=n.duration_ms,x=E+N):y=!0,o.push({category:p,name:g||n.event_type,startTime:E,endTime:x,duration:N,eventId:n.event_id,pending:y})}return o}function U({events:a,childTasks:o,outline:m}){const[w,d]=W.useState(new Set),l=a.filter(t=>t.category!=="workflow");if(l.length===0)return null;const r=z(l);if(r.length===0)return null;const b=Date.now(),n=r.flatMap(t=>{const i=[t.startTime];return t.endTime?i.push(t.endTime):i.push(b),i}),p=Math.min(...n),f=Math.max(...n)-p||1,u=new Map;for(const t of r){const i=`${t.category}:${t.name}`,s=t.startTime-p,D=(t.endTime?t.endTime-p:b-p)-s,P={eventId:t.eventId,startPct:s/f*100,widthPct:Math.max(D/f*100,.5),duration:t.duration,label:`${t.name} — ${t.duration!==null?S(t.duration):"pending"} — ${new Date(t.startTime).toLocaleTimeString()}`,eventTime:new Date(t.startTime).toISOString(),pending:t.pending};u.has(i)||u.set(i,{name:t.name,category:t.category,segments:[]}),u.get(i).segments.push(P)}const E=Array.from(u.values()),x=5,N=Array.from({length:x+1},(t,i)=>({pct:i/x*100,label:S(Math.round(i/x*f))})),y=[...new Set(r.map(t=>t.category))],T=t=>{if(!(o!=null&&o.length))return;const i=t.attributes.activity_type;if(i)return o.find(s=>s.workflow_type===i)},_=t=>{d(i=>{const s=new Set(i);return s.has(t)?s.delete(t):s.add(t),s})},j=r.map(t=>t.eventId),V=j.length>0&&j.every(t=>w.has(t)),A=()=>{d(V?new Set:new Set(j))},M=(t,i)=>{var s,h;return i?B:m?((s=k[t])==null?void 0:s.outline)??"border-text-tertiary bg-transparent":((h=k[t])==null?void 0:h.bar)??"bg-text-tertiary"},O=t=>{var i;return m?((i=k[t])==null?void 0:i.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:A,className:"text-[10px] text-accent hover:underline",children:V?"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:[y.map(t=>{var i,s,h;return e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:`w-2 h-2 rounded-full ${m?`border ${((i=k[t])==null?void 0:i.outline)??"border-text-tertiary"}`:((s=k[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:((h=k[t])==null?void 0:h.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)}),r.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:N.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),E.map(t=>{const i=k[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 ${(i==null?void 0:i.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:G(t.name,28)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workflow-execution/SwimlaneTimeline.tsx",lineNumber:185,columnNumber:17},this),Y.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:[N.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 ${m?"border-2":""} ${w.has(s.eventId)?`${M(t.category,s.pending)} ring-2 ring-accent ring-offset-1`:`${M(t.category,s.pending)} hover:opacity-80`}`,style:{left:`${s.startPct}%`,width:`${s.widthPct}%`,minWidth:"4px"},title:s.label,onClick:()=>_(s.eventId),children:s.widthPct>8&&e.jsxDEV("span",{className:`absolute inset-0 flex items-center px-1.5 text-[9px] font-mono ${O(t.category)} truncate`,children:s.duration!==null?S(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 h=w.has(s.eventId),D=l.find(P=>P.event_id===s.eventId);return e.jsxDEV(R,{open:h,children:D&&e.jsxDEV("div",{className:"py-3",children:e.jsxDEV(J,{event:D,childTask:T(D),pending:s.pending,onClose:()=>_(D.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{J as E,U as S};
2
- //# sourceMappingURL=SwimlaneTimeline-RK4Yu66z.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwimlaneTimeline-RK4Yu66z.js","sources":["../../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 type { WorkflowExecutionEvent, LTTaskRecord } from '../../../api/types';\nimport { DateValue } from '../../../components/common/display/DateValue';\nimport { DurationValue } from '../../../components/common/display/DurationValue';\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\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\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 const childInput = childTask ? safeParseJson(childTask.envelope) : null;\n const childOutput = childTask ? safeParseJson(childTask.data) : null;\n\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 <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 {/* Signal-specific: signal name */}\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 {/* Child workflow: awaited badge */}\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 {/* Timeline key */}\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 {/* Execution index */}\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 {/* Back-references */}\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 {/* Child workflow link — from event attributes (no matching task record) */}\n {!childTask && event.attributes.child_workflow_id && (\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 {/* Child workflow section — from matched task record */}\n {childTask && (\n <div className=\"space-y-3 border-t border-surface-border pt-3\">\n {/* Child link + status */}\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 {/* Input / Output side-by-side */}\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 {/* Input / Result side-by-side for activities and child workflows */}\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 // Signal payload — standalone (no result pairing)\n if (isSignal && input !== undefined) {\n return <JsonViewer data={input} label=\"Signal Payload\" variant=\"panel\" />;\n }\n\n return null;\n })()}\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","EventDetailPanel","event","childTask","pending","onClose","childInput","childOutput","jsxDEV","DurationValue","DateValue","Link","e","StatusBadge","JsonViewer","input","result","isSignal","isActivity","isChild","hasInput","hasResult","resultLabel","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","_","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 e}from"./index-BYZX9tOb.js";import{e as m,c as p,S as d,a1 as x}from"./vendor-icons-T4r2DSPD.js";const u={certified:{icon:x,color:"text-status-success"},configured:{icon:d,color:"text-status-info"},pipeline:{icon:p,color:"text-purple-400"},durable:{icon:m,color:"text-accent/75"}};function N({type:s,size:o="sm",certified:t,variant:n}){const c=o==="md"?"px-2.5 py-0.5 text-[11px] gap-1.5":"px-2 py-0.5 text-[10px] gap-1",l=o==="md"?"w-3 h-3":"w-2.5 h-2.5",r=n??(t?"certified":"durable"),{icon:i,color:a}=u[r];return e.jsxDEV("span",{className:`inline-flex items-center ${c} font-mono bg-accent/[0.06] text-text-secondary rounded-lg`,children:[e.jsxDEV(i,{className:`${l} shrink-0 ${a}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/WorkflowPill.tsx",lineNumber:31,columnNumber:7},this),s]},void 0,!0,{fileName:"/app/dashboard/src/components/common/display/WorkflowPill.tsx",lineNumber:30,columnNumber:5},this)}export{N as W};
2
- //# sourceMappingURL=WorkflowPill-CZqGslD6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkflowPill-CZqGslD6.js","sources":["../../src/components/common/display/WorkflowPill.tsx"],"sourcesContent":["import { Workflow, ShieldCheck, Settings, Wand2 } from 'lucide-react';\n\ntype WorkflowVariant = 'durable' | 'configured' | 'certified' | 'pipeline';\n\ninterface WorkflowPillProps {\n type: string;\n size?: 'sm' | 'md';\n /** @deprecated Use `variant` instead */\n certified?: boolean;\n variant?: WorkflowVariant;\n}\n\nconst VARIANT_CONFIG: Record<WorkflowVariant, { icon: typeof Workflow; color: string }> = {\n certified: { icon: ShieldCheck, color: 'text-status-success' },\n configured: { icon: Settings, color: 'text-status-info' },\n pipeline: { icon: Wand2, color: 'text-purple-400' },\n durable: { icon: Workflow, color: 'text-accent/75' },\n};\n\nexport function WorkflowPill({ type, size = 'sm', certified, variant }: WorkflowPillProps) {\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 const resolved = variant ?? (certified ? 'certified' : 'durable');\n const { icon: Icon, color: iconColor } = VARIANT_CONFIG[resolved];\n\n return (\n <span className={`inline-flex items-center ${sizeClass} font-mono bg-accent/[0.06] text-text-secondary rounded-lg`}>\n <Icon className={`${iconClass} shrink-0 ${iconColor}`} />\n {type}\n </span>\n );\n}\n"],"names":["VARIANT_CONFIG","ShieldCheck","Settings","Wand2","Workflow","WorkflowPill","type","size","certified","variant","sizeClass","iconClass","resolved","Icon","iconColor","jsxDEV"],"mappings":"6GAYA,MAAMA,EAAoF,CACxF,UAAY,CAAE,KAAMC,EAAa,MAAO,qBAAA,EACxC,WAAY,CAAE,KAAMC,EAAa,MAAO,kBAAA,EACxC,SAAY,CAAE,KAAMC,EAAa,MAAO,iBAAA,EACxC,QAAY,CAAE,KAAMC,EAAc,MAAO,gBAAA,CAC3C,EAEO,SAASC,EAAa,CAAE,KAAAC,EAAM,KAAAC,EAAO,KAAM,UAAAC,EAAW,QAAAC,GAA8B,CACzF,MAAMC,EAAYH,IAAS,KACvB,oCACA,gCACEI,EAAYJ,IAAS,KAAO,UAAY,cAExCK,EAAWH,IAAYD,EAAY,YAAc,WACjD,CAAE,KAAMK,EAAM,MAAOC,CAAA,EAAcd,EAAeY,CAAQ,EAEhE,OACEG,EAAAA,OAAC,OAAA,CAAK,UAAW,4BAA4BL,CAAS,6DACpD,SAAA,CAAAK,EAAAA,OAACF,GAAK,UAAW,GAAGF,CAAS,aAAaG,CAAS,IAAnD,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAuD,EACtDR,CAAA,CAAA,EAFH,OAAA,GAAA,CAAA,SAAA,gEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ"}
@@ -1,2 +0,0 @@
1
- import{j as e,S as D}from"./index-BYZX9tOb.js";import{a as d}from"./vendor-query-DLp59M9_.js";import{k as L,m as R,n as I,u as A}from"./yaml-workflows-DLwd2BOX.js";import{u as z}from"./useFilterParams-BUyLHcx_.js";import{u as F}from"./useExpandedRows-Cg9iq6Vy.js";import{S as T}from"./StatusBadge-xgb-lZku.js";import{P as V}from"./PageHeader-BcTVF9ul.js";import{F as $,a as B,b as W}from"./FilterBar-BiO8SOzc.js";import{E as q}from"./EmptyState-joNbd4gg.js";import{u as U}from"./useYamlActivityEvents-DN-PTgVx.js";import{b as Y,R as _}from"./helpers-BCix9c_m.js";import{X as O,Y as H,a4 as X,P as M,i as Z,Z as G,c as K}from"./vendor-icons-T4r2DSPD.js";import{L as Q,c as ee}from"./vendor-react-Co3Y8ikm.js";import{d as C,C as se}from"./helpers-B1BDxBZd.js";import"./BotPicker-Cg5iNEkm.js";import"./bots-DIM6lBoY.js";import"./TimeAgo-BZdLdrIh.js";const S={mcp:{border:"border-blue-500",text:"text-blue-500",icon:"MCP"},db:{border:"border-blue-500",text:"text-blue-500",icon:"DB"},llm:{border:"border-violet-500",text:"text-violet-500",icon:"LLM"},transform:{border:"border-emerald-500",text:"text-emerald-500",icon:"Map"}};function oe({steps:o,manifest:a,isComplete:r}){const t=a.filter(s=>s.type==="worker"),i=t.length,l=t.map(s=>{const n=o.find(b=>b.activityId===s.activity_id),m=s.tool_source||"mcp",g=S[m]||S.mcp;return{activityId:s.activity_id,title:s.title||s.mcp_tool_name||s.activity_id,toolName:s.mcp_tool_name,colors:g,status:(n==null?void 0:n.status)||"pending",error:n==null?void 0:n.error}});return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[11px] text-text-secondary mb-3",children:r?`All ${i} steps completed`:`Running step ${l.filter(s=>s.status==="completed").length+1} of ${i}...`},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:41,columnNumber:7},this),e.jsxDEV("div",{className:"space-y-0",children:l.map((s,n)=>{const m=n===l.length-1;return e.jsxDEV("div",{className:"flex items-stretch gap-2",children:[e.jsxDEV("div",{className:"flex flex-col items-center w-4 shrink-0",children:[e.jsxDEV("span",{className:`w-2.5 h-2.5 rounded-full shrink-0 border-2 transition-colors ${s.status==="completed"?"bg-status-success border-status-success":s.status==="running"?`${s.colors.border} bg-transparent animate-pulse`:s.status==="failed"?"bg-status-error border-status-error":"bg-surface-sunken border-surface-border"}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:52,columnNumber:17},this),!m&&e.jsxDEV("span",{className:`w-px flex-1 transition-colors ${s.status==="completed"?"bg-status-success/30":"bg-surface-border"}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:59,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:51,columnNumber:15},this),e.jsxDEV("div",{className:m?"":"pb-3",children:[e.jsxDEV("p",{className:`text-[11px] font-medium ${s.status==="running"?"text-text-primary":s.status==="completed"?"text-text-secondary":s.status==="failed"?"text-status-error":"text-text-tertiary"}`,children:s.title},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:65,columnNumber:17},this),s.toolName&&e.jsxDEV("span",{className:"text-[9px] text-text-tertiary font-mono",children:s.toolName},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:72,columnNumber:19},this),s.error&&e.jsxDEV("p",{className:"text-[9px] text-status-error mt-0.5",children:s.error},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:75,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:64,columnNumber:15},this)]},s.activityId,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:50,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:46,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:40,columnNumber:5},this)}function re({workflow:o,onClose:a}){const r=L(),[t,i]=d.useState(!1),[l,s]=d.useState({}),[n,m]=d.useState(""),[g,b]=d.useState(""),[N,v]=d.useState(""),[x,k]=d.useState(null),[j,c]=d.useState(null),{steps:p,isComplete:u}=U(x);d.useEffect(()=>{k(null),c(null),b(""),r.reset();const f=Y(o.input_schema);s(f),m(JSON.stringify(f,null,2)),i(!1)},[o.id]),d.useEffect(()=>{if(u&&x){const f=x,w=setTimeout(()=>{c({jobId:f}),k(null)},800);return()=>clearTimeout(w)}},[u,x]);const h=()=>{if(!t)m(JSON.stringify(l,null,2));else try{s(JSON.parse(n))}catch{}i(!t)},E=async()=>{b(""),c(null);let f;if(t)try{f=JSON.parse(n)}catch{b("Invalid JSON");return}else f={...l};try{const w=await r.mutateAsync({id:o.id,data:f,sync:!1,...N?{execute_as:N}:{}});w.job_id&&k(w.job_id)}catch{}},y=!!x,J=o.app_id||"longtail";return e.jsxDEV("div",{className:"border-l border-surface-border bg-surface-raised flex flex-col h-full",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border shrink-0",children:[e.jsxDEV("div",{className:"min-w-0",children:[e.jsxDEV("p",{className:"text-xs font-medium text-text-primary truncate",children:o.app_id},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:161,columnNumber:11},this),e.jsxDEV("code",{className:"text-[11px] font-mono text-accent truncate block",children:o.graph_topic},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:162,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:160,columnNumber:9},this),e.jsxDEV("button",{onClick:()=>{y||a()},className:"p-1 text-text-tertiary hover:text-text-primary shrink-0 ml-2",children:e.jsxDEV(O,{className:"w-4 h-4"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:165,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:164,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:159,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1 overflow-y-auto px-4 py-3 space-y-4",children:y?e.jsxDEV(oe,{steps:p,manifest:o.activity_manifest,isComplete:u},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:172,columnNumber:11},this):j?e.jsxDEV("div",{className:"space-y-3",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("svg",{className:"w-4 h-4 text-status-success",viewBox:"0 0 16 16",fill:"currentColor",children:e.jsxDEV("path",{d:"M8 1a7 7 0 110 14A7 7 0 018 1zm3.36 4.65a.5.5 0 00-.72 0L7 9.29 5.36 7.65a.5.5 0 10-.72.7l2 2a.5.5 0 00.72 0l4-4a.5.5 0 000-.7z"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:177,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:176,columnNumber:15},this),e.jsxDEV("p",{className:"text-xs font-medium text-status-success",children:"Workflow completed"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:179,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:175,columnNumber:13},this),e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV(Q,{to:`/mcp/executions/${encodeURIComponent(j.jobId)}?namespace=${encodeURIComponent(J)}`,className:"inline-flex items-center gap-1.5 text-xs text-accent hover:underline",children:[e.jsxDEV(H,{size:12},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:186,columnNumber:17},this)," View execution"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:182,columnNumber:15},this),e.jsxDEV("button",{onClick:()=>c(null),className:"btn-primary text-xs inline-flex items-center gap-1.5",children:[e.jsxDEV(X,{size:12},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:192,columnNumber:17},this)," Run again"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:188,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:181,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:174,columnNumber:11},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV(_,{selected:N,onChange:v},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:198,columnNumber:13},this),o.description&&e.jsxDEV("p",{className:"text-[11px] text-text-secondary leading-relaxed",children:o.description},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:201,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-1",children:[e.jsxDEV("label",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Input"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:207,columnNumber:17},this),e.jsxDEV("button",{onClick:h,className:"text-[10px] text-accent hover:underline",children:t?"Form view":"JSON view"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:208,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:206,columnNumber:15},this),t?e.jsxDEV("textarea",{value:n,onChange:f=>m(f.target.value),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 font-mono text-[11px] text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary resize-y",rows:6,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:214,columnNumber:17},this):e.jsxDEV("div",{className:"space-y-3 max-h-[300px] overflow-y-auto",children:[Object.entries(l).map(([f,w])=>e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:f},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:225,columnNumber:23},this),typeof w=="boolean"?e.jsxDEV("select",{value:String(w),onChange:P=>s({...l,[f]:P.target.value==="true"}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",children:[e.jsxDEV("option",{value:"true",children:"true"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:232,columnNumber:27},this),e.jsxDEV("option",{value:"false",children:"false"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:233,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:227,columnNumber:25},this):typeof w=="object"?e.jsxDEV("textarea",{value:JSON.stringify(w,null,2),onChange:P=>{try{s({...l,[f]:JSON.parse(P.target.value)})}catch{}},className:"w-full min-h-[60px] px-3 py-1.5 bg-surface-sunken border border-surface-border rounded-md font-mono text-xs text-text-primary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:236,columnNumber:25},this):e.jsxDEV("input",{type:typeof w=="number"?"number":"text",value:String(w??""),onChange:P=>s({...l,[f]:typeof w=="number"?Number(P.target.value):P.target.value}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:242,columnNumber:25},this)]},f,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:224,columnNumber:21},this)),Object.keys(l).length===0&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary italic",children:"No input fields defined"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:252,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:222,columnNumber:17},this),g&&e.jsxDEV("p",{className:"text-[11px] text-status-error mt-1",children:g},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:256,columnNumber:29},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:205,columnNumber:13},this),r.isError&&e.jsxDEV("div",{className:"bg-status-error/10 border border-status-error/20 rounded-md px-3 py-2",children:e.jsxDEV("p",{className:"text-[11px] text-status-error",children:r.error instanceof Error?r.error.message:"Invocation failed"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:261,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:260,columnNumber:15},this),e.jsxDEV("button",{onClick:E,disabled:r.isPending,className:"btn-primary text-xs disabled:opacity-50 inline-flex items-center gap-1.5",children:r.isPending?"Starting...":e.jsxDEV(e.Fragment,{children:[e.jsxDEV(M,{size:12},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:271,columnNumber:61},this)," Run"]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:271,columnNumber:59},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:266,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:197,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:170,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/WorkflowTestPanel.tsx",lineNumber:157,columnNumber:5},this)}function te({cronInput:o,setCronInput:a,setCron:r,hasCronSchedule:t,onSave:i,onClear:l}){return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-3",children:"Schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:24,columnNumber:9},this),e.jsxDEV("div",{className:"flex gap-3 items-start",children:[e.jsxDEV("div",{className:"flex-1",children:[e.jsxDEV("input",{type:"text",value:o,onChange:s=>{a(s.target.value),r.reset()},placeholder:"0 */6 * * *",className:"input font-mono text-sm w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:27,columnNumber:13},this),o.trim()&&C(o.trim())&&e.jsxDEV("p",{className:"text-xs text-text-secondary mt-1.5",children:C(o.trim())},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:38,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:26,columnNumber:11},this),e.jsxDEV("button",{onClick:i,disabled:r.isPending,className:"btn-primary text-xs shrink-0",children:r.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:43,columnNumber:11},this),t&&e.jsxDEV("button",{onClick:l,disabled:r.isPending,className:"btn-ghost text-xs text-status-error shrink-0",children:"Clear"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:51,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:25,columnNumber:9},this),r.isSuccess&&e.jsxDEV("p",{className:"text-[10px] text-status-success mt-2",children:"Schedule updated"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:62,columnNumber:11},this),r.error&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-2",children:r.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:65,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:23,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-sunken rounded-lg p-4",children:[e.jsxDEV(D,{className:"mb-2",children:"Common Patterns"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:71,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-1.5",children:se.map(([s,n])=>e.jsxDEV("button",{type:"button",onClick:()=>{a(s),r.reset()},className:"flex items-center gap-2 text-left py-0.5 group",children:[e.jsxDEV("code",{className:"font-mono text-[11px] text-accent group-hover:text-accent-hover",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:83,columnNumber:15},this),e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:n},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:86,columnNumber:15},this)]},s,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:74,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:72,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:70,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/cron/CronScheduleEditor.tsx",lineNumber:22,columnNumber:5},this)}function ae({workflow:o,onClose:a}){const r=R(),t=I(),[i,l]=d.useState(""),[s,n]=d.useState(""),[m,g]=d.useState(!1),[b,N]=d.useState({}),[v,x]=d.useState("{}");d.useEffect(()=>{l(o.cron_schedule??""),n(o.execute_as??""),r.reset(),t.reset();const u=o.cron_envelope||{},h=Object.keys(u).length>0?u:Y(o.input_schema);N(h),x(JSON.stringify(h,null,2)),g(!1)},[o.id]);const k=()=>{if(!m)x(JSON.stringify(b,null,2));else try{N(JSON.parse(v))}catch{}g(!m)},j=()=>{let u;if(m)try{u=JSON.parse(v)}catch{return}else u={...b};r.mutate({id:o.id,cron_schedule:i.trim(),cron_envelope:Object.keys(u).length>0?u:null,execute_as:s||null})},c=()=>{t.mutate(o.id,{onSuccess:()=>{l("")}})},p={isPending:r.isPending||t.isPending,isSuccess:r.isSuccess||t.isSuccess,error:r.error||t.error,reset:()=>{r.reset(),t.reset()}};return e.jsxDEV("div",{className:"border-l border-surface-border bg-surface-raised flex flex-col h-full",children:[e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-3 border-b border-surface-border shrink-0",children:[e.jsxDEV("div",{className:"min-w-0",children:[e.jsxDEV("p",{className:"text-xs font-medium text-text-primary truncate",children:"Cron Schedule"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:87,columnNumber:11},this),e.jsxDEV("code",{className:"text-[11px] font-mono text-accent truncate block",children:o.graph_topic},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:88,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:86,columnNumber:9},this),e.jsxDEV("button",{onClick:a,className:"p-1 text-text-tertiary hover:text-text-primary shrink-0 ml-2",children:e.jsxDEV(O,{className:"w-4 h-4"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:91,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:90,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:85,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1 overflow-y-auto px-4 py-3 space-y-4",children:[e.jsxDEV(_,{selected:s,onChange:n},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:97,columnNumber:9},this),e.jsxDEV(te,{cronInput:i,setCronInput:l,setCron:p,hasCronSchedule:!!o.cron_schedule,onSave:j,onClear:c},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:99,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between mb-1",children:[e.jsxDEV(D,{children:"Default Input"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:111,columnNumber:13},this),e.jsxDEV("button",{onClick:k,className:"text-[10px] text-accent hover:underline",children:m?"Form view":"JSON view"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:112,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:110,columnNumber:11},this),m?e.jsxDEV("textarea",{value:v,onChange:u=>x(u.target.value),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 font-mono text-[11px] text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary resize-y",rows:6,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:118,columnNumber:13},this):e.jsxDEV("div",{className:"space-y-3 max-h-[200px] overflow-y-auto",children:[Object.entries(b).map(([u,h])=>e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:u},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:129,columnNumber:19},this),typeof h=="boolean"?e.jsxDEV("select",{value:String(h),onChange:E=>N({...b,[u]:E.target.value==="true"}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary",children:[e.jsxDEV("option",{value:"true",children:"true"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:136,columnNumber:23},this),e.jsxDEV("option",{value:"false",children:"false"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:137,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:131,columnNumber:21},this):typeof h=="object"?e.jsxDEV("textarea",{value:JSON.stringify(h,null,2),onChange:E=>{try{N({...b,[u]:JSON.parse(E.target.value)})}catch{}},className:"w-full min-h-[60px] px-3 py-1.5 bg-surface-sunken border border-surface-border rounded-md font-mono text-xs text-text-primary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:140,columnNumber:21},this):e.jsxDEV("input",{type:typeof h=="number"?"number":"text",value:String(h??""),onChange:E=>N({...b,[u]:typeof h=="number"?Number(E.target.value):E.target.value}),className:"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:146,columnNumber:21},this)]},u,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:128,columnNumber:17},this)),Object.keys(b).length===0&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary italic",children:"No input fields defined"},void 0,!1,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:156,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:126,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:109,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:96,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/test/CronPanel.tsx",lineNumber:83,columnNumber:5},this)}function le(o){const a=new Map;for(const r of o){const t=a.get(r.app_id)??[];t.push(r),a.set(r.app_id,t)}return[...a.entries()].map(([r,t])=>{const i={active:0,deployed:1,draft:2,archived:3},l=t.reduce((n,m)=>(i[m.status]??9)<(i[n]??9)?m.status:n,t[0].status),s=t.reduce((n,m)=>m.updated_at>n?m.updated_at:n,t[0].updated_at);return{appId:r,workflows:t,toolCount:t.length,status:l,updatedAt:s}})}function ne(o,a){if(!a)return!0;const r=a.toLowerCase();return o.appId.toLowerCase().includes(r)?!0:o.workflows.some(t=>{var i,l;return t.graph_topic.toLowerCase().includes(r)||((i=t.name)==null?void 0:i.toLowerCase().includes(r))||((l=t.description)==null?void 0:l.toLowerCase().includes(r))})}function ie(o,a){if(!a)return o;const r=a.toLowerCase();return o.filter(t=>{var i,l;return t.graph_topic.toLowerCase().includes(r)||((i=t.name)==null?void 0:i.toLowerCase().includes(r))||((l=t.description)==null?void 0:l.toLowerCase().includes(r))})}function me({wf:o,onTry:a,onWizard:r,onCron:t}){const i=o.status==="active",l=!!o.cron_schedule;return e.jsxDEV("div",{onClick:i?a:void 0,className:`group/row flex items-center hover:bg-surface-hover/50 transition-colors border-b border-surface-border/30 ${i?"cursor-pointer":""}`,children:[e.jsxDEV("div",{className:"flex-1 pl-14 pr-6 py-2 min-w-0",children:[e.jsxDEV("code",{className:"text-xs font-mono text-accent-primary truncate block",children:o.graph_topic},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:31,columnNumber:9},this),o.description&&e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5 line-clamp-1",children:o.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:33,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:30,columnNumber:7},this),e.jsxDEV("div",{className:"w-28 px-6 py-2 whitespace-nowrap shrink-0",children:e.jsxDEV(T,{status:o.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:37,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:36,columnNumber:7},this),e.jsxDEV("div",{className:"w-20 px-3 py-2 flex justify-end gap-2 shrink-0",children:[i&&e.jsxDEV("button",{onClick:s=>{s.stopPropagation(),a()},className:"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent",title:"Test tool",children:e.jsxDEV(M,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:46,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:41,columnNumber:11},this),e.jsxDEV("button",{onClick:s=>{s.stopPropagation(),t()},className:l?"text-status-success":"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent",title:l?`Cron: ${o.cron_schedule}`:"Schedule cron",children:e.jsxDEV(G,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:56,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:49,columnNumber:9},this),o.source_workflow_id&&e.jsxDEV("button",{onClick:s=>{s.stopPropagation(),r()},className:"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent",title:"MCP Tool Compiler",children:e.jsxDEV(K,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:64,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:59,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:39,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:29,columnNumber:5},this)}function ce({server:o,expanded:a,onToggle:r,onTryTool:t,onWizard:i,onCron:l,visibleTools:s}){return e.jsxDEV(e.Fragment,{children:[e.jsxDEV("tr",{onClick:r,className:"group/row border-b transition-colors duration-100 cursor-pointer row-hover",children:[e.jsxDEV("td",{className:"px-6 py-3.5",children:e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("span",{className:`transition-transform duration-150 ${a?"rotate-90":""} text-text-tertiary`,children:e.jsxDEV(Z,{size:14},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:101,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:100,columnNumber:13},this),e.jsxDEV("p",{className:"text-sm text-text-primary font-medium font-mono",children:o.appId},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:103,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:99,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:98,columnNumber:9},this),e.jsxDEV("td",{className:"px-6 py-3.5 w-28 whitespace-nowrap",children:e.jsxDEV(T,{status:o.status},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:109,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:108,columnNumber:9},this),e.jsxDEV("td",{className:"w-12 text-center",children:e.jsxDEV("span",{className:"inline-flex items-center justify-center w-5 h-5 rounded-full border border-accent/30 text-[10px] font-medium text-accent",children:o.toolCount},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:114,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:113,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:93,columnNumber:7},this),e.jsxDEV("tr",{children:e.jsxDEV("td",{colSpan:5,className:"p-0 border-0",children:e.jsxDEV("div",{className:"grid transition-[grid-template-rows] duration-200 ease-in-out",style:{gridTemplateRows:a?"1fr":"0fr"},children:e.jsxDEV("div",{className:"overflow-hidden",children:[s.map(n=>e.jsxDEV(me,{wf:n,onTry:()=>t(n),onWizard:()=>i(n),onCron:()=>l(n)},n.id,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:129,columnNumber:17},this)),e.jsxDEV("div",{className:"h-1 bg-surface-sunken/20"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:131,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:127,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:123,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:122,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:121,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:92,columnNumber:5},this)}function Ve(){const o=ee(),{filters:a,setFilter:r}=z({filters:{status:"",server:"",search:""}}),{data:t,isLoading:i}=A({status:a.status||void 0,app_id:a.server||void 0,search:a.search||void 0,limit:200,offset:0}),l=(t==null?void 0:t.workflows)??[],s=d.useMemo(()=>le(l),[l]),n=d.useMemo(()=>[...new Set(l.map(p=>p.app_id))].sort().map(p=>({value:p,label:p})),[l]),m=d.useMemo(()=>a.search?s.filter(c=>ne(c,a.search)):s,[s,a.search]),{expandedIds:g,toggle:b}=F("lt:expanded:yaml-workflows"),[N,v]=d.useState(null),[x,k]=d.useState(null),j=N||x;return i?e.jsxDEV("div",{children:[e.jsxDEV(V,{title:"MCP Pipeline Tools"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:183,columnNumber:9},this),e.jsxDEV("div",{className:"animate-pulse space-y-0",children:Array.from({length:4}).map((c,p)=>e.jsxDEV("div",{className:"h-14 border-b last:border-b-0 px-6 flex items-center",children:e.jsxDEV("div",{className:"h-3 bg-surface-sunken rounded w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:187,columnNumber:15},this)},p,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:186,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:184,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:182,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV(V,{title:"MCP Pipeline Tools",actions:e.jsxDEV("button",{onClick:()=>o("/mcp/queries"),className:"btn-primary text-xs",children:"Design Pipeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:200,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:197,columnNumber:7},this),e.jsxDEV("p",{className:"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed",children:"Compiled from successful triage runs. Each workflow is a deterministic tool."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:206,columnNumber:7},this),e.jsxDEV($,{children:[e.jsxDEV(B,{label:"Search",value:a.search,onChange:c=>r("search",c),placeholder:"Server or tool name…"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:211,columnNumber:9},this),n.length>1&&e.jsxDEV(W,{label:"Server",value:a.server,onChange:c=>r("server",c),options:n},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:218,columnNumber:11},this),e.jsxDEV(W,{label:"Status",value:a.status,onChange:c=>r("status",c),options:[{value:"draft",label:"Draft"},{value:"deployed",label:"Deployed"},{value:"active",label:"Active"},{value:"archived",label:"Archived"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:225,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:210,columnNumber:7},this),e.jsxDEV("div",{className:"flex gap-0",children:[e.jsxDEV("div",{className:`${j?"flex-1 min-w-0":"w-full"} transition-all`,children:m.length===0?e.jsxDEV(q,{title:"No pipelines yet",description:"Use the MCP Tool Designer to create your first MCP tool."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:241,columnNumber:13},this):e.jsxDEV("table",{className:"w-full",children:[e.jsxDEV("thead",{children:e.jsxDEV("tr",{className:"border-b",children:[e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary",children:"Server / Tool"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:246,columnNumber:19},this),e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28",children:"Status"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:249,columnNumber:19},this),e.jsxDEV("th",{className:"sticky top-[2.75rem] z-10 bg-surface w-20"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:252,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:245,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:244,columnNumber:15},this),e.jsxDEV("tbody",{children:m.map(c=>e.jsxDEV(ce,{server:c,expanded:g.has(c.appId),onToggle:()=>b(c.appId),onTryTool:p=>{k(null),v(p)},onWizard:p=>{p.source_workflow_id&&o(`/mcp/queries/${p.source_workflow_id}?step=4`)},onCron:p=>{v(null),k(p)},visibleTools:ie(c.workflows,a.search)},c.appId,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:257,columnNumber:19},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:255,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:243,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:239,columnNumber:9},this),N&&e.jsxDEV("div",{className:"w-[380px] shrink-0 sticky top-0 h-[calc(100vh-12rem)]",children:e.jsxDEV(re,{workflow:N,onClose:()=>v(null)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:277,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:276,columnNumber:11},this),x&&e.jsxDEV("div",{className:"w-[380px] shrink-0 sticky top-0 h-[calc(100vh-12rem)]",children:e.jsxDEV(ae,{workflow:x,onClose:()=>k(null)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:286,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:285,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:238,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/YamlWorkflowsPage.tsx",lineNumber:196,columnNumber:5},this)}export{Ve as YamlWorkflowsPage};
2
- //# sourceMappingURL=YamlWorkflowsPage-VjdhnLmO.js.map