@hotmeshio/long-tail 0.1.12 → 0.1.14

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 (282) hide show
  1. package/README.md +1 -1
  2. package/build/api/files.d.ts +13 -0
  3. package/build/api/files.js +44 -0
  4. package/build/api/mcp-runs.d.ts +2 -0
  5. package/build/api/mcp-runs.js +2 -0
  6. package/build/api/workflow-sets.d.ts +11 -0
  7. package/build/api/workflow-sets.js +62 -0
  8. package/build/api/yaml-workflows.d.ts +9 -0
  9. package/build/api/yaml-workflows.js +40 -11
  10. package/build/examples/seed.js +50 -0
  11. package/build/lib/db/schemas/001_schema.sql +281 -106
  12. package/build/lib/db/schemas/002_seed.sql +56 -39
  13. package/build/lib/storage/local.d.ts +15 -0
  14. package/build/lib/storage/local.js +63 -0
  15. package/build/lib/storage/mime.d.ts +4 -0
  16. package/build/lib/storage/mime.js +31 -0
  17. package/build/lib/storage/s3.d.ts +16 -0
  18. package/build/lib/storage/s3.js +70 -0
  19. package/build/lib/storage/types.d.ts +18 -0
  20. package/build/modules/utils.d.ts +73 -0
  21. package/build/modules/utils.js +84 -0
  22. package/build/routes/file-browser.d.ts +2 -0
  23. package/build/routes/file-browser.js +112 -0
  24. package/build/routes/files.js +25 -17
  25. package/build/routes/index.js +2 -0
  26. package/build/routes/mcp-runs.js +2 -0
  27. package/build/routes/workflow-sets.js +9 -0
  28. package/build/routes/yaml-workflows/deployment.js +8 -0
  29. package/build/services/insight/index.d.ts +13 -0
  30. package/build/services/insight/index.js +4 -7
  31. package/build/services/insight/prompts.d.ts +1 -1
  32. package/build/services/insight/prompts.js +1 -1
  33. package/build/services/mcp/server.js +31 -0
  34. package/build/services/mcp-runs/queries.d.ts +2 -0
  35. package/build/services/mcp-runs/queries.js +11 -1
  36. package/build/services/mcp-runs/sql.d.ts +1 -1
  37. package/build/services/mcp-runs/sql.js +2 -2
  38. package/build/services/workflow-sets/db.d.ts +1 -0
  39. package/build/services/workflow-sets/db.js +6 -0
  40. package/build/services/workflow-sets/index.d.ts +1 -1
  41. package/build/services/workflow-sets/index.js +2 -1
  42. package/build/services/workflow-sets/sql.d.ts +1 -0
  43. package/build/services/workflow-sets/sql.js +6 -1
  44. package/build/services/yaml-workflow/db.d.ts +12 -0
  45. package/build/services/yaml-workflow/db.js +18 -0
  46. package/build/services/yaml-workflow/generator.js +4 -4
  47. package/build/services/yaml-workflow/pipeline/build/index.d.ts +2 -1
  48. package/build/services/yaml-workflow/pipeline/build/index.js +3 -2
  49. package/build/services/yaml-workflow/pipeline/build/utils.d.ts +0 -2
  50. package/build/services/yaml-workflow/pipeline/build/utils.js +0 -8
  51. package/build/services/yaml-workflow/sql.d.ts +2 -1
  52. package/build/services/yaml-workflow/sql.js +10 -3
  53. package/build/system/activities/schema-exchange.d.ts +50 -0
  54. package/build/system/activities/schema-exchange.js +210 -0
  55. package/build/system/activities/sql.d.ts +1 -1
  56. package/build/system/activities/sql.js +12 -1
  57. package/build/system/index.js +1 -0
  58. package/build/system/mcp-servers/human-queue.js +31 -0
  59. package/build/system/mcp-servers/knowledge.js +35 -6
  60. package/build/system/mcp-servers/schema-exchange.d.ts +4 -0
  61. package/build/system/mcp-servers/schema-exchange.js +93 -0
  62. package/build/system/seed/server-definitions.d.ts +112 -1
  63. package/build/system/seed/server-definitions.js +37 -0
  64. package/build/system/seed/tool-manifests-data.d.ts +87 -0
  65. package/build/system/seed/tool-manifests-data.js +37 -1
  66. package/build/system/seed/tool-manifests-knowledge.d.ts +9 -1
  67. package/build/system/seed/tool-manifests-knowledge.js +6 -5
  68. package/build/system/workflows/mcp-workflow-builder/prompts.d.ts +1 -1
  69. package/build/system/workflows/mcp-workflow-builder/prompts.js +21 -20
  70. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -1
  71. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +3 -3
  72. package/build/system/workflows/mcp-workflow-planner/index.js +39 -5
  73. package/build/system/workflows/mcp-workflow-planner/prompts.d.ts +1 -1
  74. package/build/system/workflows/mcp-workflow-planner/prompts.js +3 -3
  75. package/build/tsconfig.tsbuildinfo +1 -1
  76. package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js → AdminDashboard-Cngijp4Q.js} +2 -2
  77. package/dashboard/dist/assets/{AdminDashboard-DUrSBQOl.js.map → AdminDashboard-Cngijp4Q.js.map} +1 -1
  78. package/dashboard/dist/assets/{AvailableEscalationsPage-Dbd1qUK_.js → AvailableEscalationsPage-CpBfGV1h.js} +2 -2
  79. package/dashboard/dist/assets/{AvailableEscalationsPage-Dbd1qUK_.js.map → AvailableEscalationsPage-CpBfGV1h.js.map} +1 -1
  80. package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js → BotPicker-B8Uvw9Si.js} +2 -2
  81. package/dashboard/dist/assets/{BotPicker-Cg5iNEkm.js.map → BotPicker-B8Uvw9Si.js.map} +1 -1
  82. package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js → CollapsibleSection-DiFPuWOY.js} +2 -2
  83. package/dashboard/dist/assets/{CollapsibleSection-Kd9UIyeU.js.map → CollapsibleSection-DiFPuWOY.js.map} +1 -1
  84. package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js → ConfirmDeleteModal-CpXG9uyu.js} +2 -2
  85. package/dashboard/dist/assets/{ConfirmDeleteModal-DZMgmlof.js.map → ConfirmDeleteModal-CpXG9uyu.js.map} +1 -1
  86. package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js → CopyableId-DKsTR9lK.js} +2 -2
  87. package/dashboard/dist/assets/{CopyableId-cPFTRm8q.js.map → CopyableId-DKsTR9lK.js.map} +1 -1
  88. package/dashboard/dist/assets/CredentialsPage-DlS7Kf40.js +2 -0
  89. package/dashboard/dist/assets/{CredentialsPage-DJablIbs.js.map → CredentialsPage-DlS7Kf40.js.map} +1 -1
  90. package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js → CustomDurationPicker-B-9eW3pm.js} +2 -2
  91. package/dashboard/dist/assets/{CustomDurationPicker-NgIP6YDW.js.map → CustomDurationPicker-B-9eW3pm.js.map} +1 -1
  92. package/dashboard/dist/assets/{DataTable-CTRhTAfT.js → DataTable-DkOokbtL.js} +2 -2
  93. package/dashboard/dist/assets/{DataTable-CTRhTAfT.js.map → DataTable-DkOokbtL.js.map} +1 -1
  94. package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js → ElapsedCell-DVtHqM-5.js} +2 -2
  95. package/dashboard/dist/assets/{ElapsedCell-HcSJ_MMs.js.map → ElapsedCell-DVtHqM-5.js.map} +1 -1
  96. package/dashboard/dist/assets/{EmptyState-joNbd4gg.js → EmptyState-C7KIMIbE.js} +2 -2
  97. package/dashboard/dist/assets/{EmptyState-joNbd4gg.js.map → EmptyState-C7KIMIbE.js.map} +1 -1
  98. package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js → EscalationsOverview-BMKBlkPx.js} +2 -2
  99. package/dashboard/dist/assets/{EscalationsOverview-DpXDnQux.js.map → EscalationsOverview-BMKBlkPx.js.map} +1 -1
  100. package/dashboard/dist/assets/{EventTable-CYem3v8n.js → EventTable-BYZ5OVdQ.js} +2 -2
  101. package/dashboard/dist/assets/{EventTable-CYem3v8n.js.map → EventTable-BYZ5OVdQ.js.map} +1 -1
  102. package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js → FilterBar-C5r3n6YO.js} +2 -2
  103. package/dashboard/dist/assets/{FilterBar-BiO8SOzc.js.map → FilterBar-C5r3n6YO.js.map} +1 -1
  104. package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js → ListToolbar-BGUajIsW.js} +2 -2
  105. package/dashboard/dist/assets/{ListToolbar-6yRDh2e9.js.map → ListToolbar-BGUajIsW.js.map} +1 -1
  106. package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js → McpOverview-B_kJYHea.js} +2 -2
  107. package/dashboard/dist/assets/{McpOverview-CUgSxkQe.js.map → McpOverview-B_kJYHea.js.map} +1 -1
  108. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +5 -0
  109. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +1 -0
  110. package/dashboard/dist/assets/McpQueryPage-BgAq_bQg.js +2 -0
  111. package/dashboard/dist/assets/{McpQueryPage-lV6kfDG5.js.map → McpQueryPage-BgAq_bQg.js.map} +1 -1
  112. package/dashboard/dist/assets/McpRunDetailPage-B8c0OszR.js +2 -0
  113. package/dashboard/dist/assets/McpRunDetailPage-B8c0OszR.js.map +1 -0
  114. package/dashboard/dist/assets/McpRunsPage-BY8C6k78.js +2 -0
  115. package/dashboard/dist/assets/McpRunsPage-BY8C6k78.js.map +1 -0
  116. package/dashboard/dist/assets/{Modal-BuTvD0pz.js → Modal-E1yRnCeW.js} +2 -2
  117. package/dashboard/dist/assets/{Modal-BuTvD0pz.js.map → Modal-E1yRnCeW.js.map} +1 -1
  118. package/dashboard/dist/assets/OperatorDashboard-C8MSTzey.js +2 -0
  119. package/dashboard/dist/assets/{OperatorDashboard-C9SSV96T.js.map → OperatorDashboard-C8MSTzey.js.map} +1 -1
  120. package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js → PageHeader-Cm5HBQF_.js} +2 -2
  121. package/dashboard/dist/assets/{PageHeader-BcTVF9ul.js.map → PageHeader-Cm5HBQF_.js.map} +1 -1
  122. package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js → PageHeaderWithStats-CNmWJFSN.js} +2 -2
  123. package/dashboard/dist/assets/{PageHeaderWithStats-BI7JG5x6.js.map → PageHeaderWithStats-CNmWJFSN.js.map} +1 -1
  124. package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js → PriorityBadge-HSI4RVhs.js} +2 -2
  125. package/dashboard/dist/assets/{PriorityBadge-DqVaOU65.js.map → PriorityBadge-HSI4RVhs.js.map} +1 -1
  126. package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js → ProcessDetailPage-Dln8622H.js} +2 -2
  127. package/dashboard/dist/assets/{ProcessDetailPage-hFMhf9qa.js.map → ProcessDetailPage-Dln8622H.js.map} +1 -1
  128. package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js → ProcessesListPage-bIsd9N_h.js} +2 -2
  129. package/dashboard/dist/assets/{ProcessesListPage-ByVoBCQ3.js.map → ProcessesListPage-bIsd9N_h.js.map} +1 -1
  130. package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js → RolePill-BVUp2bF0.js} +2 -2
  131. package/dashboard/dist/assets/{RolePill-D9ZIkYiu.js.map → RolePill-BVUp2bF0.js.map} +1 -1
  132. package/dashboard/dist/assets/RolesPage-kH-Njt25.js +2 -0
  133. package/dashboard/dist/assets/{RolesPage-SMedMuqa.js.map → RolesPage-kH-Njt25.js.map} +1 -1
  134. package/dashboard/dist/assets/{RowActions-yDhwwDbU.js → RowActions-DbUJPfaW.js} +2 -2
  135. package/dashboard/dist/assets/{RowActions-yDhwwDbU.js.map → RowActions-DbUJPfaW.js.map} +1 -1
  136. package/dashboard/dist/assets/{StatCard-BrBnQFxh.js → StatCard-Bs3JbyAz.js} +2 -2
  137. package/dashboard/dist/assets/{StatCard-BrBnQFxh.js.map → StatCard-Bs3JbyAz.js.map} +1 -1
  138. package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js → StatusBadge-CakDdsCw.js} +2 -2
  139. package/dashboard/dist/assets/{StatusBadge-xgb-lZku.js.map → StatusBadge-CakDdsCw.js.map} +1 -1
  140. package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js → StepIndicator-Cd_SG_yA.js} +2 -2
  141. package/dashboard/dist/assets/{StepIndicator-B9ps2SvM.js.map → StepIndicator-Cd_SG_yA.js.map} +1 -1
  142. package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js → StickyPagination-Bz0C18nC.js} +2 -2
  143. package/dashboard/dist/assets/{StickyPagination-DTIjBKN3.js.map → StickyPagination-Bz0C18nC.js.map} +1 -1
  144. package/dashboard/dist/assets/{SwimlaneTimeline-RK4Yu66z.js → SwimlaneTimeline-Cfe-xQRX.js} +2 -2
  145. package/dashboard/dist/assets/{SwimlaneTimeline-RK4Yu66z.js.map → SwimlaneTimeline-Cfe-xQRX.js.map} +1 -1
  146. package/dashboard/dist/assets/{TagInput-CdNUuqk4.js → TagInput-ClFhXG-U.js} +2 -2
  147. package/dashboard/dist/assets/{TagInput-CdNUuqk4.js.map → TagInput-ClFhXG-U.js.map} +1 -1
  148. package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js → TaskDetailPage-SuMBdARt.js} +2 -2
  149. package/dashboard/dist/assets/{TaskDetailPage-C-nzaNea.js.map → TaskDetailPage-SuMBdARt.js.map} +1 -1
  150. package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js → TaskQueuePill-lJR1JW_W.js} +2 -2
  151. package/dashboard/dist/assets/{TaskQueuePill-Lvr2-NzS.js.map → TaskQueuePill-lJR1JW_W.js.map} +1 -1
  152. package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js → TasksListPage-Dkq1Vtbt.js} +2 -2
  153. package/dashboard/dist/assets/{TasksListPage-DSUmD84y.js.map → TasksListPage-Dkq1Vtbt.js.map} +1 -1
  154. package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js → TimeAgo-DgfDZ1pl.js} +2 -2
  155. package/dashboard/dist/assets/{TimeAgo-BZdLdrIh.js.map → TimeAgo-DgfDZ1pl.js.map} +1 -1
  156. package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js → TimestampCell-MpHZ1hMD.js} +2 -2
  157. package/dashboard/dist/assets/{TimestampCell-QX_0i5FK.js.map → TimestampCell-MpHZ1hMD.js.map} +1 -1
  158. package/dashboard/dist/assets/{UserName-DyZMXcBm.js → UserName-DqsosA4B.js} +2 -2
  159. package/dashboard/dist/assets/{UserName-DyZMXcBm.js.map → UserName-DqsosA4B.js.map} +1 -1
  160. package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js → WorkflowExecutionPage-CVlg38C3.js} +2 -2
  161. package/dashboard/dist/assets/{WorkflowExecutionPage-DjVxfZaF.js.map → WorkflowExecutionPage-CVlg38C3.js.map} +1 -1
  162. package/dashboard/dist/assets/WorkflowPill-CRpZhjGR.js +2 -0
  163. package/dashboard/dist/assets/WorkflowPill-CRpZhjGR.js.map +1 -0
  164. package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js → WorkflowsDashboard-Ugzbs8mV.js} +2 -2
  165. package/dashboard/dist/assets/{WorkflowsDashboard-DZjuiFZ0.js.map → WorkflowsDashboard-Ugzbs8mV.js.map} +1 -1
  166. package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js → WorkflowsOverview-CIp_lTNl.js} +2 -2
  167. package/dashboard/dist/assets/{WorkflowsOverview-CLnLRpOu.js.map → WorkflowsOverview-CIp_lTNl.js.map} +1 -1
  168. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +2 -0
  169. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +1 -0
  170. package/dashboard/dist/assets/{bots-DIM6lBoY.js → bots-DPfUpVqI.js} +2 -2
  171. package/dashboard/dist/assets/{bots-DIM6lBoY.js.map → bots-DPfUpVqI.js.map} +1 -1
  172. package/dashboard/dist/assets/{escalation-JOTuOqjq.js → escalation-RrCDbMC3.js} +2 -2
  173. package/dashboard/dist/assets/{escalation-JOTuOqjq.js.map → escalation-RrCDbMC3.js.map} +1 -1
  174. package/dashboard/dist/assets/escalation-columns-CDGa9wsD.js +2 -0
  175. package/dashboard/dist/assets/{escalation-columns-Cyg58nkg.js.map → escalation-columns-CDGa9wsD.js.map} +1 -1
  176. package/dashboard/dist/assets/{helpers-B1BDxBZd.js → helpers-ZSKqdkdS.js} +2 -2
  177. package/dashboard/dist/assets/{helpers-B1BDxBZd.js.map → helpers-ZSKqdkdS.js.map} +1 -1
  178. package/dashboard/dist/assets/helpers-rMEcLwKs.js +2 -0
  179. package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +1 -0
  180. package/dashboard/dist/assets/{index-DDYFpi4l.js → index-ABcJHHlN.js} +2 -2
  181. package/dashboard/dist/assets/{index-DDYFpi4l.js.map → index-ABcJHHlN.js.map} +1 -1
  182. package/dashboard/dist/assets/{index-D1wVX50Z.js → index-B91h_jZ0.js} +2 -2
  183. package/dashboard/dist/assets/{index-D1wVX50Z.js.map → index-B91h_jZ0.js.map} +1 -1
  184. package/dashboard/dist/assets/{index-BcR6PfpY.js → index-BbI2dzhJ.js} +2 -2
  185. package/dashboard/dist/assets/{index-BcR6PfpY.js.map → index-BbI2dzhJ.js.map} +1 -1
  186. package/dashboard/dist/assets/{index-BizfauqT.js → index-BmVCyB6C.js} +4 -4
  187. package/dashboard/dist/assets/{index-BizfauqT.js.map → index-BmVCyB6C.js.map} +1 -1
  188. package/dashboard/dist/assets/index-C1E5GTs9.js +2 -0
  189. package/dashboard/dist/assets/index-C1E5GTs9.js.map +1 -0
  190. package/dashboard/dist/assets/{index-Cf60K3x9.js → index-C90ZPzXk.js} +2 -2
  191. package/dashboard/dist/assets/{index-Cf60K3x9.js.map → index-C90ZPzXk.js.map} +1 -1
  192. package/dashboard/dist/assets/{index-BYZX9tOb.js → index-Cmgrk7PQ.js} +58 -58
  193. package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +1 -0
  194. package/dashboard/dist/assets/{index-Ds0JoXS2.js → index-DNytWfSZ.js} +2 -2
  195. package/dashboard/dist/assets/{index-Ds0JoXS2.js.map → index-DNytWfSZ.js.map} +1 -1
  196. package/dashboard/dist/assets/index-DX6zxr6t.js +2 -0
  197. package/dashboard/dist/assets/{index-Cg5nfiYX.js.map → index-DX6zxr6t.js.map} +1 -1
  198. package/dashboard/dist/assets/index-DeX-ezqf.css +1 -0
  199. package/dashboard/dist/assets/index-K40Qw1tk.js +2 -0
  200. package/dashboard/dist/assets/{index-Di12t56M.js.map → index-K40Qw1tk.js.map} +1 -1
  201. package/dashboard/dist/assets/{index-BUK3qR-1.js → index-lCyNr5Xk.js} +2 -2
  202. package/dashboard/dist/assets/{index-BUK3qR-1.js.map → index-lCyNr5Xk.js.map} +1 -1
  203. package/dashboard/dist/assets/{mcp-B_xbczAt.js → mcp-CNE44TSp.js} +2 -2
  204. package/dashboard/dist/assets/{mcp-B_xbczAt.js.map → mcp-CNE44TSp.js.map} +1 -1
  205. package/dashboard/dist/assets/mcp-query-RQX0uN-5.js +2 -0
  206. package/dashboard/dist/assets/mcp-query-RQX0uN-5.js.map +1 -0
  207. package/dashboard/dist/assets/mcp-runs-0w40bdz-.js +2 -0
  208. package/dashboard/dist/assets/mcp-runs-0w40bdz-.js.map +1 -0
  209. package/dashboard/dist/assets/{namespaces-C3WtdO_9.js → namespaces-BbmdXuPp.js} +2 -2
  210. package/dashboard/dist/assets/{namespaces-C3WtdO_9.js.map → namespaces-BbmdXuPp.js.map} +1 -1
  211. package/dashboard/dist/assets/{roles-BDAsPpZG.js → roles-DoHYlhWH.js} +2 -2
  212. package/dashboard/dist/assets/{roles-BDAsPpZG.js.map → roles-DoHYlhWH.js.map} +1 -1
  213. package/dashboard/dist/assets/{settings-Ife_UwAp.js → settings-BAiJiCHS.js} +2 -2
  214. package/dashboard/dist/assets/{settings-Ife_UwAp.js.map → settings-BAiJiCHS.js.map} +1 -1
  215. package/dashboard/dist/assets/{tasks-BquNDHDI.js → tasks-CvroqHtm.js} +2 -2
  216. package/dashboard/dist/assets/{tasks-BquNDHDI.js.map → tasks-CvroqHtm.js.map} +1 -1
  217. package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js → useEventHooks-BHMbzR_y.js} +2 -2
  218. package/dashboard/dist/assets/{useEventHooks-anv_B2Yy.js.map → useEventHooks-BHMbzR_y.js.map} +1 -1
  219. package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js +2 -0
  220. package/dashboard/dist/assets/useFilterParams-CGRYFw_A.js.map +1 -0
  221. package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +2 -0
  222. package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js.map +1 -0
  223. package/dashboard/dist/assets/{users-CFcxB4v6.js → users-CxIMy_xw.js} +2 -2
  224. package/dashboard/dist/assets/{users-CFcxB4v6.js.map → users-CxIMy_xw.js.map} +1 -1
  225. package/dashboard/dist/assets/{vendor-icons-T4r2DSPD.js → vendor-icons-AFGxSeQS.js} +132 -82
  226. package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +1 -0
  227. package/dashboard/dist/assets/{workflows-CeRci9z3.js → workflows-yR9yais7.js} +2 -2
  228. package/dashboard/dist/assets/{workflows-CeRci9z3.js.map → workflows-yR9yais7.js.map} +1 -1
  229. package/dashboard/dist/assets/yaml-workflows-QVF2MZ0l.js +2 -0
  230. package/dashboard/dist/assets/yaml-workflows-QVF2MZ0l.js.map +1 -0
  231. package/dashboard/dist/index.html +3 -3
  232. package/docs/schema-exchange.md +173 -0
  233. package/docs/self-test.md +106 -0
  234. package/package.json +4 -2
  235. package/build/lib/db/schemas/003_workflow_discovery.sql +0 -39
  236. package/build/lib/db/schemas/004_query_router.sql +0 -38
  237. package/build/lib/db/schemas/004_workflow_sets.sql +0 -29
  238. package/build/lib/db/schemas/005_triage_router.sql +0 -37
  239. package/build/lib/db/schemas/005_unique_graph_topic.sql +0 -7
  240. package/build/lib/db/schemas/006_oauth.sql +0 -50
  241. package/build/lib/db/schemas/007_security.sql +0 -27
  242. package/build/lib/db/schemas/008_bot_accounts.sql +0 -30
  243. package/build/lib/db/schemas/009_audit_trail.sql +0 -7
  244. package/build/lib/db/schemas/010_credential_providers.sql +0 -4
  245. package/build/lib/db/schemas/011_system_workflow_configs.sql +0 -37
  246. package/build/lib/db/schemas/012_drop_modality.sql +0 -6
  247. package/build/lib/db/schemas/013_execute_as.sql +0 -9
  248. package/build/lib/db/schemas/014_ephemeral_credentials.sql +0 -16
  249. package/build/lib/db/schemas/015_knowledge.sql +0 -23
  250. package/build/lib/db/schemas/016_streamable_http.sql +0 -7
  251. package/dashboard/dist/assets/CredentialsPage-DJablIbs.js +0 -2
  252. package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js +0 -5
  253. package/dashboard/dist/assets/McpQueryDetailPage-BWbinTM_.js.map +0 -1
  254. package/dashboard/dist/assets/McpQueryPage-lV6kfDG5.js +0 -2
  255. package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js +0 -2
  256. package/dashboard/dist/assets/McpRunDetailPage-D6gaxH3_.js.map +0 -1
  257. package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js +0 -2
  258. package/dashboard/dist/assets/McpRunsPage-DKvTklh9.js.map +0 -1
  259. package/dashboard/dist/assets/OperatorDashboard-C9SSV96T.js +0 -2
  260. package/dashboard/dist/assets/RolesPage-SMedMuqa.js +0 -2
  261. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js +0 -2
  262. package/dashboard/dist/assets/WorkflowPill-CZqGslD6.js.map +0 -1
  263. package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js +0 -2
  264. package/dashboard/dist/assets/YamlWorkflowsPage-VjdhnLmO.js.map +0 -1
  265. package/dashboard/dist/assets/escalation-columns-Cyg58nkg.js +0 -2
  266. package/dashboard/dist/assets/helpers-BCix9c_m.js +0 -2
  267. package/dashboard/dist/assets/helpers-BCix9c_m.js.map +0 -1
  268. package/dashboard/dist/assets/index-BYZX9tOb.js.map +0 -1
  269. package/dashboard/dist/assets/index-Cg5nfiYX.js +0 -2
  270. package/dashboard/dist/assets/index-DcIKW-cZ.css +0 -1
  271. package/dashboard/dist/assets/index-Di12t56M.js +0 -2
  272. package/dashboard/dist/assets/mcp-query-B8-P_QoG.js +0 -2
  273. package/dashboard/dist/assets/mcp-query-B8-P_QoG.js.map +0 -1
  274. package/dashboard/dist/assets/mcp-runs-CWeZinoF.js +0 -2
  275. package/dashboard/dist/assets/mcp-runs-CWeZinoF.js.map +0 -1
  276. package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js +0 -2
  277. package/dashboard/dist/assets/useFilterParams-BUyLHcx_.js.map +0 -1
  278. package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js +0 -2
  279. package/dashboard/dist/assets/useYamlActivityEvents-DN-PTgVx.js.map +0 -1
  280. package/dashboard/dist/assets/vendor-icons-T4r2DSPD.js.map +0 -1
  281. package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js +0 -2
  282. package/dashboard/dist/assets/yaml-workflows-DLwd2BOX.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{j as r}from"./index-BYZX9tOb.js";import{a as l}from"./vendor-query-DLp59M9_.js";import{h as b}from"./workflows-CeRci9z3.js";import{D as g}from"./DataTable-CTRhTAfT.js";import{F as N,b as x}from"./FilterBar-BiO8SOzc.js";import{R as v,a as m}from"./RowActions-yDhwwDbU.js";import{u as P}from"./useFilterParams-BUyLHcx_.js";import{P as W}from"./PageHeader-BcTVF9ul.js";import{T as y}from"./TaskQueuePill-Lvr2-NzS.js";import{W as D}from"./WorkflowPill-CZqGslD6.js";import{a1 as E,a8 as j,a9 as C}from"./vendor-icons-T4r2DSPD.js";import{c as q}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-joNbd4gg.js";function B(){const a=q(),{data:u,isLoading:c}=b(),{filters:s,setFilter:i}=P({filters:{search:"",queue:""}}),[o,p]=l.useState(s.search);l.useEffect(()=>{if(o===s.search)return;const e=setTimeout(()=>i("search",o),300);return()=>clearTimeout(e)},[o,i,s.search]);const t=u??[],f=l.useMemo(()=>[...new Set(t.map(e=>e.task_queue).filter(Boolean))].sort(),[t]),k=l.useMemo(()=>{let e=t;if(s.search){const n=s.search.toLowerCase();e=e.filter(h=>h.name.toLowerCase().includes(n))}return s.queue&&(e=e.filter(n=>n.task_queue===s.queue)),e},[t,s]),d=[{key:"name",label:"Workflow",render:e=>r.jsxDEV(D,{type:e.name},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:52,columnNumber:24},this)},{key:"task_queue",label:"Queue",render:e=>r.jsxDEV(y,{queue:e.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:57,columnNumber:24},this),className:"whitespace-nowrap"},{key:"registered",label:"Status",render:e=>e.registered?r.jsxDEV("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium bg-accent/10 text-accent",children:[r.jsxDEV(E,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:64,columnNumber:131},this),"Certified"]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:64,columnNumber:11},this):r.jsxDEV("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-surface-sunken text-text-tertiary",children:"Durable"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:65,columnNumber:11},this),className:"whitespace-nowrap"},{key:"actions",label:"",render:e=>r.jsxDEV(v,{children:e.registered?r.jsxDEV(m,{icon:j,title:"View config",onClick:()=>a(`/workflows/registry/${encodeURIComponent(e.name)}`)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:74,columnNumber:13},this):r.jsxDEV(m,{icon:C,title:"Register workflow",onClick:()=>a(`/workflows/registry/new?workflow_type=${encodeURIComponent(e.name)}&task_queue=${encodeURIComponent(e.task_queue)}`)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:80,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:72,columnNumber:9},this),className:"w-16 text-right"}],w=e=>{e.registered?a(`/workflows/registry/${encodeURIComponent(e.name)}`):a(`/workflows/registry/new?workflow_type=${encodeURIComponent(e.name)}&task_queue=${encodeURIComponent(e.task_queue)}`)};return r.jsxDEV("div",{children:[r.jsxDEV(W,{title:"Workers"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:102,columnNumber:7},this),r.jsxDEV(N,{children:[r.jsxDEV("input",{type:"text",placeholder:"Search workers...",value:o,onChange:e=>p(e.target.value),className:"input text-[11px] py-1 px-2 w-56"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:105,columnNumber:9},this),r.jsxDEV(x,{label:"Queue",value:s.queue,onChange:e=>i("queue",e),options:f.map(e=>({value:e,label:e}))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:104,columnNumber:7},this),r.jsxDEV(g,{columns:d,data:k,keyFn:e=>e.name,onRowClick:w,isLoading:c,emptyMessage:"No active workers"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:120,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/workers/WorkersPage.tsx",lineNumber:101,columnNumber:5},this)}export{B as WorkersPage};
2
- //# sourceMappingURL=index-Cg5nfiYX.js.map
@@ -1 +0,0 @@
1
- *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Plus Jakarta Sans,system-ui,-apple-system,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(30 21 53 / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{--tw-border-opacity: 1;border-color:rgb(224 218 240 / var(--tw-border-opacity, 1))}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.btn-primary{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(108 71 255 / var(--tw-bg-opacity, 1));padding:.625rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-primary:hover{--tw-bg-opacity: 1;background-color:rgb(88 53 219 / var(--tw-bg-opacity, 1))}.btn-secondary{border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(224 218 240 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:.625rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(30 21 53 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(247 244 255 / var(--tw-bg-opacity, 1))}.btn-ghost{border-radius:.375rem;padding:.625rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(91 81 115 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-ghost:hover{--tw-bg-opacity: 1;background-color:rgb(247 244 255 / var(--tw-bg-opacity, 1))}.row-hover{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.1s}.row-hover:hover{--tw-bg-opacity: 1;background-color:rgb(247 244 255 / var(--tw-bg-opacity, 1))}.\!input{width:100%;border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(224 218 240 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:.625rem .875rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(30 21 53 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.\!input::-moz-placeholder{--tw-text-opacity: 1;color:rgb(145 138 171 / var(--tw-text-opacity, 1))}.\!input::placeholder{--tw-text-opacity: 1;color:rgb(145 138 171 / var(--tw-text-opacity, 1))}.\!input:focus{--tw-border-opacity: 1;border-color:rgb(108 71 255 / var(--tw-border-opacity, 1));outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(108 71 255 / .3)}.input{width:100%;border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(224 218 240 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:.625rem .875rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(30 21 53 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.input::-moz-placeholder{--tw-text-opacity: 1;color:rgb(145 138 171 / var(--tw-text-opacity, 1))}.input::placeholder{--tw-text-opacity: 1;color:rgb(145 138 171 / var(--tw-text-opacity, 1))}.input:focus{--tw-border-opacity: 1;border-color:rgb(108 71 255 / var(--tw-border-opacity, 1));outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(108 71 255 / .3)}.select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.375rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(224 218 240 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:.625rem .875rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(30 21 53 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(108 71 255 / .3)}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-4{top:1rem;right:1rem;bottom:1rem;left:1rem}.inset-y-0{top:0;bottom:0}.-left-\[3px\]{left:-3px}.-right-1{right:-.25rem}.-right-3{right:-.75rem}.-top-1{top:-.25rem}.-top-2\.5{top:-.625rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-3{bottom:.75rem}.left-0{left:0}.left-2\.5{left:.625rem}.left-56{left:14rem}.left-\[7px\]{left:7px}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-14{top:3.5rem}.top-2{top:.5rem}.top-3{top:.75rem}.top-6{top:1.5rem}.top-\[2\.75rem\]{top:2.75rem}.top-full{top:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[45\]{z-index:45}.z-\[5\]{z-index:5}.z-\[9999\]{z-index:9999}.col-span-2{grid-column:span 2 / span 2}.float-right{float:right}.-mx-10{margin-left:-2.5rem;margin-right:-2.5rem}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-10{margin-left:-2.5rem}.-ml-8{margin-left:-2rem}.-ml-\[12\.5rem\]{margin-left:-12.5rem}.-ml-\[9\.75rem\]{margin-left:-9.75rem}.-mt-1{margin-top:-.25rem}.-mt-6{margin-top:-1.5rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-7{margin-left:1.75rem}.ml-8{margin-left:2rem}.ml-9{margin-left:2.25rem}.ml-\[19px\]{margin-left:19px}.ml-auto{margin-left:auto}.mr-16{margin-right:4rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-8{height:2rem}.h-\[12\.5rem\]{height:12.5rem}.h-\[14px\]{height:14px}.h-\[15px\]{height:15px}.h-\[16rem\]{height:16rem}.h-\[18px\]{height:18px}.h-\[7px\]{height:7px}.h-\[80px\]{height:80px}.h-\[9px\]{height:9px}.h-\[calc\(100vh-12rem\)\]{height:calc(100vh - 12rem)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-80{max-height:20rem}.max-h-\[200px\]{max-height:200px}.max-h-\[280px\]{max-height:280px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[40vh\]{max-height:40vh}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[calc\(100vh-8rem\)\]{max-height:calc(100vh - 8rem)}.max-h-none{max-height:none}.min-h-\[100px\]{min-height:100px}.min-h-\[120px\]{min-height:120px}.min-h-\[160px\]{min-height:160px}.min-h-\[200px\]{min-height:200px}.min-h-\[300px\]{min-height:300px}.min-h-\[34px\]{min-height:34px}.min-h-\[360px\]{min-height:360px}.min-h-\[60px\]{min-height:60px}.min-h-\[80px\]{min-height:80px}.min-h-\[calc\(100vh-12rem\)\]{min-height:calc(100vh - 12rem)}.min-h-\[calc\(100vh-80px\)\]{min-height:calc(100vh - 80px)}.min-h-\[calc\(100vh-9rem\)\]{min-height:calc(100vh - 9rem)}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-8{width:2rem}.w-\[12\.5rem\]{width:12.5rem}.w-\[14px\]{width:14px}.w-\[15px\]{width:15px}.w-\[16rem\]{width:16rem}.w-\[18px\]{width:18px}.w-\[22rem\]{width:22rem}.w-\[28rem\]{width:28rem}.w-\[30\%\]{width:30%}.w-\[36rem\]{width:36rem}.w-\[380px\]{width:380px}.w-\[40vw\]{width:40vw}.w-\[48rem\]{width:48rem}.w-\[7px\]{width:7px}.w-\[9px\]{width:9px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-4{min-width:1rem}.min-w-\[180px\]{min-width:180px}.min-w-\[800px\]{min-width:800px}.min-w-\[80px\]{min-width:80px}.max-w-0{max-width:0px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[280px\]{max-width:280px}.max-w-\[85\%\]{max-width:85%}.max-w-\[90vw\]{max-width:90vw}.max-w-dashboard{max-width:1440px}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[60vh\]{--tw-translate-y: -60vh;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[120vw\]{--tw-translate-x: 120vw;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-\[120deg\]{--tw-rotate: -120deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[3\]{--tw-scale-x: 3;--tw-scale-y: 3;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-\[triage-glow_6s_ease-in-out_infinite\]{animation:triage-glow 6s ease-in-out infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[1fr_240px\]{grid-template-columns:1fr 240px}.grid-cols-\[300px_1fr\]{grid-template-columns:300px 1fr}.grid-cols-\[3fr_1fr\]{grid-template-columns:3fr 1fr}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-surface-border>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(224 218 240 / var(--tw-divide-opacity, 1))}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-accent{--tw-border-opacity: 1;border-color:rgb(108 71 255 / var(--tw-border-opacity, 1))}.border-accent-faint{--tw-border-opacity: 1;border-color:rgb(232 226 248 / var(--tw-border-opacity, 1))}.border-accent-muted{--tw-border-opacity: 1;border-color:rgb(200 190 240 / var(--tw-border-opacity, 1))}.border-accent-muted\/40{border-color:#c8bef066}.border-accent\/10{border-color:#6c47ff1a}.border-accent\/20{border-color:#6c47ff33}.border-accent\/30{border-color:#6c47ff4d}.border-amber-600{--tw-border-opacity: 1;border-color:rgb(217 119 6 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity, 1))}.border-purple-500\/20{border-color:#a855f733}.border-status-draft{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity, 1))}.border-status-error{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity, 1))}.border-status-error\/20{border-color:#dc262633}.border-status-error\/30{border-color:#dc26264d}.border-status-pending\/30{border-color:#f59e0b4d}.border-status-success{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-status-success\/30{border-color:#16a34a4d}.border-status-warning{--tw-border-opacity: 1;border-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.border-status-warning\/20{border-color:#f59e0b33}.border-status-warning\/30{border-color:#f59e0b4d}.border-surface-border{--tw-border-opacity: 1;border-color:rgb(224 218 240 / var(--tw-border-opacity, 1))}.border-surface-border\/30{border-color:#e0daf04d}.border-surface-border\/50{border-color:#e0daf080}.border-text-tertiary{--tw-border-opacity: 1;border-color:rgb(145 138 171 / var(--tw-border-opacity, 1))}.border-violet-500{--tw-border-opacity: 1;border-color:rgb(139 92 246 / var(--tw-border-opacity, 1))}.border-white\/70{border-color:#ffffffb3}.border-l-accent{--tw-border-opacity: 1;border-left-color:rgb(108 71 255 / var(--tw-border-opacity, 1))}.bg-\[\#6C47FF\],.bg-accent{--tw-bg-opacity: 1;background-color:rgb(108 71 255 / var(--tw-bg-opacity, 1))}.bg-accent-faint{--tw-bg-opacity: 1;background-color:rgb(232 226 248 / var(--tw-bg-opacity, 1))}.bg-accent-faint\/50{background-color:#e8e2f880}.bg-accent-muted{--tw-bg-opacity: 1;background-color:rgb(200 190 240 / var(--tw-bg-opacity, 1))}.bg-accent-muted\/20{background-color:#c8bef033}.bg-accent\/10{background-color:#6c47ff1a}.bg-accent\/15{background-color:#6c47ff26}.bg-accent\/20{background-color:#6c47ff33}.bg-accent\/5{background-color:#6c47ff0d}.bg-accent\/60{background-color:#6c47ff99}.bg-accent\/\[0\.06\]{background-color:#6c47ff0f}.bg-accent\/\[0\.08\]{background-color:#6c47ff14}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-black\/20{background-color:#0003}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-500\/70{background-color:#3b82f6b3}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-purple-500\/10{background-color:#a855f71a}.bg-status-active{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-status-draft{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-status-draft\/30{background-color:#f973164d}.bg-status-error{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-status-error\/10{background-color:#dc26261a}.bg-status-error\/5{background-color:#dc26260d}.bg-status-error\/\[0\.04\]{background-color:#dc26260a}.bg-status-pending{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-status-pending\/10{background-color:#f59e0b1a}.bg-status-success{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-status-success\/10{background-color:#16a34a1a}.bg-status-success\/20{background-color:#16a34a33}.bg-status-success\/30{background-color:#16a34a4d}.bg-status-warning{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-status-warning\/10{background-color:#f59e0b1a}.bg-status-warning\/15{background-color:#f59e0b26}.bg-status-warning\/5{background-color:#f59e0b0d}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-surface-border{--tw-bg-opacity: 1;background-color:rgb(224 218 240 / var(--tw-bg-opacity, 1))}.bg-surface-border\/60{background-color:#e0daf099}.bg-surface-hover{--tw-bg-opacity: 1;background-color:rgb(247 244 255 / var(--tw-bg-opacity, 1))}.bg-surface-hover\/30{background-color:#f7f4ff4d}.bg-surface-raised{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-surface-raised\/50{background-color:#ffffff80}.bg-surface-raised\/\[0\.03\]{background-color:#ffffff08}.bg-surface-sunken{--tw-bg-opacity: 1;background-color:rgb(245 245 247 / var(--tw-bg-opacity, 1))}.bg-surface-sunken\/20{background-color:#f5f5f733}.bg-surface-sunken\/30{background-color:#f5f5f74d}.bg-surface-sunken\/40{background-color:#f5f5f766}.bg-surface-sunken\/50{background-color:#f5f5f780}.bg-surface-sunken\/80{background-color:#f5f5f7cc}.bg-surface-sunken\/90{background-color:#f5f5f7e6}.bg-surface\/90{background-color:#ffffffe6}.bg-surface\/95{background-color:#fffffff2}.bg-text-primary\/30{background-color:#1e15354d}.bg-text-secondary{--tw-bg-opacity: 1;background-color:rgb(91 81 115 / var(--tw-bg-opacity, 1))}.bg-text-tertiary{--tw-bg-opacity: 1;background-color:rgb(145 138 171 / var(--tw-bg-opacity, 1))}.bg-text-tertiary\/30{background-color:#918aab4d}.bg-transparent{background-color:transparent}.bg-violet-500{--tw-bg-opacity: 1;background-color:rgb(139 92 246 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.fill-status-active{fill:#2563eb}.fill-status-error{fill:#dc2626}.fill-status-success{fill:#16a34a}.fill-status-warning{fill:#f59e0b}.fill-text-tertiary{fill:#918aab}.stroke-current{stroke:currentColor}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-60{padding-bottom:15rem}.pl-0{padding-left:0}.pl-11{padding-left:2.75rem}.pl-14{padding-left:3.5rem}.pl-16{padding-left:4rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-52{padding-left:13rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-28{padding-right:7rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-7{padding-right:1.75rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-\[36px\]{padding-top:36px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.font-sans{font-family:Plus Jakarta Sans,system-ui,-apple-system,sans-serif}.\!text-\[9px\]{font-size:9px!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[1\.5rem\]{font-size:1.5rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[36px\]{font-size:36px}.text-\[44px\]{font-size:44px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent{--tw-text-opacity: 1;color:rgb(108 71 255 / var(--tw-text-opacity, 1))}.text-accent-muted{--tw-text-opacity: 1;color:rgb(200 190 240 / var(--tw-text-opacity, 1))}.text-accent\/40{color:#6c47ff66}.text-accent\/60{color:#6c47ff99}.text-accent\/70{color:#6c47ffb3}.text-accent\/75{color:#6c47ffbf}.text-accent\/80{color:#6c47ffcc}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-500\/70{color:#3b82f6b3}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-status-active{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-status-error{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-status-error\/70{color:#dc2626b3}.text-status-error\/80{color:#dc2626cc}.text-status-pending{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-status-success{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-status-success\/70{color:#16a34ab3}.text-status-success\/80{color:#16a34acc}.text-status-warning{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-surface-border{--tw-text-opacity: 1;color:rgb(224 218 240 / var(--tw-text-opacity, 1))}.text-text-inverse{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-text-primary{--tw-text-opacity: 1;color:rgb(30 21 53 / var(--tw-text-opacity, 1))}.text-text-secondary{--tw-text-opacity: 1;color:rgb(91 81 115 / var(--tw-text-opacity, 1))}.text-text-tertiary{--tw-text-opacity: 1;color:rgb(145 138 171 / var(--tw-text-opacity, 1))}.text-text-tertiary\/30{color:#918aab4d}.text-text-tertiary\/40{color:#918aab66}.text-text-tertiary\/50{color:#918aab80}.text-text-tertiary\/60{color:#918aab99}.text-text-tertiary\/70{color:#918aabb3}.text-violet-400{--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.text-violet-500{--tw-text-opacity: 1;color:rgb(139 92 246 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.decoration-text-tertiary\/30{text-decoration-color:#918aab4d}.accent-accent{accent-color:#6C47FF}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black\/5{--tw-shadow-color: rgb(0 0 0 / .05);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-accent{--tw-ring-opacity: 1;--tw-ring-color: rgb(108 71 255 / var(--tw-ring-opacity, 1))}.ring-offset-1{--tw-ring-offset-width: 1px}.ring-offset-surface{--tw-ring-offset-color: #FFFFFF}.brightness-150{--tw-brightness: brightness(1.5);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[2px\]{--tw-backdrop-blur: blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[grid-template-rows\]{transition-property:grid-template-rows;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-\[1500ms\]{transition-duration:1.5s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes triage-glow{0%{box-shadow:0 0 3px #6c47ff26}8.3%{box-shadow:0 0 10px 2px #6c47ff66}16.7%,to{box-shadow:0 0 3px #6c47ff26}}.animate-page-enter{animation:fadeIn .15s ease-out both}@keyframes pageFade{0%{opacity:0}to{opacity:1}}.animate-page-in{animation:pageFade .2s ease-out both}.bg-stripes{background-image:repeating-linear-gradient(-45deg,transparent,transparent 3px,rgba(255,255,255,.15) 3px,rgba(255,255,255,.15) 6px);background-color:var(--color-status-warning, #f59e0b)}.placeholder\:text-text-tertiary::-moz-placeholder{--tw-text-opacity: 1;color:rgb(145 138 171 / var(--tw-text-opacity, 1))}.placeholder\:text-text-tertiary::placeholder{--tw-text-opacity: 1;color:rgb(145 138 171 / var(--tw-text-opacity, 1))}.last\:border-b-0:last-child{border-bottom-width:0px}.focus-within\:ring-1:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-accent\/40:hover{border-color:#6c47ff66}.hover\:border-accent\/50:hover{border-color:#6c47ff80}.hover\:border-text-tertiary:hover{--tw-border-opacity: 1;border-color:rgb(145 138 171 / var(--tw-border-opacity, 1))}.hover\:bg-accent-muted:hover{--tw-bg-opacity: 1;background-color:rgb(200 190 240 / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/20:hover{background-color:#6c47ff33}.hover\:bg-accent\/30:hover{background-color:#6c47ff4d}.hover\:bg-accent\/90:hover{background-color:#6c47ffe6}.hover\:bg-accent\/\[0\.04\]:hover{background-color:#6c47ff0a}.hover\:bg-status-error\/10:hover{background-color:#dc26261a}.hover\:bg-status-error\/20:hover{background-color:#dc262633}.hover\:bg-status-error\/80:hover{background-color:#dc2626cc}.hover\:bg-status-error\/90:hover{background-color:#dc2626e6}.hover\:bg-status-success\/10:hover{background-color:#16a34a1a}.hover\:bg-status-success\/20:hover{background-color:#16a34a33}.hover\:bg-surface-hover:hover{--tw-bg-opacity: 1;background-color:rgb(247 244 255 / var(--tw-bg-opacity, 1))}.hover\:bg-surface-hover\/50:hover{background-color:#f7f4ff80}.hover\:bg-surface-raised:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:bg-surface-raised\/30:hover{background-color:#ffffff4d}.hover\:bg-surface-raised\/60:hover{background-color:#fff9}.hover\:bg-surface-sunken:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 247 / var(--tw-bg-opacity, 1))}.hover\:bg-surface-sunken\/40:hover{background-color:#f5f5f766}.hover\:text-accent:hover{--tw-text-opacity: 1;color:rgb(108 71 255 / var(--tw-text-opacity, 1))}.hover\:text-accent-hover:hover{--tw-text-opacity: 1;color:rgb(88 53 219 / var(--tw-text-opacity, 1))}.hover\:text-accent\/80:hover{color:#6c47ffcc}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.hover\:text-status-error:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-status-success:hover{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.hover\:text-status-warning:hover{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.hover\:text-status-warning\/80:hover{color:#f59e0bcc}.hover\:text-text-primary:hover{--tw-text-opacity: 1;color:rgb(30 21 53 / var(--tw-text-opacity, 1))}.hover\:text-text-secondary:hover{--tw-text-opacity: 1;color:rgb(91 81 115 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:border-accent:focus{--tw-border-opacity: 1;border-color:rgb(108 71 255 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-inset:focus{--tw-ring-inset: inset}.focus\:ring-accent:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(108 71 255 / var(--tw-ring-opacity, 1))}.focus\:ring-accent\/40:focus{--tw-ring-color: rgb(108 71 255 / .4)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:no-underline:disabled{text-decoration-line:none}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group\/section:hover .group-hover\/section\:text-text-tertiary{--tw-text-opacity: 1;color:rgb(145 138 171 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-accent{--tw-text-opacity: 1;color:rgb(108 71 255 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-accent-hover{--tw-text-opacity: 1;color:rgb(88 53 219 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-text-primary{--tw-text-opacity: 1;color:rgb(30 21 53 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:underline{text-decoration-line:underline}.group\/key:hover .group-hover\/key\:opacity-100,.group\/row:hover .group-hover\/row\:opacity-100{opacity:1}.group\/sorthead:hover .group-hover\/sorthead\:opacity-40{opacity:.4}.group\/task:hover .group-hover\/task\:opacity-100,.group\/trace:hover .group-hover\/trace\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:640px){.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:w-72{width:18rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[1fr_240px\]{grid-template-columns:1fr 240px}.lg\:grid-cols-\[1fr_320px\]{grid-template-columns:1fr 320px}.lg\:grid-cols-\[1fr_340px\]{grid-template-columns:1fr 340px}.lg\:grid-cols-\[1fr_360px\]{grid-template-columns:1fr 360px}.lg\:grid-cols-\[1fr_400px\]{grid-template-columns:1fr 400px}.lg\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.lg\:border-l{border-left-width:1px}.lg\:border-surface-border{--tw-border-opacity: 1;border-color:rgb(224 218 240 / var(--tw-border-opacity, 1))}.lg\:pl-12{padding-left:3rem}}
@@ -1,2 +0,0 @@
1
- import{j as e}from"./index-BYZX9tOb.js";import{a as u}from"./vendor-query-DLp59M9_.js";import{b as A,c as T,d as K,e as I,f as F,u as z}from"./users-CFcxB4v6.js";import{u as C}from"./useFilterParams-BUyLHcx_.js";import{D as U}from"./DataTable-CTRhTAfT.js";import{S as k}from"./StickyPagination-DTIjBKN3.js";import{F as $,b as O}from"./FilterBar-BiO8SOzc.js";import{T as w}from"./TimestampCell-QX_0i5FK.js";import{C as y}from"./ConfirmDeleteModal-DZMgmlof.js";import{R as M,a as D}from"./RowActions-yDhwwDbU.js";import{P as S}from"./PageHeader-BcTVF9ul.js";import{R as E}from"./RolePill-D9ZIkYiu.js";import{M as j}from"./Modal-BuTvD0pz.js";import{a as G,b as L,c as q,d as H,e as J,f as Q,g as W,h as X,u as Y}from"./bots-DIM6lBoY.js";import{u as R}from"./roles-BDAsPpZG.js";import{T as Z}from"./TimeAgo-BZdLdrIh.js";import{H as ee,J as se,ag as ae,j as P,a9 as te,x as _,U as ie,a2 as re}from"./vendor-icons-T4r2DSPD.js";import{f as le}from"./vendor-react-Co3Y8ikm.js";import"./EmptyState-joNbd4gg.js";function oe({open:t,onClose:l}){const s=A(),[i,r]=u.useState({external_id:"",email:"",display_name:"",password:""}),[d,p]=u.useState(t);t!==d&&(p(t),t&&r({external_id:"",email:"",display_name:"",password:""}));const c=()=>{i.external_id.trim()&&s.mutate({external_id:i.external_id.trim(),email:i.email.trim()||void 0,display_name:i.display_name.trim()||void 0,password:i.password||void 0},{onSuccess:l})},m=(a,o)=>r(N=>({...N,[a]:o}));return e.jsxDEV(j,{open:t,onClose:l,title:"Create User",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"External ID (required)"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:46,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:i.external_id,onChange:a=>m("external_id",a.target.value),placeholder:"e.g., john.doe",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:49,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:45,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Display Name"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:58,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:i.display_name,onChange:a=>m("display_name",a.target.value),placeholder:"John Doe",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:61,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:57,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Email"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:70,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:i.email,onChange:a=>m("email",a.target.value),placeholder:"john@example.com",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:73,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:69,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Password"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:82,columnNumber:11},this),e.jsxDEV("input",{type:"password",value:i.password,onChange:a=>m("password",a.target.value),placeholder:"Leave blank for no password",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:85,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:81,columnNumber:9},this),s.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:s.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:95,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:l,className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:99,columnNumber:11},this),e.jsxDEV("button",{onClick:c,disabled:!i.external_id.trim()||s.isPending,className:"btn-primary text-xs",children:s.isPending?"Creating...":"Create"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:102,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:98,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:44,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/CreateUserModal.tsx",lineNumber:43,columnNumber:5},this)}function ne({open:t,onClose:l,user:s}){const i=T(),[r,d]=u.useState({display_name:"",email:"",status:"active"}),[p,c]=u.useState(s);s!==p&&(c(s),s&&d({display_name:s.display_name??"",email:s.email??"",status:s.status}));const m=()=>{s&&i.mutate({id:s.id,display_name:r.display_name.trim()||void 0,email:r.email.trim()||void 0,status:r.status},{onSuccess:l})};return e.jsxDEV(j,{open:t,onClose:l,title:`Edit — ${(s==null?void 0:s.display_name)||(s==null?void 0:s.external_id)||""}`,children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Display Name"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:55,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:r.display_name,onChange:a=>d(o=>({...o,display_name:a.target.value})),className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:58,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:54,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Email"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:66,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:r.email,onChange:a=>d(o=>({...o,email:a.target.value})),className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:65,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Status"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:77,columnNumber:11},this),e.jsxDEV("select",{value:r.status,onChange:a=>d(o=>({...o,status:a.target.value})),className:"select text-xs w-full",children:[e.jsxDEV("option",{value:"active",children:"Active"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:85,columnNumber:13},this),e.jsxDEV("option",{value:"inactive",children:"Inactive"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:86,columnNumber:13},this),e.jsxDEV("option",{value:"suspended",children:"Suspended"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:87,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:80,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:76,columnNumber:9},this),i.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:i.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:92,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:l,className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:96,columnNumber:11},this),e.jsxDEV("button",{onClick:m,disabled:i.isPending,className:"btn-primary text-xs",children:i.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:99,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:95,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:53,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/EditUserModal.tsx",lineNumber:48,columnNumber:5},this)}function de({open:t,onClose:l}){const s=G(),[i,r]=u.useState({name:"",display_name:"",description:""}),[d,p]=u.useState(t);t!==d&&(p(t),t&&r({name:"",display_name:"",description:""}));const c=()=>{i.name.trim()&&s.mutate({name:i.name.trim(),display_name:i.display_name.trim()||void 0,description:i.description.trim()||void 0},{onSuccess:l})},m=(a,o)=>r(N=>({...N,[a]:o}));return e.jsxDEV(j,{open:t,onClose:l,title:"Create Bot",children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Name (required)"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:44,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:i.name,onChange:a=>m("name",a.target.value.replace(/\s+/g,"-").toLowerCase()),placeholder:"e.g., ci-bot",className:"input text-xs w-full font-mono"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:47,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:43,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Display Name"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:56,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:i.display_name,onChange:a=>m("display_name",a.target.value),placeholder:"CI Bot",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:59,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:55,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:68,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:i.description,onChange:a=>m("description",a.target.value),placeholder:"Runs scheduled workflows",className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:71,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:67,columnNumber:9},this),s.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:s.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:81,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:l,className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:85,columnNumber:11},this),e.jsxDEV("button",{onClick:c,disabled:!i.name.trim()||s.isPending,className:"btn-primary text-xs",children:s.isPending?"Creating...":"Create"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:88,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:84,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:42,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/CreateBotModal.tsx",lineNumber:41,columnNumber:5},this)}function me({open:t,onClose:l,bot:s}){const i=L(),[r,d]=u.useState({display_name:"",description:"",status:"active"}),[p,c]=u.useState(s);s!==p&&(c(s),s&&d({display_name:s.display_name??"",description:s.description??"",status:s.status}));const m=()=>{s&&i.mutate({id:s.id,display_name:r.display_name.trim()||void 0,description:r.description.trim()||void 0,status:r.status},{onSuccess:l})};return e.jsxDEV(j,{open:t,onClose:l,title:`Edit — ${(s==null?void 0:s.display_name)||(s==null?void 0:s.external_id)||""}`,children:e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Display Name"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:55,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:r.display_name,onChange:a=>d(o=>({...o,display_name:a.target.value})),className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:58,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:54,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Description"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:66,columnNumber:11},this),e.jsxDEV("input",{type:"text",value:r.description,onChange:a=>d(o=>({...o,description:a.target.value})),className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:69,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:65,columnNumber:9},this),e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:"Status"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:77,columnNumber:11},this),e.jsxDEV("select",{value:r.status,onChange:a=>d(o=>({...o,status:a.target.value})),className:"select text-xs w-full",children:[e.jsxDEV("option",{value:"active",children:"Active"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:85,columnNumber:13},this),e.jsxDEV("option",{value:"inactive",children:"Inactive"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:86,columnNumber:13},this),e.jsxDEV("option",{value:"suspended",children:"Suspended"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:87,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:80,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:76,columnNumber:9},this),i.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:i.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:92,columnNumber:11},this),e.jsxDEV("div",{className:"flex justify-end gap-3 pt-2",children:[e.jsxDEV("button",{onClick:l,className:"btn-secondary text-xs",children:"Cancel"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:96,columnNumber:11},this),e.jsxDEV("button",{onClick:m,disabled:i.isPending,className:"btn-primary text-xs",children:i.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:99,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:95,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:53,columnNumber:7},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/EditBotModal.tsx",lineNumber:48,columnNumber:5},this)}function ue({botId:t}){const{data:l}=q(t),s=H(),i=J(),[r,d]=u.useState(""),[p,c]=u.useState(null),[m,a]=u.useState(!1),[o,N]=u.useState(null),g=(l==null?void 0:l.keys)??[],n=()=>{r.trim()&&s.mutate({botId:t,name:r.trim(),scopes:["mcp:tool:call"]},{onSuccess:f=>{c(f.rawKey),d("")}})},h=()=>{p&&(navigator.clipboard.writeText(p),a(!0),setTimeout(()=>a(!1),2e3))},v=()=>{o&&i.mutate({botId:t,keyId:o.id},{onSuccess:()=>N(null)})};return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-3",children:"API Keys"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:58,columnNumber:7},this),p&&e.jsxDEV("div",{className:"mb-3 p-3 bg-status-success/10 border border-status-success/30 rounded-md",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold text-status-success mb-1",children:"Key generated — copy now, it won't be shown again"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:64,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("code",{className:"text-[11px] font-mono text-text-primary bg-surface-sunken px-2 py-1 rounded flex-1 overflow-hidden text-ellipsis",children:p},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:68,columnNumber:13},this),e.jsxDEV("button",{onClick:h,className:"text-text-tertiary hover:text-text-primary shrink-0",title:"Copy to clipboard",children:m?e.jsxDEV(ee,{className:"w-3.5 h-3.5 text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:76,columnNumber:25},this):e.jsxDEV(se,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:76,columnNumber:81},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:71,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:67,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:63,columnNumber:9},this),g.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary mb-3",children:"No API keys."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:83,columnNumber:9},this):e.jsxDEV("div",{className:"space-y-1.5 mb-3",children:g.map(f=>e.jsxDEV("div",{className:"group/key flex items-center justify-between px-2.5 py-1.5 bg-surface-sunken rounded text-xs",children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV(ae,{className:"w-3 h-3 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:92,columnNumber:17},this),e.jsxDEV("span",{className:"text-text-primary font-mono",children:f.name},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:93,columnNumber:17},this),f.last_used_at&&e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:["used ",e.jsxDEV(Z,{date:f.last_used_at},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:96,columnNumber:26},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:95,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:91,columnNumber:15},this),e.jsxDEV("button",{onClick:()=>N(f),className:"opacity-0 group-hover/key:opacity-100 transition-opacity text-text-tertiary hover:text-status-error",title:"Revoke key",children:e.jsxDEV(P,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:105,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:100,columnNumber:15},this)]},f.id,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:87,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:85,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("input",{type:"text",value:r,onChange:f=>d(f.target.value),placeholder:"Key name...",className:"input text-xs flex-1 font-mono"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:113,columnNumber:9},this),e.jsxDEV("button",{onClick:n,disabled:!r.trim()||s.isPending,className:"btn-primary text-xs inline-flex items-center gap-1",children:[e.jsxDEV(te,{className:"w-3 h-3"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:125,columnNumber:11},this),s.isPending?"...":"Generate"]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:120,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:112,columnNumber:7},this),s.error&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-1",children:s.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:130,columnNumber:9},this),e.jsxDEV(y,{open:!!o,onClose:()=>N(null),onConfirm:v,title:"Revoke API Key",description:e.jsxDEV(e.Fragment,{children:["Revoke API key"," ",e.jsxDEV("span",{className:"font-medium text-text-primary font-mono",children:o==null?void 0:o.name},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:141,columnNumber:13},this),"? This bot will no longer be able to authenticate with this key."]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:139,columnNumber:11},this),isPending:i.isPending,error:i.error},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:133,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:57,columnNumber:5},this)}function ce({bot:t}){const{data:l}=R(),s=Q(),i=W(),[r,d]=u.useState(""),[p,c]=u.useState("member"),m=(l==null?void 0:l.roles)??[],a=t.roles??[],o=u.useMemo(()=>{const n=new Set(a.map(h=>h.role));return m.filter(h=>!n.has(h))},[m,a]),N=()=>{r.trim()&&s.mutate({botId:t.id,role:r.trim(),type:p},{onSuccess:()=>{d(""),c("member")}})},g=n=>{i.mutate({botId:t.id,role:n})};return e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-3",children:"Roles"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:183,columnNumber:7},this),a.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary mb-3",children:"No roles assigned."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:188,columnNumber:9},this):e.jsxDEV("div",{className:"flex flex-wrap gap-2 mb-3",children:a.map(n=>e.jsxDEV("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs bg-surface-sunken rounded-full text-text-secondary",children:[e.jsxDEV(E,{role:n.role},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:196,columnNumber:15},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:n.type},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:197,columnNumber:15},this),e.jsxDEV("button",{onClick:()=>g(n.role),className:"text-text-tertiary hover:text-status-error transition-colors ml-0.5",title:`Remove ${n.role}`,children:"×"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:198,columnNumber:15},this)]},n.role,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:192,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:190,columnNumber:9},this),o.length>0&&e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("select",{value:r,onChange:n=>d(n.target.value),className:"select text-xs font-mono flex-1",children:[e.jsxDEV("option",{value:"",children:"Select a role..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:217,columnNumber:13},this),o.map(n=>e.jsxDEV("option",{value:n,children:n},n,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:219,columnNumber:15},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:212,columnNumber:11},this),e.jsxDEV("select",{value:p,onChange:n=>c(n.target.value),className:"select text-xs w-24",children:[e.jsxDEV("option",{value:"member",children:"member"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:227,columnNumber:13},this),e.jsxDEV("option",{value:"admin",children:"admin"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:228,columnNumber:13},this),e.jsxDEV("option",{value:"superadmin",children:"superadmin"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:229,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:222,columnNumber:11},this),e.jsxDEV("button",{onClick:N,disabled:!r||s.isPending,className:"btn-primary text-xs",children:s.isPending?"...":"Add"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:231,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:211,columnNumber:9},this),s.error&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-1",children:s.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:241,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:182,columnNumber:5},this)}function pe({bot:t}){return t?e.jsxDEV("div",{className:"border-l border-surface-border pl-6 pt-4 min-h-[300px] space-y-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm text-text-primary",children:t.display_name||t.external_id},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:261,columnNumber:9},this),t.description&&e.jsxDEV("p",{className:"text-xs text-text-tertiary mt-0.5",children:t.description},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:263,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:260,columnNumber:7},this),e.jsxDEV(ue,{botId:t.id},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:267,columnNumber:7},this),e.jsxDEV(ce,{bot:t},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:268,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:259,columnNumber:5},this):e.jsxDEV("div",{className:"border-l border-surface-border pl-6 pt-4 min-h-[300px]",children:e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Select a bot to manage its API keys and roles."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:251,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotDetailPanel.tsx",lineNumber:250,columnNumber:7},this)}const be={active:"bg-status-success",inactive:"bg-text-tertiary",suspended:"bg-status-error"};function Ne({embedded:t=!1}){const{pagination:l}=C({filters:{}}),s=X(),[i,r]=u.useState(!1),[d,p]=u.useState(null),[c,m]=u.useState(null),[a,o]=u.useState(null),{data:N,isLoading:g}=Y({limit:l.pageSize,offset:l.offset}),n=(N==null?void 0:N.total)??0,h=(N==null?void 0:N.bots)??[],v=u.useMemo(()=>c?h.find(x=>x.id===c.id)??c:null,[h,c]),f=[{key:"display_name",label:"Bot",render:x=>e.jsxDEV("div",{className:"flex items-center gap-2.5",children:[e.jsxDEV("span",{className:`w-2 h-2 rounded-full shrink-0 ${be[x.status]??"bg-status-pending"}`,title:x.status},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:51,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm text-text-primary",children:x.display_name||x.external_id},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:56,columnNumber:13},this),x.description&&e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:x.description},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:60,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:55,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:50,columnNumber:9},this)},{key:"roles",label:"Roles",render:x=>e.jsxDEV("div",{className:"flex gap-1 flex-wrap",children:(x.roles??[]).map(b=>e.jsxDEV(E,{role:b.role},b.role,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:72,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:70,columnNumber:9},this)},{key:"created_at",label:"Created",render:x=>e.jsxDEV(w,{date:x.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:80,columnNumber:24},this),className:"w-44"},{key:"actions",label:"",render:x=>e.jsxDEV(M,{children:[e.jsxDEV(D,{icon:_,title:"Edit bot",onClick:()=>p(x)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:88,columnNumber:11},this),e.jsxDEV(D,{icon:P,title:"Delete bot",onClick:()=>o(x),colorClass:"text-text-tertiary hover:text-status-error"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:93,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:87,columnNumber:9},this),className:"w-16 text-right"}],V=()=>{a&&s.mutate(a.id,{onSuccess:()=>{o(null),(c==null?void 0:c.id)===a.id&&m(null)}})};return e.jsxDEV("div",{children:[t?e.jsxDEV("div",{className:"flex justify-end mb-4",children:e.jsxDEV("button",{onClick:()=>r(!0),className:"btn-primary text-xs",children:"Add Bot"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:119,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:118,columnNumber:9},this):e.jsxDEV(S,{title:"Service Accounts",actions:e.jsxDEV("button",{onClick:()=>r(!0),className:"btn-primary text-xs",children:"Add Bot"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:127,columnNumber:13},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:124,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_360px] gap-6",children:[e.jsxDEV("div",{className:"overflow-x-clip",children:[e.jsxDEV(U,{columns:f,data:h,keyFn:x=>x.id,isLoading:g,emptyMessage:"No bots yet",onRowClick:x=>m(x),activeRowKey:(v==null?void 0:v.id)??null},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:136,columnNumber:11},this),e.jsxDEV(k,{page:l.page,totalPages:l.totalPages(n),onPageChange:l.setPage,total:n,pageSize:l.pageSize,onPageSizeChange:l.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:146,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:135,columnNumber:9},this),e.jsxDEV(pe,{bot:v},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:156,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:134,columnNumber:7},this),e.jsxDEV(de,{open:i,onClose:()=>r(!1)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:159,columnNumber:7},this),e.jsxDEV(me,{open:!!d,onClose:()=>p(null),bot:d},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:161,columnNumber:7},this),e.jsxDEV(y,{open:!!a,onClose:()=>o(null),onConfirm:V,title:"Delete Bot",description:e.jsxDEV(e.Fragment,{children:["Delete"," ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:(a==null?void 0:a.display_name)||(a==null?void 0:a.external_id)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:175,columnNumber:13},this),"? This will also revoke all API keys. This action cannot be undone."]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:173,columnNumber:11},this),isPending:s.isPending,error:s.error},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:167,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/bots/BotsPage.tsx",lineNumber:116,columnNumber:5},this)}function xe({user:t}){const{data:l}=R(),s=K(),i=I(),[r,d]=u.useState(""),[p,c]=u.useState("member"),m=(l==null?void 0:l.roles)??[],a=(t==null?void 0:t.roles)??[],o=u.useMemo(()=>{const n=new Set(a.map(h=>h.role));return m.filter(h=>!n.has(h))},[m,a]),N=()=>{!t||!r.trim()||s.mutate({userId:t.id,role:r.trim(),type:p},{onSuccess:()=>{d(""),c("member")}})},g=n=>{t&&i.mutate({userId:t.id,role:n})};return e.jsxDEV("div",{className:"border-l border-surface-border pl-6 pt-4 min-h-[300px]",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-4",children:"Role Membership"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:37,columnNumber:7},this),t?e.jsxDEV("div",{className:"space-y-4",children:[e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm text-text-primary",children:t.display_name||t.external_id},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:48,columnNumber:13},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-0.5",children:"Member of:"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:49,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:47,columnNumber:11},this),a.length===0?e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"No roles assigned."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:53,columnNumber:13},this):e.jsxDEV("div",{className:"flex flex-wrap gap-2",children:a.map(n=>e.jsxDEV("span",{className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs bg-surface-sunken rounded-full text-text-secondary",children:[e.jsxDEV(E,{role:n.role},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:61,columnNumber:19},this),e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:n.type},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:62,columnNumber:19},this),e.jsxDEV("button",{onClick:()=>g(n.role),className:"text-text-tertiary hover:text-status-error transition-colors ml-0.5",title:`Remove ${n.role}`,children:"×"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:63,columnNumber:19},this)]},n.role,!0,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:57,columnNumber:17},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:55,columnNumber:13},this),o.length>0&&e.jsxDEV("div",{className:"pt-3 border-t border-surface-border",children:[e.jsxDEV("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-2",children:"Add Role"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:77,columnNumber:15},this),e.jsxDEV("div",{className:"flex items-center gap-2",children:[e.jsxDEV("select",{value:r,onChange:n=>d(n.target.value),className:"select text-xs font-mono flex-1",children:[e.jsxDEV("option",{value:"",children:"Select a role..."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:86,columnNumber:19},this),o.map(n=>e.jsxDEV("option",{value:n,children:n},n,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:88,columnNumber:21},this))]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:81,columnNumber:17},this),e.jsxDEV("select",{value:p,onChange:n=>c(n.target.value),className:"select text-xs w-24",children:[e.jsxDEV("option",{value:"member",children:"member"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:96,columnNumber:19},this),e.jsxDEV("option",{value:"admin",children:"admin"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:97,columnNumber:19},this),e.jsxDEV("option",{value:"superadmin",children:"superadmin"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:98,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:91,columnNumber:17},this),e.jsxDEV("button",{onClick:N,disabled:!r||s.isPending,className:"btn-primary text-xs",children:s.isPending?"...":"Add"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:100,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:80,columnNumber:15},this),s.error&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-1",children:s.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:109,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:76,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:46,columnNumber:9},this):e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Select a user to manage their roles."},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:42,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/RolePanel.tsx",lineNumber:36,columnNumber:5},this)}function he({active:t,onChange:l}){const s=(i,r,d)=>e.jsxDEV("button",{onClick:()=>l(i),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors ${t===i?"bg-accent/10 text-accent font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-surface-hover"}`,children:[r,d]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/AccountTabToggle.tsx",lineNumber:7,columnNumber:5},this);return e.jsxDEV("div",{className:"flex gap-1 p-0.5 bg-surface-sunken rounded-lg w-fit",children:[s("users",e.jsxDEV(ie,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/AccountTabToggle.tsx",lineNumber:22,columnNumber:21},this),"User Accounts"),s("service-accounts",e.jsxDEV(re,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/AccountTabToggle.tsx",lineNumber:23,columnNumber:32},this),"Service Accounts")]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/AccountTabToggle.tsx",lineNumber:21,columnNumber:5},this)}const fe=[{value:"active",label:"Active"},{value:"inactive",label:"Inactive"},{value:"suspended",label:"Suspended"}],ge={active:"bg-status-success",inactive:"bg-text-tertiary",suspended:"bg-status-error"};function Fe(){const[t,l]=le(),i=t.get("tab")==="service-accounts"?"service-accounts":"users",r=d=>{l(d==="users"?{}:{tab:d})};return e.jsxDEV("div",{children:[e.jsxDEV(S,{title:"Accounts",actions:e.jsxDEV(he,{active:i,onChange:r},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:50,columnNumber:18},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:48,columnNumber:7},this),i==="users"?e.jsxDEV(ve,{},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:52,columnNumber:32},this):e.jsxDEV(Ne,{embedded:!0},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:52,columnNumber:56},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:47,columnNumber:5},this)}function ve(){const{filters:t,setFilter:l,pagination:s}=C({filters:{status:""}}),i=F(),[r,d]=u.useState(!1),[p,c]=u.useState(null),[m,a]=u.useState(null),[o,N]=u.useState(null),{data:g,isLoading:n}=z({status:t.status||void 0,limit:s.pageSize,offset:s.offset}),h=(g==null?void 0:g.total)??0,v=(g==null?void 0:g.users)??[],f=u.useMemo(()=>m?v.find(b=>b.id===m.id)??m:null,[v,m]),V=[{key:"display_name",label:"User",render:b=>e.jsxDEV("div",{className:"flex items-center gap-2.5",children:[e.jsxDEV("span",{className:`w-2 h-2 rounded-full shrink-0 ${ge[b.status]??"bg-status-pending"}`,title:b.status},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:88,columnNumber:11},this),e.jsxDEV("div",{children:[e.jsxDEV("p",{className:"text-sm text-text-primary",children:b.display_name||b.external_id},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:93,columnNumber:13},this),b.email&&e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:b.email},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:97,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:92,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:87,columnNumber:9},this)},{key:"roles",label:"Roles",render:b=>e.jsxDEV("div",{className:"flex gap-1 flex-wrap",children:(b.roles??[]).map(B=>e.jsxDEV(E,{role:B.role},B.role,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:109,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:107,columnNumber:9},this)},{key:"created_at",label:"Created",render:b=>e.jsxDEV(w,{date:b.created_at},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:117,columnNumber:24},this),className:"w-44"},{key:"actions",label:"",render:b=>e.jsxDEV(M,{children:[e.jsxDEV(D,{icon:_,title:"Edit user",onClick:()=>c(b)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:125,columnNumber:11},this),e.jsxDEV(D,{icon:P,title:"Delete user",onClick:()=>N(b),colorClass:"text-text-tertiary hover:text-status-error"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:130,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:124,columnNumber:9},this),className:"w-16 text-right"}],x=()=>{o&&i.mutate(o.id,{onSuccess:()=>N(null)})};return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex justify-end mb-4",children:e.jsxDEV("button",{onClick:()=>d(!0),className:"btn-primary text-xs",children:"Add User"},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:152,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:151,columnNumber:7},this),e.jsxDEV($,{children:e.jsxDEV(O,{label:"Status",value:t.status,onChange:b=>l("status",b),options:fe},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:158,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:157,columnNumber:7},this),e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_320px] gap-6",children:[e.jsxDEV("div",{className:"overflow-x-clip",children:[e.jsxDEV(U,{columns:V,data:v,keyFn:b=>b.id,isLoading:n,emptyMessage:"No users found",onRowClick:b=>a(b),activeRowKey:(f==null?void 0:f.id)??null},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:169,columnNumber:11},this),e.jsxDEV(k,{page:s.page,totalPages:s.totalPages(h),onPageChange:s.setPage,total:h,pageSize:s.pageSize,onPageSizeChange:s.setPageSize},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:179,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:168,columnNumber:9},this),e.jsxDEV(xe,{user:f},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:190,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:166,columnNumber:7},this),e.jsxDEV(oe,{open:r,onClose:()=>d(!1)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:193,columnNumber:7},this),e.jsxDEV(ne,{open:!!p,onClose:()=>c(null),user:p},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:195,columnNumber:7},this),e.jsxDEV(y,{open:!!o,onClose:()=>N(null),onConfirm:x,title:"Delete User",description:e.jsxDEV(e.Fragment,{children:["Delete"," ",e.jsxDEV("span",{className:"font-medium text-text-primary",children:(o==null?void 0:o.display_name)||(o==null?void 0:o.external_id)},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:209,columnNumber:13},this),"? This action cannot be undone."]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:207,columnNumber:11},this),isPending:i.isPending,error:i.error},void 0,!1,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:201,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/admin/users/UsersPage.tsx",lineNumber:150,columnNumber:5},this)}export{Fe as UsersPage};
2
- //# sourceMappingURL=index-Di12t56M.js.map
@@ -1,2 +0,0 @@
1
- import{u,b as i,c as n}from"./vendor-query-DLp59M9_.js";import{b as r}from"./index-BYZX9tOb.js";const s=["mcpQueryJobs"];function c(){const e=i();return n({mutationFn:t=>r("/insight/mcp-query",{method:"POST",body:JSON.stringify({...t,wait:!1,direct:!0})}),onSuccess:()=>{e.invalidateQueries({queryKey:s,refetchType:"all"}),e.invalidateQueries({queryKey:["jobs"],refetchType:"all"})}})}function a(){const e=i();return n({mutationFn:t=>r("/insight/mcp-query",{method:"POST",body:JSON.stringify({...t,wait:!1})}),onSuccess:()=>{e.invalidateQueries({queryKey:s,refetchType:"all"}),e.invalidateQueries({queryKey:["jobs"],refetchType:"all"})}})}function m(e={}){const t=new URLSearchParams;return t.set("entity",e.entity||"mcpQuery,mcpTriage,mcpWorkflowBuilder,mcpWorkflowPlanner"),e.limit&&t.set("limit",String(e.limit)),e.offset!==void 0&&t.set("offset",String(e.offset)),e.search&&t.set("search",e.search),e.status&&t.set("status",e.status),t.set("sort_by","created_at"),t.set("order","desc"),u({queryKey:[...s,e],queryFn:()=>r(`/workflow-states/jobs?${t}`)})}function l(e){return u({queryKey:["mcpQueryExecution",e],queryFn:()=>r(`/workflow-states/${e}/execution`),enabled:!!e})}function p(e){return u({queryKey:["mcpQueryResult",e],queryFn:()=>r(`/workflows/${e}/result`),enabled:!!e,retry:2})}function f(e){return u({queryKey:["mcpQueryDescribe",e.prompt],queryFn:()=>r("/insight/mcp-query/describe",{method:"POST",body:JSON.stringify({prompt:e.prompt,result_title:e.resultTitle,result_summary:e.resultSummary})}),enabled:!!e.prompt,staleTime:1/0,gcTime:30*6e4})}function b(e){return u({queryKey:["yamlWorkflowForSource",e],queryFn:()=>r(`/yaml-workflows?source_workflow_id=${e}&limit=5`),enabled:!!e})}export{l as a,p as b,b as c,f as d,a as e,c as f,m as u};
2
- //# sourceMappingURL=mcp-query-B8-P_QoG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-query-B8-P_QoG.js","sources":["../../src/api/mcp-query.ts"],"sourcesContent":["import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type { LTJob, WorkflowExecution } from './types';\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport interface McpQuerySubmitResult {\n workflow_id: string;\n status: string;\n prompt: string;\n}\n\n// ── Query keys ──────────────────────────────────────────────────────────────\n\nexport const MCP_QUERY_JOBS_KEY = ['mcpQueryJobs'] as const;\n\n// ── Hooks ───────────────────────────────────────────────────────────────────\n\n/**\n * Submit a DIRECT mcpQuery (bypasses router — always dynamic MCP orchestration).\n * Used by the MCP Queries list page where the user explicitly wants a new dynamic seed run.\n */\nexport function useSubmitMcpQuery() {\n const queryClient = useQueryClient();\n return useMutation<McpQuerySubmitResult, Error, { prompt: string; tags?: string[] }>({\n mutationFn: (params) =>\n apiFetch<McpQuerySubmitResult>('/insight/mcp-query', {\n method: 'POST',\n body: JSON.stringify({ ...params, wait: false, direct: true }),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: MCP_QUERY_JOBS_KEY, refetchType: 'all' });\n queryClient.invalidateQueries({ queryKey: ['jobs'], refetchType: 'all' });\n },\n });\n}\n\n/**\n * Submit via mcpQueryRouter (checks for deterministic match first).\n * Used by the Verify panel (Panel 6) to test end-to-end routing.\n */\nexport function useSubmitMcpQueryRouted() {\n const queryClient = useQueryClient();\n return useMutation<McpQuerySubmitResult, Error, { prompt: string; tags?: string[] }>({\n mutationFn: (params) =>\n apiFetch<McpQuerySubmitResult>('/insight/mcp-query', {\n method: 'POST',\n body: JSON.stringify({ ...params, wait: false }),\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: MCP_QUERY_JOBS_KEY, refetchType: 'all' });\n queryClient.invalidateQueries({ queryKey: ['jobs'], refetchType: 'all' });\n },\n });\n}\n\n/**\n * List mcpQuery workflow executions (system-level durable workflows).\n * Filters to entity=mcpQuery on the long-tail-system task queue.\n */\nexport function useMcpQueryJobs(filters: {\n limit?: number;\n offset?: number;\n search?: string;\n status?: string;\n entity?: string;\n} = {}) {\n const params = new URLSearchParams();\n params.set('entity', filters.entity || 'mcpQuery,mcpTriage,mcpWorkflowBuilder,mcpWorkflowPlanner');\n if (filters.limit) params.set('limit', String(filters.limit));\n if (filters.offset !== undefined) params.set('offset', String(filters.offset));\n if (filters.search) params.set('search', filters.search);\n if (filters.status) params.set('status', filters.status);\n params.set('sort_by', 'created_at');\n params.set('order', 'desc');\n\n return useQuery<{ jobs: LTJob[]; total: number }>({\n queryKey: [...MCP_QUERY_JOBS_KEY, filters],\n queryFn: () => apiFetch(`/workflow-states/jobs?${params}`),\n });\n}\n\n/**\n * Get execution timeline for an mcpQuery workflow.\n */\nexport function useMcpQueryExecution(workflowId: string | undefined) {\n return useQuery<WorkflowExecution>({\n queryKey: ['mcpQueryExecution', workflowId],\n queryFn: () => apiFetch(`/workflow-states/${workflowId}/execution`),\n enabled: !!workflowId,\n });\n}\n\n/**\n * Get the result data from a completed mcpQuery workflow.\n */\nexport function useMcpQueryResult(workflowId: string | undefined) {\n return useQuery<{ workflowId: string; result: { type: string; data: Record<string, unknown> } }>({\n queryKey: ['mcpQueryResult', workflowId],\n queryFn: () => apiFetch(`/workflows/${workflowId}/result`),\n enabled: !!workflowId,\n retry: 2,\n });\n}\n\n/**\n * Generate a workflow description and tags from the original prompt + result.\n * Uses an LLM to produce a concise, catalog-style description.\n */\nexport function useDescribeMcpQuery(params: {\n prompt: string | undefined;\n resultTitle: string | undefined;\n resultSummary: string | undefined;\n}) {\n return useQuery<{ tool_name?: string; description: string; tags: string[] }>({\n queryKey: ['mcpQueryDescribe', params.prompt],\n queryFn: () =>\n apiFetch<{ tool_name?: string; description: string; tags: string[] }>('/insight/mcp-query/describe', {\n method: 'POST',\n body: JSON.stringify({\n prompt: params.prompt,\n result_title: params.resultTitle,\n result_summary: params.resultSummary,\n }),\n }),\n enabled: !!params.prompt,\n staleTime: Infinity,\n gcTime: 30 * 60_000,\n });\n}\n\n/**\n * Find a YAML workflow compiled from a specific mcpQuery execution.\n */\nexport function useYamlWorkflowForSource(sourceWorkflowId: string | undefined) {\n return useQuery<{ workflows: Array<{\n id: string; name: string; status: string; graph_topic: string;\n description?: string; tags?: string[]; app_id?: string;\n input_schema?: Record<string, unknown>;\n activity_manifest?: Array<{\n activity_id: string; title: string; type: string;\n tool_source: string; mcp_tool_name?: string;\n }>;\n original_prompt?: string;\n }> }>({\n queryKey: ['yamlWorkflowForSource', sourceWorkflowId],\n queryFn: () => apiFetch(`/yaml-workflows?source_workflow_id=${sourceWorkflowId}&limit=5`),\n enabled: !!sourceWorkflowId,\n });\n}\n"],"names":["MCP_QUERY_JOBS_KEY","useSubmitMcpQuery","queryClient","useQueryClient","useMutation","params","apiFetch","useSubmitMcpQueryRouted","useMcpQueryJobs","filters","useQuery","useMcpQueryExecution","workflowId","useMcpQueryResult","useDescribeMcpQuery","useYamlWorkflowForSource","sourceWorkflowId"],"mappings":"gGAcO,MAAMA,EAAqB,CAAC,cAAc,EAQ1C,SAASC,GAAoB,CAClC,MAAMC,EAAcC,EAAA,EACpB,OAAOC,EAA8E,CACnF,WAAaC,GACXC,EAA+B,qBAAsB,CACnD,OAAQ,OACR,KAAM,KAAK,UAAU,CAAE,GAAGD,EAAQ,KAAM,GAAO,OAAQ,EAAA,CAAM,CAAA,CAC9D,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAUF,EAAoB,YAAa,MAAO,EAClFE,EAAY,kBAAkB,CAAE,SAAU,CAAC,MAAM,EAAG,YAAa,MAAO,CAC1E,CAAA,CACD,CACH,CAMO,SAASK,GAA0B,CACxC,MAAML,EAAcC,EAAA,EACpB,OAAOC,EAA8E,CACnF,WAAaC,GACXC,EAA+B,qBAAsB,CACnD,OAAQ,OACR,KAAM,KAAK,UAAU,CAAE,GAAGD,EAAQ,KAAM,GAAO,CAAA,CAChD,EACH,UAAW,IAAM,CACfH,EAAY,kBAAkB,CAAE,SAAUF,EAAoB,YAAa,MAAO,EAClFE,EAAY,kBAAkB,CAAE,SAAU,CAAC,MAAM,EAAG,YAAa,MAAO,CAC1E,CAAA,CACD,CACH,CAMO,SAASM,EAAgBC,EAM5B,GAAI,CACN,MAAMJ,EAAS,IAAI,gBACnB,OAAAA,EAAO,IAAI,SAAUI,EAAQ,QAAU,0DAA0D,EAC7FA,EAAQ,OAAOJ,EAAO,IAAI,QAAS,OAAOI,EAAQ,KAAK,CAAC,EACxDA,EAAQ,SAAW,QAAWJ,EAAO,IAAI,SAAU,OAAOI,EAAQ,MAAM,CAAC,EACzEA,EAAQ,QAAQJ,EAAO,IAAI,SAAUI,EAAQ,MAAM,EACnDA,EAAQ,QAAQJ,EAAO,IAAI,SAAUI,EAAQ,MAAM,EACvDJ,EAAO,IAAI,UAAW,YAAY,EAClCA,EAAO,IAAI,QAAS,MAAM,EAEnBK,EAA2C,CAChD,SAAU,CAAC,GAAGV,EAAoBS,CAAO,EACzC,QAAS,IAAMH,EAAS,yBAAyBD,CAAM,EAAE,CAAA,CAC1D,CACH,CAKO,SAASM,EAAqBC,EAAgC,CACnE,OAAOF,EAA4B,CACjC,SAAU,CAAC,oBAAqBE,CAAU,EAC1C,QAAS,IAAMN,EAAS,oBAAoBM,CAAU,YAAY,EAClE,QAAS,CAAC,CAACA,CAAA,CACZ,CACH,CAKO,SAASC,EAAkBD,EAAgC,CAChE,OAAOF,EAA0F,CAC/F,SAAU,CAAC,iBAAkBE,CAAU,EACvC,QAAS,IAAMN,EAAS,cAAcM,CAAU,SAAS,EACzD,QAAS,CAAC,CAACA,EACX,MAAO,CAAA,CACR,CACH,CAMO,SAASE,EAAoBT,EAIjC,CACD,OAAOK,EAAsE,CAC3E,SAAU,CAAC,mBAAoBL,EAAO,MAAM,EAC5C,QAAS,IACPC,EAAsE,8BAA+B,CACnG,OAAQ,OACR,KAAM,KAAK,UAAU,CACnB,OAAQD,EAAO,OACf,aAAcA,EAAO,YACrB,eAAgBA,EAAO,aAAA,CACxB,CAAA,CACF,EACH,QAAS,CAAC,CAACA,EAAO,OAClB,UAAW,IACX,OAAQ,GAAK,GAAA,CACd,CACH,CAKO,SAASU,EAAyBC,EAAsC,CAC7E,OAAON,EASD,CACJ,SAAU,CAAC,wBAAyBM,CAAgB,EACpD,QAAS,IAAMV,EAAS,sCAAsCU,CAAgB,UAAU,EACxF,QAAS,CAAC,CAACA,CAAA,CACZ,CACH"}
@@ -1,2 +0,0 @@
1
- import{u as e}from"./vendor-query-DLp59M9_.js";import{b as u}from"./index-BYZX9tOb.js";function a(t={}){const n=new URLSearchParams;return t.limit&&n.set("limit",String(t.limit)),t.offset!==void 0&&n.set("offset",String(t.offset)),t.entity&&n.set("entity",t.entity),t.search&&n.set("search",t.search),t.status&&n.set("status",t.status),n.set("app_id",t.app_id||"longtail"),e({queryKey:["mcpRuns",t],queryFn:()=>u(`/mcp-runs?${n}`)})}function c(t="longtail"){return e({queryKey:["mcpEntities",t],queryFn:()=>u(`/mcp-runs/entities?app_id=${t}`)})}function p(t,n="longtail"){return e({queryKey:["mcpRunExecution",t,n],queryFn:()=>u(`/mcp-runs/${t}/execution?app_id=${n}`),enabled:!!t})}export{c as a,p as b,a as u};
2
- //# sourceMappingURL=mcp-runs-CWeZinoF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-runs-CWeZinoF.js","sources":["../../src/api/mcp-runs.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from './client';\nimport type { LTJob, WorkflowExecution } from './types';\n\ninterface McpRunFilters {\n limit?: number;\n offset?: number;\n entity?: string;\n search?: string;\n status?: string;\n app_id?: string;\n}\n\nexport function useMcpRuns(filters: McpRunFilters = {}) {\n const params = new URLSearchParams();\n if (filters.limit) params.set('limit', String(filters.limit));\n if (filters.offset !== undefined) params.set('offset', String(filters.offset));\n if (filters.entity) params.set('entity', filters.entity);\n if (filters.search) params.set('search', filters.search);\n if (filters.status) params.set('status', filters.status);\n params.set('app_id', filters.app_id || 'longtail');\n\n return useQuery<{ jobs: LTJob[]; total: number }>({\n queryKey: ['mcpRuns', filters],\n queryFn: () => apiFetch(`/mcp-runs?${params}`),\n });\n}\n\nexport function useMcpEntities(appId = 'longtail') {\n return useQuery<{ entities: string[] }>({\n queryKey: ['mcpEntities', appId],\n queryFn: () => apiFetch(`/mcp-runs/entities?app_id=${appId}`),\n });\n}\n\nexport function useMcpRunExecution(jobId: string, appId = 'longtail') {\n return useQuery<WorkflowExecution>({\n queryKey: ['mcpRunExecution', jobId, appId],\n queryFn: () => apiFetch(`/mcp-runs/${jobId}/execution?app_id=${appId}`),\n enabled: !!jobId,\n });\n}\n"],"names":["useMcpRuns","filters","params","useQuery","apiFetch","useMcpEntities","appId","useMcpRunExecution","jobId"],"mappings":"uFAaO,SAASA,EAAWC,EAAyB,GAAI,CACtD,MAAMC,EAAS,IAAI,gBACnB,OAAID,EAAQ,OAAOC,EAAO,IAAI,QAAS,OAAOD,EAAQ,KAAK,CAAC,EACxDA,EAAQ,SAAW,QAAWC,EAAO,IAAI,SAAU,OAAOD,EAAQ,MAAM,CAAC,EACzEA,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACnDA,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACnDA,EAAQ,QAAQC,EAAO,IAAI,SAAUD,EAAQ,MAAM,EACvDC,EAAO,IAAI,SAAUD,EAAQ,QAAU,UAAU,EAE1CE,EAA2C,CAChD,SAAU,CAAC,UAAWF,CAAO,EAC7B,QAAS,IAAMG,EAAS,aAAaF,CAAM,EAAE,CAAA,CAC9C,CACH,CAEO,SAASG,EAAeC,EAAQ,WAAY,CACjD,OAAOH,EAAiC,CACtC,SAAU,CAAC,cAAeG,CAAK,EAC/B,QAAS,IAAMF,EAAS,6BAA6BE,CAAK,EAAE,CAAA,CAC7D,CACH,CAEO,SAASC,EAAmBC,EAAeF,EAAQ,WAAY,CACpE,OAAOH,EAA4B,CACjC,SAAU,CAAC,kBAAmBK,EAAOF,CAAK,EAC1C,QAAS,IAAMF,EAAS,aAAaI,CAAK,qBAAqBF,CAAK,EAAE,EACtE,QAAS,CAAC,CAACE,CAAA,CACZ,CACH"}
@@ -1,2 +0,0 @@
1
- import{a as t}from"./vendor-query-DLp59M9_.js";import{f as v}from"./vendor-react-Co3Y8ikm.js";function E(M){var h,C;const m=t.useRef(M),i=((h=m.current)==null?void 0:h.filters)??{},p=t.useMemo(()=>Object.keys(i),[]),g=((C=m.current)==null?void 0:C.pageSize)??25,[a,b]=v(),d=t.useRef(b);t.useEffect(()=>{d.current=b});const z=t.useMemo(()=>{const e={};for(const s of p)e[s]=a.get(s)??i[s];return e},[a,p,i]),l=Number(a.get("page"))||1,o=Number(a.get("pageSize"))||g,S=t.useMemo(()=>(l-1)*o,[l,o]),r=t.useCallback(e=>{d.current(s=>{const n=new URLSearchParams(s);for(const[u,f]of Object.entries(e))f===null||f===""||f===void 0?n.delete(u):n.set(u,f);return n},{replace:!0})},[]),R=t.useCallback((e,s)=>{r({[e]:s||null,page:null})},[r]),_=t.useCallback(e=>{const s={page:null};for(const[n,u]of Object.entries(e))s[n]=u||null;r(s)},[r]),k=t.useCallback(e=>{r({page:e<=1?null:String(e)})},[r]),P=t.useCallback(e=>{r({pageSize:e===g?null:String(e),page:null})},[r,g]),y=t.useCallback(e=>Math.max(1,Math.ceil(e/o)),[o]),x=t.useMemo(()=>({page:l,pageSize:o,offset:S,setPage:k,setPageSize:P,totalPages:y}),[l,o,S,k,P,y]),c=t.useMemo(()=>({sort_by:a.get("sort_by")??"",order:a.get("order")||"desc"}),[a]),j=t.useCallback(e=>{const s=c.sort_by===e;r({sort_by:e||null,order:s&&c.order==="desc"?"asc":"desc",page:null})},[c.sort_by,c.order,r]);return{filters:z,setFilter:R,setFilters:_,pagination:x,sort:c,setSort:j}}export{E as u};
2
- //# sourceMappingURL=useFilterParams-BUyLHcx_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFilterParams-BUyLHcx_.js","sources":["../../src/hooks/useFilterParams.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\ninterface PaginationState {\n page: number;\n pageSize: number;\n offset: number;\n setPage: (page: number) => void;\n setPageSize: (size: number) => void;\n totalPages: (total: number) => number;\n}\n\nexport interface SortState {\n sort_by: string;\n order: 'asc' | 'desc';\n}\n\ninterface UseFilterParamsResult<F extends Record<string, string>> {\n /** Current filter values, read from URL search params. */\n filters: F;\n /** Set a single filter. Resets page to 1. */\n setFilter: (key: keyof F, value: string) => void;\n /** Set multiple filters at once. Resets page to 1. */\n setFilters: (updates: Partial<F>) => void;\n /** Pagination state — same interface as usePagination. */\n pagination: PaginationState;\n /** Current sort state (from URL params). */\n sort: SortState;\n /** Toggle sort: if same column, flip direction; if different, default DESC. */\n setSort: (column: string) => void;\n}\n\n/**\n * Unified hook that syncs filter values and pagination with URL search params.\n *\n * - Deep-linking: landing on `?role=reviewer&page=3` pre-fills filters and pagination\n * - Clean URLs: default values (page 1, pageSize 25, empty strings) are omitted\n * - Replace mode: filter changes don't pollute browser history\n * - Auto-reset: changing any filter resets page to 1\n */\nexport function useFilterParams<F extends Record<string, string> = Record<string, string>>(\n options?: { filters?: F; pageSize?: number },\n): UseFilterParamsResult<F> {\n // Freeze config on first render to prevent re-render loops from inline objects\n const configRef = useRef(options);\n const filterDefaults = (configRef.current?.filters ?? {}) as F;\n const filterKeys = useMemo(() => Object.keys(filterDefaults), []);\n const defaultPageSize = configRef.current?.pageSize ?? 25;\n\n const [searchParams, setSearchParams] = useSearchParams();\n\n // Keep a stable ref to setSearchParams so downstream callbacks never change identity\n const setSearchParamsRef = useRef(setSearchParams);\n useEffect(() => { setSearchParamsRef.current = setSearchParams; });\n\n // ── Read current values from URL ──────────────────────────────────────────\n\n const filters = useMemo(() => {\n const result = {} as Record<string, string>;\n for (const key of filterKeys) {\n result[key] = searchParams.get(key) ?? filterDefaults[key];\n }\n return result as F;\n }, [searchParams, filterKeys, filterDefaults]);\n\n const page = Number(searchParams.get('page')) || 1;\n const pageSize = Number(searchParams.get('pageSize')) || defaultPageSize;\n const offset = useMemo(() => (page - 1) * pageSize, [page, pageSize]);\n\n // ── Batch-update helper ───────────────────────────────────────────────────\n\n const updateParams = useCallback(\n (updates: Record<string, string | null>) => {\n setSearchParamsRef.current(\n (prev) => {\n const next = new URLSearchParams(prev);\n for (const [k, v] of Object.entries(updates)) {\n if (v === null || v === '' || v === undefined) {\n next.delete(k);\n } else {\n next.set(k, v);\n }\n }\n return next;\n },\n { replace: true },\n );\n },\n [],\n );\n\n // ── Filter setters (auto-reset page) ──────────────────────────────────────\n\n const setFilter = useCallback(\n (key: keyof F, value: string) => {\n updateParams({ [key as string]: value || null, page: null });\n },\n [updateParams],\n );\n\n const setFilters = useCallback(\n (updates: Partial<F>) => {\n const mapped: Record<string, string | null> = { page: null };\n for (const [k, v] of Object.entries(updates)) {\n mapped[k] = (v as string) || null;\n }\n updateParams(mapped);\n },\n [updateParams],\n );\n\n // ── Pagination ────────────────────────────────────────────────────────────\n\n const setPage = useCallback(\n (p: number) => {\n updateParams({ page: p <= 1 ? null : String(p) });\n },\n [updateParams],\n );\n\n const setPageSize = useCallback(\n (size: number) => {\n updateParams({\n pageSize: size === defaultPageSize ? null : String(size),\n page: null,\n });\n },\n [updateParams, defaultPageSize],\n );\n\n const totalPages = useCallback(\n (total: number) => Math.max(1, Math.ceil(total / pageSize)),\n [pageSize],\n );\n\n const pagination: PaginationState = useMemo(\n () => ({ page, pageSize, offset, setPage, setPageSize, totalPages }),\n [page, pageSize, offset, setPage, setPageSize, totalPages],\n );\n\n // ── Sort ─────────────────────────────────────────────────────────────────\n\n const sort: SortState = useMemo(\n () => ({\n sort_by: searchParams.get('sort_by') ?? '',\n order: (searchParams.get('order') as 'asc' | 'desc') || 'desc',\n }),\n [searchParams],\n );\n\n const setSort = useCallback(\n (column: string) => {\n const isSame = sort.sort_by === column;\n updateParams({\n sort_by: column || null,\n order: isSame ? (sort.order === 'desc' ? 'asc' : 'desc') : 'desc',\n page: null,\n });\n },\n [sort.sort_by, sort.order, updateParams],\n );\n\n return { filters, setFilter, setFilters, pagination, sort, setSort };\n}\n"],"names":["useFilterParams","options","configRef","useRef","filterDefaults","_a","filterKeys","useMemo","defaultPageSize","_b","searchParams","setSearchParams","useSearchParams","setSearchParamsRef","useEffect","filters","result","key","page","pageSize","offset","updateParams","useCallback","updates","prev","next","k","v","setFilter","value","setFilters","mapped","setPage","p","setPageSize","size","totalPages","total","pagination","sort","setSort","column","isSame"],"mappings":"8FAwCO,SAASA,EACdC,EAC0B,SAE1B,MAAMC,EAAYC,EAAAA,OAAOF,CAAO,EAC1BG,IAAkBC,EAAAH,EAAU,UAAV,YAAAG,EAAmB,UAAW,CAAA,EAChDC,EAAaC,EAAAA,QAAQ,IAAM,OAAO,KAAKH,CAAc,EAAG,EAAE,EAC1DI,IAAkBC,EAAAP,EAAU,UAAV,YAAAO,EAAmB,WAAY,GAEjD,CAACC,EAAcC,CAAe,EAAIC,EAAA,EAGlCC,EAAqBV,EAAAA,OAAOQ,CAAe,EACjDG,EAAAA,UAAU,IAAM,CAAED,EAAmB,QAAUF,CAAiB,CAAC,EAIjE,MAAMI,EAAUR,EAAAA,QAAQ,IAAM,CAC5B,MAAMS,EAAS,CAAA,EACf,UAAWC,KAAOX,EAChBU,EAAOC,CAAG,EAAIP,EAAa,IAAIO,CAAG,GAAKb,EAAea,CAAG,EAE3D,OAAOD,CACT,EAAG,CAACN,EAAcJ,EAAYF,CAAc,CAAC,EAEvCc,EAAO,OAAOR,EAAa,IAAI,MAAM,CAAC,GAAK,EAC3CS,EAAW,OAAOT,EAAa,IAAI,UAAU,CAAC,GAAKF,EACnDY,EAASb,UAAQ,KAAOW,EAAO,GAAKC,EAAU,CAACD,EAAMC,CAAQ,CAAC,EAI9DE,EAAeC,EAAAA,YAClBC,GAA2C,CAC1CV,EAAmB,QAChBW,GAAS,CACR,MAAMC,EAAO,IAAI,gBAAgBD,CAAI,EACrC,SAAW,CAACE,EAAGC,CAAC,IAAK,OAAO,QAAQJ,CAAO,EACrCI,IAAM,MAAQA,IAAM,IAAMA,IAAM,OAClCF,EAAK,OAAOC,CAAC,EAEbD,EAAK,IAAIC,EAAGC,CAAC,EAGjB,OAAOF,CACT,EACA,CAAE,QAAS,EAAA,CAAK,CAEpB,EACA,CAAA,CAAC,EAKGG,EAAYN,EAAAA,YAChB,CAACL,EAAcY,IAAkB,CAC/BR,EAAa,CAAE,CAACJ,CAAa,EAAGY,GAAS,KAAM,KAAM,KAAM,CAC7D,EACA,CAACR,CAAY,CAAA,EAGTS,EAAaR,EAAAA,YAChBC,GAAwB,CACvB,MAAMQ,EAAwC,CAAE,KAAM,IAAA,EACtD,SAAW,CAACL,EAAGC,CAAC,IAAK,OAAO,QAAQJ,CAAO,EACzCQ,EAAOL,CAAC,EAAKC,GAAgB,KAE/BN,EAAaU,CAAM,CACrB,EACA,CAACV,CAAY,CAAA,EAKTW,EAAUV,EAAAA,YACbW,GAAc,CACbZ,EAAa,CAAE,KAAMY,GAAK,EAAI,KAAO,OAAOA,CAAC,EAAG,CAClD,EACA,CAACZ,CAAY,CAAA,EAGTa,EAAcZ,EAAAA,YACjBa,GAAiB,CAChBd,EAAa,CACX,SAAUc,IAAS3B,EAAkB,KAAO,OAAO2B,CAAI,EACvD,KAAM,IAAA,CACP,CACH,EACA,CAACd,EAAcb,CAAe,CAAA,EAG1B4B,EAAad,EAAAA,YAChBe,GAAkB,KAAK,IAAI,EAAG,KAAK,KAAKA,EAAQlB,CAAQ,CAAC,EAC1D,CAACA,CAAQ,CAAA,EAGLmB,EAA8B/B,EAAAA,QAClC,KAAO,CAAE,KAAAW,EAAM,SAAAC,EAAU,OAAAC,EAAQ,QAAAY,EAAS,YAAAE,EAAa,WAAAE,IACvD,CAAClB,EAAMC,EAAUC,EAAQY,EAASE,EAAaE,CAAU,CAAA,EAKrDG,EAAkBhC,EAAAA,QACtB,KAAO,CACL,QAASG,EAAa,IAAI,SAAS,GAAK,GACxC,MAAQA,EAAa,IAAI,OAAO,GAAwB,MAAA,GAE1D,CAACA,CAAY,CAAA,EAGT8B,EAAUlB,EAAAA,YACbmB,GAAmB,CAClB,MAAMC,EAASH,EAAK,UAAYE,EAChCpB,EAAa,CACX,QAASoB,GAAU,KACnB,MAAOC,GAAUH,EAAK,QAAU,OAAS,MAAkB,OAC3D,KAAM,IAAA,CACP,CACH,EACA,CAACA,EAAK,QAASA,EAAK,MAAOlB,CAAY,CAAA,EAGzC,MAAO,CAAE,QAAAN,EAAS,UAAAa,EAAW,WAAAE,EAAY,WAAAQ,EAAY,KAAAC,EAAM,QAAAC,CAAA,CAC7D"}
@@ -1,2 +0,0 @@
1
- import{a as l}from"./vendor-query-DLp59M9_.js";import{u as S,N as g}from"./index-BYZX9tOb.js";function x(r){const[c,y]=l.useState([]),m=l.useCallback(e=>{var a;if(!r||e.workflowId!==r||((a=e.type)==null?void 0:a.split(".")[0])!=="activity")return;const o=e.activityName,t=e.data,n=e.type;y(s=>{const u=s.find(i=>i.activityId===o);return n==="activity.started"?u?s.map(i=>i.activityId===o?{...i,status:"running"}:i):[...s,{activityId:o,title:(t==null?void 0:t.title)||o,toolName:t==null?void 0:t.toolName,toolSource:t==null?void 0:t.toolSource,stepIndex:(t==null?void 0:t.stepIndex)??s.length,totalSteps:(t==null?void 0:t.totalSteps)??0,status:"running"}]:n==="activity.completed"&&u?s.map(i=>i.activityId===o?{...i,status:"completed"}:i):n==="activity.failed"&&u?s.map(i=>i.activityId===o?{...i,status:"failed",error:t==null?void 0:t.error}:i):s})},[r]);S(r?`${g}.activity.>`:"",m);const p=c.length>0&&c.every(e=>e.status==="completed"||e.status==="failed"),f=c.some(e=>e.status==="failed");return{steps:c,isComplete:p,isFailed:f}}export{x as u};
2
- //# sourceMappingURL=useYamlActivityEvents-DN-PTgVx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useYamlActivityEvents-DN-PTgVx.js","sources":["../../src/hooks/useYamlActivityEvents.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { useEventSubscription } from './useEventContext';\nimport { NATS_SUBJECT_PREFIX } from '../lib/nats/config';\n\nexport interface ActivityStep {\n activityId: string;\n title: string;\n toolName?: string;\n toolSource?: string;\n stepIndex: number;\n totalSteps: number;\n status: 'pending' | 'running' | 'completed' | 'failed';\n error?: string;\n}\n\n/**\n * Subscribe to activity events for a specific YAML workflow job.\n * Returns live step progress as events arrive.\n */\nexport function useYamlActivityEvents(jobId: string | null): {\n steps: ActivityStep[];\n isComplete: boolean;\n isFailed: boolean;\n} {\n const [steps, setSteps] = useState<ActivityStep[]>([]);\n\n const handler = useCallback((event: any) => {\n if (!jobId || event.workflowId !== jobId) return;\n const category = event.type?.split('.')[0];\n if (category !== 'activity') return;\n\n const activityId = event.activityName as string;\n const data = event.data as Record<string, any> | undefined;\n const eventType = event.type as string;\n\n setSteps((prev) => {\n const existing = prev.find((s) => s.activityId === activityId);\n\n if (eventType === 'activity.started') {\n if (existing) {\n return prev.map((s) => s.activityId === activityId ? { ...s, status: 'running' as const } : s);\n }\n return [...prev, {\n activityId,\n title: data?.title || activityId,\n toolName: data?.toolName,\n toolSource: data?.toolSource,\n stepIndex: data?.stepIndex ?? prev.length,\n totalSteps: data?.totalSteps ?? 0,\n status: 'running' as const,\n }];\n }\n\n if (eventType === 'activity.completed' && existing) {\n return prev.map((s) => s.activityId === activityId ? { ...s, status: 'completed' as const } : s);\n }\n\n if (eventType === 'activity.failed' && existing) {\n return prev.map((s) => s.activityId === activityId ? { ...s, status: 'failed' as const, error: data?.error } : s);\n }\n\n return prev;\n });\n }, [jobId]);\n\n useEventSubscription(\n jobId ? `${NATS_SUBJECT_PREFIX}.activity.>` : '',\n handler,\n );\n\n const isComplete = steps.length > 0 && steps.every((s) => s.status === 'completed' || s.status === 'failed');\n const isFailed = steps.some((s) => s.status === 'failed');\n\n return { steps, isComplete, isFailed };\n}\n"],"names":["useYamlActivityEvents","jobId","steps","setSteps","useState","handler","useCallback","event","_a","activityId","data","eventType","prev","existing","s","useEventSubscription","NATS_SUBJECT_PREFIX","isComplete","isFailed"],"mappings":"8FAmBO,SAASA,EAAsBC,EAIpC,CACA,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAyB,CAAA,CAAE,EAE/CC,EAAUC,cAAaC,GAAe,OAG1C,GAFI,CAACN,GAASM,EAAM,aAAeN,KAClBO,EAAAD,EAAM,OAAN,YAAAC,EAAY,MAAM,KAAK,MACvB,WAAY,OAE7B,MAAMC,EAAaF,EAAM,aACnBG,EAAOH,EAAM,KACbI,EAAYJ,EAAM,KAExBJ,EAAUS,GAAS,CACjB,MAAMC,EAAWD,EAAK,KAAME,GAAMA,EAAE,aAAeL,CAAU,EAE7D,OAAIE,IAAc,mBACZE,EACKD,EAAK,IAAKE,GAAMA,EAAE,aAAeL,EAAa,CAAE,GAAGK,EAAG,OAAQ,SAAA,EAAuBA,CAAC,EAExF,CAAC,GAAGF,EAAM,CACf,WAAAH,EACA,OAAOC,GAAA,YAAAA,EAAM,QAASD,EACtB,SAAUC,GAAA,YAAAA,EAAM,SAChB,WAAYA,GAAA,YAAAA,EAAM,WAClB,WAAWA,GAAA,YAAAA,EAAM,YAAaE,EAAK,OACnC,YAAYF,GAAA,YAAAA,EAAM,aAAc,EAChC,OAAQ,SAAA,CACT,EAGCC,IAAc,sBAAwBE,EACjCD,EAAK,IAAKE,GAAMA,EAAE,aAAeL,EAAa,CAAE,GAAGK,EAAG,OAAQ,WAAA,EAAyBA,CAAC,EAG7FH,IAAc,mBAAqBE,EAC9BD,EAAK,IAAKE,GAAMA,EAAE,aAAeL,EAAa,CAAE,GAAGK,EAAG,OAAQ,SAAmB,MAAOJ,GAAA,YAAAA,EAAM,KAAA,EAAUI,CAAC,EAG3GF,CACT,CAAC,CACH,EAAG,CAACX,CAAK,CAAC,EAEVc,EACEd,EAAQ,GAAGe,CAAmB,cAAgB,GAC9CX,CAAA,EAGF,MAAMY,EAAaf,EAAM,OAAS,GAAKA,EAAM,MAAOY,GAAMA,EAAE,SAAW,aAAeA,EAAE,SAAW,QAAQ,EACrGI,EAAWhB,EAAM,KAAMY,GAAMA,EAAE,SAAW,QAAQ,EAExD,MAAO,CAAE,MAAAZ,EAAO,WAAAe,EAAY,SAAAC,CAAA,CAC9B"}