@hotmeshio/long-tail 0.1.3 → 0.1.5

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 (615) hide show
  1. package/README.md +118 -173
  2. package/build/examples/seed.js +1 -1
  3. package/build/examples/workflows/basic-echo/activities.d.ts +2 -2
  4. package/build/examples/workflows/basic-echo/activities.js +7 -7
  5. package/build/examples/workflows/basic-echo/index.js +1 -1
  6. package/build/examples/workflows/kitchen-sink/index.js +2 -2
  7. package/build/index.d.ts +12 -10
  8. package/build/index.js +15 -12
  9. package/build/lib/db/index.d.ts +18 -0
  10. package/build/{services → lib}/db/index.js +9 -0
  11. package/build/{services → lib}/db/migrate.js +3 -3
  12. package/build/{services → lib}/telemetry/honeycomb.d.ts +2 -2
  13. package/build/{services → lib}/telemetry/honeycomb.js +2 -2
  14. package/build/modules/defaults.d.ts +2 -0
  15. package/build/modules/defaults.js +3 -1
  16. package/build/routes/controlplane.js +1 -1
  17. package/build/routes/dba.js +4 -0
  18. package/build/routes/docs.d.ts +2 -0
  19. package/build/routes/docs.js +87 -0
  20. package/build/routes/escalations/bulk.js +120 -202
  21. package/build/routes/escalations/resolve.js +1 -1
  22. package/build/routes/escalations/single.js +1 -1
  23. package/build/routes/files.js +1 -1
  24. package/build/routes/index.js +2 -0
  25. package/build/routes/insight.js +2 -1
  26. package/build/routes/mcp.js +3 -2
  27. package/build/routes/oauth.js +1 -1
  28. package/build/routes/settings.js +4 -4
  29. package/build/routes/workflows/discovery.js +3 -3
  30. package/build/routes/workflows/invocation.js +1 -1
  31. package/build/routes/yaml-workflows/crud.js +1 -1
  32. package/build/routes/yaml-workflows/deployment.js +25 -0
  33. package/build/services/auth/bot-api-key.js +1 -1
  34. package/build/services/auth/index.d.ts +4 -0
  35. package/build/services/auth/index.js +17 -0
  36. package/build/services/auth/service-token.js +1 -1
  37. package/build/services/config/provider.js +1 -1
  38. package/build/services/config/read.js +1 -1
  39. package/build/services/config/write.js +1 -1
  40. package/build/services/controlplane/index.js +3 -4
  41. package/build/services/controlplane/quorum-bridge.js +2 -2
  42. package/build/services/cron/index.js +4 -5
  43. package/build/services/dba.d.ts +4 -0
  44. package/build/services/dba.js +3 -6
  45. package/build/services/escalation/bulk.js +1 -1
  46. package/build/services/escalation/crud.js +1 -1
  47. package/build/services/escalation/queries.js +1 -1
  48. package/build/services/export/client.js +2 -5
  49. package/build/services/export/index.js +14 -2
  50. package/build/services/hotmesh-utils.js +1 -1
  51. package/build/services/iam/bots.js +6 -12
  52. package/build/services/iam/context.d.ts +1 -1
  53. package/build/services/iam/context.js +5 -5
  54. package/build/services/iam/credentials.js +1 -1
  55. package/build/services/iam/ephemeral.js +8 -15
  56. package/build/services/iam/principal.js +3 -10
  57. package/build/services/iam/resolve.js +1 -1
  58. package/build/services/iam/sql.d.ts +10 -0
  59. package/build/services/iam/sql.js +42 -0
  60. package/build/services/insight/index.d.ts +1 -0
  61. package/build/services/insight/index.js +4 -6
  62. package/build/services/interceptor/activities/escalation.js +1 -1
  63. package/build/services/interceptor/activities/task.js +9 -6
  64. package/build/services/interceptor/activities/workflow.js +4 -5
  65. package/build/services/interceptor/activity-interceptor.d.ts +1 -1
  66. package/build/services/interceptor/activity-interceptor.js +5 -5
  67. package/build/services/interceptor/completion.js +1 -1
  68. package/build/services/interceptor/escalation.js +1 -1
  69. package/build/services/interceptor/index.js +4 -4
  70. package/build/services/interceptor/lifecycle.js +1 -1
  71. package/build/services/maintenance/index.js +4 -5
  72. package/build/services/mcp/adapter.js +1 -16
  73. package/build/services/mcp/client/connection.d.ts +1 -1
  74. package/build/services/mcp/client/connection.js +2 -2
  75. package/build/services/mcp/client/tools.js +1 -1
  76. package/build/services/mcp/db-server/index.js +1 -1
  77. package/build/services/mcp/db-server/tools.js +17 -4
  78. package/build/services/mcp/db.js +1 -1
  79. package/build/services/mcp/playwright-server/index.js +1 -1
  80. package/build/services/mcp/playwright-server/lifecycle.js +1 -1
  81. package/build/services/mcp/playwright-server/schemas.d.ts +2 -2
  82. package/build/services/mcp/playwright-server/tools.js +1 -1
  83. package/build/services/mcp/register-tool.d.ts +11 -0
  84. package/build/services/mcp/register-tool.js +15 -0
  85. package/build/services/mcp/server.js +1 -1
  86. package/build/services/mcp/sql.d.ts +6 -0
  87. package/build/services/mcp/sql.js +34 -1
  88. package/build/services/mcp/workflow-compiler-server.js +1 -1
  89. package/build/services/mcp/workflow-server.js +1 -1
  90. package/build/services/mcp-runs/execution-builder.js +8 -6
  91. package/build/services/mcp-runs/queries.js +2 -2
  92. package/build/services/mcp-runs/sql.d.ts +4 -1
  93. package/build/services/mcp-runs/sql.js +23 -2
  94. package/build/services/namespace/index.js +1 -1
  95. package/build/services/oauth/db.js +9 -37
  96. package/build/services/oauth/index.js +1 -1
  97. package/build/services/oauth/providers/registry.js +1 -1
  98. package/build/services/oauth/sql.d.ts +7 -0
  99. package/build/services/oauth/sql.js +32 -0
  100. package/build/services/orchestrator/index.js +3 -3
  101. package/build/services/role/index.js +1 -1
  102. package/build/services/task/crud.js +1 -1
  103. package/build/services/task/process.js +1 -1
  104. package/build/services/task/resolve.js +1 -1
  105. package/build/services/user/auth.js +1 -1
  106. package/build/services/user/crud.js +1 -1
  107. package/build/services/user/rbac.js +1 -1
  108. package/build/services/user/roles.js +1 -1
  109. package/build/services/user/sql.d.ts +2 -0
  110. package/build/services/user/sql.js +3 -1
  111. package/build/services/yaml-workflow/db-utils.js +1 -1
  112. package/build/services/yaml-workflow/db.js +1 -1
  113. package/build/services/yaml-workflow/deployer-helpers.js +1 -1
  114. package/build/services/yaml-workflow/deployer.js +4 -4
  115. package/build/services/yaml-workflow/generator.js +1 -1
  116. package/build/services/yaml-workflow/input-analyzer-helpers.d.ts +6 -0
  117. package/build/services/yaml-workflow/input-analyzer-helpers.js +36 -7
  118. package/build/services/yaml-workflow/input-analyzer.js +16 -3
  119. package/build/services/yaml-workflow/pipeline/analyze.js +1 -1
  120. package/build/services/yaml-workflow/pipeline/build/dag.js +10 -5
  121. package/build/services/yaml-workflow/pipeline/compile/llm-call.js +1 -1
  122. package/build/services/yaml-workflow/pipeline/extract.js +5 -3
  123. package/build/services/yaml-workflow/pipeline/index.d.ts +5 -0
  124. package/build/services/yaml-workflow/pipeline/index.js +22 -0
  125. package/build/services/yaml-workflow/pipeline/validate.js +2 -2
  126. package/build/services/yaml-workflow/workers/callbacks.js +1 -1
  127. package/build/services/yaml-workflow/workers/events.js +2 -2
  128. package/build/services/yaml-workflow/workers/register.js +8 -8
  129. package/build/start/adapters.js +7 -7
  130. package/build/start/index.js +4 -4
  131. package/build/start/server.js +1 -1
  132. package/build/start/workers.d.ts +1 -2
  133. package/build/start/workers.js +8 -7
  134. package/build/system/activities/claude-code.js +1 -1
  135. package/build/system/activities/file-storage.js +1 -1
  136. package/build/system/activities/knowledge.d.ts +58 -0
  137. package/build/system/activities/knowledge.js +128 -0
  138. package/build/system/activities/sql.d.ts +9 -0
  139. package/build/system/activities/sql.js +41 -0
  140. package/build/system/activities/triage/context.js +1 -1
  141. package/build/system/activities/triage/discovery.d.ts +2 -14
  142. package/build/system/activities/triage/discovery.js +5 -161
  143. package/build/system/activities/triage/llm.d.ts +1 -8
  144. package/build/system/activities/triage/llm.js +2 -28
  145. package/build/system/activities/triage/tools.d.ts +1 -17
  146. package/build/system/activities/triage/tools.js +8 -167
  147. package/build/system/index.js +5 -4
  148. package/build/system/mcp-servers/admin/escalations.d.ts +5 -0
  149. package/build/system/mcp-servers/admin/escalations.js +149 -0
  150. package/build/system/mcp-servers/admin/index.d.ts +31 -0
  151. package/build/system/mcp-servers/admin/index.js +80 -0
  152. package/build/system/mcp-servers/admin/maintenance.d.ts +5 -0
  153. package/build/system/mcp-servers/admin/maintenance.js +58 -0
  154. package/build/system/mcp-servers/admin/mcp-servers.d.ts +5 -0
  155. package/build/system/mcp-servers/admin/mcp-servers.js +146 -0
  156. package/build/system/mcp-servers/admin/schemas.d.ts +411 -0
  157. package/build/system/mcp-servers/admin/schemas.js +177 -0
  158. package/build/system/mcp-servers/admin/tasks.d.ts +5 -0
  159. package/build/system/mcp-servers/admin/tasks.js +112 -0
  160. package/build/system/mcp-servers/admin/users.d.ts +5 -0
  161. package/build/system/mcp-servers/admin/users.js +167 -0
  162. package/build/system/mcp-servers/admin/workflow-config.d.ts +9 -0
  163. package/build/system/mcp-servers/admin/workflow-config.js +118 -0
  164. package/build/system/mcp-servers/admin/workflows.d.ts +6 -0
  165. package/build/system/mcp-servers/admin/workflows.js +138 -0
  166. package/build/system/mcp-servers/admin/yaml-workflows.d.ts +8 -0
  167. package/build/system/mcp-servers/admin/yaml-workflows.js +237 -0
  168. package/build/system/mcp-servers/claude-code.js +1 -1
  169. package/build/system/mcp-servers/db-query/index.js +1 -1
  170. package/build/system/mcp-servers/db-query/tools.js +17 -4
  171. package/build/system/mcp-servers/docs.d.ts +5 -0
  172. package/build/system/mcp-servers/docs.js +147 -0
  173. package/build/system/mcp-servers/file-storage.js +1 -1
  174. package/build/system/mcp-servers/http-fetch.js +1 -1
  175. package/build/system/mcp-servers/human-queue.js +1 -1
  176. package/build/system/mcp-servers/knowledge.d.ts +4 -0
  177. package/build/system/mcp-servers/knowledge.js +137 -0
  178. package/build/system/mcp-servers/oauth.js +1 -1
  179. package/build/system/mcp-servers/playwright/browser-lifecycle.js +1 -1
  180. package/build/system/mcp-servers/playwright/index.js +1 -1
  181. package/build/system/mcp-servers/playwright/schemas.d.ts +19 -8
  182. package/build/system/mcp-servers/playwright/schemas.js +3 -0
  183. package/build/system/mcp-servers/playwright/tools-navigation.js +22 -9
  184. package/build/system/mcp-servers/playwright/tools-run-script.js +20 -3
  185. package/build/system/mcp-servers/playwright/vision-helper.d.ts +12 -0
  186. package/build/system/mcp-servers/playwright/vision-helper.js +81 -0
  187. package/build/system/mcp-servers/playwright-cli/helpers.js +2 -2
  188. package/build/system/mcp-servers/playwright-cli/index.js +1 -1
  189. package/build/system/mcp-servers/playwright-cli/schemas.d.ts +28 -28
  190. package/build/system/mcp-servers/playwright-cli/schemas.js +1 -1
  191. package/build/system/mcp-servers/playwright-cli/tools-auth.js +1 -1
  192. package/build/system/mcp-servers/playwright-cli/tools-capture.js +4 -2
  193. package/build/system/mcp-servers/translation.d.ts +14 -0
  194. package/build/system/mcp-servers/translation.js +130 -0
  195. package/build/system/mcp-servers/vision-prompts.d.ts +2 -0
  196. package/build/system/mcp-servers/vision-prompts.js +9 -0
  197. package/build/system/mcp-servers/{document-vision.d.ts → vision.d.ts} +3 -4
  198. package/build/system/mcp-servers/vision.js +221 -0
  199. package/build/system/mcp-servers/workflow-compiler.js +1 -1
  200. package/build/system/mcp-servers/workflow.js +1 -1
  201. package/build/system/seed/index.js +13 -2
  202. package/build/system/seed/server-definitions.d.ts +1954 -322
  203. package/build/system/seed/server-definitions.js +65 -34
  204. package/build/system/seed/tool-manifests-admin.d.ts +1645 -0
  205. package/build/system/seed/tool-manifests-admin.js +45 -0
  206. package/build/system/seed/tool-manifests-browser.d.ts +1 -1
  207. package/build/system/seed/tool-manifests-browser.js +3 -3
  208. package/build/system/seed/tool-manifests-data.d.ts +62 -21
  209. package/build/system/seed/tool-manifests-data.js +55 -17
  210. package/build/system/seed/tool-manifests-knowledge.d.ts +171 -0
  211. package/build/system/seed/tool-manifests-knowledge.js +94 -0
  212. package/build/system/workflows/mcp-deterministic/index.js +1 -1
  213. package/build/system/workflows/mcp-query/activities/discovery.d.ts +2 -20
  214. package/build/system/workflows/mcp-query/activities/discovery.js +5 -163
  215. package/build/system/workflows/mcp-query/activities/llm.d.ts +1 -7
  216. package/build/system/workflows/mcp-query/activities/llm.js +2 -27
  217. package/build/system/workflows/mcp-query/activities/tool-executor.d.ts +0 -4
  218. package/build/system/workflows/mcp-query/activities/tool-executor.js +2 -106
  219. package/build/system/workflows/mcp-query/activities/tool-loader.d.ts +0 -9
  220. package/build/system/workflows/mcp-query/activities/tool-loader.js +2 -87
  221. package/build/system/workflows/mcp-query/index.js +55 -5
  222. package/build/system/workflows/mcp-query/prompts.d.ts +1 -2
  223. package/build/system/workflows/mcp-query/prompts.js +5 -32
  224. package/build/system/workflows/mcp-query/strategy-advisors.d.ts +3 -14
  225. package/build/system/workflows/mcp-query/strategy-advisors.js +4 -107
  226. package/build/system/workflows/mcp-query/types.d.ts +2 -10
  227. package/build/system/workflows/mcp-query/types.js +0 -1
  228. package/build/system/workflows/mcp-query-router/index.js +1 -1
  229. package/build/system/workflows/mcp-triage/index.d.ts +2 -2
  230. package/build/system/workflows/mcp-triage/index.js +39 -7
  231. package/build/system/workflows/mcp-triage/prompts.js +7 -14
  232. package/build/system/workflows/mcp-triage-deterministic/index.js +1 -1
  233. package/build/system/workflows/mcp-triage-router/index.js +1 -1
  234. package/build/system/workflows/shared/discovery.d.ts +35 -0
  235. package/build/system/workflows/shared/discovery.js +175 -0
  236. package/build/system/workflows/shared/index.d.ts +7 -0
  237. package/build/system/workflows/shared/index.js +18 -0
  238. package/build/system/workflows/shared/llm-caller.d.ts +8 -0
  239. package/build/system/workflows/shared/llm-caller.js +31 -0
  240. package/build/system/workflows/shared/prompts.d.ts +2 -0
  241. package/build/system/workflows/shared/prompts.js +32 -0
  242. package/build/system/workflows/shared/strategy-advisors.d.ts +14 -0
  243. package/build/system/workflows/shared/strategy-advisors.js +109 -0
  244. package/build/system/workflows/shared/tool-executor.d.ts +11 -0
  245. package/build/system/workflows/shared/tool-executor.js +111 -0
  246. package/build/system/workflows/shared/tool-loader.d.ts +19 -0
  247. package/build/system/workflows/shared/tool-loader.js +94 -0
  248. package/build/system/workflows/shared/types.d.ts +9 -0
  249. package/build/system/workflows/shared/types.js +2 -0
  250. package/build/system/workflows/tool-result-guard.d.ts +14 -0
  251. package/build/system/workflows/tool-result-guard.js +78 -0
  252. package/build/tsconfig.tsbuildinfo +1 -1
  253. package/build/types/user.d.ts +2 -0
  254. package/build/vitest.config.d.ts +1 -1
  255. package/build/vitest.integration.config.d.ts +1 -1
  256. package/build/workers/index.js +2 -8
  257. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js +2 -0
  258. package/dashboard/dist/assets/AdminDashboard-CTyAMUJR.js.map +1 -0
  259. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js +2 -0
  260. package/dashboard/dist/assets/AvailableEscalationsPage-BMXV3Q4l.js.map +1 -0
  261. package/dashboard/dist/assets/BotPicker-C51nKFEu.js +2 -0
  262. package/dashboard/dist/assets/{BotPicker-D6FYW1Gt.js.map → BotPicker-C51nKFEu.js.map} +1 -1
  263. package/dashboard/dist/assets/CollapsibleSection-BSyfd8uL.js +2 -0
  264. package/dashboard/dist/assets/{CollapsibleSection-Cxk4wvjT.js.map → CollapsibleSection-BSyfd8uL.js.map} +1 -1
  265. package/dashboard/dist/assets/ConfirmDeleteModal-CBdhia5T.js +2 -0
  266. package/dashboard/dist/assets/{ConfirmDeleteModal-FSXyKjaB.js.map → ConfirmDeleteModal-CBdhia5T.js.map} +1 -1
  267. package/dashboard/dist/assets/CopyableId-dGlewBCS.js +2 -0
  268. package/dashboard/dist/assets/{CopyableId-CBdxWfp8.js.map → CopyableId-dGlewBCS.js.map} +1 -1
  269. package/dashboard/dist/assets/CredentialsPage-CoBNFSAu.js +2 -0
  270. package/dashboard/dist/assets/{CredentialsPage-Ikzsot0w.js.map → CredentialsPage-CoBNFSAu.js.map} +1 -1
  271. package/dashboard/dist/assets/CustomDurationPicker-BataWFj8.js +2 -0
  272. package/dashboard/dist/assets/{CustomDurationPicker-CAninCbl.js.map → CustomDurationPicker-BataWFj8.js.map} +1 -1
  273. package/dashboard/dist/assets/DataTable-B3uf5CCo.js +2 -0
  274. package/dashboard/dist/assets/DataTable-B3uf5CCo.js.map +1 -0
  275. package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js +2 -0
  276. package/dashboard/dist/assets/ElapsedCell-G5oSwTpT.js.map +1 -0
  277. package/dashboard/dist/assets/EmptyState-BChBJNGS.js +2 -0
  278. package/dashboard/dist/assets/{EmptyState-2CmV-IaS.js.map → EmptyState-BChBJNGS.js.map} +1 -1
  279. package/dashboard/dist/assets/EscalationsOverview-CxUv8xjG.js +2 -0
  280. package/dashboard/dist/assets/{EscalationsOverview-GXYFPASS.js.map → EscalationsOverview-CxUv8xjG.js.map} +1 -1
  281. package/dashboard/dist/assets/EventTable-CVt8B0BZ.js +2 -0
  282. package/dashboard/dist/assets/{EventTable-B01oJf6Y.js.map → EventTable-CVt8B0BZ.js.map} +1 -1
  283. package/dashboard/dist/assets/FilterBar-CShf0oe7.js +2 -0
  284. package/dashboard/dist/assets/{FilterBar-Ck4K4rzu.js.map → FilterBar-CShf0oe7.js.map} +1 -1
  285. package/dashboard/dist/assets/McpOverview-CbaZRnJl.js +2 -0
  286. package/dashboard/dist/assets/{McpOverview-JkvRcX2e.js.map → McpOverview-CbaZRnJl.js.map} +1 -1
  287. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js +5 -0
  288. package/dashboard/dist/assets/McpQueryDetailPage-CGoR9XK6.js.map +1 -0
  289. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js +2 -0
  290. package/dashboard/dist/assets/McpQueryPage-BjXoYQuU.js.map +1 -0
  291. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js +2 -0
  292. package/dashboard/dist/assets/McpRunDetailPage-DLkA5Aar.js.map +1 -0
  293. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js +2 -0
  294. package/dashboard/dist/assets/McpRunsPage-DCh9n11D.js.map +1 -0
  295. package/dashboard/dist/assets/Modal-CI5RBPOQ.js +2 -0
  296. package/dashboard/dist/assets/{Modal-B4rbIVAn.js.map → Modal-CI5RBPOQ.js.map} +1 -1
  297. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js +2 -0
  298. package/dashboard/dist/assets/OperatorDashboard-Dc80suXd.js.map +1 -0
  299. package/dashboard/dist/assets/PageHeader-SMD9qtOO.js +2 -0
  300. package/dashboard/dist/assets/PageHeader-SMD9qtOO.js.map +1 -0
  301. package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js +2 -0
  302. package/dashboard/dist/assets/PageHeaderWithStats-TikLQsTp.js.map +1 -0
  303. package/dashboard/dist/assets/PriorityBadge-CQ0EsLTA.js +2 -0
  304. package/dashboard/dist/assets/{PriorityBadge-DfQY9St9.js.map → PriorityBadge-CQ0EsLTA.js.map} +1 -1
  305. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js +2 -0
  306. package/dashboard/dist/assets/ProcessDetailPage-B2GKuGzk.js.map +1 -0
  307. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js +2 -0
  308. package/dashboard/dist/assets/ProcessesListPage-CTjI3Wn6.js.map +1 -0
  309. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js +2 -0
  310. package/dashboard/dist/assets/RefreshButton-BcQDObrv.js.map +1 -0
  311. package/dashboard/dist/assets/RolePill-Crj4TH5p.js +2 -0
  312. package/dashboard/dist/assets/{RolePill-BTPa8L-P.js.map → RolePill-Crj4TH5p.js.map} +1 -1
  313. package/dashboard/dist/assets/RolesPage-C_RInUwS.js +2 -0
  314. package/dashboard/dist/assets/RolesPage-C_RInUwS.js.map +1 -0
  315. package/dashboard/dist/assets/RowActions-Cp5HyK_w.js +2 -0
  316. package/dashboard/dist/assets/{RowActions-Dg-Fsm5O.js.map → RowActions-Cp5HyK_w.js.map} +1 -1
  317. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js +2 -0
  318. package/dashboard/dist/assets/RunAsSelector-BhyWtofX.js.map +1 -0
  319. package/dashboard/dist/assets/StatCard-BKZLSgNV.js +2 -0
  320. package/dashboard/dist/assets/{StatCard-DlgF0CJC.js.map → StatCard-BKZLSgNV.js.map} +1 -1
  321. package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js +2 -0
  322. package/dashboard/dist/assets/StatusBadge-BYNGGZK5.js.map +1 -0
  323. package/dashboard/dist/assets/StickyPagination-CTosgiU2.js +2 -0
  324. package/dashboard/dist/assets/{StickyPagination-F9FZsRy9.js.map → StickyPagination-CTosgiU2.js.map} +1 -1
  325. package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js +2 -0
  326. package/dashboard/dist/assets/SwimlaneTimeline-ylG5Ps1s.js.map +1 -0
  327. package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js +2 -0
  328. package/dashboard/dist/assets/TaskDetailPage-C9pDGdD2.js.map +1 -0
  329. package/dashboard/dist/assets/TaskQueuePill-BtJbZTT0.js +2 -0
  330. package/dashboard/dist/assets/{TaskQueuePill-awmtb0qw.js.map → TaskQueuePill-BtJbZTT0.js.map} +1 -1
  331. package/dashboard/dist/assets/TasksListPage-DtFLUEhg.js +2 -0
  332. package/dashboard/dist/assets/{TasksListPage-C_QF23c1.js.map → TasksListPage-DtFLUEhg.js.map} +1 -1
  333. package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js +2 -0
  334. package/dashboard/dist/assets/TimeAgo-WuM6xImZ.js.map +1 -0
  335. package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js +2 -0
  336. package/dashboard/dist/assets/TimestampCell-IVL_-Upy.js.map +1 -0
  337. package/dashboard/dist/assets/UserName-DU9qeg13.js +2 -0
  338. package/dashboard/dist/assets/{UserName-DaP4YAKr.js.map → UserName-DU9qeg13.js.map} +1 -1
  339. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js +2 -0
  340. package/dashboard/dist/assets/WorkflowExecutionPage-DOocX81f.js.map +1 -0
  341. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js +2 -0
  342. package/dashboard/dist/assets/WorkflowPill-Diw8iWBP.js.map +1 -0
  343. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js +2 -0
  344. package/dashboard/dist/assets/WorkflowsDashboard-DDtUIrTy.js.map +1 -0
  345. package/dashboard/dist/assets/WorkflowsOverview-CPuvA4t3.js +2 -0
  346. package/dashboard/dist/assets/{WorkflowsOverview-D9OzzQqw.js.map → WorkflowsOverview-CPuvA4t3.js.map} +1 -1
  347. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js +2 -0
  348. package/dashboard/dist/assets/YamlWorkflowsPage-DlwwkluN.js.map +1 -0
  349. package/dashboard/dist/assets/{bots-BkKVMbUW.js → bots-BPiZXf2h.js} +2 -2
  350. package/dashboard/dist/assets/{bots-BkKVMbUW.js.map → bots-BPiZXf2h.js.map} +1 -1
  351. package/dashboard/dist/assets/constants-BHkpVaqx.js +2 -0
  352. package/dashboard/dist/assets/constants-BHkpVaqx.js.map +1 -0
  353. package/dashboard/dist/assets/escalation-DTY_OKRh.js +2 -0
  354. package/dashboard/dist/assets/escalation-DTY_OKRh.js.map +1 -0
  355. package/dashboard/dist/assets/escalation-columns-C91fHSkp.js +2 -0
  356. package/dashboard/dist/assets/{escalation-columns-D6aqStaY.js.map → escalation-columns-C91fHSkp.js.map} +1 -1
  357. package/dashboard/dist/assets/helpers-DBUZ9pnG.js +2 -0
  358. package/dashboard/dist/assets/helpers-DBUZ9pnG.js.map +1 -0
  359. package/dashboard/dist/assets/index-BOeA-gfK.js +17 -0
  360. package/dashboard/dist/assets/{index-X85K5bHC.js.map → index-BOeA-gfK.js.map} +1 -1
  361. package/dashboard/dist/assets/index-BZ6K_kmL.js +3 -0
  362. package/dashboard/dist/assets/index-BZ6K_kmL.js.map +1 -0
  363. package/dashboard/dist/assets/index-Bpm0yeoi.js +2 -0
  364. package/dashboard/dist/assets/index-Bpm0yeoi.js.map +1 -0
  365. package/dashboard/dist/assets/index-BtOwLI0K.js +2 -0
  366. package/dashboard/dist/assets/{index-DTPzZr_X.js.map → index-BtOwLI0K.js.map} +1 -1
  367. package/dashboard/dist/assets/index-CBF3ZvRZ.js +6 -0
  368. package/dashboard/dist/assets/index-CBF3ZvRZ.js.map +1 -0
  369. package/dashboard/dist/assets/index-CDWOfCmi.js +2 -0
  370. package/dashboard/dist/assets/index-CDWOfCmi.js.map +1 -0
  371. package/dashboard/dist/assets/index-Ce6sL__n.js +2 -0
  372. package/dashboard/dist/assets/index-Ce6sL__n.js.map +1 -0
  373. package/dashboard/dist/assets/index-DSzSoku1.js +283 -0
  374. package/dashboard/dist/assets/index-DSzSoku1.js.map +1 -0
  375. package/dashboard/dist/assets/index-D_qEAYrg.js +2 -0
  376. package/dashboard/dist/assets/index-D_qEAYrg.js.map +1 -0
  377. package/dashboard/dist/assets/index-gCy9XX3W.css +1 -0
  378. package/dashboard/dist/assets/mcp-BzVpaaKF.js +2 -0
  379. package/dashboard/dist/assets/{mcp-blCW6IL7.js.map → mcp-BzVpaaKF.js.map} +1 -1
  380. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js +2 -0
  381. package/dashboard/dist/assets/mcp-query-wTuxTTCV.js.map +1 -0
  382. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js → mcp-runs-DmXYJD19.js} +2 -2
  383. package/dashboard/dist/assets/{mcp-runs-ChPbpvXK.js.map → mcp-runs-DmXYJD19.js.map} +1 -1
  384. package/dashboard/dist/assets/namespaces-DoGa7jc7.js +2 -0
  385. package/dashboard/dist/assets/{namespaces-BgbaC3ow.js.map → namespaces-DoGa7jc7.js.map} +1 -1
  386. package/dashboard/dist/assets/{roles-ZNrqqnQl.js → roles-wCdQ2Z7k.js} +2 -2
  387. package/dashboard/dist/assets/{roles-ZNrqqnQl.js.map → roles-wCdQ2Z7k.js.map} +1 -1
  388. package/dashboard/dist/assets/settings-DDe_L7JT.js +2 -0
  389. package/dashboard/dist/assets/{settings-eBRSE0mQ.js.map → settings-DDe_L7JT.js.map} +1 -1
  390. package/dashboard/dist/assets/tasks-3Hih8Bt7.js +2 -0
  391. package/dashboard/dist/assets/{tasks-tRqClPns.js.map → tasks-3Hih8Bt7.js.map} +1 -1
  392. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js → useFilterParams-BUyLHcx_.js} +2 -2
  393. package/dashboard/dist/assets/{useFilterParams-BaXUAkYK.js.map → useFilterParams-BUyLHcx_.js.map} +1 -1
  394. package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js → useNatsEvents-DeGKHFTX.js} +2 -2
  395. package/dashboard/dist/assets/{useNatsEvents-Xr43X1fG.js.map → useNatsEvents-DeGKHFTX.js.map} +1 -1
  396. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js → useYamlActivityEvents-B5dHec6Y.js} +2 -2
  397. package/dashboard/dist/assets/{useYamlActivityEvents-BO51u8tm.js.map → useYamlActivityEvents-B5dHec6Y.js.map} +1 -1
  398. package/dashboard/dist/assets/{users-tMvNyOo8.js → users-BTagPmGW.js} +2 -2
  399. package/dashboard/dist/assets/{users-tMvNyOo8.js.map → users-BTagPmGW.js.map} +1 -1
  400. package/dashboard/dist/assets/{vendor-icons-ZTAKVwGc.js → vendor-icons-DCLlGYO9.js} +112 -57
  401. package/dashboard/dist/assets/vendor-icons-DCLlGYO9.js.map +1 -0
  402. package/dashboard/dist/assets/vendor-query-DLp59M9_.js +35 -0
  403. package/dashboard/dist/assets/vendor-query-DLp59M9_.js.map +1 -0
  404. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js +26 -0
  405. package/dashboard/dist/assets/vendor-react-Co3Y8ikm.js.map +1 -0
  406. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js → workflows-B20dR3NE.js} +2 -2
  407. package/dashboard/dist/assets/{workflows-Cc4VHcrp.js.map → workflows-B20dR3NE.js.map} +1 -1
  408. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js +2 -0
  409. package/dashboard/dist/assets/yaml-workflows-CaLPMQha.js.map +1 -0
  410. package/dashboard/dist/index.html +5 -5
  411. package/docs/api/dba.md +81 -0
  412. package/docs/api/escalations.md +575 -0
  413. package/docs/api/exports.md +170 -0
  414. package/docs/api/maintenance.md +93 -0
  415. package/docs/api/mcp-runs.md +128 -0
  416. package/docs/api/mcp-servers.md +195 -0
  417. package/docs/api/namespaces.md +48 -0
  418. package/docs/api/roles.md +390 -0
  419. package/docs/api/service-accounts.md +188 -0
  420. package/docs/api/settings.md +33 -0
  421. package/docs/api/tasks.md +167 -0
  422. package/docs/api/users.md +180 -0
  423. package/docs/api/workflows.md +616 -0
  424. package/docs/api/yaml-workflows.md +312 -0
  425. package/docs/architecture.md +221 -0
  426. package/docs/auth.md +181 -0
  427. package/docs/cloud.md +272 -0
  428. package/docs/compilation.md +136 -0
  429. package/docs/contributing.md +56 -0
  430. package/docs/dashboard.md +145 -0
  431. package/docs/data.md +478 -0
  432. package/docs/escalation-strategies.md +264 -0
  433. package/docs/events.md +251 -0
  434. package/docs/iam.md +222 -0
  435. package/docs/img/01-login.png +0 -0
  436. package/docs/img/02-dashboard-home.png +0 -0
  437. package/docs/img/03-processes-list.png +0 -0
  438. package/docs/img/04-escalations-list.png +0 -0
  439. package/docs/img/05-mcp-servers.png +0 -0
  440. package/docs/img/06-mcp-pipelines.png +0 -0
  441. package/docs/img/07-workflows-list.png +0 -0
  442. package/docs/img/compilation/01-query-submit.png +0 -0
  443. package/docs/img/compilation/02-mcp-servers.png +0 -0
  444. package/docs/img/compilation/03-query-completed.png +0 -0
  445. package/docs/img/compilation/04-wizard-original.png +0 -0
  446. package/docs/img/compilation/05-wizard-timeline.png +0 -0
  447. package/docs/img/compilation/06-wizard-profile.png +0 -0
  448. package/docs/img/compilation/07-wizard-deploy.png +0 -0
  449. package/docs/img/compilation/08-wizard-test-modal.png +0 -0
  450. package/docs/img/compilation/09-wizard-test-compare.png +0 -0
  451. package/docs/img/compilation/10-wizard-verify.png +0 -0
  452. package/docs/logging.md +110 -0
  453. package/docs/maintenance.md +221 -0
  454. package/docs/mcp.md +715 -0
  455. package/docs/oauth-and-delegation.md +469 -0
  456. package/docs/telemetry.md +144 -0
  457. package/docs/workflows.md +695 -0
  458. package/lib/db/schemas/015_knowledge.sql +23 -0
  459. package/package.json +8 -9
  460. package/build/services/db/index.d.ts +0 -3
  461. package/build/services/mcp/vision-server.d.ts +0 -15
  462. package/build/services/mcp/vision-server.js +0 -214
  463. package/build/system/mcp-servers/document-vision.js +0 -228
  464. package/build/system/mcp-servers/prompts.d.ts +0 -4
  465. package/build/system/mcp-servers/prompts.js +0 -10
  466. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js +0 -2
  467. package/dashboard/dist/assets/AdminDashboard-jfacvOC7.js.map +0 -1
  468. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js +0 -2
  469. package/dashboard/dist/assets/AvailableEscalationsPage-BglLDoT8.js.map +0 -1
  470. package/dashboard/dist/assets/BotPicker-D6FYW1Gt.js +0 -2
  471. package/dashboard/dist/assets/CollapsibleSection-Cxk4wvjT.js +0 -2
  472. package/dashboard/dist/assets/ConfirmDeleteModal-FSXyKjaB.js +0 -2
  473. package/dashboard/dist/assets/CopyableId-CBdxWfp8.js +0 -2
  474. package/dashboard/dist/assets/CredentialsPage-Ikzsot0w.js +0 -2
  475. package/dashboard/dist/assets/CustomDurationPicker-CAninCbl.js +0 -2
  476. package/dashboard/dist/assets/DataTable-BDn1WBHS.js +0 -2
  477. package/dashboard/dist/assets/DataTable-BDn1WBHS.js.map +0 -1
  478. package/dashboard/dist/assets/EmptyState-2CmV-IaS.js +0 -2
  479. package/dashboard/dist/assets/EscalationsOverview-GXYFPASS.js +0 -2
  480. package/dashboard/dist/assets/EventTable-B01oJf6Y.js +0 -2
  481. package/dashboard/dist/assets/Field-DuFBAYhu.js +0 -2
  482. package/dashboard/dist/assets/Field-DuFBAYhu.js.map +0 -1
  483. package/dashboard/dist/assets/FilterBar-Ck4K4rzu.js +0 -2
  484. package/dashboard/dist/assets/McpOverview-JkvRcX2e.js +0 -2
  485. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js +0 -2
  486. package/dashboard/dist/assets/McpQueryDetailPage-CUMqhQdS.js.map +0 -1
  487. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js +0 -2
  488. package/dashboard/dist/assets/McpQueryPage-DRRhw4nN.js.map +0 -1
  489. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js +0 -2
  490. package/dashboard/dist/assets/McpRunDetailPage-CmPs5EvE.js.map +0 -1
  491. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js +0 -2
  492. package/dashboard/dist/assets/McpRunsPage-Dl5Y2u6k.js.map +0 -1
  493. package/dashboard/dist/assets/Modal-B4rbIVAn.js +0 -2
  494. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js +0 -2
  495. package/dashboard/dist/assets/OperatorDashboard-B56il28q.js.map +0 -1
  496. package/dashboard/dist/assets/PageHeader-CpWFly5S.js +0 -2
  497. package/dashboard/dist/assets/PageHeader-CpWFly5S.js.map +0 -1
  498. package/dashboard/dist/assets/PriorityBadge-DfQY9St9.js +0 -2
  499. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js +0 -2
  500. package/dashboard/dist/assets/ProcessDetailPage-CMLq4M7D.js.map +0 -1
  501. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js +0 -2
  502. package/dashboard/dist/assets/ProcessesListPage-CZ_HF06v.js.map +0 -1
  503. package/dashboard/dist/assets/RolePill-BTPa8L-P.js +0 -2
  504. package/dashboard/dist/assets/RolesPage-9grZW7yR.js +0 -2
  505. package/dashboard/dist/assets/RolesPage-9grZW7yR.js.map +0 -1
  506. package/dashboard/dist/assets/RowActions-Dg-Fsm5O.js +0 -2
  507. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js +0 -4
  508. package/dashboard/dist/assets/SimpleMarkdown-CBlvaWP4.js.map +0 -1
  509. package/dashboard/dist/assets/StatCard-DlgF0CJC.js +0 -2
  510. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js +0 -2
  511. package/dashboard/dist/assets/StatusBadge-TlC4jiig.js.map +0 -1
  512. package/dashboard/dist/assets/StickyPagination-F9FZsRy9.js +0 -2
  513. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js +0 -2
  514. package/dashboard/dist/assets/SwimlaneTimeline-7SiwATsZ.js.map +0 -1
  515. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js +0 -2
  516. package/dashboard/dist/assets/TaskDetailPage-CbPVTakt.js.map +0 -1
  517. package/dashboard/dist/assets/TaskQueuePill-awmtb0qw.js +0 -2
  518. package/dashboard/dist/assets/TasksListPage-C_QF23c1.js +0 -2
  519. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js +0 -2
  520. package/dashboard/dist/assets/TimeAgo-UPG6DoH8.js.map +0 -1
  521. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js +0 -2
  522. package/dashboard/dist/assets/TimestampCell-DoWMKg6w.js.map +0 -1
  523. package/dashboard/dist/assets/UserName-DaP4YAKr.js +0 -2
  524. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js +0 -5
  525. package/dashboard/dist/assets/VersionHistory-Bt7WBr6m.js.map +0 -1
  526. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js +0 -2
  527. package/dashboard/dist/assets/WorkflowExecutionPage-DjtAQ3hy.js.map +0 -1
  528. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js +0 -2
  529. package/dashboard/dist/assets/WorkflowPill-CCDSVaQj.js.map +0 -1
  530. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js +0 -2
  531. package/dashboard/dist/assets/WorkflowsDashboard-D8z9uBNB.js.map +0 -1
  532. package/dashboard/dist/assets/WorkflowsOverview-D9OzzQqw.js +0 -2
  533. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js +0 -3
  534. package/dashboard/dist/assets/YamlWorkflowDetailPage-DrDvvP62.js.map +0 -1
  535. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js +0 -2
  536. package/dashboard/dist/assets/YamlWorkflowsPage-COqiNCQK.js.map +0 -1
  537. package/dashboard/dist/assets/constants-CgaZfe5d.js +0 -2
  538. package/dashboard/dist/assets/constants-CgaZfe5d.js.map +0 -1
  539. package/dashboard/dist/assets/escalation-columns-D6aqStaY.js +0 -2
  540. package/dashboard/dist/assets/escalation-qalymbKB.js +0 -2
  541. package/dashboard/dist/assets/escalation-qalymbKB.js.map +0 -1
  542. package/dashboard/dist/assets/format-gXZXQ-HJ.js +0 -2
  543. package/dashboard/dist/assets/format-gXZXQ-HJ.js.map +0 -1
  544. package/dashboard/dist/assets/helpers-0gSleuzT.js +0 -2
  545. package/dashboard/dist/assets/helpers-0gSleuzT.js.map +0 -1
  546. package/dashboard/dist/assets/index-BWvMHed7.js +0 -6
  547. package/dashboard/dist/assets/index-BWvMHed7.js.map +0 -1
  548. package/dashboard/dist/assets/index-BaszoPO_.css +0 -1
  549. package/dashboard/dist/assets/index-Cn2jyj9A.js +0 -2
  550. package/dashboard/dist/assets/index-Cn2jyj9A.js.map +0 -1
  551. package/dashboard/dist/assets/index-D8VH6K8B.js +0 -54
  552. package/dashboard/dist/assets/index-D8VH6K8B.js.map +0 -1
  553. package/dashboard/dist/assets/index-D9SYwJsi.js +0 -3
  554. package/dashboard/dist/assets/index-D9SYwJsi.js.map +0 -1
  555. package/dashboard/dist/assets/index-DTPzZr_X.js +0 -2
  556. package/dashboard/dist/assets/index-D_6AB5BE.js +0 -2
  557. package/dashboard/dist/assets/index-D_6AB5BE.js.map +0 -1
  558. package/dashboard/dist/assets/index-S9Ks2Lj2.js +0 -2
  559. package/dashboard/dist/assets/index-S9Ks2Lj2.js.map +0 -1
  560. package/dashboard/dist/assets/index-X85K5bHC.js +0 -17
  561. package/dashboard/dist/assets/index-rjmgHlSH.js +0 -2
  562. package/dashboard/dist/assets/index-rjmgHlSH.js.map +0 -1
  563. package/dashboard/dist/assets/mcp-blCW6IL7.js +0 -2
  564. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js +0 -2
  565. package/dashboard/dist/assets/mcp-query-DoAyPbjC.js.map +0 -1
  566. package/dashboard/dist/assets/namespaces-BgbaC3ow.js +0 -2
  567. package/dashboard/dist/assets/settings-eBRSE0mQ.js +0 -2
  568. package/dashboard/dist/assets/tasks-tRqClPns.js +0 -2
  569. package/dashboard/dist/assets/vendor-icons-ZTAKVwGc.js.map +0 -1
  570. package/dashboard/dist/assets/vendor-query-B2UbickB.js +0 -18
  571. package/dashboard/dist/assets/vendor-query-B2UbickB.js.map +0 -1
  572. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js +0 -22
  573. package/dashboard/dist/assets/vendor-react-Cw8Gy8NJ.js.map +0 -1
  574. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js +0 -2
  575. package/dashboard/dist/assets/yaml-workflows-BL4V5CQy.js.map +0 -1
  576. /package/build/{services → lib}/db/migrate.d.ts +0 -0
  577. /package/build/{services → lib}/events/index.d.ts +0 -0
  578. /package/build/{services → lib}/events/index.js +0 -0
  579. /package/build/{services → lib}/events/memory.d.ts +0 -0
  580. /package/build/{services → lib}/events/memory.js +0 -0
  581. /package/build/{services → lib}/events/nats.d.ts +0 -0
  582. /package/build/{services → lib}/events/nats.js +0 -0
  583. /package/build/{services → lib}/events/publish.d.ts +0 -0
  584. /package/build/{services → lib}/events/publish.js +0 -0
  585. /package/build/{services → lib}/events/socketio.d.ts +0 -0
  586. /package/build/{services → lib}/events/socketio.js +0 -0
  587. /package/build/{services → lib}/logger/index.d.ts +0 -0
  588. /package/build/{services → lib}/logger/index.js +0 -0
  589. /package/build/{services → lib}/logger/pino.d.ts +0 -0
  590. /package/build/{services → lib}/logger/pino.js +0 -0
  591. /package/build/{services → lib}/storage/index.d.ts +0 -0
  592. /package/build/{services → lib}/storage/index.js +0 -0
  593. /package/build/{services → lib}/storage/local.d.ts +0 -0
  594. /package/build/{services → lib}/storage/local.js +0 -0
  595. /package/build/{services → lib}/storage/s3.d.ts +0 -0
  596. /package/build/{services → lib}/storage/s3.js +0 -0
  597. /package/build/{services → lib}/storage/types.d.ts +0 -0
  598. /package/build/{services → lib}/storage/types.js +0 -0
  599. /package/build/{services → lib}/telemetry/index.d.ts +0 -0
  600. /package/build/{services → lib}/telemetry/index.js +0 -0
  601. /package/{services → lib}/db/README.md +0 -0
  602. /package/{services → lib}/db/schemas/001_schema.sql +0 -0
  603. /package/{services → lib}/db/schemas/002_seed.sql +0 -0
  604. /package/{services → lib}/db/schemas/003_workflow_discovery.sql +0 -0
  605. /package/{services → lib}/db/schemas/004_query_router.sql +0 -0
  606. /package/{services → lib}/db/schemas/005_triage_router.sql +0 -0
  607. /package/{services → lib}/db/schemas/006_oauth.sql +0 -0
  608. /package/{services → lib}/db/schemas/007_security.sql +0 -0
  609. /package/{services → lib}/db/schemas/008_bot_accounts.sql +0 -0
  610. /package/{services → lib}/db/schemas/009_audit_trail.sql +0 -0
  611. /package/{services → lib}/db/schemas/010_credential_providers.sql +0 -0
  612. /package/{services → lib}/db/schemas/011_system_workflow_configs.sql +0 -0
  613. /package/{services → lib}/db/schemas/012_drop_modality.sql +0 -0
  614. /package/{services → lib}/db/schemas/013_execute_as.sql +0 -0
  615. /package/{services → lib}/db/schemas/014_ephemeral_credentials.sql +0 -0
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./index-DSzSoku1.js";import{a as y}from"./vendor-query-DLp59M9_.js";import{P as k}from"./PageHeader-SMD9qtOO.js";import{D as V}from"./DataTable-B3uf5CCo.js";import{F as C,b as v}from"./FilterBar-CShf0oe7.js";import{S}from"./StickyPagination-CTosgiU2.js";import{T as _}from"./TimestampCell-IVL_-Upy.js";import{E as W}from"./ElapsedCell-G5oSwTpT.js";import{W as F}from"./WorkflowPill-Diw8iWBP.js";import{E as L}from"./EmptyState-BChBJNGS.js";import{u as T}from"./useFilterParams-BUyLHcx_.js";import{a as $}from"./useNatsEvents-DeGKHFTX.js";import{u as R,a as q,b as z}from"./mcp-query-wTuxTTCV.js";import{n as d,o as P,p as D,q as I}from"./vendor-icons-DCLlGYO9.js";import{c as K}from"./vendor-react-Co3Y8ikm.js";function n(t){return t.status==="completed"||Number(t.status)===0?"completed":t.is_live?"in_progress":"failed"}function B(t){return[{key:"entity",label:"Workflow Type",className:"whitespace-nowrap",render:a=>{const o=n(a),r=o==="completed"?"fill-status-success text-status-success":o==="in_progress"?"fill-status-active text-status-active animate-pulse":"fill-status-error text-status-error";return e.jsxDEV("span",{className:"inline-flex items-center gap-2",children:[e.jsxDEV(I,{className:`w-2.5 h-2.5 shrink-0 ${r}`},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:38,columnNumber:13},this),e.jsxDEV(F,{type:a.entity||"unknown"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:39,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:37,columnNumber:11},this)}},{key:"workflow_id",label:"Workflow ID",render:a=>e.jsxDEV("span",{className:"text-xs font-mono text-text-primary truncate block",children:a.workflow_id},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:48,columnNumber:9},this)},{key:"created_at",label:"Created",className:"w-36",sortable:!0,render:a=>e.jsxDEV(_,{date:a.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:58,columnNumber:24},this)},{key:"duration",label:"Duration",render:a=>e.jsxDEV(W,{startDate:a.created_at,endDate:n(a)==="in_progress"?null:a.updated_at,isLive:n(a)==="in_progress"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:64,columnNumber:9},this)},{key:"actions",label:"",className:"w-28",render:a=>{const r=n(a)==="completed";return e.jsxDEV("span",{className:"opacity-0 group-hover/row:opacity-100 transition-opacity flex items-center gap-2",children:[e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/mcp/queries/${a.workflow_id}?step=1`)},className:"text-text-tertiary hover:text-accent transition-colors",title:"Describe",children:e.jsxDEV(d,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:85,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:80,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/mcp/queries/${a.workflow_id}?step=2`)},className:"text-text-tertiary hover:text-status-warning transition-colors",title:"Discover",children:e.jsxDEV(P,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:92,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:87,columnNumber:13},this),e.jsxDEV("button",{onClick:i=>{i.stopPropagation(),t(`/mcp/queries/${a.workflow_id}?step=3`)},className:`transition-colors ${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(D,{className:"w-3.5 h-3.5",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:100,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:94,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:79,columnNumber:11},this)}}]}const U=[{icon:d,color:"text-accent",title:"1. Describe",detail:"Write a specific prompt. Mention tools, URLs, credentials, and expected outputs."},{icon:P,color:"text-status-warning",title:"2. Discover",detail:"MCP selects servers, calls tools, and chains results. You review the execution."},{icon:D,color:"text-status-success",title:"3. Compile",detail:"Successful runs compile into deterministic pipelines. No LLM needed at runtime."}];function le(){const t=K(),[a,o]=y.useState(""),[r,i]=y.useState(!0),E=R(),M=q(),p=r?E:M,Q=B(t),{filters:m,setFilter:b,pagination:l,sort:w,setSort:j}=T({filters:{search:"",status:"",type:""},pageSize:20}),{data:c,isLoading:x}=z({limit:l.pageSize,offset:l.offset,search:m.search,status:m.status,entity:m.type||void 0});$();const N=async s=>{s.preventDefault();const u=a.trim();if(!u)return;const f=await p.mutateAsync({prompt:u});o(""),t(r?`/mcp/queries/${f.workflow_id}?prompt=${encodeURIComponent(u)}`:`/workflows/executions/${f.workflow_id}`)},h=(c==null?void 0:c.jobs)??[],g=(c==null?void 0:c.total)??0;return e.jsxDEV(e.Fragment,{children:[e.jsxDEV(k,{title:"Pipeline Designer"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:173,columnNumber:7},this),e.jsxDEV("p",{className:"text-sm text-text-secondary mb-8 leading-relaxed max-w-xl",children:"Describe a task and MCP discovers the right tools, executes the workflow, and compiles the result into a reusable pipeline."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:175,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-[1fr_240px] gap-6 mb-16",children:[e.jsxDEV("form",{onSubmit:N,children:[e.jsxDEV("div",{className:"rounded-lg border border-surface-border bg-surface-raised overflow-hidden h-full flex flex-col",children:[e.jsxDEV("div",{className:"flex items-start gap-3 flex-1",children:[e.jsxDEV(d,{className:"w-4 h-4 text-accent shrink-0 mt-3.5 ml-4",strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:185,columnNumber:15},this),e.jsxDEV("textarea",{value:a,onChange:s=>o(s.target.value),placeholder:"Describe what you want to accomplish. Be specific about which tools to use, what data to capture, and how results should be structured...",className:"flex-1 min-h-[160px] pr-4 py-3 bg-transparent text-sm text-text-primary placeholder:text-text-tertiary resize-none focus:outline-none border-none",onKeyDown:s=>{s.key==="Enter"&&(s.metaKey||s.ctrlKey)&&N(s)}},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:186,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:184,columnNumber:13},this),e.jsxDEV("div",{className:"flex items-center justify-between px-4 py-2 border-t border-surface-border bg-surface-sunken/30",children:[e.jsxDEV("label",{className:"flex items-center gap-2 cursor-pointer select-none group",children:[e.jsxDEV("input",{type:"checkbox",checked:r,onChange:s=>i(s.target.checked),className:"w-3.5 h-3.5 rounded border-border text-accent-primary focus:ring-accent-primary/50 bg-surface-sunken cursor-pointer"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:200,columnNumber:17},this),e.jsxDEV("span",{className:"text-[10px] text-text-secondary group-hover:text-text-primary transition-colors",children:"Force discovery"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:206,columnNumber:17},this),e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:r?"— skip compiled pipelines":"— prefer compiled pipelines"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:209,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:199,columnNumber:15},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:"Cmd+Enter"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:214,columnNumber:17},this),e.jsxDEV("button",{type:"submit",disabled:!a.trim()||p.isPending,className:"px-4 py-1.5 bg-accent text-white text-xs font-medium rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:p.isPending?"Starting...":"Design Pipeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:215,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:213,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:198,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:183,columnNumber:11},this),p.isError&&e.jsxDEV("p",{className:"mt-2 text-sm text-status-error",children:p.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:226,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:182,columnNumber:9},this),e.jsxDEV("div",{className:"space-y-4 pt-1",children:U.map(s=>e.jsxDEV("div",{className:"flex items-start gap-2.5",children:[e.jsxDEV(s.icon,{className:`w-3.5 h-3.5 mt-0.5 shrink-0 ${s.color}`,strokeWidth:1.5},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:234,columnNumber:15},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[11px] font-medium text-text-primary",children:s.title},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:236,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5 leading-relaxed",children:s.detail},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:237,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:235,columnNumber:15},this)]},s.title,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:233,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:231,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:180,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-3 mb-6",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary shrink-0",children:"Recent Pipeline Runs"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:246,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 border-t border-surface-border"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:247,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:245,columnNumber:7},this),e.jsxDEV(C,{children:[e.jsxDEV(v,{label:"Type",value:m.type,onChange:s=>b("type",s),options:[{value:"mcpQuery",label:"mcpQuery"},{value:"mcpTriage",label:"mcpTriage"}]},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:251,columnNumber:11},this),e.jsxDEV(v,{label:"Status",value:m.status,onChange:s=>b("status",s),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:260,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:250,columnNumber:7},this),e.jsxDEV(V,{columns:Q,data:h,keyFn:s=>s.workflow_id,onRowClick:s=>t(`/mcp/queries/${s.workflow_id}`),isLoading:x,emptyMessage:"",sort:w,onSort:j},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:272,columnNumber:7},this),!x&&h.length===0&&e.jsxDEV(L,{title:"No pipeline runs yet",description:"Describe a task above to start designing"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:284,columnNumber:9},this),e.jsxDEV(S,{page:l.page,pageSize:l.pageSize,total:g,totalPages:l.totalPages(g),onPageChange:l.setPage},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:287,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpQueryPage.tsx",lineNumber:172,columnNumber:5},this)}export{le as McpQueryPage};
2
+ //# sourceMappingURL=McpQueryPage-BjXoYQuU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpQueryPage-BjXoYQuU.js","sources":["../../src/pages/mcp/McpQueryPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { MessageSquare, Lightbulb, Layers, Circle } from 'lucide-react';\n\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { FilterBar, FilterSelect } from '../../components/common/data/FilterBar';\nimport { StickyPagination } from '../../components/common/data/StickyPagination';\nimport { TimestampCell } from '../../components/common/display/TimestampCell';\nimport { ElapsedCell } from '../../components/common/display/ElapsedCell';\nimport { WorkflowPill } from '../../components/common/display/WorkflowPill';\nimport { EmptyState } from '../../components/common/display/EmptyState';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { useWorkflowListEvents } from '../../hooks/useNatsEvents';\nimport { useMcpQueryJobs, useSubmitMcpQuery, useSubmitMcpQueryRouted } from '../../api/mcp-query';\nimport type { LTJob } from '../../api/types';\n\nfunction mapStatus(job: LTJob): string {\n if (job.status === 'completed') return 'completed';\n if (Number(job.status) === 0) return 'completed';\n if (job.is_live) return 'in_progress';\n return 'failed';\n}\n\nfunction buildColumns(navigate: ReturnType<typeof useNavigate>): Column<LTJob>[] {\n return [\n {\n key: 'entity',\n label: 'Workflow Type',\n className: 'whitespace-nowrap',\n render: (row) => {\n const s = mapStatus(row);\n const dotColor = s === 'completed' ? 'fill-status-success text-status-success'\n : s === 'in_progress' ? 'fill-status-active text-status-active animate-pulse'\n : 'fill-status-error text-status-error';\n return (\n <span className=\"inline-flex items-center gap-2\">\n <Circle className={`w-2.5 h-2.5 shrink-0 ${dotColor}`} />\n <WorkflowPill type={(row as any).entity || 'unknown'} />\n </span>\n );\n },\n },\n {\n key: 'workflow_id',\n label: 'Workflow ID',\n render: (row) => (\n <span className=\"text-xs font-mono text-text-primary truncate block\">\n {row.workflow_id}\n </span>\n ),\n },\n {\n key: 'created_at',\n label: 'Created',\n className: 'w-36',\n sortable: true,\n render: (row) => <TimestampCell date={row.created_at} />,\n },\n {\n key: 'duration',\n label: 'Duration',\n render: (row) => (\n <ElapsedCell\n startDate={row.created_at}\n endDate={mapStatus(row) === 'in_progress' ? null : row.updated_at}\n isLive={mapStatus(row) === 'in_progress'}\n />\n ),\n },\n {\n key: 'actions',\n label: '',\n className: 'w-28',\n render: (row) => {\n const s = mapStatus(row);\n const isComplete = s === 'completed';\n return (\n <span className=\"opacity-0 group-hover/row:opacity-100 transition-opacity flex items-center gap-2\">\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`/mcp/queries/${row.workflow_id}?step=1`); }}\n className=\"text-text-tertiary hover:text-accent transition-colors\"\n title=\"Describe\"\n >\n <MessageSquare className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`/mcp/queries/${row.workflow_id}?step=2`); }}\n className=\"text-text-tertiary hover:text-status-warning transition-colors\"\n title=\"Discover\"\n >\n <Lightbulb className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n <button\n onClick={(e) => { e.stopPropagation(); navigate(`/mcp/queries/${row.workflow_id}?step=3`); }}\n className={`transition-colors ${isComplete ? 'text-text-tertiary hover:text-status-success' : 'text-text-tertiary/30 cursor-not-allowed'}`}\n title={isComplete ? 'Compile' : 'Complete discovery first'}\n disabled={!isComplete}\n >\n <Layers className=\"w-3.5 h-3.5\" strokeWidth={1.5} />\n </button>\n </span>\n );\n },\n },\n ];\n}\n\nconst LIFECYCLE_STEPS = [\n {\n icon: MessageSquare,\n color: 'text-accent',\n title: '1. Describe',\n detail: 'Write a specific prompt. Mention tools, URLs, credentials, and expected outputs.',\n },\n {\n icon: Lightbulb,\n color: 'text-status-warning',\n title: '2. Discover',\n detail: 'MCP selects servers, calls tools, and chains results. You review the execution.',\n },\n {\n icon: Layers,\n color: 'text-status-success',\n title: '3. Compile',\n detail: 'Successful runs compile into deterministic pipelines. No LLM needed at runtime.',\n },\n];\n\nexport function McpQueryPage() {\n const navigate = useNavigate();\n const [promptText, setPromptText] = useState('');\n const [direct, setDirect] = useState(true);\n const submitDirect = useSubmitMcpQuery();\n const submitRouted = useSubmitMcpQueryRouted();\n const activeMutation = direct ? submitDirect : submitRouted;\n const columns = buildColumns(navigate);\n\n const { filters, setFilter, pagination, sort, setSort } = useFilterParams({\n filters: { search: '', status: '', type: '' },\n pageSize: 20,\n });\n\n const { data, isLoading } = useMcpQueryJobs({\n limit: pagination.pageSize,\n offset: pagination.offset,\n search: filters.search,\n status: filters.status,\n entity: filters.type || undefined,\n });\n\n useWorkflowListEvents();\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n const prompt = promptText.trim();\n if (!prompt) return;\n\n const result = await activeMutation.mutateAsync({ prompt });\n setPromptText('');\n if (direct) {\n navigate(`/mcp/queries/${result.workflow_id}?prompt=${encodeURIComponent(prompt)}`);\n } else {\n navigate(`/workflows/executions/${result.workflow_id}`);\n }\n };\n\n const jobs = data?.jobs ?? [];\n const total = data?.total ?? 0;\n\n return (\n <>\n <PageHeader title=\"Pipeline Designer\" />\n\n <p className=\"text-sm text-text-secondary mb-8 leading-relaxed max-w-xl\">\n Describe a task and MCP discovers the right tools, executes the workflow, and compiles the result into a reusable pipeline.\n </p>\n\n {/* Composer: textarea left, lifecycle steps right */}\n <div className=\"grid grid-cols-[1fr_240px] gap-6 mb-16\">\n {/* Prompt input */}\n <form onSubmit={handleSubmit}>\n <div className=\"rounded-lg border border-surface-border bg-surface-raised overflow-hidden h-full flex flex-col\">\n <div className=\"flex items-start gap-3 flex-1\">\n <MessageSquare className=\"w-4 h-4 text-accent shrink-0 mt-3.5 ml-4\" strokeWidth={1.5} />\n <textarea\n value={promptText}\n onChange={(e) => setPromptText(e.target.value)}\n placeholder=\"Describe what you want to accomplish. Be specific about which tools to use, what data to capture, and how results should be structured...\"\n className=\"flex-1 min-h-[160px] pr-4 py-3 bg-transparent text-sm text-text-primary placeholder:text-text-tertiary resize-none focus:outline-none border-none\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n handleSubmit(e);\n }\n }}\n />\n </div>\n <div className=\"flex items-center justify-between px-4 py-2 border-t border-surface-border bg-surface-sunken/30\">\n <label className=\"flex items-center gap-2 cursor-pointer select-none group\">\n <input\n type=\"checkbox\"\n checked={direct}\n onChange={(e) => setDirect(e.target.checked)}\n className=\"w-3.5 h-3.5 rounded border-border text-accent-primary focus:ring-accent-primary/50 bg-surface-sunken cursor-pointer\"\n />\n <span className=\"text-[10px] text-text-secondary group-hover:text-text-primary transition-colors\">\n Force discovery\n </span>\n <span className=\"text-[10px] text-text-tertiary\">\n {direct ? '— skip compiled pipelines' : '— prefer compiled pipelines'}\n </span>\n </label>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-[10px] text-text-tertiary\">Cmd+Enter</span>\n <button\n type=\"submit\"\n disabled={!promptText.trim() || activeMutation.isPending}\n className=\"px-4 py-1.5 bg-accent text-white text-xs font-medium rounded-md hover:bg-accent/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n {activeMutation.isPending ? 'Starting...' : 'Design Pipeline'}\n </button>\n </div>\n </div>\n </div>\n {activeMutation.isError && (\n <p className=\"mt-2 text-sm text-status-error\">{activeMutation.error.message}</p>\n )}\n </form>\n\n {/* Lifecycle steps — right sidebar */}\n <div className=\"space-y-4 pt-1\">\n {LIFECYCLE_STEPS.map((step) => (\n <div key={step.title} className=\"flex items-start gap-2.5\">\n <step.icon className={`w-3.5 h-3.5 mt-0.5 shrink-0 ${step.color}`} strokeWidth={1.5} />\n <div>\n <p className=\"text-[11px] font-medium text-text-primary\">{step.title}</p>\n <p className=\"text-[10px] text-text-tertiary mt-0.5 leading-relaxed\">{step.detail}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Section break */}\n <div className=\"flex items-center gap-3 mb-6\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary shrink-0\">Recent Pipeline Runs</p>\n <div className=\"flex-1 border-t border-surface-border\" />\n </div>\n\n <FilterBar>\n <FilterSelect\n label=\"Type\"\n value={filters.type}\n onChange={(v) => setFilter('type', v)}\n options={[\n { value: 'mcpQuery', label: 'mcpQuery' },\n { value: 'mcpTriage', label: 'mcpTriage' },\n ]}\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'completed', label: 'Completed' },\n { value: 'running', label: 'Running' },\n { value: 'failed', label: 'Failed' },\n ]}\n />\n </FilterBar>\n\n <DataTable\n columns={columns}\n data={jobs}\n keyFn={(row) => row.workflow_id}\n onRowClick={(row) => navigate(`/mcp/queries/${row.workflow_id}`)}\n isLoading={isLoading}\n emptyMessage=\"\"\n sort={sort}\n onSort={setSort}\n />\n\n {!isLoading && jobs.length === 0 && (\n <EmptyState title=\"No pipeline runs yet\" description=\"Describe a task above to start designing\" />\n )}\n\n <StickyPagination\n page={pagination.page}\n pageSize={pagination.pageSize}\n total={total}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n />\n </>\n );\n}\n"],"names":["mapStatus","job","buildColumns","navigate","row","s","dotColor","jsxDEV","Circle","WorkflowPill","TimestampCell","ElapsedCell","isComplete","e","MessageSquare","Lightbulb","Layers","LIFECYCLE_STEPS","McpQueryPage","useNavigate","promptText","setPromptText","useState","direct","setDirect","submitDirect","useSubmitMcpQuery","submitRouted","useSubmitMcpQueryRouted","activeMutation","columns","filters","setFilter","pagination","sort","setSort","useFilterParams","data","isLoading","useMcpQueryJobs","useWorkflowListEvents","handleSubmit","prompt","result","jobs","total","Fragment","PageHeader","step","FilterBar","FilterSelect","v","DataTable","EmptyState","StickyPagination"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{u as S,j as e,D as _,c as E,J as P,N as k}from"./index-DSzSoku1.js";import{b as C,a as T}from"./vendor-query-DLp59M9_.js";import{b as I}from"./mcp-runs-DmXYJD19.js";import{u as K}from"./settings-DDe_L7JT.js";import{S as U}from"./StatusBadge-BYNGGZK5.js";import{P as R}from"./PageHeader-SMD9qtOO.js";import{C as B}from"./CopyableId-dGlewBCS.js";import{C as N}from"./CollapsibleSection-BSyfd8uL.js";import{u as J,E as q}from"./EventTable-CVt8B0BZ.js";import{R as F}from"./RefreshButton-BcQDObrv.js";import{S as H}from"./SwimlaneTimeline-ylG5Ps1s.js";import{e as Q,f as $}from"./vendor-react-Co3Y8ikm.js";import"./vendor-icons-DCLlGYO9.js";import"./FilterBar-CShf0oe7.js";const A={running:"in_progress",completed:"completed",failed:"failed"};function re(){var f,D;const{jobId:t}=Q(),[p]=$(),r=p.get("namespace")||"longtail",x=C(),{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=T.useCallback(c=>{!t||c.workflowId!==t||x.invalidateQueries({queryKey:["mcpRunExecution",t]})},[t,x]);if(S(`${k}.activity.>`,y),j)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-64"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:53,columnNumber:9},this),e.jsxDEV("div",{className:"h-60 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:52,columnNumber:7},this);if(i||!a)return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"Pipeline Execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:62,columnNumber:9},this),e.jsxDEV("div",{className:"mt-4 text-center py-8",children:[e.jsxDEV("p",{className:"text-sm text-text-primary mb-1",children:(D=i==null?void 0:i.message)!=null&&D.includes("expired")?"Execution data is no longer available":"Unable to load execution"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:64,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:(i==null?void 0:i.message)??"The run could not be resolved."},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:61,columnNumber:7},this);const{events:d,summary: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(F,{onClick:()=>M(),isFetching:V},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:94,columnNumber:18},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:101,columnNumber:11},this),e.jsxDEV(U,{status:A[a.status]??a.status},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:102,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:100,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:108,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:109,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:107,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:112,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:113,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:111,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:116,columnNumber:13},this),e.jsxDEV(_,{ms:a.duration_ms,className:"font-mono text-text-primary"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:117,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:115,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:120,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:122,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:123,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:119,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:126,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: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)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:106,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(B,{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:137,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:144,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:135,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:148,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:149,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:151,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:153,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:154,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:155,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:147,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:134,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:98,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:166,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:165,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:170,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:169,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:164,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:163,columnNumber:9},this),e.jsxDEV(N,{title:"Execution Timeline",sectionKey:"timeline",isCollapsed:u("timeline"),onToggle:o,children:e.jsxDEV(H,{events:d,outline:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:178,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:177,columnNumber:9},this),e.jsxDEV(N,{title:"Events",sectionKey:"events",isCollapsed:u("events"),onToggle:o,children:e.jsxDEV(q,{events:d},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:183,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:182,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:161,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:195,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:196,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunDetailPage.tsx",lineNumber:194,columnNumber:5},this)}export{re as McpRunDetailPage};
2
+ //# sourceMappingURL=McpRunDetailPage-DLkA5Aar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpRunDetailPage-DLkA5Aar.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 { RefreshButton } from '../../components/common/data/RefreshButton';\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={<RefreshButton onClick={() => refetch()} isFetching={isFetching} />}\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","RefreshButton","StatusBadge","DurationValue","DateValue","CopyableId","Stat","CollapsibleSection","JsonViewer","SwimlaneTimeline","EventTable","label","value","muted"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as a}from"./index-DSzSoku1.js";import{a as m}from"./vendor-query-DLp59M9_.js";import{a as _,u as w}from"./mcp-runs-DmXYJD19.js";import{a as T}from"./yaml-workflows-CaLPMQha.js";import{u as F}from"./namespaces-DoGa7jc7.js";import{u as $}from"./useFilterParams-BUyLHcx_.js";import{D as A}from"./DataTable-B3uf5CCo.js";import{W as z}from"./WorkflowPill-Diw8iWBP.js";import{T as P}from"./TimestampCell-IVL_-Upy.js";import{E as U}from"./ElapsedCell-G5oSwTpT.js";import{P as O}from"./PageHeader-SMD9qtOO.js";import{F as B,b as f}from"./FilterBar-CShf0oe7.js";import{S as I}from"./StickyPagination-CTosgiU2.js";import{R as L}from"./RefreshButton-BcQDObrv.js";import{R as W,a as q}from"./RowActions-Cp5HyK_w.js";import{m as G}from"./vendor-icons-DCLlGYO9.js";import{c as H}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-BChBJNGS.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",n=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}${n}`,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(z,{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(P,{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(P,{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(U,{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(W,{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:n}=$({filters:{search:"",entity:"",status:"",namespace:""}}),[d,y]=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}=F(),b=m.useMemo(()=>{const s=new Set((l==null?void 0:l.app_ids)??[]);for(const i of(c==null?void 0:c.namespaces)??[])s.add(i.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}=_(o),{data:r,isLoading:E,refetch:j,isFetching:V}=w({app_id:o,limit:n.pageSize,offset:n.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)??[],i={running:0,failed:1,completed:2};return[...s].sort((h,x)=>{const v=i[h.status]??9,R=i[x.status]??9;return v!==R?v-R: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)),k=m.useMemo(()=>{const s=new Set(b);return o&&s.add(o),[...s].sort().map(i=>({value:i,label:i}))},[b,o]),C=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(i=>({value:i,label:i}))},[p==null?void 0:p.entities,t.entity]);return a.jsxDEV("div",{children:[a.jsxDEV(O,{title:"Pipeline Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:188,columnNumber:7},this),a.jsxDEV(B,{actions:a.jsxDEV(L,{onClick:()=>j(),isFetching:V},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:190,columnNumber:27},this),children:[a.jsxDEV(f,{label:"Namespace",value:o,onChange:s=>{u({namespace:s,entity:""})},options:k,required:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:191,columnNumber:9},this),a.jsxDEV("input",{type:"text",placeholder:"Search run ID...",value:d,onChange:s=>y(s.target.value),className:"input text-[11px] py-1 px-2 w-56"},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:200,columnNumber:9},this),a.jsxDEV(f,{label:"Tool",value:t.entity,onChange:s=>e("entity",s),options:C},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:207,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:213,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:190,columnNumber:7},this),a.jsxDEV(A,{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:225,columnNumber:7},this),a.jsxDEV(I,{page:n.page,totalPages:n.totalPages(N),onPageChange:n.setPage,total:N,pageSize:n.pageSize,onPageSizeChange:n.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/mcp/McpRunsPage.tsx",lineNumber:234,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-DCh9n11D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpRunsPage-DCh9n11D.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 { RefreshButton } from '../../components/common/data/RefreshButton';\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={<RefreshButton onClick={() => refetch()} isFetching={isFetching} />}>\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","RefreshButton","FilterSelect","v","DataTable","StickyPagination"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./index-DSzSoku1.js";import{a as n}from"./vendor-query-DLp59M9_.js";import{a as d}from"./vendor-react-Co3Y8ikm.js";function x({open:r,onClose:o,title:m,children:t,maxWidth:s}){return n.useEffect(()=>{if(!r)return;const a=l=>{l.key==="Escape"&&o()};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[r,o]),r?d.createPortal(e.jsxDEV("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsxDEV("div",{className:"absolute inset-0 bg-text-primary/30",onClick:o},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:27,columnNumber:7},this),e.jsxDEV("div",{className:`relative bg-surface-raised border border-surface-border rounded-lg shadow-xl w-full ${s??"max-w-md"} mx-4 max-h-[85vh] flex flex-col`,children:[e.jsxDEV("div",{className:"flex items-center justify-between px-6 py-4 border-b shrink-0",children:[e.jsxDEV("h2",{className:"text-sm font-medium text-text-primary",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:34,columnNumber:11},this),e.jsxDEV("button",{onClick:o,className:"text-text-tertiary hover:text-text-primary text-lg leading-none",children:"×"},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:35,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:33,columnNumber:9},this),e.jsxDEV("div",{className:"px-6 py-5 overflow-y-auto",children:t},void 0,!1,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:42,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:32,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/modal/Modal.tsx",lineNumber:25,columnNumber:5},this),document.body):null}export{x as M};
2
+ //# sourceMappingURL=Modal-CI5RBPOQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal-B4rbIVAn.js","sources":["../../src/components/common/modal/Modal.tsx"],"sourcesContent":["import { useEffect, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface ModalProps {\n open: boolean;\n onClose: () => void;\n title: string;\n children: ReactNode;\n maxWidth?: string;\n}\n\nexport function Modal({ open, onClose, title, children, maxWidth }: ModalProps) {\n useEffect(() => {\n if (!open) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return createPortal(\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-text-primary/30\"\n onClick={onClose}\n />\n {/* Dialog */}\n <div className={`relative bg-surface-raised border border-surface-border rounded-lg shadow-xl w-full ${maxWidth ?? 'max-w-md'} mx-4 max-h-[85vh] flex flex-col`}>\n <div className=\"flex items-center justify-between px-6 py-4 border-b shrink-0\">\n <h2 className=\"text-sm font-medium text-text-primary\">{title}</h2>\n <button\n onClick={onClose}\n className=\"text-text-tertiary hover:text-text-primary text-lg leading-none\"\n >\n &times;\n </button>\n </div>\n <div className=\"px-6 py-5 overflow-y-auto\">{children}</div>\n </div>\n </div>,\n document.body,\n );\n}\n"],"names":["Modal","open","onClose","title","children","maxWidth","useEffect","handler","e","createPortal","jsxs","jsx"],"mappings":"qGAWO,SAASA,EAAM,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,EAAO,SAAAC,EAAU,SAAAC,GAAwB,CAU9E,OATAC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACL,EAAM,OACX,MAAMM,EAAWC,GAAqB,CAChCA,EAAE,MAAQ,UAAUN,EAAA,CAC1B,EACA,gBAAS,iBAAiB,UAAWK,CAAO,EACrC,IAAM,SAAS,oBAAoB,UAAWA,CAAO,CAC9D,EAAG,CAACN,EAAMC,CAAO,CAAC,EAEbD,EAEEQ,EAAAA,aACLC,EAAAA,KAAC,MAAA,CAAI,UAAU,sDAEb,SAAA,CAAAC,EAAAA,IAAC,MAAA,CACC,UAAU,sCACV,QAAST,CAAA,CAAA,SAGV,MAAA,CAAI,UAAW,uFAAuFG,GAAY,UAAU,mCAC3H,SAAA,CAAAK,EAAAA,KAAC,MAAA,CAAI,UAAU,gEACb,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,wCAAyC,SAAAR,EAAM,EAC7DQ,EAAAA,IAAC,SAAA,CACC,QAAST,EACT,UAAU,kEACX,SAAA,GAAA,CAAA,CAED,EACF,EACAS,EAAAA,IAAC,MAAA,CAAI,UAAU,4BAA6B,SAAAP,CAAA,CAAS,CAAA,CAAA,CACvD,CAAA,EACF,EACA,SAAS,IAAA,EAvBO,IAyBpB"}
1
+ {"version":3,"file":"Modal-CI5RBPOQ.js","sources":["../../src/components/common/modal/Modal.tsx"],"sourcesContent":["import { useEffect, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface ModalProps {\n open: boolean;\n onClose: () => void;\n title: string;\n children: ReactNode;\n maxWidth?: string;\n}\n\nexport function Modal({ open, onClose, title, children, maxWidth }: ModalProps) {\n useEffect(() => {\n if (!open) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n document.addEventListener('keydown', handler);\n return () => document.removeEventListener('keydown', handler);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return createPortal(\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Backdrop */}\n <div\n className=\"absolute inset-0 bg-text-primary/30\"\n onClick={onClose}\n />\n {/* Dialog */}\n <div className={`relative bg-surface-raised border border-surface-border rounded-lg shadow-xl w-full ${maxWidth ?? 'max-w-md'} mx-4 max-h-[85vh] flex flex-col`}>\n <div className=\"flex items-center justify-between px-6 py-4 border-b shrink-0\">\n <h2 className=\"text-sm font-medium text-text-primary\">{title}</h2>\n <button\n onClick={onClose}\n className=\"text-text-tertiary hover:text-text-primary text-lg leading-none\"\n >\n &times;\n </button>\n </div>\n <div className=\"px-6 py-5 overflow-y-auto\">{children}</div>\n </div>\n </div>,\n document.body,\n );\n}\n"],"names":["Modal","open","onClose","title","children","maxWidth","useEffect","handler","e","createPortal","jsxDEV"],"mappings":"sIAWO,SAASA,EAAM,CAAE,KAAAC,EAAM,QAAAC,EAAS,MAAAC,EAAO,SAAAC,EAAU,SAAAC,GAAwB,CAU9E,OATAC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACL,EAAM,OACX,MAAMM,EAAWC,GAAqB,CAChCA,EAAE,MAAQ,UAAUN,EAAA,CAC1B,EACA,gBAAS,iBAAiB,UAAWK,CAAO,EACrC,IAAM,SAAS,oBAAoB,UAAWA,CAAO,CAC9D,EAAG,CAACN,EAAMC,CAAO,CAAC,EAEbD,EAEEQ,EAAAA,aACLC,EAAAA,OAAC,MAAA,CAAI,UAAU,sDAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CACC,UAAU,sCACV,QAASR,CAAA,EAFX,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,WAKC,MAAA,CAAI,UAAW,uFAAuFG,GAAY,UAAU,mCAC3H,SAAA,CAAAK,EAAAA,OAAC,MAAA,CAAI,UAAU,gEACb,SAAA,CAAAA,SAAC,KAAA,CAAG,UAAU,wCAAyC,SAAAP,CAAA,EAAvD,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA6D,EAC7DO,EAAAA,OAAC,SAAA,CACC,QAASR,EACT,UAAU,kEACX,SAAA,GAAA,EAHD,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAPF,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAQA,EACAQ,EAAAA,OAAC,MAAA,CAAI,UAAU,4BAA6B,SAAAN,CAAA,EAA5C,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAqD,CAAA,CAAA,EAVvD,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAWA,CAAA,CAAA,EAlBF,OAAA,GAAA,CAAA,SAAA,uDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAmBA,EACA,SAAS,IAAA,EAvBO,IAyBpB"}
@@ -0,0 +1,2 @@
1
+ import{k as D,s as E,q as y,r as O,j as e}from"./index-DSzSoku1.js";import{d as S}from"./useNatsEvents-DeGKHFTX.js";import{u as j}from"./roles-wCdQ2Z7k.js";import{u as C}from"./useFilterParams-BUyLHcx_.js";import{D as P}from"./DataTable-B3uf5CCo.js";import{P as R}from"./PageHeader-SMD9qtOO.js";import{S as V}from"./StickyPagination-CTosgiU2.js";import{R as _,a as k}from"./RowActions-Cp5HyK_w.js";import{a as w,T as F,E as L}from"./escalation-columns-C91fHSkp.js";import{R as T}from"./RefreshButton-BcQDObrv.js";import{x as z}from"./vendor-icons-DCLlGYO9.js";import{c as A}from"./vendor-react-Co3Y8ikm.js";import"./vendor-query-DLp59M9_.js";import"./EmptyState-BChBJNGS.js";import"./FilterBar-CShf0oe7.js";import"./PriorityBadge-CQ0EsLTA.js";import"./RolePill-Crj4TH5p.js";import"./WorkflowPill-Diw8iWBP.js";import"./TimestampCell-IVL_-Upy.js";import"./escalation-DTY_OKRh.js";function te(){S();const d=A(),{user:l}=D(),{filters:r,setFilter:c,pagination:s,sort:t,setSort:u}=C({filters:{role:"",type:"",priority:""}}),b=E(),{data:n}=j(),{data:p}=y(),{data:o,isLoading:g,error:i,refetch:f,isFetching:h}=O({assigned_to:l==null?void 0:l.userId,status:"pending",role:r.role||void 0,type:r.type||void 0,priority:r.priority?parseInt(r.priority):void 0,limit:s.pageSize,offset:s.offset,sort_by:t.sort_by||void 0,order:t.sort_by?t.order:void 0}),N=((o==null?void 0:o.escalations)??[]).filter(a=>a.assigned_until&&new Date(a.assigned_until)>new Date),m=(o==null?void 0:o.total)??0,x={key:"actions",label:"",render:a=>e.jsxDEV(_,{children:e.jsxDEV(k,{icon:z,title:"Release escalation",onClick:()=>b.mutate(a.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"},v=[F,...L,x];return e.jsxDEV("div",{children:[e.jsxDEV(R,{title:"My Escalations"},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:70,columnNumber:7},this),e.jsxDEV(w,{filters:r,setFilter:c,roles:(n==null?void 0:n.roles)??[],types:(p==null?void 0:p.types)??[],actions:e.jsxDEV(T,{onClick:()=>f(),isFetching:h},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:77,columnNumber:18},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:72,columnNumber:7},this),i&&e.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:81,columnNumber:9},this),e.jsxDEV(P,{columns:v,data:N,keyFn:a=>a.id,onRowClick:a=>d(`/escalations/detail/${a.id}`,{state:{from:"/escalations/queue"}}),isLoading:g,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:88,columnNumber:7},this),e.jsxDEV(V,{page:s.page,totalPages:s.totalPages(m),onPageChange:s.setPage,total:m,pageSize:s.pageSize,onPageSizeChange:s.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/operator/OperatorDashboard.tsx",lineNumber:99,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-Dc80suXd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperatorDashboard-Dc80suXd.js","sources":["../../src/pages/operator/OperatorDashboard.tsx"],"sourcesContent":["import { useNavigate } from 'react-router-dom';\nimport { LockOpen } from 'lucide-react';\nimport { useAuth } from '../../hooks/useAuth';\nimport { useEscalations, useEscalationTypes, useReleaseEscalation } from '../../api/escalations';\nimport { useEscalationListEvents } from '../../hooks/useNatsEvents';\nimport { useRoles } from '../../api/roles';\nimport { useFilterParams } from '../../hooks/useFilterParams';\nimport { DataTable, type Column } from '../../components/common/data/DataTable';\nimport { PageHeader } from '../../components/common/layout/PageHeader';\nimport { StickyPagination } from '../../components/common/data/StickyPagination';\nimport { RowAction, RowActionGroup } from '../../components/common/layout/RowActions';\nimport { ESCALATION_COLUMNS, TIME_LEFT_COLUMN, EscalationFilterBar } from './escalation-columns';\nimport { RefreshButton } from '../../components/common/data/RefreshButton';\nimport type { LTEscalationRecord } from '../../api/types';\n\nexport function OperatorDashboard() {\n useEscalationListEvents();\n const navigate = useNavigate();\n const { user } = useAuth();\n const { filters, setFilter, pagination, sort, setSort } = useFilterParams({\n filters: { role: '', type: '', priority: '' },\n });\n const release = useReleaseEscalation();\n const { data: rolesData } = useRoles();\n const { data: typesData } = useEscalationTypes();\n\n const { data, isLoading, error: queryError, refetch, isFetching } = useEscalations({\n assigned_to: user?.userId,\n status: 'pending',\n role: filters.role || undefined,\n type: filters.type || undefined,\n priority: filters.priority ? parseInt(filters.priority) : undefined,\n limit: pagination.pageSize,\n offset: pagination.offset,\n sort_by: sort.sort_by || undefined,\n order: sort.sort_by ? sort.order : undefined,\n });\n\n // Exclude expired claims — they're back in the available pool\n const activeClaims = (data?.escalations ?? []).filter(\n (e) => e.assigned_until && new Date(e.assigned_until) > new Date(),\n );\n const total = data?.total ?? 0;\n\n const releaseColumn: Column<LTEscalationRecord> = {\n key: 'actions',\n label: '',\n render: (row) => (\n <RowActionGroup>\n <RowAction\n icon={LockOpen}\n title=\"Release escalation\"\n onClick={() => release.mutate(row.id)}\n colorClass=\"text-text-tertiary hover:text-status-warning\"\n />\n </RowActionGroup>\n ),\n className: 'w-16 text-right',\n };\n\n // Time-left first (aligns with checkbox on All Escalations), then summary + base columns + actions\n const columns: Column<LTEscalationRecord>[] = [\n TIME_LEFT_COLUMN,\n ...ESCALATION_COLUMNS,\n releaseColumn,\n ];\n\n return (\n <div>\n <PageHeader title=\"My Escalations\" />\n\n <EscalationFilterBar\n filters={filters}\n setFilter={setFilter}\n roles={rolesData?.roles ?? []}\n types={typesData?.types ?? []}\n actions={<RefreshButton onClick={() => refetch()} isFetching={isFetching} />}\n />\n\n {queryError && (\n <div className=\"mb-4 px-4 py-3 rounded-md bg-status-error/10 border border-status-error/20 text-xs text-status-error\">\n {(queryError as Error).message === 'Session expired'\n ? 'Your session has expired. Please log in again.'\n : `Failed to load escalations: ${(queryError as Error).message}`}\n </div>\n )}\n\n <DataTable\n columns={columns}\n data={activeClaims}\n keyFn={(row) => row.id}\n onRowClick={(row) => navigate(`/escalations/detail/${row.id}`, { state: { from: '/escalations/queue' } })}\n isLoading={isLoading}\n emptyMessage={queryError ? 'Unable to load data' : 'No assigned escalations'}\n sort={sort}\n onSort={setSort}\n />\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n </div>\n );\n}\n"],"names":["OperatorDashboard","useEscalationListEvents","navigate","useNavigate","user","useAuth","filters","setFilter","pagination","sort","setSort","useFilterParams","release","useReleaseEscalation","rolesData","useRoles","typesData","useEscalationTypes","data","isLoading","queryError","refetch","isFetching","useEscalations","activeClaims","e","total","releaseColumn","row","jsxDEV","RowActionGroup","RowAction","LockOpen","columns","TIME_LEFT_COLUMN","ESCALATION_COLUMNS","PageHeader","EscalationFilterBar","RefreshButton","DataTable","StickyPagination"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./index-DSzSoku1.js";function r({title:m,actions:a}){return e.jsxDEV("div",{className:"flex items-center gap-4 mb-10",children:[e.jsxDEV("h1",{className:"text-3xl font-light text-text-primary flex-1",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeader.tsx",lineNumber:11,columnNumber:7},this),a&&e.jsxDEV("div",{className:"flex items-center gap-3",children:a},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeader.tsx",lineNumber:12,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeader.tsx",lineNumber:10,columnNumber:5},this)}export{r as P};
2
+ //# sourceMappingURL=PageHeader-SMD9qtOO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHeader-SMD9qtOO.js","sources":["../../src/components/common/layout/PageHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\ninterface PageHeaderProps {\n title: string;\n actions?: ReactNode;\n}\n\nexport function PageHeader({ title, actions }: PageHeaderProps) {\n return (\n <div className=\"flex items-center gap-4 mb-10\">\n <h1 className=\"text-3xl font-light text-text-primary flex-1\">{title}</h1>\n {actions && <div className=\"flex items-center gap-3\">{actions}</div>}\n </div>\n );\n}\n"],"names":["PageHeader","title","actions","jsxDEV"],"mappings":"wCAOO,SAASA,EAAW,CAAE,MAAAC,EAAO,QAAAC,GAA4B,CAC9D,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,gCACb,SAAA,CAAAA,SAAC,KAAA,CAAG,UAAU,+CAAgD,SAAAF,CAAA,EAA9D,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAoE,EACnEC,GAAWC,EAAAA,OAAC,MAAA,CAAI,UAAU,0BAA2B,SAAAD,CAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,CAAA,CAAA,EAFhE,OAAA,GAAA,CAAA,SAAA,6DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAGA,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./index-DSzSoku1.js";function l({title:o,subtitle:s,stats:t,actions:m}){return e.jsxDEV("div",{className:"flex items-baseline justify-between mb-10",children:[e.jsxDEV("div",{className:"flex items-center gap-4",children:[e.jsxDEV("h1",{className:"text-3xl font-light text-text-primary",children:o},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:25,columnNumber:9},this),s&&e.jsxDEV("span",{className:"text-sm text-text-tertiary font-light",children:s},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:24,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-5",children:[t==null?void 0:t.map(a=>e.jsxDEV("div",{className:"flex items-center gap-1.5 text-xs text-text-tertiary",children:[a.dotClass&&e.jsxDEV("span",{className:`w-1.5 h-1.5 rounded-full ${a.dotClass}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:33,columnNumber:28},this),e.jsxDEV("span",{children:a.label},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:34,columnNumber:13},this),e.jsxDEV("span",{className:"font-medium text-text-secondary",children:a.value},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:35,columnNumber:13},this)]},a.label,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:32,columnNumber:11},this)),m&&e.jsxDEV("div",{className:"flex items-center gap-3",children:m},void 0,!1,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:38,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:30,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/components/common/layout/PageHeaderWithStats.tsx",lineNumber:23,columnNumber:5},this)}export{l as P};
2
+ //# sourceMappingURL=PageHeaderWithStats-TikLQsTp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHeaderWithStats-TikLQsTp.js","sources":["../../src/components/common/layout/PageHeaderWithStats.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport interface InlineStat {\n label: string;\n value: string | number;\n dotClass?: string;\n}\n\ninterface PageHeaderWithStatsProps {\n title: string;\n subtitle?: string;\n stats?: InlineStat[];\n actions?: ReactNode;\n}\n\nexport function PageHeaderWithStats({\n title,\n subtitle,\n stats,\n actions,\n}: PageHeaderWithStatsProps) {\n return (\n <div className=\"flex items-baseline justify-between mb-10\">\n <div className=\"flex items-center gap-4\">\n <h1 className=\"text-3xl font-light text-text-primary\">{title}</h1>\n {subtitle && (\n <span className=\"text-sm text-text-tertiary font-light\">{subtitle}</span>\n )}\n </div>\n <div className=\"flex items-center gap-5\">\n {stats?.map((s) => (\n <div key={s.label} className=\"flex items-center gap-1.5 text-xs text-text-tertiary\">\n {s.dotClass && <span className={`w-1.5 h-1.5 rounded-full ${s.dotClass}`} />}\n <span>{s.label}</span>\n <span className=\"font-medium text-text-secondary\">{s.value}</span>\n </div>\n ))}\n {actions && <div className=\"flex items-center gap-3\">{actions}</div>}\n </div>\n </div>\n );\n}\n"],"names":["PageHeaderWithStats","title","subtitle","stats","actions","jsxDEV","s"],"mappings":"wCAeO,SAASA,EAAoB,CAClC,MAAAC,EACA,SAAAC,EACA,MAAAC,EACA,QAAAC,CACF,EAA6B,CAC3B,OACEC,EAAAA,OAAC,MAAA,CAAI,UAAU,4CACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,SAAC,KAAA,CAAG,UAAU,wCAAyC,SAAAJ,CAAA,EAAvD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAA6D,EAC5DC,GACCG,EAAAA,OAAC,OAAA,CAAK,UAAU,wCAAyC,SAAAH,CAAA,EAAzD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkE,CAAA,CAAA,EAHtE,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EACAG,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAF,GAAA,YAAAA,EAAO,IAAKG,GACXD,EAAAA,OAAC,MAAA,CAAkB,UAAU,uDAC1B,SAAA,CAAAC,EAAE,UAAYD,EAAAA,OAAC,OAAA,CAAK,UAAW,4BAA4BC,EAAE,QAAQ,IAAvD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2D,EAC1ED,EAAAA,OAAC,OAAA,CAAM,SAAAC,EAAE,KAAA,EAAT,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAe,EACfD,SAAC,OAAA,CAAK,UAAU,kCAAmC,WAAE,KAAA,EAArD,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA2D,CAAA,GAHnDC,EAAE,MAAZ,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAIA,GAEDF,GAAWC,EAAAA,OAAC,MAAA,CAAI,UAAU,0BAA2B,SAAAD,CAAA,EAA1C,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkD,CAAA,CAAA,EARhE,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,CAAA,CAAA,EAhBF,OAAA,GAAA,CAAA,SAAA,sEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAiBA,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as e}from"./index-DSzSoku1.js";const r={1:"P1",2:"P2",3:"P3",4:"P4"},s={1:"text-text-primary font-semibold",2:"text-text-primary font-medium",3:"text-text-secondary",4:"text-text-tertiary"};function a({priority:t}){return e.jsxDEV("span",{className:`text-xs ${s[t]??"text-text-secondary"}`,children:r[t]??`P${t}`},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/PriorityBadge.tsx",lineNumber:17,columnNumber:5},this)}export{a as P};
2
+ //# sourceMappingURL=PriorityBadge-CQ0EsLTA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PriorityBadge-DfQY9St9.js","sources":["../../src/components/common/display/PriorityBadge.tsx"],"sourcesContent":["const priorityLabels: Record<number, string> = {\n 1: 'P1',\n 2: 'P2',\n 3: 'P3',\n 4: 'P4',\n};\n\nconst priorityStyles: Record<number, string> = {\n 1: 'text-text-primary font-semibold',\n 2: 'text-text-primary font-medium',\n 3: 'text-text-secondary',\n 4: 'text-text-tertiary',\n};\n\nexport function PriorityBadge({ priority }: { priority: number }) {\n return (\n <span className={`text-xs ${priorityStyles[priority] ?? 'text-text-secondary'}`}>\n {priorityLabels[priority] ?? `P${priority}`}\n </span>\n );\n}\n"],"names":["priorityLabels","priorityStyles","PriorityBadge","priority","jsx"],"mappings":"+CAAA,MAAMA,EAAyC,CAC7C,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,IACL,EAEMC,EAAyC,CAC7C,EAAG,kCACH,EAAG,gCACH,EAAG,sBACH,EAAG,oBACL,EAEO,SAASC,EAAc,CAAE,SAAAC,GAAkC,CAChE,OACEC,EAAAA,IAAC,OAAA,CAAK,UAAW,WAAWH,EAAeE,CAAQ,GAAK,qBAAqB,GAC1E,SAAAH,EAAeG,CAAQ,GAAK,IAAIA,CAAQ,GAC3C,CAEJ"}
1
+ {"version":3,"file":"PriorityBadge-CQ0EsLTA.js","sources":["../../src/components/common/display/PriorityBadge.tsx"],"sourcesContent":["const priorityLabels: Record<number, string> = {\n 1: 'P1',\n 2: 'P2',\n 3: 'P3',\n 4: 'P4',\n};\n\nconst priorityStyles: Record<number, string> = {\n 1: 'text-text-primary font-semibold',\n 2: 'text-text-primary font-medium',\n 3: 'text-text-secondary',\n 4: 'text-text-tertiary',\n};\n\nexport function PriorityBadge({ priority }: { priority: number }) {\n return (\n <span className={`text-xs ${priorityStyles[priority] ?? 'text-text-secondary'}`}>\n {priorityLabels[priority] ?? `P${priority}`}\n </span>\n );\n}\n"],"names":["priorityLabels","priorityStyles","PriorityBadge","priority","jsxDEV"],"mappings":"wCAAA,MAAMA,EAAyC,CAC7C,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,IACL,EAEMC,EAAyC,CAC7C,EAAG,kCACH,EAAG,gCACH,EAAG,sBACH,EAAG,oBACL,EAEO,SAASC,EAAc,CAAE,SAAAC,GAAkC,CAChE,OACEC,EAAAA,OAAC,OAAA,CAAK,UAAW,WAAWH,EAAeE,CAAQ,GAAK,qBAAqB,GAC1E,SAAAH,EAAeG,CAAQ,GAAK,IAAIA,CAAQ,EAAA,EAD3C,OAAA,GAAA,CAAA,SAAA,iEAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as e,D as _,f as y,C as U,a as z,J as M,S}from"./index-DSzSoku1.js";import{a as D}from"./vendor-query-DLp59M9_.js";import{a as J}from"./tasks-3Hih8Bt7.js";import{u as q}from"./settings-DDe_L7JT.js";import{P as G}from"./PageHeaderWithStats-TikLQsTp.js";import{S as I}from"./StatusBadge-BYNGGZK5.js";import{W as K}from"./WorkflowPill-Diw8iWBP.js";import{T as V}from"./TimestampCell-IVL_-Upy.js";import{L as k,e as Q}from"./vendor-react-Co3Y8ikm.js";import{R as X}from"./RolePill-Crj4TH5p.js";import{U as Y}from"./UserName-DU9qeg13.js";import"./vendor-icons-DCLlGYO9.js";import"./users-BTagPmGW.js";const Z="bg-stripes animate-pulse opacity-70";function L(s){switch(s){case"completed":return"text-status-success";case"in_progress":case"pending":return"text-status-warning";case"needs_intervention":return"text-status-error";case"cancelled":return"text-text-tertiary";default:return"text-text-tertiary"}}function C(s){switch(s){case"resolved":return"text-status-success";case"pending":return"text-status-warning";case"cancelled":return"text-text-tertiary";default:return"text-text-tertiary"}}function ee(s,t,n){return`${s==="task"?"Task":n?"Notification":"Escalation"} is ${t.replace(/_/g," ")}`}function se(s,t){if(t)return Z;switch(s){case"completed":case"resolved":return"bg-status-success";case"pending":case"in_progress":case"needs_intervention":return"bg-status-warning";case"cancelled":return"bg-status-error";default:return"bg-text-tertiary"}}function ae(s){return s.startsWith("mcp")||s.startsWith("Mcp")}function $(s){return!s.workflow_type}function R(s,t){if(s.length<=t)return s;const n=Math.floor((t-1)/2);return`${s.slice(0,n)}…${s.slice(s.length-n)}`}function te(s,t){const n=Date.now(),c=new Map,p=[];for(const a of t)a.task_id?(c.has(a.task_id)||c.set(a.task_id,[]),c.get(a.task_id).push(a)):p.push(a);const i=[...s].sort((a,m)=>new Date(a.created_at).getTime()-new Date(m.created_at).getTime()),l=[];for(const a of s)l.push(new Date(a.created_at).getTime()),a.completed_at&&l.push(new Date(a.completed_at).getTime());for(const a of t)l.push(new Date(a.created_at).getTime()),a.resolved_at&&l.push(new Date(a.resolved_at).getTime()),a.claimed_at&&l.push(new Date(a.claimed_at).getTime());if(l.length===0)return{lanes:[],timeMin:0,timeMax:1};const o=Math.min(...l),N=s.some(a=>!a.completed_at)||t.some(a=>!a.resolved_at)?Math.max(n,Math.max(...l)):Math.max(...l),b=N-o||1,d=a=>(a-o)/b*100,h=[];for(const a of i){const m=new Date(a.created_at).getTime(),f=a.completed_at?new Date(a.completed_at).getTime():n,x=!a.completed_at;h.push({kind:"task",id:a.id,label:a.workflow_type,taskId:a.id,startMs:m,endMs:f,startPct:d(m),widthPct:Math.max((f-m)/b*100,.5),durationMs:f-m,isOpen:x,task:a});const g=(c.get(a.id)||[]).sort((r,u)=>new Date(r.created_at).getTime()-new Date(u.created_at).getTime());for(const r of g){const u=new Date(r.created_at).getTime(),v=r.resolved_at?new Date(r.resolved_at).getTime():n,P=!r.resolved_at;let w=null;if(r.claimed_at){const O=new Date(r.claimed_at).getTime(),F=v-u||1;w=(O-u)/F*100}h.push({kind:"escalation",id:r.id,label:r.role,taskId:a.id,startMs:u,endMs:v,startPct:d(u),widthPct:Math.max((v-u)/b*100,.5),durationMs:v-u,isOpen:P,escalation:r,claimPct:w})}}for(const a of p){const m=new Date(a.created_at).getTime(),f=a.resolved_at?new Date(a.resolved_at).getTime():n;let x=null;if(a.claimed_at){const g=new Date(a.claimed_at).getTime(),r=f-m||1;x=(g-m)/r*100}h.push({kind:"escalation",id:a.id,label:a.role,taskId:"",startMs:m,endMs:f,startPct:d(m),widthPct:Math.max((f-m)/b*100,.5),durationMs:f-m,isOpen:!a.resolved_at,escalation:a,claimPct:x})}return{lanes:h,timeMin:o,timeMax:N}}function re(s,t,n,c=500){const[p,i]=D.useState(0),l=D.useRef(null),o=n-t||1;D.useEffect(()=>{if(s===0)return;l.current=null,i(0);let N;const b=d=>{l.current===null&&(l.current=d);const h=d-l.current,a=Math.min(h/c,1),m=1-Math.pow(1-a,3);i(m),a<1&&(N=requestAnimationFrame(b))};return N=requestAnimationFrame(b),()=>cancelAnimationFrame(N)},[s,c]);const E=D.useCallback(N=>{const b=(N.startMs-t)/o,d=(N.endMs-t)/o;if(p<b)return{width:0,opacity:0};const h=d-b||.001,a=Math.min((p-b)/h,1),m=N.widthPct*a,f=Math.min(a/.1,1);return{width:m,opacity:f}},[p,t,o]);return{progress:p,animatedBar:E}}function H({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:4,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:3,columnNumber:5},this)}function A({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09zM18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.455 2.456L21.75 6l-1.036.259a3.375 3.375 0 00-2.455 2.456zM16.894 20.567L16.5 21.75l-.394-1.183a2.25 2.25 0 00-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 001.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 001.423 1.423l1.183.394-1.183.394a2.25 2.25 0 00-1.423 1.423z"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:13,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:12,columnNumber:5},this)}function W({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:22,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:21,columnNumber:5},this)}function B({className:s}){return e.jsxDEV("svg",{className:s,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:30,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneIcons.tsx",lineNumber:29,columnNumber:5},this)}function ie({allExpanded:s,onToggleAll:t}){return e.jsxDEV("div",{className:"flex items-center gap-4 mb-4 flex-wrap",children:[e.jsxDEV("button",{onClick:t,className:"text-[10px] text-accent hover:underline",children:s?"Collapse all":"Expand all"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:11,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-4 ml-auto",children:[e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(H,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:18,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Task"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:19,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:17,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(A,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:22,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"AI Task"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:23,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(B,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:26,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Escalation"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:25,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV(W,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:30,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Notification"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:31,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:29,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:34,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Done"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:35,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:33,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-1",children:[e.jsxDEV("span",{className:"w-2 h-2 rounded-full bg-status-warning"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:38,columnNumber:11},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"Active"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:39,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:37,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:16,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneHeader.tsx",lineNumber:10,columnNumber:5},this)}function le({ticks:s}){return e.jsxDEV("div",{className:"flex",children:[e.jsxDEV("div",{className:"w-52 shrink-0"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:13,columnNumber:7},this),e.jsxDEV("div",{className:"flex-1 relative h-6 border-b border-surface-border",children:s.map(t=>e.jsxDEV("span",{className:"absolute text-[9px] font-mono text-text-tertiary -translate-x-1/2 bottom-1 whitespace-nowrap",style:{left:`${t.pct}%`},children:t.label},t.pct,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:16,columnNumber:11},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:14,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TimeAxis.tsx",lineNumber:12,columnNumber:5},this)}function j({label:s,children:t}){return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-0.5",children:s},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:11,columnNumber:7},this),e.jsxDEV("div",{className:"text-xs text-text-primary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:14,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/MetricCell.tsx",lineNumber:10,columnNumber:5},this)}function oe({traceId:s,href:t}){const[n,c]=D.useState(!1),p=l=>{l.stopPropagation(),navigator.clipboard.writeText(s),c(!0),setTimeout(()=>c(!1),1500)},i=l=>{l.stopPropagation(),t&&window.open(t,"_blank","noopener,noreferrer")};return e.jsxDEV("span",{className:"group/trace inline-flex items-center gap-1.5",children:[t&&e.jsxDEV("button",{onClick:i,title:"Open trace",className:"opacity-0 group-hover/trace:opacity-100 transition-opacity p-0.5",children:e.jsxDEV("svg",{className:"w-3 h-3 text-text-tertiary hover:text-accent",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-4.5-4.5h6m0 0v6m0-6L10.5 15"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:27,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:26,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:21,columnNumber:9},this),e.jsxDEV("button",{onClick:p,title:"Copy trace ID",className:"opacity-0 group-hover/trace:opacity-100 transition-opacity p-0.5",children:e.jsxDEV("svg",{className:`w-3 h-3 transition-colors ${n?"text-status-success":"text-text-tertiary hover:text-accent"}`,fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:n?e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:41,columnNumber:15},this):e.jsxDEV("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:42,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:36,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:31,columnNumber:7},this),e.jsxDEV("span",{className:"text-[11px] text-accent",children:"Trace Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:46,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TraceLink.tsx",lineNumber:19,columnNumber:5},this)}function ne({task:s,traceUrl:t}){const n=s.completed_at?new Date(s.completed_at).getTime()-new Date(s.created_at).getTime():Date.now()-new Date(s.created_at).getTime();return e.jsxDEV("div",{className:"grid grid-cols-[3fr_1fr] gap-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(I,{status:s.status},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:26,columnNumber:11},this),e.jsxDEV(K,{type:s.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:27,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:25,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxDEV(j,{label:"Started",children:e.jsxDEV(V,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:32,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:31,columnNumber:11},this),e.jsxDEV(j,{label:"Completed",children:s.completed_at?e.jsxDEV(V,{date:s.completed_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:37,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"In progress"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:39,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:35,columnNumber:11},this),e.jsxDEV(j,{label:"Duration",children:e.jsxDEV(_,{ms:n,className:"font-mono text-sm"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:44,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:43,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:30,columnNumber:9},this),s.milestones.length>0&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1.5",children:"Milestones"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:50,columnNumber:13},this),e.jsxDEV("div",{className:"flex flex-wrap gap-1.5",children:s.milestones.map((c,p)=>e.jsxDEV("span",{className:"px-2 py-0.5 text-[10px] font-mono bg-accent-faint/50 rounded text-text-secondary",children:[c.name,": ",String(c.value)]},p,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:55,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:53,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:49,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:24,columnNumber:7},this),e.jsxDEV("div",{className:"flex flex-col items-end gap-2",children:[e.jsxDEV(k,{to:`/workflows/executions/${encodeURIComponent(s.workflow_id)}`,className:"block text-[11px] text-accent hover:underline",children:"Execution Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:69,columnNumber:9},this),e.jsxDEV(k,{to:`/workflows/tasks/detail/${s.id}`,className:"block text-[11px] text-accent hover:underline",children:"Task Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:75,columnNumber:9},this),s.trace_id&&e.jsxDEV(oe,{traceId:s.trace_id,href:t?t.replace("{traceId}",s.trace_id):void 0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:82,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:68,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/TaskDetailPanel.tsx",lineNumber:22,columnNumber:5},this)}function ce({escalation:s}){const t=new Date(s.created_at).getTime(),n=s.claimed_at?new Date(s.claimed_at).getTime()-t:null,c=s.resolved_at?new Date(s.resolved_at).getTime()-t:null;return e.jsxDEV("div",{className:"grid grid-cols-[3fr_1fr] gap-6",children:[e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(I,{status:s.status},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:28,columnNumber:11},this),e.jsxDEV(X,{role:s.role},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:29,columnNumber:11},this),s.type&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:[s.type,s.subtype?` / ${s.subtype}`:""]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:31,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:27,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-3 gap-4",children:[e.jsxDEV(j,{label:"Created",children:e.jsxDEV(V,{date:s.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:40,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:39,columnNumber:11},this),e.jsxDEV(j,{label:"Claimed",children:s.claimed_at?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(V,{date:s.claimed_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:46,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:["after ",e.jsxDEV(_,{ms:n},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:48,columnNumber:25},this),s.assigned_to&&e.jsxDEV(e.Fragment,{children:[" ","by"," ",e.jsxDEV("span",{className:"text-text-secondary font-medium",children:e.jsxDEV(Y,{userId:s.assigned_to},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:53,columnNumber:25},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:52,columnNumber:23},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:50,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:47,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:45,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"Unclaimed"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:60,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:43,columnNumber:11},this),e.jsxDEV(j,{label:"Resolved",children:s.resolved_at?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(V,{date:s.resolved_at},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:67,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:[e.jsxDEV(_,{ms:c},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:69,columnNumber:19},this)," total"]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:68,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:66,columnNumber:15},this):e.jsxDEV("span",{className:"text-text-tertiary italic text-xs",children:"Pending"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:73,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:64,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:38,columnNumber:9},this),s.description&&e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[9px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:80,columnNumber:13},this),e.jsxDEV("p",{className:"text-[11px] text-text-secondary leading-relaxed",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:83,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:79,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:26,columnNumber:7},this),e.jsxDEV("div",{className:"flex flex-col items-end gap-2",children:[s.workflow_id&&e.jsxDEV(k,{to:`/workflows/executions/${encodeURIComponent(s.workflow_id)}`,className:"block text-[11px] text-accent hover:underline",children:"Execution Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:93,columnNumber:11},this),e.jsxDEV(k,{to:`/escalations/detail/${s.id}`,className:"block text-[11px] text-accent hover:underline",children:"Escalation Details"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:100,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:91,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/EscalationDetailPanel.tsx",lineNumber:24,columnNumber:5},this)}function me({lane:s,ticks:t,isExpanded:n,onToggle:c,anim:p,animDone:i,traceUrl:l}){var d,h;const o=s.kind==="task",E=o?s.task.status:s.escalation.status,N=se(E,s.isOpen),b=p.opacity>0;return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center border-b border-surface-border cursor-pointer hover:bg-surface-sunken/40 transition-colors",onClick:c,children:[e.jsxDEV("div",{className:`w-52 shrink-0 py-3 pr-4 flex items-center gap-2 ${o?"":"pl-6"}`,style:{opacity:b?1:0,transition:"opacity 0.15s ease-out"},children:[o?ae(s.task.workflow_type)?e.jsxDEV(A,{className:`w-4 h-4 shrink-0 ${L(s.task.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:59,columnNumber:15},this):e.jsxDEV(H,{className:`w-4 h-4 shrink-0 ${L(s.task.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:63,columnNumber:15},this):$(s.escalation)?e.jsxDEV(W,{className:`w-4 h-4 shrink-0 ${C(s.escalation.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:68,columnNumber:13},this):e.jsxDEV(B,{className:`w-4 h-4 shrink-0 ${C(s.escalation.status)}`},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:72,columnNumber:13},this),e.jsxDEV("p",{className:"text-xs font-mono text-text-secondary whitespace-nowrap overflow-hidden",title:ee(s.kind,o?s.task.status:s.escalation.status,!o&&$(s.escalation)),children:o?R(s.label,24):R(((d=s.escalation)==null?void 0:d.role)??s.label,20)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:76,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:51,columnNumber:9},this),e.jsxDEV("div",{className:"flex-1 relative h-10",children:[t.map(a=>e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px bg-surface-border opacity-30",style:{left:`${a.pct}%`}},a.pct,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:90,columnNumber:13},this)),e.jsxDEV("div",{className:`absolute top-2 h-6 rounded-sm ${n?`${N} ring-2 ring-accent ring-offset-1`:`${N} hover:opacity-80`}`,style:{left:`${s.startPct}%`,width:b?`${Math.max(p.width,.3)}%`:"0%",minWidth:b?"4px":"0px",opacity:p.opacity},title:`${s.label} — ${y(s.durationMs)} — ${new Date(s.startMs).toLocaleTimeString()}`,children:[p.width>8&&i&&e.jsxDEV("span",{className:"absolute inset-0 flex items-center px-1.5 text-[9px] font-mono text-white truncate",children:y(s.durationMs)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:114,columnNumber:15},this),s.claimPct!=null&&i&&e.jsxDEV("div",{className:"absolute top-0 bottom-0 w-px border-l border-dashed border-white/70",style:{left:`${s.claimPct}%`},title:(h=s.escalation)!=null&&h.assigned_to?`Claimed by ${s.escalation.assigned_to}`:"Claimed",children:e.jsxDEV("div",{className:"absolute -top-1 -left-[3px] w-[7px] h-[7px] rounded-full bg-white border border-amber-600"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:131,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:121,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:98,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:87,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:46,columnNumber:7},this),e.jsxDEV(U,{open:n,children:e.jsxDEV("div",{className:"py-4 px-6 pl-52 border-b border-surface-border bg-surface-sunken/20",children:o&&s.task?e.jsxDEV(ne,{task:s.task,traceUrl:l},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:142,columnNumber:13},this):s.escalation?e.jsxDEV(ce,{escalation:s.escalation},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:144,columnNumber:13},this):null},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:140,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:139,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/SwimlaneRow.tsx",lineNumber:44,columnNumber:5},this)}function pe({tasks:s,escalations:t,traceUrl:n}){const[c,p]=D.useState(new Set),{lanes:i,timeMin:l,timeMax:o}=D.useMemo(()=>te(s,t),[s,t]),E=o-l||1,{progress:N,animatedBar:b}=re(i.length,l,o);if(i.length===0)return e.jsxDEV("p",{className:"text-sm text-text-tertiary py-8 text-center",children:"No events in this process."},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:27,columnNumber:7},this);const d=5,h=Array.from({length:d+1},(r,u)=>({pct:u/d*100,label:y(Math.round(u/d*E))})),a=r=>{p(u=>{const v=new Set(u);return v.has(r)?v.delete(r):v.add(r),v})},m=i.map(r=>r.id),f=m.length>0&&m.every(r=>c.has(r)),x=()=>{p(f?new Set:new Set(m))},g=N>=1;return e.jsxDEV("div",{className:"py-2",children:[e.jsxDEV(ie,{allExpanded:f,onToggleAll:x},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:60,columnNumber:7},this),e.jsxDEV(le,{ticks:h},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:61,columnNumber:7},this),i.map(r=>e.jsxDEV(me,{lane:r,ticks:h,isExpanded:c.has(r.id),onToggle:()=>a(r.id),anim:b(r),animDone:g,traceUrl:n},`${r.kind}-${r.id}`,!1,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:64,columnNumber:9},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/process-swimlane/ProcessSwimlaneTimeline.tsx",lineNumber:59,columnNumber:5},this)}function T(s){if(!s)return null;try{return JSON.parse(s)}catch{return null}}function de(s){return s.length===0?null:[...s].sort((t,n)=>new Date(t.created_at).getTime()-new Date(n.created_at).getTime())[0]}function Pe(){var f;const{originId:s}=Q(),{data:t,isLoading:n}=J(s??""),{data:c}=q(),p=((f=c==null?void 0:c.telemetry)==null?void 0:f.traceUrl)??null,i=(t==null?void 0:t.tasks)??[],l=(t==null?void 0:t.escalations)??[],o=D.useMemo(()=>de(i),[i]),E=D.useMemo(()=>T(o==null?void 0:o.envelope),[o]),N=D.useMemo(()=>{if(o!=null&&o.data)return T(o.data);const x=i.filter(g=>g.status==="completed"&&g.data).sort((g,r)=>new Date(r.completed_at).getTime()-new Date(g.completed_at).getTime());return x.length>0?T(x[0].data):null},[o,i]),b=D.useMemo(()=>i.length>0&&i.some(x=>x.status!=="completed"&&x.status!=="cancelled"),[i]),d=D.useMemo(()=>{const x=i.filter(u=>u.status==="completed").length,g=i.filter(u=>u.status==="needs_intervention").length,r=l.filter(u=>u.status==="resolved").length;return{tasks:i.length,completed:x,escalated:g,escalations:l.length,resolved:r}},[i,l]),h=D.useMemo(()=>{if(i.length===0&&l.length===0)return null;const g=[...i.map(w=>w.created_at),...l.map(w=>w.created_at)].sort()[0],r=i.every(w=>w.status==="completed"||w.status==="cancelled"),u=l.every(w=>w.status==="resolved"),v=i.length>0&&r&&u,P=v?[...i.map(w=>w.completed_at),...l.map(w=>w.resolved_at)].filter(Boolean).sort().pop()??null:null;return{startIso:g,endIso:P,isFinished:v,elapsed:z(g,P)}},[i,l]),a=D.useMemo(()=>{const x=[];return h&&x.push({label:h.isFinished?"Completed":"Running",value:h.elapsed,dotClass:h.isFinished?"bg-status-success":"bg-status-pending animate-pulse"}),x.push({label:"Tasks",value:`${d.completed}/${d.tasks}`},{label:"Escalations",value:`${d.resolved}/${d.escalations}`}),x},[h,d]);if(n&&i.length===0)return e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:94,columnNumber:9},this),e.jsxDEV("div",{className:"h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:95,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:93,columnNumber:7},this);const m=E||N||b;return e.jsxDEV("div",{children:[e.jsxDEV(G,{title:"Process Detail",subtitle:s,stats:a},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:104,columnNumber:7},this),m&&e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-10",children:[e.jsxDEV("div",{children:E?e.jsxDEV(M,{data:E,label:"Input",defaultMode:"json",defaultCollapsed:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:114,columnNumber:15},this):e.jsxDEV("div",{children:[e.jsxDEV(S,{children:"Input"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:117,columnNumber:17},this),e.jsxDEV("div",{className:"font-mono text-xs bg-surface-sunken rounded-md p-4 text-text-tertiary italic mt-2",children:"Waiting for task..."},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:118,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:116,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:112,columnNumber:11},this),e.jsxDEV("div",{children:N?e.jsxDEV(M,{data:N,label:"Output",defaultMode:"json",defaultCollapsed:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:126,columnNumber:15},this):b?e.jsxDEV("div",{children:[e.jsxDEV(S,{children:"Output"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:129,columnNumber:17},this),e.jsxDEV("div",{className:"flex items-center gap-2 font-mono text-xs bg-surface-sunken rounded-md p-4 text-text-secondary mt-2",children:[e.jsxDEV("span",{className:"w-1.5 h-1.5 rounded-full bg-status-pending animate-pulse"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:131,columnNumber:19},this),"Processing..."]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:130,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:128,columnNumber:15},this):null},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:124,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:111,columnNumber:9},this),e.jsxDEV(S,{className:"mb-6",children:"Timeline"},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:140,columnNumber:7},this),e.jsxDEV(pe,{tasks:i,escalations:l,traceUrl:p},void 0,!1,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:142,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/processes/ProcessDetailPage.tsx",lineNumber:103,columnNumber:5},this)}export{Pe as ProcessDetailPage};
2
+ //# sourceMappingURL=ProcessDetailPage-B2GKuGzk.js.map