@hotmeshio/long-tail 0.1.14 → 0.1.16

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 (360) hide show
  1. package/README.md +15 -0
  2. package/build/api/escalations/bulk.d.ts +78 -0
  3. package/build/api/escalations/bulk.js +279 -0
  4. package/build/api/escalations/claim.d.ts +30 -0
  5. package/build/api/escalations/claim.js +121 -0
  6. package/build/api/escalations/create.d.ts +29 -0
  7. package/build/api/escalations/create.js +101 -0
  8. package/build/api/escalations/helpers.d.ts +10 -0
  9. package/build/api/escalations/helpers.js +80 -0
  10. package/build/api/escalations/index.d.ts +6 -0
  11. package/build/api/escalations/index.js +26 -0
  12. package/build/api/escalations/list.d.ts +75 -0
  13. package/build/api/escalations/list.js +170 -0
  14. package/build/api/escalations/resolve.d.ts +18 -0
  15. package/build/api/escalations/resolve.js +243 -0
  16. package/build/api/escalations/single.d.ts +37 -0
  17. package/build/api/escalations/single.js +123 -0
  18. package/build/api/files.d.ts +3 -0
  19. package/build/api/files.js +18 -1
  20. package/build/api/knowledge.d.ts +36 -0
  21. package/build/api/knowledge.js +112 -0
  22. package/build/api/mcp/index.d.ts +2 -0
  23. package/build/api/mcp/index.js +16 -0
  24. package/build/api/{mcp.d.ts → mcp/servers.d.ts} +1 -33
  25. package/build/api/{mcp.js → mcp/servers.js} +4 -65
  26. package/build/api/mcp/tools.d.ts +33 -0
  27. package/build/api/mcp/tools.js +64 -0
  28. package/build/api/settings.js +6 -1
  29. package/build/api/workflows/config.d.ts +64 -0
  30. package/build/api/workflows/config.js +142 -0
  31. package/build/api/workflows/discovery.d.ts +29 -0
  32. package/build/api/workflows/discovery.js +153 -0
  33. package/build/api/workflows/index.d.ts +3 -0
  34. package/build/api/workflows/index.js +18 -0
  35. package/build/api/workflows/invocation.d.ts +67 -0
  36. package/build/api/workflows/invocation.js +188 -0
  37. package/build/api/yaml-workflows/cron.d.ts +39 -0
  38. package/build/api/yaml-workflows/cron.js +127 -0
  39. package/build/api/{yaml-workflows.d.ts → yaml-workflows/crud.d.ts} +22 -146
  40. package/build/api/{yaml-workflows.js → yaml-workflows/crud.js} +99 -380
  41. package/build/api/yaml-workflows/deploy.d.ts +71 -0
  42. package/build/api/yaml-workflows/deploy.js +223 -0
  43. package/build/api/yaml-workflows/helpers.d.ts +2 -0
  44. package/build/api/yaml-workflows/helpers.js +8 -0
  45. package/build/api/yaml-workflows/index.d.ts +4 -0
  46. package/build/api/yaml-workflows/index.js +27 -0
  47. package/build/api/yaml-workflows/versions.d.ts +43 -0
  48. package/build/api/yaml-workflows/versions.js +124 -0
  49. package/build/bin/ltc.d.ts +2 -0
  50. package/build/bin/ltc.js +220 -0
  51. package/build/examples/seed-data.d.ts +55 -0
  52. package/build/examples/seed-data.js +161 -0
  53. package/build/examples/seed.js +7 -164
  54. package/build/index.d.ts +1 -1
  55. package/build/lib/cli/auth.d.ts +23 -0
  56. package/build/lib/cli/auth.js +167 -0
  57. package/build/lib/cli/client.d.ts +6 -0
  58. package/build/lib/cli/client.js +31 -0
  59. package/build/lib/cli/commands/escalations.d.ts +19 -0
  60. package/build/lib/cli/commands/escalations.js +69 -0
  61. package/build/lib/cli/commands/knowledge.d.ts +18 -0
  62. package/build/lib/cli/commands/knowledge.js +87 -0
  63. package/build/lib/cli/commands/mcp.d.ts +8 -0
  64. package/build/lib/cli/commands/mcp.js +33 -0
  65. package/build/lib/cli/commands/pipelines.d.ts +16 -0
  66. package/build/lib/cli/commands/pipelines.js +67 -0
  67. package/build/lib/cli/commands/status.d.ts +1 -0
  68. package/build/lib/cli/commands/status.js +28 -0
  69. package/build/lib/cli/commands/users.d.ts +7 -0
  70. package/build/lib/cli/commands/users.js +25 -0
  71. package/build/lib/cli/commands/workflows.d.ts +16 -0
  72. package/build/lib/cli/commands/workflows.js +104 -0
  73. package/build/lib/cli/compile.d.ts +2 -0
  74. package/build/lib/cli/compile.js +165 -0
  75. package/build/lib/cli/format.d.ts +23 -0
  76. package/build/lib/cli/format.js +94 -0
  77. package/build/lib/cli/init.d.ts +1 -0
  78. package/build/lib/cli/init.js +61 -0
  79. package/build/lib/cli/output.d.ts +27 -0
  80. package/build/lib/cli/output.js +126 -0
  81. package/build/lib/cli/scanner.d.ts +10 -0
  82. package/build/lib/cli/scanner.js +164 -0
  83. package/build/lib/cli/types.d.ts +16 -0
  84. package/build/lib/cli/types.js +2 -0
  85. package/build/lib/db/schemas/schemas/001_schema.sql +485 -0
  86. package/build/lib/db/schemas/schemas/002_seed.sql +92 -0
  87. package/build/lib/events/socketio.d.ts +12 -0
  88. package/build/lib/events/socketio.js +24 -1
  89. package/build/lib/logger/index.d.ts +0 -9
  90. package/build/lib/logger/index.js +9 -4
  91. package/build/lib/storage/index.js +2 -2
  92. package/build/routes/file-browser.js +14 -0
  93. package/build/routes/index.js +4 -0
  94. package/build/routes/knowledge.d.ts +2 -0
  95. package/build/routes/knowledge.js +141 -0
  96. package/build/routes/nats-credentials.d.ts +2 -0
  97. package/build/routes/nats-credentials.js +22 -0
  98. package/build/routes/yaml-workflows/crud.js +9 -0
  99. package/build/sdk/index.d.ts +17 -0
  100. package/build/sdk/index.js +19 -0
  101. package/build/services/mcp/client/connection-dispatch.d.ts +18 -0
  102. package/build/services/mcp/client/connection-dispatch.js +78 -0
  103. package/build/services/mcp/client/connection-lifecycle.d.ts +48 -0
  104. package/build/services/mcp/client/connection-lifecycle.js +296 -0
  105. package/build/services/mcp/client/connection-test.d.ts +10 -0
  106. package/build/services/mcp/client/connection-test.js +49 -0
  107. package/build/services/mcp/client/connection.d.ts +3 -68
  108. package/build/services/mcp/client/connection.js +15 -393
  109. package/build/services/mcp/server-lifecycle.d.ts +27 -0
  110. package/build/services/mcp/server-lifecycle.js +49 -0
  111. package/build/services/mcp/server-tools.d.ts +13 -0
  112. package/build/services/mcp/server-tools.js +287 -0
  113. package/build/services/mcp/server.d.ts +2 -26
  114. package/build/services/mcp/server.js +7 -315
  115. package/build/services/yaml-workflow/builder-regenerate.d.ts +25 -0
  116. package/build/services/yaml-workflow/builder-regenerate.js +111 -0
  117. package/build/services/yaml-workflow/db-versions.d.ts +17 -0
  118. package/build/services/yaml-workflow/db-versions.js +76 -0
  119. package/build/services/yaml-workflow/db.d.ts +3 -13
  120. package/build/services/yaml-workflow/db.js +15 -71
  121. package/build/services/yaml-workflow/deployer-helpers.js +48 -17
  122. package/build/services/yaml-workflow/durable-compiler/index.d.ts +22 -0
  123. package/build/services/yaml-workflow/durable-compiler/index.js +168 -0
  124. package/build/services/yaml-workflow/durable-compiler/parser.d.ts +12 -0
  125. package/build/services/yaml-workflow/durable-compiler/parser.js +110 -0
  126. package/build/services/yaml-workflow/durable-compiler/prompts.d.ts +18 -0
  127. package/build/services/yaml-workflow/durable-compiler/prompts.js +570 -0
  128. package/build/services/yaml-workflow/durable-compiler/types.d.ts +51 -0
  129. package/build/services/yaml-workflow/durable-compiler/types.js +5 -0
  130. package/build/services/yaml-workflow/pipeline/build/dag-assembly.d.ts +17 -0
  131. package/build/services/yaml-workflow/pipeline/build/dag-assembly.js +192 -0
  132. package/build/services/yaml-workflow/pipeline/build/dag.d.ts +4 -13
  133. package/build/services/yaml-workflow/pipeline/build/dag.js +9 -185
  134. package/build/services/yaml-workflow/pipeline/prompt-templates.d.ts +10 -0
  135. package/build/services/yaml-workflow/pipeline/prompt-templates.js +270 -0
  136. package/build/services/yaml-workflow/pipeline/prompts.d.ts +3 -6
  137. package/build/services/yaml-workflow/pipeline/prompts.js +8 -263
  138. package/build/services/yaml-workflow/workers/register.js +4 -2
  139. package/build/start/adapters.js +4 -1
  140. package/build/start/socket-auth.d.ts +13 -0
  141. package/build/start/socket-auth.js +32 -0
  142. package/build/start/workers.js +6 -5
  143. package/build/system/activities/file-storage.d.ts +4 -0
  144. package/build/system/activities/file-storage.js +7 -1
  145. package/build/system/activities/knowledge.d.ts +23 -0
  146. package/build/system/activities/knowledge.js +50 -10
  147. package/build/system/activities/sql.d.ts +3 -0
  148. package/build/system/activities/sql.js +25 -1
  149. package/build/system/mcp-servers/file-storage.js +3 -1
  150. package/build/system/mcp-servers/human-queue-schemas.d.ts +91 -0
  151. package/build/system/mcp-servers/human-queue-schemas.js +42 -0
  152. package/build/system/mcp-servers/human-queue.d.ts +2 -6
  153. package/build/system/mcp-servers/human-queue.js +9 -51
  154. package/build/system/mcp-servers/knowledge.js +43 -9
  155. package/build/system/mcp-servers/workflow-compiler.js +54 -0
  156. package/build/system/workflows/mcp-triage/activities-proxy.d.ts +21 -0
  157. package/build/system/workflows/mcp-triage/activities-proxy.js +70 -0
  158. package/build/system/workflows/mcp-triage/index.js +17 -75
  159. package/build/system/workflows/mcp-workflow-planner/activities/persist.d.ts +1 -0
  160. package/build/system/workflows/mcp-workflow-planner/activities/persist.js +1 -0
  161. package/build/system/workflows/mcp-workflow-planner/index.js +2 -0
  162. package/build/tsconfig.tsbuildinfo +1 -1
  163. package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js → AdminDashboard-Bprul9Eb.js} +2 -2
  164. package/dashboard/dist/assets/{AdminDashboard-Cngijp4Q.js.map → AdminDashboard-Bprul9Eb.js.map} +1 -1
  165. package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js +2 -0
  166. package/dashboard/dist/assets/AvailableEscalationsPage-H_z5mC10.js.map +1 -0
  167. package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js → BotPicker-DcvILNUf.js} +2 -2
  168. package/dashboard/dist/assets/{BotPicker-B8Uvw9Si.js.map → BotPicker-DcvILNUf.js.map} +1 -1
  169. package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js → CollapsibleSection-BWPbzgEe.js} +2 -2
  170. package/dashboard/dist/assets/{CollapsibleSection-DiFPuWOY.js.map → CollapsibleSection-BWPbzgEe.js.map} +1 -1
  171. package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js → ConfirmDeleteModal-Cy6KVLfC.js} +2 -2
  172. package/dashboard/dist/assets/{ConfirmDeleteModal-CpXG9uyu.js.map → ConfirmDeleteModal-Cy6KVLfC.js.map} +1 -1
  173. package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js → CopyableId-CRED8hvk.js} +2 -2
  174. package/dashboard/dist/assets/{CopyableId-DKsTR9lK.js.map → CopyableId-CRED8hvk.js.map} +1 -1
  175. package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js → CredentialsPage-BUdvxiE3.js} +2 -2
  176. package/dashboard/dist/assets/{CredentialsPage-DlS7Kf40.js.map → CredentialsPage-BUdvxiE3.js.map} +1 -1
  177. package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js → CustomDurationPicker-eOk2EqQ5.js} +2 -2
  178. package/dashboard/dist/assets/{CustomDurationPicker-B-9eW3pm.js.map → CustomDurationPicker-eOk2EqQ5.js.map} +1 -1
  179. package/dashboard/dist/assets/{DataTable-DkOokbtL.js → DataTable-bd2PTBJd.js} +2 -2
  180. package/dashboard/dist/assets/{DataTable-DkOokbtL.js.map → DataTable-bd2PTBJd.js.map} +1 -1
  181. package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js → ElapsedCell-BGo8vyus.js} +2 -2
  182. package/dashboard/dist/assets/{ElapsedCell-DVtHqM-5.js.map → ElapsedCell-BGo8vyus.js.map} +1 -1
  183. package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js → EmptyState-BygtU-Rh.js} +2 -2
  184. package/dashboard/dist/assets/{EmptyState-C7KIMIbE.js.map → EmptyState-BygtU-Rh.js.map} +1 -1
  185. package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js → EscalationsOverview-DUEcN5MP.js} +2 -2
  186. package/dashboard/dist/assets/{EscalationsOverview-BMKBlkPx.js.map → EscalationsOverview-DUEcN5MP.js.map} +1 -1
  187. package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js → EventTable-CmFhswLW.js} +2 -2
  188. package/dashboard/dist/assets/{EventTable-BYZ5OVdQ.js.map → EventTable-CmFhswLW.js.map} +1 -1
  189. package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js → FilterBar-BQNzsd3A.js} +2 -2
  190. package/dashboard/dist/assets/{FilterBar-C5r3n6YO.js.map → FilterBar-BQNzsd3A.js.map} +1 -1
  191. package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js → ListToolbar-OWOn-HiC.js} +2 -2
  192. package/dashboard/dist/assets/{ListToolbar-BGUajIsW.js.map → ListToolbar-OWOn-HiC.js.map} +1 -1
  193. package/dashboard/dist/assets/{McpOverview-B_kJYHea.js → McpOverview-OkEzvClD.js} +2 -2
  194. package/dashboard/dist/assets/{McpOverview-B_kJYHea.js.map → McpOverview-OkEzvClD.js.map} +1 -1
  195. package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js +5 -0
  196. package/dashboard/dist/assets/McpQueryDetailPage-C6Ih5sC_.js.map +1 -0
  197. package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js → McpQueryPage-BAuOf5TL.js} +2 -2
  198. package/dashboard/dist/assets/{McpQueryPage-BgAq_bQg.js.map → McpQueryPage-BAuOf5TL.js.map} +1 -1
  199. package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js → McpRunDetailPage-DMeiG4i_.js} +2 -2
  200. package/dashboard/dist/assets/{McpRunDetailPage-B8c0OszR.js.map → McpRunDetailPage-DMeiG4i_.js.map} +1 -1
  201. package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js → McpRunsPage-CG3cNJh8.js} +2 -2
  202. package/dashboard/dist/assets/{McpRunsPage-BY8C6k78.js.map → McpRunsPage-CG3cNJh8.js.map} +1 -1
  203. package/dashboard/dist/assets/{Modal-E1yRnCeW.js → Modal-Dir9Rlnx.js} +2 -2
  204. package/dashboard/dist/assets/{Modal-E1yRnCeW.js.map → Modal-Dir9Rlnx.js.map} +1 -1
  205. package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js → OperatorDashboard-OqWC6Azy.js} +2 -2
  206. package/dashboard/dist/assets/{OperatorDashboard-C8MSTzey.js.map → OperatorDashboard-OqWC6Azy.js.map} +1 -1
  207. package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js → PageHeader-FJIemmrC.js} +2 -2
  208. package/dashboard/dist/assets/{PageHeader-Cm5HBQF_.js.map → PageHeader-FJIemmrC.js.map} +1 -1
  209. package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js → PageHeaderWithStats-Br5y9qNO.js} +2 -2
  210. package/dashboard/dist/assets/{PageHeaderWithStats-CNmWJFSN.js.map → PageHeaderWithStats-Br5y9qNO.js.map} +1 -1
  211. package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js → PriorityBadge-C7D5d_HY.js} +2 -2
  212. package/dashboard/dist/assets/{PriorityBadge-HSI4RVhs.js.map → PriorityBadge-C7D5d_HY.js.map} +1 -1
  213. package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js → ProcessDetailPage-DZIP6grw.js} +2 -2
  214. package/dashboard/dist/assets/{ProcessDetailPage-Dln8622H.js.map → ProcessDetailPage-DZIP6grw.js.map} +1 -1
  215. package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js → ProcessesListPage-BQoPYkeB.js} +2 -2
  216. package/dashboard/dist/assets/{ProcessesListPage-bIsd9N_h.js.map → ProcessesListPage-BQoPYkeB.js.map} +1 -1
  217. package/dashboard/dist/assets/{RolePill-BVUp2bF0.js → RolePill-D6nMxMvp.js} +2 -2
  218. package/dashboard/dist/assets/{RolePill-BVUp2bF0.js.map → RolePill-D6nMxMvp.js.map} +1 -1
  219. package/dashboard/dist/assets/RolesPage-CwLnJFhy.js +2 -0
  220. package/dashboard/dist/assets/{RolesPage-kH-Njt25.js.map → RolesPage-CwLnJFhy.js.map} +1 -1
  221. package/dashboard/dist/assets/{RowActions-DbUJPfaW.js → RowActions-JqgAB0p3.js} +2 -2
  222. package/dashboard/dist/assets/{RowActions-DbUJPfaW.js.map → RowActions-JqgAB0p3.js.map} +1 -1
  223. package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js +2 -0
  224. package/dashboard/dist/assets/RunAsSelector-KAlKtitB.js.map +1 -0
  225. package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js → StatCard-B-WLhOaH.js} +2 -2
  226. package/dashboard/dist/assets/{StatCard-Bs3JbyAz.js.map → StatCard-B-WLhOaH.js.map} +1 -1
  227. package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js → StatusBadge-DVCf2ncM.js} +2 -2
  228. package/dashboard/dist/assets/{StatusBadge-CakDdsCw.js.map → StatusBadge-DVCf2ncM.js.map} +1 -1
  229. package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js → StepIndicator-D9Xvdf18.js} +2 -2
  230. package/dashboard/dist/assets/{StepIndicator-Cd_SG_yA.js.map → StepIndicator-D9Xvdf18.js.map} +1 -1
  231. package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js → StickyPagination-CJHMzYJj.js} +2 -2
  232. package/dashboard/dist/assets/{StickyPagination-Bz0C18nC.js.map → StickyPagination-CJHMzYJj.js.map} +1 -1
  233. package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js +2 -0
  234. package/dashboard/dist/assets/SwimlaneTimeline-YiXPDyEL.js.map +1 -0
  235. package/dashboard/dist/assets/{TagInput-ClFhXG-U.js → TagInput-DcPnUnSJ.js} +2 -2
  236. package/dashboard/dist/assets/{TagInput-ClFhXG-U.js.map → TagInput-DcPnUnSJ.js.map} +1 -1
  237. package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js → TaskDetailPage-DftmYWD7.js} +2 -2
  238. package/dashboard/dist/assets/{TaskDetailPage-SuMBdARt.js.map → TaskDetailPage-DftmYWD7.js.map} +1 -1
  239. package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js → TaskQueuePill-BzduBqwy.js} +2 -2
  240. package/dashboard/dist/assets/{TaskQueuePill-lJR1JW_W.js.map → TaskQueuePill-BzduBqwy.js.map} +1 -1
  241. package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js → TasksListPage-DeewV4Gp.js} +2 -2
  242. package/dashboard/dist/assets/{TasksListPage-Dkq1Vtbt.js.map → TasksListPage-DeewV4Gp.js.map} +1 -1
  243. package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js → TimeAgo-DJZq-e4R.js} +2 -2
  244. package/dashboard/dist/assets/{TimeAgo-DgfDZ1pl.js.map → TimeAgo-DJZq-e4R.js.map} +1 -1
  245. package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js → TimestampCell-Dx5uwGfS.js} +2 -2
  246. package/dashboard/dist/assets/{TimestampCell-MpHZ1hMD.js.map → TimestampCell-Dx5uwGfS.js.map} +1 -1
  247. package/dashboard/dist/assets/{UserName-DqsosA4B.js → UserName-CnGk7MgL.js} +2 -2
  248. package/dashboard/dist/assets/{UserName-DqsosA4B.js.map → UserName-CnGk7MgL.js.map} +1 -1
  249. package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js → WorkflowExecutionPage-CPQ0fIwf.js} +2 -2
  250. package/dashboard/dist/assets/{WorkflowExecutionPage-CVlg38C3.js.map → WorkflowExecutionPage-CPQ0fIwf.js.map} +1 -1
  251. package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js → WorkflowPill-BrD5d1AG.js} +2 -2
  252. package/dashboard/dist/assets/{WorkflowPill-CRpZhjGR.js.map → WorkflowPill-BrD5d1AG.js.map} +1 -1
  253. package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js → WorkflowsDashboard-BzjhABZP.js} +2 -2
  254. package/dashboard/dist/assets/{WorkflowsDashboard-Ugzbs8mV.js.map → WorkflowsDashboard-BzjhABZP.js.map} +1 -1
  255. package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js → WorkflowsOverview-lBp2E6rN.js} +2 -2
  256. package/dashboard/dist/assets/{WorkflowsOverview-CIp_lTNl.js.map → WorkflowsOverview-lBp2E6rN.js.map} +1 -1
  257. package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js +2 -0
  258. package/dashboard/dist/assets/YamlWorkflowsPage-C_MkAp2i.js.map +1 -0
  259. package/dashboard/dist/assets/{bots-DPfUpVqI.js → bots-fc_O_YIq.js} +2 -2
  260. package/dashboard/dist/assets/{bots-DPfUpVqI.js.map → bots-fc_O_YIq.js.map} +1 -1
  261. package/dashboard/dist/assets/{escalation-RrCDbMC3.js → escalation-BYhLYHBz.js} +2 -2
  262. package/dashboard/dist/assets/{escalation-RrCDbMC3.js.map → escalation-BYhLYHBz.js.map} +1 -1
  263. package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js → escalation-columns-DjJyuC1g.js} +2 -2
  264. package/dashboard/dist/assets/{escalation-columns-CDGa9wsD.js.map → escalation-columns-DjJyuC1g.js.map} +1 -1
  265. package/dashboard/dist/assets/{helpers-ZSKqdkdS.js → helpers-CQG3Rh2y.js} +2 -2
  266. package/dashboard/dist/assets/{helpers-ZSKqdkdS.js.map → helpers-CQG3Rh2y.js.map} +1 -1
  267. package/dashboard/dist/assets/{index-DX6zxr6t.js → index-2nBhR7Dg.js} +2 -2
  268. package/dashboard/dist/assets/{index-DX6zxr6t.js.map → index-2nBhR7Dg.js.map} +1 -1
  269. package/dashboard/dist/assets/index-4IUoh_hd.js +2 -0
  270. package/dashboard/dist/assets/{index-K40Qw1tk.js.map → index-4IUoh_hd.js.map} +1 -1
  271. package/dashboard/dist/assets/index-B2CqPzLK.js +2 -0
  272. package/dashboard/dist/assets/index-B2CqPzLK.js.map +1 -0
  273. package/dashboard/dist/assets/index-B78xalb4.js +2 -0
  274. package/dashboard/dist/assets/index-B78xalb4.js.map +1 -0
  275. package/dashboard/dist/assets/index-BI8r69O_.js +2 -0
  276. package/dashboard/dist/assets/{index-C90ZPzXk.js.map → index-BI8r69O_.js.map} +1 -1
  277. package/dashboard/dist/assets/index-C5TUqJu0.css +1 -0
  278. package/dashboard/dist/assets/{index-BmVCyB6C.js → index-CUqCBBZG.js} +2 -2
  279. package/dashboard/dist/assets/{index-BmVCyB6C.js.map → index-CUqCBBZG.js.map} +1 -1
  280. package/dashboard/dist/assets/index-D51PaQZY.js +2 -0
  281. package/dashboard/dist/assets/index-D51PaQZY.js.map +1 -0
  282. package/dashboard/dist/assets/{index-BbI2dzhJ.js → index-DNtXXy1o.js} +2 -2
  283. package/dashboard/dist/assets/{index-BbI2dzhJ.js.map → index-DNtXXy1o.js.map} +1 -1
  284. package/dashboard/dist/assets/{index-DNytWfSZ.js → index-DR4qQvlW.js} +2 -2
  285. package/dashboard/dist/assets/{index-DNytWfSZ.js.map → index-DR4qQvlW.js.map} +1 -1
  286. package/dashboard/dist/assets/index-Dh0PCbR-.js +15 -0
  287. package/dashboard/dist/assets/index-Dh0PCbR-.js.map +1 -0
  288. package/dashboard/dist/assets/index-KYpLvJKB.js +5 -0
  289. package/dashboard/dist/assets/index-KYpLvJKB.js.map +1 -0
  290. package/dashboard/dist/assets/{index-Cmgrk7PQ.js → index-sNrqYt0Q.js} +73 -73
  291. package/dashboard/dist/assets/index-sNrqYt0Q.js.map +1 -0
  292. package/dashboard/dist/assets/{mcp-CNE44TSp.js → mcp-D2XfRh8v.js} +2 -2
  293. package/dashboard/dist/assets/{mcp-CNE44TSp.js.map → mcp-D2XfRh8v.js.map} +1 -1
  294. package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js → mcp-query-CIx_mIC7.js} +2 -2
  295. package/dashboard/dist/assets/{mcp-query-RQX0uN-5.js.map → mcp-query-CIx_mIC7.js.map} +1 -1
  296. package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js → mcp-runs-C9_J4LIH.js} +2 -2
  297. package/dashboard/dist/assets/{mcp-runs-0w40bdz-.js.map → mcp-runs-C9_J4LIH.js.map} +1 -1
  298. package/dashboard/dist/assets/{namespaces-BbmdXuPp.js → namespaces-BwMljx6f.js} +2 -2
  299. package/dashboard/dist/assets/{namespaces-BbmdXuPp.js.map → namespaces-BwMljx6f.js.map} +1 -1
  300. package/dashboard/dist/assets/{roles-DoHYlhWH.js → roles-Bd_sTV6I.js} +2 -2
  301. package/dashboard/dist/assets/{roles-DoHYlhWH.js.map → roles-Bd_sTV6I.js.map} +1 -1
  302. package/dashboard/dist/assets/{settings-BAiJiCHS.js → settings-BCb8eFyA.js} +2 -2
  303. package/dashboard/dist/assets/{settings-BAiJiCHS.js.map → settings-BCb8eFyA.js.map} +1 -1
  304. package/dashboard/dist/assets/{tasks-CvroqHtm.js → tasks-Bq54qGGq.js} +2 -2
  305. package/dashboard/dist/assets/{tasks-CvroqHtm.js.map → tasks-Bq54qGGq.js.map} +1 -1
  306. package/dashboard/dist/assets/useEventHooks-BTbGf536.js +2 -0
  307. package/dashboard/dist/assets/{useEventHooks-BHMbzR_y.js.map → useEventHooks-BTbGf536.js.map} +1 -1
  308. package/dashboard/dist/assets/useYamlActivityEvents-CsYP09W5.js +2 -0
  309. package/dashboard/dist/assets/{useYamlActivityEvents-D56KV14X.js.map → useYamlActivityEvents-CsYP09W5.js.map} +1 -1
  310. package/dashboard/dist/assets/{users-CxIMy_xw.js → users-BTBhafGc.js} +2 -2
  311. package/dashboard/dist/assets/{users-CxIMy_xw.js.map → users-BTBhafGc.js.map} +1 -1
  312. package/dashboard/dist/assets/{vendor-icons-AFGxSeQS.js → vendor-icons-CWl44VA6.js} +77 -77
  313. package/dashboard/dist/assets/vendor-icons-CWl44VA6.js.map +1 -0
  314. package/dashboard/dist/assets/{workflows-yR9yais7.js → workflows-BkzA4ahe.js} +2 -2
  315. package/dashboard/dist/assets/{workflows-yR9yais7.js.map → workflows-BkzA4ahe.js.map} +1 -1
  316. package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js → yaml-workflows-Cs0EYp0F.js} +2 -2
  317. package/dashboard/dist/assets/{yaml-workflows-QVF2MZ0l.js.map → yaml-workflows-Cs0EYp0F.js.map} +1 -1
  318. package/dashboard/dist/index.html +3 -3
  319. package/docs/api/http/file-browser.md +101 -0
  320. package/docs/api/http/knowledge.md +203 -0
  321. package/docs/api/http/settings.md +6 -4
  322. package/docs/api/sdk/files.md +68 -0
  323. package/docs/api/sdk/knowledge.md +126 -0
  324. package/docs/api/sdk/settings.md +3 -2
  325. package/docs/cli.md +171 -0
  326. package/docs/compilation.md +16 -0
  327. package/docs/compiler.md +311 -0
  328. package/docs/events.md +19 -0
  329. package/docs/workflows.md +19 -0
  330. package/package.json +13 -2
  331. package/build/api/escalations.d.ts +0 -271
  332. package/build/api/escalations.js +0 -932
  333. package/build/api/workflows.d.ts +0 -158
  334. package/build/api/workflows.js +0 -414
  335. package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js +0 -2
  336. package/dashboard/dist/assets/AvailableEscalationsPage-CpBfGV1h.js.map +0 -1
  337. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js +0 -5
  338. package/dashboard/dist/assets/McpQueryDetailPage-Czsmovqw.js.map +0 -1
  339. package/dashboard/dist/assets/RolesPage-kH-Njt25.js +0 -2
  340. package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js +0 -2
  341. package/dashboard/dist/assets/SwimlaneTimeline-Cfe-xQRX.js.map +0 -1
  342. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js +0 -2
  343. package/dashboard/dist/assets/YamlWorkflowsPage-BICF0fRO.js.map +0 -1
  344. package/dashboard/dist/assets/helpers-rMEcLwKs.js +0 -2
  345. package/dashboard/dist/assets/helpers-rMEcLwKs.js.map +0 -1
  346. package/dashboard/dist/assets/index-ABcJHHlN.js +0 -5
  347. package/dashboard/dist/assets/index-ABcJHHlN.js.map +0 -1
  348. package/dashboard/dist/assets/index-B91h_jZ0.js +0 -15
  349. package/dashboard/dist/assets/index-B91h_jZ0.js.map +0 -1
  350. package/dashboard/dist/assets/index-C1E5GTs9.js +0 -2
  351. package/dashboard/dist/assets/index-C1E5GTs9.js.map +0 -1
  352. package/dashboard/dist/assets/index-C90ZPzXk.js +0 -2
  353. package/dashboard/dist/assets/index-Cmgrk7PQ.js.map +0 -1
  354. package/dashboard/dist/assets/index-DeX-ezqf.css +0 -1
  355. package/dashboard/dist/assets/index-K40Qw1tk.js +0 -2
  356. package/dashboard/dist/assets/index-lCyNr5Xk.js +0 -2
  357. package/dashboard/dist/assets/index-lCyNr5Xk.js.map +0 -1
  358. package/dashboard/dist/assets/useEventHooks-BHMbzR_y.js +0 -2
  359. package/dashboard/dist/assets/useYamlActivityEvents-D56KV14X.js +0 -2
  360. package/dashboard/dist/assets/vendor-icons-AFGxSeQS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-C90ZPzXk.js","sources":["../../src/components/common/test/ToolTestPanel.tsx","../../src/pages/mcp/servers/helpers.ts","../../src/pages/mcp/servers/ServerRow.tsx","../../src/pages/mcp/servers/McpServersPage.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport { X, RotateCcw, Play, ExternalLink, KeyRound } from 'lucide-react';\nimport { useCallMcpTool } from '../../../api/mcp';\nimport { JsonViewer } from '../data/JsonViewer';\nimport { RunAsSelector } from '../form/RunAsSelector';\nimport type { McpToolManifest } from '../../../api/types';\nimport { buildSkeleton } from '../../../pages/mcp/mcp-query-detail/helpers';\n\nfunction ToolErrorDisplay({ error }: { error: Error | null }) {\n const msg = error instanceof Error ? error.message : '';\n if (msg.startsWith('No credential found for provider')) {\n return (\n <div className=\"bg-status-warning/10 border border-status-warning/30 rounded-md px-3 py-2 flex items-start gap-2\">\n <KeyRound size={14} className=\"text-status-warning mt-0.5 shrink-0\" />\n <div>\n <p className=\"text-[11px] font-medium text-text-primary mb-0.5\">Credential required</p>\n <p className=\"text-[11px] text-text-secondary mb-1\">{msg}</p>\n <Link to=\"/credentials\" className=\"text-[11px] text-accent hover:underline inline-flex items-center gap-1\">\n Go to Credentials <ExternalLink size={10} />\n </Link>\n </div>\n </div>\n );\n }\n return (\n <div className=\"bg-status-error/10 border border-status-error/20 rounded-md px-3 py-2\">\n <p className=\"text-[11px] text-status-error\">{msg || 'Tool call failed'}</p>\n </div>\n );\n}\n\nfunction ExecutionLink({ data }: { data: unknown }) {\n const res = (data as any)?.result;\n const jobId = res?.job_id;\n const ns = res?.namespace || 'longtail';\n if (!jobId) return null;\n return (\n <Link\n to={`/mcp/executions/${encodeURIComponent(jobId)}?namespace=${encodeURIComponent(ns)}`}\n className=\"inline-flex items-center gap-1.5 text-xs text-accent hover:underline\"\n >\n <ExternalLink size={12} />\n View Execution\n </Link>\n );\n}\n\ninterface ToolTestPanelProps {\n serverId: string;\n serverName: string;\n tool: McpToolManifest;\n onClose: () => void;\n}\n\nexport function ToolTestPanel({ serverId, serverName, tool, onClose }: ToolTestPanelProps) {\n const callTool = useCallMcpTool();\n const [jsonMode, setJsonMode] = useState(false);\n const [fields, setFields] = useState<Record<string, any>>({});\n const [argsJson, setArgsJson] = useState('');\n const [jsonError, setJsonError] = useState('');\n const [executeAs, setExecuteAs] = useState('');\n\n useEffect(() => {\n const skeleton = buildSkeleton(tool.inputSchema);\n setFields(skeleton);\n setArgsJson(JSON.stringify(skeleton, null, 2));\n setJsonMode(false);\n setJsonError('');\n callTool.reset();\n }, [tool.name, serverId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const hasResult = !!callTool.data || !!callTool.error;\n\n const toggleMode = () => {\n if (!jsonMode) {\n setArgsJson(JSON.stringify(fields, null, 2));\n } else {\n try { setFields(JSON.parse(argsJson)); } catch { /* keep fields */ }\n }\n setJsonMode(!jsonMode);\n };\n\n const handleRun = () => {\n setJsonError('');\n callTool.reset();\n let parsed: Record<string, unknown>;\n if (jsonMode) {\n try { parsed = JSON.parse(argsJson); } catch { setJsonError('Invalid JSON'); return; }\n } else {\n parsed = { ...fields };\n }\n callTool.mutate({\n serverId,\n toolName: tool.name,\n arguments: parsed,\n ...(executeAs ? { execute_as: executeAs } : {}),\n });\n };\n\n return (\n <div className=\"border-l border-surface-border bg-surface-raised flex flex-col h-full\">\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-surface-border shrink-0\">\n <div className=\"min-w-0\">\n <p className=\"text-xs font-medium text-text-primary truncate\">{serverName}</p>\n <code className=\"text-[11px] font-mono text-accent truncate block\">{tool.name}</code>\n </div>\n <button onClick={onClose} className=\"p-1 text-text-tertiary hover:text-text-primary shrink-0 ml-2\">\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n\n {/* Scrollable body */}\n <div className=\"flex-1 overflow-y-auto px-4 py-3 space-y-4\">\n <RunAsSelector selected={executeAs} onChange={setExecuteAs} />\n\n {tool.description && (\n <p className=\"text-[11px] text-text-secondary leading-relaxed\">{tool.description}</p>\n )}\n\n {/* Form / JSON toggle input */}\n <div>\n <div className=\"flex items-center justify-between mb-1\">\n <label className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Request</label>\n <button onClick={toggleMode} className=\"text-[10px] text-accent hover:underline\">\n {jsonMode ? 'Form view' : 'JSON view'}\n </button>\n </div>\n\n {jsonMode ? (\n <textarea\n value={argsJson}\n onChange={(e) => setArgsJson(e.target.value)}\n className=\"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 font-mono text-[11px] text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary resize-y\"\n rows={6}\n spellCheck={false}\n />\n ) : (\n <div className=\"space-y-3 max-h-[300px] overflow-y-auto\">\n {Object.entries(fields).map(([key, value]) => (\n <div key={key}>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">{key}</label>\n {typeof value === 'boolean' ? (\n <select\n value={String(value)}\n onChange={(e) => setFields({ ...fields, [key]: e.target.value === 'true' })}\n className=\"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\"\n >\n <option value=\"true\">true</option>\n <option value=\"false\">false</option>\n </select>\n ) : typeof value === 'object' ? (\n <textarea\n value={JSON.stringify(value, null, 2)}\n onChange={(e) => { try { setFields({ ...fields, [key]: JSON.parse(e.target.value) }); } catch { /* invalid */ } }}\n className=\"w-full min-h-[60px] px-3 py-1.5 bg-surface-sunken border border-surface-border rounded-md font-mono text-xs text-text-primary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\"\n />\n ) : (\n <input\n type={typeof value === 'number' ? 'number' : 'text'}\n value={String(value ?? '')}\n onChange={(e) => setFields({ ...fields, [key]: typeof value === 'number' ? Number(e.target.value) : e.target.value })}\n className=\"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\"\n />\n )}\n </div>\n ))}\n {Object.keys(fields).length === 0 && (\n <p className=\"text-[11px] text-text-tertiary italic\">No input fields defined</p>\n )}\n </div>\n )}\n {jsonError && <p className=\"text-[11px] text-status-error mt-1\">{jsonError}</p>}\n </div>\n\n {/* Run button */}\n <button\n onClick={handleRun}\n disabled={callTool.isPending}\n className=\"btn-primary text-xs disabled:opacity-50 inline-flex items-center gap-1.5\"\n >\n {callTool.isPending ? (\n 'Running...'\n ) : hasResult ? (\n <><RotateCcw size={12} /> Re-run</>\n ) : (\n <><Play size={12} /> Run</>\n )}\n </button>\n\n {/* Response */}\n {callTool.isPending && (\n <div className=\"animate-pulse\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Response</p>\n <div className=\"h-20 bg-surface-sunken rounded-md\" />\n </div>\n )}\n {callTool.data ? (\n <div className=\"space-y-2\">\n <JsonViewer data={callTool.data as Record<string, unknown>} label=\"Response\" defaultCollapsed />\n <ExecutionLink data={callTool.data} />\n </div>\n ) : null}\n {callTool.error ? (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Response</p>\n <ToolErrorDisplay error={callTool.error as Error | null} />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","import type { McpServerRecord, McpToolManifest } from '../../../api/types';\n\nexport function isBuiltIn(row: McpServerRecord): boolean {\n return !!(row.metadata as Record<string, unknown> | null)?.builtin\n || !!(row.transport_config as Record<string, unknown> | null)?.builtin;\n}\n\n/** Check if a server or any of its tools match the search term */\nexport function matchesSearch(server: McpServerRecord, search: string): boolean {\n if (!search) return true;\n const q = search.toLowerCase();\n if (server.name.toLowerCase().includes(q)) return true;\n if (server.description?.toLowerCase().includes(q)) return true;\n if ((server.tags ?? []).some((t) => t.toLowerCase().includes(q))) return true;\n const tools = (server.tool_manifest ?? []) as McpToolManifest[];\n return tools.some(\n (t) => t.name.toLowerCase().includes(q) || t.description?.toLowerCase().includes(q),\n );\n}\n\n/** Filter tools within a server that match the search term */\nexport function filterTools(tools: McpToolManifest[], search: string): McpToolManifest[] {\n if (!search) return tools;\n const q = search.toLowerCase();\n return tools.filter(\n (t) => t.name.toLowerCase().includes(q) || t.description?.toLowerCase().includes(q),\n );\n}\n","import { ChevronRight, Pencil, Trash2, Plug, Unplug, Play } from 'lucide-react';\nimport { RowAction, RowActionGroup } from '../../../components/common/layout/RowActions';\nimport {\n useConnectMcpServer,\n useDisconnectMcpServer,\n useCredentialStatus,\n} from '../../../api/mcp';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\n\nimport type { McpServerRecord, McpToolManifest } from '../../../api/types';\nimport { isBuiltIn } from './helpers';\n\nfunction CredentialDot({ serverId, credentialProviders }: { serverId: string; credentialProviders: string[] }) {\n const { data } = useCredentialStatus(serverId);\n if (credentialProviders.length === 0) return null;\n if (!data) return null;\n const ok = data.missing.length === 0;\n return (\n <span\n className={`inline-block w-2 h-2 rounded-full shrink-0 ${ok ? 'bg-status-success' : 'bg-status-warning'}`}\n title={ok ? 'All credentials registered' : `Missing: ${data.missing.join(', ')}`}\n />\n );\n}\n\nexport function ServerRow({\n server,\n expanded,\n onToggle,\n onEdit,\n onDelete,\n onTryTool,\n connect,\n disconnect,\n visibleTools,\n}: {\n server: McpServerRecord;\n expanded: boolean;\n onToggle: () => void;\n onEdit: () => void;\n onDelete: () => void;\n onTryTool: (tool: McpToolManifest) => void;\n connect: ReturnType<typeof useConnectMcpServer>;\n disconnect: ReturnType<typeof useDisconnectMcpServer>;\n visibleTools: McpToolManifest[];\n}) {\n const allTools = (server.tool_manifest ?? []) as McpToolManifest[];\n const builtin = isBuiltIn(server);\n\n return (\n <>\n {/* Server header row */}\n <tr\n onClick={allTools.length > 0 ? onToggle : undefined}\n className={`group/row border-b transition-colors duration-100 ${\n allTools.length > 0 ? 'cursor-pointer row-hover' : ''\n }`}\n >\n {/* Name + tags */}\n <td className=\"px-6 py-3.5\">\n <div className=\"flex items-center gap-2\">\n <span className={`transition-transform duration-150 ${expanded ? 'rotate-90' : ''} ${allTools.length === 0 ? 'opacity-0' : 'text-text-tertiary'}`}>\n <ChevronRight size={14} />\n </span>\n <div className=\"min-w-0\">\n <p className=\"text-sm text-text-primary font-medium\">{server.name}</p>\n {(server.tags ?? []).length > 0 && (\n <div className=\"flex flex-wrap gap-1 mt-0.5\">\n {server.tags.map((tag) => (\n <span\n key={tag}\n className=\"inline-block px-1.5 py-0 text-[9px] font-medium text-text-tertiary bg-surface-sunken rounded\"\n >\n {tag}\n </span>\n ))}\n </div>\n )}\n </div>\n </div>\n </td>\n\n {/* Status */}\n <td className=\"px-6 py-3.5 w-28\">\n <div className=\"flex items-center gap-2\">\n <StatusBadge status={server.status} />\n <CredentialDot serverId={server.id} credentialProviders={server.credential_providers ?? []} />\n </div>\n </td>\n\n {/* Actions */}\n <td className=\"px-6 py-3.5 w-28\">\n <RowActionGroup>\n {!builtin && (\n server.status === 'connected' ? (\n <RowAction\n icon={Unplug}\n title=\"Disconnect server\"\n onClick={() => disconnect.mutate(server.id)}\n />\n ) : (\n <RowAction\n icon={Plug}\n title=\"Connect server\"\n onClick={() => connect.mutate(server.id)}\n colorClass=\"text-text-tertiary hover:text-status-success\"\n />\n )\n )}\n <RowAction\n icon={Pencil}\n title=\"Edit server\"\n onClick={onEdit}\n />\n {!builtin && (\n <RowAction\n icon={Trash2}\n title=\"Delete server\"\n onClick={onDelete}\n colorClass=\"text-text-tertiary hover:text-status-error\"\n />\n )}\n </RowActionGroup>\n </td>\n\n {/* Tool count badge — aligned with child row hover icons */}\n <td className=\"w-12 text-center\">\n <span className=\"inline-flex items-center justify-center w-5 h-5 rounded-full border border-accent/30 text-[10px] font-medium text-accent\">\n {allTools.length}\n </span>\n </td>\n </tr>\n\n {/* Expanded tool rows — description below name, aligned to outer columns */}\n {visibleTools.length > 0 && (\n <tr>\n <td colSpan={4} className=\"p-0 border-0\">\n <div\n className=\"grid transition-[grid-template-rows] duration-200 ease-in-out\"\n style={{ gridTemplateRows: expanded ? '1fr' : '0fr' }}\n >\n <div className=\"overflow-hidden\">\n {visibleTools.map((tool) => (\n <div\n key={tool.name}\n onClick={() => onTryTool(tool)}\n className=\"group/row flex items-center cursor-pointer hover:bg-surface-hover/50 transition-colors border-b border-surface-border/30\"\n >\n {/* Tool name + description below */}\n <div className=\"flex-1 pl-14 pr-6 py-2 min-w-0\">\n <code className=\"text-xs font-mono text-accent-primary\">{tool.name}</code>\n {tool.description && (\n <p className=\"text-[10px] text-text-tertiary mt-0.5 line-clamp-1\">{tool.description}</p>\n )}\n </div>\n {/* Status — empty for tools */}\n <div className=\"w-28 px-6 py-2 shrink-0\" />\n {/* Try — hover-reveal icon */}\n <div className=\"w-28 px-6 py-2 flex justify-end shrink-0\">\n <button\n onClick={(e) => { e.stopPropagation(); onTryTool(tool); }}\n className=\"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent\"\n title=\"Try tool\"\n >\n <Play className=\"w-[18px] h-[18px]\" strokeWidth={1.5} />\n </button>\n </div>\n </div>\n ))}\n <div className=\"h-1 bg-surface-sunken/20\" />\n </div>\n </div>\n </td>\n </tr>\n )}\n </>\n );\n}\n","import { useState, useMemo, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport {\n useMcpServers,\n useConnectMcpServer,\n useDisconnectMcpServer,\n useDeleteMcpServer,\n} from '../../../api/mcp';\nimport { EmptyState } from '../../../components/common/display/EmptyState';\nimport { ConfirmDeleteModal } from '../../../components/common/modal/ConfirmDeleteModal';\nimport type { McpServerRecord, McpToolManifest } from '../../../api/types';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { FilterBar, FilterSelect, FilterInput } from '../../../components/common/data/FilterBar';\nimport { StickyPagination } from '../../../components/common/data/StickyPagination';\nimport { useFilterParams } from '../../../hooks/useFilterParams';\nimport { useExpandedRows } from '../../../hooks/useExpandedRows';\nimport { ToolTestPanel } from '../../../components/common/test/ToolTestPanel';\nimport { matchesSearch, filterTools } from './helpers';\nimport { ServerRow } from './ServerRow';\n\nexport function McpServersPage() {\n const navigate = useNavigate();\n const { filters, setFilter, pagination } = useFilterParams({\n filters: { status: '', search: '', tag: '' },\n });\n\n const { data, isLoading } = useMcpServers({\n status: filters.status || undefined,\n search: filters.search || undefined,\n tags: filters.tag || undefined,\n });\n const connect = useConnectMcpServer();\n const disconnect = useDisconnectMcpServer();\n const deleteServer = useDeleteMcpServer();\n\n const [confirmDelete, setConfirmDelete] = useState<McpServerRecord | null>(null);\n const { expandedIds, toggle: toggleExpand } = useExpandedRows('lt:expanded:mcp-servers');\n const [tryTool, setTryTool] = useState<{\n serverId: string;\n serverName: string;\n tool: McpToolManifest;\n } | null>(null);\n\n const servers = data?.servers ?? [];\n const total = data?.total ?? 0;\n\n // Derive unique tags from current result set for the filter dropdown\n const tagOptions = useMemo(() => {\n const allTags = new Set<string>();\n for (const s of servers) {\n for (const t of s.tags ?? []) allTags.add(t);\n }\n return [...allTags].sort().map((t) => ({ value: t, label: t }));\n }, [servers]);\n\n // Client-side search filtering for tool-level matches within expanded rows\n const filteredServers = useMemo(() => {\n if (!filters.search) return servers;\n return servers.filter((s) => matchesSearch(s, filters.search));\n }, [servers, filters.search]);\n\n // Auto-expand servers whose tools match the search (so results are visible)\n useEffect(() => {\n if (!filters.search) return;\n const q = filters.search.toLowerCase();\n for (const s of filteredServers) {\n const tools = (s.tool_manifest ?? []) as McpToolManifest[];\n const hasToolMatch = tools.some(\n (t) => t.name.toLowerCase().includes(q) || t.description?.toLowerCase().includes(q),\n );\n if (hasToolMatch && !expandedIds.has(s.id)) {\n toggleExpand(s.id);\n }\n }\n }, [filters.search, filteredServers]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleDelete = () => {\n if (!confirmDelete) return;\n deleteServer.mutate(confirmDelete.id, {\n onSuccess: () => setConfirmDelete(null),\n });\n };\n\n if (isLoading) {\n return (\n <div>\n <PageHeader title=\"MCP Server Tools\" />\n <div className=\"animate-pulse space-y-0\">\n {Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className=\"h-14 border-b last:border-b-0 px-6 flex items-center\">\n <div className=\"h-3 bg-surface-sunken rounded w-full\" />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <PageHeader\n title=\"MCP Server Tools\"\n actions={\n <button\n onClick={() => navigate('/mcp/servers/new')}\n className=\"btn-primary text-xs\"\n >\n Register Server\n </button>\n }\n />\n\n <p className=\"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed\">\n Registered MCP servers and their available tools. Each server exposes tools that can be used by the MCP Tool Designer.\n </p>\n\n <FilterBar>\n <FilterInput\n label=\"Search\"\n value={filters.search}\n onChange={(v) => setFilter('search', v)}\n placeholder=\"Server or tool name...\"\n />\n <FilterSelect\n label=\"Tag\"\n value={filters.tag}\n onChange={(v) => setFilter('tag', v)}\n options={tagOptions}\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'registered', label: 'Registered' },\n { value: 'connected', label: 'Connected' },\n { value: 'error', label: 'Error' },\n { value: 'disconnected', label: 'Disconnected' },\n ]}\n />\n </FilterBar>\n\n <div className={`flex gap-0 ${tryTool ? '' : ''}`}>\n {/* Server list */}\n <div className={`${tryTool ? 'flex-1 min-w-0' : 'w-full'} transition-all`}>\n {filteredServers.length === 0 ? (\n <EmptyState title=\"No servers found\" />\n ) : (\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b\">\n <th className=\"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Server / Tool\n </th>\n <th className=\"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28\">\n Status\n </th>\n <th className=\"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28\" />\n <th className=\"sticky top-[2.75rem] z-10 bg-surface w-12\" />\n </tr>\n </thead>\n <tbody>\n {filteredServers.map((server) => (\n <ServerRow\n key={server.id}\n server={server}\n expanded={expandedIds.has(server.id)}\n onToggle={() => toggleExpand(server.id)}\n onEdit={() => navigate(`/mcp/servers/${server.id}`)}\n onDelete={() => setConfirmDelete(server)}\n onTryTool={(tool) =>\n setTryTool({\n serverId: server.id,\n serverName: server.name,\n tool,\n })\n }\n connect={connect}\n disconnect={disconnect}\n visibleTools={filterTools(\n (server.tool_manifest ?? []) as McpToolManifest[],\n filters.search,\n )}\n />\n ))}\n </tbody>\n </table>\n )}\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n </div>\n\n {/* Test panel — slides in from right */}\n {tryTool && (\n <div className=\"w-[380px] shrink-0 sticky top-0 h-[calc(100vh-12rem)]\">\n <ToolTestPanel\n serverId={tryTool.serverId}\n serverName={tryTool.serverName}\n tool={tryTool.tool}\n onClose={() => setTryTool(null)}\n />\n </div>\n )}\n </div>\n\n {/* Delete confirmation modal */}\n <ConfirmDeleteModal\n open={!!confirmDelete}\n onClose={() => setConfirmDelete(null)}\n onConfirm={handleDelete}\n title=\"Delete MCP Server\"\n description={\n <>\n Delete{' '}\n <span className=\"font-medium text-text-primary\">{confirmDelete?.name}</span>?\n This will remove the server registration.\n </>\n }\n isPending={deleteServer.isPending}\n error={deleteServer.error as Error | null}\n />\n </div>\n );\n}\n"],"names":["ToolErrorDisplay","error","msg","jsxDEV","KeyRound","Link","ExternalLink","ExecutionLink","data","res","jobId","ns","ToolTestPanel","serverId","serverName","tool","onClose","callTool","useCallMcpTool","jsonMode","setJsonMode","useState","fields","setFields","argsJson","setArgsJson","jsonError","setJsonError","executeAs","setExecuteAs","useEffect","skeleton","buildSkeleton","hasResult","toggleMode","handleRun","parsed","X","RunAsSelector","e","key","value","Fragment","RotateCcw","Play","JsonViewer","isBuiltIn","row","_a","_b","matchesSearch","server","search","q","t","filterTools","tools","CredentialDot","credentialProviders","useCredentialStatus","ok","ServerRow","expanded","onToggle","onEdit","onDelete","onTryTool","connect","disconnect","visibleTools","allTools","builtin","ChevronRight","tag","StatusBadge","RowActionGroup","RowAction","Unplug","Plug","Pencil","Trash2","McpServersPage","navigate","useNavigate","filters","setFilter","pagination","useFilterParams","isLoading","useMcpServers","useConnectMcpServer","useDisconnectMcpServer","deleteServer","useDeleteMcpServer","confirmDelete","setConfirmDelete","expandedIds","toggleExpand","useExpandedRows","tryTool","setTryTool","servers","total","tagOptions","useMemo","allTags","s","filteredServers","handleDelete","PageHeader","_","i","FilterBar","FilterInput","v","FilterSelect","EmptyState","StickyPagination","ConfirmDeleteModal"],"mappings":"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"}
1
+ {"version":3,"file":"index-BI8r69O_.js","sources":["../../src/components/common/test/ToolTestPanel.tsx","../../src/pages/mcp/servers/helpers.ts","../../src/pages/mcp/servers/ServerRow.tsx","../../src/pages/mcp/servers/McpServersPage.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport { X, RotateCcw, Play, ExternalLink, KeyRound } from 'lucide-react';\nimport { useCallMcpTool } from '../../../api/mcp';\nimport { JsonViewer } from '../data/JsonViewer';\nimport { RunAsSelector } from '../form/RunAsSelector';\nimport type { McpToolManifest } from '../../../api/types';\nimport { buildSkeleton } from '../../../pages/mcp/mcp-query-detail/helpers';\n\nfunction ToolErrorDisplay({ error }: { error: Error | null }) {\n const msg = error instanceof Error ? error.message : '';\n if (msg.startsWith('No credential found for provider')) {\n return (\n <div className=\"bg-status-warning/10 border border-status-warning/30 rounded-md px-3 py-2 flex items-start gap-2\">\n <KeyRound size={14} className=\"text-status-warning mt-0.5 shrink-0\" />\n <div>\n <p className=\"text-[11px] font-medium text-text-primary mb-0.5\">Credential required</p>\n <p className=\"text-[11px] text-text-secondary mb-1\">{msg}</p>\n <Link to=\"/credentials\" className=\"text-[11px] text-accent hover:underline inline-flex items-center gap-1\">\n Go to Credentials <ExternalLink size={10} />\n </Link>\n </div>\n </div>\n );\n }\n return (\n <div className=\"bg-status-error/10 border border-status-error/20 rounded-md px-3 py-2\">\n <p className=\"text-[11px] text-status-error\">{msg || 'Tool call failed'}</p>\n </div>\n );\n}\n\nfunction ExecutionLink({ data }: { data: unknown }) {\n const res = (data as any)?.result;\n const jobId = res?.job_id;\n const ns = res?.namespace || 'longtail';\n if (!jobId) return null;\n return (\n <Link\n to={`/mcp/executions/${encodeURIComponent(jobId)}?namespace=${encodeURIComponent(ns)}`}\n className=\"inline-flex items-center gap-1.5 text-xs text-accent hover:underline\"\n >\n <ExternalLink size={12} />\n View Execution\n </Link>\n );\n}\n\ninterface ToolTestPanelProps {\n serverId: string;\n serverName: string;\n tool: McpToolManifest;\n onClose: () => void;\n}\n\nexport function ToolTestPanel({ serverId, serverName, tool, onClose }: ToolTestPanelProps) {\n const callTool = useCallMcpTool();\n const [jsonMode, setJsonMode] = useState(false);\n const [fields, setFields] = useState<Record<string, any>>({});\n const [argsJson, setArgsJson] = useState('');\n const [jsonError, setJsonError] = useState('');\n const [executeAs, setExecuteAs] = useState('');\n\n useEffect(() => {\n const skeleton = buildSkeleton(tool.inputSchema);\n setFields(skeleton);\n setArgsJson(JSON.stringify(skeleton, null, 2));\n setJsonMode(false);\n setJsonError('');\n callTool.reset();\n }, [tool.name, serverId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const hasResult = !!callTool.data || !!callTool.error;\n\n const toggleMode = () => {\n if (!jsonMode) {\n setArgsJson(JSON.stringify(fields, null, 2));\n } else {\n try { setFields(JSON.parse(argsJson)); } catch { /* keep fields */ }\n }\n setJsonMode(!jsonMode);\n };\n\n const handleRun = () => {\n setJsonError('');\n callTool.reset();\n let parsed: Record<string, unknown>;\n if (jsonMode) {\n try { parsed = JSON.parse(argsJson); } catch { setJsonError('Invalid JSON'); return; }\n } else {\n parsed = { ...fields };\n }\n callTool.mutate({\n serverId,\n toolName: tool.name,\n arguments: parsed,\n ...(executeAs ? { execute_as: executeAs } : {}),\n });\n };\n\n return (\n <div className=\"border-l border-surface-border bg-surface-raised flex flex-col h-full\">\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-surface-border shrink-0\">\n <div className=\"min-w-0\">\n <p className=\"text-xs font-medium text-text-primary truncate\">{serverName}</p>\n <code className=\"text-[11px] font-mono text-accent truncate block\">{tool.name}</code>\n </div>\n <button onClick={onClose} className=\"p-1 text-text-tertiary hover:text-text-primary shrink-0 ml-2\">\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n\n {/* Scrollable body */}\n <div className=\"flex-1 overflow-y-auto px-4 py-3 space-y-4\">\n <RunAsSelector selected={executeAs} onChange={setExecuteAs} />\n\n {tool.description && (\n <p className=\"text-[11px] text-text-secondary leading-relaxed\">{tool.description}</p>\n )}\n\n {/* Form / JSON toggle input */}\n <div>\n <div className=\"flex items-center justify-between mb-1\">\n <label className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">Request</label>\n <button onClick={toggleMode} className=\"text-[10px] text-accent hover:underline\">\n {jsonMode ? 'Form view' : 'JSON view'}\n </button>\n </div>\n\n {jsonMode ? (\n <textarea\n value={argsJson}\n onChange={(e) => setArgsJson(e.target.value)}\n className=\"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-2 font-mono text-[11px] text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary resize-y\"\n rows={6}\n spellCheck={false}\n />\n ) : (\n <div className=\"space-y-3 max-h-[300px] overflow-y-auto\">\n {Object.entries(fields).map(([key, value]) => (\n <div key={key}>\n <label className=\"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">{key}</label>\n {typeof value === 'boolean' ? (\n <select\n value={String(value)}\n onChange={(e) => setFields({ ...fields, [key]: e.target.value === 'true' })}\n className=\"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\"\n >\n <option value=\"true\">true</option>\n <option value=\"false\">false</option>\n </select>\n ) : typeof value === 'object' ? (\n <textarea\n value={JSON.stringify(value, null, 2)}\n onChange={(e) => { try { setFields({ ...fields, [key]: JSON.parse(e.target.value) }); } catch { /* invalid */ } }}\n className=\"w-full min-h-[60px] px-3 py-1.5 bg-surface-sunken border border-surface-border rounded-md font-mono text-xs text-text-primary resize-y focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\"\n />\n ) : (\n <input\n type={typeof value === 'number' ? 'number' : 'text'}\n value={String(value ?? '')}\n onChange={(e) => setFields({ ...fields, [key]: typeof value === 'number' ? Number(e.target.value) : e.target.value })}\n className=\"w-full bg-surface-sunken border border-surface-border rounded-md px-3 py-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-inset focus:ring-accent-primary\"\n />\n )}\n </div>\n ))}\n {Object.keys(fields).length === 0 && (\n <p className=\"text-[11px] text-text-tertiary italic\">No input fields defined</p>\n )}\n </div>\n )}\n {jsonError && <p className=\"text-[11px] text-status-error mt-1\">{jsonError}</p>}\n </div>\n\n {/* Run button */}\n <button\n onClick={handleRun}\n disabled={callTool.isPending}\n className=\"btn-primary text-xs disabled:opacity-50 inline-flex items-center gap-1.5\"\n >\n {callTool.isPending ? (\n 'Running...'\n ) : hasResult ? (\n <><RotateCcw size={12} /> Re-run</>\n ) : (\n <><Play size={12} /> Run</>\n )}\n </button>\n\n {/* Response */}\n {callTool.isPending && (\n <div className=\"animate-pulse\">\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Response</p>\n <div className=\"h-20 bg-surface-sunken rounded-md\" />\n </div>\n )}\n {callTool.data ? (\n <div className=\"space-y-2\">\n <JsonViewer data={callTool.data as Record<string, unknown>} label=\"Response\" defaultCollapsed />\n <ExecutionLink data={callTool.data} />\n </div>\n ) : null}\n {callTool.error ? (\n <div>\n <p className=\"text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1\">Response</p>\n <ToolErrorDisplay error={callTool.error as Error | null} />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","import type { McpServerRecord, McpToolManifest } from '../../../api/types';\n\nexport function isBuiltIn(row: McpServerRecord): boolean {\n return !!(row.metadata as Record<string, unknown> | null)?.builtin\n || !!(row.transport_config as Record<string, unknown> | null)?.builtin;\n}\n\n/** Check if a server or any of its tools match the search term */\nexport function matchesSearch(server: McpServerRecord, search: string): boolean {\n if (!search) return true;\n const q = search.toLowerCase();\n if (server.name.toLowerCase().includes(q)) return true;\n if (server.description?.toLowerCase().includes(q)) return true;\n if ((server.tags ?? []).some((t) => t.toLowerCase().includes(q))) return true;\n const tools = (server.tool_manifest ?? []) as McpToolManifest[];\n return tools.some(\n (t) => t.name.toLowerCase().includes(q) || t.description?.toLowerCase().includes(q),\n );\n}\n\n/** Filter tools within a server that match the search term */\nexport function filterTools(tools: McpToolManifest[], search: string): McpToolManifest[] {\n if (!search) return tools;\n const q = search.toLowerCase();\n return tools.filter(\n (t) => t.name.toLowerCase().includes(q) || t.description?.toLowerCase().includes(q),\n );\n}\n","import { ChevronRight, Pencil, Trash2, Plug, Unplug, Play } from 'lucide-react';\nimport { RowAction, RowActionGroup } from '../../../components/common/layout/RowActions';\nimport {\n useConnectMcpServer,\n useDisconnectMcpServer,\n useCredentialStatus,\n} from '../../../api/mcp';\nimport { StatusBadge } from '../../../components/common/display/StatusBadge';\n\nimport type { McpServerRecord, McpToolManifest } from '../../../api/types';\nimport { isBuiltIn } from './helpers';\n\nfunction CredentialDot({ serverId, credentialProviders }: { serverId: string; credentialProviders: string[] }) {\n const { data } = useCredentialStatus(serverId);\n if (credentialProviders.length === 0) return null;\n if (!data) return null;\n const ok = data.missing.length === 0;\n return (\n <span\n className={`inline-block w-2 h-2 rounded-full shrink-0 ${ok ? 'bg-status-success' : 'bg-status-warning'}`}\n title={ok ? 'All credentials registered' : `Missing: ${data.missing.join(', ')}`}\n />\n );\n}\n\nexport function ServerRow({\n server,\n expanded,\n onToggle,\n onEdit,\n onDelete,\n onTryTool,\n connect,\n disconnect,\n visibleTools,\n}: {\n server: McpServerRecord;\n expanded: boolean;\n onToggle: () => void;\n onEdit: () => void;\n onDelete: () => void;\n onTryTool: (tool: McpToolManifest) => void;\n connect: ReturnType<typeof useConnectMcpServer>;\n disconnect: ReturnType<typeof useDisconnectMcpServer>;\n visibleTools: McpToolManifest[];\n}) {\n const allTools = (server.tool_manifest ?? []) as McpToolManifest[];\n const builtin = isBuiltIn(server);\n\n return (\n <>\n {/* Server header row */}\n <tr\n onClick={allTools.length > 0 ? onToggle : undefined}\n className={`group/row border-b transition-colors duration-100 ${\n allTools.length > 0 ? 'cursor-pointer row-hover' : ''\n }`}\n >\n {/* Name + tags */}\n <td className=\"px-6 py-3.5\">\n <div className=\"flex items-center gap-2\">\n <span className={`transition-transform duration-150 ${expanded ? 'rotate-90' : ''} ${allTools.length === 0 ? 'opacity-0' : 'text-text-tertiary'}`}>\n <ChevronRight size={14} />\n </span>\n <div className=\"min-w-0\">\n <p className=\"text-sm text-text-primary font-medium\">{server.name}</p>\n {(server.tags ?? []).length > 0 && (\n <div className=\"flex flex-wrap gap-1 mt-0.5\">\n {server.tags.map((tag) => (\n <span\n key={tag}\n className=\"inline-block px-1.5 py-0 text-[9px] font-medium text-text-tertiary bg-surface-sunken rounded\"\n >\n {tag}\n </span>\n ))}\n </div>\n )}\n </div>\n </div>\n </td>\n\n {/* Status */}\n <td className=\"px-6 py-3.5 w-28\">\n <div className=\"flex items-center gap-2\">\n <StatusBadge status={server.status} />\n <CredentialDot serverId={server.id} credentialProviders={server.credential_providers ?? []} />\n </div>\n </td>\n\n {/* Actions */}\n <td className=\"px-6 py-3.5 w-28\">\n <RowActionGroup>\n {!builtin && (\n server.status === 'connected' ? (\n <RowAction\n icon={Unplug}\n title=\"Disconnect server\"\n onClick={() => disconnect.mutate(server.id)}\n />\n ) : (\n <RowAction\n icon={Plug}\n title=\"Connect server\"\n onClick={() => connect.mutate(server.id)}\n colorClass=\"text-text-tertiary hover:text-status-success\"\n />\n )\n )}\n <RowAction\n icon={Pencil}\n title=\"Edit server\"\n onClick={onEdit}\n />\n {!builtin && (\n <RowAction\n icon={Trash2}\n title=\"Delete server\"\n onClick={onDelete}\n colorClass=\"text-text-tertiary hover:text-status-error\"\n />\n )}\n </RowActionGroup>\n </td>\n\n {/* Tool count badge — aligned with child row hover icons */}\n <td className=\"w-12 text-center\">\n <span className=\"inline-flex items-center justify-center w-5 h-5 rounded-full border border-accent/30 text-[10px] font-medium text-accent\">\n {allTools.length}\n </span>\n </td>\n </tr>\n\n {/* Expanded tool rows — description below name, aligned to outer columns */}\n {visibleTools.length > 0 && (\n <tr>\n <td colSpan={4} className=\"p-0 border-0\">\n <div\n className=\"grid transition-[grid-template-rows] duration-200 ease-in-out\"\n style={{ gridTemplateRows: expanded ? '1fr' : '0fr' }}\n >\n <div className=\"overflow-hidden\">\n {visibleTools.map((tool) => (\n <div\n key={tool.name}\n onClick={() => onTryTool(tool)}\n className=\"group/row flex items-center cursor-pointer hover:bg-surface-hover/50 transition-colors border-b border-surface-border/30\"\n >\n {/* Tool name + description below */}\n <div className=\"flex-1 pl-14 pr-6 py-2 min-w-0\">\n <code className=\"text-xs font-mono text-accent-primary\">{tool.name}</code>\n {tool.description && (\n <p className=\"text-[10px] text-text-tertiary mt-0.5 line-clamp-1\">{tool.description}</p>\n )}\n </div>\n {/* Status — empty for tools */}\n <div className=\"w-28 px-6 py-2 shrink-0\" />\n {/* Try — hover-reveal icon */}\n <div className=\"w-28 px-6 py-2 flex justify-end shrink-0\">\n <button\n onClick={(e) => { e.stopPropagation(); onTryTool(tool); }}\n className=\"opacity-0 group-hover/row:opacity-100 transition-opacity text-text-tertiary hover:text-accent\"\n title=\"Try tool\"\n >\n <Play className=\"w-[18px] h-[18px]\" strokeWidth={1.5} />\n </button>\n </div>\n </div>\n ))}\n <div className=\"h-1 bg-surface-sunken/20\" />\n </div>\n </div>\n </td>\n </tr>\n )}\n </>\n );\n}\n","import { useState, useMemo, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport {\n useMcpServers,\n useConnectMcpServer,\n useDisconnectMcpServer,\n useDeleteMcpServer,\n} from '../../../api/mcp';\nimport { EmptyState } from '../../../components/common/display/EmptyState';\nimport { ConfirmDeleteModal } from '../../../components/common/modal/ConfirmDeleteModal';\nimport type { McpServerRecord, McpToolManifest } from '../../../api/types';\nimport { PageHeader } from '../../../components/common/layout/PageHeader';\nimport { FilterBar, FilterSelect, FilterInput } from '../../../components/common/data/FilterBar';\nimport { StickyPagination } from '../../../components/common/data/StickyPagination';\nimport { useFilterParams } from '../../../hooks/useFilterParams';\nimport { useExpandedRows } from '../../../hooks/useExpandedRows';\nimport { ToolTestPanel } from '../../../components/common/test/ToolTestPanel';\nimport { matchesSearch, filterTools } from './helpers';\nimport { ServerRow } from './ServerRow';\n\nexport function McpServersPage() {\n const navigate = useNavigate();\n const { filters, setFilter, pagination } = useFilterParams({\n filters: { status: '', search: '', tag: '' },\n });\n\n const { data, isLoading } = useMcpServers({\n status: filters.status || undefined,\n search: filters.search || undefined,\n tags: filters.tag || undefined,\n });\n const connect = useConnectMcpServer();\n const disconnect = useDisconnectMcpServer();\n const deleteServer = useDeleteMcpServer();\n\n const [confirmDelete, setConfirmDelete] = useState<McpServerRecord | null>(null);\n const { expandedIds, toggle: toggleExpand } = useExpandedRows('lt:expanded:mcp-servers');\n const [tryTool, setTryTool] = useState<{\n serverId: string;\n serverName: string;\n tool: McpToolManifest;\n } | null>(null);\n\n const servers = data?.servers ?? [];\n const total = data?.total ?? 0;\n\n // Derive unique tags from current result set for the filter dropdown\n const tagOptions = useMemo(() => {\n const allTags = new Set<string>();\n for (const s of servers) {\n for (const t of s.tags ?? []) allTags.add(t);\n }\n return [...allTags].sort().map((t) => ({ value: t, label: t }));\n }, [servers]);\n\n // Client-side search filtering for tool-level matches within expanded rows\n const filteredServers = useMemo(() => {\n if (!filters.search) return servers;\n return servers.filter((s) => matchesSearch(s, filters.search));\n }, [servers, filters.search]);\n\n // Auto-expand servers whose tools match the search (so results are visible)\n useEffect(() => {\n if (!filters.search) return;\n const q = filters.search.toLowerCase();\n for (const s of filteredServers) {\n const tools = (s.tool_manifest ?? []) as McpToolManifest[];\n const hasToolMatch = tools.some(\n (t) => t.name.toLowerCase().includes(q) || t.description?.toLowerCase().includes(q),\n );\n if (hasToolMatch && !expandedIds.has(s.id)) {\n toggleExpand(s.id);\n }\n }\n }, [filters.search, filteredServers]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const handleDelete = () => {\n if (!confirmDelete) return;\n deleteServer.mutate(confirmDelete.id, {\n onSuccess: () => setConfirmDelete(null),\n });\n };\n\n if (isLoading) {\n return (\n <div>\n <PageHeader title=\"MCP Server Tools\" />\n <div className=\"animate-pulse space-y-0\">\n {Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className=\"h-14 border-b last:border-b-0 px-6 flex items-center\">\n <div className=\"h-3 bg-surface-sunken rounded w-full\" />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <PageHeader\n title=\"MCP Server Tools\"\n actions={\n <button\n onClick={() => navigate('/mcp/servers/new')}\n className=\"btn-primary text-xs\"\n >\n Register Server\n </button>\n }\n />\n\n <p className=\"text-sm text-text-secondary mb-6 max-w-2xl leading-relaxed\">\n Registered MCP servers and their available tools. Each server exposes tools that can be used by the MCP Tool Designer.\n </p>\n\n <FilterBar>\n <FilterInput\n label=\"Search\"\n value={filters.search}\n onChange={(v) => setFilter('search', v)}\n placeholder=\"Server or tool name...\"\n />\n <FilterSelect\n label=\"Tag\"\n value={filters.tag}\n onChange={(v) => setFilter('tag', v)}\n options={tagOptions}\n />\n <FilterSelect\n label=\"Status\"\n value={filters.status}\n onChange={(v) => setFilter('status', v)}\n options={[\n { value: 'registered', label: 'Registered' },\n { value: 'connected', label: 'Connected' },\n { value: 'error', label: 'Error' },\n { value: 'disconnected', label: 'Disconnected' },\n ]}\n />\n </FilterBar>\n\n <div className={`flex gap-0 ${tryTool ? '' : ''}`}>\n {/* Server list */}\n <div className={`${tryTool ? 'flex-1 min-w-0' : 'w-full'} transition-all`}>\n {filteredServers.length === 0 ? (\n <EmptyState title=\"No servers found\" />\n ) : (\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b\">\n <th className=\"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary\">\n Server / Tool\n </th>\n <th className=\"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28\">\n Status\n </th>\n <th className=\"sticky top-[2.75rem] z-10 bg-surface px-6 py-3 text-left text-[10px] font-semibold uppercase tracking-widest text-text-tertiary w-28\" />\n <th className=\"sticky top-[2.75rem] z-10 bg-surface w-12\" />\n </tr>\n </thead>\n <tbody>\n {filteredServers.map((server) => (\n <ServerRow\n key={server.id}\n server={server}\n expanded={expandedIds.has(server.id)}\n onToggle={() => toggleExpand(server.id)}\n onEdit={() => navigate(`/mcp/servers/${server.id}`)}\n onDelete={() => setConfirmDelete(server)}\n onTryTool={(tool) =>\n setTryTool({\n serverId: server.id,\n serverName: server.name,\n tool,\n })\n }\n connect={connect}\n disconnect={disconnect}\n visibleTools={filterTools(\n (server.tool_manifest ?? []) as McpToolManifest[],\n filters.search,\n )}\n />\n ))}\n </tbody>\n </table>\n )}\n\n <StickyPagination\n page={pagination.page}\n totalPages={pagination.totalPages(total)}\n onPageChange={pagination.setPage}\n total={total}\n pageSize={pagination.pageSize}\n onPageSizeChange={pagination.setPageSize}\n />\n </div>\n\n {/* Test panel — slides in from right */}\n {tryTool && (\n <div className=\"w-[380px] shrink-0 sticky top-0 h-[calc(100vh-12rem)]\">\n <ToolTestPanel\n serverId={tryTool.serverId}\n serverName={tryTool.serverName}\n tool={tryTool.tool}\n onClose={() => setTryTool(null)}\n />\n </div>\n )}\n </div>\n\n {/* Delete confirmation modal */}\n <ConfirmDeleteModal\n open={!!confirmDelete}\n onClose={() => setConfirmDelete(null)}\n onConfirm={handleDelete}\n title=\"Delete MCP Server\"\n description={\n <>\n Delete{' '}\n <span className=\"font-medium text-text-primary\">{confirmDelete?.name}</span>?\n This will remove the server registration.\n </>\n }\n isPending={deleteServer.isPending}\n error={deleteServer.error as Error | null}\n />\n </div>\n );\n}\n"],"names":["ToolErrorDisplay","error","msg","jsxDEV","KeyRound","Link","ExternalLink","ExecutionLink","data","res","jobId","ns","ToolTestPanel","serverId","serverName","tool","onClose","callTool","useCallMcpTool","jsonMode","setJsonMode","useState","fields","setFields","argsJson","setArgsJson","jsonError","setJsonError","executeAs","setExecuteAs","useEffect","skeleton","buildSkeleton","hasResult","toggleMode","handleRun","parsed","X","RunAsSelector","e","key","value","Fragment","RotateCcw","Play","JsonViewer","isBuiltIn","row","_a","_b","matchesSearch","server","search","q","t","filterTools","tools","CredentialDot","credentialProviders","useCredentialStatus","ok","ServerRow","expanded","onToggle","onEdit","onDelete","onTryTool","connect","disconnect","visibleTools","allTools","builtin","ChevronRight","tag","StatusBadge","RowActionGroup","RowAction","Unplug","Plug","Pencil","Trash2","McpServersPage","navigate","useNavigate","filters","setFilter","pagination","useFilterParams","isLoading","useMcpServers","useConnectMcpServer","useDisconnectMcpServer","deleteServer","useDeleteMcpServer","confirmDelete","setConfirmDelete","expandedIds","toggleExpand","useExpandedRows","tryTool","setTryTool","servers","total","tagOptions","useMemo","allTags","s","filteredServers","handleDelete","PageHeader","_","i","FilterBar","FilterInput","v","FilterSelect","EmptyState","StickyPagination","ConfirmDeleteModal"],"mappings":"q6BASA,SAASA,GAAiB,CAAE,MAAAC,GAAkC,CAC5D,MAAMC,EAAMD,aAAiB,MAAQA,EAAM,QAAU,GACrD,OAAIC,EAAI,WAAW,kCAAkC,EAEjDC,EAAAA,OAAC,MAAA,CAAI,UAAU,mGACb,SAAA,CAAAA,SAACC,EAAA,CAAS,KAAM,GAAI,UAAU,qCAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAoE,WACnE,MAAA,CACC,SAAA,CAAAD,SAAC,IAAA,CAAE,UAAU,mDAAmD,SAAA,qBAAA,EAAhE,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAmF,EACnFA,SAAC,IAAA,CAAE,UAAU,uCAAwC,SAAAD,CAAA,EAArD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAyD,EACzDC,EAAAA,OAACE,EAAA,CAAK,GAAG,eAAe,UAAU,yEAAyE,SAAA,CAAA,qBACvFF,EAAAA,OAACG,EAAA,CAAa,KAAM,EAAA,EAApB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwB,CAAA,CAAA,EAD5C,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EALF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAMA,CAAA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,EAIFH,EAAAA,OAAC,OAAI,UAAU,wEACb,kBAAC,IAAA,CAAE,UAAU,gCAAiC,SAAAD,GAAO,kBAAA,EAArD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAwE,CAAA,EAD1E,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAEA,CAEJ,CAEA,SAASK,GAAc,CAAE,KAAAC,GAA2B,CAClD,MAAMC,EAAOD,GAAA,YAAAA,EAAc,OACrBE,EAAQD,GAAA,YAAAA,EAAK,OACbE,GAAKF,GAAA,YAAAA,EAAK,YAAa,WAC7B,OAAKC,EAEHP,EAAAA,OAACE,EAAA,CACC,GAAI,mBAAmB,mBAAmBK,CAAK,CAAC,cAAc,mBAAmBC,CAAE,CAAC,GACpF,UAAU,uEAEV,SAAA,CAAAR,EAAAA,OAACG,EAAA,CAAa,KAAM,EAAA,EAApB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAwB,EAAE,gBAAA,CAAA,EAJ5B,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EAFiB,IAUrB,CASO,SAASM,GAAc,CAAE,SAAAC,EAAU,WAAAC,EAAY,KAAAC,EAAM,QAAAC,GAA+B,CACzF,MAAMC,EAAWC,EAAA,EACX,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAS,EAAK,EACxC,CAACC,EAAQC,CAAS,EAAIF,EAAAA,SAA8B,CAAA,CAAE,EACtD,CAACG,EAAUC,CAAW,EAAIJ,EAAAA,SAAS,EAAE,EACrC,CAACK,EAAWC,CAAY,EAAIN,EAAAA,SAAS,EAAE,EACvC,CAACO,EAAWC,CAAY,EAAIR,EAAAA,SAAS,EAAE,EAE7CS,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAWC,EAAcjB,EAAK,WAAW,EAC/CQ,EAAUQ,CAAQ,EAClBN,EAAY,KAAK,UAAUM,EAAU,KAAM,CAAC,CAAC,EAC7CX,EAAY,EAAK,EACjBO,EAAa,EAAE,EACfV,EAAS,MAAA,CACX,EAAG,CAACF,EAAK,KAAMF,CAAQ,CAAC,EAExB,MAAMoB,EAAY,CAAC,CAAChB,EAAS,MAAQ,CAAC,CAACA,EAAS,MAE1CiB,EAAa,IAAM,CACvB,GAAI,CAACf,EACHM,EAAY,KAAK,UAAUH,EAAQ,KAAM,CAAC,CAAC,MAE3C,IAAI,CAAEC,EAAU,KAAK,MAAMC,CAAQ,CAAC,CAAG,MAAQ,CAAoB,CAErEJ,EAAY,CAACD,CAAQ,CACvB,EAEMgB,EAAY,IAAM,CACtBR,EAAa,EAAE,EACfV,EAAS,MAAA,EACT,IAAImB,EACJ,GAAIjB,EACF,GAAI,CAAEiB,EAAS,KAAK,MAAMZ,CAAQ,CAAG,MAAQ,CAAEG,EAAa,cAAc,EAAG,MAAQ,MAErFS,EAAS,CAAE,GAAGd,CAAA,EAEhBL,EAAS,OAAO,CACd,SAAAJ,EACA,SAAUE,EAAK,KACf,UAAWqB,EACX,GAAIR,EAAY,CAAE,WAAYA,GAAc,CAAA,CAAC,CAC9C,CACH,EAEA,OACEzB,EAAAA,OAAC,MAAA,CAAI,UAAU,wEAEb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,sFACb,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,UACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,iDAAkD,SAAAW,CAAA,EAA/D,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA0E,EAC1EX,SAAC,OAAA,CAAK,UAAU,mDAAoD,WAAK,IAAA,EAAzE,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA8E,CAAA,CAAA,EAFhF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAGA,EACAA,EAAAA,OAAC,UAAO,QAASa,EAAS,UAAU,+DAClC,SAAAb,EAAAA,OAACkC,EAAA,CAAE,UAAU,SAAA,EAAb,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAuB,CAAA,EADzB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,CAAA,CAAA,EAPF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAQA,EAGAlC,EAAAA,OAAC,MAAA,CAAI,UAAU,6CACb,SAAA,CAAAA,SAACmC,EAAA,CAAc,SAAUV,EAAW,SAAUC,CAAA,EAA9C,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAA4D,EAE3Dd,EAAK,aACJZ,SAAC,KAAE,UAAU,kDAAmD,WAAK,aAArE,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiF,WAIlF,MAAA,CACC,SAAA,CAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,yEAAyE,SAAA,SAAA,EAA1F,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAiG,EACjGA,EAAAA,OAAC,UAAO,QAAS+B,EAAY,UAAU,0CACpC,SAAAf,EAAW,YAAc,WAAA,EAD5B,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAKA,EAECA,EACChB,EAAAA,OAAC,WAAA,CACC,MAAOqB,EACP,SAAWe,GAAMd,EAAYc,EAAE,OAAO,KAAK,EAC3C,UAAU,yMACV,KAAM,EACN,WAAY,EAAA,EALd,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAQApC,EAAAA,OAAC,MAAA,CAAI,UAAU,0CACZ,SAAA,CAAA,OAAO,QAAQmB,CAAM,EAAE,IAAI,CAAC,CAACkB,EAAKC,CAAK,IACtCtC,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,QAAA,CAAM,UAAU,oFAAqF,SAAAqC,CAAA,EAAtG,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA0G,EACzG,OAAOC,GAAU,UAChBtC,EAAAA,OAAC,SAAA,CACC,MAAO,OAAOsC,CAAK,EACnB,SAAWF,GAAMhB,EAAU,CAAE,GAAGD,EAAQ,CAACkB,CAAG,EAAGD,EAAE,OAAO,QAAU,OAAQ,EAC1E,UAAU,oLAEV,SAAA,CAAApC,SAAC,SAAA,CAAO,MAAM,OAAO,SAAA,MAAA,EAArB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyB,EACzBA,SAAC,SAAA,CAAO,MAAM,QAAQ,SAAA,OAAA,EAAtB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA2B,CAAA,CAAA,EAN7B,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAQE,OAAOsC,GAAU,SACnBtC,EAAAA,OAAC,WAAA,CACC,MAAO,KAAK,UAAUsC,EAAO,KAAM,CAAC,EACpC,SAAWF,GAAM,CAAE,GAAI,CAAEhB,EAAU,CAAE,GAAGD,EAAQ,CAACkB,CAAG,EAAG,KAAK,MAAMD,EAAE,OAAO,KAAK,EAAG,CAAG,MAAQ,CAAgB,CAAE,EAChH,UAAU,mNAAA,EAHZ,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAMApC,EAAAA,OAAC,QAAA,CACC,KAAM,OAAOsC,GAAU,SAAW,SAAW,OAC7C,MAAO,OAAOA,GAAS,EAAE,EACzB,SAAWF,GAAMhB,EAAU,CAAE,GAAGD,EAAQ,CAACkB,CAAG,EAAG,OAAOC,GAAU,SAAW,OAAOF,EAAE,OAAO,KAAK,EAAIA,EAAE,OAAO,MAAO,EACpH,UAAU,mLAAA,EAJZ,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EAvBMC,EAAV,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAyBA,CACD,EACA,OAAO,KAAKlB,CAAM,EAAE,SAAW,GAC9BnB,EAAAA,OAAC,IAAA,CAAE,UAAU,wCAAwC,SAAA,yBAAA,EAArD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA4E,CAAA,CAAA,EA9BhF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAgCA,EAEDuB,GAAavB,EAAAA,OAAC,IAAA,CAAE,UAAU,qCAAsC,SAAAuB,CAAA,EAAnD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA6D,CAAA,CAAA,EAnD7E,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAoDA,EAGAvB,EAAAA,OAAC,SAAA,CACC,QAASgC,EACT,SAAUlB,EAAS,UACnB,UAAU,2EAET,SAAAA,EAAS,UACR,aACEgB,EACF9B,SAAAuC,EAAAA,SAAA,CAAE,SAAA,CAAAvC,EAAAA,OAACwC,EAAA,CAAU,KAAM,EAAA,EAAjB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqB,EAAE,SAAA,CAAA,EAAzB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgC,EAEhCxC,EAAAA,OAAAuC,EAAAA,SAAA,CAAE,SAAA,CAAAvC,EAAAA,OAACyC,EAAA,CAAK,KAAM,EAAA,EAAZ,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAgB,EAAE,MAAA,CAAA,EAApB,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAwB,CAAA,EAV5B,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAeC3B,EAAS,WACRd,SAAC,MAAA,CAAI,UAAU,gBACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,8EAA8E,SAAA,UAAA,EAA3F,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmG,EACnGA,EAAAA,OAAC,MAAA,CAAI,UAAU,mCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmD,CAAA,CAAA,EAFrD,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,EAEDc,EAAS,KACRd,SAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAA,EAAAA,OAAC0C,GAAW,KAAM5B,EAAS,KAAiC,MAAM,WAAW,iBAAgB,IAA7F,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA8F,EAC9Fd,EAAAA,OAACI,GAAA,CAAc,KAAMU,EAAS,IAAA,EAA9B,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoC,CAAA,CAAA,EAFtC,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,EACE,KACHA,EAAS,MACRd,EAAAA,OAAC,MAAA,CACC,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,8EAA8E,SAAA,UAAA,EAA3F,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmG,EACnGA,EAAAA,OAACH,GAAA,CAAiB,MAAOiB,EAAS,KAAA,EAAlC,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyD,CAAA,CAAA,EAF3D,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAGA,EACE,IAAA,CAAA,EA/FN,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAgGA,CAAA,CAAA,EA7GF,OAAA,GAAA,CAAA,SAAA,8DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IA8GA,CAEJ,CCnNO,SAAS6B,GAAUC,EAA+B,SACvD,MAAO,CAAC,GAAEC,EAAAD,EAAI,WAAJ,MAAAC,EAAiD,UACtD,CAAC,GAAEC,EAAAF,EAAI,mBAAJ,MAAAE,EAAyD,QACnE,CAGO,SAASC,GAAcC,EAAyBC,EAAyB,OAC9E,GAAI,CAACA,EAAQ,MAAO,GACpB,MAAMC,EAAID,EAAO,YAAA,EAGjB,OAFID,EAAO,KAAK,YAAA,EAAc,SAASE,CAAC,IACpCL,EAAAG,EAAO,cAAP,MAAAH,EAAoB,cAAc,SAASK,KAC1CF,EAAO,MAAQ,CAAA,GAAI,KAAMG,GAAMA,EAAE,YAAA,EAAc,SAASD,CAAC,CAAC,EAAU,IAC1DF,EAAO,eAAiB,CAAA,GAC1B,KACVG,GAAA,OAAM,OAAAA,EAAE,KAAK,cAAc,SAASD,CAAC,KAAKL,EAAAM,EAAE,cAAF,YAAAN,EAAe,cAAc,SAASK,IAAC,CAEtF,CAGO,SAASE,GAAYC,EAA0BJ,EAAmC,CACvF,GAAI,CAACA,EAAQ,OAAOI,EACpB,MAAMH,EAAID,EAAO,YAAA,EACjB,OAAOI,EAAM,OACVF,GAAA,OAAM,OAAAA,EAAE,KAAK,cAAc,SAASD,CAAC,KAAKL,EAAAM,EAAE,cAAF,YAAAN,EAAe,cAAc,SAASK,IAAC,CAEtF,CCfA,SAASI,GAAc,CAAE,SAAA5C,EAAU,oBAAA6C,GAA4E,CAC7G,KAAM,CAAE,KAAAlD,CAAA,EAASmD,EAAoB9C,CAAQ,EAE7C,GADI6C,EAAoB,SAAW,GAC/B,CAAClD,EAAM,OAAO,KAClB,MAAMoD,EAAKpD,EAAK,QAAQ,SAAW,EACnC,OACEL,EAAAA,OAAC,OAAA,CACC,UAAW,8CAA8CyD,EAAK,oBAAsB,mBAAmB,GACvG,MAAOA,EAAK,6BAA+B,YAAYpD,EAAK,QAAQ,KAAK,IAAI,CAAC,EAAA,EAFhF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,CAKJ,CAEO,SAASqD,GAAU,CACxB,OAAAV,EACA,SAAAW,EACA,SAAAC,EACA,OAAAC,EACA,SAAAC,EACA,UAAAC,EACA,QAAAC,EACA,WAAAC,EACA,aAAAC,CACF,EAUG,CACD,MAAMC,EAAYnB,EAAO,eAAiB,CAAA,EACpCoB,EAAUzB,GAAUK,CAAM,EAEhC,OACEhD,EAAAA,OAAAuC,WAAA,CAEE,SAAA,CAAAvC,EAAAA,OAAC,KAAA,CACC,QAASmE,EAAS,OAAS,EAAIP,EAAW,OAC1C,UAAW,qDACTO,EAAS,OAAS,EAAI,2BAA6B,EACrD,GAGA,SAAA,CAAAnE,EAAAA,OAAC,MAAG,UAAU,cACZ,SAAAA,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAAC,QAAK,UAAW,qCAAqC2D,EAAW,YAAc,EAAE,IAAIQ,EAAS,SAAW,EAAI,YAAc,oBAAoB,GAC7I,SAAAnE,EAAAA,OAACqE,EAAA,CAAa,KAAM,IAApB,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAwB,CAAA,EAD1B,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,EACArE,EAAAA,OAAC,MAAA,CAAI,UAAU,UACb,SAAA,CAAAA,SAAC,IAAA,CAAE,UAAU,wCAAyC,SAAAgD,EAAO,IAAA,EAA7D,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAkE,GAChEA,EAAO,MAAQ,CAAA,GAAI,OAAS,GAC5BhD,EAAAA,OAAC,MAAA,CAAI,UAAU,8BACZ,SAAAgD,EAAO,KAAK,IAAKsB,GAChBtE,EAAAA,OAAC,OAAA,CAEC,UAAU,+FAET,SAAAsE,CAAA,EAHIA,EADP,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,CAMD,CAAA,EARH,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IASA,CAAA,CAAA,EAZJ,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAcA,CAAA,CAAA,EAlBF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAmBA,CAAA,EApBF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAqBA,WAGC,KAAA,CAAG,UAAU,mBACZ,SAAAtE,EAAAA,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAA,EAAAA,OAACuE,GAAA,CAAY,OAAQvB,EAAO,MAAA,EAA5B,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAoC,EACpChD,EAAAA,OAACsD,IAAc,SAAUN,EAAO,GAAI,oBAAqBA,EAAO,sBAAwB,CAAA,GAAxF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAA4F,CAAA,CAAA,EAF9F,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAGA,CAAA,EAJF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAKA,EAGAhD,SAAC,KAAA,CAAG,UAAU,mBACZ,kBAACwE,GAAA,CACE,SAAA,CAAA,CAACJ,IACApB,EAAO,SAAW,YAChBhD,EAAAA,OAACyE,EAAA,CACC,KAAMC,EACN,MAAM,oBACN,QAAS,IAAMT,EAAW,OAAOjB,EAAO,EAAE,CAAA,EAH5C,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAA,EAMAhD,EAAAA,OAACyE,EAAA,CACC,KAAME,GACN,MAAM,iBACN,QAAS,IAAMX,EAAQ,OAAOhB,EAAO,EAAE,EACvC,WAAW,8CAAA,EAJb,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,GAQJhD,EAAAA,OAACyE,EAAA,CACC,KAAMG,GACN,MAAM,cACN,QAASf,CAAA,EAHX,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,EAKC,CAACO,GACApE,EAAAA,OAACyE,EAAA,CACC,KAAMI,GACN,MAAM,gBACN,QAASf,EACT,WAAW,4CAAA,EAJb,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,CAAA,EA5BJ,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IA8BA,CAAA,EA/BF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAgCA,EAGA9D,EAAAA,OAAC,MAAG,UAAU,mBACZ,kBAAC,OAAA,CAAK,UAAU,2HACb,SAAAmE,EAAS,MAAA,EADZ,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,CAAA,EAHF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAIA,CAAA,CAAA,EA9EF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAA,EAkFCD,EAAa,OAAS,GACrBlE,EAAAA,OAAC,KAAA,CACC,kBAAC,KAAA,CAAG,QAAS,EAAG,UAAU,eACxB,SAAAA,EAAAA,OAAC,MAAA,CACC,UAAU,gEACV,MAAO,CAAE,iBAAkB2D,EAAW,MAAQ,KAAA,EAE9C,SAAA3D,EAAAA,OAAC,MAAA,CAAI,UAAU,kBACZ,SAAA,CAAAkE,EAAa,IAAKtD,GACjBZ,EAAAA,OAAC,MAAA,CAEC,QAAS,IAAM+D,EAAUnD,CAAI,EAC7B,UAAU,2HAGV,SAAA,CAAAZ,EAAAA,OAAC,MAAA,CAAI,UAAU,iCACb,SAAA,CAAAA,SAAC,OAAA,CAAK,UAAU,wCAAyC,SAAAY,EAAK,IAAA,EAA9D,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAmE,EAClEA,EAAK,aACJZ,SAAC,KAAE,UAAU,qDAAsD,WAAK,aAAxE,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAoF,CAAA,CAAA,EAHxF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAKA,EAEAA,EAAAA,OAAC,MAAA,CAAI,UAAU,yBAAA,EAAf,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAyC,EAEzCA,EAAAA,OAAC,MAAA,CAAI,UAAU,2CACb,SAAAA,EAAAA,OAAC,SAAA,CACC,QAAUoC,GAAM,CAAEA,EAAE,gBAAA,EAAmB2B,EAAUnD,CAAI,CAAG,EACxD,UAAU,gGACV,MAAM,WAEN,SAAAZ,EAAAA,OAACyC,EAAA,CAAK,UAAU,oBAAoB,YAAa,GAAA,EAAjD,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAsD,CAAA,EALxD,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAMA,EAPF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAQA,CAAA,CAAA,EAtBK7B,EAAK,KADZ,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAyBD,EACDZ,EAAAA,OAAC,MAAA,CAAI,UAAU,0BAAA,EAAf,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA0C,CAAA,CAAA,EA5B5C,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IA6BA,CAAA,EAjCF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAkCA,EAnCF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAoCA,CAAA,EArCF,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAsCA,CAAA,CAAA,EA3HJ,OAAA,GAAA,CAAA,SAAA,qDAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IA6HA,CAEJ,CC7JO,SAAS8E,IAAiB,CAC/B,MAAMC,EAAWC,GAAA,EACX,CAAE,QAAAC,EAAS,UAAAC,EAAW,WAAAC,CAAA,EAAeC,EAAgB,CACzD,QAAS,CAAE,OAAQ,GAAI,OAAQ,GAAI,IAAK,EAAA,CAAG,CAC5C,EAEK,CAAE,KAAA/E,EAAM,UAAAgF,CAAA,EAAcC,EAAc,CACxC,OAAQL,EAAQ,QAAU,OAC1B,OAAQA,EAAQ,QAAU,OAC1B,KAAMA,EAAQ,KAAO,MAAA,CACtB,EACKjB,EAAUuB,EAAA,EACVtB,EAAauB,EAAA,EACbC,EAAeC,EAAA,EAEf,CAACC,EAAeC,CAAgB,EAAI1E,EAAAA,SAAiC,IAAI,EACzE,CAAE,YAAA2E,EAAa,OAAQC,CAAA,EAAiBC,EAAgB,yBAAyB,EACjF,CAACC,EAASC,CAAU,EAAI/E,EAAAA,SAIpB,IAAI,EAERgF,GAAU7F,GAAA,YAAAA,EAAM,UAAW,CAAA,EAC3B8F,GAAQ9F,GAAA,YAAAA,EAAM,QAAS,EAGvB+F,EAAaC,EAAAA,QAAQ,IAAM,CAC/B,MAAMC,MAAc,IACpB,UAAWC,KAAKL,EACd,UAAW/C,KAAKoD,EAAE,MAAQ,CAAA,EAAID,EAAQ,IAAInD,CAAC,EAE7C,MAAO,CAAC,GAAGmD,CAAO,EAAE,OAAO,IAAKnD,IAAO,CAAE,MAAOA,EAAG,MAAOA,GAAI,CAChE,EAAG,CAAC+C,CAAO,CAAC,EAGNM,EAAkBH,EAAAA,QAAQ,IACzBpB,EAAQ,OACNiB,EAAQ,OAAQK,GAAMxD,GAAcwD,EAAGtB,EAAQ,MAAM,CAAC,EADjCiB,EAE3B,CAACA,EAASjB,EAAQ,MAAM,CAAC,EAG5BtD,EAAAA,UAAU,IAAM,CACd,GAAI,CAACsD,EAAQ,OAAQ,OACrB,MAAM/B,EAAI+B,EAAQ,OAAO,YAAA,EACzB,UAAWsB,KAAKC,GACCD,EAAE,eAAiB,CAAA,GACP,KACxBpD,GAAA,OAAM,OAAAA,EAAE,KAAK,cAAc,SAASD,CAAC,KAAKL,EAAAM,EAAE,cAAF,YAAAN,EAAe,cAAc,SAASK,IAAC,GAEhE,CAAC2C,EAAY,IAAIU,EAAE,EAAE,GACvCT,EAAaS,EAAE,EAAE,CAGvB,EAAG,CAACtB,EAAQ,OAAQuB,CAAe,CAAC,EAEpC,MAAMC,EAAe,IAAM,CACpBd,GACLF,EAAa,OAAOE,EAAc,GAAI,CACpC,UAAW,IAAMC,EAAiB,IAAI,CAAA,CACvC,CACH,EAEA,OAAIP,WAEC,MAAA,CACC,SAAA,CAAArF,EAAAA,OAAC0G,EAAA,CAAW,MAAM,kBAAA,EAAlB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAAqC,EACrC1G,EAAAA,OAAC,OAAI,UAAU,0BACZ,eAAM,KAAK,CAAE,OAAQ,EAAG,EAAE,IAAI,CAAC2G,EAAGC,IACjC5G,EAAAA,OAAC,MAAA,CAAY,UAAU,uDACrB,SAAAA,SAAC,MAAA,CAAI,UAAU,sCAAA,EAAf,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAAsD,GAD9C4G,EAAV,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,EAAA,EAAA,IAEA,CACD,GALH,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IAMA,CAAA,CAAA,EARF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,GAAA,aAAA,CAAA,EAAA,IASA,WAKD,MAAA,CACC,SAAA,CAAA5G,EAAAA,OAAC0G,EAAA,CACC,MAAM,mBACN,QACE1G,EAAAA,OAAC,SAAA,CACC,QAAS,IAAM+E,EAAS,kBAAkB,EAC1C,UAAU,sBACX,SAAA,iBAAA,EAHD,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,EARJ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAYA/E,SAAC,IAAA,CAAE,UAAU,6DAA6D,SAAA,wHAAA,EAA1E,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAEA,WAEC6G,EAAA,CACC,SAAA,CAAA7G,EAAAA,OAAC8G,EAAA,CACC,MAAM,SACN,MAAO7B,EAAQ,OACf,SAAW8B,GAAM7B,EAAU,SAAU6B,CAAC,EACtC,YAAY,wBAAA,EAJd,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAMA/G,EAAAA,OAACgH,EAAA,CACC,MAAM,MACN,MAAO/B,EAAQ,IACf,SAAW8B,GAAM7B,EAAU,MAAO6B,CAAC,EACnC,QAASX,CAAA,EAJX,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,EAMApG,EAAAA,OAACgH,EAAA,CACC,MAAM,SACN,MAAO/B,EAAQ,OACf,SAAW8B,GAAM7B,EAAU,SAAU6B,CAAC,EACtC,QAAS,CACP,CAAE,MAAO,aAAc,MAAO,YAAA,EAC9B,CAAE,MAAO,YAAa,MAAO,WAAA,EAC7B,CAAE,MAAO,QAAS,MAAO,OAAA,EACzB,CAAE,MAAO,eAAgB,MAAO,cAAA,CAAe,CACjD,EATF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAUA,CAAA,EAvBF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAwBA,WAEC,MAAA,CAAI,UAAW,cAEd,SAAA,CAAA/G,SAAC,OAAI,UAAW,GAAGgG,EAAU,iBAAmB,QAAQ,kBACrD,SAAA,CAAAQ,EAAgB,SAAW,EAC1BxG,SAACiH,EAAA,CAAW,MAAM,kBAAA,EAAlB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqC,EAErCjH,SAAC,QAAA,CAAM,UAAU,SACf,SAAA,CAAAA,SAAC,QAAA,CACC,SAAAA,EAAAA,OAAC,KAAA,CAAG,UAAU,WACZ,SAAA,CAAAA,SAAC,KAAA,CAAG,UAAU,kIAAkI,SAAA,eAAA,EAAhJ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAA,SAAC,KAAA,CAAG,UAAU,uIAAuI,SAAA,QAAA,EAArJ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAEA,EACAA,EAAAA,OAAC,KAAA,CAAG,UAAU,sIAAA,EAAd,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqJ,EACrJA,EAAAA,OAAC,KAAA,CAAG,UAAU,2CAAA,EAAd,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAA0D,CAAA,CAAA,EAR5D,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IASA,CAAA,EAVF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAWA,EACAA,EAAAA,OAAC,QAAA,CACE,SAAAwG,EAAgB,IAAKxD,GACpBhD,EAAAA,OAAC0D,GAAA,CAEC,OAAAV,EACA,SAAU6C,EAAY,IAAI7C,EAAO,EAAE,EACnC,SAAU,IAAM8C,EAAa9C,EAAO,EAAE,EACtC,OAAQ,IAAM+B,EAAS,gBAAgB/B,EAAO,EAAE,EAAE,EAClD,SAAU,IAAM4C,EAAiB5C,CAAM,EACvC,UAAYpC,GACVqF,EAAW,CACT,SAAUjD,EAAO,GACjB,WAAYA,EAAO,KACnB,KAAApC,CAAA,CACD,EAEH,QAAAoD,EACA,WAAAC,EACA,aAAcb,GACXJ,EAAO,eAAiB,CAAA,EACzBiC,EAAQ,MAAA,CACV,EAlBKjC,EAAO,GADd,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAqBD,CAAA,EAvBH,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAwBA,CAAA,CAAA,EArCF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAsCA,EAGFhD,EAAAA,OAACkH,EAAA,CACC,KAAM/B,EAAW,KACjB,WAAYA,EAAW,WAAWgB,CAAK,EACvC,aAAchB,EAAW,QACzB,MAAAgB,EACA,SAAUhB,EAAW,SACrB,iBAAkBA,EAAW,WAAA,EAN/B,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAOA,CAAA,EApDF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAqDA,EAGCa,GACChG,EAAAA,OAAC,MAAA,CAAI,UAAU,wDACb,SAAAA,EAAAA,OAACS,GAAA,CACC,SAAUuF,EAAQ,SAClB,WAAYA,EAAQ,WACpB,KAAMA,EAAQ,KACd,QAAS,IAAMC,EAAW,IAAI,CAAA,EAJhC,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAA,CAKA,EANF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAOA,CAAA,CAAA,EAlEJ,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAoEA,EAGAjG,EAAAA,OAACmH,EAAA,CACC,KAAM,CAAC,CAACxB,EACR,QAAS,IAAMC,EAAiB,IAAI,EACpC,UAAWa,EACX,MAAM,oBACN,YACEzG,EAAAA,OAAAuC,WAAA,CAAE,SAAA,CAAA,SACO,IACPvC,SAAC,OAAA,CAAK,UAAU,gCAAiC,0BAAe,IAAA,EAAhE,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAAqE,EAAO,6CAAA,CAAA,EAF9E,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,EAAA,EAAA,IAIA,EAEF,UAAWyF,EAAa,UACxB,MAAOA,EAAa,KAAA,EAbtB,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAAA,CAcA,CAAA,EAhIF,OAAA,GAAA,CAAA,SAAA,0DAAA,WAAA,IAAA,aAAA,CAAA,EAAA,IAiIA,CAEJ"}
@@ -0,0 +1 @@
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-5{margin-bottom:1.25rem}.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}.aspect-square{aspect-ratio:1 / 1}.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-220px\)\]{max-height:calc(100vh - 220px)}.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-\[28px\]{min-height:28px}.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\/2{width:50%}.w-1\/3{width:33.333333%}.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-\[120px\]{width:120px}.w-\[14px\]{width:14px}.w-\[15px\]{width:15px}.w-\[16rem\]{width:16rem}.w-\[18px\]{width:18px}.w-\[200px\]{width:200px}.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-\[120px\]{min-width:120px}.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-\[160px\]{max-width:160px}.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}.border-collapse{border-collapse:collapse}.-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-0{--tw-rotate: 0deg;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}.resize{resize:both}.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-6{grid-template-columns:repeat(6,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-accent\/40{border-color:#6c47ff66}.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))}.border-r-surface-border{--tw-border-opacity: 1;border-right-color:rgb(224 218 240 / var(--tw-border-opacity, 1))}.border-r-transparent{border-right-color:transparent}.\!bg-status-error{--tw-bg-opacity: 1 !important;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))!important}.bg-\[\#6C47FF\]{--tw-bg-opacity: 1;background-color:rgb(108 71 255 / var(--tw-bg-opacity, 1))}.bg-\[a-z\]{background-color:a-z}.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-300\/\[0\.08\]{background-color:#fcd34d14}.bg-amber-400\/\[0\.08\]{background-color:#fbbf2414}.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-400\/\[0\.08\]{background-color:#60a5fa14}.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-cyan-400\/\[0\.08\]{background-color:#22d3ee14}.bg-emerald-400\/\[0\.08\]{background-color:#34d39914}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-fuchsia-400\/\[0\.08\]{background-color:#e879f914}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-green-400\/\[0\.08\]{background-color:#4ade8014}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-indigo-400\/\[0\.08\]{background-color:#818cf814}.bg-lime-400\/\[0\.08\]{background-color:#a3e63514}.bg-orange-400\/\[0\.08\]{background-color:#fb923c14}.bg-pink-300\/\[0\.08\]{background-color:#f9a8d414}.bg-pink-400\/\[0\.08\]{background-color:#f472b614}.bg-purple-400\/\[0\.08\]{background-color:#c084fc14}.bg-purple-500\/10{background-color:#a855f71a}.bg-red-400\/\[0\.08\]{background-color:#f8717114}.bg-rose-300\/\[0\.08\]{background-color:#fda4af14}.bg-rose-400\/\[0\.08\]{background-color:#fb718514}.bg-sky-300\/\[0\.08\]{background-color:#7dd3fc14}.bg-sky-400\/\[0\.08\]{background-color:#38bdf814}.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-stone-400\/\[0\.08\]{background-color:#a8a29e14}.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-teal-300\/\[0\.08\]{background-color:#5eead414}.bg-teal-400\/\[0\.08\]{background-color:#2dd4bf14}.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-text-tertiary\/40{background-color:#918aab66}.bg-transparent{background-color:transparent}.bg-violet-300\/\[0\.08\]{background-color:#c4b5fd14}.bg-violet-400\/\[0\.08\]{background-color:#a78bfa14}.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))}.bg-yellow-400\/\[0\.08\]{background-color:#facc1514}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.from-accent\/\[0\.04\]{--tw-gradient-from: rgb(108 71 255 / .04) var(--tw-gradient-from-position);--tw-gradient-to: rgb(108 71 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.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}.object-cover{-o-object-fit:cover;object-fit:cover}.object-top{-o-object-position:top;object-position:top}.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-2{padding-left:.5rem!important;padding-right:.5rem!important}.\!px-2\.5{padding-left:.625rem!important;padding-right:.625rem!important}.\!py-0\.5{padding-top:.125rem!important;padding-bottom:.125rem!important}.\!py-1\.5{padding-top:.375rem!important;padding-bottom:.375rem!important}.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-2{padding-right:.5rem}.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-0\.5{padding-top:.125rem}.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-5{padding-top:1.25rem}.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}.align-top{vertical-align:top}.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-\[a-z\]{color:a-z}.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-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.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-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-fuchsia-400{--tw-text-opacity: 1;color:rgb(232 121 249 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.text-lime-400{--tw-text-opacity: 1;color:rgb(163 230 53 / var(--tw-text-opacity, 1))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-pink-300{--tw-text-opacity: 1;color:rgb(249 168 212 / var(--tw-text-opacity, 1))}.text-pink-400{--tw-text-opacity: 1;color:rgb(244 114 182 / var(--tw-text-opacity, 1))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-rose-300{--tw-text-opacity: 1;color:rgb(253 164 175 / var(--tw-text-opacity, 1))}.text-rose-400{--tw-text-opacity: 1;color:rgb(251 113 133 / var(--tw-text-opacity, 1))}.text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.text-sky-400{--tw-text-opacity: 1;color:rgb(56 189 248 / 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\/50{color:#dc262680}.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-stone-400{--tw-text-opacity: 1;color:rgb(168 162 158 / var(--tw-text-opacity, 1))}.text-surface-border{--tw-text-opacity: 1;color:rgb(224 218 240 / var(--tw-text-opacity, 1))}.text-teal-300{--tw-text-opacity: 1;color:rgb(94 234 212 / var(--tw-text-opacity, 1))}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / 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-300{--tw-text-opacity: 1;color:rgb(196 181 253 / var(--tw-text-opacity, 1))}.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))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / 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-accent\/40{--tw-ring-color: rgb(108 71 255 / .4)}.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\:italic::-moz-placeholder{font-style:italic}.placeholder\:italic::placeholder{font-style:italic}.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))}.placeholder\:text-text-tertiary\/40::-moz-placeholder{color:#918aab66}.placeholder\:text-text-tertiary\/40::placeholder{color:#918aab66}.placeholder\:text-text-tertiary\/50::-moz-placeholder{color:#918aab80}.placeholder\:text-text-tertiary\/50::placeholder{color:#918aab80}.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-status-error\/90:hover{background-color:#dc2626e6!important}.hover\:bg-accent-muted:hover{--tw-bg-opacity: 1;background-color:rgb(200 190 240 / var(--tw-bg-opacity, 1))}.hover\:bg-accent\/10:hover{background-color:#6c47ff1a}.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\/30:hover{background-color:#f7f4ff4d}.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-error\/80:hover{color:#dc2626cc}.hover\:text-status-success:hover{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.hover\:text-status-success\/80:hover{color:#16a34acc}.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\:text-text-tertiary{--tw-text-opacity: 1;color:rgb(145 138 171 / 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))}.md\:grid-cols-4{grid-template-columns:repeat(4,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-5{grid-template-columns:repeat(5,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,6 +1,6 @@
1
- import{j as e,S as D,i as T}from"./index-Cmgrk7PQ.js";import{a as f}from"./vendor-query-DLp59M9_.js";import{c as R,d as $,b as A,u as q,e as B,f as z}from"./workflows-yR9yais7.js";import{P as H}from"./PageHeader-Cm5HBQF_.js";import{P as U,$ as G,a3 as K,S as Q,e as X,a4 as I,a5 as Y}from"./vendor-icons-AFGxSeQS.js";import{B as Z}from"./BotPicker-B8Uvw9Si.js";import{L as ee,c as F,f as se}from"./vendor-react-Co3Y8ikm.js";import{D as ae}from"./DataTable-DkOokbtL.js";import{e as te,d as M,C as re,j as oe}from"./helpers-ZSKqdkdS.js";import"./bots-DPfUpVqI.js";import"./EmptyState-C7KIMIbE.js";import"./TimeAgo-DgfDZ1pl.js";import"./StatusBadge-CakDdsCw.js";function le({mode:s,onChange:r}){const h=(o,a,u)=>e.jsxDEV("button",{onClick:()=>r(o),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors ${s===o?"bg-accent/10 text-accent font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-surface-hover"}`,children:[a,u]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.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:[h("now",e.jsxDEV(U,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:22,columnNumber:19},this),"Start Now"),h("schedule",e.jsxDEV(G,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:23,columnNumber:24},this),"Schedule")]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:21,columnNumber:5},this)}function ie({configs:s,selectedType:r,onSelect:h,tierMap:o}){return e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-6",children:"Select Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:19,columnNumber:7},this),e.jsxDEV("div",{children:s.map(a=>{const u=r===a.workflow_type,m=o.get(a.workflow_type)??"durable";return e.jsxDEV("button",{onClick:()=>h(a),className:`w-full text-left py-4 border-b border-surface-border transition-colors duration-150 ${u?"border-l-2 border-l-accent pl-4":"pl-0 hover:text-text-primary"}`,children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[m==="certified"&&e.jsxDEV(K,{className:"w-3.5 h-3.5 shrink-0 text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:35,columnNumber:42},this),m==="configured"&&e.jsxDEV(Q,{className:"w-3.5 h-3.5 shrink-0 text-status-info"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:36,columnNumber:43},this),m==="durable"&&e.jsxDEV(X,{className:"w-3.5 h-3.5 shrink-0 text-accent/75"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:37,columnNumber:40},this),e.jsxDEV("p",{className:`text-sm font-mono ${u?"font-medium text-accent":"text-text-secondary"}`,children:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:38,columnNumber:17},this),a.execute_as&&e.jsxDEV("span",{className:"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-[9px] bg-accent/10 text-accent rounded",children:[e.jsxDEV(I,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:43,columnNumber:21},this),a.execute_as]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:42,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:34,columnNumber:15},this),a.description&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary mt-1 leading-relaxed",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:49,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1 opacity-60",children:a.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:53,columnNumber:15},this)]},a.workflow_type,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:25,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:20,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:18,columnNumber:5},this)}function L({children:s,className:r=""}){return e.jsxDEV("span",{className:`px-2 py-0.5 text-[10px] bg-surface-sunken rounded-full text-text-secondary ${r}`,children:s},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Pill.tsx",lineNumber:10,columnNumber:5},this)}const C=`{
1
+ import{j as e,S as D,i as T}from"./index-sNrqYt0Q.js";import{a as f}from"./vendor-query-DLp59M9_.js";import{c as R,d as $,b as A,u as q,e as B,f as z}from"./workflows-BkzA4ahe.js";import{P as H}from"./PageHeader-FJIemmrC.js";import{P as U,$ as G,a3 as K,S as Q,d as X,a4 as I,a5 as Y}from"./vendor-icons-CWl44VA6.js";import{B as Z}from"./BotPicker-DcvILNUf.js";import{L as ee,c as F,f as se}from"./vendor-react-Co3Y8ikm.js";import{D as ae}from"./DataTable-bd2PTBJd.js";import{e as te,d as M,C as re,j as oe}from"./helpers-CQG3Rh2y.js";import"./bots-fc_O_YIq.js";import"./EmptyState-BygtU-Rh.js";import"./TimeAgo-DJZq-e4R.js";import"./StatusBadge-DVCf2ncM.js";function le({mode:s,onChange:r}){const h=(o,a,u)=>e.jsxDEV("button",{onClick:()=>r(o),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors ${s===o?"bg-accent/10 text-accent font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-surface-hover"}`,children:[a,u]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.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:[h("now",e.jsxDEV(U,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:22,columnNumber:19},this),"Start Now"),h("schedule",e.jsxDEV(G,{className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:23,columnNumber:24},this),"Schedule")]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/ModeToggle.tsx",lineNumber:21,columnNumber:5},this)}function ie({configs:s,selectedType:r,onSelect:h,tierMap:o}){return e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-6",children:"Select Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:19,columnNumber:7},this),e.jsxDEV("div",{children:s.map(a=>{const u=r===a.workflow_type,m=o.get(a.workflow_type)??"durable";return e.jsxDEV("button",{onClick:()=>h(a),className:`w-full text-left py-4 border-b border-surface-border transition-colors duration-150 ${u?"border-l-2 border-l-accent pl-4":"pl-0 hover:text-text-primary"}`,children:[e.jsxDEV("div",{className:"flex items-center gap-2",children:[m==="certified"&&e.jsxDEV(K,{className:"w-3.5 h-3.5 shrink-0 text-status-success"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:35,columnNumber:42},this),m==="configured"&&e.jsxDEV(Q,{className:"w-3.5 h-3.5 shrink-0 text-status-info"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:36,columnNumber:43},this),m==="durable"&&e.jsxDEV(X,{className:"w-3.5 h-3.5 shrink-0 text-accent/75"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:37,columnNumber:40},this),e.jsxDEV("p",{className:`text-sm font-mono ${u?"font-medium text-accent":"text-text-secondary"}`,children:a.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:38,columnNumber:17},this),a.execute_as&&e.jsxDEV("span",{className:"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-[9px] bg-accent/10 text-accent rounded",children:[e.jsxDEV(I,{className:"w-2.5 h-2.5"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:43,columnNumber:21},this),a.execute_as]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:42,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:34,columnNumber:15},this),a.description&&e.jsxDEV("p",{className:"text-[11px] text-text-tertiary mt-1 leading-relaxed",children:a.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:49,columnNumber:17},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1 opacity-60",children:a.task_queue},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:53,columnNumber:15},this)]},a.workflow_type,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:25,columnNumber:13},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:20,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/WorkflowSelector.tsx",lineNumber:18,columnNumber:5},this)}function L({children:s,className:r=""}){return e.jsxDEV("span",{className:`px-2 py-0.5 text-[10px] bg-surface-sunken rounded-full text-text-secondary ${r}`,children:s},void 0,!1,{fileName:"/app/dashboard/src/components/common/display/Pill.tsx",lineNumber:10,columnNumber:5},this)}const C=`{
2
2
  "data": {},
3
3
  "metadata": {}
4
4
  }`;function ne(s){return typeof s=="boolean"?"boolean":typeof s=="number"?"number":Array.isArray(s)?"array":s!==null&&typeof s=="object"?"object":"string"}function O(s){if(!s)return[];const r=s.data;return!r||typeof r!="object"?[]:Object.entries(r).map(([h,o])=>({key:h,type:ne(o),defaultValue:o}))}function W(s){return{...s}}function J(s,r){return JSON.stringify({data:s,metadata:r},null,2)}function me({config:s,overrideBot:r,onOverrideChange:h,showOverride:o}){const{user:a}=T(),u=r||s.execute_as;return e.jsxDEV("div",{className:"bg-surface-sunken rounded-lg px-4 py-3 space-y-2",children:[e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary uppercase tracking-wider font-medium",children:"Running as"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:23,columnNumber:9},this),u&&!r&&e.jsxDEV("span",{className:"text-[9px] text-text-tertiary",children:"configured default"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:25,columnNumber:11},this),r&&e.jsxDEV("span",{className:"text-[9px] text-accent",children:"admin override"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:28,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:22,columnNumber:7},this),e.jsxDEV("div",{className:"flex items-center gap-1.5",children:u?e.jsxDEV(e.Fragment,{children:[e.jsxDEV(I,{className:"w-3.5 h-3.5 text-accent/70"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:34,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs text-text-primary font-mono",children:u},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:35,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:33,columnNumber:11},this):e.jsxDEV(e.Fragment,{children:[e.jsxDEV(Y,{className:"w-3.5 h-3.5 text-text-tertiary"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:39,columnNumber:13},this),e.jsxDEV("span",{className:"text-xs text-text-primary",children:(a==null?void 0:a.displayName)||(a==null?void 0:a.username)||"you"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:40,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:38,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:31,columnNumber:7},this),o&&h&&e.jsxDEV("div",{className:"pt-1 border-t border-surface-border",children:[e.jsxDEV("label",{className:"text-[10px] text-text-tertiary mb-1 block",children:"Override identity"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:48,columnNumber:11},this),e.jsxDEV(Z,{selected:r??"",onChange:h,placeholder:s.execute_as?`Default: ${s.execute_as}`:"Invoking user (default)"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:49,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/IdentitySummary.tsx",lineNumber:21,columnNumber:5},this)}function ce({selectedConfig:s,isJsonMode:r,hasFormView:h,jsonInput:o,formFields:a,dataFields:u,onJsonChange:m,onToggleMode:b,onUpdateFormField:N,onSetFormFields:w}){return e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-baseline justify-between mb-2",children:[e.jsxDEV("label",{className:"block text-xs text-text-secondary",children:"Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:36,columnNumber:9},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[h&&e.jsxDEV("button",{type:"button",onClick:b,className:"text-[10px] text-accent hover:underline",children:r?"Form view":"JSON view"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:41,columnNumber:13},this),s.envelope_schema?e.jsxDEV("span",{className:"text-[10px] text-accent",children:"Pre-filled from workflow config"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:50,columnNumber:13},this):e.jsxDEV("span",{className:"text-[10px] text-status-warning",children:"No template"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:54,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:39,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:35,columnNumber:7},this),!s.envelope_schema&&e.jsxDEV("div",{className:"bg-surface-sunken border border-surface-border rounded px-4 py-3 mb-3",children:e.jsxDEV("p",{className:"text-xs text-text-secondary leading-relaxed",children:["This workflow has no input template. Edit the JSON directly below, or register it as a ",e.jsxDEV(ee,{to:"/workflows/registry/new",className:"text-status-success hover:underline",children:"certified workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:64,columnNumber:100},this)," in the Workflow Registry for pre-filled fields and form-based input."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:63,columnNumber:11},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:62,columnNumber:9},this),r||!h?e.jsxDEV("textarea",{value:o,onChange:c=>m(c.target.value),className:"input font-mono text-xs",rows:12,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:71,columnNumber:9},this):e.jsxDEV("div",{className:"space-y-3",children:u.map(({key:c,type:n})=>{var E,S;const p=a[c],x=typeof p=="string"?p:JSON.stringify(p??(n==="array"?[]:{}),null,2),g=Math.min(20,Math.max(4,((S=(E=x==null?void 0:x.split)==null?void 0:E.call(x,`
5
5
  `))==null?void 0:S.length)??4));return e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[10px] font-semibold uppercase tracking-widest text-text-tertiary mb-1",children:[c,e.jsxDEV("span",{className:"ml-2 font-normal normal-case",children:n},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:99,columnNumber:19},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:97,columnNumber:17},this),n==="boolean"?e.jsxDEV("select",{value:String(p??!1),onChange:l=>N(c,l.target.value,n),className:"select text-xs w-full",children:[e.jsxDEV("option",{value:"true",children:"true"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:111,columnNumber:21},this),e.jsxDEV("option",{value:"false",children:"false"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:112,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:104,columnNumber:19},this):n==="object"||n==="array"?e.jsxDEV("textarea",{value:x,onChange:l=>{try{N(c,JSON.parse(l.target.value),n)}catch{w({...a,[c]:l.target.value})}},className:"input font-mono text-[11px] w-full leading-relaxed",rows:g,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:115,columnNumber:19},this):e.jsxDEV("input",{type:n==="number"?"number":"text",value:String(p??""),onChange:l=>N(c,l.target.value,n),className:"input text-xs w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:137,columnNumber:19},this)]},c,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:96,columnNumber:15},this)})},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:80,columnNumber:9},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mt-1.5",children:["The envelope wraps your workflow input. ",e.jsxDEV("code",{className:"text-accent/80",children:"data"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:152,columnNumber:49},this)," holds workflow-specific fields; ",e.jsxDEV("code",{className:"text-accent/80",children:"metadata"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:152,columnNumber:126},this)," is optional context."]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:151,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/EnvelopeEditor.tsx",lineNumber:34,columnNumber:5},this)}function de({selected:s,executionsPath:r}){const h=F(),{isSuperAdmin:o,hasRoleType:a}=T(),u=o||a("admin"),m=R(),[b,N]=f.useState(C),[w,c]=f.useState(""),[n,p]=f.useState({}),[x,g]=f.useState(!1),[E,S]=f.useState(""),l=f.useMemo(()=>O(s.envelope_schema??null),[s.envelope_schema]),j=l.length>0,P=f.useMemo(()=>{if(!s.envelope_schema)return{};const t=s.envelope_schema.metadata;return t&&typeof t=="object"?t:{}},[s.envelope_schema]);f.useEffect(()=>{var k;c(""),m.reset();const t=sessionStorage.getItem("lt:invoke:prefill");if(t){sessionStorage.removeItem("lt:invoke:prefill"),N(t);try{const y=JSON.parse(t),V=(y==null?void 0:y.data)??y;V&&typeof V=="object"&&p(W(V))}catch{}g(!0),S("");return}const d=s.envelope_schema?JSON.stringify(s.envelope_schema,null,2):C;N(d),(k=s.envelope_schema)!=null&&k.data&&typeof s.envelope_schema.data=="object"?p(W(s.envelope_schema.data)):p({}),g(!O(s.envelope_schema??null).length),S("")},[s.workflow_type]);const _=()=>{if(x)try{const t=JSON.parse(b);t.data&&typeof t.data=="object"&&p(W(t.data))}catch{}else N(J(n,P));g(!x)},v=(t,d,k)=>{let y=d;k==="number"?y=d===""?0:Number(d):k==="boolean"&&(y=d==="true"||d===!0);const V={...n,[t]:y};p(V),N(J(V,P))},i=async()=>{c("");let t;try{t=JSON.parse(b)}catch{c("Invalid JSON");return}const{data:d,metadata:k}=t;if(!d||typeof d!="object"){c('Envelope must include a "data" object');return}try{await m.mutateAsync({workflowType:s.workflow_type,data:d,metadata:k??void 0,...E?{execute_as:E}:{}}),h(r)}catch{}};return e.jsxDEV("div",{className:"space-y-6",children:[e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center justify-between",children:[e.jsxDEV(D,{children:s.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:121,columnNumber:11},this),e.jsxDEV("div",{className:"flex gap-2",children:s.roles.map(t=>e.jsxDEV(L,{children:t},t,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:124,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:122,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:120,columnNumber:9},this),s.description&&e.jsxDEV("p",{className:"text-sm text-text-secondary mt-2 leading-relaxed",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:129,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:119,columnNumber:7},this),e.jsxDEV(me,{config:s,overrideBot:E,onOverrideChange:S,showOverride:u},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:135,columnNumber:7},this),e.jsxDEV(ce,{selectedConfig:s,isJsonMode:x,hasFormView:j,jsonInput:b,formFields:n,dataFields:l,onJsonChange:t=>{N(t),c("")},onToggleMode:_,onUpdateFormField:v,onSetFormFields:p},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:142,columnNumber:7},this),w&&e.jsxDEV("p",{className:"text-xs text-status-error",children:w},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:155,columnNumber:22},this),m.error&&e.jsxDEV("p",{className:"text-xs text-status-error",children:m.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:156,columnNumber:32},this),m.isSuccess&&e.jsxDEV("p",{className:"text-xs text-status-success",children:"Workflow started"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:157,columnNumber:36},this),e.jsxDEV("button",{onClick:i,disabled:m.isPending,className:"btn-primary",children:m.isPending?"Starting...":"Start Workflow"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:159,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartNowPanel.tsx",lineNumber:118,columnNumber:5},this)}function ue({selected:s,activeTypes:r}){const h=F(),o=$(),[a,u]=f.useState(""),[m,b]=f.useState(""),[N,w]=f.useState(""),[c,n]=f.useState("json"),p=f.useMemo(()=>s!=null&&s.envelope_schema?JSON.stringify(s.envelope_schema,null,2):C,[s==null?void 0:s.envelope_schema]),x=m!==p,g=f.useMemo(()=>{try{return JSON.parse(m)}catch{return null}},[m]),E=f.useMemo(()=>g?te(g):null,[g]);f.useEffect(()=>{u(s.cron_schedule??""),b(s.envelope_schema?JSON.stringify(s.envelope_schema,null,2):C),w(""),n("json"),o.reset()},[s.workflow_type]);const{data:S,isLoading:l}=A({entity:s.workflow_type,limit:10}),j=()=>{let i;try{i=JSON.parse(m)}catch{w("Invalid JSON in envelope");return}w(""),o.mutate({config:s,cron_schedule:a.trim()||null,envelope_schema:i})},P=()=>{u(""),o.mutate({config:s,cron_schedule:null})},_=()=>{b(p),w("")},v=(i,t)=>{if(!g)return;const d={...g.data??{}},k=d[i];typeof k=="number"?d[i]=t===""?0:Number(t):typeof k=="boolean"?d[i]=t==="true":d[i]=t,b(JSON.stringify({...g,data:d},null,2))};return e.jsxDEV("div",{className:"space-y-8",children:[e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-center gap-3",children:[e.jsxDEV(D,{children:s.workflow_type},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:105,columnNumber:11},this),s.cron_schedule&&e.jsxDEV(L,{className:r.has(s.workflow_type)?"bg-status-success/10 text-status-success":"bg-surface-sunken text-text-tertiary",children:r.has(s.workflow_type)?"active":"inactive"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:107,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:104,columnNumber:9},this),s.description&&e.jsxDEV("p",{className:"text-xs text-text-tertiary mt-2 leading-relaxed",children:s.description},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:116,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:103,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-sunken rounded-lg px-4 py-3",children:e.jsxDEV("div",{className:"flex items-center gap-1.5",children:[e.jsxDEV("span",{className:"text-[10px] text-text-tertiary uppercase tracking-wider font-medium mr-2",children:"Cron runs as"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:125,columnNumber:11},this),e.jsxDEV(I,{className:"w-3.5 h-3.5 text-accent/70"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:126,columnNumber:11},this),e.jsxDEV("span",{className:"text-xs text-text-primary font-mono",children:s.execute_as??"lt-system"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:127,columnNumber:11},this),!s.execute_as&&e.jsxDEV("span",{className:"text-[9px] text-text-tertiary ml-1",children:"system bot"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:131,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:124,columnNumber:9},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:123,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-3",children:"Schedule"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:138,columnNumber:9},this),e.jsxDEV("div",{className:"flex gap-3 items-start",children:[e.jsxDEV("div",{className:"flex-1",children:[e.jsxDEV("input",{type:"text",value:a,onChange:i=>{u(i.target.value),o.reset()},placeholder:"0 */6 * * *",className:"input font-mono text-sm w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:141,columnNumber:13},this),a.trim()&&M(a.trim())&&e.jsxDEV("p",{className:"text-xs text-text-secondary mt-1.5",children:M(a.trim())},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:149,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:140,columnNumber:11},this),e.jsxDEV("button",{onClick:j,disabled:o.isPending,className:"btn-primary text-xs shrink-0",children:o.isPending?"Saving...":"Save"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:154,columnNumber:11},this),s.cron_schedule&&e.jsxDEV("button",{onClick:P,disabled:o.isPending,className:"btn-ghost text-xs text-status-error shrink-0",children:"Clear"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:139,columnNumber:9},this),o.isSuccess&&e.jsxDEV("p",{className:"text-[10px] text-status-success mt-2",children:"Schedule updated"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:163,columnNumber:31},this),o.error&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-2",children:o.error.message},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:164,columnNumber:27},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:137,columnNumber:7},this),e.jsxDEV("div",{className:"bg-surface-sunken rounded-lg p-4",children:[e.jsxDEV(D,{className:"mb-2",children:"Common Patterns"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:169,columnNumber:9},this),e.jsxDEV("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-1.5",children:re.map(([i,t])=>e.jsxDEV("button",{type:"button",onClick:()=>{u(i),o.reset()},className:"flex items-center gap-2 text-left py-0.5 group",children:[e.jsxDEV("code",{className:"font-mono text-[11px] text-accent group-hover:text-accent-hover",children:i},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:178,columnNumber:15},this),e.jsxDEV("span",{className:"text-[10px] text-text-tertiary",children:t},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:179,columnNumber:15},this)]},i,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:172,columnNumber:13},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:170,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:168,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV("div",{className:"flex items-baseline justify-between mb-2",children:[e.jsxDEV(D,{children:"Cron Envelope"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:188,columnNumber:11},this),e.jsxDEV("div",{className:"flex items-center gap-3",children:[x&&e.jsxDEV("button",{type:"button",onClick:_,className:"text-[10px] text-status-warning hover:text-status-warning/80 transition-colors",children:"Reset to default"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:191,columnNumber:15},this),E&&e.jsxDEV("div",{className:"flex rounded overflow-hidden border border-surface-border",children:[e.jsxDEV("button",{type:"button",onClick:()=>n("form"),className:`px-2 py-0.5 text-[10px] transition-colors ${c==="form"?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-secondary"}`,children:"Form"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:197,columnNumber:17},this),e.jsxDEV("button",{type:"button",onClick:()=>n("json"),className:`px-2 py-0.5 text-[10px] transition-colors ${c==="json"?"bg-accent/10 text-accent":"text-text-tertiary hover:text-text-secondary"}`,children:"JSON"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:198,columnNumber:17},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:196,columnNumber:15},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:189,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:187,columnNumber:9},this),e.jsxDEV("p",{className:"text-[10px] text-text-tertiary mb-3",children:"This envelope is sent as the workflow input on each cron invocation."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:203,columnNumber:9},this),c==="form"&&E?e.jsxDEV("div",{className:"space-y-3",children:E.map(({key:i,value:t,type:d})=>e.jsxDEV("div",{children:[e.jsxDEV("label",{className:"block text-[11px] text-text-secondary mb-1 font-mono",children:i},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:211,columnNumber:17},this),d==="boolean"?e.jsxDEV("select",{value:t,onChange:k=>v(i,k.target.value),className:"input text-xs w-full",children:[e.jsxDEV("option",{value:"true",children:"true"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:214,columnNumber:21},this),e.jsxDEV("option",{value:"false",children:"false"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:215,columnNumber:21},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:213,columnNumber:19},this):e.jsxDEV("input",{type:d==="number"?"number":"text",value:t,onChange:k=>v(i,k.target.value),className:"input text-xs font-mono w-full"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:218,columnNumber:19},this)]},i,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:210,columnNumber:15},this))},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:208,columnNumber:11},this):e.jsxDEV("textarea",{value:m,onChange:i=>{b(i.target.value),w("")},className:"input font-mono text-xs w-full",rows:10,spellCheck:!1},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:224,columnNumber:11},this),N&&e.jsxDEV("p",{className:"text-[10px] text-status-error mt-2",children:N},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:233,columnNumber:27},this),x&&e.jsxDEV("p",{className:"text-[10px] text-accent mt-1.5",children:"Envelope has been customized. Changes will be saved with the schedule."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:234,columnNumber:32},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:186,columnNumber:7},this),e.jsxDEV("div",{children:[e.jsxDEV(D,{className:"mb-3",children:"Recent Executions"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:239,columnNumber:9},this),e.jsxDEV(ae,{columns:oe,data:(S==null?void 0:S.jobs)??[],keyFn:i=>i.workflow_id,onRowClick:i=>h(`/workflows/executions/${i.workflow_id}`),isLoading:l,emptyMessage:"No executions yet"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:240,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:238,columnNumber:7},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/SchedulePanel.tsx",lineNumber:101,columnNumber:5},this)}function pe(){const[s,r]=se(),{data:h,isLoading:o}=q(),{data:a,isLoading:u}=B(),{data:m}=z(),b=s.get("mode")||"now",N=s.get("type")??"",w=h??[],c=f.useMemo(()=>{const l=new Map;for(const j of a??[])l.set(j.workflow_type,j.tier??"durable");return l},[a]),n=f.useMemo(()=>{const l=w.filter(v=>v.invocable),j=new Set(w.map(v=>v.workflow_type)),_=(a??[]).filter(v=>v.active&&!j.has(v.workflow_type)).map(v=>({workflow_type:v.workflow_type,task_queue:v.task_queue??"",invocable:!0,description:null,default_role:"reviewer",roles:[],invocation_roles:[],consumes:[],envelope_schema:null,resolver_schema:null,cron_schedule:null,execute_as:null}));return[...l,..._]},[w,a]),p=n.find(l=>l.workflow_type===N),x=new Set((m??[]).filter(l=>l.active).map(l=>l.workflow_type)),g="/workflows/executions";f.useEffect(()=>{n.length===1&&!s.get("type")&&r({type:n[0].workflow_type,mode:b},{replace:!0})},[n.length]);const E=l=>{const j={mode:l};N&&(j.type=N),r(j,{replace:!0})},S=l=>{r({type:l.workflow_type,mode:b},{replace:!0})};return o||u?e.jsxDEV("div",{className:"animate-pulse space-y-4",children:[e.jsxDEV("div",{className:"h-8 bg-surface-sunken rounded w-48"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:81,columnNumber:9},this),e.jsxDEV("div",{className:"h-40 bg-surface-sunken rounded"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:82,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:80,columnNumber:7},this):e.jsxDEV("div",{children:[e.jsxDEV(H,{title:"Invoke Workflow",actions:e.jsxDEV(le,{mode:b,onChange:E},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:91,columnNumber:18},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:89,columnNumber:7},this),n.length===0?e.jsxDEV("div",{className:"py-16 text-center",children:[e.jsxDEV("p",{className:"text-sm text-text-primary mb-1",children:"No invocable workflows"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:96,columnNumber:11},this),e.jsxDEV("p",{className:"text-xs text-text-tertiary",children:"Mark workflows as invocable in the registry, or start the server with examples enabled."},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:97,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:95,columnNumber:9},this):e.jsxDEV("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-12",children:[e.jsxDEV(ie,{configs:n,selectedType:N,onSelect:S,tierMap:c},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:101,columnNumber:11},this),e.jsxDEV("div",{className:"lg:col-span-2",children:N&&p?b==="now"?e.jsxDEV(de,{selected:p,executionsPath:g},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:111,columnNumber:17},this):e.jsxDEV(ue,{selected:p,activeTypes:x},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:113,columnNumber:17},this):e.jsxDEV("div",{className:"py-16 text-center",children:e.jsxDEV("p",{className:"text-sm text-text-tertiary",children:"Select a workflow to begin"},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:117,columnNumber:17},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:116,columnNumber:15},this)},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:108,columnNumber:11},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:100,columnNumber:9},this)]},void 0,!0,{fileName:"/app/dashboard/src/pages/workflows/start/StartWorkflowPage.tsx",lineNumber:88,columnNumber:5},this)}function De(){return e.jsxDEV(pe,{},void 0,!1,{fileName:"/app/dashboard/src/pages/workflows/start/DurableInvokePage.tsx",lineNumber:4,columnNumber:10},this)}export{De as DurableInvokePage,pe as StartWorkflowPage};
6
- //# sourceMappingURL=index-BmVCyB6C.js.map
6
+ //# sourceMappingURL=index-CUqCBBZG.js.map